From 14350a1465aaf389fcf92ddcedf1a64865e61403 Mon Sep 17 00:00:00 2001 From: zhy <1969009954@qq.com> Date: Sat, 28 Jun 2025 02:39:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=B6=E4=BB=B6=E9=87=87=E8=B4=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vo/MaterialPlanBoomRespVO.java | 3 + .../PurchaseOrderMakeController.java | 10 ++- .../vo/PurchaseOrderMakeSaveReqVO.java | 51 +++++++++++ .../materialplanboom/MaterialPlanBoomDO.java | 19 +++++ .../MaterialPlanBoomMapper.java | 8 +- .../PartPurchaseOrderService.java | 6 +- .../PartPurchaseOrderServiceImpl.java | 85 +++++++++++++++++++ .../src/api/heli/partpurchaseorder/index.ts | 5 ++ .../src/views/heli/partpurchase/index.vue | 40 +++++++-- 9 files changed, 209 insertions(+), 18 deletions(-) diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java index e2101b7..7f7e0f5 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/materialplanboom/vo/MaterialPlanBoomRespVO.java @@ -94,5 +94,8 @@ public class MaterialPlanBoomRespVO extends PageParam { @Schema(description = "物料id") @ExcelProperty("物料id") private Long matId; + @Schema(description = "采购单id") + @ExcelProperty("采购单id") + private Long projectPurchaseOrderMakeId; } \ 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/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 c69155b..d50e102 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 @@ -1,9 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -135,4 +132,11 @@ public class PurchaseOrderMakeController { PageResult pageResult = partPurchaseOrderService.getDetail(partPurchaseOrderPageReqVO); return success(pageResult); } + + @PostMapping("/createPurchaseOrderMakeAndDetail") + @Operation(summary = "零件采购单送审生成") + // @PreAuthorize("@ss.hasPermission('heli:material-plan:query')") + public CommonResult createPurchaseOrderMakeAndDetail(@Valid @RequestBody List saveReqVOs) { + return success(partPurchaseOrderService.createPurchaseOrderMakeAndDetailBatch(saveReqVOs)); + } } diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java index 8737291..9caf239 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/purchaseordermake/vo/PurchaseOrderMakeSaveReqVO.java @@ -1,5 +1,6 @@ package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -79,4 +80,54 @@ public class PurchaseOrderMakeSaveReqVO { @Schema(description = "驳回原因") private String reason; + @Schema(description = "工艺boom明细id,零件类型:加工件") + private Long boomDetailId; + + @Schema(description = "零件名称") + private String matName; + + @Schema(description = "规格型号") + private String boomSpec; + + @Schema(description = "系统单位") + private String unit; + + @Schema(description = "材质") + private String compositionName; + + @Schema(description = "采购数量") + private BigDecimal purchaseAmount; + + @Schema(description = "预计到货日期") + private LocalDateTime arriveTime; + + @Schema(description = "需求数量") + private BigDecimal boomAmount; + + @Schema(description = "需求到货日期") + private LocalDateTime boomArriveDate; + + @Schema(description = "供应商id") + private Long supplierId; + + @Schema(description = "物料需求计划id") + private Long projectMaterialPlanId; + + @Schema(description = "订单子项目id") + private Long projectPlanSubId; + + @Schema(description = "子项目名称") + private String projectSubName; + + @Schema(description = "子项目简码") + private String projectSubNameSim; + @Schema(description = "工序id") + private Long procedureId; + @Schema(description = "理论重量") + private BigDecimal theWeight; + /** + * 责任人id + */ + private Long duEmpId; + } 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 2d25961..fd8792a 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 @@ -177,4 +177,23 @@ public class MaterialPlanBoomDO extends BaseDO { */ @TableField(exist = false) private String brief; + + /** + * 客户id + */ + @TableField(exist = false) + private Long customerId; + + /** + * 项目简码 + */ + @TableField(exist = false) + private String projectNameSim; + + /** + * 子项目简码 + */ + @TableField(exist = false) + private String projectSubNameSim; + } 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 cb73879..2c90d9f 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 @@ -206,10 +206,10 @@ public interface MaterialPlanBoomMapper extends BaseMapperX default PageResult getPartsPages(MaterialPlanPageReqVO pageReqVO){ MPJLambdaWrapper query = new MPJLambdaWrapper<>(); query.selectAll(MaterialPlanBoomDO.class) - .select("p.project_name as projectName","p.name as projectSubName") - .select("d.blueprint_no as blueprintNo","d.unit as unit","f.name as supplierName") + .select("p.project_name as projectName","p.name as projectSubName","p.name_sim as projectSubNameSim") + .select("d.spec as boomSpec","d.blueprint_no as blueprintNo","d.unit as unit","f.name as supplierName") .select("a.nickname as duEmpName","c.name as procedureName","e.name as compositionName") - .select(MaterialPlanDO::getBrief) + .select(MaterialPlanDO::getBrief, MaterialPlanDO::getCustomerId, MaterialPlanDO::getProjectId, MaterialPlanDO::getProjectNameSim) .leftJoin(MaterialPlanDO.class, "p", MaterialPlanDO::getId,MaterialPlanBoomDO::getProjectMaterialPlanId) .leftJoin(ProcessBomDetailDO.class,"d",ProcessBomDetailDO::getId,MaterialPlanBoomDO::getBoomDetailId) .leftJoin(AdminUserDO.class, "a", AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId) @@ -226,7 +226,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX .like(!StringUtils.isEmpty(pageReqVO.getDuEmpName()), AdminUserDO::getNickname, pageReqVO.getDuEmpName()) .eq(!StringUtils.isEmpty(pageReqVO.getMatType()), MaterialPlanDO::getMatType, pageReqVO.getMatType()) .eq(!StringUtils.isEmpty(pageReqVO.getStatus()), MaterialPlanBoomDO::getIsPurYard, pageReqVO.getStatus()) - .in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3)) + .in(Objects.nonNull(pageReqVO.getMplanStatus()), MaterialPlanBoomDO::getMplanStatus, pageReqVO.getMplanStatus() != null && pageReqVO.getMplanStatus() != 0 ? Arrays.asList(pageReqVO.getMplanStatus()) : Arrays.asList(0, 3)) .eq(Objects.nonNull(pageReqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, pageReqVO.getProjectMaterialPlanNo()); PageResult pageResult = selectPage(pageReqVO, query); 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 eab5530..a48dc7b 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 @@ -3,11 +3,7 @@ package com.chanko.yunxi.mes.module.heli.service.partpurchaseorder; import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PartPurchaseOrderPageRespVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakePageReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermake.vo.PurchaseOrderMakeSaveReqVO; -import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO; -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; @@ -62,4 +58,6 @@ public interface PartPurchaseOrderService { Boolean approval(Long id); PageResult getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO); + + Boolean createPurchaseOrderMakeAndDetailBatch(List updateReqVOs); } 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 1c45a4b..9522d1d 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 @@ -12,17 +12,22 @@ 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.controller.admin.purchaseordermakedetail.vo.PurchaseOrderMakeDetailRespVO; 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.purchaseordermake.PurchaseOrderMakeDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO; 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.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.purchaseordermake.PurchaseOrderMakeMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermakedetail.PurchaseOrderMakeDetailMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorderno.PurchaseOrderNoMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordernodetail.PurchaseOrderNoDetailMapper; import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -54,6 +59,10 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ private SerialNumberService serialNumberService; @Resource private MaterialPlanBoomMapper materialPlanBoomMapper; + @Resource + private PlanMapper planMapper; + @Autowired + private PlanSubMapper planSubMapper; @Override public PageResult getPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) { @@ -216,4 +225,80 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{ return purchaseOrderMakeDetailMapper.getDetail(partPurchaseOrderPageReqVO); } + + @Override + public Boolean createPurchaseOrderMakeAndDetailBatch(List updateReqVOs) { + updateReqVOs.forEach(updateReqVO -> { + createPurchaseOrderMakeAndDetail(updateReqVO); + }); + + return true; + } + + public Boolean createPurchaseOrderMakeAndDetail(PurchaseOrderMakeSaveReqVO updateReqVO) { + PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO(); + // 返回 + // 月度流水号 + SerialNumberDO serialNumberDO = new SerialNumberDO(); + serialNumberDO = serialNumberService.getSerialNumber(PURCHASE_ORDER.name(), new SimpleDateFormat("yyyyMMdd").format(new Date())); + serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); + // 回写序列记录 + serialNumberService.updateSerialNumber(serialNumberDO); + + purchaseOrderMakeDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); + purchaseOrderMakeDO.setGoodsType(2); + purchaseOrderMakeDO.setStatus(1); + purchaseOrderMakeDO.setSubmitUserId(getLoginUser().getId()); + purchaseOrderMakeDO.setSubmitTime(LocalDateTime.now()); + purchaseOrderMakeDO.setProjectId(updateReqVO.getProjectId()); + PlanDO planDO = planMapper.selectOne("plan_no", updateReqVO.getProjectId()); + purchaseOrderMakeDO.setProjectPlanId(planDO.getId()); + purchaseOrderMakeDO.setCustomerId(updateReqVO.getCustomerId()); + purchaseOrderMakeDO.setBrief(updateReqVO.getBrief()); + purchaseOrderMakeDO.setProjectName(updateReqVO.getProjectName()); + purchaseOrderMakeDO.setProjectNameSim(updateReqVO.getProjectNameSim()); + + purchaseOrderMakeMapper.insert(purchaseOrderMakeDO); + long purchaseOrderMakeId = purchaseOrderMakeDO.getId(); + + PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO(); + purchaseOrderMakeDetailDO.setPurchaseOrderId(purchaseOrderMakeId); + purchaseOrderMakeDetailDO.setBoomDetailId(updateReqVO.getBoomDetailId()); + purchaseOrderMakeDetailDO.setBoomName(updateReqVO.getMatName()); + purchaseOrderMakeDetailDO.setBoomSpec(updateReqVO.getBoomSpec()); + purchaseOrderMakeDetailDO.setBoomUnit(updateReqVO.getUnit()); + purchaseOrderMakeDetailDO.setComposition(updateReqVO.getCompositionName()); + purchaseOrderMakeDetailDO.setPurchaseAmount(updateReqVO.getPurchaseAmount()); + purchaseOrderMakeDetailDO.setEstimatedPrice(updateReqVO.getEstimatedPrice()); + purchaseOrderMakeDetailDO.setArriveTime(updateReqVO.getArriveTime()); + purchaseOrderMakeDetailDO.setBoomAmount(updateReqVO.getBoomAmount()); + purchaseOrderMakeDetailDO.setRequireTime(updateReqVO.getBoomArriveDate()); + purchaseOrderMakeDetailDO.setSupplierId(updateReqVO.getSupplierId()); + purchaseOrderMakeDetailDO.setProjectMaterialPlanId(updateReqVO.getProjectMaterialPlanId()); + purchaseOrderMakeDetailDO.setProjectMaterialPlanBoomId(updateReqVO.getId()); + purchaseOrderMakeDetailDO.setProjectPlanSubId(updateReqVO.getProjectPlanSubId()); + purchaseOrderMakeDetailDO.setName(updateReqVO.getProjectSubName()); + purchaseOrderMakeDetailDO.setNameSim(updateReqVO.getProjectSubNameSim()); + purchaseOrderMakeDetailDO.setOrderStatus(1); + PlanSubDO planSubDO1= planSubMapper.selectById(updateReqVO.getProjectPlanSubId()); + purchaseOrderMakeDetailDO.setProjectSubCode(planSubDO1.getProjectSubCode()); + purchaseOrderMakeDetailDO.setProcedureId(updateReqVO.getProcedureId()); + purchaseOrderMakeDetailDO.setDescription(updateReqVO.getDescription()); + purchaseOrderMakeDetailDO.setTheWeight(updateReqVO.getTheWeight()); + purchaseOrderMakeDetailDO.setDuEmpId(updateReqVO.getDuEmpId()); + + purchaseOrderMakeDetailMapper.insert(purchaseOrderMakeDetailDO); + long purchaseOrderMakeDetailId = purchaseOrderMakeDetailDO.getId(); + + MaterialPlanBoomDO materialPlanBoomDO = new MaterialPlanBoomDO(); + materialPlanBoomDO.setId(updateReqVO.getId()); + materialPlanBoomDO.setMplanStatus(1); + materialPlanBoomDO.setProjectPurchaseOrderMakeId(purchaseOrderMakeId); + materialPlanBoomDO.setPurchaseNo(purchaseOrderMakeDO.getPurchaseNo()); + materialPlanBoomDO.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailId); + + materialPlanBoomMapper.updateById(materialPlanBoomDO); + return true; + } + } 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 74c8023..5be9a9d 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 @@ -55,3 +55,8 @@ export const approval = async (id: number) => { export const getDetail = async (params) => { return await request.get({ url: `/heli/purchase-order-make/getDetail`, params }) } + +// 零件采购单送审生成 +export const createPurchaseOrderMakeAndDetail = async (params) => { + return await request.post({ url: `/heli/purchase-order-make/createPurchaseOrderMakeAndDetail`, params }) +} 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 index 59cc324..d3e34a0 100644 --- 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 @@ -69,7 +69,7 @@ - + @@ -159,12 +159,15 @@ import { useCommonStateWithOut } from '@/store/modules/common' import UserSelect from "@/views/heli/materialplan/userSelectNew.vue"; import {inject, ref} from "vue"; import * as MaterialPlanApi from "@/api/heli/materialplan"; +import * as MaterialPlanBoomApi from "@/api/heli/materialplanboom"; import * as PartPurchaseOrderApi from "@/api/heli/partpurchaseorder"; import {ElTable} from "element-plus"; import {useUserStore} from "@/store/modules/user"; import {dateFormatter1} from "@/utils/formatTime"; import {getPartPurchasePages} from "@/api/heli/materialplan"; import SupplierSelect from "@/views/heli/hlvuestyle/supplierSelect.vue"; +import {getMaterialPlanBoom} from "@/api/heli/materialplanboom"; +import {createPurchaseOrderMake} from "@/api/heli/partpurchaseorder"; const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 defineOptions({ name: 'standard' }) @@ -271,7 +274,8 @@ const submitForm = async () => { return; } - for (let i = 0; i < list.length; i++) { + let i; + for (i = 0; i < list.length; i++) { if (list[i].purchaseAmount === null || list[i].purchaseAmount === 0) { message.error("采购数量为0或空"); break; @@ -290,11 +294,33 @@ const submitForm = async () => { } } + if (i < list.length){ + return; + } - // 2. 检查供应商一致性 - const firstSupplierId = list[0].supplierId; - if (list.some(item => item.supplierId !== firstSupplierId)) { - message.error("零件采购订单不属于同一个供应商,请确认"); + // 2. 检查项目一致性 + const firstProjectName = list[0].projectName; + if (list.some(item => item.projectName !== firstProjectName)) { + message.error("不同项目不能同时生成采购单"); + return; + } + + //3. 检查生成采购订单状态 + const checkMaterialPlans = async () => { + for (const item of list) { + const checkParams = await MaterialPlanBoomApi.getMaterialPlanBoom(item.id); + if (checkParams.projectPurchaseOrderMakeId !== null) { + message.warning("存在零件清单已生成采购订单,请刷新界面!"); + return false; // 提前终止检查 + } + } + return true; // 所有检查通过 + }; + +// 调用方法 + const allValid = await checkMaterialPlans(); + if (!allValid) { + // 继续后续操作 return; } @@ -303,7 +329,7 @@ const submitForm = async () => { // 5. 提交数据(添加超时处理) const res = await Promise.race([ - PartPurchaseOrderApi.submitForm(list), + PartPurchaseOrderApi.createPurchaseOrderMakeAndDetail(list), new Promise((_, reject) => setTimeout(() => reject(new Error("请求超时")), 30000) )