kitting 修复

tags/yfai-mes-ext-v3.11^2
臧学普 3 months ago
parent 52f362970a
commit 4a84cba207

@ -74,4 +74,10 @@ public interface IMesWorkOrderService extends IBaseMesService<MesWorkOrder> {
@ApiOperation(value = "BTO工单看板") @ApiOperation(value = "BTO工单看板")
List<MesWorkOrderBoardResModel> orderBoard(MesWorkOrderBoardReqModel workOrderBoardReqModel); List<MesWorkOrderBoardResModel> orderBoard(MesWorkOrderBoardReqModel workOrderBoardReqModel);
@ApiOperation(value = "根据工单状态改变--生成拉动单")
void doCreateKittingOrder(List<MesWorkOrder> workOrderListNew,MesPartPull mesPartPull,MesWorkCenter mesWorkCenter);
@ApiOperation(value = "根据工单状态改变--关闭拉动但")
void doCloseKittingOrder(MesWorkOrder mesWorkOrder,String userName);
} }

@ -297,6 +297,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
result.setWorkOrderStatus(bean.getWorkOrderStatus()); result.setWorkOrderStatus(bean.getWorkOrderStatus());
//非排序关闭订单 需要关闭kitting //非排序关闭订单 需要关闭kitting
doCloseKittingOrder(bean,bean.getModifyUser()); doCloseKittingOrder(bean,bean.getModifyUser());
List<MesWorkOrder> list = new ArrayList<>();
list.add(bean);
doCreateKitting(list,bean.getOrganizeCode());
} }
@ -311,7 +314,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
return result; return result;
} }
private void doCloseKittingOrder(MesWorkOrder mesWorkOrder,String userName){ public void doCloseKittingOrder(MesWorkOrder mesWorkOrder,String userName){
String organizeCode = mesWorkOrder.getOrganizeCode(); String organizeCode = mesWorkOrder.getOrganizeCode();
DdlPackBean pullOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean pullOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkOrderNo(),"workOrderNo",pullOrderPackBean); DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkOrderNo(),"workOrderNo",pullOrderPackBean);
@ -782,7 +785,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
private void doCreateKitting(List<MesWorkOrder> mesWorkOrderList,String organizeCode) { private void doCreateKitting(List<MesWorkOrder> mesWorkOrderList,String organizeCode) {
//todo 在工单点击发布时,也需要重新触发拉动单,工单关闭时,也需要关闭拉动单
//1.拉动组获取 -- 根据拉动组类型获取kitting,需要判断是否生成是否生成拉动单开关 //1.拉动组获取 -- 根据拉动组类型获取kitting,需要判断是否生成是否生成拉动单开关
DdlPackBean partPullPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean partPullPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PART_PULL_ORDER_TYPE.KITTING_PULL.getValue(),"pullOrderType", partPullPackBean); DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PART_PULL_ORDER_TYPE.KITTING_PULL.getValue(),"pullOrderType", partPullPackBean);
@ -808,10 +810,22 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
if (CollectionUtils.isEmpty(workOrderList) || CollectionUtils.isEmpty(mesWorkCenters)) { if (CollectionUtils.isEmpty(workOrderList) || CollectionUtils.isEmpty(mesWorkCenters)) {
continue; continue;
} }
//判断当前产线是否需要生成拉动单
MesWorkCenter mesWorkCenter = mesWorkCenters.get(0);
Integer generateStatus = mesWorkCenter.getGenerateStatus();
if (generateStatus == null){
generateStatus = MesExtEnumUtil.GENERATE_STATUS.GENERATE_STATUS_20.getValue();
}
Map<String, List<MesWorkOrder>> orderMap = workOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getPartNo)); Map<String, List<MesWorkOrder>> orderMap = workOrderList.stream().collect(Collectors.groupingBy(MesWorkOrder::getPartNo));
for (String producePartNoAndTime : orderMap.keySet()) { for (String producePartNoAndTime : orderMap.keySet()) {
List<MesWorkOrder> workOrderListNew = orderMap.get(producePartNoAndTime); List<MesWorkOrder> workOrderListNew = orderMap.get(producePartNoAndTime);
doCreateKittingOrder(workOrderListNew,mesPartPull,mesWorkCenters.get(0)); Integer finalGenerateStatus = generateStatus;
//过滤掉不生成拉动单的工单
workOrderListNew = workOrderListNew.stream().filter(item -> item.getWorkOrderStatus().equals(finalGenerateStatus)).collect(Collectors.toList());
if (!workOrderListNew.isEmpty()) {
doCreateKittingOrder(workOrderListNew,mesPartPull,mesWorkCenter);
}
} }
//按成套圆整 //按成套圆整
} else if (mesPartPull.getRoundMethod() == MesExtEnumUtil.PART_PULL_ROUND_METHOD.ROUND_DOOR_PANELS_NUMBER.getValue()) { } else if (mesPartPull.getRoundMethod() == MesExtEnumUtil.PART_PULL_ROUND_METHOD.ROUND_DOOR_PANELS_NUMBER.getValue()) {
@ -914,7 +928,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
} }
private void doCreateKittingOrder(List<MesWorkOrder> workOrderListNew,MesPartPull mesPartPull,MesWorkCenter mesWorkCenter) { public void doCreateKittingOrder(List<MesWorkOrder> workOrderListNew,MesPartPull mesPartPull,MesWorkCenter mesWorkCenter) {
String organizeCode = mesWorkCenter.getOrganizeCode(); String organizeCode = mesWorkCenter.getOrganizeCode();
//1.查询拉动组详情 //1.查询拉动组详情
DdlPackBean pullPartDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean pullPartDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
@ -980,6 +994,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
private void insertPullOrderInfo(MesWorkOrder mesWorkOrder,List<MesBom> bomPullList,MesPartPull mesPartPull,List<MesPartPullDetail> mesPartPullDetailList,String organizeCode,int i, int roundPackQty){ private void insertPullOrderInfo(MesWorkOrder mesWorkOrder,List<MesBom> bomPullList,MesPartPull mesPartPull,List<MesPartPullDetail> mesPartPullDetailList,String organizeCode,int i, int roundPackQty){
//校验当前工单是否已经生成过拉动单,如果已经生成过则不在生成
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkOrderNo(),"workOrderNo", ddlPackBean);
int count = mesPullingOrderInfoRao.findByHqlWhereCount(ddlPackBean);
if (count >0){
return;
}
// 计算所有拉动单的数量,生成拉动单 // 计算所有拉动单的数量,生成拉动单
Map<String, List<MesPartPullDetail>> pullDetailMap = mesPartPullDetailList.stream().filter(item->!StringUtils.isEmpty(item.getPullPartNo())).collect(Collectors.groupingBy(MesPartPullDetail::getPullPartNo)); Map<String, List<MesPartPullDetail>> pullDetailMap = mesPartPullDetailList.stream().filter(item->!StringUtils.isEmpty(item.getPullPartNo())).collect(Collectors.groupingBy(MesPartPullDetail::getPullPartNo));
List<String> pullDetailPartList = mesPartPullDetailList.stream().map(MesPartPullDetail::getPullPartNo).collect(Collectors.toList()); List<String> pullDetailPartList = mesPartPullDetailList.stream().map(MesPartPullDetail::getPullPartNo).collect(Collectors.toList());
@ -1323,6 +1344,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
@Override @Override
public void doProductReport(MesWorkOrder mesWorkOrder) { public void doProductReport(MesWorkOrder mesWorkOrder) {
//初始的工单状态
Integer workOrderStatusInit = mesWorkOrder.getWorkOrderStatus();
MesWorkOrder mesWorkOrderDb = getMesWorkOrder(mesWorkOrder.getWorkOrderNo(),mesWorkOrder.getOrganizeCode()); MesWorkOrder mesWorkOrderDb = getMesWorkOrder(mesWorkOrder.getWorkOrderNo(),mesWorkOrder.getOrganizeCode());
mesWorkOrderDb.setDescription(mesWorkOrder.getDescription()); mesWorkOrderDb.setDescription(mesWorkOrder.getDescription());
//查询物料信息 //查询物料信息
@ -1372,6 +1395,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrderDb.setRemark(mesWorkOrder.getRemark()); mesWorkOrderDb.setRemark(mesWorkOrder.getRemark());
//更新工单 //更新工单
updateMesWorkOrder(mesWorkOrderDb,(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrder.getNum()); updateMesWorkOrder(mesWorkOrderDb,(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) ? MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT : MesExtEnumUtil.WORK_ORDER_LOG_TYPE.REPORT_ADJUST,mesWorkOrder.getNum());
//2025/2/19 状态改变了需要校验是否生成拉动单,是否关闭拉动单
if (!Objects.equals(mesWorkOrderDb.getWorkOrderStatus(), workOrderStatusInit)){
doCloseKittingOrder(mesWorkOrderDb,mesWorkOrderDb.getModifyUser());
List<MesWorkOrder> list = new ArrayList<>();
list.add(mesWorkOrderDb);
doCreateKitting(list,mesWorkOrderDb.getOrganizeCode());
}
//试制单不报工 //试制单不报工
if(Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())){ if(Objects.isNull(mesWorkOrderDb.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(mesWorkOrderDb.getOrderFlag())){
String sn = getStringList(mesWorkOrder.getOrganizeCode(), AuthUtilExt.getUserName()); String sn = getStringList(mesWorkOrder.getOrganizeCode(), AuthUtilExt.getUserName());
@ -1570,6 +1601,17 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//关闭工单 //关闭工单
baseRDao.updateByProperties(new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.WORK_ORDER_STATUS, MesExtConstWords.SYSTEM_SYNC_STATUS}, baseRDao.updateByProperties(new String[]{MesExtConstWords.MODIFY_USER, MesExtConstWords.MODIFY_DATE_TIME, MesExtConstWords.WORK_ORDER_STATUS, MesExtConstWords.SYSTEM_SYNC_STATUS},
new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}, ddlPackBean); new Object[]{userName, TimeTool.getNowTime(true), MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}, ddlPackBean);
//关闭工单后校验是否生成拉动单,是否关闭拉动单
List<MesWorkOrder> mesWorkOrderListNew = new ArrayList<>();
for (MesWorkOrder mesWorkOrder : mesWorkOrderList) {
MesWorkOrder mesWorkOrderNew = new MesWorkOrder();
BeanUtils.copyProperties(mesWorkOrder, mesWorkOrderNew);
mesWorkOrderNew.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());
mesWorkOrderListNew.add(mesWorkOrderNew);
doCloseKittingOrder(mesWorkOrderNew,userName);
}
doCreateKitting(mesWorkOrderListNew,organizeCode);
} }

Loading…
Cancel
Save