|
|
|
@ -2,14 +2,18 @@ package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
|
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrderLog;
|
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
|
|
|
|
|
import cn.estsh.impp.framework.boot.auth.AuthUtil;
|
|
|
|
|
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
|
|
|
|
|
import cn.estsh.impp.framework.boot.util.ValidatorBean;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
@ -23,20 +27,44 @@ import java.util.List;
|
|
|
|
|
public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements IMesWorkOrderService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesWorkOrderLogService workOrderLogService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ISyncFuncService syncFuncService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public MesWorkOrder insert(MesWorkOrder bean) {
|
|
|
|
|
//插入前构造数据
|
|
|
|
|
onInsertBean(bean);
|
|
|
|
|
|
|
|
|
|
//获取相同类型 相同标识 生产序号最大值的
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getWorkOrderStatus(), "workOrderStatus", orderPackBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(bean.getOrderFlag(), "orderFlag", orderPackBean);
|
|
|
|
|
DdlPreparedPack.getOrderByPack(new Object[]{CommonEnumUtil.ASC_OR_DESC.DESC.getValue()}, new String[]{"produceSeq"}, orderPackBean);
|
|
|
|
|
MesWorkOrder result = baseRDao.getByProperty(orderPackBean);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel();
|
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Integer produceSeq = 0;
|
|
|
|
|
if (result.getProduceSeq() != null) {
|
|
|
|
|
produceSeq = result.getProduceSeq();
|
|
|
|
|
}
|
|
|
|
|
List<MesWorkOrder> sortWorkOrderList = new ArrayList<>();
|
|
|
|
|
List<MesWorkOrderLog> orderLogList = new ArrayList<>();
|
|
|
|
|
for (int i = 0; i < bean.getSortInsertOrderQty(); i++) {
|
|
|
|
|
//生成工单号
|
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_SORT");
|
|
|
|
|
genSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
|
|
|
|
|
MesWorkOrder copyMesWorkOrder = new MesWorkOrder();
|
|
|
|
|
BeanUtils.copyProperties(bean, copyMesWorkOrder);
|
|
|
|
|
copyMesWorkOrder.setProduceSeq(produceSeq + i + 1);
|
|
|
|
|
copyMesWorkOrder.setQty(1D);
|
|
|
|
|
copyMesWorkOrder.setOrderNo(resultList.get(0));
|
|
|
|
|
ConvertBean.serviceModelInitialize(copyMesWorkOrder, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
sortWorkOrderList.add(copyMesWorkOrder);
|
|
|
|
|
|
|
|
|
@ -47,9 +75,28 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
}
|
|
|
|
|
insertBatch(sortWorkOrderList);
|
|
|
|
|
workOrderLogService.insertBatch(orderLogList);
|
|
|
|
|
return bean;
|
|
|
|
|
} else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
|
//生成工单号
|
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_UN_SORT");
|
|
|
|
|
} else {
|
|
|
|
|
//生成工单号
|
|
|
|
|
genSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO");
|
|
|
|
|
Integer produceSeq = 0;
|
|
|
|
|
if (result.getProduceSeq() != null) {
|
|
|
|
|
produceSeq = result.getProduceSeq();
|
|
|
|
|
}
|
|
|
|
|
bean.setProduceSeq(produceSeq + 1);
|
|
|
|
|
GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO_SEQ");
|
|
|
|
|
orderSeqSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
bean.setOrderSeq(Integer.parseInt(resultList.get(0)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
genSerialNoModel.setPartNo(bean.getPartNo());
|
|
|
|
|
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList();
|
|
|
|
|
bean.setOrderNo(resultList.get(0));
|
|
|
|
|
bean.setQty(bean.getSortInsertOrderQty().doubleValue());
|
|
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
@ -64,8 +111,9 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
//插入前构造数据
|
|
|
|
|
onInsertBean(bean);
|
|
|
|
|
|
|
|
|
|
MesWorkOrder result = baseRDao.getById(bean.getId());
|
|
|
|
|
//若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1
|
|
|
|
|
if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
|
if (result.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
|
.setErrorDetail(String.format("工单类型为【%s】 不需要修改数量", MesExtEnumUtil.ORDER_TYPE.SORT.getValue()))
|
|
|
|
@ -73,14 +121,14 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bean.setQty(bean.getSortInsertOrderQty().doubleValue());
|
|
|
|
|
result.setQty(bean.getSortInsertOrderQty().doubleValue());
|
|
|
|
|
ConvertBean.serviceModelInitialize(bean, AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
|
|
|
|
|
MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
|
|
|
|
|
BeanUtils.copyProperties(bean, workOrderLog, "id");
|
|
|
|
|
BeanUtils.copyProperties(result, workOrderLog, "id");
|
|
|
|
|
workOrderLogService.insert(workOrderLog);
|
|
|
|
|
|
|
|
|
|
bean = baseRDao.insert(bean);
|
|
|
|
|
baseRDao.update(result);
|
|
|
|
|
return bean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -90,6 +138,45 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
|
|
|
|
|
protected void onInsertBean(MesWorkOrder item) {
|
|
|
|
|
|
|
|
|
|
// 数据校验
|
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkOrderType(), "工单类型不能为空");
|
|
|
|
|
ValidatorBean.checkNotNull(item.getWorkCenterCode(), "产线不能为空");
|
|
|
|
|
|
|
|
|
|
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
|
|
|
|
|
|
|
|
|
|
//校验标识
|
|
|
|
|
//若工单类型为排序
|
|
|
|
|
if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
|
|
|
|
|
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
|
|
|
|
|
//若工单类型为排序 标识为 N E P S
|
|
|
|
|
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() &&
|
|
|
|
|
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
|
|
|
|
|
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue() &&
|
|
|
|
|
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
|
.setErrorDetail(String.format("工单标识为【%s】请选择 【%s】、【%s】、【%s】、【%s】 标识",
|
|
|
|
|
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getDescription()
|
|
|
|
|
, MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getDescription(),
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getDescription(),
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.N.getDescription()))
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
|
|
|
|
|
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
|
|
|
|
|
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
|
|
|
|
|
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode())
|
|
|
|
|
.setErrorDetail(String.format("工单标识为【%s】请选择 【%s】、【%s】 标识",
|
|
|
|
|
item.getOrderFlag(), MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getDescription(),
|
|
|
|
|
MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getDescription()))
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void onUpdateBean(MesWorkOrder item) {
|
|
|
|
|