ソースを参照

功能开发,财务管理 - 对账管理

ligang134 3 年 前
コミット
9b1ab5f361
42 ファイル変更2401 行追加180 行削除
  1. 24 11
      src/main/java/com/ydtech/core/page/BaseController.java
  2. 53 0
      src/main/java/com/ydtech/core/page/PageResult.java
  3. 21 0
      src/main/java/com/ydtech/modules/esm/controller/EsmInsCompanyController.java
  4. 52 0
      src/main/java/com/ydtech/modules/esm/model/vo/res/EsmInsCompanyResVo.java
  5. 1 1
      src/main/java/com/ydtech/modules/ins/controller/InsAlltrustApiController.java
  6. 4 3
      src/main/java/com/ydtech/modules/ins/model/yc/audit/Audit.java
  7. 108 102
      src/main/java/com/ydtech/modules/ins/model/yc/callbackAnOrder/response/CallbackAnOrderResponse.java
  8. 6 1
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Applicant.java
  9. 1 1
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Vhl.java
  10. 8 4
      src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java
  11. 169 0
      src/main/java/com/ydtech/modules/inv/controller/InvChannelsExternalBillsDetailsController.java
  12. 5 0
      src/main/java/com/ydtech/modules/inv/controller/InvCompanyController.java
  13. 255 0
      src/main/java/com/ydtech/modules/inv/controller/InvExternalBillsController.java
  14. 75 0
      src/main/java/com/ydtech/modules/inv/controller/InvInsExternalBillsDetailsController.java
  15. 5 5
      src/main/java/com/ydtech/modules/inv/controller/InvInvoiceInfoController.java
  16. 20 0
      src/main/java/com/ydtech/modules/inv/dao/InvChannelsExternalBillsDetailsHistoryMapper.java
  17. 65 0
      src/main/java/com/ydtech/modules/inv/dao/InvChannelsExternalBillsDetailsMapper.java
  18. 18 0
      src/main/java/com/ydtech/modules/inv/dao/InvInsExternalBillsDetailsMapper.java
  19. 14 0
      src/main/java/com/ydtech/modules/inv/dao/InvInsExternalBillsMapper.java
  20. 220 0
      src/main/java/com/ydtech/modules/inv/model/InvBaseExternalBillsDetails.java
  21. 174 0
      src/main/java/com/ydtech/modules/inv/model/InvChannelsExternalBillsDetails.java
  22. 179 0
      src/main/java/com/ydtech/modules/inv/model/InvChannelsExternalBillsDetailsHistory.java
  23. 175 0
      src/main/java/com/ydtech/modules/inv/model/InvExternalBills.java
  24. 38 0
      src/main/java/com/ydtech/modules/inv/model/InvInsExternalBillsDetails.java
  25. 28 0
      src/main/java/com/ydtech/modules/inv/model/vo/req/InvChannelExternalBillsDetailsReqVO.java
  26. 24 0
      src/main/java/com/ydtech/modules/inv/model/vo/req/InvInsExternalBillsDetailsReqVO.java
  27. 38 0
      src/main/java/com/ydtech/modules/inv/model/vo/req/InvInsExternalBillsReqVO.java
  28. 69 0
      src/main/java/com/ydtech/modules/inv/model/vo/res/InvBaseChannelMatchInsResVO.java
  29. 29 0
      src/main/java/com/ydtech/modules/inv/model/vo/res/InvChannelMatchInsResVO.java
  30. 23 0
      src/main/java/com/ydtech/modules/inv/service/InvChannelsExternalBillsDetailsHistoryService.java
  31. 25 0
      src/main/java/com/ydtech/modules/inv/service/InvChannelsExternalBillsDetailsService.java
  32. 20 0
      src/main/java/com/ydtech/modules/inv/service/InvExternalBillsService.java
  33. 22 0
      src/main/java/com/ydtech/modules/inv/service/InvInsExternalBillsDetailsService.java
  34. 28 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvChannelsExternalBillsDetailsHistoryServiceImpl.java
  35. 110 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvChannelsExternalBillsDetailsServiceImpl.java
  36. 63 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvExternalBillsServiceImpl.java
  37. 90 0
      src/main/java/com/ydtech/modules/inv/service/impl/InvInsExternalBillsDetailsServiceImpl.java
  38. 62 9
      src/main/java/com/ydtech/modules/inv/service/impl/InvInvoiceInfoServiceImpl.java
  39. 14 0
      src/main/java/com/ydtech/utils/BigDecimalUtils.java
  40. 1 1
      src/main/resources/application-prod.yml
  41. 37 37
      src/main/resources/application-test.yml
  42. 28 5
      src/main/resources/logback-spring.xml

+ 24 - 11
src/main/java/com/ydtech/core/page/BaseController.java

@@ -69,18 +69,31 @@ public class BaseController {
     }
 
 
-//    /**
-//     * 新加 可用
-//     *
-//     * @author: lig
-//     * @date: 2023年05月18日 0018
-//     */
-//    public String getUserId() {
+    /**
+     * 新加 可用
+     *
+     * @author: lig
+     * @date: 2023年05月18日 0018
+     */
+    public String getUserId2() {
+        Authentication authentication = SecurityUtils.getAuthentication();
+
+        JwtAuthenticatioToken j = (JwtAuthenticatioToken) authentication;
+        return JwtTokenUtils.getUserIdFromToken(j.getToken());
+    }
+    /**
+     * 新加 可用
+     *
+     * @author: lig
+     * @date: 2023年05月18日 0018
+     */
+    public String getUserId() {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
 //        Authentication authentication = SecurityUtils.getAuthentication();
-//
-//        JwtAuthenticatioToken j = (JwtAuthenticatioToken) authentication;
-//        return JwtTokenUtils.getUserIdFromToken(j.getToken());
-//    }
+
+        JwtAuthenticatioToken j = (JwtAuthenticatioToken) authentication;
+        return JwtTokenUtils.getUserIdFromToken(j.getToken());
+    }
 
     /**
      * 获取用户名

+ 53 - 0
src/main/java/com/ydtech/core/page/PageResult.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.github.pagehelper.Page;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -115,4 +116,56 @@ public class PageResult<T> {
     }
 
 
+    /**
+     *  构造分页信息
+     *  使用与自定义sql
+     *
+     * @author: lig
+     * @date: 2023年06月08日 0008
+     */
+    public static <T> PageResult<InvBaseChannelMatchInsResVO> buildPageResult(BasePageVO basePageVo, int total, List<T> list){
+
+        int pageNum = basePageVo.getPageNum();
+        int pageSize = basePageVo.getPageSize();
+        if(pageNum < 1) basePageVo.setPageNum(1);
+        if(pageSize < 1) basePageVo.setPageSize(10);
+
+        PageResult p = new PageResult();
+
+        //计算mysql分页总页数
+        int totalPages = total % pageSize == 0?total / pageSize:total / pageSize +1;
+
+        p.setPageNum(basePageVo.getPageNum());
+        p.setPageSize(basePageVo.getPageSize());
+        p.setTotalSize(total);
+        p.setTotalPages(totalPages);
+
+        p.setContent(list);
+
+        return p;
+
+    }
+
+
+    /**
+     *  构造mysql 分页起始索引
+     *  使用与自定义sql
+     *
+     * @author: lig
+     * @date: 2023年06月08日 0008
+     */
+    public static int buildPageLimitStart(BasePageVO basePageVo){
+
+        int pageNum = basePageVo.getPageNum();
+        int pageSize = basePageVo.getPageSize();
+        if(pageNum < 1) basePageVo.setPageNum(1);
+        if(pageSize < 1) basePageVo.setPageSize(10);
+
+        //计算mysql分页起索引
+        int firstIndex = pageNum==1?0:(pageNum-1) * pageSize +1;
+        return firstIndex;
+
+    }
+
+
 }

+ 21 - 0
src/main/java/com/ydtech/modules/esm/controller/EsmInsCompanyController.java

@@ -1,6 +1,8 @@
 package com.ydtech.modules.esm.controller;
 
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,6 +13,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.model.vo.res.EsmInsCompanyResVo;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.esm.model.vo.req.EsmInsCompanyReq;
 import com.ydtech.utils.StringUtils;
@@ -19,6 +22,7 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -228,4 +232,21 @@ public class EsmInsCompanyController extends BaseController {
 
     }
 
+
+    @ApiOperation(value = "获取顶级保险公司列表")
+    @GetMapping(value = "/gainTopList")
+    public HttpResult<List<EsmInsCompanyResVo>> gainTopList() {
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(EsmInsCompany::getDelFlag, 0);
+        lqw.eq(EsmInsCompany::getParentId, "0");
+        lqw.orderByAsc(EsmInsCompany::getOrderNum);
+        List<EsmInsCompany> list = esmInsCompanyService.list(lqw);
+        List<EsmInsCompanyResVo> resVoList = new ArrayList<>();
+        list.stream().forEach(a ->{
+            resVoList.add(BeanUtil.copyProperties(a, EsmInsCompanyResVo.class));
+        });
+        return HttpResult.ok(resVoList);
+
+    }
+
 }

+ 52 - 0
src/main/java/com/ydtech/modules/esm/model/vo/res/EsmInsCompanyResVo.java

@@ -0,0 +1,52 @@
+package com.ydtech.modules.esm.model.vo.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel(value = "保险公司基本信息响应")
+public class EsmInsCompanyResVo implements Serializable {
+
+    private static final long serialVersionUID = 5367510320703511519L;
+
+    @ApiModelProperty(value = "编号")
+    private String id;
+
+    @ApiModelProperty(value = "名称")
+    private String name;
+
+    @ApiModelProperty(value = "父编号")
+    private String parentId;
+
+    @ApiModelProperty(value = "名称简称")
+    private String namesimple;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+    @ApiModelProperty(value = "排序")
+    private Integer orderNum;
+
+    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
+    private Integer delFlag;
+
+    /**
+     * 开启报价   0不开启  1开启
+     *
+     * @author: lig
+     * @date: 2023年03月14日 0014
+     */
+    @ApiModelProperty(value = "开启报价   0不开启  1开启")
+    private Integer openQuote;
+
+    @ApiModelProperty(value = "拼音")
+    private String cnName;
+
+
+}
+
+
+

+ 1 - 1
src/main/java/com/ydtech/modules/ins/controller/InsAlltrustApiController.java

@@ -54,7 +54,7 @@ public class InsAlltrustApiController {
     @Autowired
     EsmInsAttachInsureDetailsMapper esmInsAttachInsureDetailsMapper;
 
-    @ApiOperation(value = "车型查询")
+    @ApiOperation(value = "车型查询",notes = "只需要vin码、发动机号、注册日期例:20120512")
     @PostMapping("/modelQuery")
     public HttpResult modelQueryAPI(@RequestBody CarModel_Req carModelReq) {
 

+ 4 - 3
src/main/java/com/ydtech/modules/ins/model/yc/audit/Audit.java

@@ -272,9 +272,10 @@ public class Audit {
         taxATion.setMobile(applyInfo.getMobile());
 
         //@TODO 无法获取,输入无效内容
-        taxATion.setBankName("山西省太原市");
-        //@TODO 无法获取,输入无效内容
-        taxATion.setAcctNo("999999");
+        taxATion.setBankName(" ");
+        taxATion.setAcctNo(" ");
+//        taxATion.setBankName("山西省太原市");
+//        taxATion.setAcctNo("999999");
 
         condition.setCustomer(customer);
         condition.setTaxATion(taxATion);

+ 108 - 102
src/main/java/com/ydtech/modules/ins/model/yc/callbackAnOrder/response/CallbackAnOrderResponse.java

@@ -1,102 +1,108 @@
-package com.ydtech.modules.ins.model.yc.order.response;
-
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
-import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
-import lombok.Data;
-
-
-/**
- * 补传回调及订单信息查询接口
- *
- * @author: lig
- * @date: 2023-04-06
- */
-@Data
-@JacksonXmlRootElement(localName = "thirdPartycallBackResponse")
-public class CallbackAnOrderResponse {
-
-
-    /**
-     * 交易流水号
-     * 与支付时相同  支付使用
-     */
-    @JacksonXmlProperty(localName = "transNo")
-    private String transNo;
-
-    /**
-     * 回调类型
-     * 0 支付回调 1核保回调 5直接返回
-     */
-    @JacksonXmlProperty(localName = "type")
-    private String type;
-
-    /**
-     * 回调结果
-     * 0 成功,1 失败
-     */
-    @JacksonXmlProperty(localName = "result")
-    private String result;
-
-    /**
-     * 商业险保单号
-     * Type为1 且投保商业险时有值
-     */
-    @JacksonXmlProperty(localName = "bizPolicyNo")
-    private String bizPolicyNo;
-
-    /**
-     * 交强险保单号
-     * Type为1 且投保交强险时有值
-     */
-    @JacksonXmlProperty(localName = "ciPolicyNo")
-    private String ciPolicyNo;
-
-    /**
-     * 失败原因
-     * 回调结果失败时有值
-     */
-    @JacksonXmlProperty(localName = "message")
-    private String message;
-
-    /**
-     * 商业险投保单号
-     * 申请核保时产生
-     */
-    @JacksonXmlProperty(localName = "bizPolicyAppNo")
-    private String bizPolicyAppNo;
-
-    /**
-     * 交强险投保单号
-     * 申请核保时产生
-     */
-    @JacksonXmlProperty(localName = "ciPolicyAppNo")
-    private String ciPolicyAppNo;
-
-    /**
-     * 交强保单状态
-     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
-     */
-    @JacksonXmlProperty(localName = "jqstatus")
-    private String jqstatus;
-
-    /**
-     * 商业投保单状态
-     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
-     */
-    @JacksonXmlProperty(localName = "systatus")
-    private String systatus;
-
-    /**
-     * 交强险核保备注
-     */
-    @JacksonXmlProperty(localName = "jqmessage")
-    private String jqmessage;
-
-    /**
-     * 商业性核保备注
-     */
-    @JacksonXmlProperty(localName = "symessage")
-    private String symessage;
-
-
-}
+//package com.ydtech.modules.ins.model.yc.callbackAnOrder.response;
+//
+//import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+//import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+//import lombok.Data;
+//
+//
+///**
+// * 补传回调及订单信息查询接口
+// *
+// * @author: lig
+// * @date: 2023-04-06
+// */
+//@Data
+//@JacksonXmlRootElement(localName = "thirdPartycallBackResponse")
+//public class CallbackAnOrderResponse {
+//
+//
+//    /**
+//     *
+//     * 返回字符串  需要解析
+//     */
+//    @JacksonXmlProperty(localName = "return")
+//    private String returnStr;
+////    /**
+////     * 交易流水号
+////     * 与支付时相同  支付使用
+////     */
+////    @JacksonXmlProperty(localName = "transNo")
+////    private String transNo;
+////
+////    /**
+////     * 回调类型
+////     * 0 支付回调 1核保回调 5直接返回
+////     */
+////    @JacksonXmlProperty(localName = "type")
+////    private String type;
+////
+////    /**
+////     * 回调结果
+////     * 0 成功,1 失败
+////     */
+////    @JacksonXmlProperty(localName = "result")
+////    private String result;
+////
+////    /**
+////     * 商业险保单号
+////     * Type为1 且投保商业险时有值
+////     */
+////    @JacksonXmlProperty(localName = "bizPolicyNo")
+////    private String bizPolicyNo;
+////
+////    /**
+////     * 交强险保单号
+////     * Type为1 且投保交强险时有值
+////     */
+////    @JacksonXmlProperty(localName = "ciPolicyNo")
+////    private String ciPolicyNo;
+////
+////    /**
+////     * 失败原因
+////     * 回调结果失败时有值
+////     */
+////    @JacksonXmlProperty(localName = "message")
+////    private String message;
+////
+////    /**
+////     * 商业险投保单号
+////     * 申请核保时产生
+////     */
+////    @JacksonXmlProperty(localName = "bizPolicyAppNo")
+////    private String bizPolicyAppNo;
+////
+////    /**
+////     * 交强险投保单号
+////     * 申请核保时产生
+////     */
+////    @JacksonXmlProperty(localName = "ciPolicyAppNo")
+////    private String ciPolicyAppNo;
+////
+////    /**
+////     * 交强保单状态
+////     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
+////     */
+////    @JacksonXmlProperty(localName = "jqstatus")
+////    private String jqstatus;
+////
+////    /**
+////     * 商业投保单状态
+////     * 0待核保   5上报复核   9已核保未交费   3退回修改    1已核保且交费
+////     */
+////    @JacksonXmlProperty(localName = "systatus")
+////    private String systatus;
+////
+////    /**
+////     * 交强险核保备注
+////     */
+////    @JacksonXmlProperty(localName = "jqmessage")
+////    private String jqmessage;
+////
+////    /**
+////     * 商业性核保备注
+////     */
+////    @JacksonXmlProperty(localName = "symessage")
+////    private String symessage;
+//
+//
+//}

+ 6 - 1
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Applicant.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.ins.model.yc.ruote;
 import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
 import com.ydtech.modules.ins.model.vo.CustomerInfoVo;
 import com.ydtech.utils.IDCardUtils;
+import com.ydtech.utils.StringUtils;
 import lombok.Data;
 
 
@@ -239,9 +240,13 @@ public class Applicant {
         applicant.setCResvTxt5("000");
         applicant.setCClntMrk("1");
         applicant.setCAreaCde("103132");
-        applicant.setCCntrNme(policyHolderInfo.getName());
         applicant.setTBirthday(IDCardUtils.GetBirthday(policyHolderInfo.getIdentifyNumber()));
         applicant.setCSex(IDCardUtils.GetYcSex(policyHolderInfo.getIdentifyNumber()));
+        //@TODO 临时测试   后期需要页面传入
+        applicant.setCCntrNme("强");
+        if(StringUtils.isNullOrEmpty(applicant.getCCntrNme())){
+            applicant.setCCntrNme(policyHolderInfo.getName());
+        }
 
 //        applicant.setCProvince(Province.buildProvince(policyHolderInfo.getAddr()));
 //        applicant.setCCity(City.buildCity(policyHolderInfo.getAddr()));

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Vhl.java

@@ -378,7 +378,7 @@ public class Vhl {
 //        vhl.setNActualValue(String.valueOf((Double.parseDouble(carInfo.getPurchasePrice()) * 0.9)));
 //        vhl.setNNewPurchaseValue(String.valueOf((Double.parseDouble(carInfo.getPurchasePrice()) * 0.9)));
         vhl.setNPureRange("0.0");
-        vhl.setCDisplacementLvl(carInfo.getPowerScale());
+        vhl.setCDisplacementLvl(StringUtils.toInt(carInfo.getPowerScale()) + "");
 //        vhl.setCDisplacementLvl("67");
         vhl.setCFstRegYm(carInfo.getIssueDate());
         vhl.setNNewPriceValue(carInfo.getPurchasePrice());

+ 8 - 4
src/main/java/com/ydtech/modules/ins/service/impl/InsAlltrustApiServiceImpl.java

@@ -186,6 +186,9 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
 //            return HttpResult.error("frameNo, enrollDate, modelName 这些参数不能为空!");
 //        }
 
+
+//        gainAuthorityDataXml(), apiComponents.gainAgent()
+
         ModelsQueryXml m = buildModelsQueryParam(carModelReq);
         ObjectMapper xmlMapper = this.gainXmlMapper();
 
@@ -601,7 +604,7 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
             String cleanStr = YcBuildData.cleanResponseStr(responseData);
 //            CallbackAnOrderResponse callbackAnOrderResponse = xmlMapper.readValue(cleanStr, CallbackAnOrderResponse.class);
 
-            if (StringUtils.isNullOrEmpty(cleanStr)) {
+            if (StringUtils.isNotEmpty(cleanStr)) {
                 log.info("永诚API方式 - 补传回调 - 参数:" + cleanStr);
                 CallBackRequest param = CallBackRequest.buildCallBackParam(cleanStr);
 
@@ -979,19 +982,20 @@ public class InsAlltrustApiServiceImpl implements InsAlltrustApiService {
      * @date: 2023年02月08日 0008
      */
     private ModelsQueryXml buildModelsQueryParam(CarModel_Req carModelReq) {
-
         ModelsQueryXml m = new ModelsQueryXml();
         ModelsQueryXml.RequestLabel requestLabel = new ModelsQueryXml.RequestLabel();
         requestLabel.setSearchKeyword(carModelReq.getFrameNo().substring(0, 8));
         requestLabel.setVid(carModelReq.getFrameNo());
         requestLabel.setEngineNo(carModelReq.getEngineNo());
-        requestLabel.setDptCde("1425");
-        requestLabel.setProno("");
+        requestLabel.setDptCde(apiComponents.getDptCde());
+        requestLabel.setProno("0326");
         requestLabel.setMotorTypeCode("11");
         requestLabel.setCFstRegYm(carModelReq.getEnrollDate());
         requestLabel.setAuthorityData(this.gainAuthorityDataXml());
 
 
+
+
         m.setRequestLabel(requestLabel);
 
 

+ 169 - 0
src/main/java/com/ydtech/modules/inv/controller/InvChannelsExternalBillsDetailsController.java

@@ -0,0 +1,169 @@
+package com.ydtech.modules.inv.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.bean.copier.CopyOptions;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.BaseController;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetailsHistory;
+import com.ydtech.modules.inv.model.InvCompany;
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.ydtech.modules.inv.model.vo.req.InvInsExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsHistoryService;
+import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsService;
+import com.ydtech.modules.inv.service.InvExternalBillsService;
+import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
+import com.ydtech.security.JwtAuthenticatioToken;
+import com.ydtech.security.utils.SecurityUtils;
+import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 财务 - 渠道 - 外部票据控制层 详情
+ *
+ * @author: lig
+ * @date: 2023-05-31
+ */
+@Api(tags = "财务 - 渠道 - 外部票据 详情 控制层")
+@RestController
+@RequestMapping("api/inv/channelsExternalBillsDetails")
+@Slf4j
+public class InvChannelsExternalBillsDetailsController extends BaseController {
+
+    @Autowired
+    private InvChannelsExternalBillsDetailsService icebdService;
+    @Autowired
+    private InvChannelsExternalBillsDetailsHistoryService icebdhService;
+
+
+
+
+    /**
+     * 分页查询
+     *
+     * @param reqVo
+     * @return
+     */
+    @ApiOperation(value = "分页查询")
+    @PostMapping(value = "/queryPage")
+    public HttpResult queryPage(@RequestBody InvInsExternalBillsDetailsReqVO reqVo){
+
+        LambdaQueryWrapper<InvChannelsExternalBillsDetails> lqw = new LambdaQueryWrapper();
+        lqw.eq(StringUtils.isNotEmpty(reqVo.getBatchNum()),InvChannelsExternalBillsDetails::getBatchNum,reqVo.getBatchNum());
+
+        Page p = PageRequest.buildPageRequestByVo(reqVo);
+        IPage<InvChannelsExternalBillsDetails> pResult = icebdService.page(p, lqw);
+        //传入查询条件
+        PageResult pageResult = PageResult.buildPageResult(pResult);
+        return HttpResult.ok(pageResult);
+    }
+
+
+
+
+    @GetMapping("/detailsById")
+    @ApiOperation(value = "详情")
+    public HttpResult detailsById(String id) {
+        return HttpResult.ok(icebdService.getById(id));
+
+    }
+    @GetMapping("/aaaaa")
+    @ApiOperation(value = "测试用户ID是否获取到")
+    public HttpResult aaaa(HttpServletRequest request) {
+        log.error("********************");
+        log.error("Authorization:"+request.getHeader("Authorization"));
+        log.error("token:"+request.getHeader("token"));
+
+
+        Authentication authentication = SecurityUtils.getAuthentication();
+
+        JwtAuthenticatioToken j = (JwtAuthenticatioToken) authentication;
+        log.error("JwtAuthenticatioToken:"+j);
+        log.error("JwtAuthenticatioToken  token:"+j.getToken());
+        log.error("*********end********");
+
+        log.error("测试获取的用户ID 2222:"+getUserId2());
+        log.error("测试获取的用户ID 1111:"+getUserId());
+        return HttpResult.ok("获取用户ID测试:",getUserId());
+
+    }
+    @GetMapping("/bbbb")
+    @ApiOperation(value = "测试用户ID是否获取到2222")
+    public HttpResult bbbb() {
+        return HttpResult.ok("获取用户ID测试2222:",getUserId2());
+
+    }
+
+
+    @ApiOperation(value = "修改")
+    @PostMapping(value = "/edit")
+    @Transactional
+    public HttpResult edit(@RequestBody InvChannelsExternalBillsDetails icebd, HttpServletRequest request) {
+
+
+
+        List<InvChannelsExternalBillsDetailsHistory> list = icebdhService.gainListByEditId(icebd.getId());
+
+        List<InvChannelsExternalBillsDetailsHistory> icebdhList = new ArrayList<>();
+        InvChannelsExternalBillsDetails icebdOld = icebdService.getById(icebd.getId());
+        if(null == list || list.size() < 1){
+            //初始历史数据
+            InvChannelsExternalBillsDetailsHistory icebdh = new InvChannelsExternalBillsDetailsHistory();
+//            BeanUtils.copyProperties(icebdOld, icebdh,"id");
+            BeanUtil.copyProperties(icebdOld, icebdh, CopyOptions.create(null, true,"id"));
+            icebdh.setEditId(icebd.getId());
+            icebdhList.add(icebdh);
+        }
+
+
+        InvChannelsExternalBillsDetailsHistory icebdh = new InvChannelsExternalBillsDetailsHistory();
+
+        //构造更新数据
+        BeanUtil.copyProperties(icebd, icebdOld, CopyOptions.create(null, true));
+
+        //构造历史数据
+        BeanUtil.copyProperties(icebdOld, icebdh, CopyOptions.create(null, true,"id"));
+
+//        //构造更新数据
+//        BeanUtils.copyProperties(icebdOld , icebd);
+//        //构造历史数据
+//        BeanUtils.copyProperties(icebd, icebdh,"id");
+        icebdh.setEditId(icebdOld.getId());
+        icebdh.setEditTime(new Date());
+        icebdhList.add(icebdh);
+
+
+//            icebdhService.saveBatch(icebdhList);
+
+        icebdService.updateById(icebdOld);
+
+
+        return HttpResult.ok(icebdhService.saveBatch(icebdhList));
+    }
+
+
+
+
+
+}

+ 5 - 0
src/main/java/com/ydtech/modules/inv/controller/InvCompanyController.java

@@ -8,13 +8,17 @@ import com.ydtech.modules.inv.model.InvCompany;
 import com.ydtech.modules.inv.service.InvCompanyService;
 import com.ydtech.modules.inv.model.vo.req.InvCompanyReqVO;
 import com.ydtech.modules.inv.model.vo.res.InvCompanyResVO;
+import com.ydtech.security.JwtAuthenticatioToken;
+import com.ydtech.security.utils.SecurityUtils;
 import com.ydtech.utils.DateUtil;
 import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.Authentication;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -33,6 +37,7 @@ import java.util.List;
 @Api(tags = "发票公司控制层")
 @RestController
 @RequestMapping("api/inv/company")
+@Slf4j
 public class InvCompanyController extends BaseController {
 
     @Autowired

+ 255 - 0
src/main/java/com/ydtech/modules/inv/controller/InvExternalBillsController.java

@@ -0,0 +1,255 @@
+package com.ydtech.modules.inv.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.BaseController;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.exception.SystemException;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.model.vo.req.InvInsExternalBillsReqVO;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
+import com.ydtech.modules.inv.model.vo.res.InvCompanyResVO;
+import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsService;
+import com.ydtech.modules.inv.service.InvExternalBillsService;
+import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
+import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.*;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 外部单据控制层  临时
+ *
+ * @author: lig
+ * @date: 2023-05-31
+ */
+@Api(tags = "财务 - 保险公司 - 外部票据控制层")
+@RestController
+@RequestMapping("api/inv/insExternalBills")
+public class InvExternalBillsController extends BaseController {
+
+    @Autowired
+    private InvExternalBillsService invExternalBillsService;
+
+    @Autowired
+    private InvInsExternalBillsDetailsService invInsExternalBillsDetailsService;
+    @Autowired
+    private InvChannelsExternalBillsDetailsService invChannelsExternalBillsDetailsService;
+    @Autowired
+    private EsmInsCompanyService esmInsCompanyService;
+
+
+    /**
+     * 分页查询
+     *
+     * @param reqVo
+     * @return
+     */
+    @ApiOperation(value = "分页查询")
+    @PostMapping(value = "/queryPage")
+    public HttpResult<PageResult<InvExternalBills>> queryPage(@RequestBody InvInsExternalBillsReqVO reqVo) {
+
+        LambdaQueryWrapper<InvExternalBills> lqw = new LambdaQueryWrapper();
+        lqw.eq(StringUtils.isNotEmpty(reqVo.getImportStatus()), InvExternalBills::getImportStatus, reqVo.getImportStatus());
+        lqw.between(StringUtils.isNotEmpty(reqVo.getImportStartTime()) && StringUtils.isNotEmpty(reqVo.getImportEndTime()),InvExternalBills::getCreateTime, reqVo.getImportStartTime(),reqVo.getImportEndTime());
+        lqw.eq(InvExternalBills::getFlag, reqVo.getFlag());
+        lqw.eq(StringUtils.isNotEmpty(reqVo.getInsCompanyId()),InvExternalBills::getInsCompanyId,reqVo.getInsCompanyId());
+
+        Page p = PageRequest.buildPageRequestByVo(reqVo);
+        IPage<InvExternalBills> pResult = invExternalBillsService.page(p, lqw);
+        //传入查询条件
+        PageResult<InvExternalBills> pageResult = PageResult.buildPageResult(pResult);
+        return HttpResult.ok(pageResult);
+    }
+
+
+    @PostMapping("/importDataAdd")
+    @ApiOperation(value = "excel导入数据(新增)")
+    public HttpResult importDataAdd(@ApiParam(name = "file", value = "excel文件", required = true) @RequestPart MultipartFile file
+            , HttpServletRequest request
+            , @ApiParam(name = "insCompanyId", value = "保险公司ID") String insCompanyId
+            , @ApiParam(name = "businessChannels", value = "业务渠道") String businessChannels
+            , @ApiParam(name = "flag", value = "标识(1 保险公司模板导入   2 渠道模板导入)", required = true) @RequestParam String flag
+    ) {
+
+        if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) {
+            throw new SystemException("上传文件大小为空");
+        }
+
+
+        HttpResult result = null;
+
+        InvExternalBills iieb = new InvExternalBills();
+        iieb.setCreateTime(new Date());
+        iieb.setCreateBy(getUserId(request));
+        iieb.setImportStatus("1");
+        iieb.setFlag(flag);
+
+        if (flag.equals("1")) {
+            if (StringUtils.isNullOrEmpty(insCompanyId)) return HttpResult.error("保险公司ID不存在");
+            EsmInsCompany eic = esmInsCompanyService.getById(insCompanyId);
+            if (null == eic) return HttpResult.error("保险公司不存在");
+            iieb.setInsCompanyId(eic.getId());
+            iieb.setInsCompanyName(eic.getName());
+
+            invExternalBillsService.save(iieb);
+            //导入保险公司详细数据
+            invInsExternalBillsDetailsService.importData(file, iieb);
+
+
+        } else if (flag.equals("2")) {
+            iieb.setBusinessChannels(businessChannels);
+            invExternalBillsService.save(iieb);
+            invChannelsExternalBillsDetailsService.importData(file, iieb);
+
+        }
+
+
+        return HttpResult.ok("导入成功");
+
+    }
+
+
+    @PostMapping("/importDataEdit")
+    @ApiOperation(value = "excel导入数据(修改)")
+    public HttpResult importDataEdit(@ApiParam(name = "file", value = "excel文件", required = true) @RequestPart MultipartFile file
+            , @ApiParam(name = "batchNum", value = "批次号", required = true) @RequestParam String batchNum
+            , HttpServletRequest request
+    ) {
+
+        if (ObjectUtils.isEmpty(file) || file.getSize() <= 0) {
+            throw new SystemException("上传文件大小为空");
+        }
+
+        InvExternalBills ieb = invExternalBillsService.getById(batchNum);
+
+
+        ieb.setCreateTime(new Date());
+        ieb.setCreateBy(getUserId(request));
+        ieb.setImportStatus("1");
+        invExternalBillsService.updateById(ieb);
+
+
+        if (ieb.getFlag().equals("1")) {
+
+            invExternalBillsService.importDataInsOper( batchNum, file, ieb);
+
+        } else if (ieb.getFlag().equals("2")) {
+
+            invExternalBillsService.importDataChannelsOper( batchNum, file, ieb);
+
+        }
+
+
+        return HttpResult.ok("重新导入成功");
+
+    }
+
+
+//    @PostMapping("/import")
+//    @ApiOperation(value = "excel导入数据")
+//    public HttpResult importData(@ApiParam(name = "file", value = "excel文件") MultipartFile file, HttpServletRequest request
+//            , String insCompanyId, String id ) {
+//        HttpResult result = null;
+//
+//
+//        InvInsExternalBills iieb = null;
+//        if (StringUtils.isNotEmpty(id)) {
+//            iieb = insExternalBillsService.getById(id);
+//            invInsExternalBillsDetailsService.deleteByBatchNum(id);
+//        } else {
+//            if (StringUtils.isNotEmpty(insCompanyId)) {
+//                EsmInsCompany eic = esmInsCompanyService.getById(insCompanyId);
+//                if (null != eic) {
+//                    iieb = new InvInsExternalBills();
+//                    iieb.setInsCompanyId(eic.getId());
+//                    iieb.setInsCompanyName(eic.getName());
+//
+//
+//                } else {
+//                    return HttpResult.error("保险公司不存在");
+//                }
+//
+//            } else {
+//                return HttpResult.error("保险公司ID空");
+//            }
+//
+//        }
+//
+//
+//        iieb.setCreateTime(new Date());
+//        iieb.setCreateBy(getUserId(request));
+//
+//        iieb.setImportStatus("1");
+//
+//        insExternalBillsService.saveOrUpdate(iieb);
+//
+//        //导入详细数据
+//        insExternalBillsService.importData(file, iieb);
+//
+//
+////        return insExternalBillsService.importData(file);
+//        return HttpResult.ok();
+//
+//    }
+
+
+    @ApiOperation(value = "修改")
+    @ApiResponses({
+            @ApiResponse(code = 500, message = "出现异常"),
+            @ApiResponse(code = 200, message = "请求成功")
+    })
+    @PostMapping(value = "/edit")
+    public HttpResult edit(@RequestBody InvExternalBills invExternalBills, HttpServletRequest request) {
+
+        return HttpResult.ok(invExternalBillsService.updateById(invExternalBills));
+    }
+
+
+    @ApiOperation(value = "单条删除通过批次号")
+    @ApiResponses({
+            @ApiResponse(code = 500, message = "出现异常"),
+            @ApiResponse(code = 200, message = "请求成功")
+    })
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "batchNum", value = "批次号",required = true)
+            , @ApiImplicitParam(name = "flag", value = "标识(1 保险公司模板导入   2 渠道模板导入)" ,required = true) })
+    @DeleteMapping(value = "/deleteByBatchNum")
+    public HttpResult deleteByBatchNum(String batchNum , String flag) {
+
+        if(flag.equals("1")){
+            invInsExternalBillsDetailsService.deleteByBatchNum(batchNum);
+        }
+        if(flag.equals("2")){
+            invChannelsExternalBillsDetailsService.deleteByBatchNum(batchNum);
+        }
+
+        return HttpResult.ok(invExternalBillsService.removeById(batchNum));
+    }
+
+
+
+
+    @PostMapping("/channelMatchingIns")
+    @ApiOperation(value = "渠道匹配保险公司数据(分页)")
+    public HttpResult<PageResult<InvBaseChannelMatchInsResVO>> channelMatchIns(@RequestBody InvChannelExternalBillsDetailsReqVO reqVo) {
+
+        return HttpResult.ok(invChannelsExternalBillsDetailsService.gainChannelMatchIns(reqVo));
+
+    }
+
+
+}

+ 75 - 0
src/main/java/com/ydtech/modules/inv/controller/InvInsExternalBillsDetailsController.java

@@ -0,0 +1,75 @@
+package com.ydtech.modules.inv.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.core.page.BaseController;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.ydtech.modules.inv.model.vo.req.InvInsExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.service.InvExternalBillsService;
+import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
+import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 财务 - 保险公司 - 外部票据控制层 详情
+ *
+ * @author: lig
+ * @date: 2023-05-31
+ */
+@Api(tags = "财务 - 保险公司 - 外部票据 详情 控制层")
+@RestController
+@RequestMapping("api/inv/insExternalBillsDetails")
+public class InvInsExternalBillsDetailsController extends BaseController {
+
+    @Autowired
+    private InvExternalBillsService insExternalBillsService;
+    @Autowired
+    private InvInsExternalBillsDetailsService invInsExternalBillsDetailsService;
+    @Autowired
+    private EsmInsCompanyService esmInsCompanyService;
+
+
+
+
+    /**
+     * 分页查询
+     *
+     * @param reqVo
+     * @return
+     */
+    @ApiOperation(value = "分页查询")
+    @PostMapping(value = "/queryPage")
+    public HttpResult<PageResult<InvInsExternalBillsDetails>> queryPage(@RequestBody InvInsExternalBillsDetailsReqVO reqVo){
+
+        LambdaQueryWrapper<InvInsExternalBillsDetails> lqw = new LambdaQueryWrapper();
+        lqw.eq(StringUtils.isNotEmpty(reqVo.getBatchNum()),InvInsExternalBillsDetails::getBatchNum,reqVo.getBatchNum());
+
+        Page p = PageRequest.buildPageRequestByVo(reqVo);
+        IPage<InvInsExternalBillsDetails> pResult = invInsExternalBillsDetailsService.page(p, lqw);
+        //传入查询条件
+        PageResult<InvInsExternalBillsDetails> pageResult = PageResult.buildPageResult(pResult);
+        return HttpResult.ok(pageResult);
+    }
+
+
+
+
+    @GetMapping("/detailsById")
+    @ApiOperation(value = "详情")
+    public HttpResult<InvInsExternalBillsDetails> detailsById(String id) {
+        return HttpResult.ok(invInsExternalBillsDetailsService.getById(id));
+
+    }
+
+
+
+
+
+}

+ 5 - 5
src/main/java/com/ydtech/modules/inv/controller/InvInvoiceInfoController.java

@@ -52,11 +52,11 @@ public class InvInvoiceInfoController extends BaseController {
 
         invInvoiceInfo.setApprovalStatus(ApprovalStatusEnum.AS0.getCode());
         if(StringUtils.isNotEmpty(invInvoiceInfo.getId())){
-            //更新
-            InvInvoiceInfo info = invInvoiceInfoService.getById(invInvoiceInfo.getId());
-            if(info.getApprovalStatus().equals(ApprovalStatusEnum.AS1.getCode())){
-                return HttpResult.error("审核通过的不允许修改");
-            }
+//            //更新
+//            InvInvoiceInfo info = invInvoiceInfoService.getById(invInvoiceInfo.getId());
+//            if(info.getApprovalStatus().equals(ApprovalStatusEnum.AS1.getCode())){
+//                return HttpResult.error("审核通过的不允许修改");
+//            }
 
             invInvoiceInfo.setUpdateBy(getUserId(request));
             invInvoiceInfo.setUpdateTime(new Date());

+ 20 - 0
src/main/java/com/ydtech/modules/inv/dao/InvChannelsExternalBillsDetailsHistoryMapper.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.inv.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetailsHistory;
+import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface InvChannelsExternalBillsDetailsHistoryMapper extends BaseMapper<InvChannelsExternalBillsDetailsHistory> {
+
+
+}
+
+
+
+

+ 65 - 0
src/main/java/com/ydtech/modules/inv/dao/InvChannelsExternalBillsDetailsMapper.java

@@ -0,0 +1,65 @@
+package com.ydtech.modules.inv.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
+import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface InvChannelsExternalBillsDetailsMapper extends BaseMapper<InvChannelsExternalBillsDetails> {
+
+    //匹配sql
+    String selectFrom = "select t1.id,t1.batch_num as batchNum,t1.mlifta as mlifta1" +
+            ",t2.mlifta as mlifta2" +
+            ",if(t1.mlifta = t2.mlifta,true,false) as 'mliftaMatch'" +
+            ",t1.vavt as vavt1" +
+            ",t2.vavt as vavt2" +
+            ",if(t1.vavt = t2.vavt,true,false) as 'vavtMatch'" +
+            ",t1.cip as cip1" +
+            ",t2.cip as cip2" +
+            ",if(t1.cip = t2.cip,true,false) as 'cipMatch'" +
+            ",t1.plate_num as plateNum1" +
+            ",t2.plate_num as plateNum2" +
+            ",if(t1.plate_num = t2.plate_num,true,false) as 'plateNumMatch'" +
+            ",t1.pay_date as payDate" +
+            " from " +
+            "inv_channels_external_bills_details t1 " +
+            "left join inv_ins_external_bills_details t2 on t1.plate_num = t2.plate_num ";
+
+
+    //主查询
+    String selectSql = " select  * from  " +
+            "	(" + selectFrom + "	) t " +
+            " where 1=1 "
+//            "<if test='page.batchNum !=null and page.batchNum!=\"\"  '>" +
+//            " and t.batchNum = #{page.enterpriseId} " +
+//            "</if> "
+            ;
+
+
+    //条件
+    String selectWhereSql = "" +
+            "<if test='page.batchNum !=null and page.batchNum!=\"\"  '>" +
+            " and t.batchNum = #{page.batchNum} " +
+            "</if> " +
+            "<if test='page.isMatch !=null and page.isMatch!=\"\" and page.isMatch == 1  '>" +
+            " and t.mliftaMatch=1 and t.plateNumMatch=1 and t.vavtMatch=1 and t.cipMatch=1 " +
+            "</if> " +
+            "<if test='page.isMatch !=null and page.isMatch!=\"\" and page.isMatch == 0  '>" +
+            " and (t.mliftaMatch=0 or t.plateNumMatch=0 or t.vavtMatch=0 or t.cipMatch=0 ) " +
+            "</if> ";
+
+
+    @Select({"<script> select count(1) from (", selectSql,selectWhereSql, ") a </script>"})
+    int gainChannelMatchInsCount(@Param("page") InvChannelExternalBillsDetailsReqVO reqVO);
+
+    @Select({"<script> ", selectSql,selectWhereSql, " limit #{page.pageNum},#{page.pageSize}", "</script>"})
+    List<InvBaseChannelMatchInsResVO> gainChannelMatchIns(@Param("page") InvChannelExternalBillsDetailsReqVO reqVO);
+}
+
+
+
+

+ 18 - 0
src/main/java/com/ydtech/modules/inv/dao/InvInsExternalBillsDetailsMapper.java

@@ -0,0 +1,18 @@
+package com.ydtech.modules.inv.dao;
+
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author Administrator
+* @description 针对表【inv_ins_external_bills_details(财务 - 保险公司 - 外部票据 - 详情)】的数据库操作Mapper
+* @createDate 2023-06-06 11:08:53
+* @Entity generator.domain.InvInsExternalBillsDetails
+*/
+public interface InvInsExternalBillsDetailsMapper extends BaseMapper<InvInsExternalBillsDetails> {
+
+}
+
+
+
+

+ 14 - 0
src/main/java/com/ydtech/modules/inv/dao/InvInsExternalBillsMapper.java

@@ -0,0 +1,14 @@
+package com.ydtech.modules.inv.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.inv.model.InvExternalBills;
+
+/**
+ * @author Administrator
+ * @description 针对表【inv_ins_external_bills(财务 - 保险公司 - 外部票据)】的数据库操作Mapper
+ * @createDate 2023-06-06 10:58:18
+ * @Entity generator.domain.InvInsExternalBills
+ */
+public interface InvInsExternalBillsMapper extends BaseMapper<InvExternalBills> {
+
+}

+ 220 - 0
src/main/java/com/ydtech/modules/inv/model/InvBaseExternalBillsDetails.java

@@ -0,0 +1,220 @@
+package com.ydtech.modules.inv.model;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 财务 - 基础 - 外部票据 - 详情
+ */
+@Data
+public class InvBaseExternalBillsDetails implements Serializable {
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private String id;
+
+    /**
+     * 批次号
+     */
+    @TableField(value = "batch_num")
+    @ApiModelProperty(value = "批次号")
+    private String batchNum;
+
+    /**
+     * 保单号
+     */
+    @Excel(name = "保单号")
+    @TableField(value = "policy_num")
+    @ApiModelProperty(value = "保单号")
+    private String policyNum;
+
+    /**
+     * 车牌号
+     */
+    @Excel(name = "车牌号")
+    @TableField(value = "plate_num")
+    @ApiModelProperty(value = "车牌号")
+    private String plateNum;
+
+    /**
+     * 付款日期
+     */
+    @Excel(name = "付款日期")
+    @TableField(value = "pay_date")
+    @ApiModelProperty(value = "付款日期")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date payDate;
+
+    /**
+     * 起保日期
+     */
+    @Excel(name = "起保日期")
+    @TableField(value = "coc_date")
+    @ApiModelProperty(value = "起保日期")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    private Date cocDate;
+
+    /**
+     * 险种名称
+     */
+    @Excel(name = "险种名称")
+    @TableField(value = "ins_kind_name")
+    @ApiModelProperty(value = "险种名称")
+    private String insKindName;
+
+    /**
+     * 投保习惯
+     */
+    @Excel(name = "投保习惯")
+    @TableField(value = "ins_habit")
+    @ApiModelProperty(value = "投保习惯")
+    private String insHabit;
+
+    /**
+     * 使用性质
+     */
+    @Excel(name = "使用性质")
+    @TableField(value = "use_nature")
+    @ApiModelProperty(value = "使用性质")
+    private String useNature;
+
+    /**
+     * 被保险人
+     */
+    @Excel(name = "被保险人")
+    @TableField(value = "insured")
+    @ApiModelProperty(value = "被保险人")
+    private String insured;
+
+    /**
+     * 投保人
+     */
+    @Excel(name = "投保人")
+    @TableField(value = "applicant")
+    @ApiModelProperty(value = "投保人")
+    private String applicant;
+
+    /**
+     * 交强保费
+     */
+    @Excel(name = "交强保费")
+    @TableField(value = "mlifta")
+    @ApiModelProperty(value = "交强保费")
+    private BigDecimal mlifta;
+
+    /**
+     * 车船税保费
+     */
+    @Excel(name = "车船税保费")
+    @TableField(value = "vavt")
+    @ApiModelProperty(value = "车船税保费")
+    private BigDecimal vavt;
+
+    /**
+     * 商业保费
+     */
+    @Excel(name = "商业保费")
+    @TableField(value = "cip")
+    @ApiModelProperty(value = "商业保费")
+    private BigDecimal cip;
+
+    /**
+     * 三者保额
+     */
+    @Excel(name = "三者保额")
+    @TableField(value = "tpi")
+    @ApiModelProperty(value = "三者保额")
+    private String tpi;
+
+    /**
+     * 批改类型
+     */
+    @Excel(name = "批改类型")
+    @TableField(value = "correction_type")
+    @ApiModelProperty(value = "批改类型")
+    private String correctionType;
+
+    /**
+     * 排量
+     */
+    @Excel(name = "排量")
+    @TableField(value = "cc")
+    @ApiModelProperty(value = "排量")
+    private String cc;
+
+    /**
+     * 投保人年龄
+     */
+    @Excel(name = "投保人年龄")
+    @TableField(value = "applicant_age")
+    @ApiModelProperty(value = "投保人年龄")
+    private String applicantAge;
+
+    /**
+     * 投保人身份证号
+     */
+    @Excel(name = "投保人身份证号")
+    @TableField(value = "applicant_id_card")
+    @ApiModelProperty(value = "投保人身份证号")
+    private String applicantIdCard;
+
+    /**
+     * 投保人性别
+     */
+    @Excel(name = "投保人性别")
+    @TableField(value = "applicant_sex")
+    @ApiModelProperty(value = "投保人性别")
+    private String applicantSex;
+
+    /**
+     * 投保联系人
+     */
+    @Excel(name = "投保联系人")
+    @TableField(value = "applicant_contact")
+    @ApiModelProperty(value = "投保联系人")
+    private String applicantContact;
+
+
+    /**
+     * 交强费用
+     */
+    @TableField(value = "mlifta_cost")
+    @ApiModelProperty(value = "交强费用")
+    private BigDecimal mliftaCost;
+
+    /**
+     * 车船税费用
+     */
+    @TableField(value = "vavt_cost")
+    @ApiModelProperty(value = "车船税费用")
+    private BigDecimal vavtCost;
+
+    /**
+     * 商业费用
+     */
+    @TableField(value = "cip_cost")
+    @ApiModelProperty(value = "商业费用")
+    private BigDecimal cipCost;
+
+    /**
+     * 三者费用
+     */
+    @TableField(value = "tpi_cost")
+    @ApiModelProperty(value = "三者费用")
+    private String tpiCost;
+
+
+
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 174 - 0
src/main/java/com/ydtech/modules/inv/model/InvChannelsExternalBillsDetails.java

@@ -0,0 +1,174 @@
+package com.ydtech.modules.inv.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 财务 - 渠道 - 外部票据 - 详情
+ * @TableName inv_ins_external_bills_details
+ */
+@TableName(value ="inv_channels_external_bills_details")
+@Data
+public class InvChannelsExternalBillsDetails extends InvBaseExternalBillsDetails {
+//    /**
+//     *
+//     */
+//    @TableId(value = "id")
+//    private String id;
+//
+//    /**
+//     * 批次号
+//     */
+//    @TableField(value = "batch_num")
+//    private String batchNum;
+//
+//    /**
+//     * 保单号
+//     */
+//    @Excel(name = "保单号")
+//    @TableField(value = "policy_num")
+//    private String policyNum;
+//
+//    /**
+//     * 车牌号
+//     */
+//    @Excel(name = "车牌号")
+//    @TableField(value = "plate_num")
+//    private String plateNum;
+//
+//    /**
+//     * 付款日期
+//     */
+//    @Excel(name = "付款日期")
+//    @TableField(value = "pay_date")
+//    private Date payDate;
+//
+//    /**
+//     * 起保日期
+//     */
+//    @Excel(name = "起保日期")
+//    @TableField(value = "coc_date")
+//    private Date cocDate;
+//
+//    /**
+//     * 险种名称
+//     */
+//    @Excel(name = "险种名称")
+//    @TableField(value = "ins_kind_name")
+//    private String insKindName;
+//
+//    /**
+//     * 投保习惯
+//     */
+//    @Excel(name = "投保习惯")
+//    @TableField(value = "ins_habit")
+//    private String insHabit;
+//
+//    /**
+//     * 使用性质
+//     */
+//    @Excel(name = "使用性质")
+//    @TableField(value = "use_nature")
+//    private String useNature;
+//
+//    /**
+//     * 被保险人
+//     */
+//    @Excel(name = "被保险人")
+//    @TableField(value = "insured")
+//    private String insured;
+//
+//    /**
+//     * 投保人
+//     */
+//    @Excel(name = "投保人")
+//    @TableField(value = "applicant")
+//    private String applicant;
+//
+//    /**
+//     * 交强保费
+//     */
+//    @Excel(name = "交强保费")
+//    @TableField(value = "mlifta")
+//    private BigDecimal mlifta;
+//
+//    /**
+//     * 车船税保费
+//     */
+//    @Excel(name = "车船税保费")
+//    @TableField(value = "vavt")
+//    private BigDecimal vavt;
+//
+//    /**
+//     * 商业保费
+//     */
+//    @Excel(name = "商业保费")
+//    @TableField(value = "cip")
+//    private BigDecimal cip;
+//
+//    /**
+//     * 三者保额
+//     */
+//    @Excel(name = "三者保额")
+//    @TableField(value = "tpi_si")
+//    private String tpiSi;
+//
+//    /**
+//     * 批改类型
+//     */
+//    @Excel(name = "批改类型")
+//    @TableField(value = "correction_type")
+//    private String correctionType;
+//
+//    /**
+//     * 排量
+//     */
+//    @Excel(name = "排量")
+//    @TableField(value = "cc")
+//    private String cc;
+//
+//    /**
+//     * 投保人年龄
+//     */
+//    @Excel(name = "投保人年龄")
+//    @TableField(value = "applicant_age")
+//    private String applicantAge;
+//
+//    /**
+//     * 投保人身份证号
+//     */
+//    @Excel(name = "投保人身份证号")
+//    @TableField(value = "applicant_id_card")
+//    private String applicantIdCard;
+//
+//    /**
+//     * 投保人性别
+//     */
+//    @Excel(name = "投保人性别")
+//    @TableField(value = "applicant_sex")
+//    private String applicantSex;
+//
+//    /**
+//     * 投保联系人
+//     */
+//    @Excel(name = "投保联系人")
+//    @TableField(value = "applicant_contact")
+//    private String applicantContact;
+//
+//    /**
+//     * 广博分
+//     */
+//    @Excel(name = "广博分")
+//    @TableField(value = "wide_grades")
+//    private String wideGrades;
+//
+//    /**
+//     * 光博分
+//     */
+//    @Excel(name = "光博分")
+//    @TableField(value = "light_grades")
+//    private String lightGrades;
+//
+//    @TableField(exist = false)
+//    private static final long serialVersionUID = 1L;
+}

+ 179 - 0
src/main/java/com/ydtech/modules/inv/model/InvChannelsExternalBillsDetailsHistory.java

@@ -0,0 +1,179 @@
+package com.ydtech.modules.inv.model;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 财务 - 渠道 - 外部票据 - 详情 - 历史
+ */
+@TableName(value = "inv_channels_external_bills_details_history")
+@Data
+public class InvChannelsExternalBillsDetailsHistory extends InvBaseExternalBillsDetails {
+    /**
+     *
+     */
+    @TableField(value = "edit_id")
+    private String editId;
+
+    @TableField(value = "edit_time")
+    private Date editTime;
+//
+//    /**
+//     * 批次号
+//     */
+//    @TableField(value = "batch_num")
+//    private String batchNum;
+//
+//    /**
+//     * 保单号
+//     */
+//    @Excel(name = "保单号")
+//    @TableField(value = "policy_num")
+//    private String policyNum;
+//
+//    /**
+//     * 车牌号
+//     */
+//    @Excel(name = "车牌号")
+//    @TableField(value = "plate_num")
+//    private String plateNum;
+//
+//    /**
+//     * 付款日期
+//     */
+//    @Excel(name = "付款日期")
+//    @TableField(value = "pay_date")
+//    private Date payDate;
+//
+//    /**
+//     * 起保日期
+//     */
+//    @Excel(name = "起保日期")
+//    @TableField(value = "coc_date")
+//    private Date cocDate;
+//
+//    /**
+//     * 险种名称
+//     */
+//    @Excel(name = "险种名称")
+//    @TableField(value = "ins_kind_name")
+//    private String insKindName;
+//
+//    /**
+//     * 投保习惯
+//     */
+//    @Excel(name = "投保习惯")
+//    @TableField(value = "ins_habit")
+//    private String insHabit;
+//
+//    /**
+//     * 使用性质
+//     */
+//    @Excel(name = "使用性质")
+//    @TableField(value = "use_nature")
+//    private String useNature;
+//
+//    /**
+//     * 被保险人
+//     */
+//    @Excel(name = "被保险人")
+//    @TableField(value = "insured")
+//    private String insured;
+//
+//    /**
+//     * 投保人
+//     */
+//    @Excel(name = "投保人")
+//    @TableField(value = "applicant")
+//    private String applicant;
+//
+//    /**
+//     * 交强保费
+//     */
+//    @Excel(name = "交强保费")
+//    @TableField(value = "mlifta")
+//    private BigDecimal mlifta;
+//
+//    /**
+//     * 车船税保费
+//     */
+//    @Excel(name = "车船税保费")
+//    @TableField(value = "vavt")
+//    private BigDecimal vavt;
+//
+//    /**
+//     * 商业保费
+//     */
+//    @Excel(name = "商业保费")
+//    @TableField(value = "cip")
+//    private BigDecimal cip;
+//
+//    /**
+//     * 三者保额
+//     */
+//    @Excel(name = "三者保额")
+//    @TableField(value = "tpi_si")
+//    private String tpiSi;
+//
+//    /**
+//     * 批改类型
+//     */
+//    @Excel(name = "批改类型")
+//    @TableField(value = "correction_type")
+//    private String correctionType;
+//
+//    /**
+//     * 排量
+//     */
+//    @Excel(name = "排量")
+//    @TableField(value = "cc")
+//    private String cc;
+//
+//    /**
+//     * 投保人年龄
+//     */
+//    @Excel(name = "投保人年龄")
+//    @TableField(value = "applicant_age")
+//    private String applicantAge;
+//
+//    /**
+//     * 投保人身份证号
+//     */
+//    @Excel(name = "投保人身份证号")
+//    @TableField(value = "applicant_id_card")
+//    private String applicantIdCard;
+//
+//    /**
+//     * 投保人性别
+//     */
+//    @Excel(name = "投保人性别")
+//    @TableField(value = "applicant_sex")
+//    private String applicantSex;
+//
+//    /**
+//     * 投保联系人
+//     */
+//    @Excel(name = "投保联系人")
+//    @TableField(value = "applicant_contact")
+//    private String applicantContact;
+//
+//    /**
+//     * 广博分
+//     */
+//    @Excel(name = "广博分")
+//    @TableField(value = "wide_grades")
+//    private String wideGrades;
+//
+//    /**
+//     * 光博分
+//     */
+//    @Excel(name = "光博分")
+//    @TableField(value = "light_grades")
+//    private String lightGrades;
+//
+//    @TableField(exist = false)
+//    private static final long serialVersionUID = 1L;
+}

+ 175 - 0
src/main/java/com/ydtech/modules/inv/model/InvExternalBills.java

@@ -0,0 +1,175 @@
+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 com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@TableName(value = "inv_external_bills")
+@Data
+@ApiModel(value = "财务 - 保险公司 - 外部票据", description = "财务 - 保险公司 - 外部票据")
+public class InvExternalBills implements Serializable {
+
+    /**
+     *
+     */
+    @ApiModelProperty(value = "批次号")
+    @TableId(value = "id")
+    private String id;
+
+    /**
+     * 保险公司ID
+     */
+    @ApiModelProperty(value = "保险公司ID")
+    @TableField(value = "ins_company_id")
+    private String insCompanyId;
+
+    /**
+     * 保险公司名称
+     */
+    @ApiModelProperty(value = "保险公司名称")
+    @TableField(value = "ins_company_name")
+    private String insCompanyName;
+
+    /**
+     * 业务渠道
+     */
+    @ApiModelProperty(value = "业务渠道")
+    @TableField(value = "business_channels")
+    private String businessChannels;
+
+    /**
+     * 交强险保费
+     */
+    @ApiModelProperty(value = "交强险保费")
+    @TableField(value = "mlifta")
+    private BigDecimal mlifta;
+
+    /**
+     * 车船税
+     */
+    @ApiModelProperty(value = "车船税")
+    @TableField(value = "vavt")
+    private BigDecimal vavt;
+
+    /**
+     * 商业险保费
+     */
+    @ApiModelProperty(value = "商业险保费")
+    @TableField(value = "cip")
+    private BigDecimal cip;
+
+    /**
+     * 其他保费
+     */
+    @ApiModelProperty(value = "其他保费")
+    @TableField(value = "other")
+    private BigDecimal other;
+
+    /**
+     * 清单数量
+     */
+    @ApiModelProperty(value = "清单数量")
+    @TableField(value = "inventory_quantity")
+    private Integer inventoryQuantity;
+
+    /**
+     * 操作人
+     */
+    @ApiModelProperty(value = "操作人")
+    @TableField(value = "operator")
+    private String operator;
+
+    /**
+     * 导入状态(1成功,2失败)
+     */
+    @ApiModelProperty(value = "导入状态(1成功,0失败)")
+    @TableField(value = "import_status")
+    private String importStatus;
+
+    /**
+     * 创建时间
+     */
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 创建人
+     */
+    @TableField(value = "create_by")
+    private String createBy;
+
+    /**
+     * 错误信息
+     */
+    @ApiModelProperty(value = "错误信息")
+    @TableField(value = "error_msg")
+    private String errorMsg;
+
+    /**
+     * 标识(1 保险公司模板导入   2 渠道模板导入)
+     */
+    @ApiModelProperty(value = "标识(1 保险公司模板导入   2 渠道模板导入)")
+    @TableField(value = "flag")
+    private String flag;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+
+//    /**
+//     * ID
+//     */
+//    @TableId(value = "id", type = IdType.ASSIGN_ID)
+//    private String id;
+//
+//    @Excel(name = "车牌号")
+//    @ApiModelProperty(value = "车牌号")
+//    @TableField(value = "fieldName1")
+//    private String fieldName1;
+//    @Excel(name = "发动机号")
+//    @ApiModelProperty(value = "发动机号")
+//    @TableField(value = "fieldName2")
+//    private String fieldName2;
+//    @Excel(name = "车架号")
+//    @ApiModelProperty(value = "车架号")
+//    @TableField(value = "fieldName3")
+//    private String fieldName3;
+//    @Excel(name = "核保核批通过日期")
+//    @ApiModelProperty(value = "核保核批通过日期")
+//    @TableField(value = "fieldName4")
+//    private String fieldName4;
+//    @Excel(name = "签单保额")
+//    @TableField(value = "fieldName5")
+//    @ApiModelProperty(value = "签单保额")
+//    private String fieldName5;
+//    @Excel(name = "税后保费")
+//    @ApiModelProperty(value = "税后保费")
+//    @TableField(value = "fieldName6")
+//    private String fieldName6;
+//    @Excel(name = "光博分")
+//    @ApiModelProperty(value = "光博分")
+//    @TableField(value = "fieldName7")
+//    private String fieldName7;
+//    @Excel(name = "中煤分")
+//    @ApiModelProperty(value = "中煤分")
+//    @TableField(value = "fieldName8")
+//    private String fieldName8;
+//
+//    @Excel(name = "车船税缴税金额")
+//    @ApiModelProperty(value = "车船税缴税金额")
+//    @TableField(value = "carShipTax")
+//    private String carShipTax;
+
+
+
+}

+ 38 - 0
src/main/java/com/ydtech/modules/inv/model/InvInsExternalBillsDetails.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.inv.model;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 财务 - 保险公司 - 外部票据 - 详情
+ * @TableName inv_ins_external_bills_details
+ */
+@TableName(value ="inv_ins_external_bills_details")
+@Data
+@ApiModel
+public class InvInsExternalBillsDetails extends InvBaseExternalBillsDetails {
+
+
+    /**
+     * 广博分
+     */
+    @Excel(name = "广博分")
+    @TableField(value = "wide_grades")
+    @ApiModelProperty(value = "广博分")
+    private String wideGrades;
+
+    /**
+     * 光博分
+     */
+    @Excel(name = "光博分")
+    @TableField(value = "light_grades")
+    @ApiModelProperty(value = "光博分")
+    private String lightGrades;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}

+ 28 - 0
src/main/java/com/ydtech/modules/inv/model/vo/req/InvChannelExternalBillsDetailsReqVO.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.inv.model.vo.req;
+
+import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 财务 - 保险公司 - 外部票据  详情 请求
+ *
+ * @author: lig
+ * @date: 2023-06-06
+ */
+@Data
+@ApiModel
+public class InvChannelExternalBillsDetailsReqVO extends BasePageVO {
+
+    @ApiModelProperty(value = "批次号")
+    private String batchNum;
+
+    @ApiModelProperty(value = "匹配数据(1匹配  0不匹配)")
+    private String isMatch;
+
+
+
+
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/inv/model/vo/req/InvInsExternalBillsDetailsReqVO.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.inv.model.vo.req;
+
+import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 财务 - 保险公司 - 外部票据  详情 请求
+ *
+ * @author: lig
+ * @date: 2023-06-06
+ */
+@Data
+@ApiModel
+public class InvInsExternalBillsDetailsReqVO extends BasePageVO {
+
+    @ApiModelProperty(value = "批次号")
+    private String batchNum;
+
+
+
+
+}

+ 38 - 0
src/main/java/com/ydtech/modules/inv/model/vo/req/InvInsExternalBillsReqVO.java

@@ -0,0 +1,38 @@
+package com.ydtech.modules.inv.model.vo.req;
+
+import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 财务 - 保险公司 - 外部票据  请求
+ *
+ * @author: lig
+ * @date: 2023-05-16
+ */
+@Data
+@ApiModel
+public class InvInsExternalBillsReqVO extends BasePageVO {
+
+    @ApiModelProperty(value = "导入状态  1成功导入   0导入失败")
+    private String importStatus;
+
+//    @ApiModelProperty(value = "导入时间")
+//    private String importTime;
+
+    @ApiModelProperty(value = "导入开始时间")
+    private String importStartTime;
+
+    @ApiModelProperty(value = "导入结束时间")
+    private String importEndTime;
+
+    @ApiModelProperty(value = "标识(1 保险公司模板导入   2 渠道模板导入)",required = true)
+    private int flag;
+
+    @ApiModelProperty(value = "保险公司ID")
+    private String insCompanyId;
+
+
+
+}

+ 69 - 0
src/main/java/com/ydtech/modules/inv/model/vo/res/InvBaseChannelMatchInsResVO.java

@@ -0,0 +1,69 @@
+package com.ydtech.modules.inv.model.vo.res;
+
+import com.ydtech.core.page.BasePageVO;
+import com.ydtech.modules.inv.model.InvBaseExternalBillsDetails;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 财务 - 基础 渠道匹配保司数据  响应
+ *
+ * @author: lig
+ * @date: 2023-06-06
+ */
+@Data
+@ApiModel
+public class InvBaseChannelMatchInsResVO  {
+
+    @ApiModelProperty(value = "渠道数据详情ID")
+    private String id;
+
+    @ApiModelProperty(value = "渠道批次号")
+    private String batchNum;
+
+    @ApiModelProperty(value = "交强保费1")
+    private String mlifta1;
+
+    @ApiModelProperty(value = "交强保费2")
+    private String mlifta2;
+
+    @ApiModelProperty(value = "交强保费匹配(布尔值) 1匹配  0不匹配")
+    private String mliftaMatch;
+
+    @ApiModelProperty(value = "车牌号1")
+    private String plateNum1;
+
+    @ApiModelProperty(value = "车牌号2")
+    private String plateNum2;
+
+    @ApiModelProperty(value = "车牌号匹配(布尔值) 1匹配  0不匹配")
+    private String plateNumMatch;
+
+    @ApiModelProperty(value = "车船税保费1(渠道值)")
+    private String vavt1;
+
+    @ApiModelProperty(value = "车船税保费2(保司值)")
+    private String vavt2;
+
+    @ApiModelProperty(value = "车船税保费匹配(布尔值) 1匹配  0不匹配")
+    private String vavtMatch;
+
+    @ApiModelProperty(value = "商业保费1(渠道值)")
+    private String cip1;
+
+    @ApiModelProperty(value = "商业保费2(保司值)")
+    private String cip2;
+
+    @ApiModelProperty(value = "商业保费匹配(布尔值) 1匹配  0不匹配")
+    private String cipMatch;
+
+    @ApiModelProperty(value = "付款日期")
+    private String payDate;
+
+
+
+
+}

+ 29 - 0
src/main/java/com/ydtech/modules/inv/model/vo/res/InvChannelMatchInsResVO.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.inv.model.vo.res;
+
+import com.ydtech.core.page.BasePageVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 财务 - 渠道匹配保司数据  响应
+ *
+ * @author: lig
+ * @date: 2023-06-06
+ */
+@Data
+@ApiModel
+public class InvChannelMatchInsResVO extends BasePageVO {
+
+    @ApiModelProperty(value = "匹配的数据")
+    private List<InvBaseChannelMatchInsResVO> matchList;
+
+    @ApiModelProperty(value = "不匹配的数据")
+    private List<InvBaseChannelMatchInsResVO> noMatchList;
+
+
+
+
+}

+ 23 - 0
src/main/java/com/ydtech/modules/inv/service/InvChannelsExternalBillsDetailsHistoryService.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetailsHistory;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+public interface InvChannelsExternalBillsDetailsHistoryService extends IService<InvChannelsExternalBillsDetailsHistory> {
+
+
+
+    List<InvChannelsExternalBillsDetailsHistory> gainListByEditId(String editId);
+
+
+
+}

+ 25 - 0
src/main/java/com/ydtech/modules/inv/service/InvChannelsExternalBillsDetailsService.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
+import com.ydtech.modules.inv.model.vo.res.InvChannelMatchInsResVO;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+
+public interface InvChannelsExternalBillsDetailsService extends IService<InvChannelsExternalBillsDetails> {
+
+
+    PageResult<InvBaseChannelMatchInsResVO> gainChannelMatchIns(InvChannelExternalBillsDetailsReqVO reqVo);
+
+    boolean deleteByBatchNum(String batchNum);
+
+//    @Async
+    void importData(MultipartFile file, InvExternalBills iieb) ;
+
+
+
+}

+ 20 - 0
src/main/java/com/ydtech/modules/inv/service/InvExternalBillsService.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.inv.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * @author Administrator
+ * @description 针对表【inv_company(开票公司)】的数据库操作Service
+ * @createDate 2023-05-15 11:03:06
+ */
+public interface InvExternalBillsService extends IService<InvExternalBills> {
+
+
+    void importDataInsOper(String batchNum,MultipartFile file,InvExternalBills ieb);
+
+    void importDataChannelsOper(String batchNum,MultipartFile file,InvExternalBills ieb);
+
+}

+ 22 - 0
src/main/java/com/ydtech/modules/inv/service/InvInsExternalBillsDetailsService.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.inv.service;
+
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+* @author Administrator
+* @description 针对表【inv_ins_external_bills_details(财务 - 保险公司 - 外部票据 - 详情)】的数据库操作Service
+* @createDate 2023-06-06 11:08:53
+*/
+public interface InvInsExternalBillsDetailsService extends IService<InvInsExternalBillsDetails> {
+
+    boolean deleteByBatchNum(String batchNum);
+
+    @Async
+    void importData(MultipartFile file, InvExternalBills iieb);
+
+
+}

+ 28 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvChannelsExternalBillsDetailsHistoryServiceImpl.java

@@ -0,0 +1,28 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.InvChannelsExternalBillsDetailsHistoryMapper;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetailsHistory;
+import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsHistoryService;
+import com.ydtech.utils.StringUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class InvChannelsExternalBillsDetailsHistoryServiceImpl extends ServiceImpl<InvChannelsExternalBillsDetailsHistoryMapper, InvChannelsExternalBillsDetailsHistory>
+    implements InvChannelsExternalBillsDetailsHistoryService {
+
+
+    @Override
+    public List<InvChannelsExternalBillsDetailsHistory> gainListByEditId(String editId) {
+        LambdaQueryWrapper<InvChannelsExternalBillsDetailsHistory> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(StringUtils.isNotEmpty(editId),InvChannelsExternalBillsDetailsHistory::getEditId,editId);
+        return list(lqw);
+    }
+}
+
+
+
+

+ 110 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvChannelsExternalBillsDetailsServiceImpl.java

@@ -0,0 +1,110 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.BasePageVO;
+import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.inv.dao.InvChannelsExternalBillsDetailsMapper;
+import com.ydtech.modules.inv.model.InvChannelsExternalBillsDetails;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.ydtech.modules.inv.model.vo.req.InvChannelExternalBillsDetailsReqVO;
+import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
+import com.ydtech.modules.inv.model.vo.res.InvChannelMatchInsResVO;
+import com.ydtech.modules.inv.model.vo.res.InvCompanyResVO;
+import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsService;
+import com.ydtech.modules.inv.service.InvExternalBillsService;
+import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.excel.ExcelUtils2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+public class InvChannelsExternalBillsDetailsServiceImpl extends ServiceImpl<InvChannelsExternalBillsDetailsMapper, InvChannelsExternalBillsDetails>
+    implements InvChannelsExternalBillsDetailsService {
+
+    @Autowired
+    InvExternalBillsService invExternalBillsService;
+
+    @Override
+    public PageResult<InvBaseChannelMatchInsResVO> gainChannelMatchIns(InvChannelExternalBillsDetailsReqVO reqVo) {
+        //获取总数量
+        int total = super.baseMapper.gainChannelMatchInsCount(reqVo);
+//        //计算mysql分页起索引
+//        int firstIndex = reqVo.getPageNum()==1?0:(reqVo.getPageNum()-1) * reqVo.getPageSize() +1;
+//        //计算mysql分页总页数
+//        int totalPages = total % reqVo.getPageSize() == 0?total / reqVo.getPageSize():total / reqVo.getPageSize() +1;
+
+//        PageResult pr = new PageResult();
+//        pr.setPageNum(reqVo.getPageNum());
+//        pr.setPageSize(reqVo.getPageSize());
+//        pr.setTotalSize(total);
+//        pr.setTotalPages(totalPages);
+
+
+        //请求替换分页开始索引
+        reqVo.setPageNum(PageResult.buildPageLimitStart(reqVo));
+
+        List<InvBaseChannelMatchInsResVO> resVOList =  super.baseMapper.gainChannelMatchIns(reqVo);
+
+
+        return PageResult.buildPageResult(reqVo,total,resVOList);
+
+    }
+
+    @Override
+    public boolean deleteByBatchNum(String batchNum) {
+        LambdaQueryWrapper<InvChannelsExternalBillsDetails> lqw = new LambdaQueryWrapper();
+        lqw.eq(InvChannelsExternalBillsDetails::getBatchNum, batchNum);
+        return remove(lqw);
+    }
+
+    @Override
+    public void importData(MultipartFile file, InvExternalBills iieb) {
+
+        String errorMsg = "";
+        List<InvChannelsExternalBillsDetails> list = null;
+        try {
+            list = ExcelUtils2.importExcel(file, InvChannelsExternalBillsDetails.class,0,1,1);
+
+        } catch (IOException e) {
+//            return HttpResult.error("导入失败!" + e.getMessage());
+//            throw new SystemException("导入失败!" + e.getMessage());
+            errorMsg = "导入失败!" + e.getMessage();
+        }
+
+        list = list.stream().filter(l -> l.getPlateNum()!=null).collect(Collectors.toList());
+
+        BigDecimal totalMlifta =  BigDecimal.ZERO;
+        for(int i = 0 ; i < list.size() ;i++){
+
+            list.get(i).setBatchNum(iieb.getId());
+            totalMlifta = totalMlifta.add(list.get(i).getMlifta());
+        }
+
+        boolean boo = saveBatch(list);
+        if(!boo) errorMsg = "保存数据出错";
+
+
+        if(StringUtils.isNullOrEmpty(errorMsg)){
+            iieb.setImportStatus("1");
+            iieb.setErrorMsg(errorMsg);
+            iieb.setMlifta(totalMlifta);
+            invExternalBillsService.updateById(iieb);
+        }
+
+
+
+    }
+
+}
+
+
+
+

+ 63 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvExternalBillsServiceImpl.java

@@ -0,0 +1,63 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.InvInsExternalBillsMapper;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.ydtech.modules.inv.service.InvChannelsExternalBillsDetailsService;
+import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
+import com.ydtech.modules.inv.service.InvExternalBillsService;
+import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.excel.ExcelUtils2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.List;
+
+
+@Service
+public class InvExternalBillsServiceImpl extends ServiceImpl<InvInsExternalBillsMapper, InvExternalBills>
+        implements InvExternalBillsService {
+
+    @Autowired
+    private InvInsExternalBillsDetailsService invInsExternalBillsDetailsService;
+    @Autowired
+    private InvChannelsExternalBillsDetailsService invChannelsExternalBillsDetailsService;
+
+
+    @Override
+    public void importDataInsOper(String batchNum, MultipartFile file, InvExternalBills ieb) {
+        //删除详细数据
+        invInsExternalBillsDetailsService.deleteByBatchNum(batchNum);
+        try {
+            //导入《保司》详细数据
+            invInsExternalBillsDetailsService.importData(file, ieb);
+        }catch (Exception e){
+            ieb.setImportStatus("0");
+            updateById(ieb);
+        }
+
+    }
+
+    @Override
+    public void importDataChannelsOper(String batchNum, MultipartFile file, InvExternalBills ieb) {
+
+        //删除详细数据
+        invChannelsExternalBillsDetailsService.deleteByBatchNum(batchNum);
+        try {
+            //导入《渠道》详细数据
+            invChannelsExternalBillsDetailsService.importData(file, ieb);
+        }catch (Exception e){
+            ieb.setImportStatus("0");
+            updateById(ieb);
+        }
+
+    }
+}
+
+
+
+

+ 90 - 0
src/main/java/com/ydtech/modules/inv/service/impl/InvInsExternalBillsDetailsServiceImpl.java

@@ -0,0 +1,90 @@
+package com.ydtech.modules.inv.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.inv.dao.InvInsExternalBillsDetailsMapper;
+import com.ydtech.modules.inv.model.InvExternalBills;
+import com.ydtech.modules.inv.model.InvInsExternalBillsDetails;
+import com.ydtech.modules.inv.service.InvExternalBillsService;
+import com.ydtech.modules.inv.service.InvInsExternalBillsDetailsService;
+import com.ydtech.utils.BigDecimalUtils;
+import com.ydtech.utils.StringUtils;
+import com.ydtech.utils.excel.ExcelUtils2;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+* @author Administrator
+* @description 针对表【inv_ins_external_bills_details(财务 - 保险公司 - 外部票据 - 详情)】的数据库操作Service实现
+* @createDate 2023-06-06 11:08:53
+*/
+@Service
+public class InvInsExternalBillsDetailsServiceImpl extends ServiceImpl<InvInsExternalBillsDetailsMapper, InvInsExternalBillsDetails>
+    implements InvInsExternalBillsDetailsService {
+
+    @Autowired
+    InvExternalBillsService invExternalBillsService;
+
+    @Override
+    public boolean deleteByBatchNum(String batchNum) {
+        LambdaQueryWrapper<InvInsExternalBillsDetails> lqw = new LambdaQueryWrapper();
+        lqw.eq(InvInsExternalBillsDetails::getBatchNum, batchNum);
+        return remove(lqw);
+    }
+
+
+    @Override
+    public void importData(MultipartFile file, InvExternalBills iieb) {
+
+        String errorMsg = "";
+        List<InvInsExternalBillsDetails> list = null;
+        try {
+            list = ExcelUtils2.importExcel(file, InvInsExternalBillsDetails.class,0,1,1);
+
+        } catch (IOException e) {
+//            return HttpResult.error("导入失败!" + e.getMessage());
+//            throw new SystemException("导入失败!" + e.getMessage());
+            errorMsg = "导入失败!" + e.getMessage();
+        }
+
+
+        list = list.stream().filter(l -> l.getPlateNum()!=null).collect(Collectors.toList());
+        BigDecimal totalMlifta =  BigDecimal.ZERO;
+        BigDecimal totalVavt =  BigDecimal.ZERO;
+        BigDecimal totalCip =  BigDecimal.ZERO;
+        for(int i = 0 ; i < list.size() ;i++){
+            if(null == list.get(i)) list.remove(list.get(i));
+            list.get(i).setBatchNum(iieb.getId());
+            totalMlifta = totalMlifta.add(BigDecimalUtils.nullToZero(list.get(i).getMlifta()));
+            totalVavt = totalVavt.add(BigDecimalUtils.nullToZero(list.get(i).getVavt()));
+            totalCip = totalCip.add(BigDecimalUtils.nullToZero(list.get(i).getCip()));
+
+        }
+
+        boolean boo = saveBatch(list);
+        if(!boo) errorMsg = "保存数据出错";
+
+
+        if(StringUtils.isNullOrEmpty(errorMsg)){
+            iieb.setImportStatus("1");
+            iieb.setErrorMsg(errorMsg);
+            iieb.setMlifta(totalMlifta);
+            iieb.setVavt(totalVavt);
+            iieb.setCip(totalCip);
+            invExternalBillsService.updateById(iieb);
+        }
+
+
+
+    }
+}
+
+
+
+

+ 62 - 9
src/main/java/com/ydtech/modules/inv/service/impl/InvInvoiceInfoServiceImpl.java

@@ -2,10 +2,13 @@ package com.ydtech.modules.inv.service.impl;
 
 import cn.afterturn.easypoi.excel.entity.ExportParams;
 import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.constants.enums.dict.ApprovalStatusEnum;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysDict;
+import com.ydtech.modules.admin.service.SysDictService;
 import com.ydtech.modules.ins.utils.ExcelStyleUtil;
 import com.ydtech.modules.inv.dao.InvInvoiceInfoMapper;
 import com.ydtech.modules.inv.model.InvCompany;
@@ -24,6 +27,7 @@ import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author Administrator
@@ -36,6 +40,8 @@ public class InvInvoiceInfoServiceImpl extends ServiceImpl<InvInvoiceInfoMapper,
 
     @Autowired
     private InvCompanyService invCompanyService;
+    @Autowired
+    private SysDictService sysDictService;
 
     @Override
     public boolean approval(ApprovalStatusEnum approvalStatusEnum, List<String> ids) {
@@ -50,26 +56,73 @@ public class InvInvoiceInfoServiceImpl extends ServiceImpl<InvInvoiceInfoMapper,
 
         List<InvInvoiceInfo> list = null;
         try {
-            list = ExcelUtils2.importExcel(file, InvInvoiceInfo.class,null,null,null);
+            list = ExcelUtils2.importExcel(file, InvInvoiceInfo.class, null, null, null);
         } catch (IOException e) {
             return HttpResult.error("导入失败!" + e.getMessage());
         }
 
         list.remove(null);
 
+
+        List<InvCompany> iCompanyList = invCompanyService.list();
+        List<SysDict> subjectsList = sysDictService.findByLable("subjects");
+
+
         List<InvInvoiceInfo> finalList = new ArrayList<>();
-        list.stream().forEach(a ->{
+        list.stream().forEach(a -> {
+            if (StringUtils.isNullOrEmpty(a.getInvCompanyName())) return;
+
+            a.setApprovalStatus(ApprovalStatusEnum.AS0.getCode());
+
             //获取ID
-            if(null != a && StringUtils.isNotEmpty(a.getInvCompanyName())){
-                InvCompany ic = invCompanyService.gainIdByEnterpriseName(a.getInvCompanyName());
-                if(null != ic){
-                    finalList.add(a);
+            if (StringUtils.isNotEmpty(a.getInvCompanyName())) {
+
+//                iCompanyList.stream().filter(ic -> ic.getEnterpriseName().equals(a.getInvCompanyName())).collect(Collectors.toList());
+
+                String eNameId = iCompanyList
+                        .stream()
+                        .filter(ic -> ic.getEnterpriseName().equals(a.getInvCompanyName()))
+//                        .sorted(Comparator.comparing(B::getSorted))
+                        .map(b -> b.getId())
+                        .collect(Collectors.joining(StrUtil.CRLF));
+
+
+//                InvCompany ic = invCompanyService.gainIdByEnterpriseName(a.getInvCompanyName());
+                if (StringUtils.isNotEmpty(eNameId)) {
+                    a.setInvCompanyId(eNameId);
+                } else {
+                    return;
                 }
             }
+
+            if (null != a && StringUtils.isNotEmpty(a.getSubjects())) {
+
+                String subjectsId = subjectsList
+                        .stream()
+                        .filter(sub -> sub.getLabel().equals(a.getSubjects()))
+//                        .sorted(Comparator.comparing(B::getSorted))
+                        .map(b -> b.getValue())
+                        .collect(Collectors.joining(StrUtil.CRLF));
+
+
+//                List<SysDict> subjectsList = sysDictService.findByLable("subjects");
+                if (StringUtils.isNotEmpty(subjectsId)) {
+                    a.setSubjectsId(subjectsId);
+                } else {
+                    return;
+                }
+            }
+            finalList.add(a);
         });
-        saveBatch(finalList);
 
-        return HttpResult.ok("导入匹配[开票公司]的数据条数:" + finalList.size());
+        if (finalList.size() > 0) {
+            saveBatch(finalList);
+            return HttpResult.ok("导入匹配[开票公司]的数据条数:" + finalList.size());
+        } else {
+            return HttpResult.error("导入匹配[开票公司]的数据条数:0");
+        }
+
+
     }
 
     @Override
@@ -82,7 +135,7 @@ public class InvInvoiceInfoServiceImpl extends ServiceImpl<InvInvoiceInfoMapper,
         // 设置
         exportParams.setStyle(ExcelStyleUtil.class);
         try {
-            String fileName = URLEncoder.encode("发票信息表","UTF-8");
+            String fileName = URLEncoder.encode("发票信息表", "UTF-8");
             ExcelUtils2.exportExcel(iiiList, InvInvoiceInfo.class, fileName, exportParams, request, response);
 //            ExcelUtils2.exportExcel(iiiList, InvInvoiceInfo.class, "发票信息表", exportParams, request, response);
         } catch (IOException e) {

+ 14 - 0
src/main/java/com/ydtech/utils/BigDecimalUtils.java

@@ -64,4 +64,18 @@ public class BigDecimalUtils {
         BigDecimal p2 = new BigDecimal(Double.toString(m2));
         return p1.divide(p2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
     }
+
+
+    /**
+     * null to zero
+     *
+     * @param bigDecimal
+     * @return
+     */
+    public static BigDecimal nullToZero(BigDecimal bigDecimal) {
+        if (null == bigDecimal) {
+            return BigDecimal.ZERO;
+        }
+        return bigDecimal;
+    }
 }

+ 1 - 1
src/main/resources/application-prod.yml

@@ -208,9 +208,9 @@ yc:
       cBsnsTyp: 19002
     userName: tianqin
     password: tianqin2023@
+    url: http://www.yongcheng.com:17002/
     pay:
       callBack: http://127.0.0.1:8080/api/yongCheng/callBack
-    url: http://140.206.189.151:17000/
   audit:
     url: /yc/jiaofei
   domain: http://47.92.254.66:8088

+ 37 - 37
src/main/resources/application-test.yml

@@ -230,61 +230,61 @@ ya:
 yc:
   #api方式
   api:
-#    #正式渠道信息(测试一下)
-#    agent:
-#      # 机构代码(dptCde)
-#      dptCde: 14B8
-#      # 渠道编码(agentCode)
-#      agentCode: 14B800P00008
-#      # 协议编码(conferCode)
-#      conferCode: 14B800P0000801
-#      # 渠道分类(agentType)
-#      agentType: 191010
-#      # 代理人名称(agentNme)
-#      agentNme: 太原天勤保险代理有限公司
-#      # 代理人资格证号(qlftNo)
-#      qlftNo: 202930000000800
-#      # 录入人(operatorCode)
-#      operatorCode: 114000117
-#      # 业务员代码(salesmanNo)
-#      salesmanNo: 11401714B
-#      # 新业务来源(CChaType)
-#      CChaType: 191010
-#      # 客户性质(custNature)
-#      custNature: 192099
-#      # 操作人员代码(cOprcde)
-#      cOprcde: 114000117
-#      # 业务来源(cBsnsTyp)
-#      cBsnsTyp: 19002
-#    userName: tianqin
-#    password: tianqin2023@
+    #正式渠道信息(测试一下)
     agent:
       # 机构代码(dptCde)
-      dptCde: 14A4
+      dptCde: 14B8
       # 渠道编码(agentCode)
-      agentCode: 250000P00004
+      agentCode: 14B800P00008
       # 协议编码(conferCode)
-      conferCode: 250000P0000401
+      conferCode: 14B800P0000801
       # 渠道分类(agentType)
       agentType: 191010
       # 代理人名称(agentNme)
-      agentNme: 永鑫保险销售服务有限公司山西分公司
+      agentNme: 太原天勤保险代理有限公司
       # 代理人资格证号(qlftNo)
-      qlftNo: 2752454675645
+      qlftNo: 202930000000800
       # 录入人(operatorCode)
-      operatorCode: 100030057
+      operatorCode: 114000117
       # 业务员代码(salesmanNo)
-      salesmanNo: 100030057
+      salesmanNo: 11401714B
       # 新业务来源(CChaType)
       CChaType: 191010
       # 客户性质(custNature)
       custNature: 192099
       # 操作人员代码(cOprcde)
-      cOprcde: 100030057
+      cOprcde: 114000117
       # 业务来源(cBsnsTyp)
       cBsnsTyp: 19002
     userName: tianqin
-    password: 123456
+    password: tianqin2023@
+#    agent:
+#      # 机构代码(dptCde)
+#      dptCde: 14A4
+#      # 渠道编码(agentCode)
+#      agentCode: 250000P00004
+#      # 协议编码(conferCode)
+#      conferCode: 250000P0000401
+#      # 渠道分类(agentType)
+#      agentType: 191010
+#      # 代理人名称(agentNme)
+#      agentNme: 永鑫保险销售服务有限公司山西分公司
+#      # 代理人资格证号(qlftNo)
+#      qlftNo: 2752454675645
+#      # 录入人(operatorCode)
+#      operatorCode: 100030057
+#      # 业务员代码(salesmanNo)
+#      salesmanNo: 100030057
+#      # 新业务来源(CChaType)
+#      CChaType: 191010
+#      # 客户性质(custNature)
+#      custNature: 192099
+#      # 操作人员代码(cOprcde)
+#      cOprcde: 100030057
+#      # 业务来源(cBsnsTyp)
+#      cBsnsTyp: 19002
+#    userName: tianqin
+#    password: 123456
     pay:
       # 回调地址
       #      callBack: http://39.98.239.48/web-api/api/yongCheng/callBack

+ 28 - 5
src/main/resources/logback-spring.xml

@@ -16,7 +16,7 @@
         </encoder>
     </appender>
 
-    <!-- 控制台输出 -->
+    <!-- 控制台输出 文件 -->
     <appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <file>${log.path}/sys-console.log</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
@@ -29,10 +29,10 @@
             <pattern>${log.pattern}</pattern>
             <charset>utf-8</charset>
         </encoder>
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <!-- 过滤的级别 -->
-            <level>INFO</level>
-        </filter>
+<!--        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
+<!--            &lt;!&ndash; 过滤的级别 &ndash;&gt;-->
+<!--            <level>INFO</level>-->
+<!--        </filter>-->
     </appender>
 
     <!-- 系统日志输出 -->
@@ -80,6 +80,28 @@
         </filter>
     </appender>
 
+    <appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.path}/sys-debug.log</file>
+        <!-- 循环政策:基于时间创建日志文件 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志文件名格式 -->
+            <fileNamePattern>${log.path}/sys-debug.%d{yyyy-MM-dd}.log</fileNamePattern>
+            <!-- 日志最大的历史 60天 -->
+            <maxHistory>30</maxHistory>
+        </rollingPolicy>
+        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+            <pattern>${log.pattern}</pattern>
+        </encoder>
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <!-- 过滤的级别 -->
+            <level>DEBUG</level>
+            <!-- 匹配时的操作:接收(记录) -->
+            <onMatch>ACCEPT</onMatch>
+            <!-- 不匹配时的操作:拒绝(不记录) -->
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
 
     <!-- 永诚日志输出 -->
     <appender name="custom_alltrust" class="ch.qos.logback.core.rolling.RollingFileAppender">
@@ -133,6 +155,7 @@
             <appender-ref ref="file_console" />
             <appender-ref ref="file_info" />
             <appender-ref ref="file_error" />
+            <appender-ref ref="file_debug" />
 <!--            <appender-ref ref="custom_alltrust" />-->
         </root>
     </springProfile>