部分代码恢复及修改
This commit is contained in:
parent
fea38d7741
commit
11893e4cd2
@ -35,6 +35,8 @@ public class MaterialPlanBoomSaveReqVO {
|
||||
@Schema(description = "需求到货日期")
|
||||
private LocalDateTime boomArriveDate;
|
||||
|
||||
|
||||
|
||||
private Integer buyType;
|
||||
@Schema(description = "备注")
|
||||
private String description;
|
||||
@ -47,6 +49,6 @@ public class MaterialPlanBoomSaveReqVO {
|
||||
//供应商id
|
||||
private Long supplierId;
|
||||
private BigDecimal matRest;
|
||||
|
||||
private Long materialId;
|
||||
private List<MaterialPlanBoomDO> materialPlanBoomDOList;
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ public class PurchaseOrderMakeDetailRespVO {
|
||||
@Schema(description = "供应商id", example = "30352")
|
||||
@ExcelProperty("供应商id")
|
||||
private Long supplierId;
|
||||
|
||||
private Long materialId;
|
||||
@Schema(description = "物料需求计划id", example = "16465")
|
||||
@ExcelProperty("物料需求计划id")
|
||||
private Long projectMaterialPlanId;
|
||||
@ -117,7 +117,7 @@ public class PurchaseOrderMakeDetailRespVO {
|
||||
|
||||
@Schema(description = "收货状态 未收货/收货中/收货完成 1/2/3", example = "2")
|
||||
@ExcelProperty("收货状态 未收货/收货中/收货完成 1/2/3")
|
||||
private Boolean receivingStatus;
|
||||
private Integer receivingStatus;
|
||||
|
||||
@Schema(description = "采购单号")
|
||||
@ExcelProperty("采购单号")
|
||||
|
@ -21,6 +21,8 @@ public class PurchaseOrderMakeDetailSaveReqVO {
|
||||
@NotNull(message = "采购单id不能为空")
|
||||
private Long purchaseOrderId;
|
||||
|
||||
private Integer buyType;
|
||||
|
||||
@Schema(description = "加工件boom detail id", example = "31132")
|
||||
private Long boomDetailId;
|
||||
|
||||
@ -88,7 +90,7 @@ public class PurchaseOrderMakeDetailSaveReqVO {
|
||||
private String projectSubCode;
|
||||
|
||||
@Schema(description = "收货状态 未收货/收货中/收货完成 1/2/3", example = "2")
|
||||
private Boolean receivingStatus;
|
||||
private Integer receivingStatus;
|
||||
|
||||
@Schema(description = "采购单号")
|
||||
private String purchaseNo;
|
||||
|
@ -141,18 +141,18 @@ public class MaterialPlanBoomDO extends BaseDO {
|
||||
private String matType;
|
||||
@TableField(exist = false)
|
||||
private String mplanStatusName;
|
||||
@TableField(exist = false)
|
||||
|
||||
private BigDecimal matRest;
|
||||
//采购数量
|
||||
@TableField(exist = false)
|
||||
|
||||
private BigDecimal purchaseAmount;
|
||||
@TableField(exist = false)
|
||||
|
||||
//暂估价格
|
||||
private BigDecimal estimatedPrice;
|
||||
@TableField(exist = false)
|
||||
|
||||
//预估到时间
|
||||
private LocalDateTime arriveTime;
|
||||
@TableField(exist = false)
|
||||
|
||||
//供应商id
|
||||
private Long supplierId;
|
||||
|
||||
|
@ -64,7 +64,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
||||
|
||||
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","b.material_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("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 +73,9 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
|
||||
.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)
|
||||
.eq(MaterialPlanDO::getMatType,0)
|
||||
.in(MaterialPlanBoomDO::getIsPurYard,Arrays.asList(0,5))
|
||||
.disableSubLogicDel()
|
||||
.groupBy(MaterialPlanBoomDO::getId)
|
||||
.orderByDesc(MaterialPlanBoomDO::getCreateTime);
|
||||
|
@ -4,6 +4,7 @@ import java.util.*;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.excel.util.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
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;
|
||||
@ -38,7 +39,7 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
||||
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> 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("pom.purchase_no as purchaseNo")
|
||||
// .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)
|
||||
@ -66,7 +67,11 @@ public interface PurchaseOrderMakeDetailMapper extends BaseMapperX<PurchaseOrder
|
||||
|
||||
return selectPage(reqVO, query);
|
||||
}
|
||||
|
||||
default int clearMaterialId(Long id){
|
||||
UpdateWrapper<PurchaseOrderMakeDetailDO> updateWrapper = new UpdateWrapper<>();
|
||||
updateWrapper.set("material_id",null).eq("id",id);
|
||||
return update(updateWrapper);
|
||||
}
|
||||
default PageResult<PartPurchaseOrderPageRespVO> selectPartPurchaseOrderPage(PartPurchaseOrderPageReqVO pageReqVO) {
|
||||
MPJLambdaWrapper<PurchaseOrderMakeDetailDO> query = new MPJLambdaWrapper<>();
|
||||
query.selectAll(PurchaseOrderMakeDetailDO.class)
|
||||
|
@ -143,7 +143,13 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
|
||||
validatePurchaseOrderMakeDetailExists(updateReqVO.getId());
|
||||
// 更新
|
||||
PurchaseOrderMakeDetailDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderMakeDetailDO.class);
|
||||
purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||
if (updateObj.getMaterialId() == null){
|
||||
purchaseOrderMakeDetailMapper.clearMaterialId(updateObj.getId());
|
||||
purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||
}else {
|
||||
purchaseOrderMakeDetailMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -33,7 +33,8 @@
|
||||
<select id="hasPurchase"
|
||||
parameterType="java.util.Map"
|
||||
resultType="Long">
|
||||
select count(*) from project_material_plan_boom where project_purchase_order_make_id is not null and deleted = 0 and tenant_id = 2 and
|
||||
select count(*) from project_material_plan_boom where
|
||||
project_purchase_order_make_id is not null and deleted = 0 and tenant_id = 2 and
|
||||
id in
|
||||
<foreach item="id" collection="ids" open="(" separator="," close=")">
|
||||
#{id}
|
||||
|
@ -11,6 +11,7 @@ export interface PuchaseOrderMakeDetail {
|
||||
purchaseAmount:number
|
||||
estimatedPrice:number
|
||||
arriveTime:Date
|
||||
receivingStatus:number
|
||||
supplierId:number
|
||||
materialPlanBoomDOList:Array<PuchaseOrderMakeDetail>
|
||||
}
|
||||
|
@ -67,6 +67,7 @@
|
||||
<el-table-column label="序号" align="center" type="index" width="60" />
|
||||
<el-table-column label="子项目编码" align="center" prop="projectSubCode" min-width="150" />
|
||||
<el-table-column label="物料编码" align="center" min-width="180" >
|
||||
<template #header><span class="hl-table_header">*</span>物料编码</template>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.boomCode"
|
||||
@ -224,7 +225,7 @@ const getRowKeys=(row)=>{
|
||||
const materialSelectList = ref([])
|
||||
const queryMaterialParams = {
|
||||
pageNo: 1,
|
||||
pageSize: 40,
|
||||
pageSize: 99,
|
||||
inventoryCodes: undefined,
|
||||
inventoryName: undefined,
|
||||
}
|
||||
@ -241,7 +242,9 @@ const remoteMethod = async (query, row) => {
|
||||
row.materialSelectList = data.list;
|
||||
} else {
|
||||
// 如果没有查询条件,则清空物料选择列表
|
||||
row.materialSelectList = [];
|
||||
queryMaterialParams.inventoryName = undefined;
|
||||
const data = await matApi.getMaterialPage(queryMaterialParams);
|
||||
row.materialSelectList = data.list;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("查询物料失败:", error);
|
||||
@ -293,6 +296,9 @@ const changeSupp = async(e,row) => {
|
||||
// row.boomSpec = e.spec;
|
||||
// row.boomUnit = e.unit
|
||||
await updateRows(row)
|
||||
}else{
|
||||
row.materialId = null;
|
||||
await updateRows(row)
|
||||
}
|
||||
}
|
||||
const updateRows = async(row) =>{
|
||||
@ -329,7 +335,7 @@ const opearteForm = async(type) =>{
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
if(!row.boomDetailId){
|
||||
if(!row.materialId){
|
||||
message.error('零件编码不能为空!')
|
||||
loading.value = false
|
||||
return
|
||||
@ -359,6 +365,7 @@ const opearteForm = async(type) =>{
|
||||
}
|
||||
}else{
|
||||
message.error("至少选择一项后进行操作!")
|
||||
loading.value = false
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>标准件物料需求计划</span>
|
||||
<span>标准件采购</span>
|
||||
</template>
|
||||
<ContentWrap class="borderxx">
|
||||
<!-- 搜索工作栏 -->
|
||||
@ -91,12 +91,14 @@
|
||||
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="采购数量" align="center" prop="purchaseAmount" min-width="180" >
|
||||
<el-table-column align="center" prop="purchaseAmount" min-width="180" >
|
||||
<template #header><span class="hl-table_header">*</span>采购数量</template>
|
||||
<template #default="scope">
|
||||
<el-input-number @blur="updateRow(1,scope.row)" v-model="scope.row.purchaseAmount" :precision="2" :step="0.01" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物料编码" align="center" prop="matCode" min-width="180" >
|
||||
|
||||
<template #default="scope">
|
||||
<el-input v-model="scope.row.matCode" disabled>
|
||||
<template #suffix>
|
||||
@ -106,7 +108,8 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="库存量" align="center" prop="matRest" min-width="120" />
|
||||
<el-table-column label="供应商" align="center" prop="supplierId" min-width="180" >
|
||||
<el-table-column align="center" prop="supplierId" min-width="180" >
|
||||
<template #header><span class="hl-table_header">*</span>供应商</template>
|
||||
<template #default="scope">
|
||||
<el-select
|
||||
v-model="scope.row.supplierId"
|
||||
@ -125,7 +128,8 @@
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column label="预估总价" align="center" prop="estimatedPrice" min-width="180" >
|
||||
<el-table-column align="center" prop="estimatedPrice" min-width="180" >
|
||||
<template #header><span class="hl-table_header">*</span>预估总价</template>
|
||||
<template #default="scope">
|
||||
<el-input-number @blur="updateRow(3,scope.row)" v-model="scope.row.estimatedPrice" :precision="2" :step="0.01" />
|
||||
</template>
|
||||
@ -294,7 +298,7 @@ const opearteForm = async(type) =>{
|
||||
loading.value = false
|
||||
return
|
||||
} else if(!row.estimatedPrice && row.estimatedPrice != 0){
|
||||
message.error('零件:'+row.matName+ '预估总价不能为空')
|
||||
message.error('零件:'+row.matName+ '预估总价不能为空!')
|
||||
loading.value = false
|
||||
return
|
||||
} else if( row.estimatedPrice == 0){
|
||||
@ -302,7 +306,7 @@ const opearteForm = async(type) =>{
|
||||
loading.value = false
|
||||
return
|
||||
} else if(!row.arriveTime ){
|
||||
message.error('零件:'+row.matName+ '预计到货日期不能为空')
|
||||
message.error('零件:'+row.matName+ '预计到货日期不能为空!')
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
@ -311,7 +315,7 @@ const opearteForm = async(type) =>{
|
||||
}
|
||||
}
|
||||
if(sets != null && sets.size > 1){
|
||||
message.error('不通项目不能同时生成采购单');
|
||||
message.error('不同项目不能同时生成采购单');
|
||||
loading.value = false
|
||||
return
|
||||
}
|
||||
@ -353,10 +357,17 @@ const opearteForm = async(type) =>{
|
||||
materialPlanBoomDOList:ids.value,
|
||||
buyType:2
|
||||
}
|
||||
await materialPlanBoomApi.updateMaterialPlanBoom(form);
|
||||
try{
|
||||
await materialPlanBoomApi.updateMaterialPlanBoom(form);
|
||||
message.success("去库存成功")
|
||||
await getList()
|
||||
}catch(e){
|
||||
loading.value = false
|
||||
}finally{
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}else{
|
||||
message.error("至少选择一项后进行操作!")
|
||||
|
@ -1,35 +1,13 @@
|
||||
<template>
|
||||
<Dialog v-model="dialogVisible" width="80%">
|
||||
<Dialog title="实时库存" v-model="dialogVisible" width="80%">
|
||||
<el-card class="hl-card">
|
||||
<template #header>
|
||||
<span>实时库存</span>
|
||||
</template>
|
||||
|
||||
<ContentWrap class="borderxx">
|
||||
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
|
||||
<el-form-item label="批次号" prop="lotNo" v-if="false">
|
||||
<el-input v-model="queryParams.lotNo" placeholder="批次号" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库" prop="whId">
|
||||
<el-select v-model="queryParams.whId" placeholder="下拉选择" clearable class="!w-240px" @change="handleWh">
|
||||
<el-option
|
||||
v-for="dict in whList" :key="dict.id" :label="dict.wh_name"
|
||||
:value="dict.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="库区" prop="rgId">
|
||||
<el-select v-model="queryParams.rgId" placeholder="下拉选择" clearable class="!w-240px" @change="handleRg">
|
||||
<el-option
|
||||
v-for="dict in rgCurrentList" :key="dict.id" :label="dict.rg_name"
|
||||
:value="dict.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="库位" prop="pnId">
|
||||
<el-select v-model="queryParams.pnId" placeholder="下拉选择" clearable class="!w-240px">
|
||||
<el-option
|
||||
v-for="dict in pnCurrentList" :key="dict.id" :label="dict.pn_name"
|
||||
:value="dict.id" />
|
||||
</el-select>
|
||||
<el-form-item label="物料名称" prop="matName" >
|
||||
<el-input v-model="queryParams.matName" placeholder="物料名称" clearable @keyup.enter="handleQuery" class="!w-240px" />
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item >
|
||||
<el-button @click="handleQuery" type="primary">
|
||||
|
@ -94,7 +94,7 @@ import * as PurchaseOrderNoApi from '@/api/heli/purchaseorderno'
|
||||
import { ElTable } from 'element-plus'
|
||||
import dayjs from "dayjs";
|
||||
import {useUserStore} from "@/store/modules/user";
|
||||
|
||||
import { useRoute } from 'vue-router';
|
||||
defineOptions({ name: 'PurchaseOrder' })
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
@ -262,7 +262,13 @@ const handleExportWithTax = async () => {
|
||||
}
|
||||
}
|
||||
/** 初始化 **/
|
||||
onMounted( () => {
|
||||
const route = useRoute();
|
||||
/** 初始化 **/
|
||||
onMounted(async () => {
|
||||
const flushParam = route.query.flush;
|
||||
if(flushParam){
|
||||
getList()
|
||||
}
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
|
Loading…
Reference in New Issue
Block a user