|
|
@ -170,149 +170,45 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
|
|
|
|
|
// 数据校验
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getWorkOrderType(), "工单类型不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getWorkCenterCode(), "产线不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getPartNo(), "零件号不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getShiftCode(), "班次不能为空");
|
|
|
|
//校验产线与工位的关系
|
|
|
|
//校验产线与工位的关系
|
|
|
|
boolean relationResult = checkWorkCenterPartRelation(bean.getWorkCenterCode(), bean.getPartNo());
|
|
|
|
boolean relationResult = checkWorkCenterPartRelation(bean.getWorkCenterCode(), bean.getPartNo());
|
|
|
|
if (!relationResult && (StringUtil.isEmpty(bean.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag()))){
|
|
|
|
if (!relationResult && (StringUtil.isEmpty(bean.getOrderFlag()) || !MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag()))){
|
|
|
|
MesException.throwMesBusiException(String.format("工单产线【%s】与工单零件【%s】没有维护产线零件关系",bean.getWorkCenterCode(),bean.getPartNo()));
|
|
|
|
MesException.throwMesBusiException(String.format("工单产线【%s】与工单零件【%s】没有维护产线零件关系",bean.getWorkCenterCode(),bean.getPartNo()));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//获取相同类型 相同标识 生产序号最大值的
|
|
|
|
//排序生成个数 默认1,数量为生成工单的个数
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getOrderFlag(), "orderFlag", orderPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"productSeq"}, orderPackBean);
|
|
|
|
|
|
|
|
MesWorkOrder result = baseRDao.getByProperty(orderPackBean);
|
|
|
|
|
|
|
|
Double generateQty = bean.getQty();
|
|
|
|
Double generateQty = bean.getQty();
|
|
|
|
|
|
|
|
MesWorkCenter mesWorkCenter = workCenterService.getWorkCenterDb(bean.getOrganizeCode(), bean.getWorkCenterCode());
|
|
|
|
//插入前构造数据
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
onInsertBean(bean);
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", bean.getWorkCenterCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
bean.setErpWorkCenter(mesWorkCenter.getErpWorkCenter());
|
|
|
|
|
|
|
|
bean.setAreaCode(mesWorkCenter.getAreaCode());
|
|
|
|
|
|
|
|
//客户物料信息
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(bean.getCustPartNo())) {
|
|
|
|
|
|
|
|
getCustomerPart(bean);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//排序
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
Long productSeq = 0L;
|
|
|
|
insertSortWorkOrderNo(bean, mesWorkCenter);
|
|
|
|
if (null != result && result.getProductSeq() != null) {
|
|
|
|
|
|
|
|
productSeq = (long) Math.toIntExact(result.getProductSeq().toString().endsWith("9") ? result.getProductSeq() + 1 : result.getProductSeq());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
MesWorkOrder copyMesWorkOrder = new MesWorkOrder();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(bean, copyMesWorkOrder);
|
|
|
|
|
|
|
|
copyMesWorkOrder.setProductSeq((long) (productSeq + 1));
|
|
|
|
|
|
|
|
copyMesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
baseRDao.insert(copyMesWorkOrder);
|
|
|
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(copyMesWorkOrder,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,copyMesWorkOrder.getQty());
|
|
|
|
|
|
|
|
//生成数量大于1
|
|
|
|
//生成数量大于1
|
|
|
|
if (generateQty > 1) {
|
|
|
|
if (generateQty > 1) {
|
|
|
|
insertBatchWorkOrder(copyMesWorkOrder, generateQty);
|
|
|
|
insertBatchWorkOrder(bean, generateQty);
|
|
|
|
}
|
|
|
|
|
|
|
|
return bean;
|
|
|
|
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.BTO.getValue()) {
|
|
|
|
|
|
|
|
Long productSeq = 0L;
|
|
|
|
|
|
|
|
if (null != result && result.getProductSeq() != null) {
|
|
|
|
|
|
|
|
productSeq = (long) Math.toIntExact(result.getProductSeq());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bean.setProductSeq(productSeq + 1);
|
|
|
|
//非排序
|
|
|
|
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ);
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(bean.getOrganizeCode()), bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
insertUnSortWorkOrder(bean, mesWorkCenter);
|
|
|
|
bean.setWorkOrderSeq(resultList.get(0));
|
|
|
|
//bto
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
insertBtoWorkOrder(bean, mesWorkCenter);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bean.setQty(bean.getQty());
|
|
|
|
|
|
|
|
bean.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(bean, bean.getCreateUser());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty());
|
|
|
|
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
|
|
|
|
return bean;
|
|
|
|
return bean;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void insertBatchWorkOrder(MesWorkOrder workOrder, Double generateQty) {
|
|
|
|
|
|
|
|
//查询数据
|
|
|
|
|
|
|
|
List<MesWorkOrderAssembly> orderAssemblyList = mesWorkOrderAssemblyService.findMesWorkOrderAssembly(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> orderPartList = mesWorkOrderPartService.findMesWorkOrderPart(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> toWmsList = mesWorkOrderToWmsService.findMesWorkOrderToWms(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesWorkOrderLog> orderLogList = workOrderLogService.findMesWorkOrderLog(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
MesProduceSn mesProduceSn = mesProduceSnService.getMesProduceSnByCustSn(workOrder.getOrganizeCode(),workOrder.getCustSn());
|
|
|
|
|
|
|
|
//数据处理
|
|
|
|
|
|
|
|
List<MesWorkOrder> newWrkOrderList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderAssembly> newOrderAssemblyList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> newOrderPartList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> newToWmsList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderLog> newOrderLogList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesProduceSn> newProduceSnList = new ArrayList<>();
|
|
|
|
|
|
|
|
MesWorkOrderAssembly newOrderAssembly = null;
|
|
|
|
|
|
|
|
MesWorkOrderPart newOrderPart = null;
|
|
|
|
|
|
|
|
MesWorkOrderToWms newOrderPartToWms = null;
|
|
|
|
|
|
|
|
MesWorkOrderLog orderLog = null;
|
|
|
|
|
|
|
|
MesProduceSn newProduceSn = null;
|
|
|
|
|
|
|
|
for (int i = 1; i < generateQty ; i++) {
|
|
|
|
|
|
|
|
//工单
|
|
|
|
|
|
|
|
MesWorkOrder newWorkOrder = new MesWorkOrder();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(workOrder,newWorkOrder,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newWorkOrder.setWorkOrderNo(getOrderNo(workOrder));
|
|
|
|
|
|
|
|
newWorkOrder.setProductSeq(workOrder.getProductSeq()+i);
|
|
|
|
|
|
|
|
newWorkOrder.setCustSn(getCustSn(workOrder.getCustPartNo(), workOrder.getOrganizeCode(),workOrder.getCreateUser()));
|
|
|
|
|
|
|
|
newWrkOrderList.add(newWorkOrder);
|
|
|
|
|
|
|
|
//工单装配件
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(orderAssemblyList)){
|
|
|
|
|
|
|
|
for (MesWorkOrderAssembly assembly : orderAssemblyList) {
|
|
|
|
|
|
|
|
newOrderAssembly = new MesWorkOrderAssembly();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(assembly,newOrderAssembly,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newOrderAssembly.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newOrderAssemblyList.add(newOrderAssembly);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//工单零件
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(orderPartList)){
|
|
|
|
|
|
|
|
for (MesWorkOrderPart part : orderPartList) {
|
|
|
|
|
|
|
|
newOrderPart = new MesWorkOrderPart();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(part,newOrderPart,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newOrderPart.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newOrderPartList.add(newOrderPart);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//工单发送给WMS数据
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(toWmsList)){
|
|
|
|
|
|
|
|
for (MesWorkOrderToWms toWms : toWmsList) {
|
|
|
|
|
|
|
|
newOrderPartToWms = new MesWorkOrderToWms();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(toWms,newOrderPartToWms,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newOrderPartToWms.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newToWmsList.add(newOrderPartToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//生产工单日志
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(orderLogList)){
|
|
|
|
|
|
|
|
for (MesWorkOrderLog mesWorkOrderLog : orderLogList) {
|
|
|
|
|
|
|
|
orderLog = new MesWorkOrderLog();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(mesWorkOrderLog,orderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
orderLog.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newOrderLogList.add(orderLog);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//产品条码表
|
|
|
|
|
|
|
|
if(!Objects.isNull(mesProduceSn)){
|
|
|
|
|
|
|
|
newProduceSn = new MesProduceSn();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(mesProduceSn,newProduceSn,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newProduceSn.setCustSn(newWorkOrder.getCustSn());
|
|
|
|
|
|
|
|
newProduceSn.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newProduceSn.setSerialNumber(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newProduceSn.setProductSn(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newProduceSnList.add(newProduceSn);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//数据持久化
|
|
|
|
|
|
|
|
baseRDao.saveAll(newWrkOrderList);
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(newOrderAssemblyList)){
|
|
|
|
|
|
|
|
mesWorkOrderAssemblyService.insertBatch(newOrderAssemblyList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(newOrderPartList)){
|
|
|
|
|
|
|
|
mesWorkOrderPartService.insertBatch(newOrderPartList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(newOrderLogList)){
|
|
|
|
|
|
|
|
workOrderLogService.insertBatch(newOrderLogList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!CollectionUtils.isEmpty(newToWmsList)){
|
|
|
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(newToWmsList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesWorkOrder update(MesWorkOrder bean) {
|
|
|
|
public MesWorkOrder update(MesWorkOrder bean) {
|
|
|
|
MesWorkOrder result = getMesWorkOrder(bean.getWorkOrderNo(),bean.getOrganizeCode());
|
|
|
|
MesWorkOrder result = getMesWorkOrder(bean.getWorkOrderNo(),bean.getOrganizeCode());
|
|
|
@ -386,7 +282,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getStartTimeEnd(), "planStartTime", packBean);
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getStartTimeEnd(), "planStartTime", packBean);
|
|
|
|
DdlPreparedPack.getStringBiggerPack(bean.getEndTimeStart(), "planEndTime", packBean);
|
|
|
|
DdlPreparedPack.getStringBiggerPack(bean.getEndTimeStart(), "planEndTime", packBean);
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean);
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean);
|
|
|
|
packBean.setOrderByStr(" order by createDatetime desc,workOrderSeq asc,workOrderNo asc ");
|
|
|
|
packBean.setOrderByStr(" order by createDatetime desc,workOrderSeq asc,productSeq asc,workOrderNo asc ");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -409,131 +305,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
protected void onInsertBean(MesWorkOrder item) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 数据校验
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPartNo(), "零件号不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setErpWorkCenter(mesWorkCenter.getErpWorkCenter());
|
|
|
|
|
|
|
|
//客户物料信息
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(item.getCustPartNo())) {
|
|
|
|
|
|
|
|
getCustomerPart(item);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验标识
|
|
|
|
|
|
|
|
//若工单类型为排序
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
|
|
|
|
|
|
|
|
if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getCustPartNo(), "客户物料号不能为空");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验产线类型和工单类型是否匹配
|
|
|
|
|
|
|
|
if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.SORT.getValue())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择排序产线", mesWorkCenter.getWorkCenterCode(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//若工单类型为排序 标识为 N E P S
|
|
|
|
|
|
|
|
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(item.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(item.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue().equals(item.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识",
|
|
|
|
|
|
|
|
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()
|
|
|
|
|
|
|
|
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验VIN号是否重复
|
|
|
|
|
|
|
|
if (!StringUtil.isEmpty(item.getVinCode())) {
|
|
|
|
|
|
|
|
//校验vin号是否重复
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean);
|
|
|
|
|
|
|
|
if (baseRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//排序工单数量为1
|
|
|
|
|
|
|
|
item.setQty(1d);
|
|
|
|
|
|
|
|
//发送工单给WMS
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> orderPartList = sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
//生成工单号
|
|
|
|
|
|
|
|
item.setWorkOrderNo(getOrderNo(item));
|
|
|
|
|
|
|
|
//生成客户条码
|
|
|
|
|
|
|
|
item.setCustSn(getCustSn(item.getCustPartNo(), item.getOrganizeCode(),item.getCreateUser()));
|
|
|
|
|
|
|
|
//生成工单零件 工单装配件
|
|
|
|
|
|
|
|
insertMesWorkOrder(item, orderPartList);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
|
|
|
|
|
|
|
|
if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("生产数量不能小于等于0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验产线类型和工单类型是否匹配
|
|
|
|
|
|
|
|
if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择非排序产线", mesWorkCenter.getWorkCenterCode(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(item.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(item.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】 标识",
|
|
|
|
|
|
|
|
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()
|
|
|
|
|
|
|
|
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
|
|
|
//非试制单
|
|
|
|
|
|
|
|
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(item.getOrderFlag())) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
|
|
|
|
|
|
|
|
//校验物料生产版本是否存在
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = checkMesProductVersion(item);
|
|
|
|
|
|
|
|
item.setErpWorkCenter(mesProductVersion.getWorkCenterCode());
|
|
|
|
|
|
|
|
//获取bom信息
|
|
|
|
|
|
|
|
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
|
|
|
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(item, bomList));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
|
|
|
|
if (Objects.isNull(item.getQty()) || item.getQty() <= 0d) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("生产数量不能小于等于0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//发送工单给WMS
|
|
|
|
|
|
|
|
sendToWms(item, mesWorkCenter, saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//生成工单号
|
|
|
|
|
|
|
|
if(StringUtil.isEmpty(item.getWorkOrderNo())){
|
|
|
|
|
|
|
|
item.setWorkOrderNo(getOrderNo(item));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//物料名称不存在,从物料信息中获取
|
|
|
|
|
|
|
|
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(item.getPartNo(), item.getOrganizeCode());
|
|
|
|
|
|
|
|
item.setPartName(mesPart.getPartName());
|
|
|
|
|
|
|
|
item.setUnit(mesPart.getUnit());
|
|
|
|
|
|
|
|
//生产时间新增取当天
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(item.getProduceTime())) {
|
|
|
|
|
|
|
|
item.setProduceTime(TimeTool.getToday());
|
|
|
|
|
|
|
|
item.setProductTime(item.getProduceTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
|
|
|
|
|
|
|
|
item.setUnCompleteQty(item.getQty());
|
|
|
|
|
|
|
|
item.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
//保存发送WMS数据
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) {
|
|
|
|
|
|
|
|
saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(item.getWorkOrderNo()));
|
|
|
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String getOrderNo(MesWorkOrder item) {
|
|
|
|
private String getOrderNo(MesWorkOrder item) {
|
|
|
|
String orderNo;
|
|
|
|
String orderNo;
|
|
|
|
if(item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()){
|
|
|
|
if(item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()){
|
|
|
@ -663,7 +434,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
Map<String, List<MesWorkOrderAssembly>> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode));
|
|
|
|
Map<String, List<MesWorkOrderAssembly>> cellCodeMap = assemblyList.stream().collect(Collectors.groupingBy(MesWorkOrderAssembly::getWorkCellCode));
|
|
|
|
for (String cellCode : cellCodeList) {
|
|
|
|
for (String cellCode : cellCodeList) {
|
|
|
|
MesQueueOrder mesQueueOrder = new MesQueueOrder();
|
|
|
|
MesQueueOrder mesQueueOrder = new MesQueueOrder();
|
|
|
|
BeanUtils.copyProperties(item,mesQueueOrder,"id");
|
|
|
|
BeanUtils.copyProperties(item,mesQueueOrder,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
mesQueueOrder.setWorkCellCode(cellCode);
|
|
|
|
mesQueueOrder.setWorkCellCode(cellCode);
|
|
|
|
mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq());
|
|
|
|
mesQueueOrder.setProcessSeq(cellCodeMap.get(cellCode).get(0).getProcessSeq());
|
|
|
|
mesQueueOrder.setSerialNumber(item.getWorkOrderNo());
|
|
|
|
mesQueueOrder.setSerialNumber(item.getWorkOrderNo());
|
|
|
@ -709,6 +480,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
item.setProductVersion(mesProductVersion.getProductVersion());
|
|
|
|
item.setProductVersion(mesProductVersion.getProductVersion());
|
|
|
|
//获取bom信息
|
|
|
|
//获取bom信息
|
|
|
|
bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
bomList = mesBomService.findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
|
|
|
item.setBomCode(bomList.iterator().next().getBomCode());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//是否自动发布
|
|
|
|
//是否自动发布
|
|
|
|
return isAuto(item, saveMesWorkOrderToWms, bomList, mesProductVersion);
|
|
|
|
return isAuto(item, saveMesWorkOrderToWms, bomList, mesProductVersion);
|
|
|
@ -718,8 +490,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
MesPartProdGroup mesPartProdGroup = null;
|
|
|
|
MesPartProdGroup mesPartProdGroup = null;
|
|
|
|
if(StringUtil.isEmpty(item.getPartProdGroupCode())){
|
|
|
|
if(StringUtil.isEmpty(item.getPartProdGroupCode())){
|
|
|
|
mesPartProdGroup = getMesPartProdGroup(item);
|
|
|
|
mesPartProdGroup = getMesPartProdGroup(item);
|
|
|
|
item.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode());
|
|
|
|
|
|
|
|
item.setPartProdGroupName(mesPartProdGroup.getPartProdGroupName());
|
|
|
|
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean);
|
|
|
|
DdlPreparedPack.getStringEqualPack(item.getPartProdGroupCode(), "partProdGroupCode", ddlPackBean);
|
|
|
@ -728,6 +498,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
MesException.throwMesBusiException("零件生产组【%s】信息不存在",item.getPartProdGroupCode());
|
|
|
|
MesException.throwMesBusiException("零件生产组【%s】信息不存在",item.getPartProdGroupCode());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setPartProdGroupCode(mesPartProdGroup.getPartProdGroupCode());
|
|
|
|
|
|
|
|
item.setPartProdGroupName(mesPartProdGroup.getPartProdGroupName());
|
|
|
|
|
|
|
|
item.setCustCode(mesPartProdGroup.getCustCode());
|
|
|
|
|
|
|
|
|
|
|
|
//自动发布
|
|
|
|
//自动发布
|
|
|
|
if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) {
|
|
|
|
if (CommonEnumUtil.VALID == mesPartProdGroup.getIsAutoRelease()) {
|
|
|
@ -894,7 +667,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
baseRDao.insert(copyMesWorkOrder);
|
|
|
|
baseRDao.insert(copyMesWorkOrder);
|
|
|
|
//保存记录
|
|
|
|
//保存记录
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
BeanUtils.copyProperties(item, workOrderLog, "id");
|
|
|
|
BeanUtils.copyProperties(item, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
mesWorkOrderLogList.add(workOrderLog);
|
|
|
|
mesWorkOrderLogList.add(workOrderLog);
|
|
|
|
|
|
|
|
|
|
|
|
// 如果工单为发布状态则新增打印队列
|
|
|
|
// 如果工单为发布状态则新增打印队列
|
|
|
@ -916,7 +689,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
index++;
|
|
|
|
index++;
|
|
|
|
//保存记录
|
|
|
|
//保存记录
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
BeanUtils.copyProperties(item, workOrderLog, "id");
|
|
|
|
BeanUtils.copyProperties(item, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
mesWorkOrderLogList.add(workOrderLog);
|
|
|
|
mesWorkOrderLogList.add(workOrderLog);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//保存发送WMS数据
|
|
|
|
//保存发送WMS数据
|
|
|
@ -1647,7 +1420,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
|
|
private List<MesWorkOrder> getMesWorkOrderList(Long[] ids, String organizeCode) {
|
|
|
|
private List<MesWorkOrder> getMesWorkOrderList(Long[] ids, String organizeCode) {
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
DdlPreparedPack.getInPackArray(ids,"id",packBean);
|
|
|
|
DdlPreparedPack.getInPackArray(ids,MesExtConstWords.ID,packBean);
|
|
|
|
List<MesWorkOrder> mesWorkOrderList = baseRDao.findByHqlWhere(packBean);
|
|
|
|
List<MesWorkOrder> mesWorkOrderList = baseRDao.findByHqlWhere(packBean);
|
|
|
|
if (CollectionUtils.isEmpty(mesWorkOrderList)) {
|
|
|
|
if (CollectionUtils.isEmpty(mesWorkOrderList)) {
|
|
|
|
MesException.throwMesBusiException("选择工单信息不存在");
|
|
|
|
MesException.throwMesBusiException("选择工单信息不存在");
|
|
|
@ -1827,7 +1600,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
private MesProductOffLine getMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
|
|
|
|
private MesProductOffLine getMesProductOffLine(MesWorkOrder mesWorkOrder, MesProductVersion mesProductVersion,
|
|
|
|
String sn, MesBom mesBom,Double itemQty, boolean isItemReport,String nowTime) {
|
|
|
|
String sn, MesBom mesBom,Double itemQty, boolean isItemReport,String nowTime) {
|
|
|
|
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
|
|
|
|
MesProductOffLine newMesProductOffLine = new MesProductOffLine();
|
|
|
|
BeanUtils.copyProperties(mesBom, newMesProductOffLine, "id","systemSyncStatus");
|
|
|
|
BeanUtils.copyProperties(mesBom, newMesProductOffLine,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
newMesProductOffLine.setReportPartNo(mesBom.getPartNo());
|
|
|
|
newMesProductOffLine.setReportPartNo(mesBom.getPartNo());
|
|
|
|
newMesProductOffLine.setReportPartNameRdd(mesBom.getPartName());
|
|
|
|
newMesProductOffLine.setReportPartNameRdd(mesBom.getPartName());
|
|
|
|
newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
|
|
|
|
newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
|
|
|
@ -2051,13 +1824,171 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
return mesWorkOrderList;
|
|
|
|
return mesWorkOrderList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void insertSortWorkOrderNo(MesWorkOrder bean, MesWorkCenter mesWorkCenter) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getOrderFlag(), "标识不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getCustPartNo(), "客户物料号不能为空");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验产线类型和工单类型是否匹配
|
|
|
|
|
|
|
|
if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.SORT.getValue())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择排序产线", mesWorkCenter.getWorkCenterCode(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//若工单类型为排序 标识为 N E P S
|
|
|
|
|
|
|
|
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(bean.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(bean.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue().equals(bean.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识",
|
|
|
|
|
|
|
|
bean.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()
|
|
|
|
|
|
|
|
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验VIN号是否重复
|
|
|
|
|
|
|
|
if (!StringUtil.isEmpty(bean.getVinCode())) {
|
|
|
|
|
|
|
|
//校验vin号是否重复
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getVinCode(), "vinCode", ddlPackBean);
|
|
|
|
|
|
|
|
if (baseRDao.isExitByHql(ddlPackBean)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("vin号【%s】重复", bean.getVinCode());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
|
|
|
|
|
|
|
|
//排序工单数量为1
|
|
|
|
|
|
|
|
bean.setQty(1d);
|
|
|
|
|
|
|
|
//生成工单号
|
|
|
|
|
|
|
|
bean.setWorkOrderNo(getOrderNo(bean));
|
|
|
|
|
|
|
|
//发送工单给WMS
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> orderPartList = sendToWms(bean, mesWorkCenter, saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
//顺序号
|
|
|
|
|
|
|
|
bean.setProductSeq(getMaxMesWorkOrderProductSeq(bean));
|
|
|
|
|
|
|
|
//生成客户条码
|
|
|
|
|
|
|
|
bean.setCustSn(getCustSn(bean.getCustPartNo(), bean.getOrganizeCode(), bean.getCreateUser()));
|
|
|
|
|
|
|
|
//生成工单零件 工单装配件
|
|
|
|
|
|
|
|
insertMesWorkOrder(bean, orderPartList);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//物料名称不存在,从物料信息中获取
|
|
|
|
|
|
|
|
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode());
|
|
|
|
|
|
|
|
bean.setPartName(mesPart.getPartName());
|
|
|
|
|
|
|
|
bean.setUnit(mesPart.getUnit());
|
|
|
|
|
|
|
|
//生产时间新增取当天
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(bean.getProduceTime())) {
|
|
|
|
|
|
|
|
bean.setProduceTime(TimeTool.getToday());
|
|
|
|
|
|
|
|
bean.setProductTime(bean.getProduceTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bean.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
|
|
|
|
|
|
|
|
bean.setUnCompleteQty(bean.getQty());
|
|
|
|
|
|
|
|
bean.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
//保存发送WMS数据
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) {
|
|
|
|
|
|
|
|
saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(bean.getWorkOrderNo()));
|
|
|
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
baseRDao.insert(bean);
|
|
|
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void insertUnSortWorkOrder(MesWorkOrder bean, MesWorkCenter mesWorkCenter) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getOrderFlag(), "标识不能为空");
|
|
|
|
|
|
|
|
if (Objects.isNull(bean.getQty()) || bean.getQty() <= 0d) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("生产数量不能小于等于0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//校验产线类型和工单类型是否匹配
|
|
|
|
|
|
|
|
if (!Objects.equals(mesWorkCenter.getCenterType(), MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("产线【%s】类型为【%s】,请选择非排序产线", mesWorkCenter.getWorkCenterCode(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.WORK_CENTER_TYPE.valueOfDescription(mesWorkCenter.getCenterType()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue().equals(bean.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue().equals(bean.getOrderFlag()) &&
|
|
|
|
|
|
|
|
!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】 标识",
|
|
|
|
|
|
|
|
bean.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue()
|
|
|
|
|
|
|
|
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue(),
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bean.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
|
|
|
|
|
|
|
|
//非试制单
|
|
|
|
|
|
|
|
if (!MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue().equals(bean.getOrderFlag())) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getProductVersion(), "生产版本不能为空");
|
|
|
|
|
|
|
|
//校验物料生产版本是否存在
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = checkMesProductVersion(bean);
|
|
|
|
|
|
|
|
bean.setErpWorkCenter(mesProductVersion.getWorkCenterCode());
|
|
|
|
|
|
|
|
//获取bom信息
|
|
|
|
|
|
|
|
List<MesBom> bomList = mesBomService.findMesBomByPartNoAndBomVersion(bean.getPartNo(), bean.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
|
|
|
saveMesWorkOrderToWms.addAll(mesWorkOrderToWmsService.saveMesWorkOrderToWms(bean, bomList));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//物料名称不存在,从物料信息中获取
|
|
|
|
|
|
|
|
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode());
|
|
|
|
|
|
|
|
bean.setPartName(mesPart.getPartName());
|
|
|
|
|
|
|
|
bean.setUnit(mesPart.getUnit());
|
|
|
|
|
|
|
|
//生产时间新增取当天
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(bean.getProduceTime())) {
|
|
|
|
|
|
|
|
bean.setProduceTime(TimeTool.getToday());
|
|
|
|
|
|
|
|
bean.setProductTime(bean.getProduceTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bean.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
|
|
|
|
|
|
|
|
bean.setUnCompleteQty(bean.getQty());
|
|
|
|
|
|
|
|
bean.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
bean.setWorkOrderNo(getOrderNo(bean));
|
|
|
|
|
|
|
|
//保存发送WMS数据
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) {
|
|
|
|
|
|
|
|
saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(bean.getWorkOrderNo()));
|
|
|
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
baseRDao.insert(bean);
|
|
|
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void insertBtoWorkOrder(MesWorkOrder bean, MesWorkCenter mesWorkCenter) {
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getPlanStartTime(), "计划开始时间不能为空");
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(bean.getPlanEndTime(), "计划结束时间不能为空");
|
|
|
|
|
|
|
|
if (Objects.isNull(bean.getQty()) || bean.getQty() <= 0d) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("生产数量不能小于等于0");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
|
|
|
|
|
|
|
|
//顺序号
|
|
|
|
|
|
|
|
bean.setProductSeq(getMaxMesWorkOrderProductSeq(bean));
|
|
|
|
|
|
|
|
//生成工单号
|
|
|
|
|
|
|
|
bean.setWorkOrderNo(getOrderNo(bean));
|
|
|
|
|
|
|
|
//发送工单给WMS
|
|
|
|
|
|
|
|
sendToWms(bean, mesWorkCenter, saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
//物料名称不存在,从物料信息中获取
|
|
|
|
|
|
|
|
MesPartSap mesPart = iMesPartSapService.getMesPartSapByPartNo(bean.getPartNo(), bean.getOrganizeCode());
|
|
|
|
|
|
|
|
bean.setPartName(mesPart.getPartName());
|
|
|
|
|
|
|
|
bean.setUnit(mesPart.getUnit());
|
|
|
|
|
|
|
|
//生产时间新增取当天
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(bean.getProduceTime())) {
|
|
|
|
|
|
|
|
bean.setProduceTime(TimeTool.getToday());
|
|
|
|
|
|
|
|
bean.setProductTime(bean.getProduceTime());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
bean.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
|
|
|
|
|
|
|
|
bean.setUnCompleteQty(bean.getQty());
|
|
|
|
|
|
|
|
bean.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
//保存发送WMS数据
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(saveMesWorkOrderToWms)) {
|
|
|
|
|
|
|
|
saveMesWorkOrderToWms.forEach(t->t.setWorkOrderNo(bean.getWorkOrderNo()));
|
|
|
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(saveMesWorkOrderToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//生成WorkOrderSeq
|
|
|
|
|
|
|
|
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ);
|
|
|
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel.organizeCode(bean.getOrganizeCode()), bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
|
|
|
bean.setWorkOrderSeq(resultList.get(0));
|
|
|
|
|
|
|
|
baseRDao.insert(bean);
|
|
|
|
|
|
|
|
workOrderLogService.saveMesWorkOrderLog(bean,MesExtEnumUtil.WORK_ORDER_LOG_TYPE.INSERT,bean.getQty());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<MesWorkOrderToWms> saveMesWorkOrderToWms(MesWorkOrder mesWorkOrder, List<MesBom> mesBomList) {
|
|
|
|
public List<MesWorkOrderToWms> saveMesWorkOrderToWms(MesWorkOrder mesWorkOrder, List<MesBom> mesBomList) {
|
|
|
|
List<MesWorkOrderToWms> mesWorkOrderToWmsList = new ArrayList<>();
|
|
|
|
List<MesWorkOrderToWms> mesWorkOrderToWmsList = new ArrayList<>();
|
|
|
|
MesWorkOrderToWms mesWorkOrderToWms = null;
|
|
|
|
MesWorkOrderToWms mesWorkOrderToWms = null;
|
|
|
|
for (MesBom mesBom : mesBomList) {
|
|
|
|
for (MesBom mesBom : mesBomList) {
|
|
|
|
mesWorkOrderToWms = new MesWorkOrderToWms();
|
|
|
|
mesWorkOrderToWms = new MesWorkOrderToWms();
|
|
|
|
BeanUtils.copyProperties(mesWorkOrder, mesWorkOrderToWms, "id");
|
|
|
|
BeanUtils.copyProperties(mesWorkOrder, mesWorkOrderToWms,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
mesWorkOrderToWms.setUnit(mesBom.getUnit());
|
|
|
|
mesWorkOrderToWms.setUnit(mesBom.getUnit());
|
|
|
|
mesWorkOrderToWms.setItemPartNo(mesBom.getItemPartNo());
|
|
|
|
mesWorkOrderToWms.setItemPartNo(mesBom.getItemPartNo());
|
|
|
|
mesWorkOrderToWms.setItemPartName(mesBom.getItemPartName());
|
|
|
|
mesWorkOrderToWms.setItemPartName(mesBom.getItemPartName());
|
|
|
@ -2142,7 +2073,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) {
|
|
|
|
public void saveMesWorkOrderLog(MesWorkOrder mesWorkOrder) {
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
BeanUtils.copyProperties(mesWorkOrder, workOrderLog, "id");
|
|
|
|
BeanUtils.copyProperties(mesWorkOrder, workOrderLog,MesExtConstWords.ID,MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
mesWorkOrderLogRepository.insert(workOrderLog);
|
|
|
|
mesWorkOrderLogRepository.insert(workOrderLog);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public List<MesBom> findBomList(String organizeCode, MesPart mesPart, String bomVersion) {
|
|
|
|
public List<MesBom> findBomList(String organizeCode, MesPart mesPart, String bomVersion) {
|
|
|
@ -2469,4 +2400,156 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
return workOrderAssemblyList;
|
|
|
|
return workOrderAssemblyList;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void insertBatchWorkOrder(MesWorkOrder workOrder, Double generateQty) {
|
|
|
|
|
|
|
|
//查询数据
|
|
|
|
|
|
|
|
List<MesWorkOrderAssembly> orderAssemblyList = mesWorkOrderAssemblyService.findMesWorkOrderAssembly(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> orderPartList = mesWorkOrderPartService.findMesWorkOrderPart(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> toWmsList = mesWorkOrderToWmsService.findMesWorkOrderToWms(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesWorkOrderLog> orderLogList = workOrderLogService.findMesWorkOrderLog(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
List<MesQueueOrder> queueOrderList = findMesQueueOrder(workOrder.getWorkOrderNo(), workOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
MesProduceSn mesProduceSn = mesProduceSnService.getMesProduceSnByCustSn(workOrder.getOrganizeCode(), workOrder.getCustSn());
|
|
|
|
|
|
|
|
MesPrintQueue printQueue = getMesPrintQuanOrder(workOrder.getOrganizeCode(), workOrder.getCustSn());
|
|
|
|
|
|
|
|
//数据处理
|
|
|
|
|
|
|
|
List<MesWorkOrder> newWrkOrderList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderAssembly> newOrderAssemblyList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderPart> newOrderPartList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderToWms> newToWmsList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderLog> newOrderLogList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesProduceSn> newProduceSnList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesQueueOrder> newQueueOrderList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesPrintQueue> newPrintQueueList = new ArrayList<>();
|
|
|
|
|
|
|
|
MesWorkOrderAssembly newOrderAssembly = null;
|
|
|
|
|
|
|
|
MesWorkOrderPart newOrderPart = null;
|
|
|
|
|
|
|
|
MesWorkOrderToWms newOrderPartToWms = null;
|
|
|
|
|
|
|
|
MesWorkOrderLog orderLog = null;
|
|
|
|
|
|
|
|
MesProduceSn newProduceSn = null;
|
|
|
|
|
|
|
|
MesQueueOrder newQueueOrder = null;
|
|
|
|
|
|
|
|
MesPrintQueue newPrintQueue = null;
|
|
|
|
|
|
|
|
for (int i = 1; i < generateQty; i++) {
|
|
|
|
|
|
|
|
//工单
|
|
|
|
|
|
|
|
MesWorkOrder newWorkOrder = new MesWorkOrder();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(workOrder, newWorkOrder, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newWorkOrder.setWorkOrderNo(getOrderNo(newWorkOrder));
|
|
|
|
|
|
|
|
newWorkOrder.setProductSeq(newWorkOrder.getProductSeq() + i);
|
|
|
|
|
|
|
|
newWorkOrder.setCustSn(getCustSn(workOrder.getCustPartNo(), workOrder.getOrganizeCode(), workOrder.getCreateUser()));
|
|
|
|
|
|
|
|
newWorkOrder.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
newWrkOrderList.add(newWorkOrder);
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
//工单装配件
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(orderAssemblyList)) {
|
|
|
|
|
|
|
|
for (MesWorkOrderAssembly assembly : orderAssemblyList) {
|
|
|
|
|
|
|
|
newOrderAssembly = new MesWorkOrderAssembly();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(assembly, newOrderAssembly, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newOrderAssembly.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newOrderAssembly.setProductSn(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newOrderAssemblyList.add(newOrderAssembly);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//工单零件
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(orderPartList)) {
|
|
|
|
|
|
|
|
for (MesWorkOrderPart part : orderPartList) {
|
|
|
|
|
|
|
|
newOrderPart = new MesWorkOrderPart();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(part, newOrderPart, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newOrderPart.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newOrderPartList.add(newOrderPart);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//工单发送给WMS数据
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(toWmsList)) {
|
|
|
|
|
|
|
|
for (MesWorkOrderToWms toWms : toWmsList) {
|
|
|
|
|
|
|
|
newOrderPartToWms = new MesWorkOrderToWms();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(toWms, newOrderPartToWms, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newOrderPartToWms.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newToWmsList.add(newOrderPartToWms);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//生产工单日志
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(orderLogList)) {
|
|
|
|
|
|
|
|
for (MesWorkOrderLog mesWorkOrderLog : orderLogList) {
|
|
|
|
|
|
|
|
orderLog = new MesWorkOrderLog();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(mesWorkOrderLog, orderLog, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
orderLog.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
orderLog.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
newOrderLogList.add(orderLog);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//生产队列主表
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(queueOrderList)) {
|
|
|
|
|
|
|
|
for (MesQueueOrder queueOrder : queueOrderList) {
|
|
|
|
|
|
|
|
newQueueOrder = new MesQueueOrder();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(queueOrder, newQueueOrder, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newQueueOrder.setCustSn(newWorkOrder.getCustSn());
|
|
|
|
|
|
|
|
newQueueOrder.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newQueueOrder.setSerialNumber(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newQueueOrder.setProductSn(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newQueueOrder.setProductSeq(newWorkOrder.getProductSeq());
|
|
|
|
|
|
|
|
newQueueOrderList.add(newQueueOrder);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//产品条码表
|
|
|
|
|
|
|
|
if (!Objects.isNull(mesProduceSn)) {
|
|
|
|
|
|
|
|
newProduceSn = new MesProduceSn();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(mesProduceSn, newProduceSn, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newProduceSn.setCustSn(newWorkOrder.getCustSn());
|
|
|
|
|
|
|
|
newProduceSn.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newProduceSn.setSerialNumber(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newProduceSn.setProductSn(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newProduceSn.setFid(UUID.randomUUID().toString());
|
|
|
|
|
|
|
|
newProduceSnList.add(newProduceSn);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//装配目视单打印
|
|
|
|
|
|
|
|
if (!Objects.isNull(printQueue)) {
|
|
|
|
|
|
|
|
newPrintQueue = new MesPrintQueue();
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(printQueue, newPrintQueue, MesExtConstWords.ID, MesExtConstWords.SYSTEM_SYNC_STATUS);
|
|
|
|
|
|
|
|
newPrintQueue.setWorkOrderNo(newWorkOrder.getWorkOrderNo());
|
|
|
|
|
|
|
|
newPrintQueueList.add(newPrintQueue);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//数据持久化
|
|
|
|
|
|
|
|
baseRDao.saveAll(newWrkOrderList);
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newOrderAssemblyList)) {
|
|
|
|
|
|
|
|
mesWorkOrderAssemblyService.insertBatch(newOrderAssemblyList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newOrderPartList)) {
|
|
|
|
|
|
|
|
mesWorkOrderPartService.insertBatch(newOrderPartList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newOrderLogList)) {
|
|
|
|
|
|
|
|
workOrderLogService.insertBatch(newOrderLogList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newToWmsList)) {
|
|
|
|
|
|
|
|
mesWorkOrderToWmsService.insertBatch(newToWmsList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newQueueOrderList)) {
|
|
|
|
|
|
|
|
queueOrderRao.saveAll(newQueueOrderList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newProduceSnList)) {
|
|
|
|
|
|
|
|
mesProduceSnService.insertBatch(newProduceSnList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(newPrintQueueList)) {
|
|
|
|
|
|
|
|
printQueueRepository.saveAll(newPrintQueueList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public List<MesQueueOrder> findMesQueueOrder(String workOrderNo, String organizeCode) {
|
|
|
|
|
|
|
|
if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null;
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean);
|
|
|
|
|
|
|
|
return queueOrderRao.findByHqlWhere(packBean);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MesPrintQueue getMesPrintQuanOrder(String workOrderNo, String organizeCode) {
|
|
|
|
|
|
|
|
if(StringUtil.isEmpty(workOrderNo) || StringUtil.isEmpty(organizeCode)) return null;
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workOrderNo, "workOrderNo", packBean);
|
|
|
|
|
|
|
|
return printQueueRepository.getByProperty(packBean);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Long getMaxMesWorkOrderProductSeq(MesWorkOrder bean) {
|
|
|
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), "workOrderType", orderPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"productSeq"}, orderPackBean);
|
|
|
|
|
|
|
|
MesWorkOrder workOrder = baseRDao.getByProperty(orderPackBean);
|
|
|
|
|
|
|
|
return (long) (Objects.isNull(workOrder) || StringUtils.isEmpty(workOrder.getProductSeq()) ? 0d : Math.toIntExact(workOrder.getProductSeq().toString().endsWith("9") ? workOrder.getProductSeq() + 2 : workOrder.getProductSeq()+1));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|