Explorar o código

Merge remote-tracking branch 'origin/master'

lixiaolong hai 1 mes
pai
achega
8db65f9488
Modificáronse 24 ficheiros con 1394 adicións e 1181 borrados
  1. 1 0
      commons/src/main/java/com/jzg/commons/entity/account/po/SysUserAccountChangeLog.java
  2. 18 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/UpdateCompanyBatchVo.java
  3. 4 0
      commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java
  4. 11 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java
  5. 4 4
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java
  6. 4 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  7. 12 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  8. 3 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  9. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  10. 1099 1074
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  11. 43 0
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/FlowIdUtil.java
  12. 6 4
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKHttpAPIService.java
  13. 3 4
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java
  14. 3 2
      tenant/organization/src/main/java/com/jzg/organization/client/InsOrdersClient.java
  15. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/PtlAgreementCostController.java
  16. 69 15
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserAccountIncomeLogMapper.java
  17. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostService.java
  18. 63 53
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java
  19. 4 2
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  20. 3 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java
  21. 8 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountIncomeLogServiceImpl.java
  22. 20 5
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java
  23. 9 7
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoBankCardServiceImpl.java
  24. 1 1
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

+ 1 - 0
commons/src/main/java/com/jzg/commons/entity/account/po/SysUserAccountChangeLog.java

@@ -92,6 +92,7 @@ public class SysUserAccountChangeLog extends BaseModel {
         operTypeMap.put(2,"保单提成");
         operTypeMap.put(3,"提现");
         operTypeMap.put(4,"提现驳回");
+        operTypeMap.put(5,"提现中");
     }
 
     public String getOperTypeName(){

+ 18 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/UpdateCompanyBatchVo.java

@@ -0,0 +1,18 @@
+package com.jzg.commons.entity.finance.vo;
+
+import com.jzg.commons.entity.vo.AgreementVo;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Builder
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class UpdateCompanyBatchVo {
+
+    private AgreementVo agreementVo;
+
+    private BatchModifyVo batchModifyVo;
+}

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java

@@ -476,4 +476,8 @@ public class FeeAuditVo extends BaseModel {
     @ExcelIgnore
     @Schema(description = "投保人")
     private String policyholder;
+
+    public String getAuditingUserName(){
+        return this.auditUser;
+    }
 }

+ 11 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteResultsVo.java

@@ -8,6 +8,7 @@ import com.jzg.commons.entity.quote.vo.ExpenseFactor;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.TaxInfoVo;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -150,6 +151,16 @@ public class QuoteResultsVo implements Serializable {
      */
     private String quoteTime;
 
+    /**
+     * 权益的
+     */
+
+    @Schema(description = "车主权益1:开启,0:关闭")
+    private String ownerRights;
+
+    @Schema(description = "PC端还是APP端可用1:PC,2:APP,3:PC+APP")
+    private String clientType;
+
     /**
      * 评分VO
      */

+ 4 - 4
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java

@@ -78,7 +78,7 @@ public class PtlSchemeSaveVo {
     }
 
     public PtlSchemeSaveVo(PtlScheme ptlScheme,PtlSchemeInfo ptlSchemeInfo,
-                           List<PtlSchemeInsuranceVo> insurances,List<PtlSchemeInsuranceDrivingIntention> drivingIntentionList,
+                           List<PtlSchemeInsuranceVo> insurances, List<PtlSchemeInsuranceDrivingIntention> drivingList,
                            List<PtlSchemeRulesAttrLink> rulesAttrLinks,List<PtlAgreementUndwrtRulesAttr> agreementRulesVo){
         if(Objects.isNull(ptlScheme))
         {
@@ -99,8 +99,8 @@ public class PtlSchemeSaveVo {
             scheme.schemeInsuranceList.add(insurance);
         });
         //处理驾意险
-        drivingIntentionList.stream().filter(drivingIntention -> drivingIntention.getSchemeInfoId().equals(ptlSchemeInfo.getId())).forEach(drivingIntention -> {
-            scheme.drivingIntentionList.add(drivingIntention);
+        drivingList.stream().filter(drivingIntention -> drivingIntention.getSchemeInfoId().equals(ptlSchemeInfo.getId())).forEach(drivingIntention -> {
+            scheme.drivingList.add(drivingIntention);
         });
         //处理规则
         rulesAttrLinks.stream().filter(link -> link.getSchemeId().equals(this.id)).forEach(link->{
@@ -276,7 +276,7 @@ public class PtlSchemeSaveVo {
     public List<PtlSchemeInsuranceDrivingIntention> getPtlSchemeInsuranceDrivingIntentionList(){
         List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentionList = new ArrayList<>();
         for (Scheme scheme : schemeList) {
-            scheme.getDrivingIntentionList().forEach(drivingIntention -> {
+            scheme.getDrivingList().forEach(drivingIntention -> {
                 PtlSchemeInsuranceDrivingIntention ptlSchemeInsuranceDrivingIntention = new PtlSchemeInsuranceDrivingIntention();
                 ptlSchemeInsuranceDrivingIntention.setId(IdGenerate.nextId());
                 ptlSchemeInsuranceDrivingIntention.setSchemeInfoId(scheme.getId());

+ 4 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -14,6 +14,7 @@ import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.dto.InsOrdersParamVO;
 import com.jzg.commons.entity.dto.UpdateFeeRatioDTO;
 import com.jzg.commons.entity.finance.vo.BatchModifyVo;
+import com.jzg.commons.entity.finance.vo.UpdateCompanyBatchVo;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.vo.HistoryQuoteQueryVo;
@@ -260,14 +261,14 @@ public class InsOrdersController extends BaseController {
     /**
      * 批量修改ins_orders和ins_order_adjust的保司信息
      *
-     * @param batchModifyVo 批量修改参数,包含orderNos和companyIds
+     * @param updateCompanyBatchVo 批量修改参数,包含orderNos和companyIds
      * @author lipf
      * @date 2026/8/5
      */
     @PostMapping("/updateCompanyBatch")
     @Operation(summary = "批量修改订单和批改表的保司信息")
-    public HttpResult<String> updateCompanyBatch(@RequestBody BatchModifyVo batchModifyVo){
-        return insOrdersService.updateCompanyBatch(batchModifyVo);
+    public HttpResult<String> updateCompanyBatch(@RequestBody UpdateCompanyBatchVo updateCompanyBatchVo){
+        return insOrdersService.updateCompanyBatch(updateCompanyBatchVo);
     }
 
     @GetMapping("/comparePrice")

+ 12 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -38,6 +38,7 @@ import com.jzg.commons.entity.quote.vo.underwriting.SpecialAppointmentsVo;
 import com.jzg.commons.entity.rights.dto.InsOrderRightsDto;
 import com.jzg.commons.entity.rights.dto.InsOrderRightsInfoDto;
 import com.jzg.commons.entity.rights.dto.InsOrderRightsPackageDto;
+import com.jzg.commons.entity.system.vo.SysSystemBusPermsVo;
 import com.jzg.commons.entity.vo.CompanyClauseVo;
 import com.jzg.commons.entity.vo.InsCompanyClauseVo;
 import com.jzg.commons.entity.vo.LotteryCountVO;
@@ -58,6 +59,7 @@ import com.jzg.quotation.summary.aop.QuoteVerification;
 import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
 import com.jzg.quotation.summary.async.AsyncGetPayLink;
 import com.jzg.quotation.summary.classifier.QuoteInfoParameterFilling;
+import com.jzg.quotation.summary.client.EsmInsCompanyClient;
 import com.jzg.quotation.summary.client.LocalLivingClient;
 import com.jzg.quotation.summary.client.UnifiedAccountClient;
 import com.jzg.quotation.summary.constants.QuoteNumberConstant;
@@ -186,6 +188,9 @@ public class UnifyOrderManager {
     @Autowired
     private UnifiedAccountClient unifiedAccountClient;
 
+    @Autowired
+    private EsmInsCompanyClient esmInsCompanyClient;
+
     @Autowired
     private ObjectMapper objectMapper;
 
@@ -355,6 +360,13 @@ public class UnifyOrderManager {
                 });
             }
 
+            // 权益权限
+            HttpResult<SysSystemBusPermsVo> sysSystemBusPermsVoHttpResult = esmInsCompanyClient.getBusPerms(baseController.getSystemCode());
+            if (sysSystemBusPermsVoHttpResult.getCode() == 200) {
+                quoteResultsVo.setOwnerRights(String.valueOf(sysSystemBusPermsVoHttpResult.getData().getOwnerRights()));
+                quoteResultsVo.setClientType(String.valueOf(sysSystemBusPermsVoHttpResult.getData().getClientType()));
+            }
+
             log.info("报价返回:{}", JSON.toJSONString(quoteResultsVo));
 
         } catch (Exception e) {

+ 3 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -8,6 +8,7 @@ import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.dto.InsOrdersParamVO;
 import com.jzg.commons.entity.enums.MessageCodeEnum;
 import com.jzg.commons.entity.finance.vo.BatchModifyVo;
+import com.jzg.commons.entity.finance.vo.UpdateCompanyBatchVo;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 
@@ -30,7 +31,6 @@ import com.jzg.commons.entity.quote.vo.orders.InsFeeCalculateRequest;
 import com.jzg.commons.entity.quote.vo.orders.InsFeeCalculateResponse;
 import com.jzg.quotation.summary.entity.vo.*;
 
-import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.List;
@@ -291,11 +291,11 @@ public interface InsOrdersService extends IService<InsOrders> {
     /**
      * 批量修改ins_orders和ins_order_adjust的保司信息
      *
-     * @param batchModifyVo 批量修改参数,包含orderNos和companyIds
+     * @param updateCompanyBatchVo 批量修改参数,包含orderNos和companyIds
      * @author lipf
      * @date 2026/8/5
      */
-    HttpResult<String> updateCompanyBatch(BatchModifyVo batchModifyVo);
+    HttpResult<String> updateCompanyBatch(UpdateCompanyBatchVo updateCompanyBatchVo);
 
     /**
      * 获取订单关联协议的税率

+ 3 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -899,6 +899,9 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }
         audit.setProblemReason(Objects.toString(problemReason,""));
         audit.setIsProblem(Integer.parseInt(status));
+        audit.setAuditUser(userName);
+        audit.setAuditTime(LocalDateTime.now());
+
         // 设置疑问订单的时间
         if ("1".equals(status)){
             audit.setProblemTime(LocalDateTime.now());

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1099 - 1074
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java


+ 43 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/FlowIdUtil.java

@@ -0,0 +1,43 @@
+package com.jzg.quotation.taikang.crawler;
+
+import java.util.concurrent.ThreadLocalRandom;
+
+/**
+ * 生成 carInsurFlowId 的工具类
+ * <p>
+ * 对应前端 Python 代码:
+ * <pre>
+ * headers['carInsurFlowId'] = 'carInsur' + str(int(time.time()*1000)) + str(random.randint(100000, 999999))
+ * </pre>
+ * 即:固定前缀 "carInsur" + 当前时间戳(毫秒) + 6 位随机数(100000~999999)
+ */
+public class FlowIdUtil {
+
+    /** 固定前缀,与前端保持一致 */
+    private static final String PREFIX = "carInsur";
+
+    /** 随机数最小值(含),对应 Python random.randint(100000, 999999) 的下界 */
+    private static final int RANDOM_MIN = 100000;
+
+    /** 随机数上界(不含),配合 nextInt(origin, bound) 实现含 100000、含 999999 */
+    private static final int RANDOM_MAX = 1000000;
+
+    /**
+     * 生成一个 carInsurFlowId
+     * <p>
+     * 格式:carInsur + 13 位毫秒时间戳 + 6 位随机数
+     * 示例:carInsur1780302178294459227
+     *
+     * @return 生成的 carInsurFlowId 字符串
+     */
+    public static String generateCarInsurFlowId() {
+        // 1. 当前时间戳(毫秒),等价于 Python 的 int(time.time() * 1000)
+        long timestamp = System.currentTimeMillis();
+        // 2. 生成 100000~999999 的随机数,等价于 Python 的 random.randint(100000, 999999)
+        //    ThreadLocalRandom.current().nextInt(origin, bound) 返回 [origin, bound) 范围内的随机数
+        //    所以 [100000, 1000000) 即 100000~999999
+        int randomNum = ThreadLocalRandom.current().nextInt(RANDOM_MIN, RANDOM_MAX);
+        // 3. 拼接:carInsur + 时间戳 + 随机数
+        return PREFIX + timestamp + randomNum;
+    }
+}

+ 6 - 4
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKHttpAPIService.java

@@ -6,6 +6,7 @@ import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.filter.CarModelsFilterUtils;
 import com.jzg.quotation.taikang.crawler.CodeUtil;
+import com.jzg.quotation.taikang.crawler.FlowIdUtil;
 import com.jzg.quotation.taikang.crawler.JsonUtil;
 import com.jzg.quotation.taikang.crawler.client.*;
 import com.jzg.quotation.taikang.crawler.model.TKLoginSession;
@@ -300,7 +301,7 @@ public class TKHttpAPIService {
 
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add("tkcarrequesttoken", token);
-        httpHeaders.add("carInsurFlowId", "carInsur1778568776607661015");
+        httpHeaders.add("carInsurFlowId", FlowIdUtil.generateCarInsurFlowId());
         httpHeaders.add("carInsurOrderId", orderId);
 
         StringResponse response = client.request(HttpURL.agentQuery, param, httpHeaders, StringResponse.class);
@@ -548,7 +549,7 @@ public class TKHttpAPIService {
     public SaveBasicInfoResult saveBasicInfo(String token, SaveBasicInfoParam param) {
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add("tkCarRequestToken", token);
-        httpHeaders.add("carinsurflowid", "carInsur1780310645869550725");
+        httpHeaders.add("carinsurflowid", FlowIdUtil.generateCarInsurFlowId());
         httpHeaders.add("carinsurorderid", param.getOrderID());
 
         SaveBasicInfoResult.Response response = client.request(HttpURL.saveBasicInfo, param, httpHeaders, SaveBasicInfoResult.Response.class);
@@ -590,7 +591,7 @@ public class TKHttpAPIService {
         param.setTplatLoginKey(tplatLoginKey);
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add("tkCarRequestToken", token);
-        httpHeaders.add("carinsurflowid", "carInsur1780302178294459227");
+        httpHeaders.add("carinsurflowid", FlowIdUtil.generateCarInsurFlowId());
         httpHeaders.add("carinsurorderid", orderId);
         StringResponse response = client.request(HttpURL.preciseInit, param, httpHeaders, StringResponse.class);
         checkResponseUnknownField(response);
@@ -612,6 +613,7 @@ public class TKHttpAPIService {
         param.setChgOwnerInfo(TKChgOwnerInfo);
 
         HttpHeaders httpHeaders = new HttpHeaders();
+        httpHeaders.add("carinsurflowid", FlowIdUtil.generateCarInsurFlowId());
         httpHeaders.add("tkCarRequestToken", token);
 
         PreciseInitResult.Response response = client.request(HttpURL.preciseInit, param, httpHeaders, PreciseInitResult.Response.class);
@@ -1193,7 +1195,7 @@ public class TKHttpAPIService {
 
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.add("tkCarRequestToken", token);
-        httpHeaders.add("carInsurFlowId", "carInsur1778568776607661015");
+        httpHeaders.add("carInsurFlowId", FlowIdUtil.generateCarInsurFlowId());
         httpHeaders.add("carInsurOrderId", orderId);
         Object response = client.request(HttpURL.carCheckUploadFileSubmit, param, httpHeaders, Object.class);
         log.info("上传影像提交完成,响应: {}", JSONObject.toJSONString(response));

+ 3 - 4
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -960,10 +960,6 @@ public class TKSimpleService {
                 TKFlag::new
         );
         flag.setVipWeekFlag("0");
-        // flag.setQuoteLinkageFlag("0"); //解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题,测试正常,不行完了放开
-        // flag.setInstantInsureBZAllowed("0");//解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题,测试正常,不行完了放开
-        // flag.setPriceDifferFlag("0");//解决选择三者险300万进行报价时,依然提示:规则管控提示$商业三者险保额请选择300万以上问题,测试正常,不行完了放开
-
         // 无商业险时设置商业险标志为"0"
         if (CollectionUtils.isEmpty(commonQuoteVo.getKindInfoVo())) {
             flag.setCiFlag("0");
@@ -979,6 +975,9 @@ public class TKSimpleService {
         other.setChannelCode("OffWeb");
         other.setMessageBZ("");
         other.setMessageCI("");
+        // 清空初始化阶段返回的规则管控提示(如JB-SX-05商业三者险保额提示),与Python代码self.data['other']['notice'] = ''一致
+        // 该提示属于警告信息,不应阻断报价流程;若不清空,保司接口会原样回传,导致buildQuoteFailResultsVo误判为报价失败
+        other.setNotice("");
         other.setPriceDifferFlag("0");
 
         // 获取时间参数对象(保司系统已初始化,无需创建)

+ 3 - 2
tenant/organization/src/main/java/com/jzg/organization/client/InsOrdersClient.java

@@ -2,6 +2,7 @@ package com.jzg.organization.client;
 
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.finance.vo.BatchModifyVo;
+import com.jzg.commons.entity.finance.vo.UpdateCompanyBatchVo;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.po.InsOrdersTrack;
@@ -77,11 +78,11 @@ public interface InsOrdersClient {
     /**
      * 根据订单号批量修改ins_orders和ins_order_adjust的保司信息
      *
-     * @param batchModifyVo 批量修改参数,包含orderNos和companyIds
+     * @param updateCompanyBatchVo 批量修改参数,包含orderNos和companyIds
      * @author jk
      * @date 2026/8/5
      */
     @PostMapping("/supplementOrder/updateCompanyBatch")
     @Operation(summary = "批量修改订单和批改表的保司信息")
-    HttpResult<String> updateCompanyBatch(@RequestBody BatchModifyVo batchModifyVo);
+    HttpResult<String> updateCompanyBatch(@RequestBody UpdateCompanyBatchVo updateCompanyBatchVo);
 }

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/controller/PtlAgreementCostController.java

@@ -120,8 +120,8 @@ public class PtlAgreementCostController {
     @PostMapping("copyCost")
     public HttpResult copyCost(@RequestBody PtlAgreementCostCopyParam costCopyParam){
         try{
-            List<String> newCostIds = ptlAgreementCostService.costCopy(costCopyParam);
-            return HttpResult.ok(newCostIds);
+             return ptlAgreementCostService.costCopy(costCopyParam);
+
         }catch (Exception e){
             return HttpResult.error("复制费用异常:"+e.getMessage());
         }

+ 69 - 15
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserAccountIncomeLogMapper.java

@@ -21,21 +21,75 @@ public interface SysUserAccountIncomeLogMapper extends BaseMapper<SysUserAccount
      * @date 2026/6/8 17:25
      */
     @Select("""
-        select
-            ioci.license_no ,
-            io.signing_time  as signTime,
-            saa.auditing_time as payTime,
-            a.*
-        from
-            sys_user_account_change_log a
-        left join ins_orders_car_info ioci on
-            a.related_order_id = ioci.order_no
-        left join ins_orders io
-            on a.related_order_id = io.id
-        left join sys_amount_auditing saa
-            on saa.id = a.related_amount_auditing_id
+        
+            select * from(
+        	SELECT
+        		a.system_code ,
+        		ioci.license_no,
+        		io.signing_time AS signTime,
+        		saa.auditing_time AS payTime,
+        		a.user_id,
+        		a.jzg_info_id,
+        		a.user_name,
+        		a.amount,
+        		a.amount_before,
+        		a.amount_after,
+        		a.oper_type,
+        		a.related_order_id,
+        		a.bank_card_id_to,
+        		a.bank_card_no_to,
+        		a.bank_card_id_in,
+        		a.bank_card_no_in,
+        		a.is_delete,
+        		a.create_time,
+        		a.remark,
+        		a.related_amount_auditing_id,
+        		a.status
+        	FROM
+        		sys_user_account_change_log a
+        	LEFT JOIN ins_orders_car_info ioci ON
+        		a.related_order_id = ioci.order_no
+        	LEFT JOIN ins_orders io ON
+        		a.related_order_id = io.id
+        	LEFT JOIN sys_amount_auditing saa
+        	ON
+        		saa.id = a.related_amount_auditing_id
+        		AND saa.system_code = 'G111'
+        union ALL
+        	select
+        		saa.system_code ,
+        		null as license_no,
+        		null as signTime,
+        		null as payTime,
+        		saa.user_id,
+        		null as zg_info_id,
+        		su.username as user_name,
+        		saa.amount,
+        		(saa.amount + saa.balance_amount) as amount_before,
+        		saa.balance_amount as amount_after,
+        		5 as oper_type,
+        		null as related_order_id,
+        		null as bank_card_id_to,
+        		null as bank_card_no_to,
+        		null as bank_card_id_in,
+        		null as bank_card_no_in,
+        		null as is_delete,
+        		saa.create_time,
+        		'提现中' as remark,
+        		null as related_amount_auditing_id,
+        		10 as status
+        	from
+        		sys_amount_auditing saa
+        	    left join sys_user su on saa.user_id = su.id
+        	where
+        		saa.auditing_status = 0
+        ) mm
         where
-            a.user_id = #{ywyUserId} and a.create_time >= #{beginDate} and a.create_time < #{endDate}  order by a.create_time desc
+        	mm.user_id =  #{ywyUserId}
+        	and mm.create_time >= #{beginDate} and mm.create_time < #{endDate} 
+        	AND mm.system_code = #{systemCode}
+        order by
+        	mm.create_time desc
         """)
-    List<SysUserAccountChangeLog> queryYwyIORecs(String ywyUserId, LocalDate beginDate, LocalDate endDate);
+    List<SysUserAccountChangeLog> queryYwyIORecs(String systemCode, String ywyUserId, LocalDate beginDate, LocalDate endDate);
 }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/PtlAgreementCostService.java

@@ -62,7 +62,7 @@ public interface PtlAgreementCostService extends IService<PtlAgreementCost> {
     /**
      * 复制费用
      */
-    List<String> costCopy(PtlAgreementCostCopyParam costCopyParam);
+    HttpResult costCopy(PtlAgreementCostCopyParam costCopyParam);
 
     /**
      * 批量修改协议费用有效期

+ 63 - 53
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java

@@ -393,66 +393,76 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
 
     @GlobalTransactional
     @Override
-    public List<String> costCopy(PtlAgreementCostCopyParam costCopyParam) {
+    public HttpResult costCopy(PtlAgreementCostCopyParam costCopyParam) {
         List<String> newCostId = new ArrayList<>();
         List<String> costIds = costCopyParam.getCostIds();
+        StringBuilder errMsg = new StringBuilder();
         costIds.forEach(oldCostId-> {
             PtlAgreementCost ptlAgreementCost = ptlAgreementCostMapper.selectById(oldCostId);
-            List<PtlAgreementCostType> ptlAgreementCostTypes = ptlAgreementCostTypeMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostType>()
-                    .eq(PtlAgreementCostType::getPtlAgreementCostId, ptlAgreementCost.getId()));
-            List<PtlAgreementCostRule> ptlAgreementCostRules = ptlAgreementCostRuleMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostRule>()
-                    .eq(PtlAgreementCostRule::getPtlAgreementCostId, ptlAgreementCost.getId()));
-
-            // 调整数据 进行copy
-            String costId = IdGenerate.nextId();
-            ptlAgreementCost.setId(costId);
-            ptlAgreementCost.setCoverRuleId(costCopyParam.getCoverRuleId());
-            ptlAgreementCost.setPtlAgreementId(costCopyParam.getAgreementId());
-            ptlAgreementCost.setCostDescribe("复制的费用:" + ptlAgreementCost.getCostDescribe());
-            ptlAgreementCost.setCreateTime(LocalDateTime.now());
-            ptlAgreementCost.setUpdateTime(LocalDateTime.now());
-            ptlAgreementCost.setProductId(costCopyParam.getProductId());
-            ptlAgreementCost.setProductName(costCopyParam.getProductName());
-            // 复制的费用为待审核
-            ptlAgreementCost.setApproved(0);
-
-
-            List<PtlAgreementCostType> newPtlAgreementCostTypes = ptlAgreementCostTypes.stream()
-                    .filter(item -> {
-                        String productId = costCopyParam.getProductId();
-                        // 单交剔除 CostType = 商业险
-                        if ("0330".equals(productId)) {
-                            return !"商业险".equals(item.getCostType());
-                        }
-                        // 单商剔除 CostType = 交强险
-                        if ("034001".equals(productId)) {
-                            return !"交强险".equals(item.getCostType());
-                        }
-                        // 单三剔除 CostType = 交强险
-                        if ("034002".equals(productId)) {
-                            return !"交强险".equals(item.getCostType());
-                        }
-                        return true;
-                    })
-                    .peek(item -> {
-                        // 给留存的元素赋值字段
-                        item.setId(IdGenerate.nextId());
-                        item.setPtlAgreementCostId(costId);
-                    })
-                    .collect(Collectors.toList());
-
-            ptlAgreementCostRules.forEach(item->{
-                item.setId(IdGenerate.nextId());
-                item.setPtlAgreementCostId(costId);
-            });
+            if(ptlAgreementCost != null){
+                List<PtlAgreementCostType> ptlAgreementCostTypes = ptlAgreementCostTypeMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostType>()
+                        .eq(PtlAgreementCostType::getPtlAgreementCostId, ptlAgreementCost.getId()));
+                List<PtlAgreementCostRule> ptlAgreementCostRules = ptlAgreementCostRuleMapper.selectList(new LambdaQueryWrapper<PtlAgreementCostRule>()
+                        .eq(PtlAgreementCostRule::getPtlAgreementCostId, ptlAgreementCost.getId()));
+
+                // 调整数据 进行copy
+                String costId = IdGenerate.nextId();
+                ptlAgreementCost.setId(costId);
+                ptlAgreementCost.setCoverRuleId(costCopyParam.getCoverRuleId());
+                ptlAgreementCost.setPtlAgreementId(costCopyParam.getAgreementId());
+                ptlAgreementCost.setCostDescribe("复制的费用:" + ptlAgreementCost.getCostDescribe());
+                ptlAgreementCost.setCreateTime(LocalDateTime.now());
+                ptlAgreementCost.setUpdateTime(LocalDateTime.now());
+                if(costCopyParam.getProductId() != null && !costCopyParam.getProductId().isEmpty()){
+                    ptlAgreementCost.setProductId(costCopyParam.getProductId());
+                }
+                if(costCopyParam.getProductName() != null && !costCopyParam.getProductName().isEmpty()){
+                    ptlAgreementCost.setProductName(costCopyParam.getProductName());
+                }
+
+                // 复制的费用为待审核
+                ptlAgreementCost.setApproved(0);
+                List<PtlAgreementCostType> newPtlAgreementCostTypes = ptlAgreementCostTypes.stream()
+                        .filter(item -> {
+                            String productId = costCopyParam.getProductId();
+                            // 单交剔除 CostType = 商业险
+                            if ("0330".equals(productId)) {
+                                return !"商业险".equals(item.getCostType());
+                            }
+                            // 单商剔除 CostType = 交强险
+                            if ("034001".equals(productId)) {
+                                return !"交强险".equals(item.getCostType());
+                            }
+                            // 单三剔除 CostType = 交强险
+                            if ("034002".equals(productId)) {
+                                return !"交强险".equals(item.getCostType());
+                            }
+                            return true;
+                        })
+                        .peek(item -> {
+                            // 给留存的元素赋值字段
+                            item.setId(IdGenerate.nextId());
+                            item.setPtlAgreementCostId(costId);
+                        })
+                        .collect(Collectors.toList());
+
+                ptlAgreementCostRules.forEach(item->{
+                    item.setId(IdGenerate.nextId());
+                    item.setPtlAgreementCostId(costId);
+                });
+
+                ptlAgreementCostMapper.insert(ptlAgreementCost);
+                ptlAgreementCostTypeMapper.insert(newPtlAgreementCostTypes);
+                ptlAgreementCostRuleMapper.insert(ptlAgreementCostRules);
+                newCostId.add(ptlAgreementCost.getId());
+
+            }else{
+                errMsg.append("costId为"+oldCostId+"的费用信息已被删除");
+            }
 
-            ptlAgreementCostMapper.insert(ptlAgreementCost);
-            ptlAgreementCostTypeMapper.insert(newPtlAgreementCostTypes);
-            ptlAgreementCostRuleMapper.insert(ptlAgreementCostRules);
-            newCostId.add(ptlAgreementCost.getId());
 
         });
-        return newCostId;
+        return HttpResult.ok(errMsg.toString(),newCostId);
     }
 
     @Override

+ 4 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -3995,13 +3995,15 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                     .set(InsPlyIncome::getPartnerCompanyId, newPartnerCompanyId)
                     .set(InsPlyIncome::getAgreementId, updateAgreementId)
                     .set(InsPlyIncome::getAgreementName, agreementVo.getAgreementName())
+                    .set(InsPlyIncome::getContactPerson, agreementVo.getDockingPerson())
+                    .set(InsPlyIncome::getContactPersonPhone, agreementVo.getDockingPhone())
                     .in(InsPlyIncome::getId, updateIncomeIds);
             baseMapper.update(null, incomeUpdateWrapper);
             log.info("修改ins_ply_income保司信息完成,未对账数据条数: {}", updateIncomeIds.size());
 
             // 2. 修改ins_orders和ins_order_adjust表(通过feignClient调用quotation-summary服务)
-            batchModifyVo.setCompanyIds(CollUtil.newArrayList(newCompanyId));
-            HttpResult<String> updateCompanyRes = insOrdersClient.updateCompanyBatch(batchModifyVo);
+            UpdateCompanyBatchVo updateCompanyBatchVo = UpdateCompanyBatchVo.builder().batchModifyVo(batchModifyVo).agreementVo(agreementVo).build();
+            HttpResult<String> updateCompanyRes = insOrdersClient.updateCompanyBatch(updateCompanyBatchVo);
             log.info("修改ins_orders和ins_order_adjust保司信息的结果:updateCompanyRes=[{}]", JSONUtil.toJsonStr(updateCompanyRes));
         }
 

+ 3 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysAmountAuditingServiceImpl.java

@@ -359,13 +359,16 @@ public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingM
      */
     private void saveChangeLog(SysAmountAuditing audit, AmountAuditRejectParam param, String systemCode) {
         log.info("提现申请不通过的时候,向changeLog表中插入一条状态为90的数据。audit=[{}],param=[{}]", JSONUtil.toJsonStr(audit), JSONUtil.toJsonStr(param));
+        String userName = baseController.getUserName();
         SysUserAccountChangeLog log = new SysUserAccountChangeLog();
         log.setRelatedAmountAuditingId(audit.getId());
         log.setStatus("90");
+        log.setAmountBefore(BigDecimalUtil.add(audit.getAmount(), audit.getBalanceAmount()));
         log.setAmount(BigDecimalUtil.negate(BigDecimalUtil.abs(audit.getAmount())));
         log.setRemark("提现驳回");
         log.setSystemCode(audit.getSystemCode());
         log.setUserId(audit.getUserId());
+        log.setUserName(userName);
         log.setOperType(4);
         log.setIsDelete(1);
         SysAmountAuditing sysAmountAuditing = baseMapper.selectById(param.getId());

+ 8 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountIncomeLogServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.account.po.SysUserAccountChangeLog;
 import com.jzg.commons.entity.dto.YwyIOParam;
@@ -11,6 +12,7 @@ import com.jzg.organization.mapper.*;
 import com.jzg.organization.service.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.time.LocalDate;
@@ -25,6 +27,10 @@ public class SysUserAccountIncomeLogServiceImpl extends ServiceImpl<SysUserAccou
 
     private static final Logger log = LoggerFactory.getLogger(SysUserAccountIncomeLogServiceImpl.class);
 
+    @Autowired
+    private BaseController baseController;
+
+
     /**
      * 查询业务员收支明细
      *
@@ -39,7 +45,8 @@ public class SysUserAccountIncomeLogServiceImpl extends ServiceImpl<SysUserAccou
         if(endDate != null){
             ywyIOParam.setEndDate(endDate.plusDays(1));
         }
-        List<SysUserAccountChangeLog> changeLogs =  baseMapper.queryYwyIORecs(ywyIOParam.getYwyUserId(), ywyIOParam.getBeginDate(), ywyIOParam.getEndDate());
+        String systemCode = baseController.getSystemCode();
+        List<SysUserAccountChangeLog> changeLogs =  baseMapper.queryYwyIORecs(systemCode, ywyIOParam.getYwyUserId(), ywyIOParam.getBeginDate(), ywyIOParam.getEndDate());
         log.info("查询业务员收支明细:ywyIOParam=[{}]。 查询出[{}]条记录", JSONUtil.toJsonStr(ywyIOParam), CollUtil.size(changeLogs));
         return changeLogs;
     }

+ 20 - 5
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -26,9 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.YearMonth;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.function.Function;
@@ -328,13 +326,30 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         for (Map.Entry<String, IncomeAndExpenseVo.IncomeAndExpense> entry : monthSummaryMap.entrySet()) {
             IncomeAndExpenseVo vo = new IncomeAndExpenseVo();
             vo.setIncomeAndExpense(entry.getValue());
+            String rangeKey = entry.getKey();
             // 筛选当前月份的明细记录
             List<IncomeAndExpenseVo.IncomeAndExpenseList> monthRecords = allRecords.stream()
                     .filter(record -> {
-                        if(StrUtil.isEmpty(entry.getKey())){
+                        // 空key,返回所有记录
+                        if (StrUtil.isEmpty(rangeKey)) {
                             return true;
                         }
-                        return entry.getKey().equals(record.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM")));
+                        // 将毫秒时间戳转为LocalDateTime
+                        LocalDateTime createDateTime = record.getCreateTime();
+                        String dayStr = createDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+
+                        // 拆分时间区间标识
+                        if (rangeKey.contains("到")) {
+                            String[] arr = rangeKey.split("到");
+                            String startDay = arr[0];
+                            if(arr.length == 1 || StrUtil.isEmpty(arr[1])){
+                                return dayStr.equals(startDay);
+                            }else{
+                                String endDay = arr[1];
+                                return dayStr.compareTo(startDay) >= 0 && dayStr.compareTo(endDay) <= 0;
+                            }
+                        }
+                        return true;
                     })
                     .filter(action->{
                         if(StrUtil.isNotEmpty(param.getStatus())){

+ 9 - 7
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoBankCardServiceImpl.java

@@ -29,10 +29,7 @@ import org.springframework.stereotype.Service;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -120,9 +117,14 @@ public class SysUserJzgInfoBankCardServiceImpl extends ServiceImpl<SysUserJzgInf
             List<SysUserJzgInfoBankCardRecord> sysUserJzgInfoBankCardRecordList = sysUserJzgInfoBankCardRecordMapper
                     .selectList(new LambdaQueryWrapper<SysUserJzgInfoBankCardRecord>()
                             .eq(SysUserJzgInfoBankCardRecord::getBankCardId, sysUserJzgInfoBankCardDto.getId()));
-            List<ChangeLogDetail> changeLogDetailList = sysUserJzgInfoBankCardRecordList.stream()
-                    .map(action -> new ChangeLogDetail(action.getDescription(), action.getCreateTime(), action.getStatus().equals("1"), action.getRemark(), action.getBankCardId(), action.getId()))
-                    .collect(Collectors.toList());
+            List<ChangeLogDetail> changeLogDetailList = new ArrayList<>();
+            int size = sysUserJzgInfoBankCardRecordList.size();
+            for (int i = 0; i < size; i++) {
+                SysUserJzgInfoBankCardRecord action = sysUserJzgInfoBankCardRecordList.get(i);
+                // 只有最后一条记录按实际状态设置,前面的记录默认展示为成功
+                boolean show = i < size - 1 || action.getStatus().equals("1");
+                changeLogDetailList.add(new ChangeLogDetail(action.getDescription(), action.getCreateTime(), show, action.getRemark(), action.getBankCardId(), action.getId()));
+            }
             sysUserJzgInfoBankCardDto.setSysUserJzgInfoBankCardRecordList(changeLogDetailList);
             // 填充最新的驳回日期和驳回原因
             if(CollUtil.isNotEmpty(sysUserJzgInfoBankCardRecordList)){

+ 1 - 1
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -212,7 +212,7 @@
         year(io.signing_time) as sign_year,
         ipi.id,
         io.id as 'orderNo',
-        io.company_name,
+        eic.name_simple as companyName,
         ipi.dept_name,
         ipi.agreement_name,
         ipi.agreement_id,

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio