Browse Source

Merge branch 'dev' into pre-production

master
zhenghaoyu 9 months ago
parent
commit
c1d1ca664a
  1. 1
      blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java
  2. 10
      blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineAdvanceDetailEntity.java
  3. 47
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionStockupAppController.java
  4. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistributionStockupMapper.xml
  5. 4
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml
  6. 2
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistributionDeliveryListServiceImpl.java
  7. 20
      blade-service/logpm-distribution/src/main/java/com/logpm/distribution/service/impl/DistrilbutionBillLadingServiceImpl.java
  8. 61
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java
  9. 50
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml
  10. 7
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineCarsLoadScanMapper.xml
  11. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineLoadSignOrderMapper.java
  12. 25
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineLoadSignOrderMapper.xml
  13. 67
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/PackageFanoutListener.java
  14. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/IPackageTrackLogAsyncService.java
  15. 3
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineCarsLoadService.java
  16. 1
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineLoadSignOrderService.java
  17. 2
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineWaybillPackageService.java
  18. 50
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java
  19. 63
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderAsyncServiceImpl.java
  20. 20
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java
  21. 9
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/PackageTrackLogAsyncServiceImpl.java
  22. 9
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineAdvanceServiceImpl.java
  23. 13
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java
  24. 29
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java
  25. 6
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineLoadSignOrderServiceImpl.java
  26. 35
      blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineWaybillPackageServiceImpl.java
  27. 2
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseTrayTypeService.java
  28. 22
      blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java

1
blade-biz-common/src/main/java/org/springblade/common/constant/WorkNodeEnums.java

@ -61,6 +61,7 @@ public enum WorkNodeEnums implements Serializable {
CANCEL_DELIVERY(301030, "计划取消"),
PLAN_BILLOFLADING(301040, "计划自提"),
CANCEL_BILLOFLADING(301050, "取消自提"),
SIGN_BILLOFLADING(301050, "取消自提"),
PLAN_DISTRIBUTION(301060, "计划配车"),
CANCEL_DISTRIBUTION(301070, "取消配车"),

10
blade-service-api/logpm-trunkline-api/src/main/java/com/logpm/trunkline/entity/TrunklineAdvanceDetailEntity.java

@ -201,5 +201,15 @@ public class TrunklineAdvanceDetailEntity extends TenantEntity {
private String goodsMan;
@ApiModelProperty(name = "入库时间")
private Date incomingTime;
/**
* 仓库id
*/
@ApiModelProperty(name = "当前所在仓库id", notes = "")
private Long nowWarehouseId;
/**
* 仓库名称
*/
@ApiModelProperty(name = "当前所在仓库名称", notes = "")
private String nowWarehouseName;
}

47
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/appcontroller/DistributionStockupAppController.java

@ -36,6 +36,7 @@ import com.logpm.distribution.entity.*;
import com.logpm.distribution.mapper.DistributionReservationMapper;
import com.logpm.distribution.service.*;
import com.logpm.distribution.vo.*;
import com.logpm.trunkline.feign.ITrunklinePackageTrackLogClient;
import com.logpm.warehouse.entity.WarehouseUpdownGoodsEntity;
import com.logpm.warehouse.feign.*;
import io.swagger.annotations.Api;
@ -46,6 +47,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springblade.common.constant.DictBizConstant;
import org.springblade.common.constant.RabbitConstant;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.common.IsOrNoConstant;
import org.springblade.common.constant.orderpackage.OrderPackageFreezeStatusConstant;
import org.springblade.common.constant.orderpackage.OrderPackageStockupStatusConstant;
@ -60,12 +62,14 @@ import org.springblade.common.utils.CommonUtil;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.system.cache.DictBizCache;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.web.bind.annotation.*;
@ -123,6 +127,7 @@ public class DistributionStockupAppController extends BladeController {
private final IWarehouseUpdownStockUpAreaClient warehouseUpdownStockUpAreaClient;
private final BladeRedis redis;
private final ITrunklinePackageTrackLogClient trunklinePackageTrackLogClient;
/**
@ -1587,6 +1592,8 @@ public class DistributionStockupAppController extends BladeController {
switch (integer) {
case 1:
DistributionStockupEntity distributionStockupEntity = distributionStockupService.getById(stockupDTO.getStockupId());
List<JSONObject> aaa = new ArrayList<>();
//正常
//先保存扫码包件信息,后续由队列来出来余下补充信息
DistributionStockEntity entity = new DistributionStockEntity();
@ -1598,16 +1605,11 @@ public class DistributionStockupAppController extends BladeController {
entity.setStockArticle(one.getStockArticleId());
entity.setCoding(packetBarCode);
entity.setScanUser(AuthUtil.getUser().getNickName());
// entity.setStockupArea(stockupArea);
entity.setStockupId(stockupId);
entity.setStockupId(stockupId);
entity.setParcelListId(one.getId());
entity.setStockQuantity(1);
// //修改包件备货状态
// DistributionParcelListEntity parcelListEntity = new DistributionParcelListEntity();
// parcelListEntity.setId(one.getId());
// parcelListEntity.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue());
// distributionParcelListService.updateById(parcelListEntity);
if ("3".equals(distributionStockupEntity.getTypeService())) {
entity.setBillLadingId(reservationId);
DistributionStockupEntity byId = distributionStockupService.getById(stockupId);
@ -1630,13 +1632,10 @@ public class DistributionStockupAppController extends BladeController {
entity.setConditions("0");
entity.setType(2);
entity.setOutboundType(distributionStockupEntity.getTypeService());
// entity.setStockupArea(stockupDTO.getStockupAllocationName());
// entity.setStockupAreaId(stockupDTO.getStockupAllocationId());
//修改订单备货状态
distributionAsyncService.updateStockArticleStock(one.getStockArticleId());
//修改备货时间
distributionAsyncService.updateStockupDate(stockupDTO);
// dataSourceTransactionManager.commit(transactionStatus);//提交
Map<String, Object> map = new HashMap<>();
map.put("messageId", CommonUtil.getUUID());
@ -1669,6 +1668,7 @@ public class DistributionStockupAppController extends BladeController {
return message;
});
//查询是否货位数据是否该下架
BladeUser user = AuthUtil.getUser();
if (!Func.isEmpty(stockupDTO.getStockupAllocationId())) {
JSONObject jsonObject = new JSONObject();
@ -1680,14 +1680,24 @@ public class DistributionStockupAppController extends BladeController {
//进行了备货库位的选择才进行备货库位的上架
warehouseUpdownStockUpAreaClient.upStockUpShelf(jsonObject);
entity.setStockupAreaId(stockupDTO.getStockupAllocationId());
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "备货上架,操作方式:备货上架同步操作,备货任务号:" + distributionStockupEntity.getStockupCode() ;
JSONObject js = handleLogJSONObject(myCurrentWarehouse, user, entity.getCoding(), content, WorkNodeEnums.STOCKING_OPERATION.getCode());
aaa.add(js);
}
distributionStockService.save(entity);
//增加备货扫描节点
String content = "包件在" + myCurrentWarehouse.getName() + "由" + AuthUtil.getNickName() + "备货作业,备货任务号:" + distributionStockupEntity.getStockupCode() ;
JSONObject js = handleLogJSONObject(myCurrentWarehouse, user, entity.getCoding(), content, WorkNodeEnums.STOCKING_OPERATION.getCode());
aaa.add(js);
//修改包件备货状态
DistributionParcelListEntity parcelListEntity = new DistributionParcelListEntity();
parcelListEntity.setId(entity.getParcelListId());
parcelListEntity.setOrderPackageStockupStatus(OrderPackageStockupStatusConstant.yibeihu.getValue());
distributionParcelListService.updateById(parcelListEntity);
if (!aaa.isEmpty()) {
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
}
return Resp.scanSuccess(PdaAudioLingoStatus.saomiaochenggong.getName(), audioValue);
case 2:
//重复扫描
@ -1713,4 +1723,25 @@ public class DistributionStockupAppController extends BladeController {
}
private JSONObject handleLogJSONObject(BasicdataWarehouseEntity warehouse, BladeUser user, String orderPackageCode, String content, Integer node) {
JSONObject trunklinePackageTrackLog = new JSONObject();
trunklinePackageTrackLog.put("tenantId", user.getTenantId());
trunklinePackageTrackLog.put("createTime", new Date());
trunklinePackageTrackLog.put("createUser", user.getUserId());
trunklinePackageTrackLog.put("updateUser", user.getUserId());
trunklinePackageTrackLog.put("updateTime", new Date());
trunklinePackageTrackLog.put("isDeleted", 0);
trunklinePackageTrackLog.put("status", 1);
trunklinePackageTrackLog.put("createDept", warehouse.getDepartment());
trunklinePackageTrackLog.put("orderPackageCode", orderPackageCode);
trunklinePackageTrackLog.put("warehouseId", warehouse.getId());
trunklinePackageTrackLog.put("warehouseName", warehouse.getName());
trunklinePackageTrackLog.put("workNode", node);
trunklinePackageTrackLog.put("content", content);
trunklinePackageTrackLog.put("operator", user.getNickName());
return trunklinePackageTrackLog;
}
}

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

@ -1061,7 +1061,7 @@
from logpm_distribution_stockup_info ldsi
left join logpm_distribution_stockup lds on lds.id = ldsi.stockup_id and lds.is_deleted = 0
left join logpm_warehouse_goods_area lwga on lwga.id = lds.goods_area_id and lwga.is_deleted = 0
where ldsi.reservation_id = #{reservationId}
where ldsi.reservation_id = #{reservationId} AND ldsi.stock_status != 4
and ldsi.is_deleted = 0
</select>
<select id="getInventoryCheSelf" resultType="com.logpm.distribution.vo.DistributionStockupVO">

4
blade-service/logpm-distribution/src/main/java/com/logpm/distribution/mapper/DistrilbutionBillLadingMapper.xml

@ -693,7 +693,9 @@
LEFT JOIN logpm_distribution_stock lds on lds.parcel_list_id = ldbp.parce_list_id
LEFT JOIN logpm_distribution_stock_article dsa ON dbl.stock_article_id = dsa.id
LEFT JOIN logpm_distribution_stockup_info ldsi on dbl.id = ldsi.reservation_id and ldsi.stock_up_type = #{distrilbutionBillLading.stockupType}
where ldsi.stockup_id = #{distrilbutionBillLading.id} AND dbp.packet_bar_status != 2
where
ldsi.stockup_id = #{distrilbutionBillLading.id}
AND ldbp.packet_bar_status != 2
</select>
<select id="selectBillLadingPackage"
resultType="com.logpm.distribution.entity.DistributionParcelListEntity">

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

@ -762,7 +762,7 @@ public class DistributionDeliveryListServiceImpl extends BaseServiceImpl<Distrib
.setHeader("x-delay", 3000);
return message;
});
String content = "包件在" + myCurrentWarehouse.getName() + "由" + loadscanEntity.getScanUser() + "扫描装车配送车次号:" + distributionDeliveryListEntity.getTrainNumber() + "预约任务号:" + reservationEntity.getReservationCode();
String content = "包件在" + myCurrentWarehouse.getName() + "由" + loadscanEntity.getScanUser() + "扫描装车,配送车次号:" + distributionDeliveryListEntity.getTrainNumber() + "预约任务号:" + reservationEntity.getReservationCode();
JSONObject trunklinePackageTrackLog = handleLogJSONObject(myCurrentWarehouse, AuthUtil.getUser(), parcelListEntity.getOrderPackageCode(), content, WorkNodeEnums.DISTRIBUTION_LOADING.getCode());
aaa.add(trunklinePackageTrackLog);
orderPackageCodes.add(loadscanEntity.getOrderPackageCode());

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

@ -1565,7 +1565,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
billPackageEntity.setBillType("1");
packageEntityList.add(billPackageEntity);
finalPackageIds.add(i.getParceListId());
String content = "包件在"+warehouse.getName()+"由"+AuthUtil.getNickName()+"计划自提,操作方式:勾选包件,自提批次号:"+pickupBatch;
String content = "包件在"+warehouse.getName()+"由"+AuthUtil.getNickName()+"修改自提计划,操作方式:勾选包件,自提批次号:"+pickupBatch;
JSONObject js = handleLogJSONObject(warehouse, AuthUtil.getUser(), billPackageEntity.getPacketBarCode(), content, WorkNodeEnums.PLAN_BILLOFLADING.getCode());
aaa.add(js);
});
@ -2874,7 +2874,7 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionBillLadingScan.setBillLadingId(Long.parseLong(billLadingId.toString()));
distributionBillLadingScan.setScanType(1);
distributionBillLadingScan.setScanUser(AuthUtil.getUser().getNickName());
return processScan(type, billLadingId, coding, distributionBillLadingScan);
return processScan(type, billLadingId, coding, distributionBillLadingScan,myCurrentWarehouse,billLadingEntity1.getPickupBatch());
// return Resp.scanSuccess("签收成功", "签收成功");
} catch (Exception e) {
@ -2904,18 +2904,20 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
return !list3.isEmpty();
}
private Resp processScan(String type, Object billLadingId, String coding, DistributionBillLadingScanEntity distributionBillLadingScan) {
private Resp processScan(String type, Object billLadingId, String coding, DistributionBillLadingScanEntity distributionBillLadingScan,BasicdataWarehouseEntity warehouse,String pickupBatch) {
if ("1".equals(type)) {
// 处理库存品包件逻辑
return handleOrderProduct(type, billLadingId, coding, distributionBillLadingScan);
return handleOrderProduct(type, billLadingId, coding, distributionBillLadingScan,warehouse,pickupBatch);
} else {
// 处理库定制包件逻辑
return handleInventoryProduct(type, billLadingId, coding, distributionBillLadingScan);
}
}
private Resp handleOrderProduct(String type, Object billLadingId, String coding, DistributionBillLadingScanEntity distributionBillLadingScan) {
private Resp handleOrderProduct(String type, Object billLadingId, String coding, DistributionBillLadingScanEntity distributionBillLadingScan,BasicdataWarehouseEntity warehouse,String pickupBatch) {
List<DistrilbutionBillLadingInventoryAppVO> inventoryAppVO = distributionDeliveryDetailsService.listCode(String.valueOf(billLadingId));
List<JSONObject> aaa = new ArrayList<>();
if (inventoryAppVO == null) {
return Resp.scanFail("包件信息不存在", "包件信息不存在");
}
@ -2953,6 +2955,14 @@ public class DistrilbutionBillLadingServiceImpl extends BaseServiceImpl<Distrilb
distributionBillLadingScan.setPacketBarCode(coding);
distributionBillLadingScan.setStockListId(matchedPackage.getStockListId());
distributionBillLadingScan.setQuantity(1);
String content = "包件在" + warehouse.getName() + "由" + AuthUtil.getNickName() + "自提扫描签收,操作方式:扫描签收,自提批次号:" + pickupBatch ;
JSONObject js = handleLogJSONObject(warehouse, AuthUtil.getUser(), coding, content, WorkNodeEnums.SIGN_BILLOFLADING.getCode());
aaa.add(js);
if (!aaa.isEmpty()) {
trunklinePackageTrackLogClient.addPackageTrackLog(aaa);
}
distributionBillLadingScanService.save(distributionBillLadingScan);
distributionStockListMapper.deductionQuantityStock(matchedPackage.getStockListId(), matchedPackage.getNum());

61
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/controller/CarsLoadController.java

@ -2317,4 +2317,65 @@ public class CarsLoadController {
}
}
@ResponseBody
@PostMapping("/findSignOrderPageList")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "查询签收单分页列表", notes = "传入loadCarsDTO")
public R findSignOrderPageList(@RequestBody LoadCarsDTO loadCarsDTO) {
String method = "############findSignOrderPageList: ";
log.info(method + "请求参数{}", loadCarsDTO);
try{
//当前登录人选择的仓库
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse);
return R.fail(405,"仓库信息为空");
}
loadCarsDTO.setWarehouseId(myCurrentWarehouse.getId());
return carsLoadService.findSignOrderPageList(loadCarsDTO);
}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,"系统异常");
}
}
@ResponseBody
@PostMapping("/findSignPhotoList")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "查询签收单图片列表", notes = "传入loadCarsDTO")
public R findSignPhotoList(@RequestBody LoadCarsDTO loadCarsDTO) {
String method = "############findSignPhotoList: ";
log.info(method + "请求参数{}", loadCarsDTO);
Long signOrderId = loadCarsDTO.getSignOrderId();
try{
//当前登录人选择的仓库
BasicdataWarehouseEntity myCurrentWarehouse = warehouseClient.getMyCurrentWarehouse();
if(Objects.isNull(myCurrentWarehouse)){
log.warn(method+"仓库信息为空 myCurrentWarehouse={}",myCurrentWarehouse);
return R.fail(405,"仓库信息为空");
}
loadCarsDTO.setWarehouseId(myCurrentWarehouse.getId());
if(Objects.isNull(signOrderId)){
log.warn(method+"签收单id为空 signOrderId={}",signOrderId);
return R.fail(405,"签收单id为空");
}
return carsLoadService.findSignPhotoList(loadCarsDTO);
}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,"系统异常");
}
}
}

50
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mapper/TrunklineAdvanceDetailMapper.xml

@ -35,7 +35,8 @@
ltad.weight weight,
ltad.volume volume,
ltad.advance_id advanceId,
ltad.incoming_warehouse_name incomingWarehouseName
ltad.incoming_warehouse_name incomingWarehouseName,
ltad.now_warehouse_name nowWarehouseName
from logpm_trunkline_advance_detail ltad
left join logpm_trunkline_advance lta on lta.id = ltad.advance_id
left join logpm_warehouse_tray_goods lwtg on lwtg.association_value = ltad.order_package_code
@ -220,7 +221,7 @@
select
ltad.waybill_id waybillId,
ltad.waybill_no waybillNo,
t.warehouse nowWarehouseName,
ltad.now_warehouse_name nowWarehouseName,
ltad.train_number trainNumber,
ltad.package_status packageStatus,
lta.is_gcp isGcp,
@ -250,40 +251,17 @@
lta.create_user_name createUserName,
lta.create_time createTime
from logpm_trunkline_advance_detail ltad
left join logpm_trunkline_advance lta on lta.id = ltad.advance_id
left join (select ldpl.* from logpm_distribution_parcel_list ldpl
join (
select pl.order_package_code,
max(pl.update_time) updateTime
from logpm_distribution_parcel_list pl
where 1=1
<if test="param.orderCode != null and param.orderCode != '' ">
and LOCATE(#{param.orderCode}, pl.order_code) > 0
</if>
<if test="param.waybillNo != null and param.waybillNo != '' ">
and pl.waybill_no = #{param.waybillNo}
</if>
<if test="param.trainNumber != null and param.trainNumber != '' ">
and pl.train_number = #{param.trainNumber}
</if>
<if test="param.serviceNumber != null and param.serviceNumber != '' ">
and pl.service_number = #{param.serviceNumber}
</if>
<if test="param.orderPackageCode != null and param.orderPackageCode != '' ">
and LOCATE(#{param.orderPackageCode},pl.order_package_code) > 0
</if>
group by pl.order_package_code
) tmax on tmax.order_package_code = ldpl.order_package_code and ldpl.update_time = tmax.updateTime) t on t.order_package_code = ltad.order_package_code
left join logpm_warehouse_tray_goods lwtg on lwtg.association_value = t.order_package_code and lwtg.warehouse_id = t.warehouse_id
left join logpm_warehouse_tray lwt on lwtg.tray_id = lwt.id
left join (select ltcls.* from logpm_trunkline_cars_load_scan ltcls
join (
select cls.scan_code,
max(cls.update_time) cupdateTime
from logpm_trunkline_cars_load_scan cls
group by cls.scan_code
) cmax on cmax.scan_code = ltcls.scan_code and cmax.cupdateTime = ltcls.update_time) m on m.scan_code = t.order_package_code
left join logpm_distribution_loadscan ldl on ldl.order_package_code = t.order_package_code and ldl.scan_status != 1 and ldl.is_deleted = 0
left join logpm_trunkline_advance lta on lta.id = ltad.advance_id
left join logpm_warehouse_tray_goods lwtg on lwtg.association_value = ltad.order_package_code and lwtg.warehouse_id = ltad.now_warehouse_id
left join logpm_warehouse_tray lwt on lwtg.tray_id = lwt.id
left join (select ltcls.* from logpm_trunkline_cars_load_scan ltcls
join (
select cls.scan_code,
max(cls.update_time) cupdateTime
from logpm_trunkline_cars_load_scan cls
group by cls.scan_code
) cmax on cmax.scan_code = ltcls.scan_code and cmax.cupdateTime = ltcls.update_time) m on m.scan_code = t.order_package_code
left join logpm_distribution_loadscan ldl on ldl.order_package_code = t.order_package_code and ldl.scan_status != 1 and ldl.is_deleted = 0
left join logpm_distribution_delivery_list lddl on lddl.id = ldl.delivery_id
where 1=1
<if test="param.orderCode != null and param.orderCode != '' ">

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

@ -398,6 +398,7 @@
left join logpm_warehouse_waybill lww on ltcls.waybill_no = lww.waybill_no
where ltcls.load_id = #{loadId}
and ltcls.warehouse_id = #{warehouseId}
and ltcls.warehouse_id != ltcls.unload_node_id
group by ltcls.order_code,
ltcls.waybill_no,
ltcls.type,
@ -446,9 +447,9 @@
lww.consignee consignee,
lww.consignee_name consigneeName,
lww.consignee_mobile consigneeMobile,
ltco.unload_num unloadNum,
0 planNum,
sum(ltcls.num) smallTotal
IFNULL(ltco.plan_num,0) AS planNum,
sum(case when ltcls.scan_status != 1 then ltcls.num else 0 end) unloadNum,
sum( ltcls.num ) AS smallTota
from logpm_trunkline_cars_load_scan ltcls
left join logpm_trunkline_cars_order ltco on ltco.order_code = ltcls.order_code and ltco.waybill_no = ltcls.waybill_no and ltco.load_id = ltcls.load_id and ltco.node_id = ltcls.warehouse_id
left join logpm_distribution_stock_article ldsa on ldsa.order_code = ltcls.order_code and ldsa.warehouse_id = ltcls.from_warehouse_id

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

@ -24,4 +24,6 @@ public interface TrunklineLoadSignOrderMapper extends BaseMapper<TrunklineLoadSi
IPage<SignOrderDetailVO> findSignOrderDetailList(IPage<Object> page, @Param("param") LoadCarsDTO loadCarsDTO);
void updateBelongToWarehouse(@Param("signOrderId") Long signOrderId, @Param("warehouseId") Long warehouseId, @Param("warehouseName") String warehouseName);
IPage<TrunklineLoadSignOrderVO> findSignOrderPageList(IPage<Object> page, @Param("param") LoadCarsDTO loadCarsDTO);
}

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

@ -85,4 +85,29 @@
where id = #{signOrderId}
</update>
<select id="findSignOrderPageList" resultType="com.logpm.trunkline.vo.TrunklineLoadSignOrderVO">
select ltlso.*,
ltcl.driver_name driverName,
ltcl.cars_no carsNo
from logpm_trunkline_load_sign_order ltlso
left join logpm_trunkline_cars_load ltcl on ltcl.id = ltlso.load_id
<where>
and (ltlso.warehouse_id = #{param.warehouseId} or ltlso.final_node_id = #{param.warehouseId})
<if test="param.loadId != null">
and ltlso.load_id = #{param.loadId}
</if>
<if test="param.signStatus != null and param.signStatus == '20'">
and ltlso.sign_status = '20'
and ltlso.sign_time &gt;= #{param.enterTimeStart}
and ltlso.sign_time &lt;= #{param.enterTimeEnd}
</if>
<if test="param.signStatus != null and param.signStatus == '10'">
and ltlso.sign_status != '20'
and ltlso.create_time &gt;= #{param.enterTimeStart}
and ltlso.create_time &lt;= #{param.enterTimeEnd}
</if>
</where>
</select>
</mapper>

67
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/mq/PackageFanoutListener.java

@ -0,0 +1,67 @@
package com.logpm.trunkline.mq;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.logpm.basicdata.entity.BasicdataWarehouseEntity;
import com.logpm.basicdata.feign.IBasicdataWarehouseClient;
import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity;
import com.logpm.trunkline.service.ITrunklineAdvanceDetailService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.WorkNodeEnums;
import org.springblade.common.constant.broadcast.FanoutConstants;
import org.springblade.common.exception.CustomerException;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
@Slf4j
@Component
@AllArgsConstructor
public class PackageFanoutListener {
private final ITrunklineAdvanceDetailService advanceDetailService;
private final IBasicdataWarehouseClient warehouseClient;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = FanoutConstants.trunkline.PACKAGNODE.QUEUE.PACKAGE_SIGN),
exchange = @Exchange(name = FanoutConstants.trunkline.PACKAGNODE.EXCHANGE, type = ExchangeTypes.FANOUT)
))
@Transactional(rollbackFor = Exception.class)
public void packageSignFanout(String msg) {
JSONObject jsonObject = JSONUtil.parseObj(msg);
Integer workNode = jsonObject.getInt("workNode");
if(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY.getCode().equals(workNode)
|| WorkNodeEnums.UNLOAD_INCOMING_WAREHOUSE.getCode().equals(workNode)){
Long warehouseId = jsonObject.getLong("warehouseId");
BasicdataWarehouseEntity warehouseEntity = warehouseClient.getEntityWarehouseId(warehouseId);
if(Objects.isNull(warehouseEntity)){
log.warn("###########packageSignFanout: 仓库信息不存在 warehouseId={}",warehouseId);
throw new CustomerException(405,"仓库信息不存在");
}
JSONArray orderPackageCodes = jsonObject.getJSONArray("orderPackageCodes");
List<String> orderPackageCodeList = orderPackageCodes.toList(String.class);
UpdateWrapper<TrunklineAdvanceDetailEntity> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("now_warehouse_id", warehouseId)
.set("now_warehouse_name", warehouseEntity.getName())
.in("order_package_code", orderPackageCodeList);
advanceDetailService.update(updateWrapper);
}
}
}

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

@ -10,6 +10,6 @@ public interface IPackageTrackLogAsyncService {
void addBatchPackageTrackLog(List<WarehousePackageTrackLogEntity> addPackageTrackLogList, List<String> orderPackageCodes, Integer code);
void sendPackageWorkNodeFanout(List<String> orderPackageCodes,Integer workNodeV);
void sendPackageWorkNodeFanout(List<String> orderPackageCodes,Integer workNode,Long warehouseId);
}

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

@ -214,4 +214,7 @@ public interface ITrunklineCarsLoadService extends BaseService<TrunklineCarsLoad
R findWarehouseUnloadReport(LoadCarsDTO loadCarsDTO);
R findSignOrderPageList(LoadCarsDTO loadCarsDTO);
R findSignPhotoList(LoadCarsDTO loadCarsDTO);
}

1
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/ITrunklineLoadSignOrderService.java

@ -22,4 +22,5 @@ public interface ITrunklineLoadSignOrderService extends BaseService<TrunklineLoa
void updateBelongToWarehouse(Long signOrderId, Long warehouseId, String warehouseName);
IPage<TrunklineLoadSignOrderVO> findSignOrderPageList(IPage<Object> page, LoadCarsDTO loadCarsDTO);
}

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

@ -13,6 +13,6 @@ public interface ITrunklineWaybillPackageService extends BaseService<TrunklineWa
void updateWaybillStatus(WarehouseWaybillEntity waybillEntity);
void updatePackageStatus(List<String> orderPackageCodes, Integer workNode);
void updatePackageStatus(List<String> orderPackageCodes, Integer workNode,Long warehouseId);
}

50
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/InComingServiceImpl.java

@ -20,6 +20,7 @@ import com.logpm.trunkline.service.*;
import com.logpm.trunkline.vo.TrunklineAdvanceVO;
import com.logpm.warehouse.entity.WarehouseWaybillEntity;
import com.logpm.warehouse.feign.IWarehouseTrayTypeClient;
import com.logpm.warehouse.feign.IWarehouseWaybillClient;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.common.constant.IncomingTypeEnum;
@ -38,6 +39,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@Slf4j
@ -55,6 +57,8 @@ public class InComingServiceImpl implements IInComingService {
private final RabbitTemplate rabbitTemplate;
private final FactoryDataMessageSender factoryDataMessageSender;
private final ISysClient sysClient;
private final IWarehouseWaybillClient warehouseWaybillClient;
private final IOpenOrderAsyncService openOrderAsyncService;
@Override
@ -268,6 +272,34 @@ public class InComingServiceImpl implements IInComingService {
//2.判断包件和订单是否已经存入在库订单
boolean b = advanceService.saveOrderAndPackages(advanceDetailEntities, warehouseId);
if (b) {
//把advanceDetailEntities通过waybillNo进行分组
Map<String, List<TrunklineAdvanceDetailEntity>> advanceDetailEntityWaybillNoMap = advanceDetailEntities.stream().filter(entity -> StringUtil.isNotBlank(entity.getWaybillNo())).collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getWaybillNo));
Set<String> waybillNoSet = advanceDetailEntityWaybillNoMap.keySet();
if(!waybillNoSet.isEmpty()){
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findWaybillBilllByWaybillNos(new ArrayList<>(waybillNoSet));
//把waybillEntityList转化成waybillNo为key的map
Map<String, WarehouseWaybillEntity> waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getWaybillNo, Function.identity()));
advanceDetailEntityWaybillNoMap.keySet().forEach(waybillNo -> {
List<TrunklineAdvanceDetailEntity> waybillNoAdvanceDetailEntities = advanceDetailEntityWaybillNoMap.get(waybillNo);
if(!waybillNoAdvanceDetailEntities.isEmpty()){
WarehouseWaybillEntity waybillEntity = waybillEntityMap.get(waybillNo);
if(!Objects.isNull(waybillEntity)){
Long departureWarehouseId = waybillEntity.getDepartureWarehouseId();
if(departureWarehouseId.equals(warehouseId)){
Integer totalCount = waybillEntity.getTotalCount();
Integer stockCount = waybillEntity.getStockCount();
openOrderAsyncService.saveLog(waybillEntity.getId(), waybillEntity.getWaybillNo(), "20", "已入库", "运单入库:"+stockCount+"/"+totalCount+",入库类型:【"+IncomingTypeEnum.getValue(incomingType)+"】,入库时间:"+ CommonUtil.dateToStringGeneral(new Date()), AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, finalWarehouseName);
}
}
}
});
}
if (!Objects.isNull(billladingId)) {
//先判断该包件是否已经有提货记录了
List<String> noOrderPackageCodes = billladingPackageServicie.findBillladingPackages(orderPackageCodes);
@ -543,8 +575,6 @@ public class InComingServiceImpl implements IInComingService {
String tenantId = inComingDTO.getTenantId();
String nickName = inComingDTO.getNickName();
// DynamicDataSourceContextHolder.push(tenantId);
Integer total = 0;
for (Long advanceId : advanceIds) {
QueryWrapper<TrunklineAdvanceDetailEntity> queryWrapper = new QueryWrapper<>();
@ -560,6 +590,22 @@ public class InComingServiceImpl implements IInComingService {
List<String> incomingWarehouseNames = advanceDetailService.findIncomingWarehouseName(advanceId);
advanceService.updateIncomingWarehouseName(String.join(",", incomingWarehouseNames), advanceId);
//把detailList通过waybillId分组
Map<Long, List<TrunklineAdvanceDetailEntity>> map = detailList.stream().filter(t -> Objects.nonNull(t.getWaybillId())).collect(Collectors.groupingBy(TrunklineAdvanceDetailEntity::getWaybillId));
Set<Long> waybillIdSet = map.keySet();
List<WarehouseWaybillEntity> waybillEntityList = warehouseWaybillClient.findListByWaybillIds(new ArrayList<>(waybillIdSet));
waybillEntityList.forEach(wb -> {
Integer totalCount = wb.getTotalCount();
Integer stockCount = wb.getStockCount();
openOrderAsyncService.saveLog(waybillEntity.getId(), waybillEntity.getWaybillNo(), "20", "已入库", "运单入库:"+stockCount+"/"+totalCount+",入库类型:【"+IncomingTypeEnum.getValue(incomingType)+"】,入库时间:"+ CommonUtil.dateToStringGeneral(new Date()), AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName);
});
//把waybillEntityList转化成id为key的Map
// Map<Long, WarehouseWaybillEntity> waybillEntityMap = waybillEntityList.stream().collect(Collectors.toMap(WarehouseWaybillEntity::getId, Function.identity()));
//存入日志
packageTrackLogAsyncService.addPackageTrackLog(tenantId, userId, deptId, nickName, orderPackageCodes, warehouseId, warehouseName, WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY.getCode(), "包件" + IncomingTypeEnum.getValue(incomingType));
total = total + detailList.size();

63
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderAsyncServiceImpl.java

@ -1,6 +1,7 @@
package com.logpm.trunkline.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.logpm.basicdata.entity.BasicdataClientEntity;
import com.logpm.basicdata.entity.BasicdataStoreBusinessEntity;
import com.logpm.basicdata.feign.IBasicdataClientClient;
@ -64,23 +65,49 @@ public class OpenOrderAsyncServiceImpl implements IOpenOrderAsyncService {
@LogpmAsync("asyncExecutor")
@Override
public void saveLog(Long waybillId, String waybillNo, String trackType, String refer, String operationRemark, String nickName,Long userId,Long warehouseId,String warehouseName) {
// String tenantId = AuthUtil.getTenantId();
// DynamicDataSourceContextHolder.push(tenantId);
TrunklineWaybillTrackEntity waybillTrackEntity = new TrunklineWaybillTrackEntity();
waybillTrackEntity.setWarehouseId(warehouseId);
waybillTrackEntity.setWarehouseName(warehouseName);
waybillTrackEntity.setWaybillId(waybillId);
waybillTrackEntity.setWaybillNo(waybillNo);
waybillTrackEntity.setTrackType(trackType);
waybillTrackEntity.setRefer(refer);
waybillTrackEntity.setOperationRemark(operationRemark);
waybillTrackEntity.setCreateUserName(nickName);
// waybillTrackEntity.setTenantId(TenantNum.HUITONGCODE);
// waybillTrackEntity.setCreateUser(userId);
// waybillTrackEntity.setUpdateUser(userId);
waybillTrackEntity.setCheckStatus(1);
waybillTrackEntity.setCheckTime(new Date());
trunklineWaybillTrackService.save(waybillTrackEntity);
if("20".equals(trackType)){
QueryWrapper<TrunklineWaybillTrackEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("warehouse_id",warehouseId)
.eq("waybill_id",waybillId)
.eq("track_type",trackType);
TrunklineWaybillTrackEntity waybillTrackEntity = trunklineWaybillTrackService.getOne(queryWrapper);
if(waybillTrackEntity!=null){
waybillTrackEntity.setRefer(refer);
waybillTrackEntity.setOperationRemark(operationRemark);
waybillTrackEntity.setCreateUserName(nickName);
waybillTrackEntity.setUpdateTime(new Date());
trunklineWaybillTrackService.updateById(waybillTrackEntity);
}else{
waybillTrackEntity = new TrunklineWaybillTrackEntity();
waybillTrackEntity.setWarehouseId(warehouseId);
waybillTrackEntity.setWarehouseName(warehouseName);
waybillTrackEntity.setWaybillId(waybillId);
waybillTrackEntity.setWaybillNo(waybillNo);
waybillTrackEntity.setTrackType(trackType);
waybillTrackEntity.setRefer(refer);
waybillTrackEntity.setOperationRemark(operationRemark);
waybillTrackEntity.setCreateUserName(nickName);
waybillTrackEntity.setCheckStatus(1);
waybillTrackEntity.setCheckTime(new Date());
trunklineWaybillTrackService.save(waybillTrackEntity);
}
}else{
TrunklineWaybillTrackEntity waybillTrackEntity = new TrunklineWaybillTrackEntity();
waybillTrackEntity.setWarehouseId(warehouseId);
waybillTrackEntity.setWarehouseName(warehouseName);
waybillTrackEntity.setWaybillId(waybillId);
waybillTrackEntity.setWaybillNo(waybillNo);
waybillTrackEntity.setTrackType(trackType);
waybillTrackEntity.setRefer(refer);
waybillTrackEntity.setOperationRemark(operationRemark);
waybillTrackEntity.setCreateUserName(nickName);
waybillTrackEntity.setCheckStatus(1);
waybillTrackEntity.setCheckTime(new Date());
trunklineWaybillTrackService.save(waybillTrackEntity);
}
// DynamicDataSourceContextHolder.clear();
}
@ -131,7 +158,7 @@ public class OpenOrderAsyncServiceImpl implements IOpenOrderAsyncService {
operationRemark = "干线从"+nodeName+"发车,实际发车时间"+ CommonUtil.dateToStringGeneral(new Date());
saveLog(waybillId,waybillNo,"40",nodeName+"已发车到"+nextWarehouseName,operationRemark,nickName,userId,nodeId,nodeName);
}
// DynamicDataSourceContextHolder.clear();
}

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

@ -641,13 +641,13 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
String nickName = AuthUtil.getNickName();
Long userId = AuthUtil.getUserId();
String createOperationRemark = "创建运单" + waybillNo + ",时间:" + CommonUtil.dateToString(waybillEntity.getCreateTime());
String createOperationRemark = "创建运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillId, waybillNo, "10", "创建运单", createOperationRemark, nickName, userId, warehouseId, warehouseName);
Integer totalCount = waybillEntity.getTotalCount();
Integer stockCount = waybillEntity.getStockCount();
if (totalCount.equals(stockCount)) {
createOperationRemark = "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【批量入库】,入库时间:" + CommonUtil.dateToString(new Date());
createOperationRemark = "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【开单前已入库】,入库时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillId, waybillNo, "20", "已入库", createOperationRemark, nickName, userId, warehouseId, warehouseName);
}
@ -857,13 +857,13 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
//异步存入日志
String nickName = AuthUtil.getNickName();
Long userId = AuthUtil.getUserId();
String createOperationRemark = "创建运单" + waybillNo + ",时间:" + CommonUtil.dateToString(new Date());
String createOperationRemark = "创建运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillId, waybillNo, "10", "创建运单", createOperationRemark, nickName, userId, warehouseId, warehouseName);
Integer totalCount = waybillEntity.getTotalCount();
Integer stockCount = waybillEntity.getStockCount();
if (totalCount.equals(stockCount)) {
createOperationRemark = "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【批量入库】,入库时间:" + CommonUtil.dateToString(waybillEntity.getCreateTime());
createOperationRemark = "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【零担开单及入库】,入库时间:" + CommonUtil.dateToStringGeneral(waybillEntity.getCreateTime());
openOrderAsyncService.saveLog(waybillId, waybillNo, "20", "已入库", createOperationRemark, nickName, userId, warehouseId, warehouseName);
}
@ -2545,7 +2545,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
String nickName = AuthUtil.getNickName();
Long userId = AuthUtil.getUserId();
String waybillNo = warehouseWaybillEntity.getWaybillNo();
String createOperationRemark = "审核运单" + waybillNo + ",时间:" + CommonUtil.dateToString(new Date()) + ", 审核人:" + AuthUtil.getNickName();
String createOperationRemark = "审核运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(new Date()) + ", 审核人:" + AuthUtil.getNickName();
openOrderAsyncService.saveLog(waybillId, waybillNo, "999", "审核运单", createOperationRemark, nickName, userId, warehouseId, warehouseName);
return R.success("审核成功");
@ -2925,13 +2925,13 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
String nickName = AuthUtil.getNickName();
Long userId = AuthUtil.getUserId();
String createOperationRemark = "创建运单" + waybillNo + ",时间:" + CommonUtil.dateToString(new Date());
String createOperationRemark = "创建运单" + waybillNo + ",时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillId, waybillNo, "10", "创建运单", createOperationRemark, nickName, userId, warehouseId, warehouseName);
Integer totalCount = waybillEntity.getTotalCount();
Integer stockCount = waybillEntity.getStockCount();
if (totalCount.equals(stockCount)) {
createOperationRemark = "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【批量入库】,入库时间:" + CommonUtil.dateToString(waybillEntity.getCreateTime());
createOperationRemark = "运单入库:" + stockCount + "/" + totalCount + ",入库类型:【零担开单及入库】,入库时间:" + CommonUtil.dateToStringGeneral(waybillEntity.getCreateTime());
openOrderAsyncService.saveLog(waybillId, waybillNo, "20", "已入库", createOperationRemark, nickName, userId, warehouseId, warehouseName);
}
@ -3065,7 +3065,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
waybillEntities.forEach(waybillEntity -> {
String createOperationRemark = "冻结运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToString(new Date());
String createOperationRemark = "冻结运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillEntity.getId(), waybillEntity.getWaybillNo(), "990", "冻结运单", createOperationRemark, AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName);
});
@ -3098,7 +3098,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
distributionParcelListClient.updateUnFreezeStatusByWaybillIds(waybillIds);
waybillEntities.forEach(waybillEntity -> {
String createOperationRemark = "解冻运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToString(new Date());
String createOperationRemark = "解冻运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillEntity.getId(), waybillEntity.getWaybillNo(), "991", "解冻运单", createOperationRemark, AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName);
});
@ -3159,7 +3159,7 @@ public class OpenOrderServiceImpl implements IOpenOrderService {
}
waybillList.forEach(waybillEntity -> {
String createOperationRemark = "作废运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToString(new Date());
String createOperationRemark = "作废运单" + waybillEntity.getWaybillNo() + ",时间:" + CommonUtil.dateToStringGeneral(new Date());
openOrderAsyncService.saveLog(waybillEntity.getId(), waybillEntity.getWaybillNo(), "1000", "作废运单", createOperationRemark+" 原因:"+abolishReson, AuthUtil.getNickName(), AuthUtil.getUserId(), warehouseId, warehouseName);
});
return R.success("作废成功");

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

@ -51,23 +51,26 @@ public class PackageTrackLogAsyncServiceImpl implements IPackageTrackLogAsyncSer
}
warehousePackageTrackLogClient.addLogList(list);
waybillPackageService.updatePackageStatus(orderPackageCodes, workNode);
waybillPackageService.updatePackageStatus(orderPackageCodes, workNode,warehouseId);
}
@LogpmAsync("asyncExecutor")
@Override
public void addBatchPackageTrackLog(List<WarehousePackageTrackLogEntity> addPackageTrackLogList, List<String> orderPackageCodes, Integer workNode) {
warehousePackageTrackLogClient.addLogList(addPackageTrackLogList);
WarehousePackageTrackLogEntity warehousePackageTrackLogEntity = addPackageTrackLogList.get(0);
Long warehouseId = warehousePackageTrackLogEntity.getWarehouseId();
waybillPackageService.updatePackageStatus(orderPackageCodes, workNode);
waybillPackageService.updatePackageStatus(orderPackageCodes, workNode,warehouseId);
}
@LogpmAsync("asyncExecutor")
@Override
public void sendPackageWorkNodeFanout(List<String> orderPackageCodes,Integer workNode) {
public void sendPackageWorkNodeFanout(List<String> orderPackageCodes,Integer workNode,Long warehouseId) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("orderPackageCodes",orderPackageCodes);
jsonObject.put("workNode",workNode);
jsonObject.put("warehouseId",warehouseId);
FanoutMsg build = FanoutMsg.builder().msg(jsonObject.toJSONString())
.exchange(FanoutConstants.trunkline.PACKAGNODE.EXCHANGE).build();

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

@ -615,6 +615,10 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
if(departureWarehouseId.equals(destinationWarehouseId)){
parcelList.setIsTransfer(0);
}
Integer stockCount = waybillEntity.getStockCount();
waybillEntity.setStockCount(stockCount+1);
}
parcelList.setConditions(1);
parcelList.setOrderPackageCode(orderPackageCode);
@ -669,6 +673,11 @@ public class TrunklineAdvanceServiceImpl extends BaseServiceImpl<TrunklineAdvanc
orderPackageCodes.add(orderPackageCode);
}
parcelListClient.addBatch(parcelListEntityList);
if(!Objects.isNull(waybillEntity)){
warehouseWaybillClient.updateEntity(waybillEntity);
}
try {
if(CollUtil.isNotEmpty(parcelListEntityList)){
for (DistributionParcelListEntity parcelListEntity : parcelListEntityList) {

13
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineBillladingPackageServiceImpl.java

@ -137,6 +137,19 @@ public class TrunklineBillladingPackageServiceImpl extends BaseServiceImpl<Trunk
}
}else{
waybillEntity.setWaybillStatus("10");
try{
TrunklineWaybillTrackEntity waybillTrackEntity = new TrunklineWaybillTrackEntity();
waybillTrackEntity.setWarehouseId(warehouseId);
waybillTrackEntity.setWarehouseName(warehouseEntity.getName());
waybillTrackEntity.setWaybillId(waybillId);
waybillTrackEntity.setWaybillNo(waybillEntity.getWaybillNo());
waybillTrackEntity.setTrackType("10");
waybillTrackEntity.setRefer("部分入库");
waybillTrackEntity.setOperationRemark("运单入库:"+waybillEntity.getStockCount()+"/"+allTotalNum+",入库类型:【批量入库】,入库时间:"+ CommonUtil.dateToString(new Date()));
trunklineWaybillTrackService.save(waybillTrackEntity);
}catch (Exception e){
log.warn("#################updateBillladingWaybillNum: 存入日志失败");
}
}
warehouseWaybillClient.updateEntity(waybillEntity);

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

@ -4366,7 +4366,14 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
page.setSize(pageSize);
IPage<TrunklineLoadSignOrderVO> pageList = trunklineLoadSignOrderService.finaSignOrderList(page, loadCarsDTO);
List<TrunklineLoadSignOrderVO> records = pageList.getRecords();
for (TrunklineLoadSignOrderVO record : records) {
Long id = record.getId();
List<TrunklineLoadSignPhotoEntity> bySignPhotoList = loadSignPhotoService.findBySignPhotoList(id);
record.setSignPhotoList(bySignPhotoList);
}
pageList.setRecords(records);
return R.data(pageList);
}
@ -4798,7 +4805,7 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
//包件签收状态修改
distributionParcelListClient.updatePackageStatus(orderPackageCodes, warehouseId, "70");
waybillPackageService.updatePackageStatus(orderPackageCodes, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART.getCode());
waybillPackageService.updatePackageStatus(orderPackageCodes, WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART.getCode(),warehouseId);
try {
String content = "包件在" + warehouseEntity.getName() + "被三方中转签收";
@ -5229,6 +5236,26 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl<TrunklineCarsL
return R.data(map);
}
@Override
public R findSignOrderPageList(LoadCarsDTO loadCarsDTO) {
IPage<Object> page = new Page<>();
page.setCurrent(loadCarsDTO.getPageNum());
page.setSize(loadCarsDTO.getPageSize());
IPage<TrunklineLoadSignOrderVO> ls = trunklineLoadSignOrderService.findSignOrderPageList(page, loadCarsDTO);
return R.data(ls);
}
@Override
public R findSignPhotoList(LoadCarsDTO loadCarsDTO) {
Long signOrderId = loadCarsDTO.getSignOrderId();
List<TrunklineLoadSignPhotoEntity> ls = loadSignPhotoService.findBySignPhotoList(signOrderId);
return R.data(ls);
}
@Override
public R loadingTrayInfo(LoadCarsDTO loadCarsDTO) {
log.info("##############loadingTrayInfo: 查询托盘的货物信息");

6
blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineLoadSignOrderServiceImpl.java

@ -3,6 +3,7 @@ package com.logpm.trunkline.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.logpm.trunkline.dto.LoadCarsDTO;
import com.logpm.trunkline.entity.TrunklineLoadSignOrderEntity;
import com.logpm.trunkline.entity.TrunklineLoadSignPhotoEntity;
import com.logpm.trunkline.mapper.TrunklineLoadSignOrderMapper;
import com.logpm.trunkline.service.ITrunklineLoadSignOrderService;
import com.logpm.trunkline.vo.SignOrderDetailVO;
@ -48,4 +49,9 @@ public class TrunklineLoadSignOrderServiceImpl extends BaseServiceImpl<Trunkline
public void updateBelongToWarehouse(Long signOrderId, Long warehouseId, String warehouseName) {
baseMapper.updateBelongToWarehouse(signOrderId,warehouseId,warehouseName);
}
@Override
public IPage<TrunklineLoadSignOrderVO> findSignOrderPageList(IPage<Object> page, LoadCarsDTO loadCarsDTO) {
return baseMapper.findSignOrderPageList(page,loadCarsDTO);
}
}

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

@ -145,7 +145,7 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl<Trunklin
}
@Override
public void updatePackageStatus(List<String> orderPackageCodes, Integer workNode) {
public void updatePackageStatus(List<String> orderPackageCodes, Integer workNode,Long warehouseId) {
Integer packageStatus = null;
if(WorkNodeEnums.INITIAL_WAREHOUSE_DEPART.getCode().equals(workNode)){
@ -159,31 +159,26 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl<Trunklin
packageStatus = 40;
} else if (WorkNodeEnums.DISTRIBUTION_SIGN_FOR.getCode().equals(workNode) ||WorkNodeEnums.SIGN_TRIPARTITE_TRANSFER_DEPART.getCode().equals(workNode)||WorkNodeEnums.SIGN_DIRECT_SHIPPER.getCode().equals(workNode)) {
packageStatus = 50;
}else if(WorkNodeEnums.INITIAL_WAREHOUSE_ENTRY.getCode().equals(workNode)){
packageStatus = 10;
}
if(!Objects.isNull(packageStatus)){
List<TrunklineWaybillPackageEntity> waybillPackageEntities = new ArrayList<>();
Set<Long> waybillIds = new HashSet<>();
for (String orderPackageCode : orderPackageCodes) {
QueryWrapper<TrunklineWaybillPackageEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("order_package_code",orderPackageCode)
.eq("is_deleted",0);
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = baseMapper.selectList(queryWrapper);
if(trunklineWaybillPackageEntities.isEmpty()){
continue;
}
TrunklineWaybillPackageEntity waybillPackageEntity = trunklineWaybillPackageEntities.get(0);
if(Objects.isNull(waybillPackageEntity)){
continue;
}
waybillPackageEntity.setPackageStatus(packageStatus);
waybillPackageEntities.add(waybillPackageEntity);
waybillIds.add(waybillPackageEntity.getWaybillId());
QueryWrapper<TrunklineWaybillPackageEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.in("order_package_code",orderPackageCodes)
.eq("is_deleted",0);
List<TrunklineWaybillPackageEntity> trunklineWaybillPackageEntities = baseMapper.selectList(queryWrapper);
if(trunklineWaybillPackageEntities.isEmpty()){
return;
}
for (TrunklineWaybillPackageEntity trunklineWaybillPackageEntity : trunklineWaybillPackageEntities) {
trunklineWaybillPackageEntity.setPackageStatus(packageStatus);
waybillIds.add(trunklineWaybillPackageEntity.getWaybillId());
}
updateBatchById(waybillPackageEntities);
updateBatchById(trunklineWaybillPackageEntities);
for (Long waybillId : waybillIds) {
WarehouseWaybillEntity waybillEntity = warehouseWaybillClient.findByWaybillId(waybillId);
@ -192,7 +187,7 @@ public class TrunklineWaybillPackageServiceImpl extends BaseServiceImpl<Trunklin
}
packageTrackLogAsyncService.sendPackageWorkNodeFanout(orderPackageCodes,workNode);
packageTrackLogAsyncService.sendPackageWorkNodeFanout(orderPackageCodes,workNode,warehouseId);
}
}

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

@ -23,7 +23,7 @@ public interface IWarehouseTrayTypeService extends BaseService<WarehouseTrayType
R orderScanOrderPackageCode(String trayType, String trayCode, String orderPackageCode,Long warehouseId,String remark);
R orderScanOrderPackageCodeSync(String trayType, String trayCode, String orderPackageCode,Long warehouseId);
R orderScanOrderPackageCodeSync(String trayType, String trayCode, String orderPackageCode, Long warehouseId);
R deleteScanOrderPackageCode(String trayCode, List<String> orderPackageCodes,Long warehouseId);

22
blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java

@ -891,11 +891,11 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
String oldTrayCode = trayGoodsEntity.getTrayCode();
if(oldTrayCode.equals(trayCode)){
log.warn("##############orderScanOrderPackageCode: 该包条已打托 trayCode={}",trayCode);
return Resp.scanFail(4001,"该包条已打托","已扫描");
return R.fail(4001,"该包条已打托");
}
log.warn("#########orderScanOrderPackageCode: 包件已打托 orderPackageCode={}",orderPackageCode);
return Resp.scanFail(4002,"包件已打托","已在"+oldTrayCode+"托盘绑定");
return R.fail(4002,"包件已打托");
}
QueryWrapper<WarehouseUpdownGoodsEntity> updownGoodsEntityQueryWrapper = new QueryWrapper<>();
@ -904,36 +904,36 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
if(!Objects.isNull(updownGoodsEntity)){
String positionCode = updownGoodsEntity.getPositionCode();
log.warn("#########orderScanOrderPackageCode: 包件已上架 orderPackageCode={}",orderPackageCode);
return Resp.scanFail(4003,"包件已上架","包件已上架"+positionCode+",请先下架或进行移库绑定");
return R.fail(4003,"包件已上架");
}
BasicdataTrayEntity basicdataTrayEntity = basicdataTrayClient.getTrayByTrayCode(trayCode);
if(Objects.isNull(basicdataTrayEntity)){
log.warn("#########orderScanOrderPackageCode: 未找到托盘信息 trayCode={}",trayCode);
return Resp.scanFail(2001,"未找到托盘信息","未找到托盘信息");
return R.fail(2001,"未找到托盘信息");
}
Integer disableType = basicdataTrayEntity.getDisableType();
Long trayId = basicdataTrayEntity.getId();
if(disableType == 2){
log.warn("###############orderScanOrderPackageCode: 该托盘已被禁用 trayCode={}",trayCode);
return Resp.scanFail(2001,"该托盘已被禁用","该托盘已被禁用");
return R.fail(2001,"该托盘已被禁用");
}
DistributionParcelListEntity parcelListEntity = distributionParcelListClient.findByPacketBarCodeAndWarehouseId(orderPackageCode,warehouseId);
if(Objects.isNull(parcelListEntity)){
log.warn("##############orderScanOrderPackageCode: 包件不存在 orderPackageCode={} warehouseId={}",orderPackageCode,warehouseId);
return Resp.scanFail(2001,"包件不存在","系统无编码");
return R.fail(2001,"包件不存在");
}
String orderCode = parcelListEntity.getOrderCode();//订单自编码
Long wid = parcelListEntity.getWarehouseId();
Integer conditions = parcelListEntity.getConditions();
if(!wid.equals(warehouseId)){
log.warn("##############orderScanOrderPackageCode: 包件不在当前仓 orderPackageCode={} wid={} warehouseId={}",orderPackageCode,wid,warehouseId);
return Resp.scanFail(2001,"包件不在当前仓","包件不在当前仓");
return R.fail(2001,"包件不在当前仓");
}
String orderPackageStatus = parcelListEntity.getOrderPackageStatus();
if(!"20".equals(orderPackageStatus)){
log.warn("##############orderScanOrderPackageCode: 包件已不在库 orderPackageCode={} warehouseId={}",orderPackageCode,warehouseId);
return Resp.scanFail(2001,"包件已不在库","包件已不在库");
return R.fail(2001,"包件已不在库");
}
// if(conditions.equals(2)){
@ -944,7 +944,7 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
DistributionStockArticleEntity stockArticleEntity = distributionStockArticleClient.findStockArticleByOrderCodeAndWarehouseId(orderCode,warehouseId);
if(Objects.isNull(stockArticleEntity)){
log.warn("#########orderScanOrderPackageCode: 未找到订单信息 orderCode={} warehouseId={}",orderCode,warehouseId);
return Resp.scanFail(2001,"未找到订单信息","未找到订单信息");
return R.fail(2001,"未找到订单信息");
}
// Integer genre = stockArticleEntity.getGenre();
// if(genre == 2){
@ -973,12 +973,12 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl<WarehouseTrayT
if(!trayTypeEntityWarehouseId.equals(warehouseId)){
log.warn("##############orderScanOrderPackageCode: 托盘已在其他仓库打托 {}={}",trayTypeEntityWarehouseId,warehouseId);
return Resp.scanFail(2001,"托盘已在其他仓库打托","托盘已在其他仓库打托");
return R.fail(2001,"托盘已在其他仓库打托");
}
if(!tt.equals(trayType)){
log.warn("##############orderScanOrderPackageCode: 打托方式不正确 {}={}",trayType,tt);
return Resp.scanFail(4004,"打托方式不正确","打托方式不正确");
return R.fail(4004,"打托方式不正确");
}
if(StringUtil.isBlank(filterValue)){

Loading…
Cancel
Save