Browse Source

Merge branch 'dev' into chenglong

pull/1/head
chenlong 1 year ago
parent
commit
024c28f260
  1. 6
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java
  2. 85
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationZeroPackageVO.java
  3. 1
      blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java
  4. 10
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataWarehouseServiceImpl.java
  5. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java
  6. 10
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java
  7. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java
  8. 42
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml
  9. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
  10. 14
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
  11. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockListMapper.java
  12. 9
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionDeliveryInfoService.java
  13. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java
  14. 12
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java
  15. 13
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java
  16. 1
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java
  17. 49
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionSignforServiceImpl.java
  18. 5
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  19. 7
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java
  20. 17
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java
  21. 5
      blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java
  22. 25
      blade-service/logpm-report/src/main/java/com/logpm/report/config/MybatisPlusConfig.java
  23. 110
      blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportDeliveryController.java
  24. 28
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java
  25. 429
      blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml
  26. 36
      blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryCustomerReader.java
  27. 36
      blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryDetailReader.java
  28. 36
      blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryTrainReader.java
  29. 31
      blade-service/logpm-report/src/main/java/com/logpm/report/service/ExportReaderService.java
  30. 29
      blade-service/logpm-report/src/main/java/com/logpm/report/service/ReportDeliverService.java
  31. 82
      blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportDeliverServiceImpl.java
  32. 161
      blade-service/logpm-report/src/main/java/com/logpm/report/util/ReportExcelUtil.java
  33. 143
      blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportCustomerVO.java
  34. 191
      blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportDetailVO.java
  35. 119
      blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportDevilerVO.java
  36. 4
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
  37. 11
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  38. 36
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java
  39. 1
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseWaybillDTO.java
  40. 2
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java
  41. 6
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml
  42. 2
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseWaybillService.java
  43. 2
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseUpdownTypeServiceImpl.java
  44. 91
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java

6
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionStockArticleClient.java

@ -69,7 +69,7 @@ public interface IDistributionStockArticleClient {
void addHandQuantity(@RequestParam("id") Long id,@RequestParam("num") int num);
@GetMapping(API_PREFIX + "/findByOrderSelfNum")
DistributionStockArticleEntity findByOrderSelfNum(@RequestParam String waybillNo);
DistributionStockArticleEntity findByOrderSelfNum(@RequestParam String orderCode,@RequestParam Long warehouseId);
@GetMapping(API_PREFIX + "/deleteById")
void deleteById(@RequestParam Long orderId);
@ -77,8 +77,8 @@ public interface IDistributionStockArticleClient {
@GetMapping(API_PREFIX + "/submitHandQuantity")
void submitHandQuantity(@RequestParam Integer allNum,@RequestParam Long articleId);
@GetMapping(API_PREFIX + "/likeOrderSelfNumbering")
List<DistributionStockArticleEntity> likeOrderSelfNumbering(@RequestParam String orderSelfNum);
@GetMapping(API_PREFIX + "/findListByOrderCodeLike")
List<DistributionStockArticleEntity> findListByOrderCodeLike(@RequestParam String orderCode);
@GetMapping(API_PREFIX + "/findStockArticleByOrderCode")
DistributionStockArticleEntity findStockArticleByOrderCode(@RequestParam String orderCode);

85
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/vo/DistributionReservationZeroPackageVO.java

@ -21,6 +21,8 @@ import org.springblade.core.tool.node.INode;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 预约零担包件中间表 视图实体类
*
@ -32,4 +34,87 @@ import lombok.EqualsAndHashCode;
public class DistributionReservationZeroPackageVO extends DistributionReservationZeroPackageEntity {
private static final long serialVersionUID = 1L;
/**
* 货物名称
*/
private String firsts;
/**
* 运单号
*/
private String waybillNumber;
/**
* 订单号
*/
private String orderCode;
/**
* 服务号
*/
private String serviceNumber;
/**
* 包件总数
*/
private Integer quantity;
/**
* 包件总数
*/
private Long id;
/**
* 包件预约状态
*/
private String orderPackageReservationStatusName;
/**
* 包件预约数量
*/
private Integer reservationNum;
/**
* 装车数量
*/
private Integer loadingNum;
/**
* 签收数量
*/
private Integer signingNum;
/**
* 包件装车状态
*/
private String loadingStatusName;
/**
* 包件签收状态
*/
private String signingStatusName;
/**
* 装车人
*/
private String scanUser;
/**
* 签收人
*/
private String signingUser;
/**
* 装车扫描时间
*/
private Date scanTime;
/**
* 签收扫描时间
*/
private Date signingTime;
}

1
blade-service-api/logpm-warehouse-api/src/main/java/com/logpm/warehouse/vo/WarehouseWaybillVO.java

@ -37,5 +37,6 @@ public class WarehouseWaybillVO extends WarehouseWaybillEntity {
List<WarehouseWayBillDetail> detailList = new ArrayList<>();
private Integer handleNum;
}

10
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataWarehouseServiceImpl.java

@ -208,10 +208,12 @@ public class BasicdataWarehouseServiceImpl extends BaseServiceImpl<BasicdataWare
boolean flag = false;
for (String s : split) {
Dept d = deptClient.findEntityById(Long.parseLong(s));
Integer deptCategory = d.getDeptCategory();
if(deptCategory.equals(5)){
flag = true;
break;
if(!Objects.isNull(d)){
Integer deptCategory = d.getDeptCategory();
if(deptCategory.equals(5)){
flag = true;
break;
}
}
List<Dept> userDeptNode = deptClient.getUserDeptNode(Long.parseLong(s));

12
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionDeliveryListController.java

@ -115,6 +115,18 @@ public class DistributionDeliveryListController extends BladeController {
return R.data(pages);
}
/**
* 查看库存品包件 详情
*/
@GetMapping("/getReservationZeroPackageList")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "查看包件详情", notes = "传入distributionDeliveryList")
public R<IPage<DistributionReservationZeroPackageVO>> getReservationZeroPackageList(@RequestParam Map<String,Object> reservationPackageDTO, Query query) {
IPage<DistributionReservationZeroPackageVO> pages = distributionDeliveryInfoService.getReservationZeroPackageList(reservationPackageDTO,Condition.getPage(query));
return R.data(pages);
}
/**
* 查看订单
*/

10
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionStockArticleClient.java

@ -98,9 +98,10 @@ public class DistributionStockArticleClient implements IDistributionStockArticle
}
@Override
public DistributionStockArticleEntity findByOrderSelfNum(String waybillNo) {
public DistributionStockArticleEntity findByOrderSelfNum(String orderCode,Long warehouseId) {
QueryWrapper<DistributionStockArticleEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("waybill_number",waybillNo);
queryWrapper.eq("order_code",orderCode)
.eq("warehouse_id",warehouseId);
return distributionStockArticleService.getOne(queryWrapper);
}
@ -127,9 +128,8 @@ public class DistributionStockArticleClient implements IDistributionStockArticle
}
@Override
@GetMapping(API_PREFIX + "/likeOrderSelfNumbering")
public List<DistributionStockArticleEntity> likeOrderSelfNumbering(String orderSelfNum) {
return distributionStockArticleService.likeOrderSelfNumbering(orderSelfNum);
public List<DistributionStockArticleEntity> findListByOrderCodeLike(String orderCode) {
return distributionStockArticleService.findListByOrderCodeLike(orderCode);
}
@Override

12
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.java

@ -360,9 +360,17 @@ public interface DistributionReservationMapper extends BaseMapper<DistributionRe
/**
* 根据预约单号查询预约
* @param warehouseCode
* @param searchCode
* @param warehouseId
* @param reservationCode
* @return
*/
DistributionReservationEntity selectByReservationCode(@Param("warehouseId") Long warehouseId,@Param("reservationCode") String reservationCode);
/**
* 查询预约零担包件
* @param reservationPackageDTO
* @param page
* @return
*/
IPage<DistributionReservationZeroPackageVO> selectZeroPackageByReservationInfo(@Param("param")Map<String, Object> reservationPackageDTO, IPage<DistributionReservationZeroPackageVO> page);
}

42
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionReservationMapper.xml

@ -314,8 +314,8 @@
t.cargoUnit AS cargoUnit,
ldslNew.tray_name AS trayName,
ldslNew.unpack AS unpack,
(SELECT SUM(aldrs.reality_num) FROM logpm_distribution_reservation_stocklist AS aldrs WHERE aldrs.reservation_id = #{reservationId} AND aldrs.stocklist_id in (t.aaa)) AS realNum,
(SELECT SUM(newldrs.reservation_num) FROM logpm_distribution_reservation_stocklist AS newldrs WHERE newldrs.reservation_id = #{reservationId} AND newldrs.stocklist_id in (t.aaa)) AS planNum,
(SELECT SUM(aldrs.reality_num) FROM logpm_distribution_reservation_stocklist AS aldrs WHERE aldrs.reservation_id = #{reservationId} AND FIND_IN_SET(aldrs.stocklist_id,t.aaa)) AS realNum,
(SELECT SUM(newldrs.reservation_num) FROM logpm_distribution_reservation_stocklist AS newldrs WHERE newldrs.reservation_id = #{reservationId} AND FIND_IN_SET(newldrs.stocklist_id,t.aaa)) AS planNum,
(
select GROUP_CONCAT( DISTINCT (allocation_id)) from logpm_warehouse_updown_goods where association_value =ldslNew.cargo_number and warehouse_id=#{warehouseId} or association_value in (
SELECT order_package_code from logpm_distribution_parcel_list where conditions=2 and material_code=ldslNew.cargo_number and warehouse_id=#{warehouseId} )
@ -1456,7 +1456,7 @@
ldrs.reservation_id = #{reservationId} and ldrs.stocklist_id = #{stockListId}
</select>
<select id="selectPackageByMap" resultType="com.logpm.distribution.entity.DistributionParcelListEntity">
SELECT
SELECT DISTINCT
ldpl.id,
ldpl.tenant_id,
ldpl.create_user,
@ -1700,4 +1700,40 @@
resultType="com.logpm.distribution.entity.DistributionReservationEntity">
SELECT * FROM logpm_distribution_reservation WHERE reservation_code = #{reservationCode} AND warehouse_id = #{warehouseId}
</select>
<select id="selectZeroPackageByReservationInfo"
resultType="com.logpm.distribution.vo.DistributionReservationZeroPackageVO">
SELECT DISTINCT
ldpl.firsts AS firsts,
ldsa.waybill_number AS waybillNumber,
ldsa.order_code AS orderCode,
ldsa.service_number AS serviceNumber,
ldpl.quantity AS quantity,
ldpl.id AS id,
ldrzp.quantity AS reservationNum,
IF(ldl.loaded_nub is null,0,ldl.loaded_nub) AS loadingNum,
IF(ldl.loaded_nub is null,0,ldl.loaded_nub) AS signingNum ,
CASE IF(ldl.loaded_nub is null,0,ldl.loaded_nub)
WHEN 0 THEN '待装车'
ELSE IF(ldl.loaded_nub = ldrzp.quantity,'已装车','部分装车')
END loadingStatusName,
CASE IF(ldl.received_quantity is null,0,ldl.loaded_nub)
WHEN 0 THEN '待签收'
ELSE IF(ldl.received_quantity = ldrzp.quantity,'已签收','部分签收')
END signingStatusName,
ldl.scan_user AS scanUser,
ldl.scan_time AS scanTime,
ldl.signing_user AS signingUser,
ldl.signing_time AS signingTime
FROM
logpm_distribution_reservation_zero_package AS ldrzp
LEFT JOIN logpm_distribution_parcel_list AS ldpl ON ldrzp.parcel_list_id = ldpl.id
LEFT JOIN logpm_distribution_parcel_number AS ldpn ON ldpl.id = ldpn.parcel_list_id
LEFT JOIN logpm_distribution_stock_article AS ldsa ON ldpl.stock_article_id = ldsa.id
LEFT JOIN logpm_distribution_loadscan As ldl ON ldrzp.reservation_id = ldl.reservation_id AND ldl.package_id = ldpl.id AND ldl.scan_status != 1 AND ldl.is_deleted =0
<where>
ldrzp.reservation_id = #{param.reservationId} AND ldrzp.zero_package_status in ('1','3')
</where>
</select>
</mapper>

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

@ -177,4 +177,6 @@ public interface DistributionStockArticleMapper extends BaseMapper<DistributionS
* @return
*/
List<Long> getOrderListByWaybill(@Param("waybillNumber") String waybillNumber);
List<DistributionStockArticleEntity> findListByOrderCodeLike(@Param("orderCode") String orderCode);
}

14
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml

@ -66,7 +66,14 @@
<select id="likeOrderSelfNumbering" resultMap="distributionStockArticleResultMap">
select *
from logpm_distribution_stock_article
where order_self_numbering like ${orderSelfNumbering}
where order_code like concat('%',#{orderSelfNumbering},'%')
</select>
<select id="findListByOrderCodeLike" resultMap="distributionStockArticleResultMap">
select *
from logpm_distribution_stock_article
where order_code like concat('%',#{orderCode},'%')
</select>
@ -580,7 +587,7 @@
ldsa.create_time,
ldsa.update_user,
ldsa.update_time,
(ldsa.incoming_num - ldsa.delivery_quantity ) AS handQuantity,
ldsa.hand_quantity AS handQuantity,
ldsa.status, ldsa.is_deleted, ldsa.create_dept,
ldsa.reserve1, ldsa.reserve2, ldsa.reserve3, ldsa.reserve4, ldsa.reserve5,
ldsa.service_number, ldsa.order_code,
@ -609,7 +616,8 @@
<where>
ldsa.order_status in ('10','20','30','70')
and ldsa.reservation_status in ('10','20')
AND (ldsa.incoming_num - ldsa.delivery_quantity) > 0 AND ldsa.hand_quantity > 0
<!-- AND (ldsa.incoming_num - ldsa.delivery_quantity) > 0 -->
AND ldsa.hand_quantity > 0
<if test="par.warehouseId != null and par.warehouseId != '' ">
and ldsa.warehouse_id = #{par.warehouseId}
</if>

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

@ -101,7 +101,7 @@ public interface DistributionStockListMapper extends BaseMapper<DistributionStoc
* @param stockListDTO
* @return
*/
List<DistributionStockListVO> selectAllStockList(@Param("par")DistributionStockListDTO stockListDTO);
IPage<DistributionStockListVO> selectAllStockList(@Param("par")DistributionStockListDTO stockListDTO, IPage<DistributionStockListVO> page);
/**
* 查询库存平数据

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

@ -109,4 +109,13 @@ public interface IDistributionDeliveryInfoService extends BaseService<Distributi
* @return
*/
IPage<DistributionReservationInventoryPackageVO> getReservationPackageList(Map<String, Object> reservationPackageDTO, IPage<DistributionReservationInventoryPackageVO> page);
/**
* 查询零担详情
* @param reservationPackageDTO
* @param page
* @return
*/
IPage<DistributionReservationZeroPackageVO> getReservationZeroPackageList(Map<String, Object> reservationPackageDTO, IPage<DistributionReservationZeroPackageVO> page);
}

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

@ -227,4 +227,6 @@ public interface IDistributionStockArticleService extends BaseService<Distributi
* @return
*/
R getdeliveryInfo(Integer type, String code);
List<DistributionStockArticleEntity> findListByOrderCodeLike(String orderCode);
}

12
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionAsyncServiceImpl.java

@ -2236,6 +2236,7 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
}
@Override
@Transactional
public void changeOrderReservationStatus(DistributionStockArticleDTO stockArticleDTO) {
Long id = stockArticleDTO.getId();
DistributionStockArticleEntity stockArticleEntity = Func.copy(stockArticleDTO, DistributionStockArticleEntity.class);
@ -2258,9 +2259,14 @@ public class DistributionAsyncServiceImpl implements IDistributionAsyncService {
List<DistributionParcelNumberEntity> parcelNumberEntities = distributionParcelNumberService.list(Wrappers.<DistributionParcelNumberEntity>query().lambda()
.eq(DistributionParcelNumberEntity::getStockArticleId, stockArticleDTO.getId()));
AtomicInteger unavailableNum = new AtomicInteger();
parcelNumberEntities.forEach(p -> {
unavailableNum.getAndAdd(p.getOutboundQuantity() + p.getDeliveryQuantity());
});
// parcelNumberEntities.forEach(p -> {
// unavailableNum.getAndAdd(p.getOutboundQuantity() + p.getDeliveryQuantity());
// });
if (Func.isNotEmpty(parcelNumberEntities)){
int sum = parcelNumberEntities.stream().mapToInt(p -> p.getOutboundQuantity() + p.getDeliveryQuantity()).sum();
unavailableNum.getAndAdd(sum);
log.info("################零担包件当前不可用数量:{}",sum);
}
if (unavailableNum.get() == stockArticleDTO.getHandQuantity()) {
stockArticleEntity.setReservationStatus(OrderReservationStatusConstant.yiyueyue.getValue());
} else if (unavailableNum.get() < stockArticleDTO.getHandQuantity()) {

13
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryInfoServiceImpl.java

@ -531,4 +531,17 @@ public class DistributionDeliveryInfoServiceImpl extends BaseServiceImpl<Distrib
}
@Override
public IPage<DistributionReservationZeroPackageVO> getReservationZeroPackageList(Map<String, Object> reservationPackageDTO, IPage<DistributionReservationZeroPackageVO> page) {
String method = "DistributionDeliveryInfoServiceImpl类,getReservationPackageList方法";
if (Func.isEmpty(reservationPackageDTO.get("reservationId"))){
//参数缺失
log.error(method+"reservationId参数缺失");
return null;
}
IPage<DistributionReservationZeroPackageVO> reservationInventoryPackageVOIPage = distributionReservationMapper.selectZeroPackageByReservationInfo(reservationPackageDTO,page);
return reservationInventoryPackageVOIPage;
}
}

1
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionReservationServiceImpl.java

@ -2266,6 +2266,7 @@ public class DistributionReservationServiceImpl extends BaseServiceImpl<Distribu
}
}
}
stockArticleDTO.setHandQuantity(s.getHandQuantity());
reservationStockarticleEntity.setReservationNum(reservationOrderNum.get());
reservationStockarticleEntity.setReservationId(reservationEntity.getId());
reservationStockarticleEntity.setIsZero(s.getIsZero());

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

@ -240,12 +240,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
int weiqianshoujianshu = 0;
int zhuangchejianshu = 0;
int qianshoujianshu = 0;
// if (Func.isNotEmpty(list) && list.size()>0){
// zhuangchejianshu += list.stream().filter(f -> f.getStockLockingStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
if (Func.isNotEmpty(list) && list.size()>0){
zhuangchejianshu += list.stream().filter(f -> f.getStockLockingStatus().equals(InventoryLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
// weizhuangchejianshu += list.stream().filter(f -> f.getStockLockingStatus().equals(InventoryLoadingStatusConstant.weizhuangche.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
// qianshoujianshu += list.stream().filter(f -> f.getStockSignfoStatus().equals(InventorySigningStatusConstant.yiqianshou.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
qianshoujianshu += list.stream().filter(f -> f.getStockSignfoStatus().equals(InventorySigningStatusConstant.yiqianshou.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
// weiqianshoujianshu += list.stream().filter(f -> f.getStockSignfoStatus().equals(InventorySigningStatusConstant.weiqianshou.getValue())).mapToInt(DisStockListDetailEntity::getNum).sum();
// }
}
if (Func.isNotEmpty(distributionParcelListEntities)) {
weizhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.weizhuancghe.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
zhuangchejianshu += distributionParcelListEntities.stream().filter(f -> f.getOrderPackageLoadingStatus().equals(OrderPackageLoadingStatusConstant.yizhuangche.getValue())).mapToInt(DistributionParcelListEntity::getQuantity).sum();
@ -533,7 +533,12 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
distributionSignfor.setExamineUserName(user.getNickName());
this.updatePicture(distributionSignforDTO);
this.updateById(distributionSignfor);
//修改预约单的签收状态和装车状态
DistributionReservationEntity reservationEntity = new DistributionReservationEntity();
reservationEntity.setId(distributionSignfor.getReservationId());
reservationEntity.setSigningStatus(ReservationSigningStatusConstant.yiqianshou.getValue());
reservationEntity.setLoadingStatus(ReservationLoadingStatusConstant.yizhuangche.getValue());;
distributionReservationService.updateById(reservationEntity);
distributionAsyncService.sendReviewFactory(distributionSignforDTO.getId(), myCurrentWarehouse.getName(), myCurrentWarehouse.getId());
//还需要对未装车未签收的包件进行状态的回退
boolean flag = this.judgmentSignIsHavePackage(distributionSignfor.getReservationId());
@ -1390,6 +1395,10 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
if (ObjectUtils.isNotNull(o)) {
distributionSignfor.remove("ids");
}
BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
if (Func.isNotEmpty(myCurrentWarehouse)){
distributionSignfor.put("warehouseId",myCurrentWarehouse.getId());
}
// BasicdataWarehouseEntity myCurrentWarehouse = basicdataWarehouseClient.getMyCurrentWarehouse();
// if(ObjectUtils.isNull()){
// throw new ServiceException("请选择仓库!");
@ -2775,22 +2784,29 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
int reservationTotal = reservationZeroPackageEntityList.stream().mapToInt(DistributionReservationZeroPackageEntity::getQuantity).sum();
distributionAppStockArticleVO.setReservationNum(reservationTotal);
List<DistributionParcelNumberVO> parcelNumberVOS = distributionReservationMapper.selectReservationZeroOrderDetail(orderId, Long.parseLong(distributionDeliveryList.getReservationId()));
parcelNumberVOS.forEach(p -> {
DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, orderId).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()));
p.setLoadingNum(0);
p.setSigningNum(0);
if (Func.isNotEmpty(loadscanEntity)) {
p.setLoadingNum(loadscanEntity.getLoadedNub());
if (loadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())) {
p.setSigningNum(loadscanEntity.getReceivedQuantity());
distributionAppStockArticleVO.setSignforNub(0);
if (Func.isNotEmpty(parcelNumberVOS)){
parcelNumberVOS.forEach(p -> {
DistributionLoadscanEntity loadscanEntity = distributionLoadscanService.getOne(Wrappers.<DistributionLoadscanEntity>query().lambda().eq(DistributionLoadscanEntity::getReservationId, distributionDeliveryList.getReservationId()).eq(DistributionLoadscanEntity::getOrderId, orderId).eq(DistributionLoadscanEntity::getPackageId, p.getParcelListId()).ne(DistributionLoadscanEntity::getScanStatus, LoadingStatusConstant.quxiao.getValue()));
p.setLoadingNum(0);
p.setSigningNum(0);
if (Func.isNotEmpty(loadscanEntity)) {
p.setLoadingNum(loadscanEntity.getLoadedNub());
if (loadscanEntity.getSignforState().equals(LoadScanSigningStatusConstant.yiqianshou.getValue())) {
p.setSigningNum(loadscanEntity.getReceivedQuantity());
}
}
}
});
});
distributionAppStockArticleVO.setDistributionParcelNumberVOS(parcelNumberVOS);
distributionAppStockArticleVO.setSignforNub(parcelNumberVOS.stream().mapToInt(DistributionParcelNumberVO::getSigningNum).sum());
}
}
}
orderVos.add(distributionAppStockArticleVO);
}
}
return orderVos;
@ -2956,7 +2972,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
List<DistributionParcelListEntity> parcelListEntities = distributionDeliveryListMapper.selectPackageListByDeliveryListId(distributionAppDeliveryListVO.getId());
distributionAppDeliveryListVO.setInventoryNub(0);
distributionAppDeliveryListVO.setDeliveryNumber(0);
// distributionAppDeliveryListVO.setDeliveryNumber(0);
AtomicInteger deliveryNub = new AtomicInteger();
if (Func.isNotEmpty(inventory)) {
int inventoryNub = inventory.stream().mapToInt(DisStockListDetailEntity::getNum).sum();
@ -3081,6 +3097,7 @@ public class DistributionSignforServiceImpl extends BaseServiceImpl<Distribution
}
});
distributionAppDeliveryListVO.setDriverName(stringBuilder.toString());
// distributionAppDeliveryListVO.setDeliveryNumber(7);
}
}

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

@ -1729,6 +1729,11 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
}
}
@Override
public List<DistributionStockArticleEntity> findListByOrderCodeLike(String orderCode) {
return baseMapper.findListByOrderCodeLike(orderCode);
}
@Override
public DistributionStockArticleEntity findZeroByOrderCodeAndWarehouseId(String orderCode, Long warehouseId) {

7
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockListServiceImpl.java

@ -649,9 +649,10 @@ public class DistributionStockListServiceImpl extends BaseServiceImpl<Distributi
}
DistributionStockListDTO stockListDTO = Func.copy(distributionStockList, DistributionStockListDTO.class);
stockListDTO.setWarehouseId(myCurrentWarehouse.getId());
List<DistributionStockListVO> stockListVOList = baseMapper.selectAllStockList(stockListDTO);
page.setRecords(stockListVOList);
return page;
IPage<DistributionStockListVO> stockListVOList = baseMapper.selectAllStockList(stockListDTO,page);
// List<DistributionStockListVO> stockListVOList = baseMapper.selectAllStockList(stockListDTO,page);
// page.setRecords(stockListVOList);
return stockListVOList;
}
/**

17
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockupServiceImpl.java

@ -862,13 +862,18 @@ public class DistributionStockupServiceImpl extends BaseServiceImpl<Distribution
if (ObjectUtils.isNotNull(i.getStockId())) {
wu.setScanNum(wu.getScanNum() + i2);
}
//托盘信息
if (ObjectUtils.isNotNull(i.getPallet()) && !wu.getPallet().contains(i.getPallet())) {
wu.setPallet(wu.getPallet() + "," + i.getPallet());
if (Func.isNotEmpty(i.getPallet())){
//托盘信息
if (ObjectUtils.isNotNull(i.getPallet()) && !wu.getPallet().contains(i.getPallet())) {
wu.setPallet(wu.getPallet() + "," + i.getPallet());
}
}
//托盘信息
if (ObjectUtils.isNotNull(i.getTrayId()) && !wu.getTrayId().contains(i.getTrayId())) {
wu.setTrayId(wu.getTrayId() + "," + i.getTrayId());
if (Func.isNotEmpty(i.getTrayId())){
//托盘信息
if (ObjectUtils.isNotNull(i.getTrayId()) && !wu.getTrayId().contains(i.getTrayId())) {
wu.setTrayId(wu.getTrayId() + "," + i.getTrayId());
}
}
//订单自编号信息
if (ObjectUtils.isNotNull(i.getOrderCode()) && !wu.getOrderCode().contains(i.getOrderCode())) {

5
blade-service/logpm-patch/src/main/java/com/logpm/patch/service/impl/SyncOrderInfoServiceImpl.java

@ -716,11 +716,12 @@ public class SyncOrderInfoServiceImpl implements ISyncOrderInfoService {
String waybillNo = warehouseWaybill.getWaybillNo();
Long waybillId = warehouseWaybill.getId();
String destinationWarehouse = warehouseWaybill.getDestinationWarehouseName();//目的仓
Long destinationWarehouseId = warehouseWaybill.getDestinationWarehouseId();
Integer totalCount = warehouseWaybill.getTotalCount();//订单总数量
Integer stockCount = warehouseWaybill.getStockCount();//订单在库数量
String consignee = warehouseWaybill.getConsignee();
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.findByName(destinationWarehouse);
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo);
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(destinationWarehouseId);
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo,destinationWarehouseId);
BasicdataClientEntity clientEntity = basicdataClientClient.findByName(consignee);
Date date = new Date();

25
blade-service/logpm-report/src/main/java/com/logpm/report/config/MybatisPlusConfig.java

@ -0,0 +1,25 @@
package com.logpm.report.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author zhaoqiaobo
* @create 2024-03-08 13:59
*/
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*r")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}

110
blade-service/logpm-report/src/main/java/com/logpm/report/controller/ReportDeliveryController.java

@ -0,0 +1,110 @@
/*
* 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.report.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.logpm.report.service.ReportDeliverService;
import com.logpm.report.vo.ReportCustomerVO;
import com.logpm.report.vo.ReportDetailVO;
import com.logpm.report.vo.ReportDevilerVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query;
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.RestController;
import javax.servlet.http.HttpServletResponse;
/**
* 配送报表 控制器
*
* @author cyz
* @since 2023-06-08
*/
@RestController
@AllArgsConstructor
@RequestMapping("/reportDelivery")
@Api(value = "配送报表", tags = "配送报表")
public class ReportDeliveryController extends BladeController {
private final ReportDeliverService reportDeliverService;
@GetMapping("/train")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "配送车次报表", notes = "配送车次报表")
public R<IPage<ReportDevilerVO>> deliveryTrainPage(ReportDevilerVO vo, Query query) {
IPage<ReportDevilerVO> pages = reportDeliverService.deliveryTrainPage(vo, query);
return R.data(pages);
}
@GetMapping("/exportTrain")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "导出配送车次报表", notes = "导出配送车次报表")
public void exportTrain(HttpServletResponse response, ReportDevilerVO vo) {
try {
reportDeliverService.exportTrain(response, vo);
} catch (Exception e) {
e.printStackTrace();
}
}
@GetMapping("/customer")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "配送客户报表", notes = "配送客户报表")
public R<IPage<ReportCustomerVO>> customerPage(ReportCustomerVO vo, Query query) {
IPage<ReportCustomerVO> pages = reportDeliverService.customerPage(vo, query);
return R.data(pages);
}
@GetMapping("/exportCustomer")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "导出配送客户报表", notes = "导出配送客户报表")
public void exportCustomer(HttpServletResponse response, ReportCustomerVO vo) {
try {
reportDeliverService.exportCustomer(response, vo);
} catch (Exception e) {
e.printStackTrace();
}
}
@GetMapping("/details")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "配送明细报表", notes = "配送明细报表")
public R<IPage<ReportDetailVO>> detailsPage(ReportDetailVO vo, Query query) {
IPage<ReportDetailVO> pages = reportDeliverService.detailsPage(vo, query);
return R.data(pages);
}
@GetMapping("/exportDetails")
@ApiOperationSupport(order = 4)
@ApiOperation(value = "导出配送明细报表", notes = "导出配送明细报表")
public void exportDetails(HttpServletResponse response, ReportDetailVO vo) {
try {
reportDeliverService.exportDetails(response, vo);
} catch (Exception e) {
e.printStackTrace();
}
}
}

28
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapeer.java

@ -0,0 +1,28 @@
package com.logpm.report.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.vo.ReportCustomerVO;
import com.logpm.report.vo.ReportDetailVO;
import com.logpm.report.vo.ReportDevilerVO;
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 ReportDeliverMapeer extends BaseMapper {
List<ReportDevilerVO> getDeliveryTrainPage(IPage<ReportDevilerVO> page, @Param("ew") Wrapper<ReportDevilerVO> query);
List<ReportCustomerVO> getCustomerPage(IPage<ReportCustomerVO> page, @Param("ew") Wrapper query);
List<ReportDetailVO> getDetailsPage(IPage<ReportDetailVO> page, @Param("ew") Wrapper query);
}

429
blade-service/logpm-report/src/main/java/com/logpm/report/mapper/ReportDeliverMapper.xml

@ -0,0 +1,429 @@
<?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.report.mapper.ReportDeliverMapeer">
<select id="getDeliveryTrainPage" resultType="com.logpm.report.vo.ReportDevilerVO">
select * from (SELECT d.train_number train_number,
d.task_time task_time,
d.warehouse_name warehouse_name,
CASE
WHEN d.type = 1 THEN
'市配'
WHEN d.type = 2 THEN
'商配'
ELSE ''
END type,
CASE
WHEN d.kind = 1 THEN
'自主配送'
WHEN d.kind = 2 THEN
'自主配送'
ELSE ''
END kind,
d.vehicle_name vehicle_name,
d.driver_name driver_name,
d.distribution_company distribution_company,
CASE
WHEN d.delivery_status = 1 THEN
'待配送'
WHEN d.delivery_status = 2 THEN
'配送中'
WHEN d.delivery_status = 3 THEN
'已完成'
ELSE ''
END delivery_status,
d.customers_number customers_number,
d.price,
d.order_number order_number,
rn.num reservation_num,
rsln.num reservation_stock_listNum,
IFNULL(loadScan.loadedNum,0) loaded_num,
IFNULL(loadscaninvn.loadedNum,0) invn_loaded_num,
IFNULL(loadScan.exLoadedNum,0) ex_loaded_num,
IFNULL(loadScan.reNum,0) re_num,
IFNULL(loadscaninvn.reNum,0) invn_re_num,
IFNULL(loadScan.exReNum,0) ex_reNum,
ifnull(ds.dsNum,0)ds_num,
ifnull(ds.ssNum,0)ss_num,
ifnull(d.unloading_team_name,'') unloading_team_name
FROM
logpm_distribution_delivery_list d
LEFT JOIN (
SELECT
lds.delivery_id,
COALESCE ( sum( ldr.reservation_num ), 0 ) num
FROM
logpm_distribution_signfor lds
JOIN logpm_distribution_reservation ldr ON lds.reservation_id = ldr.id
WHERE
ldr.reservation_status != '40'
GROUP BY
lds.delivery_id
) rn ON rn.delivery_id = d.id
LEFT JOIN (
SELECT
lds.delivery_id,
COALESCE ( sum( ldr.reservation_stock_list_num ), 0 ) num
FROM
logpm_distribution_signfor lds
JOIN logpm_distribution_reservation ldr ON lds.reservation_id = ldr.id
GROUP BY
lds.delivery_id
) rsln ON rsln.delivery_id = d.id
left join (
select
t.delivery_id,SUM(t.loaded_nub) loadedNum,sum(t.received_quantity) reNum,sum(t.is_abnormal_loading) exLoadedNum,sum(t.is_abnormal_signing) exReNum
from logpm_distribution_loadscan t
group by t.delivery_id
) loadScan on loadScan.delivery_id = d.id
left join (
select
t.delivery_id,SUM(t.loaded_nub) loadedNum,sum(t.received_quantity) reNum
from logpm_distribution_loadscaninvn t
group by t.delivery_id
) loadscaninvn on loadscaninvn.delivery_id = d.id
left join (
select
t.delivery_id,
SUM(CASE
WHEN t.driver_signing = 2 THEN
1
ELSE
0
END) dsNum,
SUM(CASE
WHEN t.signing_status = 2 THEN
1
ELSE
0
END) ssNum
from logpm_distribution_signfor t
group by t.delivery_id
) ds on ds.delivery_id = d.id) t
${ew.customSqlSegment}
</select>
<select id="getCustomerPage" resultType="com.logpm.report.vo.ReportCustomerVO">
select *
from (select lddl.train_number train_number,
obj.reservation_code reservation_code,
obj.stock_article_id stock_article_id,
lddl.task_time task_time,
lddl.warehouse_name warehouse_name,
obj.receiving_unit receiving_unit,
obj.mall_name mall_name,
obj.consignee,
obj.delivery_phone delivery_phone,
obj.delivery_address delivery_address,
CASE
WHEN lddl.type = 1 THEN
'市配'
WHEN lddl.type = 2 THEN
'商配'
ELSE ''
END type,
CASE
WHEN lddl.kind = 1 THEN
'自主配送'
WHEN lddl.kind = 2 THEN
'自主配送'
ELSE ''
END kind,
lddl.vehicle_name vehicle_name,
lddl.driver_name driver_name,
lddl.distribution_company distribution_company,
CASE
WHEN lddl.delivery_status = 1 THEN
'待配送'
WHEN lddl.delivery_status = 2 THEN
'配送中'
WHEN lddl.delivery_status = 3 THEN
'已完成'
ELSE ''
END delivery_status,
lddl.order_number order_number,
rn.num reservation_num,
rsln.num reservation_stock_sist_num,
IFNULL(loadScan.loadedNum, 0) loaded_num,
IFNULL(loadscaninvn.loadedNum, 0) invn_loaded_num,
IFNULL(loadScan.exLoadedNum, 0) ex_loaded_num,
IFNULL(loadScan.reNum, 0) re_num,
IFNULL(loadscaninvn.reNum, 0) invn_re_num,
IFNULL(loadScan.exReNum, 0) ex_re_num,
lds.sjsigning_time sjsigning_time,
lds.signee_name signee_name,
lds.signing_time signing_time,
lds.examine_user_name examine_user_name
from logpm_distribution_reservation obj
left join logpm_distribution_signfor lds on lds.reservation_id = obj.id
left join logpm_distribution_delivery_list lddl on lds.delivery_id = lddl.id
LEFT JOIN (
SELECT lds.delivery_id,
COALESCE(sum(ldr.reservation_num), 0) num
FROM logpm_distribution_signfor lds
JOIN logpm_distribution_reservation ldr ON lds.reservation_id = ldr.id
WHERE ldr.reservation_status != '40'
GROUP BY
lds.delivery_id
) rn ON rn.delivery_id = lddl.id
LEFT JOIN (
SELECT lds.delivery_id,
COALESCE(sum(ldr.reservation_stock_list_num), 0) num
FROM logpm_distribution_signfor lds
JOIN logpm_distribution_reservation ldr ON lds.reservation_id = ldr.id
GROUP BY lds.delivery_id
) rsln ON rsln.delivery_id = lddl.id
left join (
select t.delivery_id,
SUM(t.loaded_nub) loadedNum,
sum(t.received_quantity) reNum,
sum(t.is_abnormal_loading) exLoadedNum,
sum(t.is_abnormal_signing) exReNum
from logpm_distribution_loadscan t
group by t.delivery_id
) loadScan on loadScan.delivery_id = lddl.id
left join (
select t.delivery_id,
SUM(t.loaded_nub) loadedNum,
sum(t.received_quantity) reNum
from logpm_distribution_loadscaninvn t
group by t.delivery_id
) loadscaninvn on loadscaninvn.delivery_id = lddl.id
)t
${ew.customSqlSegment}
</select>
<select id="getDetailsPage" resultType="com.logpm.report.vo.ReportDetailVO">
select *
from (
SELECT drp.reservation_id id,
lddl.train_number train_number,
obj.reservation_code reservation_code,
lddl.task_time task_time,
lddl.warehouse_name warehouse_name,
CASE
WHEN lddl.type = 1 THEN
'市配'
WHEN lddl.type = 2 THEN
'商配'
ELSE ''
END type,
CASE
WHEN lddl.kind = 1 THEN
'自主配送'
WHEN lddl.kind = 2 THEN
'自主配送'
ELSE ''
END kind,
lddl.vehicle_name vehicle_name,
lddl.driver_name driver_name,
lddl.distribution_company distribution_company,
obj.consignee dr_consignee,
obj.delivery_phone delivery_phone,
obj.delivery_address delivery_address,
wi.consignee,
wi.consignee_name consignee_name,
wi.consignee_mobile consignee_mobile,
wi.waybill_no waybill_no,
obj.stock_article_id stock_article_id,
dpl.order_package_code order_package_code,
wi.customer_train customer_train,
CASE
WHEN dpl.conditions = 1 THEN
'定制品'
WHEN dpl.conditions = 2 THEN
'库存品'
ELSE '零担'
END conditions,
dpl.firsts,
dpl.SECOND decond,
dpl.third_product third_product,
dpl.material_code material_code,
dpl.material_name material_name,
'' start_war,
'' start_war_in_time,
'' start_war_out_time,
dpl.warehouse_entry_time_end warehouse_entry_time_end,
ldl.unload_time unload_time,
ldl.un_administrators_name un_administrators_name,
lds.sjsigning_time sjsigning_time,
lds.signee_name lds_signee_name,
CASE
WHEN lds.signing_status = 1 THEN
'未签收'
WHEN lds.signing_status = 1 THEN
'签收'
ELSE ''
END signing_status,
lds.signing_time signing_time,
lds.examine_user_name examine_user_name,
CASE
WHEN ldl.is_abnormal_signing = 1 THEN
'是'
ELSE '否'
END abnormal_signing,
CASE
WHEN ldl.is_abnormal_loading = 1 THEN
'是'
ELSE '否'
END abnormal_loading,
CASE
WHEN ldla.auditing_status = 3 THEN
'异常'
WHEN ldla.auditing_status = 1 THEN
'未审核'
WHEN ldla.auditing_status = 2 THEN
'已审核'
ELSE ''
END auditing_status,
ldla.auditing_user auditing_user,
ldla.auditing_time auditing_time
FROM logpm_distribution_reservation_package drp
LEFT JOIN logpm_distribution_parcel_list dpl
ON dpl.order_package_code = drp.packet_bar_code AND dpl.is_deleted = 0
left join logpm_distribution_reservation obj on drp.reservation_id = obj.id
LEFT JOIN logpm_distribution_signfor lds ON lds.reservation_id = drp.reservation_id
LEFT JOIN logpm_distribution_delivery_list lddl ON lds.delivery_id = lddl.id
LEFT JOIN logpm_warehouse_waybill wi ON wi.id = obj.waybill_id
LEFT JOIN logpm_distribution_loadscan ldl
ON ldl.order_package_code = dpl.order_package_code
AND ldl.type = 2
LEFT JOIN logpm_distribution_loadscan_abnormal ldla
ON ldla.package_code = dpl.order_package_code
) t
${ew.customSqlSegment}
<if test="ew!=null and ew.customSqlSegment !=null and ew.customSqlSegment!=''">
and
</if>
<if test="ew==null or ew.customSqlSegment ==null or ew.customSqlSegment==''">
where
</if>
EXISTS(
SELECT obj.id
FROM logpm_distribution_reservation obj
WHERE obj.id = t.id)
union all
select *
from (SELECT drp.reservation_id id,
lddl.train_number train_number,
obj.reservation_code reservation_code,
lddl.task_time task_time,
lddl.warehouse_name warehouse_name,
CASE
WHEN lddl.type = 1 THEN
'市配'
WHEN lddl.type = 2 THEN
'商配'
ELSE ''
END type,
CASE
WHEN lddl.kind = 1 THEN
'自主配送'
WHEN lddl.kind = 2 THEN
'自主配送'
ELSE ''
END kind,
lddl.vehicle_name vehicle_name,
lddl.driver_name driver_name,
lddl.distribution_company distribution_company,
obj.consignee dr_consignee,
obj.delivery_phone delivery_phone,
obj.delivery_address delivery_address,
wi.consignee,
wi.consignee_name consignee_name,
wi.consignee_mobile consignee_mobile,
wi.waybill_no waybill_no,
obj.stock_article_id stock_article_id,
dpl.order_package_code order_package_code,
wi.customer_train customer_train,
CASE
WHEN dpl.conditions = 1 THEN
'定制品'
WHEN dpl.conditions = 2 THEN
'库存品'
ELSE '零担'
END conditions,
dpl.firsts,
dpl.SECOND decond,
dpl.third_product third_product,
dpl.material_code material_code,
dpl.material_name material_name,
'' start_war,
'' start_war_in_time,
'' start_war_out_time,
dpl.warehouse_entry_time_end warehouse_entry_time_end,
ldl.unload_time unload_time,
ldl.un_administrators_name un_administrators_name,
lds.sjsigning_time sjsigning_time,
lds.signee_name lds_signee_name,
CASE
WHEN lds.signing_status = 1 THEN
'未签收'
WHEN lds.signing_status = 1 THEN
'签收'
ELSE ''
END signing_status,
lds.signing_time signing_time,
lds.examine_user_name examine_user_name,
CASE
WHEN ldl.is_abnormal_signing = 1 THEN
'是'
ELSE '否'
END abnormal_signing,
CASE
WHEN ldl.is_abnormal_loading = 1 THEN
'是'
ELSE '否'
END abnormal_loading,
CASE
WHEN ldla.auditing_status = 3 THEN
'异常'
WHEN ldla.auditing_status = 1 THEN
'未审核'
WHEN ldla.auditing_status = 2 THEN
'已审核'
ELSE ''
END auditing_status,
ldla.auditing_user auditing_user,
ldla.auditing_time auditing_time
FROM logpm_distribution_reservation_zero_package drp
LEFT JOIN logpm_distribution_parcel_list dpl
ON dpl.id = drp.parcel_list_id
left join logpm_distribution_reservation obj on drp.reservation_id = obj.id
LEFT JOIN logpm_distribution_signfor lds ON lds.reservation_id = drp.reservation_id
LEFT JOIN logpm_distribution_delivery_list lddl ON lds.delivery_id = lddl.id
LEFT JOIN logpm_warehouse_waybill wi ON wi.id = obj.waybill_id
LEFT JOIN logpm_distribution_loadscan ldl
ON ldl.order_package_code = dpl.order_package_code
AND ldl.type = 2
LEFT JOIN logpm_distribution_loadscan_abnormal ldla
ON ldla.package_code = dpl.order_package_code
) t
${ew.customSqlSegment}
<if test="ew!=null and ew.customSqlSegment !=null and ew.customSqlSegment!=''">
and
</if>
<if test="ew==null or ew.customSqlSegment ==null or ew.customSqlSegment==''">
where
</if>
EXISTS(
SELECT obj.id
FROM logpm_distribution_reservation obj
WHERE obj.id = t.id)
</select>
</mapper>

36
blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryCustomerReader.java

@ -0,0 +1,36 @@
package com.logpm.report.reader;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.report.mapper.ReportDeliverMapeer;
import com.logpm.report.service.ExportReaderService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
*
* @author zhaoqiaobo
* @create 2024-03-08 9:50
*/
@Component
public class DeliveryCustomerReader implements ExportReaderService {
@Resource
private ReportDeliverMapeer reportDeliverMapeer;
@Override
public Long getCount(QueryWrapper query) {
Page page = new Page(1, 1);
reportDeliverMapeer.getCustomerPage(page, query);
return page.getTotal();
}
@Override
public List<T> findList(Page page, QueryWrapper query) {
return reportDeliverMapeer.getCustomerPage(page,query);
}
}

36
blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryDetailReader.java

@ -0,0 +1,36 @@
package com.logpm.report.reader;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.report.mapper.ReportDeliverMapeer;
import com.logpm.report.service.ExportReaderService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
*
* @author zhaoqiaobo
* @create 2024-03-08 9:50
*/
@Component
public class DeliveryDetailReader implements ExportReaderService {
@Resource
private ReportDeliverMapeer reportDeliverMapeer;
@Override
public Long getCount(QueryWrapper query) {
Page page = new Page(1, 1);
reportDeliverMapeer.getDetailsPage(page, query);
return page.getTotal();
}
@Override
public List<T> findList(Page page, QueryWrapper query) {
return reportDeliverMapeer.getDetailsPage(page,query);
}
}

36
blade-service/logpm-report/src/main/java/com/logpm/report/reader/DeliveryTrainReader.java

@ -0,0 +1,36 @@
package com.logpm.report.reader;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.report.mapper.ReportDeliverMapeer;
import com.logpm.report.service.ExportReaderService;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
/**
*
* @author zhaoqiaobo
* @create 2024-03-08 9:50
*/
@Component
public class DeliveryTrainReader implements ExportReaderService {
@Resource
private ReportDeliverMapeer reportDeliverMapeer;
@Override
public Long getCount(QueryWrapper query) {
Page page = new Page(1, 1);
reportDeliverMapeer.getDeliveryTrainPage(page, query);
return page.getTotal();
}
@Override
public List<T> findList(Page page, QueryWrapper query) {
return reportDeliverMapeer.getDeliveryTrainPage(page,query);
}
}

31
blade-service/logpm-report/src/main/java/com/logpm/report/service/ExportReaderService.java

@ -0,0 +1,31 @@
package com.logpm.report.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.poi.ss.formula.functions.T;
import java.util.List;
/**
* 导出数据读取器接口
* @author zhaoqiaobo
* @create 2024-03-07 18:14
*/
public interface ExportReaderService {
/**
* 导出的总条数
* @param query 分页查询对象
* @return
*/
Long getCount(QueryWrapper query);
/**
* 导出数据的分页查询
* @param page 分页对象
* @param query 分页查询对象
* @return
*/
List<T> findList(Page page, QueryWrapper query);
}

29
blade-service/logpm-report/src/main/java/com/logpm/report/service/ReportDeliverService.java

@ -0,0 +1,29 @@
package com.logpm.report.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.vo.ReportCustomerVO;
import com.logpm.report.vo.ReportDetailVO;
import com.logpm.report.vo.ReportDevilerVO;
import org.springblade.core.mp.support.Query;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:51
*/
public interface ReportDeliverService {
IPage<ReportDevilerVO> deliveryTrainPage(ReportDevilerVO vo, Query query);
void exportTrain(HttpServletResponse response, ReportDevilerVO vo) throws InterruptedException, IOException;
IPage<ReportCustomerVO> customerPage(ReportCustomerVO vo, Query query);
void exportCustomer(HttpServletResponse response, ReportCustomerVO vo) throws InterruptedException, IOException;
IPage<ReportDetailVO> detailsPage(ReportDetailVO vo, Query query);
void exportDetails(HttpServletResponse response, ReportDetailVO vo) throws InterruptedException, IOException;
}

82
blade-service/logpm-report/src/main/java/com/logpm/report/service/impl/ReportDeliverServiceImpl.java

@ -0,0 +1,82 @@
package com.logpm.report.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.report.mapper.ReportDeliverMapeer;
import com.logpm.report.reader.DeliveryCustomerReader;
import com.logpm.report.reader.DeliveryDetailReader;
import com.logpm.report.reader.DeliveryTrainReader;
import com.logpm.report.service.ReportDeliverService;
import com.logpm.report.util.ReportExcelUtil;
import com.logpm.report.vo.ReportCustomerVO;
import com.logpm.report.vo.ReportDetailVO;
import com.logpm.report.vo.ReportDevilerVO;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
/**
* @author zhaoqiaobo
* @create 2024-03-06 15:52
*/
@Service
@AllArgsConstructor
public class ReportDeliverServiceImpl implements ReportDeliverService {
private final ReportDeliverMapeer reportDeliverMapeer;
private final DeliveryTrainReader deliveryTrainReader;
private final DeliveryCustomerReader deliveryCustomerReader;
private final DeliveryDetailReader deliveryDetailReader;
@Override
public IPage<ReportDevilerVO> deliveryTrainPage(ReportDevilerVO vo, Query query) {
IPage<ReportDevilerVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
return page.setRecords(reportDeliverMapeer.getDeliveryTrainPage(page, queryWrapper));
}
@Override
public void exportTrain(HttpServletResponse response,ReportDevilerVO vo) throws InterruptedException, IOException {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
new ReportExcelUtil().export(response, deliveryTrainReader, ReportDevilerVO.class, queryWrapper, "配送车次维度报表");
}
@Override
public IPage<ReportCustomerVO> customerPage(ReportCustomerVO vo, Query query) {
IPage<ReportCustomerVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
return page.setRecords(reportDeliverMapeer.getCustomerPage(page, queryWrapper));
}
@Override
public void exportCustomer(HttpServletResponse response, ReportCustomerVO vo) throws InterruptedException, IOException {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
new ReportExcelUtil().export(response, deliveryCustomerReader, ReportCustomerVO.class, queryWrapper, "配送客户维度报表");
}
@Override
public IPage<ReportDetailVO> detailsPage(ReportDetailVO vo,Query query) {
IPage<ReportDetailVO> page = Condition.getPage(query);
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
return page.setRecords(reportDeliverMapeer.getDetailsPage(page, queryWrapper));
}
@Override
public void exportDetails(HttpServletResponse response, ReportDetailVO vo) throws InterruptedException, IOException {
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(vo);
QueryWrapper<ReportDevilerVO> queryWrapper = Condition.getQueryWrapper(stringObjectMap, ReportDevilerVO.class);
new ReportExcelUtil().export(response, deliveryDetailReader, ReportDetailVO.class, queryWrapper, "配送明细报表");
}
}

161
blade-service/logpm-report/src/main/java/com/logpm/report/util/ReportExcelUtil.java

@ -0,0 +1,161 @@
package com.logpm.report.util;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.logpm.report.service.ExportReaderService;
import org.apache.poi.ss.formula.functions.T;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* excel导出工具类
*
* @author zhaoqiaobo
* @create 2024-03-06 17:48
*/
public class ReportExcelUtil {
public static final String CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
public static final String CONTENT_TYPE_ECXCEL = "application/vnd.ms-excel";
/**
* 每个sheet装多少条数据
*/
public static final Long SHEETDATANUM = 1000000L;
/**
* 每次查询几条数据
*/
public static final Long PAGESIZE = 50000L;
/**
* 设置excel导出的返回头
* @param response HttpServletResponse对象
* @param fileName 文件名
*/
public static void setExportHeader(HttpServletResponse response, String fileName) {
response.setContentType(CONTENT_TYPE);
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
try {
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
/**
* 多线程导出数据到excel 带默认参数 pageSize onceSheetDataNum
* @param response
* @param service
* @param classz
* @param query
* @param fileName
*/
public void export(HttpServletResponse response, ExportReaderService service, Class classz, QueryWrapper query, String fileName) {
export(response, service, classz, query, fileName, PAGESIZE, SHEETDATANUM);
}
/**
* 多线程导出数据到excel
* 注意事项
* 1 需要定义导出数据读取器实现 ExportReaderService 接口.实现接口中的两个方法
*
* @param response HttpServletResponse对象
* @param service ExportReaderService读取器接口实现类
* @param classz easyexcel 导出数据定义对象
* @param query 数据查询对象
* @param fileName 导出文件名称
* @param pageSize 每次查询多少条数据
* @param onceSheetDataNum 一个sheet页最大装多少条数据
*/
public void export(HttpServletResponse response, ExportReaderService service, Class classz, QueryWrapper query, String fileName, Long pageSize, Long onceSheetDataNum) {
// 设置响应头
ReportExcelUtil.setExportHeader(response, fileName);
// 获取需要导出的总条数
Long count = service.getCount(query);
// 每个 sheet 放多少条数据
Double sheetDataNum = onceSheetDataNum.doubleValue();
// 总共要几个 sheet
int sheetNum = (int) Math.ceil((count / sheetDataNum));
// 总共需要查询数据库几次
int findNum = (int) Math.ceil((count / pageSize.doubleValue()));
// 封装查询后需要导出的数据
Map<Integer, List<Object>> pageMap = new HashMap<>();
// 定义线程池,每个大表导出使用一个线程池
ExecutorService executorService = Executors.newFixedThreadPool(findNum);
// 控制线程全部查询完后执行导出操作
CountDownLatch countDownLatch = new CountDownLatch(findNum);
ExcelWriter excelWriter = null;
try {
// 创建 excelWriter
excelWriter = EasyExcel.write(response.getOutputStream(), classz).build();
} catch (IOException e) {
e.printStackTrace();
}
int num = 0;
for (int i = 0; i < sheetNum; i++) {
// sheet编号
int finalI = i + 1;
// 每页需要查几次
long l = count - (pageSize * num);
long ceil = l > pageSize ? (int) Math.ceil(onceSheetDataNum / pageSize.doubleValue()) : (int) Math.ceil(l / pageSize.doubleValue());
for (int j = 0; j < ceil; j++) {
// 已经查询过几次了
int finalNum = num;
// 查询次数+1
num = num + 1;
// 提交线程执行查询
executorService.submit(() -> {
// 剩余数据
long remaindNum = count - (finalNum * pageSize);
// 当前第几次查询
int current = finalNum + 1;
// 当前查询需要查询几条数据
long lastNum = remaindNum > pageSize ? pageSize : remaindNum;
// 分页查询对象
Page<T> page = new Page(current, lastNum);
// 执行查询操作返回数据
List deliveryTrainPage = service.findList(page, query);
// 获取组装的数据列表
List<Object> reportDevilerVOS = pageMap.get(finalI);
// 将查询数据添加到本地缓存
if (CollectionUtil.isEmpty(reportDevilerVOS)) {
pageMap.put(finalI, deliveryTrainPage);
} else {
pageMap.get(finalI).addAll(deliveryTrainPage);
}
// 当前线程执行完成
countDownLatch.countDown();
});
}
}
try {
// 等待其他线程执行完成
countDownLatch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
// 分sheet向excel中写数据,
for (Map.Entry<Integer, List<Object>> entry : pageMap.entrySet()) {
Integer key = entry.getKey();
List<Object> value = entry.getValue();
WriteSheet writeSheet = EasyExcel.writerSheet(key, "sheet" + key).build();
excelWriter.write(value, writeSheet);
}
// 关闭流
excelWriter.finish();
}
}

143
blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportCustomerVO.java

@ -0,0 +1,143 @@
package com.logpm.report.vo;
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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 配送报表 客户维度
* @author zhaoqiaobo
* @create 2024-03-06 16:02
*/
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
@ApiModel(value = "配送报表-客户维度", description = "配送报表-客户维度")
@Data
public class ReportCustomerVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "车次")
@ExcelProperty("车次")
private String trainNumber;
@ApiModelProperty(value = "预约单号")
@ExcelProperty("预约单号")
private String reservationCode;
@ApiModelProperty(value = "订单自编码")
@ExcelProperty("订单自编码")
private String stockArticleId;
@ApiModelProperty(value = "配送日期")
@ExcelProperty("配送日期")
private String taskTime;
@ApiModelProperty(value = "仓库")
@ExcelProperty("仓库")
private String warehouseName;
@ApiModelProperty(value = "收货单位")
@ExcelProperty("收货单位")
private String receivingUnit;
@ApiModelProperty(value = "商场名称")
@ExcelProperty("商场名称")
private String mallName;
@ApiModelProperty(value = "客户名称")
@ExcelProperty("客户名称")
private String consignee;
@ApiModelProperty(value = "客户电话")
@ExcelProperty("客户电话")
private String deliveryPhone;
@ApiModelProperty(value = "地址")
@ExcelProperty("地址")
private String deliveryAddress;
@ApiModelProperty(value = "配送类型")
@ExcelProperty("配送类型")
private String type;
@ApiModelProperty(value = "配送种类")
@ExcelProperty("配送种类")
private String kind;
@ApiModelProperty(value = "配送车辆")
@ExcelProperty("配送车辆")
private String vehicleName;
@ApiModelProperty(value = "配送司机")
@ExcelProperty("配送司机")
private String driverName;
@ApiModelProperty(value = "配送公司")
@ExcelProperty("配送公司")
private String distributionCompany;
@ApiModelProperty(value = "配送状态")
@ExcelProperty("配送状态")
private String deliveryStatus;
@ApiModelProperty(value = "订单总数")
@ExcelProperty("订单总数")
private String orderNumber;
@ApiModelProperty(value = "计划定制品件数")
@ExcelProperty("计划定制品件数")
private String reservationNum;
@ApiModelProperty(value = "计划库存品件数")
@ExcelProperty("计划库存品件数")
private String reservationStockListNum;
@ApiModelProperty(value = "定制品装车件数")
@ExcelProperty("定制品装车件数")
private String loadedNum;
@ApiModelProperty(value = "库存品装车件数")
@ExcelProperty("库存品装车件数")
private String invnLoadedNum;
@ApiModelProperty(value = "异常装车件数")
@ExcelProperty("异常装车件数")
private String exLoadedNum;
@ApiModelProperty(value = "定制品签收件数")
@ExcelProperty("定制品签收件数")
private String reNum;
@ApiModelProperty(value = "库存品签收件数")
@ExcelProperty("库存品签收件数")
private String invnReNum;
@ApiModelProperty(value = "异常签收件数")
@ExcelProperty("异常签收件数")
private String exReNum;
@ApiModelProperty(value = "司机完成签收时间")
@ExcelProperty("司机完成签收时间")
private String sjsigningTime;
@ApiModelProperty(value = "签收人")
@ExcelProperty("签收人")
private String signeeName;
@ApiModelProperty(value = "文员复核时间")
@ExcelProperty("文员复核时间")
private String signingTime;
@ApiModelProperty(value = "复核人")
@ExcelProperty("复核人")
private String examineUserName;
}

191
blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportDetailVO.java

@ -0,0 +1,191 @@
package com.logpm.report.vo;
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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 配送报表 车次维度
* @author zhaoqiaobo
* @create 2024-03-06 16:02
*/
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
@ApiModel(value = "配送报表-车次维度", description = "配送报表-车次维度")
@Data
public class ReportDetailVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "车次")
@ExcelProperty("车次")
private String trainNumber;
@ApiModelProperty(value = "预约单号")
@ExcelProperty("预约单号")
private String reservationCode;
@ApiModelProperty(value = "配送日期")
@ExcelProperty("配送日期")
private String taskTime;
@ApiModelProperty(value = "仓库")
@ExcelProperty("仓库")
private String warehouseName;
@ApiModelProperty(value = "配送类型")
@ExcelProperty("配送类型")
private String type;
@ApiModelProperty(value = "配送种类")
@ExcelProperty("配送种类")
private String kind;
@ApiModelProperty(value = "配送车辆")
@ExcelProperty("配送车辆")
private String vehicleName;
@ApiModelProperty(value = "配送司机")
@ExcelProperty("配送司机")
private String driverName;
@ApiModelProperty(value = "配送公司")
@ExcelProperty("配送公司")
private String distributionCompany;
@ApiModelProperty(value = "客户名称")
@ExcelProperty("客户名称")
private String drConsignee;
@ApiModelProperty(value = "客户电话")
@ExcelProperty("客户电话")
private String deliveryPhone;
@ApiModelProperty(value = "地址")
@ExcelProperty("地址")
private String deliveryAddress;
@ApiModelProperty(value = "运单收货单位")
@ExcelProperty("运单收货单位")
private String consignee;
@ApiModelProperty(value = "运单收货人")
@ExcelProperty("运单收货人")
private String consigneeName;
@ApiModelProperty(value = "运单收货电话")
@ExcelProperty("运单收货电话")
private String consigneeMobile;
@ApiModelProperty(value = "运单号")
@ExcelProperty("运单号")
private String waybillNo;
@ApiModelProperty(value = "订单自编码")
@ExcelProperty("订单自编码")
private String stockArticleId;
@ApiModelProperty(value = "客户电话")
@ExcelProperty("包条码")
private String orderPackageCode;
@ApiModelProperty(value = "客户车次号")
@ExcelProperty("客户车次号")
private String customerTrain;
@ApiModelProperty(value = "包件类型")
@ExcelProperty("包件类型")
private String conditions;
@ApiModelProperty(value = "一级品")
@ExcelProperty("一级品")
private String firsts;
@ApiModelProperty(value = "二级品")
@ExcelProperty("二级品")
private String decond;
@ApiModelProperty(value = "三级品")
@ExcelProperty("三级品")
private String thirdProduct;
@ApiModelProperty(value = "物料编码")
@ExcelProperty("物料编码")
private String materialCode;
@ApiModelProperty(value = "物料名称")
@ExcelProperty("物料名称")
private String materialName;
@ApiModelProperty(value = "始发仓")
@ExcelProperty("始发仓")
private String startWar;
@ApiModelProperty(value = "始发仓入库日期")
@ExcelProperty("始发仓入库日期")
private String startWarInTime;
@ApiModelProperty(value = "始发仓发货日期")
@ExcelProperty("始发仓发货日期")
private String startWarOutTime;
@ApiModelProperty(value = "入库时间")
@ExcelProperty("入库时间")
private String warehouseEntryTimeEnd;
@ApiModelProperty(value = "装车时间")
@ExcelProperty("装车时间")
private String unloadTime;
@ApiModelProperty(value = "装车人")
@ExcelProperty("装车人")
private String unAdministratorsName;
@ApiModelProperty(value = "签收时间")
@ExcelProperty("签收时间")
private String sjsigningTime;
@ApiModelProperty(value = "签收人")
@ExcelProperty("签收人")
private String ldsSigneeName;
@ApiModelProperty(value = "文员审核状态")
@ExcelProperty("文员审核状态")
private String signingStatus;
@ApiModelProperty(value = "文员审核时间")
@ExcelProperty("文员审核时间")
private String signingTime;
@ApiModelProperty(value = "审核人名称")
@ExcelProperty("审核人名称")
private String examineUserName;
@ApiModelProperty(value = "是否异常签收")
@ExcelProperty("是否异常签收")
private String abnormalSigning;
@ApiModelProperty(value = "是否异常装车")
@ExcelProperty("是否异常装车")
private String abnormalLoading;
@ApiModelProperty(value = "异常审核状态")
@ExcelProperty("异常审核状态")
private String auditingStatus;
@ApiModelProperty(value = "审核人")
@ExcelProperty("审核人")
private String auditingUser;
@ApiModelProperty(value = "审核时间")
@ExcelProperty("审核时间")
private String auditingTime;
}

119
blade-service/logpm-report/src/main/java/com/logpm/report/vo/ReportDevilerVO.java

@ -0,0 +1,119 @@
package com.logpm.report.vo;
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.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 配送报表 车次维度
* @author zhaoqiaobo
* @create 2024-03-06 16:02
*/
@ColumnWidth(25)
@HeadRowHeight(20)
@ContentRowHeight(18)
@ApiModel(value = "配送报表-车次维度", description = "配送报表-车次维度")
@Data
public class ReportDevilerVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "车次")
@ExcelProperty("车次")
private String trainNumber;
@ApiModelProperty(value = "配送日期")
@ExcelProperty("配送日期")
private String taskTime;
@ApiModelProperty(value = "仓库")
@ExcelProperty("仓库")
private String warehouseName;
@ApiModelProperty(value = "配送类型")
@ExcelProperty("配送类型")
private String type;
@ApiModelProperty(value = "配送种类")
@ExcelProperty("配送种类")
private String kind;
@ApiModelProperty(value = "配送车辆")
@ExcelProperty("配送车辆")
private String vehicleName;
@ApiModelProperty(value = "配送司机")
@ExcelProperty("配送司机")
private String driverName;
@ApiModelProperty(value = "配送公司")
@ExcelProperty("配送公司")
private String distributionCompany;
@ApiModelProperty(value = "配送状态")
@ExcelProperty("配送状态")
private String deliveryStatus;
@ApiModelProperty(value = "配送客户数")
@ExcelProperty("配送客户数")
private String customersNumber;
@ApiModelProperty(value = "配送价格")
@ExcelProperty("配送价格")
private String price;
@ApiModelProperty(value = "订单总数")
@ExcelProperty("订单总数")
private String orderNumber;
@ApiModelProperty(value = "计划定制品件数")
@ExcelProperty("计划定制品件数")
private String reservationNum;
@ApiModelProperty(value = "计划库存品件数")
@ExcelProperty("计划库存品件数")
private String reservationStockListNum;
@ApiModelProperty(value = "定制品装车件数")
@ExcelProperty("定制品装车件数")
private String loadedNum;
@ApiModelProperty(value = "库存品装车件数")
@ExcelProperty("库存品装车件数")
private String invnLoadedNum;
@ApiModelProperty(value = "异常装车件数")
@ExcelProperty("异常装车件数")
private String exLoadedNum;
@ApiModelProperty(value = "定制品签收件数")
@ExcelProperty("定制品签收件数")
private String reNum;
@ApiModelProperty(value = "库存品签收件数")
@ExcelProperty("库存品签收件数")
private String invnReNum;
@ApiModelProperty(value = "异常签收件数")
@ExcelProperty("异常签收件数")
private String exReNum;
@ApiModelProperty(value = "签收完成客户数")
@ExcelProperty("签收完成客户数")
private String dsNum;
@ApiModelProperty(value = "文员复核客户数")
@ExcelProperty("文员复核客户数")
private String ssNum;
@ApiModelProperty(value = "卸车班组名称")
@ExcelProperty("卸车班组名称")
private String unloadingTeamName;
}

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

@ -350,7 +350,7 @@
left join logpm_distribution_parcel_list ldpl on ldpl.order_package_code = ltcls.scan_code and ldpl.warehouse_id = ltcls.from_warehouse_id
where ltcls.load_id = #{loadId}
and ltcls.warehouse_id = #{warehouseId}
and ltcls.order_code = #{ordeCode}
and ltcls.order_code = #{orderCode}
and ltcls.waybill_no = #{waybillNo}
group by ldpl.firsts
</select>
@ -362,7 +362,7 @@
left join logpm_distribution_parcel_list ldpl on ldpl.order_package_code = ltcls.scan_code and ldpl.warehouse_id = ltcls.from_warehouse_id
where ltcls.load_id = #{loadId}
and (ltcls.final_node_id = #{warehouseId} or ltcls.unload_node_id = #{warehouseId})
and ltcls.order_code = #{ordeCode}
and ltcls.order_code = #{orderCode}
and ltcls.waybill_no = #{waybillNo}
group by ldpl.firsts
</select>

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

@ -726,6 +726,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
currentCarsLoadLineEntity.setUnloadStatus("1");
currentCarsLoadLineEntity.setUnloadUserId(AuthUtil.getUserId());
currentCarsLoadLineEntity.setUnloadUserName(AuthUtil.getUserName());
currentCarsLoadLineEntity.setUnloadDate(new Date());
trunklineCarsLoadLineService.updateById(currentCarsLoadLineEntity);
try{
@ -744,6 +745,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
currentCarsLoadLineEntity.setUnloadStatus("2");
currentCarsLoadLineEntity.setUnloadUserId(AuthUtil.getUserId());
currentCarsLoadLineEntity.setUnloadUserName(AuthUtil.getUserName());
currentCarsLoadLineEntity.setUnloadDate(new Date());
trunklineCarsLoadLineService.updateById(currentCarsLoadLineEntity);
try{
trunklineCarsLoadLogService.saveLog(carsLoadEntity,currentCarsLoadLineEntity, CarsLoadLogTypeConstant.END_UNLOAD_CARS_LOAD.getValue());
@ -3361,7 +3363,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
BeanUtil.copy(carsLoadEntity,trunklineCarsLoadLoadingListVO);
Long startWarehouseId = carsLoadEntity.getStartWarehouseId();
String endWarehouseIds = carsLoadEntity.getEndWarehouseIds();
if(!startWarehouseId.equals(warehouseId) && !endWarehouseIds.contains(warehouseId+"")){
if(startWarehouseId.equals(warehouseId) || endWarehouseIds.contains(warehouseId+"")){
//起始仓装载清单
TrunklineCarsLoadLineEntity carsLoadLineEntity = trunklineCarsLoadLineService.findEntityByLoadIdAndNodeId(loadId, warehouseId);
if(Objects.isNull(carsLoadLineEntity)){
@ -3370,7 +3372,12 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
}
String endWarehouseNames = carsLoadEntity.getEndWarehouseNames();
String stopoverStation = endWarehouseNames.substring(0, endWarehouseNames.lastIndexOf(","));
String stopoverStation = null;
if(endWarehouseNames.contains(",")){
stopoverStation = endWarehouseNames.substring(0, endWarehouseNames.lastIndexOf(","));
}else{
stopoverStation = endWarehouseNames;
}
trunklineCarsLoadLoadingListVO.setStopoverStation(stopoverStation);
trunklineCarsLoadLoadingListVO.setUnloadDate(carsLoadLineEntity.getUnloadDate());
trunklineCarsLoadLoadingListVO.setUnloadUserName(carsLoadLineEntity.getUnloadUserName());

36
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java

@ -94,19 +94,16 @@ public class WarehouseWaybillController extends BladeController {
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入warehouseWaybill")
public R<IPage<WarehouseWaybillVO>> list(@ApiIgnore @RequestParam Map<String, Object> warehouseWaybill, Query query) {
// QueryWrapper<WarehouseWaybillEntity> queryWrapper = Condition.getQueryWrapper(warehouseWaybill, WarehouseWaybillEntity.class);
// //获取当前登录人仓库
// List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWatchWarehouse();
// List<Long> collect = myWatchWarehouse.stream()
// .map(BasicdataWarehouseEntity::getId)
// .collect(Collectors.toList());
// queryWrapper.lambda()
// .in(collect.size() > 0, WarehouseWaybillEntity::getDepartureWarehouseId, collect)
// .or()
// .in(collect.size() > 0, WarehouseWaybillEntity::getDestinationWarehouseId, collect);
IPage<WarehouseWaybillEntity> pages = warehouseWaybillService.pageInfo(Condition.getPage(query), warehouseWaybill);
return R.data(WarehouseWaybillWrapper.build().pageVO(pages));
BasicdataWarehouseEntity basicdataWarehouseEntity = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(basicdataWarehouseEntity)){
log.warn("################pageInfo: 请选择仓库");
throw new CustomerException(405,"请选择仓库");
}
warehouseWaybill.put("warehouseId",basicdataWarehouseEntity.getId());
IPage<WarehouseWaybillVO> pages = warehouseWaybillService.pageInfo(Condition.getPage(query), warehouseWaybill);
return R.data(pages);
}
/**
@ -171,6 +168,13 @@ public class WarehouseWaybillController extends BladeController {
log.warn("################splitOrder: 没有拆单数据");
return R.fail(405, "没有拆单数据");
}
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn("##############splitOrder: 请选择仓库");
return R.fail(405,"请选择仓库");
}
Long warehouseId = myCurrentWarehouse.getId();
String waybillNo = splitOrderDTOList.get(0).getWaybillNo();//运单号
//查询运单
WarehouseWaybillEntity warehouseWaybillEntity = warehouseWaybillService.findByWaybillNo(waybillNo);
@ -186,10 +190,10 @@ public class WarehouseWaybillController extends BladeController {
// return R.fail(405,"在库数量不等于总数量");
// }
//判断运单对应的订单是否已经
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo);
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo,warehouseId);
if (Objects.isNull(distributionStockArticleEntity)) {
log.warn("################splitOrder: 当前在库订单已转库存品,不能拆单 waybillNo={}", waybillNo);
return R.fail(405, "当前在库订单已转库存品");
log.warn("################splitOrder: 当前在库订单信息不存在,不能拆单 waybillNo={}", waybillNo);
return R.fail(405, "当前在库订单信息不存在");
}
String isZero = distributionStockArticleEntity.getIsZero();
if(!isZero.equals("1")){

1
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/dto/WarehouseWaybillDTO.java

@ -44,4 +44,5 @@ public class WarehouseWaybillDTO extends WarehouseWaybillEntity {
private List<String> waybillNoList;
}

2
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java

@ -47,7 +47,7 @@ public interface WarehouseWaybillMapper extends BaseMapper<WarehouseWaybillEntit
List<WarehouseWaybillVO> exportWarehouseWarehousingDetail(@Param("ew") QueryWrapper<WarehouseWaybillEntity> queryWrapper);
IPage<WarehouseWaybillEntity> pageInfo(IPage<Object> page,@Param("param") WarehouseWaybillDTO warehouseWaybillDTO);
IPage<WarehouseWaybillVO> pageInfo(IPage<Object> page,@Param("param") WarehouseWaybillDTO warehouseWaybillDTO);
IPage<WarehouseWaybillVO> pageList(IPage<Object> page, @Param("param") WarehouseWaybillDTO waybillDTO);

6
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml

@ -151,6 +151,12 @@
#{item}
</foreach>
</if>
<if test="param.warehouseId != null">
and (departure_warehouse_id = #{param.warehouseId} or destination_warehouse_id = #{param.warehouseId})
</if>
<if test="param.waybillNo != null">
and waybill_no = #{param.waybillNo}
</if>
order by create_time desc
</select>

2
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseWaybillService.java

@ -47,7 +47,7 @@ public interface IWarehouseWaybillService extends BaseService<WarehouseWaybillEn
*/
List<WarehouseWaybillExcel> exportWarehouseWarehousingDetail(Map<String, Object> warehouseWaybillEntity);
IPage<WarehouseWaybillEntity> pageInfo(IPage<Object> page, Map<String, Object> warehouseWaybill);
IPage<WarehouseWaybillVO> pageInfo(IPage<Object> page, Map<String, Object> warehouseWaybill);
IPage<WarehouseWaybillVO> pageList(WarehouseWaybillDTO waybillDTO);

2
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseUpdownTypeServiceImpl.java

@ -2412,11 +2412,11 @@ public class WarehouseUpdownTypeServiceImpl extends BaseServiceImpl<WarehouseUpd
stringBuffer.append("{").append(materialCode).append("},");
continue;
}
updownGoodsEntity = new WarehouseUpdownGoodsEntity();
updownGoodsEntity.setCreateUser(1714696768639311873L);
updownGoodsEntity.setUpdateUser(1714696768639311873L);
updownGoodsEntity.setCreateDept(1649331096241836033L);
updownGoodsEntity.setTenantId(TenantNum.HUITONGCODE);
updownGoodsEntity = new WarehouseUpdownGoodsEntity();
updownGoodsEntity.setUpdownTypeId(updownTypeEntity.getId());
updownGoodsEntity.setAreaId(updownTypeEntity.getAreaId());
updownGoodsEntity.setAreaTitle(updownTypeEntity.getAreaTitle());

91
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java

@ -171,21 +171,22 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
//判断是否需要创建在库订单
}
//创建在库订单
createStockArticle(warehouseWaybill);
createStockArticle(warehouseWaybill,allNum);
log.info("###############waybillDataHandler: 处理数据结束 waybillNo={}", waybillNo);
}
private void createStockArticle(WarehouseWaybillEntity warehouseWaybill) {
private void createStockArticle(WarehouseWaybillEntity warehouseWaybill,Integer allNum) {
//判断新系统是否有这条订单数据
//自动生成的在库订单就用运单号作为订单号
String waybillNo = warehouseWaybill.getWaybillNo();
Long waybillId = warehouseWaybill.getId();
String destinationWarehouse = warehouseWaybill.getDestinationWarehouseName();//目的仓
Long destinationWarehouseId = warehouseWaybill.getDestinationWarehouseId();
Integer totalCount = warehouseWaybill.getTotalCount();//订单总数量
Integer stockCount = warehouseWaybill.getStockCount();//订单在库数量
String consignee = warehouseWaybill.getConsignee();
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.findByName(destinationWarehouse);
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo);
BasicdataWarehouseEntity basicdataWarehouseEntity = basicdataWarehouseClient.getEntityWarehouseId(destinationWarehouseId);
DistributionStockArticleEntity distributionStockArticleEntity = distributionStockArticleClient.findByOrderSelfNum(waybillNo,destinationWarehouseId);
BasicdataClientEntity clientEntity = basicdataClientClient.findByName(consignee);
Date date = new Date();
@ -253,6 +254,7 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
distributionStockArticleEntity.setAcceptWarehouseId(warehouseWaybill.getDestinationWarehouseId());
distributionStockArticleEntity.setAcceptWarehouseName(warehouseWaybill.getDestinationWarehouseName());
distributionStockArticleEntity.setIsZero("1");
distributionStockArticleEntity.setIncomingNum(allNum);
distributionStockArticleEntity.setTenantId(TenantNum.HUITONGCODE);
List<WarehouseWayBillDetail> details = warehouseWayBillDetailService.findByWaybillId(waybillId);
@ -409,18 +411,32 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
log.info("###########splitOrder: 开始拆单 ");
Long articleId = distributionStockArticleEntity.getId();
Integer handQuantity = distributionStockArticleEntity.getHandQuantity();
String orderSelfNum = distributionStockArticleEntity.getOrderCode();
Integer total = 0;
for (SplitOrderDTO splitOrderDTO : splitOrderDTOList) {
List<ProductDTO> products = splitOrderDTO.getProducts();
for (ProductDTO product : products) {
total = total+ product.getSplitNum();
}
}
if(handQuantity < total){
log.warn("##############splitOrder: 在库件数不足");
throw new CustomerException(405,"在库件数不足");
}
String orderCode = distributionStockArticleEntity.getOrderCode();
Long orderId = distributionStockArticleEntity.getId();
Long warehouseId = distributionStockArticleEntity.getWarehouseId();
List<ProductDTO> submitList = new ArrayList<>();
List<DistributionStockArticleEntity> articleList = distributionStockArticleClient.likeOrderSelfNumbering(orderSelfNum);
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListClient.findEntityListByOrderCode(orderSelfNum, warehouseId);
List<DistributionStockArticleEntity> articleList = distributionStockArticleClient.findListByOrderCodeLike(orderCode);
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListClient.findEntityListByOrderCode(orderCode, warehouseId);
int size = articleList.size();
Integer subNum = 0;
for (int i = 0; i < splitOrderDTOList.size(); i++) {
SplitOrderDTO splitOrderDTO = splitOrderDTOList.get(i);
DistributionStockArticleEntity entity = new DistributionStockArticleEntity();
BeanUtil.copyProperties(distributionStockArticleEntity, entity);
entity.setId(null);
entity.setOrderCode(entity.getOrderCode() + "-" + size);
entity.setCustomerName(splitOrderDTO.getCustomerPerson());
entity.setCustomerTelephone(splitOrderDTO.getCustomerMobile());
@ -444,6 +460,7 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
DistributionParcelListEntity distributionParcelListEntity = new DistributionParcelListEntity();
DistributionParcelListEntity distributionParcelListEntity1 = parcelListEntityList.get(0);
BeanUtil.copyProperties(distributionParcelListEntity1, distributionParcelListEntity);
distributionParcelListEntity.setId(null);
distributionParcelListEntity.setFirsts(productDTO.getProductName());
distributionParcelListEntity.setQuantity(productDTO.getSplitNum());
list.add(distributionParcelListEntity);
@ -508,8 +525,8 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
}
distributionStockArticleEntity.setHandQuantity(handQuantity - allNum);
distributionStockArticleClient.submitHandQuantity(allNum, articleId);
String orderSelfNumbering = distributionStockArticleEntity.getOrderCode();
warehouseWaybillMapper.submitStockCount(orderSelfNumbering, allNum);
// String orderSelfNumbering = distributionStockArticleEntity.getOrderCode();
// warehouseWaybillMapper.submitStockCount(orderSelfNumbering, allNum);
//删除主订单包件对应数据
for (ProductDTO productDTO : submitList) {
String productName = productDTO.getProductName();
@ -524,7 +541,7 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
size++;
}
//减去零担零担上的在库件数
distributionStockArticleClient.submitHandleNumByOrderId(subNum,articleId);
// distributionStockArticleClient.submitHandleNumByOrderId(subNum,articleId);
}
@ -678,23 +695,39 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
}
@Override
public IPage<WarehouseWaybillEntity> pageInfo(IPage<Object> page, Map<String, Object> warehouseWaybill) {
public IPage<WarehouseWaybillVO> pageInfo(IPage<Object> page, Map<String, Object> warehouseWaybill) {
WarehouseWaybillDTO warehouseWaybillDTO = JSON.parseObject(JSONObject.toJSONString(warehouseWaybill), WarehouseWaybillDTO.class);
// QueryWrapper<WarehouseWaybillEntity> queryWrapper = Condition.getQueryWrapper(warehouseWaybill, WarehouseWaybillEntity.class);
//获取当前登录人仓库
List<BasicdataWarehouseEntity> myWatchWarehouse = basicdataWarehouseClient.getMyWatchWarehouse();
List<Long> collect = myWatchWarehouse.stream()
.map(BasicdataWarehouseEntity::getId)
.collect(Collectors.toList());
// queryWrapper.lambda()
// .in(collect.size() > 0, WarehouseWaybillEntity::getDepartureWarehouseId, collect)
// .or()
// .in(collect.size() > 0, WarehouseWaybillEntity::getDestinationWarehouseId, collect);
if(!collect.isEmpty()){
warehouseWaybillDTO.setDepartureWarehouseIds(collect);
warehouseWaybillDTO.setDestinationWarehouseIds(collect);
Long warehouseId = warehouseWaybillDTO.getWarehouseId();
IPage<WarehouseWaybillVO> warehouseWaybillVOIPage = baseMapper.pageInfo(page, warehouseWaybillDTO);
List<WarehouseWaybillVO> records = warehouseWaybillVOIPage.getRecords();
for (WarehouseWaybillVO record : records) {
String deliveryMethodStr = DictBizCache.getValue(DictBizConstant.DELIVERY_METHOD, record.getDeliveryMethod());
record.setDeliveryMethodStr(deliveryMethodStr);
String urgencyStr = DictBizCache.getValue(DictBizConstant.URGENCY, record.getUrgency());
record.setUrgencyStr(urgencyStr);
String statsStr = DictBizCache.getValue(DictBizConstant.WAY_BILL_STATUS, record.getStats());
record.setStatsStr(statsStr);
String typeStr = DictBizCache.getValue(DictBizConstant.DISTRIBUTION_TYPE, record.getServiceType());
record.setServiceTypeStr(typeStr);
String freezeStatusStr = DictBizCache.getValue(DictBizConstant.FREEZE_STATUS, record.getFreezeStatus());
record.setFreezeStatusStr(freezeStatusStr);
Integer waybillType = record.getWaybillType();
if(waybillType.equals(2)){
String orderCode = record.getWaybillNo();
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId);
if(!Objects.isNull(stockArticleEntity)){
record.setHandleNum(stockArticleEntity.getHandQuantity());
}
}
}
return baseMapper.pageInfo(page,warehouseWaybillDTO);
warehouseWaybillVOIPage.setRecords(records);
return warehouseWaybillVOIPage;
}
@Override
@ -703,9 +736,17 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
page.setCurrent(waybillDTO.getPageNum());
page.setSize(waybillDTO.getPageSize());
Long warehouseId = waybillDTO.getWarehouseId();
IPage<WarehouseWaybillVO> pageList = baseMapper.pageList(page,waybillDTO);
List<WarehouseWaybillVO> records = pageList.getRecords();
for (WarehouseWaybillVO record : records) {
// Integer waybillType = record.getWaybillType();
// if(waybillType.equals(2)){
// String orderCode = record.getWaybillNo();
// DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCodeAndWarehouseId(orderCode, warehouseId);
// record.setHandleNum(stockArticleEntity.getHandQuantity());
// }
Long waybillId = record.getId();
List<WarehouseWayBillDetail> wayBillDetailList = warehouseWayBillDetailService.findByWaybillId(waybillId);
record.setDetailList(wayBillDetailList);

Loading…
Cancel
Save