浏览代码

Merge remote-tracking branch 'origin/main' into main

luofeiyun 3 天之前
父节点
当前提交
022b69e509
共有 12 个文件被更改,包括 89 次插入37 次删除
  1. 3 3
      ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorrecharge/DistributorRechargeServiceImpl.java
  2. 2 0
      ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/VoyageApi.java
  3. 32 0
      ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java
  4. 2 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java
  5. 16 13
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailExportVO.java
  6. 1 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/order/TradeOrderController.java
  7. 2 0
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/insurance/InsuranceServiceImpl.java
  8. 10 4
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/impl/InvoiceGroupServiceImpl.java
  9. 15 10
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderRepositoryServiceImpl.java
  10. 0 1
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java
  11. 4 3
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundServiceImpl.java
  12. 2 2
      ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/smsSendconfig/SmsSendconfigServiceImpl.java

+ 3 - 3
ship-module-ota/ship-module-ota-biz/src/main/java/com/yc/ship/module/ota/service/distributorrecharge/DistributorRechargeServiceImpl.java

@@ -42,6 +42,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 
@@ -302,7 +303,7 @@ public class DistributorRechargeServiceImpl implements DistributorRechargeServic
     }
 
     @Override
-    @Transactional
+    @Transactional(propagation = Propagation.NESTED,rollbackFor = Exception.class)
     @TenantIgnore
     public CommonResult<DistributorRechargeRespDTO> tradeRecharge(DistributorRechargeReqDTO rechargeReqDTO) {
         RLock lock = null;
@@ -414,8 +415,7 @@ public class DistributorRechargeServiceImpl implements DistributorRechargeServic
 
                             break;
                         case 5:
-                        case 10:
-                            break;
+
                         case 20:
                             //预付款退款 定向库存退款 导游代退失败回退预存款
                             beforeBalance = distributor.getBalance();

+ 2 - 0
ship-module-product/ship-module-product-api/src/main/java/com/yc/ship/module/product/api/VoyageApi.java

@@ -30,4 +30,6 @@ public interface VoyageApi {
      * @param reqDTO 请求参数
      */
     void cancelReduceStock(ReduceStockReqDTO reqDTO);
+
+    void cancelReduceStockNew(ReduceStockReqDTO reqDTO);
 }

+ 32 - 0
ship-module-product/ship-module-product-biz/src/main/java/com/yc/ship/module/product/api/VoyageApiImpl.java

@@ -223,6 +223,38 @@ public class VoyageApiImpl implements VoyageApi {
         }
     }
 
+    @Override
+    @Transactional(propagation = Propagation.NESTED,rollbackFor = Exception.class)
+    public void cancelReduceStockNew(ReduceStockReqDTO reqDTO) {
+        log.error("开始确定订单还库存:请求参数:{}", JSONObject.toJSONString(reqDTO));
+        //TODO: 当前阶段不考虑门店库存
+        Long voyageId = reqDTO.getVoyageId();
+        //现在给整个航次的库存加锁
+        String lockKey = String.format(ProductRedisKeyConstants.STOCK_REDIS_KEY_PREFIX, voyageId);
+        RLock lock = redissonClient.getLock(lockKey);
+        try {
+            lock.lock(60, TimeUnit.SECONDS);
+            String uuid = UuidUtils.getUUID();
+            //判断是分销商还是门店下单 1:分销商,2:门店
+            Integer type = reqDTO.getType();
+            //分销商下单,当前阶段不考虑门店下单
+            if (Objects.equals(type, DistributorOrStoreEnum.DISTRIBUTOR.getValue())) {
+                //分销商下单只扣分销商库存,默认是OTA,默认OTC只能门店下单
+                //初定扣分销商库存
+                cancelReduceStockDistributor(reqDTO.getOrderId(), reqDTO.getType(),reqDTO.getOrderRoomList(), uuid);
+                if (reqDTO.getOldOrderId() != null && !reqDTO.getOldOrderId().equals(reqDTO.getOrderId())) {
+                    cancelReduceStockDistributor(reqDTO.getOldOrderId(), reqDTO.getType(),reqDTO.getOrderRoomList(), uuid);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            if (lock.isHeldByCurrentThread() && lock.isLocked()) {
+                lock.unlock();
+            }
+        }
+    }
+
     /**
      * 确定状态时取消订单还库存
      * roomUseDTOList 需要退的房间

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/OrderJzDetailController.java

@@ -223,6 +223,7 @@ public class OrderJzDetailController {
       vo.setIndex(i + 1);
       vo.setOrderNo(detail.getOrderNo());
       vo.setName(detail.getName());
+      vo.setIdCard(detail.getIdCard());
       vo.setPhone(detail.getPhone());
       vo.setRoomModelName(detail.getRoomModelName());
       vo.setRemark(detail.getRemark());
@@ -401,6 +402,7 @@ public class OrderJzDetailController {
       vo.setIndex(i + 1);
       vo.setOrderNo(detail.getOrderNo());
       vo.setName(detail.getName());
+      vo.setIdCard(detail.getIdCard());
       vo.setPhone(detail.getPhone());
       vo.setRoomModelName(detail.getRoomModelName());
       vo.setRemark(detail.getRemark());

+ 16 - 13
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/admin/orderjzdetail/vo/OrderJzDetailExportVO.java

@@ -23,43 +23,46 @@ public class OrderJzDetailExportVO {
     @ExcelProperty(value = "姓名", index = 4)
     private String name;
 
-    @ExcelProperty(value = "联系电话", index = 5)
+    @ExcelProperty(value = "证件号", index = 5)
+    private String idCard;
+
+    @ExcelProperty(value = "联系电话", index = 6)
     private String phone;
 
-    @ExcelProperty(value = "房型", index = 6)
+    @ExcelProperty(value = "房型", index = 7)
     private String roomModelName;
 
-    @ExcelProperty(value = "车次/航班号", index = 7)
+    @ExcelProperty(value = "车次/航班号", index = 8)
     private String remark;
 
-    @ExcelProperty(value = "核销时间", index = 8)
+    @ExcelProperty(value = "核销时间", index = 9)
     private String signTime;
 
-    @ExcelProperty(value = "分车号", index = 9)
+    @ExcelProperty(value = "分车号", index = 10)
     private String dispatchNo;
 
-    @ExcelProperty(value = "分车组团号", index = 10)
+    @ExcelProperty(value = "分车组团号", index = 11)
     private String groupNo;
 
-    @ExcelProperty(value = "车牌号", index = 11)
+    @ExcelProperty(value = "车牌号", index = 12)
     private String busNumber;
 
-    @ExcelProperty(value = "司机姓名", index = 12)
+    @ExcelProperty(value = "司机姓名", index = 13)
     private String driverName;
 
-    @ExcelProperty(value = "司机联系电话", index = 13)
+    @ExcelProperty(value = "司机联系电话", index = 14)
     private String driverPhone;
 
-    @ExcelProperty(value = "接站人员", index = 14)
+    @ExcelProperty(value = "接站人员", index = 15)
     private String receiverName;
 
-    @ExcelProperty(value = "接站人电话", index = 15)
+    @ExcelProperty(value = "接站人电话", index = 16)
     private String receiverPhone;
 
-    @ExcelProperty(value = "分车情况", index = 16)
+    @ExcelProperty(value = "分车情况", index = 17)
     private String dispatchRemark;
 
-    @ExcelProperty(value = "预约情况", index = 17)
+    @ExcelProperty(value = "预约情况", index = 18)
     private String reservationInfo;
 
 }

+ 1 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/controller/app/order/TradeOrderController.java

@@ -199,7 +199,7 @@ public class TradeOrderController {
 
             // 4. 构造7字节包头
             // 第1字节为加密标志(0-不加密),后6字节为数据包长度(包含加密标志位),不足6位在右边用空格补足
-            int packetLen = xmlBytes.length + 1;
+            int packetLen = xmlBytes.length;
             String lengthStr = String.format("%-6s", packetLen);
             String headerStr = "0" + lengthStr;
             byte[] headerBytes = headerStr.getBytes("GBK");

+ 2 - 0
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/insurance/InsuranceServiceImpl.java

@@ -287,6 +287,8 @@ public class InsuranceServiceImpl implements InsuranceService {
             case 10:
                 transCredentialType = 18; // 保险身份证
                 break;
+            case 11:
+                transCredentialType = 17; // 港澳台居民居住证
             default:
                 break;
 

+ 10 - 4
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/invoice/impl/InvoiceGroupServiceImpl.java

@@ -879,6 +879,8 @@ public class InvoiceGroupServiceImpl implements InvoiceGroupService {
             BigDecimal taxExcludedAmount = BigDecimal.ZERO;
             BigDecimal taxExcludedAmounttotal = BigDecimal.ZERO;
             BigDecimal se = BigDecimal.ZERO;
+            BigDecimal tse = BigDecimal.ZERO;
+            BigDecimal tje = BigDecimal.ZERO;
             BigDecimal taxIncludedAmount = BigDecimal.ZERO;
             BigDecimal taxIncludedAmounttotal = BigDecimal.ZERO;
             if (inventoryList.isEmpty()) {
@@ -907,10 +909,12 @@ public class InvoiceGroupServiceImpl implements InvoiceGroupService {
                 taxExcludedAmount = taxIncludedAmount.divide(new BigDecimal(1).add(taxRate), 2, RoundingMode.HALF_UP);
                 taxExcludedAmounttotal = taxIncludedAmounttotal.divide(new BigDecimal(1).add(taxRate), 2, RoundingMode.HALF_UP);
                 //金额
+                tje = taxIncludedAmount.setScale(2, RoundingMode.HALF_UP);
                 detailObj.set("JE", taxIncludedAmount.setScale(2, RoundingMode.HALF_UP));
                 //税额
-                se = taxIncludedAmount.subtract(taxExcludedAmount);
-                detailObj.set("SE", se.setScale(2, RoundingMode.HALF_UP));
+                se = taxIncludedAmount.subtract(taxExcludedAmount).setScale(2, RoundingMode.HALF_UP);
+                tse =se;
+                detailObj.set("SE", se);
                 //扣除额
                 detailObj.set("KCE", "");
                 //行性质。0-正常行 1-折扣行 2-被折扣行
@@ -940,9 +944,11 @@ public class InvoiceGroupServiceImpl implements InvoiceGroupService {
                     //不含税金额
                     taxExcludedAmount = taxIncludedAmount.divide(new BigDecimal(1).add(taxRate), 2, RoundingMode.HALF_UP);
                     //金额
+                    tje = tje.add(taxIncludedAmount.setScale(2, RoundingMode.HALF_UP));
                     detailObj2.set("JE", taxIncludedAmount.setScale(2, RoundingMode.HALF_UP));
                     //税额
                     se = taxIncludedAmount.subtract(taxExcludedAmount);
+                    tse = tse.add(se.setScale(2, RoundingMode.HALF_UP));
                     detailObj2.set("SE", se.setScale(2, RoundingMode.HALF_UP));
                     //扣除额
                     detailObj2.set("KCE", "");
@@ -1013,9 +1019,9 @@ public class InvoiceGroupServiceImpl implements InvoiceGroupService {
                 }
             }
             //合计金额
-            reqObj.set("HJJE", taxExcludedAmounttotal.setScale(2, RoundingMode.HALF_UP));
+            reqObj.set("HJJE", tje);
             //合计税额
-            reqObj.set("HJSE", se.setScale(2, RoundingMode.HALF_UP));
+            reqObj.set("HJSE", tse);
             if (StringUtils.isNotBlank(remark)) {
                 //备注
                 reqObj.set("BZ", remark);

+ 15 - 10
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderRepositoryServiceImpl.java

@@ -177,7 +177,7 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
             // 将旧接站头表数据同步到新记录:前端未传的字段用旧值补齐
             if (CollUtil.isNotEmpty(oldJzList)) {
                 OrderJzDO oldJzDO = oldJzList.get(0);
-                if (newOrderJzDO.getIsJz() == null) {
+                if (newOrderJzDO.getIsJz() == null || newOrderJzDO.getIsJz() >= 0) {
                     newOrderJzDO.setIsJz(oldJzDO.getIsJz());
                 }
                 if (newOrderJzDO.getJzAddress() == null) {
@@ -189,6 +189,7 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
                 if (newOrderJzDO.getJzLinkPhone() == null) {
                     newOrderJzDO.setJzLinkPhone(oldJzDO.getJzLinkPhone());
                 }
+                newOrderJzDO.setDeleted(false);
             }
             orderJzMapper.insert(newOrderJzDO);
 
@@ -243,13 +244,15 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
 
         Long newJzId = tradeOrderBO.getOrderJzDO().getId();
 
-        // 1. 构建证件号到新游客ID的映射(从新订单的游客列表中获取)
-        Map<String, Long> credentialNoToNewVisitorIdMap = new HashMap<>(16);
+        // 1. 构建证件号和游客姓名到新游客ID的映射(从新订单的游客列表中获取)
+        Map<String, TradeVisitorDO> credentialNoToNewVisitorIdMap = new HashMap<>(16);
+        Map<String, TradeVisitorDO> nameToNewVisitorIdMap = new HashMap<>(16);
         tradeOrderBO.getTradeOrderDetailBOList().forEach(detailBO -> {
             if (CollUtil.isNotEmpty(detailBO.getTradeVisitorDOList())) {
                 detailBO.getTradeVisitorDOList().forEach(visitor -> {
-                    if (visitor.getCredentialNo() != null) {
-                        credentialNoToNewVisitorIdMap.put(visitor.getCredentialNo(), visitor.getId());
+                    if (visitor.getCredentialNo() != null || visitor.getName() != null) {
+                        credentialNoToNewVisitorIdMap.put(visitor.getCredentialNo(), visitor);
+                        nameToNewVisitorIdMap.put(visitor.getName(), visitor);
                     }
                 });
             }
@@ -262,15 +265,16 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
             newDetail.setId(IdWorker.getId());
             newDetail.setJzId(newJzId);
             // 通过证件号匹配新游客ID,确保 visitor_id 关联到新订单的游客
-            Long newVisitorId = credentialNoToNewVisitorIdMap.get(oldDetail.getIdCard());
-            newDetail.setVisitorId(newVisitorId != null ? newVisitorId : oldDetail.getVisitorId());
+            TradeVisitorDO newVisitorId = credentialNoToNewVisitorIdMap.get(oldDetail.getIdCard());
+            TradeVisitorDO newVisitorId2 = nameToNewVisitorIdMap.get(oldDetail.getName());
+            newDetail.setVisitorId(newVisitorId != null ? newVisitorId.getId() : (newVisitorId2 != null ? newVisitorId2.getId() : oldDetail.getVisitorId()) );
             newDetail.setBatchNo(oldDetail.getBatchNo());
             newDetail.setArriveTime(oldDetail.getArriveTime());
             newDetail.setAddress(oldDetail.getAddress());
-            newDetail.setName(oldDetail.getName());
-            newDetail.setIdCard(oldDetail.getIdCard());
+            newDetail.setName(newVisitorId != null ? newVisitorId.getName() : (newVisitorId2 != null ? newVisitorId2.getName() : oldDetail.getName()));
+            newDetail.setIdCard(newVisitorId != null ? newVisitorId.getCredentialNo() : (newVisitorId2 != null ? newVisitorId2.getCredentialNo() : oldDetail.getIdCard()) );
             newDetail.setTenantId(oldDetail.getTenantId());
-            newDetail.setPhone(oldDetail.getPhone());
+            newDetail.setPhone(newVisitorId != null ? newVisitorId.getMobile() : (newVisitorId2 != null ? newVisitorId2.getMobile() :  oldDetail.getPhone()));
             newDetail.setRemark(oldDetail.getRemark());
             newDetail.setStatus(oldDetail.getStatus());
             newDetail.setSignTime(oldDetail.getSignTime());
@@ -279,6 +283,7 @@ public class TradeOrderRepositoryServiceImpl implements TradeOrderRepositoryServ
             newDetail.setSignImage(oldDetail.getSignImage());
             newDetail.setExtendOrderNo(oldDetail.getExtendOrderNo());
             newDetail.setExtendTicketNo(oldDetail.getExtendTicketNo());
+            newDetail.setDeleted(newVisitorId == null && (newVisitorId2 == null));
             newDetail.setDispatchId(oldDetail.getDispatchId());
             newJzDetailList.add(newDetail);
         }

+ 0 - 1
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/order/impl/TradeOrderServiceImpl.java

@@ -291,7 +291,6 @@ public class TradeOrderServiceImpl implements TradeOrderService {
     }
 
     @Override
-
     public CommonResult<TradeOrderRespDTO> modifyShipOrder(ShipTradeOrderCreateReqVO shipTradeOrderCreateReqVO) {
         TradeOrderBO tradeOrderBO = null;
         try {

+ 4 - 3
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/refund/impl/TradeRefundServiceImpl.java

@@ -281,8 +281,6 @@ public class TradeRefundServiceImpl implements TradeRefundService {
         TradeRefundAuditRespDTO respDTO = new TradeRefundAuditRespDTO();
         respDTO.setRefundAuditId(refundAuditDO.getId()).setRefundId(refundDO.getId());
 
-        //发送审核通知消息
-        tradePublishUtils.publishRefundAuditMsg(refundAuditDO.getId().toString());
         if (ObjectUtil.equal(refundAuditDO.getAuditStatus(), YES)) {
             //同意-》更新退款单为审核通过-》向供应商发起退款
             if (refundAuditReqDTO.getRefundAmount() != null && refundAuditReqDTO.getRefundAmount().compareTo(refundDO.getRefundAmount()) != 0) {
@@ -309,10 +307,13 @@ public class TradeRefundServiceImpl implements TradeRefundService {
                 reqDTO.setUseRoomNum(BigDecimal.valueOf(tradeOrderTotal.getUseRoomTotalNum()));
                 List<OrderRoomUseDTO> orderRoomUseDTOList = tradeVisitorMapper.selectRefundRoomShipVisitor(tradeOrderDO.getId());
                 reqDTO.setOrderRoomList(orderRoomUseDTOList);
-                voyageApi.cancelReduceStock(reqDTO);
+                voyageApi.cancelReduceStockNew(reqDTO);
             } catch (Exception e) {
+                e.printStackTrace();
                 log.error("取消库存cancelReduceStock失败", e);
             }
+            //发送审核通知消息
+            tradePublishUtils.publishRefundAuditMsg(refundAuditDO.getId().toString());
         } else {
             //拒绝-》更新退款单为审核拒绝-》更新订单为原状态
             tradeRefundRepositoryService.updateRefundStatus(refundAuditReqDTO.getRefundId(), RefundStatusEnum.REFUSE);

+ 2 - 2
ship-module-trade/ship-module-trade-biz/src/main/java/com/yc/ship/module/trade/service/smsSendconfig/SmsSendconfigServiceImpl.java

@@ -333,7 +333,7 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
             // 上水
             // 获取上水抵达三峡游客中心 查询数据字典
             List<DictDataDO> arriveDataLis = dictDataMapper.selectListByStatusAndDictType(0, "up_arrive");
-            if(day == -1){
+            if(day == 1){
                 // 获取上水登船时间 查询数据字典
                 List<DictDataDO> dictDataList = dictDataMapper.selectListByStatusAndDictType(0, "up_board");
                 templateParams.put(params.get(0), dictDataList.get(0).getLabel());
@@ -344,7 +344,7 @@ public class SmsSendconfigServiceImpl implements SmsSendconfigService {
             }
         }else{
             // 下水
-            if(day == -1){
+            if(day == 1){
                 // 获取下水登船时间 查询数据字典
                 List<DictDataDO> dictDataList = dictDataMapper.selectListByStatusAndDictType(0, "down_board");
                 templateParams.put(params.get(0), dictDataList.get(0).getLabel());