|
|
@ -1,26 +1,35 @@
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesPartService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesProductOffLineService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
|
|
|
|
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
|
|
|
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.MathOperation;
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
|
|
|
|
import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.*;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesBomRepository;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository;
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
@Service
|
|
|
|
@Slf4j
|
|
|
|
@Slf4j
|
|
|
@ -29,6 +38,16 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
private MesWorkOrderLogService workOrderLogService;
|
|
|
|
private MesWorkOrderLogService workOrderLogService;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private ISyncFuncService syncFuncService;
|
|
|
|
private ISyncFuncService syncFuncService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesWorkOrderToSapService iMesWorkOrderToSapService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesPartService iMesPartService;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesProductVersionRepository mesProductVersionRDao;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private MesBomRepository mesBomRDao;
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesProductOffLineService mesProductOffLineService;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
@ -46,35 +65,32 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel();
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel();
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integer produceSeq = 0;
|
|
|
|
Integer produceSeq = 0;
|
|
|
|
if (result.getProduceSeq() != null) {
|
|
|
|
if (null != result && result.getProduceSeq() != null) {
|
|
|
|
produceSeq = result.getProduceSeq();
|
|
|
|
produceSeq = result.getProduceSeq();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
List<MesWorkOrder> sortWorkOrderList = new ArrayList<>();
|
|
|
|
|
|
|
|
List<MesWorkOrderLog> orderLogList = new ArrayList<>();
|
|
|
|
List<MesWorkOrderLog> orderLogList = new ArrayList<>();
|
|
|
|
for (int i = 0; i < bean.getSortInsertOrderQty(); i++) {
|
|
|
|
|
|
|
|
//生成工单号
|
|
|
|
//生成工单号
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_SORT");
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_SORT");
|
|
|
|
genSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
genSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrder copyMesWorkOrder = new MesWorkOrder();
|
|
|
|
MesWorkOrder copyMesWorkOrder = new MesWorkOrder();
|
|
|
|
BeanUtils.copyProperties(bean, copyMesWorkOrder);
|
|
|
|
BeanUtils.copyProperties(bean, copyMesWorkOrder);
|
|
|
|
copyMesWorkOrder.setProduceSeq(produceSeq + i + 1);
|
|
|
|
copyMesWorkOrder.setProduceSeq(produceSeq + 1);
|
|
|
|
copyMesWorkOrder.setQty(1D);
|
|
|
|
copyMesWorkOrder.setQty(1D);
|
|
|
|
copyMesWorkOrder.setOrderNo(resultList.get(0));
|
|
|
|
copyMesWorkOrder.setOrderNo(resultList.get(0));
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, AuthUtil.getSessionUser().getUserName());
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser());
|
|
|
|
sortWorkOrderList.add(copyMesWorkOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
BeanUtils.copyProperties(copyMesWorkOrder, workOrderLog, "id");
|
|
|
|
BeanUtils.copyProperties(copyMesWorkOrder, workOrderLog, "id");
|
|
|
|
orderLogList.add(workOrderLog);
|
|
|
|
orderLogList.add(workOrderLog);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
baseRDao.insert(copyMesWorkOrder);
|
|
|
|
insertBatch(sortWorkOrderList);
|
|
|
|
|
|
|
|
workOrderLogService.insertBatch(orderLogList);
|
|
|
|
workOrderLogService.insertBatch(orderLogList);
|
|
|
|
|
|
|
|
//写入接口表
|
|
|
|
|
|
|
|
iMesWorkOrderToSapService.insert(bean);
|
|
|
|
return bean;
|
|
|
|
return bean;
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
//生成工单号
|
|
|
|
//生成工单号
|
|
|
@ -83,50 +99,82 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
//生成工单号
|
|
|
|
//生成工单号
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO");
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO");
|
|
|
|
Integer produceSeq = 0;
|
|
|
|
Integer produceSeq = 0;
|
|
|
|
if (result.getProduceSeq() != null) {
|
|
|
|
if (null != result && result.getProduceSeq() != null) {
|
|
|
|
produceSeq = result.getProduceSeq();
|
|
|
|
produceSeq = result.getProduceSeq();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
bean.setProduceSeq(produceSeq + 1);
|
|
|
|
bean.setProduceSeq(produceSeq + 1);
|
|
|
|
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO_SEQ");
|
|
|
|
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO_SEQ");
|
|
|
|
orderSeqSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
orderSeqSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
bean.setOrderSeq(Integer.parseInt(resultList.get(0)));
|
|
|
|
bean.setOrderSeq(Integer.parseInt(resultList.get(0)));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
genSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
genSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
bean.setOrderNo(resultList.get(0));
|
|
|
|
bean.setOrderNo(resultList.get(0));
|
|
|
|
bean.setQty(bean.getSortInsertOrderQty().doubleValue());
|
|
|
|
bean.setQty(bean.getQty());
|
|
|
|
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
ConvertBean.serviceModelInitialize(bean, bean.getCreateUser());
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
BeanUtils.copyProperties(bean, workOrderLog, "id");
|
|
|
|
BeanUtils.copyProperties(bean, workOrderLog, "id");
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
|
|
|
|
//写入接口表
|
|
|
|
|
|
|
|
iMesWorkOrderToSapService.insert(bean);
|
|
|
|
return bean;
|
|
|
|
return bean;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public MesWorkOrder update(MesWorkOrder bean) {
|
|
|
|
public MesWorkOrder update(MesWorkOrder bean) {
|
|
|
|
//插入前构造数据
|
|
|
|
//回传sap
|
|
|
|
onInsertBean(bean);
|
|
|
|
boolean sendToSap = false;
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrder result = baseRDao.getById(bean.getId());
|
|
|
|
MesWorkOrder result = baseRDao.getById(bean.getId());
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
if (result.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
if (result.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
if (!Objects.equals(bean.getQty(), result.getQty())) {
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
MesException.throwMesBusiException(String.format("工单类型为【%s】 不需要修改数量",
|
|
|
|
.setErrorDetail(String.format("工单类型为【%s】 不需要修改数量", MesExtEnumUtil.ORDER_TYPE.SORT.getValue()))
|
|
|
|
MesExtEnumUtil.ORDER_TYPE.SORT.getDescription()));
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
}
|
|
|
|
.build();
|
|
|
|
} else {
|
|
|
|
|
|
|
|
//工单数量只能比原来的大
|
|
|
|
|
|
|
|
if (bean.getQty() < result.getQty()) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单数量不能小于工单源数量【%s】",
|
|
|
|
|
|
|
|
result.getQty()));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//修改状态或者指令下发需要传给SAP
|
|
|
|
|
|
|
|
if (!Objects.equals(bean.getQty(), result.getQty())) {
|
|
|
|
|
|
|
|
sendToSap = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus() ||
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue() == bean.getWorkOrderStatus()) {
|
|
|
|
|
|
|
|
sendToSap = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//在加工的工单不能修改物料信息
|
|
|
|
|
|
|
|
if (result.getWorkOrderStatus() >= MesExtEnumUtil.ORDER_STATUS.process.getValue()) {
|
|
|
|
|
|
|
|
if (!Objects.equals(bean.getPartNo(), result.getPartNo())) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException(String.format("工单状态为【%s】不允许修改物料",
|
|
|
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE.valueOfDescription(result.getWorkOrderStatus())));
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
result.setQty(bean.getSortInsertOrderQty().doubleValue());
|
|
|
|
result.setQty(bean.getQty());
|
|
|
|
|
|
|
|
result.setWorkOrderStatus(bean.getWorkOrderStatus());
|
|
|
|
ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
BeanUtils.copyProperties(result, workOrderLog, "id");
|
|
|
|
BeanUtils.copyProperties(result, workOrderLog, "id");
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
|
|
|
//关闭工单
|
|
|
|
|
|
|
|
if (MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue() == bean.getWorkOrderStatus()) {
|
|
|
|
|
|
|
|
bean.setQty(0d);
|
|
|
|
|
|
|
|
sendToSap = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//发送给SAP
|
|
|
|
|
|
|
|
if (sendToSap) {
|
|
|
|
|
|
|
|
iMesWorkOrderToSapService.insert(bean);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
baseRDao.update(result);
|
|
|
|
baseRDao.update(result);
|
|
|
|
return bean;
|
|
|
|
return bean;
|
|
|
@ -134,6 +182,19 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected void setPackQueryBean(MesWorkOrder bean, DdlPackBean packBean) {
|
|
|
|
protected void setPackQueryBean(MesWorkOrder bean, DdlPackBean packBean) {
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(bean.getOrderNo(), "orderNo", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(bean.getPartNameRdd(), "partNameRdd", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "partNo", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getCustPartNo(), "custPartNo", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderType(), "workOrderType", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(bean.getCreateDateTimeStart(), "createDatetime", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getCreateDateTimeEnd(), "createDatetime", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(bean.getStartTimeStart(), "planStartTime", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getStartTimeEnd(), "planStartTime", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringBiggerPack(bean.getEndTimeStart(), "planEndTime", packBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected void onInsertBean(MesWorkOrder item) {
|
|
|
|
protected void onInsertBean(MesWorkOrder item) {
|
|
|
@ -142,7 +203,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
|
|
|
|
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
|
|
|
|
//ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
|
|
|
|
|
|
|
|
|
|
|
|
//校验标识
|
|
|
|
//校验标识
|
|
|
|
//若工单类型为排序
|
|
|
|
//若工单类型为排序
|
|
|
@ -177,10 +238,76 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
.build();
|
|
|
|
.build();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//物料名称不存在,从物料信息中获取
|
|
|
|
|
|
|
|
if (StringUtil.isEmpty(item.getPartNameRdd())) {
|
|
|
|
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(item.getPartNo(), item.getOrganizeCode());
|
|
|
|
|
|
|
|
item.setPartNameRdd(mesPart.getPartName());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
protected void onUpdateBean(MesWorkOrder item) {
|
|
|
|
protected void onUpdateBean(MesWorkOrder item) {
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder) {
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
|
|
|
|
MesPart mesPart = iMesPartService.getPartByPartNo(mesWorkOrder.getPartNo(), mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
//获取生产版本
|
|
|
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
|
|
|
|
if (null == mesProductVersion) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本信息不存在", mesWorkOrder.getPartNo());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductVersion.getProductVersion(), "bomVersion", ddlPackBean);
|
|
|
|
|
|
|
|
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
|
|
|
|
|
MesException.throwMesBusiException("物料【%s】生产版本【%s】对应bom信息不存在",
|
|
|
|
|
|
|
|
mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//更新工单状态
|
|
|
|
|
|
|
|
mesWorkOrder.setCompleteQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty()));
|
|
|
|
|
|
|
|
if (mesWorkOrder.getCompleteQty() >= mesWorkOrder.getQty()) {
|
|
|
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
update(mesWorkOrder);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//生成条码
|
|
|
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("REPORT_SN");
|
|
|
|
|
|
|
|
genSerialNoModel.setPartNo(mesWorkOrder.getPartNo());
|
|
|
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList();
|
|
|
|
|
|
|
|
//保存数据
|
|
|
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
|
|
|
|
for (String sn : resultList) {
|
|
|
|
|
|
|
|
for (MesBom mesBom : mesBoms) {
|
|
|
|
|
|
|
|
newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
|
|
|
newMesProductOffLine.setReportPartNo(mesWorkOrder.getPartNo());
|
|
|
|
|
|
|
|
newMesProductOffLine.setReportPartNameRdd(mesWorkOrder.getPartNameRdd());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemPartNameRdd(mesBom.getItemPartName());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemQty(mesBom.getItemQty());
|
|
|
|
|
|
|
|
newMesProductOffLine.setQty(1d);
|
|
|
|
|
|
|
|
newMesProductOffLine.setReportSn(sn);
|
|
|
|
|
|
|
|
newMesProductOffLine.setBomVersion(mesBom.getBomVersion());
|
|
|
|
|
|
|
|
newMesProductOffLine.setSerialNumber(sn);
|
|
|
|
|
|
|
|
newMesProductOffLine.setUnit(mesBom.getUnit());
|
|
|
|
|
|
|
|
newMesProductOffLine.setItemUnit(mesBom.getItemUnit());
|
|
|
|
|
|
|
|
newMesProductOffLine.setWorkOrderNo(mesWorkOrder.getOrderNo());
|
|
|
|
|
|
|
|
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
|
|
|
|
|
|
|
|
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
|
|
|
|
|
|
|
|
mesProductOffLineList.add(newMesProductOffLine);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
mesProductOffLineService.insertBatch(mesProductOffLineList);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|