Răsfoiți Sursa

应收应付导入新增接口 excel调整导入人、时间、Id

Qchen 2 ani în urmă
părinte
comite
600d09004c

+ 9 - 0
src/main/java/com/ydtech/modules/inv/controller/InvReceivableController.java

@@ -136,6 +136,15 @@ public class InvReceivableController extends BaseController {
         return HttpResult.ok(uploadUrl + "excel/" + fileName);
     }
 
+    @ApiOperation("结算导入新增")
+    @PostMapping("addSettlement")
+    public HttpResult addSettlement(@RequestBody InvSettlementSource invSettlementSource){
+        Boolean b = invReceivableService.addSettlement(invSettlementSource);
+        return b ? HttpResult.ok("新增成功") : HttpResult.error("新增失败");
+    }
+
+
+
     @ApiOperation("结算导入删除")
     @PostMapping("deleteSettlement")
     public HttpResult deleteSettlement(@RequestBody String[] ids) {

+ 48 - 0
src/main/java/com/ydtech/modules/inv/model/po/InvSettlementSource.java

@@ -224,6 +224,54 @@ public class InvSettlementSource implements Serializable {
     @ExcelProperty("代理结算时间")
     private String agencySettlementTime;
 
+    /**
+     * 导入日期
+     */
+    @TableField(value = "revenue_time")
+    @ApiModelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @ExcelProperty("导入日期")
+    private String revenueTime;
+
+    /**
+     * 导入人名字
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人名字")
+    @ExcelProperty("导入人名字")
+    private String revenueName;
+
+    /**
+     * 导入人Id
+     */
+    @TableField(value = "revenue_userid")
+    @ApiModelProperty("导入人Id")
+    @ExcelProperty("导入人Id")
+    private String revenueUserId;
+
+
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
+
+    public void builder(){
+        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.getCompulsoryExportRatio()){
+            this.setCompulsoryExportRatio(new BigDecimal(0));
+        }
+        if(null == this.getCommercialExportRatio()){
+            this.setCommercialExportRatio(new BigDecimal(0));
+        }
+        if(null == this.getNonVehicleExportRatio()){
+            this.setNonVehicleExportRatio(new BigDecimal(0));
+        }
+    }
 }

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

@@ -360,6 +360,19 @@ public class InvSource implements Serializable {
     @ExcelProperty("导入人名字")
     private String revenueName;
 
+    /**
+     * 导入人Id
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人Id")
+    @ExcelProperty("导入人Id")
+    private String revenueUserId;
+
+    @TableField(value = "inv_source_type")
+    @ApiModelProperty("应收类型(平台,私有)")
+    @ExcelProperty("应收类型")
+    private String invSourceType;
+
     @TableField(exist = false)
     private String[] ids;
 

+ 23 - 0
src/main/java/com/ydtech/modules/inv/model/vo/InvSettlementSourceQueryVo.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.inv.model.vo;
 
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -181,6 +182,28 @@ public class InvSettlementSourceQueryVo extends PageRequest implements Serializa
     @JsonFormat(pattern = "yyyy-MM-dd")
     private String agencySettlementTime;
 
+    /**
+     * 导入日期
+     */
+    @TableField(value = "revenue_time")
+    @ApiModelProperty("导入日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private String revenueTime;
+
+    /**
+     * 导入人名字
+     */
+    @TableField(value = "revenue_name")
+    @ApiModelProperty("导入人名字")
+    private String revenueName;
+
+    /**
+     * 导入人Id
+     */
+    @TableField(value = "revenue_userid")
+    @ApiModelProperty("导入人Id")
+    private String revenueUserId;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 }

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

@@ -310,10 +310,10 @@ public class InvSourceQueryVo extends PageRequest implements Serializable {
     @ApiModelProperty("导入人名字")
     private String revenueName;
 
+    @TableField(value = "inv_source_type")
+    @ApiModelProperty("应收类型")
+    private String invSourceType;
 
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
-
-
-
 }

+ 2 - 0
src/main/java/com/ydtech/modules/inv/service/InvReceivableService.java

@@ -53,6 +53,8 @@ public interface InvReceivableService {
 
     Boolean addReceivable(InvSource invSource);
 
+    Boolean addSettlement(InvSettlementSource invSettlementSource);
+
     List<String> dataMatching();
 
     Boolean deleteSettlement(String[] ids);

+ 76 - 25
src/main/java/com/ydtech/modules/inv/service/impl/InvReceivableServiceImpl.java

@@ -616,50 +616,101 @@ public class InvReceivableServiceImpl implements InvReceivableService {
         invSource.setId(IdGenerate.nextId());
         invSource.builder();
         BigDecimal tax = new BigDecimal(1.06);
-        //处理交强不含税
-        invSource.setJqPremium(invSource.getJqPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
-        //处理商业不含税
-        invSource.setSyPremium(invSource.getSyPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
-        //处理非车不含税
-        invSource.setNonCarPremium(invSource.getNonCarPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
-
+        /**
+         * jqPremiumTax  交强险保费
+         * syPremiumTax  商业险保费
+         * nonCarPremiumTax 非车保费
+         * jqReceivableRatio 交强应收比例
+         * syReceivableRatio 商业应收比列
+         * nonCarReceivableRatio 非车应收比列
+         * jqPremium  交强险保费(不含税)
+         * syPremium  商业险保费(不含税)
+         * nonCarPremium 非车保费(不含税)
+         * jqPremiumRatio 交强手续费比例
+         * syPremiumRatio 商业手续费比例
+         * nonCarPremiumRatio 非车手续费比例
+         * jqNonCopyingRatio 交强非跟单比例
+         * syNonCopyingRatio 商业非跟单比例
+         * nonCarNonCopyingRatio 非车非跟单比例
+         */
         //处理非跟单比例
         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())
-                        .add(invSource.getSyPremium().multiply(invSource.getSyPremiumRatio()))
-                        .add(invSource.getNonCarPremium().multiply(invSource.getNonCarPremiumRatio())));
-        //处理非跟单金额
-        invSource.setNonCopying(
-                invSource.getJqPremium().multiply(invSource.getJqNonCopyingRatio())
-                        .add(invSource.getSyPremium().multiply(invSource.getSyNonCopyingRatio()))
-                        .add(invSource.getNonCarPremium().multiply(invSource.getNonCarNonCopyingRatio())));
-        //处理保司应收金额
-        invSource.setReceivable(
-                invSource.getJqPremium().multiply(invSource.getJqReceivableRatio())
-                        .add(invSource.getSyPremium().multiply(invSource.getSyReceivableRatio()))
-                        .add(invSource.getNonCarPremium().multiply(invSource.getNonCarReceivableRatio())));
         //处理补贴金额
         invSource.setSubsidyAmount(
                 invSource.getJqPremiumTax().multiply(invSource.getSubsidyRatio())
                         .add(invSource.getSyPremiumTax().multiply(invSource.getSubsidyRatio()))
                         .add(invSource.getNonCarPremiumTax().multiply(invSource.getSubsidyRatio())));
-        //处理应收总金额
-        invSource.setTotalReceivableAmount(
-                invSource.getReceivable().add(invSource.getSubsidyAmount()));
         //处理最大应付金额
         invSource.setMaxReceivable(
                 invSource.getJqPremiumTax().multiply(invSource.getMaxJqReceivableRatio())
                         .add(invSource.getSyPremiumTax().multiply(invSource.getMaxSyReceivableRatio()))
                         .add(invSource.getNonCarPremiumTax().multiply(invSource.getMaxNonCarReceivableRatio())));
+        //处理不含税保费
+        invSource.setJqPremium(invSource.getJqPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
+        invSource.setSyPremium(invSource.getSyPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
+        invSource.setNonCarPremium(invSource.getNonCarPremiumTax().divide(tax, 2, RoundingMode.HALF_UP));
+
+        //手续费金额  premium
+        invSource.setPremium(invSource.getJqPremium().multiply(invSource.getJqPremiumRatio())
+                .add(invSource.getSyPremium().multiply(invSource.getSyPremiumRatio())
+                        .add(invSource.getNonCarPremium().multiply(invSource.getNonCarPremiumRatio()))));
+
+        //非跟单金额  nonCopying
+        invSource.setNonCopying(invSource.getJqPremium().multiply(invSource.getJqNonCopyingRatio())
+                .add(invSource.getSyPremium().multiply(invSource.getSyNonCopyingRatio())
+                        .add(invSource.getNonCarPremium().multiply(invSource.getNonCarNonCopyingRatio()))));
+
+
+
+        //选择类型为平台类型时 应收金额 = 含税保费 * 应收比例
+        if (invSource.getInvSourceType().equals("platform")) {
+            //处理应收金额
+            invSource.setReceivable(invSource.getJqPremiumTax().multiply(invSource.getJqReceivableRatio())
+                    .add(invSource.getSyPremiumTax().multiply(invSource.getSyReceivableRatio())
+                    .add(invSource.getNonCarPremiumTax().multiply(invSource.getNonCarReceivableRatio()))));
+            //处理应收总金额
+            invSource.setTotalReceivableAmount(
+                    invSource.getReceivable().add(invSource.getSubsidyAmount()));
+        }
+
+        //选择类型为私有类型时 应收金额 = ( 不含税保费 * 手续费 )+ (不含税保费 * 非跟单比例)
+        if (invSource.getInvSourceType().equals("privately")) {
+            //应收金额
+            invSource.setReceivable(invSource.getPremium().add(invSource.getNonCopying()));
+
+            //处理应收总金额
+            invSource.setTotalReceivableAmount(
+                    invSource.getReceivable().add(invSource.getSubsidyAmount()));
+        }
+
         boolean save = invSourceMapper.insert(invSource) > 0 ? true : false;
         return save;
     }
 
+    @Override
+    public Boolean addSettlement(InvSettlementSource invSettlementSource) {
+        invSettlementSource.setId(IdGenerate.nextId());
+        invSettlementSource.builder();
+        //处理补贴金额
+        invSettlementSource.setSubsidyAmount(
+                invSettlementSource.getJqPremiumTax().multiply(invSettlementSource.getSubsidyRatio())
+                        .add(invSettlementSource.getSyPremiumTax().multiply(invSettlementSource.getSubsidyRatio()))
+                        .add(invSettlementSource.getNonCarPremiumTax().multiply(invSettlementSource.getSubsidyRatio())));
+        // 处理结算金额
+        invSettlementSource.setSettlementAmount(
+                invSettlementSource.getJqPremiumTax().multiply(invSettlementSource.getCompulsoryExportRatio())
+                        .add(invSettlementSource.getSyPremiumTax().multiply(invSettlementSource.getCommercialExportRatio())
+                        .add(invSettlementSource.getNonCarPremiumTax().multiply(invSettlementSource.getNonVehicleExportRatio())))
+        );
+        DateTime dateTime = new DateTime();
+        invSettlementSource.setRevenueTime(dateTime.toString());
+        boolean save = invSettlementSourceMapper.insert(invSettlementSource) > 0 ? true : false;
+        return save;
+    }
+
     @Override
     public List<String> dataMatching() {
         List<String> data = invSourceMapper.dataMatching();

+ 8 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvSettlementSourceServiceImpl.java

@@ -1,9 +1,12 @@
 package com.ydtech.modules.inv.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.inv.dao.InvSettlementSourceMapper;
 import com.ydtech.modules.inv.model.excel.InvSettlementSourceExcel;
 import com.ydtech.modules.inv.model.po.InvSettlementSource;
@@ -60,6 +63,11 @@ public class InvSettlementSourceServiceImpl extends ServiceImpl<InvSettlementSou
                 invSettlementSource.setId(one.getId());
                 baseMapper.updateById(invSettlementSource);
             } else {
+                SysUser user = BaseController.getUser();
+                DateTime dateTime = new DateTime();
+                invSettlementSource.setRevenueTime(dateTime.toString());
+                invSettlementSource.setRevenueName(user.getName());
+                invSettlementSource.setRevenueUserId(user.getId());
                 baseMapper.insert(invSettlementSource);
             }
         }

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

@@ -49,6 +49,7 @@ public class InvSourceServiceImpl extends ServiceImpl<InvSourceMapper, InvSource
         for (InvSource invSource : invSources) {
             invSource.setRevenueName(user.getName());
             invSource.setRevenueTime(dateTime.toString());
+            invSource.setRevenueUserId(user.getId());
         }
 
         boolean result = invSourceService.saveOrUpdateBatchWithConditions(invSources);

+ 4 - 1
src/main/resources/mapper/modules/inv/InvSettlementSourceMapper.xml

@@ -25,6 +25,9 @@
             <result property="nonVehicleExportRatio" column="non_vehicle_export_ratio" jdbcType="VARCHAR"/>
             <result property="settlementAmount" column="settlement_amount" jdbcType="VARCHAR"/>
             <result property="agencySettlementTime" column="agency_settlement_time" jdbcType="TIMESTAMP"/>
+            <result property="revenueTime" column="revenue_time" jdbcType="VARCHAR"/>
+            <result property="revenueName" column="revenue_name" jdbcType="VARCHAR"/>
+            <result property="revenueUserId" column="revenue_userid" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -34,6 +37,6 @@
         sy_policy_id,non_car_policy_id,jq_premium_tax,
         vehicle_tax,sy_premium_tax,non_car_premium_tax,
         compulsory_export_ratio,commercial_export_ratio,non_vehicle_export_ratio,
-        settlement_amount,agency_settlement_time
+        settlement_amount,agency_settlement_time,revenue_time,revenue_name,revenue_userid
     </sql>
 </mapper>

+ 8 - 0
src/main/resources/mapper/modules/inv/InvSourceMapper.xml

@@ -129,6 +129,7 @@
         max_receivable,
         revenue_time,
         revenue_name,
+        inv_source_type,
         CASE WHEN DATEDIFF(NOW(), signing_time) > 90 THEN 2 ELSE inv_source.clearing_state END as clearing_state,
         insurance_clearing_state
         from inv_source
@@ -182,6 +183,9 @@
         <if test="param.revenueName != null and param.revenueName != ''">
             and a.revenue_name = #{revenueName}
         </if>
+        <if test="param.invSourceType != null and param.invSourceType != ''">
+            and a.inv_source_type = #{invSourceType}
+        </if>
 
     </select>
 
@@ -229,6 +233,7 @@
         max_receivable,
         revenue_time,
         revenue_name,
+        inv_source_type,
         CASE WHEN DATEDIFF(NOW(), signing_time) > 90 THEN 2 ELSE inv_source.clearing_state END as clearing_state,
         insurance_clearing_state
         from inv_source
@@ -276,5 +281,8 @@
         <if test="param.revenueName != null and param.revenueName != ''">
             and a.revenue_name = #{revenueName}
         </if>
+        <if test="param.invSourceType != null and param.invSourceType != ''">
+            and a.inv_source_type = #{invSourceType}
+        </if>
     </select>
 </mapper>