diff --git a/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java b/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java index af86c7c..c8f450c 100644 --- a/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java +++ b/src/main/java/com/qs/serve/modules/pms/controller/PmsCounterSubmitController.java @@ -11,6 +11,8 @@ import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.pms.entity.PmsCounterSubmit; import com.qs.serve.modules.pms.service.PmsCounterSubmitService; +import com.qs.serve.modules.sys.entity.SysUser; +import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; @@ -32,6 +34,7 @@ import java.util.List; public class PmsCounterSubmitController { private PmsCounterSubmitService pmsCounterSubmitService; + private SysUserService sysUserService; /** * 翻页查询 @@ -103,14 +106,19 @@ public class PmsCounterSubmitController { /** * 新增计时报工单 - * @param param + * @param pmsCounterSubmit * @return */ @PostMapping("/save") @SysLog(module = SystemModule.PIECE, title = "计时报工单", biz = BizType.INSERT) @PreAuthorize("hasRole('pms:counterSubmit:insert')") - public R save(@RequestBody @Valid PmsCounterSubmit param){ - boolean result = pmsCounterSubmitService.save(param); + public R save(@RequestBody @Valid PmsCounterSubmit pmsCounterSubmit){ + SysUser sysUser = sysUserService.getById(pmsCounterSubmit.getPersonId()); + pmsCounterSubmit.setCreateTime(LocalDateTime.now()); + pmsCounterSubmit.setPersonId(sysUser.getId()); + pmsCounterSubmit.setPersonCode(sysUser.getAccount()); + pmsCounterSubmit.setPersonName(sysUser.getName()); + boolean result = pmsCounterSubmitService.save(pmsCounterSubmit); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/pms/controller/PmsOrderController.java b/src/main/java/com/qs/serve/modules/pms/controller/PmsOrderController.java index f523b00..00fe1b2 100644 --- a/src/main/java/com/qs/serve/modules/pms/controller/PmsOrderController.java +++ b/src/main/java/com/qs/serve/modules/pms/controller/PmsOrderController.java @@ -6,15 +6,18 @@ import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; -import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.*; +import com.qs.serve.modules.pms.entity.*; +import com.qs.serve.modules.pms.entity.dto.PmsOrderBo; +import com.qs.serve.modules.pms.entity.dto.PmsOrderProcessBo; +import com.qs.serve.modules.pms.entity.dto.PmsOrderProductBo; +import com.qs.serve.modules.pms.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; -import com.qs.serve.modules.pms.entity.PmsOrder; -import com.qs.serve.modules.pms.service.PmsOrderService; - import javax.validation.Valid; import java.util.List; @@ -30,6 +33,11 @@ import java.util.List; public class PmsOrderController { private PmsOrderService pmsOrderService; + private PmsProcessService pmsProcessService; + private PmsProductService pmsProductService; + private PmsProductProcessService pmsProductProcessService; + private PmsOrderProductService pmsOrderProductService; + private PmsOrderProcessService pmsOrderProcessService; /** * 翻页查询 @@ -78,7 +86,7 @@ public class PmsOrderController { * @param param * @return */ - @PostMapping("/save") + //@PostMapping("/save") @SysLog(module = SystemModule.PIECE, title = "生产订单", biz = BizType.INSERT) @PreAuthorize("hasRole('pms:order:insert')") public R save(@RequestBody @Valid PmsOrder param){ @@ -86,6 +94,55 @@ public class PmsOrderController { return R.isTrue(result); } + /** + * 新增生产订单(批量编辑) + * @apiNote 移除产品和移除工序,调用独立接口(接口不进行差集保存) + * @param param + * @return + */ + @PostMapping("/edit") + @SysLog(module = SystemModule.PIECE, title = "生产订单",desc = "包含订单、产品、工序编辑", biz = BizType.INSERT) + @PreAuthorize("hasRole('pms:order:insert')") + @Transactional(rollbackFor = Exception.class) + public R edit(@RequestBody @Valid PmsOrderBo param){ + PmsOrder order = param.getId()==null?new PmsOrder():pmsOrderService.getById(param.getId()); + CopierUtil.copy(param, order); + if(order.getId()==null){ + if(!StringUtils.hasText(order.getCode())){ + order.setCode(""+IdUtil.getSnowFlakeId()); + } + pmsOrderService.save(order); + }else { + pmsOrderService.updateById(order); + } + for (PmsOrderProductBo productBo : param.getProductList()) { + PmsProduct pmsProduct = pmsProductService.getById(productBo.getProductId()); + PmsOrderProduct orderProduct = productBo.getOrderProductSn()==null?new PmsOrderProduct():pmsOrderProductService.getById(productBo.getOrderProductSn()); + CopierUtil.copy(productBo, orderProduct); + boolean isUpdateProduct = StringUtils.hasText(orderProduct.getOrderProductSn()); + orderProduct.setOrderId(order.getId()); + orderProduct.setOrderCode(order.getCode()); + if(isUpdateProduct){ + orderProduct.setOrderProductSn(""+IdUtil.getSnowFlakeId()); + pmsOrderProductService.save(orderProduct); + }else { + pmsOrderProductService.updateById(orderProduct); + } + if(CollectionUtil.isEmpty(productBo.getProcessList())){ + for (PmsOrderProcessBo processBo : productBo.getProcessList()) { + PmsProcess pmsProcess = pmsProcessService.getById(processBo.getProcessId()); + PmsOrderProcess orderProcess = CopierUtil.copy(processBo,new PmsOrderProcess()); + orderProcess.setOrderId(order.getId()); + orderProcess.setProductId(pmsProduct.getId()); + orderProcess.setProcessName(pmsProcess.getName()); + orderProcess.setProcessCode(pmsProcess.getCode()); + //orderProcess.setProcessPrice(); + } + } + } + return R.ok(); + } + /** * 删除生产订单 * @param id diff --git a/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java b/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java index 54d6bed..2a56134 100644 --- a/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java +++ b/src/main/java/com/qs/serve/modules/pms/controller/PmsProductProcessController.java @@ -8,10 +8,8 @@ import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.SystemModule; import com.qs.serve.common.util.PageUtil; -import com.qs.serve.modules.pms.entity.PmsProcess; -import com.qs.serve.modules.pms.entity.PmsProduct; -import com.qs.serve.modules.pms.entity.dto.PmsProcessReaBatch; -import com.qs.serve.modules.pms.entity.dto.PmsProductReaBatch; +import com.qs.serve.modules.pms.entity.dto.PmsProcessReaBatchBo; +import com.qs.serve.modules.pms.entity.dto.PmsProductReaBatchBo; import com.qs.serve.modules.pms.service.PmsProcessService; import com.qs.serve.modules.pms.service.PmsProductService; import lombok.AllArgsConstructor; @@ -24,7 +22,6 @@ import com.qs.serve.modules.pms.entity.PmsProductProcess; import com.qs.serve.modules.pms.service.PmsProductProcessService; import javax.validation.Valid; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -81,7 +78,7 @@ public class PmsProductProcessController { @SysLog(module = SystemModule.PIECE, title = "产品工序关联",desc = "产品批量关联工序", biz = BizType.UPDATE) @PreAuthorize("hasRole('pms:productProcess:edit')") @Transactional(rollbackFor = Exception.class) - public R editBatchProductRea(@RequestBody @Valid PmsProductReaBatch param){ + public R editBatchProductRea(@RequestBody @Valid PmsProductReaBatchBo param){ String productId = param.getProductId(); List paramProcessIdList = param.getProcessIdList(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); @@ -117,7 +114,7 @@ public class PmsProductProcessController { @SysLog(module = SystemModule.PIECE, title = "产品工序关联",desc = "产品批量关联工序", biz = BizType.UPDATE) @PreAuthorize("hasRole('pms:productProcess:edit')") @Transactional(rollbackFor = Exception.class) - public R editBatchProcessRea(@RequestBody @Valid PmsProcessReaBatch param){ + public R editBatchProcessRea(@RequestBody @Valid PmsProcessReaBatchBo param){ String processId = param.getProcessId(); List paramProductIdList = param.getProductIdList(); LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProcess.java b/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProcess.java index fc8e3cf..0d96916 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProcess.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProcess.java @@ -28,7 +28,7 @@ public class PmsOrderProcess implements Serializable { /** 订单工序编码 */ @Length(max = 32,message = "订单工序编码长度不能超过32字") - @TableId(type = IdType.ASSIGN_UUID) + @TableId(type = IdType.INPUT) private String orderProcessSn; /** 订单id */ diff --git a/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProduct.java b/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProduct.java index e75bdb9..347f847 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProduct.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/PmsOrderProduct.java @@ -27,18 +27,19 @@ public class PmsOrderProduct implements Serializable { private static final long serialVersionUID = 1L; - /** id */ - @TableId(type = IdType.ASSIGN_UUID) - private String id; - - /** 产线编码 */ + /** id,产线编码 */ + @TableId(type = IdType.INPUT) @NotBlank(message = "产线编码不能为空") @Length(max = 32,message = "产线编码长度不能超过32字") private String orderProductSn; + /** 产品ID */ + @NotNull(message = "订单id不能为空") + private String productId; + /** 订单id */ @NotNull(message = "订单id不能为空") - private Long orderId; + private String orderId; /** 订单编码 */ @NotBlank(message = "订单编码不能为空") diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderBo.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderBo.java new file mode 100644 index 0000000..c3c7fa5 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderBo.java @@ -0,0 +1,62 @@ +package com.qs.serve.modules.pms.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 生产订单 实体类 + * @author YenHex + * @since 2022-08-05 + */ +@Data +public class PmsOrderBo implements Serializable { + + /** id,新增时不需提交 */ + private String id; + + /** 产品名称 */ + @NotBlank(message = "订单抬头不能为空") + @Length(max = 30,message = "产品名称长度不能超过30字") + private String name; + + /** 产品编码,为空系统自动生产 */ + private String code; + + /** 计量单位 */ + @NotBlank(message = "计量单位不能为空") + @Length(max = 20,message = "计量单位长度不能超过20字") + private String unit; + + /** 规格型号 */ + @NotBlank(message = "规格型号不能为空") + @Length(max = 255,message = "规格型号长度不能超过255字") + private String spec; + + /** 完工日期 */ + @Length(max = 0,message = "完工日期长度不能超过0字") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime finishedDate; + + /** 入库日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate enterWhDate; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 产品列表 */ + private List productList; + +} + diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderProcessBo.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderProcessBo.java new file mode 100644 index 0000000..fe8f84b --- /dev/null +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderProcessBo.java @@ -0,0 +1,42 @@ +package com.qs.serve.modules.pms.entity.dto; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 订单工序 实体类 + * @author YenHex + * @since 2022-08-05 + */ +@Data +public class PmsOrderProcessBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id,更新时需传参,否则进行新增 */ + @Length(max = 32,message = "订单工序编码长度不能超过32字") + @TableId(type = IdType.ASSIGN_UUID) + private String orderProcessSn; + + /** 工序id */ + @NotBlank(message = "工序id不能为空") + @Length(max = 32,message = "工序id长度不能超过32字") + private String processId; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + +} + diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderProductBo.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderProductBo.java new file mode 100644 index 0000000..4308588 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsOrderProductBo.java @@ -0,0 +1,74 @@ +package com.qs.serve.modules.pms.entity.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * 订单产品 实体类 + * @author YenHex + * @since 2022-08-05 + */ +@Data +public class PmsOrderProductBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id,更新时需传参,否则进行新增 */ + private String orderProductSn; + + /** 产品ID */ + private String productId; + + /** 产品名称 */ + @NotBlank(message = "产品名称不能为空") + @Length(max = 30,message = "产品名称长度不能超过30字") + private String name; + + /** 产品编码 */ + @NotBlank(message = "产品编码不能为空") + @Length(max = 30,message = "产品编码长度不能超过30字") + private String code; + + /** 计量单位 */ + @Length(max = 20,message = "计量单位长度不能超过20字") + private String unit; + + /** 规格型号 */ + @Length(max = 255,message = "规格型号长度不能超过255字") + private String spec; + + /** 计划产量 */ + @NotNull(message = "计划产量不能为空") + private BigDecimal planQty; + + /** 计划完工日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate planFinishedDate; + + /** 实际产量/当前产量 */ + @NotNull(message = "实际产量/当前产量不能为空") + private BigDecimal qty; + + /** 完工日期 */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") + private LocalDate finishedDate; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 工序列表 */ + private List processList; +} + diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatchBo.java similarity index 88% rename from src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java rename to src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatchBo.java index e027b73..cac070d 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatch.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProcessReaBatchBo.java @@ -9,7 +9,7 @@ import java.util.List; * @since 2022/8/8 */ @Data -public class PmsProcessReaBatch { +public class PmsProcessReaBatchBo { /** * 工序ID diff --git a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatchBo.java similarity index 92% rename from src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java rename to src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatchBo.java index 158dddb..730eced 100644 --- a/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatch.java +++ b/src/main/java/com/qs/serve/modules/pms/entity/dto/PmsProductReaBatchBo.java @@ -10,7 +10,7 @@ import java.util.List; * @since 2022/8/8 */ @Data -public class PmsProductReaBatch { +public class PmsProductReaBatchBo { /** * 产品ID diff --git a/src/main/java/com/qs/serve/modules/pms/service/PmsOrderProductService.java b/src/main/java/com/qs/serve/modules/pms/service/PmsOrderProductService.java index 57d9277..fd6a19d 100644 --- a/src/main/java/com/qs/serve/modules/pms/service/PmsOrderProductService.java +++ b/src/main/java/com/qs/serve/modules/pms/service/PmsOrderProductService.java @@ -3,12 +3,14 @@ package com.qs.serve.modules.pms.service; import com.baomidou.mybatisplus.extension.service.IService; import com.qs.serve.modules.pms.entity.PmsOrderProduct; +import java.util.List; + /** * 订单产品 服务接口 * @author YenHex * @date 2022-08-05 */ public interface PmsOrderProductService extends IService { - + List getByOrderId(String orderId); } diff --git a/src/main/java/com/qs/serve/modules/pms/service/impl/PmsOrderProductServiceImpl.java b/src/main/java/com/qs/serve/modules/pms/service/impl/PmsOrderProductServiceImpl.java index 4939092..e981c9d 100644 --- a/src/main/java/com/qs/serve/modules/pms/service/impl/PmsOrderProductServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/pms/service/impl/PmsOrderProductServiceImpl.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.pms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -8,6 +9,8 @@ import com.qs.serve.modules.pms.entity.PmsOrderProduct; import com.qs.serve.modules.pms.service.PmsOrderProductService; import com.qs.serve.modules.pms.mapper.PmsOrderProductMapper; +import java.util.List; + /** * 订单产品 服务实现类 * @author YenHex @@ -18,5 +21,12 @@ import com.qs.serve.modules.pms.mapper.PmsOrderProductMapper; @AllArgsConstructor public class PmsOrderProductServiceImpl extends ServiceImpl implements PmsOrderProductService { + @Override + public List getByOrderId(String orderId) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(PmsOrderProduct::getOrderId,orderId); + return list(lqw); + } + }