Просмотр исходного кода

1.结算按照合作公司分组
2.保险已结算页面金额逻辑调整

wuhp 2 лет назад
Родитель
Сommit
abccf27194

+ 5 - 0
src/main/java/com/ydtech/modules/fnc/entity/InsPlyIncome.java

@@ -19,6 +19,7 @@ import lombok.Setter;
  * </p>
  *
  * @author gws
+ * @author gws
  * @since 2024-01-05
  */
 @Getter
@@ -371,6 +372,10 @@ public class InsPlyIncome implements Serializable {
     @TableField(exist = false)
     private BigDecimal invoicCommissionFeevalue;
 
+    @ApiModelProperty("总已开票")
+    @TableField(exist = false)
+    private BigDecimal allInvoicCommissionFeevalue;
+
     @ApiModelProperty("未开票金额")
     @TableField(exist = false)
     private BigDecimal noInvoicCommissionFeevalue;

+ 3 - 3
src/main/java/com/ydtech/modules/fnc/entity/SettlementDocumentaryFeesEntity.java

@@ -93,7 +93,7 @@ public class SettlementDocumentaryFeesEntity implements Serializable {
     @TableField("is_not_car")
     private String isNotCar;
 
-
-
-
+    @ApiModelProperty("合作公司id")
+    @TableField("partner_companies_id")
+    private String partnerCompaniesId;
 }

+ 25 - 24
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -1222,8 +1222,8 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         // 使用Map来存储agreementId到其id列表的映射
         Map<String, List<String>> idMap = new HashMap<>();
         for (InsPlyIncome idItem : idList) {
-            String agreementId = idItem.getAgreementId();
-            idMap.computeIfAbsent(agreementId, k -> new ArrayList<>()).add(idItem.getId());
+            String partnerCompaniesId = idItem.getPartnerCompaniesId();
+            idMap.computeIfAbsent(partnerCompaniesId, k -> new ArrayList<>()).add(idItem.getId());
         }
 
         for (InsPlyIncome resultItem : resultList) {
@@ -1323,26 +1323,26 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
 
 // 处理otherIds,填充companyId到ids的映射
         for (HashMap<String, Object> idMap : otherIds) {
-            String companyId = (String) idMap.get("companyId");
+            String partnerCompaniesId = (String) idMap.get("partnerCompaniesId");
             String id =  idMap.get("id").toString(); // 假设id是一个String,而不是List<String>
-            if (companyId != null && id != null) {
-                companyIdToIdsMap.computeIfAbsent(companyId, k -> new ArrayList<>()).add(id); // 将id添加到列表中
+            if (partnerCompaniesId != null && id != null) {
+                companyIdToIdsMap.computeIfAbsent(partnerCompaniesId, k -> new ArrayList<>()).add(id); // 将id添加到列表中
             }
         }
 
 // 处理invoicIds,填充companyId到setIncomeIds的映射(假设结构相同)
         for (HashMap<String, Object> idMap : invoicIds) {
-            String companyId = (String) idMap.get("companyId");
+            String partnerCompaniesId = (String) idMap.get("partnerCompaniesId");
             String setIncomeId =  idMap.get("id").toString(); // 假设这里也是单个id,键名可能不同,例如"setIncomeId"
-            if (companyId != null && setIncomeId != null) {
-                companyIdToSetIncomeIdsMap.computeIfAbsent(companyId, k -> new ArrayList<>()).add(setIncomeId);
+            if (partnerCompaniesId != null && setIncomeId != null) {
+                companyIdToSetIncomeIdsMap.computeIfAbsent(partnerCompaniesId, k -> new ArrayList<>()).add(setIncomeId);
             }
         }
         // 遍历result列表,为每个InsPlyIncome对象设置拼接后的ids和incomeIds
         for (InsPlyIncome resultItem : result) {
-            String companyId = resultItem.getCompanyId();
-            List<String> ids = companyIdToIdsMap.getOrDefault(companyId, Collections.emptyList());
-            List<String> setIncomeIds = companyIdToSetIncomeIdsMap.getOrDefault(companyId, Collections.emptyList());
+            String partnerCompaniesId = resultItem.getPartnerCompaniesId();
+            List<String> ids = companyIdToIdsMap.getOrDefault(partnerCompaniesId, Collections.emptyList());
+            List<String> setIncomeIds = companyIdToSetIncomeIdsMap.getOrDefault(partnerCompaniesId, Collections.emptyList());
 
             // 合并ids和setIncomeIds(如果需要,可以先去重),但在此处我们直接拼接
             String idsString = String.join(",", ids);
@@ -1359,18 +1359,18 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
     public HttpResult<Object> batchInvoic(InsPlyIncomeVo insPlyIncomeVo) {
         //  通过ids 查出跟单非结算单
         String ids = insPlyIncomeVo.getIds();
-        if(StringUtils.isNotEmpty(ids)){
-            String[] split = ids.split(",");
-            for (int i =0; i <split.length ; i++) {
-                String id = split[i];
-                InsPlyIncome insPlyIncome = baseMapper.selectById(id);
-                insPlyIncome.setInvoicId(insPlyIncomeVo.getContractId()); // 开票号
-                insPlyIncome.setContractFileId(insPlyIncomeVo.getContractFileId());
-                insPlyIncome.setVoucherNumber(insPlyIncomeVo.getVoucherNumber());
-                insPlyIncome.setSettlementTime(LocalDate.now());
-                baseMapper.updateById(insPlyIncome);
-            }
-        }
+//        if(StringUtils.isNotEmpty(ids)){
+//            String[] split = ids.split(",");
+//            for (int i =0; i <split.length ; i++) {
+//                String id = split[i];
+//                InsPlyIncome insPlyIncome = baseMapper.selectById(id);
+//                insPlyIncome.setInvoicId(insPlyIncomeVo.getContractId()); // 开票号
+//                insPlyIncome.setContractFileId(insPlyIncomeVo.getContractFileId());
+//                insPlyIncome.setVoucherNumber(insPlyIncomeVo.getVoucherNumber());
+//                insPlyIncome.setSettlementTime(LocalDate.now());
+//                baseMapper.updateById(insPlyIncome);
+//            }
+//        }
         SettlementDocumentaryFeesVo settlementDocumentaryFeesVo = new SettlementDocumentaryFeesVo();  // 生成跟单费结算表
         if(StringUtils.isNotEmpty(insPlyIncomeVo.getYear())){
             settlementDocumentaryFeesVo.setTimeFrame(insPlyIncomeVo.getYear());//年度
@@ -1385,6 +1385,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
             settlementDocumentaryFeesVo.setDay(insPlyIncomeVo.getDay());
         }
         settlementDocumentaryFeesVo.setCompanyId(insPlyIncomeVo.getCompanyId());// 保险公司id
+        settlementDocumentaryFeesVo.setPartnerCompaniesId(insPlyIncomeVo.getPartnerCompaniesId());
         settlementDocumentaryFeesVo.setTotalAmount(insPlyIncomeVo.getOtherFeevalue());  //其他费用金额
         settlementDocumentaryFeesVo.setUnsettledAmount(insPlyIncomeVo.getNoInvoicCommissionFeevalue().subtract(insPlyIncomeVo.getSettlementAmount())); //未结算
         settlementDocumentaryFeesVo.setSettlementAmount(insPlyIncomeVo.getSettlementAmount());//已经开票
@@ -1392,7 +1393,7 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         settlementDocumentaryFeesVo.setIds(insPlyIncomeVo.getIncomeIds());
         settlementDocumentaryFeesVo.setSettlementStatus("1");
         settlementDocumentaryFeesVo.setIsNotCar(insPlyIncomeVo.getIsNotCar());
-        settlementDocumentaryFeesVo.setInvoiceId(insPlyIncomeVo.getContractId());
+        settlementDocumentaryFeesVo.setInvoiceId(insPlyIncomeVo.getContractId());  //开票号
         return  settlementDocumentaryFeesService.inertSettle(settlementDocumentaryFeesVo);
     }
 

+ 3 - 0
src/main/java/com/ydtech/modules/fnc/vo/SettlementDocumentaryFeesVo.java

@@ -82,4 +82,7 @@ public class SettlementDocumentaryFeesVo implements Serializable {
 
     @ApiModelProperty("是否是非车")
     private String isNotCar;
+
+    @ApiModelProperty("合作公司id")
+    private String partnerCompaniesId;
 }

+ 30 - 18
src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml

@@ -724,14 +724,16 @@
 
     <select id="totalBxAmount" resultType="com.ydtech.modules.fnc.entity.InsPlyIncome">
         select
-        a.agreement_id AS "agreementId",
+        SUM(a.commission_feevalue) AS "commissionFeevalue",
+        a.partner_companies_id  AS  "partnerCompaniesId",
+        MAX(a.agreement_id) AS "agreementId",
         MAX(a.partner_companies_name) AS "partnerCompaniesName",
         MAX( a.company_name ) AS "companyName",
-        SUM(a.commission_feevalue) AS "commissionFeevalue",
         SUM(CASE WHEN a.handling_fees_status = '2' THEN a.commission_feevalue ELSE 0 END) AS "invoicCommissionFeevalue",
         SUM( CASE WHEN a.handling_fees_status = '0' THEN a.commission_feevalue ELSE 0 END ) AS "noInvoicCommissionFeevalue",
         SUM(CASE WHEN a.handling_fees_status = '1' THEN a.commission_feevalue ELSE 0 END) AS "readyCommissionFeevalue",
-        SUM(a.commission_feevalue - CASE WHEN a.handling_fees_status = '1' THEN a.commission_feevalue ELSE 0 END) as "unSettledAmount"
+        SUM( CASE WHEN ( a.handling_fees_status = '2' or   a.handling_fees_status = '1' ) THEN a.commission_feevalue ELSE 0 END ) AS "allInvoicCommissionFeevalue",
+        SUM( CASE WHEN ( a.handling_fees_status = '2' or   a.handling_fees_status = '0' ) THEN a.commission_feevalue ELSE 0 END ) AS "unSettledAmount"
         from  ins_ply_income a
         LEFT JOIN   ptl_agreement  pa  on pa.id= a.agreement_id
         <where>
@@ -758,12 +760,12 @@
                 AND day(a.signdate) =#{day}
             </if>
         </where>
-        GROUP BY  a.agreement_id
+        GROUP BY  a.partner_companies_id
     </select>
 
     <select id="getIncomeIdList" resultType="com.ydtech.modules.fnc.entity.InsPlyIncome">
         select
-            a.agreement_id AS "agreementId",
+            a.partner_companies_id AS "partnerCompaniesId",
             a.id  as "id"
         from  ins_ply_income a
         LEFT JOIN   ptl_agreement  pa  on pa.id= a.agreement_id
@@ -795,33 +797,42 @@
 
     <select id="allOtherAmount" resultType="com.ydtech.modules.fnc.entity.InsPlyIncome">
         SELECT
-        a.company_id AS "companyId",
+        a.partner_companies_id AS "partnerCompaniesId",
         MAX( a.company_name ) AS "companyName",
         MAX( a.partner_companies_name ) AS "partnerCompaniesName",
-        IFNULL ( max(c.settleMentAmount),0.00) as  "invoicCommissionFeevalue",
+        IFNULL ( max(c.settleMentAmount),0.00) as  "allInvoicCommissionFeevalue",
+        IFNULL(max(f.settleMentAmount) , 0.00)  as  "readyCommissionFeevalue",
+        IFNULL ( max(d.settleMentAmount),0.00) as "invoicCommissionFeevalue",
         sum(COALESCE( a.other_feevalue,0.00) )-COALESCE(max(c.settleMentAmount),0.00)  as "noInvoicCommissionFeevalue",
-        IFNULL(max(f.settleMentAmount) , 0.00)  as  "settleMentAmount",
-        MAX(COALESCE(c.settleMentAmount, 0.00) - COALESCE(f.settleMentAmount, 0)) AS "unSettledAmount",
+        sum(COALESCE( a.other_feevalue,0.00) )-COALESCE(max(c.settleMentAmount),0.00)+IFNULL ( max(d.settleMentAmount),0.00)  AS "unSettledAmount",
         sum( a.other_feevalue ) AS "otherFeevalue"
         FROM
         ins_ply_income a
         LEFT JOIN ptl_agreement pa ON a.agreement_id = pa.id
-        LEFT JOIN ( SELECT a.company_id AS "companyId", MIN( a.unsettled_amount ) AS "unsettledAmount" ,sum(
-        settlement_amount ) AS "settleMentAmount", GROUP_CONCAT(a.id) as "invoicIds" FROM settlement_documentary_fees a
+        LEFT JOIN ( SELECT a.partner_companies_id AS "partnerCompaniesId" ,sum(
+        settlement_amount ) AS "settleMentAmount" FROM settlement_documentary_fees a
         WHERE ( a.settlement_status = '1' or a.settlement_status = '2')
         <if test="isNotCar !=null  and  isNotCar  !=''">
             and a.is_not_car =#{isNotCar}
         </if>
-        GROUP BY company_id
-        ) c ON c.companyId = a.company_id
-        LEFT JOIN ( SELECT a.company_id AS "companyId", MIN( a.unsettled_amount ) AS "unSettledAmount",sum(
+        GROUP BY partner_companies_id
+        ) c ON c.partnerCompaniesId = a.partner_companies_id
+        LEFT JOIN ( SELECT a.partner_companies_id AS "partnerCompaniesId" ,sum(
+        settlement_amount ) AS "settleMentAmount" FROM settlement_documentary_fees a
+        WHERE ( a.settlement_status = '1')
+        <if test="isNotCar !=null  and  isNotCar  !=''">
+            and a.is_not_car =#{isNotCar}
+        </if>
+        GROUP BY partner_companies_id
+        ) d ON d.partnerCompaniesId = a.partner_companies_id
+        LEFT JOIN ( SELECT a.partner_companies_id AS "partnerCompaniesId",sum(
         settlement_amount ) AS "settleMentAmount" FROM settlement_documentary_fees a
         WHERE a.settlement_status = '2'
         <if test="isNotCar !=null  and  isNotCar  !=''">
             and a.is_not_car =#{isNotCar}
         </if>
-        GROUP BY company_id
-        ) f ON f.companyId = a.company_id
+        GROUP BY partner_companies_id
+        ) f ON f.partnerCompaniesId = a.partner_companies_id
        <where>
            1=1
            <if test="agreementType !=null  and agreementType!='' ">
@@ -847,12 +858,13 @@
            </if>
        </where>
         GROUP BY
-            a.company_id
+            a.partner_companies_id
     </select>
+
     <select id="getOtherIds" resultType="java.util.HashMap">
         SELECT
         a.id  as "id",
-        a.company_id AS "companyId"
+        a.partner_companies_id AS "partnerCompaniesId"
         FROM
         ins_ply_income a
         LEFT JOIN ptl_agreement pa ON a.agreement_id = pa.id

+ 3 - 1
src/main/resources/mapper/modules/fnc/SettlementDocumentaryFeesMapper.xml

@@ -20,6 +20,7 @@
         <result column="agree_ment_id" property="agreeMentId"/>
         <result column="invoice_id" property="invoiceId"/>
         <result column="is_not_car" property="isNotCar"/>
+        <result column="partner_companies_id" property="partnerCompaniesId"/>
     </resultMap>
 
 
@@ -35,6 +36,7 @@
             a.end_time as "endTime",
             a.settlement_amount as "settlementAmount",
             a.agree_ment_id as "agreeMentId",
+            a.partner_companies_id as "partnerCompaniesId",
             a.unsettled_amount as "unsettledAmount"
             from  settlement_documentary_fees  a
     </select>
@@ -80,7 +82,7 @@
     <select id="getInvoicIds" resultType="java.util.HashMap">
         SELECT
             a.id  as "id",
-            a.company_id    AS "companyId"
+            a.partner_companies_id    AS "partnerCompaniesId"
         FROM settlement_documentary_fees a
         <where>
             a.settlement_status = '1'