|
|
|
@ -84,9 +84,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
|
|
//插入前构造数据
|
|
|
|
|
onInsertBean(bean);
|
|
|
|
|
|
|
|
|
|
//获取相同类型 相同标识 生产序号最大值的
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", orderPackBean);
|
|
|
|
@ -94,15 +91,8 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"produceSeq"}, orderPackBean);
|
|
|
|
|
MesWorkOrder result = baseRDao.getByProperty(orderPackBean);
|
|
|
|
|
|
|
|
|
|
//生成工单号
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
|
|
|
|
|
List<String> orderList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
String orderNo = orderList.get(0);
|
|
|
|
|
orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean);
|
|
|
|
|
if (baseRDao.isExitByHql(orderPackBean)) {
|
|
|
|
|
MesException.throwMesBusiException("单号流水码生成重复");
|
|
|
|
|
}
|
|
|
|
|
//插入前构造数据
|
|
|
|
|
onInsertBean(bean);
|
|
|
|
|
|
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
@ -113,7 +103,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesWorkOrder copyMesWorkOrder = new MesWorkOrder();
|
|
|
|
|
BeanUtils.copyProperties(bean, copyMesWorkOrder);
|
|
|
|
|
copyMesWorkOrder.setProduceSeq((long) (produceSeq + 1));
|
|
|
|
|
copyMesWorkOrder.setWorkOrderNo(orderNo);
|
|
|
|
|
copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser());
|
|
|
|
|
|
|
|
|
@ -130,7 +119,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
bean.setWorkOrderSeq(resultList.get(0));
|
|
|
|
|
}
|
|
|
|
|
bean.setWorkOrderNo(orderNo);
|
|
|
|
|
bean.setQty(bean.getQty());
|
|
|
|
|
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(bean, bean.getCreateUser());
|
|
|
|
@ -168,6 +156,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
//更新状态
|
|
|
|
|
if (result.getWorkOrderStatus().intValue() != bean.getWorkOrderStatus().intValue()) {
|
|
|
|
|
result.setWorkOrderStatus(bean.getWorkOrderStatus());
|
|
|
|
|
if (result.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()
|
|
|
|
|
&& bean.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) {
|
|
|
|
|
//校验物料生产版本是否存在
|
|
|
|
@ -177,7 +166,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(mesWorkOrderToWmsService.saveMesWorkOrderToWms(result, bomList));
|
|
|
|
|
}
|
|
|
|
|
result.setWorkOrderStatus(bean.getWorkOrderStatus());
|
|
|
|
|
}
|
|
|
|
|
//修改工单,工单标识需要改为未同步
|
|
|
|
|
result.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
@ -246,6 +234,16 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
if (StringUtil.isEmpty(item.getCustPartNo())) {
|
|
|
|
|
getCustomerPart(item);
|
|
|
|
|
}
|
|
|
|
|
//生成工单号
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
|
|
|
|
|
List<String> orderList = syncFuncService.syncSerialNo(genSerialNoModel, item.getCreateUser(), item.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
String orderNo = orderList.get(0);
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean);
|
|
|
|
|
if (baseRDao.isExitByHql(orderPackBean)) {
|
|
|
|
|
MesException.throwMesBusiException("单号流水码生成重复");
|
|
|
|
|
}
|
|
|
|
|
item.setWorkOrderNo(orderNo);
|
|
|
|
|
//校验标识
|
|
|
|
|
//若工单类型为排序
|
|
|
|
|
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
|
|
|
|
@ -325,10 +323,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesProductVersion mesProductVersion = checkMesProductVersion(item);
|
|
|
|
|
//获取bom信息
|
|
|
|
|
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
|
|
|
|
|
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
@ -340,9 +337,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
item.setProductVersion(mesProductVersion.getProductVersion());
|
|
|
|
|
//获取bom信息
|
|
|
|
|
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
}
|
|
|
|
|
//物料名称不存在,从物料信息中获取
|
|
|
|
|
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode());
|
|
|
|
@ -448,15 +445,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesWorkOrder next = mesWorkOrderList.iterator().next();
|
|
|
|
|
//属性校验&字段填充
|
|
|
|
|
List<MesWorkOrderToWms> mesWorkOrderToWmsList = checkData(mesWorkOrderList, next.getOrganizeCode());
|
|
|
|
|
//生成工单号
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
|
|
|
|
|
List<String> orderList = syncFuncService.syncSerialNo(genSerialNoModel, next.getCreateUser(), next.getOrganizeCode(), mesWorkOrderList.size()).getResultList();
|
|
|
|
|
//查询工单是否已经存在
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(next.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getInPackList(orderList, "workOrderNo", orderPackBean);
|
|
|
|
|
if (baseRDao.isExitByHql(orderPackBean)) {
|
|
|
|
|
MesException.throwMesBusiException("单号已存在");
|
|
|
|
|
}
|
|
|
|
|
//BTO序号
|
|
|
|
|
List<String> seqList = new ArrayList<>();
|
|
|
|
|
if (MesExtEnumUtil.ORDER_TYPE.BTO.getValue() == next.getWorkOrderType()) {
|
|
|
|
@ -467,7 +455,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
int index = 0;
|
|
|
|
|
for (MesWorkOrder item : mesWorkOrderList) {
|
|
|
|
|
//获取相同类型 相同标识 生产序号最大值的
|
|
|
|
|
orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(item.getWorkOrderStatus(), "workOrderStatus", orderPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getOrderFlag(), "orderFlag", orderPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"produceSeq"}, orderPackBean);
|
|
|
|
@ -482,7 +470,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesWorkOrder copyMesWorkOrder = new MesWorkOrder();
|
|
|
|
|
BeanUtils.copyProperties(item, copyMesWorkOrder);
|
|
|
|
|
copyMesWorkOrder.setProduceSeq((long) (produceSeq + 1));
|
|
|
|
|
copyMesWorkOrder.setWorkOrderNo(orderList.get(index));
|
|
|
|
|
copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, item.getCreateUser());
|
|
|
|
|
index++;
|
|
|
|
@ -500,8 +487,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
item.setProduceSeq(produceSeq + 1);
|
|
|
|
|
item.setWorkOrderSeq(seqList.get(index));
|
|
|
|
|
}
|
|
|
|
|
item.setWorkOrderNo(orderList.get(index));
|
|
|
|
|
item.setQty(item.getQty());
|
|
|
|
|
item.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(item, item.getCreateUser());
|
|
|
|
|
baseRDao.insert(item);
|
|
|
|
@ -522,6 +507,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<MesWorkOrderToWms> checkData(List<MesWorkOrder> mesWorkOrderList, String organizeCode) {
|
|
|
|
|
MesWorkOrder next = mesWorkOrderList.iterator().next();
|
|
|
|
|
String nowDate = TimeTool.getNowTime(true);
|
|
|
|
|
//获取产线信息
|
|
|
|
|
List<String> workCenterCodeList = mesWorkOrderList.stream().map(MesWorkOrder::getWorkCenterCode).distinct().collect(Collectors.toList());
|
|
|
|
@ -555,6 +541,15 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesException.throwMesBusiException("vin号【%s】已存在", list);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//生成工单号
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.MES_WORK_ORDER_NO);
|
|
|
|
|
List<String> orderList = syncFuncService.syncSerialNo(genSerialNoModel, next.getCreateUser(), next.getOrganizeCode(), mesWorkOrderList.size()).getResultList();
|
|
|
|
|
//查询工单是否已经存在
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(next.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getInPackList(orderList, "workOrderNo", orderPackBean);
|
|
|
|
|
if (baseRDao.isExitByHql(orderPackBean)) {
|
|
|
|
|
MesException.throwMesBusiException("单号已存在");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//BOM信息
|
|
|
|
|
Map<String, List<MesBom>> mesBomMap = new HashMap<>();
|
|
|
|
@ -564,7 +559,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
Map<String, MesPartProdGroup> mesPartProdGroupMap = new HashMap<>();
|
|
|
|
|
//发送wms数据
|
|
|
|
|
List<MesWorkOrderToWms> mesWorkOrderToWmsList = new ArrayList<>();
|
|
|
|
|
int index = 0;
|
|
|
|
|
for (MesWorkOrder item : mesWorkOrderList) {
|
|
|
|
|
item.setWorkOrderNo(orderList.get(index));
|
|
|
|
|
// 数据校验
|
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空");
|
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
|
|
|
|
@ -702,10 +699,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList);
|
|
|
|
|
}
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList));
|
|
|
|
|
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
@ -729,11 +726,12 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
mesBomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
mesBomMap.put(item.getPartNo() + mesProductVersion.getAlternativePartList(), mesBomList);
|
|
|
|
|
}
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
mesWorkOrderToWmsList.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, mesBomList));
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
}
|
|
|
|
|
item.setUnCompleteQty(item.getQty());
|
|
|
|
|
index++;
|
|
|
|
|
}
|
|
|
|
|
return mesWorkOrderToWmsList;
|
|
|
|
|
}
|
|
|
|
|