diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java index ae73e37..1d38d83 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWorkOrderService.java @@ -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 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 sortWorkOrderList = new ArrayList<>(); List orderLogList = new ArrayList<>(); for (int i = 0; i < bean.getSortInsertOrderQty(); i++) { + //生成工单号 + genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_SORT"); + genSerialNoModel.setPartNo(bean.getPartNo()); + List 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 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 resultList = syncFuncService.syncSerialNo(genSerialNoModel, AuthUtil.getSessionUser().getUserName(), bean.getOrganizeCode(), 1).getResultList(); + bean.setOrderSeq(Integer.parseInt(resultList.get(0))); } - + genSerialNoModel.setPartNo(bean.getPartNo()); + List 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 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 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 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) { diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java index ee97b43..ff5dad9 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/util/MesExtEnumUtil.java @@ -214,6 +214,44 @@ public class MesExtEnumUtil { return this.description; } } + /** + * 发运单明细发运状态 + */ + @JsonFormat( + shape = JsonFormat.Shape.OBJECT + ) + public static enum SHIPPING_ORDER_DETAIL_SHIPPING_STATUS { + PUBLISHED(10, "Published"), + SORT_SHIPPING(20, "Shippinged"); + + private int value; + private String description; + + private SHIPPING_ORDER_DETAIL_SHIPPING_STATUS(int value, String description) { + this.value = value; + this.description = description; + } + + public static String valueOfDescription(int val) { + String tmp = null; + + for (int i = 0; i < values().length; ++i) { + if (values()[i].value == val) { + tmp = values()[i].description; + } + } + + return tmp; + } + + public int getValue() { + return this.value; + } + + public String getDescription() { + return this.description; + } + } /** * 设备类型