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

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

wks 2 лет назад
Родитель
Сommit
4b43937c30
59 измененных файлов с 1965 добавлено и 333 удалено
  1. 18 0
      src/main/java/com/ydtech/modules/fnc/dao/FncInsAreaCompanyMapper.java
  2. 18 0
      src/main/java/com/ydtech/modules/fnc/dao/FncInsCommissionMapper.java
  3. 18 0
      src/main/java/com/ydtech/modules/fnc/dao/FncInsCompanyfeeMapper.java
  4. 236 0
      src/main/java/com/ydtech/modules/fnc/entity/InsAreaCompany.java
  5. 104 0
      src/main/java/com/ydtech/modules/fnc/entity/InsCommission.java
  6. 136 0
      src/main/java/com/ydtech/modules/fnc/entity/InsCompanyfee.java
  7. 4 0
      src/main/java/com/ydtech/modules/fnc/entity/InsPlyIncome.java
  8. 22 18
      src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java
  9. 20 4
      src/main/java/com/ydtech/modules/ins/controller/InsFeeDetailController.java
  10. 36 11
      src/main/java/com/ydtech/modules/ins/controller/InsPayApplyController.java
  11. 7 1
      src/main/java/com/ydtech/modules/ins/dao/impl/InsCommissionDaoImpl.java
  12. 7 1
      src/main/java/com/ydtech/modules/ins/dao/impl/InsCompanyFeeDaoImpl.java
  13. 8 1
      src/main/java/com/ydtech/modules/ins/dao/impl/InsDeptFeeDaoImpl.java
  14. 3 1
      src/main/java/com/ydtech/modules/ins/model/InsCommission.java
  15. 1 0
      src/main/java/com/ydtech/modules/ins/model/InsCompanyFee.java
  16. 1 1
      src/main/java/com/ydtech/modules/ins/model/InsDeptFee.java
  17. 8 0
      src/main/java/com/ydtech/modules/inv/controller/InvAccountController.java
  18. 36 1
      src/main/java/com/ydtech/modules/inv/controller/InvAccountIncoiceController.java
  19. 27 0
      src/main/java/com/ydtech/modules/inv/controller/InvAccountOperateController.java
  20. 21 0
      src/main/java/com/ydtech/modules/inv/controller/invAccountExcelController.java
  21. 69 0
      src/main/java/com/ydtech/modules/inv/controller/invAccountProfitController.java
  22. 1 0
      src/main/java/com/ydtech/modules/inv/dao/InvAccountMapper.java
  23. 36 0
      src/main/java/com/ydtech/modules/inv/dao/InvAccountOpMapper.java
  24. 5 0
      src/main/java/com/ydtech/modules/inv/dao/InvAccountOperateMapper.java
  25. 11 0
      src/main/java/com/ydtech/modules/inv/dao/invAccountProfitMapper.java
  26. 1 1
      src/main/java/com/ydtech/modules/inv/model/InvAccount.java
  27. 0 41
      src/main/java/com/ydtech/modules/inv/model/InvAccountCard.java
  28. 21 7
      src/main/java/com/ydtech/modules/inv/model/InvAccountExcel.java
  29. 29 8
      src/main/java/com/ydtech/modules/inv/model/InvAccountIncoice.java
  30. 36 0
      src/main/java/com/ydtech/modules/inv/model/InvAccountOp.java
  31. 55 1
      src/main/java/com/ydtech/modules/inv/model/InvAccountOperate.java
  32. 29 0
      src/main/java/com/ydtech/modules/inv/model/InvAccountProfit.java
  33. 37 0
      src/main/java/com/ydtech/modules/inv/model/excel/AccountExcel.java
  34. 52 0
      src/main/java/com/ydtech/modules/inv/model/po/InvSource.java
  35. 3 0
      src/main/java/com/ydtech/modules/inv/model/vo/InvAccountIncoiceQueryVo.java
  36. 15 0
      src/main/java/com/ydtech/modules/inv/service/InvAccountOpService.java
  37. 3 1
      src/main/java/com/ydtech/modules/inv/service/InvAccountOperateService.java
  38. 11 0
      src/main/java/com/ydtech/modules/inv/service/InvAccountProfitService.java
  39. 1 0
      src/main/java/com/ydtech/modules/inv/service/InvAccountService.java
  40. 0 19
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountCardServiceImpl.java
  41. 62 7
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountExcelServiceImpl.java
  42. 164 33
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountIncoiceServiceImpl.java
  43. 19 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOpServiceImpl.java
  44. 75 21
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOperateServiceImpl.java
  45. 54 9
      src/main/java/com/ydtech/modules/inv/service/impl/InvAccountServiceImpl.java
  46. 16 2
      src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java
  47. 18 0
      src/main/java/com/ydtech/modules/inv/service/impl/invAccountProfitServiceImpl.java
  48. 64 2
      src/main/java/com/ydtech/modules/inv/utils/EasyExcelUtils.java
  49. 59 74
      src/main/java/com/ydtech/modules/inv/utils/TransferUtils.java
  50. 11 3
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  51. 3 0
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  52. 61 0
      src/main/resources/mapper/modules/fnc/InsAreaCompanyMapper.xml
  53. 28 0
      src/main/resources/mapper/modules/fnc/InsCommissionMapper.xml
  54. 37 0
      src/main/resources/mapper/modules/fnc/InsCompanyfeeMapper.xml
  55. 32 30
      src/main/resources/mapper/modules/inv/InvAccountExcelMapper.xml
  56. 9 1
      src/main/resources/mapper/modules/inv/InvAccountIncoiceMapper.xml
  57. 3 17
      src/main/resources/mapper/modules/inv/InvAccountMapper.xml
  58. 34 0
      src/main/resources/mapper/modules/inv/InvAccountOpDao.xml
  59. 70 17
      src/main/resources/mapper/modules/inv/InvAccountOperateMapper.xml

+ 18 - 0
src/main/java/com/ydtech/modules/fnc/dao/FncInsAreaCompanyMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.fnc.dao;
+
+import com.ydtech.modules.fnc.entity.InsAreaCompany;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 报价渠道 Mapper 接口
+ * </p>
+ *
+ * @author gws
+ * @since 2024-01-29
+ */
+@Mapper
+public interface FncInsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/fnc/dao/FncInsCommissionMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.fnc.dao;
+
+import com.ydtech.modules.fnc.entity.InsCommission;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 分销费用 Mapper 接口
+ * </p>
+ *
+ * @author gws
+ * @since 2024-01-30
+ */
+@Mapper
+public interface FncInsCommissionMapper extends BaseMapper<InsCommission> {
+
+}

+ 18 - 0
src/main/java/com/ydtech/modules/fnc/dao/FncInsCompanyfeeMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.fnc.dao;
+
+import com.ydtech.modules.fnc.entity.InsCompanyfee;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 保司结算手续费、个代结算手续费 Mapper 接口
+ * </p>
+ *
+ * @author gws
+ * @since 2024-01-30
+ */
+@Mapper
+public interface FncInsCompanyfeeMapper extends BaseMapper<InsCompanyfee> {
+
+}

+ 236 - 0
src/main/java/com/ydtech/modules/fnc/entity/InsAreaCompany.java

@@ -0,0 +1,236 @@
+package com.ydtech.modules.fnc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 报价渠道
+ * </p>
+ *
+ * @author gws
+ * @since 2024-01-29
+ */
+@Getter
+@Setter
+@TableName("ins_area_company")
+@ApiModel(value = "InsAreaCompany对象", description = "报价渠道")
+public class InsAreaCompany implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键")
+    @TableId("id")
+    private String id;
+
+    @ApiModelProperty("订单号")
+    @TableField("orderno")
+    private String orderno;
+
+    @ApiModelProperty("协议id")
+    @TableField("agreement_id")
+    private Long agreementId;
+
+    @ApiModelProperty("请求类型")
+    @TableField("api_type")
+    private Byte apiType;
+
+    @ApiModelProperty("订单状态")
+    @TableField("orderstatus")
+    private String orderstatus;
+
+    @ApiModelProperty("保险公司编号")
+    @TableField("company_id")
+    private String companyId;
+
+    @ApiModelProperty("保险名称")
+    @TableField("inscompany")
+    private String inscompany;
+
+    @ApiModelProperty("请求报文")
+    @TableField("reqtxt")
+    private String reqtxt;
+
+    @ApiModelProperty("响应报文")
+    @TableField("reptxt")
+    private String reptxt;
+
+    @ApiModelProperty("交强投保单号")
+    @TableField("jqapplyno")
+    private String jqapplyno;
+
+    @ApiModelProperty("交强保单号")
+    @TableField("jqpolicyno")
+    private String jqpolicyno;
+
+    @ApiModelProperty("商业投保单号")
+    @TableField("syapplyno")
+    private String syapplyno;
+
+    @ApiModelProperty("商业保单号")
+    @TableField("sypolicyno")
+    private String sypolicyno;
+
+    @ApiModelProperty("交叉销售保单信息")
+    @TableField("cross_insurance")
+    private String crossInsurance;
+
+    @ApiModelProperty("交强险信息")
+    @TableField("riskinfo")
+    private String riskinfo;
+
+    @ApiModelProperty("商业险信息")
+    @TableField("kindinfo")
+    private String kindinfo;
+
+    @ApiModelProperty("交强险费用")
+    @TableField("jqpremium")
+    private BigDecimal jqpremium;
+
+    @ApiModelProperty("商业险费用")
+    @TableField("sypremium")
+    private BigDecimal sypremium;
+
+    @ApiModelProperty("驾意险费用")
+    @TableField("jypremium")
+    private BigDecimal jypremium;
+
+    @ApiModelProperty("总保费")
+    @TableField("sumpremium")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty("车船税费用")
+    @TableField("taxamount")
+    private BigDecimal taxamount;
+
+    @ApiModelProperty("交强优惠比例")
+    @TableField("jqdiscountrate")
+    private Object jqdiscountrate;
+
+    @ApiModelProperty("商业优惠比例")
+    @TableField("sydiscountrate")
+    private Object sydiscountrate;
+
+    @ApiModelProperty("交强手续费比例")
+    @TableField("feerate")
+    private Object feerate;
+
+    @ApiModelProperty("商业手续费比例")
+    @TableField("disrate")
+    private Object disrate;
+
+    @ApiModelProperty("核保人")
+    @TableField("auditid")
+    private String auditid;
+
+    @ApiModelProperty("核保人姓名")
+    @TableField("auditname")
+    private String auditname;
+
+    @ApiModelProperty("核保时间")
+    @TableField("audittime")
+    private LocalDateTime audittime;
+
+    @ApiModelProperty("核保意见")
+    @TableField("auditopinion")
+    private String auditopinion;
+
+    @ApiModelProperty("交强特别约定")
+    @TableField("jqappoint")
+    private String jqappoint;
+
+    @ApiModelProperty("商业特别约定")
+    @TableField("syappoint")
+    private String syappoint;
+
+    @TableField("createtime")
+    private LocalDateTime createtime;
+
+    @ApiModelProperty("支付时间")
+    @TableField("pay_date")
+    private LocalDateTime payDate;
+
+    @ApiModelProperty("支付链接")
+    @TableField("payment_link")
+    private String paymentLink;
+
+    @ApiModelProperty("保险公司订单号")
+    @TableField("ins_order_no")
+    private String insOrderNo;
+
+    @ApiModelProperty("驾意险信息")
+    @TableField("accident_info")
+    private String accidentInfo;
+
+    @ApiModelProperty("归属ID")
+    @TableField("attribution_id")
+    private String attributionId;
+
+    @ApiModelProperty("欠税")
+    @TableField("tax_arrears")
+    private String taxArrears;
+
+    @ApiModelProperty("交强险起期")
+    @TableField("jq_start_date")
+    private String jqStartDate;
+
+    @ApiModelProperty("交强险止期")
+    @TableField("jq_end_date")
+    private String jqEndDate;
+
+    @ApiModelProperty("商业险起期")
+    @TableField("sy_start_date")
+    private String syStartDate;
+
+    @ApiModelProperty("商业险止期")
+    @TableField("sy_end_date")
+    private String syEndDate;
+
+    @ApiModelProperty("出险字符串信息")
+    @TableField("accident_str_info")
+    private String accidentStrInfo;
+
+    @ApiModelProperty("评分")
+    @TableField("score")
+    private String score;
+
+    @ApiModelProperty("交强类型评分")
+    @TableField("jq_score")
+    private String jqScore;
+
+    @ApiModelProperty("商业类型评分")
+    @TableField("sy_score")
+    private String syScore;
+
+    @ApiModelProperty("总赔付率")
+    @TableField("loss_ration")
+    private Object lossRation;
+
+    @ApiModelProperty("交强赔付率")
+    @TableField("jq_loss_ration")
+    private Object jqLossRation;
+
+    @ApiModelProperty("商业赔付率")
+    @TableField("sy_loss_ration")
+    private Object syLossRation;
+
+    @ApiModelProperty("内部订单状态")
+    @TableField("inside_order_status")
+    private Byte insideOrderStatus;
+
+    @ApiModelProperty("内部支付时间")
+    @TableField("inside_pay_time")
+    private LocalDateTime insidePayTime;
+
+    @ApiModelProperty("签单时间")
+    @TableField("signing_time")
+    private LocalDateTime signingTime;
+}

+ 104 - 0
src/main/java/com/ydtech/modules/fnc/entity/InsCommission.java

@@ -0,0 +1,104 @@
+package com.ydtech.modules.fnc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 分销费用
+ * </p>
+ *
+ * @author gws
+ * @since 2024-01-30
+ */
+@Getter
+@Setter
+@TableName("ins_commission")
+@ApiModel(value = "InsCommission对象", description = "分销费用")
+public class InsCommission implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("订单号")
+    @TableField("orderno")
+    private String orderno;
+
+    @ApiModelProperty("保单号")
+    @TableField("policyno")
+    private String policyno;
+
+    @ApiModelProperty("车牌号")
+    @TableField("licenseno")
+    private String licenseno;
+
+    @ApiModelProperty("险种")
+    @TableField("riskcode")
+    private String riskcode;
+
+    @ApiModelProperty("关联ins_are_company表id")
+    @TableField("quoteno")
+    private String quoteno;
+
+    @ApiModelProperty("推荐人工号")
+    @TableField("refereescode")
+    private String refereescode;
+
+    @ApiModelProperty("推荐人姓名")
+    @TableField("refereesname")
+    private String refereesname;
+
+    @ApiModelProperty("分佣比例")
+    @TableField("commissionrate")
+    private BigDecimal commissionrate;
+
+    @ApiModelProperty("分佣金额")
+    @TableField("commissionamount")
+    private BigDecimal commissionamount;
+
+    @ApiModelProperty("分销等级")
+    @TableField("level")
+    private String level;
+
+    @ApiModelProperty("审核状态")
+    @TableField("auditstatus")
+    private String auditstatus;
+
+    @ApiModelProperty("结算状态 0未结算,1已结算")
+    @TableField("settlestatus")
+    private String settlestatus;
+
+    @ApiModelProperty("费用审核时间")
+    @TableField("insuredtime")
+    private LocalDateTime insuredtime;
+
+    @ApiModelProperty("机构代码")
+    @TableField("deptid")
+    private String deptid;
+
+    @ApiModelProperty("机构名称")
+    @TableField("deptname")
+    private String deptname;
+
+    @ApiModelProperty("保险公司")
+    @TableField("inscompany")
+    private String inscompany;
+
+    @ApiModelProperty("协议号")
+    @TableField("agreeid")
+    private String agreeid;
+
+    @ApiModelProperty(" 签单日期")
+    @TableField("signdate")
+    private LocalDateTime signdate;
+
+    @ApiModelProperty("提现申请单号")
+    @TableField("applyno")
+    private String applyno;
+}

+ 136 - 0
src/main/java/com/ydtech/modules/fnc/entity/InsCompanyfee.java

@@ -0,0 +1,136 @@
+package com.ydtech.modules.fnc.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 保司结算手续费、个代结算手续费
+ * </p>
+ *
+ * @author gws
+ * @since 2024-01-30
+ */
+@Getter
+@Setter
+@TableName("ins_companyfee")
+@ApiModel(value = "InsCompanyfee对象", description = "保司结算手续费、个代结算手续费")
+public class InsCompanyfee implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("订单号")
+    @TableField("orderno")
+    private String orderno;
+
+    @ApiModelProperty("保单号")
+    @TableField("policyno")
+    private String policyno;
+
+    @ApiModelProperty("险种")
+    @TableField("riskcode")
+    private String riskcode;
+
+    @TableField("settleno")
+    private String settleno;
+
+    @ApiModelProperty("交强费用比例")
+    @TableField("feerate")
+    private BigDecimal feerate;
+
+    @ApiModelProperty("商业费用比例")
+    @TableField("disrate")
+    private BigDecimal disrate;
+
+    @ApiModelProperty("交强费用")
+    @TableField("feeamount")
+    private BigDecimal feeamount;
+
+    @ApiModelProperty("商业费用")
+    @TableField("disamount")
+    private BigDecimal disamount;
+
+    @ApiModelProperty("交强保费")
+    @TableField("jqpremium")
+    private BigDecimal jqpremium;
+
+    @ApiModelProperty("商业保费")
+    @TableField("sypremium")
+    private BigDecimal sypremium;
+
+    @ApiModelProperty("保险公司")
+    @TableField("inscompany")
+    private String inscompany;
+
+    @ApiModelProperty("协议号")
+    @TableField("agreeid")
+    private String agreeid;
+
+    @TableField("agreementcode")
+    private String agreementcode;
+
+    @TableField("agreeprodid")
+    private String agreeprodid;
+
+    @TableField("producname")
+    private String producname;
+
+    @TableField("agreetype")
+    private String agreetype;
+
+    @ApiModelProperty("结算状态 0未结算,1已结算")
+    @TableField("settlestatus")
+    private String settlestatus;
+
+    @ApiModelProperty("结算时间")
+    @TableField("settletime")
+    private LocalDateTime settletime;
+
+    @ApiModelProperty("车架号")
+    @TableField("frameno")
+    private String frameno;
+
+    @ApiModelProperty("车牌号")
+    @TableField("licenseno")
+    private String licenseno;
+
+    @ApiModelProperty("结算类型 A保险公司 B业务员")
+    @TableId("settletype")
+    private String settletype;
+
+    @ApiModelProperty("业务员工号")
+    @TableField("userid")
+    private String userid;
+
+    @ApiModelProperty("业务员姓名")
+    @TableField("username")
+    private String username;
+
+    @ApiModelProperty("机构代码")
+    @TableField("deptid")
+    private String deptid;
+
+    @ApiModelProperty("机构名称")
+    @TableField("deptname")
+    private String deptname;
+
+    @ApiModelProperty("费用审核时间")
+    @TableField("createtime")
+    private LocalDateTime createtime;
+
+    @ApiModelProperty("签单日期")
+    @TableField("signdate")
+    private LocalDateTime signdate;
+
+    @ApiModelProperty("提现申请单号")
+    @TableField("applyno")
+    private String applyno;
+}

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

@@ -54,6 +54,10 @@ public class InsPlyIncome implements Serializable {
     @TableField("pay_date")
     private LocalDateTime payDate;
 
+    @ApiModelProperty("签单日期")
+    @TableField("signdate")
+    private LocalDateTime signDate;
+
     @ApiModelProperty("保险公司")
     @TableField("company_id")
     private String companyId;

+ 22 - 18
src/main/java/com/ydtech/modules/fnc/service/impl/InsFeeAuditServiceImpl.java

@@ -4,6 +4,7 @@ import cn.dev33.satoken.stp.StpUtil;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.fnc.dao.FncInsAreaCompanyMapper;
 import com.ydtech.modules.fnc.dao.InsPlyIncomeMapper;
 import com.ydtech.modules.fnc.entity.InsFeeAudit;
 import com.ydtech.modules.fnc.dao.InsFeeAuditMapper;
@@ -17,11 +18,9 @@ import com.ydtech.modules.ins.service.InsCommissionService;
 import com.ydtech.modules.ins.service.InsCompanyFeeService;
 import com.ydtech.modules.ins.service.InsDeptFeeService;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
-import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.fnc.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsFeeOrder;
 import com.ydtech.modules.order.entity.InsOrders;
-import com.ydtech.modules.order.entity.dto.InsAreaCompanyQueryDto;
-import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsFeeOrderService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.utils.DateUtil;
@@ -51,7 +50,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
     private final InsFeeOrderService insFeeOrderService;
 
-    private final InsAreaCompanyService insAreaCompanyService;
+    private final FncInsAreaCompanyMapper insAreaCompanyMapper;
 
     private final InsDeptFeeService insDeptFeeService;
     private final InsCommissionService insCommissionService;
@@ -61,8 +60,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
     private final SysUserService sysUserService;
 
 
-    public InsFeeAuditServiceImpl(InsAreaCompanyService insAreaCompanyService, InsOrdersMapper insOrdersMapper, InsFeeOrderService insFeeOrderService,InsDeptFeeService insDeptFeeService,EsmUserReferrerService esmUserReferrerService,SysUserService sysUserService,InsCommissionService insCommissionService,InsCompanyFeeService insCompanyFeeService,InsPlyIncomeMapper insPlyIncomeMapper) {
-        this.insAreaCompanyService = insAreaCompanyService;
+    public InsFeeAuditServiceImpl(FncInsAreaCompanyMapper insAreaCompanyMapper, InsOrdersMapper insOrdersMapper, InsFeeOrderService insFeeOrderService,InsDeptFeeService insDeptFeeService,EsmUserReferrerService esmUserReferrerService,SysUserService sysUserService,InsCommissionService insCommissionService,InsCompanyFeeService insCompanyFeeService,InsPlyIncomeMapper insPlyIncomeMapper) {
+        this.insAreaCompanyMapper = insAreaCompanyMapper;
         this.insOrdersMapper = insOrdersMapper;
         this.insFeeOrderService=insFeeOrderService;
         this.insDeptFeeService=insDeptFeeService;
@@ -85,7 +84,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
         InsOrders order=insOrdersMapper.selectById(orderNo);
         InsFeeOrder insFeeOrder=insFeeOrderService.getByInsOrderNo(insFeeAudit.getInsOrderNo());
-        InsAreaCompany insAreaCompany=insAreaCompanyService.getById(insFeeAudit.getInsOrderNo());
+        InsAreaCompany insAreaCompany=insAreaCompanyMapper.selectById(insFeeAudit.getInsOrderNo());
 
         //bigdecimal为null时设置为0
         handleBigdecimal(insFeeOrder);
@@ -147,9 +146,10 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         insPlyIncome.setOrderno(order.getOrderno());
         insPlyIncome.setDeptId(order.getDeptid());
         insPlyIncome.setCompanyId(plyDto.getCompanyId());
-        insPlyIncome.setAgreementId(plyDto.getAgreementId());
+        insPlyIncome.setAgreementId(String.valueOf(plyDto.getAgreementId()));
         insPlyIncome.setLicenseno(order.getLicenseno());
         insPlyIncome.setPayDate(StringUtils.isNullOrEmpty(plyDto.getPayDate())?plyDto.getCreatetime():plyDto.getPayDate());
+        insPlyIncome.setSignDate(StringUtils.isNullOrEmpty(plyDto.getInsidePayTime())?plyDto.getPayDate():plyDto.getInsidePayTime());
         insPlyIncome.setCreateTime(LocalDateTime.now() );
         if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
             insPlyIncome.setPolicyno(plyDto.getJqpolicyno());
@@ -187,9 +187,10 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         InsDeptFee deptFee = new InsDeptFee();
         deptFee.setOrderno(order.getOrderno());
         deptFee.setQuoteno(insFeeOrder.getInsOrderNo());
-        deptFee.setAgreeid(plyDto.getAgreementId());
+        deptFee.setAgreeid(String.valueOf(plyDto.getAgreementId()));
         deptFee.setAuditstatus("1");
         deptFee.setSettlestatus("0");
+        deptFee.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
         deptFee.setInscompany(plyDto.getCompanyId());
         if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
             deptFee.setPolicyno(plyDto.getJqpolicyno());
@@ -266,13 +267,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setDeptid(order.getDeptid());
                 commission.setDeptname(order.getDeptname());
                 commission.setInscompany(plyDto.getCompanyId());
-                commission.setAgreeid(plyDto.getAgreementId());
+                commission.setAgreeid(String.valueOf(plyDto.getAgreementId()));
                 commission.setRefereescode(user.getId());
                 commission.setRefereesname(user.getName());
                 commission.setLevel("3");
                 commission.setAuditstatus("1");  //0未审核 1已审核
                 commission.setSettlestatus("0"); //0未结算 1已结算
-                commission.setInsuredtime(plyDto.getPayDate().toString()); //承保确认时间
+                commission.setInsuredtime(DateUtil.formatFullTime(plyDto.getPayDate(),DateUtil.FULL_TIME_SPLIT_PATTERN));
+                commission.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
                 if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
                     commission.setPolicyno(plyDto.getJqpolicyno());
                     commission.setRiskcode("交强");
@@ -301,7 +303,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setDeptid(order.getDeptid());
                 commission.setDeptname(order.getDeptname());
                 commission.setInscompany(plyDto.getCompanyId());
-                commission.setAgreeid(plyDto.getAgreementId());
+                commission.setAgreeid(String.valueOf(plyDto.getAgreementId()));
                 commission.setRefereescode(user.getId());
                 commission.setRefereesname(user.getName());
 //                commission.setCommissionrate(insFeeOrder.getSecondRetailProportion().doubleValue());
@@ -309,7 +311,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setLevel("2");
                 commission.setAuditstatus("1");  //0未审核 1已审核
                 commission.setSettlestatus("0"); //0未结算 1已结算
-                commission.setInsuredtime(plyDto.getPayDate().toString()); //承保确认时间
+                commission.setInsuredtime(DateUtil.formatFullTime(plyDto.getPayDate(),DateUtil.FULL_TIME_SPLIT_PATTERN));
+                commission.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
                 if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
                     commission.setPolicyno(plyDto.getJqpolicyno());
                     commission.setRiskcode("交强");
@@ -337,7 +340,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setDeptid(order.getDeptid());
                 commission.setDeptname(order.getDeptname());
                 commission.setInscompany(plyDto.getCompanyId());
-                commission.setAgreeid(plyDto.getAgreementId());
+                commission.setAgreeid(String.valueOf(plyDto.getAgreementId()));
                 commission.setRefereescode(user.getId());
                 commission.setRefereesname(user.getName());
 //                commission.setCommissionrate(insFeeOrder.getFirstRetailProportion().doubleValue());
@@ -345,7 +348,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                 commission.setLevel("1");
                 commission.setAuditstatus("1");  //0未审核 1已审核
                 commission.setSettlestatus("0"); //0未结算 1已结算
-                commission.setInsuredtime(plyDto.getPayDate().toString()); //承保确认时间
+                commission.setInsuredtime(DateUtil.formatFullTime(plyDto.getPayDate(),DateUtil.FULL_TIME_SPLIT_PATTERN));
+                commission.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
                 if(StringUtils.isNotEmpty(plyDto.getJqpolicyno())){
                     commission.setPolicyno(plyDto.getJqpolicyno());
                     commission.setRiskcode("交强");
@@ -366,7 +370,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         }
     }
 
-   
+
     /**
      * 生成个代费用
      * @param order
@@ -380,7 +384,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         insCompanyFee.setFrameNo(order.getFrameno());
         insCompanyFee.setLicenseNo(order.getLicenseno());
         insCompanyFee.setInscompany(plyDto.getCompanyId());
-        insCompanyFee.setAgreeid(plyDto.getAgreementId());
+        insCompanyFee.setAgreeid(String.valueOf(plyDto.getAgreementId()));
         insCompanyFee.setUserid(order.getUserid());
         insCompanyFee.setUsername(order.getUsername());
         insCompanyFee.setDeptid(order.getDeptid());
@@ -388,7 +392,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         insCompanyFee.setSettletype("B");
         insCompanyFee.setSettlestatus("0");
         insCompanyFee.setCreatetime(DateUtil.getDateFormat(new Date(),DateUtil.FULL_TIME_SPLIT_PATTERN));
-
+        insCompanyFee.setSignDate(DateUtil.formatFullTime(plyDto.getInsidePayTime(),DateUtil.FULL_TIME_SPLIT_PATTERN));
         BigDecimal dept_rate=insFeeOrder.getFirstDeptProportion()
                 .add(insFeeOrder.getSecondDeptProportion())
                 .add(insFeeOrder.getThirdDeptProportion())

+ 20 - 4
src/main/java/com/ydtech/modules/ins/controller/InsFeeDetailController.java

@@ -335,7 +335,7 @@ public class InsFeeDetailController extends BaseController {
             array.add(riskCode);
         }
         if (!StringUtils.isEmpty(startdate) && !StringUtils.isEmpty(enddate)) {
-            whereStr.append(" and exists(select 1 from ins_ply_income a where a.orderno=t.orderno and (DATE_FORMAT(a.pay_date, '%Y-%m-%d') between date ? and date ?))");
+            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between date ? and date ?");
             array.add(startdate);
             array.add(enddate);
         }
@@ -415,6 +415,7 @@ public class InsFeeDetailController extends BaseController {
         String inscompany = pageRequest.getColumnFilterValue(pageRequest, "inscompany"); // 保险公司
         String startdate = pageRequest.getColumnFilterValue(pageRequest, "startdate"); // 开始时间
         String enddate = pageRequest.getColumnFilterValue(pageRequest, "enddate"); // 截止时间
+        String settlestatus = pageRequest.getColumnFilterValue(pageRequest, "settlestatus"); // 结算状态 0未结算 1已结算
 
         StringBuffer whereStr = new StringBuffer(" where 1=1");
         ArrayList array = new ArrayList();
@@ -454,11 +455,14 @@ public class InsFeeDetailController extends BaseController {
             array.add(riskCode);
         }
         if (!StringUtils.isEmpty(startdate) && !StringUtils.isEmpty(enddate)) {
-            whereStr.append(" and exists(select 1 from ins_ply_income a where a.orderno=t.orderno and (DATE_FORMAT(a.pay_date, '%Y-%m-%d') between date ? and date ?))");
+            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between date ? and date ?");
             array.add(startdate);
             array.add(enddate);
         }
-
+        if (!StringUtils.isEmpty(settlestatus)) {
+            whereStr.append(" and settlestatus=?");
+            array.add(settlestatus);
+        }
 
         if (!StringUtils.isEmpty(auditstatus)) {
             whereStr.append(" and auditstatus=?");
@@ -484,7 +488,9 @@ public class InsFeeDetailController extends BaseController {
 
         String orderno = pageRequest.getColumnFilterValue(pageRequest, "orderno"); // 订单号
         String policyno = pageRequest.getColumnFilterValue(pageRequest, "policyno"); // 订单号
-
+        String settlestatus = pageRequest.getColumnFilterValue(pageRequest, "settlestatus"); // 结算状态 0未结算 1已结算
+        String startdate = pageRequest.getColumnFilterValue(pageRequest, "startdate"); // 开始时间
+        String enddate = pageRequest.getColumnFilterValue(pageRequest, "enddate"); // 截止时间
         String deptid = pageRequest.getColumnFilterValue(pageRequest, "deptid");
         String auditstatus = pageRequest.getColumnFilterValue(pageRequest, "auditstatus");
         String comcode = pageRequest.getColumnFilterValue(pageRequest, "comcode");
@@ -495,6 +501,7 @@ public class InsFeeDetailController extends BaseController {
         StringBuffer whereStr = new StringBuffer(" where 1=1");
         ArrayList array = new ArrayList();
 
+
         if (!StringUtils.isEmpty(comcode)) {
             whereStr.append(" and comcode=?");
             array.add(comcode);
@@ -524,7 +531,16 @@ public class InsFeeDetailController extends BaseController {
             whereStr.append(" and auditstatus=?");
             array.add(auditstatus);
         }
+        if (!StringUtils.isEmpty(settlestatus)) {
+            whereStr.append(" and settlestatus=?");
+            array.add(settlestatus);
+        }
 
+        if (!StringUtils.isEmpty(startdate) && !StringUtils.isEmpty(enddate)) {
+            whereStr.append(" and DATE_FORMAT(signdate, '%Y-%m-%d') between date ? and date ?");
+            array.add(startdate);
+            array.add(enddate);
+        }
         PageResult pageResult = insDeptFeeService.selectPaging(pageNum, pageSize, whereStr.toString(), array.toArray());
 
         return HttpResult.ok(pageResult);

+ 36 - 11
src/main/java/com/ydtech/modules/ins/controller/InsPayApplyController.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.ins.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
@@ -15,6 +16,10 @@ import com.ydtech.modules.esm.model.vo.ExtensionVO;
 import com.ydtech.modules.esm.model.vo.TeamUserQryVO;
 import com.ydtech.modules.esm.model.vo.TeamUserVO;
 import com.ydtech.modules.esm.model.vo.TeamUserVONew;
+import com.ydtech.modules.fnc.dao.FncInsCommissionMapper;
+import com.ydtech.modules.fnc.dao.FncInsCompanyfeeMapper;
+import com.ydtech.modules.fnc.entity.InsCommission;
+import com.ydtech.modules.fnc.entity.InsCompanyfee;
 import com.ydtech.modules.ins.model.InsOrder;
 import com.ydtech.modules.ins.model.InsPayApply;
 import com.ydtech.modules.ins.model.vo.AccountVo;
@@ -27,6 +32,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
@@ -56,6 +62,10 @@ public class InsPayApplyController extends BaseController {
     @Autowired
     InsCommissionService insCommissionService;
     @Autowired
+    FncInsCommissionMapper fncInsCommissionMapper;
+    @Autowired
+    FncInsCompanyfeeMapper fncInsCompanyfeeMapper;
+    @Autowired
     InsDeptFeeService insDeptFeeService;
 //    @Autowired
 //    private EsmUserAgentService esmUserAgentService;
@@ -332,14 +342,23 @@ public class InsPayApplyController extends BaseController {
 
     /**
      * 推广费提现申请
-     *
-     * @param userid
-     * @param amount
      * @return
      */
     @PostMapping(value = "/extendApply")
-    public HttpResult extendApply(@RequestParam String userid, @RequestParam double amount) {
+    @Transactional
+    public HttpResult extendApply( @RequestBody List<String> policyNoList) {
         HttpResult httpResult = new HttpResult();
+        String applyno = IdGenerate.nextId();
+        String userid=getUserId();
+        List<InsCommission> list=fncInsCommissionMapper.selectList(new LambdaQueryWrapper<InsCommission>().in(InsCommission::getPolicyno,policyNoList));
+        BigDecimal amount_bd=new BigDecimal(0);
+        for(InsCommission t :list){
+            t.setSettlestatus("1");
+            t.setApplyno(applyno);
+            fncInsCommissionMapper.update(t,new LambdaQueryWrapper<InsCommission>().eq(InsCommission::getPolicyno,t.getPolicyno()).eq(InsCommission::getRefereescode,userid));
+            amount_bd=amount_bd.add(t.getCommissionamount());
+        }
+        double amount= amount_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
         //推广账户总金额
         double sumAmount = insCommissionService.sumAmount(" where t.refereescode=?", new Object[]{userid});
         //已提现金额
@@ -350,7 +369,6 @@ public class InsPayApplyController extends BaseController {
             return HttpResult.error("可提现余额不足");
         }
         InsPayApply apply = new InsPayApply();
-        String applyno = IdGenerate.nextId();
         SysUser user = sysUserService.getById(userid);
         if (user == null) {
             httpResult.setMsg("userId不存在");
@@ -418,15 +436,23 @@ public class InsPayApplyController extends BaseController {
     }
 
     /**
-     * 提现申请
-     *
-     * @param userid
-     * @param amount
+     * 业务员跟单非提现申请
      * @return
      */
     @PostMapping(value = "/applyPay")
-    public HttpResult applyPay(@RequestParam String userid, @RequestParam double amount) {
+    public HttpResult applyPay( @RequestBody List<String> policyNoList) {
         HttpResult httpResult = new HttpResult();
+        String applyno = IdGenerate.nextId();
+        String userid=getUserId();
+        List<InsCompanyfee> list=fncInsCompanyfeeMapper.selectList(new LambdaQueryWrapper<InsCompanyfee>().in(InsCompanyfee::getPolicyno,policyNoList));
+        BigDecimal amount_bd=new BigDecimal(0);
+        for(InsCompanyfee t :list){
+            t.setSettlestatus("1");
+            t.setApplyno(applyno);
+            fncInsCompanyfeeMapper.update(t,new LambdaQueryWrapper<InsCompanyfee>().eq(InsCompanyfee::getPolicyno,t.getPolicyno()).eq(InsCompanyfee::getUserid,userid));
+            amount_bd=amount_bd.add(t.getFeeamount().add(t.getDisamount()));
+        }
+        double amount= amount_bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
         //账户总金额
         double sumAmount = insCompanyFeeService.sumAmount(" where t.userid=? ", new Object[]{userid});
         //已提现金额
@@ -436,7 +462,6 @@ public class InsPayApplyController extends BaseController {
             return HttpResult.error("可提现余额不足");
         }
         InsPayApply apply = new InsPayApply();
-        String applyno = IdGenerate.nextId();
         SysUser user = sysUserService.getById(userid);
         if (user == null) {
             httpResult.setMsg("userId不存在");

+ 7 - 1
src/main/java/com/ydtech/modules/ins/dao/impl/InsCommissionDaoImpl.java

@@ -53,6 +53,12 @@ public class InsCommissionDaoImpl implements InsCommissionDao {
             } else {
                 model.setInsuredtime(null);
             }
+            if (resultSet.getTimestamp("signdate") != null) {
+                Date signdate = new Date(resultSet.getTimestamp("signdate").getTime());
+                model.setSignDate(sdf.format(signdate));
+            } else {
+                model.setSignDate(null);
+            }
             return model;
         }
     }
@@ -116,7 +122,7 @@ public class InsCommissionDaoImpl implements InsCommissionDao {
     public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues) {
 
         Dialect dialect = Dialect.guessDialect(dataSource);
-        String sql = dialect.pagin(pageNumber, pageSize, "select t.orderno,t.policyno,t.deptid,t.deptname,t.riskcode,t.licenseno,(SELECT name from esm_ins_company where  id =t.inscompany) inscompany,t.agreeid,t.quoteno,t.refereescode,t.refereesname,t.commissionrate,t.commissionamount,t.level,t.auditstatus,t.settlestatus,t.insuredtime " +
+        String sql = dialect.pagin(pageNumber, pageSize, "select t.orderno,t.policyno,t.deptid,t.deptname,t.riskcode,t.licenseno,(SELECT name from esm_ins_company where  id =t.inscompany) inscompany,t.agreeid,t.quoteno,t.refereescode,t.refereesname,t.commissionrate,t.commissionamount,t.level,t.auditstatus,t.settlestatus,t.insuredtime,t.signdate " +
                 "from ins_commission t  " + whereCase);
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

+ 7 - 1
src/main/java/com/ydtech/modules/ins/dao/impl/InsCompanyFeeDaoImpl.java

@@ -75,6 +75,12 @@ public class InsCompanyFeeDaoImpl implements InsCompanyFeeDao {
             } else {
                 model.setCreatetime(null);
             }
+            if (resultSet.getTimestamp("signdate") != null) {
+                Date signdate = new Date(resultSet.getTimestamp("signdate").getTime());
+                model.setSignDate(sdf.format(signdate));
+            } else {
+                model.setSignDate(null);
+            }
             return model;
         }
     }
@@ -142,7 +148,7 @@ public class InsCompanyFeeDaoImpl implements InsCompanyFeeDao {
 
         Dialect dialect = Dialect.guessDialect(dataSource);
         String sql = dialect.pagin(pageNumber, pageSize, "select t.orderno,t.policyno,t.riskcode,t.settleno,t.feerate,t.disrate,t.feeamount,t.disamount,t.jqpremium,t.sypremium,t.frameNo,t.licenseno,(SELECT name from esm_ins_company where  id =t.inscompany) inscompany,t.agreeid,t.agreementcode,t.agreeprodid,t.riskcode producname,t.agreetype,t.settlestatus,t.settletime, " +
-                "t.settletype,t.userid,t.username,t.deptid,t.deptname,t.createtime from ins_companyfee t " + whereCase);
+                "t.settletype,t.userid,t.username,t.deptid,t.deptname,t.createtime,t.signdate from ins_companyfee t " + whereCase);
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
         List<InsCompanyFee> recordList = jdbcTemplate.query(sql, paramValues, new InsCompanyFeeRowMapper());

+ 8 - 1
src/main/java/com/ydtech/modules/ins/dao/impl/InsDeptFeeDaoImpl.java

@@ -45,6 +45,13 @@ public class InsDeptFeeDaoImpl implements InsDeptFeeDao {
             model.setLicenseno(resultSet.getString("licenseno"));
             model.setRiskcode(resultSet.getString("riskcode"));
             model.setInscompany(resultSet.getString("inscompany"));
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            if (resultSet.getTimestamp("signdate") != null) {
+                Date signdate = new Date(resultSet.getTimestamp("signdate").getTime());
+                model.setSignDate(sdf.format(signdate));
+            } else {
+                model.setSignDate(null);
+            }
             return model;
         }
     }
@@ -141,7 +148,7 @@ public class InsDeptFeeDaoImpl implements InsDeptFeeDao {
     public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues) {
 
         Dialect dialect = Dialect.guessDialect(dataSource);
-        String sql = dialect.pagin(pageNumber, pageSize, "select t.orderno,t.quoteno,t.policyno,t.riskcode,(SELECT name from esm_ins_company where  id =t.inscompany) inscompany,t.agreeid,t.agreeprodid,t.comlevel,t.comcode,t.keeprate,t.addrate,t.keepamount,t.addamount,t.auditstatus,t.settlestatus,t.licenseno from ins_deptfee t  " + whereCase);
+        String sql = dialect.pagin(pageNumber, pageSize, "select t.orderno,t.quoteno,t.policyno,t.riskcode,(SELECT name from esm_ins_company where  id =t.inscompany) inscompany,t.agreeid,t.agreeprodid,t.comlevel,t.comcode,t.keeprate,t.addrate,t.keepamount,t.addamount,t.auditstatus,t.settlestatus,t.licenseno,t.signdate from ins_deptfee t  " + whereCase);
 
         JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
         List<InsDeptFee> recordList = jdbcTemplate.query(sql, paramValues, new InsDeptFeeRowMapper());

+ 3 - 1
src/main/java/com/ydtech/modules/ins/model/InsCommission.java

@@ -2,6 +2,8 @@ package com.ydtech.modules.ins.model;
 
 import lombok.Data;
 
+import java.time.LocalDateTime;
+
 /**
  * @author qinfenglong
  * @version 1.0.0
@@ -27,5 +29,5 @@ public class InsCommission {
     private String deptname;
     private String inscompany;
     private String agreeid;
-
+    private String signDate;
 }

+ 1 - 0
src/main/java/com/ydtech/modules/ins/model/InsCompanyFee.java

@@ -36,4 +36,5 @@ public class InsCompanyFee {
     private String createtime;
     private String policyno;
     private String riskcode;
+    private String signDate;
 }

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/InsDeptFee.java

@@ -26,5 +26,5 @@ public class InsDeptFee {
     private String policyno;
     private String riskcode;
     private String inscompany;
-
+    private String signDate;
 }

+ 8 - 0
src/main/java/com/ydtech/modules/inv/controller/InvAccountController.java

@@ -30,6 +30,14 @@ public class InvAccountController {
     @Autowired
     private InvAccountCardService invAccountCardService;
 
+    @PostMapping("excel")
+    @ApiOperation("导出账户信息")
+    public HttpResult selectAccountExcel(@RequestBody InvAccountQueryVo invAccountQueryVo) {
+        return invAccountService.selectAccountExcel(invAccountQueryVo);
+    }
+
+
+
     @ApiOperation("获取账户列表")
     @PostMapping("getAccount")
     public HttpResult<IPage<InvAccount>> getInsAccountList(@RequestBody InvAccountQueryVo invAccountQueryVo) {

+ 36 - 1
src/main/java/com/ydtech/modules/inv/controller/InvAccountIncoiceController.java

@@ -1,17 +1,21 @@
 package com.ydtech.modules.inv.controller;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.inv.model.InvAccountIncoice;
 import com.ydtech.modules.inv.model.InvAccountIncoiceResult;
 import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
 import com.ydtech.modules.inv.service.InvAccountIncoiceService;
+import com.ydtech.modules.inv.service.InvAccountOpService;
 import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.*;
 
@@ -19,6 +23,7 @@ import javax.annotation.Resource;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.DoubleStream;
 
 /**
@@ -36,6 +41,8 @@ public class InvAccountIncoiceController {
      */
     @Resource
     private InvAccountIncoiceService invAccountIncoiceService;
+    @Autowired
+    private InvAccountOpService invAccountOpService;
 
 
     @PostMapping("excel")
@@ -65,7 +72,8 @@ public class InvAccountIncoiceController {
                 .eq(InvAccountIncoice::getDelFlag, "0")
                 .eq(!StringUtils.isEmpty(invAccountIncoice.getInvoiceType()), InvAccountIncoice::getInvoiceType,
                         invAccountIncoice.getInvoiceType())
-                .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit,invAccountIncoice.getOtherUnit());
+                .like(!StringUtils.isEmpty(invAccountIncoice.getOtherUnit()), InvAccountIncoice::getOtherUnit,invAccountIncoice.getOtherUnit())
+                .like(!StringUtils.isEmpty(invAccountIncoice.getClearFlag()), InvAccountIncoice::getClearFlag,invAccountIncoice.getClearFlag());
 
 
         if (!ObjectUtils.isEmpty(invAccountIncoice.getInvoiceTime())) {
@@ -130,9 +138,36 @@ public class InvAccountIncoiceController {
     @PostMapping("update")
     @ApiOperation("新增收入")
     public HttpResult updateIncome(@RequestBody InvAccountIncoice invAccountIncoice) {
+        JSONObject outProfit = invAccountIncoice.getOutProfit();
+        JSONObject entProfit = invAccountIncoice.getEntProfit();
+        BigDecimal outAmount = new BigDecimal(0);
+        BigDecimal entAmount = new BigDecimal(0);
+        for (Map.Entry<String, Object> entry:outProfit.entrySet()){
+            outAmount = outAmount.add(new BigDecimal(entry.getValue().toString()));
+        }
+        for (Map.Entry<String, Object> entry:entProfit.entrySet()){
+            entAmount = entAmount.add(new BigDecimal(entry.getValue().toString()));
+        }
+        if (!String.valueOf(outAmount).equals("100")){
+            throw new SystemException("支出金额未完全分配");
+        }
+        if (!String.valueOf(entAmount).equals("100")){
+            throw new SystemException("收入金额未完全分配");
+        }
         return this.invAccountIncoiceService.updateInvAccountIncoice(invAccountIncoice);
     }
 
+    @PostMapping("updateIncoice")
+    @ApiOperation("修改发票信息")
+    public HttpResult updateIncoice(@RequestBody InvAccountIncoice invAccountIncoice) {
+        if (!invAccountIncoice.getPayoutMoney().equals("0") && !invAccountIncoice.getNotPayoutMoney().equals(invAccountIncoice.getInvoiceMoney())){
+            throw new SystemException("已进账 如需修改请撤销");
+        }
+
+        return HttpResult.ok(invAccountIncoiceService.updateById(invAccountIncoice));
+    }
+
+
 
     /**
      * 撤销

+ 27 - 0
src/main/java/com/ydtech/modules/inv/controller/InvAccountOperateController.java

@@ -1,7 +1,9 @@
 package com.ydtech.modules.inv.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.inv.model.InvAccountOperate;
 import com.ydtech.modules.inv.service.InvAccountOperateService;
 import io.swagger.annotations.Api;
@@ -9,6 +11,9 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
+import java.util.Map;
+
 
 /**
  * @author jianlong
@@ -22,6 +27,12 @@ public class InvAccountOperateController {
     @Autowired
     private InvAccountOperateService invAccountOperateService;
 
+    @PostMapping("excel")
+    @ApiOperation("导出excel")
+    public HttpResult excelAccount(@RequestBody InvAccountOperate accountOperate) {
+        return invAccountOperateService.excelAccount(accountOperate);
+    }
+
 
     @PostMapping("getAccountOperate")
     @ApiOperation("获取账户操作")
@@ -40,6 +51,22 @@ public class InvAccountOperateController {
     @PostMapping("insertAccountOperate")
     @ApiOperation("新增外部收入")
     public HttpResult insertAccountOperate(@RequestBody InvAccountOperate accountOperate) {
+        JSONObject outProfit = accountOperate.getOutProfit();
+        JSONObject entProfit = accountOperate.getEntProfit();
+        BigDecimal outAmount = new BigDecimal(0);
+        BigDecimal entAmount = new BigDecimal(0);
+        for (Map.Entry<String, Object> entry:outProfit.entrySet()){
+            outAmount = outAmount.add(new BigDecimal(String.valueOf(entry.getValue())));
+        }
+        for (Map.Entry<String, Object> entry:entProfit.entrySet()){
+            entAmount = entAmount.add(new BigDecimal(String.valueOf(entry.getValue())));
+        }
+        if (!String.valueOf(outAmount).equals("100")){
+            throw new SystemException("支出金额未完全分配");
+        }
+        if (!String.valueOf(entAmount).equals("100")){
+            throw new SystemException("收入金额未完全分配");
+        }
         return invAccountOperateService.insert(accountOperate);
     }
 }

+ 21 - 0
src/main/java/com/ydtech/modules/inv/controller/invAccountExcelController.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.inv.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ydtech.constants.enums.inv.InvPayMethodEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
@@ -15,8 +16,10 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author jianlong
@@ -43,6 +46,24 @@ public class invAccountExcelController {
         invAccountExcel.setCreateBy(baseController.getUserName());
         invAccountExcel.setCreateTime(date);
 
+        JSONObject outProfit = invAccountExcel.getOutProfit();
+        JSONObject entProfit = invAccountExcel.getEntProfit();
+        BigDecimal outAmount = new BigDecimal(0);
+        BigDecimal entAmount = new BigDecimal(0);
+        for (Map.Entry<String, Object> entry:outProfit.entrySet()){
+            outAmount = outAmount.add(new BigDecimal(entry.getValue().toString()));
+        }
+        for (Map.Entry<String, Object> entry:entProfit.entrySet()){
+            entAmount = entAmount.add(new BigDecimal(entry.getValue().toString()));
+        }
+        if (String.valueOf(outAmount).equals("1000")){
+            throw new SystemException("支出金额未完全分配");
+        }
+        if (String.valueOf(entAmount).equals("1000")){
+            throw new SystemException("收入金额未完全分配");
+        }
+
+
         if (invAccountExcel.getOutCardNum() == null && invAccountExcel.getEnterCardNum() == null) {
             throw new SystemException("请先选择账户");
         }

+ 69 - 0
src/main/java/com/ydtech/modules/inv/controller/invAccountProfitController.java

@@ -0,0 +1,69 @@
+package com.ydtech.modules.inv.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.modules.inv.model.InvAccountProfit;
+import com.ydtech.modules.inv.service.InvAccountProfitService;
+import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author jianlong
+ * @date 2024-01-29 16:07
+ */
+@Api(tags = "利润管理", value = "利润管理")
+@RequestMapping("/invAccountProfit")
+@RestController
+public class invAccountProfitController {
+
+    @Autowired
+    InvAccountProfitService invAccountProfitService;
+
+
+    @PostMapping("insert")
+    @ApiOperation("增加")
+    public HttpResult insertInsAccountExpenses(@RequestBody InvAccountProfit invAccountProfit) {
+
+        return HttpResult.ok("",invAccountProfitService.save(invAccountProfit));
+    }
+
+    @PostMapping("update")
+    @ApiOperation("修改")
+    public HttpResult updateInsAccountExpenses(@RequestBody InvAccountProfit invAccountProfit) {
+        return HttpResult.ok("",invAccountProfitService.updateById(invAccountProfit));
+    }
+
+    @DeleteMapping("delete")
+    @ApiOperation("删除")
+    public HttpResult deleteInsAccountExpenses(@RequestParam("id") String id) {
+        return HttpResult.ok("",invAccountProfitService.removeById(id));
+    }
+
+    @PostMapping("getPageList")
+    @ApiOperation("获取分页列表")
+    public HttpResult getInsAccountExpensesPageList(@RequestBody InvAccountProfit invAccountProfit) {
+        LambdaQueryWrapper<InvAccountProfit> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.like(StringUtils.isNotEmpty(invAccountProfit.getProfitName()),InvAccountProfit::getProfitName,invAccountProfit.getProfitName());
+        PageRequest pageRequest = new PageRequest();
+        pageRequest.setPageNum(invAccountProfit.getPageNo());
+        pageRequest.setPageSize(invAccountProfit.getPageSize());
+        Page<InvAccountProfit> page = PageRequest.buildPageRequest(pageRequest);
+        Page<InvAccountProfit> page1 = invAccountProfitService.page(page, queryWrapper);
+        return HttpResult.ok("",page1);
+    }
+
+    @GetMapping("getList")
+    @ApiOperation("获取列表")
+    public HttpResult getInsAccountExpensesList(){
+        List<InvAccountProfit> list = invAccountProfitService.list();
+        return HttpResult.ok(list);
+    }
+}

+ 1 - 0
src/main/java/com/ydtech/modules/inv/dao/InvAccountMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.inv.model.InvAccount;
+import com.ydtech.modules.inv.model.excel.AccountExcel;
 import com.ydtech.modules.inv.model.vo.InvAccountQueryVo;
 import org.apache.ibatis.annotations.Param;
 

+ 36 - 0
src/main/java/com/ydtech/modules/inv/dao/InvAccountOpMapper.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.inv.dao;
+
+import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.inv.model.InvAccountOp;
+import org.apache.ibatis.annotations.Param;
+
+
+/**
+ * (InvAccountOp)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-01-30 16:00:03
+ */
+public interface InvAccountOpMapper extends BaseMapper<InvAccountOp> {
+
+/**
+* 批量新增数据(MyBatis原生foreach方法)
+*
+* @param entities List<InvAccountOp> 实例对象列表
+* @return 影响行数
+*/
+int insertBatch(@Param("entities") List<InvAccountOp> entities);
+
+/**
+* 批量新增或按主键更新数据(MyBatis原生foreach方法)
+*
+* @param entities List<InvAccountOp> 实例对象列表
+* @return 影响行数
+* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+*/
+int insertOrUpdateBatch(@Param("entities") List<InvAccountOp> entities);
+
+}
+

+ 5 - 0
src/main/java/com/ydtech/modules/inv/dao/InvAccountOperateMapper.java

@@ -6,6 +6,8 @@ import com.ydtech.modules.inv.model.InvAccountOperate;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【ins_account_operate(账户操作记录表)】的数据库操作Mapper
@@ -15,6 +17,9 @@ import org.apache.ibatis.annotations.Param;
 public interface InvAccountOperateMapper extends BaseMapper<InvAccountOperate> {
 
     IPage<InvAccountOperate> selectInsAccountOperate(Page page, @Param("insAccountOperate") InvAccountOperate insAccountOperate);
+    List<InvAccountOperate> selectInsAccountOperateList(@Param("insAccountOperate") InvAccountOperate insAccountOperate);
+
+    List<InvAccountOperate> selectOperateList(List<String> cardNumList);
 
 }
 

+ 11 - 0
src/main/java/com/ydtech/modules/inv/dao/invAccountProfitMapper.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.inv.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.inv.model.InvAccountProfit;
+
+/**
+ * @author jianlong
+ * @date 2024-01-29 16:01
+ */
+public interface invAccountProfitMapper extends BaseMapper<InvAccountProfit> {
+}

+ 1 - 1
src/main/java/com/ydtech/modules/inv/model/InvAccount.java

@@ -37,7 +37,7 @@ public class InvAccount implements Serializable {
     /**
      * 营业性质
      */
-    @ApiModelProperty(value = "营业性质 (0一般纳税 1小规模 2个体户)")
+    @ApiModelProperty(value = "营业性质(3一般纳税 2小规模 1个体户)")
     private String businessQuality;
 
     /**

+ 0 - 41
src/main/java/com/ydtech/modules/inv/model/InvAccountCard.java

@@ -114,47 +114,6 @@ public class InvAccountCard {
     @ApiModelProperty(value = "对私年剩余额度")
     private String priYearExcess;
 
-    /**
-     * 财税公司利润
-     */
-    @ApiModelProperty(value = "财务公司利润")
-    private String fiscalProfit;
-
-    /**
-     * 保险公司回款
-     */
-    @ApiModelProperty(value = "保险公司利润")
-    private String insuranceProfit;
-
-    /**
-     * 结算卡
-     */
-    @ApiModelProperty(value = "结算卡")
-    private String clearingProfit;
-
-    /**
-     * 外部过账金额
-     */
-    @ApiModelProperty(value = "外部过账金额")
-    private String exteriorProfit;
-
-    /**
-     * 园区利润
-     */
-    @ApiModelProperty(value = "园区利润")
-    private String parkProfit;
-
-    /**
-     * 天勤利润
-     */
-    @ApiModelProperty(value = "天勤利润")
-    private String tianqinProfit;
-
-    /**
-     * 其他利润
-     */
-    @ApiModelProperty(value = "其他利润")
-    private String otherProfit;
 
     /**
      * 证书有效期结束

+ 21 - 7
src/main/java/com/ydtech/modules/inv/model/InvAccountExcel.java

@@ -5,12 +5,14 @@ import com.alibaba.excel.annotation.write.style.ContentStyle;
 import com.alibaba.excel.enums.poi.BorderStyleEnum;
 import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
 import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 import java.util.Date;
 
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,12 +23,13 @@ import javax.validation.constraints.NotBlank;
  * 资金申请单表
  * @TableName ins_account_excel
  */
-@TableName(value ="inv_account_excel")
+
 @Data
 @ContentStyle(borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN,
 horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER
 )
 @ExcelIgnoreUnannotated
+@TableName(value = "inv_account_excel", autoResultMap = true)
 public class InvAccountExcel implements Serializable {
     /**
      * 资金申请表id
@@ -93,12 +96,6 @@ public class InvAccountExcel implements Serializable {
     private String fundUse;
 
 
-    /**
-     * 备注
-     */
-    @ApiModelProperty(value = "备注")
-    @NotBlank
-    private String remark;
 
     /**
      * 申请金额
@@ -192,6 +189,23 @@ public class InvAccountExcel implements Serializable {
     @NotBlank
     private String payMethod;
 
+    @ApiModelProperty("支出方利润归属")
+    @TableField(value = "out_profit", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject outProfit;
+
+    @ApiModelProperty("收入方利润归属")
+    @TableField(value = "ent_profit", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject entProfit;
+
+    @ApiModelProperty("资金用途分项")
+    private String fundFen;
+
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+
+
     @TableField(exist = false)
     private int pageNo;
 

+ 29 - 8
src/main/java/com/ydtech/modules/inv/model/InvAccountIncoice.java

@@ -3,15 +3,14 @@ package com.ydtech.modules.inv.model;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.util.Date;
@@ -22,7 +21,7 @@ import java.util.Date;
  * @author makejava
  * @since 2024-01-18 16:01:27
  */
-@TableName(value ="inv_account_incoice")
+@TableName(value ="inv_account_incoice",autoResultMap = true)
 @Data
 @ExcelIgnoreUnannotated
 public class InvAccountIncoice implements Serializable{
@@ -106,11 +105,11 @@ public class InvAccountIncoice implements Serializable{
     @TableField(exist = false)
     private String payoutDate;
 
-    @ApiModelProperty(value = "卡号")
-    private String bankCardNum;
+    @ApiModelProperty(value = "进账卡号")
+    private String revBankCardNum;
 
-    @ApiModelProperty(value = "备注")
-    private String remark;
+    @ApiModelProperty(value = "支出卡号")
+    private String outBankCardNum;
 
 
     //进账金额
@@ -127,6 +126,25 @@ public class InvAccountIncoice implements Serializable{
     @ApiModelProperty(value = "撤销标志(0正常 1撤销)")
     private String delFlag;
 
+    @ApiModelProperty(value = "已转清(0未清,1已清)")
+    private String clearFlag;
+
+
+
+
+    @ApiModelProperty("支出方利润归属")
+    @TableField(value = "out_profit", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject outProfit;
+
+    @ApiModelProperty("收入方利润归属")
+    @TableField(value = "ent_profit", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject entProfit;
+
+
+
+    @ApiModelProperty("备注")
+    @ExcelProperty("备注")
+    private String remark;
 
 
     /**
@@ -165,6 +183,9 @@ public class InvAccountIncoice implements Serializable{
     @TableField(exist = false)
     private String fundUse;
 
+    @ApiModelProperty("资金用途分项")
+    private String fundFen;
+
 
 
     @TableField(exist = false)

+ 36 - 0
src/main/java/com/ydtech/modules/inv/model/InvAccountOp.java

@@ -0,0 +1,36 @@
+package com.ydtech.modules.inv.model;
+
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * (InvAccountOp)表实体类
+ *
+ * @author makejava
+ * @since 2024-01-30 16:00:03
+ */
+@SuppressWarnings("serial")
+@Data
+public class InvAccountOp extends Model<InvAccountOp> {
+    //编号
+    private Long id;
+    //公司名称
+    private String accountName;
+    //公司id
+    private String accountId;
+    //开户行名称
+    private String cardName;
+    //卡号
+    private String cardNum;
+    //归属
+    private String profit;
+    //金额
+    private String money;
+    //发票序号
+    private String invoiceId;
+
+}
+

+ 55 - 1
src/main/java/com/ydtech/modules/inv/model/InvAccountOperate.java

@@ -1,11 +1,21 @@
 package com.ydtech.modules.inv.model;
 
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
+import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.FieldFill;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -14,8 +24,12 @@ import lombok.Data;
  * 账户操作记录表
  * @TableName ins_account_operate
  */
-@TableName(value ="inv_account_operate")
+@TableName(value ="inv_account_operate",autoResultMap = true)
 @Data
+@ContentStyle(borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN,
+        horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER
+)
+@ExcelIgnoreUnannotated
 public class InvAccountOperate implements Serializable {
     /**
      * 账户操作id
@@ -24,6 +38,13 @@ public class InvAccountOperate implements Serializable {
     @ApiModelProperty(value = "账户操作id")
     private String accountOperateId;
 
+
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelProperty("支出时间")
+    @TableField(value = "create_time",fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime createTime;
+
     /**
      * 申请人
      */
@@ -34,8 +55,14 @@ public class InvAccountOperate implements Serializable {
      * 申请部门
      */
     @ApiModelProperty(value = "申请部门")
+    @ExcelProperty("部门")
     private String applySector;
 
+
+    @ApiModelProperty("无需传递")
+    @ExcelProperty("板块")
+    private String plate;
+
     /**
      * 申请时间
      */
@@ -53,18 +80,35 @@ public class InvAccountOperate implements Serializable {
      * 资金流向
      */
     @ApiModelProperty(value = "资金流向")
+    @ExcelProperty("资金流向")
     private String fundFlow;
 
+    /**
+     * 进账id
+     */
+    private String enterCardNum;
+
+    /**
+     * 支出id
+     */
+    private String outCardNum;
+
     /**
      * 资金用途
      */
     @ApiModelProperty(value = "资金用途")
+    @ExcelProperty("支出项目")
     private String fundUse;
 
+    @ApiModelProperty("资金用途分项")
+    @ExcelProperty("分项")
+    private String fundFen;
+
     /**
      * 申请金额
      */
     @ApiModelProperty(value = "申请金额")
+    @ExcelProperty("支出金额")
     private String applyAmount;
 
     /**
@@ -108,6 +152,16 @@ public class InvAccountOperate implements Serializable {
     private String enterCardId;
 
 
+    @ApiModelProperty("支出方利润归属")
+    @TableField(value = "out_profit", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject outProfit;
+
+    @ApiModelProperty("收入方利润归属")
+    @TableField(value = "ent_profit", typeHandler = FastjsonTypeHandler.class)
+    private JSONObject entProfit;
+
+
+
     @TableField(exist = false)
     private int pageNo;
 

+ 29 - 0
src/main/java/com/ydtech/modules/inv/model/InvAccountProfit.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.inv.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author jianlong
+ * @date 2024-01-29 15:58
+ */
+@Data
+@TableName(value ="inv_account_profit")
+public class InvAccountProfit implements Serializable {
+
+    @TableId
+    private String profitId;
+
+    private String profitName;
+
+    private String profitEng;
+
+    @TableField(exist = false)
+    private int pageNo;
+    @TableField(exist = false)
+    private int pageSize;
+}

+ 37 - 0
src/main/java/com/ydtech/modules/inv/model/excel/AccountExcel.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.inv.model.excel;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ContentStyle;
+import com.alibaba.excel.enums.poi.BorderStyleEnum;
+import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
+import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
+import com.google.gson.JsonObject;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author jianlong
+ * @date 2024-01-29 16:48
+ */
+@Data
+public class AccountExcel implements Serializable {
+
+
+    private String accountId;
+
+    /**
+     * 开户行名称
+     */
+    private String bankName;
+
+    /**
+     * 余额
+     */
+    private String balance;
+
+    private String money;
+
+    private JsonObject profitName;
+}

+ 52 - 0
src/main/java/com/ydtech/modules/inv/model/po/InvSource.java

@@ -354,4 +354,56 @@ public class InvSource implements Serializable {
 
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
+
+
+    public void builder(){
+        if(null == this.getJqPremium()){
+            this.setJqPremium(new BigDecimal(0));
+        }
+        if(null == this.getSyPremium()){
+            this.setSyPremium(new BigDecimal(0));
+        }
+        if(null == this.getNonCarPremium()){
+            this.setNonCarPremium(new BigDecimal(0));
+        }
+        if(null == this.getJqPremiumRatio()){
+            this.setJqPremiumRatio(new BigDecimal(0));
+        }
+        if(null == this.getSyPremiumRatio()){
+            this.setSyPremiumRatio(new BigDecimal(0));
+        }
+        if(null == this.getNonCarPremiumRatio()){
+            this.setNonCarPremiumRatio(new BigDecimal(0));
+        }
+        if(null == this.getMaxJqReceivableRatio()){
+            this.setMaxJqReceivableRatio(new BigDecimal(0));
+        }
+        if(null == this.getMaxSyReceivableRatio()){
+            this.setMaxSyReceivableRatio(new BigDecimal(0));
+        }
+        if(null == this.getMaxNonCarReceivableRatio()){
+            this.setMaxNonCarReceivableRatio(new BigDecimal(0));
+        }
+        if(null == this.getJqPremiumTax()){
+            this.setJqPremiumTax(new BigDecimal(0));
+        }
+        if(null == this.getSyPremiumTax()){
+            this.setSyPremiumTax(new BigDecimal(0));
+        }
+        if(null == this.getNonCarPremiumTax()){
+            this.setNonCarPremiumTax(new BigDecimal(0));
+        }
+        if(null == this.getJqReceivableRatio()){
+            this.setJqReceivableRatio(new BigDecimal(0));
+        }
+        if(null == this.getSyReceivableRatio()){
+            this.setSyReceivableRatio(new BigDecimal(0));
+        }
+        if(null == this.getNonCarReceivableRatio()){
+            this.setNonCarReceivableRatio(new BigDecimal(0));
+        }
+        if(null == this.getSubsidyRatio()){
+            this.setSubsidyRatio(new BigDecimal(0));
+        }
+    }
 }

+ 3 - 0
src/main/java/com/ydtech/modules/inv/model/vo/InvAccountIncoiceQueryVo.java

@@ -32,6 +32,9 @@ public class InvAccountIncoiceQueryVo implements Serializable {
     @ExcelProperty("发票类型")
     private String invoiceType;
 
+    @ApiModelProperty(value = "已转清(0未清,1已清)")
+    private String clearFlag;
+
     private int pageNo;
 
     private int pageSize;

+ 15 - 0
src/main/java/com/ydtech/modules/inv/service/InvAccountOpService.java

@@ -0,0 +1,15 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.inv.model.InvAccountOp;
+
+/**
+ * (InvAccountOp)表服务接口
+ *
+ * @author makejava
+ * @since 2024-01-30 16:00:03
+ */
+public interface InvAccountOpService extends IService<InvAccountOp> {
+
+}
+

+ 3 - 1
src/main/java/com/ydtech/modules/inv/service/InvAccountOperateService.java

@@ -17,5 +17,7 @@ public interface InvAccountOperateService extends IService<InvAccountOperate> {
     HttpResult insert(InvAccountOperate invAccountOperate);
 
 
-    HttpResult insertIncoice(InvAccountOperate invAccountOperate,String bankCardNum);
+
+
+    HttpResult excelAccount(InvAccountOperate accountOperate);
 }

+ 11 - 0
src/main/java/com/ydtech/modules/inv/service/InvAccountProfitService.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.inv.model.InvAccountProfit;
+
+/**
+ * @author jianlong
+ * @date 2024-01-29 16:00
+ */
+public interface InvAccountProfitService extends IService<InvAccountProfit> {
+}

+ 1 - 0
src/main/java/com/ydtech/modules/inv/service/InvAccountService.java

@@ -22,4 +22,5 @@ public interface InvAccountService extends IService<InvAccount> {
 
     HttpResult selectByAccountName();
 
+    HttpResult selectAccountExcel(InvAccountQueryVo invAccountQueryVo);
 }

+ 0 - 19
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountCardServiceImpl.java

@@ -36,7 +36,6 @@ public class InvAccountCardServiceImpl extends ServiceImpl<InvAccountCardMapper,
 
     @Override
     public int insertInsAccountCard(InvAccountCard insAccountCard) {
-        InvAccount byId = invAccountService.getById(insAccountCard.getAccountId());
 
             //插入剩余额度以及笔数
         insAccountCard.setPubYearExcess(insAccountCard.getPubYearLines());
@@ -47,17 +46,6 @@ public class InvAccountCardServiceImpl extends ServiceImpl<InvAccountCardMapper,
         insAccountCard.setPubSingleLines(insAccountCard.getPubSingleLines());
         insAccountCard.setPriSingleLines(insAccountCard.getPriSingleLines());
 
-
-            //计算余额
-            BigDecimal count = new BigDecimal(insAccountCard.getFiscalProfit())
-                    .add(new BigDecimal(insAccountCard.getInsuranceProfit())) //财税公司利润
-                    .add(new BigDecimal(insAccountCard.getInsuranceProfit())) //保险公司回款
-                    .add(new BigDecimal(insAccountCard.getExteriorProfit()))//外部过账金额
-                    .add(new BigDecimal(insAccountCard.getParkProfit()))//园区利润
-                    .add(new BigDecimal(insAccountCard.getTianqinProfit()))//天勤利润
-                    .add(new BigDecimal(insAccountCard.getOtherProfit()))//其他利润
-                    .add(new BigDecimal(insAccountCard.getClearingProfit()));//结算卡
-        insAccountCard.setBalance(String.valueOf(count));
         return invAccountCardMapper.insert(insAccountCard);
     }
 
@@ -78,13 +66,6 @@ public class InvAccountCardServiceImpl extends ServiceImpl<InvAccountCardMapper,
         invAccountCard.setPubYearExcess(null);
         invAccountCard.setPriDayLinesExcess(null);
         invAccountCard.setPriYearExcess(null);
-        invAccountCard.setOtherProfit(null);
-        invAccountCard.setTianqinProfit(null);
-        invAccountCard.setParkProfit(null);
-        invAccountCard.setExteriorProfit(null);
-        invAccountCard.setClearingProfit(null);
-        invAccountCard.setInsuranceProfit(null);
-        invAccountCard.setFiscalProfit(null);
         invAccountCard.setSpend(null);
 
         InvAccountCard oldInvAccountCard = invAccountCardMapper.selectById(invAccountCard.getBankCardNum());

+ 62 - 7
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountExcelServiceImpl.java

@@ -1,12 +1,17 @@
 package com.ydtech.modules.inv.service.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
 import com.ydtech.constants.enums.inv.InvPayMethodEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.inv.dao.InvAccountExcelMapper;
 import com.ydtech.modules.inv.model.InvAccount;
@@ -21,9 +26,11 @@ import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+
+import java.io.File;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
 
 import static com.ydtech.modules.inv.utils.TransferUtils.*;
 
@@ -52,8 +59,19 @@ public class InvAccountExcelServiceImpl extends ServiceImpl<InvAccountExcelMappe
     public HttpResult excelAccount(List<String> idList) {
         List<InvAccountExcel> insAccountExcels = insAccountExcelMapper.selectBatchIds(idList);
         if (!insAccountExcels.isEmpty()) {
-            return HttpResult.ok("", easyExcelUtils.downAccountExcel(uploadFilePath, insAccountExcels));
+            File folder = new File(uploadFilePath);
+            if (folder.exists()){
+                return HttpResult.ok("", easyExcelUtils.downAccountExcel(uploadFilePath, insAccountExcels));
+            }else {
+                if (folder.mkdirs()){
+                    return HttpResult.ok("", easyExcelUtils.downAccountExcel(uploadFilePath, insAccountExcels));
+                }else {
+                    throw new SystemException("文件导出失败");
+                }
+            }
         }
+
+
         return HttpResult.error("导出失败");
     }
 
@@ -111,24 +129,61 @@ public class InvAccountExcelServiceImpl extends ServiceImpl<InvAccountExcelMappe
 
             //内部转账操作
             List<InvAccountOperate> list = new ArrayList<>();
+            JSONObject outProfit = invAccountExcel.getOutProfit();
+            JSONObject entProfit = invAccountExcel.getEntProfit();
+            InvAccountExcel out = outJsonUtil(invAccountExcel, outProfit);
+            InvAccountExcel ent = entJsonUtil(invAccountExcel, entProfit);
+
+
             //支出信息
-            list.add(insertOutAccountOperate(invAccountExcel));
+            list.add(insertOutAccountOperate(out));
             //收入信息
-            list.add(insertRevenueAccountOperate(invAccountExcel));
+            list.add(insertRevenueAccountOperate(ent));
+
             if (!insAccountOperateService.saveBatch(list)){
                 throw new RuntimeException("添加转账信息失败");
             }
+            //重新将值赋值回去方便编辑
+            invAccountExcel.setOutProfit(outProfit);
+            invAccountExcel.setEntProfit(entProfit);
         } else {
             //内转外部转账
             List<InvAccountCard> invAccounts = enterDeTransfer(outAccountCard, enterAccountCard, invAccountExcel);
             if (!invAccountCardService.saveBatch(invAccounts)){
                 throw new RuntimeException("添加转账信息失败");
             }
-            insAccountOperateService.save(insertOutAccountOperate(invAccountExcel));
+            JSONObject outProfit = invAccountExcel.getOutProfit();
+            InvAccountExcel out = outJsonUtil(invAccountExcel, outProfit);
+            insAccountOperateService.save(insertOutAccountOperate(out));
+
+            //重新将值赋值回去方便编辑
+            invAccountExcel.setOutProfit(outProfit);
         }
+
+
         return HttpResult.ok("", insAccountExcelMapper.updateById(invAccountExcel));
     }
 
+    private InvAccountExcel outJsonUtil(InvAccountExcel invAccountExcel, JSONObject outProfit) {
+        JSONObject jsonObject = new JSONObject();
+        for (Map.Entry<String, Object> entry : outProfit.entrySet()){
+            BigDecimal multiply = new BigDecimal(String.valueOf(entry.getValue())).multiply(new BigDecimal(invAccountExcel.getApplyAmount())).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            String string = multiply.negate().toString();
+            jsonObject.put(entry.getKey(), string);
+        }
+        invAccountExcel.setOutProfit(jsonObject);
+        return invAccountExcel;
+    }
+    private InvAccountExcel entJsonUtil(InvAccountExcel invAccountExcel, JSONObject outProfit) {
+        JSONObject jsonObject = new JSONObject();
+        for (Map.Entry<String, Object> entry : outProfit.entrySet()){
+            BigDecimal multiply = new BigDecimal(String.valueOf(entry.getValue())).multiply(new BigDecimal(invAccountExcel.getApplyAmount())).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            jsonObject.put(entry.getKey(), multiply);
+        }
+        invAccountExcel.setOutProfit(jsonObject);
+        return invAccountExcel;
+    }
+
 
 }
 

+ 164 - 33
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountIncoiceServiceImpl.java

@@ -1,20 +1,18 @@
 package com.ydtech.modules.inv.service.impl;
 
 
-
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
 import com.ydtech.constants.enums.inv.InvoiceTypeEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.inv.dao.InvAccountIncoiceMapper;
-import com.ydtech.modules.inv.model.InvAccountCard;
-import com.ydtech.modules.inv.model.InvAccountIncoice;
-import com.ydtech.modules.inv.model.InvAccountOperate;
+import com.ydtech.modules.inv.model.*;
 import com.ydtech.modules.inv.model.vo.InvAccountIncoiceQueryVo;
-import com.ydtech.modules.inv.service.InvAccountCardService;
-import com.ydtech.modules.inv.service.InvAccountIncoiceService;
-import com.ydtech.modules.inv.service.InvAccountOperateService;
+import com.ydtech.modules.inv.service.*;
 import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -22,9 +20,12 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
+import java.io.File;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import static com.ydtech.modules.inv.utils.TransferUtils.*;
 
@@ -43,6 +44,11 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
     private InvAccountCardService invAccountCardService;
     @Autowired
     private InvAccountOperateService invAccountOperateService;
+    @Autowired
+    private InvAccountService invAccountService;
+
+    @Autowired
+    private InvAccountOpService invAccountOpService;
 
     @Value("${upload.file.path}")
     String uploadFilePath;
@@ -51,7 +57,7 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
     public HttpResult insertInvAccountIncoice(InvAccountIncoice invAccountIncoice) {
         BigDecimal tax = getBigDecimal(invAccountIncoice);
         //不含税金额
-        BigDecimal noHasTax  = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax);
+        BigDecimal noHasTax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).subtract(tax);
         invAccountIncoice.setNotPayoutMoney(invAccountIncoice.getInvoiceMoney());
 
         //税额
@@ -59,11 +65,12 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
         //不含税金额
         invAccountIncoice.setNoHasTax(tax.toString());
 
-        return  HttpResult.ok(invAccountIncoiceMapper.insert(invAccountIncoice));
+        return HttpResult.ok(invAccountIncoiceMapper.insert(invAccountIncoice));
     }
 
     /**
      * 新增收入
+     *
      * @param invAccountIncoice
      * @return
      */
@@ -71,56 +78,157 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
     public HttpResult updateInvAccountIncoice(InvAccountIncoice invAccountIncoice) {
         InvAccountIncoice invAccountIncoice1 = invAccountIncoiceMapper.selectById(invAccountIncoice.getInvoiceId());
 
-        if(new BigDecimal(invAccountIncoice1.getInvoiceMoney()).subtract(new BigDecimal(invAccountIncoice1.getPayoutMoney()).add(new BigDecimal(invAccountIncoice.getPayoutMoney()))).compareTo(new BigDecimal("0")) < 0){
+        if (new BigDecimal(invAccountIncoice1.getInvoiceMoney()).subtract(new BigDecimal(invAccountIncoice1.getPayoutMoney()).add(new BigDecimal(invAccountIncoice.getPayoutMoney()))).compareTo(new BigDecimal("0")) < 0) {
             throw new SystemException("进账金额大于开票金额");
         }
 
         //进账卡号
-        String bankCardNum = invAccountIncoice1.getBankCardNum();
+        String bankCardNum = invAccountIncoice1.getRevBankCardNum();
         //进账金额
-        String payoutMoney = new BigDecimal(invAccountIncoice.getPayoutMoney()).add(new BigDecimal(invAccountIncoice1.getPayoutMoney())).toString();
-        invAccountIncoice1.setPayoutMoney(payoutMoney);
+        String payoutMoney = new BigDecimal(invAccountIncoice.getPayoutMoney()).toString();
+        invAccountIncoice1.setPayoutMoney(new BigDecimal(invAccountIncoice1.getPayoutMoney()).add(new BigDecimal(payoutMoney)).toString());
         invAccountIncoice1.setNotPayoutMoney(new BigDecimal(invAccountIncoice1.getInvoiceMoney()).subtract(new BigDecimal(payoutMoney)).toString());
         invAccountIncoice1.setPayoutTime(invAccountIncoice.getPayoutTime());
 
+        if (invAccountIncoice1.getNotPayoutMoney().equals("0")) {
+            invAccountIncoice1.setClearFlag("1");
+        }
+
 
         //修改发票增加卡的收入
         InvAccountOperate invAccountOperate = new InvAccountOperate();
         invAccountOperate.setEnterCardId(bankCardNum);
         invAccountOperate.setApplyAmount(payoutMoney);
-        invAccountOperate.setRemark(invAccountIncoice1.getRemark());
         invAccountOperate.setRevenueOutlay("0");
         invAccountOperate.setFundFlow(invAccountIncoice.getFundFlow());
         invAccountOperate.setPayMethod(invAccountIncoice.getPayMethod());
         invAccountOperate.setCompany(invAccountIncoice1.getOtherUnit());
         invAccountOperate.setFundUse(invAccountIncoice.getFundUse());
+        invAccountOperate.setRemark(invAccountIncoice.getRemark());
+        invAccountOperate.setFundFen(invAccountIncoice.getFundFen());
         invAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
+        //计算收入百分比
+        JSONObject entProfit = invAccountIncoice.getEntProfit();
+        JSONObject jsonObject = new JSONObject();
+        for (Map.Entry<String, Object> entry : entProfit.entrySet()) {
+            BigDecimal multiply = new BigDecimal(String.valueOf(entry.getValue())).multiply(new BigDecimal(invAccountIncoice.getPayoutMoney())).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            jsonObject.put(entry.getKey(), multiply);
+        }
+        invAccountOperate.setOutProfit(jsonObject);
+        invAccountOperate.setEnterCardId(invAccountIncoice.getRevBankCardNum());
+
+        InvAccount account = invAccountService.getById(invAccountIncoice1.getAccountId());
+        InvAccountCard entCard = invAccountCardService.getById(invAccountIncoice1.getRevBankCardNum());
+        InvAccountCard outCard = invAccountCardService.getById(invAccountIncoice1.getOutBankCardNum());
+
+
+        List<InvAccountOp> list = new ArrayList<>();
+        for (Map.Entry<String, Object> entry:invAccountOperate.getOutProfit().entrySet()){
+            InvAccountOp invAccountOp = new InvAccountOp();
+            invAccountOp.setAccountId(invAccountIncoice1.getAccountId());
+            invAccountOp.setAccountName(account.getAccountName());
+            invAccountOp.setCardNum(entCard.getBankCardNum());
+            invAccountOp.setCardName(entCard.getBankName());
+            invAccountOp.setProfit(entry.getKey());
+            invAccountOp.setMoney(entry.getValue().toString());
+            invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
+            list.add(invAccountOp);
+        }
 
-        invAccountIncoiceMapper.updateById(invAccountIncoice1);
 
 
-        return  invAccountOperateService.insertIncoice(invAccountOperate,invAccountIncoice1.getBankCardNum());
-    }
+        //支出操作
+        InvAccountOperate outInvAccountOperate = new InvAccountOperate();
+        outInvAccountOperate.setEnterCardId(invAccountIncoice1.getOutBankCardNum());
+        outInvAccountOperate.setApplyAmount(payoutMoney);
+        outInvAccountOperate.setRevenueOutlay("1");
+        outInvAccountOperate.setFundFlow(invAccountIncoice.getFundFlow());
+        outInvAccountOperate.setPayMethod(invAccountIncoice.getPayMethod());
+        outInvAccountOperate.setCompany(invAccountIncoice1.getOtherUnit());
+        outInvAccountOperate.setFundUse(invAccountIncoice.getFundUse());
+        outInvAccountOperate.setFundFen(invAccountIncoice.getFundFen());
+        outInvAccountOperate.setRemark(invAccountIncoice.getRemark());
+        outInvAccountOperate.setInvoiceId(invAccountIncoice1.getInvoiceId());
+        //计算支出百分比
+        JSONObject outProfit = invAccountIncoice.getOutProfit();
+        JSONObject outJsonObject = new JSONObject();
+        for (Map.Entry<String, Object> entry : outProfit.entrySet()) {
+            BigDecimal multiply = new BigDecimal(String.valueOf(entry.getValue())).multiply(new BigDecimal(invAccountIncoice.getPayoutMoney())).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            outJsonObject.put(entry.getKey(), multiply.negate());
+        }
+        outInvAccountOperate.setOutProfit(outJsonObject);
+        invAccountOperate.setEnterCardId(invAccountIncoice.getOutBankCardNum());
+
+        List<InvAccountOperate> invAccountOperateList = new ArrayList<>();
+        invAccountOperateList.add(outInvAccountOperate);
+        invAccountOperateList.add(invAccountOperate);
+
+
+        for (Map.Entry<String, Object> entry:outInvAccountOperate.getOutProfit().entrySet()){
+            InvAccountOp invAccountOp = new InvAccountOp();
+            invAccountOp.setAccountId(invAccountIncoice1.getAccountId());
+            invAccountOp.setAccountName(account.getAccountName());
+            invAccountOp.setCardNum(outCard.getBankCardNum());
+            invAccountOp.setCardName(outCard.getBankName());
+            invAccountOp.setProfit(entry.getKey());
+            invAccountOp.setMoney(entry.getValue().toString());
+            invAccountOp.setInvoiceId(invAccountIncoice1.getInvoiceId());
+            list.add(invAccountOp);
+        }
 
 
+        invAccountOpService.saveBatch(list);
+
+
+        //支出卡号
+        String outBankCardNum = invAccountIncoice1.getOutBankCardNum();
+        //支出账户
+        InvAccountCard outInvAccountCard = invAccountCardService.getById(outBankCardNum);
+        //收入账户
+        InvAccountCard revInvAccountCard = invAccountCardService.getById(bankCardNum);
+        if (outInvAccountCard == null || revInvAccountCard == null) {
+            throw new SystemException("支出账户或收入账户为空");
+        }
+        //判断收款方是内部还是外部
+        InvAccount revInvAccount = invAccountService.getById(revInvAccountCard.getAccountId());
+
+        //转账
+        if (revInvAccount.getOuterFlag().equals("0")) {
+            InvAccountExcel invAccountExcel = new InvAccountExcel();
+            invAccountExcel.setApplyAmount(invAccountIncoice.getPayoutMoney());
+            List<InvAccountCard> invAccountCards = insideTransfer(outInvAccountCard, revInvAccountCard, invAccountExcel);
+            invAccountCardService.updateBatchById(invAccountCards);
+            invAccountOperateService.saveBatch(invAccountOperateList);
+
+        } else {
+            InvAccountExcel invAccountExcel = new InvAccountExcel();
+            invAccountExcel.setOutAccountQuality(revInvAccount.getOuterFlag());
+            invAccountExcel.setApplyAmount(invAccountIncoice.getPayoutMoney());
+            List<InvAccountCard> invAccountCards = enterDeTransfer(outInvAccountCard, revInvAccountCard, invAccountExcel);
+            invAccountCardService.updateBatchById(invAccountCards);
+            invAccountOperateService.saveBatch(invAccountOperateList);
+        }
+
+
+        return HttpResult.ok(invAccountIncoiceMapper.updateById(invAccountIncoice1));
+    }
 
 
     private static BigDecimal getBigDecimal(InvAccountIncoice invAccountIncoice) {
-        if (invAccountIncoice.getRate().isEmpty()){
+        if (invAccountIncoice.getRate().isEmpty()) {
             throw new SystemException("请填写税率");
         }
 
-        if (invAccountIncoice.getInvoiceMoney().isEmpty()){
+        if (invAccountIncoice.getInvoiceMoney().isEmpty()) {
             throw new SystemException("请填写开票金额");
         }
-        if (invAccountIncoice.getPayoutMoney().isEmpty()){
+        if (invAccountIncoice.getPayoutMoney().isEmpty()) {
             throw new SystemException("请填写进账金额");
         }
         //税率百分数转为小数
         BigDecimal divide = new BigDecimal(invAccountIncoice.getRate()).divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
         //税额
-        BigDecimal tax = new BigDecimal(invAccountIncoice.getInvoiceMoney()).divide((divide.add(new BigDecimal("1"))), 2, RoundingMode.HALF_UP);
-        return tax;
+        return new BigDecimal(invAccountIncoice.getInvoiceMoney()).divide((divide.add(new BigDecimal("1"))), 2, RoundingMode.HALF_UP);
     }
 
     @Override
@@ -128,23 +236,36 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
         //发票信息
         InvAccountIncoice enInvAccountIncoice = invAccountIncoiceMapper.selectById(invAccountIncoice.getInvoiceId());
         //回滚收入
-        InvAccountCard enterAccount = invAccountCardService.getById(enInvAccountIncoice.getBankCardNum());
+        InvAccountCard enterAccount = invAccountCardService.getById(enInvAccountIncoice.getRevBankCardNum());
+        InvAccountCard outAccount = invAccountCardService.getById(enInvAccountIncoice.getOutBankCardNum());
 
         //新增收入回滚操作
-        InvAccountCard invAccount = quashOutsideTransfer(enterAccount, enInvAccountIncoice);
+        List<InvAccountCard> invAccount = quashOutsideTransfer(outAccount, enterAccount, enInvAccountIncoice);
         InvAccountOperate invAccountOperate = new InvAccountOperate();
         invAccountOperate.setRevenueOutlay("1");
         invAccountOperate.setApplyAmount("发票撤销 收入撤销");
         invAccountOperate.setCompany(enInvAccountIncoice.getInvoiceBy());
 
         LambdaQueryWrapper<InvAccountOperate> lambdaQuery = new LambdaQueryWrapper<>();
+
         lambdaQuery.eq(InvAccountOperate::getInvoiceId, invAccountIncoice.getInvoiceId());
 
+        LambdaQueryWrapper<InvAccountOperate> lambdaQuery1 = new LambdaQueryWrapper<>();
+
+        lambdaQuery1.eq(InvAccountOperate::getInvoiceId, invAccountIncoice.getInvoiceId());
+
+        LambdaQueryWrapper<InvAccountOp> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+
+        lambdaQueryWrapper.eq(InvAccountOp::getInvoiceId, invAccountIncoice.getInvoiceId());
+
+
         try {
             invAccountIncoiceMapper.updateById(invAccountIncoice);
-            invAccountCardService.updateById(invAccount);
+            invAccountCardService.updateBatchById(invAccount);
             invAccountOperateService.remove(lambdaQuery);
-        }catch (Exception e){
+            invAccountOperateService.remove(lambdaQuery1);
+            invAccountOpService.remove(lambdaQueryWrapper);
+        } catch (Exception e) {
             return HttpResult.error("撤销失败");
         }
 
@@ -161,7 +282,7 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
                 .eq(InvAccountIncoice::getDelFlag, "0")
                 .eq(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceType()), InvAccountIncoice::getInvoiceType,
                         invAccountIncoiceQueryVo.getInvoiceType())
-                .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getOtherUnit()), InvAccountIncoice::getOtherUnit,invAccountIncoiceQueryVo.getOtherUnit());
+                .like(!StringUtils.isEmpty(invAccountIncoiceQueryVo.getOtherUnit()), InvAccountIncoice::getOtherUnit, invAccountIncoiceQueryVo.getOtherUnit());
 
 
         if (!ObjectUtils.isEmpty(invAccountIncoiceQueryVo.getInvoiceTime())) {
@@ -171,20 +292,30 @@ public class InvAccountIncoiceServiceImpl extends ServiceImpl<InvAccountIncoiceM
 
         //解决时间格式报错问题
         invAccountIncoices.forEach(invAccountIncoice -> {
-            if (invAccountIncoice.getPayoutTime() != null){
+            if (invAccountIncoice.getPayoutTime() != null) {
                 invAccountIncoice.setPayoutDate(invAccountIncoice.getPayoutTime().toString());
             }
-            if (invAccountIncoice.getInvoiceTime() != null){
+            if (invAccountIncoice.getInvoiceTime() != null) {
                 invAccountIncoice.setInvoiceDate(invAccountIncoice.getInvoiceTime().toString());
             }
-            if (invAccountIncoice.getInvoiceType() != null){
+            if (invAccountIncoice.getInvoiceType() != null) {
                 invAccountIncoice.setInvoiceType(InvoiceTypeEnum.getNameByCode(invAccountIncoice.getInvoiceType()));
             }
-            if (invAccountIncoice.getRate() != null){
-                invAccountIncoice.setRate(invAccountIncoice.getRate()+"%");
+            if (invAccountIncoice.getRate() != null) {
+                invAccountIncoice.setRate(invAccountIncoice.getRate() + "%");
             }
         });
-        return EasyExcelUtils.downExcel(uploadFilePath,InvAccountIncoice.class,invAccountIncoices);
+        File folder = new File(uploadFilePath);
+        if (folder.exists()){
+            return EasyExcelUtils.downExcel(uploadFilePath, InvAccountIncoice.class, invAccountIncoices);
+        }else {
+            if (folder.mkdirs()){
+                return EasyExcelUtils.downExcel(uploadFilePath, InvAccountIncoice.class, invAccountIncoices);
+            }else {
+                throw new SystemException("文件导出失败");
+            }
+
+        }
     }
 
 }

+ 19 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOpServiceImpl.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.InvAccountOpMapper;
+import com.ydtech.modules.inv.model.InvAccountOp;
+import com.ydtech.modules.inv.service.InvAccountOpService;
+import org.springframework.stereotype.Service;
+
+/**
+ * (InvAccountOp)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-01-30 16:00:03
+ */
+@Service("invAccountOpService")
+public class InvAccountOpServiceImpl extends ServiceImpl<InvAccountOpMapper, InvAccountOp> implements InvAccountOpService {
+
+}
+

+ 75 - 21
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountOperateServiceImpl.java

@@ -7,18 +7,21 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.inv.InvPayMethodEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
-import com.ydtech.modules.inv.model.InvAccount;
-import com.ydtech.modules.inv.model.InvAccountCard;
-import com.ydtech.modules.inv.model.InvAccountExcel;
-import com.ydtech.modules.inv.model.InvAccountOperate;
-import com.ydtech.modules.inv.service.InvAccountCardService;
-import com.ydtech.modules.inv.service.InvAccountOperateService;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.inv.model.*;
+import com.ydtech.modules.inv.service.*;
 import com.ydtech.modules.inv.dao.InvAccountOperateMapper;
-import com.ydtech.modules.inv.service.InvAccountService;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 import static com.ydtech.modules.inv.utils.TransferUtils.outsideTransfer;
 
@@ -35,11 +38,21 @@ public class InvAccountOperateServiceImpl extends ServiceImpl<InvAccountOperateM
     private InvAccountOperateMapper insAccountOperateMapper;
 
     @Autowired
-    private InvAccountService insAccountService;
+    private InvAccountOpService invAccountOpService;
 
     @Autowired
     private InvAccountCardService invAccountCardService;
 
+    @Autowired
+    private InvAccountService invAccountService;
+
+    @Autowired
+    private InvAccountProfitService invAccountProfitService;
+
+
+    @Value("${upload.file.path}")
+    String uploadFilePath;
+
     /**
      * 查询操作列表
      *
@@ -77,32 +90,73 @@ public class InvAccountOperateServiceImpl extends ServiceImpl<InvAccountOperateM
     public HttpResult insert(InvAccountOperate invAccountOperate) {
         InvAccountCard enterAccount = invAccountCardService.getById(invAccountOperate.getEnterCardId());
         InvAccountCard invAccount = outsideTransfer(enterAccount, invAccountOperate);
+        InvAccount account = invAccountService.getById(invAccount.getAccountId());
 
         if (!invAccountCardService.updateById(invAccount)){
 
             return HttpResult.error("新增收入失败");
         }
+        invAccountOperate.setCreateTime(LocalDateTime.now());
         insAccountOperateMapper.insert(invAccountOperate);
+        List<InvAccountOp> list = new ArrayList<>();
+        for (Map.Entry<String, Object> entry:invAccountOperate.getOutProfit().entrySet()){
+            InvAccountOp invAccountOp = new InvAccountOp();
+            invAccountOp.setAccountId(enterAccount.getAccountId());
+            invAccountOp.setAccountName(account.getAccountName());
+            invAccountOp.setCardNum(invAccount.getBankCardNum());
+            invAccountOp.setCardName(invAccount.getBankName());
+            invAccountOp.setProfit(entry.getKey());
+            invAccountOp.setMoney(entry.getValue().toString());
+            list.add(invAccountOp);
+        }
+        invAccountOpService.saveBatch(list);
         return HttpResult.ok("新增收入成功");
     }
 
-    /**
-     * 外部转内部
-     * @param invAccountOperate
-     * @return
-     */
     @Override
-    public HttpResult insertIncoice(InvAccountOperate invAccountOperate,String bankCardNum) {
-        InvAccountCard enterAccount = invAccountCardService.getById(invAccountOperate.getEnterCardId());
-        InvAccountCard invAccount = outsideTransfer(enterAccount, invAccountOperate);
+    public HttpResult excelAccount(InvAccountOperate accountOperate) {
+        List<InvAccountOperate> invAccountOperates = insAccountOperateMapper.selectInsAccountOperateList(accountOperate);
+        List<InvAccountProfit> list = invAccountProfitService.list();
 
-        if (!invAccountCardService.updateById(invAccount)){
 
-            return HttpResult.error("新增收入失败");
+
+
+
+        for (InvAccountOperate record:invAccountOperates){
+            StringBuilder a = new StringBuilder();
+            if (record.getPayMethod() != null){
+                String[] split = record.getPayMethod().split(",");
+                for (String i : split) {
+                    a.append(InvPayMethodEnum.getNameByCode(i)).append(",");
+                }
+                record.setPayMethod(a.toString());
+            }
+            if (record.getOutProfit()!=null) {
+                StringBuffer buffer = new StringBuffer();
+                for (Map.Entry<String, Object> entry : record.getOutProfit().entrySet()){
+
+                    list.forEach(invAccountProfit -> {
+                        if (invAccountProfit.getProfitEng().equals(entry.getKey())) {
+                            buffer.append(invAccountProfit.getProfitName()).append(" ");
+                        }
+                    });
+
+                }
+                record.setPlate(buffer.toString());
+            }
         }
-        invAccount.setBankCardNum(bankCardNum);
-        insAccountOperateMapper.insert(invAccountOperate);
-        return HttpResult.ok("新增收入成功");
+        File folder = new File(uploadFilePath);
+        if (folder.exists()){
+            return HttpResult.ok("", EasyExcelUtils.downExcel(uploadFilePath, InvAccountOperate.class, invAccountOperates));
+        }else {
+            if (folder.mkdirs()){
+                return HttpResult.ok("", EasyExcelUtils.downExcel(uploadFilePath, InvAccountOperate.class, invAccountOperates));
+            }else {
+                throw new SystemException("文件导出失败");
+            }
+
+        }
+
     }
 
 }

+ 54 - 9
src/main/java/com/ydtech/modules/inv/service/impl/InvAccountServiceImpl.java

@@ -5,18 +5,28 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.inv.dao.InvAccountMapper;
-import com.ydtech.modules.inv.model.InvAccount;
+import com.ydtech.modules.inv.dao.InvAccountOperateMapper;
+import com.ydtech.modules.inv.model.*;
+import com.ydtech.modules.inv.model.excel.AccountExcel;
 import com.ydtech.modules.inv.model.vo.InvAccountQueryVo;
+import com.ydtech.modules.inv.service.InvAccountCardService;
+import com.ydtech.modules.inv.service.InvAccountOpService;
+import com.ydtech.modules.inv.service.InvAccountProfitService;
 import com.ydtech.modules.inv.service.InvAccountService;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
 import com.ydtech.modules.inv.utils.LocalDateTimeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.File;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjusters;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -33,6 +43,15 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
     @Autowired
     private InvAccountMapper insAccountMapper;
 
+    @Autowired
+    private InvAccountProfitService invAccountProfitService;
+
+    @Autowired
+    private InvAccountOpService invAccountOpService;
+
+    @Value("${upload.file.path}")
+    String uploadFilePath;
+
     /**
      * 分页查询
      *
@@ -62,10 +81,13 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
                         .filter(ord -> Objects.equals(rel.getAccountId(), ord.getAccountId()))
                         .findFirst()
                         .map(ord -> {
-                            if (ord.getInvoicingAmountExcess() != null){
+                            if (ord.getInvoicingAmountExcess() != null) {
+
                                 rel.setQuarterAmountExcess(new BigDecimal("300000").subtract(new BigDecimal("5000000").subtract(new BigDecimal(ord.getInvoicingAmountExcess()))).toString());
-                            }else{
-                                rel.setQuarterAmountExcess("300000");
+                            } else {
+                                if (!rel.getBusinessQuality().equals("0")) {
+                                    rel.setQuarterAmountExcess("300000");
+                                }
                             }
                             return rel;
                         }).orElse(null)
@@ -79,7 +101,9 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
                         .findFirst()
                         .map(ord -> {
                             if (ord.getSumInvoicingAmount() != null) {
+
                                 rel.setSumInvoicingAmount(new BigDecimal(ord.getSumInvoicingAmount()).add(new BigDecimal(ord.getSumInvoicingAmount())).toString());
+
                             }
                             return rel;
                         }).orElse(null)
@@ -87,17 +111,22 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
 
 
         collect1.forEach(invAccount -> {
-            if (invAccount != null){
+            if (invAccount != null) {
                 if (invAccount.getInvAccountCardList().size() < 2) {
                     if (invAccount.getInvAccountCardList().get(0).getBankCardNum() == null) {
                         invAccount.setInvAccountCardList(null);
                     }
                 }
+                if (invAccount.getBusinessQuality().equals("3")) {
+                    invAccount.setQuarterAmountExcess(null);
+                    invAccount.setSumInvoicingAmount(null);
+                    invAccount.setInvoicingAmountExcess(null);
+                }
             }
         });
         IPage ipage = PageRequest.buildPageRequest(pageRequest);
-        ipage.setRecords(collect1.stream().skip((invAccountQueryVo.getPageNo()-1)*invAccountQueryVo.getPageSize()).limit(invAccountQueryVo.getPageSize()).
-                        collect(Collectors.toList()));
+        ipage.setRecords(collect1.stream().skip((invAccountQueryVo.getPageNo() - 1) * invAccountQueryVo.getPageSize()).limit(invAccountQueryVo.getPageSize()).
+                collect(Collectors.toList()));
         ipage.setTotal(collect1.size());
 
 
@@ -105,8 +134,6 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
     }
 
 
-
-
     /**
      * 根据户名分类
      *
@@ -131,6 +158,24 @@ public class InvAccountServiceImpl extends ServiceImpl<InvAccountMapper, InvAcco
         return HttpResult.error("查询错误");
     }
 
+    @Override
+    public HttpResult selectAccountExcel(InvAccountQueryVo invAccountQueryVo) {
+        List<InvAccount> insAccounts = insAccountMapper.selectAccountsList(invAccountQueryVo);
+        List<InvAccountProfit> invAccountProfitList = invAccountProfitService.list();
+        List<InvAccountOp> list = invAccountOpService.list();
+
+        File folder = new File(uploadFilePath);
+        if (folder.exists()){
+            return HttpResult.ok( EasyExcelUtils.noModelWrite(uploadFilePath, invAccountProfitList, insAccounts, list));
+        }else {
+            if (folder.mkdirs()){
+                return HttpResult.ok( EasyExcelUtils.noModelWrite(uploadFilePath, invAccountProfitList, insAccounts, list));
+            }else {
+                throw new SystemException("文件导出失败");
+            }
+        }
+    }
+
 }
 
 

+ 16 - 2
src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java

@@ -484,6 +484,12 @@ public class InvReceivableServiceImpl implements InvReceivableService {
         invSource.setSyPremium(invSource.getSyPremiumTax().divide(tax,2, RoundingMode.HALF_UP));
         //处理非车不含税
         invSource.setNonCarPremium(invSource.getNonCarPremiumTax().divide(tax,2, RoundingMode.HALF_UP));
+
+        //处理非跟单比例
+        invSource.setJqNonCopyingRatio(invSource.getJqReceivableRatio().subtract(invSource.getJqPremiumRatio()));
+        invSource.setSyNonCopyingRatio(invSource.getSyReceivableRatio().subtract(invSource.getSyPremiumRatio()));
+        invSource.setNonCarNonCopyingRatio(invSource.getNonCarReceivableRatio().subtract(invSource.getNonCarPremiumRatio()));
+
         //处理手续费金额
         invSource.setPremium(
                 invSource.getJqPremium().multiply(invSource.getJqPremiumRatio())
@@ -604,9 +610,10 @@ public class InvReceivableServiceImpl implements InvReceivableService {
     @Override
     public Boolean updateSettlement(InvSettlementSource invSettlementSource) {
         //处理结算金额
-        invSettlementSource.setSettlementAmount(invSettlementSource.getJqPremiumTax().multiply(invSettlementSource.getCompulsoryExportRatio()
+        BigDecimal settlementAmount = invSettlementSource.getJqPremiumTax().multiply(invSettlementSource.getCompulsoryExportRatio())
                 .add(invSettlementSource.getSyPremiumTax().multiply(invSettlementSource.getCommercialExportRatio()))
-                .add(invSettlementSource.getNonCarPremiumTax().multiply(invSettlementSource.getNonVehicleExportRatio()))));
+                .add(invSettlementSource.getNonCarPremiumTax().multiply(invSettlementSource.getNonVehicleExportRatio()));
+        invSettlementSource.setSettlementAmount(settlementAmount);
         return invSettlementSourceMapper.updateById(invSettlementSource) > 0 ? true : false;
     }
 
@@ -671,6 +678,7 @@ public class InvReceivableServiceImpl implements InvReceivableService {
     @Override
     public Boolean addReceivable(InvSource invSource) {
         invSource.setId(IdGenerate.nextId());
+        invSource.builder();
         BigDecimal tax = new BigDecimal(1.06);
         //处理交强不含税
         invSource.setJqPremium(invSource.getJqPremiumTax().divide(tax,2, RoundingMode.HALF_UP));
@@ -678,6 +686,12 @@ public class InvReceivableServiceImpl implements InvReceivableService {
         invSource.setSyPremium(invSource.getSyPremiumTax().divide(tax,2, RoundingMode.HALF_UP));
         //处理非车不含税
         invSource.setNonCarPremium(invSource.getNonCarPremiumTax().divide(tax,2, RoundingMode.HALF_UP));
+
+        //处理非跟单比例
+        invSource.setJqNonCopyingRatio(invSource.getJqReceivableRatio().subtract(invSource.getJqPremiumRatio()));
+        invSource.setSyNonCopyingRatio(invSource.getSyReceivableRatio().subtract(invSource.getSyPremiumRatio()));
+        invSource.setNonCarNonCopyingRatio(invSource.getNonCarReceivableRatio().subtract(invSource.getNonCarPremiumRatio()));
+
         //处理手续费金额
         invSource.setPremium(
                 invSource.getJqPremium().multiply(invSource.getJqPremiumRatio())

+ 18 - 0
src/main/java/com/ydtech/modules/inv/service/impl/invAccountProfitServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.inv.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.invAccountProfitMapper;
+import com.ydtech.modules.inv.model.InvAccountProfit;
+import com.ydtech.modules.inv.service.InvAccountProfitService;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * @author jianlong
+ * @date 2024-01-29 16:00
+ */
+@Service
+public class invAccountProfitServiceImpl extends ServiceImpl<invAccountProfitMapper, InvAccountProfit>
+        implements InvAccountProfitService {
+}

+ 64 - 2
src/main/java/com/ydtech/modules/inv/utils/EasyExcelUtils.java

@@ -1,9 +1,10 @@
 package com.ydtech.modules.inv.utils;
 
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.util.ListUtils;
 import com.alibaba.excel.write.builder.ExcelWriterBuilder;
 import com.ydtech.constants.enums.inv.InvPayMethodEnum;
-import com.ydtech.modules.inv.model.InvAccountExcel;
+import com.ydtech.modules.inv.model.*;
 import com.ydtech.modules.inv.model.excel.InvSettlementSourceExcel;
 import com.ydtech.modules.inv.model.excel.InvSourceExcel;
 import com.ydtech.modules.inv.service.InvAccountExcelService;
@@ -12,6 +13,7 @@ import com.ydtech.modules.inv.utils.excel.InvSourceDataListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -34,6 +36,67 @@ public class EasyExcelUtils {
         return file;
     }
 
+    /**
+     * 不创建对象的写
+     */
+    public static String noModelWrite(String uploadFilePath, List<InvAccountProfit> invAccountProfitList, List<InvAccount> invAccounts, List<InvAccountOp> invAccountOpList) {
+        // 写法1
+        String file = System.currentTimeMillis() + ".xlsx";
+        String fileName = uploadFilePath + file;
+        // 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
+        EasyExcel.write(fileName).head(head(invAccountProfitList)).sheet("1").doWrite(dataList(invAccounts, invAccountOpList, invAccountProfitList));
+        return file;
+    }
+
+    private static List<List<String>> head(List<InvAccountProfit> invAccountProfitList) {
+        List<List<String>> list = new ArrayList<>(3 + invAccountProfitList.size());
+        List<String> head1 = ListUtils.newArrayList();
+        head1.add("户名");
+        List<String> head2 = ListUtils.newArrayList();
+        head2.add("开户银行");
+        List<String> head3 = ListUtils.newArrayList();
+        head3.add("银行卡余额");
+        list.add(0, head1);
+        list.add(1, head2);
+        list.add(2, head3);
+        invAccountProfitList.forEach(invAccountProfit -> {
+            List<String> head0 = ListUtils.newArrayList();
+            head0.add(invAccountProfit.getProfitName());
+            list.add(head0);
+        });
+
+
+        return list;
+    }
+
+    private static List<List<Object>> dataList(List<InvAccount> invAccounts, List<InvAccountOp> invAccountOpList, List<InvAccountProfit> invAccountProfitList) {
+        List<List<Object>> list = ListUtils.newArrayList();
+        invAccounts.forEach(invAccount -> {
+            List<Object> data = ListUtils.newArrayList();
+            invAccount.getInvAccountCardList().forEach(invAccountCard -> {
+                if (invAccountCard.getBankCardNum() != null) {
+                    data.add(invAccount.getAccountName());
+                    data.add(invAccountCard.getBankName());
+                    data.add(invAccountCard.getBalance());
+
+                    invAccountProfitList.forEach(invAccountProfitList1 -> {
+                        String a = "0";
+                        for (InvAccountOp invAccountProfit :  invAccountOpList){
+                            if (invAccountProfitList1.getProfitEng().equals(invAccountProfit.getProfit())&&invAccountCard.getBankCardNum().equals(invAccountProfit.getCardNum())) {
+                                a = new BigDecimal(a).add(new BigDecimal(invAccountProfit.getMoney())).toString();
+                            }
+                        }
+                        data.add(a);
+                    });
+                    list.add(data);
+                }
+            });
+
+        });
+        return list;
+    }
+
+
     public static String downExcel(String uploadFilePath, String fileName, Class clz, List<?> list) {
 
         String file = fileName + System.currentTimeMillis() + ".xlsx";
@@ -79,7 +142,6 @@ public class EasyExcelUtils {
                 String file = date.getTime() + ".xlsx";
                 String fileName = uploadFilePath + file;
                 excel.setExcelApplyTime(new SimpleDateFormat("yyyy-MM-dd").format(excel.getApplyTime()));
-                excel.setRemark(excel.getRemark());
                 String payMethod = excel.getPayMethod();
                 String[] split = payMethod.split(",");
                 StringBuilder a = new StringBuilder();

+ 59 - 74
src/main/java/com/ydtech/modules/inv/utils/TransferUtils.java

@@ -1,11 +1,15 @@
 package com.ydtech.modules.inv.utils;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.inv.model.*;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 转账工具类
@@ -20,9 +24,17 @@ public class TransferUtils {
     public static InvAccountOperate insertOutAccountOperate(InvAccountExcel insAccountExcel) {
         //支出公司
         InvAccountOperate insAccountOperate = new InvAccountOperate();
-        operate(insAccountExcel, insAccountOperate);
-        insAccountOperate.setRevenueOutlay("1");
-        return insAccountOperate;
+        InvAccountOperate operate = operate(insAccountExcel, insAccountOperate);
+        operate.setRevenueOutlay("1");
+        JSONObject outProfit = insAccountExcel.getOutProfit();
+        for (Map.Entry<String, Object> entry : outProfit.entrySet()){
+            outProfit.put(entry.getKey(), new BigDecimal(String.valueOf(entry.getValue())).negate().toString());
+        }
+        operate.setOutProfit(outProfit);
+        operate.setCreateTime(LocalDateTime.now());
+        operate.setRemark(insAccountExcel.getRemark());
+        operate.setOutCardNum(insAccountExcel.getOutCardNum());
+        return operate;
     }
 
     /**
@@ -31,12 +43,16 @@ public class TransferUtils {
     public static InvAccountOperate insertRevenueAccountOperate(InvAccountExcel insAccountExcel) {
         //支出公司
         InvAccountOperate insAccountOperate = new InvAccountOperate();
-        operate(insAccountExcel, insAccountOperate);
-        insAccountOperate.setRevenueOutlay("0");
-        return insAccountOperate;
+        InvAccountOperate operate = operate(insAccountExcel, insAccountOperate);
+        operate.setRevenueOutlay("0");
+        operate.setEntProfit(insAccountExcel.getEntProfit());
+        operate.setCreateTime(LocalDateTime.now());
+        operate.setRemark(insAccountExcel.getRemark());
+        operate.setEnterCardNum(insAccountExcel.getEnterCardNum());
+        return operate;
     }
 
-    private static void operate(InvAccountExcel invAccountExcel, InvAccountOperate invAccountOperate) {
+    private static InvAccountOperate operate(InvAccountExcel invAccountExcel, InvAccountOperate invAccountOperate) {
         invAccountOperate.setApplicant(invAccountExcel.getApplicant());
         invAccountOperate.setApplySector(invAccountExcel.getApplySector());
         invAccountOperate.setApplyTime(invAccountExcel.getApplyTime());
@@ -44,10 +60,11 @@ public class TransferUtils {
         invAccountOperate.setFundFlow(invAccountExcel.getFundFlow());
         invAccountOperate.setFundUse(invAccountExcel.getFundUse());
         invAccountOperate.setPayMethod(invAccountExcel.getPayMethod());
-        invAccountOperate.setRemark(invAccountExcel.getRemark());
         invAccountOperate.setCompany(invAccountExcel.getCompany());
         invAccountOperate.setApplyAmount(invAccountExcel.getApplyAmount());
         invAccountOperate.setBigApplyAmount(invAccountExcel.getBigApplyAmount());
+        invAccountOperate.setFundFen(invAccountExcel.getFundFen());
+        return invAccountOperate;
     }
 
     /**
@@ -75,23 +92,30 @@ public class TransferUtils {
             //转出账户现支出金额
             BigDecimal outAccountSpend = new BigDecimal(outAccountCard.getSpend());
 
+            BigDecimal outAccountBalance = new BigDecimal(outAccountCard.getBalance());
+
+            if (outAccountBalance.compareTo(insAccountExcelApplyAmount) < 0) {
+                //转出账户余额不足
+                throw new SystemException("转出账户余额不足");
+            }
+
+
             if (enterAccountCard.getAccountQuality().equals("0")) {
                 //公户操作
                 if (pubSingleLines.compareTo(insAccountExcelApplyAmount) > 0){
                     //收入方增加余额
-                    String remark = invAccountExcel.getRemark();
 
                     list.add(pubAccountUtils(dayStrokeNumExcess,pubDayLinesExcess,pubYearExcess,insAccountExcelApplyAmount,outAccountCard,outAccountSpend));
-                    list.add(enterAccountUtils(remark, enterAccountCard, insAccountExcelApplyAmount));
+                    list.add(enterAccountUtils( enterAccountCard, insAccountExcelApplyAmount));
                     return list;
                 }
                 throw new SystemException("公户转账金额超出单笔限额");
             } else {
                 if(priSingleLines.compareTo(insAccountExcelApplyAmount) > 0){
                     //私户操作
-                    String remark = invAccountExcel.getRemark();
+
                     list.add(priAccountUtils(dayStrokeNumExcess,priDayLinesExcess,insAccountExcelApplyAmount, priYearExcess,outAccountSpend,outAccountCard));
-                    list.add(enterAccountUtils(remark, enterAccountCard, insAccountExcelApplyAmount));
+                    list.add(enterAccountUtils( enterAccountCard, insAccountExcelApplyAmount));
 
                     return list;
                 }
@@ -106,27 +130,30 @@ public class TransferUtils {
      * 外部转内部方法
      */
     public static InvAccountCard outsideTransfer(InvAccountCard enterAccountCard, InvAccountOperate invAccountOperate) {
-        if (enterAccountCard == null && invAccountOperate == null) {
+        if (enterAccountCard == null || invAccountOperate == null) {
             throw new SystemException("收入账户为空");
         }
-        String remark = invAccountOperate.getRemark();
+
         BigDecimal applyAmount = new BigDecimal(invAccountOperate.getApplyAmount());
 
-        return enterAccountUtils(remark, enterAccountCard, applyAmount);
+        return enterAccountUtils(enterAccountCard, applyAmount);
     }
 
 
     /**
      * 撤销发票方法
      */
-    public static InvAccountCard quashOutsideTransfer(InvAccountCard enterAccountCard, InvAccountIncoice invAccountIncoice) {
-        if (enterAccountCard == null && invAccountIncoice == null) {
+    public static List<InvAccountCard> quashOutsideTransfer(InvAccountCard outAccountCard,InvAccountCard enterAccountCard, InvAccountIncoice invAccountIncoice) {
+        if (enterAccountCard == null || invAccountIncoice == null) {
             throw new SystemException("账户为空");
         }
-        String remark = invAccountIncoice.getRemark();
-        BigDecimal applyAmount = new BigDecimal(invAccountIncoice.getInvoiceMoney());
 
-        return enterAccountBreakUtils(remark, enterAccountCard, applyAmount);
+
+        BigDecimal applyAmount = new BigDecimal(invAccountIncoice.getInvoiceMoney());
+        List<InvAccountCard> list = new ArrayList<>();
+        list.add(enterAccountBreakUtils(enterAccountCard, applyAmount));
+        list.add(outAccountBreakUtils(outAccountCard, applyAmount));
+        return list;
     }
 
     /**
@@ -170,36 +197,7 @@ public class TransferUtils {
      *
      * @return
      */
-    private static InvAccountCard enterAccountUtils(String remark, InvAccountCard enterAccountCard, BigDecimal invAccountExcelApplyAmount) {
-        if (remark.isEmpty()){
-            throw new SystemException("备注不能为空");
-        }
-        if (enterAccountCard == null){
-            throw new SystemException("收入账户为空");
-        }
-        switch (remark) {
-            case "0":
-                enterAccountCard.setInsuranceProfit(new BigDecimal(enterAccountCard.getInsuranceProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-            case "1":
-                enterAccountCard.setClearingProfit(new BigDecimal(enterAccountCard.getClearingProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-            case "2":
-                enterAccountCard.setTianqinProfit(new BigDecimal(enterAccountCard.getTianqinProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-            case "3":
-                enterAccountCard.setParkProfit(new BigDecimal(enterAccountCard.getParkProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-            case "4":
-                enterAccountCard.setOtherProfit(new BigDecimal(enterAccountCard.getOtherProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-            case "5":
-                enterAccountCard.setFiscalProfit(new BigDecimal(enterAccountCard.getFiscalProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-            case "6":
-                enterAccountCard.setExteriorProfit(new BigDecimal(enterAccountCard.getExteriorProfit()).add(invAccountExcelApplyAmount).toString());
-                break;
-        }
+    private static InvAccountCard enterAccountUtils(InvAccountCard enterAccountCard, BigDecimal invAccountExcelApplyAmount) {
         enterAccountCard.setBalance(new BigDecimal(enterAccountCard.getBalance()).add(invAccountExcelApplyAmount).toString());
         return enterAccountCard;
     }
@@ -211,34 +209,21 @@ public class TransferUtils {
      *
      * @return
      */
-    private static InvAccountCard enterAccountBreakUtils(String remark, InvAccountCard enterAccountCard, BigDecimal invAccountExcelApplyAmount) {
-        switch (remark) {
-            case "0":
-                enterAccountCard.setInsuranceProfit(new BigDecimal(enterAccountCard.getInsuranceProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-            case "1":
-                enterAccountCard.setClearingProfit(new BigDecimal(enterAccountCard.getClearingProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-            case "2":
-                enterAccountCard.setTianqinProfit(new BigDecimal(enterAccountCard.getTianqinProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-            case "3":
-                enterAccountCard.setParkProfit(new BigDecimal(enterAccountCard.getParkProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-            case "4":
-                enterAccountCard.setOtherProfit(new BigDecimal(enterAccountCard.getOtherProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-            case "5":
-                enterAccountCard.setFiscalProfit(new BigDecimal(enterAccountCard.getFiscalProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-            case "6":
-                enterAccountCard.setExteriorProfit(new BigDecimal(enterAccountCard.getExteriorProfit()).subtract(invAccountExcelApplyAmount).toString());
-                break;
-        }
+    private static InvAccountCard enterAccountBreakUtils(InvAccountCard enterAccountCard, BigDecimal invAccountExcelApplyAmount) {
         enterAccountCard.setBalance(new BigDecimal(enterAccountCard.getBalance()).subtract(invAccountExcelApplyAmount).toString());
         return enterAccountCard;
     }
 
+    /**
+     * 支出方回滚利润方法
+     *
+     * @return
+     */
+    private static InvAccountCard outAccountBreakUtils(InvAccountCard enterAccountCard, BigDecimal invAccountExcelApplyAmount) {
+        enterAccountCard.setBalance(new BigDecimal(enterAccountCard.getBalance()).add(invAccountExcelApplyAmount).toString());
+        return enterAccountCard;
+    }
+
     /**
      * 公户扣除余额方法
      */

+ 11 - 3
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -65,6 +65,7 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 import javax.validation.constraints.NotBlank;
+import java.io.File;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -468,9 +469,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
                 }
             }
         }
-
-        String s = EasyExcelUtils.downExcel(uploadFilePath, InsOrdersExcel.class, insOrdersExcels);
-        return HttpResult.ok("", s);
+        File folder = new File(uploadFilePath);
+        if (folder.exists()){
+            return HttpResult.ok("", EasyExcelUtils.downExcel(uploadFilePath, InsOrdersExcel.class, insOrdersExcels));
+        }else {
+            if (folder.mkdirs()){
+                return HttpResult.ok("", EasyExcelUtils.downExcel(uploadFilePath, InsOrdersExcel.class, insOrdersExcels));
+            }else {
+                throw new SystemException("文件导出失败");
+            }
+        }
     }
 
 

+ 3 - 0
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java

@@ -1,12 +1,15 @@
 package com.ydtech.modules.protocol.entity.dto;
 
 
+import com.ydtech.modules.protocol.entity.vo.PtlAgreementSaveVo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
 
 @Data
 @ApiModel("协议添加实体")

+ 61 - 0
src/main/resources/mapper/modules/fnc/InsAreaCompanyMapper.xml

@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.fnc.dao.FncInsAreaCompanyMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.fnc.entity.InsAreaCompany">
+        <id column="id" property="id" />
+        <result column="orderno" property="orderno" />
+        <result column="agreement_id" property="agreementId" />
+        <result column="api_type" property="apiType" />
+        <result column="orderstatus" property="orderstatus" />
+        <result column="company_id" property="companyId" />
+        <result column="inscompany" property="inscompany" />
+        <result column="reqtxt" property="reqtxt" />
+        <result column="reptxt" property="reptxt" />
+        <result column="jqapplyno" property="jqapplyno" />
+        <result column="jqpolicyno" property="jqpolicyno" />
+        <result column="syapplyno" property="syapplyno" />
+        <result column="sypolicyno" property="sypolicyno" />
+        <result column="cross_insurance" property="crossInsurance" />
+        <result column="riskinfo" property="riskinfo" />
+        <result column="kindinfo" property="kindinfo" />
+        <result column="jqpremium" property="jqpremium" />
+        <result column="sypremium" property="sypremium" />
+        <result column="jypremium" property="jypremium" />
+        <result column="sumpremium" property="sumpremium" />
+        <result column="taxamount" property="taxamount" />
+        <result column="jqdiscountrate" property="jqdiscountrate" />
+        <result column="sydiscountrate" property="sydiscountrate" />
+        <result column="feerate" property="feerate" />
+        <result column="disrate" property="disrate" />
+        <result column="auditid" property="auditid" />
+        <result column="auditname" property="auditname" />
+        <result column="audittime" property="audittime" />
+        <result column="auditopinion" property="auditopinion" />
+        <result column="jqappoint" property="jqappoint" />
+        <result column="syappoint" property="syappoint" />
+        <result column="createtime" property="createtime" />
+        <result column="pay_date" property="payDate" />
+        <result column="payment_link" property="paymentLink" />
+        <result column="ins_order_no" property="insOrderNo" />
+        <result column="accident_info" property="accidentInfo" />
+        <result column="attribution_id" property="attributionId" />
+        <result column="tax_arrears" property="taxArrears" />
+        <result column="jq_start_date" property="jqStartDate" />
+        <result column="jq_end_date" property="jqEndDate" />
+        <result column="sy_start_date" property="syStartDate" />
+        <result column="sy_end_date" property="syEndDate" />
+        <result column="accident_str_info" property="accidentStrInfo" />
+        <result column="score" property="score" />
+        <result column="jq_score" property="jqScore" />
+        <result column="sy_score" property="syScore" />
+        <result column="loss_ration" property="lossRation" />
+        <result column="jq_loss_ration" property="jqLossRation" />
+        <result column="sy_loss_ration" property="syLossRation" />
+        <result column="inside_order_status" property="insideOrderStatus" />
+        <result column="inside_pay_time" property="insidePayTime" />
+        <result column="signing_time" property="signingTime" />
+    </resultMap>
+
+</mapper>

+ 28 - 0
src/main/resources/mapper/modules/fnc/InsCommissionMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.fnc.dao.FncInsCommissionMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.fnc.entity.InsCommission">
+        <result column="orderno" property="orderno" />
+        <result column="policyno" property="policyno" />
+        <result column="licenseno" property="licenseno" />
+        <result column="riskcode" property="riskcode" />
+        <result column="quoteno" property="quoteno" />
+        <result column="refereescode" property="refereescode" />
+        <result column="refereesname" property="refereesname" />
+        <result column="commissionrate" property="commissionrate" />
+        <result column="commissionamount" property="commissionamount" />
+        <result column="level" property="level" />
+        <result column="auditstatus" property="auditstatus" />
+        <result column="settlestatus" property="settlestatus" />
+        <result column="insuredtime" property="insuredtime" />
+        <result column="deptid" property="deptid" />
+        <result column="deptname" property="deptname" />
+        <result column="inscompany" property="inscompany" />
+        <result column="agreeid" property="agreeid" />
+        <result column="signdate" property="signdate" />
+        <result column="applyno" property="applyno" />
+    </resultMap>
+
+</mapper>

+ 37 - 0
src/main/resources/mapper/modules/fnc/InsCompanyfeeMapper.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.fnc.dao.FncInsCompanyfeeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.fnc.entity.InsCompanyfee">
+        <id column="orderno" property="orderno" />
+        <id column="policyno" property="policyno" />
+        <id column="settletype" property="settletype" />
+        <result column="riskcode" property="riskcode" />
+        <result column="settleno" property="settleno" />
+        <result column="feerate" property="feerate" />
+        <result column="disrate" property="disrate" />
+        <result column="feeamount" property="feeamount" />
+        <result column="disamount" property="disamount" />
+        <result column="jqpremium" property="jqpremium" />
+        <result column="sypremium" property="sypremium" />
+        <result column="inscompany" property="inscompany" />
+        <result column="agreeid" property="agreeid" />
+        <result column="agreementcode" property="agreementcode" />
+        <result column="agreeprodid" property="agreeprodid" />
+        <result column="producname" property="producname" />
+        <result column="agreetype" property="agreetype" />
+        <result column="settlestatus" property="settlestatus" />
+        <result column="settletime" property="settletime" />
+        <result column="frameno" property="frameno" />
+        <result column="licenseno" property="licenseno" />
+        <result column="userid" property="userid" />
+        <result column="username" property="username" />
+        <result column="deptid" property="deptid" />
+        <result column="deptname" property="deptname" />
+        <result column="createtime" property="createtime" />
+        <result column="signdate" property="signdate" />
+        <result column="applyno" property="applyno" />
+    </resultMap>
+
+</mapper>

+ 32 - 30
src/main/resources/mapper/modules/inv/InvAccountExcelMapper.xml

@@ -5,46 +5,51 @@
 <mapper namespace="com.ydtech.modules.inv.dao.InvAccountExcelMapper">
 
     <resultMap id="BaseResultMap" type="com.ydtech.modules.inv.model.InvAccountExcel">
-            <id property="excelAccountOperateId" column="excel_account_operate_id" jdbcType="VARCHAR"/>
-            <result property="company" column="company" jdbcType="VARCHAR"/>
-            <result property="applicant" column="applicant" jdbcType="VARCHAR"/>
-            <result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
-            <result property="applySector" column="apply_sector" jdbcType="VARCHAR"/>
-            <result property="collectionMessage" column="collection_message" jdbcType="VARCHAR"/>
-            <result property="fundFlow" column="fund_flow" jdbcType="VARCHAR"/>
-            <result property="fundUse" column="fund_use" jdbcType="VARCHAR"/>
-            <result property="remark" column="remark" jdbcType="VARCHAR"/>
-            <result property="applyAmount" column="apply_amount" jdbcType="VARCHAR"/>
-            <result property="bigApplyAmount" column="big_apply_amount" jdbcType="VARCHAR"/>
-            <result property="uplodePath" column="uplode_path" jdbcType="VARCHAR"/>
-            <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
-            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
-            <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
-            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
-            <result property="enterCardNum" column="enter_card_num" jdbcType="VARCHAR"/>
-            <result property="outCardNum" column="out_card_num" jdbcType="VARCHAR"/>
-            <result property="transferFlag" column="transfer_flag" jdbcType="CHAR"/>
-            <result property="outFlag" column="out_flag" jdbcType="CHAR"/>
-            <result property="outAccountQuality" column="out_account_quality" jdbcType="CHAR"/>
-            <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
+        <id property="excelAccountOperateId" column="excel_account_operate_id" jdbcType="VARCHAR"/>
+        <result property="company" column="company" jdbcType="VARCHAR"/>
+        <result property="applicant" column="applicant" jdbcType="VARCHAR"/>
+        <result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
+        <result property="applySector" column="apply_sector" jdbcType="VARCHAR"/>
+        <result property="collectionMessage" column="collection_message" jdbcType="VARCHAR"/>
+        <result property="fundFlow" column="fund_flow" jdbcType="VARCHAR"/>
+        <result property="fundUse" column="fund_use" jdbcType="VARCHAR"/>
+        <result property="applyAmount" column="apply_amount" jdbcType="VARCHAR"/>
+        <result property="bigApplyAmount" column="big_apply_amount" jdbcType="VARCHAR"/>
+        <result property="uplodePath" column="uplode_path" jdbcType="VARCHAR"/>
+        <result property="updateBy" column="update_by" jdbcType="VARCHAR"/>
+        <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+        <result property="createBy" column="create_by" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="enterCardNum" column="enter_card_num" jdbcType="VARCHAR"/>
+        <result property="outCardNum" column="out_card_num" jdbcType="VARCHAR"/>
+        <result property="transferFlag" column="transfer_flag" jdbcType="CHAR"/>
+        <result property="outFlag" column="out_flag" jdbcType="CHAR"/>
+        <result property="outAccountQuality" column="out_account_quality" jdbcType="CHAR"/>
+        <result property="delFlag" column="del_flag" jdbcType="CHAR"/>
         <result property="payMethod" column="pay_method" jdbcType="VARCHAR"/>
+        <result property="outProfit" column="out_profit" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+        <result property="entProfit" column="ent_profit" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
+        <result property="fundFen" column="fund_fen" jdbcType="VARCHAR"/>
+        <result property="remark" column="remark" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
         excel_account_operate_id,company,applicant,
         apply_time,apply_sector,collection_message,
-        fund_flow,fund_use,remark,
+        fund_flow,fund_use,
         apply_amount,big_apply_amount,uplode_path,
         update_by,update_time,create_by,
         create_time,enter_card_num,out_card_num,
-        del_flag,out_flag,out_account_quality,transfer_flag,pay_method
+        del_flag,out_flag,out_account_quality,transfer_flag,pay_method,out_profit,ent_profit,fund_fen,remark
     </sql>
-    <select id="selectExcelAccount" resultType="com.ydtech.modules.inv.model.InvAccountExcel">
+    <select id="selectExcelAccount" resultMap="BaseResultMap">
         select
-            <include refid="Base_Column_List"/>
+        <include refid="Base_Column_List"/>
         from inv_account_excel
         where
-            del_flag = '0'
+        del_flag = '0'
         <if test="insAccountExcel.excelAccountOperateId!= null and insAccountExcel.excelAccountOperateId!= ''">
             and excel_account_operate_id = #{insAccountExcel.excelAccountOperateId}
         </if>
@@ -72,9 +77,6 @@
         <if test="insAccountExcel.fundUse!= null and insAccountExcel.fundUse!= ''">
             and fund_use = #{insAccountExcel.fundUse}
         </if>
-        <if test="insAccountExcel.remark!= null and insAccountExcel.remark!= ''">
-            and remark = #{insAccountExcel.remark}
-        </if>
         <if test="insAccountExcel.applyAmount!= null and insAccountExcel.applyAmount!= ''">
             and apply_amount = #{insAccountExcel.applyAmount}
         </if>

+ 9 - 1
src/main/resources/mapper/modules/inv/InvAccountIncoiceMapper.xml

@@ -19,7 +19,15 @@
         <result property="payoutMoney" column="payout_money" jdbcType="VARCHAR"/>
         <result property="notPayoutMoney" column="not_payout_money" jdbcType="VARCHAR"/>
         <result property="delFlag" column="del_flag" jdbcType="VARCHAR"/>
-        <result property="bankCardNum" column="bank_card_num" jdbcType="VARCHAR"/>
+        <result property="revBankCardNum" column="rev_bank_card_num" jdbcType="VARCHAR"/>
+        <result property="outBankCardNum" column="out_bank_card_num" jdbcType="VARCHAR"/>
+        <result property="clearFlag" column="clear_flag" jdbcType="VARCHAR"/>
+        <result property="outProfit" column="out_profit" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="entProfit" column="ent_profit" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="fundFen" column="fund_fen" jdbcType="VARCHAR"/>
+        <result property="remark" column="remark" jdbcType="VARCHAR"/>
     </resultMap>
 
     <!-- 批量插入 -->

+ 3 - 17
src/main/resources/mapper/modules/inv/InvAccountMapper.xml

@@ -42,13 +42,6 @@
         <result property="priDayLines" column="pri_day_lines" jdbcType="VARCHAR"/>
         <result property="pubYearExcess" column="pub_year_excess" jdbcType="VARCHAR"/>
         <result property="priYearExcess" column="pri_year_excess" jdbcType="VARCHAR"/>
-        <result property="fiscalProfit" column="fiscal_profit" jdbcType="VARCHAR"/>
-        <result property="insuranceProfit" column="insurance_profit" jdbcType="VARCHAR"/>
-        <result property="clearingProfit" column="clearing_profit" jdbcType="VARCHAR"/>
-        <result property="exteriorProfit" column="exterior_profit" jdbcType="VARCHAR"/>
-        <result property="parkProfit" column="park_profit" jdbcType="VARCHAR"/>
-        <result property="tianqinProfit" column="tianqin_profit" jdbcType="VARCHAR"/>
-        <result property="otherProfit" column="other_profit" jdbcType="VARCHAR"/>
         <result property="endCertExpirationDate" column="end_cert_expiration_date" jdbcType="TIMESTAMP"/>
         <result property="balance" column="balance" jdbcType="VARCHAR"/>
         <result property="dayStrokeNumExcess" column="day_stroke_num_excess" jdbcType="VARCHAR"/>
@@ -92,13 +85,6 @@
         b.pri_day_lines,
         b.pub_year_excess,
         b.pri_year_excess,
-        b.fiscal_profit,
-        b.insurance_profit,
-        b.clearing_profit,
-        b.exterior_profit,
-        b.park_profit,
-        b.tianqin_profit,
-        b.other_profit,
         b.balance,
         b.day_stroke_num_excess,
         b.pub_day_lines_excess,
@@ -120,7 +106,7 @@
         </if>
         where a.del_flag = '0'
         <if test="account.accountId != null and account.accountId != ''">
-            and a.account_id like concat('%',#{account.accountId},'%')
+            and a.account_id = #{account.accountId}
         </if>
         <if test="account.accountName!= null and account.accountName!= ''">
             and a.account_name like concat('%',#{account.accountName},'%')
@@ -147,7 +133,7 @@
         where
         a.del_flag = '0'
         <if test="account.accountId != null and account.accountId != ''">
-            and a.account_id like concat('%',#{account.accountId},'%')
+            and a.account_id = #{account.accountId}
         </if>
         <if test="account.accountName!= null and account.accountName!= ''">
             and a.account_name like concat('%',#{account.accountName},'%')
@@ -179,7 +165,7 @@
         </if>
         where a.del_flag = '0'
         <if test="account.accountId != null and account.accountId != ''">
-            and a.account_id like concat('%',#{account.accountId},'%')
+            and a.account_id = #{account.accountId}
         </if>
         <if test="account.accountName!= null and account.accountName!= ''">
             and a.account_name like concat('%',#{account.accountName},'%')

+ 34 - 0
src/main/resources/mapper/modules/inv/InvAccountOpDao.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.inv.dao.InvAccountOpMapper">
+
+    <resultMap type="com.ydtech.modules.inv.model.InvAccountOp" id="InvAccountOpMap">
+        <result property="id" column="id" jdbcType="INTEGER"/>
+        <result property="accountName" column="account_name" jdbcType="VARCHAR"/>
+        <result property="accountId" column="account_id" jdbcType="VARCHAR"/>
+        <result property="cardName" column="card_name" jdbcType="VARCHAR"/>
+        <result property="cardNum" column="card_num" jdbcType="VARCHAR"/>
+        <result property="profit" column="profit" jdbcType="VARCHAR"/>
+        <result property="money" column="money" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <!-- 批量插入 -->
+    <insert id="insertBatch" keyProperty="id" useGeneratedKeys="true">
+        insert into zgdd.inv_account_op(account_nameaccount_idcard_namecard_numprofitmoney)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+        (#{entity.accountName}#{entity.accountId}#{entity.cardName}#{entity.cardNum}#{entity.profit}#{entity.money})
+        </foreach>
+    </insert>
+    <!-- 批量插入或按主键更新 -->
+    <insert id="insertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
+        insert into zgdd.inv_account_op(account_nameaccount_idcard_namecard_numprofitmoney)
+        values
+        <foreach collection="entities" item="entity" separator=",">
+            (#{entity.accountName}#{entity.accountId}#{entity.cardName}#{entity.cardNum}#{entity.profit}#{entity.money})
+        </foreach>
+        on duplicate key update
+account_name = values(account_name) account_id = values(account_id) card_name = values(card_name) card_num = values(card_num) profit = values(profit) money = values(money)     </insert>
+
+</mapper>
+

+ 70 - 17
src/main/resources/mapper/modules/inv/InvAccountOperateMapper.xml

@@ -5,20 +5,28 @@
 <mapper namespace="com.ydtech.modules.inv.dao.InvAccountOperateMapper">
 
     <resultMap id="BaseResultMap" type="com.ydtech.modules.inv.model.InvAccountOperate">
-            <id property="accountOperateId" column="account_operate_id" jdbcType="VARCHAR"/>
-            <result property="applicant" column="applicant" jdbcType="VARCHAR"/>
-            <result property="applySector" column="apply_sector" jdbcType="VARCHAR"/>
-            <result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
-            <result property="collectionMessage" column="collection_message" jdbcType="VARCHAR"/>
-            <result property="fundFlow" column="fund_flow" jdbcType="VARCHAR"/>
-            <result property="fundUse" column="fund_use" jdbcType="VARCHAR"/>
-            <result property="applyAmount" column="apply_amount" jdbcType="VARCHAR"/>
-            <result property="payMethod" column="pay_method" jdbcType="VARCHAR"/>
-            <result property="remark" column="remark" jdbcType="VARCHAR"/>
-            <result property="company" column="company" jdbcType="VARCHAR"/>
-            <result property="bigApplyAmount" column="big_apply_amount" jdbcType="VARCHAR"/>
-            <result property="revenueOutlay" column="revenue_outlay" jdbcType="CHAR"/>
-            <result property="invoiceId" column="invoice_id" jdbcType="VARCHAR"/>
+        <id property="accountOperateId" column="account_operate_id" jdbcType="VARCHAR"/>
+        <result property="applicant" column="applicant" jdbcType="VARCHAR"/>
+        <result property="applySector" column="apply_sector" jdbcType="VARCHAR"/>
+        <result property="applyTime" column="apply_time" jdbcType="TIMESTAMP"/>
+        <result property="collectionMessage" column="collection_message" jdbcType="VARCHAR"/>
+        <result property="fundFlow" column="fund_flow" jdbcType="VARCHAR"/>
+        <result property="fundUse" column="fund_use" jdbcType="VARCHAR"/>
+        <result property="applyAmount" column="apply_amount" jdbcType="VARCHAR"/>
+        <result property="payMethod" column="pay_method" jdbcType="VARCHAR"/>
+        <result property="remark" column="remark" jdbcType="VARCHAR"/>
+        <result property="company" column="company" jdbcType="VARCHAR"/>
+        <result property="bigApplyAmount" column="big_apply_amount" jdbcType="VARCHAR"/>
+        <result property="revenueOutlay" column="revenue_outlay" jdbcType="CHAR"/>
+        <result property="invoiceId" column="invoice_id" jdbcType="VARCHAR"/>
+        <result property="outProfit" column="out_profit" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="entProfit" column="ent_profit" javaType="com.alibaba.fastjson.JSONObject"
+                typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" jdbcType="VARCHAR"/>
+        <result property="fundFen" column="fund_fen" jdbcType="VARCHAR"/>
+        <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+        <result property="enterCardNum" column="enter_card_num" jdbcType="VARCHAR"/>
+        <result property="outCardNum" column="out_card_num" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -26,12 +34,12 @@
         apply_time,collection_message,fund_flow,
         fund_use,apply_amount,pay_method,
         remark,company,big_apply_amount,
-        revenue_outlay,invoice_id
+        revenue_outlay,invoice_id,out_profit,ent_profit,fund_fen,create_time,enter_card_num,out_card_num
     </sql>
     <select id="selectInsAccountOperate" resultMap="BaseResultMap">
         select
-            <include refid="Base_Column_List"/>
-            from inv_account_operate
+        <include refid="Base_Column_List"/>
+        from inv_account_operate
         where 1=1
         <if test="insAccountOperate.accountOperateId != null and insAccountOperate.accountOperateId != ''">
             and account_operate_id like concat('%',#{insAccountOperate.accountOperateId},'%')
@@ -55,4 +63,49 @@
             and invoice_id like concat('%',#{insAccountOperate.invoiceId},'%')
         </if>
     </select>
+    <select id="selectInsAccountOperateList" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from inv_account_operate
+        where 1=1
+        <if test="insAccountOperate.accountOperateId != null and insAccountOperate.accountOperateId != ''">
+            and account_operate_id like concat('%',#{insAccountOperate.accountOperateId},'%')
+        </if>
+        <if test="insAccountOperate.applicant != null and insAccountOperate.applicant != ''">
+            and applicant like concat('%',#{insAccountOperate.applicant},'%')
+        </if>
+        <if test="insAccountOperate.company != null and insAccountOperate.company != ''">
+            and company like concat('%',#{insAccountOperate.company},'%')
+        </if>
+        <if test="insAccountOperate.fundUse != null and insAccountOperate.fundUse != ''">
+            and fund_use like concat('%',#{insAccountOperate.fundUse},'%')
+        </if>
+        <if test="insAccountOperate.fundFlow != null and insAccountOperate.fundFlow != ''">
+            and fund_flow like concat('%',#{insAccountOperate.fundFlow},'%')
+        </if>
+        <if test="insAccountOperate.revenueOutlay != null and insAccountOperate.revenueOutlay != ''">
+            and revenue_outlay like concat('%',#{insAccountOperate.revenueOutlay},'%')
+        </if>
+        <if test="insAccountOperate.invoiceId != null and insAccountOperate.invoiceId != ''">
+            and invoice_id like concat('%',#{insAccountOperate.invoiceId},'%')
+        </if>
+    </select>
+    <select id="selectOperateList"  resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from inv_account_operate
+        where 1=1
+        and (
+        enter_card_num in
+        <foreach item="item" index="index" collection="list"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        or out_card_num in
+        <foreach item="item" index="index" collection="list"
+                 open="(" separator="," close=")">
+            #{item}
+        </foreach>
+        )
+    </select>
 </mapper>