From 25d20b25c6220498f6cc61bc9fbf4acf14cdbe3c Mon Sep 17 00:00:00 2001 From: shaoyong Date: Mon, 27 May 2024 16:26:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=B7=A5=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E6=89=B9=E6=AC=A1=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProOrderWorkorderController.java | 35 +++++ .../plan/domain/ProOrderWorkorderBatch.java | 29 ++++ .../mapper/ProOrderWorkorderBatchMapper.java | 4 + .../plan/mapper/ProOrderWorkorderMapper.java | 11 +- .../service/IProOrderWorkorderService.java | 10 ++ .../impl/ProOrderWorkorderServiceImpl.java | 125 ++++++++++++++++++ .../plan/ProOrderWorkorderBatchMapper.xml | 30 +++++ .../mapper/plan/ProOrderWorkorderMapper.xml | 31 +++++ 8 files changed, 271 insertions(+), 4 deletions(-) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java index 62a39335c..d2cfc77a3 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/controller/ProOrderWorkorderController.java @@ -7,9 +7,11 @@ import javax.servlet.http.HttpServletResponse; import com.alibaba.fastjson2.JSONObject; import com.op.common.core.exception.ServiceException; import com.op.plan.domain.ProOrder; +import com.op.plan.domain.ProOrderWorkorderBatch; import com.op.plan.domain.dto.SplitOrderDTO; import com.op.plan.service.IProWetMaterialPlanDetailService; import com.op.plan.service.IProWetMaterialPlanService; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; @@ -267,4 +269,37 @@ public class ProOrderWorkorderController extends BaseController { public List getUnReadComment(@RequestBody ProOrderWorkorder proOrderWorkorder) { return proOrderWorkorderService.getUnReadComment(proOrderWorkorder); } + + @RequiresPermissions("mes:pro:workorder:edit") + @Log(title = "批次编辑", businessType = BusinessType.OTHER) + @GetMapping("/getWorkOrderBatch/{workOrderCode}") + public TableDataInfo getWorkOrderBatch(@PathVariable String workOrderCode) { + List list = proOrderWorkorderService.getWorkOrderBatch(workOrderCode); + return getDataTable(list); + + } + @RequiresPermissions("mes:pro:workorder:edit") + @GetMapping("/getWorkOrderBatchInfo") + public AjaxResult getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) { + return success(proOrderWorkorderService.getWorkOrderBatchInfo(proOrderWorkorderBatch)); + } + @RequiresPermissions("mes:pro:workorder:edit") + @PostMapping("/insertWorkOrderBatch") + public AjaxResult insertWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) { + return toAjax(proOrderWorkorderService.insertWorkOrderBatch(proOrderWorkorderBatch)); + } + @RequiresPermissions("mes:pro:workorder:edit") + @PutMapping("/updateWorkOrderBatch") + public AjaxResult updateWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) { + return toAjax(proOrderWorkorderService.updateWorkOrderBatch(proOrderWorkorderBatch)); + } + @RequiresPermissions("mes:pro:workorder:edit") + @DeleteMapping("/removeWorkOrderBatch/{batchCode}/{workOrderCode}") + public AjaxResult removeWorkOrderBatch(@PathVariable("batchCode") String batchCode, + @PathVariable("workOrderCode")String workorderCode) { + ProOrderWorkorderBatch newBatch = new ProOrderWorkorderBatch(); + newBatch.setBatchCode(batchCode); + newBatch.setWorkorderCode(workorderCode); + return toAjax(proOrderWorkorderService.deleteWorkOrderBatch(newBatch)); + } } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java index 2fe0565d9..11b8c3d39 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/domain/ProOrderWorkorderBatch.java @@ -79,6 +79,11 @@ public class ProOrderWorkorderBatch extends BaseEntity { @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private String factoryCode; + private String workorderCode; + private String newBatchCode; + private Long newBatchQuantity; + + public void setBatchId(String batchId) { this.batchId = batchId; } @@ -167,6 +172,30 @@ public class ProOrderWorkorderBatch extends BaseEntity { return factoryCode; } + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getNewBatchCode() { + return newBatchCode; + } + + public void setNewBatchCode(String newBatchCode) { + this.newBatchCode = newBatchCode; + } + + public Long getNewBatchQuantity() { + return newBatchQuantity; + } + + public void setNewBatchQuantity(Long newBatchQuantity) { + this.newBatchQuantity = newBatchQuantity; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java index 90a0cca42..7ba8bec1c 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java @@ -81,5 +81,9 @@ public interface ProOrderWorkorderBatchMapper { public int deleteBatch(String[] workorderIds); + int updateWorkorderBatch(ProOrderWorkorderBatch batch); + + int deleteWorkOrderBatch(@Param("batchCode") String batchCode,@Param("workOrderIds") String[] workOrderIds); + List checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List newbatchs); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java index 4b687cab3..4378bcde9 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderMapper.java @@ -1,9 +1,6 @@ package com.op.plan.mapper; -import com.op.plan.domain.Batch; -import com.op.plan.domain.ProOrder; -import com.op.plan.domain.ProOrderWorkorder; -import com.op.plan.domain.ProWetMaterialPlanDetail; +import com.op.plan.domain.*; import com.op.system.api.domain.dto.BaseBomComponentDTO; import com.op.system.api.domain.dto.MesPrepareDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; @@ -207,5 +204,11 @@ public interface ProOrderWorkorderMapper { int deleteWetMaterial(@Param("orderIds")String[] workorderIds); List getUnReadComment(ProOrderWorkorder proOrderWorkorder); + + List getWorkOrderBatch(@Param("workOrderCode") String workOrderCode); + + ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch); + + List selectWorkOrderIdByBatch(@Param("workorderCode") String workorderCode); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java index 1d83c0177..9706cbd28 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/IProOrderWorkorderService.java @@ -3,6 +3,7 @@ package com.op.plan.service; import com.op.common.core.web.domain.AjaxResult; import com.op.plan.domain.ProOrderWorkorder; +import com.op.plan.domain.ProOrderWorkorderBatch; import com.op.plan.domain.dto.SplitOrderDTO; import java.util.List; @@ -137,4 +138,13 @@ public interface IProOrderWorkorderService { int deleteWetMaterial(String[] workorderIds); List getUnReadComment(ProOrderWorkorder proOrderWorkorder); + + List getWorkOrderBatch(String workOrderId); + + ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch); + + int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch); + int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch); + int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch); + } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index fc98bf43b..2a2d71130 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -1133,6 +1133,131 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { return dtos; } + @Override + @DS("#header.poolName") + public List getWorkOrderBatch(String workOrderCode) { + List workOrderBatch = proOrderWorkorderMapper.getWorkOrderBatch(workOrderCode); + return workOrderBatch; + } + + @Override + @DS("#header.poolName") + public ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) { + return proOrderWorkorderMapper.getWorkOrderBatchInfo(proOrderWorkorderBatch); + } + + @Override + @DS("#header.poolName") + public int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) { + String workOrderCode = proOrderWorkorderBatch.getWorkorderCode(); + String username = SecurityUtils.getUsername(); + Long newBatchQuantity = proOrderWorkorderBatch.getNewBatchQuantity(); + if (newBatchQuantity == null) { + return 0; + } + + List workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode); + // 获取子母工单数量 + Optional pQuantity = workOrders.stream().filter(item -> "0".equals(item.getParentOrder())) + .findFirst().map(ProOrderWorkorder::getQuantitySplit); + Optional cQuantity = workOrders.stream().filter(item -> !"0".equals(item.getParentOrder())) + .findFirst().map(ProOrderWorkorder::getQuantitySplit); + // 系数 + Long coefficient = 0L; + if (pQuantity.isPresent() && cQuantity.isPresent()) { + coefficient = cQuantity.get() / pQuantity.get(); + } + + int count = 0; + for (ProOrderWorkorder workOrder : workOrders) { + ProOrderWorkorderBatch batch = new ProOrderWorkorderBatch(); + + batch.setBatchId(IdUtils.fastSimpleUUID()); + batch.setWorkorderId(workOrder.getWorkorderId()); + batch.setBatchCode(proOrderWorkorderBatch.getNewBatchCode()); + batch.setStatus("0"); + batch.setCreateBy(username); + Date nowDate = DateUtils.getNowDate(); + batch.setCreateTime(nowDate); + batch.setUpdateBy(username); + batch.setUpdateTime(nowDate); + + if ("0".equals(workOrder.getParentOrder())) { + // 设置父工单数量 + batch.setBatchQuantity(newBatchQuantity); + }else { + // 设置子工单数量 + batch.setBatchQuantity(newBatchQuantity * coefficient); + } + + count += proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(batch); + + } + return count; + } + @Override + @DS("#header.poolName") + public int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) { + String workOrderCode = proOrderWorkorderBatch.getWorkorderCode(); + String username = SecurityUtils.getUsername(); + Long newBatchQuantity = proOrderWorkorderBatch.getNewBatchQuantity(); + if (newBatchQuantity == null) { + return 0; + } + + List workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode); + // 获取子母工单数量 + Optional pQuantity = workOrders.stream().filter(item -> "0".equals(item.getParentOrder())) + .findFirst().map(ProOrderWorkorder::getQuantitySplit); + Optional cQuantity = workOrders.stream().filter(item -> !"0".equals(item.getParentOrder())) + .findFirst().map(ProOrderWorkorder::getQuantitySplit); + // 系数 + Long coefficient = 0L; + if (pQuantity.isPresent() && cQuantity.isPresent()) { + coefficient = cQuantity.get() / pQuantity.get(); + } + + int count = 0; + for (ProOrderWorkorder workOrder : workOrders) { + ProOrderWorkorderBatch batch = new ProOrderWorkorderBatch(); + + batch.setBatchId(IdUtils.fastSimpleUUID()); + batch.setWorkorderId(workOrder.getWorkorderId()); + // 获取新旧批次号 + batch.setBatchCode(proOrderWorkorderBatch.getBatchCode()); + batch.setNewBatchCode(proOrderWorkorderBatch.getNewBatchCode()); + + batch.setStatus("0"); + batch.setUpdateBy(username); + batch.setUpdateTime(DateUtils.getNowDate()); + + if ("0".equals(workOrder.getParentOrder())) { + // 设置父工单数量 + batch.setNewBatchQuantity(newBatchQuantity); + }else { + // 设置子工单数量 + batch.setNewBatchQuantity(newBatchQuantity * coefficient); + } + + count += proOrderWorkorderBatchMapper.updateWorkorderBatch(batch); + + } + return count; + } + @Override + @DS("#header.poolName") + public int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) { + String workOrderCode = proOrderWorkorderBatch.getWorkorderCode(); + + List workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode); + String[] workOrderIds = workOrders.stream().map(ProOrderWorkorder::getWorkorderId).toArray(String[]::new); + String batchCode = proOrderWorkorderBatch.getBatchCode(); + + return proOrderWorkorderBatchMapper.deleteWorkOrderBatch(batchCode,workOrderIds); + } + + + /** * 校验工单是否可以修改 * 如果工单已生成湿料计划则不允许修改 diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml index 239cd2c66..201166028 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml @@ -143,6 +143,28 @@ where workorder_id = #{workorderId} + + update pro_order_workorder_batch + + batch_id = #{batchId}, + batch_code = #{newBatchCode}, + batch_quantity = #{newBatchQuantity}, + status = #{status}, + remark = #{remark}, + attr1 = #{attr1}, + attr2 = #{attr2}, + attr3 = #{attr3}, + attr4 = #{attr4}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + prod_type = #{prodType}, + factory_code = #{factoryCode}, + + where workorder_id = #{workorderId} and batch_code = #{batchCode} + and del_flag = '0' + update pro_order_workorder_batch @@ -169,5 +191,13 @@ #{workorderId} + + update pro_order_workorder_batch + set del_flag = '1' + where batch_code = #{batchCode} and workorder_id in + + #{workOrderId} + + diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml index ce24afe4e..9c9d33e6c 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderMapper.xml @@ -603,6 +603,37 @@ order by pow.product_date desc + + + + + + insert into mes_prepare_detail (