change - 新建生产任务:销售订单批量创建对内生产逻辑

master
yinq 2 weeks ago
parent 5415413483
commit b3fe54b9bc

@ -163,6 +163,16 @@ public class MesBaseMaterialInfo extends BaseEntity
*/ */
private String isExceeded; private String isExceeded;
private Long filterMaterialId;
public Long getFilterMaterialId() {
return filterMaterialId;
}
public void setFilterMaterialId(Long filterMaterialId) {
this.filterMaterialId = filterMaterialId;
}
public BigDecimal getAvailableAmount() { public BigDecimal getAvailableAmount() {
return availableAmount; return availableAmount;
} }

@ -143,9 +143,14 @@
<if test="lowValueConsumableFlag != null and lowValueConsumableFlag != ''">and bmi.low_value_consumable_flag = #{lowValueConsumableFlag}</if> <if test="lowValueConsumableFlag != null and lowValueConsumableFlag != ''">and bmi.low_value_consumable_flag = #{lowValueConsumableFlag}</if>
<if test="alwaysFlag != null and alwaysFlag != ''">and bmi.always_flag = #{alwaysFlag}</if> <if test="alwaysFlag != null and alwaysFlag != ''">and bmi.always_flag = #{alwaysFlag}</if>
<if test="isExceeded != null and isExceeded != ''">and IF(wst.availableAmount >= bmi.safe_stock_amount, '1', '0') = #{isExceeded}</if> <if test="isExceeded != null and isExceeded != ''">and IF(wst.availableAmount >= bmi.safe_stock_amount, '1', '0') = #{isExceeded}</if>
<if test="selectType != null and selectType !=''">and exists (select 1 from wms_warehouse_material wwm where wwm.storage_type='1' and wwm.warehouse_id=511 and wwm.storage_id=bmi.material_id)</if> <if test="selectType != null and selectType !=''">and exists (select 1 from wms_warehouse_material wwm where wwm.storage_type='1' and wwm.warehouse_id=511 and wwm.storage_id=bmi.material_id)</if>
<if test="filterMaterialId != null ">and exists (select 1
from (select m1.material_id, m1.material_name, m2.material_id prod_id, m2.material_name prod_name
from mes_material_bom m1
left join mes_material_bom m2 on m1.parent_id = m2.material_bom_id
where m2.material_id = #{filterMaterialId}) mmb
where mmb.material_id = bmi.material_id)
</if>
</where> </where>
</select> </select>

@ -100,6 +100,12 @@ import {
export default { export default {
name: "Materialinfo", name: "Materialinfo",
dicts: ['active_flag', 'material_categories','mes_material_bind_flag'], dicts: ['active_flag', 'material_categories','mes_material_bind_flag'],
props: {
filterMaterialId: {
type: [String, Number],
default: null
}
},
data() { data() {
return { return {
// //
@ -156,6 +162,19 @@ export default {
created() { created() {
this.getList(); this.getList();
}, },
watch: {
filterMaterialId: {
immediate: true,
handler(newVal) {
if (newVal) {
this.queryParams.filterMaterialId = newVal;
} else {
this.queryParams.filterMaterialId = null;
}
this.getList();
}
}
},
methods: { methods: {
/** 查询物料信息列表 */ /** 查询物料信息列表 */
getList() { getList() {

@ -643,6 +643,7 @@
v-for="dict in dict.type.mes_sale_type" v-for="dict in dict.type.mes_sale_type"
:key="dict.value" :key="dict.value"
:label="dict.value" :label="dict.value"
:disabled="dict.value === '3'"
>{{ dict.label }} >{{ dict.label }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
@ -656,7 +657,7 @@
<el-table-column prop="materialName" label="成品名称" width="130" align="center" v-if="batchSaleForm.batchSaleType !== MES_SALE_TYPE.MES_SALE_TYPE_PACKING"/> <el-table-column prop="materialName" label="成品名称" width="130" align="center" v-if="batchSaleForm.batchSaleType !== MES_SALE_TYPE.MES_SALE_TYPE_PACKING"/>
<el-table-column label="成品BOM" width="200" align="center" v-if="batchSaleForm.batchSaleType === MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL"> <el-table-column label="成品BOM" width="200" align="center" v-if="batchSaleForm.batchSaleType === MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.materialBomId" placeholder="请选择物料BOM"> <el-select v-model="scope.row.materialBomId" placeholder="请选择成品BOM">
<el-option v-for="item in (scope.row.materialBomList || [])" :key="item.materialBomId" :label="item.materialNameDesc" :value="item.materialBomId" :disabled="item.activeFlag!=='1'"/> <el-option v-for="item in (scope.row.materialBomList || [])" :key="item.materialBomId" :label="item.materialNameDesc" :value="item.materialBomId" :disabled="item.activeFlag!=='1'"/>
</el-select> </el-select>
</template> </template>
@ -672,7 +673,7 @@
<el-table-column label="物料BOM" width="200" align="center" v-if="batchSaleForm.batchSaleType === MES_SALE_TYPE.MES_SALE_TYPE_INTERNAL"> <el-table-column label="物料BOM" width="200" align="center" v-if="batchSaleForm.batchSaleType === MES_SALE_TYPE.MES_SALE_TYPE_INTERNAL">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.materialBomId" placeholder="请选择物料BOM"> <el-select v-model="scope.row.materialBomId" placeholder="请选择物料BOM">
<el-option v-for="item in (scope.row.materialBomList || [])" :key="item.materialBomId" :label="item.materialNameDesc" :value="item.materialBomId" :disabled="item.activeFlag!=='1'"/> <el-option v-for="item in (scope.row.produceMaterialBomList || [])" :key="item.materialBomId" :label="item.materialNameDesc" :value="item.materialBomId" :disabled="item.activeFlag!=='1'"/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
@ -740,7 +741,13 @@
</el-dialog> </el-dialog>
<!-- 新增: 批量选择生产物料弹窗 --> <!-- 新增: 批量选择生产物料弹窗 -->
<el-dialog title="选择生产物料" :visible.sync="batchSaleProduceMaterialOpen" append-to-body> <el-dialog title="选择生产物料" :visible.sync="batchSaleProduceMaterialOpen" append-to-body>
<select-material @selection="()=>{}" ref="batchSaleProduceMaterialRef" :select-type="MATERIAL_TYPE.RAW" v-if="batchSaleProduceMaterialOpen"></select-material> <select-material
@selection="()=>{}"
ref="batchSaleProduceMaterialRef"
:select-type="MATERIAL_TYPE.RAW"
:filter-material-id="currentBatchSaleMaterialId"
v-if="batchSaleProduceMaterialOpen">
</select-material>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitBatchSaleProduceMaterialForm"> </el-button> <el-button type="primary" @click="submitBatchSaleProduceMaterialForm"> </el-button>
<el-button @click="batchSaleProduceMaterialOpen = false"> </el-button> <el-button @click="batchSaleProduceMaterialOpen = false"> </el-button>
@ -1043,6 +1050,7 @@ export default {
// : // :
batchSaleProduceMaterialOpen: false, batchSaleProduceMaterialOpen: false,
currentBatchSaleRowIndex: null, currentBatchSaleRowIndex: null,
currentBatchSaleMaterialId: null, // ID
}; };
}, },
activated() { activated() {
@ -1607,20 +1615,28 @@ export default {
materialBomList: [] materialBomList: []
})); }));
rows.forEach((row, index) => { if (this.batchSaleForm.batchSaleType === this.MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL){
getMaterialVisionList(row.materialId).then(response => { rows.forEach((row, index) => {
if (response.data && response.data.length !== 0) { getMaterialVisionList(row.materialId).then(response => {
this.$set(this.batchSaleOrders[index], 'materialBomList', response.data); if (response.data && response.data.length !== 0) {
this.batchSaleOrders[index].materialBomId = response.data[0].materialBomId; this.$set(this.batchSaleOrders[index], 'materialBomList', response.data);
} else { this.batchSaleOrders[index].materialBomId = response.data[0].materialBomId;
this.$modal.msgError(row.materialName + "物料未维护BOM信息"); } else {
this.$modal.msgError(row.materialName + "物料未维护BOM信息");
this.$set(this.batchSaleOrders[index], 'materialBomList', []);
}
}).catch(error => {
console.error('获取BOM信息失败:', error);
this.$set(this.batchSaleOrders[index], 'materialBomList', []); this.$set(this.batchSaleOrders[index], 'materialBomList', []);
} });
}).catch(error => {
console.error('获取BOM信息失败:', error);
this.$set(this.batchSaleOrders[index], 'materialBomList', []);
}); });
}); }
if (this.batchSaleForm.batchSaleType === this.MES_SALE_TYPE.MES_SALE_TYPE_INTERNAL){
rows.forEach((row, index) => {
this.batchSaleOrders[index].dispatchId = 3;
this.batchSaleOrders[index].materialBomId = null;
});
}
console.log("batchSaleOrders",this.batchSaleOrders) console.log("batchSaleOrders",this.batchSaleOrders)
this.$refs.batchSaleOrderRef.clearSelection(); this.$refs.batchSaleOrderRef.clearSelection();
@ -1674,16 +1690,39 @@ export default {
// : // :
openBatchSaleProduceMaterialDialog(rowIndex) { openBatchSaleProduceMaterialDialog(rowIndex) {
this.currentBatchSaleRowIndex = rowIndex; this.currentBatchSaleRowIndex = rowIndex;
this.batchSaleProduceMaterialOpen = true; this.currentBatchSaleMaterialId = this.batchSaleOrders[rowIndex].materialId; //
this.batchSaleProduceMaterialOpen = false;
this.$nextTick(() => {
this.batchSaleProduceMaterialOpen = true;
});
}, },
// : // :
submitBatchSaleProduceMaterialForm() { submitBatchSaleProduceMaterialForm() {
const selectedRow = this.$refs.batchSaleProduceMaterialRef.selectedRow; const selectedRow = this.$refs.batchSaleProduceMaterialRef.selectedRow;
if (selectedRow) { const idx = this.currentBatchSaleRowIndex;
const idx = this.currentBatchSaleRowIndex; if (this.batchSaleForm.batchSaleType === this.MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL){
this.$set(this.batchSaleOrders[idx], 'produceMaterialId', selectedRow.materialId); if (selectedRow) {
this.$set(this.batchSaleOrders[idx], 'produceMaterialName', selectedRow.materialName); this.$set(this.batchSaleOrders[idx], 'produceMaterialId', selectedRow.materialId);
this.$set(this.batchSaleOrders[idx], 'produceMaterialName', selectedRow.materialName);
}
} }
if (this.batchSaleForm.batchSaleType === this.MES_SALE_TYPE.MES_SALE_TYPE_INTERNAL) {
if (selectedRow) {
this.$set(this.batchSaleOrders[idx], 'produceMaterialId', selectedRow.materialId);
this.$set(this.batchSaleOrders[idx], 'produceMaterialName', selectedRow.materialName);
}
getMaterialVisionList(selectedRow.materialId).then(response => {
if (response.data && response.data.length !== 0) {
this.$set(this.batchSaleOrders[idx], 'produceMaterialBomList', response.data);
this.batchSaleOrders[idx].materialBomId = response.data[0].materialBomId;
console.log(this.batchSaleOrders)
} else {
this.$modal.msgError(selectedRow.materialName + "物料未维护BOM信息");
this.$set(this.batchSaleOrders[idx], 'produceMaterialBomList', []);
}
})
}
this.batchSaleProduceMaterialOpen = false; this.batchSaleProduceMaterialOpen = false;
}, },
} }

Loading…
Cancel
Save