|
|
|
@ -297,6 +297,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
result.setWorkOrderStatus(bean.getWorkOrderStatus());
|
|
|
|
|
//非排序关闭订单 需要关闭kitting
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void doCloseKittingOrder(MesWorkOrder mesWorkOrder,String userName){
|
|
|
|
|
public void doCloseKittingOrder(MesWorkOrder mesWorkOrder,String userName){
|
|
|
|
|
String organizeCode = mesWorkOrder.getOrganizeCode();
|
|
|
|
|
DdlPackBean pullOrderPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkOrder.getWorkOrderNo(),"workOrderNo",pullOrderPackBean);
|
|
|
|
@ -792,7 +795,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void doCreateKitting(List<MesWorkOrder> mesWorkOrderList,String organizeCode) {
|
|
|
|
|
//todo 在工单点击发布时,也需要重新触发拉动单,工单关闭时,也需要关闭拉动单
|
|
|
|
|
//1.拉动组获取 -- 根据拉动组类型获取kitting,需要判断是否生成是否生成拉动单开关
|
|
|
|
|
DdlPackBean partPullPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesExtEnumUtil.PART_PULL_ORDER_TYPE.KITTING_PULL.getValue(),"pullOrderType", partPullPackBean);
|
|
|
|
@ -818,10 +820,22 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
if (CollectionUtils.isEmpty(workOrderList) || CollectionUtils.isEmpty(mesWorkCenters)) {
|
|
|
|
|
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));
|
|
|
|
|
for (String producePartNoAndTime : orderMap.keySet()) {
|
|
|
|
|
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()) {
|
|
|
|
@ -924,7 +938,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();
|
|
|
|
|
//1.查询拉动组详情
|
|
|
|
|
DdlPackBean pullPartDetailPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
@ -990,6 +1004,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){
|
|
|
|
|
//校验当前工单是否已经生成过拉动单,如果已经生成过则不在生成
|
|
|
|
|
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));
|
|
|
|
|
List<String> pullDetailPartList = mesPartPullDetailList.stream().map(MesPartPullDetail::getPullPartNo).collect(Collectors.toList());
|
|
|
|
@ -1333,6 +1354,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
//初始的工单状态
|
|
|
|
|
Integer workOrderStatusInit = mesWorkOrder.getWorkOrderStatus();
|
|
|
|
|
MesWorkOrder mesWorkOrderDb = getMesWorkOrder(mesWorkOrder.getWorkOrderNo(),mesWorkOrder.getOrganizeCode());
|
|
|
|
|
mesWorkOrderDb.setDescription(mesWorkOrder.getDescription());
|
|
|
|
|
//查询物料信息
|
|
|
|
@ -1396,6 +1419,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
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());
|
|
|
|
|
|
|
|
|
|
//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())){
|
|
|
|
|
String sn = getStringList(mesWorkOrder.getOrganizeCode(), AuthUtilExt.getUserName());
|
|
|
|
@ -1611,6 +1642,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},
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|