Ver código fonte

修改bug:
平台应收,车险结算明细金额不对

jiakai 3 meses atrás
pai
commit
f932af01a4

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -628,6 +628,13 @@ public class ReceivableController {
         return HttpResult.ok(receivableService.superviseSettlementDetailExcel(page,settlementQueryVo));
     }
 
+    @PostMapping("followSettlementDetailExcel")
+    @Operation(summary = "跟单手续费结算明细")
+    public HttpResult followSettlementDetailExcel(@RequestBody SettlementQueryVo settlementQueryVo) {
+        Page page = settlementQueryVo.getPage();
+        return HttpResult.ok(receivableService.followSettlementDetailExcel(page,settlementQueryVo));
+    }
+
     @PostMapping("exportSuperviseSettlementDetailExcel")
     @Operation(summary = "导出应收手续费结算明细excel文件")
     public void exportSuperviseSettlementDetailExcel(@RequestBody SettlementQueryVo settlementQueryVo) throws IOException {

+ 14 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -106,6 +106,13 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
      */
     Page<ExportSuperviseSettlementExcelDto> followSettlementExcelDtos(Page page,@Param("settlementQueryVo") SettlementQueryVo settlementQueryVo);
 
+    /**
+     * 获取平台结算记录列表
+     * @param settlementQueryVo
+     * @return
+     */
+    Page<InvoiceRecordResult> followSettlementDetailExcel(Page page,@Param("settlementQueryVo") SettlementQueryVo settlementQueryVo);
+
     /**
      * 获取应收结算记录明细列表
      * @param settlementQueryVo
@@ -113,6 +120,13 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
      */
     Page<ExportSuperviseSettlementDetailExcelDto> getSuperviseSettlementDetailExcelDtos(Page page,@Param("settlementQueryVo") SettlementQueryVo settlementQueryVo);
 
+    /**
+     * 获取应收结算记录明细列表
+     * @param settlementQueryVo
+     * @return
+     */
+    Page<ExportSuperviseSettlementDetailExcelDto> getPlatFormSettlementDetailExcelDtos(Page page,@Param("settlementQueryVo") SettlementQueryVo settlementQueryVo);
+
     /**
      * 获取应收结算记录明细列表(非车)
      * @param settlementQueryVo

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -253,6 +253,11 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * 应收手续费结算明细
      */
     Page<ExportSuperviseSettlementDetailExcelDto> superviseSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo);
+
+    /**
+     * 应收手续费结算明细
+     */
+    Page<InvoiceRecordResult> followSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo);
     /**
      * 导出应收手续费结算明细excel(车险)
      */

+ 26 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -3543,7 +3543,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     public Page<ExportSuperviseSettlementDetailExcelDto> superviseSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) {
         log.info("superviseSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         settlementQueryVo.setSystemCode(baseController.getSystemCode());
-        Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
+        Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = null;
+        if (settlementQueryVo.getInvoiceTypes().contains("5") && settlementQueryVo.getInvoiceTypes().contains("6")) {
+            exportSuperviseSettlementDetailExcelDtos = baseMapper.getPlatFormSettlementDetailExcelDtos(page, settlementQueryVo);
+        }else{
+            exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
+        }
         exportSuperviseSettlementDetailExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
                 dto.setInvoiceParty("我方开票");
@@ -3559,6 +3564,26 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return exportSuperviseSettlementDetailExcelDtos;
     }
 
+    @Override
+    public Page<InvoiceRecordResult> followSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) {
+        log.info("followSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
+        settlementQueryVo.setSystemCode(baseController.getSystemCode());
+        Page<InvoiceRecordResult> invoiceRecordResultPage = baseMapper.followSettlementDetailExcel(page, settlementQueryVo);
+        invoiceRecordResultPage.getRecords().forEach(dto -> {
+            if (dto.getInvoiceParty().equals("1")) {
+                dto.setInvoiceParty("我方开票");
+            } else if (dto.getInvoiceParty().equals("2")) {
+                dto.setInvoiceParty("保司开票");
+            }
+            if (dto.getStatus().equals("1")) {
+                dto.setStatus("已结算");
+            } else if (dto.getStatus().equals("0")) {
+                dto.setStatus("未结算");
+            }
+        });
+        return invoiceRecordResultPage;
+    }
+
     /**
      * 导出应收手续费结算记录明细
      *

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

@@ -787,6 +787,91 @@
         order by ipiis.create_time desc
     </select>
 
+
+
+    <select id="followSettlementDetailExcel" resultType="com.jzg.commons.entity.finance.vo.InvoiceRecordResult">
+        SELECT
+        ipii.id,
+        ipii.company_id,
+        ipii.invoice_no,
+        ipii.invoice_type,
+        ipii.invoice_risk_type,
+        CASE
+        WHEN ipii.invoice_party = '1' THEN
+        '我方开票' ELSE '保司开票'
+        END as invoice_party,
+        ipii.overinflated_amount,
+        ipii.receivable_supervise_premium,
+        ipii.tax_point,
+        ipii.create_time,
+        ipii.create_by,
+        ipii.update_time,
+        ipii.update_by,
+        eic.name as company_name,
+        eic.name_simple as companyNameSimple,
+        sum( ipiis.actual_received_amount ) AS actual_received_amount,
+        ipii.status,
+        ipii.payment_reason,
+        GROUP_CONCAT(DISTINCT iffo.year SEPARATOR ',') AS year,
+        GROUP_CONCAT(DISTINCT iffo.month SEPARATOR ',') AS month,
+        iffo.partner_company_id,
+        ( select cp.name from  esm_ins_company cp  where cp.id = iffo.partner_company_id) as partner_company_name
+        FROM
+        ins_ply_income_invoice ipii
+        LEFT JOIN ins_ply_follow_invoice_link ipfii ON ipii.id = ipfii.invoice_id  AND ipfii.is_delete = 0
+        LEFT JOIN ins_fee_follow_order iffo ON iffo.id = ipfii.follow_id  AND iffo.is_delete = 0
+        LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id AND ipiis.is_delete = 0
+        LEFT JOIN esm_ins_company eic on eic.id = ipii.company_id AND eic.is_delete = 0
+        <where>
+            ipii.is_delete = 0
+            AND ipii.system_code = #{settlementQueryVo.systemCode}
+            <if test="settlementQueryVo.invoicePerson != null and settlementQueryVo.invoicePerson != ''">
+                AND ipiis.create_by like concat('%',#{settlementQueryVo.invoicePerson},'%')
+            </if>
+            <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
+                AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
+            </if>
+            <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
+                AND ipii.id = #{settlementQueryVo.invoiceId}
+            </if>
+            <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
+                AND ipii.company_id = #{settlementQueryVo.companyId}
+            </if>
+            <!-- 这里重复了invoiceParty判断,可以删掉重复的if标签 -->
+            <if test="settlementQueryVo.status != null and settlementQueryVo.status != ''">
+                AND ipii.status = #{settlementQueryVo.status}
+            </if>
+            <if test="settlementQueryVo.partnerCompanyId != null and settlementQueryVo.partnerCompanyId != ''">
+                AND iffo.partner_company_id = #{settlementQueryVo.partnerCompanyId}
+            </if>
+            <!-- 严重逻辑错误:时间字段对比了金额字段 -->
+            <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != '' and settlementQueryVo.settlementTimeEnd != null and settlementQueryVo.settlementTimeEnd != '' ">
+                AND ipiis.create_time between #{settlementQueryVo.settlementTimeStart} and #{settlementQueryVo.settlementTimeEnd}
+            </if>
+            <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
+                AND ipii.invoice_type IN
+                <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
+                    #{invoiceType}
+                </foreach>
+            </if>
+        </where>
+        <if test="settlementQueryVo.settlementStatus != null and settlementQueryVo.settlementStatus != ''">
+            HAVING CASE
+            WHEN ipii.receivable_supervise_premium = SUM(ipiis.actual_received_amount) THEN '1'
+            ELSE '0'
+            END = #{settlementQueryVo.settlementStatus}
+        </if>
+        GROUP BY
+        ipii.id,
+        ipii.receivable_supervise_premium,
+        ipii.invoice_type,
+        ipii.company_id,
+        ipii.invoice_party,
+        iffo.partner_company_id
+        ORDER BY ipii.create_time DESC
+    </select>
+
+
     <select id="getSuperviseSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailExcelDto">
         select ipi.contact_person, ipi.contact_person_phone,
         ipiis.id as settlementId,
@@ -858,6 +943,78 @@
             </if>
         </where>
     </select>
+    <select id="getPlatFormSettlementDetailExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailExcelDto">
+        select ipi.contact_person, ipi.contact_person_phone,
+        ipiis.id as settlementId,
+        ipiis.invoice_id as invoiceId,
+        io.company_name as companyName,
+        io.signing_time as signingTime,
+        ipii.status as status,
+        ipi.license_no as licenseNo,
+        io.product_name as productName,
+        ipii.invoice_type as invoiceType,
+        ipii.invoice_party as invoiceParty,
+        ipii.tax_point as taxPoint,
+        COALESCE(ipi.jq_supervise_costs_premiums, 0) + COALESCE(ipi.sy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jq_other_costs_premiums, 0) + COALESCE(ipi.sy_other_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0) AS receivableSuperviseCosts,
+        ipi.jq_premium as jqPremium,
+        ipi.jq_supervise_costs_proportion as jqSuperviseCostsProportion,
+        ipi.jq_policy_no as jqPolicyNo,
+        ipi.sy_premium as syPremium,
+        ipi.sy_supervise_costs_proportion as sySuperviseCostsProportion,
+        ipi.sy_policy_no as syPolicyNo,
+        ipi.jy_premium as jyPremium,
+        ipi.jy_supervise_costs_proportion as jySuperviseCostsProportion,
+        ipi.jy_policy_no as jyPolicyNo,
+        ipi.tax_premium as taxPremium,
+        ipii.create_by as invoicePerson,
+        ipii.create_time as invoiceTime,
+        ipiis.create_by as settlementPerson,
+        ipiis.create_time as settlementTime
+        FROM
+        ins_ply_income_invoice ipii
+        LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id AND ipiis.is_delete = 0
+        LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id AND ipil.is_delete = 0
+        LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id AND ipi.is_delete = 0
+        LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
+        <where>
+            ipii.is_delete = 0
+            AND ipii.system_code = #{settlementQueryVo.systemCode}
+            <if test="settlementQueryVo.settlementId != null and settlementQueryVo.settlementId != ''">
+                AND ipiis.id = #{settlementQueryVo.settlementId}
+            </if>
+            <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
+                AND ipiis.id IN
+                <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">
+                    #{settlementId}
+                </foreach>
+            </if>
+            <if test="settlementQueryVo.invoiceTypes != null and settlementQueryVo.invoiceTypes != ''">
+                AND ipii.invoice_type IN
+                <foreach collection="settlementQueryVo.invoiceTypes" item="invoiceType" open="(" separator="," close=")">
+                    #{invoiceType}
+                </foreach>
+            </if>
+            <if test="settlementQueryVo.invoiceId != null and settlementQueryVo.invoiceId != ''">
+                AND ipiis.invoice_id = #{settlementQueryVo.invoiceId}
+            </if>
+            <if test="settlementQueryVo.companyId != null and settlementQueryVo.companyId != ''">
+                AND ipi.company_id = #{settlementQueryVo.companyId}
+            </if>
+            <if test="settlementQueryVo.invoiceParty != null and settlementQueryVo.invoiceParty != ''">
+                AND ipii.invoice_party = #{settlementQueryVo.invoiceParty}
+            </if>
+            <if test="settlementQueryVo.settlementPerson != null and settlementQueryVo.settlementPerson != ''">
+                AND ipiis.create_by = #{settlementQueryVo.settlementPerson}
+            </if>
+            <if test="settlementQueryVo.settlementTimeStart != null and settlementQueryVo.settlementTimeStart != ''">
+                AND ipiis.create_time between #{settlementQueryVo.signingTimeStart} and #{settlementQueryVo.signingTimeEnd}
+            </if>
+            <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
+                AND ipi.agreement_type = #{settlementQueryVo.agreementType}
+            </if>
+        </where>
+    </select>
+
 
     <select id="getSuperviseSettlementDetailJyExcelDtos" resultType="com.jzg.commons.entity.finance.dto.ExportSuperviseSettlementDetailJyExcelDto">
         select