|
|
@@ -5,7 +5,9 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetActualFeeInfoV1.CommonActualFeeInfoDetailResponse;
|
|
|
import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetActualFeeInfoV1.CommonActualFeeResponse;
|
|
|
import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderByMonthSettleQRV1.CommonMonthSettleQRQueryResponse;
|
|
|
+import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderByMonthSettleQRV1.WaybillQRVerifyInfo;
|
|
|
import com.lop.open.api.sdk.domain.ECAP.CommonQueryOrderApi.commonGetOrderInfoV1.addedProducts;
|
|
|
+import com.ruoyi.common.core.exception.ServiceException;
|
|
|
import com.ruoyi.common.core.utils.DateUtils;
|
|
|
import com.ruoyi.common.core.utils.StringUtils;
|
|
|
import com.ruoyi.common.redis.service.RedisIdGenerator;
|
|
|
@@ -20,7 +22,9 @@ import com.ruoyi.logistics.mapper.BizWaybillOrderMapper;
|
|
|
import com.ruoyi.logistics.response.CommonOrderInfoResponse;
|
|
|
import com.ruoyi.logistics.service.*;
|
|
|
import com.ruoyi.system.api.domain.SysDept;
|
|
|
+import com.ruoyi.system.api.domain.SysUser;
|
|
|
import com.ruoyi.system.mapper.SysDeptMapper;
|
|
|
+import com.ruoyi.system.mapper.SysUserMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
@@ -52,6 +56,9 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
|
|
|
@Autowired
|
|
|
private SysDeptMapper sysDeptMapper;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
+
|
|
|
|
|
|
@Autowired
|
|
|
private RedisIdGenerator redisIdGenerator;
|
|
|
@@ -59,74 +66,104 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
|
|
|
@Override
|
|
|
public void consumeQRCode() {
|
|
|
Collection<String> keys = redisService.keys(RedisCacheConstants.MONTH_QRCODE_CACHE_KEY + "*");
|
|
|
+ if (keys == null || keys.size() == 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- keys.forEach(key -> {
|
|
|
+ for (String key : keys) {
|
|
|
MonthQRCodeDTO monthQRCodeDTO = redisService.getCacheObject(key);
|
|
|
+ if (DateUtils.differentMinutes(monthQRCodeDTO.getCreateTime(), DateUtils.getNowDate()) < 5) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
|
|
|
+ SysUser sysUser = sysUserMapper.selectUserById(monthQRCodeDTO.getUserId());
|
|
|
SysDept sysDept = sysDeptMapper.selectDeptById(monthQRCodeDTO.getDeptId());
|
|
|
|
|
|
- JSONObject waybillCode = logisticsOrderService.queryOrderByQRCode(1, monthQRCodeDTO.getQrCodeContent());
|
|
|
-
|
|
|
- CommonMonthSettleQRQueryResponse response = JSON.parseObject(waybillCode.getString("msg"), CommonMonthSettleQRQueryResponse.class);
|
|
|
-
|
|
|
- if (response.getWaybillQRVerifyInfoList() != null && response.getWaybillQRVerifyInfoList().size() > 0) {
|
|
|
- log.info("用户:{} 扫描了二维码:{}", monthQRCodeDTO.getUserId(), monthQRCodeDTO.getQrCodeContent());
|
|
|
-
|
|
|
- response.getWaybillQRVerifyInfoList().forEach(waybillQRVerifyInfo -> {
|
|
|
- JSONObject orderDetail = logisticsOrderService.queryOrderDetailByWaybillCode(1, waybillQRVerifyInfo.getWaybillCode());
|
|
|
- JSONObject orderFeeInfo = logisticsOrderService.queryOrderFeeInfoByWaybillCode(1, waybillQRVerifyInfo.getWaybillCode());
|
|
|
-
|
|
|
- CommonOrderInfoResponse orderInfo = (CommonOrderInfoResponse) orderDetail.get("msg");
|
|
|
- CommonActualFeeResponse actualFee = JSON.parseObject(orderFeeInfo.getString("msg"), CommonActualFeeResponse.class);
|
|
|
+ if (1 == monthQRCodeDTO.getSource()) {
|
|
|
+ this.jdQRCodeConsume(monthQRCodeDTO, sysUser, sysDept, key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- BizWaybillOrder bizWaybillOrder = new BizWaybillOrder();
|
|
|
- bizWaybillOrder.setWaybillNo(redisIdGenerator.generateUniqueId("RJSD"));
|
|
|
- bizWaybillOrder.setExternalWaybillNo(orderInfo.getWaybillCode());
|
|
|
- bizWaybillOrder.setOrderType(1);
|
|
|
+ private void jdQRCodeConsume(MonthQRCodeDTO monthQRCodeDTO, SysUser sysUser, SysDept sysDept, String key) {
|
|
|
+ JSONObject waybillCode = logisticsOrderService.queryOrderByQRCode(1, monthQRCodeDTO.getQrCodeContent());
|
|
|
+ if(!waybillCode.getBooleanValue("success")){
|
|
|
+ log.info("根据二维码查询运单号失败{}", waybillCode.getString("msg"));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ CommonMonthSettleQRQueryResponse response = JSON.parseObject(waybillCode.getString("msg"), CommonMonthSettleQRQueryResponse.class);
|
|
|
+
|
|
|
+ if (response.getWaybillQRVerifyInfoList() != null && response.getWaybillQRVerifyInfoList().size() > 0) {
|
|
|
+
|
|
|
+ for (WaybillQRVerifyInfo waybillQRVerifyInfo : response.getWaybillQRVerifyInfoList()) {
|
|
|
+ // 判断订单是否已经处理过
|
|
|
+ if (monthQRCodeDTO.getProcessWaybillCodes().contains(waybillQRVerifyInfo.getWaybillCode())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ monthQRCodeDTO.getProcessWaybillCodes().add(waybillQRVerifyInfo.getWaybillCode());
|
|
|
+
|
|
|
+ JSONObject orderDetail = logisticsOrderService.queryOrderDetailByWaybillCode(1, waybillQRVerifyInfo.getWaybillCode());
|
|
|
+ if(!waybillCode.getBooleanValue("success")){
|
|
|
+ log.info("根据运单号查询运单详情失败{}", waybillCode.getString("msg"));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONObject orderFeeInfo = logisticsOrderService.queryOrderFeeInfoByWaybillCode(1, waybillQRVerifyInfo.getWaybillCode());
|
|
|
+ if(!waybillCode.getBooleanValue("success")){
|
|
|
+ log.info("根据运单号查询运单费用失败{}", waybillCode.getString("msg"));
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ CommonOrderInfoResponse orderInfo = (CommonOrderInfoResponse) orderDetail.get("msg");
|
|
|
+ CommonActualFeeResponse actualFee = JSON.parseObject(orderFeeInfo.getString("msg"), CommonActualFeeResponse.class);
|
|
|
+
|
|
|
+ BizWaybillOrder bizWaybillOrder = new BizWaybillOrder();
|
|
|
+ bizWaybillOrder.setWaybillNo(redisIdGenerator.generateUniqueId("RJSD"));
|
|
|
+ bizWaybillOrder.setExternalWaybillNo(orderInfo.getWaybillCode());
|
|
|
+ bizWaybillOrder.setOrderType(1);
|
|
|
// bizWaybillOrder.setSenderName(orderInfo.gets());
|
|
|
// bizWaybillOrder.setSenderPhone(orderInfo.getSenderPhone());
|
|
|
- bizWaybillOrder.setSenderProvince(orderInfo.getSenderContact().getProvince());
|
|
|
- bizWaybillOrder.setSenderCity(orderInfo.getSenderContact().getCity());
|
|
|
- bizWaybillOrder.setSenderCounty(orderInfo.getSenderContact().getCounty());
|
|
|
- bizWaybillOrder.setSenderAddress(orderInfo.getSenderContact().getTown());
|
|
|
-// bizWaybillOrder.setReceiverName(orderInfo.getReceiverName());
|
|
|
-// bizWaybillOrder.setReceiverPhone(orderInfo.getReceiverPhone());
|
|
|
- bizWaybillOrder.setReceiverProvince(orderInfo.getReceiverContact().getProvince());
|
|
|
- bizWaybillOrder.setReceiverCity(orderInfo.getReceiverContact().getCity());
|
|
|
- bizWaybillOrder.setReceiverCounty(orderInfo.getReceiverContact().getCounty());
|
|
|
- bizWaybillOrder.setReceiverAddress(orderInfo.getReceiverContact().getTown());
|
|
|
- bizWaybillOrder.setGoodsName(orderInfo.getCargoes().get(0).getName());
|
|
|
- bizWaybillOrder.setGoodsWeight(new BigDecimal(orderInfo.getCargoes().get(0).getWeight()));
|
|
|
- bizWaybillOrder.setGoodsVolume(new BigDecimal(orderInfo.getCargoes().get(0).getVolume()));
|
|
|
- bizWaybillOrder.setGoodsQty(orderInfo.getCargoes().get(0).getQuantity().longValue());
|
|
|
- bizWaybillOrder.setOrderStatus(1);
|
|
|
- bizWaybillOrder.setPickupType(1);
|
|
|
- bizWaybillOrder.setSendStartTime(new Date(orderInfo.getShipmentInfo().getPickupStartTime()));
|
|
|
- bizWaybillOrder.setSendEndTime(new Date(orderInfo.getShipmentInfo().getPickupEndTime()));
|
|
|
+ bizWaybillOrder.setSenderProvince(orderInfo.getSenderContact().getProvince());
|
|
|
+ bizWaybillOrder.setSenderCity(orderInfo.getSenderContact().getCity());
|
|
|
+ bizWaybillOrder.setSenderCounty(orderInfo.getSenderContact().getCounty());
|
|
|
+ bizWaybillOrder.setSenderAddress(orderInfo.getSenderContact().getTown());
|
|
|
+ bizWaybillOrder.setReceiverName(sysUser.getNickName());
|
|
|
+ bizWaybillOrder.setReceiverPhone(sysUser.getPhonenumber());
|
|
|
+ bizWaybillOrder.setReceiverProvince(orderInfo.getReceiverContact().getProvince());
|
|
|
+ bizWaybillOrder.setReceiverCity(orderInfo.getReceiverContact().getCity());
|
|
|
+ bizWaybillOrder.setReceiverCounty(orderInfo.getReceiverContact().getCounty());
|
|
|
+ bizWaybillOrder.setReceiverAddress(orderInfo.getReceiverContact().getTown());
|
|
|
+ bizWaybillOrder.setGoodsName(orderInfo.getCargoes().get(0).getName());
|
|
|
+ bizWaybillOrder.setGoodsWeight(new BigDecimal(orderInfo.getCargoes().get(0).getWeight()));
|
|
|
+ bizWaybillOrder.setGoodsVolume(new BigDecimal(orderInfo.getCargoes().get(0).getVolume()));
|
|
|
+ bizWaybillOrder.setGoodsQty(orderInfo.getCargoes().get(0).getQuantity().longValue());
|
|
|
+ bizWaybillOrder.setOrderStatus(6);
|
|
|
+ bizWaybillOrder.setPickupType(orderInfo.getShipmentInfo().getPickupType());
|
|
|
+ bizWaybillOrder.setSendStartTime(new Date(orderInfo.getShipmentInfo().getPickupStartTime()));
|
|
|
+ bizWaybillOrder.setSendEndTime(new Date(orderInfo.getShipmentInfo().getPickupEndTime()));
|
|
|
// bizWaybillOrder.setPickupTime(new Date(orderInfo.getShipmentInfo().geta()));
|
|
|
// bizWaybillOrder.setDeliveryTime(waybillQRVerifyInfo.getDeliveryTime());
|
|
|
// bizWaybillOrder.setSignTime(waybillQRVerifyInfo.getSignTime());
|
|
|
- bizWaybillOrder.setProductCode(orderInfo.getProducts().getProductCode());
|
|
|
- bizWaybillOrder.setAddedService(assembleAddedService(orderInfo.getProducts().getAddedProducts()));
|
|
|
- bizWaybillOrder.setCreateTime(DateUtils.getNowDate());
|
|
|
- bizWaybillOrder.setUserId(monthQRCodeDTO.getUserId());
|
|
|
- bizWaybillOrder.setDeptId(monthQRCodeDTO.getDeptId());
|
|
|
+ bizWaybillOrder.setProductCode(orderInfo.getProducts().getProductCode());
|
|
|
+ bizWaybillOrder.setAddedService(assembleJDAddedService(orderInfo.getProducts().getAddedProducts()));
|
|
|
+ bizWaybillOrder.setCreateTime(DateUtils.getNowDate());
|
|
|
+ bizWaybillOrder.setUserId(monthQRCodeDTO.getUserId());
|
|
|
+ bizWaybillOrder.setDeptId(monthQRCodeDTO.getDeptId());
|
|
|
|
|
|
- bizWaybillOrderMapper.insertBizWaybillOrder(bizWaybillOrder);
|
|
|
+ bizWaybillOrderMapper.insertBizWaybillOrder(bizWaybillOrder);
|
|
|
|
|
|
- List<BizWaybillCostDetails> details = assembleCostDetails(sysDept, bizWaybillOrder, actualFee.getCommonActualFeeInfoDetails());
|
|
|
+ List<BizWaybillCostDetails> details = assembleJDCostDetails(sysDept, bizWaybillOrder, actualFee.getCommonActualFeeInfoDetails());
|
|
|
|
|
|
- details.forEach(detail -> {
|
|
|
- bizWaybillCostDetailsMapper.insertBizWaybillCostDetails(detail);
|
|
|
- });
|
|
|
+ details.forEach(detail -> {
|
|
|
+ bizWaybillCostDetailsMapper.insertBizWaybillCostDetails(detail);
|
|
|
});
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
- });
|
|
|
+
|
|
|
+ redisService.setCacheObject(key, monthQRCodeDTO);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- private List<BizWaybillCostDetails> assembleCostDetails(SysDept sysDept, BizWaybillOrder bizWaybillOrder, List<CommonActualFeeInfoDetailResponse> commonActualFeeInfoDetails) {
|
|
|
+ private List<BizWaybillCostDetails> assembleJDCostDetails(SysDept sysDept, BizWaybillOrder bizWaybillOrder, List<CommonActualFeeInfoDetailResponse> commonActualFeeInfoDetails) {
|
|
|
List<BizWaybillCostDetails> details = new ArrayList<>();
|
|
|
commonActualFeeInfoDetails.forEach(item -> {
|
|
|
BizWaybillCostDetails costDetail = new BizWaybillCostDetails();
|
|
|
@@ -150,7 +187,7 @@ public class MonthQRCodeTaskServiceImpl implements IMonthQRCodeTaskService {
|
|
|
return details;
|
|
|
}
|
|
|
|
|
|
- private String assembleAddedService(List<addedProducts> addedProducts) {
|
|
|
+ private String assembleJDAddedService(List<addedProducts> addedProducts) {
|
|
|
JSONObject addedService = new JSONObject();
|
|
|
|
|
|
addedService.put("isPack", null);
|