From c502c6116f761205982cfc3478fa86eec1a4db6b Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 11:05:24 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../factorydata/suofeiya/mapper/DeliveryNoteMapper.java | 2 +- .../suofeiya/service/impl/DeliveryNoteServiceImpl.java | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/DeliveryNoteMapper.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/DeliveryNoteMapper.java index e42167b0c..1f374a62a 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/DeliveryNoteMapper.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/mapper/DeliveryNoteMapper.java @@ -17,7 +17,7 @@ import java.util.List; @Mapper public interface DeliveryNoteMapper extends BaseMapper { - FactoryAuthVO findFactoryAuth(@Param("companyCode") String companyCode); + List findFactoryAuth(@Param("companyCode") String companyCode); List findFactoryAuthByTenantCode(@Param("tenantId") String tenantId); } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java index 8c83e0c84..e5b1bcc02 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java @@ -259,9 +259,12 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl factoryAuth = baseMapper.findFactoryAuth(companyCode); + if(CollUtil.isNotEmpty(factoryAuth)){ + FactoryAuthVO authVO = factoryAuth.get(0); + bladeRedis.setEx(key, JSONUtil.toJsonStr(authVO), Duration.ofDays(1)); + return authVO; + } } } return null; From af8720df55b3674cb31d1dfd3361e9c17145afb2 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 11:18:35 +0800 Subject: [PATCH 02/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../suofeiya/service/impl/FactoryDataServiceImpl.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java index 09d450ba4..e3bf543b8 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java @@ -1,6 +1,7 @@ package com.logpm.factorydata.suofeiya.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; @@ -296,7 +297,8 @@ public class FactoryDataServiceImpl implements FactoryDataService { param.put("timestamp", time); // 加密 String digest = MD5.create().digestHex(jsonStr + appKey + time); - param.put("digest", digest); + String encode = Base64.encode(digest); + param.put("digest", encode); log.info("推送节点数据:{}", JSONUtil.toJsonStr(param)); String post = HttpUtil.post(dataSuoFeiYaProperties.getPush().getPushHost() + paStatusUrl, param); log.info("推送结果:{}", post); From 935172717ce54f6b6a21f57a51c10f84b896beda Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 11:26:50 +0800 Subject: [PATCH 03/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../config/InterceptorAdapterConfig.java | 2 +- .../suofeiya/controller/OrderController.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java index 0e7464aa5..d0d1716b0 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java @@ -39,6 +39,6 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { // interceptorRegistry.addInterceptor(new FactoryAccountsInterceptor(factoryTokenService)) // .addPathPatterns("/**").order(1); interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) - .addPathPatterns("/**").order(2); + .addPathPatterns("/logpm-factory-data-suofeiya/order/v1").order(2); } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/controller/OrderController.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/controller/OrderController.java index 206240d59..de09a3309 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/controller/OrderController.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/controller/OrderController.java @@ -11,6 +11,8 @@ import com.logpm.factorydata.suofeiya.vo.Resp; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.factorydata.FactoryDataConstants; +import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.context.annotation.Lazy; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -19,6 +21,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; /** * 工厂订单 前端控制器 @@ -35,6 +38,8 @@ public class OrderController { @Lazy @Resource private DeliveryNoteService service; + @Resource + private RabbitTemplate rabbitTemplate; @ResponseBody @PostMapping @@ -79,4 +84,17 @@ public class OrderController { return Resp.success(res); } + @ResponseBody + @PostMapping("pushData") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "推送工厂节点数据", notes = "推送工厂节点数据") + public Resp pushData(@RequestBody String msg, HttpServletRequest request) { + log.info("推送工厂节点数据:{}", msg); + if (StrUtil.isNotEmpty(msg)) { + rabbitTemplate.convertAndSend(FactoryDataConstants.Mq.Exchanges.NODE_DATA_PUSH, + FactoryDataConstants.Mq.RoutingKeys.SFY_NODE_DATA_PUSH, msg); + } + return Resp.success("成功"); + } + } From 56f5bd7b20c2d12ff302705e0d2ff9adbf6a73c4 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 11:45:34 +0800 Subject: [PATCH 04/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../config/InterceptorAdapterConfig.java | 7 +- .../FactoryAccountsInterceptor.java | 148 ++++++++++++++---- .../LocalServerLoginAccountsInterceptor.java | 118 +++++--------- 3 files changed, 154 insertions(+), 119 deletions(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java index d0d1716b0..11e786cf8 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java @@ -1,5 +1,6 @@ package com.logpm.factorydata.suofeiya.config; +import com.logpm.factorydata.suofeiya.interceptor.FactoryAccountsInterceptor; import com.logpm.factorydata.suofeiya.interceptor.LocalServerLoginAccountsInterceptor; import com.logpm.factorydata.suofeiya.pros.FactoryDataSuoFeiYaProperties; import com.logpm.factorydata.suofeiya.service.DeliveryNoteService; @@ -36,9 +37,9 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry interceptorRegistry) { -// interceptorRegistry.addInterceptor(new FactoryAccountsInterceptor(factoryTokenService)) -// .addPathPatterns("/**").order(1); - interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) + interceptorRegistry.addInterceptor(new FactoryAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) .addPathPatterns("/logpm-factory-data-suofeiya/order/v1").order(2); + interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) + .excludePathPatterns("/logpm-factory-data-suofeiya/order/v1").order(3); } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java index abf735a2f..e3351d28b 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java @@ -1,58 +1,148 @@ package com.logpm.factorydata.suofeiya.interceptor; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.digest.MD5; import com.alibaba.fastjson.JSONObject; -import com.logpm.factorydata.suofeiya.service.IFactoryTokenService; +import com.logpm.factorydata.suofeiya.pros.FactoryDataSuoFeiYaProperties; +import com.logpm.factorydata.suofeiya.service.DeliveryNoteService; +import com.logpm.factorydata.suofeiya.vo.FactoryAuthVO; import com.logpm.factorydata.suofeiya.wrapper.RequestWrapper; -import lombok.AllArgsConstructor; import lombok.extern.log4j.Log4j2; +import org.springblade.common.cache.CacheNames; +import org.springblade.common.component.MockLoginService; import org.springblade.common.exception.CustomerException; +import org.springblade.common.wrapper.CustomHttpServletRequestWrapper; +import org.springblade.core.redis.cache.BladeRedis; +import org.springblade.core.redis.lock.LockType; +import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.StringUtil; +import org.springblade.core.tool.utils.ThreadLocalUtil; +import org.springframework.context.annotation.Lazy; +import org.springframework.core.env.Environment; +import org.springframework.http.HttpHeaders; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; +import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.time.Instant; +import java.util.Objects; +import java.util.concurrent.TimeUnit; @Log4j2 -@AllArgsConstructor public class FactoryAccountsInterceptor implements HandlerInterceptor { - private final IFactoryTokenService factoryTokenService; + @Resource + private BladeRedis bladeRedis; + @Resource + private Environment environment; + @Resource + private RedisLockClient redisLockClient; + @Resource + private MockLoginService mockLoginService; + @Resource + private FactoryDataSuoFeiYaProperties suoFeiYaProperties; + @Lazy + @Resource + private DeliveryNoteService deliveryNoteService; + + public FactoryAccountsInterceptor(BladeRedis redis, Environment environment, RedisLockClient redisLockClient, MockLoginService mockLoginService, FactoryDataSuoFeiYaProperties suoFeiYaProperties, DeliveryNoteService deliveryNoteService) { + this.bladeRedis = redis; + this.environment = environment; + this.redisLockClient = redisLockClient; + this.mockLoginService = mockLoginService; + this.suoFeiYaProperties = suoFeiYaProperties; + this.deliveryNoteService = deliveryNoteService; + } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { try { + log.info("##########preHandle: 认证开始--------------"); RequestWrapper myRequestWrapper = new RequestWrapper(request); String body = myRequestWrapper.getBody(); + log.info("##########preHandle: body={}", body); JSONObject jsonObject = JSONObject.parseObject(body); - //获取头中参数 - String token = request.getHeader("Authorization"); - String corpId = request.getHeader("corpid"); - if(StringUtil.isBlank(corpId)){ - corpId = jsonObject.getString("corpid"); - } - if(!StringUtil.hasLength(token)){ - returnJson(response,JSONObject.toJSONString(R.fail(203,"认证不通过,token有误"))); + // 获取头中参数 + String authTime = request.getHeader("authTime"); + if (StrUtil.isEmpty(authTime)) { + log.info("##########preHandle: 时间戳不能为空"); + returnJson(response, JSONObject.toJSONString(R.fail(1, "时间戳不能为空"))); return false; } - if(!StringUtil.hasLength(corpId)){ - returnJson(response,JSONObject.toJSONString(R.fail(203,"认证不通过,corpId有误"))); + String sign = request.getHeader("sign"); + String companyCodeH = request.getHeader("companyCode"); + log.info("##########preHandle: authTime={},sign={},companyCodeH={}", authTime, sign, companyCodeH); + String companyCode = jsonObject.getString("companyCode"); + long secondTimestamp = Instant.now().getEpochSecond(); + // 验证时间 不能大于5秒 + if (StringUtil.isNotBlank(authTime)) { + long authTimeLong = Long.parseLong(authTime); + if (secondTimestamp - authTimeLong > suoFeiYaProperties.getAuthTime()) { + log.info("##########preHandle: 时间戳过期"); + returnJson(response, JSONObject.toJSONString(R.fail(1, "认证不通过,时间戳过期"))); + return false; + } + } + // 验证签名 + String auth = suoFeiYaProperties.getAuth(); + String md5Hex = MD5.create().digestHex(auth + authTime).toUpperCase(); + log.info("##########preHandle: md5Hex={}", md5Hex); + if (!StrUtil.equals(md5Hex, sign)) { + log.info("##########preHandle: 签名不正确"); + returnJson(response, JSONObject.toJSONString(R.fail(1, "认证不通过,签名不正确"))); return false; } - - log.info("##########preHandle: token={}",token); - //验证token - boolean b = factoryTokenService.verifyToken(token,corpId); - if(!b){ - returnJson(response,JSONObject.toJSONString(R.fail(203,"认证不通过,token不存在或已过期"))); + String account = "shujutongbu"; + String tenantId = "627683"; + String authorizationHeader = "bG9jYWw6bG9jYWxfc2VjcmV0"; + if (StringUtil.isNotBlank(companyCode)) { + FactoryAuthVO authVO = deliveryNoteService.findFactoryAuth(companyCode); + if (ObjectUtil.isNotEmpty(authVO)) { + account = authVO.getLoginAccount(); + tenantId = authVO.getTenantCode(); + authorizationHeader = authVO.getAuthorizationHeader(); + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + String key = CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account; + String lockKey = key + ":lock"; + JSONObject data = bladeRedis.get(key); + if (Objects.isNull(data)) { + boolean flag = redisLockClient.tryLock(lockKey, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if (flag) { + data = bladeRedis.get(key); + if (Objects.isNull(data)) { + data = mockLoginService.mockToken(tenantId, account); + bladeRedis.setEx(key, data, 2591990L); + redisLockClient.unLock(lockKey, LockType.FAIR); + } + } + } + // 发送登录请求 + log.info("##########preHandle: request={}", request); + wrappedRequest.addHeader("Blade-Auth", "bearer " + data.getString("access_token")); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.add("Blade-Auth", "bearer " + data.get("access_token")); + httpHeaders.add("Authorization", "Basic " + authorizationHeader); + ThreadLocalUtil.put("bladeContext", httpHeaders); + // 用包装后的request替换原始request + request = wrappedRequest; + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); + return true; + } + }else{ + returnJson(response, JSONObject.toJSONString(R.fail(1, "缺少参数 companyCode"))); return false; } - return true; + return false; } catch (Exception e) { - returnJson(response,JSONObject.toJSONString(R.fail(500,"服务异常,请联系管理员"))); + e.printStackTrace(); + returnJson(response, JSONObject.toJSONString(R.fail(5, "服务异常,请联系管理员"))); return false; } } @@ -68,19 +158,9 @@ public class FactoryAccountsInterceptor implements HandlerInterceptor { } catch (IOException e) { System.out.println(e.getMessage()); } finally { - if (writer != null){ + if (writer != null) { writer.close(); } } } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { - HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { - HandlerInterceptor.super.afterCompletion(request, response, handler, ex); - } } diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java index e80507d0f..478bfe92f 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/LocalServerLoginAccountsInterceptor.java @@ -1,13 +1,9 @@ package com.logpm.factorydata.suofeiya.interceptor; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.digest.MD5; import com.alibaba.fastjson.JSONObject; import com.logpm.factorydata.suofeiya.pros.FactoryDataSuoFeiYaProperties; import com.logpm.factorydata.suofeiya.service.DeliveryNoteService; -import com.logpm.factorydata.suofeiya.vo.FactoryAuthVO; -import com.logpm.factorydata.suofeiya.wrapper.RequestWrapper; import lombok.extern.log4j.Log4j2; import org.springblade.common.cache.CacheNames; import org.springblade.common.component.MockLoginService; @@ -17,7 +13,6 @@ import org.springblade.core.redis.cache.BladeRedis; import org.springblade.core.redis.lock.LockType; import org.springblade.core.redis.lock.RedisLockClient; import org.springblade.core.tool.api.R; -import org.springblade.core.tool.utils.StringUtil; import org.springblade.core.tool.utils.ThreadLocalUtil; import org.springframework.context.annotation.Lazy; import org.springframework.core.env.Environment; @@ -31,7 +26,6 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; -import java.time.Instant; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -60,89 +54,47 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt this.suoFeiYaProperties = suoFeiYaProperties; this.deliveryNoteService = deliveryNoteService; } - @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws CustomerException { + String tenantId = request.getHeader("tenantCode"); + if(StrUtil.isEmpty(tenantId)){ + tenantId = "627683"; + } try { - log.info("##########preHandle: 认证开始--------------"); - RequestWrapper myRequestWrapper = new RequestWrapper(request); - String body = myRequestWrapper.getBody(); - log.info("##########preHandle: body={}", body); - JSONObject jsonObject = JSONObject.parseObject(body); - // 获取头中参数 - String authTime = request.getHeader("authTime"); - if (StrUtil.isEmpty(authTime)) { - log.info("##########preHandle: 时间戳不能为空"); - returnJson(response, JSONObject.toJSONString(R.fail(1, "时间戳不能为空"))); - return false; - } - String sign = request.getHeader("sign"); - String companyCodeH = request.getHeader("companyCode"); - log.info("##########preHandle: authTime={},sign={},companyCodeH={}", authTime, sign, companyCodeH); - String companyCode = jsonObject.getString("companyCode"); - long secondTimestamp = Instant.now().getEpochSecond(); - // 验证时间 不能大于5秒 - if (StringUtil.isNotBlank(authTime)) { - long authTimeLong = Long.parseLong(authTime); - if (secondTimestamp - authTimeLong > suoFeiYaProperties.getAuthTime()) { - log.info("##########preHandle: 时间戳过期"); - returnJson(response, JSONObject.toJSONString(R.fail(1, "认证不通过,时间戳过期"))); - return false; - } - } - // 验证签名 - String auth = suoFeiYaProperties.getAuth(); - String md5Hex = MD5.create().digestHex(auth + authTime).toUpperCase(); - log.info("##########preHandle: md5Hex={}", md5Hex); - if (!StrUtil.equals(md5Hex, sign)) { - log.info("##########preHandle: 签名不正确"); - returnJson(response, JSONObject.toJSONString(R.fail(1, "认证不通过,签名不正确"))); - return false; - } - String account = "shujutongbu"; - String tenantId = "627683"; - String authorizationHeader = "bG9jYWw6bG9jYWxfc2VjcmV0"; - if (StringUtil.isNotBlank(companyCode)) { - FactoryAuthVO authVO = deliveryNoteService.findFactoryAuth(companyCode); - if (ObjectUtil.isNotEmpty(authVO)) { - account = authVO.getLoginAccount(); - tenantId = authVO.getTenantCode(); - authorizationHeader = authVO.getAuthorizationHeader(); - org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); - String key = CacheNames.LOCAL_SERVER_USER + tenantId + ":" + account; - String lockKey = key + ":lock"; - JSONObject data = bladeRedis.get(key); - if (Objects.isNull(data)) { - boolean flag = redisLockClient.tryLock(lockKey, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); - if (flag) { - data = bladeRedis.get(key); - if (Objects.isNull(data)) { - data = mockLoginService.mockToken(tenantId, account); - bladeRedis.setEx(key, data, 2591990L); - redisLockClient.unLock(lockKey, LockType.FAIR); - } - } + org.springblade.common.wrapper.CustomHttpServletRequestWrapper wrappedRequest = new CustomHttpServletRequestWrapper(request); + String account ="shujutongbu"; + String key = CacheNames.LOCAL_SERVER_USER+tenantId+":"+account; + String lockKey =key+":lock"; + JSONObject data =bladeRedis.get(key); + if(Objects.isNull(data)){ + boolean flag = redisLockClient.tryLock(lockKey, LockType.FAIR, 5000, 10000, TimeUnit.MILLISECONDS); + if(flag){ + data =bladeRedis.get(key); + if(Objects.isNull(data)){ + data = mockLoginService.mockToken(tenantId,account); + bladeRedis.setEx(key,data,2591990L); + redisLockClient.unLock(lockKey, LockType.FAIR); } - // 发送登录请求 - log.info("##########preHandle: request={}", request); - wrappedRequest.addHeader("Blade-Auth", "bearer " + data.getString("access_token")); - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.add("Blade-Auth", "bearer " + data.get("access_token")); - httpHeaders.add("Authorization", "Basic " + authorizationHeader); - ThreadLocalUtil.put("bladeContext", httpHeaders); - // 用包装后的request替换原始request - request = wrappedRequest; - RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); - return true; } - }else{ - returnJson(response, JSONObject.toJSONString(R.fail(1, "缺少参数 companyCode"))); - return false; } - return false; + + // 修改或添加header + + // 发送登录请求 + log.info("##########preHandle: request={}", data); + + wrappedRequest.addHeader("Blade-Auth", "bearer "+data.getString("access_token")); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.add("Blade-Auth","bearer "+data.get("access_token") ); + httpHeaders.add( "Authorization", "Basic bG9jYWw6bG9jYWxfc2VjcmV0"); + ThreadLocalUtil.put("bladeContext", httpHeaders); + + // 用包装后的request替换原始request + request = wrappedRequest; + RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); + return true; } catch (Exception e) { - e.printStackTrace(); - returnJson(response, JSONObject.toJSONString(R.fail(5, "服务异常,请联系管理员"))); + returnJson(response, JSONObject.toJSONString(R.fail(500, "服务异常,请联系管理员"))); return false; } } @@ -165,4 +117,6 @@ public class LocalServerLoginAccountsInterceptor extends HandlerInterceptorAdapt } + + } From c80313d274fb13086e3714361acb48d5fc1f7ba7 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 14:01:56 +0800 Subject: [PATCH 05/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../suofeiya/service/impl/FactoryDataServiceImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java index e3bf543b8..8d377b304 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java @@ -219,7 +219,9 @@ public class FactoryDataServiceImpl implements FactoryDataService { } } jsons.set("packageInfo", new JSONArray(packages)); - jsons.set("orderType", key); + if(StrUtil.equals(key, "Z")){ + jsons.set("orderType", "Y"); + } String jsonStr = JSONUtil.toJsonStr(jsons); if (oldProperties.getEnable()) { try { @@ -268,7 +270,9 @@ public class FactoryDataServiceImpl implements FactoryDataService { jsons.set("paNo", JSONUtil.toJsonStr(packages)); jsons.set("remark", ""); jsons.set("orderExtendFields", new JSONArray()); - jsons.set("orderType", key); + if(StrUtil.equals(key, "Z")){ + jsons.set("orderType", "Y"); + } String jsonStr = JSONUtil.toJsonStr(jsons); if (oldProperties.getEnable()) { try { From 0d5b8c3eeed58d15d257e266b0e20402fdc25ec3 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 14:32:29 +0800 Subject: [PATCH 06/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../suofeiya/service/impl/FactoryDataServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java index 8d377b304..636a1c4aa 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/FactoryDataServiceImpl.java @@ -220,7 +220,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { } jsons.set("packageInfo", new JSONArray(packages)); if(StrUtil.equals(key, "Z")){ - jsons.set("orderType", "Y"); + jsons.set("orderType", key); } String jsonStr = JSONUtil.toJsonStr(jsons); if (oldProperties.getEnable()) { @@ -271,7 +271,7 @@ public class FactoryDataServiceImpl implements FactoryDataService { jsons.set("remark", ""); jsons.set("orderExtendFields", new JSONArray()); if(StrUtil.equals(key, "Z")){ - jsons.set("orderType", "Y"); + jsons.set("orderType", key); } String jsonStr = JSONUtil.toJsonStr(jsons); if (oldProperties.getEnable()) { From a390ddfd446d3f3633f885120806722f3c9a1d3d Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 15:41:28 +0800 Subject: [PATCH 07/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../src/main/java/com/logpm/factorydata/suofeiya/vo/Resp.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/vo/Resp.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/vo/Resp.java index 41bef52aa..6ca608dde 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/vo/Resp.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/vo/Resp.java @@ -1,5 +1,6 @@ package com.logpm.factorydata.suofeiya.vo; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import java.io.Serializable; @@ -7,7 +8,10 @@ import java.io.Serializable; @Data public class Resp implements Serializable { + @JsonProperty("result_code") private String resultCode; + + @JsonProperty("result_message") private String resultMessage; public Resp(String code, String message) { From 83b8e59febce1ea85a92001ef0e9dd436c12c912 Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Mon, 30 Dec 2024 16:16:32 +0800 Subject: [PATCH 08/13] =?UTF-8?q?fix=EF=BC=9A1.=E5=88=A0=E9=99=A4=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=E7=9A=84=E6=95=B0=E6=8D=AEDEAL=5FWITH=5FEXCHANGE=20?= =?UTF-8?q?=E9=98=9F=E5=88=97=E7=9A=84=E6=B6=88=E6=81=AF=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../comfac/controller/FactoryCommonController.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/controller/FactoryCommonController.java b/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/controller/FactoryCommonController.java index 11135b05b..677524c4b 100644 --- a/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/controller/FactoryCommonController.java +++ b/blade-service/logpm-factory/src/main/java/com/logpm/factory/comfac/controller/FactoryCommonController.java @@ -106,12 +106,12 @@ public class FactoryCommonController { map.put("flagType", "OrderStatusLog"); // 将消息携带绑定键值 rabbitTemplate.convertAndSend(RabbitConstant.ORDER_STATUS_EXCHANGE, RabbitConstant.ORDER_STATUS_ROUTING, map); - map.put("type", "DealWith"); +// map.put("type", "DealWith"); // if (StringUtil.equals(sendDataProperties.getSend(), "old")) { - rabbitTemplate.convertAndSend(RabbitConstant.DEAL_WITH_EXCHANGE, RabbitConstant.DEAL_WITH_ROUTING, map, message -> { - message.getMessageProperties().setHeader("x-delay", 2000); - return message; - }); +// rabbitTemplate.convertAndSend(RabbitConstant.DEAL_WITH_EXCHANGE, RabbitConstant.DEAL_WITH_ROUTING, map, message -> { +// message.getMessageProperties().setHeader("x-delay", 2000); +// return message; +// }); // } // R r = factoryDataService.handleStatusData(orderStatusDTO); From 421cd6fe0e3e8c4a1c67cdf992a163743d87b067 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 17:01:28 +0800 Subject: [PATCH 09/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../factorydata/suofeiya/config/InterceptorAdapterConfig.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java index 11e786cf8..105548ae7 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java @@ -40,6 +40,8 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { interceptorRegistry.addInterceptor(new FactoryAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) .addPathPatterns("/logpm-factory-data-suofeiya/order/v1").order(2); interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) - .excludePathPatterns("/logpm-factory-data-suofeiya/order/v1").order(3); + .addPathPatterns("/logpm-factory-data-suofeiya/**") + .excludePathPatterns("/logpm-factory-data-suofeiya/order/v1") + .order(3); } } From 6e135e88816376940087b4dffb29c029e5b01166 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 17:17:23 +0800 Subject: [PATCH 10/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../suofeiya/config/InterceptorAdapterConfig.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java index 105548ae7..98506e31a 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/config/InterceptorAdapterConfig.java @@ -38,10 +38,10 @@ public class InterceptorAdapterConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry interceptorRegistry) { interceptorRegistry.addInterceptor(new FactoryAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) - .addPathPatterns("/logpm-factory-data-suofeiya/order/v1").order(2); + .addPathPatterns("/order/v1").order(2); interceptorRegistry.addInterceptor(new LocalServerLoginAccountsInterceptor(redis, environment, redisLockClient, mockLoginService, suoFeiYaProperties, deliveryNoteService)) - .addPathPatterns("/logpm-factory-data-suofeiya/**") - .excludePathPatterns("/logpm-factory-data-suofeiya/order/v1") + .addPathPatterns("/**") + .excludePathPatterns("/order/v1") .order(3); } } From 95be20e18eec675ac81cba2baa448984cccab385 Mon Sep 17 00:00:00 2001 From: PigBaoBei <2739175034@qq.com> Date: Mon, 30 Dec 2024 17:55:02 +0800 Subject: [PATCH 11/13] =?UTF-8?q?PDA=E5=A2=9E=E5=8A=A0=E6=89=98=E7=9B=98?= =?UTF-8?q?=E8=AF=A6=E6=83=85,=E6=95=B4=E6=89=98=E5=A4=87=E8=B4=A7,?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AE=A2=E5=88=B6=E5=93=81=E5=8C=85=E4=BB=B6?= =?UTF-8?q?=E5=A4=87=E8=B4=A7BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/DistributionStockEntity.java | 3 + .../app/DistributionAppStockUpClientVO.java | 1 + .../DistributionAppStockUpScanDetailVO.java | 10 +- .../DistributionAppStockUpTrayDetailVO.java | 41 ++++ .../api/DistributionStockupAppController.java | 27 ++- .../mapper/DistributionReservationMapper.java | 10 + .../mapper/DistributionReservationMapper.xml | 40 ++++ .../mapper/DistributionStockupMapper.xml | 4 +- .../mapper/DistrilbutionBillLadingMapper.java | 3 +- .../mapper/DistrilbutionBillLadingMapper.xml | 41 ++++ .../service/IDistributionStockupService.java | 14 ++ .../impl/DistributionStockupServiceImpl.java | 204 ++++++++++++++++-- 12 files changed, 373 insertions(+), 25 deletions(-) create mode 100644 blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpTrayDetailVO.java diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockEntity.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockEntity.java index f5fdc74fa..3f222727a 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockEntity.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/entity/DistributionStockEntity.java @@ -204,4 +204,7 @@ public class DistributionStockEntity extends TenantEntity { @ApiModelProperty(value = "取消操作人") private String cancelUser; + @ApiModelProperty(value = "是否整托备货 0-否 1-是") + private Integer isTray; + } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpClientVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpClientVO.java index 59800b997..acbee6a43 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpClientVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpClientVO.java @@ -49,6 +49,7 @@ public class DistributionAppStockUpClientVO implements Serializable { private List stockUpInventoryDetailVOList; private List stockUpZeroOrderDetailVOList; private List deliveryPackageDetailList; + private List deliveryTrayList; diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpScanDetailVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpScanDetailVO.java index e701aac74..74e382788 100644 --- a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpScanDetailVO.java +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpScanDetailVO.java @@ -31,12 +31,10 @@ import java.util.List; public class DistributionAppStockUpScanDetailVO implements Serializable { private static final long serialVersionUID = 1L; - private Long Id; - private String orderPackageCode; - private String typeName; - private String goodsName; - private String orderCode; - private String stockupAllocation; + private String trayName; + private String trayCode; + private Integer planNum; + private Integer scanNum; } diff --git a/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpTrayDetailVO.java b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpTrayDetailVO.java new file mode 100644 index 000000000..a0e824928 --- /dev/null +++ b/blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/app/DistributionAppStockUpTrayDetailVO.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2018-2028, Chill Zhuang All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * Neither the name of the dreamlu.net developer nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * Author: Chill 庄骞 (smallchill@163.com) + */ +package com.logpm.distribution.vo.app; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 在库订单包件清单 视图实体类 + * + * @author cyz + * @since 2023-06-13 + */ +@Data +public class DistributionAppStockUpTrayDetailVO implements Serializable { + + + private Long orderId; + private Long packageId; + private String waybillNumber; + private String orderCode; + private String categoryName; + private Integer planNum; + private String scanNum; + +} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java index 494d4f9be..42b2a4a08 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/api/DistributionStockupAppController.java @@ -1113,9 +1113,6 @@ public class DistributionStockupAppController extends BladeController { if (Objects.isNull(stockupDTO.getReservationId())){ return R.fail("stockupDTO.getReservationId()参数缺失"); } - if (Objects.isNull(stockupDTO.getOrderId())){ - return R.fail("stockupDTO.getOrderId()参数缺失"); - } if (Objects.isNull(stockupDTO.getTypeService())){ return R.fail("stockupDTO.getTypeService()参数缺失"); } @@ -1132,6 +1129,30 @@ public class DistributionStockupAppController extends BladeController { } } + @ResponseBody + @PostMapping("/trayDetail") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "客户订单包件列表", notes = "传入stockupDTO") + public R trayDetail(@RequestBody StockupDTO stockupDTO) { + if (Objects.isNull(stockupDTO.getReservationId())){ + return R.fail("stockupDTO.getReservationId()参数缺失"); + } + if (Objects.isNull(stockupDTO.getTypeService())){ + return R.fail("stockupDTO.getTypeService()参数缺失"); + } + String typeService = stockupDTO.getTypeService(); + Long orderId = stockupDTO.getOrderId(); + Long reservationId = stockupDTO.getReservationId(); + switch (typeService){ + case "1": case "2": + return distributionStockupService.handleDeliveryTrayDetailList(reservationId); + case "3": + return distributionStockupService.handleBillTrayDetailList(reservationId); + default: + return R.fail("未知的typeService"); + } + } + @ResponseBody @PostMapping("/stockupScan") @ApiOperationSupport(order = 1) diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java index 43dab97e9..08ec0330d 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java @@ -26,9 +26,11 @@ import com.logpm.distribution.dto.app.DistributionAppDeliveryListDTO; import com.logpm.distribution.entity.*; import com.logpm.distribution.excel.DistributionReservationExcel; import com.logpm.distribution.vo.*; +import com.logpm.distribution.vo.app.DistributionAppStockUpTrayDetailVO; import com.logpm.oldproject.dto.SignPushDataContactDTO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.springblade.core.tool.api.R; import java.util.List; import java.util.Map; @@ -438,4 +440,12 @@ public interface DistributionReservationMapper extends BaseMapper deliveryTrayDetailList(@Param("reservationId") Long reservationId); } diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml index f29e6077a..9d331820c 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml @@ -72,6 +72,46 @@ WHERE reservation_id = #{reservationId} AND parce_list_id = #{packageId} + UPDATE logpm_distribution_reservation_zero_package AS ldrzp SET ldrzp.quantity = ( ldrzp.quantity - #{retentionQuantity}) diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml index 4a17e2fc9..a42b23730 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml @@ -2347,7 +2347,7 @@ WHERE ldrp.is_deleted = 0 AND ldrp.packet_bar_status != 2 - AND ldrp.reservation_id = #{reservationId} AND ldrp.stock_article_id = #{orderId} + AND ldrp.reservation_id = #{reservationId} diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java index cccd695a4..1caa05bc5 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.java @@ -25,6 +25,7 @@ import com.logpm.distribution.dto.app.BillLadingAppDTO; import com.logpm.distribution.entity.*; import com.logpm.distribution.excel.DistrilbutionBillLadingExcel; import com.logpm.distribution.vo.*; +import com.logpm.distribution.vo.app.DistributionAppStockUpTrayDetailVO; import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingDetailVO; import com.logpm.distribution.vo.app.DistrilbutionAppBillLadingOrderMainVO; import com.logpm.oldproject.dto.SignPushDataContactDTO; @@ -214,7 +215,7 @@ public interface DistrilbutionBillLadingMapper extends BaseMapper selectInventoryListByBill(@Param("billId")Long billId); - + List billTrayDetailList(@Param("billId")Long billId); // Page getInventoryPage(IPage page, DistrilbutionBillLadingEntity distrilbutionBillLadingEntity); diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml index 57fa32f45..161e778cc 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml @@ -1124,6 +1124,47 @@ + diff --git a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockupService.java b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockupService.java index a4bd82318..ab3aad485 100644 --- a/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockupService.java +++ b/blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockupService.java @@ -421,4 +421,18 @@ public interface IDistributionStockupService extends BaseService trayIdList = warehouseTrayGoodsClient.getTrayIdList(stockupDTO.getTrayId(), stockupDTO.getTrayBarCode()); List voList = new ArrayList<>(); List finalList = list; @@ -4651,12 +4642,96 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl>>>>>>>>>>>>>>>>>stockupDTO.getOrderId()"); + return R.fail("参数缺失,请联系管理员"); + } + if (Objects.isNull(AuthUtil.getUser())){ + log.info(method+"参数缺失>>>>>>>>>>>>>>>>>>AuthUtil.getUser():{}",AuthUtil.getUser()); + return R.fail("请重新登陆后操作"); + } + DistributionReservationEntity reservationEntity = distributionReservationService.getById(reservationId); + if (Objects.isNull(reservationEntity)) { + return Resp.scanFail("当前计划信息错误", "当前计划信息错误"); + } + BladeUser user = AuthUtil.getUser(); + //校验托盘 + BasicdataTrayEntity trayByTrayCode = basicdataTrayClient.getTrayByTrayCode(stockupDTO.getTrayBarCode()); + if (Objects.isNull(trayByTrayCode)){ + log.info(method+"当前托盘信息不存在>>>>>>>>>>>>>>>>>>当前托盘信息不存在:{}",AuthUtil.getUser()); + return R.fail("当前托盘信息不存在"); + } + //查询当前托盘上货物是否都存在计划内 + List trayIdList = warehouseTrayGoodsClient.getTrayIdList(String.valueOf(trayByTrayCode.getId()), trayByTrayCode.getPalletCode()); + if (trayIdList.isEmpty()) { + return R.fail("当前托盘无货物信息"); + } + boolean isAllPackage = trayIdList.stream().allMatch(a -> "3".equals(a.getAssociationType())); + if (!isAllPackage) { + return R.fail("当前托盘存在其他类型货物"); + } + //查询计划包件信息 + List distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(reservationId); + if (distributionParcelListEntities.isEmpty()) { + log.info(method+"查询预约包件计划信息错误>>>>>>>>>>>>>>>>>>>>>>reservationId:{}",reservationId); + return R.fail("查询计划信息错误"); + } + List trayPackageIds = trayIdList.stream().map(WarehouseTrayGoodsEntity::getAssociationId).collect(Collectors.toList()); + + List packageData = distributionParcelListEntities.stream().filter(f -> trayPackageIds.contains(f.getId())).collect(Collectors.toList()); + if (packageData.isEmpty()) { + return R.fail("当前托盘无此客户的货物"); + } + warehouseUpdownTypeClient.downTray(trayByTrayCode.getPalletCode(),myCurrentWarehouse.getId()); + //生成扫描数据 + List stockEntityList = generateDeliveryTrayPackageStockEntity(reservationEntity,packageData,myCurrentWarehouse,user,stockupDTO.getStockupId()); + if (!stockEntityList.isEmpty()) { + distributionStockService.saveBatch(stockEntityList); + } + return Resp.scanSuccess("操作成功"," "); + } + + private List generateDeliveryTrayPackageStockEntity(DistributionReservationEntity reservationEntity, + List packageData, + BasicdataWarehouseEntity warehouse, + BladeUser user, + Long stockUpId) { + List list= new ArrayList<>(); + for (DistributionParcelListEntity parcelListEntity : packageData) { + DistributionStockEntity distributionStockEntity = new DistributionStockEntity(); + distributionStockEntity.setWarehouseId(warehouse.getId()); + distributionStockEntity.setWarehouseName(warehouse.getName()); + distributionStockEntity.setReservationId(reservationEntity.getId()); + distributionStockEntity.setReservationCode(reservationEntity.getReservationCode()); + distributionStockEntity.setStockQuantity(parcelListEntity.getQuantity()); + distributionStockEntity.setOrderSelfNumbering(parcelListEntity.getOrderCode()); + distributionStockEntity.setStockArticle(parcelListEntity.getStockArticleId()); + distributionStockEntity.setParcelListId(parcelListEntity.getId()); + distributionStockEntity.setCoding(parcelListEntity.getOrderPackageCode()); + distributionStockEntity.setOutboundType(reservationEntity.getDeliveryType()); + distributionStockEntity.setStockupId(stockUpId); + distributionStockEntity.setGoodsName(parcelListEntity.getThirdProduct()); + distributionStockEntity.setType(1); + distributionStockEntity.setMaterialId(parcelListEntity.getMaterialId()); + distributionStockEntity.setMarketId(reservationEntity.getMallId()); + distributionStockEntity.setScanUser(user.getNickName()); + distributionStockEntity.setIsTray(Integer.parseInt(IsOrNoConstant.yes.getValue())); + list.add(distributionStockEntity); + } + return list; + } + /** * * @param stockupDTO @@ -5172,12 +5247,96 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl>>>>>>>>>>>>>>>>>stockupDTO.getTrayBarCode()"); + return R.fail("参数缺失,请联系管理员"); + } + if (Objects.isNull(AuthUtil.getUser())){ + log.info(method+"参数缺失>>>>>>>>>>>>>>>>>>AuthUtil.getUser():{}",AuthUtil.getUser()); + return R.fail("请重新登陆后操作"); + } + DistrilbutionBillLadingEntity billLadingEntity = distrilbutionBillLadingService.getById(reservationId); + if (Objects.isNull(billLadingEntity)) { + return Resp.scanFail("当前计划信息错误", "当前计划信息错误"); + } + BladeUser user = AuthUtil.getUser(); + //校验托盘 + BasicdataTrayEntity trayByTrayCode = basicdataTrayClient.getTrayByTrayCode(stockupDTO.getTrayBarCode()); + if (Objects.isNull(trayByTrayCode)){ + log.info(method+"当前托盘信息不存在>>>>>>>>>>>>>>>>>>当前托盘信息不存在:{}",AuthUtil.getUser()); + return R.fail("当前托盘信息不存在"); + } + //查询当前托盘上货物是否都存在计划内 + List trayIdList = warehouseTrayGoodsClient.getTrayIdList(String.valueOf(trayByTrayCode.getId()), trayByTrayCode.getPalletCode()); + if (trayIdList.isEmpty()) { + return R.fail("当前托盘无货物信息"); + } + boolean isAllPackage = trayIdList.stream().allMatch(a -> "3".equals(a.getAssociationType())); + if (!isAllPackage) { + return R.fail("当前托盘存在其他类型货物"); + } + //查询计划包件信息 + List distributionParcelListEntities = distributionReservationMapper.selectPackageListByReservationId(reservationId); + if (distributionParcelListEntities.isEmpty()) { + log.info(method+"查询预约包件计划信息错误>>>>>>>>>>>>>>>>>>>>>>reservationId:{}",reservationId); + return R.fail("查询计划信息错误"); + } + List trayPackageIds = trayIdList.stream().map(WarehouseTrayGoodsEntity::getAssociationId).collect(Collectors.toList()); + + List packageData = distributionParcelListEntities.stream().filter(f -> trayPackageIds.contains(f.getId())).collect(Collectors.toList()); + if (packageData.isEmpty()) { + return R.fail("当前托盘无此客户的货物"); + } + warehouseUpdownTypeClient.downTray(trayByTrayCode.getPalletCode(),myCurrentWarehouse.getId()); + //生成扫描数据 + List stockEntityList = generateBillTrayPackageStockEntity(billLadingEntity,packageData,myCurrentWarehouse,user,stockupDTO.getStockupId()); + if (!stockEntityList.isEmpty()) { + distributionStockService.saveBatch(stockEntityList); + } + return Resp.scanSuccess("操作成功"," "); + } + + private List generateBillTrayPackageStockEntity(DistrilbutionBillLadingEntity billLadingEntity, + List packageData, + BasicdataWarehouseEntity myCurrentWarehouse, + BladeUser user, + Long stockupId) { + List list= new ArrayList<>(); + for (DistributionParcelListEntity parcelListEntity : packageData) { + DistributionStockEntity distributionStockEntity = new DistributionStockEntity(); + distributionStockEntity.setWarehouseId(myCurrentWarehouse.getId()); + distributionStockEntity.setWarehouseName(myCurrentWarehouse.getName()); + distributionStockEntity.setReservationId(billLadingEntity.getId()); + distributionStockEntity.setReservationCode(billLadingEntity.getPickupBatch()); + distributionStockEntity.setStockQuantity(parcelListEntity.getQuantity()); + distributionStockEntity.setOrderSelfNumbering(parcelListEntity.getOrderCode()); + distributionStockEntity.setStockArticle(parcelListEntity.getStockArticleId()); + distributionStockEntity.setParcelListId(parcelListEntity.getId()); + distributionStockEntity.setCoding(parcelListEntity.getOrderPackageCode()); + distributionStockEntity.setOutboundType("3"); + distributionStockEntity.setStockupId(stockupId); + distributionStockEntity.setGoodsName(parcelListEntity.getThirdProduct()); + distributionStockEntity.setType(1); + distributionStockEntity.setMaterialId(parcelListEntity.getMaterialId()); + distributionStockEntity.setMarketId(billLadingEntity.getClientId()); + distributionStockEntity.setScanUser(user.getNickName()); + distributionStockEntity.setIsTray(Integer.parseInt(IsOrNoConstant.yes.getValue())); + list.add(distributionStockEntity); + } + return list; + } + private R handleBillZeroStockUp(StockupDTO stockupDTO, BasicdataWarehouseEntity myCurrentWarehouse, Long reservationId, DistributionStockupEntity stockupEntity) { String method = "#######################DistributionStockupServiceImpl.handleDeliveryZeroStockUp"; if (Objects.isNull(stockupDTO.getOrderId())){ @@ -5392,9 +5551,10 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl stockUpZeroOrderDetailVOList = this.handleStockupDeliveryZeroOrder(reservationEntity); if (!stockUpZeroOrderDetailVOList.isEmpty()) { stockUpClientVO.setStockUpZeroOrderDetailVOList(stockUpZeroOrderDetailVOList); - } - //零担 - break; + } + default: + log.info("未知orderStatus>>>>>>>>>>>>>>orderStatus:{}",orderStatus); + } break; case "3": @@ -5426,6 +5586,8 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl>>>>>>>>>>>>>orderStatus:{}",orderStatus); } break; default: @@ -5435,6 +5597,8 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl 1) { return Resp.scanFail("当前包件计划重复", "当前包件计划重复"); } From adccc27ecee1a4acd814ebcc0bc734e1b97f5075 Mon Sep 17 00:00:00 2001 From: zhaoqiaobo <583671871@qq.com> Date: Mon, 30 Dec 2024 18:27:19 +0800 Subject: [PATCH 12/13] =?UTF-8?q?feat(all):=20=E7=B4=A2=E8=8F=B2=E4=BA=9A?= =?UTF-8?q?=E5=B7=A5=E5=8E=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1 增加华之韵物流对接 --- .../suofeiya/interceptor/FactoryAccountsInterceptor.java | 6 ++++-- .../suofeiya/pros/FactoryDataSuoFeiYaProperties.java | 2 +- .../suofeiya/service/impl/DeliveryNoteServiceImpl.java | 6 +++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java index e3351d28b..31740be1b 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/interceptor/FactoryAccountsInterceptor.java @@ -134,12 +134,14 @@ public class FactoryAccountsInterceptor implements HandlerInterceptor { request = wrappedRequest; RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); return true; + } else { + returnJson(response, JSONObject.toJSONString(R.fail(1, "认证不通过,配置缺失"))); + return false; } - }else{ + } else { returnJson(response, JSONObject.toJSONString(R.fail(1, "缺少参数 companyCode"))); return false; } - return false; } catch (Exception e) { e.printStackTrace(); returnJson(response, JSONObject.toJSONString(R.fail(5, "服务异常,请联系管理员"))); diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/FactoryDataSuoFeiYaProperties.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/FactoryDataSuoFeiYaProperties.java index 45cdf1d01..184147872 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/FactoryDataSuoFeiYaProperties.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/pros/FactoryDataSuoFeiYaProperties.java @@ -18,7 +18,7 @@ public class FactoryDataSuoFeiYaProperties { private String auth; /** auth过期时间 */ - private Long authTime; + private Long authTime = 5L; /** 回传配置 */ private PushProperties push; diff --git a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java index e5b1bcc02..f78dd87fb 100644 --- a/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java +++ b/blade-service/logpm-factory-data/logpm-factory-data-suofeiya/src/main/java/com/logpm/factorydata/suofeiya/service/impl/DeliveryNoteServiceImpl.java @@ -254,13 +254,13 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl factoryAuth = baseMapper.findFactoryAuth(companyCode); - if(CollUtil.isNotEmpty(factoryAuth)){ + if (CollUtil.isNotEmpty(factoryAuth)) { FactoryAuthVO authVO = factoryAuth.get(0); bladeRedis.setEx(key, JSONUtil.toJsonStr(authVO), Duration.ofDays(1)); return authVO; @@ -274,7 +274,7 @@ public class DeliveryNoteServiceImpl extends BaseServiceImpl Date: Mon, 30 Dec 2024 18:34:00 +0800 Subject: [PATCH 13/13] =?UTF-8?q?1.=E8=AE=A2=E5=8D=95=E6=95=B4=E4=BD=93?= =?UTF-8?q?=E6=97=B6=E6=95=88=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/ReportConfigOrderAllEntity.java | 26 ++ .../controller/ReportConfigController.java | 25 ++ .../controller/ReportTimeController.java | 15 + .../report/dto/DestinationWarehouseDTO.java | 13 + .../com/logpm/report/dto/ReportConfigDTO.java | 3 + .../com/logpm/report/dto/ReportTimeDTO.java | 14 + .../mapper/ReportConfigOrderAllMapper.java | 13 + .../mapper/ReportConfigOrderAllMapper.xml | 31 ++ .../logpm/report/mapper/ReportTimeMapper.java | 5 + .../logpm/report/mapper/ReportTimeMapper.xml | 302 ++++++++++++++---- .../service/IReportConfigOrderAllService.java | 14 + .../report/service/IReportTimeService.java | 4 + .../ReportConfigAllTrunklineServiceImpl.java | 51 +-- .../impl/ReportConfigOrderAllServiceImpl.java | 85 +++++ .../service/impl/ReportTimeServiceImpl.java | 98 +++++- .../logpm/report/vo/ReportOrderAllTimeVO.java | 103 ++++++ 16 files changed, 710 insertions(+), 92 deletions(-) create mode 100644 blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/ReportConfigOrderAllEntity.java create mode 100644 blade-service/logpm-report/src/main/java/com/logpm/report/dto/DestinationWarehouseDTO.java create mode 100644 blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.java create mode 100644 blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.xml create mode 100644 blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportConfigOrderAllService.java create mode 100644 blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigOrderAllServiceImpl.java create mode 100644 blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOrderAllTimeVO.java diff --git a/blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/ReportConfigOrderAllEntity.java b/blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/ReportConfigOrderAllEntity.java new file mode 100644 index 000000000..4f7e11199 --- /dev/null +++ b/blade-service-api/logpm-report-api/src/main/java/com/logpm/report/entity/ReportConfigOrderAllEntity.java @@ -0,0 +1,26 @@ +package com.logpm.report.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import lombok.*; +import org.springblade.core.tenant.mp.TenantEntity; + +@Data +@TableName("logpm_reportconfig_order_all") +@ApiModel(value = " ReportConfigOrderAll对象", description = "订单整体时效报表配置") +@EqualsAndHashCode(callSuper = true) +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class ReportConfigOrderAllEntity extends TenantEntity { + + private Long departureWarehouseId; + private String departureWarehouseName; + private Long destinationWarehouseId; + private String destinationWarehouseName; + + private String brand; + + private Integer dayTime; + +} diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportConfigController.java b/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportConfigController.java index 8facbf266..b414e9301 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportConfigController.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportConfigController.java @@ -24,6 +24,7 @@ public class ReportConfigController extends BladeController { private final IReportConfigDespatchService reportConfigDespatchService; private final IReportConfigTransferService reportConfigTransferService; private final IReportConfigAllTrunklineService reportConfigAllTrunklineService; + private final IReportConfigOrderAllService reportConfigOrderAllService; //-------------------------开单及时率 @@ -139,4 +140,28 @@ public class ReportConfigController extends BladeController { return reportConfigAllTrunklineService.deleteAllTrunklineConfig(reportConfigDTO); } + //--------------------订单整体准时 + + @PostMapping("/orderAllConfigPage") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "订单整体准时配置", notes = "订单整体准时配置") + public R orderAllConfigPage(@RequestBody ReportConfigDTO reportConfigDTO) { + return reportConfigOrderAllService.orderAllConfigPage(reportConfigDTO); + } + + @PostMapping("/addOrderAllConfig") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "新增订单整体准时配置", notes = "新增订单整体准时配置") + public R addOrderAllConfig(@RequestBody ReportConfigDTO reportConfigDTO) { + return reportConfigOrderAllService.addOrderAllConfig(reportConfigDTO); + } + + @PostMapping("/deleteOrderAllConfig") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "删除订单整体准时配置", notes = "删除订单整体准时配置") + public R deleteOrderAllConfig(@RequestBody ReportConfigDTO reportConfigDTO) { + return reportConfigOrderAllService.deleteOrderAllConfig(reportConfigDTO); + } + + } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java b/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java index 175eda99e..99fe27c3c 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportTimeController.java @@ -150,5 +150,20 @@ public class ReportTimeController extends BladeController { reportTimeService.zeroAllTrunklineTimeExport(reportTimeDTO,response); } + //-----------------------订单整体时效------------------------ + + @PostMapping("/orderAllTimePage") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "订单整体时效报表", notes = "订单整体时效报表") + public R orderAllTimePage(@RequestBody ReportTimeDTO reportTimeDTO) { + return reportTimeService.orderAllTimePage(reportTimeDTO); + } + + @PostMapping("/orderAllTimeExport") + @ApiOperationSupport(order = 1) + @ApiOperation(value = "订单整体时效导出", notes = "订单整体时效导出") + public void orderAllTimeExport(@RequestBody ReportTimeDTO reportTimeDTO, HttpServletResponse response) { + reportTimeService.orderAllTimeExport(reportTimeDTO,response); + } } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/DestinationWarehouseDTO.java b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/DestinationWarehouseDTO.java new file mode 100644 index 000000000..f07a6f9e6 --- /dev/null +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/DestinationWarehouseDTO.java @@ -0,0 +1,13 @@ +package com.logpm.report.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class DestinationWarehouseDTO implements Serializable { + + private Long warehouseId; + private String warehouseName; + +} diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportConfigDTO.java b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportConfigDTO.java index 4c5626efa..f194cbb8b 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportConfigDTO.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportConfigDTO.java @@ -21,12 +21,15 @@ public class ReportConfigDTO implements Serializable { private String brand; private Integer hoursTime; + private Integer dayTime; private Long id; private List departureWarehouseIds; private List destinationWarehouseIds; + private List destinationWarehouseDTOList; + private Long departureWarehouseId; private String departureWarehouseName; diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportTimeDTO.java b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportTimeDTO.java index d51a2fe8f..9cc4463e6 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportTimeDTO.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/dto/ReportTimeDTO.java @@ -25,5 +25,19 @@ public class ReportTimeDTO implements Serializable { private Date endTime; private Integer hoursTime; + private Integer dayTime; + + private String orderCode; + + private String waybillCode; + + private String brand; + + private String shipper; + private String consignee; + private String departureWarehouseName; + private String destinationWarehouseName; + private String trainNumber; + private String loadCode; } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.java b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.java new file mode 100644 index 000000000..1309a434d --- /dev/null +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.java @@ -0,0 +1,13 @@ +package com.logpm.report.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.logpm.report.dto.ReportConfigDTO; +import com.logpm.report.entity.ReportConfigOrderAllEntity; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +@Mapper +public interface ReportConfigOrderAllMapper extends BaseMapper { + IPage orderAllConfigPage(IPage page, @Param("param") ReportConfigDTO reportConfigDTO); +} diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.xml b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.xml new file mode 100644 index 000000000..7b0f89ba5 --- /dev/null +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportConfigOrderAllMapper.xml @@ -0,0 +1,31 @@ + + + + + + + diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.java b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.java index dd901db67..cff60a98c 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.java @@ -2,6 +2,7 @@ package com.logpm.report.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.report.dto.ReportTimeDTO; +import com.logpm.report.entity.ReportConfigOrderAllEntity; import com.logpm.report.vo.*; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -43,4 +44,8 @@ public interface ReportTimeMapper { IPage zeroAllTrunklineTimePage(IPage page, @Param("param") ReportTimeDTO reportTimeDTO); List zeroAllTrunklineTimeExport(@Param("param") ReportTimeDTO reportTimeDTO); + + IPage orderAllTimePage(IPage page, @Param("param") ReportTimeDTO reportTimeDTO); + + List orderAllTimeExport(@Param("param") ReportTimeDTO reportTimeDTO); } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml index 95b5c6570..10c11c201 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportTimeMapper.xml @@ -829,12 +829,10 @@ IFNULL(round(sum(IFNULL(t.sevenToTenNum,0))/sum(lww.total_count)*100,2),'0.00') sevenToTenArriveRate, sum(IFNULL(t.moreTenNum,0)) moreTenArriveNum, IFNULL(round(sum(IFNULL(t.moreTenNum,0))/sum(lww.total_count)*100,2),'0.00') moreTenArriveRate - from logpm_warehouse_waybill lww - left join logpm_warehouse_warehouse waw on waw.id = lww.departure_warehouse_id - left join (select ldpl.waybill_id, + from (select ldpl.waybill_id, sum(ldpl.quantity) totalNum, sum(TIMESTAMPDIFF(SECOND,ltad.create_time,ldpl.create_time )) timeSecond, - sum(if(ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL IFNULL(lrat.hours_time,0) HOUR ),1,0)) onTimeNum, + sum(if(ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL IFNULL(lrat.hours_time,#{param.hoursTime}) HOUR ),1,0)) onTimeNum, sum(if(ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL 24 HOUR ),1,0)) oneNum, sum(if(DATE_ADD( ltad.create_time, INTERVAL 24 HOUR ) <ldpl.create_time and ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL 48 HOUR ),1,0)) twoNum, sum(if(DATE_ADD( ltad.create_time, INTERVAL 48 HOUR )<ldpl.create_time and ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL 72 HOUR ),1,0)) threeNum, @@ -850,24 +848,6 @@ where ldpl.conditions != 3 and ldpl.send_warehouse_id != ldpl.accept_warehouse_id and ltad.create_time > '2024-10-22 00:00:00' - - and ltad.brand in - - #{item} - - - - and ldpl.send_warehouse_id in - - #{item} - - - - and ldpl.accept_warehouse_id in - - #{item} - - and ltad.create_time >= #{param.startTime} @@ -876,10 +856,10 @@ and ldpl.warehouse_id = ldpl.accept_warehouse_id and ldpl.warehouse_id != ldpl.send_warehouse_id - group by ldpl.waybill_id) t on t.waybill_id = lww.id - where lww.waybill_type = 1 - and lww.departure_warehouse_id != lww.destination_warehouse_id - and lww.create_time > '2024-10-22 00:00:00' + group by ldpl.waybill_id) t + left join logpm_warehouse_waybill lww on lww.id = t.waybill_id + left join logpm_warehouse_warehouse waw on waw.id = lww.departure_warehouse_id + where 1=1 and waw.business_line in @@ -887,29 +867,23 @@ - and lww.brand in + and ltad.brand in #{item} - and lww.departure_warehouse_id in + and ldpl.send_warehouse_id in #{item} - and lww.destination_warehouse_id in + and ldpl.accept_warehouse_id in #{item} - - and lww.create_time >= #{param.startTime} - - - and lww.create_time <= #{param.endTime} - group by waw.business_line, lww.departure_warehouse_name, lww.destination_warehouse_name, @@ -948,12 +922,10 @@ IFNULL(concat(round(sum(IFNULL(t.sevenToTenNum,0))/sum(lww.total_count)*100,2),'%'),'0.00%') sevenToTenArriveRate, sum(IFNULL(t.moreTenNum,0)) moreTenArriveNum, IFNULL(concat(round(sum(IFNULL(t.moreTenNum,0))/sum(lww.total_count)*100,2),'%'),'0.00%') moreTenArriveRate - from logpm_warehouse_waybill lww - left join logpm_warehouse_warehouse waw on waw.id = lww.departure_warehouse_id - left join (select ldpl.waybill_id, + from (select ldpl.waybill_id, sum(ldpl.quantity) totalNum, sum(TIMESTAMPDIFF(SECOND,ltad.create_time,ldpl.create_time )) timeSecond, - sum(if(ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL IFNULL(lrat.hours_time,0) HOUR ),1,0)) onTimeNum, + sum(if(ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL IFNULL(lrat.hours_time,#{param.hoursTime}) HOUR ),1,0)) onTimeNum, sum(if(ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL 24 HOUR ),1,0)) oneNum, sum(if(DATE_ADD( ltad.create_time, INTERVAL 24 HOUR ) <ldpl.create_time and ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL 48 HOUR ),1,0)) twoNum, sum(if(DATE_ADD( ltad.create_time, INTERVAL 48 HOUR )<ldpl.create_time and ldpl.create_time <= DATE_ADD( ltad.create_time, INTERVAL 72 HOUR ),1,0)) threeNum, @@ -969,24 +941,6 @@ where ldpl.conditions != 3 and ldpl.send_warehouse_id != ldpl.accept_warehouse_id and ltad.create_time > '2024-10-22 00:00:00' - - and ltad.brand in - - #{item} - - - - and ldpl.send_warehouse_id in - - #{item} - - - - and ldpl.accept_warehouse_id in - - #{item} - - and ltad.create_time >= #{param.startTime} @@ -995,10 +949,10 @@ and ldpl.warehouse_id = ldpl.accept_warehouse_id and ldpl.warehouse_id != ldpl.send_warehouse_id - group by ldpl.waybill_id) t on t.waybill_id = lww.id - where lww.waybill_type = 1 - and lww.departure_warehouse_id != lww.destination_warehouse_id - and lww.create_time > '2024-10-22 00:00:00' + group by ldpl.waybill_id) t + left join logpm_warehouse_waybill lww on lww.id = t.waybill_id + left join logpm_warehouse_warehouse waw on waw.id = lww.departure_warehouse_id + where 1=1 and waw.business_line in @@ -1006,29 +960,23 @@ - and lww.brand in + and ltad.brand in #{item} - and lww.departure_warehouse_id in + and ldpl.send_warehouse_id in #{item} - and lww.destination_warehouse_id in + and ldpl.accept_warehouse_id in #{item} - - and lww.create_time >= #{param.startTime} - - - and lww.create_time <= #{param.endTime} - group by waw.business_line, lww.departure_warehouse_name, lww.destination_warehouse_name, @@ -1399,4 +1347,218 @@ lww.brand + + + + + + diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportConfigOrderAllService.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportConfigOrderAllService.java new file mode 100644 index 000000000..a81dc6532 --- /dev/null +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportConfigOrderAllService.java @@ -0,0 +1,14 @@ +package com.logpm.report.service; + +import com.logpm.report.dto.ReportConfigDTO; +import com.logpm.report.entity.ReportConfigOrderAllEntity; +import org.springblade.core.mp.base.BaseService; +import org.springblade.core.tool.api.R; + +public interface IReportConfigOrderAllService extends BaseService { + R orderAllConfigPage(ReportConfigDTO reportConfigDTO); + + R addOrderAllConfig(ReportConfigDTO reportConfigDTO); + + R deleteOrderAllConfig(ReportConfigDTO reportConfigDTO); +} diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportTimeService.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportTimeService.java index b0590eb5f..52d062ff9 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportTimeService.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/IReportTimeService.java @@ -39,4 +39,8 @@ public interface IReportTimeService { R zeroAllTrunklineTimePage(ReportTimeDTO reportTimeDTO); void zeroAllTrunklineTimeExport(ReportTimeDTO reportTimeDTO, HttpServletResponse response); + + R orderAllTimePage(ReportTimeDTO reportTimeDTO); + + void orderAllTimeExport(ReportTimeDTO reportTimeDTO, HttpServletResponse response); } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigAllTrunklineServiceImpl.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigAllTrunklineServiceImpl.java index 65aa2dc69..eabb6a60e 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigAllTrunklineServiceImpl.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigAllTrunklineServiceImpl.java @@ -1,8 +1,10 @@ package com.logpm.report.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.logpm.report.dto.DestinationWarehouseDTO; import com.logpm.report.dto.ReportConfigDTO; import com.logpm.report.entity.ReportConfigAdvanceDetailOpenEntity; import com.logpm.report.entity.ReportConfigAllTrunklineEntity; @@ -14,6 +16,8 @@ import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; @Service @@ -35,27 +39,38 @@ public class ReportConfigAllTrunklineServiceImpl extends BaseServiceImpl destinationWarehouseDTOList = reportConfigDTO.getDestinationWarehouseDTOList(); String brand = reportConfigDTO.getBrand(); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("departure_warehouse_name",departureWarehouseName) - .eq("destination_warehouse_name",destinationWarehouseName) - .eq("is_deleted",0); - ReportConfigAllTrunklineEntity reportConfigAllTrunklineEntity = baseMapper.selectOne(queryWrapper); - if(!Objects.isNull(reportConfigAllTrunklineEntity)){ - reportConfigAllTrunklineEntity.setHoursTime(reportConfigDTO.getHoursTime()); - }else{ - reportConfigAllTrunklineEntity = ReportConfigAllTrunklineEntity.builder() - .departureWarehouseId(departureWarehouseId) - .departureWarehouseName(departureWarehouseName) - .destinationWarehouseId(destinationWarehouseId) - .destinationWarehouseName(destinationWarehouseName) - .hoursTime(reportConfigDTO.getHoursTime()) - .build(); + List list = new ArrayList<>(); + + destinationWarehouseDTOList.forEach(destinationWarehouseDTO -> { + Long destinationWarehouseId = destinationWarehouseDTO.getWarehouseId(); + String destinationWarehouseName = destinationWarehouseDTO.getWarehouseName(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name",departureWarehouseName) + .eq("destination_warehouse_name",destinationWarehouseName) + .eq("is_deleted",0); + ReportConfigAllTrunklineEntity reportConfigAllTrunklineEntity = baseMapper.selectOne(queryWrapper); + if(!Objects.isNull(reportConfigAllTrunklineEntity)){ + reportConfigAllTrunklineEntity.setHoursTime(reportConfigDTO.getHoursTime()); + }else{ + reportConfigAllTrunklineEntity = ReportConfigAllTrunklineEntity.builder() + .departureWarehouseId(departureWarehouseId) + .departureWarehouseName(departureWarehouseName) + .destinationWarehouseId(destinationWarehouseId) + .destinationWarehouseName(destinationWarehouseName) + .hoursTime(reportConfigDTO.getHoursTime()) + .build(); + } + + list.add(reportConfigAllTrunklineEntity); + + }); + if(CollUtil.isNotEmpty(list)){ + saveOrUpdateBatch(list); } - saveOrUpdate(reportConfigAllTrunklineEntity); return R.success("保存成功"); } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigOrderAllServiceImpl.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigOrderAllServiceImpl.java new file mode 100644 index 000000000..afc8f67dd --- /dev/null +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportConfigOrderAllServiceImpl.java @@ -0,0 +1,85 @@ +package com.logpm.report.service.impl; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.logpm.report.dto.DestinationWarehouseDTO; +import com.logpm.report.dto.ReportConfigDTO; +import com.logpm.report.entity.ReportConfigOrderAllEntity; +import com.logpm.report.mapper.ReportConfigOrderAllMapper; +import com.logpm.report.service.IReportConfigOrderAllService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.tool.api.R; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +@Service +@Slf4j +@AllArgsConstructor +public class ReportConfigOrderAllServiceImpl extends BaseServiceImpl implements IReportConfigOrderAllService { + @Override + public R orderAllConfigPage(ReportConfigDTO reportConfigDTO) { + IPage page = new Page<>(); + page.setCurrent(reportConfigDTO.getPageNum()); + page.setSize(reportConfigDTO.getPageSize()); + + IPage ipage = baseMapper.orderAllConfigPage(page, reportConfigDTO); + + return R.data(ipage); + } + + @Override + public R addOrderAllConfig(ReportConfigDTO reportConfigDTO) { + Long departureWarehouseId = reportConfigDTO.getDepartureWarehouseId(); + String departureWarehouseName = reportConfigDTO.getDepartureWarehouseName(); +// Long destinationWarehouseId = reportConfigDTO.getDestinationWarehouseId(); +// String destinationWarehouseName = reportConfigDTO.getDestinationWarehouseName(); + List destinationWarehouseDTOList = reportConfigDTO.getDestinationWarehouseDTOList(); + String brand = reportConfigDTO.getBrand(); + + List list = new ArrayList<>(); + + destinationWarehouseDTOList.forEach(destinationWarehouseDTO -> { + Long destinationWarehouseId = destinationWarehouseDTO.getWarehouseId(); + String destinationWarehouseName = destinationWarehouseDTO.getWarehouseName(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name",departureWarehouseName) + .eq("destination_warehouse_name",destinationWarehouseName) + .eq("is_deleted",0); + ReportConfigOrderAllEntity reportConfigOrderAllEntity = baseMapper.selectOne(queryWrapper); + if(!Objects.isNull(reportConfigOrderAllEntity)){ + reportConfigOrderAllEntity.setDayTime(reportConfigDTO.getDayTime()); + }else{ + reportConfigOrderAllEntity = ReportConfigOrderAllEntity.builder() + .departureWarehouseId(departureWarehouseId) + .departureWarehouseName(departureWarehouseName) + .destinationWarehouseId(destinationWarehouseId) + .destinationWarehouseName(destinationWarehouseName) + .dayTime(reportConfigDTO.getDayTime()) + .build(); + } + + list.add(reportConfigOrderAllEntity); + + }); + if(CollUtil.isNotEmpty(list)){ + saveOrUpdateBatch(list); + } + + return R.success("保存成功"); + } + + @Override + public R deleteOrderAllConfig(ReportConfigDTO reportConfigDTO) { + Long id = reportConfigDTO.getId(); + removeById(id); + return R.success("删除成功"); + } +} diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportTimeServiceImpl.java b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportTimeServiceImpl.java index 8f3653a9b..12f2ff6d0 100644 --- a/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportTimeServiceImpl.java +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportTimeServiceImpl.java @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.logpm.report.dto.ReportTimeDTO; -import com.logpm.report.entity.ReportConfigAdvanceDetailOpenEntity; -import com.logpm.report.entity.ReportConfigCheckWaybillEntity; -import com.logpm.report.entity.ReportConfigDespatchEntity; -import com.logpm.report.entity.ReportConfigTransferEntity; +import com.logpm.report.entity.*; import com.logpm.report.mapper.ReportTimeMapper; import com.logpm.report.service.*; import com.logpm.report.vo.*; @@ -32,6 +29,8 @@ public class ReportTimeServiceImpl implements IReportTimeService { private final IReportConfigCheckWaybillService checkWaybillService; private final IReportConfigDespatchService despatchService; private final IReportConfigTransferService transferService; + private final IReportConfigAllTrunklineService allTrunklineService; + private final IReportConfigOrderAllService orderAllService; @Override @@ -320,6 +319,17 @@ public class ReportTimeServiceImpl implements IReportTimeService { reportTimeDTO.setStartTime(CommonUtil.getStartByDateStr(reportTimeDTO.getStartTimeStr())); reportTimeDTO.setEndTime(CommonUtil.getEndByDateStr(reportTimeDTO.getEndTimeStr())); + reportTimeDTO.setHoursTime(0); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name","全部") + .eq("destination_warehouse_name","全部") + .eq("is_deleted",0); + ReportConfigAllTrunklineEntity allTrunklineEntity = allTrunklineService.getOne(queryWrapper); + if(!Objects.isNull(allTrunklineEntity)){ + reportTimeDTO.setHoursTime(allTrunklineEntity.getHoursTime()); + } + IPage iPage = reportTimeMapper.packageAllTrunklineTimePage(page,reportTimeDTO); @@ -331,6 +341,17 @@ public class ReportTimeServiceImpl implements IReportTimeService { reportTimeDTO.setStartTime(CommonUtil.getStartByDateStr(reportTimeDTO.getStartTimeStr())); reportTimeDTO.setEndTime(CommonUtil.getEndByDateStr(reportTimeDTO.getEndTimeStr())); + reportTimeDTO.setHoursTime(0); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name","全部") + .eq("destination_warehouse_name","全部") + .eq("is_deleted",0); + ReportConfigAllTrunklineEntity allTrunklineEntity = allTrunklineService.getOne(queryWrapper); + if(!Objects.isNull(allTrunklineEntity)){ + reportTimeDTO.setHoursTime(allTrunklineEntity.getHoursTime()); + } + List list = reportTimeMapper.packageAllTrunklineTimeExport(reportTimeDTO); //导出ls @@ -346,6 +367,18 @@ public class ReportTimeServiceImpl implements IReportTimeService { reportTimeDTO.setStartTime(CommonUtil.getStartByDateStr(reportTimeDTO.getStartTimeStr())); reportTimeDTO.setEndTime(CommonUtil.getEndByDateStr(reportTimeDTO.getEndTimeStr())); + reportTimeDTO.setHoursTime(0); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name","全部") + .eq("destination_warehouse_name","全部") + .eq("is_deleted",0); + ReportConfigAllTrunklineEntity allTrunklineEntity = allTrunklineService.getOne(queryWrapper); + if(!Objects.isNull(allTrunklineEntity)){ + reportTimeDTO.setHoursTime(allTrunklineEntity.getHoursTime()); + } + + IPage iPage = reportTimeMapper.zeroAllTrunklineTimePage(page,reportTimeDTO); @@ -357,9 +390,66 @@ public class ReportTimeServiceImpl implements IReportTimeService { reportTimeDTO.setStartTime(CommonUtil.getStartByDateStr(reportTimeDTO.getStartTimeStr())); reportTimeDTO.setEndTime(CommonUtil.getEndByDateStr(reportTimeDTO.getEndTimeStr())); + reportTimeDTO.setHoursTime(0); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name","全部") + .eq("destination_warehouse_name","全部") + .eq("is_deleted",0); + ReportConfigAllTrunklineEntity allTrunklineEntity = allTrunklineService.getOne(queryWrapper); + if(!Objects.isNull(allTrunklineEntity)){ + reportTimeDTO.setHoursTime(allTrunklineEntity.getHoursTime()); + } + List list = reportTimeMapper.zeroAllTrunklineTimeExport(reportTimeDTO); //导出ls ExcelUtil.export(response, "零担干线整体时效报表导出", "零担干线整体时效报表导出", list, ReportPackgeAllTrunklineTimeVO.class); } + + @Override + public R orderAllTimePage(ReportTimeDTO reportTimeDTO) { + IPage page = new Page<>(); + page.setCurrent(reportTimeDTO.getPageNum()); + page.setSize(reportTimeDTO.getPageSize()); + + reportTimeDTO.setStartTime(CommonUtil.getStartByDateStr(reportTimeDTO.getStartTimeStr())); + reportTimeDTO.setEndTime(CommonUtil.getEndByDateStr(reportTimeDTO.getEndTimeStr())); + + reportTimeDTO.setDayTime(0); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name","全部") + .eq("destination_warehouse_name","全部") + .eq("is_deleted",0); + ReportConfigOrderAllEntity orderAllEntity = orderAllService.getOne(queryWrapper); + if(!Objects.isNull(orderAllEntity)){ + reportTimeDTO.setDayTime(orderAllEntity.getDayTime()); + } + IPage iPage = reportTimeMapper.orderAllTimePage(page,reportTimeDTO); + + return R.data(iPage); + } + + @Override + public void orderAllTimeExport(ReportTimeDTO reportTimeDTO, HttpServletResponse response) { + reportTimeDTO.setStartTime(CommonUtil.getStartByDateStr(reportTimeDTO.getStartTimeStr())); + reportTimeDTO.setEndTime(CommonUtil.getEndByDateStr(reportTimeDTO.getEndTimeStr())); + + reportTimeDTO.setDayTime(0); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("departure_warehouse_name","全部") + .eq("destination_warehouse_name","全部") + .eq("is_deleted",0); + ReportConfigOrderAllEntity orderAllEntity = orderAllService.getOne(queryWrapper); + if(!Objects.isNull(orderAllEntity)){ + reportTimeDTO.setDayTime(orderAllEntity.getDayTime()); + } + + List list = reportTimeMapper.orderAllTimeExport(reportTimeDTO); + + //导出ls + ExcelUtil.export(response, "订单整体时效报表导出", "订单整体时效报表导出", list, ReportConfigOrderAllEntity.class); + } } diff --git a/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOrderAllTimeVO.java b/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOrderAllTimeVO.java new file mode 100644 index 000000000..ac7c8d462 --- /dev/null +++ b/blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportOrderAllTimeVO.java @@ -0,0 +1,103 @@ +package com.logpm.report.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class ReportOrderAllTimeVO implements Serializable { + + @ExcelProperty(value = "品牌") + private String brand; + + @ExcelProperty(value = "发货单位") + private String shipper; + + @ExcelProperty(value = "收货单位") + private String consignee; + + @ExcelProperty(value = "订单号") + private String orderCode; + + @ExcelProperty(value = "运单号") + private String waybillNo; + + @ExcelProperty(value = "订单件数") + private Integer totalNum; + + @ExcelProperty(value = "始发仓") + private String departureWarehouseName; + + @ExcelProperty(value = "目的仓") + private String destinationWarehouseName; + + @ExcelProperty(value = "客户车次号") + private String trainNumber; + + @ExcelProperty(value = "干线车次号") + private String loadCode; + + @ExcelProperty(value = "创建时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + @ExcelProperty(value = "始发仓入库时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date startIncomingTime; + + @ExcelProperty(value = "发车时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date startTime; + + @ExcelProperty(value = "目的仓入库") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date endIncomingTime; + + @ExcelProperty(value = "目的仓卸车确认时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date endUnloadTime; + + @ExcelProperty(value = "开单时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date openTime; + + @ExcelProperty(value = "配送计划时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date deliveryPlanTime; + + @ExcelProperty(value = "签收时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date signTime; + + @ExcelProperty(value = "复核时间") + @JsonFormat(locale = "zh", timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + private Date reviewTime; + + @ExcelProperty(value = "是否上传签收单") + private String isUploadSignOrder; + + @ExcelProperty(value = "是否上传摆放照") + private String isUploadPut; + + @ExcelProperty(value = "标准时效") + private Integer dayTime; + + @ExcelProperty(value = "实际时效") + private Integer realdayTime; + + @ExcelProperty(value = "延期时效") + private Integer delayTime; + + @ExcelProperty(value = "是否超时") + private String delayStatus; + + @ExcelProperty(value = "签收状态") + private String signStatus; + + @ExcelProperty(value = "签收件数") + private Integer signNum; + +}