Browse Source

1.干线逻辑优化,bug修复

visual
zhenghaoyu 4 months ago
parent
commit
9120dcce18
  1. 4
      blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java
  2. 3
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/dto/LoadCarsDTO.java
  3. 2
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadAllOrderVO.java
  4. 15
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderTotalNumVO.java
  5. 37
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/controller/DistributionStockArticleController.java
  6. 14
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/StockArticleDTO.java
  7. 20
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/feign/DistributionParcelListClient.java
  8. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.java
  9. 165
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockArticleMapper.xml
  10. 3
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/IDistributionStockArticleService.java
  11. 83
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionStockArticleServiceImpl.java
  12. 33
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml
  13. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.java
  14. 25
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineWaybillOrderMapper.xml
  15. 5
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillOrderService.java
  16. 104
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  17. 52
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  18. 11
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillOrderServiceImpl.java
  19. 25
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java

4
blade-service-api/logpm-distribution-api/src/main/java/com/logpm/distribution/feign/IDistributionParcelListClient.java

@ -290,5 +290,9 @@ public interface IDistributionParcelListClient {
@GetMapping(API_PREFIX + "/findPackageGoodsListByWaybillNoAndWarehouseId")
List<JSONObject> findPackageGoodsListByWaybillNoAndWarehouseId(@RequestParam String waybillNo, @RequestParam Long warehouseId);
@PostMapping(API_PREFIX + "/updateZeroList")
void updateZeroList(@RequestBody List<DistributionParcelListEntity> updateParceListEntityList);
}

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

@ -40,8 +40,11 @@ public class LoadCarsDTO implements Serializable {
private String settlementPerson;
private String customerType;
private String keyWords;
private Long warehouseId;
private List<Long> warehouseIds;
private List<Long> destinationWarehouseIds;
private Integer startCarType;
private Integer loadingType;

2
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/CarsLoadAllOrderVO.java

@ -18,9 +18,11 @@ public class CarsLoadAllOrderVO implements Serializable {
private String nodeName;//计划仓库
private Date createTime;//创建时间
private String destination;//到站
private String trayName;//托盘
private String departureWarehouseName;//目的仓
private String destinationWarehouseName;//目的仓
private String shipper;//发货单位
private String shipperName;//发货人
private String consignee;//收货单位
private String consigneeName;//收货人
private String consigneeMobile;//收货人

15
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/vo/OrderTotalNumVO.java

@ -0,0 +1,15 @@
package com.logpm.trunkline.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class OrderTotalNumVO implements Serializable {
private String orderCode;
private String waybillNo;
private Integer totalNum;
}

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

@ -22,6 +22,7 @@ import com.logpm.basicdata.entity.BasicdataClientEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.distribution.dto.DistributionStockArticleDTO;
import com.logpm.distribution.dto.StockArticleDTO;
import com.logpm.distribution.dto.TrunklineOrderCodeDTO;
import com.logpm.distribution.entity.DistributionStockArticleEntity;
import com.logpm.distribution.excel.DistributionSignForStockArticleExcel;
@ -38,6 +39,7 @@ import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.DistributionTypeConstant;
import org.springblade.common.constant.orderpackage.OrderPackageReservationStatusConstant;
import org.springblade.common.exception.CustomerException;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition;
@ -111,6 +113,15 @@ public class DistributionStockArticleController extends BladeController {
return R.data(DistributionStockArticleWrapper.build().pageVO(pages));
}
@GetMapping("/listTransfer")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入distributionStockArticle")
public R<IPage<DistributionStockArticleVO>> listTransfer(@ApiIgnore @RequestParam Map<String, Object> distributionStockArticle, Query query) {
IPage<DistributionStockArticleEntity> pages = distributionStockArticleService.pageListOweTransfer(Condition.getPage(query), distributionStockArticle);
return R.data(DistributionStockArticleWrapper.build().pageVO(pages));
}
/**
* 配送在库订单 分页
*/
@ -617,4 +628,30 @@ public class DistributionStockArticleController extends BladeController {
}
@ResponseBody
@PostMapping("/findZeroOrderInfo")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "分页", notes = "传入stockArticleDTO")
public R findZeroOrderInfo(@RequestBody StockArticleDTO stockArticleDTO) {
String method = "############findZeroOrderInfo: ";
log.info(method + "请求参数{}", stockArticleDTO);
Long orderId = stockArticleDTO.getOrderId();
try{
if(Objects.isNull(orderId)){
log.warn(method+"订单id为空 orderId={}",orderId);
return R.fail(405,"订单id为空");
}
return distributionStockArticleService.findZeroOrderInfo(orderId);
}catch (CustomerException e){
log.error(e.message,e);
return R.fail(e.code,e.message);
}catch (Exception e){
log.error(method+"系统异常",e);
return R.fail(500,"系统异常");
}
}
}

14
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/dto/StockArticleDTO.java

@ -0,0 +1,14 @@
package com.logpm.distribution.dto;
import lombok.Data;
import java.io.Serializable;
@Data
public class StockArticleDTO implements Serializable {
private String orderCode;
private Long orderId;
}

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

@ -597,4 +597,24 @@ public class DistributionParcelListClient implements IDistributionParcelListClie
return distributionParcelListService.findPackageGoodsListByWaybillNoAndWarehouseId(waybillNo,warehouseId);
}
@Override
public void updateZeroList(List<DistributionParcelListEntity> updateParceListEntityList) {
distributionParcelListService.updateBatchById(updateParceListEntityList);
//把updateParceListEntityList转化成id为key的Map
Map<Long, DistributionParcelListEntity> updateParcelListMap = updateParceListEntityList.stream().collect(Collectors.toMap(DistributionParcelListEntity::getId, parcelListEntity -> parcelListEntity));
Set<Long> parceListIds = updateParcelListMap.keySet();
QueryWrapper<DistributionParcelNumberEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("parcel_list_id", parceListIds);
List<DistributionParcelNumberEntity> list = distributionParcelNumberService.list(queryWrapper);
list.forEach(p->{
Long parcelListId = p.getParcelListId();
DistributionParcelListEntity parcelList = updateParcelListMap.get(parcelListId);
p.setHandQuantity(parcelList.getQuantity());
});
distributionParcelNumberService.updateBatchById(list);
}
}

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

@ -233,4 +233,6 @@ public interface DistributionStockArticleMapper extends BaseMapper<DistributionS
Integer findStockNumByWaybillNo(@Param("waybillNo") String waybillNo, @Param("departureWarehouseId") Long departureWarehouseId);
Integer findSignNumByWaybillNo(@Param("waybillNo") String waybillNo, @Param("destinationWarehouseId") Long destinationWarehouseId);
IPage<DistributionStockArticleEntity> pageListOweTransfer(IPage page,@Param("param")DistributionStockArticleOweDTO stockArticleEntity,@Param("warehouseIds")List<Long> warehouseIds);
}

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

@ -2057,4 +2057,169 @@
and waybill_number = #{waybillNo}
</select>
<select id="pageListOweTransfer" resultType="com.logpm.distribution.entity.DistributionStockArticleEntity">
select ldsa.id, ldsa.tenant_id,
ldsa.create_user,
ldsa.create_time,
ldsa.update_user,
ldsa.update_time,
ldsa.incoming_num AS incomingNum,
ldsa.status, ldsa.is_deleted, ldsa.create_dept,
ldsa.reserve1, ldsa.reserve2, ldsa.reserve3, ldsa.reserve4, ldsa.reserve5,
ldsa.service_number, ldsa.order_code,
ldsa.mall_id, ldsa.mall_code, ldsa.mall_name, ldsa.store_name,
ldsa.store_code, ldsa.store_id, ldsa.description_goods, ldsa.warehouse_id,
ldsa.warehouse, ldsa.warehouse_entry_time, ldsa.store_time, ldsa.total_number, ldsa.hand_quantity,
ldsa.complete_set, ldsa.brand, ldsa.type_service, ldsa.customer_name, ldsa.customer_telephone,
ldsa.customer_address, ldsa.genre,
ldsa.stockup_status, ldsa.reservation_status, ldsa.order_status, ldsa.grounding_status,
ldsa.order_receive_status,
ldsa.freeze_status, ldsa.notification, ldsa.fee, ldsa.rate, ldsa.advance_id, ldsa.waybill_id,
ldsa.waybill_number waybillNumber,
ldsa.consignee_unit, ldsa.collect_fee, ldsa.storage_fee, ldsa.consignee_person, ldsa.consignee_address,
ldsa.consignee_mobile, ldsa.warehouse_entry_time_end,
ldsa.sorting_quantity, ldsa.delivery_quantity, ldsa.transfer_quantity,
ldsa.signin_quantity, ldsa.resource, ldsa.is_opai,
ldsa.inventory_date, ldsa.inventory_person, ldsa.inventory_person_id,
ldsa.available_quantity, ldsa.is_have_data, ldsa.stock_article_code, GROUP_CONCAT( DISTINCT ldpl.dealer_name )
dealerName, ldsa.dealer_code,
ldsa.train_number, ldsa.factory_train, ldsa.sending, ldsa.send_warehouse_id, ldsa.send_warehouse_name,
ldsa.is_zero, ldsa.accept_warehouse_id, ldsa.accept_warehouse_name, ldsa.order_delivery_status,
ldsa.trays trays,
ldsa.allocation allocation
from logpm_distribution_stock_article ldsa
LEFT JOIN logpm_distribution_parcel_list ldpl on ldsa.id = ldpl.stock_article_id
<where>
ldsa.is_deleted = 0 and ldsa.order_status in ('10','20','30','40','50','60','70')
and ldsa.hand_quantity > 0
<if test="param.orderCodeNumList != null">
and ldsa.order_code in
<foreach collection="param.orderCodeNumList" separator="," close=")" item="a" open="(">
#{a}
</foreach>
</if>
<if test="warehouseIds != null">
and ldsa.warehouse_id in
<foreach collection="warehouseIds" item="s" open="(" close=")" separator=",">
#{s}
</foreach>
</if>
<if test=" param.orderCodeNumLike != '' and param.orderCodeNumLike != null ">and ldsa.order_code like
concat('%',#{param.orderCodeNumLike},'%')
</if>
<if test=" param.brand != '' and param.brand != null ">and ldsa.brand like
concat(#{param.brand},'%')
</if>
<if test=" param.reservation != '' and param.reservation != null ">
and ldsa.reservation_status in (10,20) and ldpl.order_package_reservation_status = 10
</if>
<if test=" param.waybillNumList != null ">
and ldpl.waybill_number in
<foreach collection="param.waybillNumList" open="(" item="a" close=")" separator=",">
#{a}
</foreach>
</if>
<if test="param.consigneeUnit != null and param.consigneeUnit != '' ">
and ldsa.consignee_unit like concat('%',#{param.consigneeUnit},'%')
</if>
<if test=" param.waybillNumLike != '' and param.waybillNumLike != null ">and ldsa.waybill_number like
concat('%',#{param.waybillNumLike},'%')
</if>
<if test=" param.typeService != '' and param.typeService != null ">
and ldsa.type_service =#{param.typeService}
</if>
<if test=" param.idsList != null ">and ldsa.id in
<foreach collection="param.idsList" open="(" item="a" close=")" separator=",">
#{a}
</foreach>
</if>
<if test=" param.idsLike != '' and param.idsLike != null ">and ldsa.id = #{param.idsLike}</if>
<if test=" param.reservationStatus != '' and param.reservationStatus != null ">and ldsa.reservation_status
= #{param.reservationStatus}
</if>
<if test=" param.startDate != null ">and ldsa.warehouse_entry_time between #{param.startDate} and
#{param.entDate}
</if>
<if test=" param.warehouseEntryTime != null ">and DATE(ldsa.warehouse_entry_time) =
#{param.warehouseEntryTime}
</if>
<if test=" param.warehouseEntryTimeEnd != null ">and DATE(ldsa.warehouse_entry_time) =
#{param.warehouseEntryTimeEnd}
</if>
<if test=" param.inventoryDate != null ">and DATE(ldsa.inventory_date) = #{param.inventoryDate}</if>
<if test=" param.serviceNumber != null and param.serviceNumber != '' ">and ldsa.service_number like
concat('%',#{param.serviceNumber},'%')
</if>
<if test=" param.orderCode != null and param.orderCode != '' ">and ldsa.order_code like
concat('%',#{param.orderCode},'%')
</if>
<if test=" param.waybillNumber != null and param.waybillNumber != '' ">and ldpl.waybill_number like
concat('%',#{param.waybillNumber},'%')
</if>
<if test=" param.mallName != null and param.mallName != '' ">and ldsa.mall_name like
concat('%',#{param.mallName},'%')
</if>
<if test=" param.descriptionGoods != null and param.descriptionGoods != '' ">and ldsa.description_goods
like concat('%',#{param.descriptionGoods},'%')
</if>
<if test=" param.warehouse != null and param.warehouse != '' ">and ldsa.warehouse like
concat('%',#{param.warehouse},'%')
</if>
<if test=" param.consigneePerson != null and param.consigneePerson != '' ">and ldsa.consignee_person like
concat('%',#{param.consigneePerson},'%')
</if>
<if test=" param.availableQuantity != null ">and ldsa.available_quantity like
concat('%',#{param.availableQuantity},'%')
</if>
<if test=" param.groundingStatus != null and param.groundingStatus != '' ">and ldsa.grounding_status =
#{param.groundingStatus}
</if>
<if test=" param.genre != null and param.genre != '' ">and ldsa.genre=#{param.genre}</if>
<if test=" param.freezeStatus != null and param.freezeStatus != '' ">and ldsa.freeze_status =
#{param.freezeStatus}
</if>
<if test=" param.orderStatus != null and param.orderStatus != '' ">and ldsa.order_status =
#{param.orderStatus}
</if>
<if test=" param.reservationStatus != null and param.reservationStatus != '' ">and ldsa.reservation_status =
#{param.reservationStatus}
</if>
<if test=" param.stockupStatus != null and param.stockupStatus != '' ">and ldsa.stockup_status =
#{param.stockupStatus}
</if>
<if test=" param.notification != null and param.notification != '' ">and ldsa.notification =
#{param.notification}
</if>
<if test=" param.orderReceiveStatus != null and param.orderReceiveStatus != '' ">and ldsa.order_receive_status
=
#{param.orderReceiveStatus}
</if>
<if test=" param.completeSet != null ">and ldsa.complete_set =#{param.completeSet}
</if>
<if test=" param.customerName != null and param.customerName != '' ">and ldsa.customer_name like
concat('%',#{param.customerName},'%')
</if>
<if test="param.isZero != null and param.isZero != '' ">
and ldsa.is_zero = #{param.isZero}
</if>
<if test=" param.customerTelephone != null and param.customerTelephone != '' ">and
ldsa.customer_telephone like concat('%',#{param.customerTelephone},'%')
</if>
<if test=" param.customerAddress != null and param.customerAddress != '' ">and ldsa.customer_address like
concat('%',#{param.customerAddress},'%')
</if>
<if test=" param.trays != null and param.trays != '' ">
and ldsa.trays like concat('%',#{param.trays},'%')
</if>
<if test=" param.allocation != null and param.allocation != '' ">
and ldsa.allocation like concat('%',#{param.allocation},'%')
</if>
</where>
group by ldsa.id
HAVING sum(ldpl.is_transfer) > 0
order by ldsa.warehouse_entry_time desc
</select>
</mapper>

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

@ -320,4 +320,7 @@ public interface IDistributionStockArticleService extends BaseService<Distributi
Integer findSignNumByWaybillNo(String waybillNo, Long destinationWarehouseId);
IPage<DistributionStockArticleEntity> pageListOweTransfer(IPage<Object> page, Map<String, Object> distributionStockArticle);
R findZeroOrderInfo(Long orderId);
}

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

@ -2678,6 +2678,89 @@ public class DistributionStockArticleServiceImpl extends BaseServiceImpl<Distrib
return baseMapper.findSignNumByWaybillNo(waybillNo,destinationWarehouseId);
}
@Override
public IPage<DistributionStockArticleEntity> pageListOweTransfer(IPage<Object> page, Map<String, Object> distributionStockArticle) {
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);
}
}
// if(Func.isNotEmpty(stockArticleEntity.getReservation())){
// stockArticleEntity.setReservationStatus("10");
// }
// }
List<Long> warehouseIdList = new ArrayList<>();
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if (Func.isEmpty(myCurrentWarehouse)) {
List<BasicdataWarehouseEntity> myWarehouseList = warehouseClient.getMyWarehouseList();
List<Long> collect = myWarehouseList.stream().map(BasicdataWarehouseEntity::getId).collect(Collectors.toList());
warehouseIdList.addAll(collect);
} else {
warehouseIdList.add(myCurrentWarehouse.getId());
}
IPage<DistributionStockArticleEntity> distributionStockArticleEntityIPage = baseMapper.pageListOweTransfer(page, stockArticleEntity, warehouseIdList);
return distributionStockArticleEntityIPage;
}
@Override
public R findZeroOrderInfo(Long orderId) {
DistributionStockArticleEntity stockArticle = baseMapper.selectById(orderId);
DistributionStockArticleVO stockArticleVO = new DistributionStockArticleVO();
BeanUtil.copy(stockArticle, stockArticleVO);
String isZero = stockArticle.getIsZero();
if("0".equals(isZero)){
log.warn("###########findZeroOrderInfo: 该订单不是零担订单 ");
return R.fail(405,"该订单不是零担订单");
}
Long waybillId = stockArticle.getWaybillId();
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
QueryWrapper<DistributionParcelListEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("stock_article_id", orderId);
List<DistributionParcelListEntity> list = distributionParcelListService.list(queryWrapper);
Map<String,Object> map = new HashMap<>();
map.put("orderInfo",stockArticle);
map.put("waybillEntity",waybillEntity);
map.put("parcelList",list);
return R.data(map);
}
/**
* @param page
* @param distributionSignforStockArticle

33
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadMapper.xml

@ -194,14 +194,15 @@
t.waybill_id waybillId,
t.waybill_number waybillNo,
t.entry_time_end warehouseEntryTimeEnd,
t.tray_name trayName,
lww.create_time createTime,
lww.destination destination,
lww.destination_warehouse_name destinationWarehouseName,
lww.shipper shipper,
lww.shipper_name shipperName,
lww.consignee consignee,
lww.consignee_name consigneeName,
lww.goods_name goodsName,
m.total_number orderNum,
lww.total_count totalNum,
lww.total_weight totalWeight,
lww.total_volume totalVolume,
@ -216,7 +217,8 @@
ldpl.waybill_number,
ldsa.is_zero,
IF(ldsa.is_zero = 1,ldsa.hand_quantity,count(ldpl.id)) stock_num,
max(ldpl.warehouse_entry_time_end) entry_time_end
max(ldpl.warehouse_entry_time_end) entry_time_end,
IF(ldsa.is_zero = 1,ldsa.trays,GROUP_CONCAT(DISTINCT ldpl.pallet)) tray_name
from logpm_distribution_stock_article ldsa
left join logpm_distribution_parcel_list ldpl on ldsa.order_code = ldpl.order_code
where ldpl.is_deleted = 0
@ -232,6 +234,7 @@
<if test="param.waybillNo != null and param.waybillNo != ''" >
and ldpl.waybill_number like concat('%',#{param.waybillNo},'%')
</if>
<if test="param.orderCode != null and param.orderCode != ''" >
and ldsa.order_code like concat('%',#{param.orderCode},'%')
</if>
@ -255,7 +258,7 @@
ldsa.hand_quantity) t
left join (select ltco.order_code orderCode,
ltco.waybill_no waybillNo,
sum(start_num) planNum
IFNULL(sum(start_num),0) planNum
from logpm_trunkline_cars_order ltco
where 1=1
<if test="param.warehouseId != null" >
@ -264,13 +267,6 @@
group by ltco.order_code,
ltco.waybill_no) l on l.orderCode = t.order_code and l.waybillNo = t.waybill_number
left join logpm_warehouse_waybill lww on lww.waybill_no = t.waybill_number
left join (select ltwo.waybill_no,
ltwo.order_code,
sum(ltwo.total_number) total_number
from logpm_trunkline_waybill_order ltwo
where ltwo.is_deleted = 0
group by ltwo.waybill_no,
ltwo.order_code) m on m.order_code = t.order_code and m.waybill_no = t.waybill_number
where IFNULL( t.stock_num, 0 )-IFNULL( l.planNum,0) > 0
and lww.abolish_status = 0
and lww.freeze_status = 0
@ -287,7 +283,7 @@
and t.entry_time_end &lt;= #{param.enterTimeEnd}
</if>
<if test="param.destination != null and param.destination != ''">
and lww.destination like concat('%',#{param.destination},'%')
and lww.destination like concat(#{param.destination},'%')
</if>
<if test="param.destinationWarehouseName != null and param.destinationWarehouseName != ''">
and lww.destination_warehouse_name like concat('%',#{param.destinationWarehouseName},'%')
@ -295,6 +291,18 @@
<if test="param.goodsName != null and param.goodsName != ''">
and lww.goods_name like concat('%',#{param.goodsName},'%')
</if>
<if test="param.keyWords != null and param.keyWords != ''" >
and (lww.waybill_no like concat('%',#{param.keyWords},'%')
or lww.shipper_name like concat('%',#{param.keyWords},'%')
or lww.consignee_name like concat('%',#{param.keyWords},'%')
or lww.consignee like concat('%',#{param.keyWords},'%'))
</if>
<if test="param.destinationWarehouseIds != null and param.destinationWarehouseIds.size() > 0">
and lww.destination_warehouse_id in
<foreach collection="param.destinationWarehouseIds" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="param.shipper != null and param.shipper != ''">
and lww.shipper like concat('%',#{param.shipper},'%')
</if>
@ -307,6 +315,9 @@
<if test="param.remark != null and param.remark != ''">
and lww.remark like concat('%',#{param.remark},'%')
</if>
<if test="param.trayName != null and param.trayName != ''">
and t.tray_name like concat('%',#{param.trayName},'%')
</if>
</select>

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

@ -3,6 +3,7 @@ package com.logpm.trunkline.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.vo.OrderTotalNumVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -26,4 +27,8 @@ public interface TrunklineWaybillOrderMapper extends BaseMapper<TrunklineWaybill
Integer findTotalNumByWaybillAndOrderCode(@Param("waybillNo") String waybillNo, @Param("orderCode") String orderCode);
void deleteByWaybillNo(@Param("waybillNo") String waybillNo);
List<OrderTotalNumVO> findTotalNumByOrderCodesAndWaybillNos(@Param("orderCodes") List<String> orderCodes, @Param("waybillNos") List<String> waybillNos);
void updateTotalNumByWaybillId(@Param("waybillId") Long waybillId, @Param("totalCount") Integer totalCount);
}

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

@ -58,4 +58,29 @@
group by ltwo.advance_id
</select>
<select id="findTotalNumByOrderCodesAndWaybillNos" resultType="com.logpm.trunkline.vo.OrderTotalNumVO">
select ltwo.order_code orderCode,
ltwo.waybill_no waybillNo,
sum( ltwo.total_number ) totalNum
from logpm_trunkline_waybill_order ltwo
where ltwo.order_code in
<foreach collection="orderCodes" item="orderCode" open="(" separator="," close=")">
#{orderCode}
</foreach>
and ltwo.waybill_no in
<foreach collection="waybillNos" item="waybillNo" open="(" separator="," close=")">
#{waybillNo}
</foreach>
and ltwo.is_deleted = 0
group by ltwo.order_code,ltwo.waybill_no
</select>
<update id="updateTotalNumByWaybillId">
update logpm_trunkline_waybill_order
set total_number = #{totalCount}
where waybill_id = #{waybillId}
</update>
</mapper>

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

@ -2,6 +2,7 @@ package com.logpm.trunkline.service;
import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.vo.OrderTotalNumVO;
import org.springblade.core.mp.base.BaseService;
import java.util.List;
@ -26,4 +27,8 @@ public interface ITrunklineWaybillOrderService extends BaseService<TrunklineWayb
void deleteByWaybillNo(String waybillNo);
TrunklineWaybillOrderEntity findEntityByWaybillNoAndOrderCode(String waybillNo, String orderCode);
List<OrderTotalNumVO> findTotalNumByOrderCodesAndWaybillNos(List<String> orderCodes, List<String> waybillNos);
void updateTotalNumByWaybillId(Long waybillId, Integer totalCount);
}

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

@ -67,6 +67,7 @@ import java.io.InputStream;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -328,15 +329,28 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
Integer hasPackage = list.get(0).getHasPackage();
if(hasPackage == 0){
//把list通过packName进行分组
Map<String, List<TrunklineAdvanceEntity>> groupedByPackName = list.stream()
.collect(Collectors.groupingBy(TrunklineAdvanceEntity::getPackName));
AtomicReference<Integer> tn = new AtomicReference<>(0);
List<AdvanceDetailGoodsVO> addList = new ArrayList<>();
list.forEach(t -> {
String packName = t.getPackName();
groupedByPackName.keySet().forEach(packName -> {
List<TrunklineAdvanceEntity> trunklineAdvanceEntities = groupedByPackName.get(packName);
//把trunklineAdvanceEntities中totalNum求和
Integer totalNum = trunklineAdvanceEntities.stream().mapToInt(TrunklineAdvanceEntity::getTotalNum).sum();
AdvanceDetailGoodsVO goodsVO = new AdvanceDetailGoodsVO();
goodsVO.setGoodsName(packName);
goodsVO.setNum(t.getTotalNum());
goodsVO.setNum(totalNum);
addList.add(goodsVO);
tn.set(tn.get() + totalNum);
});
goodsList.addAll(addList);
openOrderVO.setTotalNum(tn.get());
openOrderVO.setTotalWeight(BigDecimal.ZERO);
openOrderVO.setTotalVolume(BigDecimal.ZERO);
}else{
goodsList = advanceDetailService.findGoodsListByAdvanceIds(advanceIds);
}
@ -1577,45 +1591,47 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
String materialCode = pacakgeDetailExcelDTO.getMaterialCode();
advanceDetailModel.setMaterialName(materialName);
advanceDetailModel.setMaterialCode(materialCode);
if (StringUtil.isNotBlank(materialCode) && StringUtil.isNotBlank(materialName)) {
Long materialId = materialMap.get(materialCode);
if (!Objects.isNull(materialId)) {
advanceDetailModel.setMaterialId(materialId);
advanceDetailModel.setMaterialCode(materialCode);
advanceDetailModel.setMaterialName(materialName);
} else {
BasicMaterialEntity basicMaterialEntity = basicMaterialClient.findEntityByCodeAndName(materialCode, materialName);
if (Objects.isNull(basicMaterialEntity)) {
basicMaterialEntity = new BasicMaterialEntity();
basicMaterialEntity.setProductCode(materialCode);
basicMaterialEntity.setName(materialName);
BasicdataBrandEntity basicdataBrandEntity = basicdataBrandClient.findEntityByName(pacakgeDetailExcelDTO.getBrand());
if (Objects.isNull(basicdataBrandEntity)) {
basicMaterialEntity.setBrandId("1713382405517201409");
} else {
basicMaterialEntity.setBrandId(basicdataBrandEntity.getId() + "");
}
basicMaterialEntity.setProperty("家配");
basicMaterialEntity.setSpecification("件");
basicMaterialEntity.setPackingSpecification("1件/箱");
basicMaterialEntity.setLogpmUnit("箱");
basicMaterialEntity.setSku(materialCode);
basicMaterialEntity.setPackageNum(1);
basicMaterialEntity.setHide(1);
Long aLong = basicMaterialClient.addMaterial(basicMaterialEntity);
basicMaterialEntity.setId(aLong);
materialMap.put(materialCode, aLong);
advanceDetailModel.setMaterialId(aLong);
advanceDetailModel.setMaterialCode(materialCode);
advanceDetailModel.setMaterialName(materialName);
} else {
materialMap.put(materialCode, basicMaterialEntity.getId());
advanceDetailModel.setMaterialId(basicMaterialEntity.getId());
advanceDetailModel.setMaterialCode(basicMaterialEntity.getProductCode());
advanceDetailModel.setMaterialName(basicMaterialEntity.getName());
}
}
}
// if (StringUtil.isNotBlank(materialCode) && StringUtil.isNotBlank(materialName)) {
// Long materialId = materialMap.get(materialCode);
// if (!Objects.isNull(materialId)) {
// advanceDetailModel.setMaterialId(materialId);
// advanceDetailModel.setMaterialCode(materialCode);
// advanceDetailModel.setMaterialName(materialName);
// } else {
// BasicMaterialEntity basicMaterialEntity = basicMaterialClient.findEntityByCodeAndName(materialCode, materialName);
// if (Objects.isNull(basicMaterialEntity)) {
// basicMaterialEntity = new BasicMaterialEntity();
// basicMaterialEntity.setProductCode(materialCode);
// basicMaterialEntity.setName(materialName);
// BasicdataBrandEntity basicdataBrandEntity = basicdataBrandClient.findEntityByName(pacakgeDetailExcelDTO.getBrand());
// if (Objects.isNull(basicdataBrandEntity)) {
// basicMaterialEntity.setBrandId("1713382405517201409");
// } else {
// basicMaterialEntity.setBrandId(basicdataBrandEntity.getId() + "");
// }
// basicMaterialEntity.setProperty("家配");
// basicMaterialEntity.setSpecification("件");
// basicMaterialEntity.setPackingSpecification("1件/箱");
// basicMaterialEntity.setLogpmUnit("箱");
// basicMaterialEntity.setSku(materialCode);
// basicMaterialEntity.setPackageNum(1);
// basicMaterialEntity.setHide(1);
// Long aLong = basicMaterialClient.addMaterial(basicMaterialEntity);
// basicMaterialEntity.setId(aLong);
// materialMap.put(materialCode, aLong);
// advanceDetailModel.setMaterialId(aLong);
// advanceDetailModel.setMaterialCode(materialCode);
// advanceDetailModel.setMaterialName(materialName);
// } else {
// materialMap.put(materialCode, basicMaterialEntity.getId());
// advanceDetailModel.setMaterialId(basicMaterialEntity.getId());
// advanceDetailModel.setMaterialCode(basicMaterialEntity.getProductCode());
// advanceDetailModel.setMaterialName(basicMaterialEntity.getName());
// }
// }
// }
advanceDetailEntities.add(advanceDetailModel);
}
@ -2643,8 +2659,6 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
//把addList中updateType=1的放入一个新的List
List<WaybillDetailDTO> addNewList = addList.stream().filter(waybillDetailDTO -> waybillDetailDTO.getUpdateType() == 1).collect(Collectors.toList());
List<DistributionStockArticleEntity> orderList = distributionStockArticleClient.findListByWaybillNumber(waybillNo);
orderList.forEach(stockArticleEntity -> {
stockArticleEntity.setMallId(consigneeId);
@ -2808,6 +2822,8 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
distributionParcelNumberClient.updateListByPracelListIds(updateNumberIds);
}
trunklineWaybillOrderService.updateTotalNumByWaybillId(waybillId,totalCount);
}
trunklineWaybillPackageService.updateWaybillStatus(waybillEntity);

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

@ -92,40 +92,7 @@ import com.logpm.trunkline.service.ITrunklineScanZeroDetailService;
import com.logpm.trunkline.service.ITrunklineWaybillOrderService;
import com.logpm.trunkline.service.ITrunklineWaybillPackageService;
import com.logpm.trunkline.service.ITrunklineWaybillTrackService;
import com.logpm.trunkline.vo.CarsLoadAllOrderVO;
import com.logpm.trunkline.vo.CarsLoadOrderInfoVO;
import com.logpm.trunkline.vo.CarsLoadScanAbnormalVO;
import com.logpm.trunkline.vo.CarsLoadWaybillInfoVO;
import com.logpm.trunkline.vo.CustmoerUnloadNumVO;
import com.logpm.trunkline.vo.GoodsLoadingNumVO;
import com.logpm.trunkline.vo.HasNotFinalNodeIdDataVO;
import com.logpm.trunkline.vo.LoadScanFinalNodeIdVO;
import com.logpm.trunkline.vo.LoadScanOrderVO;
import com.logpm.trunkline.vo.LoadZeroListVO;
import com.logpm.trunkline.vo.LoadingDetailExportVO;
import com.logpm.trunkline.vo.LoadingListGoodsVO;
import com.logpm.trunkline.vo.LoadingListMainVO;
import com.logpm.trunkline.vo.NodeNumDataVO;
import com.logpm.trunkline.vo.OrderCodeNumVO;
import com.logpm.trunkline.vo.OrderScanDetailVO;
import com.logpm.trunkline.vo.SignOrderDetailVO;
import com.logpm.trunkline.vo.SignPackageVO;
import com.logpm.trunkline.vo.SignScanOrderVO;
import com.logpm.trunkline.vo.TripartiteTransferVO;
import com.logpm.trunkline.vo.TrunklineCarsLoadLoadingListVO;
import com.logpm.trunkline.vo.TrunklineCarsLoadScanVO;
import com.logpm.trunkline.vo.TrunklineCarsLoadVO;
import com.logpm.trunkline.vo.TrunklineCarsOrderVO;
import com.logpm.trunkline.vo.TrunklineLoadSignOrderVO;
import com.logpm.trunkline.vo.TrunklineScanZeroDetailVO;
import com.logpm.trunkline.vo.UnloadPackageVO;
import com.logpm.trunkline.vo.UnloadScanOrderVO;
import com.logpm.trunkline.vo.UnloadZeroVO;
import com.logpm.trunkline.vo.WaybillCarsLoadVO;
import com.logpm.trunkline.vo.ZeroNumVO;
import com.logpm.trunkline.vo.ZeroPackageVO;
import com.logpm.trunkline.vo.ZeroSuppleListVO;
import com.logpm.trunkline.vo.ZeroSuppleVO;
import com.logpm.trunkline.vo.*;
import com.logpm.warehouse.entity.WarehousePackageTrackLogEntity;
import com.logpm.warehouse.entity.WarehouseTrayTypeEntity;
import com.logpm.warehouse.entity.WarehouseWayBillDetail;
@ -2807,6 +2774,23 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
loadCarsDTO.setEnterTimeEnd(CommonUtil.getEndByDateStr(enterTimeEndStr));
IPage<CarsLoadAllOrderVO> pageList = baseMapper.findAllOrderList(page, loadCarsDTO);
List<CarsLoadAllOrderVO> records = pageList.getRecords();
if(CollUtil.isNotEmpty(records)){
//把records中所有的orderCode放入一个sET
Set<String> orderCodeSet = records.stream().map(CarsLoadAllOrderVO::getOrderCode).collect(Collectors.toSet());
Set<String> waybillNoSet = records.stream().map(CarsLoadAllOrderVO::getWaybillNo).collect(Collectors.toSet());
List<OrderTotalNumVO> orderTotalNumList = trunklineWaybillOrderService.findTotalNumByOrderCodesAndWaybillNos(new ArrayList<>(orderCodeSet),new ArrayList<>(waybillNoSet));
//把orderTotalNumList中所有元素以orderCode和waybillNo作为key,value为totalNum
Map<String, Integer> orderTotalNumMap = orderTotalNumList.stream().collect(Collectors.toMap(t-> t.getOrderCode()+t.getWaybillNo(), OrderTotalNumVO::getTotalNum));
records.forEach(record -> {
record.setTotalNum(orderTotalNumMap.get(record.getOrderCode()+record.getWaybillNo()));
});
}
pageList.setRecords(records);
return R.data(pageList);
}

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

@ -5,6 +5,7 @@ import com.logpm.trunkline.entity.TrunklineAdvanceEntity;
import com.logpm.trunkline.entity.TrunklineWaybillOrderEntity;
import com.logpm.trunkline.mapper.TrunklineWaybillOrderMapper;
import com.logpm.trunkline.service.ITrunklineWaybillOrderService;
import com.logpm.trunkline.vo.OrderTotalNumVO;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl;
@ -63,4 +64,14 @@ public class TrunklineWaybillOrderServiceImpl extends BaseServiceImpl<TrunklineW
.eq("order_code",orderCode);
return baseMapper.selectOne(queryWrapper);
}
@Override
public List<OrderTotalNumVO> findTotalNumByOrderCodesAndWaybillNos(List<String> orderCodes, List<String> waybillNos) {
return baseMapper.findTotalNumByOrderCodesAndWaybillNos(orderCodes,waybillNos);
}
@Override
public void updateTotalNumByWaybillId(Long waybillId, Integer totalCount) {
baseMapper.updateTotalNumByWaybillId(waybillId,totalCount);
}
}

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

@ -390,6 +390,11 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
String orderCode = distributionStockArticleEntity.getOrderCode();
Long warehouseId = distributionStockArticleEntity.getWarehouseId();
List<DistributionParcelListEntity> parcelListEntityList = distributionParcelListClient.findEntityListByOrderCode(orderCode, warehouseId);
//把parcelListEntityList转化为firsts为key的Map
Map<String, DistributionParcelListEntity> parcelListEntityMap = parcelListEntityList.stream()
.collect(Collectors.toMap(DistributionParcelListEntity::getFirsts, parcelListEntity -> parcelListEntity));
Integer subNum = 0;
for (int i = 0; i < splitOrderDTOList.size(); i++) {
List<DistributionStockArticleEntity> articleList = distributionStockArticleClient.findListByOrderCodeLike(orderCode);
@ -452,17 +457,22 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
} else {
List<DistributionParcelNumberEntity> parcelNumberList = new ArrayList<>();
for (ProductDTO productDTO : products) {
String productName = productDTO.getProductName();
Integer splitNum = productDTO.getSplitNum();
if (Objects.isNull(splitNum)) {
splitNum = 0;
}
DistributionParcelListEntity parcelList = parcelListEntityMap.get(productName);
parcelList.setQuantity(parcelList.getQuantity()-splitNum);
parcelListEntityMap.put(productName, parcelList);
DistributionParcelListEntity distributionParcelListEntity = new DistributionParcelListEntity();
DistributionParcelListEntity distributionParcelListEntity1 = parcelListEntityList.get(0);
BeanUtil.copyProperties(distributionParcelListEntity1, distributionParcelListEntity);
distributionParcelListEntity.setId(null);
distributionParcelListEntity.setStockArticleId(aLong);
distributionParcelListEntity.setOrderCode(entity.getOrderCode());
distributionParcelListEntity.setFirsts(productDTO.getProductName());
distributionParcelListEntity.setFirsts(productName);
distributionParcelListEntity.setQuantity(splitNum);
Long orderPackageId = distributionParcelListClient.addReturnId(distributionParcelListEntity);
@ -478,6 +488,19 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl<WarehouseWaybil
}
//存入零担订单包件数量
distributionParcelNumberClient.addBatch(parcelNumberList);
List<DistributionParcelListEntity> updateParceListEntityList = new ArrayList<>();
parcelListEntityMap.keySet().forEach(key -> {
DistributionParcelListEntity parcelList = parcelListEntityMap.get(key);
DistributionParcelListEntity updateEntiy = new DistributionParcelListEntity();
updateEntiy.setId(parcelList.getId());
updateEntiy.setQuantity(parcelList.getQuantity());
updateParceListEntityList.add(updateEntiy);
});
distributionParcelListClient.updateZeroList(updateParceListEntityList);
//TODO 日志增加
}
}

Loading…
Cancel
Save