diff --git a/blade-service/logpm-report/src/main/resources/application-prod.yml b/blade-service/logpm-report/src/main/resources/application-prod.yml index e75326109..d2d395e11 100644 --- a/blade-service/logpm-report/src/main/resources/application-prod.yml +++ b/blade-service/logpm-report/src/main/resources/application-prod.yml @@ -22,6 +22,8 @@ spring: proxy-filters: - sqlLogInterceptor query-timeout: 60000 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 #设置默认的数据源或者数据源组,默认值即为master primary: master datasource: diff --git a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java index ca03ccecf..6a168c70a 100644 --- a/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java +++ b/blade-service/logpm-statisticsdata/src/main/java/com/logpm/statistics/listener/mq/WaybillCheckListener.java @@ -5,7 +5,8 @@ import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import com.logpm.basicdata.feign.IBasicdataWarehouseClient; +import com.logpm.basicdata.entity.BasicdataClientEntity; +import com.logpm.basicdata.feign.IBasicdataClientClient; import com.logpm.distribution.feign.IDistributionParcelListClient; import com.logpm.statistics.entity.*; import com.logpm.statistics.service.*; @@ -14,7 +15,6 @@ import com.logpm.trunkline.entity.TrunklineAdvanceDetailEntity; import com.logpm.trunkline.entity.TrunklineAdvanceEntity; import com.logpm.trunkline.feign.ITrunklineAdvanceClient; import com.logpm.trunkline.feign.ITrunklineAdvanceDetailClient; -import com.logpm.trunkline.feign.ITrunklineWaybillOrderClient; import com.logpm.warehouse.entity.WarehouseWayBillDetail; import com.logpm.warehouse.entity.WarehouseWaybillEntity; import com.logpm.warehouse.feign.IWarehouseWaybillClient; @@ -30,7 +30,6 @@ 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.math.BigDecimal; import java.util.*; @@ -52,6 +51,7 @@ public class WaybillCheckListener { private final IStatisticsDistributionPackageService distributionPackageService; private final IStatisticsBalanceOrderInfoService balanceOrderInfoService; private final IDistributionParcelListClient distributionParcelListClient; + private final IBasicdataClientClient basicdataClientClient; @RabbitListener(bindings = @QueueBinding( value = @Queue(name = FanoutConstants.trunkline.CHECKWAYBILL.QUEUE.CHECKWAYBILL_INCOMINGDATA), @@ -200,6 +200,10 @@ public class WaybillCheckListener { Long consigneeId = waybillEntity.getConsigneeId(); String consignee = waybillEntity.getConsignee(); Integer serviceType = waybillEntity.getServiceType(); + BasicdataClientEntity basicdataClient = basicdataClientClient.findEntityById(consigneeId); + if(!Objects.isNull(basicdataClient)){ + serviceType=basicdataClient.getTypeService(); + } String payWay = waybillEntity.getPayWay(); Long departureWarehouseId = waybillEntity.getDepartureWarehouseId(); String departureWarehouseName = waybillEntity.getDepartureWarehouseName(); @@ -482,6 +486,10 @@ public class WaybillCheckListener { Long consigneeId = waybillEntity.getConsigneeId(); String consignee = waybillEntity.getConsignee(); Integer serviceType = waybillEntity.getServiceType(); + BasicdataClientEntity basicdataClient = basicdataClientClient.findEntityById(consigneeId); + if(!Objects.isNull(basicdataClient)){ + serviceType=basicdataClient.getTypeService(); + } String payWay = waybillEntity.getPayWay(); Long departureWarehouseId = waybillEntity.getDepartureWarehouseId(); String departureWarehouseName = waybillEntity.getDepartureWarehouseName(); @@ -491,6 +499,8 @@ public class WaybillCheckListener { Integer pickupCompleteOrNot = waybillEntity.getPickupCompleteOrNot(); Date signTime = waybillEntity.getSignTime(); + + //单价计算 // BigDecimal pickupFee = Objects.isNull(waybillEntity.getPickupFee())?BigDecimal.ZERO:waybillEntity.getPickupFee(); BigDecimal warehouseManagementFee = Objects.isNull(waybillEntity.getWarehouseManagementFee()) ? BigDecimal.ZERO : waybillEntity.getWarehouseManagementFee(); @@ -546,6 +556,7 @@ public class WaybillCheckListener { //保存订单信息 List orderInfoEntities = new ArrayList<>(); + Integer finalServiceType = serviceType; advanceEntities.forEach(advanceEntity -> { StatisticsOrderInfoEntity orderInfoEntity = new StatisticsOrderInfoEntity(); orderInfoEntity.setOrderCode(advanceEntity.getOrderCode()); @@ -555,7 +566,7 @@ public class WaybillCheckListener { orderInfoEntity.setBrand(brand); orderInfoEntity.setConsigneeId(consigneeId); orderInfoEntity.setConsignee(consignee); - orderInfoEntity.setTypeService(serviceType); + orderInfoEntity.setTypeService(finalServiceType); orderInfoEntity.setSignDate(signTime); orderInfoEntity.setSignStatus(0); orderInfoEntity.setSyncFeeStatus(0); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java index 805a58906..9bc2b3f04 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/OpenOrderServiceImpl.java @@ -916,8 +916,11 @@ public class OpenOrderServiceImpl implements IOpenOrderService { } //修改暂存单明细的结算品类 - advanceDetailService.updateBatchById(updateAdvanceDetailList); - + //把updateAdvanceDetailList分成每300条一组 + List> updateAdvanceDetailListList = CollUtil.split(updateAdvanceDetailList, 300); + updateAdvanceDetailListList.forEach(updateAdvanceDetailList1 -> { + advanceDetailService.updateBatchById(updateAdvanceDetailList1); + }); trunklineWaybillPackageService.updateWaybillStatus(waybillEntity); diff --git a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java index 8762d23e0..f1ea2521c 100644 --- a/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java +++ b/blade-service/logpm-trunkline/src/main/java/com/logpm/trunkline/service/impl/TrunklineCarsLoadServiceImpl.java @@ -10951,27 +10951,29 @@ public class TrunklineCarsLoadServiceImpl extends BaseServiceImpl zeroList = trunklineCarsOrderService.findZeroList(loadId, warehouseId); - zeroList.forEach(loadZeroListVO -> { - String waybillNo = loadZeroListVO.getWaybillNo(); - String orderCode = loadZeroListVO.getOrderCode(); - List loadingNumVOList = scanZeroDetailService.findGoodsLoadingNum(loadId,warehouseId,waybillNo,orderCode); - //把loadingNumVOList转化成以goodsId作为key的Map - Map map = loadingNumVOList.stream().collect(Collectors.toMap(GoodsLoadingNumVO::getGoodsId, Function.identity())); - List zeroPackageList = distributionParcelListClient.findPackageGoodsListByWaybillNoAndWarehouseId(waybillNo,warehouseId); - List ls = new ArrayList<>(); - zeroPackageList.forEach(jsonObject -> { - ZeroPackageVO javaObject = jsonObject.toJavaObject(ZeroPackageVO.class); - Long goodsId = javaObject.getGoodsId(); - GoodsLoadingNumVO goodsLoadingNumVO = map.get(goodsId); - if(Objects.isNull(goodsLoadingNumVO)){ - javaObject.setLoadingNum(0); - }else{ - javaObject.setLoadingNum(goodsLoadingNumVO.getLoadingNum()); - } - ls.add(javaObject); + if(CollUtil.isNotEmpty(zeroList)){ + zeroList.forEach(loadZeroListVO -> { + String waybillNo = loadZeroListVO.getWaybillNo(); + String orderCode = loadZeroListVO.getOrderCode(); + List loadingNumVOList = scanZeroDetailService.findGoodsLoadingNum(loadId,warehouseId,waybillNo,orderCode); + //把loadingNumVOList转化成以goodsId作为key的Map + Map map = loadingNumVOList.stream().collect(Collectors.toMap(GoodsLoadingNumVO::getGoodsId, Function.identity())); + List zeroPackageList = distributionParcelListClient.findPackageGoodsListByWaybillNoAndWarehouseId(waybillNo,warehouseId); + List ls = new ArrayList<>(); + zeroPackageList.forEach(jsonObject -> { + ZeroPackageVO javaObject = jsonObject.toJavaObject(ZeroPackageVO.class); + Long goodsId = javaObject.getGoodsId(); + GoodsLoadingNumVO goodsLoadingNumVO = map.get(goodsId); + if(Objects.isNull(goodsLoadingNumVO)){ + javaObject.setLoadingNum(0); + }else{ + javaObject.setLoadingNum(goodsLoadingNumVO.getLoadingNum()); + } + ls.add(javaObject); + }); + loadZeroListVO.setZeroPackageList(ls); }); - loadZeroListVO.setZeroPackageList(ls); - }); + } //查询异常列表 diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java index 19cac21f6..c610725cc 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/controller/WarehouseWaybillController.java @@ -438,4 +438,19 @@ public class WarehouseWaybillController extends BladeController { } + @PostMapping("/updateWaybillTypeService") + @ApiOperationSupport(order = 2) + @ApiOperation(value = "修改运单的服务类型 ") + public R updateWaybillTypeService(@RequestBody WarehouseWaybillDTO waybillDTO) { + try { + log.info(">>>>>>>>>>>>>>>>>> updateWaybillTypeService: waybillDTO={}",waybillDTO); + return warehouseWaybillService.updateWaybillTypeService(waybillDTO); + } catch (Exception e) { + return R.fail(e.getMessage()); + } + + } + + + } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java index 374ddeb28..1f84fc81b 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.java @@ -83,4 +83,6 @@ public interface WarehouseWaybillMapper extends BaseMapper findWaybillVOByOrderCode(@Param("orderCode") String orderCode); + + void updateWaybillTypeService(@Param("serviceType") Integer serviceType, @Param("waybillId") Long id); } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml index 6e9f7785a..a7cd85678 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseWaybillMapper.xml @@ -1286,4 +1286,8 @@ update logpm_warehouse_waybill set consignee_id = null where id = #{waybillId} + + update logpm_warehouse_waybill set service_type = #{serviceType} where id = #{waybillId} + + diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseWaybillService.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseWaybillService.java index 04e2574a1..d741deee4 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseWaybillService.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/IWarehouseWaybillService.java @@ -95,4 +95,6 @@ public interface IWarehouseWaybillService extends BaseService findWaybillVOByOrderCode(String orderCode); + + R updateWaybillTypeService(WarehouseWaybillDTO waybillDTO); } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java index 3ad53c5f7..146c767eb 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseTrayTypeServiceImpl.java @@ -62,6 +62,9 @@ import org.springblade.core.tool.utils.StringUtil; import org.springblade.system.cache.DictBizCache; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; +import org.springframework.core.io.ClassPathResource; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.scripting.support.ResourceScriptSource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -1060,6 +1063,13 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl qw = new QueryWrapper<>(); qw.eq("association_value", orderPackageCode); @@ -1762,9 +1772,19 @@ public class WarehouseTrayTypeServiceImpl extends BaseServiceImpl redisScript = new DefaultRedisScript<>(); + redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("luascript/resubmit.lua"))); + redisScript.setResultType(Long.class); + + List keys = Collections.singletonList(key); + List args = Arrays.asList(value, String.valueOf(expireTime)); + + Long result = redis.getRedisTemplate().execute(redisScript, keys, args); - Boolean exists = redis.exists(key); - if(exists){ + if (result == 1) { log.warn("#########orderScanOrderPackageCode: 托盘正在保存打托方式 trayCode={} warehouseId={}", trayCode, warehouseId); throw new CustomerException(405, "托盘信息正在更新,请重试"); } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java index 1c6da9a3c..ba9010796 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/service/impl/WarehouseWaybillServiceImpl.java @@ -1234,4 +1234,26 @@ public class WarehouseWaybillServiceImpl extends BaseServiceImpl findWaybillVOByOrderCode(String orderCode) { return baseMapper.findWaybillVOByOrderCode(orderCode); } + + @Override + public R updateWaybillTypeService(WarehouseWaybillDTO waybillDTO) { + Long id = waybillDTO.getId(); + Integer serviceType = waybillDTO.getServiceType(); + + WarehouseWaybillEntity warehouseWaybillEntity = baseMapper.selectById(id); + if(Objects.isNull(warehouseWaybillEntity)){ + log.warn("###########updateWaybillTypeService: 运单信息为空"); + return R.fail(405,"运单信息为空"); + } + + Integer checkStatus = warehouseWaybillEntity.getCheckStatus(); + if(checkStatus.equals(1)){ + log.warn("###########updateWaybillTypeService: 运单已审核"); + return R.fail(405,"运单已审核"); + } + + baseMapper.updateWaybillTypeService(serviceType,id); + + return R.success("修改成功"); + } } diff --git a/blade-service/logpm-warehouse/src/main/resources/luascript/resubmit.lua b/blade-service/logpm-warehouse/src/main/resources/luascript/resubmit.lua new file mode 100644 index 000000000..990a385f7 --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/resources/luascript/resubmit.lua @@ -0,0 +1,12 @@ +local key = KEYS[1] +local value = ARGV[1] +local expireTime = tonumber(ARGV[2]) + +local exists = redis.call("EXISTS", key) + +if exists == 1 then + return 1 +end + +redis.call("SETEX", key, expireTime, value) +return 0