785834757 1 год назад
Родитель
Сommit
b3d9e9b0a0

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncomeInvoice.java

@@ -11,6 +11,9 @@ import java.math.BigDecimal;
 public class InsPlyIncomeInvoice extends BaseModel {
     private String id;
 
+    @Schema(description = "保司id")
+    private String companyId;
+
     @Schema(description = "开票类型")
     private String invoiceType;
 

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncomeInvoiceSettlement.java

@@ -1,12 +1,14 @@
 package com.jzg.commons.entity.finance.po;
 
 import cn.hutool.core.date.DateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.jzg.commons.core.base.BaseModel;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @Data
 @Schema(description = "财务应收开票结算表")
@@ -22,6 +24,10 @@ public class InsPlyIncomeInvoiceSettlement extends BaseModel {
     @Schema(description = "收款日期")
     private DateTime receivePaymentDate;
 
+    @TableField(exist = false)
+    @Schema(description = "凭证")
+    private List<String> voucherList;
+
     public InsPlyIncomeInvoiceSettlement(){
 
     }

+ 53 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordQueryVo.java

@@ -0,0 +1,53 @@
+package com.jzg.commons.entity.finance.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import lombok.Data;
+
+/**
+ * 开票记录查询vo
+ */
+@Data
+public class InvoiceRecordQueryVo extends PageRequest {
+
+    /**
+     * 记录编号
+     */
+    private String recordId;
+
+    /**
+     * 保险公司
+     */
+    private String companyId;
+
+    /**
+     * 开票类型
+     */
+    private String invoiceType;
+
+    /**
+     * 开票方
+     */
+    private String invoiceParty;
+
+    /**
+     * 应收项
+     */
+    private String accountsReceivable;
+
+    /**
+     * 结算状态
+     */
+    private String settlementStatus;
+
+    /**
+     * 开票人
+     */
+    private String invoicePerson;
+
+    /**
+     * 开票日期
+     */
+    private String invoiceDate;
+
+
+}

+ 63 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceRecordResult.java

@@ -0,0 +1,63 @@
+package com.jzg.commons.entity.finance.vo;
+
+import com.jzg.commons.core.base.PageRequest;
+import lombok.Data;
+
+@Data
+public class InvoiceRecordResult extends PageRequest {
+
+    /**
+     * 开票记录编号
+     */
+    private String id;
+
+    /**
+     * 保险公司
+     */
+    private String companyId;
+
+    /**
+     * 开票方
+     */
+    private String invoiceParty;
+
+    /**
+     * 虚增金额
+     */
+    private String overinflatedAmount;
+
+    /**
+     * 应收项
+     */
+    private String accountsReceivable;
+
+    /**
+     * 应收费用
+     */
+    private String receivableSupervisePremium;
+
+    /**
+     * 开票金额
+     */
+    private String actualReceivedAmount;
+
+    /**
+     * 税点
+     */
+    private String taxPoint;
+
+    /**
+     * 结算状态
+     */
+    private String settlementStatus;
+
+    /**
+     * 开票人
+     */
+    private String createBy;
+
+    /**
+     * 开票日期
+     */
+    private String createTime;
+}

+ 13 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InvoiceingResult.java

@@ -0,0 +1,13 @@
+package com.jzg.commons.entity.finance.vo;
+
+import lombok.Data;
+
+@Data
+public class InvoiceingResult {
+
+    // 开票id
+    String invoiceId;
+
+    // 开票总金额
+    String sumPrice;
+}

+ 17 - 1
commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableQueryVo.java

@@ -1,8 +1,11 @@
 package com.jzg.commons.entity.finance.vo;
 
+import com.jzg.commons.core.base.PageRequest;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.util.List;
+
 
 /**
  * @author tz
@@ -11,7 +14,17 @@ import lombok.Data;
  */
 
 @Data
-public class ReceivableQueryVo {
+public class ReceivableQueryVo extends PageRequest {
+
+    @Schema(description = "选中类型")
+    // 1 全部数据选中  2 选中部分数据
+    private String selectedType;
+
+    @Schema(description = "选中id")
+    private List<String> selectedIds;
+
+    @Schema(description = "协议类型")
+    private String agreementType;
 
     @Schema(description = "查询类型")
     private String queryType;
@@ -19,6 +32,9 @@ public class ReceivableQueryVo {
     @Schema(description = "车牌号")
     private String licenseNo;
 
+    @Schema(description = "险种信息")
+    private String productId;
+
     @Schema(description = "保险公司")
     private String companyId;
 

+ 68 - 37
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -4,11 +4,9 @@ import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
 import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement;
-import com.jzg.commons.entity.finance.vo.ImportExcelResultVo;
-import com.jzg.commons.entity.finance.vo.InvoicingVo;
-import com.jzg.commons.entity.finance.vo.ReceivableQueryVo;
-import com.jzg.commons.entity.finance.vo.SettlementVo;
+import com.jzg.commons.entity.finance.vo.*;
 import com.jzg.commons.request.RequestSingleParam;
+import com.jzg.commons.util.AssertionUtils;
 import com.jzg.organization.service.ReceivableService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -16,7 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author jzg
@@ -34,55 +34,70 @@ public class ReceivableController {
     private ReceivableService receivableService;
 
     // 拉取已审核订单
-    @PostMapping("pullAuditedOrder")
-    @Operation(summary = "拉取已审核订单")
-    public HttpResult pullAuditedOrder(String orderNo){
-        InsPlyIncome auditedOrder  = receivableService.getAuditedOrder(orderNo, InsOrderStatusEnum.UNDERWRITED.getCode(),"1");
-        boolean result = receivableService.saveAuditedOrder(auditedOrder);
-        return result ? HttpResult.ok("拉取成功") : HttpResult.error("拉取失败");
-    }
+//    @PostMapping("pullAuditedOrder")
+//    @Operation(summary = "拉取已审核订单")
+//    public HttpResult pullAuditedOrder(@RequestSingleParam("orderNo") String orderNo){
+//        InsPlyIncome auditedOrder  = receivableService.getAuditedOrder(orderNo, InsOrderStatusEnum.UNDERWRITED.getCode(),"1");
+//        boolean result = receivableService.saveAuditedOrder(auditedOrder);
+//        return result ? HttpResult.ok("拉取成功") : HttpResult.error("拉取失败");
+//    }
 
     @PostMapping("getUnauditedOrder")
     @Operation(summary = "获取未审核的订单")
-    public HttpResult getUnauditedOrder(String orderNo){
-        InsPlyIncome auditedOrder  = receivableService.getAuditedOrder(orderNo, InsOrderStatusEnum.UNDERWRITED.getCode(),"0");
+    public HttpResult getUnauditedOrder(@RequestBody ReceivableQueryVo receivableQueryVo){
+        if (receivableQueryVo.getAgreementType().equals(""))
+        {
+            receivableQueryVo.setAgreementType("1");
+        }
+        InsPlyIncome auditedOrder  = receivableService.getUnauditedOrder(receivableQueryVo);
+        AssertionUtils.isEmpty(auditedOrder,"订单不存在");
+//        boolean result = receivableService.saveAuditedOrder(auditedOrder);
+        List<InsPlyIncome> result = new ArrayList<>();
+        result.add(auditedOrder);
+        return HttpResult.ok(result);
+    }
+
+    @PostMapping("addReceivable")
+    @Operation(summary = "添加应收记录")
+    public HttpResult addReceivable(@RequestSingleParam("orderNo") List<String> orderNo){
+        List<InsPlyIncome> auditedOrder  = receivableService.getUnauditOrderList(orderNo, InsOrderStatusEnum.UNDERWRITED.getCode(),"0");
+        AssertionUtils.isEmpty(auditedOrder,"订单不存在");
         boolean result = receivableService.saveAuditedOrder(auditedOrder);
-        return result ? HttpResult.ok("拉取成功") : HttpResult.error("拉取失败");
+        return result ? HttpResult.ok("添加成功") : HttpResult.error("添加失败");
     }
 
     @PostMapping("getCommissionReceivableList")
     @Operation(summary = "获取私有协议手续费列表")
     public HttpResult getCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("1");
-        return HttpResult.ok(receivableService.getReceivableList(receivableQueryVo));
+        return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
     }
 
     @PostMapping("getOtherReceivableList")
     @Operation(summary = "获取私有协议跟单费列表")
     public HttpResult getOtherReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("2");
-        return HttpResult.ok(receivableService.getReceivableList(receivableQueryVo));
+        return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
     }
 
     @PostMapping("getJyCommissionReceivableList")
     @Operation(summary = "获取私有协议驾意险手续费列表")
     public HttpResult getJyCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("3");
-        return HttpResult.ok(receivableService.getReceivableList(receivableQueryVo));
+        return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
     }
 
     @PostMapping("getJyOtherReceivableList")
     @Operation(summary = "获取私有协议驾意险跟单费列表")
     public HttpResult getJyOtherReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("4");
-        return HttpResult.ok(receivableService.getReceivableList(receivableQueryVo));
+        return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
     }
 
-
-    @PostMapping("getPlatformReceivableList")
-    @Operation(summary = "获取平台协议驾意险列表")
-    public void getPlatformReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
-
+    @PostMapping("getSelectedReceivableList")
+    @Operation(summary = "获取选中应收列表")
+    public HttpResult getSelectedReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
+        return HttpResult.ok(receivableService.getReceivableList(receivableQueryVo));
     }
 
     @PostMapping("commissionInvoicing")
@@ -90,14 +105,15 @@ public class ReceivableController {
     public HttpResult commissionInvoicing(@RequestBody InvoicingVo invoicingVo){
         // 设置手续费开票
         invoicingVo.setInvoiceType("1");
-        boolean invoicingCheck = receivableService.invoicingCheck(invoicingVo);
-        if(!invoicingCheck){
-            return HttpResult.error("有订单占用");
+//        boolean invoicingCheck = receivableService.invoicingCheck(invoicingVo);
+//        if(!invoicingCheck){
+//            return HttpResult.error("有订单占用");
+//        }
+        InvoiceingResult result = receivableService.addInvoicing(invoicingVo);
+        if (Objects.nonNull(result)){
+            return HttpResult.ok("开票成功",result);
         }
-        boolean result = receivableService.addInvoicing(invoicingVo);
-
-        return result ? HttpResult.ok("开票成功") : HttpResult.error("开票失败");
-
+        return HttpResult.error("开票失败");
     }
 
     @PostMapping("otherInvoicing")
@@ -109,8 +125,11 @@ public class ReceivableController {
         if(!invoicingCheck){
             return HttpResult.error("有订单占用");
         }
-
-        return HttpResult.ok();
+        InvoiceingResult result = receivableService.addInvoicing(invoicingVo);
+        if (Objects.nonNull(result)){
+            return HttpResult.ok("开票成功",result);
+        }
+        return HttpResult.error("开票失败");
     }
 
     @PostMapping("invoicingCheck")
@@ -162,11 +181,23 @@ public class ReceivableController {
         ImportExcelResultVo importExcelResultVo = receivableService.importJyData(file);
         return HttpResult.ok(importExcelResultVo);
     }
+    
+    @PostMapping("/getPlatFormReceivableList")
+    @Operation(summary = "获取平台协议列表")
+    public HttpResult getPlatFormReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
+        receivableQueryVo.setQueryType("1");
+        return HttpResult.ok(receivableService.getPlatFormReceivableList(receivableQueryVo));
+    }
 
-//    @PostMapping("batchModify")
-//    @Operation(summary = "批量修改")
-//    public HttpResult batchModify(@RequestBody List<SettlementVo> settlementVoList){
-//        return receivableService.batchModify(settlementVoList) ? HttpResult.ok("批量修改成功") : HttpResult.error("批量修改失败");
-//    }
+    @PostMapping("/invoiceRecord")
+    @Operation(summary = "获取开票记录")
+    public HttpResult getInvoiceRecord(@RequestBody InvoiceRecordQueryVo invoiceRecordQueryVo){
+        return HttpResult.ok(receivableService.getInvoiceRecordList(invoiceRecordQueryVo));
+    }
 
+    @PostMapping("/getInvoiceRecordDetail")
+    @Operation(summary = "获取开票记录详情")
+    public HttpResult getInvoiceRecordDetail(@RequestSingleParam("id") String id){
+        return HttpResult.ok(receivableService.getInvoiceRecordDetail(id));
+    }
 }

+ 22 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -1,7 +1,10 @@
 package com.jzg.organization.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
+import com.jzg.commons.entity.finance.vo.InvoiceRecordQueryVo;
+import com.jzg.commons.entity.finance.vo.InvoiceRecordResult;
 import com.jzg.commons.entity.finance.vo.InvoicingVo;
 import com.jzg.commons.entity.finance.vo.ReceivableQueryVo;
 import com.jzg.commons.entity.po.EsmInsCompany;
@@ -18,7 +21,13 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
      * @param orderNo
      * @return
      */
-    InsPlyIncome getAuditedOrder(String orderNo, String orderStatus, String auditStatus);
+    InsPlyIncome getAuditedOrder(String orderNo, String orderStatus, String auditStatus, String agreementType);
+
+
+    /**
+     * 获取为审核的订单列表
+     */
+    List<InsPlyIncome> getUnauditedOrderList(List<String> orderNo, String orderStatus, String auditStatus);
 
     /**
      * 获取应收订单的保司
@@ -30,7 +39,19 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
      * @param receivableQueryVo
      * @return
      */
+    Page<InsPlyIncome> getReceivablePage(Page page,@Param("receivableQueryVo") ReceivableQueryVo receivableQueryVo);
+
     List<InsPlyIncome> getReceivableList(@Param("receivableQueryVo") ReceivableQueryVo receivableQueryVo);
 
     Integer invoicingCheck(@Param("invoicingVo") InvoicingVo invoicingVo);
+
+    /**
+     * 获取应收的总金额
+     */
+    String getJqSumReceivable(@Param("orderNos") List<String> orderNos);
+
+    /**
+     * 获取开票记录
+     */
+    Page<InvoiceRecordResult> getInvoiceRecordList(Page page, @Param("invoiceRecordQueryVo") InvoiceRecordQueryVo invoiceRecordQueryVo);
 }

+ 33 - 3
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -1,5 +1,6 @@
 package com.jzg.organization.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
 import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement;
@@ -18,12 +19,23 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @param orderNo
      * @return
      */
-    InsPlyIncome getAuditedOrder(String orderNo, String orderStatus, String auditStatus);
+//    InsPlyIncome getAuditedOrder(String orderNo, String orderStatus, String auditStatus);
+
+    /**
+     * 获取未审核的订单列表
+     */
+    List<InsPlyIncome> getUnauditOrderList(List<String> orderNo,String orderStatus,String auditStatus);
+
+    /**
+     * 获取为审核的订单
+     * @return
+     */
+    InsPlyIncome getUnauditedOrder(ReceivableQueryVo receivableQueryVo);
 
     /**
      * 添加已审核订单的数据 应收表插入
      */
-    boolean saveAuditedOrder(InsPlyIncome order);
+    boolean saveAuditedOrder(List<InsPlyIncome> orders);
 
     /**
      * 获取应收订单的保司
@@ -37,6 +49,9 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @param receivableQueryVo
      * @return
      */
+    Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo);
+
+
     List<InsPlyIncome> getReceivableList(ReceivableQueryVo receivableQueryVo);
 
     /**
@@ -56,7 +71,7 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     /**
      * 添加开票
      */
-    boolean addInvoicing(InvoicingVo invoicingVo);
+    InvoiceingResult addInvoicing(InvoicingVo invoicingVo);
 
     /**
      * 获取票据的实收金额
@@ -137,4 +152,19 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      * @return
      */
     BigDecimal calcReceivableAmount(BigDecimal premium,BigDecimal ratio);
+
+    /**
+     * 获取平台结算列表
+     */
+    Page<InsPlyIncome> getPlatFormReceivableList(ReceivableQueryVo receivableQueryVo);
+
+    /**
+     * 获取开票记录列表
+     */
+    Page<InvoiceRecordResult> getInvoiceRecordList(InvoiceRecordQueryVo invoiceRecordQueryVo);
+
+    /**
+     * 获取开票记录详情
+     */
+    List<InsPlyIncomeInvoiceSettlement> getInvoiceRecordDetail(String id);
 }

+ 75 - 16
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.base.BaseController;
@@ -38,8 +39,6 @@ import java.time.format.DateTimeParseException;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
-
-
 /**
  * @author tz
  * @description 财务应收模块Service实现
@@ -80,22 +79,40 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     // 驾意险跟单费结算所
     private static final String JY_INVOICING_OTHER_LOCK = "JY_INVOICING_OTHER_LOCK:";
 
+
+//    @Override
+//    public InsPlyIncome getAuditedOrder(String orderNo, String orderStatus, String auditStatus) {
+//        return baseMapper.getAuditedOrder(orderNo, orderStatus, auditStatus);
+//    }
+
     @Override
-    public InsPlyIncome getAuditedOrder(String orderNo, String orderStatus, String auditStatus) {
-        return baseMapper.getAuditedOrder(orderNo, orderStatus, auditStatus);
+    public List<InsPlyIncome> getUnauditOrderList(List<String> orderNo, String orderStatus, String auditStatus) {
+        return baseMapper.getUnauditedOrderList(orderNo, orderStatus, auditStatus);
     }
 
     @Override
-    public boolean saveAuditedOrder(InsPlyIncome order) {
-        // 查看当前表是否已经存在了已审核订单数据
-        Long count = baseMapper.selectCount(new LambdaQueryWrapper<InsPlyIncome>().eq(InsPlyIncome::getOrderNo, order.getOrderNo()));
-        // 订单已经录入成功了
-        if (count > 0){
-            return false;
+    public InsPlyIncome getUnauditedOrder(ReceivableQueryVo receivableQueryVo){
+        InsPlyIncome auditedOrder = baseMapper.getAuditedOrder(receivableQueryVo.getOrderNo(), receivableQueryVo.getQueryType(), InsOrderStatusEnum.UNDERWRITED.getCode(),receivableQueryVo.getAgreementType());
+        if (receivableQueryVo.getQueryType().equals("3") || receivableQueryVo.getQueryType().equals("4")){
+            if(Objects.isNull(auditedOrder.getJyPolicyNo()) && auditedOrder.getJyPolicyNo().equals("")){
+                return null;
+            }
         }
+        return baseMapper.getAuditedOrder(receivableQueryVo.getOrderNo(), InsOrderStatusEnum.UNDERWRITED.getCode(), "0",receivableQueryVo.getAgreementType());
+    }
 
-        order.setId(IdGenerate.nextId());
-        return save(order);
+    @Override
+    public boolean saveAuditedOrder(List<InsPlyIncome> orders) {
+        // 查看当前表是否已经存在了已审核订单数据
+//        Long count = baseMapper.selectCount(new LambdaQueryWrapper<InsPlyIncome>().eq(InsPlyIncome::getOrderNo, order.getOrderNo()));
+//        // 订单已经录入成功了
+//        if (count > 0){
+//            return false;
+//        }
+        orders.forEach(item->{
+            item.setId(IdGenerate.nextId());
+        });
+        return saveBatch(orders);
     }
 
     @Override
@@ -103,6 +120,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return baseMapper.getReceivableCompany(invoicingVo);
     }
 
+    @Override
+    public Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo) {
+        return baseMapper.getReceivablePage(receivableQueryVo.getPage(),receivableQueryVo);
+    }
+
     @Override
     public List<InsPlyIncome> getReceivableList(ReceivableQueryVo receivableQueryVo) {
         return baseMapper.getReceivableList(receivableQueryVo);
@@ -153,7 +175,14 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         String invoiceType = invoicingVo.getInvoiceType();
         // 私有手续费 应收金额
         if(invoiceType.equals("1")){
-
+            List<String> incomeIds = invoicingVo.getIncomeIds();
+            incomeIds = incomeIds.stream()
+                    .filter(s -> s != null && !s.trim().isEmpty())
+                    .map(String::trim)
+                    .distinct() // 可选,去重
+                    .collect(Collectors.toList());
+            String jqSumReceivable = baseMapper.getJqSumReceivable(incomeIds);
+            return new BigDecimal(jqSumReceivable);
         }else if(invoiceType.equals("2")){
 
         }else if(invoiceType.equals("3")){
@@ -171,10 +200,14 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
      */
     @Override
     @Transactional
-    public boolean addInvoicing(InvoicingVo invoicingVo) {
+    public InvoiceingResult addInvoicing(InvoicingVo invoicingVo) {
         try {
+            invoicingVo.setReceivablePremium(this.getReceivableAmount(invoicingVo));
+
+            InvoiceingResult result = new InvoiceingResult();
             InsPlyIncomeInvoice invoice = new InsPlyIncomeInvoice();
             invoice.setId(IdGenerate.nextId());
+            invoice.setCompanyId(invoicingVo.getCompanyId());
             invoice.setInvoiceType(invoicingVo.getInvoiceType());
             invoice.setInvoiceParty(invoicingVo.getInvoiceParty());
             invoice.setOverinflatedAmount(invoicingVo.getOverinflatedAmount());
@@ -192,11 +225,13 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 invoicingLinkList.add(link);
             });
             insPlyIncomeInvoiceLinkMapper.insert(invoicingLinkList);
-            return insert > 0;
+            result.setInvoiceId(invoice.getId());
+            result.setSumPrice(invoicingVo.getReceivablePremium().toString());
+            return result;
         }catch (Exception e){
             // 回滚事务
             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return false;
+            return null;
         }
     }
 
@@ -697,5 +732,29 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     public BigDecimal calcReceivableAmount(BigDecimal premium,BigDecimal ratio) {
         return premium.multiply(ratio);
     }
+
+    @Override
+    public Page<InsPlyIncome> getPlatFormReceivableList(ReceivableQueryVo receivableQueryVo) {
+
+        Page page = baseMapper.selectPage(receivableQueryVo.getPage(),new LambdaQueryWrapper<InsPlyIncome>()
+                .eq(InsPlyIncome::getAgreementType,receivableQueryVo.getQueryType())
+                .eq(InsPlyIncome::getSuperviseSettlement,0)
+                .eq(InsPlyIncome::getOtherSettlement,0)
+                .eq(InsPlyIncome::getJySuperviseSettlement,0)
+                .eq(InsPlyIncome::getJyOtherSettlement,0));
+        
+        return page;
+    }
+
+    @Override
+    public Page<InvoiceRecordResult> getInvoiceRecordList(InvoiceRecordQueryVo invoiceRecordQueryVo) {
+        return baseMapper.getInvoiceRecordList(invoiceRecordQueryVo.getPage(),invoiceRecordQueryVo);
+    }
+
+    @Override
+    public List<InsPlyIncomeInvoiceSettlement> getInvoiceRecordDetail(String id) {
+        List<InsPlyIncomeInvoiceSettlement> insPlyIncomeInvoiceSettlements = insPlyIncomeInvoiceSettlementMapper.selectList(new LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement>().eq(InsPlyIncomeInvoiceSettlement::getInvoiceId, id));
+        return  insPlyIncomeInvoiceSettlements;
+    }
 }
 

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

@@ -63,11 +63,141 @@
             io.id = #{orderNo}
         AND
             io.order_status = #{orderStatus}
+        <if test="auditStatus != null and auditStatus != ''">
+            AND
+                ifa.audit_status = #{auditStatus}
+        </if>
+        <if test="agreementType != null and agreementType != ''">
+            AND
+                pa.agreement_type = #{agreementType}
+        </if>
+    </select>
+
+    <select id="getUnauditedOrder" resultMap="InsPlyIncomeResultMap">
+        SELECT
+        iop.order_no,
+        ioci.license_no,
+        io.company_id,
+        iop.jq_policy_no,
+        iop.sy_policy_no,
+        iop.jy_policy_no,
+        ioc.jq_premium,
+        ioc.sy_premium,
+        ioc.jy_premium,
+        ioc.tax_premium,
+        sd.id AS dept_id,
+        sd.NAME AS dept_name,
+        ifo.jq_commission_ratio as jq_supervise_costs_proportion,
+        ifo.sy_commission_ratio as sy_supervise_costs_proportion,
+        ifo.jy_commission_ratio as jy_supervise_costs_proportion,
+        ifo.jq_commission_premium as jq_supervise_costs_premiums,
+        ifo.sy_commission_premium as sy_supervise_costs_premiums,
+        ifo.jy_commission_premium as jy_supervise_costs_premiums,
+        ifo.jq_follow_ratio as jq_other_costs_proportion,
+        ifo.sy_follow_ratio as sy_other_costs_proportion,
+        ifo.jy_follow_ratio as jy_other_costs_proportion,
+        ifo.jq_follow_premium as jq_other_costs_premiums,
+        ifo.sy_follow_premium as sy_other_costs_premiums,
+        ifo.jy_follow_premium as jy_other_costs_premiums,
+        ifo.jq_receivable_premium,
+        ifo.sy_receivable_premium,
+        ifo.jy_receivable_premium,
+        eic.name_simple,
+        pa.id AS agreement_id,
+        pa.agreement_name,
+        pa.agreement_type,
+        io.product_id,
+        io.product_name,
+        io.pay_time,
+        io.signing_time,
+        ifa.audit_status
+        FROM
+        ins_orders io
+        LEFT JOIN ins_orders_policy iop ON io.id = iop.order_no
+        LEFT JOIN ins_orders_car_info ioci ON io.id = ioci.order_no
+        LEFT JOIN ins_orders_costs ioc ON io.id = ioc.order_no
+        LEFT JOIN ins_fee_orders ifo ON io.id = ifo.order_no
+        LEFT JOIN esm_ins_company eic ON io.company_id = eic.id
+        LEFT JOIN sys_user su ON su.mobile = io.real_quote_user_id
+        LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id
+        LEFT JOIN sys_dept sd ON suji.dept_id = sd.id
+        LEFT JOIN ptl_agreement pa ON io.agreement_id = pa.id
+        LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id
+        WHERE
+        io.id = #{orderNo}
         AND
+        io.order_status = #{orderStatus}
+        <if test="auditStatus != null and auditStatus != ''">
+            AND
             ifa.audit_status = #{auditStatus}
+        </if>
     </select>
 
-    <select id="getReceivableList" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
+
+    <select id="getUnauditedOrderList" resultMap="InsPlyIncomeResultMap">
+        SELECT
+        iop.order_no,
+        ioci.license_no,
+        io.company_id,
+        iop.jq_policy_no,
+        iop.sy_policy_no,
+        iop.jy_policy_no,
+        ioc.jq_premium,
+        ioc.sy_premium,
+        ioc.jy_premium,
+        ioc.tax_premium,
+        sd.id AS dept_id,
+        sd.NAME AS dept_name,
+        ifo.jq_commission_ratio as jq_supervise_costs_proportion,
+        ifo.sy_commission_ratio as sy_supervise_costs_proportion,
+        ifo.jy_commission_ratio as jy_supervise_costs_proportion,
+        ifo.jq_commission_premium as jq_supervise_costs_premiums,
+        ifo.sy_commission_premium as sy_supervise_costs_premiums,
+        ifo.jy_commission_premium as jy_supervise_costs_premiums,
+        ifo.jq_follow_ratio as jq_other_costs_proportion,
+        ifo.sy_follow_ratio as sy_other_costs_proportion,
+        ifo.jy_follow_ratio as jy_other_costs_proportion,
+        ifo.jq_follow_premium as jq_other_costs_premiums,
+        ifo.sy_follow_premium as sy_other_costs_premiums,
+        ifo.jy_follow_premium as jy_other_costs_premiums,
+        ifo.jq_receivable_premium,
+        ifo.sy_receivable_premium,
+        ifo.jy_receivable_premium,
+        eic.name_simple,
+        pa.id AS agreement_id,
+        pa.agreement_name,
+        pa.agreement_type,
+        io.product_id,
+        io.product_name,
+        io.pay_time,
+        io.signing_time,
+        ifa.audit_status
+        FROM
+        ins_orders io
+        LEFT JOIN ins_orders_policy iop ON io.id = iop.order_no
+        LEFT JOIN ins_orders_car_info ioci ON io.id = ioci.order_no
+        LEFT JOIN ins_orders_costs ioc ON io.id = ioc.order_no
+        LEFT JOIN ins_fee_orders ifo ON io.id = ifo.order_no
+        LEFT JOIN esm_ins_company eic ON io.company_id = eic.id
+        LEFT JOIN sys_user su ON su.mobile = io.real_quote_user_id
+        LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id
+        LEFT JOIN sys_dept sd ON suji.dept_id = sd.id
+        LEFT JOIN ptl_agreement pa ON io.agreement_id = pa.id
+        LEFT JOIN ins_fee_audit ifa on ifa.order_no = io.id
+        WHERE
+        io.id in
+        <foreach collection="orderNo" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+        AND
+        io.order_status = #{orderStatus}
+        <if test="auditStatus != null and auditStatus != ''">
+            AND
+            ifa.audit_status = #{auditStatus}
+        </if>
+    </select>
+
+    <select id="getReceivablePage" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
         SELECT
             *
         FROM
@@ -107,6 +237,49 @@
         </if>
 
 
+    </select>
+
+
+    <select id="getReceivableList" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
+        SELECT
+        *
+        FROM
+        ins_ply_income ipi
+        WHERE
+        1=1
+        AND NOT EXISTS ( SELECT 1 FROM ins_ply_income_invoice_link ipil WHERE ipil.income_id = ipi.id )
+        <if test="receivableQueryVo.queryType != null and receivableQueryVo.queryType == 1">
+            AND ipi.supervise_settlement = 0
+        </if>
+        <if test="receivableQueryVo.queryType!= null and receivableQueryVo.queryType == 2">
+            AND ipi.other_settlement = 1
+        </if>
+        <if test="receivableQueryVo.queryType!= null and (receivableQueryVo.queryType == 3 or receivableQueryVo.queryType == 4)">
+            AND ipi.jy_premium != 0
+        </if>
+        <if test="receivableQueryVo.licenseNo != null and receivableQueryVo.licenseNo != ''">
+            AND ipi.license_no LIKE CONCAT('%', #{receivableQueryVo.licenseNo}, '%')
+        </if>
+        <if test="receivableQueryVo.companyId != null and receivableQueryVo.companyId != ''">
+            AND ipi.company_id = #{receivableQueryVo.companyId}
+        </if>
+        <if test="receivableQueryVo.orderNo != null and receivableQueryVo.orderNo != ''">
+            AND ipi.order_no = #{receivableQueryVo.orderNo}
+        </if>
+        <if test="receivableQueryVo.agreementId != null and receivableQueryVo.agreementId != ''">
+            AND ipi.agreement_id = #{receivableQueryVo.agreementId}
+        </if>
+        <if test="receivableQueryVo.deptId != null and receivableQueryVo.deptId != ''">
+            AND ipi.dept_id = #{receivableQueryVo.deptId}
+        </if>
+        <if test="receivableQueryVo.productId!= null and receivableQueryVo.productId!= ''">
+            AND ipi.product_id = #{receivableQueryVo.productId}
+        </if>
+        <if test="receivableQueryVo.signingTimeStart != null and receivableQueryVo.signingTimeStart != ''">
+            AND ipi.signing_time between #{receivableQueryVo.signingTimeStart} and  #{receivableQueryVo.signingTimeEnd}
+        </if>
+
+
     </select>
 
     <select id="getReceivableCompany" resultType="com.jzg.commons.entity.po.EsmInsCompany">
@@ -140,4 +313,55 @@
             </foreach>
     </select>
 
+    <select id="getJqSumReceivable" resultType="String">
+        SELECT
+            sum( jq_commission_premium ) AS receivable_premium
+        FROM
+            ins_fee_orders
+        WHERE
+            order_no IN
+        <foreach collection="orderNos" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
+
+    <select id="getInvoiceRecordList" resultType="com.jzg.commons.entity.finance.vo.InvoiceRecordResult">
+        SELECT
+            ipii.*,
+            sum( ipiis.actual_received_amount ) AS actual_received_amount,
+            CASE
+                WHEN ipii.receivable_supervise_premium = SUM( ipiis.actual_received_amount ) THEN
+                    '已结清' ELSE '未结清'
+                END AS settlement_status
+        FROM
+            ins_ply_income_invoice ipii
+                LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipii.id = ipiis.invoice_id
+        WHERE
+            1=1
+        <if test="invoiceRecordQueryVo.invoiceType != null and invoiceRecordQueryVo.invoiceType != ''">
+            AND ipii.invoice_type = #{invoiceRecordQueryVo.invoiceType}
+        </if>
+        <if test="invoiceRecordQueryVo.recordId != null and invoiceRecordQueryVo.recordId != ''">
+            AND ipii.id = #{invoiceRecordQueryVo.recordId}
+        </if>
+        <if test="invoiceRecordQueryVo.companyId != null and invoiceRecordQueryVo.companyId != ''">
+            AND ipii.company_id = #{invoiceRecordQueryVo.companyId}
+        </if>
+        <if test="invoiceRecordQueryVo.invoiceParty != null and invoiceRecordQueryVo.invoiceParty != ''">
+            AND ipii.invoice_party = #{invoiceRecordQueryVo.invoiceParty}
+        </if>
+        <if test="invoiceRecordQueryVo.settlementStatus != null and invoiceRecordQueryVo.settlementStatus != ''">
+            HAVING CASE
+            WHEN ipii.receivable_supervise_premium = SUM(ipiis.actual_received_amount) THEN '1'
+            ELSE '0'
+            END = #{invoiceRecordQueryVo.settlementStatus}
+        </if>
+        GROUP BY
+            ipii.id,
+            ipii.receivable_supervise_premium,
+            ipii.invoice_type,
+            ipii.company_id,
+            ipii.invoice_party;
+    </select>
+
 </mapper>