diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCavityGroupCfgServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCavityGroupCfgServiceImpl.java index fcf64f7..408fdf7 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCavityGroupCfgServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCavityGroupCfgServiceImpl.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Service; @Slf4j public class MesCavityGroupCfgServiceImpl extends BaseMesService implements IMesCavityGroupCfgService { + @Override protected void setPackQueryBean(MesCavityGroupCfg bean, DdlPackBean packBean) { DdlPreparedPack.getStringLikerPack(bean.getCavityCode(), "cavityCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCavityName(), "cavityName", packBean); @@ -28,6 +29,7 @@ public class MesCavityGroupCfgServiceImpl extends BaseMesService implements IMesCavityGroupDetailCfgService { + @Override protected void setPackQueryBean(MesCavityGroupDetailCfg bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCavityCode(),"cavityCode",packBean); DdlPreparedPack.getStringEqualPack(bean.getEquipmentCode(),"equipmentCode",packBean); } + @Override protected void onInsertBean(MesCavityGroupDetailCfg item) { } + @Override protected void onUpdateBean(MesCavityGroupDetailCfg item) { } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java index 72abc92..a9f0369 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftRouteDetailServiceImpl.java @@ -45,6 +45,7 @@ public class MesCraftRouteDetailServiceImpl extends BaseMesService implements IMesCraftRouteService { + @Override protected void setPackQueryBean(MesCraftRoute bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCraftRouteCode(), "craftRouteCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCraftRouteName(), "craftRouteName", packBean); DdlPreparedPack.getNumEqualPack(bean.getCraftRouteType(), "craftRouteType", packBean); } + @Override protected void onInsertBean(MesCraftRoute item) { // 数据校验 ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空"); @@ -46,6 +48,7 @@ public class MesCraftRouteServiceImpl extends BaseMesService impl } } + @Override protected void onUpdateBean(MesCraftRoute item) { // 数据校验 ValidatorBean.checkNotNull(item.getCraftRouteCode(), "工艺路线代码不能为空"); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java index 08a52b8..a876538 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesCraftServiceImpl.java @@ -29,11 +29,13 @@ public class MesCraftServiceImpl extends BaseMesService implements IMe @Autowired private IMesCraftDao mesCraftDao; + @Override protected void setPackQueryBean(MesCraft bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCraftCode(), "craftCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCraftName(), "craftName", packBean); } + @Override protected void onInsertBean(MesCraft item) { // 数据校验 ValidatorBean.checkNotNull(item.getCraftCode(), "工艺代码不能为空"); @@ -52,6 +54,7 @@ public class MesCraftServiceImpl extends BaseMesService implements IMe } + @Override protected void onUpdateBean(MesCraft item) { // 数据校验 ValidatorBean.checkNotNull(item.getCraftCode(), "工艺代码不能为空"); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentProdParamCfgServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentProdParamCfgServiceImpl.java index 6e323b4..6e447f5 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentProdParamCfgServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesEquipmentProdParamCfgServiceImpl.java @@ -19,16 +19,18 @@ import org.springframework.stereotype.Service; @Slf4j public class MesEquipmentProdParamCfgServiceImpl extends BaseMesService implements IMesEquipmentProdParamCfgService { + @Override protected void setPackQueryBean(MesEquipmentProdParamCfg bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCavityCode(),"cavityCode",packBean); DdlPreparedPack.getNumEqualPack(bean.getSeq(),"seq",packBean); } - + @Override protected void onInsertBean(MesEquipmentProdParamCfg item) { item.setDataSource(MesExtEnumUtil.DATA_SOURCE.DATA_SOURCE30.getValue()); } + @Override protected void onUpdateBean(MesEquipmentProdParamCfg item) { } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesModelMultiCavityServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesModelMultiCavityServiceImpl.java index 34bd127..a6ca60a 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesModelMultiCavityServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesModelMultiCavityServiceImpl.java @@ -18,17 +18,18 @@ import org.springframework.stereotype.Service; @Service @Slf4j public class MesModelMultiCavityServiceImpl extends BaseMesService implements IMesModelMultiCavityService { + @Override protected void setPackQueryBean(MesModelMultiCavity bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getModuleCode(),"moduleCode",packBean); DdlPreparedPack.getStringEqualPack(bean.getPartNo(),"partNo",packBean); DdlPreparedPack.getStringEqualPack(bean.getEquipmentCode(),"equipmentCode",packBean); } - - + @Override protected void onInsertBean(MesModelMultiCavity item) { } + @Override protected void onUpdateBean(MesModelMultiCavity item) { } } diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProcessCraftCfgServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProcessCraftCfgServiceImpl.java index 7f0b2a0..00f8dfc 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProcessCraftCfgServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProcessCraftCfgServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.stereotype.Service; @Slf4j public class MesProcessCraftCfgServiceImpl extends BaseMesService implements IMesProcessCraftCfgService { + @Override protected void setPackQueryBean(MesProcessCraftCfg bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getCraftCode(), "craftCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getProcessCode(), "processCode", packBean); @@ -29,6 +30,7 @@ public class MesProcessCraftCfgServiceImpl extends BaseMesService im @Autowired private IMesProductPlanDao iMesProductPlanDao; + @Override protected void setPackQueryBean(MesProductPlan bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", packBean); DdlPreparedPack.getStringEqualPack(bean.getPlanPartNo(), "planPartNo", packBean); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductVersionService.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductVersionService.java index 1732d4a..e421411 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductVersionService.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesProductVersionService.java @@ -11,6 +11,7 @@ import org.springframework.stereotype.Service; @Slf4j public class MesProductVersionService extends BaseMesService implements IMesProductVersionService { + @Override protected void setPackQueryBean(MesProductVersion bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getPartNo(),"partNo",packBean); DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(),"workCenterCode",packBean); diff --git a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWindowServiceImpl.java b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWindowServiceImpl.java index 97a9064..5e6bb5f 100644 --- a/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWindowServiceImpl.java +++ b/modules/i3plus-ext-mes-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/apiservice/serviceimpl/base/MesWindowServiceImpl.java @@ -21,12 +21,14 @@ import org.springframework.stereotype.Service; @Slf4j public class MesWindowServiceImpl extends BaseMesService implements IMesWindowService { + @Override protected void setPackQueryBean(MesWindow bean, DdlPackBean packBean) { DdlPreparedPack.getStringEqualPack(bean.getWindowNo(),"windowNo",packBean); DdlPreparedPack.getStringLikerPack(bean.getWindowName(),"windowName",packBean); DdlPreparedPack.getNumEqualPack(bean.getWindowType(),"windowType",packBean); } + @Override protected void onInsertBean(MesWindow item) { // 数据校验 ValidatorBean.checkNotNull(item.getWindowNo(), "界面编号不能为空"); @@ -47,6 +49,7 @@ public class MesWindowServiceImpl extends BaseMesService implements I } + @Override protected void onUpdateBean(MesWindow item) { // 数据校验 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 9035cf4..628bf49 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 @@ -3,9 +3,9 @@ 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.IMesWorkOrderToSapService; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; +import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.apiservice.util.DateUtil; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -19,9 +19,12 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil; import cn.estsh.i3plus.pojo.mes.bean.*; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.repository.*; +import cn.estsh.i3plus.pojo.mes.util.DateUtilExt; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil; +import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; +import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -29,9 +32,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; import java.util.List; import java.util.Objects; @@ -43,8 +44,6 @@ public class MesWorkOrderService extends BaseMesService implements @Autowired private ISyncFuncService syncFuncService; @Autowired - private IMesWorkOrderToSapService iMesWorkOrderToSapService; - @Autowired private IMesPartService iMesPartService; @Autowired private MesProductVersionRepository mesProductVersionRDao; @@ -83,7 +82,7 @@ public class MesWorkOrderService extends BaseMesService implements } //生成工单号 - genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_SORT"); + genSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_JIS_SORT); genSerialNoModel.setPartNo(bean.getPartNo()); List resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); @@ -100,22 +99,20 @@ public class MesWorkOrderService extends BaseMesService implements baseRDao.insert(copyMesWorkOrder); workOrderLogService.insert(workOrderLog); //写入SAP下发计划表 - saveMesProductPlan(bean); - //写入接口表 - //iMesWorkOrderToSapService.insert(bean); + saveMesProductPlan(bean, true, false); return bean; } else if (bean.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { //生成工单号 - genSerialNoModel = new GenSerialNoModel("ORDER_NO_JIS_UN_SORT"); + genSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_JIS_UN_SORT); } else { //生成工单号 - genSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO"); + genSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO); Integer produceSeq = 0; if (null != result && result.getProduceSeq() != null) { produceSeq = result.getProduceSeq(); } bean.setProduceSeq(produceSeq + 1); - GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel("ORDER_NO_BTO_SEQ"); + GenSerialNoModel orderSeqSerialNoModel = new GenSerialNoModel(MesCommonConstant.ORDER_NO_BTO_SEQ); orderSeqSerialNoModel.setPartNo(bean.getPartNo()); List resultList = syncFuncService.syncSerialNo(orderSeqSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); bean.setWorkOrderSeq(resultList.get(0)); @@ -133,61 +130,76 @@ public class MesWorkOrderService extends BaseMesService implements workOrderLogService.insert(workOrderLog); bean = baseRDao.insert(bean); //写入SAP下发计划表 - saveMesProductPlan(bean); + saveMesProductPlan(bean, true, false); return bean; } - private void saveMesProductPlan(MesWorkOrder bean) { - if(StringUtil.isEmpty(bean.getPlanOrderNo())){ + private void saveMesProductPlan(MesWorkOrder bean, boolean isInsert, boolean isReport) { + if (StringUtil.isEmpty(bean.getPlanOrderNo())) { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(bean.getPartNo(),"planPartNo",ddlPackBean); - DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(),"planStartDate",ddlPackBean); - DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(),"planEndDate",ddlPackBean); + DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(bean.getPlanStartTime(), "planStartDate", ddlPackBean); + DdlPreparedPack.getStringEqualPack(bean.getPlanEndTime(), "planEndDate", ddlPackBean); MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean); - if(null == mesProductPlan){ + if (null == mesProductPlan) { MesProductPlan mesPlanOrder = new MesProductPlan(); mesPlanOrder.setPlanOrderNo(""); mesPlanOrder.setPlanQty(bean.getQty()); mesPlanOrder.setPlanPartNo(bean.getPartNo()); - mesPlanOrder.setCompleteQty(bean.getQty()); - mesPlanOrder.setUncompleteQty(0d); + mesPlanOrder.setCompleteQty(0d); + mesPlanOrder.setUncompleteQty(bean.getQty()); mesPlanOrder.setUnit(bean.getUnit()); mesPlanOrder.setPlanStartDate(bean.getPlanStartTime()); mesPlanOrder.setPlanEndDate(bean.getPlanEndTime()); - mesPlanOrder.setPartMappingWorkCenterCode(bean.getWorkCenterCode()); + mesPlanOrder.setPartMappingWorkCenterCode(bean.getErpWorkCenter()); mesPlanOrder.setPlanOrganizeCode(bean.getOrganizeCode()); mesPlanOrder.setOrganizeCode(bean.getOrganizeCode()); ConvertBean.serviceModelInitialize(mesPlanOrder, bean.getCreateUser()); mesProductPlanRDao.insert(mesPlanOrder); - }else { - mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getQty())); - mesProductPlan.setPlanQty(mesProductPlan.getCompleteQty()); + } else { + if (isInsert) { + mesProductPlan.setPlanQty(MathOperation.add(mesProductPlan.getPlanQty(), bean.getQty())); + } else { + //报工 + if (isReport) { + mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum())); + //报工调整 + } else { + mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum())); + } + } + mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty())); ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser()); mesProductPlanRDao.update(mesProductPlan); } - }else{ + } else { DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean.getOrganizeCode()); - DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(),"planOrderNo",ddlPackBean); - DdlPreparedPack.getStringEqualPack(bean.getPartNo(),"planPartNo",ddlPackBean); + DdlPreparedPack.getStringEqualPack(bean.getPlanOrderNo(), "planOrderNo", ddlPackBean); + DdlPreparedPack.getStringEqualPack(bean.getPartNo(), "planPartNo", ddlPackBean); MesProductPlan mesProductPlan = mesProductPlanRDao.getByProperty(ddlPackBean); - if(null == mesProductPlan){ + if (null == mesProductPlan) { MesException.throwMesBusiException("SAP计划单号【%s】物料【%s】,不存在", bean.getPlanOrderNo(), bean.getPartNo()); } - if(Objects.isNull(mesProductPlan.getCompleteQty())){ - mesProductPlan.setCompleteQty(0d); + if (!isInsert) { + if (Objects.isNull(mesProductPlan.getCompleteQty())) { + mesProductPlan.setCompleteQty(0d); + } + //报工 + if (isReport) { + mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getNum())); + //报工调整 + } else { + mesProductPlan.setCompleteQty(MathOperation.sub(mesProductPlan.getCompleteQty(), bean.getNum())); + } + mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(), mesProductPlan.getCompleteQty())); + ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser()); + mesProductPlanRDao.update(mesProductPlan); } - mesProductPlan.setCompleteQty(MathOperation.add(mesProductPlan.getCompleteQty(), bean.getQty())); - mesProductPlan.setUncompleteQty(MathOperation.sub(mesProductPlan.getPlanQty(),mesProductPlan.getCompleteQty())); - ConvertBean.serviceModelUpdate(mesProductPlan, bean.getCreateUser()); - mesProductPlanRDao.update(mesProductPlan); } } @Override public MesWorkOrder update(MesWorkOrder bean) { - //回传sap - boolean sendToSap = false; - MesWorkOrder result = baseRDao.getById(bean.getId()); //若工单类型为排序 则根据排序插入工单数量插入多行 工单数量为1 if (result.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { @@ -201,14 +213,6 @@ public class MesWorkOrderService extends BaseMesService implements 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()) { @@ -244,21 +248,13 @@ public class MesWorkOrderService extends BaseMesService implements MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); BeanUtils.copyProperties(result, workOrderLog, "id"); 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); return bean; } + @Override protected void setPackQueryBean(MesWorkOrder bean, DdlPackBean packBean) { DdlPreparedPack.getStringLikerPack(bean.getWorkOrderNo(), "workOrderNo", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNameRdd(), "partNameRdd", packBean); @@ -274,9 +270,10 @@ public class MesWorkOrderService extends BaseMesService implements DdlPreparedPack.getStringSmallerPack(bean.getStartTimeEnd(), "planStartTime", packBean); DdlPreparedPack.getStringBiggerPack(bean.getEndTimeStart(), "planEndTime", packBean); DdlPreparedPack.getStringSmallerPack(bean.getEndTimeEnd(), "planEndTime", packBean); - packBean.setOrderByStr(" order by createDatetime desc "); + packBean.setOrderByStr(" order by createDatetime desc,workOrderSeq desc "); } + @Override protected void onInsertBean(MesWorkOrder item) { // 数据校验 @@ -291,6 +288,7 @@ public class MesWorkOrderService extends BaseMesService implements if (Objects.isNull(mesWorkCenter)) { MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode()); } + item.setErpWorkCenter(mesWorkCenter.getErpWorkCenter()); //校验标识 //若工单类型为排序 if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { @@ -314,12 +312,12 @@ public class MesWorkOrderService extends BaseMesService implements packPlanTime(item); } //生产版本为空 - if(Objects.isNull(item.getProductVersion())){ + if (StringUtil.isEmpty(item.getProductVersion())) { MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter); item.setProductVersion(mesProductVersion.getProductVersion()); } - if(!StringUtil.isEmpty(item.getVinCode())){ + if (!StringUtil.isEmpty(item.getVinCode())) { //校验vin号是否重复 ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean); @@ -352,7 +350,7 @@ public class MesWorkOrderService extends BaseMesService implements ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空"); ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空"); //生产版本为空 - if(Objects.isNull(item.getProductVersion())){ + if (StringUtil.isEmpty(item.getProductVersion())) { MesProductVersion mesProductVersion = getMesProductVersion(item, mesWorkCenter); item.setProductVersion(mesProductVersion.getProductVersion()); } @@ -386,8 +384,8 @@ public class MesWorkOrderService extends BaseMesService implements DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean); ddlPackBean.setOrderByStr(" order by createDatetime desc "); MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean); - if(Objects.isNull(mesProductVersion)){ - MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在",item.getPartNo(), + if (Objects.isNull(mesProductVersion)) { + MesException.throwMesBusiException("物料【%s】工作中心【%s】对应的生产版本信息不存在", item.getPartNo(), mesWorkCenter.getErpWorkCenter()); } return mesProductVersion; @@ -397,6 +395,16 @@ public class MesWorkOrderService extends BaseMesService implements DdlPackBean ddlPackBean; ValidatorBean.checkNotNull(item.getPlanDate(), "计划日期不能为空"); ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空"); + //工单导入:计划时间不能为当天之前日期 + try { + if (DateUtilExt.compareDateTime(DateUtil.SHORT_FORMAT, item.getPlanDate(), TimeTool.getToday()) < 0) { + MesException.throwMesBusiException("导入工单计划日期不能小于今天"); + } + }catch (ImppBusiException busExcep) { + MesException.throwMesBusiException(busExcep.getErrorDetail()); + }catch (Exception e) { + MesException.throwMesBusiException("计划日期格式异常"); + } //查询班次信息 ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode()); DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean); @@ -410,26 +418,20 @@ public class MesWorkOrderService extends BaseMesService implements item.setPlanStartTime(item.getPlanDate() + " " + mesShift.getStartTime()); item.setPlanEndTime(item.getPlanDate() + " " + mesShift.getEndTime()); try { - int windowStartEndTimeCompare = this.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime()); + int windowStartEndTimeCompare = DateUtilExt.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime()); if (windowStartEndTimeCompare > 0) { - item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(),1))); + item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(), 1))); } } catch (Exception e) { MesException.throwMesBusiException("时间格式异常"); } } + @Override protected void onUpdateBean(MesWorkOrder item) { } - public int compareDateTime(String formatStr, String startTimeStr, String endTimeStr) throws Exception { - SimpleDateFormat sdf = new SimpleDateFormat(formatStr); - Date startTime = sdf.parse(startTimeStr); - Date endTime = sdf.parse(endTimeStr); - return startTime.compareTo(endTime); - } - @Override public void doProductReport(MesWorkOrder mesWorkOrder) { //查询物料信息 @@ -462,6 +464,8 @@ public class MesWorkOrderService extends BaseMesService implements //报工类型 if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) { mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty())); + //更新SAP计划完成数量 + saveMesProductPlan(mesWorkOrder, false, true); } else { //冲销数量大于工单完成数量报错 if (mesWorkOrder.getNum() > mesWorkOrder.getReportedQty()) { @@ -472,6 +476,8 @@ public class MesWorkOrderService extends BaseMesService implements mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getAdjustQty()))); //已汇报数量减一 mesWorkOrder.setReportedQty(MathOperation.sub(mesWorkOrder.getReportedQty(), mesWorkOrder.getNum())); + //更新SAP计划完成数量 + saveMesProductPlan(mesWorkOrder, false, false); } //更新工单状态 double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty()); @@ -487,7 +493,8 @@ public class MesWorkOrderService extends BaseMesService implements update(mesWorkOrder); //生成条码 - GenSerialNoModel genSerialNoModel = new GenSerialNoModel("REPORT_SN"); + // todo + GenSerialNoModel genSerialNoModel = new GenSerialNoModel(MesCommonConstant.REPORT_SN); genSerialNoModel.setPartNo(mesWorkOrder.getPartNo()); List resultList = syncFuncService.syncSerialNo(genSerialNoModel, mesWorkOrder.getCreateUser(), mesWorkOrder.getOrganizeCode(), mesWorkOrder.getNum()).getResultList(); diff --git a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java index beb6740..3644f0c 100644 --- a/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java +++ b/modules/i3plus-ext-mes-pojo/src/main/java/cn/estsh/i3plus/ext/mes/pojo/constant/MesCommonConstant.java @@ -17,6 +17,19 @@ public class MesCommonConstant { public static final String SPOT_CHECK_ORDER_TASK_RESOURCE = "MES"; public static final String SPOT_CHECK_ORDER_NO_RULE = "SPOT_CHECK_ORDER_NO_RULE"; + /*** + * 工单 报工 + */ + //BTO工单顺序号 + public static final String ORDER_NO_BTO_SEQ = "ORDER_NO_BTO_SEQ"; + //BTO单号规则 + public static final String ORDER_NO_BTO = "ORDER_NO_BTO"; + //非排序单号规则 + public static final String ORDER_NO_JIS_UN_SORT = "ORDER_NO_JIS_UN_SORT"; + //排序单号规则 + public static final String ORDER_NO_JIS_SORT = "ORDER_NO_JIS_SORT"; + //报工条码规则 + public static final String REPORT_SN = "REPORT_SN"; }