Browse Source

Merge branch 'pre-production'

master
pref_mail@163.com 12 months ago
parent
commit
710fd1624c
  1. 3
      blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java
  2. 5
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  3. 11
      blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java
  4. 9
      blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java
  5. 4
      blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/BasicdataGoodsAllocationVO.java
  6. 3
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java
  7. 9
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAllocationMapper.xml
  8. 15
      blade-service/logpm-data-sharing/Dockerfile
  9. 56
      blade-service/logpm-data-sharing/pom.xml
  10. 16
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/DataSharingApplication.java
  11. 40
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/config/DataSharingConfiguration.java
  12. 50
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/MerchantController.java
  13. 27
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/dto/MerchantOrderDTO.java
  14. 60
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/launcher/DataSharingLauncherServiceImpl.java
  15. 44
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/mapper/MerchantMapeer.java
  16. 58
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/mapper/MerchantMapper.xml
  17. 21
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/pros/DataSharingProperties.java
  18. 19
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/MerchantService.java
  19. 50
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/impl/MerchantServiceImpl.java
  20. 19
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderPackageVO.java
  21. 25
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderVO.java
  22. 23
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderZeroVO.java
  23. 32
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantPackageVO.java
  24. 28
      blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantZeroDispatchVO.java
  25. 47
      blade-service/logpm-data-sharing/src/main/resources/application-dev.yml
  26. 45
      blade-service/logpm-data-sharing/src/main/resources/application-prod.yml
  27. 45
      blade-service/logpm-data-sharing/src/main/resources/application-test.yml
  28. 32
      blade-service/logpm-data-sharing/src/main/resources/application.yml
  29. 40
      blade-service/logpm-data-sharing/src/main/resources/logback.xml
  30. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java
  31. 10
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistrilbutionBillLadingController.java
  32. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistrilbutionBillLadingDTO.java
  33. 264
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionSignForStockArticleExcel.java
  34. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java
  35. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml
  36. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java
  37. 8
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistrilbutionBillLadingService.java
  38. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  39. 68
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  40. 257
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  41. 31
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java
  42. 43
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java
  43. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceMapper.xml
  44. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java
  45. 8
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
  46. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java
  47. 7
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml
  48. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java
  49. 107
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java
  50. 113
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenOrderToLoadListener.java
  51. 9
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderService.java
  52. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java
  53. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java
  54. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java
  55. 32
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  56. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java
  57. 161
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  58. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java
  59. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java
  60. 26
      blade-service/logpm-trunkline/src/main/resources/application-test.yml
  61. 14
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseGoodsAllocationController.java
  62. 3
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.java
  63. 20
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.xml
  64. 9
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseGoodsAllocationService.java
  65. 11
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseGoodsAllocationServiceImpl.java
  66. 1
      blade-service/pom.xml

3
blade-biz-common/src/main/java/org/springblade/common/constant/IncomingTypeEnum.java

@ -14,7 +14,8 @@ public enum IncomingTypeEnum {
BATCH_INCOMING(7, "批量卸车入库"),
UNLOAD_TRAY_INCOMING(8, "托盘卸车入库"),
UNLOAD_TRAY_ONE(9, "卸分一体"),
OPEN_TO_IN(10, "开单及入库");
OPEN_TO_IN(10, "开单及入库"),
FACTORY_TO_INCOMING(11, "工厂推送数据入库");
private Integer code;

5
blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java

@ -78,6 +78,11 @@ public interface ModuleNameConstant {
*/
String APPLICATION_REPORT_NAME = "logpm-report" + DEVAUTH;
/**
* 数据共享模块
*/
String APPLICATION_DATA_SHARING_NAME = "logpm-data-sharing" + DEVAUTH;
// ---------------------------工厂数据----------------------------------
/**
* 工厂数据基础模块

11
blade-biz-common/src/main/java/org/springblade/common/constant/RabbitConstant.java

@ -149,4 +149,15 @@ public interface RabbitConstant {
String SYNC_OLD_UPDOWN_DATA_EXCHANGE = "sync_old_updown_data_exchange" + ModuleNameConstant.DEVAUTH;
String SYNC_OLD_UPDOWN_DATA_ROUTING = "sync_old_updown_data_routing" + ModuleNameConstant.DEVAUTH;
/****************干线暂存单入库绑定装车记录队列******************/
String INCOMING_TO_LOAD_QUEUE = "incoming_to_load_queue" + ModuleNameConstant.DEVAUTH;
String INCOMING_TO_LOAD_EXCHANGE = "incoming_to_load_exchange" + ModuleNameConstant.DEVAUTH;
String INCOMING_TO_LOAD_ROUTING = "incoming_to_load_routing" + ModuleNameConstant.DEVAUTH;
/****************干线暂存单开单绑定装车记录队列******************/
String OPEN_ORDER_LOAD_SCAN_QUEUE = "open_order_load_scan_queue" + ModuleNameConstant.DEVAUTH;
String OPEN_ORDER_LOAD_SCAN_EXCHANGE = "open_order_load_scan_exchange" + ModuleNameConstant.DEVAUTH;
String OPEN_ORDER_LOAD_SCAN_ROUTING = "open_order_load_scan_routing" + ModuleNameConstant.DEVAUTH;
}

9
blade-biz-common/src/main/java/org/springblade/common/utils/CommonUtil.java

@ -258,4 +258,13 @@ public class CommonUtil {
return substring;
}
public static Date addDate(Date date, int second) {
if(Objects.isNull(date)){
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
}

4
blade-service-api/logpm-basicdata-api/src/main/java/com/logpm/basicdata/vo/BasicdataGoodsAllocationVO.java

@ -37,5 +37,9 @@ public class BasicdataGoodsAllocationVO extends BasicdataGoodsAllocationEntity {
private String goodsAreaName;
//货架名称
private String goodsShelfName;
//货区类型
private Integer areaType;
//货区类型名称
private String areaTypeName;
}

3
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/OpenOrderDTO.java

@ -99,4 +99,7 @@ public class OpenOrderDTO implements Serializable {
private String url;
}

9
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAllocationMapper.xml

@ -97,7 +97,14 @@
goods_allocation.template_id,
goods_shelf.goods_shelf_name AS goodsShelfName,
goods_area.headline AS goodsAreaName,
warehouse.name AS warehouseName
warehouse.name AS warehouseName,
goods_area.area_type AS area_type,
CASE goods_area.area_type
WHEN 1 THEN '备货库位'
WHEN 2 THEN '存储库位'
ELSE
'其他库位'
END areaTypeName
FROM
logpm_warehouse_goods_allocation AS goods_allocation
INNER JOIN logpm_warehouse_goods_shelf AS goods_shelf ON goods_allocation.goods_shelf_id = goods_shelf.id

15
blade-service/logpm-data-sharing/Dockerfile

@ -0,0 +1,15 @@
FROM bladex/alpine-java:openjdk8-openj9_cn_slim
MAINTAINER h5u@163.com
RUN mkdir -p /logpm/logpm-data-sharing
WORKDIR /logpm/logpm-data-sharing
EXPOSE 17010
ADD ./target/logpm-data-sharing.jar ./app.jar
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar","-Xms128m","-Xmx512m", "app.jar"]
CMD ["--spring.profiles.active=test"]

56
blade-service/logpm-data-sharing/pom.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>blade-service</artifactId>
<groupId>org.springblade</groupId>
<version>3.2.0.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>logpm-data-sharing</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-starter-swagger</artifactId>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-core-auto</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>logpm-basicdata-api</artifactId>
<version>3.2.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<skip>${docker.fabric.skip}</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

16
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/DataSharingApplication.java

@ -0,0 +1,16 @@
package com.logpm.datasharing;
import org.springblade.common.constant.ModuleNameConstant;
import org.springblade.core.cloud.client.BladeCloudApplication;
import org.springblade.core.launch.BladeApplication;
/**
* @author zqb
*/
@BladeCloudApplication
public class DataSharingApplication {
public static void main(String[] args) {
BladeApplication.run(ModuleNameConstant.APPLICATION_DATA_SHARING_NAME, DataSharingApplication.class, args);
}
}

40
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/config/DataSharingConfiguration.java

@ -0,0 +1,40 @@
/*
* 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.datasharing.config;
import com.logpm.datasharing.pros.DataSharingProperties;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* 配置feignmybatis包名properties
*
* @author chaos
*/
@Configuration(proxyBeanMethods = false)
@ComponentScan({"org.springblade", "com.logpm"})
@EnableFeignClients({"org.springblade", "com.logpm"})
@MapperScan({"org.springblade.**.mapper.**", "com.logpm.**.mapper.**"})
@EnableConfigurationProperties(DataSharingProperties.class)
public class DataSharingConfiguration {
}

50
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/controller/MerchantController.java

@ -0,0 +1,50 @@
/*
* 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.datasharing.controller;
import com.logpm.datasharing.service.MerchantService;
import com.logpm.datasharing.vo.MerchantOrderVO;
import io.swagger.annotations.Api;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* 商家获取信息 控制器
*
* @Author zqb
* @Date 2024/4/15
**/
@RestController
@AllArgsConstructor
@RequestMapping("/merchant")
@Api(value = "商家获取货物信息", tags = "商家获取货物信息")
public class MerchantController extends BladeController {
private final MerchantService merchantService;
@GetMapping("goods")
public R<MerchantOrderVO> goods(@RequestParam("contract_number") String contract_number, @RequestParam("auth_key") String auth_key) {
return R.data(merchantService.goods(contract_number,auth_key));
}
}

27
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/dto/MerchantOrderDTO.java

@ -0,0 +1,27 @@
package com.logpm.datasharing.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 订单信息
* @author zhaoqiaobo
* @create 2024-04-15
*/
@Data
public class MerchantOrderDTO implements Serializable {
@ApiModelProperty(value = "收件地址")
private String receiveAddress;
@ApiModelProperty(value = "是否零担订单")
private String zeroOrder;
@ApiModelProperty(value = "收件人电话")
private String receivePhone;
@ApiModelProperty(value = "订单合同号")
private String orderCode;
@ApiModelProperty(value = "订单总件数")
private String total;
}

60
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/launcher/DataSharingLauncherServiceImpl.java

@ -0,0 +1,60 @@
/*
* 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.datasharing.launcher;
import org.springblade.core.auto.service.AutoService;
import org.springblade.core.launch.constant.NacosConstant;
import org.springblade.core.launch.service.LauncherService;
import org.springblade.core.launch.utils.PropsUtil;
import org.springframework.boot.builder.SpringApplicationBuilder;
import java.util.Properties;
/**
* 启动参数拓展
*
* @author Chill
*/
@AutoService(LauncherService.class)
public class DataSharingLauncherServiceImpl implements LauncherService {
@Override
public void launcher(SpringApplicationBuilder builder, String appName, String profile, boolean isLocalDev) {
Properties props = System.getProperties();
// 开启多数据源
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "true");
// 指定注册配置信息
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].data-id", NacosConstant.dataId(appName, profile));
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].group", NacosConstant.NACOS_CONFIG_GROUP);
PropsUtil.setProperty(props, "spring.cloud.nacos.config.extension-configs[0].refresh", NacosConstant.NACOS_CONFIG_REFRESH);
// 指定注册IP
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.ip", "127.0.0.1");
// 指定注册端口
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.port", "8200");
// 自定义命名空间
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", LauncherConstant.NACOS_NAMESPACE);
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", LauncherConstant.NACOS_NAMESPACE);
// 自定义分组
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.group", NacosConstant.NACOS_CONFIG_GROUP);
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.group", NacosConstant.NACOS_CONFIG_GROUP);
}
@Override
public int getOrder() {
return 20;
}
}

44
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/mapper/MerchantMapeer.java

@ -0,0 +1,44 @@
package com.logpm.datasharing.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.datasharing.dto.MerchantOrderDTO;
import com.logpm.datasharing.vo.MerchantPackageVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:54
*/
@Mapper
public interface MerchantMapeer extends BaseMapper {
/**
* 根据合同号和仓库ID列表查找商家订单
*
* @param contractNumber 合同编号用于查找相关的商家订单
* @param warehouseId 仓库ID列表用于筛选在指定仓库中的订单
* @return 返回一个MerchantOrderDTO对象包含符合条件的商家订单信息
*/
MerchantOrderDTO findMerchantOrder(@Param("contractNumber") String contractNumber, @Param("warehouseId") List<String> warehouseId);
/**
* 根据授权密钥查找仓库ID列表
*
* @param authKey 授权密钥用于权限验证和特定仓库的访问
* @return 返回一个字符串列表包含匹配的仓库ID如果没有找到匹配的仓库ID则返回空列表
*/
List<String> findWarehouseIdByAuthKey(@Param("authKey") String authKey);
/**
* 根据合同编号查找包件信息
*
* @param contractNumber 合同编号用于查询特定合同下的包件信息
* @return 返回一个MerchantPackageVO类型的列表包含符合条件的包件信息
*/
List<MerchantPackageVO> findPackage(@Param("contractNumber") String contractNumber);
}

58
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/mapper/MerchantMapper.xml

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.logpm.datasharing.mapper.MerchantMapeer">
<select id="findMerchantOrder" resultType="com.logpm.datasharing.dto.MerchantOrderDTO">
select t.customer_address receiveAddress,
t.customer_telephone receivePhone,
t.order_code orderCode,
t.is_zero zeroOrder,
t.total_number total
from logpm_distribution_stock_article t
where t.order_code = #{contractNumber}
<if test="warehouseId != null and warehouseId.size() > 0">
and t.warehouse_id in
<foreach collection="warehouseId" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</if>
</select>
<select id="findWarehouseIdByAuthKey" resultType="java.lang.String">
select lbss.serve_warehouse_id
from logpm_basicdata_client t
left join logpm_basicdata_storage_services lbss on t.id = lbss.client_id
where t.client_code = #{authKey}
and t.is_deleted = 0
</select>
<select id="findPackage" resultType="com.logpm.datasharing.vo.MerchantPackageVO">
select lww.shipper_address sendAddress,
ldpl.waybill_number waybillNumber,
ldpl.order_package_code orderPackageCode,
ldpl.order_package_status orderPackageStatus,
t.update_time updateTime,
ifnull(driver.lname, driver.ltname) distributionName,
ifnull(driver.lphone, driver.ltphone) distributionPhone
from logpm_distribution_stock_article t
left join logpm_distribution_reservation_stockarticle ldrs
on ldrs.stock_article_id = t.id and ldrs.stock_article_status !=2
left join logpm_distribution_reservation ldr
on ldr.id = ldrs.reservation_id and ldr.reservation_status !=40
join logpm_distribution_reservation_package ldrp
on ldrp.reservation_id = ldr.id and ldrp.packet_bar_status != 2
left join logpm_distribution_parcel_list ldpl on ldpl.id = ldrp.parce_list_id
left join logpm_warehouse_waybill lww on lww.waybill_no = ldpl.waybill_number
left join logpm_distribution_signfor lds on lds.reservation_id = ldr.id
left join logpm_distribution_delivery_list lddl on lddl.id = lds.delivery_id
left join (select lddl.id,
group_concat(ldd.driver_name) lname,
group_concat(lddt.driver_name) ltname,
group_concat(ldd.driver_phone) lphone,
group_concat(lddt.driver_phone) ltphone
from logpm_distribution_delivery_list lddl
left join logpm_distribution_delivery_self ldd on ldd.delivery_id = lddl.id
left join logpm_distribution_delivery_tripartite lddt on lddt.delivery_id = lddl.id
group by lddl.id) driver on driver.id = lddl.id
where t.order_code = #{contractNumber}
</select>
</mapper>

21
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/pros/DataSharingProperties.java

@ -0,0 +1,21 @@
package com.logpm.datasharing.pros;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* FactoryProperties
*
* @author pref
*/
@Data
@ConfigurationProperties(prefix = "logpm")
public class DataSharingProperties {
/**
* 名称
*/
private String name;
}

19
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/MerchantService.java

@ -0,0 +1,19 @@
package com.logpm.datasharing.service;
import com.logpm.datasharing.vo.MerchantOrderVO;
/**
* @author zhaoqiaobo
* @create 2024-04-15
*/
public interface MerchantService {
/**
* 根据合同编号和授权密钥获取商户订单信息
*
* @param contractNumber 合同编号用于识别特定的合同
* @param authKey 授权密钥用于验证请求的合法性
* @return MerchantOrderVO 商户订单的视图对象包含订单的详细信息
*/
MerchantOrderVO goods(String contractNumber, String authKey);
}

50
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/service/impl/MerchantServiceImpl.java

@ -0,0 +1,50 @@
package com.logpm.datasharing.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.logpm.datasharing.dto.MerchantOrderDTO;
import com.logpm.datasharing.mapper.MerchantMapeer;
import com.logpm.datasharing.service.MerchantService;
import com.logpm.datasharing.vo.MerchantOrderPackageVO;
import com.logpm.datasharing.vo.MerchantOrderVO;
import com.logpm.datasharing.vo.MerchantPackageVO;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:52
*/
@Service
@AllArgsConstructor
public class MerchantServiceImpl implements MerchantService {
private final MerchantMapeer merchantMapeer;
@Override
public MerchantOrderVO goods(String contractNumber, String authKey) {
MerchantOrderDTO dto = null;
// 根据 authKey 获取仓库信息
List<String> warehouseId = merchantMapeer.findWarehouseIdByAuthKey(authKey);
if (CollUtil.isNotEmpty(warehouseId)) {
// 根据合同编号获取合同信息
dto = merchantMapeer.findMerchantOrder(contractNumber, warehouseId);
if (ObjectUtil.isNotEmpty(dto)) {
// TODO 这里分几种情况 零担订单,包件,库存品有数据/无数据 目前只实现了包件,其他的后续处理
// 零担订单
// 定制品
// 包件/库存品
List<MerchantPackageVO> packageVO = merchantMapeer.findPackage(contractNumber);
MerchantOrderPackageVO orderPackageVO = new MerchantOrderPackageVO();
BeanUtil.copyProperties(dto, orderPackageVO);
orderPackageVO.setPackageInfor(packageVO);
return orderPackageVO;
}
}
return null;
}
}

19
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderPackageVO.java

@ -0,0 +1,19 @@
package com.logpm.datasharing.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* 订单信息 包件
* @author zhaoqiaobo
* @create 2024-04-15
*/
@Data
public class MerchantOrderPackageVO extends MerchantOrderVO {
@ApiModelProperty(value = "包件信息")
private List<MerchantPackageVO> packageInfor;
}

25
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderVO.java

@ -0,0 +1,25 @@
package com.logpm.datasharing.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 订单信息
* @author zhaoqiaobo
* @create 2024-04-15
*/
@Data
public class MerchantOrderVO implements Serializable {
@ApiModelProperty(value = "收件地址")
private String receiveAddress;
@ApiModelProperty(value = "收件人电话")
private String receivePhone;
@ApiModelProperty(value = "订单合同号")
private String orderCode;
@ApiModelProperty(value = "订单总件数")
private String total;
}

23
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantOrderZeroVO.java

@ -0,0 +1,23 @@
package com.logpm.datasharing.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* 订单信息 包件
*
* @author zhaoqiaobo
* @create 2024-04-15
*/
@Data
public class MerchantOrderZeroVO extends MerchantOrderVO {
@ApiModelProperty(value = "零担在库数")
private String stockTotal;
@ApiModelProperty(value = "零担配送信息")
private List<MerchantZeroDispatchVO> packageInfor;
}

32
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantPackageVO.java

@ -0,0 +1,32 @@
package com.logpm.datasharing.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 订单包件信息
*
* @author zhaoqiaobo
* @create 2024-04-15
*/
@Data
public class MerchantPackageVO implements Serializable {
@ApiModelProperty(value = "发货地址")
private String sendAddress;
@ApiModelProperty(value = "快递单号【运单号】")
private String waybillNumber;
@ApiModelProperty(value = "包件码")
private String orderPackageCode;
@ApiModelProperty(value = "包件状态 20 入库 70 签收")
private String orderPackageStatus;
@ApiModelProperty(value = "更新时间")
private String updateTime;
@ApiModelProperty(value = "配送人姓名")
private String distributionName;
@ApiModelProperty(value = "配送人联系电话")
private String distributionPhone;
}

28
blade-service/logpm-data-sharing/src/main/java/com/logpm/datasharing/vo/MerchantZeroDispatchVO.java

@ -0,0 +1,28 @@
package com.logpm.datasharing.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 订单包件信息
*
* @author zhaoqiaobo
* @create 2024-04-15
*/
@Data
public class MerchantZeroDispatchVO implements Serializable {
@ApiModelProperty(value = "发货地址")
private String sendAddress;
@ApiModelProperty(value = "快递单号【运单号】")
private String waybillNumber;
@ApiModelProperty(value = "配送数量")
private String dispatchNumber;
@ApiModelProperty(value = "配送人姓名")
private String distributionName;
@ApiModelProperty(value = "配送人联系电话")
private String distributionPhone;
}

47
blade-service/logpm-data-sharing/src/main/resources/application-dev.yml

@ -0,0 +1,47 @@
#服务器端口
server:
port: 17010
#zb:
# enable: false
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:
#通用校验配置
validation-query: select 1
#启用sql日志拦截器
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.datasharing.master.url}
username: ${blade.datasource.datasharing.master.username}
password: ${blade.datasource.datasharing.master.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.datasharing.slave.url}
username: ${blade.datasource.datasharing.slave.username}
password: ${blade.datasource.datasharing.slave.password}

45
blade-service/logpm-data-sharing/src/main/resources/application-prod.yml

@ -0,0 +1,45 @@
#服务器端口
server:
port: 17010
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:
#通用校验配置
validation-query: select 1
#启用sql日志拦截器
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.datasharing.master.url}
username: ${blade.datasource.datasharing.master.username}
password: ${blade.datasource.datasharing.master.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.datasharing.slave.url}
username: ${blade.datasource.datasharing.slave.username}
password: ${blade.datasource.datasharing.slave.password}

45
blade-service/logpm-data-sharing/src/main/resources/application-test.yml

@ -0,0 +1,45 @@
#服务器端口
server:
port: 17010
#数据源配置
#spring:
# datasource:
# url: ${blade.datasource.dev.url}
# username: ${blade.datasource.dev.username}
# password: ${blade.datasource.dev.password}
spring:
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource:
dynamic:
druid:
#通用校验配置
validation-query: select 1
#启用sql日志拦截器
proxy-filters:
- sqlLogInterceptor
#设置默认的数据源或者数据源组,默认值即为master
primary: master
datasource:
master:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.datasharing.master.url}
username: ${blade.datasource.datasharing.master.username}
password: ${blade.datasource.datasharing.master.password}
slave:
druid:
#独立校验配置
validation-query: select 1
#oracle校验
#validation-query: select 1 from dual
url: ${blade.datasource.datasharing.slave.url}
username: ${blade.datasource.datasharing.slave.username}
password: ${blade.datasource.datasharing.slave.password}

32
blade-service/logpm-data-sharing/src/main/resources/application.yml

@ -0,0 +1,32 @@
#mybatis-plus配置
mybatis-plus:
mapper-locations: classpath:com/logpm/**/mapper/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.logpm.**.entity
#swagger扫描路径配置
swagger:
base-packages:
- org.springblade
- com.logpm
#oss配置
oss:
enabled: true
name: minio
tenant-mode: false
endpoint: http://8.137.14.82:9000
access-key: minio
secret-key: 123123123
bucket-name: bladex
logging:
config: classpath:logback.xml
spring:
main:
allow-circular-references: true

40
blade-service/logpm-data-sharing/src/main/resources/logback.xml

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" debug="false">
<contextName>logback</contextName>
<property name="log.path" value="./data/logpm-basic/logs/logs.log"/>
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n
</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
</configuration>

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java

@ -23,6 +23,7 @@ import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionSignForStockArticleExcel;
import com.logpm.distribution.excel.DistributionStockArticleExcel;
import com.logpm.distribution.excel.DistributionStockArticleImporter;
import com.logpm.distribution.service.IDistributionOrderCustomerLogService;
@ -561,15 +562,27 @@ public class DistributionStockArticleController extends BladeController {
/**
* 配送在库订单 分页
* 已签收订单
*/
@GetMapping("/signforList")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionStockArticle")
@ApiOperation(value = "已签收订单", notes = "传入distributionStockArticle")
public R<IPage<DistributionSignforStockArticleVO>> signforList(@ApiIgnore @RequestParam Map<String, Object> distributionStockArticle, Query query) {
IPage<DistributionSignforStockArticleVO> pages = distributionStockArticleService.pageSignforListtOwe(Condition.getPage(query), distributionStockArticle);
return R.data(pages);
}
/**
* 已签收订单 导出
*/
@GetMapping("/export-signforDistributionStockArticleList")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "已签收订单 导出", notes = "传入distributionStockArticle")
public void exportSignforDistributionStockArticleList(@ApiIgnore @RequestParam Map<String, Object> distributionStockArticle, Query query,HttpServletResponse response) {
List<DistributionSignForStockArticleExcel> list = distributionStockArticleService.exportSignforDistributionStockArticleList(distributionStockArticle,Condition.getPage(query));
ExcelUtil.export(response, "在库订单明细" + DateUtil.time(), "在库订单明细", list, DistributionSignForStockArticleExcel.class);
}
}

10
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistrilbutionBillLadingController.java

@ -338,6 +338,16 @@ public class DistrilbutionBillLadingController extends BladeController {
return R.status(distrilbutionBillLadingService.deleteLogic(Func.toLongList(ids)));
}
/**
* 批量签收定制品
*/
@PostMapping("/batchSign")
@ApiOperationSupport(order = 7)
@ApiOperation(value = "批量签收定制品", notes = "传入ids")
public R batchSign( @RequestParam DistrilbutionBillLadingDTO distrilbutionBillLading) {
return distrilbutionBillLadingService.batchSign(distrilbutionBillLading);
}

3
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/DistrilbutionBillLadingDTO.java

@ -167,6 +167,9 @@ public class DistrilbutionBillLadingDTO extends DistrilbutionBillLadingEntity {
private List<Print> printList;
private List<Long> warehouseIdList;
private String packageIds;
// 1 不是零担 2 是零担
private String zeroType;

264
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/excel/DistributionSignForStockArticleExcel.java

@ -0,0 +1,264 @@
/*
* 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.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 配送在库订单 Excel实体类
*
* @author cyz
* @since 2023-06-13
*/
@Data
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
public class DistributionSignForStockArticleExcel implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 运单号
*/
@ColumnWidth(20)
@ExcelProperty("运单号")
private String waybillNumber;
/**
* 服务号
*/
@ColumnWidth(20)
@ExcelProperty("服务号")
private String serviceNumber;
/**
* 订单自编号
*/
@ColumnWidth(20)
@ExcelProperty("订单自编号")
private String orderCode;
/**
* 商场名称
*/
@ColumnWidth(20)
@ExcelProperty("商场名称")
private String mallName;
/**
* 仓库名称
*/
@ColumnWidth(20)
@ExcelProperty("仓库名称")
private String warehouseName;
/**
* 最新入库时间
*/
@ColumnWidth(20)
@ExcelProperty("最新入库时间")
private Date warehouseEntryTime;
/**
* 收货单位
*/
@ColumnWidth(20)
@ExcelProperty("收货单位")
private String consigneeUnit;
/**
* 运单收货人
*/
@ColumnWidth(20)
@ExcelProperty("运单收货人")
private String consigneePerson;
/**
* 品牌
*/
@ColumnWidth(20)
@ExcelProperty("品牌")
private String brand;
/**
* 总数量
*/
@ColumnWidth(20)
@ExcelProperty("总数量")
private Integer totalNumber;
/**
* 在库数
*/
@ColumnWidth(20)
@ExcelProperty("在库数")
private Integer handQuantity;
/**
* 配送数量
*/
@ColumnWidth(20)
@ExcelProperty("配送数量")
private Integer deliveryNumber;
/**
* 出库数
*/
@ColumnWidth(20)
@ExcelProperty("出库数")
private Integer signForNumber;
/**
* 备货数
*/
@ColumnWidth(20)
@ExcelProperty("备货数")
private Integer stockUpNumber;
/**
* 预约数
*/
@ColumnWidth(20)
@ExcelProperty("预约数")
private Integer reservationNumber;
/**
* 订单状态
*/
@ColumnWidth(20)
@ExcelProperty("订单状态")
private String orderStatusName;
/**
* 是否零担
*/
@ColumnWidth(20)
@ExcelProperty("是否零担")
private String isZeroName;
/**
* 预约状态
*/
@ColumnWidth(20)
@ExcelProperty("预约状态")
private String orderReservationStatusName;
/**
* 是否齐套
*/
@ColumnWidth(20)
@ExcelProperty("是否齐套")
private String isCompleteSet;
/**
* 服务类型
*/
@ColumnWidth(20)
@ExcelProperty("服务类型")
private String typeServiceName;
/**
* 预约信息
*/
@ColumnWidth(20)
@ExcelProperty("预约信息")
private String reservationInfo;
/**
* 车次信息
*/
@ColumnWidth(20)
@ExcelProperty("车次信息")
private String deliveryListInfo;
/**
* 司机信息
*/
@ColumnWidth(20)
@ExcelProperty("司机信息")
private String driverName;
/**
* 车辆信息
*/
@ColumnWidth(20)
@ExcelProperty("车辆信息")
private String vehicleName;
/**
* 审核人
*/
@ColumnWidth(20)
@ExcelProperty("审核人")
private String examineUserNames;
/**
* 最早入库时间
*/
@ColumnWidth(20)
@ExcelProperty("最早入库时间")
private Date earliestWarehouseEntryTime;
/**
* 创建时间
*/
@ColumnWidth(20)
@ExcelProperty("创建时间")
private Date createTime;
/**
* 签收扫描时间
*/
@ColumnWidth(20)
@ExcelProperty("签收扫描时间")
private Date scanSigningTime;
// /**
// * 创建人
// */
// @ColumnWidth(20)
// @ExcelProperty("创建人")
// private Long createUser;
/**
* 创建人
*/
@ColumnWidth(20)
@ExcelProperty("创建人")
private String createUserName;
/**
* 复核时间
*/
@ColumnWidth(20)
@ExcelProperty("复核时间")
private Date signinTime;
}

3
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java

@ -183,6 +183,9 @@ public class DistributionParcelListClient implements IDistributionParcelListClie
@PostMapping(API_PREFIX+"/update")
public void update(DistributionParcelListEntity distributionParcelListEntity) {
distributionParcelListService.updateById(distributionParcelListEntity);
String orderCode = distributionParcelListEntity.getOrderCode();
Long warehouseId = distributionParcelListEntity.getWarehouseId();
distributionStockArticleService.updateOrderInfo(orderCode,warehouseId);
}

2
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillStockMapper.xml

@ -283,7 +283,7 @@
LEFT JOIN logpm_distribution_stock lds on lds.stock_article = ldbs.stock_article_id
LEFT JOIN logpm_distrilbution_bill_lading ldbl ON lds.stock_article = ldbl.stock_article_id
<where>
ldbs.is_deleted = 0 and ldbs.bill_lading_id = #{param.billLadingId} and ldbs.order_status in (1,2)
ldbs.is_deleted = 0 and ldbs.bill_lading_id = #{param.billLadingId} and ldbs.order_status in (1,3)
</where>
</select>

9
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java

@ -21,6 +21,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.dto.app.queryOrderDTO;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionSignForStockArticleExcel;
import com.logpm.distribution.excel.DistributionStockArticleExcel;
import com.logpm.distribution.vo.*;
import com.logpm.distribution.vo.app.queryOrderVO;
@ -255,4 +256,12 @@ public interface IDistributionStockArticleService extends BaseService<Distributi
void updateAllOrderTotalNum(String orderCode, Integer total);
/**
* 查询已签收订单 导出
* @param distributionStockArticle
* @param page
* @return
*/
List<DistributionSignForStockArticleExcel> exportSignforDistributionStockArticleList(Map<String, Object> distributionStockArticle, IPage<DistributionSignforStockArticleVO> page);
}

8
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistrilbutionBillLadingService.java

@ -248,4 +248,12 @@ public interface IDistrilbutionBillLadingService extends BaseService<Distrilbuti
* @return
*/
List<DistributionStockupOrderListVO> selectBillLadingZeroPackageList(Long reservationId);
/**
* 自提批量签收定制品
* @param distrilbutionBillLading
* @return
*/
R batchSign(DistrilbutionBillLadingDTO distrilbutionBillLading);
}

5
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java

@ -4419,6 +4419,11 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
log.error(method + "批量签收存在异常包件:{}", reservationEntity);
return R.fail("存在异常包件,请联系文员审核后操作");
}
if (SignforStatusConstant.yiqianshou.getValue().equals(distributionSignforEntity.getDriverSigning())){
//存在异常包件 无法进行批量签收
log.error(method + "客户已上传图片进行签收:{}", reservationEntity);
return R.fail("客户已完成图片上传,无法执行该操作");
}
//获取计划配送用户司机
DistributionDeliveryListEntity distributionDeliveryListEntity = distributionDeliveryListMapper.selectById(distributionSignfor.getDeliveryId());

68
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java

@ -34,6 +34,7 @@ import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.dto.DistributionStockArticleOweDTO;
import com.logpm.distribution.dto.app.queryOrderDTO;
import com.logpm.distribution.entity.*;
import com.logpm.distribution.excel.DistributionSignForStockArticleExcel;
import com.logpm.distribution.excel.DistributionStockArticleExcel;
import com.logpm.distribution.mapper.*;
import com.logpm.distribution.service.*;
@ -2030,6 +2031,73 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
baseMapper.updateAllOrderTotalNum(orderCode,total);
}
/**
* @param distributionStockArticle
* @param page
* @return
*/
@Override
public List<DistributionSignForStockArticleExcel> exportSignforDistributionStockArticleList(Map<String, Object> distributionStockArticle, IPage<DistributionSignforStockArticleVO> page) {
DistributionStockArticleOweDTO stockArticleEntity = JSONObject.parseObject(JSONObject.toJSONString(distributionStockArticle), DistributionStockArticleOweDTO.class);
if (Func.isNotEmpty(distributionStockArticle.get("typeServer"))) {
stockArticleEntity.setTypeService((String) distributionStockArticle.get("typeServer"));
}
if (Func.isNotEmpty(stockArticleEntity.getOrderCodeNum())) {
String anumbering = stockArticleEntity.getOrderCodeNum().trim();
List<String> list = CommonUtil.stringNum(anumbering);
if (list.size() > 1) {
stockArticleEntity.setOrderCodeNumList(list);
} else {
stockArticleEntity.setOrderCodeNumLike(anumbering);
}
}
if (Func.isNotEmpty(stockArticleEntity.getWaybillNum())) {
String waybill = stockArticleEntity.getWaybillNum().trim();
List<String> list = CommonUtil.stringNum(waybill);
if (list.size() > 1) {
stockArticleEntity.setWaybillNumList(list);
} else {
stockArticleEntity.setWaybillNumLike(waybill);
}
}
if (ObjectUtil.isNotEmpty(stockArticleEntity.getIds())) {
String ids = stockArticleEntity.getIds().trim();
List<String> list = CommonUtil.stringNum(ids);
if (list.size() > 1) {
stockArticleEntity.setIdsList(list);
} else {
stockArticleEntity.setIdsLike(ids);
}
}
List<BasicdataWarehouseEntity> myWarehouseList = warehouseClient.getMyWarehouseList();
BasicdataWarehouseEntity currentWarehouse = warehouseClient.getMyCurrentWarehouse();
List<Long> collect = myWarehouseList.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList());
if (collect.size() > 1) {
stockArticleEntity.setWarehouseIdList(collect);
} else if (collect.size() == 1) {
stockArticleEntity.setWarehouseId(collect.get(0));
}
if (Func.isNotEmpty(currentWarehouse)){
stockArticleEntity.setWarehouseIdList(null);
stockArticleEntity.setWarehouseId(currentWarehouse.getId());
}
IPage<DistributionSignforStockArticleVO> distributionStockArticleEntityIPage = baseMapper.pageSignforListOwe(page, stockArticleEntity);
//处理创建人
List<DistributionSignForStockArticleExcel> signForStockArticleExcels = new ArrayList<>();
distributionStockArticleEntityIPage.getRecords().forEach(a -> {
if (Func.isNotEmpty(a.getCreateUser())) {
R<User> userR = userClient.userInfoById(a.getCreateUser());
a.setCreateUserName(userR.getData().getName());
}
DistributionSignForStockArticleExcel stockArticleExcel = BeanUtil.copy(a, DistributionSignForStockArticleExcel.class);
signForStockArticleExcels.add(stockArticleExcel);
});
return signForStockArticleExcels;
}
@Override
public R findEditCustomerLog(Long orderId) {

257
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java

@ -1014,6 +1014,263 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return baseMapper.selectBillLadingZeroPackageList(reservationId);
}
/**
* @param distrilbutionBillLading
* @return
*/
@Override
@Transactional
public R batchSign(DistrilbutionBillLadingDTO distrilbutionBillLading) {
String method = "###################DistributionBillLadingServiceImpl.batchSign";
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)){
log.error(method+"未获取到当前仓库信息");
return R.fail(403,"未授权!!");
}
if (Objects.isNull(distrilbutionBillLading.getId())){
log.error(method+"参数缺少Id:{}",distrilbutionBillLading);
return R.fail("请联系管理员处理");
}
if (Objects.isNull(distrilbutionBillLading.getPackageIds())){
log.error(method+"参数缺少PackageIds:{}",distrilbutionBillLading);
return R.fail("请联系管理员处理");
}
//查询选择包件是否存在有效数据
List<Long> list = Func.toLongList(distrilbutionBillLading.getPackageIds());
List<DistributionParcelListEntity> distributionParcelListEntities = distributionParcelListService.listByIds(list);
if (distributionParcelListEntities.isEmpty()){
//查询包件信息失败
log.error(method+"查询包件信息失败PackageIds:{}",distrilbutionBillLading.getPackageIds());
return R.fail("当前勾选存在包件数据错误,请联系管理员处理");
}
//校验包件是否具备被签收的性质
if (distributionParcelListEntities.stream().anyMatch(p-> !OrderPackageStatusConstant.yiruku.getValue().equals(p.getOrderPackageStatus()))) {
String collect = distributionParcelListEntities.stream().filter(p -> !OrderPackageStatusConstant.yiruku.getValue().equals(p.getOrderPackageStatus())).map(DistributionParcelListEntity::getOrderPackageCode).collect(Collectors.joining(","));
log.error(method+"自提签收包件失败,不在库包件进行签收orderPackageCode:{}",collect);
return R.fail("当前勾选存在包件不在库,请核对和进行操作");
}
//进行订制品和零担的区分
Map<Integer, List<DistributionParcelListEntity>> packageMap = distributionParcelListEntities.stream().collect(Collectors.groupingBy(DistributionParcelListEntity::getConditions));
List<DistributionBillLadingScanEntity> ladingScanEntities = new ArrayList<>();
if (!packageMap.isEmpty()){
// packageMap.forEach((k,v)->{
// switch (k){
// case 1:
// //定制品
// for (DistributionParcelListEntity parcelListEntity : v) {
// DistributionBillLadingScanEntity distributionBillLadingScanEntity = new DistributionBillLadingScanEntity();
// distributionBillLadingScanEntity.setPacketBarCode(parcelListEntity.getOrderPackageCode());
// distributionBillLadingScanEntity.setScanType(3);
// distributionBillLadingScanEntity.setParcelListId(parcelListEntity.getId());
// distributionBillLadingScanEntity.setOrderSelfNumbering(parcelListEntity.getOrderCode());
// distributionBillLadingScanEntity.setStockArticleId(parcelListEntity.getStockArticleId());
// distributionBillLadingScanEntity.setBillLadingId(distrilbutionBillLading.getId());
// distributionBillLadingScanEntity.setMaterialType("2");
// distributionBillLadingScanEntity.setQuantity(parcelListEntity.getQuantity());
// ladingScanEntities.add(distributionBillLadingScanEntity);
// //修改包件状态
// distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>update().lambda()
// .eq(DistributionParcelListEntity::getId,parcelListEntity.getId())
// .set(DistributionParcelListEntity::getOrderPackageReservationStatus,OrderPackageReservationStatusConstant.yiyueyue.getValue())
// .set(DistributionParcelListEntity::getOrderPackageLoadingStatus,OrderPackageLoadingStatusConstant.yizhuangche.getValue())
// .set(DistributionParcelListEntity::getOrderPackageStatus,OrderPackageStatusConstant.yiqianshou.getValue())
// );
// //维护订单
// orderCodes.add(parcelListEntity.getOrderCode());
// }
// break;
// case 2:
// //零担
// for (DistributionParcelListEntity parcelListEntity : v) {
// //查询计划零担数量
// DistributionReservationZeroPackageEntity packageEntity = distributionZeroPackageService.getOne(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
// .eq(DistributionReservationZeroPackageEntity::getReservationId, distrilbutionBillLading.getId())
// .eq(DistributionReservationZeroPackageEntity::getType, "3")
// .eq(DistributionReservationZeroPackageEntity::getParcelListId, parcelListEntity.getId())
// .ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
// );
// //维护零担品类在库信息
// DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
// .eq(DistributionParcelNumberEntity::getParcelListId, parcelListEntity.getId())
// .eq(DistributionParcelNumberEntity::getStockArticleId, parcelListEntity.getStockArticleId())
// );
// //零担在库数不足进行签收
// if (distributionParcelNumberEntity.getHandQuantity() < packageEntity.getQuantity()){
// log.info(method+"零担签收数量不足,计划数量:{},在库数量:{}",packageEntity.getQuantity(),distributionParcelNumberEntity.getHandQuantity());
// throw new RuntimeException("零担在库数不足此次签收!!");
// }
// DistributionBillLadingScanEntity distributionBillLadingScanEntity = new DistributionBillLadingScanEntity();
// distributionBillLadingScanEntity.setPacketBarCode(parcelListEntity.getOrderPackageCode());
// distributionBillLadingScanEntity.setScanType(3);
// distributionBillLadingScanEntity.setParcelListId(parcelListEntity.getId());
// distributionBillLadingScanEntity.setOrderSelfNumbering(parcelListEntity.getOrderCode());
// distributionBillLadingScanEntity.setStockArticleId(parcelListEntity.getStockArticleId());
// distributionBillLadingScanEntity.setBillLadingId(distrilbutionBillLading.getId());
// distributionBillLadingScanEntity.setMaterialType("3");
// distributionBillLadingScanEntity.setQuantity(packageEntity.getQuantity());
// ladingScanEntities.add(distributionBillLadingScanEntity);
// //维护零担在库信息
// int newHandQuantity = distributionParcelNumberEntity.getHandQuantity() - packageEntity.getQuantity();
// int newDeliveryQuantity = distributionParcelNumberEntity.getDeliveryQuantity() - packageEntity.getQuantity();
// int newOutboundQuantity = distributionParcelNumberEntity.getOutboundQuantity() + packageEntity.getQuantity();
// int newSigninQuantity = distributionParcelNumberEntity.getSigninQuantity() + packageEntity.getQuantity();
// log.info(method+"维护前零担品类在库数量,在库数量:{},冻结数量:{},出库数量:{},签收数量:{}",
// distributionParcelNumberEntity.getHandQuantity(),
// distributionParcelNumberEntity.getDeliveryQuantity(),
// distributionParcelNumberEntity.getOutboundQuantity(),
// distributionParcelNumberEntity.getSigninQuantity());
// //修改零担品类
// distributionParcelNumberEntity.setHandQuantity(newHandQuantity);
// distributionParcelNumberEntity.setDeliveryQuantity(newDeliveryQuantity);
// distributionParcelNumberEntity.setOutboundQuantity(newOutboundQuantity);
// distributionParcelNumberEntity.setSigninQuantity(newSigninQuantity);
// log.info(method+"维护后零担品类在库数量,在库数量:{},冻结数量:{},出库数量:{},签收数量:{}",
// distributionParcelNumberEntity.getHandQuantity(),
// distributionParcelNumberEntity.getDeliveryQuantity(),
// distributionParcelNumberEntity.getOutboundQuantity(),
// distributionParcelNumberEntity.getSigninQuantity());
// distributionParcelNumberService.updateById(distributionParcelNumberEntity);
// if (newOutboundQuantity == parcelListEntity.getQuantity()){
// //全部出库
// parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yichuku.getValue());
// parcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue());
// parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// }
// if (newSigninQuantity == parcelListEntity.getQuantity()){
// //全部签收
// parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue());
// parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
// }
// distributionParcelListService.updateById(parcelListEntity);
// orderCodes.add(parcelListEntity.getOrderCode());
// }
// break;
// }
//
// });
ladingScanEntities = handleSignPackage(packageMap, distrilbutionBillLading.getId(), myCurrentWarehouse.getId());
if (!ladingScanEntities.isEmpty()){
// 进行签收扫描数据补录
distributionBillLadingScanService.saveBatch(ladingScanEntities);
}
}
return R.success("操作成功");
}
public List<DistributionBillLadingScanEntity> handleSignPackage(Map<Integer, List<DistributionParcelListEntity>> packageMap,Long id,Long warehouseId){
String method = "###################DistributionBillLadingServiceImpl.handleSignPackage";
List<DistributionBillLadingScanEntity> ladingScanEntities = new ArrayList<>();
List<String> orderCodes = new ArrayList<>();
packageMap.forEach((k,v)->{
switch (k){
case 1:
//定制品
for (DistributionParcelListEntity parcelListEntity : v) {
DistributionBillLadingScanEntity distributionBillLadingScanEntity = new DistributionBillLadingScanEntity();
distributionBillLadingScanEntity.setPacketBarCode(parcelListEntity.getOrderPackageCode());
distributionBillLadingScanEntity.setScanType(3);
distributionBillLadingScanEntity.setParcelListId(parcelListEntity.getId());
distributionBillLadingScanEntity.setOrderSelfNumbering(parcelListEntity.getOrderCode());
distributionBillLadingScanEntity.setStockArticleId(parcelListEntity.getStockArticleId());
distributionBillLadingScanEntity.setBillLadingId(id);
distributionBillLadingScanEntity.setMaterialType("2");
distributionBillLadingScanEntity.setQuantity(parcelListEntity.getQuantity());
ladingScanEntities.add(distributionBillLadingScanEntity);
//修改包件状态
distributionParcelListService.update(Wrappers.<DistributionParcelListEntity>update().lambda()
.eq(DistributionParcelListEntity::getId,parcelListEntity.getId())
.set(DistributionParcelListEntity::getOrderPackageReservationStatus,OrderPackageReservationStatusConstant.yiyueyue.getValue())
.set(DistributionParcelListEntity::getOrderPackageLoadingStatus,OrderPackageLoadingStatusConstant.yizhuangche.getValue())
.set(DistributionParcelListEntity::getOrderPackageStatus,OrderPackageStatusConstant.yiqianshou.getValue())
);
//维护订单
orderCodes.add(parcelListEntity.getOrderCode());
}
break;
case 2:
//零担
for (DistributionParcelListEntity parcelListEntity : v) {
//查询计划零担数量
DistributionReservationZeroPackageEntity packageEntity = distributionZeroPackageService.getOne(Wrappers.<DistributionReservationZeroPackageEntity>query().lambda()
.eq(DistributionReservationZeroPackageEntity::getReservationId, id)
.eq(DistributionReservationZeroPackageEntity::getType, "3")
.eq(DistributionReservationZeroPackageEntity::getParcelListId, parcelListEntity.getId())
.ne(DistributionReservationZeroPackageEntity::getZeroPackageStatus, ReservationPackageStatusConstant.quxiao.getValue())
);
//维护零担品类在库信息
DistributionParcelNumberEntity distributionParcelNumberEntity = distributionParcelNumberService.getOne(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getParcelListId, parcelListEntity.getId())
.eq(DistributionParcelNumberEntity::getStockArticleId, parcelListEntity.getStockArticleId())
);
//零担在库数不足进行签收
if (distributionParcelNumberEntity.getHandQuantity() < packageEntity.getQuantity()){
log.info(method+"零担签收数量不足,计划数量:{},在库数量:{}",packageEntity.getQuantity(),distributionParcelNumberEntity.getHandQuantity());
throw new RuntimeException("零担在库数不足此次签收!!");
}
DistributionBillLadingScanEntity distributionBillLadingScanEntity = new DistributionBillLadingScanEntity();
distributionBillLadingScanEntity.setPacketBarCode(parcelListEntity.getOrderPackageCode());
distributionBillLadingScanEntity.setScanType(3);
distributionBillLadingScanEntity.setParcelListId(parcelListEntity.getId());
distributionBillLadingScanEntity.setOrderSelfNumbering(parcelListEntity.getOrderCode());
distributionBillLadingScanEntity.setStockArticleId(parcelListEntity.getStockArticleId());
distributionBillLadingScanEntity.setBillLadingId(id);
distributionBillLadingScanEntity.setMaterialType("3");
distributionBillLadingScanEntity.setQuantity(packageEntity.getQuantity());
ladingScanEntities.add(distributionBillLadingScanEntity);
//维护零担在库信息
int newHandQuantity = distributionParcelNumberEntity.getHandQuantity() - packageEntity.getQuantity();
int newDeliveryQuantity = distributionParcelNumberEntity.getDeliveryQuantity() - packageEntity.getQuantity();
int newOutboundQuantity = distributionParcelNumberEntity.getOutboundQuantity() + packageEntity.getQuantity();
int newSigninQuantity = distributionParcelNumberEntity.getSigninQuantity() + packageEntity.getQuantity();
log.info(method+"维护前零担品类在库数量,在库数量:{},冻结数量:{},出库数量:{},签收数量:{}",
distributionParcelNumberEntity.getHandQuantity(),
distributionParcelNumberEntity.getDeliveryQuantity(),
distributionParcelNumberEntity.getOutboundQuantity(),
distributionParcelNumberEntity.getSigninQuantity());
//修改零担品类
distributionParcelNumberEntity.setHandQuantity(newHandQuantity);
distributionParcelNumberEntity.setDeliveryQuantity(newDeliveryQuantity);
distributionParcelNumberEntity.setOutboundQuantity(newOutboundQuantity);
distributionParcelNumberEntity.setSigninQuantity(newSigninQuantity);
log.info(method+"维护后零担品类在库数量,在库数量:{},冻结数量:{},出库数量:{},签收数量:{}",
distributionParcelNumberEntity.getHandQuantity(),
distributionParcelNumberEntity.getDeliveryQuantity(),
distributionParcelNumberEntity.getOutboundQuantity(),
distributionParcelNumberEntity.getSigninQuantity());
distributionParcelNumberService.updateById(distributionParcelNumberEntity);
if (newOutboundQuantity == parcelListEntity.getQuantity()){
//全部出库
parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yichuku.getValue());
parcelListEntity.setOrderPackageLoadingStatus(OrderPackageLoadingStatusConstant.yizhuangche.getValue());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
}
if (newSigninQuantity == parcelListEntity.getQuantity()){
//全部签收
parcelListEntity.setOrderPackageStatus(OrderPackageStatusConstant.yiqianshou.getValue());
parcelListEntity.setOrderPackageReservationStatus(OrderPackageReservationStatusConstant.yiyueyue.getValue());
}
distributionParcelListService.updateById(parcelListEntity);
orderCodes.add(parcelListEntity.getOrderCode());
}
break;
}
});
if (!orderCodes.isEmpty()){
String collect = orderCodes.stream().distinct().collect(Collectors.joining(","));
log.info(method+"维护订单,orderCodes:{}",collect);
distributionStockArticleService.maintenanceOrderInfo(collect,warehouseId);
}
return ladingScanEntities;
}
@Transactional
private Integer cancelBillLodingPackage(List<Long> ids) {
String method = "##########类DistrilbutionBillLadingServiceImpl执行方法cancelBillLoding,";

31
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/config/RabbitMqConfiguration.java

@ -58,5 +58,36 @@ public class RabbitMqConfiguration {
return BindingBuilder.bind(unloadConfirmQueue).to(unloadConfirmExchange).with(RabbitConstant.TRUNKLINE_UNLOAD_CONFIRM_ROUTING).noargs();
}
@Bean
public Queue incomingToLoadQueue() {
return new Queue(RabbitConstant.INCOMING_TO_LOAD_QUEUE, true);
}
@Bean
public CustomExchange incomingToLoadExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.INCOMING_TO_LOAD_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding incomingToLoadBinding(Queue incomingToLoadQueue, CustomExchange incomingToLoadExchange) {
return BindingBuilder.bind(incomingToLoadQueue).to(incomingToLoadExchange).with(RabbitConstant.INCOMING_TO_LOAD_ROUTING).noargs();
}
@Bean
public Queue openOrderLoadScanQueue() {
return new Queue(RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE, true);
}
@Bean
public CustomExchange openOrderLoadScanExchange() {
Map<String, Object> args = Maps.newHashMap();
args.put("x-delayed-type", "direct");
return new CustomExchange(RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE, "x-delayed-message", true, false, args);
}
@Bean
public Binding openOrderLoadScanBinding(Queue openOrderLoadScanQueue, CustomExchange openOrderLoadScanExchange) {
return BindingBuilder.bind(openOrderLoadScanQueue).to(openOrderLoadScanExchange).with(RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING).noargs();
}
}

43
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/OpenOrderController.java

@ -1,5 +1,7 @@
package com.logpm.trunkline.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
@ -8,7 +10,9 @@ import com.logpm.trunkline.dto.AdvanceDTO;
import com.logpm.trunkline.dto.OpenLabelDTO;
import com.logpm.trunkline.dto.OpenOrderDTO;
import com.logpm.trunkline.dto.WaybillDetailDTO;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.service.IOpenOrderService;
import com.logpm.trunkline.service.ITrunklineCarsLoadService;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.trunkline.vo.TrunklineAdvanceVO;
import io.swagger.annotations.Api;
@ -34,6 +38,7 @@ public class OpenOrderController {
private final IBasicdataWarehouseClient warehouseClient;
private final IOpenOrderService openOrderService;
private final ITrunklineCarsLoadService carsLoadService;
@ResponseBody
@PostMapping("/advancePageList")
@ -1080,7 +1085,15 @@ public class OpenOrderController {
return R.fail(403,"仓库信息为空");
}
return openOrderService.openLabelHasPacakage(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
R<List<TrunklineAdvanceEntity>> listR = openOrderService.openLabelHasPacakage(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
List<TrunklineAdvanceEntity> data = listR.getData();
if(!CollUtil.isEmpty(data)){
for (TrunklineAdvanceEntity datum : data) {
carsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(datum));
}
}
return listR;
}catch (CustomerException e){
log.error(e.message,e);
return R.fail(e.code,e.message);
@ -1106,7 +1119,15 @@ public class OpenOrderController {
return R.fail(403,"仓库信息为空");
}
return openOrderService.importOrderNoPackage(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
R<List<TrunklineAdvanceEntity>> listR = openOrderService.importOrderNoPackage(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
// List<TrunklineAdvanceEntity> data = listR.getData();
// if(!CollUtil.isEmpty(data)){
// for (TrunklineAdvanceEntity datum : data) {
// carsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(datum));
// }
// }
return listR;
}catch (CustomerException e){
log.error(e.message,e);
return R.fail(e.code,e.message);
@ -1135,7 +1156,14 @@ public class OpenOrderController {
return R.fail(403,"仓库信息为空");
}
return openOrderService.importCustomizedOuPai(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
R<List<TrunklineAdvanceEntity>> listR = openOrderService.importCustomizedOuPai(myCurrentWarehouse.getId(), myCurrentWarehouse.getName(), file);
List<TrunklineAdvanceEntity> data = listR.getData();
if(!CollUtil.isEmpty(data)){
for (TrunklineAdvanceEntity datum : data) {
carsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(datum));
}
}
return listR;
}catch (CustomerException e){
log.error(e.message,e);
return R.fail(e.code,e.message);
@ -1162,7 +1190,14 @@ public class OpenOrderController {
return R.fail(403,"仓库信息为空");
}
return openOrderService.importStandardOuPai(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
R<List<TrunklineAdvanceEntity>> listR = openOrderService.importStandardOuPai(myCurrentWarehouse.getId(),myCurrentWarehouse.getName(),file);
List<TrunklineAdvanceEntity> data = listR.getData();
if(!CollUtil.isEmpty(data)){
for (TrunklineAdvanceEntity datum : data) {
carsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(datum));
}
}
return listR;
}catch (CustomerException e){
log.error(e.message,e);
return R.fail(e.code,e.message);

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceMapper.xml

@ -15,7 +15,7 @@
select lta.*,
lbc.client_name htMallName
from logpm_trunkline_advance lta
left join logpm_basicdata_tripartite_mall lbtm on lbtm.tripartite_mall = lta.dealer_name and lbtm.brand_name = lta.brand
left join logpm_basicdata_tripartite_mall lbtm on lbtm.tripartite_mall = lta.dealer_name and lbtm.brand_name = lta.brand and lta.dealer_code = lbtm.tripartite_coding
left join logpm_basicdata_client lbc on lbc.id = lbtm.client_id
where lta.is_deleted = 0
and lta.waybill_status = 0

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.java

@ -120,4 +120,6 @@ public interface TrunklineCarsLoadScanMapper extends BaseMapper<TrunklineCarsLoa
List<String> findSignListOrderPackageCodesByIds(@Param("list") List<Long> loadScanIds);
List<Long> findAllIdListByLoadId(@Param("loadId") Long loadId);
TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(@Param("orderPackageCode") String orderPackageCode, @Param("scanStatus") String scanStatus);
}

8
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml

@ -545,4 +545,12 @@
and scan_status = '1'
</select>
<select id="findEntityByOrderPackageCodeAndScanStatus" resultType="com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity">
select *
from logpm_trunkline_cars_load_scan
where scan_code = #{orderPackageCode}
and scan_status = #{scanStatus}
</select>
</mapper>

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java

@ -18,4 +18,6 @@ public interface TrunklineWaybillOrderMapper extends BaseMapper<TrunklineWaybill
List<TrunklineAdvanceEntity> findListByWaybillId(@Param("waybillId") Long waybillId);
Long findWaybillIdByAdvanceId(@Param("advanceId") Long advanceId);
Integer findTotalNumByWaybillNoAndOrderCode(@Param("waybillId") Long waybillId, @Param("orderCode") String orderCode);
}

7
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml

@ -29,4 +29,11 @@
where ltwo.advance_id = #{advanceId}
</select>
<select id="findTotalNumByWaybillNoAndOrderCode" resultType="int">
select IFNULL(sum(ltwo.total_number),0)
from logpm_trunkline_waybill_order ltwo
where ltwo.waybill_id = #{waybillId}
and ltwo.order_code = #{orderCode}
</select>
</mapper>

4
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceOrderListener.java

@ -11,6 +11,7 @@ import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineDetailProductEntity;
import com.logpm.trunkline.service.ITrunklineAdvanceDetailService;
import com.logpm.trunkline.service.ITrunklineAdvanceService;
import com.logpm.trunkline.service.ITrunklineCarsLoadService;
import com.logpm.trunkline.service.ITrunklineDetailProductService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -42,6 +43,7 @@ public class AdvanceOrderListener {
private final ITrunklineAdvanceService advanceService;
private final ITrunklineAdvanceDetailService advanceDetailService;
private final ITrunklineDetailProductService detailProductService;
private final ITrunklineCarsLoadService trunklineCarsLoadService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FactoryDataConstants.Mq.Queues.ADVANCE_ORDER),
@ -111,6 +113,8 @@ public class AdvanceOrderListener {
}
advanceDetailService.saveBatch(advanceDetailEntityList);
//发送入库包件处理无数据装车数据
trunklineCarsLoadService.sendRabbitMessageLoadScanData(JSONUtil.toJsonStr(advanceEntity));
detailProductService.saveBatch(detailProductEntityList);
}
}

107
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/AdvanceToLoadListener.java

@ -0,0 +1,107 @@
package com.logpm.trunkline.mq;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.entity.DistributionParcelListEntity;
import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.trunkline.dto.InComingDTO;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity;
import com.logpm.trunkline.service.*;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.IncomingTypeEnum;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.TenantNum;
import org.springblade.common.utils.CommonUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Slf4j
@Component
@AllArgsConstructor
@RabbitListener(queues = RabbitConstant.INCOMING_TO_LOAD_QUEUE)
public class AdvanceToLoadListener {
private final IInComingService inComingService;
private final ITrunklineAdvanceDetailService advanceDetailService;
private final ITrunklineCarsLoadScanService carsLoadScanService;
private final IBasicdataWarehouseClient warehouseClient;
private final IDistributionParcelListClient distributionParcelListClient;
private final ITrunklineCarsLoadService carsLoadService;
private final ITrunklineCarsOrderService carsOrderService;
private final ITrunklineCarsLoadLineService carsLoadLineService;
private final ITrunklineWaybillOrderService waybillOrderService;
@RabbitHandler
@Transactional(rollbackFor = Exception.class)
public void advanceToLoad(Map map, Message message, Channel channel){
String msg = (String) map.get("messageData");
if(StringUtil.isNotBlank(msg)){
log.info("#############advanceToLoad: 暂存单包件入库并且绑定到对应车次上 {}", msg);
JSONObject jsonObject = JSONUtil.parseObj(msg);
TrunklineAdvanceEntity advanceEntity = JSONUtil.toBean(jsonObject, TrunklineAdvanceEntity.class);
if(Objects.isNull(advanceEntity)){
return;
}
Long advanceId = advanceEntity.getId();
String orderCode = advanceEntity.getOrderCode();
Long warehouseId = advanceEntity.getWarehouseId();
BasicdataWarehouseEntity warehouseEntity = warehouseClient.getEntityWarehouseId(warehouseId);
if(Objects.isNull(warehouseEntity)){
log.warn("#############advanceToLoad: 仓库信息不存在 warehouseId={}",warehouseId);
return;
}
String warehouseName = warehouseEntity.getName();
//查询暂存单下所有包件
Set<Long> loadIds = new HashSet<>();
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = advanceDetailService.findListByAdvanceId(advanceId);
for (TrunklineAdvanceDetailEntity advanceDetailEntity : advanceDetailEntities) {
String orderPackageCode = advanceDetailEntity.getOrderPackageCode();
TrunklineCarsLoadScanEntity carsLoadScanEntity = carsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1");
if(Objects.isNull(carsLoadScanEntity)){
continue;
}
InComingDTO inComingDTO = new InComingDTO();
inComingDTO.setIncomingType(IncomingTypeEnum.FACTORY_TO_INCOMING.getCode());
inComingDTO.setTenantId(TenantNum.HUITONGCODE);
inComingDTO.setOrderPackageCode(orderPackageCode);
inComingDTO.setWarehouseId(warehouseId);
inComingDTO.setWarehouseName(warehouseName);
R r = inComingService.incomingPackage(inComingDTO);
if(r.getCode() == 200){
carsLoadScanEntity.setFromWarehouseId(warehouseId);
carsLoadScanEntity.setOrderCode(orderCode);
Date createTime = carsLoadScanEntity.getCreateTime();
Long createUser = carsLoadScanEntity.getCreateUser();
Long createDept = carsLoadScanEntity.getCreateDept();
carsLoadScanService.updateById(carsLoadScanEntity);
loadIds.add(carsLoadScanEntity.getLoadId());
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCodeAndWarehouseId(orderPackageCode, warehouseId);
parcelListEntity.setWarehouseEntryTimeEnd(CommonUtil.addDate(createTime,-60));
parcelListEntity.setUpdateUser(createUser);
parcelListEntity.setCreateUser(createUser);
parcelListEntity.setCreateDept(createDept);
parcelListEntity.setOrderPackageStatus("60");
distributionParcelListClient.update(parcelListEntity);
}
}
for (Long loadId : loadIds) {
carsLoadService.updateNumByLoadId(loadId);
}
}
}
}

113
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/OpenOrderToLoadListener.java

@ -0,0 +1,113 @@
package com.logpm.trunkline.mq;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.entity.TrunklineCarsLoadLineEntity;
import com.logpm.trunkline.entity.TrunklineCarsLoadScanEntity;
import com.logpm.trunkline.entity.TrunklineCarsOrderEntity;
import com.logpm.trunkline.service.*;
import com.rabbitmq.client.Channel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Slf4j
@AllArgsConstructor
@Component
@RabbitListener(queues = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE)
public class OpenOrderToLoadListener {
private final ITrunklineAdvanceDetailService advanceDetailService;
private final ITrunklineCarsLoadScanService carsLoadScanService;
private final ITrunklineCarsLoadService carsLoadService;
private final ITrunklineCarsOrderService carsOrderService;
private final ITrunklineCarsLoadLineService carsLoadLineService;
private final ITrunklineWaybillOrderService waybillOrderService;
@RabbitHandler
@Transactional(rollbackFor = Exception.class)
public void openOrderToLoadScan(Map map, Message message, Channel channel){
String msg = (String) map.get("messageData");
log.info("###########openOrderToLoadScan: 开单补录包件运单信息 msg={}",msg);
if(StringUtil.isNotBlank(msg)){
JSONObject jsonObject = JSONUtil.parseObj(msg);
Long waybillId = jsonObject.getLong("waybillId");
String waybillNo = jsonObject.getStr("waybillNo");
JSONArray advanceIds = jsonObject.getJSONArray("advanceIds");
Set<Long> loadIds = new HashSet<>();
for (Object object : advanceIds) {
Long advanceId = (Long) object;
List<TrunklineAdvanceDetailEntity> advanceDetailEntityList = advanceDetailService.findListByAdvanceId(advanceId);
for (TrunklineAdvanceDetailEntity advanceDetailEntity : advanceDetailEntityList) {
String orderPackageCode = advanceDetailEntity.getOrderPackageCode();
TrunklineCarsLoadScanEntity carsLoadScanEntity = carsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1");
if(Objects.isNull(carsLoadScanEntity)){
continue;
}
carsLoadScanEntity.setWaybillId(waybillId);
carsLoadScanEntity.setWaybillNo(waybillNo);
carsLoadScanEntity.setIsData(1);
carsLoadScanEntity.setIsSupple(1);
carsLoadScanEntity.setLoadingAbnormal(0);
carsLoadScanEntity.setUnloadAbnormal(0);
carsLoadScanService.updateById(carsLoadScanEntity);
Long loadId = carsLoadScanEntity.getLoadId();
Long warehouseId = carsLoadScanEntity.getWarehouseId();
String warehouseName = carsLoadScanEntity.getWarehouseName();
String orderCode = carsLoadScanEntity.getOrderCode();
Long finalNodeId = carsLoadScanEntity.getFinalNodeId();
Long createUser = carsLoadScanEntity.getCreateUser();
String tenantId = carsLoadScanEntity.getTenantId();
Long createDept = carsLoadScanEntity.getCreateDept();
TrunklineCarsLoadLineEntity carsLoadLineEntity = carsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId);
if(Objects.isNull(carsLoadLineEntity)){
continue;
}
TrunklineCarsOrderEntity trunklineCarsOrderEntity = carsOrderService.findEntityByLoadIdAndWarehouseIdAndOrderCodeAndWaybillNo(loadId, warehouseId, orderCode, waybillNo);
if(Objects.isNull(trunklineCarsOrderEntity)){
trunklineCarsOrderEntity = new TrunklineCarsOrderEntity();
trunklineCarsOrderEntity.setTenantId(tenantId);
trunklineCarsOrderEntity.setCreateUser(createUser);
trunklineCarsOrderEntity.setCreateDept(createDept);
trunklineCarsOrderEntity.setUpdateUser(createUser);
trunklineCarsOrderEntity.setLoadId(loadId);
trunklineCarsOrderEntity.setNodeId(warehouseId);
trunklineCarsOrderEntity.setNodeName(warehouseName);
trunklineCarsOrderEntity.setLoadLineId(carsLoadLineEntity.getId());
trunklineCarsOrderEntity.setOrderCode(orderCode);
trunklineCarsOrderEntity.setWaybillNo(waybillNo);
Integer totalNum = waybillOrderService.findTotalNumByWaybillNoAndOrderCode(waybillId,orderCode);
trunklineCarsOrderEntity.setTotalNum(totalNum);
trunklineCarsOrderEntity.setPlanNum(0);
trunklineCarsOrderEntity.setIsCustomer("0");
trunklineCarsOrderEntity.setRealNum(0);
trunklineCarsOrderEntity.setType(1);
trunklineCarsOrderEntity.setFinalNodeId(finalNodeId);
trunklineCarsOrderEntity.setUnloadNum(0);
trunklineCarsOrderEntity.setStartNum(0);
}
trunklineCarsOrderEntity.setPlanNum(trunklineCarsOrderEntity.getPlanNum()+1);
carsOrderService.saveOrUpdate(trunklineCarsOrderEntity);
loadIds.add(loadId);
}
}
for (Long loadId : loadIds) {
carsLoadService.updateNumByLoadId(loadId);
}
}
}
}

9
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IOpenOrderService.java

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.trunkline.dto.AdvanceDTO;
import com.logpm.trunkline.dto.OpenLabelDTO;
import com.logpm.trunkline.dto.OpenOrderDTO;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.vo.TrunklineAdvanceDetailVO;
import com.logpm.trunkline.vo.TrunklineAdvanceVO;
import org.springblade.core.tool.api.R;
@ -43,11 +44,11 @@ public interface IOpenOrderService {
R openLabel(OpenLabelDTO openLabelDTO);
R openLabelHasPacakage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R<List<TrunklineAdvanceEntity>> openLabelHasPacakage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R importCustomizedOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R<List<TrunklineAdvanceEntity>> importCustomizedOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R importStandardOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R<List<TrunklineAdvanceEntity>> importStandardOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R findWaybillDetail(OpenOrderDTO openOrderDTO);
@ -61,7 +62,7 @@ public interface IOpenOrderService {
R findPayWayByClientId(Long clientId);
R importOrderNoPackage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R<List<TrunklineAdvanceEntity>> importOrderNoPackage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException;
R checkWaybill(OpenOrderDTO openOrderDTO);

2
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadScanService.java

@ -115,4 +115,6 @@ public interface ITrunklineCarsLoadScanService extends BaseService<TrunklineCars
List<String> findSignListOrderPackageCodesByIds(List<Long> loadScanIds);
List<Long> findAllIdListByLoadId(Long loadId);
TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(String orderPackageCode, String scanStatus);
}

3
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java

@ -197,4 +197,7 @@ public interface ITrunklineCarsLoadService extends BaseService<TrunklineCarsLoad
R uploadSignPhoto(LoadCarsDTO loadCarsDTO);
void sendRabbitMessageLoadScanData(String jsonMsg);
void sendRabbitMessageOpenOrder(List<Long> advanceIds, Long waybillId);
}

3
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java

@ -16,4 +16,7 @@ public interface ITrunklineWaybillOrderService extends BaseService<TrunklineWayb
List<TrunklineAdvanceEntity> findListByWaybillId(Long waybillId);
Long findWaybillIdByAdvanceId(Long advanceId);
Integer findTotalNumByWaybillNoAndOrderCode(Long waybillId, String orderCode);
}

32
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java

@ -86,6 +86,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
private final IOpenOrderAsyncService openOrderAsyncService;
private final ITrunklineWaybillReturnService trunklineWaybillReturnService;
private final IBasicdataOpenIncomingClient basicdataOpenIncomingClient;
private final ITrunklineCarsLoadService carsLoadService;
@Override
public IPage<TrunklineAdvanceVO> advancePageList(AdvanceDTO advanceDTO) {
@ -543,6 +544,11 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
openOrderAsyncService.saveLog(waybillId,waybillNo,"20","已入库",createOperationRemark,nickName,userId,warehouseId,warehouseName);
}
//队列处理包件补数据
// sendRabbitMessageLoadScanData(JSONUtil.parseArray(advanceIds));
carsLoadService.sendRabbitMessageOpenOrder(advanceIds,waybillId);
return R.success("开单成功");
}
@ -957,7 +963,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
@Transactional(rollbackFor = Exception.class)
@Override
public R openLabelHasPacakage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
public R<List<TrunklineAdvanceEntity>> openLabelHasPacakage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
if(Objects.isNull(file)){
log.warn("##################openLabelHasPacakage: 文件不存在");
return R.fail(405,"文件不存在");
@ -973,7 +979,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
Set<String> set = listMap.keySet();
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = new ArrayList<>();
List<TrunklineAdvanceEntity> advanceEntityList = new ArrayList<>();
for (String str : set) {
List<PacakgeDetailExcelDTO> detailExcelDTOS = listMap.get(str);
PacakgeDetailExcelDTO pacakgeDetailExcelDTO = detailExcelDTOS.get(0);
@ -1020,6 +1026,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
advanceEntity.setLegacyStatus("0");
advanceEntity.setCreateUserName(AuthUtil.getNickName());
advanceService.save(advanceEntity);
advanceEntityList.add(advanceEntity);
}else{
Long advanceId = advanceEntity.getId();
orderPackageCodes = advanceDetailService.findOrderPackageCodesByAdvanceId(advanceId);
@ -1094,12 +1101,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
}
advanceDetailService.saveBatch(advanceDetailEntities);
return R.success("导入成功");
return R.data(advanceEntityList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public R importCustomizedOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
public R<List<TrunklineAdvanceEntity>> importCustomizedOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
if(Objects.isNull(file)){
log.warn("##################openLabelHasPacakage: 文件不存在");
return R.fail(405,"文件不存在");
@ -1116,7 +1123,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
Set<String> set = listMap.keySet();
List<TrunklineAdvanceEntity> advanceEntityList = new ArrayList<>();
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = new ArrayList<>();
for (String str : set) {
List<ImportCustomizedOuPaiDTO> paiDTOList = listMap.get(str);
@ -1155,12 +1162,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
trunklineAdvanceEntity.setDeliveryDate(CommonUtil.StringToDate(importCustomizedOuPaiDTO.getDueDateStr()));
trunklineAdvanceEntity.setCreateUserName(AuthUtil.getNickName());
advanceService.save(trunklineAdvanceEntity);
advanceEntityList.add(trunklineAdvanceEntity);
}else{
Long advanceId = trunklineAdvanceEntity.getId();
orderPackageCodes = advanceDetailService.findOrderPackageCodesByAdvanceId(advanceId);
}
for (ImportCustomizedOuPaiDTO customizedOuPaiDTO : paiDTOList) {
String orderPackageCode = customizedOuPaiDTO.getOrderPackageCode();
if(orderPackageCodes.contains(orderPackageCode)){
@ -1213,12 +1220,12 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
log.info("################本次耗时 "+(end-start) + "ms");
return R.success("导入成功");
return R.data(advanceEntityList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public R importStandardOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
public R<List<TrunklineAdvanceEntity>> importStandardOuPai(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
if(Objects.isNull(file)){
log.warn("##################importStandardOuPai: 文件不存在");
return R.fail(405,"文件不存在");
@ -1232,6 +1239,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
Set<String> set = listMap.keySet();
List<TrunklineAdvanceEntity> advanceEntityList = new ArrayList<>();
List<TrunklineAdvanceDetailEntity> advanceDetailEntities = new ArrayList<>();
for (String str : set) {
List<ImportStandardOuPaiDTO> paiDTOList = listMap.get(str);
@ -1268,11 +1276,13 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
trunklineAdvanceEntity.setDeliveryDate(CommonUtil.StringToDate(importStandardOuPaiDTO.getDueDateStr()));
trunklineAdvanceEntity.setCreateUserName(AuthUtil.getNickName());
advanceService.save(trunklineAdvanceEntity);
advanceEntityList.add(trunklineAdvanceEntity);
}else{
Long advanceId = trunklineAdvanceEntity.getId();
orderPackageCodes = advanceDetailService.findOrderPackageCodesByAdvanceId(advanceId);
}
for (ImportStandardOuPaiDTO standardOuPaiDTO : paiDTOList) {
String orderPackageCode = standardOuPaiDTO.getOrderPackageCode();
if(orderPackageCodes.contains(orderPackageCode)){
@ -1370,7 +1380,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
}
advanceDetailService.saveBatch(advanceDetailEntities);
return R.success("导入成功");
return R.data(advanceEntityList);
}
@Override
@ -1550,7 +1560,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
}
@Override
public R importOrderNoPackage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
public R<List<TrunklineAdvanceEntity>> importOrderNoPackage(Long warehouseId, String warehouseName, MultipartFile file) throws IOException {
if(Objects.isNull(file)){
log.warn("##################importOrderNoPackage: 文件不存在");
return R.fail(405,"文件不存在");
@ -1591,7 +1601,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
}
advanceService.saveBatch(list);
return R.success("导入成功");
return R.data(list);
}
@Override

5
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadScanServiceImpl.java

@ -283,4 +283,9 @@ public class TrunklineCarsLoadScanServiceImpl extends BaseServiceImpl<TrunklineC
return baseMapper.findAllIdListByLoadId(loadId);
}
@Override
public TrunklineCarsLoadScanEntity findEntityByOrderPackageCodeAndScanStatus(String orderPackageCode, String scanStatus) {
return baseMapper.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode,scanStatus);
}
}

161
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java

@ -1,6 +1,8 @@
package com.logpm.trunkline.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
@ -24,7 +26,6 @@ import com.logpm.distribution.feign.IDistributionParcelListClient;
import com.logpm.distribution.feign.IDistributionParcelNumberClient;
import com.logpm.distribution.feign.IDistributionStockArticleClient;
import com.logpm.factorydata.enums.BrandEnums;
import org.springblade.common.constant.WorkNodeEnums;
import com.logpm.factorydata.util.FactoryDataMessageSender;
import com.logpm.factorydata.vo.NodePushMsg;
import com.logpm.trunkline.bean.Resp;
@ -55,6 +56,7 @@ import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.entity.DictBiz;
import org.springframework.amqp.rabbit.connection.CorrelationData;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -2015,10 +2017,17 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
String warehouseName = basicdataWarehouseEntity.getName();
//判断包条是不是已经装车
TrunklineCarsLoadScanEntity isExit = trunklineCarsLoadScanService.findEntityByLoadIdAndOrderPackageCode(loadId, orderPackageCode);
if (!Objects.isNull(isExit)) {
// TrunklineCarsLoadScanEntity isExit = trunklineCarsLoadScanService.findEntityByLoadIdAndOrderPackageCode(loadId, orderPackageCode);
// if (!Objects.isNull(isExit)) {
// log.warn("##################loadingScan: 包件已经装车 orderPackageCode={}", orderPackageCode);
// return R.fail(405, "包件已经装车");
// }
TrunklineCarsLoadScanEntity isExit = trunklineCarsLoadScanService.findEntityByOrderPackageCodeAndScanStatus(orderPackageCode, "1");
if(!Objects.isNull(isExit)){
String loadCode = isExit.getLoadCode();
log.warn("##################loadingScan: 包件已经装车 orderPackageCode={}", orderPackageCode);
return R.fail(405, "包件已经装车");
return R.fail(405, "包件已经装车"+loadCode);
}
String loadCode = carsLoadEntity.getCarsNo();
@ -2077,16 +2086,16 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
if ("0".equals(packageStatus)) {
//未入库
log.warn("##################loadingScan: 包件暂未入库 orderPackageCode={}", orderPackageCode);
return R.fail(405, "包件暂未入库");
remark = "有系统数据,包件暂未入库";
} else {
//已入库
String waybillNo1 = trunklineAdvanceDetailEntity.getWaybillNo();
if (StringUtil.isBlank(waybillNo1)) {
log.warn("##################loadingScan: 暂存单未开单 orderPackageCode={}", orderPackageCode);
return R.fail(405, "订单未开单");
remark = "有系统数据,暂存单未开单";
} else {
log.warn("##################loadingScan: 包件暂未入到本仓 orderPackageCode={} warehouseId={}", orderPackageCode, warehouseId);
return R.fail(405, "包件暂未入到本仓");
remark = "有系统数据,包件暂未入到本仓";
}
}
}
@ -2116,12 +2125,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
fromWarehouseName = fromWarehouseEntity.getName();
}
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNumber);
if (Objects.isNull(waybillEntity)) {
log.warn("##################loadingScan: 运单信息不存在 waybillNumber={}", waybillNumber);
return R.fail(405, "运单信息不存在");
if (!Objects.isNull(waybillEntity)) {
waybillId = waybillEntity.getId();
waybillNo = waybillEntity.getWaybillNo();
}
waybillId = waybillEntity.getId();
waybillNo = waybillEntity.getWaybillNo();
carsLoadScanEntity.setWaybillId(waybillId);
carsLoadScanEntity.setWaybillNo(waybillNo);
carsLoadScanEntity.setOrderCode(orderCode);
@ -2161,11 +2168,10 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
fromWarehouseName = fromWarehouseEntity.getName();
}
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillNo(waybillNo);
if (Objects.isNull(waybillEntity)) {
log.warn("##################loadingScan: 运单信息不存在 waybillNo={}", waybillNo);
return R.fail(405, "运单信息不存在");
if (!Objects.isNull(waybillEntity)) {
waybillId = waybillEntity.getId();
}
waybillId = waybillEntity.getId();
carsLoadScanEntity.setWaybillId(waybillId);
carsLoadScanEntity.setWaybillNo(waybillNo);
@ -4242,6 +4248,129 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
return R.success("添加成功");
}
// @Retryable(value = CustomerException.class, maxAttempts = 3, backoff = @Backoff(value = 3000, multiplier = 1.5))
@Override
public void sendRabbitMessageLoadScanData(String jsonMsg) {
String queue = RabbitConstant.INCOMING_TO_LOAD_QUEUE;
String exchange = RabbitConstant.INCOMING_TO_LOAD_EXCHANGE;
String routing = RabbitConstant.INCOMING_TO_LOAD_ROUTING;
String msgId = IdUtil.simpleUUID();
log.info("消息发送!exchange = {}, routingKey = {}, msg = {}, msgId = {}", exchange, routing, jsonMsg, msgId);
// 2.全局唯一的消息ID,需要封装到CorrelationData中
CorrelationData correlationData = new CorrelationData(msgId);
// 3.添加callback
correlationData.getFuture().addCallback(
result -> {
if (result.isAck()) {
// 3.1.ack,消息成功
log.debug("消息发送成功, ID:{}", correlationData.getId());
} else {
// 3.2.nack,消息失败
log.error("消息发送失败, ID:{}, 原因:{}", correlationData.getId(), result.getReason());
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(result.getReason()).build();
// this.failMsgService.save(failMsgEntity);
}
},
ex -> {
//出现此异常情况,可能是发送消息后无法连接到发送者或其他一些未知的异常情况
String exceptionInfo = ExceptionUtil.getMessage(ex);
log.error("消息发送异常, ID:{}, 原因:{}", correlationData.getId(), exceptionInfo);
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(exceptionInfo).build();
// this.failMsgService.save(failMsgEntity);
}
);
// 4.构造消息对象
// Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8))
// .setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
// .build();
Map<String, Object> map = new HashMap<>();
map.put("messageId", CommonUtil.getUUID());
map.put("logId", msgId);
map.put("messageData", jsonMsg);
map.put("createTime", new Date().getTime());
map.put("flagType", "OrderStatusLog");
//将消息携带绑定键值
rabbitTemplate.convertAndSend(exchange, routing, map, new CorrelationData(msgId));
}
@Override
public void sendRabbitMessageOpenOrder(List<Long> advanceIds, Long waybillId) {
String queue = RabbitConstant.OPEN_ORDER_LOAD_SCAN_QUEUE;
String exchange = RabbitConstant.OPEN_ORDER_LOAD_SCAN_EXCHANGE;
String routing = RabbitConstant.OPEN_ORDER_LOAD_SCAN_ROUTING;
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
if(Objects.isNull(waybillEntity)){
log.warn("#############sendRabbitMessageOpenOrder: 运单信息不存在 waybillId={}",waybillId);
return;
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("waybillId",waybillId);
jsonObject.put("waybillNo",waybillEntity.getWaybillNo());
jsonObject.put("advanceIds",advanceIds);
String jsonMsg = jsonObject.toJSONString();
String msgId = IdUtil.simpleUUID();
log.info("消息发送!exchange = {}, routingKey = {}, msg = {}, msgId = {}", exchange, routing, jsonMsg, msgId);
// 2.全局唯一的消息ID,需要封装到CorrelationData中
CorrelationData correlationData = new CorrelationData(msgId);
// 3.添加callback
correlationData.getFuture().addCallback(
result -> {
if (result.isAck()) {
// 3.1.ack,消息成功
log.debug("消息发送成功, ID:{}", correlationData.getId());
} else {
// 3.2.nack,消息失败
log.error("消息发送失败, ID:{}, 原因:{}", correlationData.getId(), result.getReason());
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(result.getReason()).build();
// this.failMsgService.save(failMsgEntity);
}
},
ex -> {
//出现此异常情况,可能是发送消息后无法连接到发送者或其他一些未知的异常情况
String exceptionInfo = ExceptionUtil.getMessage(ex);
log.error("消息发送异常, ID:{}, 原因:{}", correlationData.getId(), exceptionInfo);
// FailMsgEntity failMsgEntity = FailMsgEntity.builder()
// .exchange(exchange)
// .msgId(correlationData.getId())
// .msg(jsonMsg)
// .reason(exceptionInfo).build();
// this.failMsgService.save(failMsgEntity);
}
);
// 4.构造消息对象
// Message message = MessageBuilder.withBody(StrUtil.bytes(jsonMsg, CharsetUtil.CHARSET_UTF_8))
// .setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
// .build();
//
// rabbitTemplate.convertAndSend(exchange, routing, message, correlationData);
Map<String, Object> map = new HashMap<>();
map.put("messageId", CommonUtil.getUUID());
map.put("logId", msgId);
map.put("messageData", jsonMsg);
map.put("createTime", new Date().getTime());
map.put("flagType", "OrderStatusLog");
//将消息携带绑定键值
rabbitTemplate.convertAndSend(exchange, routing, map, new CorrelationData(msgId));
}
@Override
public R loadingTrayInfo(LoadCarsDTO loadCarsDTO) {
log.info("##############loadingTrayInfo: 查询托盘的货物信息");

5
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java

@ -34,4 +34,9 @@ public class TrunklineWaybillOrderServiceImpl extends BaseServiceImpl<TrunklineW
public Long findWaybillIdByAdvanceId(Long advanceId) {
return baseMapper.findWaybillIdByAdvanceId(advanceId);
}
@Override
public Integer findTotalNumByWaybillNoAndOrderCode(Long waybillId, String orderCode) {
return baseMapper.findTotalNumByWaybillNoAndOrderCode(waybillId,orderCode);
}
}

3
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java

@ -55,5 +55,8 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl<Trunklin
saveBatch(ls);
packageTrackLogAsyncService.addPackageTrackLog(AuthUtil.getTenantId(),AuthUtil.getUserId(), Func.firstLong(AuthUtil.getDeptId()),AuthUtil.getNickName(),orderPackageCodes,departureWarehouseId,departureWarehouseName, WorkNodeEnums.BILLING.getCode(),content );
}
}

26
blade-service/logpm-trunkline/src/main/resources/application-test.yml

@ -10,6 +10,32 @@ server:
# password: ${blade.datasource.test.password}
spring:
#rabbitmq配置
rabbitmq:
host: 192.168.2.110
port: 5672
username: admin
password: Slwk@123654
#虚拟host 可以不设置,使用server默认host
virtual-host: /
#确认消息已发送到队列(Queue)
publisher-returns: true
publisher-confirm-type: correlated
# 手动提交消息
listener:
simple:
acknowledge-mode: auto
default-requeue-rejected: false
retry:
enabled: true # 开启消费者失败重试
initial-interval: 1000 # 初识的失败等待时长为1秒
multiplier: 1 # 失败的等待时长倍数,下次等待时长 = multiplier * last-interval
max-attempts: 3 # 最大重试次数
stateless: true # true无状态;false有状态。如果业务中包含事务,这里改为false
direct:
acknowledge-mode: manual
template:
mandatory: true
#排除DruidDataSourceAutoConfigure
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure

14
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseGoodsAllocationController.java

@ -484,10 +484,24 @@ public class WarehouseGoodsAllocationController extends BladeController {
@ApiOperationSupport(order = 20)
@ApiOperation(value = "货位 查询包件", notes = "传入warehouseGoodsAllocation")
public R<IPage<WarehouseVisualizationVO>> selectWrap(WarehouseGoodsAllocationDTO warehouseGoodsAllocation, Query query) {
IPage<WarehouseVisualizationVO> pages = warehouseGoodsAllocationService.selectAllwrap(warehouseGoodsAllocation, Condition.getPage(query));
return R.data(WarehouseVisualizaVOWrapper.build().pageVO(pages));
}
/**
* 备货库位 查询包件
*/
@GetMapping("/selectStockUpAllocationWrap")
@ApiOperationSupport(order = 20)
@ApiOperation(value = "货位 查询包件", notes = "传入warehouseGoodsAllocation")
public R<IPage<WarehouseVisualizationVO>> selectStockUpAllocationWrap(WarehouseGoodsAllocationDTO warehouseGoodsAllocation, Query query) {
IPage<WarehouseVisualizationVO> pages = warehouseGoodsAllocationService.selectStockUpAllocationWrap(warehouseGoodsAllocation, Condition.getPage(query));
return R.data(WarehouseVisualizaVOWrapper.build().pageVO(pages));
}
/**
* 货位 查询库存品
*/

3
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.java

@ -185,4 +185,7 @@ public interface WarehouseGoodsAllocationMapper extends BaseMapper<WarehouseGood
* @return
*/
locationsnubVO selectAllocationNumInfo(@Param("warehouseId") Long warehouseId,@Param("areaId") Long areaId,@Param("shelfId") Long shelfId);
List<WarehouseVisualizationVO> selectStockUpAllocationWrap(IPage<WarehouseVisualizationVO> page, @Param("param") WarehouseGoodsAllocationDTO warehouseGoodsAllocation);
}

20
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.xml

@ -481,6 +481,26 @@
) AS unusedNub
;
</select>
<select id="selectStockUpAllocationWrap" resultType="com.logpm.warehouse.vo.WarehouseVisualizationVO">
SELECT
ldpl.order_package_code,
ldpl.order_code,
lwusu.create_time,
ldpl.firsts,
ldpl.`second`,
ldpl.third_product,
ldpl.warehouse,
ldpl.order_package_status,
ldpl.order_package_freeze_status,
ldpl.order_package_grounding_status,
ldpl.order_package_reservation_status,
ldpl.order_package_stockup_status
FROM
logpm_warehouse_updown_stockup_area AS lwusu
LEFT JOIN logpm_distribution_parcel_list AS ldpl ON lwusu.association_id = ldpl.id
WHERE
lwusu.goods_type = 1
</select>
</mapper>

9
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseGoodsAllocationService.java

@ -125,4 +125,13 @@ public interface IWarehouseGoodsAllocationService extends BaseService<WarehouseG
* @return
*/
List<WarehouseGoodsAllocationEntity> selectAllocationInfo(List<Long> lss);
/**
* 查询备货库位包件
* @param warehouseGoodsAllocation
* @param page
* @return
*/
IPage<WarehouseVisualizationVO> selectStockUpAllocationWrap(WarehouseGoodsAllocationDTO warehouseGoodsAllocation, IPage<WarehouseVisualizationVO> page);
}

11
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseGoodsAllocationServiceImpl.java

@ -411,6 +411,17 @@ public class WarehouseGoodsAllocationServiceImpl extends BaseServiceImpl<Warehou
return baseMapper.selectAllocationInfo(lss);
}
/**
* @param warehouseGoodsAllocation
* @param page
* @return
*/
@Override
public IPage<WarehouseVisualizationVO> selectStockUpAllocationWrap(WarehouseGoodsAllocationDTO warehouseGoodsAllocation, IPage<WarehouseVisualizationVO> page) {
List<WarehouseVisualizationVO> list= baseMapper.selectStockUpAllocationWrap(page,warehouseGoodsAllocation);
return page.setRecords(list);
}
public List<Long> getMyWatchWarehouseIds(){
//获取当前登录人仓库
List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWatchWarehouse();

1
blade-service/pom.xml

@ -46,6 +46,7 @@
<module>logpm-report</module>
<!-- 工厂数据-->
<module>logpm-factory-data</module>
<module>logpm-data-sharing</module>
</modules>

Loading…
Cancel
Save