From 92849062544b7278230ba6613538712374a9ea57 Mon Sep 17 00:00:00 2001 From: Ledo Date: Wed, 25 Jun 2025 21:47:33 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=86=8D=E5=86=99=E5=85=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/heli/enums/ErrorCodeConstants.java | 1 + .../dal/dataobject/material/MaterialDO.java | 2 + .../materialplanboom/MaterialPlanBoomDO.java | 1 + .../PurchaseOrderMakeDetailDO.java | 1 + .../dal/mysql/material/MaterialMapper.java | 10 +++ .../PurchaseOrderMakeDetailMapper.java | 3 +- .../processbom/ProcessBomServiceImpl.java | 10 ++- .../PurchaseOrderMakeDetailServiceImpl.java | 50 +++++++++++--- .../src/api/heli/materialplanboom/index.ts | 1 + .../views/heli/materialplan/purchasemake.vue | 12 ++-- .../views/heli/materialplan/standardbuy.vue | 69 +++++++++++-------- .../views/heli/materialplan/storageLog.vue | 4 +- .../views/heli/processdesign/bomDetail.vue | 2 +- 13 files changed, 115 insertions(+), 51 deletions(-) diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index 0c39f2a..c823619 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -103,6 +103,7 @@ public interface ErrorCodeConstants { ErrorCode PURCHASE_ORDER_MAKE_DETAIL_NOT_EXISTS = new ErrorCode(1_008_008, "采购单明细不存在"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_EXISTS = new ErrorCode(1_008_009, "存在物料清单已生成采购订单,请刷新界面!"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!"); + ErrorCode PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_011, "物料数据不能为空,请选择物料后重试!"); /************生产管理***********/ ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在"); ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在"); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java index efdfeb7..3edde13 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/material/MaterialDO.java @@ -90,6 +90,8 @@ public class MaterialDO extends TenantBaseDO { * 材质id */ private Long compositionId; + @TableField(exist = false) + private String compositionName; /** * 销项税率或进项税率 (%) */ diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java index 29f06e5..13b8ef1 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/materialplanboom/MaterialPlanBoomDO.java @@ -86,6 +86,7 @@ public class MaterialPlanBoomDO extends BaseDO { /** * 物料id */ + @TableField(exist = false) private Long materialId; /** * 零件重量 diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java index 744416e..fe21389 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/dataobject/purchaseordermakedetail/PurchaseOrderMakeDetailDO.java @@ -154,6 +154,7 @@ public class PurchaseOrderMakeDetailDO extends BaseDO { /** * 物料id */ + @TableField(exist = false) private Long materialId; } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java index 21d5132..04b498a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/material/MaterialMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.module.heli.controller.admin.material.vo.MaterialPageReqVO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; @@ -31,6 +32,15 @@ public interface MaterialMapper extends BaseMapperX { query.eq(code != null, MaterialDO::getCode, code); return selectOne( query); } + //材质为空时查不出来数据注释 +// default MaterialDO selectById(Long id) { +// MPJLambdaWrapper query = new MPJLambdaWrapper<>(); +// query.selectAll(MaterialDO.class) +// .select("c.name as compositionName") +// .leftJoin(CompositionDO.class,"c",CompositionDO::getId,MaterialDO::getCompositionId); +// query.eq(MaterialDO::getId, id); +// return selectOne( query); +// } default MaterialDO selectMaterial(String code) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java index 9e64734..ec84a43 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermakedetail/PurchaseOrderMakeDetailMapper.java @@ -38,10 +38,9 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX selectPage(PurchaseOrderMakeDetailPageReqVO reqVO) { MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(PurchaseOrderMakeDetailDO.class) - .select("b.material_name as boomName","m.code as boomCode","b.spec as boomSpec","b.unit as boomUnit") + .select("b.material_name as boomName","b.spec as boomSpec","b.unit as boomUnit") // .select("pom.purchase_no as purchaseNo") .leftJoin(ProcessBomDetailDO.class,"b",ProcessBomDetailDO::getId,PurchaseOrderMakeDetailDO::getBoomDetailId) - .leftJoin(MaterialDO.class,"m",MaterialDO::getId,PurchaseOrderMakeDetailDO::getMaterialId) .leftJoin(ProjectOrderSubDO.class,"pos",ProjectOrderSubDO::getId,PurchaseOrderMakeDetailDO::getProjectPlanSubId) .leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId) .leftJoin(PurchaseOrderMakeDO.class,"pom",PurchaseOrderMakeDO::getId,PurchaseOrderMakeDetailDO::getPurchaseOrderId) 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 27ddf4e..206dacb 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 @@ -403,7 +403,7 @@ public class ProcessBomServiceImpl implements ProcessBomService { //不论怎么样,都要校验这次的数据它图号是否唯一、非标准件的名称是否重复,规格是否为空 if (CollUtil.isNotEmpty(processBomDetails)){ //校验这次的数据它图号是否唯一 - Map> groupedByBluePrintfNo = processBomDetails.stream().collect(Collectors.groupingBy(vo -> vo.getBlueprintNo() == null ? "NULL" : vo.getBlueprintNo())); + Map> groupedByBluePrintfNo = processBomDetails.stream().filter(e -> e.getDeleted() == false).collect(Collectors.groupingBy(vo -> vo.getBlueprintNo() == null ? "NULL" : vo.getBlueprintNo())); groupedByBluePrintfNo.forEach((printNo,list)->{ if (printNo.equals("NULL")){ throw exception(PROCESS_BOM_DETAIL_BLUE_PRINT_NO_NOT_EXISTS); @@ -439,6 +439,14 @@ public class ProcessBomServiceImpl implements ProcessBomService { // processBomDetail.setMaterialCode(""); // } // } + }else { + if(operateTypeEnum == OperateTypeEnum.SUBMIT){ + if (processBomDetail.getSpec() == null){ + throw exception(new ErrorCode(1_006_9998,processBomDetail.getMaterialName()+"规格型号不能为空,请确认!")); + + } + } + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java index 434443f..3a9bb8e 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java @@ -1,11 +1,15 @@ package com.chanko.yunxi.mes.module.heli.service.purchaseordermakedetail; import cn.hutool.core.collection.CollUtil; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorderno.PurchaseOrderNoDO; 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.mysql.composition.CompositionMapper; +import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; @@ -53,7 +57,10 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta private PurchaseOrderNoDetailMapper purchaseOrderNoDetailMapper; @Resource private PurchaseOrderMakeMapper purchaseOrderMakeMapper; - + @Resource + private MaterialMapper materialMapper; + @Resource + private CompositionMapper compositionMapper; @Override public Long createPurchaseOrderMakeDetail(PurchaseOrderMakeDetailSaveReqVO createReqVO) { // 插入 @@ -84,16 +91,39 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta purchaseOrderNoMapper.insert(purchaseOrderNoDO); List insertList =new ArrayList<>(); HashMap insertMap = new HashMap<>(); + HashMap insertMaterialMap = new HashMap<>(); + HashMap compositionDOHashMap = new HashMap<>(); for (PurchaseOrderMakeDetailDO pmd : updateList) { PurchaseOrderNoDetailDO pd = new PurchaseOrderNoDetailDO(); pd.setMakeDetailId(pmd.getId()); pd.setPurchaseOrderId(purchaseOrderNoDO.getId()); pd.setBoomDetailId(pmd.getBoomDetailId()); - pd.setBoomName(pmd.getBoomName()); - pd.setBoomSpec(pmd.getBoomSpec()); - pd.setBoomUnit(pmd.getBoomUnit()); - pd.setComposition(pmd.getComposition()); + if (pd.getMakeDetailId() != null) { + MaterialDO materialDO = insertMaterialMap.get(pmd.getMaterialId()); + + if (materialDO == null) { + materialDO = materialMapper.selectById(pmd.getMaterialId()); + insertMaterialMap.put(pd.getMakeDetailId(), materialDO); + } + if (materialDO.getCompositionId() != null) { + CompositionDO compositionDO = compositionDOHashMap.get(materialDO.getCompositionId()); + if (compositionDO == null) { + compositionDO = compositionMapper.selectById(materialDO.getCompositionId()); + compositionDOHashMap.put(materialDO.getCompositionId(), compositionDO); + } + pd.setComposition(compositionDO == null ?"":compositionDO.getName()); + } + + pd.setBoomName(materialDO.getName()); + pd.setMaterialId(materialDO.getId()); + pd.setBoomSpec(materialDO.getSpec()); + pd.setBoomUnit(materialDO.getUnit()); + + }else { + throw exception(PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS); + } + pd.setPurchaseAmount(pmd.getPurchaseAmount()); pd.setEstimatedPrice(pmd.getEstimatedPrice()); pd.setArriveTime(pmd.getArriveTime()); @@ -143,12 +173,12 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta validatePurchaseOrderMakeDetailExists(updateReqVO.getId()); // 更新 PurchaseOrderMakeDetailDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDetailDO.class); - if (updateObj.getMaterialId() == null){ - purchaseOrderMakeDetailMapper.clearMaterialId(updateObj.getId()); +// if (updateObj.getMaterialId() == null){ +// purchaseOrderMakeDetailMapper.clearMaterialId(updateObj.getId()); +// purchaseOrderMakeDetailMapper.updateById(updateObj); +// }else { purchaseOrderMakeDetailMapper.updateById(updateObj); - }else { - purchaseOrderMakeDetailMapper.updateById(updateObj); - } + // } } diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplanboom/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplanboom/index.ts index ae50060..844b8e0 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplanboom/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/materialplanboom/index.ts @@ -11,6 +11,7 @@ export interface MaterialPlanBoomVO { purchaseAmount:number estimatedPrice:number arriveTime:Date + projectPurchaseOrderMakeDetailId:number supplierId:number materialPlanBoomDOList:Array } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue index e4f3146..4007c11 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue @@ -19,7 +19,7 @@ - + @@ -75,6 +75,7 @@ :remote-method="e => remoteMethod(e,scope.row)" remote-show-suffix remote + @click="remoteMethod(scope.row.boomCode,scope.row)" :disabled="scope.row.orderStatus == 2" clearable reserve-keyword @@ -107,6 +108,7 @@ v-model="scope.row.supplierId" size="large" disabled + filterable style="width: 165 px" > { // row.boomName = e.materialName; // row.boomSpec = e.spec; // row.boomUnit = e.unit - await updateRows(row) + // await updateRows(row) }else{ row.materialId = null; await updateRows(row) @@ -320,7 +322,7 @@ const handleQuery = () => { const opearteForm = async(type) =>{ loading.value = true; if(type == 1){ - router.push({ path: '/purchase/PurchaseOrder', query: { flush: 1 } }) + router.push({ path: '/purchase/purchaseordernomanagement', query: { flush: 1 } }) return; } if(ids.value != null && ids.value.length > 0){ @@ -472,8 +474,8 @@ const handleExport = async () => { await message.exportConfirm() // 发起导出 exportLoading.value = true - const data = await ProcessBomApi.exportProcessBom(queryParams) - download.excel(data, '工艺bom.xls') + // const data = await ProcessBomApi.exportProcessBom(queryParams) + // download.excel(data, '工艺bom.xls') } catch { } finally { exportLoading.value = false diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue index 7d10fb7..ca9200d 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue @@ -28,7 +28,7 @@ /> - + @@ -91,12 +91,6 @@ - - - - + + + + @@ -134,7 +135,7 @@ - + - - + + + + + @@ -230,9 +236,10 @@ const getRowKeys=(row)=>{ const handleSelectionChange = (selection) => { ids.value = selection; - console.log(ids.value) } - +const clearItem = () =>{ + multipleTable.value.clearSelection(); +} /** 导出按钮操作 */ const handleExportDetail = async () => { try { @@ -247,13 +254,14 @@ const handleExportDetail = async () => { exportLoading.value = false } } -const getMat = async (rowids,amount,ids) => { +const getMat = async (rowids,amount,ids,matCodes) => { //formData.value.boomItemDOList = arrBoom for(var i = 0 ; i < list.value.length ; i ++){ if(list.value[i].id == rowids){ list.value[i].matRest = amount + list.value[i].matCode = matCodes list.value[i].materialId = ids - await updateRow(2,list.value[i]); + // await updateRow(2,list.value[i]); break; } } @@ -332,23 +340,24 @@ const opearteForm = async(type) =>{ await materialPlanBoomApi.updateMaterialPlanBoom(form); message.success("送审成功") await getList() - }catch(e){ + }catch{ loading.value = false }finally{ loading.value = false } - - + + }else{ //去库存 - for(var i = 0 ; i{ await materialPlanBoomApi.updateMaterialPlanBoom(form); message.success("去库存成功") await getList() - }catch(e){ + }catch{ loading.value = false }finally{ loading.value = false } - - + + } }else{ message.error("至少选择一项后进行操作!") @@ -478,8 +487,8 @@ const handleExport = async () => { await message.exportConfirm() // 发起导出 exportLoading.value = true - const data = await ProcessBomApi.exportProcessBom(queryParams) - download.excel(data, '工艺bom.xls') + // const data = await ProcessBomApi.exportProcessBom(queryParams) + // download.excel(data, '工艺bom.xls') } catch { } finally { exportLoading.value = false diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue index 8b12aa0..51c8f3e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue @@ -7,7 +7,7 @@ - + @@ -162,7 +162,7 @@ const emit = defineEmits(['success']) // emit('success', multipleSelection.value) const success = () =>{ dialogVisible.value = false; - emit('success',rowid.value,clickItem.value.storageOkQty,clickItem.value.id) + emit('success',rowid.value,clickItem.value.storageOkQty,clickItem.value.id,clickItem.value.matCode) } const handleRg = async (rgid) => { pnCurrentList.value =[] diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/bomDetail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/bomDetail.vue index 62854c5..1eb8bfd 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/bomDetail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/processdesign/bomDetail.vue @@ -167,7 +167,7 @@ From ee8e60d024c138be8c4a13d4961e4e990803243e Mon Sep 17 00:00:00 2001 From: zhy <1969009954@qq.com> Date: Thu, 26 Jun 2025 09:20:09 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderMakeMapper.java | 50 ++++++ .../PartPurchaseOrderServiceImpl.java | 2 +- .../PurchaseOrderMakeServiceImpl.java | 148 +++++++++--------- .../views/heli/partpurchasecheck/detail.vue | 15 +- .../views/heli/partpurchasecheck/index.vue | 2 +- 5 files changed, 136 insertions(+), 81 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java index 730d424..c51fc36 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/purchaseordermake/PurchaseOrderMakeMapper.java @@ -2,10 +2,14 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermake; import java.util.*; +import cn.smallbun.screw.core.util.ArrayUtils; 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.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.supplier.SupplierDO; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.*; @@ -43,4 +47,50 @@ public interface PurchaseOrderMakeMapper extends BaseMapperX selectJoinPage(PurchaseOrderMakePageReqVO reqVO) { + // 引入 MPJLambdaWrapper(MyBatis-Plus-Join 提供) + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + +// 构建查询条件 + wrapper + .selectAll(PurchaseOrderMakeDO.class) // 查询主表所有字段 + + .leftJoin(PurchaseOrderMakeDetailDO.class, "a", PurchaseOrderMakeDetailDO::getPurchaseOrderId, PurchaseOrderMakeDO::getId) + .like(Objects.nonNull(reqVO.getProjectSubName()), PurchaseOrderMakeDetailDO::getName, reqVO.getProjectSubName()) + + .leftJoin(SupplierDO.class, "b", SupplierDO::getId, PurchaseOrderMakeDetailDO::getSupplierId) + .like(Objects.nonNull(reqVO.getSupplierName()), SupplierDO::getName, reqVO.getSupplierName()) + + // eqIfPresent 替换为 eq 方法,并结合 Objects.nonNull 判断 + .eq(Objects.nonNull(reqVO.getPurchaseNo()), PurchaseOrderMakeDO::getPurchaseNo, reqVO.getPurchaseNo()) + .eq(Objects.nonNull(reqVO.getContractNo()), PurchaseOrderMakeDO::getContractNo, reqVO.getContractNo()) + .eq(Objects.nonNull(reqVO.getPurchaseType()), PurchaseOrderMakeDO::getPurchaseType, reqVO.getPurchaseType()) + .eq(Objects.nonNull(reqVO.getGoodsType()), PurchaseOrderMakeDO::getGoodsType, reqVO.getGoodsType()) + .eq(Objects.nonNull(reqVO.getCurrencyType()), PurchaseOrderMakeDO::getCurrencyType, reqVO.getCurrencyType()) + .eq(Objects.nonNull(reqVO.getTaxRatio()), PurchaseOrderMakeDO::getTaxRatio, reqVO.getTaxRatio()) + .eq(Objects.nonNull(reqVO.getEstimatedPrice()), PurchaseOrderMakeDO::getEstimatedPrice, reqVO.getEstimatedPrice()) + .eq(Objects.nonNull(reqVO.getActualPrice()), PurchaseOrderMakeDO::getActualPrice, reqVO.getActualPrice()) + .eq(Objects.nonNull(reqVO.getStatus()), PurchaseOrderMakeDO::getStatus, reqVO.getStatus()) + .eq(Objects.nonNull(reqVO.getSubmitUserId()), PurchaseOrderMakeDO::getSubmitUserId, reqVO.getSubmitUserId()) + + .eq(Objects.nonNull(reqVO.getAuditor()), PurchaseOrderMakeDO::getAuditor, reqVO.getAuditor()) + + .eq(Objects.nonNull(reqVO.getDescription()), PurchaseOrderMakeDO::getDescription, reqVO.getDescription()) + + .eq(Objects.nonNull(reqVO.getProjectId()), PurchaseOrderMakeDO::getProjectId, reqVO.getProjectId()) + .eq(Objects.nonNull(reqVO.getProjectPlanId()), PurchaseOrderMakeDO::getProjectPlanId, reqVO.getProjectPlanId()) + .eq(Objects.nonNull(reqVO.getCustomerId()), PurchaseOrderMakeDO::getCustomerId, reqVO.getCustomerId()) + .eq(Objects.nonNull(reqVO.getBrief()), PurchaseOrderMakeDO::getBrief, reqVO.getBrief()) + + // likeIfPresent 替换为 like + .like(Objects.nonNull(reqVO.getProjectName()), PurchaseOrderMakeDO::getProjectName, reqVO.getProjectName()) + + .eq(Objects.nonNull(reqVO.getProjectNameSim()), PurchaseOrderMakeDO::getProjectNameSim, reqVO.getProjectNameSim()) + .orderByDesc(PurchaseOrderMakeDO::getId); + +// 使用 selectJoinPage 进行分页查询 + return selectJoinPage(reqVO, PurchaseOrderMakeDO.class, wrapper); + + } + } \ No newline at end of file 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 a4e1998..5251bdf 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 @@ -133,7 +133,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ List list= purchaseOrderMakeDetailMapper.selectList("purchase_order_id", updateReqVO.getId()); list.forEach(detailDO -> { - purchaseOrderNoDetailMapper.deleteById(detailDO.getId()); + purchaseOrderNoDetailMapper.deleteById(detailDO); }); List materialPlanBoomDOs= materialPlanBoomMapper.selectList("project_purchase_order_make_id", updateReqVO.getId()); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java index e89822d..2cfe569 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermake/PurchaseOrderMakeServiceImpl.java @@ -1,74 +1,74 @@ -package com.chanko.yunxi.mes.module.heli.service.purchaseordermake; - -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.heli.controller.admin.purchaseordermake.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; -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.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; - -import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; - -/** - * 采购单主 Service 实现类 - * - * @author 管理员 - */ -@Service -@Validated -public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService { - - @Resource - private PurchaseOrderMakeMapper purchaseOrderMakeMapper; - - @Override - public Long createPurchaseOrderMake(PurchaseOrderMakeSaveReqVO createReqVO) { - // 插入 - PurchaseOrderMakeDO purchaseOrderMake = BeanUtils.toBean(createReqVO, PurchaseOrderMakeDO.class); - purchaseOrderMakeMapper.insert(purchaseOrderMake); - // 返回 - return purchaseOrderMake.getId(); - } - - @Override - public void updatePurchaseOrderMake(PurchaseOrderMakeSaveReqVO updateReqVO) { - // 校验存在 - validatePurchaseOrderMakeExists(updateReqVO.getId()); - // 更新 - PurchaseOrderMakeDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDO.class); - purchaseOrderMakeMapper.updateById(updateObj); - } - - @Override - public void deletePurchaseOrderMake(Long id) { - // 校验存在 - validatePurchaseOrderMakeExists(id); - // 删除 - purchaseOrderMakeMapper.deleteById(id); - } - - private void validatePurchaseOrderMakeExists(Long id) { - if (purchaseOrderMakeMapper.selectById(id) == null) { - throw exception(PURCHASE_ORDER_MAKE_NOT_EXISTS); - } - } - - @Override - public PurchaseOrderMakeDO getPurchaseOrderMake(Long id) { - return purchaseOrderMakeMapper.selectById(id); - } - - @Override - public PageResult getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO) { - return purchaseOrderMakeMapper.selectPage(pageReqVO); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.service.purchaseordermake; + +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.heli.controller.admin.purchaseordermake.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO; +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.heli.dal.mysql.purchaseordermake.PurchaseOrderMakeMapper; + +import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*; + +/** + * 采购单主 Service 实现类 + * + * @author 管理员 + */ +@Service +@Validated +public class PurchaseOrderMakeServiceImpl implements PurchaseOrderMakeService { + + @Resource + private PurchaseOrderMakeMapper purchaseOrderMakeMapper; + + @Override + public Long createPurchaseOrderMake(PurchaseOrderMakeSaveReqVO createReqVO) { + // 插入 + PurchaseOrderMakeDO purchaseOrderMake = BeanUtils.toBean(createReqVO, PurchaseOrderMakeDO.class); + purchaseOrderMakeMapper.insert(purchaseOrderMake); + // 返回 + return purchaseOrderMake.getId(); + } + + @Override + public void updatePurchaseOrderMake(PurchaseOrderMakeSaveReqVO updateReqVO) { + // 校验存在 + validatePurchaseOrderMakeExists(updateReqVO.getId()); + // 更新 + PurchaseOrderMakeDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDO.class); + purchaseOrderMakeMapper.updateById(updateObj); + } + + @Override + public void deletePurchaseOrderMake(Long id) { + // 校验存在 + validatePurchaseOrderMakeExists(id); + // 删除 + purchaseOrderMakeMapper.deleteById(id); + } + + private void validatePurchaseOrderMakeExists(Long id) { + if (purchaseOrderMakeMapper.selectById(id) == null) { + throw exception(PURCHASE_ORDER_MAKE_NOT_EXISTS); + } + } + + @Override + public PurchaseOrderMakeDO getPurchaseOrderMake(Long id) { + return purchaseOrderMakeMapper.selectById(id); + } + + @Override + public PageResult getPurchaseOrderMakePage(PurchaseOrderMakePageReqVO pageReqVO) { + return purchaseOrderMakeMapper.selectJoinPage(pageReqVO); + } + +} diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue index 0a47eff..f344a57 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue @@ -60,8 +60,10 @@ @@ -115,7 +117,7 @@ const formData = ref({ matBoomDOList: [], matItemRemoveList: [], attachments: [], - type: query.type + type: undefined, }) const formRef = ref() // 表单 Ref @@ -131,7 +133,8 @@ const updateParams = reactive({ const approve = async () => { await PartPurchaseOrderApi.updatePurchaseOrderMake(formData.value.id) - console.log("批准成功") + message.success("提交成功"); + getList(); } const handleReject = async () => { @@ -158,7 +161,8 @@ const reject = async(reason) => { updateParams.reason = reason // 这里可以执行提交驳回逻辑 await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams) - console.log("驳回成功") + message.success("已驳回"); + getList(); } @@ -177,6 +181,7 @@ const queryParams = reactive({ onMounted(async () => { // 获取物料需求计划信息 formData.value = await PartPurchaseOrderApi.getPurchaseOrderMake(query.id) + formData.value.type = query.type getList(); }) const getList = async () => { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue index 4332e49..7d198e1 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue @@ -80,7 +80,7 @@ v-if="scope.row.status === 1" link type="primary" - @click="openForm('detail', scope.row.id)" + @click="openForm('check', scope.row.id)" > 去审核 From af4352ae897e760447e7e82b8fbab3bf8f665a3b Mon Sep 17 00:00:00 2001 From: Ledo Date: Thu, 26 Jun 2025 14:37:58 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=A1=A5=E5=88=86?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=BF=85=E9=A1=BB=E5=BD=95=E5=85=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/module/heli/enums/ErrorCodeConstants.java | 4 +++- .../vo/MaterialPlanBoomSaveReqVO.java | 9 +++++---- .../materialplanboom/MaterialPlanBoomMapper.java | 6 ++++-- .../materialplanboom/MaterialPlanBoomServiceImpl.java | 11 +++++++++-- .../src/views/heli/materialplan/purchasemake.vue | 6 ++++-- .../src/views/heli/materialplan/standardbuy.vue | 2 +- 6 files changed, 26 insertions(+), 12 deletions(-) diff --git a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java index c823619..cd975d3 100644 --- a/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java +++ b/mes-module-heli/mes-module-heli-api/src/main/java/com/chanko/yunxi/mes/module/heli/enums/ErrorCodeConstants.java @@ -102,8 +102,10 @@ public interface ErrorCodeConstants { ErrorCode PURCHASE_ORDER_MAKE_NOT_EXISTS = new ErrorCode(1_008_007, "采购单主不存在"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_NOT_EXISTS = new ErrorCode(1_008_008, "采购单明细不存在"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_EXISTS = new ErrorCode(1_008_009, "存在物料清单已生成采购订单,请刷新界面!"); - ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!"); + ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_011, "物料数据不能为空,请选择物料后重试!"); + ErrorCode PURCHASE_ORDER_MAKE_DETAIL_BOOM_DETAIL_IS_EXISTS = new ErrorCode(1_008_012, "BOM明细ID不能为空!"); + ErrorCode PURCHASE_ORDER_MAKE_DETAIL_PROJECTSUB_DETAIL_NOT_EXISTS = new ErrorCode(1_008_013, "子项目ID不能为空!"); /************生产管理***********/ ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在"); ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在"); diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomSaveReqVO.java index 7a2ff1a..920885a 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomSaveReqVO.java @@ -21,12 +21,13 @@ public class MaterialPlanBoomSaveReqVO { @NotNull(message = "物料需求计划id不能为空") private Long projectMaterialPlanId; - @Schema(description = "工艺boom明细id,零件类型:加工件", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "工艺boom明细id,零件类型:加工件不能为空") + @Schema(description = "工艺boom明细id,零件类型:加工件") +// @NotNull(message = "工艺boom明细id,零件类型:加工件不能为空") private Long boomDetailId; - @Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "订单子项目id不能为空") +// @Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "订单子项目id不能为空") + @Schema(description = "订单子项目id") private Long projectPlanSubId; @Schema(description = "需求数量") diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java index 6ef13c3..f7ba7ea 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/dal/mysql/materialplanboom/MaterialPlanBoomMapper.java @@ -64,7 +64,9 @@ public interface MaterialPlanBoomMapper extends BaseMapperX query.selectAll(MaterialPlanBoomDO.class) // .select("mat.id as matId","mat.name as matName","mat.code as matCode","mat.spec as matSpec","mat.unit as matUnit","mat.material_type as matType") - .select("b.material_name as matName","m.code as matCode","b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo") + // .select("b.material_name as matName","m.code as matCode","b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo") + .select("b.material_name as matName","b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo") + .select("bc.`name` as compositionName","b.`composition_id` as compositionId") .select("ma.brief as customerBriefName,ma.project_name as projectName,ma.name as projectSubName,ma.project_id as projectId") .leftJoin(MaterialPlanDO.class,"ma",MaterialPlanDO::getId, MaterialPlanBoomDO::getProjectMaterialPlanId) @@ -73,7 +75,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX .leftJoin(CompositionDO.class, "bc", CompositionDO::getId, ProcessBomDetailDO::getCompositionId) .leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId,MaterialPlanDO::getProjectId) .leftJoin(AdminUserDO.class,"u",AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId) - .leftJoin(MaterialDO.class,"m",MaterialDO::getId,MaterialPlanBoomDO::getMaterialId) +// .leftJoin(MaterialDO.class,"m",MaterialDO::getId,MaterialPlanBoomDO::getMaterialId) .eq(MaterialPlanDO::getMatType,0) .in(MaterialPlanBoomDO::getIsPurYard,Arrays.asList(0,5)) .disableSubLogicDel() diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplanboom/MaterialPlanBoomServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplanboom/MaterialPlanBoomServiceImpl.java index 7242542..76165d3 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplanboom/MaterialPlanBoomServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/materialplanboom/MaterialPlanBoomServiceImpl.java @@ -114,6 +114,12 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService { HashMap planSubMap = new HashMap<>(); for (MaterialPlanBoomDO dp : materialPlanBoomDOList) { PurchaseOrderMakeDetailDO makeDetailDO = new PurchaseOrderMakeDetailDO(); + if (dp.getBoomDetailId() == null){ + throw exception(PURCHASE_ORDER_MAKE_DETAIL_BOOM_DETAIL_IS_EXISTS); + } + if(dp.getProjectPlanSubId() == null){ + throw exception(PURCHASE_ORDER_MAKE_DETAIL_PROJECTSUB_DETAIL_NOT_EXISTS); + } makeDetailDO.setBoomDetailId(dp.getBoomDetailId()); makeDetailDO.setBoomName(dp.getMatName()); makeDetailDO.setBoomSpec(dp.getMatSpec()); @@ -178,7 +184,8 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService { serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); // 入库前缀 - purchaseOrderMakeDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); + String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()); + purchaseOrderMakeDO.setPurchaseNo(code); purchaseOrderMakeDO.setGoodsType(1); purchaseOrderMakeDO.setStatus(1); purchaseOrderMakeDO.setSubmitUserId(loginUserId); @@ -206,7 +213,7 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService { dp.setMplanStatus(1); dp.setProjectPurchaseOrderMakeId(purchaseOrderMakeDO.getId()); dp.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailDO.getId()); - dp.setPurchaseNo(purchaseOrderMakeDO.getPurchaseNo()); + dp.setPurchaseNo(code); } } } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue index 4007c11..18edc0c 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue @@ -19,7 +19,7 @@ - + @@ -264,7 +264,9 @@ const getMateriallist = async(row) =>{ const handleSelectionChange = (selection) => { ids.value = selection; } - +const clearItem = (e) =>{ + multipleTable.value.clearSelection(); +} /** 导出按钮操作 */ const handleExportDetail = async () => { try { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue index ca9200d..6d88fb7 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/standardbuy.vue @@ -237,7 +237,7 @@ const getRowKeys=(row)=>{ const handleSelectionChange = (selection) => { ids.value = selection; } -const clearItem = () =>{ +const clearItem = (e) =>{ multipleTable.value.clearSelection(); } /** 导出按钮操作 */ From ae449377a3434caaf672da5157a172ab8cc39ac3 Mon Sep 17 00:00:00 2001 From: Ledo Date: Thu, 26 Jun 2025 15:10:49 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E7=A1=AE=E5=AE=9E=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderMakeDetailServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java index 3a9bb8e..516de5c 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/service/purchaseordermakedetail/PurchaseOrderMakeDetailServiceImpl.java @@ -82,7 +82,8 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); // 入库前缀 - purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); + String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString()); + purchaseOrderNoDO.setPurchaseNo(code); serialNumberService.updateSerialNumber(serialNumberDO); purchaseOrderNoDO.setGoodsType(1); purchaseOrderNoDO.setPurchaseType(1); @@ -161,6 +162,7 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId()); pmd.setPurchaseOrderNoDetailId(pd.getId()); pmd.setOrderStatus(2); + pmd.setPurchaseNo(code); break; } } From 979bd2c4a2e1a0b001c1cf8ea619dc9bbf48bfd7 Mon Sep 17 00:00:00 2001 From: Ledo Date: Thu, 26 Jun 2025 15:45:26 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E5=BC=B9=E6=A1=86=E5=8D=95=E9=80=89?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/heli/materialplan/storageLog.vue | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue index 51c8f3e..9cf4a1e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/storageLog.vue @@ -22,7 +22,9 @@ - + @@ -114,12 +116,28 @@ const getList = async () => { } const clickItem = ref([]) const handleCurrentChange = (val) => { - multipleTableRef.value!.clearSelection() clickItem.value = val; + if(val.length > 1){ + multipleTableRef.value!.clearSelection() + multipleTableRef.value!.toggleRowSelection(val.pop()) + } + +} +const clickRow = (row) => { + // 单选选中行 + if ( clickItem.value[0] == row) { + // 取消 + clickItem.value = []; + multipleTableRef.value!.clearSelection() + } else { + // 选择 + clickItem.value.push(row); + multipleTableRef.value!.clearSelection() + multipleTableRef.value!.toggleRowSelection(row, true); + } + } - multipleTableRef.value!.toggleRowSelection(val, undefined) -}; /** 搜索按钮操作 */ const handleQuery = () => { queryParams.pageNo = 1 @@ -162,7 +180,8 @@ const emit = defineEmits(['success']) // emit('success', multipleSelection.value) const success = () =>{ dialogVisible.value = false; - emit('success',rowid.value,clickItem.value.storageOkQty,clickItem.value.id,clickItem.value.matCode) + console.log(clickItem.value) + emit('success',rowid.value,clickItem.value[0].storageOkQty,clickItem.value[0].id,clickItem.value[0].matCode) } const handleRg = async (rgid) => { pnCurrentList.value =[] From 4a4b649a85db95d1ee8d8c027147c9cd40a7be87 Mon Sep 17 00:00:00 2001 From: wb_zhanghaoyuan Date: Thu, 26 Jun 2025 15:49:37 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E9=87=87=E8=B4=AD?= =?UTF-8?q?=E5=8D=95=E5=AE=A1=E6=89=B9fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mes-ui/mes-ui-admin-vue3/src/utils/dict.ts | 3 +- .../src/views/heli/partpurchase/index.vue | 287 ++++++++++++++++++ .../views/heli/partpurchasecheck/detail.vue | 13 +- .../views/heli/partpurchasecheck/index.vue | 10 +- 4 files changed, 304 insertions(+), 9 deletions(-) create mode 100644 mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue diff --git a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts index b9407cb..42cb07a 100644 --- a/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts +++ b/mes-ui/mes-ui-admin-vue3/src/utils/dict.ts @@ -292,5 +292,6 @@ export enum DICT_TYPE { HELI_MAT_REQ_STATUS='heli_mat_req_status', HELI_MATERIAL_STATUS='heli_material_status', HELI_DOCUMENT_STATUS='heli_document_status', - HELI_STORAGEIN_STATUS='heli_storagein_status' + HELI_STORAGEIN_STATUS='heli_storagein_status', + MATERIAL_PLAN_BOOM_MPLAN_STATUS='material_plan_boom_mplan_status' } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue new file mode 100644 index 0000000..6bf5c87 --- /dev/null +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchase/index.vue @@ -0,0 +1,287 @@ + + + + diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue index f344a57..5cc8d65 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/detail.vue @@ -17,8 +17,8 @@ - - + + @@ -63,6 +63,10 @@ + @@ -103,7 +107,7 @@ const dialogVisible = ref(false) // 弹窗的是否展示 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const formData = ref({ id: undefined, - contractNo: undefined, + purchaseNo: undefined, projectId: undefined, projectPlanId: undefined, projectPlanNo: undefined, @@ -165,6 +169,9 @@ const reject = async(reason) => { getList(); } +const cancel = async () => { + router.push({ path: '/purchase/PartPurchaseCheck'}); +} const closeForm = async () => { router.push({ path: '/purchase/management' }) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue index 7d198e1..389b2cc 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/partpurchasecheck/index.vue @@ -6,8 +6,8 @@ - - + @@ -46,10 +46,10 @@ - + @@ -119,7 +119,7 @@ const queryParams = reactive({ pageNo: 1, pageSize: 10, id: undefined, - contractNo: undefined, + purchaseNo: undefined, projectId: undefined, projectPlanId: undefined, submitUserId: undefined, From 4871fe23a8533e892cb5e16a4130938ed4b3f8be Mon Sep 17 00:00:00 2001 From: Ledo Date: Thu, 26 Jun 2025 16:25:30 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=97=B6=E4=B8=8D=E5=86=8D=E8=AE=B0=E5=BF=86=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/heli/materialplan/purchasemake.vue | 5 ++++- .../src/views/heli/materialplan/standardbuy.vue | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue index 18edc0c..25af90e 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/materialplan/purchasemake.vue @@ -1,7 +1,7 @@