From c114c17a99f0067d9c25ba305c915db9dafdedd2 Mon Sep 17 00:00:00 2001 From: z Date: Fri, 12 Sep 2025 20:36:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=B9=E9=87=8F=E5=AE=A1?= =?UTF-8?q?=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processbom/ProcessBomController.java | 14 ++ .../PurchaseOrderMakeController.java | 6 +- .../deliverorder/DeliverOrderServiceImpl.java | 14 +- .../PartPurchaseOrderService.java | 3 +- .../PartPurchaseOrderServiceImpl.java | 118 ++++++++--- .../service/processbom/ProcessBomService.java | 4 + .../processbom/ProcessBomServiceImpl.java | 89 ++++++-- .../src/api/heli/partpurchaseorder/index.ts | 4 +- .../src/api/heli/processbom/index.ts | 6 + .../src/views/heli/deliverorder/detail.vue | 10 +- .../src/views/heli/partpurchasecheck/Form.vue | 80 +++++++ .../views/heli/partpurchasecheck/indexs.vue | 155 ++++++++++---- .../src/views/heli/plan/productionPrint.vue | 196 +++++++++--------- .../views/heli/processdesign/bomDetail.vue | 18 +- .../heli/processdesign/bomImportForm.vue | 8 +- .../views/heli/taskdispatch/taskSchedule.vue | 8 +- 16 files changed, 515 insertions(+), 218 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/Form.vue diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java index c1351576..3c14fc58 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/processbom/ProcessBomController.java @@ -269,6 +269,20 @@ public class ProcessBomController { public CommonResult withdraw(@RequestParam("code") String code) { return processBomService.withdraw(code); } + @GetMapping("/updateById") + @Operation(summary = "修改生产任务单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process-bom:query')") + public CommonResult updateById(@RequestParam("code") String code) { + return processBomService.updateById(code); + } + @GetMapping("/selectPlanTaskStatus") + @Operation(summary = "查看生产任务单状态") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:process-bom:query')") + public CommonResult selectPlanTaskStatus(@RequestParam("id") String id) { + return processBomService.selectPlanTaskStatus(id); + } @GetMapping("/exportStandard") @Operation(summary = "导出标准件物料需求计划Excel") @OperateLog(type = EXPORT) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java index 9dc71092..4fd2513c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/PurchaseOrderMakeController.java @@ -171,9 +171,9 @@ public class PurchaseOrderMakeController { public CommonResult rejects(@RequestParam("id") Long id) { return success(partPurchaseOrderService.rejects(id)); } - @GetMapping("/approvals") + @PostMapping("/approvals") @Operation(summary = "采购单批准") - public CommonResult approvals(@RequestParam("id") Long id) { - return success(partPurchaseOrderService.approvals(id)); + public CommonResult approvals(@Valid @RequestBody List list) { + return success(partPurchaseOrderService.approvals(list)); } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java index 66c134aa..bc9f5daa 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/deliverorder/DeliverOrderServiceImpl.java @@ -139,15 +139,19 @@ public class DeliverOrderServiceImpl implements DeliverOrderService { // 校验存在 DeliverOrderDO oldDO = validateDeliverOrderExists(updateReqVO.getId()); OperateTypeEnum operateTypeEnum = OperateTypeEnum.valueOf(updateReqVO.getActive()); - if(!oldDO.canOperate(operateTypeEnum)){ - throw exception(INVALID_OPERATE); - } - // 超额校验 - overageDeliverValidate(updateReqVO.getSaleOrderIds(), updateReqVO.getDeliverOrderSubs()); +// if(!oldDO.canOperate(operateTypeEnum)){ +// throw exception(INVALID_OPERATE); +// } // 更新 DeliverOrderDO updateObj = BeanUtils.toBean(updateReqVO, DeliverOrderDO.class); updateObj.setDeliverStatus(DeliverOrderStatusEnum.valueOf(updateReqVO.getActive()).getCode()); + if (oldDO.getDeliverStatus()==2){ + updateObj.setDeliverStatus(2); + }else { + // 超额校验 + overageDeliverValidate(updateReqVO.getSaleOrderIds(), updateReqVO.getDeliverOrderSubs()); + } deliverOrderMapper.updateById(updateObj); updateReqVO.setDeliverStatus(updateObj.getDeliverStatus()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java index 8688a097..ba51c77a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderService.java @@ -7,6 +7,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.Pa import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; import java.util.List; @@ -68,7 +69,7 @@ public interface PartPurchaseOrderService { Long countReview(); - Boolean approvals(Long id); + Boolean approvals(List list); Boolean rejects(Long id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java index 35c18261..84b44f84 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/partpurchaseorder/PartPurchaseOrderServiceImpl.java @@ -20,6 +20,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; @@ -29,6 +30,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplanboom.MaterialPlanBoomMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plan.PlanMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.plansub.PlanSubMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; @@ -50,10 +52,8 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser; @@ -84,6 +84,8 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ private OrderYfService orderYfService; @Autowired private SupplierMapper supplierMapper; + @Autowired + private ProcessBomDetailMapper processBomDetailMapper; @Override public PageResult getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) { @@ -190,16 +192,41 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ @Override public boolean updatePartCheckStatusNo(PurchaseOrderMakeSaveReqVO updateReqVO) { - PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); - purchaseOrderMakeDO.setId(updateReqVO.getId()); - purchaseOrderMakeDO.setStatus(3); - purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); - purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO); - - LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); - wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId()); - purchaseOrderMakeDetailMapper.delete(wrapper); - List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId()); +// PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); +// purchaseOrderMakeDO.setId(updateReqVO.getId()); +// purchaseOrderMakeDO.setStatus(3); +// purchaseOrderMakeMapper.updateById(purchaseOrderMakeDO); +// purchaseOrderMakeMapper.deleteById(purchaseOrderMakeDO); +// +// LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); +// wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, updateReqVO.getId()); +// purchaseOrderMakeDetailMapper.delete(wrapper); +// List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId()); +// materialPlanBoomDOs.forEach(materialPlanBoom -> { +// UpdateWrapper updateWrapper = new UpdateWrapper<>(); +// updateWrapper.eq("id", materialPlanBoom.getId()) +// .set("mplan_status", 3) +// .set("project_purchase_order_make_id", null) +// .set("purchase_no", null) +// .set("project_purchase_order_make_detail_id", null) +// .set("rej_remark", updateReqVO.getReason()); +// materialPlanBoomMapper.update(updateWrapper); +// }); +// return true; + PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(updateReqVO.getId()); + if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){ + if (orderMakeDetailDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); + PurchaseOrderMakeDO orderMakeDO = purchaseOrderMakeMapper.selectById(orderMakeDetailDO.getPurchaseOrderId()); + purchaseOrderMakeDetailMapper.deleteById(orderMakeDetailDO); + if (ObjectUtil.isNotEmpty(orderMakeDO)){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(PurchaseOrderMakeDetailDO::getPurchaseOrderId, orderMakeDO.getId()); + if (purchaseOrderMakeDetailMapper.selectCount(wrapper) == 0){ + purchaseOrderMakeMapper.deleteById(orderMakeDO.getId()); + } + } + } + List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", updateReqVO.getId()); materialPlanBoomDOs.forEach(materialPlanBoom -> { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("id", materialPlanBoom.getId()) @@ -207,11 +234,14 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ .set("project_purchase_order_make_id", null) .set("purchase_no", null) .set("project_purchase_order_make_detail_id", null) - .set("rej_remark", updateReqVO.getReason()); + .set("estimated_price", BigDecimal.ZERO) + .set("supplier_id", null) + .set("rej_remark", updateReqVO.getReason()) + .set("mat_rest",null); materialPlanBoomMapper.update(updateWrapper); }); - return true; + } @Override @@ -307,7 +337,20 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ purchaseOrderMakeMapper.insert(purchaseOrderMakeDO); long purchaseOrderMakeId = purchaseOrderMakeDO.getId(); String purchaseOrderMakeDOPurchaseNo = purchaseOrderMakeDO.getPurchaseNo(); - + Map groupedResult = updateReqVOs.stream() + .collect(Collectors.groupingBy( + MaterialPlanBoomDO::getBoomDetailId, // 根据 boomDetailId 分组 + Collectors.collectingAndThen( + Collectors.toList(), // 将同组元素收集为 List + list -> list.get(0).getBoomSpec() // 取第一个元素的 boomSpec + ) + )); + groupedResult.forEach((boomDetailId, boomSpec) -> { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(ProcessBomDetailDO::getId,boomDetailId); + lambdaUpdateWrapper.set(ProcessBomDetailDO::getSpec, boomSpec); + processBomDetailMapper.update(lambdaUpdateWrapper); + }); updateReqVOs.forEach(updateReq -> { createPurchaseOrderMakeAndDetail(updateReq,purchaseOrderMakeId, purchaseOrderMakeDOPurchaseNo,planDO.getId()); }); @@ -357,23 +400,32 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ } @Override - public Boolean approvals(Long id) { - PurchaseOrderMakeDetailDO orderMakeDetailDO = purchaseOrderMakeDetailMapper.selectById(id); - if (ObjectUtil.isNotEmpty(orderMakeDetailDO)){ - if (orderMakeDetailDO.getStatus() != 1) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); - orderMakeDetailDO.setStatus(2); - orderMakeDetailDO.setAuditTime(LocalDateTime.now()); - orderMakeDetailDO.setAuditor(getLoginUser().getId()); - purchaseOrderMakeDetailMapper.updateById(orderMakeDetailDO); + public Boolean approvals(List list) { + if (ObjectUtil.isNotEmpty( list)){ + List ids = list.stream().map(PurchaseOrderMakeDetailDO::getId).collect(Collectors.toList()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(PurchaseOrderMakeDetailDO::getId, ids); + wrapper.ne(PurchaseOrderMakeDetailDO::getStatus,1); + if (purchaseOrderMakeDetailMapper.selectCount(wrapper) > 0) throw exception(new ErrorCode(400,"该单据状态非待审核,请刷新界面!")); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.in(PurchaseOrderMakeDetailDO::getId, ids); + updateWrapper.set(PurchaseOrderMakeDetailDO::getStatus,2); + updateWrapper.set(PurchaseOrderMakeDetailDO::getAuditTime, LocalDateTime.now()); + updateWrapper.set(PurchaseOrderMakeDetailDO::getAuditor, getLoginUser().getId()); + purchaseOrderMakeDetailMapper.update(updateWrapper); + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.in(MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId, ids); + lambdaUpdateWrapper.set(MaterialPlanBoomDO::getMplanStatus,2); + materialPlanBoomMapper.update(lambdaUpdateWrapper); +// List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id); +// materialPlanBoomDOs.forEach(materialPlanBoomDO -> { +// MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO(); +// materialPlanBoom.setId(materialPlanBoomDO.getId()); +// materialPlanBoom.setMplanStatus(2); +// materialPlanBoomMapper.updateById(materialPlanBoom); +// }); } - List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_detail_id", id); - materialPlanBoomDOs.forEach(materialPlanBoomDO -> { - MaterialPlanBoomDO materialPlanBoom = new MaterialPlanBoomDO(); - materialPlanBoom.setId(materialPlanBoomDO.getId()); - materialPlanBoom.setMplanStatus(2); - materialPlanBoomMapper.updateById(materialPlanBoom); - }); - return true; + return true; } @Override diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java index 5fc20e76..53a9189d 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomService.java @@ -116,4 +116,8 @@ public interface ProcessBomService { BigDecimal assemblyLaborCost(Long id, Long projectSubId); CommonResult delMaterialPlan(Long id, String projectMaterialPlanNo); + + CommonResult updateById(String code); + + CommonResult selectPlanTaskStatus(String id); } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java index aaaf5760..66b20065 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/processbom/ProcessBomServiceImpl.java @@ -13,6 +13,7 @@ import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum; +import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService; import com.chanko.yunxi.mes.framework.security.core.util.SecurityFrameworkUtils; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomImportExcelVO; import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO; @@ -29,6 +30,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantask.PlanTaskDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.plantaskbom.PlanTaskBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordernodetail.PurchaseOrderNoDetailDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.shenhe.ShenheDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageLogNowDO; @@ -51,6 +53,7 @@ import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogNowMapper import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch.TaskDispatchMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.taskreport.TaskReportMapper; +import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.heli.service.attentiontodo.AttentiontodoService; @@ -65,6 +68,7 @@ import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.chanko.yunxi.mes.module.system.dal.mysql.dict.DictDataMapper; import com.chanko.yunxi.mes.module.system.service.user.AdminUserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -85,6 +89,7 @@ import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.error; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.MATERIAL_PLAN; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; @@ -486,10 +491,13 @@ public class ProcessBomServiceImpl implements ProcessBomService { List planTaskBomDOS = planTaskBomMapper.selectList(wrapper); if (ObjectUtil.isNotEmpty(planTaskBomDOS)){ List collect = planTaskBomDOS.stream().map(PlanTaskBomDO::getTaskId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper planTaskDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - planTaskDOLambdaQueryWrapper.in(PlanTaskDO::getId, collect); - planTaskDOLambdaQueryWrapper.eq(PlanTaskDO::getStatus, 2); - if (planTaskMapper.selectCount(planTaskDOLambdaQueryWrapper) > 0) throw exception(new ErrorCode(1_007_9999,"该生产任务单状态已提交,请先取消再修改BOM")); + if (ObjectUtil.isNotEmpty( collect)){ + LambdaQueryWrapper planTaskDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + planTaskDOLambdaQueryWrapper.in(PlanTaskDO::getId, collect); + planTaskDOLambdaQueryWrapper.eq(PlanTaskDO::getStatus, 2); + if (planTaskMapper.selectCount(planTaskDOLambdaQueryWrapper) > 0) throw exception(new ErrorCode(1_007_9999,"该生产任务单状态已提交,请先取消再修改BOM")); + } + } //标准件不管材质,非标准件材质必填 @@ -559,14 +567,22 @@ public class ProcessBomServiceImpl implements ProcessBomService { List list = taskDispatchMapper.selectList(queryWrapper); if (ObjectUtil.isNotEmpty(list)){ List collect = list.stream().map(TaskDispatchDO::getId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(TaskDispatchDetailDO::getDispatchId, collect); - List detailDOS = taskDispatchDetailMapper.selectList(wrapper); - List collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1); - if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper)>0) throw exception(new ErrorCode(1_007_9988,"物料"+po.getMaterialName()+"已报工,不允许修改零件名称")); - } + if (ObjectUtil.isNotEmpty( collect)) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(TaskDispatchDetailDO::getDispatchId, collect); + List detailDOS = taskDispatchDetailMapper.selectList(wrapper); + if (ObjectUtil.isNotEmpty(detailDOS)) { + List collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(collect1)) { + LambdaQueryWrapper taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1); + if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper) > 0) + throw exception(new ErrorCode(1_007_9988, "物料" + po.getMaterialName() + "已报工,不允许修改零件名称")); + } + } + } + + } } if (!vo.getBlueprintNo().equals(po.getBlueprintNo())) { LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); @@ -578,13 +594,18 @@ public class ProcessBomServiceImpl implements ProcessBomService { List list = taskDispatchMapper.selectList(queryWrapper); if (ObjectUtil.isNotEmpty(list)){ List collect = list.stream().map(TaskDispatchDO::getId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(TaskDispatchDetailDO::getDispatchId, collect); - List detailDOS = taskDispatchDetailMapper.selectList(wrapper); - List collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); - taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1); - if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper)>0) throw exception(new ErrorCode(1_007_9988,"物料"+po.getMaterialName()+"已报工,不允许修改图号")); + if (ObjectUtil.isNotEmpty(collect)){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(TaskDispatchDetailDO::getDispatchId, collect); + List detailDOS = taskDispatchDetailMapper.selectList(wrapper); + List collect1 = detailDOS.stream().map(TaskDispatchDetailDO::getId).distinct().collect(Collectors.toList()); + if (ObjectUtil.isNotEmpty(collect1)){ + LambdaQueryWrapper taskReportDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); + taskReportDOLambdaQueryWrapper.in(TaskReportDO::getDispatchDetailId, collect1); + if (taskReportMapper.selectCount(taskReportDOLambdaQueryWrapper)>0) throw exception(new ErrorCode(1_007_9988,"物料"+po.getMaterialName()+"已报工,不允许修改图号")); + } + } + } vo.setBomEditStatus(BomEditStatusEnum.HAS_EDIT.getStatus()); } @@ -595,10 +616,12 @@ public class ProcessBomServiceImpl implements ProcessBomService { List list = taskDispatchMapper.selectList(queryWrapper); if (ObjectUtil.isNotEmpty(list)){ List collect = list.stream().map(TaskDispatchDO::getId).distinct().collect(Collectors.toList()); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.in(TaskDispatchDetailDO::getDispatchId, collect); - wrapper.eq(TaskDispatchDetailDO::getProcedureStatus, 2); - if (taskDispatchDetailMapper.selectCount(wrapper)>0) throw exception(new ErrorCode(1_007_9998,"该零件"+po.getMaterialName()+"工序已报工完成,不允许修改")); + if (ObjectUtil.isNotEmpty( collect)){ + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(TaskDispatchDetailDO::getDispatchId, collect); + wrapper.eq(TaskDispatchDetailDO::getProcedureStatus, 2); + if (taskDispatchDetailMapper.selectCount(wrapper)>0) throw exception(new ErrorCode(1_007_9998,"该零件"+po.getMaterialName()+"工序已报工完成,不允许修改")); + } } vo.setBomEditStatus(BomEditStatusEnum.HAS_EDIT.getStatus()); } @@ -1530,6 +1553,26 @@ public class ProcessBomServiceImpl implements ProcessBomService { return CommonResult.error(400,"boom明细不存在,请刷新页面"); } + @Override + public CommonResult updateById(String code) { + LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); + wrapper.eq(PlanTaskDO::getProcessBomId, code); + wrapper.set(PlanTaskDO ::getStatus,1); + planTaskMapper.update(wrapper); + return success( true); + } + + @Override + public CommonResult selectPlanTaskStatus(String id) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(PlanTaskDO::getProcessBomId, id); + PlanTaskDO planTaskDO = planTaskMapper.selectOne(lambdaQueryWrapper); + if (ObjectUtil.isNotEmpty(planTaskDO)){ + if (planTaskDO.getStatus()==2) return CommonResult.success(true); + } + return success(false); + } + private void createProcessBomDetailList(String bomCode,Long bomId, List list,Integer num) { LocalDateTime now = LocalDateTime.now(); diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts index ddc038f7..e4060e80 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/partpurchaseorder/index.ts @@ -73,6 +73,6 @@ export const obtainReviewDetails = async (id:number) => { export const rejects = async (id:number) => { return await request.get({ url: `/heli/purchase-order-make/rejects?id=` +id }) } -export const approvals = async (id: number) => { - return await request.get({ url: `/heli/purchase-order-make/approvals?id=` + id }) +export const approvals = async (data) => { + return await request.post({ url: `/heli/purchase-order-make/approvals`,data }) } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts index f5524f03..8cf8c11f 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/processbom/index.ts @@ -104,3 +104,9 @@ export const planBZJPage = async (params) => { export const delMaterialPlan = async (id: number,projectMaterialPlanNo:string) => { return await request.delete({ url: `/heli/process-bom/delMaterialPlan?id=` + id+"&projectMaterialPlanNo="+projectMaterialPlanNo}) } +export const updateById = async (code) => { + return await request.get({ url: `/heli/process-bom/updateById?code=` + code }) +} +export const selectPlanTaskStatus = async (id) => { + return await request.get({ url: `/heli/process-bom/selectPlanTaskStatus?id=` + id }) +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue index 2119bde8..04d1f08b 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/deliverorder/detail.vue @@ -243,7 +243,7 @@ @@ -344,7 +344,7 @@ @@ -106,22 +113,32 @@ - - + + + + +
- + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue index e2b48745..f942604e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/plan/productionPrint.vue @@ -5,15 +5,15 @@ - - - @@ -22,10 +22,9 @@ - - @@ -41,12 +40,12 @@ - - + + - + - + @@ -117,17 +116,25 @@ - + - + + + + + + + + + - + - - @@ -167,27 +174,26 @@ - + - + - - + - - + + - + @@ -259,9 +265,9 @@ style="
+
+ 模具生产计划单 +
项目编号
{{ formData.code }}
客户名称 - {{ formData.customerName }} + + {{ formData.customerName }}({{ formData.customer.brief}}) {{ formData.customer.brief }} 编码: {{ formData.customer.code }}
项目工期 {{ formatDate(new Date(formData.projectStartTime), 'YYYY-MM-DD') }}{{ formatDate(new Date(formData.projectStartTime), 'YYYY-MM-DD') }} {{ formatDate(new Date(formData.projectEndTime), 'YYYY-MM-DD') }}{{ formatDate(new Date(formData.projectEndTime), 'YYYY-MM-DD') }} 天数{{ betweenDay(new Date(formData.projectStartTime), new Date(formData.projectEndTime)) +1 }}{{ betweenDay(new Date(formData.projectStartTime), new Date(formData.projectEndTime)) +1 }} 是否有价格: {{ getDictLabel(DICT_TYPE.HELI_COMMON_IS_OR_NOT, formData.hasPrice) }}
序号 名称/编号 名称 设备型号 数量 主要材料 毛坯日期 毛坯日期 2D/日期 3D/日期
{{ idx+1 }} +
{{item.name}} @@ -138,7 +145,7 @@
{{equipInit.find((equip) => equip.id == item.equipId)?.name}} {{item.amount}} {{ item.compositionName }} +   {{ formatDate(new Date(item.blankDate), 'YYYY-MM-DD') }}
{{item+(formData.projectOrderSubs.length)}}                 
序号 工艺流程 序号 工艺流程 开始日期 结束日期 责任人 备注
{{ index+1 }} {{ index+1 }} {{ its.name }} @@ -215,7 +221,7 @@ style=" "> 说明: 1.每个项目的零部件制作工艺,材料材质,硬度要求必须统一,出现任何问题,各工程师负责! - 2.模具调试,试模需要根据客户要求,自己安排调试,我司根据需要安排人员参与配合。 +
-
- - + + + @@ -318,24 +324,24 @@ style=" - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + @@ -373,56 +379,56 @@ style=" - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -480,8 +486,8 @@ style=" -
-
子项目信息:
-
序号 名称/编号 设备型号 数量 主要材料 毛坯日期 2D/日期 3D/日期
{{ idx+7 }} -
- {{item.name}} + + + + + -
-
{{equipInit.find((equip) => equip.id == item.equipId)?.name}} {{item.amount}} {{ item.compositionName }} -   - {{ formatDate(new Date(item.blankDate), 'YYYY-MM-DD') }} - -
-   - {{ formatDate(new Date(item.twoDimDate), 'YYYY-MM-DD') }} - {{ userInit.find((user) => user.id == item.twoDimOwner)?.nickname }} -   -
-
-
-   + + + + + + + + + + + + + + + + + + + + - {{ formatDate(new Date(item.threeDimDate), 'YYYY-MM-DD') }} - - {{ userInit.find((user) => user.id === item.threeDimOwner)?.nickname }} - -   -
-
{{item+(formData.projectOrderSubs.length)}}             
-
+ +