From 02c50e60afa54812e3771b4a96f2d85fb4fffdd0 Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Thu, 1 Aug 2024 16:11:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:MES=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PdmBiContainerinfoController.java | 23 +++++++++++- .../info/mapper/PdmBiOrderbominfoMapper.xml | 1 + .../impl/PdmBiContainerinfoServiceImpl.java | 4 +++ .../auto/AutoSendZxToDjw.java | 5 ++- .../logging/annotation/InterfaceLog.java | 17 +++++++++ .../logging/aspect/WhiteListLogAspect.java | 2 +- .../mes/service/impl/MesToLmsServiceImpl.java | 33 ++++++++++++++++-- .../wms/pda/mps/rest/FeedingController.java | 1 - .../mps/service/impl/FeedingServiceImpl.java | 4 ++- .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 254464 -> 254464 bytes .../src/main/java/org/nl/wms/sch/AcsUtil.java | 10 ++++++ 11 files changed, 92 insertions(+), 8 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/logging/annotation/InterfaceLog.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/controller/PdmBiContainerinfoController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/controller/PdmBiContainerinfoController.java index 78a43f100..330cec397 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/controller/PdmBiContainerinfoController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/controller/PdmBiContainerinfoController.java @@ -1,6 +1,16 @@ package org.nl.b_lms.pdm.info.controller; +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import org.nl.b_lms.pdm.info.service.IPdmBiContainerinfoService; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.ext.mes.service.MesToLmsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -14,7 +24,18 @@ import org.springframework.web.bind.annotation.RestController; * @since 2024-07-19 */ @RestController -@RequestMapping("/pdm-bi-containerinfo") +@RequestMapping("/api/containerinfo") public class PdmBiContainerinfoController { + @Autowired + private IPdmBiContainerinfoService containerinfoService; + + @PostMapping("/sendSubInfo") + @Log("子卷下料信息MES传递给LMS") + @SaIgnore + public ResponseEntity sendSubInfo(@RequestBody String jo) { + containerinfoService.createSubInfoByContainer(jo); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/PdmBiOrderbominfoMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/PdmBiOrderbominfoMapper.xml index 7528ce9a7..0407d6c12 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/PdmBiOrderbominfoMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/mapper/PdmBiOrderbominfoMapper.xml @@ -7,5 +7,6 @@ from pdm_bi_orderbominfo info left join pdm_bi_slittingproductionplan plan ON plan.mfg_order_name = info.mfgOrder where plan.container_name = #{container_name} + AND plan.is_delete = '0' diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java index c2eeb45ef..da0d1dec5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/info/service/impl/PdmBiContainerinfoServiceImpl.java @@ -59,6 +59,7 @@ public class PdmBiContainerinfoServiceImpl extends ServiceImpl().eq(PdmBiSubpackagerelation::getContainer_name, container_name)); if (ObjectUtil.isEmpty(subpackagerelation)) { subpackagerelation = new PdmBiSubpackagerelation(); @@ -95,10 +96,12 @@ public class PdmBiContainerinfoServiceImpl extends ServiceImpl装箱对接位任务开始执行扫描。"); + log.info(THIS_CLASS + "-装箱区->装箱对接位任务开始执行扫描。"); RLock lock = redissonClient.getLock(containerName); boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); try { @@ -228,6 +228,9 @@ public class AutoSendZxToDjw { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.set("box_weight", totalWeight); updateWrapper.set("status", "0"); + updateWrapper.set("box_length", bstIvtBoxinfo.getBox_length()); + updateWrapper.set("box_width", bstIvtBoxinfo.getBox_width()); + updateWrapper.set("box_high", bstIvtBoxinfo.getBox_high()); updateWrapper.eq("container_name", packagerelationList.get(0).getContainer_name()); pdmBiSubpackagerelationMapper.update(null, updateWrapper); //推送MES diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/logging/annotation/InterfaceLog.java b/lms/nladmin-system/src/main/java/org/nl/modules/logging/annotation/InterfaceLog.java new file mode 100644 index 000000000..d592a0d18 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/modules/logging/annotation/InterfaceLog.java @@ -0,0 +1,17 @@ + +package org.nl.modules.logging.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author Zheng Jie + * @date 2018-11-24 + */ +@Target({ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface InterfaceLog { + String value() default ""; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/WhiteListLogAspect.java b/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/WhiteListLogAspect.java index f6eef4599..9f0faf662 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/WhiteListLogAspect.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/logging/aspect/WhiteListLogAspect.java @@ -49,7 +49,7 @@ public class WhiteListLogAspect { private AntPathMatcher pathMatcher = new AntPathMatcher(); - @Pointcut("execution(* org.nl.wms.ext..*Service.*(..))") + @Pointcut("execution(* org.nl.wms.ext..*Service.*(..)) || @annotation(org.nl.modules.logging.annotation.InterfaceLog)") public void logPointcut() { // 该方法无方法体,主要为了让同类中其他方法使用此切入点 } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index dc81c0edb..889cac7b7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -540,6 +540,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { String Attribute3 = param.getString("Attribute3"); // 上下轴 String Attribute4 = param.getString("Attribute4"); // 位置左右 String Attribute5 = param.getString("Attribute5"); // 是否套轴 + String Attribute6 = param.getString("Attribute6"); // 是否套轴 WQLObject tab = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan"); @@ -697,6 +698,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { json.put("is_paper_ok", "2"); } json.put("sale_order_name", Attribute2); + json.put("material_type", Attribute6); json.put("start_time", DateUtil.now()); json.put("status", "01"); json.put("qzz_generation", qzz_generation); @@ -1047,7 +1049,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { } if (plan.getString("container_name").startsWith("B")) { //如果属于二期的子卷出战调用二期的方法 - cut_jo.put("device_code", cut_jo.getString("point_code")); + cut_jo.put("device_code", cut_jo.getString("ext_code")); slitterService.downRolls(cut_jo); } else { { @@ -1839,6 +1841,9 @@ public class MesToLmsServiceImpl implements MesToLmsService { BstIvtPackageinfoivt containerInfo = bstIvtPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()).get(0); JSONObject toDjqTask = new JSONObject(); + if (ObjectUtil.isEmpty(containerInfo)) { + throw new BadRequestException("当前子卷号【" + containerName + "】,不在待检区或管制区!"); + } toDjqTask.put("vehicle_code", containerName); //0 管制区 1待检区 if ("0".equals(TargetHouse)) { @@ -1850,6 +1855,10 @@ public class MesToLmsServiceImpl implements MesToLmsService { toDjqTask.put("point_code1", containerInfo.getPoint_code()); toDjqTask.put("point_code2", djqList.get(0).getPoint_code()); djqTask.createTask(toDjqTask); + } else { + if (ObjectUtil.isEmpty(containerInfo)) { + throw new BadRequestException("待检区没有可用的空位!"); + } } } @@ -1862,6 +1871,10 @@ public class MesToLmsServiceImpl implements MesToLmsService { toDjqTask.put("point_code1", containerInfo.getPoint_code()); toDjqTask.put("point_code2", gzqList.get(0).getPoint_code()); gzqTask.createTask(toDjqTask); + } else { + if (ObjectUtil.isEmpty(containerInfo)) { + throw new BadRequestException("管制区没有可用的空位!"); + } } } @@ -2179,6 +2192,20 @@ public class MesToLmsServiceImpl implements MesToLmsService { String ETTensileStrengthLowerLimit = param.getString("ETTensileStrengthLowerLimit"); //生产实际抗拉值 String TensileStrength = param.getString("TensileStrength"); + //包装类型 + String ReWorkName = param.getString("ReWorkName"); + + String sub_type = ""; + if (ObjectUtil.isEmpty(ReWorkName)) { + sub_type = "0"; + }else { + if ("Recheck".equals(ReWorkName)) { + sub_type = "1"; + } + if ("ReCut".equals(ReWorkName)) { + sub_type = "2"; + } + } try { IPdmBiContainerinfoService containerinfoService = SpringContextHolder.getBean(IPdmBiContainerinfoService.class); @@ -2208,6 +2235,7 @@ public class MesToLmsServiceImpl implements MesToLmsService { .create_name(SecurityUtils.getCurrentNickName()) .create_time(DateUtil.now()) .width_standard(WidthPlan) + .sub_type(sub_type) .thickness_request(ThicknessPlan).build(); containerinfoService.save(containerinfo); } else { @@ -2228,12 +2256,11 @@ public class MesToLmsServiceImpl implements MesToLmsService { one.setDemand_limit(SOTensileStrengthLowerLimit); one.setStandard_limit(ETTensileStrengthLowerLimit); one.setActual_value(TensileStrength); + one.setSub_type(sub_type); one.setWidth_standard(WidthPlan); one.setThickness_request(ThicknessPlan); containerinfoService.updateById(one); } - IPdmBiContainerinfoService biContainerinfoService = SpringContextHolder.getBean(IPdmBiContainerinfoService.class); - biContainerinfoService.createSubInfoByContainer(ContainerName); // 返回成功 result.put("RTYPE", "S"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/FeedingController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/FeedingController.java index fb27ff03a..afd6e6d7a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/FeedingController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/FeedingController.java @@ -62,7 +62,6 @@ public class FeedingController { @PostMapping("/AGVPass") @Log("AGV放行") - public ResponseEntity AGVPass(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(feedingService.AGVPass(whereJson), HttpStatus.OK); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java index bc066afe0..b2fca0f22 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/mps/service/impl/FeedingServiceImpl.java @@ -14,7 +14,9 @@ import org.nl.common.utils.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.content.HttpContext; +import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl; +import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; import org.nl.wms.ext.mes.service.LmsToMesService; import org.nl.wms.pda.mps.eum.RegionTypeEnum; @@ -589,7 +591,7 @@ public class FeedingServiceImpl implements FeedingService { param.put("option", "1"); paramArr.add(param); - WmsToAcsServiceImpl wmsToAcsService = new WmsToAcsServiceImpl(); + WmsToAcsService wmsToAcsService = SpringContextHolder.getBean(WmsToAcsService.class); JSONObject result = wmsToAcsService.updateTask(paramArr); if (!StrUtil.equals(result.getString("status"), "200")) { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index eea2bd21cfafa196c919f7af879e08d3abaf3ad3..404bac20c2d05ed11fb18183241302a118ef99ee 100644 GIT binary patch delta 23719 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 delta 22823 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