From b53ab28e864d988015264191db2a044d6f2c838c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=AE=E7=AC=91=E7=9D=80=E9=9D=A2=E5=AF=B9=E6=98=8E?= =?UTF-8?q?=E5=A4=A9?= <752558143@qq.com> Date: Sat, 6 Jul 2024 16:10:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A1=E7=A0=81=E5=B1=A5=E5=8E=86=E5=92=8C?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E5=8D=95=E5=B1=A5=E5=8E=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mes/pcn/api/base/IMesPojoVersionService.java | 11 ++ .../mes/pcn/api/busi/IMesProduceSnExtService.java | 3 + .../mes/pcn/api/busi/IMesWorkOrderExtService.java | 4 + .../ext/mes/pcn/apiservice/aspect/MonitorLog.java | 11 ++ .../mes/pcn/apiservice/aspect/PcnPojoAspect.java | 73 +++++++++++ .../pcn/apiservice/aspect/PcnRepositoryAspect.java | 127 +++++++++++++++++++ .../base/MesPojoVersionServiceImpl.java | 135 ++++++++++++++++++++- .../serviceimpl/busi/MesProduceSnExtService.java | 11 ++ .../serviceimpl/busi/MesWorkOrderExtService.java | 14 +++ .../serviceimpl/busi/MesWorkOrderService.java | 11 +- .../step/MesAssemblyShowNosortStepService.java | 4 + .../step/MesProductSnGenerateStepService.java | 8 +- .../step/MesProductSnSaveStepService.java | 3 +- .../step/MesWorkOrderSaveStepService.java | 5 +- 14 files changed, 405 insertions(+), 15 deletions(-) create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/MonitorLog.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnPojoAspect.java create mode 100644 modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnRepositoryAspect.java diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPojoVersionService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPojoVersionService.java index 8d07fd9..60f3c8f 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPojoVersionService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/base/IMesPojoVersionService.java @@ -1,6 +1,9 @@ package cn.estsh.i3plus.ext.mes.pcn.api.base; import cn.estsh.i3plus.pojo.mes.bean.MesPojoVersion; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; + +import java.util.List; public interface IMesPojoVersionService { @@ -15,4 +18,12 @@ public interface IMesPojoVersionService { * @param mesPojoVersion */ void recordPojoVersion(MesPojoVersion mesPojoVersion); + + void savePojoVersion(Object obj, Class cls); + + void insertPojoVersion(Object obj, Class cls); + + void savePojoVersionList(List list, Class cls); + + void insertPojoVersionList(List list, Class cls); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java index 94143f8..785abcf 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesProduceSnExtService.java @@ -28,4 +28,7 @@ public interface IMesProduceSnExtService { @ApiOperation(value = "根据零件条码ID修改条码状态,工位") void saveProduceSnList(StationRequestBean reqBean, Integer snStatus, List idList); + MesProduceSn insert(MesProduceSn item); + + void update(MesProduceSn item); } diff --git a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java index 01202cc..75afd21 100644 --- a/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-pcn-api/src/main/java/cn/estsh/i3plus/ext/mes/pcn/api/busi/IMesWorkOrderExtService.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.ext.mes.pcn.api.busi; +import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import io.swagger.annotations.ApiOperation; @@ -13,4 +14,7 @@ public interface IMesWorkOrderExtService { @ApiOperation(value = "根据生产工单ID查询生产工单信息") MesWorkOrder getWorkOrder(String organizeCode, Long id); + MesWorkOrder insert(MesWorkOrder item); + + void update(MesWorkOrder item); } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/MonitorLog.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/MonitorLog.java new file mode 100644 index 0000000..7e869b7 --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/MonitorLog.java @@ -0,0 +1,11 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface MonitorLog { +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnPojoAspect.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnPojoAspect.java new file mode 100644 index 0000000..7f4cc2e --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnPojoAspect.java @@ -0,0 +1,73 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect; + +import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPojoVersionService; +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.After; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Configuration; + +import java.lang.reflect.Array; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description : + * @Reference : + * @Author : zxw + * @CreateDate : + * @Modify: + **/ +@ConditionalOnExpression("'${pcn.aspect.repository:true}' == 'true'") +@Aspect +@Configuration +public class PcnPojoAspect { + + @Pointcut("@annotation(cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect.MonitorLog)") + public void controllerPointcut() {} + + @Autowired + private IMesPojoVersionService pojoVersionService; + + @After("controllerPointcut()") + public void after(JoinPoint joinPoint){ + + Object[] objs = joinPoint.getArgs(); + String methodName = joinPoint.getSignature().getName(); + if (methodName.startsWith("save") || methodName.startsWith("update")) { + Object[] args = joinPoint.getArgs(); + List list = new ArrayList<>(); + for (Object arg : args) { + if (arg.getClass().isArray()) { + int len = Array.getLength(arg); + for (int i = 0; i < len; ++i) { + Object item = Array.get(arg, i); + if (BaseBean.class.isAssignableFrom(item.getClass())) { + pojoVersionService.savePojoVersion((BaseBean)item, item.getClass()); + } + } + } else if (BaseBean.class.isAssignableFrom(arg.getClass())) { + pojoVersionService.savePojoVersion((BaseBean)arg, arg.getClass()); + } + } + + } else if (methodName.startsWith("insert")) { + Object[] args = joinPoint.getArgs(); + if (args.length > 0) { + Object item = args[0]; + if (BaseBean.class.isAssignableFrom(item.getClass())) { + pojoVersionService.insertPojoVersion((BaseBean) item, item.getClass()); + } + } + } + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnRepositoryAspect.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnRepositoryAspect.java new file mode 100644 index 0000000..32fca7f --- /dev/null +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/aspect/PcnRepositoryAspect.java @@ -0,0 +1,127 @@ +package cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect; + +import cn.estsh.i3plus.platform.common.tool.TimeTool; +import cn.estsh.i3plus.pojo.base.bean.BaseBean; +import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.After; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.context.annotation.Configuration; + +import java.lang.reflect.Array; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.List; + +/** + * @Description : 同步状态和时间更新 + * @Reference : + * @Author : zxw + * @CreateDate : + * @Modify: + **/ +@ConditionalOnExpression("'${pcn.aspect.repository:true}' == 'true'") +@Aspect +@Configuration +public class PcnRepositoryAspect { + + @Before("controllerPointcut()") + public void before(JoinPoint joinPoint){ + String methodName = joinPoint.getSignature().getName(); + if (methodName.equals("save") || methodName.equals("update")) { + Object[] args = joinPoint.getArgs(); + for (Object arg : args) { + if (arg.getClass().isArray()) { + int len = Array.getLength(arg); + for (int i = 0; i < len; ++i) { + Object item = Array.get(arg, i); + if (BaseBean.class.isAssignableFrom(item.getClass())) { + updateBeanSync((BaseBean)item); + } + } + } else if (BaseBean.class.isAssignableFrom(arg.getClass())) { + updateBeanSync((BaseBean)arg); + } + } + } else if (methodName.equals("insert")) { + Object[] args = joinPoint.getArgs(); + if (args.length > 0) { + Object item = args[0]; + if (BaseBean.class.isAssignableFrom(item.getClass())) { + updateBeanSync((BaseBean)item); + } + } + } else if (methodName.equals("saveAll")) { + Object[] args = joinPoint.getArgs(); + if (args.length > 0) { + Object arg = args[0]; + if (arg instanceof List) { + List items = (List) arg; + for (Object item : items) { + if (BaseBean.class.isAssignableFrom(item.getClass())) { + updateBeanSync((BaseBean)item); + } + } + } else if (BaseBean.class.isAssignableFrom(arg.getClass())) { + updateBeanSync((BaseBean)arg); + } + } + } + } + + @Pointcut("execution(* cn.estsh.*..*.repository.*..*(..))") + public void controllerPointcut() {} + + @After("controllerPointcut()") + public void after(JoinPoint joinPoint) { + String methodName = joinPoint.getSignature().getName(); + if (methodName.startsWith("updateByProperties")) { + try { + Object[] args = joinPoint.getArgs(); + Method method = ((MethodSignature)joinPoint.getSignature()).getMethod(); + if (args.length == 4) { + if (args[2].getClass().isArray()) { + method.invoke(joinPoint.getTarget(), args[0], args[1], new String[]{"modifyDatetime", "systemSyncStatus"}, + new Object[]{TimeTool.getNowTime(true), CommonEnumUtil.FALSE}); + } else { + method.invoke(joinPoint.getTarget(), args[0], args[1], "systemSyncStatus", CommonEnumUtil.FALSE); + } + } else if (args.length == 3) { + if (args[0].getClass().isArray()) { + method.invoke(joinPoint.getTarget(), new String[]{ "systemSyncStatus"}, + new Object[]{ CommonEnumUtil.FALSE}, args[2]); + } else { + method.invoke(joinPoint.getTarget(), "systemSyncStatus", CommonEnumUtil.FALSE, args[2]); + } + } + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } else if (methodName.equals("updateByHqlWhere")) { + Object[] args = joinPoint.getArgs(); + try { + if (args.length == 3) { + Method method = ((MethodSignature)joinPoint.getSignature()).getMethod(); + if (args[1].getClass().isArray()) { + method.invoke(joinPoint.getTarget(), args[0], new String[]{"systemSyncStatus"}, + new Object[]{ CommonEnumUtil.FALSE}); + } else { + method.invoke(joinPoint.getTarget(), TimeTool.getNowTime(true), args[2]); + method.invoke(joinPoint.getTarget(), "systemSyncStatus", CommonEnumUtil.FALSE, args[2]); + } + } + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } + } + + private void updateBeanSync(BaseBean bean) { + bean.setSystemSyncStatus(CommonEnumUtil.FALSE); + bean.setModifyDatetime(TimeTool.getNowTime(true)); + } +} diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPojoVersionServiceImpl.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPojoVersionServiceImpl.java index 06b2dc4..d116295 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPojoVersionServiceImpl.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/base/MesPojoVersionServiceImpl.java @@ -8,10 +8,12 @@ import cn.estsh.i3plus.platform.common.util.CommonConstWords; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.mes.bean.MesPojoVersion; import cn.estsh.i3plus.pojo.mes.bean.MesPojoVersionDetail; import cn.estsh.i3plus.pojo.mes.repository.MesPojoVersionDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesPojoVersionRepository; +import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.google.common.collect.MapDifference; @@ -23,8 +25,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MesPojoVersionServiceImpl implements IMesPojoVersionService { @@ -46,10 +51,96 @@ public class MesPojoVersionServiceImpl implements IMesPojoVersionService { @Override public MesPojoVersion getPojoVersion(MesPojoVersion bean) { + DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(bean); return mesPojoVersionRepository.getByProperty(DdlPackBean.getDdlPackBean(bean)); } + @Override + public void insertPojoVersion(Object obj, Class cls) { + try { + MesPojoVersion version = getMesPojoVersion(obj, cls, "insert"); + recordPojoVersion(version); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void savePojoVersion(Object obj, Class cls) { + try { + MesPojoVersion version = getMesPojoVersion(obj, cls, "update"); + recordPojoVersion(version); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + @Override + public void insertPojoVersionList(List list, Class cls) { + list.forEach(obj -> { + try { + MesPojoVersion version = getMesPojoVersion(obj, cls, "insert"); + recordPojoVersion(version); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + @Override + public void savePojoVersionList(List list, Class cls) { + list.forEach(obj -> { + try { + MesPojoVersion version = getMesPojoVersion(obj, cls, "update"); + recordPojoVersion(version); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + private MesPojoVersion getMesPojoVersion(Object obj, Class cls, String insert) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { + Method getIdmethod = cls.getMethod("getId"); + Method getCodemethod = cls.getMethod("getOrganizeCode"); + Long id = Long.valueOf(getIdmethod.invoke(obj).toString()); + String organizeCode = getCodemethod.invoke(obj).toString(); + MesPojoVersion version = new MesPojoVersion(); + version.setRefId(id); + version.setRefClass(cls.getName()); + version.setBean(JsonUtilTool.encode(obj)); + version.setCreateUser(version.getCreateUser()); + version.setModifyUser(version.getModifyUser()); + version.setVersionMethodName(insert); + version.setBusiData(getBusiData(cls, version.getRefClass(),obj)); + version.setOrganizeCode(organizeCode); + return version; + } + + public String getBusiData(Class cls, String refClass, Object obj){ + String busiData = ""; + try { + MesExtEnumUtil.BUSI_REFERANCE busiReferance = MesExtEnumUtil.BUSI_REFERANCE.valueOfEnum(refClass); + Method method = null; + switch (busiReferance) { + case MES_PRODUCE_SN: + method = cls.getMethod("getProductSn"); + busiData = method.invoke(obj).toString(); + break; + case MES_WORK_ORDER: + method = cls.getMethod("getWorkOrderNo"); + busiData = method.invoke(obj).toString(); + break; + case MES_SHIPPING_ORDER: + method = cls.getMethod("getShippingCode"); + busiData = method.invoke(obj).toString(); + break; + default: + } + } catch (Exception e) { + e.printStackTrace(); + } + return busiData; + } @Override public void recordPojoVersion(MesPojoVersion afterMesPojoVersion) { @@ -72,7 +163,7 @@ public class MesPojoVersionServiceImpl implements IMesPojoVersionService { String userName = StringUtils.isNotBlank(afterMesPojoVersion.getModifyUser()) ? afterMesPojoVersion.getModifyUser() : afterMesPojoVersion.getCreateUser(); Map mapPropDesc = afterMesPojoVersion.getPojoPropDesc(); - + boolean isInsert = true; if (!"insert".equals(afterMesPojoVersion.getVersionMethodName())) { // 不是新增数据的时候则需要查询历史记录 // 已存在数据封装 afterMesPojoVersion.setOrderByParam("createDatetime"); @@ -86,6 +177,7 @@ public class MesPojoVersionServiceImpl implements IMesPojoVersionService { } } operateType = CommonEnumUtil.DAO_OPERATE_TYPE.UPDATE; + isInsert = false; } // 不保存字段 数据剔除 for (String key : CommonConstWords.POJO_VERSION_SAVE_ATTR_REMOVE) { @@ -94,10 +186,43 @@ public class MesPojoVersionServiceImpl implements IMesPojoVersionService { mapDiff = Maps.difference(beforeMap, afterMap).entriesDiffering(); - /* mapDiff = Maps.difference(beforeMap, afterMap).entriesOnlyOnLeft(); - if (beforeMap.size() == 0 && afterMap.size() > 0) { - mapDiff.putAll(afterMap); - }*/ + + MesExtEnumUtil.BUSI_REFERANCE busiReferance = MesExtEnumUtil.BUSI_REFERANCE.valueOfEnum(afterMesPojoVersion.getRefClass()); + Method method = null; + String statusKey = ""; + boolean isSave = false; + List statusList = new ArrayList<>(); + switch (busiReferance) { + case MES_PRODUCE_SN: + statusList = Stream.of("snStatus", "qcStatus", "printStatus").collect(Collectors.toList()); + for (String status : statusList) { + if (mapDiff.containsKey(status)){ + isSave = true; + } + } + break; + case MES_WORK_ORDER: + statusList = Stream.of("workOrderStatus").collect(Collectors.toList()); + for (String status : statusList) { + if (mapDiff.containsKey(status)){ + isSave = true; + } + } + break; + case MES_SHIPPING_ORDER: + statusList = Stream.of("status").collect(Collectors.toList()); + for (String status : statusList) { + if (mapDiff.containsKey(status)){ + isSave = true; + } + } + break; + default: + } + if (!isSave && !isInsert) { + LOGGER.info("状态相关字段没有变更,不需要进行记录"); + return; + } // 是否需要落库 if (reqJson.getString(afterMesPojoVersion.getRefClass()) != null) { List fileds = Arrays.asList(reqJson.getString(afterMesPojoVersion.getRefClass()).split(",")); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java index 97c5732..a6c721d 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesProduceSnExtService.java @@ -1,6 +1,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect.MonitorLog; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.platform.common.tool.TimeTool; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; @@ -109,5 +110,15 @@ public class MesProduceSnExtService implements IMesProduceSnExtService { } + @Override + @MonitorLog + public MesProduceSn insert(MesProduceSn item) { + return produceSnRepository.insert(item); + } + @Override + @MonitorLog + public void update(MesProduceSn item) { + produceSnRepository.update(item); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java index 0d2536c..d814c70 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderExtService.java @@ -1,10 +1,12 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; +import cn.estsh.i3plus.ext.mes.pcn.apiservice.aspect.MonitorLog; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; 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.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; import lombok.extern.slf4j.Slf4j; @@ -48,4 +50,16 @@ public class MesWorkOrderExtService implements IMesWorkOrderExtService { new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), id}); } + + @Override + @MonitorLog + public MesWorkOrder insert(MesWorkOrder item) { + return workOrderRepository.insert(item); + } + + @Override + @MonitorLog + public void update(MesWorkOrder item) { + workOrderRepository.update(item); + } } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java index 8530da7..c75cf75 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/busi/MesWorkOrderService.java @@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService; import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesShiftService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesConfigService; +import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesWorkOrderService; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService; @@ -55,6 +56,10 @@ public class MesWorkOrderService implements IMesWorkOrderService { public static final Logger LOGGER = LoggerFactory.getLogger(MesWorkOrderService.class); @Autowired private MesWorkOrderRepository workOrderRepository; + + @Autowired + private IMesWorkOrderExtService workOrderExtService; + @Autowired private MesProductVersionRepository mesProductVersionRDao; @Autowired @@ -221,7 +226,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()); } ConvertBean.serviceModelUpdate(oldMesWorkOrder,userName); - workOrderRepository.update(oldMesWorkOrder); + workOrderExtService.update(oldMesWorkOrder); //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; @@ -325,7 +330,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { //修改工单,需要重新同步 mesWorkOrder.setSystemSyncStatus(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()); ConvertBean.serviceModelUpdate(mesWorkOrder, userName); - workOrderRepository.update(mesWorkOrder); + workOrderExtService.update(mesWorkOrder); //保存记录 saveMesWorkOrderLog(mesWorkOrder); } @@ -545,7 +550,7 @@ public class MesWorkOrderService implements IMesWorkOrderService { } LOGGER.info("工单报工后数量【{}】", oldMesWorkOrder.getReportedQty()); ConvertBean.serviceModelUpdate(oldMesWorkOrder, userName); - workOrderRepository.saveAndFlush(oldMesWorkOrder); + workOrderExtService.update(oldMesWorkOrder); //保存数据 List mesProductOffLineList = new ArrayList<>(); MesProductOffLine newMesProductOffLine; diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java index f68f892..8b7598f 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesAssemblyShowNosortStepService.java @@ -186,6 +186,10 @@ public class MesAssemblyShowNosortStepService extends BaseStepService { */ private StepResult validSuperWorkOrder(StationRequestBean reqBean, List productionPartContextList, MesWorkCenter workCenter, StepResult stepResult, StationResultBean resultBean) { // 验证超工单 + //判断是否还存在待匹配的主条码信息, 内部循环匹配成功会标记 foreignKey + Optional optional = productionPartContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getWorkOrderNo()))).findFirst(); + if (null == optional || !optional.isPresent()) return stepResult; + // 对MesProductionPartContext中的工单号经行分组,每个工单可能对应多条数据,筛选掉foreignkey为空的数据 Map> productionPartContextMap = productionPartContextList.stream().filter(productionPartContext -> !StringUtils.isEmpty(productionPartContext.getForeignKey())) .collect(Collectors.groupingBy(MesProductionPartContext::getWorkOrderNo)); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java index 3306405..c6833dc 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnGenerateStepService.java @@ -150,9 +150,9 @@ public class MesProductSnGenerateStepService extends BaseStepService { MesProduceSn produceSn; //进出一致, 不累计工单完成数量 在显示装配件工步中已经验证了 进出一致 进出存在工单则必须一致 if (isSamePart) produceSn = produceSnExtService.getProduceSn(reqBean.getOrganizeCode(), productionPsInContext.getId()); - //未知条码 + //未知条码 else if (null != productionPsInContext && !StringUtils.isEmpty(productionPsInContext.getRelateId())) produceSn = produceSnExtService.getProduceSn(reqBean.getOrganizeCode(), productionPsInContext.getRelateId()); - //生成新条码 + //生成新条码 else produceSn = new MesProduceSn(); if (StringUtils.isEmpty(produceSn.getProductSn())) { @@ -196,8 +196,8 @@ public class MesProductSnGenerateStepService extends BaseStepService { if (StringUtils.isEmpty(produceSn.getInWorkCenterTime())) produceSn.setInWorkCenterTime(produceSn.getModifyDatetime()); produceSn.setLotNo(produceSn.getModifyDatetime().substring(0, 10)); - if (StringUtils.isEmpty(produceSn.getId())) produceSn = produceSnRepository.insert(produceSn); - else produceSnRepository.save(produceSn); + if (StringUtils.isEmpty(produceSn.getId())) produceSn = produceSnExtService.insert(produceSn); + else produceSnExtService.update(produceSn); return new MesProductionPsOutContext().copy(produceSn, prodRuleContext.getForeignKey()).isCalcCompleteQty(!StringUtils.isEmpty(produceSn.getWorkOrderNo()) && !isSamePart); diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java index 864db73..90392a1 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesProductSnSaveStepService.java @@ -130,7 +130,8 @@ public class MesProductSnSaveStepService extends BaseStepService { produceSn.setOutWorkCenterTime(produceSn.getModifyDatetime()); produceSn.setLotNo(produceSn.getModifyDatetime().substring(0, 10)); - return produceSnRepository.save(produceSn); + produceSnExtService.update(produceSn); + return produceSn; } diff --git a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java index 80af8ec..8e35c31 100644 --- a/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java +++ b/modules/i3plus-ext-mes-pcn-apiservice/src/main/java/cn/estsh/i3plus/ext/mes/pcn/apiservice/serviceimpl/step/MesWorkOrderSaveStepService.java @@ -190,14 +190,15 @@ public class MesWorkOrderSaveStepService extends BaseStepService { //如果数量都没有修改,不操作数据库 if (!propertyNameList.isEmpty()) { ConvertBean.serviceModelUpdate(workOrder, reqBean.getUserInfo()); - propertyNameList.add("modifyUser"); + workOrderExtService.update(workOrder); + /* propertyNameList.add("modifyUser"); propertyValueList.add(reqBean.getUserInfo()); propertyNameList.add("modifyDatetime"); propertyValueList.add(TimeTool.getNowTime(true)); DdlPackBean workOrderPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode()); DdlPreparedPack.getNumEqualPack(workOrder.getId(),"id",workOrderPackBean); workOrderRepository.updateByProperties(propertyNameList.toArray(new String[]{}), propertyValueList.toArray(), workOrderPackBean); - } +*/ } } }