From 84d7fd2a546ee69b0ffd87955111f25916af9e55 Mon Sep 17 00:00:00 2001 From: siontion Date: Sun, 7 Jul 2024 14:37:04 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8C=85=E8=A3=85=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E3=80=91=20DB=E8=84=9A=E6=9C=AC=E5=8F=8A=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/biz/enums/ErrorCodeConstants.java | 2 + .../SaleOrderPackingClauseController.java | 106 +++++++++++++++++ .../vo/SaleOrderPackingClausePageReqVO.java | 31 +++++ .../vo/SaleOrderPackingClauseRespVO.java | 32 +++++ .../vo/SaleOrderPackingClauseSaveReqVO.java | 27 +++++ .../SaleOrderPackingClauseDO.java | 39 ++++++ .../SaleOrderPackingClauseDetailDO.java | 47 ++++++++ .../SaleOrderPackingClauseDetailMapper.java | 28 +++++ .../SaleOrderPackingClauseMapper.java | 29 +++++ .../SaleOrderPackingClauseService.java | 66 +++++++++++ .../SaleOrderPackingClauseServiceImpl.java | 112 ++++++++++++++++++ .../SaleOrderPackingClauseMapper.xml | 12 ++ sql/v1.0.0/2.business/1.structure.sql | 33 +++++- 13 files changed, 563 insertions(+), 1 deletion(-) create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/SaleOrderPackingClauseController.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClausePageReqVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseRespVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseSaveReqVO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDetailDO.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseDetailMapper.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseMapper.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseService.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseServiceImpl.java create mode 100644 mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/saleorderpackingclause/SaleOrderPackingClauseMapper.xml diff --git a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java index 4bcbb366..71a049ec 100644 --- a/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java +++ b/mes-module-majoys/mes-module-majoys-api/src/main/java/com/chanko/yunxi/mes/module/biz/enums/ErrorCodeConstants.java @@ -121,4 +121,6 @@ public interface ErrorCodeConstants { ErrorCode SALE_ORDER_COST_DETAIL_NOT_EXISTS = new ErrorCode(1_013_002, "项目订单成本汇算明细不存在"); /*************用友定时任务*************/ ErrorCode CURRENT_STOCK_NOT_EXISTS = new ErrorCode(1_014_001, "t用友T+库存(现存货)不存在"); + /*************包装管理*************/ + ErrorCode SALE_ORDER_PACKING_CLAUSE_NOT_EXISTS = new ErrorCode(1_015_001, "生产订单包装规则不存在"); } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/SaleOrderPackingClauseController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/SaleOrderPackingClauseController.java new file mode 100644 index 00000000..96b6672a --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/SaleOrderPackingClauseController.java @@ -0,0 +1,106 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclause.SaleOrderPackingClauseDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclausedetail.SaleOrderPackingClauseDetailDO; +import com.chanko.yunxi.mes.module.biz.service.saleorderpackingclause.SaleOrderPackingClauseService; + +@Tag(name = "管理后台 - 生产订单包装规则") +@RestController +@RequestMapping("/biz/sale-order-packing-clause") +@Validated +public class SaleOrderPackingClauseController { + + @Resource + private SaleOrderPackingClauseService saleOrderPackingClauseService; + + @PostMapping("/create") + @Operation(summary = "创建生产订单包装规则") + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:create')") + public CommonResult createSaleOrderPackingClause(@Valid @RequestBody SaleOrderPackingClauseSaveReqVO createReqVO) { + return success(saleOrderPackingClauseService.createSaleOrderPackingClause(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新生产订单包装规则") + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:update')") + public CommonResult updateSaleOrderPackingClause(@Valid @RequestBody SaleOrderPackingClauseSaveReqVO updateReqVO) { + saleOrderPackingClauseService.updateSaleOrderPackingClause(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除生产订单包装规则") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:delete')") + public CommonResult deleteSaleOrderPackingClause(@RequestParam("id") Long id) { + saleOrderPackingClauseService.deleteSaleOrderPackingClause(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得生产订单包装规则") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:query')") + public CommonResult getSaleOrderPackingClause(@RequestParam("id") Long id) { + SaleOrderPackingClauseDO saleOrderPackingClause = saleOrderPackingClauseService.getSaleOrderPackingClause(id); + return success(BeanUtils.toBean(saleOrderPackingClause, SaleOrderPackingClauseRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得生产订单包装规则分页") + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:query')") + public CommonResult> getSaleOrderPackingClausePage(@Valid SaleOrderPackingClausePageReqVO pageReqVO) { + PageResult pageResult = saleOrderPackingClauseService.getSaleOrderPackingClausePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, SaleOrderPackingClauseRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出生产订单包装规则 Excel") + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:export')") + @OperateLog(type = EXPORT) + public void exportSaleOrderPackingClauseExcel(@Valid SaleOrderPackingClausePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = saleOrderPackingClauseService.getSaleOrderPackingClausePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "生产订单包装规则.xls", "数据", SaleOrderPackingClauseRespVO.class, + BeanUtils.toBean(list, SaleOrderPackingClauseRespVO.class)); + } + + // ==================== 子表(生产订单包装规则明细) ==================== + + @GetMapping("/sale-order-packing-clause-detail/list-by-clause-id") + @Operation(summary = "获得生产订单包装规则明细列表") + @Parameter(name = "clauseId", description = "项目订单包装规则id") + @PreAuthorize("@ss.hasPermission('biz:sale-order-packing-clause:query')") + public CommonResult> getSaleOrderPackingClauseDetailListByClauseId(@RequestParam("clauseId") Long clauseId) { + return success(saleOrderPackingClauseService.getSaleOrderPackingClauseDetailListByClauseId(clauseId)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClausePageReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClausePageReqVO.java new file mode 100644 index 00000000..67493132 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClausePageReqVO.java @@ -0,0 +1,31 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 生产订单包装规则分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class SaleOrderPackingClausePageReqVO extends PageParam { + + @Schema(description = "自增字段,唯一") + private Long id; + + @Schema(description = "项目订单id") + private Long projectOrderId; + + @Schema(description = "规则名称") + private String ruleName; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseRespVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseRespVO.java new file mode 100644 index 00000000..02cf66c8 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseRespVO.java @@ -0,0 +1,32 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 生产订单包装规则 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SaleOrderPackingClauseRespVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("自增字段,唯一") + private Long id; + + @Schema(description = "项目订单id", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("项目订单id") + private Long projectOrderId; + + @Schema(description = "规则名称") + @ExcelProperty("规则名称") + private String ruleName; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseSaveReqVO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseSaveReqVO.java new file mode 100644 index 00000000..239ed61d --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/saleorderpackingclause/vo/SaleOrderPackingClauseSaveReqVO.java @@ -0,0 +1,27 @@ +package com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclausedetail.SaleOrderPackingClauseDetailDO; + +@Schema(description = "管理后台 - 生产订单包装规则新增/修改 Request VO") +@Data +public class SaleOrderPackingClauseSaveReqVO { + + @Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "项目订单id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "项目订单id不能为空") + private Long projectOrderId; + + @Schema(description = "规则名称") + private String ruleName; + + @Schema(description = "生产订单包装规则明细列表") + private List saleOrderPackingClauseDetails; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDO.java new file mode 100644 index 00000000..788359c3 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDO.java @@ -0,0 +1,39 @@ +package com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclause; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 生产订单包装规则 DO + * + * @author 管理员 + */ +@TableName("project_sale_order_packing_clause") +@KeySequence("project_sale_order_packing_clause_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaleOrderPackingClauseDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 项目订单id + */ + private Long projectOrderId; + /** + * 规则名称 + */ + private String ruleName; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDetailDO.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDetailDO.java new file mode 100644 index 00000000..ed9cc38f --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/dataobject/saleorderpackingclause/SaleOrderPackingClauseDetailDO.java @@ -0,0 +1,47 @@ +package com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclausedetail; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO; + +/** + * 生产订单包装规则明细 DO + * + * @author 管理员 + */ +@TableName("project_sale_order_packing_clause_detail") +@KeySequence("project_sale_order_packing_clause_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaleOrderPackingClauseDetailDO extends BaseDO { + + /** + * 自增字段,唯一 + */ + @TableId + private Long id; + /** + * 项目订单id + */ + private Long projectOrderId; + /** + * 项目订单包装规则id + */ + private Long clauseId; + /** + * 产品id + */ + private Long materialId; + /** + * 每箱配比 + */ + private Integer amount; + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseDetailMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseDetailMapper.java new file mode 100644 index 00000000..faad98a1 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseDetailMapper.java @@ -0,0 +1,28 @@ +package com.chanko.yunxi.mes.module.biz.dal.mysql.saleorderpackingclausedetail; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclausedetail.SaleOrderPackingClauseDetailDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 生产订单包装规则明细 Mapper + * + * @author 管理员 + */ +@Mapper +public interface SaleOrderPackingClauseDetailMapper extends BaseMapperX { + + default List selectListByClauseId(Long clauseId) { + return selectList(SaleOrderPackingClauseDetailDO::getClauseId, clauseId); + } + + default int deleteByClauseId(Long clauseId) { + return delete(SaleOrderPackingClauseDetailDO::getClauseId, clauseId); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseMapper.java new file mode 100644 index 00000000..83e1006f --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/saleorderpackingclause/SaleOrderPackingClauseMapper.java @@ -0,0 +1,29 @@ +package com.chanko.yunxi.mes.module.biz.dal.mysql.saleorderpackingclause; + +import java.util.*; + +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclause.SaleOrderPackingClauseDO; +import org.apache.ibatis.annotations.Mapper; +import com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo.*; + +/** + * 生产订单包装规则 Mapper + * + * @author 管理员 + */ +@Mapper +public interface SaleOrderPackingClauseMapper extends BaseMapperX { + + default PageResult selectPage(SaleOrderPackingClausePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SaleOrderPackingClauseDO::getId, reqVO.getId()) + .eqIfPresent(SaleOrderPackingClauseDO::getProjectOrderId, reqVO.getProjectOrderId()) + .likeIfPresent(SaleOrderPackingClauseDO::getRuleName, reqVO.getRuleName()) + .betweenIfPresent(SaleOrderPackingClauseDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SaleOrderPackingClauseDO::getId)); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseService.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseService.java new file mode 100644 index 00000000..1f053942 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseService.java @@ -0,0 +1,66 @@ +package com.chanko.yunxi.mes.module.biz.service.saleorderpackingclause; + +import java.util.*; +import javax.validation.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclause.SaleOrderPackingClauseDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclausedetail.SaleOrderPackingClauseDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; + +/** + * 生产订单包装规则 Service 接口 + * + * @author 管理员 + */ +public interface SaleOrderPackingClauseService { + + /** + * 创建生产订单包装规则 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSaleOrderPackingClause(@Valid SaleOrderPackingClauseSaveReqVO createReqVO); + + /** + * 更新生产订单包装规则 + * + * @param updateReqVO 更新信息 + */ + void updateSaleOrderPackingClause(@Valid SaleOrderPackingClauseSaveReqVO updateReqVO); + + /** + * 删除生产订单包装规则 + * + * @param id 编号 + */ + void deleteSaleOrderPackingClause(Long id); + + /** + * 获得生产订单包装规则 + * + * @param id 编号 + * @return 生产订单包装规则 + */ + SaleOrderPackingClauseDO getSaleOrderPackingClause(Long id); + + /** + * 获得生产订单包装规则分页 + * + * @param pageReqVO 分页查询 + * @return 生产订单包装规则分页 + */ + PageResult getSaleOrderPackingClausePage(SaleOrderPackingClausePageReqVO pageReqVO); + + // ==================== 子表(生产订单包装规则明细) ==================== + + /** + * 获得生产订单包装规则明细列表 + * + * @param clauseId 项目订单包装规则id + * @return 生产订单包装规则明细列表 + */ + List getSaleOrderPackingClauseDetailListByClauseId(Long clauseId); + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseServiceImpl.java new file mode 100644 index 00000000..b9f7f195 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/saleorderpackingclause/SaleOrderPackingClauseServiceImpl.java @@ -0,0 +1,112 @@ +package com.chanko.yunxi.mes.module.biz.service.saleorderpackingclause; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.chanko.yunxi.mes.module.biz.controller.admin.saleorderpackingclause.vo.*; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclause.SaleOrderPackingClauseDO; +import com.chanko.yunxi.mes.module.biz.dal.dataobject.saleorderpackingclausedetail.SaleOrderPackingClauseDetailDO; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; + +import com.chanko.yunxi.mes.module.biz.dal.mysql.saleorderpackingclause.SaleOrderPackingClauseMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.saleorderpackingclausedetail.SaleOrderPackingClauseDetailMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.biz.enums.ErrorCodeConstants.*; + +/** + * 生产订单包装规则 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class SaleOrderPackingClauseServiceImpl implements SaleOrderPackingClauseService { + + @Resource + private SaleOrderPackingClauseMapper saleOrderPackingClauseMapper; + @Resource + private SaleOrderPackingClauseDetailMapper saleOrderPackingClauseDetailMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createSaleOrderPackingClause(SaleOrderPackingClauseSaveReqVO createReqVO) { + // 插入 + SaleOrderPackingClauseDO saleOrderPackingClause = BeanUtils.toBean(createReqVO, SaleOrderPackingClauseDO.class); + saleOrderPackingClauseMapper.insert(saleOrderPackingClause); + + // 插入子表 + createSaleOrderPackingClauseDetailList(saleOrderPackingClause.getId(), createReqVO.getSaleOrderPackingClauseDetails()); + // 返回 + return saleOrderPackingClause.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateSaleOrderPackingClause(SaleOrderPackingClauseSaveReqVO updateReqVO) { + // 校验存在 + validateSaleOrderPackingClauseExists(updateReqVO.getId()); + // 更新 + SaleOrderPackingClauseDO updateObj = BeanUtils.toBean(updateReqVO, SaleOrderPackingClauseDO.class); + saleOrderPackingClauseMapper.updateById(updateObj); + + // 更新子表 + updateSaleOrderPackingClauseDetailList(updateReqVO.getId(), updateReqVO.getSaleOrderPackingClauseDetails()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSaleOrderPackingClause(Long id) { + // 校验存在 + validateSaleOrderPackingClauseExists(id); + // 删除 + saleOrderPackingClauseMapper.deleteById(id); + + // 删除子表 + deleteSaleOrderPackingClauseDetailByClauseId(id); + } + + private void validateSaleOrderPackingClauseExists(Long id) { + if (saleOrderPackingClauseMapper.selectById(id) == null) { + throw exception(SALE_ORDER_PACKING_CLAUSE_NOT_EXISTS); + } + } + + @Override + public SaleOrderPackingClauseDO getSaleOrderPackingClause(Long id) { + return saleOrderPackingClauseMapper.selectById(id); + } + + @Override + public PageResult getSaleOrderPackingClausePage(SaleOrderPackingClausePageReqVO pageReqVO) { + return saleOrderPackingClauseMapper.selectPage(pageReqVO); + } + + // ==================== 子表(生产订单包装规则明细) ==================== + + @Override + public List getSaleOrderPackingClauseDetailListByClauseId(Long clauseId) { + return saleOrderPackingClauseDetailMapper.selectListByClauseId(clauseId); + } + + private void createSaleOrderPackingClauseDetailList(Long clauseId, List list) { + list.forEach(o -> o.setClauseId(clauseId)); + saleOrderPackingClauseDetailMapper.insertBatch(list); + } + + private void updateSaleOrderPackingClauseDetailList(Long clauseId, List list) { + deleteSaleOrderPackingClauseDetailByClauseId(clauseId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createSaleOrderPackingClauseDetailList(clauseId, list); + } + + private void deleteSaleOrderPackingClauseDetailByClauseId(Long clauseId) { + saleOrderPackingClauseDetailMapper.deleteByClauseId(clauseId); + } + +} \ No newline at end of file diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/saleorderpackingclause/SaleOrderPackingClauseMapper.xml b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/saleorderpackingclause/SaleOrderPackingClauseMapper.xml new file mode 100644 index 00000000..90958eb9 --- /dev/null +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/resources/mapper/saleorderpackingclause/SaleOrderPackingClauseMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/sql/v1.0.0/2.business/1.structure.sql b/sql/v1.0.0/2.business/1.structure.sql index c6b5adbe..fabe2e1d 100644 --- a/sql/v1.0.0/2.business/1.structure.sql +++ b/sql/v1.0.0/2.business/1.structure.sql @@ -344,4 +344,35 @@ CREATE TABLE `pro_task_dispatch_detail_ratio` ( ALTER TABLE `pro_unqualified_notification` ADD COLUMN `product_amount` int(11) DEFAULT NULL COMMENT '生产总数'; ALTER TABLE `pro_unqualified_notification` ADD COLUMN `check_amount` int(11) DEFAULT NULL COMMENT '检验数量'; ALTER TABLE `pro_unqualified_notification` ADD COLUMN `solution_content` varchar(512) DEFAULT NULL COMMENT '解决方案'; -ALTER TABLE `pro_unqualified_notification` ADD COLUMN `punishment_opinion` varchar(512) DEFAULT NULL COMMENT '处罚意见'; \ No newline at end of file +ALTER TABLE `pro_unqualified_notification` ADD COLUMN `punishment_opinion` varchar(512) DEFAULT NULL COMMENT '处罚意见'; + + +drop table if exists `project_sale_order_packing_clause`; +CREATE TABLE `project_sale_order_packing_clause` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一', + `project_order_id` bigint(20) NOT NULL COMMENT '项目订单id', + `rule_name` varchar(255) DEFAULT NULL COMMENT '规则名称', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB COMMENT='生产订单包装规则表'; + +drop table if exists `project_sale_order_packing_clause_detail`; +CREATE TABLE `project_sale_order_packing_clause_detail` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增字段,唯一', + `project_order_id` bigint(20) DEFAULT NULL COMMENT '项目订单id', + `clause_id` bigint(20) NOT NULL COMMENT '项目订单包装规则id', + `material_id` bigint(20) NOT NULL COMMENT '产品id', + `amount` int(10) DEFAULT NULL COMMENT '每箱配比', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '租户编号', + PRIMARY KEY (`id`) +) ENGINE=InnoDB COMMENT='生产订单包装规则明细表'; \ No newline at end of file