完成同一图号的组装任务的出入库记录合并

This commit is contained in:
Stang 2024-11-11 10:09:04 +08:00
parent 1b79b79082
commit 3d21743a37
7 changed files with 166 additions and 34 deletions

View File

@ -329,6 +329,7 @@ public class BaseKnifeController extends BaseController
operLog.setOperParam(json);
operLog.setStatus(1);
operLog.setOperTime(new Date());
// 接口返回信息
String msg = "生产准备验证成功!";
// 记录所需物料数量的map
@ -351,6 +352,7 @@ public class BaseKnifeController extends BaseController
return AjaxResult.error("物料台账查询错误", techBom.getKnifeCode());
}
// 查询复合条件的台账
baseKnifeWrapper.setMbbBdMrlId(mdItemTemp.getItemId());
baseKnifeWrapper.setIsLocked(0);
List<BaseKnife> tempList = this.baseKnifeService.selectBaseKnifeList(baseKnifeWrapper);
@ -573,6 +575,7 @@ public class BaseKnifeController extends BaseController
BomRoute bomRoute = bomRouteService.selectBomRouteByBomRouteId(zdTask.getAttr1());
BaseKnife baseKnifeWrapper = new BaseKnife();
List<BaseKnife> baseKnifeList = new ArrayList<>();
// 遍历组装整刀需要的bom物料
for (MbbProduBom mbbProduBom : bomRoute.getMbbProduBomList()) {
baseKnifeWrapper.setMbbBdMrlId(mbbProduBom.getMdItemId());
baseKnifeWrapper.setIsLocked(0);
@ -588,6 +591,7 @@ public class BaseKnifeController extends BaseController
// 查询工艺bom
BaseTechnologyBom technologyBom = new BaseTechnologyBom();
Boolean lockedFlag = false;
// attr4 组装任务所属计划单 如果为空则是手动组装任务不需要锁定
if (zdTask.getAttr4() != null){
lockedFlag = true;
technologyBom = baseTechnologyBomService.selectBaseTechnologyBomByTechnologyBomId(zdTask.getAttr4());
@ -595,15 +599,19 @@ public class BaseKnifeController extends BaseController
technologyBom.setFigureCode(zdTask.getCode());
}
// 出库基础物料
WmsOutPlan outPlan = new WmsOutPlan();
outPlan.setPlanCode(technologyBom.getFigureCode());
outPlan.setWmsBusinessTypeId(12L);
outPlan.setPlanState("1");
outPlan.setPlanType("ZDCK");
outPlan.setCreateBy(getUsername());
outPlan.setCreateTime(DateUtils.getNowDate());
wmsOutPlanMapper.insertWmsOutPlan(outPlan);
// 出库基础物料 根据图号查询出库计划如果不存在生成计划存在则往计划中添加任务
WmsOutPlan outPlan = wmsOutPlanMapper.selectWmsOutPlanByPlanCode(technologyBom.getFigureCode());
if (outPlan == null){
WmsOutPlan outPlanTemp = new WmsOutPlan();
outPlanTemp.setPlanCode(technologyBom.getFigureCode());
outPlanTemp.setWmsBusinessTypeId(12L);
outPlanTemp.setPlanState("1");
outPlanTemp.setPlanType("ZDCK");
outPlanTemp.setCreateBy(getUsername());
outPlanTemp.setCreateTime(DateUtils.getNowDate());
wmsOutPlanMapper.insertWmsOutPlan(outPlanTemp);
outPlan = outPlanTemp;
}
// 锁定物料
Boolean outPlanFlag = true;
@ -621,6 +629,7 @@ public class BaseKnifeController extends BaseController
baseKnife.setStandardQuantity("1");
baseKnife.setKnifeLife(100);
baseKnife.setKnifeFineState(0);
// 判断是否需要锁定整刀
if (lockedFlag) {
baseKnife.setIsLocked(1);
baseKnife.setLockedStartTime(technologyBom.getLockedStartTime());
@ -661,7 +670,7 @@ public class BaseKnifeController extends BaseController
wmsOutPlanDetailList.add(outPlanDetail);
}
// 锁定物料
// 锁定基础 物料
int bomCount = mbbProduBom.getStandardDosage();
for (BaseKnife wmsBaseKnife : baseKnifeList){
if (bomCount > 0){
@ -673,6 +682,7 @@ public class BaseKnifeController extends BaseController
baseKnifeListOutPlan.add(wmsBaseKnife);
baseKnifeService.updateBaseKnife(wmsBaseKnife);
bomCount--;
// 记录刀片重置次数
resetCount += wmsBaseKnife.getResetCount();
}
}
@ -699,11 +709,12 @@ public class BaseKnifeController extends BaseController
wmsOutPlanDetailEntityMapper.insertWmsOutPlanDetailEntity(wmsOutPlanDetailEntity);
}
// 出库任务
// 生成出库任务
WmsOutTask wmsOutTask = new WmsOutTask();
wmsOutTask.setWmsOutPlanId(outPlan.getWmsOutPlanId());
wmsOutTask.setWmsOutPlanCode(outPlan.getPlanCode());
wmsOutTask.setWmsOutPlanCode(generateTaskCode(outPlan.getPlanCode()));
wmsOutTask.setWmsOutPlanDetailId(outPlanDetail.getWmsOutPlanDetailId());
// 出库类型 12组刀出库
wmsOutTask.setWmsBusinessTypeId(12L);
wmsOutTask.setTaskCode(outPlan.getPlanCode());
wmsOutTask.setTaskNumber(outPlanDetail.getPlannedQuantity());
@ -726,29 +737,46 @@ public class BaseKnifeController extends BaseController
mdItemService.updateMdItem(mdItem);
}
// 整刀入库计划
WmsInPlan wmsInPlan = new WmsInPlan();
wmsInPlan.setState("1");
wmsInPlan.setSourceType("SGLR");
wmsInPlan.setCellCode(zdTask.getAttr3());
wmsInPlan.setPlanCode(technologyBom.getFigureCode());
wmsInPlan.setRelBillCode("组装单据");
wmsInPlan.setPlanTypeId("13");
wmsInPlan.setCreateBy(getUsername());
wmsInPlan.setCreateTime(DateUtils.getNowDate());
// 整刀入库计划, 根据图号查询入库计划如果不存在生成计划存在则往计划中添加任务
WmsInPlan wmsInPlan = wmsInPlanService.selectWmsInPlanByPlanCode(technologyBom.getFigureCode());
if (wmsInPlan == null){
WmsInPlan wmsInPlanTemp = new WmsInPlan();
wmsInPlanTemp.setState("1");
wmsInPlanTemp.setSourceType("SGLR");
wmsInPlanTemp.setCellCode(zdTask.getAttr3());
wmsInPlanTemp.setPlanCode(technologyBom.getFigureCode());
wmsInPlanTemp.setRelBillCode("组装单据");
wmsInPlanTemp.setPlanTypeId("13");
wmsInPlanTemp.setCreateBy(getUsername());
wmsInPlanTemp.setCreateTime(DateUtils.getNowDate());
// 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum);
wmsInPlanDetails.setCellId("1");
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanService.insertWmsInPlan(wmsInPlan);
// 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = new ArrayList<>();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum);
wmsInPlanDetails.setCellId("1");
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlanTemp.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanService.insertWmsInPlan(wmsInPlanTemp);
wmsInPlan = wmsInPlanTemp;
} else {
// 入库任务明细
List<WmsInPlanDetails> wmsInPlanDetailsList = wmsInPlan.getWmsInPlanDetailsList();
WmsInPlanDetails wmsInPlanDetails = new WmsInPlanDetails();
wmsInPlanDetails.setMaterialId(zdTask.getmProductId().toString());
wmsInPlanDetails.setBatch(batchNum);
wmsInPlanDetails.setCellId("1");
wmsInPlanDetails.setQuantity(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setQuantityIn(zdTask.getProductIdQty().toString());
wmsInPlanDetails.setPlanInStatus("0");
wmsInPlanDetailsList.add(wmsInPlanDetails);
wmsInPlan.setWmsInPlanDetailsList(wmsInPlanDetailsList);
wmsInPlanService.updateWmsInPlan(wmsInPlan);
}
// 入库任务
MdItem mdItem = mdItemService.selectMdItemById(zdTask.getmProductId());

View File

@ -101,4 +101,6 @@ public interface WmsOutPlanMapper {
);
WmsOutPlanDetail selectWmsOutPlanDetailById(Long wmsOutPlanDetailId);
WmsOutPlan selectWmsOutPlanByPlanCode(String figureCode);
}

View File

@ -84,4 +84,6 @@ public interface WmsInPlanMapper
* @return 结果
*/
public int deleteWmsInPlanDetailsByPlanId(String planId);
WmsInPlan selectWmsInPlanByPlanCode(String planCode);
}

View File

@ -19,6 +19,8 @@ public interface IWmsInPlanService
*/
public WmsInPlan selectWmsInPlanByPlanId(String planId);
WmsInPlan selectWmsInPlanByPlanCode(String planCode);
/**
* 查询入库计划列表
*
@ -58,4 +60,5 @@ public interface IWmsInPlanService
* @return 结果
*/
public int deleteWmsInPlanByPlanId(String planId);
}

View File

@ -42,6 +42,11 @@ public class WmsInPlanServiceImpl implements IWmsInPlanService {
return wmsInPlanMapper.selectWmsInPlanByPlanId(planId);
}
@Override
public WmsInPlan selectWmsInPlanByPlanCode(String planCode) {
return wmsInPlanMapper.selectWmsInPlanByPlanCode(planCode);
}
/**
* 查询入库计划列表
*

View File

@ -390,4 +390,47 @@
FROM WMS_OUT_PLAN_DETAIL
WHERE WMS_OUT_PLAN_DETAIL_ID = #{wmsOutPlanDetailId};
</select>
<select id="selectWmsOutPlanByPlanCode" resultMap="WmsOutPlanWmsOutPlanDetailResult">
select a.WMS_OUT_PLAN_ID,
a.PLAN_CODE,
a.WMS_BUSINESS_TYPE_ID,
a.PLAN_STATE,
a.PLAN_TYPE,
a.RECIPIENT_USERNAME,
a.REMARK,
a.ATTR1,
a.ATTR2,
a.ATTR3,
a.ATTR4,
a.CREATE_BY,
a.CREATE_TIME,
a.UPDATE_BY,
a.UPDATE_TIME,
b.WMS_OUT_PLAN_DETAIL_ID as sub_WMS_OUT_PLAN_DETAIL_ID,
b.WMS_OUT_PLAN_ID as sub_WMS_OUT_PLAN_ID,
b.MD_ITEM_ID as sub_MD_ITEM_ID,
b.MD_ITEM_CODE as sub_MD_ITEM_CODE,
b.MD_ITEM_NAME as sub_MD_ITEM_NAME,
b.MD_ITEM_UNIT as sub_MD_ITEM_UNIT,
b.PLANNED_QUANTITY as sub_PLANNED_QUANTITY,
b.REAL_QUANTITY as sub_REAL_QUANTITY,
b.DETAIL_BATCH_NUM as sub_DETAIL_BATCH_NUM,
b.WM_STORAGE_AREA_ID as sub_WM_STORAGE_AREA_ID,
b.WM_STORAGE_AREA_CODE as sub_WM_STORAGE_AREA_CODE,
b.WM_STORAGE_AREA_NAME as sub_WM_STORAGE_AREA_NAME,
b.DETAIL_STATE as sub_DETAIL_STATE,
b.REMARK as sub_REMARK,
b.ATTR1 as sub_ATTR1,
b.ATTR2 as sub_ATTR2,
b.ATTR3 as sub_ATTR3,
b.ATTR4 as sub_ATTR4,
b.CREATE_BY as sub_CREATE_BY,
b.CREATE_TIME as sub_CREATE_TIME,
b.UPDATE_BY as sub_UPDATE_BY,
b.UPDATE_TIME as sub_UPDATE_TIME
from WMS_OUT_PLAN a
left join WMS_OUT_PLAN_DETAIL b on b.WMS_OUT_PLAN_ID = a.WMS_OUT_PLAN_ID
where a.PLAN_CODE = #{planCode}
</select>
</mapper>

View File

@ -175,6 +175,55 @@
where a.PLAN_ID = #{planId}
</select>
<select id="selectWmsInPlanByPlanCode" parameterType="String" resultMap="WmsInPlanWmsInPlanDetailsResult">
select a.PLAN_ID,
a.STATE,
a.SOURCE_TYPE,
a.WARE_ID,
a.CELL_CODE,
a.WORK_ORDER_CODE,
a.EXPECT_DATE,
a.PUBLISH_NAME,
a.PUBLISH_TIME,
a.CLOSER_ID,
a.CLOSE_TIME,
a.REL_BILL_CODE,
a.CREATE_BY,
a.CREATE_TIME,
a.UPDATE_TIME,
a.UPDATE_BY,
a.REMARK,
a.CUSTOMER_ID,
a.PO_CODE,
a.DEPARTMENT_ID,
a.CONTRACT_NO,
a.SUPPLIER_ID,
a.BUSINESS_TYPE_ID,
a.SRC_OUT_TASK_ID,
a.IS_ACTIVE,
a.IS_DELETE,
a.PLAN_CODE,
a.PLAN_TYPE_ID,
b.DETAILS_ID as sub_DETAILS_ID,
b.PLAN_ID as sub_PLAN_ID,
b.MATERIAL_ID as sub_MATERIAL_ID,
b.BATCH as sub_BATCH,
b.CELL_ID as sub_CELL_ID,
b.QUANTITY as sub_QUANTITY,
b.QUANTITY_IN as sub_QUANTITY_IN,
b.PLAN_IN_STATUS as sub_PLAN_IN_STATUS,
b.REMARK as sub_REMARK,
b.CREATE_BY as sub_CREATE_BY,
b.CREATE_TIME as sub_CREATE_TIME,
b.UPDATE_BY as sub_UPDATE_BY,
b.UPDATE_TIME as sub_UPDATE_TIME,
b.IS_ACTIVY as sub_IS_ACTIVY,
b.IS_DELETE as sub_IS_DELETE
from WMS_IN_PLAN a
left join WMS_IN_PLAN_DETAILS b on b.PLAN_ID = a.PLAN_ID
where a.PLAN_CODE = #{planCode}
</select>
<insert id="insertWmsInPlan" parameterType="WmsInPlan" useGeneratedKeys="true" keyProperty="planId">
insert into WMS_IN_PLAN
<trim prefix="(" suffix=")" suffixOverrides=",">