From f3bc54aa9498c015a15cd8f932d8b9096ec25883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Sun, 7 Sep 2025 16:43:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nflg/wms/admin/config/LdapConfig.java | 2 + .../admin/config/PowerJobClientConfig.java | 1 + .../wms/admin/config/RestTemplateConfig.java | 2 + .../com/nflg/wms/admin/config/SAPConfig.java | 2 + .../wms/admin/config/ThymeleafConfig.java | 2 + .../InCostCenterBackController.java | 22 +++++---- .../controller/InProduceOrderController.java | 47 ++++++++++--------- .../nflg/wms/admin/service/SapService.java | 1 + .../src/main/resources/application-sit.yml | 2 + .../src/main/resources/logback-spring.xml | 3 +- .../pojo/qo/InCostcenterBackSubmitItemQO.java | 2 +- .../wms/starter/config/AliyunOSSConfig.java | 2 + .../nflg/wms/starter/config/MinIOConfig.java | 2 + .../nflg/wms/starter/config/RedisConfig.java | 3 ++ 14 files changed, 60 insertions(+), 33 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java index de3c556b..62d94165 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/LdapConfig.java @@ -3,6 +3,7 @@ package com.nflg.wms.admin.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.ldap.core.support.LdapContextSource; import java.util.HashMap; @@ -24,6 +25,7 @@ public class LdapConfig { private String password; @Bean + @Lazy public LdapContextSource ldapContextSource() { LdapContextSource contextSource = new LdapContextSource(); contextSource.setUrl(ldapUrl); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/PowerJobClientConfig.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/PowerJobClientConfig.java index 4c9a3c63..ec331b2e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/PowerJobClientConfig.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/PowerJobClientConfig.java @@ -20,6 +20,7 @@ public class PowerJobClientConfig { private String password; @Bean + @Lazy public PowerJobClient initPowerJobClient() { return new PowerJobClient(serverAddress, appName, password); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/RestTemplateConfig.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/RestTemplateConfig.java index abb180b4..c9f53176 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/RestTemplateConfig.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/RestTemplateConfig.java @@ -2,6 +2,7 @@ package com.nflg.wms.admin.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.http.client.SimpleClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; @@ -9,6 +10,7 @@ import org.springframework.web.client.RestTemplate; public class RestTemplateConfig { @Bean + @Lazy public RestTemplate restTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); factory.setConnectTimeout(3_000); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java index 72e2d917..f24b5bdf 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/SAPConfig.java @@ -12,6 +12,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import java.util.HashMap; import java.util.Map; @@ -96,6 +97,7 @@ public class SAPConfig { } @Bean + @Lazy public JCoRepository getJCoRepository() throws JCoException { return jcoDestination().getRepository(); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/ThymeleafConfig.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/ThymeleafConfig.java index f83519f2..c567ff89 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/ThymeleafConfig.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/config/ThymeleafConfig.java @@ -2,6 +2,7 @@ package com.nflg.wms.admin.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.thymeleaf.ITemplateEngine; import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.templateresolver.ITemplateResolver; @@ -10,6 +11,7 @@ import org.thymeleaf.templateresolver.ITemplateResolver; public class ThymeleafConfig { @Bean + @Lazy public ITemplateEngine templateEngine(ITemplateResolver templateResolver) { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java index d2e81514..453addee 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InCostCenterBackController.java @@ -212,13 +212,15 @@ public class InCostCenterBackController extends BaseController { .setId(IdUtil.getSnowflakeNextId()) .setTicketId(ticket.getId()) .setOrderItemId(item.getId()) - .setLgpbe(StrUtil.join(",", it.getLgpbe())) + .setLgpbe(StrUtil.join(",", it.getBinNos())) .setNum(BigDecimal.ZERO); ticketItems.add(ti); it.getQrCodes().forEach(qrCode -> { MaterialQRCodeContentDTO qrCodeContent = NoUtil.getMaterialQRCodeContent(qrCode); dtos.add(qrCodeContent); String materialNo = qrCodeContent.getMaterialNo(); + VUtil.trueThrowBusinessError(!StrUtil.equals(materialNo, item.getMatnr())) + .throwMessage("订单项与物料不符"); item.setLeft(item.getLeft().subtract(qrCodeContent.getNum())); VUtil.trueThrowBusinessError(item.getLeft().compareTo(BigDecimal.ZERO) < 0) .throwMessage("物料" + materialNo + "的入库数量超出申请数量"); @@ -241,6 +243,14 @@ public class InCostCenterBackController extends BaseController { inCostcenterBackItemService.updateBatchById(datas); inMaterialScanRecordRespository.saveAll(records); inCostcenterBackTicketItemService.saveBatch(ticketItems); + inCostcenterBackService.lambdaUpdate() + .set(WmsInCostcenterBack::getSapStatus, true) + .set(WmsInCostcenterBack::getSapError, "") + .set(WmsInCostcenterBack::getUpdateBy, UserUtil.getUserName()) + .set(WmsInCostcenterBack::getUpdateTime, LocalDateTime.now()) + .set(WmsInCostcenterBack::getState, datas.stream().map(WmsInCostcenterBackItem::getLeft).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(BigDecimal.ZERO) > 0 ? 1 : 2) + .eq(WmsInCostcenterBack::getId, order.getId()) + .update(); inventoryService.in(records.stream() .collect(Collectors.groupingBy(InMaterialScanRecord::getKey)) .values() @@ -262,7 +272,7 @@ public class InCostCenterBackController extends BaseController { .setResbRspos(item.getRspos()) .setResbMatnr(item.getMatnr()) .setMaktx(item.getMaktx()) - .setResbLgort(order.getLgort()) + .setResbLgort(request.getLgort()) .setResbWerks(order.getWerks()) .setResbMeins(item.getMeins()) .setErfmg(its.stream().map(MaterialQRCodeContentDTO::getNum).reduce(BigDecimal.ZERO, BigDecimal::add)) @@ -279,14 +289,6 @@ public class InCostCenterBackController extends BaseController { ticket.setDocYear(vo.getEMJahr()); ticket.setMatDoc(vo.getEMblnr()); inCostcenterBackTicketService.save(ticket); - inCostcenterBackService.lambdaUpdate() - .set(WmsInCostcenterBack::getSapStatus, true) - .set(WmsInCostcenterBack::getSapError, "") - .set(WmsInCostcenterBack::getUpdateBy, UserUtil.getUserName()) - .set(WmsInCostcenterBack::getUpdateTime, LocalDateTime.now()) - .set(WmsInCostcenterBack::getState, datas.stream().map(WmsInCostcenterBackItem::getLeft).reduce(BigDecimal.ZERO, BigDecimal::add).compareTo(BigDecimal.ZERO) > 0 ? 1 : 2) - .eq(WmsInCostcenterBack::getId, order.getId()) - .update(); return ApiResult.success(); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java index efaa47df..0876ad60 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/InProduceOrderController.java @@ -349,6 +349,8 @@ public class InProduceOrderController extends BaseController { public ApiResult> getOrderInfo(@Valid @RequestParam @NotBlank String no) { WmsInProduceOrder order = produceOrderService.getByNo(no); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("订单不存在"); + VUtil.trueThrowBusinessError(!Objects.equals(order.getState(), (short) 0)) + .throwMessage("该订单非待收货状态"); List list = produceOrderItemService.getVOByOrderId(order.getId()); if (order.getList()) { list = list.stream() @@ -395,6 +397,7 @@ public class InProduceOrderController extends BaseController { } List materialNos = new ArrayList<>(); List records = new ArrayList<>(); + List input1 = new ArrayList<>(); list.forEach(it->{ BigDecimal num = BigDecimal.ZERO; InProduceOrderReceiveMaterialQO materialQO = request.getItems().stream().filter(q -> StrUtil.equals(q.getMaterialNo(), it.getMaterialNo())).findFirst().orElse(null); @@ -419,6 +422,18 @@ public class InProduceOrderController extends BaseController { .setCreateBy(UserUtil.getUserName()) .setCreateTime(Instant.now()) ); + Zwm00Mb107QO q = input1.stream().filter(ip -> StrUtil.equals(ip.getCHARG(), content.getBatchNo())).findFirst() + .orElseGet(() -> { + Zwm00Mb107QO qo = new Zwm00Mb107QO() + .setPWERK(it.getFactoryNo()) + .setPSMNG(BigDecimal.ZERO) + .setAMEIN(it.getUnit()) + .setLGORT(it.getWarehouseNo()) + .setCHARG(content.getBatchNo()); + input1.add(qo); + return qo; + }); + q.setPSMNG(q.getPSMNG().add(content.getNum())); } if (num.compareTo(it.getNum()) != 0) { materialNos.add(it.getMaterialNo()); @@ -429,32 +444,22 @@ public class InProduceOrderController extends BaseController { }); VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(materialNos)) .throwMessage("以下物料的扫码数量与收货数量不一致:"+StrUtil.join(",", materialNos)); - //同步入库信息到SAP - Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), list.stream().map(it -> new Zwm00Mb107QO() - .setPWERK(it.getFactoryNo()) - .setPSMNG(it.getNum()) - .setAMEIN(it.getUnit()) - .setLGORT(it.getWarehouseNo()) - .setCHARG(it.getBatchNo())).toList(), null + inventoryService.in(input1.stream().map(it -> new InventoryDTO() + .setMaterialNo(request.getItems().get(0).getMaterialNo()) + .setNum(it.getPSMNG()) + .setFactoryNo(it.getPWERK()) + .setWarehouseNo(it.getLGORT()) + .setBatchNumber(it.getCHARG())).toList() ); - produceOrderService.lambdaUpdate() - .set(WmsInProduceOrder::getMjahr, dto.getE_MJAHR()) - .set(WmsInProduceOrder::getMblnr, dto.getE_MBLNR()) - .eq(WmsInProduceOrder::getId, order.getId()) - .update(); - + inMaterialScanRecordRespository.saveAll(records); + //同步入库信息到SAP + Zwm00Mb107DTO dto = sapService.zwm00_mb107(order.getOrderNo(), UserUtil.getUserName(), input1, null); + order.setMblnr(dto.getE_MBLNR()); + order.setMjahr(dto.getE_MJAHR()); order.setState((short)1); order.setUpdateBy(UserUtil.getUserName()); order.setUpdateTime(LocalDateTime.now()); produceOrderService.updateById(order); - inventoryService.in(list.stream().map(it-> new InventoryDTO() - .setMaterialNo(it.getMaterialNo()) - .setNum(it.getNum()) - .setFactoryNo(it.getFactoryNo()) - .setWarehouseNo(it.getWarehouseNo()) - .setBatchNumber(it.getBatchNo())).toList() - ); - inMaterialScanRecordRespository.saveAll(records); return ApiResult.success(); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java index 0b2dfc38..e36e68c7 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java @@ -119,6 +119,7 @@ public class SapService { JCoFunction function = exec("ZWM00_MB107", parameters, tables); JCoParameterList pl = function.getExportParameterList(); + log.info("E_MBLNR:{}", pl.getString("E_MBLNR")); VUtil.trueThrowBusinessError(StrUtil.isBlank(pl.getString("E_MBLNR"))) .throwMessage("SAP错误"); VUtil.trueHandle(StrUtil.isBlank(pl.getString("E_MBLNR"))).trueHandle(() -> { diff --git a/nflg-wms-admin/src/main/resources/application-sit.yml b/nflg-wms-admin/src/main/resources/application-sit.yml index 54cab269..7f7fd47a 100644 --- a/nflg-wms-admin/src/main/resources/application-sit.yml +++ b/nflg-wms-admin/src/main/resources/application-sit.yml @@ -1,4 +1,6 @@ logging: + loki: + url: http://192.168.163.83:3100/loki/api/v1/push level: root: info com: diff --git a/nflg-wms-admin/src/main/resources/logback-spring.xml b/nflg-wms-admin/src/main/resources/logback-spring.xml index 502ae98e..c5384fb8 100644 --- a/nflg-wms-admin/src/main/resources/logback-spring.xml +++ b/nflg-wms-admin/src/main/resources/logback-spring.xml @@ -5,6 +5,7 @@ + @@ -51,7 +52,7 @@ - http://192.168.163.83:3100/loki/api/v1/push + ${LOKI_URL} service_name = wms diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InCostcenterBackSubmitItemQO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InCostcenterBackSubmitItemQO.java index dd1b6a14..88a5c50f 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InCostcenterBackSubmitItemQO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/qo/InCostcenterBackSubmitItemQO.java @@ -19,7 +19,7 @@ public class InCostcenterBackSubmitItemQO { * 实际入库储位编号列表 */ @NotEmpty - private List lgpbe; + private List binNos; /** * 二维码列表 diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java index f4ab43a6..41ee7638 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/AliyunOSSConfig.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; @Configuration @ConditionalOnProperty(name = "file.upload.type", havingValue = "oss") @@ -31,6 +32,7 @@ public class AliyunOSSConfig { //private OSS ossClient; @Bean(destroyMethod = "shutdown") + @Lazy public OSS ossClient() { log.info("初始化阿里云OSS服务"); ClientConfiguration config = new ClientConfiguration(); diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/MinIOConfig.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/MinIOConfig.java index 5b41f4dc..abaafc0c 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/MinIOConfig.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/MinIOConfig.java @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; @Slf4j @Configuration @@ -31,6 +32,7 @@ public class MinIOConfig { private MinioClient client; @Bean + @Lazy public MinioClient initMinioClient() throws Exception{ client= MinioClient.builder() .endpoint(endpoint) diff --git a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java index 8254fc4b..a7b840a5 100644 --- a/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java +++ b/nflg-wms-starter/src/main/java/com/nflg/wms/starter/config/RedisConfig.java @@ -2,6 +2,7 @@ package com.nflg.wms.starter.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; @@ -11,6 +12,7 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; public class RedisConfig { @Bean + @Lazy public RedisTemplate redisObjectTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); @@ -27,6 +29,7 @@ public class RedisConfig { } @Bean + @Lazy public RedisTemplate redisStringTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory);