Merge remote-tracking branch 'origin/main'

This commit is contained in:
wb_zhanghaoyuan 2025-06-26 15:49:44 +08:00
commit 9c4a1f5e3d
8 changed files with 53 additions and 18 deletions

View File

@ -104,6 +104,8 @@ public interface ErrorCodeConstants {
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_EXISTS = new ErrorCode(1_008_009, "存在物料清单已生成采购订单,请刷新界面!"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_EXISTS = new ErrorCode(1_008_009, "存在物料清单已生成采购订单,请刷新界面!");
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_IS_STORAGE = new ErrorCode(1_008_010, "存在物料清单已转库存,请刷新界面!");
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_011, "物料数据不能为空,请选择物料后重试!"); ErrorCode PURCHASE_ORDER_MAKE_DETAIL_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_011, "物料数据不能为空,请选择物料后重试!");
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_BOOM_DETAIL_IS_EXISTS = new ErrorCode(1_008_012, "BOM明细ID不能为空");
ErrorCode PURCHASE_ORDER_MAKE_DETAIL_PROJECTSUB_DETAIL_NOT_EXISTS = new ErrorCode(1_008_013, "子项目ID不能为空");
/************生产管理***********/ /************生产管理***********/
ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在"); ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在");
ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在"); ErrorCode TASK_REPORT_NOT_EXISTS = new ErrorCode(1_009_002, "任务报工不存在");

View File

@ -21,12 +21,13 @@ public class MaterialPlanBoomSaveReqVO {
@NotNull(message = "物料需求计划id不能为空") @NotNull(message = "物料需求计划id不能为空")
private Long projectMaterialPlanId; private Long projectMaterialPlanId;
@Schema(description = "工艺boom明细id零件类型加工件", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "工艺boom明细id零件类型加工件")
@NotNull(message = "工艺boom明细id零件类型加工件不能为空") // @NotNull(message = "工艺boom明细id零件类型加工件不能为空")
private Long boomDetailId; private Long boomDetailId;
@Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED) // @Schema(description = "订单子项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "订单子项目id不能为空") // @NotNull(message = "订单子项目id不能为空")
@Schema(description = "订单子项目id")
private Long projectPlanSubId; private Long projectPlanSubId;
@Schema(description = "需求数量") @Schema(description = "需求数量")

View File

@ -64,7 +64,9 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
query.selectAll(MaterialPlanBoomDO.class) 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("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","m.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("b.material_name as matName","b.spec as matSpec","b.unit as matUnit","b.blueprint_no as blueprintNo")
.select("bc.`name` as compositionName","b.`composition_id` as compositionId") .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") .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) .leftJoin(MaterialPlanDO.class,"ma",MaterialPlanDO::getId, MaterialPlanBoomDO::getProjectMaterialPlanId)
@ -73,7 +75,7 @@ public interface MaterialPlanBoomMapper extends BaseMapperX<MaterialPlanBoomDO>
.leftJoin(CompositionDO.class, "bc", CompositionDO::getId, ProcessBomDetailDO::getCompositionId) .leftJoin(CompositionDO.class, "bc", CompositionDO::getId, ProcessBomDetailDO::getCompositionId)
.leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId,MaterialPlanDO::getProjectId) .leftJoin(ProjectOrderDO.class,"po",ProjectOrderDO::getId,MaterialPlanDO::getProjectId)
.leftJoin(AdminUserDO.class,"u",AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId) .leftJoin(AdminUserDO.class,"u",AdminUserDO::getId, MaterialPlanBoomDO::getDuEmpId)
.leftJoin(MaterialDO.class,"m",MaterialDO::getId,MaterialPlanBoomDO::getMaterialId) // .leftJoin(MaterialDO.class,"m",MaterialDO::getId,MaterialPlanBoomDO::getMaterialId)
.eq(MaterialPlanDO::getMatType,0) .eq(MaterialPlanDO::getMatType,0)
.in(MaterialPlanBoomDO::getIsPurYard,Arrays.asList(0,5)) .in(MaterialPlanBoomDO::getIsPurYard,Arrays.asList(0,5))
.disableSubLogicDel() .disableSubLogicDel()

View File

@ -114,6 +114,12 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
HashMap<Long, PlanSubDO> planSubMap = new HashMap<>(); HashMap<Long, PlanSubDO> planSubMap = new HashMap<>();
for (MaterialPlanBoomDO dp : materialPlanBoomDOList) { for (MaterialPlanBoomDO dp : materialPlanBoomDOList) {
PurchaseOrderMakeDetailDO makeDetailDO = new PurchaseOrderMakeDetailDO(); PurchaseOrderMakeDetailDO makeDetailDO = new PurchaseOrderMakeDetailDO();
if (dp.getBoomDetailId() == null){
throw exception(PURCHASE_ORDER_MAKE_DETAIL_BOOM_DETAIL_IS_EXISTS);
}
if(dp.getProjectPlanSubId() == null){
throw exception(PURCHASE_ORDER_MAKE_DETAIL_PROJECTSUB_DETAIL_NOT_EXISTS);
}
makeDetailDO.setBoomDetailId(dp.getBoomDetailId()); makeDetailDO.setBoomDetailId(dp.getBoomDetailId());
makeDetailDO.setBoomName(dp.getMatName()); makeDetailDO.setBoomName(dp.getMatName());
makeDetailDO.setBoomSpec(dp.getMatSpec()); makeDetailDO.setBoomSpec(dp.getMatSpec());
@ -178,7 +184,8 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 入库前缀 // 入库前缀
purchaseOrderMakeDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString());
purchaseOrderMakeDO.setPurchaseNo(code);
purchaseOrderMakeDO.setGoodsType(1); purchaseOrderMakeDO.setGoodsType(1);
purchaseOrderMakeDO.setStatus(1); purchaseOrderMakeDO.setStatus(1);
purchaseOrderMakeDO.setSubmitUserId(loginUserId); purchaseOrderMakeDO.setSubmitUserId(loginUserId);
@ -206,7 +213,7 @@ public class MaterialPlanBoomServiceImpl implements MaterialPlanBoomService {
dp.setMplanStatus(1); dp.setMplanStatus(1);
dp.setProjectPurchaseOrderMakeId(purchaseOrderMakeDO.getId()); dp.setProjectPurchaseOrderMakeId(purchaseOrderMakeDO.getId());
dp.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailDO.getId()); dp.setProjectPurchaseOrderMakeDetailId(purchaseOrderMakeDetailDO.getId());
dp.setPurchaseNo(purchaseOrderMakeDO.getPurchaseNo()); dp.setPurchaseNo(code);
} }
} }
} }

View File

@ -82,7 +82,8 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1); serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
// 入库前缀 // 入库前缀
purchaseOrderNoDO.setPurchaseNo(PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString())); String code = PURCHASE_ORDER.getCode(serialNumberDO.getSerialNumber().toString());
purchaseOrderNoDO.setPurchaseNo(code);
serialNumberService.updateSerialNumber(serialNumberDO); serialNumberService.updateSerialNumber(serialNumberDO);
purchaseOrderNoDO.setGoodsType(1); purchaseOrderNoDO.setGoodsType(1);
purchaseOrderNoDO.setPurchaseType(1); purchaseOrderNoDO.setPurchaseType(1);
@ -161,6 +162,7 @@ public class PurchaseOrderMakeDetailServiceImpl implements PurchaseOrderMakeDeta
pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId()); pmd.setPurchaseOrderNoId(purchaseOrderNoDO.getId());
pmd.setPurchaseOrderNoDetailId(pd.getId()); pmd.setPurchaseOrderNoDetailId(pd.getId());
pmd.setOrderStatus(2); pmd.setOrderStatus(2);
pmd.setPurchaseNo(code);
break; break;
} }
} }

View File

@ -19,7 +19,7 @@
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" /> <el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable @keyup.enter="handleQuery" class="!w-240px" />
</el-form-item> </el-form-item>
<el-form-item label="采购状态" prop="orderStatus"> <el-form-item label="采购状态" prop="orderStatus">
<el-select clearable v-model="queryParams.orderStatus" placeholder="请选择采购状态" class="!w-240px"> <el-select @change="e => clearItem(e)" clearable v-model="queryParams.orderStatus" placeholder="请选择采购状态" class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PURCHASE_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -264,7 +264,9 @@ const getMateriallist = async(row) =>{
const handleSelectionChange = (selection) => { const handleSelectionChange = (selection) => {
ids.value = selection; ids.value = selection;
} }
const clearItem = (e) =>{
multipleTable.value.clearSelection();
}
/** 导出按钮操作 */ /** 导出按钮操作 */
const handleExportDetail = async () => { const handleExportDetail = async () => {
try { try {

View File

@ -237,7 +237,7 @@ const getRowKeys=(row)=>{
const handleSelectionChange = (selection) => { const handleSelectionChange = (selection) => {
ids.value = selection; ids.value = selection;
} }
const clearItem = () =>{ const clearItem = (e) =>{
multipleTable.value.clearSelection(); multipleTable.value.clearSelection();
} }
/** 导出按钮操作 */ /** 导出按钮操作 */

View File

@ -22,7 +22,9 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true" highlight-current-row @current-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table"> <el-table
ref="multipleTableRef" v-loading="loading" :data="list" :stripe="true"
@row-click="clickRow" @selection-change="handleCurrentChange" :show-overflow-tooltip="true" class="hl-table">
<el-table-column <el-table-column
type="selection" type="selection"
width="55"/> width="55"/>
@ -114,12 +116,28 @@ const getList = async () => {
} }
const clickItem = ref([]) const clickItem = ref([])
const handleCurrentChange = (val) => { const handleCurrentChange = (val) => {
multipleTableRef.value!.clearSelection()
clickItem.value = val; clickItem.value = val;
if(val.length > 1){
multipleTableRef.value!.clearSelection()
multipleTableRef.value!.toggleRowSelection(val.pop())
}
}
const clickRow = (row) => {
//
if ( clickItem.value[0] == row) {
//
clickItem.value = [];
multipleTableRef.value!.clearSelection()
} else {
//
clickItem.value.push(row);
multipleTableRef.value!.clearSelection()
multipleTableRef.value!.toggleRowSelection(row, true);
}
}
multipleTableRef.value!.toggleRowSelection(val, undefined)
};
/** 搜索按钮操作 */ /** 搜索按钮操作 */
const handleQuery = () => { const handleQuery = () => {
queryParams.pageNo = 1 queryParams.pageNo = 1
@ -162,7 +180,8 @@ const emit = defineEmits(['success'])
// emit('success', multipleSelection.value) // emit('success', multipleSelection.value)
const success = () =>{ const success = () =>{
dialogVisible.value = false; dialogVisible.value = false;
emit('success',rowid.value,clickItem.value.storageOkQty,clickItem.value.id,clickItem.value.matCode) console.log(clickItem.value)
emit('success',rowid.value,clickItem.value[0].storageOkQty,clickItem.value[0].id,clickItem.value[0].matCode)
} }
const handleRg = async (rgid) => { const handleRg = async (rgid) => {
pnCurrentList.value =[] pnCurrentList.value =[]