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

master
yinq 2 weeks ago
parent 5415413483
commit b3fe54b9bc

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

@ -143,9 +143,14 @@
<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="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="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>
</select>

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

@ -643,6 +643,7 @@
v-for="dict in dict.type.mes_sale_type"
:key="dict.value"
:label="dict.value"
:disabled="dict.value === '3'"
>{{ dict.label }}
</el-radio>
</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 label="成品BOM" width="200" align="center" v-if="batchSaleForm.batchSaleType === MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL">
<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-select>
</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">
<template slot-scope="scope">
<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>
</template>
</el-table-column>
@ -740,7 +741,13 @@
</el-dialog>
<!-- 新增: 批量选择生产物料弹窗 -->
<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">
<el-button type="primary" @click="submitBatchSaleProduceMaterialForm"> </el-button>
<el-button @click="batchSaleProduceMaterialOpen = false"> </el-button>
@ -1043,6 +1050,7 @@ export default {
// :
batchSaleProduceMaterialOpen: false,
currentBatchSaleRowIndex: null,
currentBatchSaleMaterialId: null, // ID
};
},
activated() {
@ -1607,20 +1615,28 @@ export default {
materialBomList: []
}));
rows.forEach((row, index) => {
getMaterialVisionList(row.materialId).then(response => {
if (response.data && response.data.length !== 0) {
this.$set(this.batchSaleOrders[index], 'materialBomList', response.data);
this.batchSaleOrders[index].materialBomId = response.data[0].materialBomId;
} else {
this.$modal.msgError(row.materialName + "物料未维护BOM信息");
if (this.batchSaleForm.batchSaleType === this.MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL){
rows.forEach((row, index) => {
getMaterialVisionList(row.materialId).then(response => {
if (response.data && response.data.length !== 0) {
this.$set(this.batchSaleOrders[index], 'materialBomList', response.data);
this.batchSaleOrders[index].materialBomId = response.data[0].materialBomId;
} 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', []);
}
}).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)
this.$refs.batchSaleOrderRef.clearSelection();
@ -1674,16 +1690,39 @@ export default {
// :
openBatchSaleProduceMaterialDialog(rowIndex) {
this.currentBatchSaleRowIndex = rowIndex;
this.batchSaleProduceMaterialOpen = true;
this.currentBatchSaleMaterialId = this.batchSaleOrders[rowIndex].materialId; //
this.batchSaleProduceMaterialOpen = false;
this.$nextTick(() => {
this.batchSaleProduceMaterialOpen = true;
});
},
// :
submitBatchSaleProduceMaterialForm() {
const selectedRow = this.$refs.batchSaleProduceMaterialRef.selectedRow;
if (selectedRow) {
const idx = this.currentBatchSaleRowIndex;
this.$set(this.batchSaleOrders[idx], 'produceMaterialId', selectedRow.materialId);
this.$set(this.batchSaleOrders[idx], 'produceMaterialName', selectedRow.materialName);
const idx = this.currentBatchSaleRowIndex;
if (this.batchSaleForm.batchSaleType === this.MES_SALE_TYPE.MES_SALE_TYPE_EXTERNAL){
if (selectedRow) {
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;
},
}

Loading…
Cancel
Save