零件采购问题修改

This commit is contained in:
z 2025-07-01 08:31:18 +08:00
parent 8ecf0e1cfe
commit 8c5d56854f
9 changed files with 95 additions and 68 deletions

View File

@ -1,6 +1,7 @@
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.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
import com.chanko.yunxi.mes.module.heli.service.partpurchaseorder.PartPurchaseOrderService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -136,7 +137,7 @@ public class PurchaseOrderMakeController {
@PostMapping("/createPurchaseOrderMakeAndDetail")
@Operation(summary = "零件采购单送审生成")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<Boolean> createPurchaseOrderMakeAndDetail(@Valid @RequestBody List<PurchaseOrderMakeSaveReqVO> saveReqVOs) {
public CommonResult<Boolean> createPurchaseOrderMakeAndDetail(@Valid @RequestBody List<MaterialPlanBoomDO> saveReqVOs) {
return success(partPurchaseOrderService.createPurchaseOrderMakeAndDetailBatch(saveReqVOs));
}
@GetMapping("/review")

View File

@ -195,5 +195,22 @@ public class MaterialPlanBoomDO extends BaseDO {
*/
@TableField(exist = false)
private String projectSubNameSim;
@TableField(exist = false)
private BigDecimal purchaseAmounts;
@TableField(exist = false)
private Long supplierIds;
@TableField(exist = false)
private BigDecimal estimatedPrices;
@TableField(exist = false)
private LocalDateTime arriveTimes;
@TableField(exist = false)
private String descriptions;
@TableField(exist = false)
private BigDecimal theWeight;
/**
* 泡沫否 Y N
*/
@TableField(exist = false)
private String isFoams;
}

View File

@ -20,6 +20,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.procedure.ProcedureDO;
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.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermakedetail.PurchaseOrderMakeDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelogNow.StorageMaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDetailDO;
@ -209,8 +210,11 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
.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("t.mat_weight as theWeight")
.select(MaterialPlanDO::getProjectId)
.select("m.the_weight as theWeight")
.select("COALESCE(m.purchase_amount, t.boom_amount) AS purchaseAmounts,m.supplier_id as supplierIds,m.estimated_price as estimatedPrices")
.select("m.arrive_time as arriveTimes,m.description as descriptions")
.select("m.is_foam as isFoams")
.leftJoin(PurchaseOrderMakeDetailDO.class,"m",PurchaseOrderMakeDetailDO::getId,MaterialPlanBoomDO::getProjectPurchaseOrderMakeDetailId)
.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)
@ -233,10 +237,11 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
if (Objects.nonNull(pageReqVO.getMplanStatus())) {
// 根据 mplanStatus 的值动态设置排序字段
if (pageReqVO.getMplanStatus() == 0) {
query.orderByAsc(MaterialPlanBoomDO::getCreateTime);
} else {
if (pageReqVO.getMplanStatus() == 1) {
query.orderByDesc(MaterialPlanBoomDO::getPurchaseNo);
} else {
query.orderByAsc(MaterialPlanBoomDO::getCreateTime);
}
}

View File

@ -5,6 +5,7 @@ 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.PurchaseOrderMakeSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplanboom.MaterialPlanBoomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermake.PurchaseOrderMakeDO;
import java.util.List;
@ -61,7 +62,7 @@ public interface PartPurchaseOrderService {
PageResult<PartPurchaseOrderPageRespVO> getDetail(PartPurchaseOrderPageReqVO partPurchaseOrderPageReqVO);
Boolean createPurchaseOrderMakeAndDetailBatch(List<PurchaseOrderMakeSaveReqVO> updateReqVOs);
Boolean createPurchaseOrderMakeAndDetailBatch(List<MaterialPlanBoomDO> updateReqVOs);
CommonResult<PurchaseOrderMakeDO> obtainReviewDetails(Long id);
}

View File

@ -221,11 +221,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
.set("mplan_status", 3)
.set("project_purchase_order_make_id", null)
.set("purchase_no", null)
.set("project_purchase_order_make_detail_id", null)
.set("purchase_amount", BigDecimal.ZERO)
.set("estimated_price", BigDecimal.ZERO)
.set("arrive_time",null)
.set("supplier_id", null);
.set("project_purchase_order_make_detail_id", null);
materialPlanBoomMapper.update(updateWrapper);
});
return true;
@ -259,12 +255,12 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
}
@Override
public Boolean createPurchaseOrderMakeAndDetailBatch(List<PurchaseOrderMakeSaveReqVO> updateReqVOs) {
public Boolean createPurchaseOrderMakeAndDetailBatch(List<MaterialPlanBoomDO> updateReqVOs) {
if (CollectionUtils.isEmpty(updateReqVOs)) {
return false;
}
PurchaseOrderMakeSaveReqVO updateReqVO = updateReqVOs.get(0);
MaterialPlanBoomDO boomDO = updateReqVOs.get(0);
PurchaseOrderMakeDO purchaseOrderMakeDO = new PurchaseOrderMakeDO();
// 返回
@ -280,24 +276,22 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
purchaseOrderMakeDO.setStatus(1);
purchaseOrderMakeDO.setSubmitUserId(getLoginUser().getId());
purchaseOrderMakeDO.setSubmitTime(LocalDateTime.now());
purchaseOrderMakeDO.setProjectId(updateReqVO.getProjectId());
List<PlanDO> planDOs = planMapper.selectList("project_id", updateReqVO.getProjectId());
if (!CollectionUtils.isEmpty(planDOs) && planDOs.get(0) != null) {
purchaseOrderMakeDO.setProjectPlanId(planDOs.get(0).getId());
}
purchaseOrderMakeDO.setCustomerId(updateReqVO.getCustomerId());
purchaseOrderMakeDO.setBrief(updateReqVO.getBrief());
purchaseOrderMakeDO.setProjectName(updateReqVO.getProjectName());
purchaseOrderMakeDO.setProjectNameSim(updateReqVO.getProjectNameSim());
purchaseOrderMakeDO.setProjectId(boomDO.getProjectId());
PlanDO planDO = planMapper.selectOne("project_id", boomDO.getProjectId());
if (ObjectUtil.isNotEmpty(planDO)) {
purchaseOrderMakeDO.setProjectPlanId(planDO.getId());
}
purchaseOrderMakeDO.setCustomerId(boomDO.getCustomerId());
purchaseOrderMakeDO.setBrief(boomDO.getBrief());
purchaseOrderMakeDO.setProjectName(boomDO.getProjectName());
purchaseOrderMakeDO.setProjectNameSim(boomDO.getProjectNameSim());
purchaseOrderMakeMapper.insert(purchaseOrderMakeDO);
long purchaseOrderMakeId = purchaseOrderMakeDO.getId();
String purchaseOrderMakeDOPurchaseNo = purchaseOrderMakeDO.getPurchaseNo();
updateReqVOs.forEach(updateReq -> {
createPurchaseOrderMakeAndDetail(updateReq,purchaseOrderMakeId, purchaseOrderMakeDOPurchaseNo);
createPurchaseOrderMakeAndDetail(updateReq,purchaseOrderMakeId, purchaseOrderMakeDOPurchaseNo,planDO.getId());
});
return true;
@ -336,7 +330,7 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
return CommonResult.success(orderMakeDO);
}
public Boolean createPurchaseOrderMakeAndDetail(PurchaseOrderMakeSaveReqVO updateReqVO, long purchaseOrderMakeId, String purchaseOrderMakeDOPurchaseNo) {
public Boolean createPurchaseOrderMakeAndDetail(MaterialPlanBoomDO updateReqVO, long purchaseOrderMakeId, String purchaseOrderMakeDOPurchaseNo,Long planId) {
PurchaseOrderMakeDetailDO purchaseOrderMakeDetailDO = new PurchaseOrderMakeDetailDO();
purchaseOrderMakeDetailDO.setPurchaseOrderId(purchaseOrderMakeId);
purchaseOrderMakeDetailDO.setBoomDetailId(updateReqVO.getBoomDetailId());
@ -344,26 +338,26 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
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.setPurchaseAmount(updateReqVO.getPurchaseAmounts());
purchaseOrderMakeDetailDO.setEstimatedPrice(updateReqVO.getEstimatedPrices());
purchaseOrderMakeDetailDO.setArriveTime(updateReqVO.getArriveTimes());
purchaseOrderMakeDetailDO.setBoomAmount(updateReqVO.getBoomAmount());
purchaseOrderMakeDetailDO.setRequireTime(updateReqVO.getBoomArriveDate());
purchaseOrderMakeDetailDO.setSupplierId(updateReqVO.getSupplierId());
purchaseOrderMakeDetailDO.setSupplierId(updateReqVO.getSupplierIds());
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(Objects.nonNull(planSubDO1)?planSubDO1.getProjectSubCode(): null);
PlanSubDO planSubDO = planSubMapper.selectOne("project_sub_id", updateReqVO.getProjectPlanSubId());
purchaseOrderMakeDetailDO.setProjectSubCode(Objects.nonNull(planSubDO)?planSubDO.getProjectSubCode(): null);
purchaseOrderMakeDetailDO.setProcedureId(updateReqVO.getProcedureId());
purchaseOrderMakeDetailDO.setDescription(updateReqVO.getDescription());
purchaseOrderMakeDetailDO.setDescription(updateReqVO.getDescriptions());
purchaseOrderMakeDetailDO.setTheWeight(updateReqVO.getTheWeight());
purchaseOrderMakeDetailDO.setDuEmpId(updateReqVO.getDuEmpId());
purchaseOrderMakeDetailDO.setIsFoam(updateReqVO.getIsFoam());
purchaseOrderMakeDetailDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo);
purchaseOrderMakeDetailMapper.insert(purchaseOrderMakeDetailDO);
long purchaseOrderMakeDetailId = purchaseOrderMakeDetailDO.getId();
@ -373,14 +367,6 @@ public class PartPurchaseOrderServiceImpl implements PartPurchaseOrderService{
materialPlanBoomDO.setProjectPurchaseOrderMakeId(purchaseOrderMakeId);
materialPlanBoomDO.setPurchaseNo(purchaseOrderMakeDOPurchaseNo);
materialPlanBoomDO.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailId);
materialPlanBoomDO.setPurchaseAmount(updateReqVO.getPurchaseAmount());
materialPlanBoomDO.setSupplierId(updateReqVO.getSupplierId());
materialPlanBoomDO.setEstimatedPrice(updateReqVO.getEstimatedPrice());
materialPlanBoomDO.setArriveTime(updateReqVO.getArriveTime());
materialPlanBoomDO.setDescription(updateReqVO.getDescription());
materialPlanBoomDO.setMatWeight(updateReqVO.getTheWeight());
materialPlanBoomDO.setIsFoam(updateReqVO.getIsFoam());
materialPlanBoomMapper.updateById(materialPlanBoomDO);
return true;
}

View File

@ -280,7 +280,7 @@ import { pieOptions, barOptions } from './echarts-data'
import { useCommonStore } from '@/store/modules/common'
//all
import * as bdgzsomthingApi from '@/api/heli/bdgzsomthing'
//
//
import * as PurchaseOrderApi from '@/api/heli/purchaseorder'
//
import * as ProjectOrderApi from '@/api/heli/projectorder'

View File

@ -72,9 +72,9 @@
<el-table-column label="客户简称" align="center" prop="brief" min-width="180" fixed />
<el-table-column label="项目名称" align="center" prop="projectName" min-width="180" fixed />
<el-table-column label="子项目名称" align="center" prop="projectSubName" min-width="180" />
<el-table-column label="泡沫" align="center">
<template #default="row">
<el-checkbox v-model="row.isFoam" :true-label="'Y'" :false-label="'N'" />
<el-table-column label="泡沫" align="center" prop="isFoams">
<template #default="{ row }">
<el-checkbox v-model="row.isFoams" @change="handleOutsourcingChange(row)" :checked="row.isFoams == 'Y'"/>
</template>
</el-table-column>
@ -82,44 +82,48 @@
<el-table-column label="材质" align="center" prop="compositionName" min-width="120" />
<el-table-column label="图号" align="center" prop="blueprintNo" min-width="120" />
<el-table-column label="需求数量" align="center" prop="boomAmount" min-width="120" />
<el-table-column label="单位" align="center" prop="unit" min-width="120" />
<el-table-column label="单位" align="center" prop="unit" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.unit" />
</template>
</el-table-column>
<el-table-column min-width="200px" align="center">
<template #header><span class="hl-table_header">*</span>采购数量</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.purchaseAmount`" class="mb-0px!" >
<el-input-number v-model="row.purchaseAmount" type="number" :precision="0" />
<el-input-number v-model="row.purchaseAmounts" type="number" :precision="0" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="200px" align="center" >
<template #header><span class="hl-table_header">*</span>供应商</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.supplierId`" class="mb-0px!" >
<SupplierSelect v-model="row.supplierId" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
<el-form-item :prop="`${$index}.supplierIds`" class="mb-0px!" >
<SupplierSelect v-model="row.supplierIds" class="!w-265px" clearable @update:newValue="handleSelectedUser($index, $event)"/>
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="200px" align="center">
<template #header><span class="hl-table_header">*</span>预估总价</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.estimatedPrice`" class="mb-0px!" >
<el-input-number v-model="row.estimatedPrice" type="number" :precision="2" />
<el-form-item :prop="`${$index}.estimatedPrices`" class="mb-0px!" >
<el-input-number v-model="row.estimatedPrices" type="number" :precision="2" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="200px" align="center" >
<template #header><span class="hl-table_header">*</span>预计到货日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.arriveTime`" class="mb-0px!" >
<el-date-picker class="!w-265px" v-model="row.arriveTime" type="date" value-format="x" placeholder="预计到货日期" />
<el-form-item :prop="`${$index}.arriveTimes`" class="mb-0px!" >
<el-date-picker class="!w-265px" v-model="row.arriveTimes" type="date" value-format="x" placeholder="预计到货日期" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="200px" align="center" >
<template #header>技术要求</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.description`" class="mb-0px!" >
<el-input class="!w-265px" v-model="row.description" placeholder="技术要求" />
<el-form-item :prop="`${$index}.descriptions`" class="mb-0px!" >
<el-input class="!w-265px" v-model="row.descriptions" placeholder="技术要求" />
</el-form-item>
</template>
</el-table-column>
@ -232,11 +236,23 @@ const handleExportDetail = async () => {
exportLoading.value = false
}
}
const handleOutsourcingChange= async (row: any) => {
console.log(1)
if(row.isFoams == false){
row.isFoam = 'N'
console.log(2)
}else{
console.log(3)
row.isFoam = 'Y'
console.log(row.isFoam)
}
}
const handleSelectionChange = (val) => {
// multipleTable.value.clearSelection()
multipleTable.value=val
console.log( val)
console.log( multipleTable.value)
}
/** 搜索按钮操作 */
const handleQuery = () => {
@ -248,7 +264,7 @@ const handleQuery = () => {
// formData.value.supplierId = newValue?.id
// }
const handleSelectedUser = (currentIndex, newValue: any) => {
list.value[currentIndex].supplierId = newValue?.id
list.value[currentIndex].supplierIds = newValue?.id
}
const singleSubmission= (val) =>{
@ -267,8 +283,7 @@ const submitForm = async () => {
console.log("开始提交"); // 1
const list = multipleTable.value|| []; //
console.log("明细数据:", list);
console.log(list.length)
console.log(list);
// 1.
if (!list || list.length==null) {
message.error("提交明细不能为空,请确认");
@ -277,19 +292,19 @@ const submitForm = async () => {
let i;
for (i = 0; i < list.length; i++) {
if (list[i].purchaseAmount === null || list[i].purchaseAmount === 0) {
if (list[i].purchaseAmounts === null || list[i].purchaseAmounts === 0) {
message.error("采购数量为0或空");
break;
}
if (list[i].supplierId === null) {
if (list[i].supplierIds === null) {
message.error("供应商为空");
break;
}
if (list[i].arriveTime === null) {
if (list[i].arriveTimes === null) {
message.error("预计到货日期为空");
break;
}
if (list[i].estimatedPrice === null) {
if (list[i].estimatedPrices === null) {
message.error("预估总价为空");
break;
}

View File

@ -39,7 +39,7 @@
<el-table :data="formData.matBoomDOList" class="hl-table" v-loading="loading">
<el-table-column type="index" label="序号" fixed align="center" min-width="60" />
<el-table-column prop="projectName" min-width="200" label="项目名称" align="center"/>
<el-table-column prop="projectName" min-width="200" label="子项目编码" align="center"/>
<el-table-column prop="projectSubCode" min-width="200" label="子项目编码" align="center"/>
<el-table-column prop="boomName" min-width="200" label="物料名称" align="center"/>
<el-table-column prop="procedureName" min-width="120" label="工序" align="center"/>
<el-table-column prop="composition" min-width="120" label="材质" align="center"/>
@ -186,7 +186,9 @@ const reject = async(reason) => {
//
await PartPurchaseOrderApi.updatePurchaseOrderMakeNo(updateParams)
message.success("已驳回");
getList();
// getList();
router.push({ path: '/purchase/PartPurchaseCheck'});
tagsViewStore.delVisitedView(router.currentRoute.value)
}
const cancel = async () => {

View File

@ -1,7 +1,7 @@
<template>
<el-card class="hl-card">
<template #header>
<span>采购订单审核</span>
<span></span>
</template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->