瀏覽代碼

Merge branch 'test'

wks 2 年之前
父節點
當前提交
665adf7094
共有 65 個文件被更改,包括 1206 次插入129 次删除
  1. 1 1
      src/main/java/com/ydtech/SpringInsApplication.java
  2. 32 0
      src/main/java/com/ydtech/modules/admin/controller/SysAmountAuditingController.java
  3. 19 4
      src/main/java/com/ydtech/modules/admin/controller/SysUserAccountController.java
  4. 17 0
      src/main/java/com/ydtech/modules/admin/controller/SysUserBankController.java
  5. 11 0
      src/main/java/com/ydtech/modules/admin/dao/SysAmountAuditingMapper.java
  6. 1 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserAccountMapper.java
  7. 8 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java
  8. 55 0
      src/main/java/com/ydtech/modules/admin/model/po/SysAmountAuditingEntity.java
  9. 6 0
      src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java
  10. 52 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java
  11. 15 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserAccountVo.java
  12. 3 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserBankCardVO.java
  13. 11 0
      src/main/java/com/ydtech/modules/admin/service/SysAmountAuditingService.java
  14. 7 0
      src/main/java/com/ydtech/modules/admin/service/SysUserAccountService.java
  15. 9 0
      src/main/java/com/ydtech/modules/admin/service/SysUserBankCardService.java
  16. 68 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java
  17. 92 6
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java
  18. 32 3
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserBankCardServiceImpl.java
  19. 1 0
      src/main/java/com/ydtech/modules/ins/model/guoren/InsuranceSlipReq.java
  20. 4 5
      src/main/java/com/ydtech/modules/ins/model/yc/YcBuildData.java
  21. 22 2
      src/main/java/com/ydtech/modules/inv/controller/InvReceivableController.java
  22. 1 0
      src/main/java/com/ydtech/modules/order/components/ConfigureParametersComponents.java
  23. 33 22
      src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java
  24. 6 0
      src/main/java/com/ydtech/modules/order/constants/OrderCacheConstant.java
  25. 3 2
      src/main/java/com/ydtech/modules/order/controller/IdentifyController.java
  26. 3 0
      src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java
  27. 3 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  28. 14 5
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/BoHaiBaseRequest.java
  29. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ElectronicPolicyRequest.java
  30. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/GenerateOrderNoRequest.java
  31. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java
  32. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java
  33. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/QuotationRequest.java
  34. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/StatusDocumentsRequest.java
  35. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java
  36. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleConfirmationReqeust.java
  37. 1 1
      src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleTypeQueryRequest.java
  38. 60 2
      src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java
  39. 1 0
      src/main/java/com/ydtech/modules/order/entity/api/huatai/HuaTaiBaseResponse.java
  40. 45 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/IndexRequest.java
  41. 22 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PingAnBaseRequest.java
  42. 24 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SearchPAVehicleListRequest.java
  43. 16 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/PingAnBaseResponse.java
  44. 111 0
      src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SearchPAVehicleListResponse.java
  45. 3 2
      src/main/java/com/ydtech/modules/order/service/IdentifyService.java
  46. 4 0
      src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java
  47. 28 12
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  48. 79 14
      src/main/java/com/ydtech/modules/order/service/impl/IdentifyServiceImpl.java
  49. 5 0
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  50. 12 1
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  51. 3 0
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  52. 19 18
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java
  53. 1 1
      src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java
  54. 41 0
      src/main/java/com/ydtech/utils/ObjectUtil.java
  55. 18 6
      src/main/java/com/ydtech/utils/baidu/AuthService.java
  56. 19 5
      src/main/java/com/ydtech/utils/baidu/Idcard.java
  57. 20 2
      src/main/java/com/ydtech/utils/baidu/MultiObjectDetect.java
  58. 10 2
      src/main/resources/application-pre.yml
  59. 10 2
      src/main/resources/application-prod.yml
  60. 10 1
      src/main/resources/application-test.yml
  61. 38 0
      src/main/resources/mapper/modules/admin/SysAmountAuditingMapper.xml
  62. 23 0
      src/main/resources/mapper/modules/admin/SysUserAccountMapper.xml
  63. 34 0
      src/main/resources/mapper/modules/admin/SysUserBankCardMapper.xml
  64. 11 0
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml
  65. 1 2
      src/main/resources/mapper/modules/protocol/PtlAgreementHistoryMapper.xml

+ 1 - 1
src/main/java/com/ydtech/SpringInsApplication.java

@@ -38,4 +38,4 @@ public class SpringInsApplication {
         SpringApplication.run(SpringInsApplication.class, args);
     }
 
-}
+}

+ 32 - 0
src/main/java/com/ydtech/modules/admin/controller/SysAmountAuditingController.java

@@ -0,0 +1,32 @@
+package com.ydtech.modules.admin.controller;
+
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
+import com.ydtech.modules.admin.model.vo.SysUserAccountVo;
+import com.ydtech.modules.admin.service.SysAmountAuditingService;
+import com.ydtech.modules.base.controller.BaseController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(tags = "账户余额")
+@RequestMapping("/sysAmountAuditing")
+@RestController
+public class SysAmountAuditingController extends BaseController {
+    @Autowired
+    private SysAmountAuditingService sysAmountAuditingService;
+
+
+
+    @PutMapping("AmountReview")
+    @ApiOperation("审核提现")
+    public HttpResult<Object> AmountReview(@RequestBody SysAmountAuditingVo sysUserAccountVo) {
+        sysAmountAuditingService.AmountReview(sysUserAccountVo);
+        return HttpResult.ok("审核成功");
+    }
+}

+ 19 - 4
src/main/java/com/ydtech/modules/admin/controller/SysUserAccountController.java

@@ -1,21 +1,23 @@
 package com.ydtech.modules.admin.controller;
 
 
+import com.ydtech.aop.request.RequestSingleParam;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
+import com.ydtech.modules.admin.model.vo.SysUserAccountHistoryVo;
 import com.ydtech.modules.admin.model.vo.SysUserAccountVo;
 import com.ydtech.modules.admin.service.SysUserAccountService;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.esm.model.vo.EsmInsAttributionTemplateSaveVo;
 import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
+import java.math.BigDecimal;
 
 @Api(tags = "账户余额")
 @RequestMapping("/sysUserAccount")
@@ -33,6 +35,19 @@ public class SysUserAccountController extends BaseController {
         return HttpResult.ok("success", result);
     }
 
+    @PostMapping("/insert")
+    @ApiOperation("提交")
+    public HttpResult<Object> submit(@RequestBody SysUserAccountVo sysUserAccountVo) {
+        return sysUserAccountService.inert(sysUserAccountVo);
+    }
+
+    @GetMapping(value = "/getSysUserAmount")
+    @ApiOperation("用户账户余额")
+    public HttpResult<SysUserAccount> getSysUserAmount(@RequestParam String userid) {
+        return HttpResult.ok(sysUserAccountService.getSysUserAmount(userid));
+    }
+
+
 
 
 }

+ 17 - 0
src/main/java/com/ydtech/modules/admin/controller/SysUserBankController.java

@@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.util.HashMap;
+import java.util.List;
 
 @Api(tags = "银行卡号")
 @RequestMapping("/userBank")
@@ -62,6 +63,22 @@ public class SysUserBankController extends BaseController {
         bankCardService.uodate(sysUserBankCardVO);
         return HttpResult.ok("修改成功");
     }
+    @GetMapping HttpResult<SysUserBankCardVO> getById (String  userId){
+        return  bankCardService.getByUserId(userId);
+    }
+    @PostMapping("/insertByBankNumber")
+    @ApiOperation("新增卡号开户行")
+    public HttpResult<Object> insertByBankNumber (@RequestBody SysUserBankCardVO sysUserBankCardVO){
+        bankCardService.insertByBankNumber(sysUserBankCardVO);
+
+        return HttpResult.ok("新增成功");
+    }
+
+    @GetMapping("getUserBankList")
+    @ApiOperation("返回卡包")
+    public HttpResult<List<SysUserBankCard>> getUserBankList (){
+        return  bankCardService.getUserBankList();
+    }
 
 
 }

+ 11 - 0
src/main/java/com/ydtech/modules/admin/dao/SysAmountAuditingMapper.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface SysAmountAuditingMapper  extends BaseMapper<SysAmountAuditingEntity> {
+    SysAmountAuditingEntity getByUserId(String userId);
+
+}

+ 1 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserAccountMapper.java

@@ -16,6 +16,7 @@ public interface SysUserAccountMapper extends BaseMapper<SysUserAccount> {
 
     Page<SysUserAccount> queryPageOrder(SysUserAccountVo sysUserAccountVo,@Param("page") Page page);
 
+    SysUserAccount getById(String userId);
 }
 
 

+ 8 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserBankCardMapper.java

@@ -1,7 +1,11 @@
 package com.ydtech.modules.admin.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
+import com.ydtech.modules.admin.model.vo.SysUserBankCardVO;
+
+import java.util.List;
 
 /**
 * @author Administrator
@@ -11,6 +15,10 @@ import com.ydtech.modules.admin.model.po.SysUserBankCard;
 */
 public interface SysUserBankCardMapper extends BaseMapper<SysUserBankCard> {
 
+
+    HttpResult<SysUserBankCardVO> getByUserId(String userId);
+
+    List<SysUserBankCard> getUserBankList(String userId);
 }
 
 

+ 55 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysAmountAuditingEntity.java

@@ -0,0 +1,55 @@
+package com.ydtech.modules.admin.model.po;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@TableName(value ="sys_amount_auditing")
+@Data
+public class SysAmountAuditingEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id")
+    private Integer id;
+    /**
+     * 用户id
+     */
+    @TableField(value = "user_id")
+    private String userId;
+    /**
+     * 银行卡号
+     */
+    @TableField(value = "bank_number")
+    private String bankNumber;
+
+    /**
+     * 提现金额
+     */
+    @TableField(value = "amount")
+    private BigDecimal amount;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time")
+    private Date createTime;
+
+    /**
+     * 审核状态
+     */
+    @TableField(value = "auditing_status")
+    private String auditingStatus;
+    /**
+     * 金额类型
+     */
+    @TableField(value = "amount_status")
+    private String amountStatus;
+}

+ 6 - 0
src/main/java/com/ydtech/modules/admin/model/po/SysUserBankCard.java

@@ -43,6 +43,12 @@ public class SysUserBankCard implements Serializable {
     @TableField(value = "user_id")
     private String userId;
 
+    /**
+     * 是否默认值
+     */
+    @TableField(value = "is_default")
+    private Integer isDefault;
+
     /**
      * 创建时间
      */

+ 52 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysAmountAuditingVo.java

@@ -0,0 +1,52 @@
+package com.ydtech.modules.admin.model.vo;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.Max;
+import javax.validation.constraints.Min;
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@ApiModel("查询Vo")
+public class SysAmountAuditingVo {
+
+    @ApiModelProperty(value = "id")
+    private Integer id;
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "银行卡号")
+    private String bankNumber;
+
+
+    @ApiModelProperty(value = "提现金额")
+    private BigDecimal amount;
+
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+
+    @ApiModelProperty(value = "审核状态")
+    private String auditingStatus;
+
+    @ApiModelProperty(value = "金额类型")
+    private String amountStatus;
+
+    @ApiModelProperty(value = "每页页数")
+    @Min(value = 20, message = "页数最小为20")
+    @Max(value = 100, message = "页数最大为100")
+    private int pageSize;
+
+    @ApiModelProperty(value = "页数")
+    @Min(value = 1, message = "页数最小为1")
+    private int pageNum;
+
+}

+ 15 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserAccountVo.java

@@ -85,4 +85,19 @@ public class SysUserAccountVo {
     @ApiModelProperty(value = "页数")
     @Min(value = 1, message = "页数最小为1")
     private int pageNum;
+
+
+
+    @ApiModelProperty(value = "提现金额")
+    private BigDecimal amount;
+
+    @ApiModelProperty(value = "体现类型  1.手续费佣金 2.非跟单佣金 3.推广佣金")
+    private String amountStatus;
+
+    @ApiModelProperty(value = "银行卡")
+    private String fromBankCard;
+
+
+    @ApiModelProperty(value = "银行卡Id")
+    private Long fromBankCardId;
 }

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserBankCardVO.java

@@ -31,6 +31,9 @@ public class SysUserBankCardVO {
     @ApiModelProperty(value = "userId")
     private String userId;
 
+    @ApiModelProperty(value = "是否默认值")
+    private Integer isDefault;
+
 
     @JsonFormat(pattern = "yyyy-MM-dd")
     @TableField(value = "create_time",fill = FieldFill.INSERT_UPDATE)

+ 11 - 0
src/main/java/com/ydtech/modules/admin/service/SysAmountAuditingService.java

@@ -0,0 +1,11 @@
+package com.ydtech.modules.admin.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
+import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
+
+public interface SysAmountAuditingService extends IService<SysAmountAuditingEntity> {
+    void AmountReview(SysAmountAuditingVo sysUserAccountVo);
+
+    SysAmountAuditingEntity getByUserId(String userId);
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserAccountService.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.vo.SysUserAccountVo;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -15,4 +16,10 @@ public interface SysUserAccountService extends IService<SysUserAccount> {
     void addOrUpdate(SysUserAccount sysUserAccount);
 
     BasePageResult<SysUserAccount> queryByVo(SysUserAccountVo sysUserAccountVo);
+
+
+    HttpResult<Object> inert(SysUserAccountVo sysUserAccountVo);
+
+    SysUserAccount getSysUserAmount(String userid);
+
 }

+ 9 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserBankCardService.java

@@ -1,11 +1,13 @@
 package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.vo.SysUserBankCardVO;
 import com.ydtech.modules.order.entity.BasePageResult;
 
 import java.util.HashMap;
+import java.util.List;
 
 /**
 * @author Administrator
@@ -23,4 +25,11 @@ public interface SysUserBankCardService extends IService<SysUserBankCard> {
 
     void uodate(SysUserBankCardVO sysUserBankCardVO);
 
+    HttpResult<SysUserBankCardVO> getByUserId(String userId);
+
+    void insertByBankNumber(SysUserBankCardVO sysUserBankCardVO);
+
+    HttpResult<List<SysUserBankCard>> getUserBankList();
+
+
 }

+ 68 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysAmountAuditingServiceImpl.java

@@ -0,0 +1,68 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.modules.admin.dao.SysAmountAuditingMapper;
+import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
+import com.ydtech.modules.admin.model.po.SysUserAccount;
+import com.ydtech.modules.admin.model.vo.SysAmountAuditingVo;
+import com.ydtech.modules.admin.service.SysAmountAuditingService;
+import com.ydtech.modules.admin.service.SysUserAccountService;
+import com.ydtech.utils.StringUtils;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+
+@Service
+public class SysAmountAuditingServiceImpl extends ServiceImpl<SysAmountAuditingMapper, SysAmountAuditingEntity> implements SysAmountAuditingService {
+    @Autowired
+    private SysUserAccountService sysUserAccountService;
+
+    @Override
+    @Transactional
+    public void AmountReview(SysAmountAuditingVo sysAmountAuditingVo) {
+
+        SysAmountAuditingEntity sysAmountAuditingEntity = new SysAmountAuditingEntity();
+
+        BigDecimal amount = sysAmountAuditingVo.getAmount();
+        String userId = sysAmountAuditingVo.getUserId();
+        SysUserAccount sysUserAccountEntity = new SysUserAccount();
+//      用户扣减金额
+        if (StringUtils.isNotEmpty(userId)) {
+            sysUserAccountEntity.setUserId(userId);
+            SysUserAccount sysUserAccount = sysUserAccountService.getById(userId);
+            if (ObjectUtils.isNotEmpty(sysUserAccount)) {
+                String amountStatus = sysAmountAuditingVo.getAmountStatus();
+                if (StringUtils.isNotEmpty(amountStatus)) {
+                    if ("1".equals(amountStatus)) {
+                        BigDecimal handlingFee = sysUserAccount.getHandlingFee();
+                        BigDecimal afterAmount = handlingFee.subtract(amount);
+                        sysUserAccountEntity.setHandlingFee(afterAmount);
+                    } else if ("2".equals(amountStatus)) {
+                        BigDecimal documentary = sysUserAccount.getDocumentary();
+                        BigDecimal afterAmount = documentary.subtract(amount);
+                        sysUserAccountEntity.setHandlingFee(afterAmount);
+                    } else {
+                        BigDecimal promotion = sysUserAccount.getPromotion();
+                        BigDecimal afterAmount = promotion.subtract(amount);
+                        sysUserAccountEntity.setHandlingFee(afterAmount);
+                    }
+                }
+                sysUserAccountService.updateById(sysUserAccountEntity);
+            }
+            sysAmountAuditingVo.setAuditingStatus("3");
+            BeanUtils.copyProperties(sysAmountAuditingVo, sysAmountAuditingEntity);
+            baseMapper.updateById(sysAmountAuditingEntity);
+        }
+
+
+    }
+
+    @Override
+    public SysAmountAuditingEntity getByUserId(String userId) {
+        return  baseMapper.getByUserId(userId);
+    }
+}

+ 92 - 6
src/main/java/com/ydtech/modules/admin/service/impl/SysUserAccountServiceImpl.java

@@ -3,14 +3,16 @@ package com.ydtech.modules.admin.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.SysUserAccountMapper;
+import com.ydtech.modules.admin.model.po.SysAmountAuditingEntity;
 import com.ydtech.modules.admin.model.po.SysUserAccount;
 import com.ydtech.modules.admin.model.po.SysUserAccountHistory;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.vo.SysUserAccountVo;
-import com.ydtech.modules.admin.service.SysUserAccountHistoryService;
-import com.ydtech.modules.admin.service.SysUserAccountService;
-import com.ydtech.modules.admin.service.SysUserService;
+import com.ydtech.modules.admin.model.vo.SysUserBankCardVO;
+import com.ydtech.modules.admin.service.*;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -22,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.util.Date;
 
 /**
  * @author Administrator
@@ -35,6 +38,11 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     private SysUserAccountHistoryService sysUserAccountHistoryService;
     @Autowired
     private EsmUserReferrerService esmUserReferrerService;
+    @Autowired
+    private SysAmountAuditingService sysAmountAuditingService;
+
+    @Autowired
+    private SysUserBankCardService sysUserBankCardService;
 
     @Override
     @Transactional
@@ -85,7 +93,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
             if (sysUserAccountEntity.getPromotion() == null) {
                 sysUserAccountEntity.setPromotion(handlingFee);
             } else {
-                    remainingAmount = remainingAmount.add(sysUserAccountEntity.getPromotion());
+                remainingAmount = remainingAmount.add(sysUserAccountEntity.getPromotion());
 
             }
             sysUserAccountEntity.setHandlingFee(sysUserAccount.getHandlingFee().add(sysUserAccountEntity.getHandlingFee()));
@@ -119,11 +127,89 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         Page<SysUserAccount> page = new Page<>(sysUserAccountVo.getPageNum(), sysUserAccountVo.getPageSize());
         QueryWrapper<SysUserAccount> wrapper = new QueryWrapper<>();
 
-        Page<SysUserAccount> sysUserAccountHistoryPage  = baseMapper.queryPageOrder(sysUserAccountVo,page);
+        Page<SysUserAccount> sysUserAccountHistoryPage = baseMapper.queryPageOrder(sysUserAccountVo, page);
         return new BasePageResult<>(sysUserAccountVo.getPageNum(), page.getSize(), sysUserAccountHistoryPage.getTotal(), page.getPages(),
                 sysUserAccountHistoryPage.getRecords());
     }
 
+    @Override
+    @Transactional
+    public HttpResult<Object> inert(SysUserAccountVo sysUserAccountVo) {
+        String userId = BaseController.getUser().getId();
+        BigDecimal zero = BigDecimal.ZERO;
+        BigDecimal beforeAmount;
+        BigDecimal afterAmount;
+//       用户当前金额
+        BigDecimal amount = sysUserAccountVo.getAmount();
+//       扣减后金额更改
+        SysUserAccountHistory sysUserAccountHistory = new SysUserAccountHistory();  // 记录
+        sysUserAccountHistory.setDocumentary(1);  // 1提现
+        sysUserAccountHistory.setUserId(userId);
+        SysAmountAuditingEntity sysAmountAuditingEntity = new SysAmountAuditingEntity();//审核记录表
+        sysAmountAuditingEntity.setUserId(userId);
+        sysAmountAuditingEntity.setAmount(sysUserAccountVo.getAmount());
+        SysAmountAuditingEntity   judge =    sysAmountAuditingService.getByUserId(userId);
+        if(ObjectUtils.isNotEmpty(judge)){
+            return HttpResult.ok("有未提现审核单据, 请审核完成之后再提现");
+        }
+//      通过银行卡id 查询卡包
+        Long fromBankCardId = sysUserAccountVo.getFromBankCardId();
+        if(fromBankCardId!=null){
+            SysUserBankCard byId = sysUserBankCardService.getById(fromBankCardId);
+            String bankUserId = byId.getUserId();
+            if(!userId.equals(bankUserId)){
+                return HttpResult.ok("非本人提现");
+            }
+            byId.setIsDefault(1);
+
+            sysAmountAuditingEntity.setBankNumber( byId.getBankNumber());
+            sysUserAccountHistory.setFromBankCard( byId.getBankNumber());
+            sysUserBankCardService.updateById(byId);
+        }
+
+        if (StringUtils.isNotEmpty(userId)) {
+            SysUserAccount sysUserAccount = baseMapper.getById(userId);
+
+            if (StringUtils.isNotEmpty(sysUserAccountVo.getAmountStatus())) {
+                sysUserAccountHistory.setProperty(Integer.valueOf(sysUserAccountVo.getAmountStatus()));   //金额类型
+
+                if ("1".equals(sysUserAccountVo.getAmountStatus())) {
+//                  用户当前费用金
+                    beforeAmount = sysUserAccount.getHandlingFee();
+                    afterAmount = beforeAmount.subtract(amount);
+                } else if ("2".equals(sysUserAccountVo.getAmountStatus())) {
+//                    用户当前 非跟单佣金
+                    beforeAmount = sysUserAccount.getDocumentary();
+                    afterAmount = beforeAmount.subtract(amount);
+                } else {
+                    beforeAmount = sysUserAccount.getPromotion();
+                    afterAmount = beforeAmount.subtract(amount);
+                }
+//              用户相差
+                if (beforeAmount.compareTo(zero) == 0 || afterAmount.compareTo(zero) < 0) {
+                    return HttpResult.ok("余额不足");
+                }
+                sysUserAccountHistory.setAmount(amount);  // 金额
+                sysUserAccountHistory.setSurplusAmount(afterAmount); // 剩余金额
+                sysAmountAuditingEntity.setCreateTime(new Date());
+                sysAmountAuditingEntity.setAuditingStatus("2");   // 2  为待审核  3  审核通过
+                sysAmountAuditingEntity.setAmountStatus(sysUserAccountVo.getAmountStatus());
+//              新增金额记录
+                sysUserAccountHistoryService.updayteByUserAccount(sysUserAccountHistory);
+                sysAmountAuditingService.save(sysAmountAuditingEntity);
+            }
+
+        }
+        return HttpResult.ok("提现成功,等待审核");
+    }
+
+    @Override
+    public SysUserAccount getSysUserAmount(String userid) {
+        SysUserAccount sysUserAccount = baseMapper.getById(userid);
+        return sysUserAccount;
+    }
+
+
     private void judgeLevel(String userId, SysUserAccount sysUserAccountEntity, SysUserAccount newAccount) {
         if (!ObjectUtils.isNotEmpty(sysUserAccountEntity)) {
             sysUserAccountEntity = newAccount;
@@ -159,7 +245,7 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
                                 sysUserAccountHistory.setSurplusAmount(byId.getPromotion() == null ? BigDecimal.ZERO.add(sysUserAccountEntity.getPromotion()) : byId.getPromotion().add(sysUserAccountEntity.getPromotion()));
                             }
                         }
-                        if(sysUserAccountHistory.getAmount().compareTo(BigDecimal.ZERO ) ==1){
+                        if (sysUserAccountHistory.getAmount().compareTo(BigDecimal.ZERO) == 1) {
                             sysUserAccountHistoryService.updayteByUserAccount(sysUserAccountHistory);
                         }
                     }

+ 32 - 3
src/main/java/com/ydtech/modules/admin/service/impl/SysUserBankCardServiceImpl.java

@@ -3,10 +3,12 @@ package com.ydtech.modules.admin.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.dao.SysUserBankCardMapper;
 import com.ydtech.modules.admin.model.po.SysUserBankCard;
 import com.ydtech.modules.admin.model.vo.SysUserBankCardVO;
 import com.ydtech.modules.admin.service.SysUserBankCardService;
+import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import org.apache.commons.lang3.ObjectUtils;
@@ -17,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 
 /**
  * @author Administrator
@@ -28,18 +31,17 @@ public class SysUserBankCardServiceImpl extends ServiceImpl<SysUserBankCardMappe
         implements SysUserBankCardService {
 
 
-
     @Override
     public BasePageResult<SysUserBankCard> queryByVo(SysUserBankCardVO sysUserBankCardVO) {
         Page<SysUserBankCard> page = new Page<>(sysUserBankCardVO.getPageNum(), sysUserBankCardVO.getPageSize());
 
 
         LambdaQueryWrapper<SysUserBankCard> wrapper = new LambdaQueryWrapper<>();
-        if(StringUtils.isNotEmpty(sysUserBankCardVO.getBankNumber())){
+        if (StringUtils.isNotEmpty(sysUserBankCardVO.getBankNumber())) {
             wrapper.eq(SysUserBankCard::getBankNumber, ObjectUtils.isNotEmpty(sysUserBankCardVO.getBankNumber()));
 
         }
-        if(StringUtils.isNotEmpty(sysUserBankCardVO.getBankAccount())){
+        if (StringUtils.isNotEmpty(sysUserBankCardVO.getBankAccount())) {
             wrapper.eq(SysUserBankCard::getBankAccount, sysUserBankCardVO.getBankAccount());
         }
         Page<SysUserBankCard> insOrdersPage = page(page, wrapper);
@@ -67,6 +69,33 @@ public class SysUserBankCardServiceImpl extends ServiceImpl<SysUserBankCardMappe
         BeanUtils.copyProperties(sysUserBankCardVO, sysUserBankCard);
         super.updateById(sysUserBankCard);
     }
+
+    @Override
+    public HttpResult<SysUserBankCardVO> getByUserId(String userId) {
+        return baseMapper.getByUserId(userId);
+    }
+
+    @Override
+    @Transactional
+    public void insertByBankNumber(SysUserBankCardVO sysUserBankCardVO) {
+
+        String id = BaseController.getUser().getId();
+        if (StringUtils.isNotEmpty(id)) {
+            sysUserBankCardVO.setUserId(id);
+        }
+        SysUserBankCard sysUserBankCard = new SysUserBankCard();
+
+        BeanUtils.copyProperties(sysUserBankCardVO, sysUserBankCard);
+        sysUserBankCard.setCreateTime(new Date());
+        baseMapper.insert(sysUserBankCard);
+    }
+
+    @Override
+    public HttpResult<List<SysUserBankCard>> getUserBankList() {
+        String userId = BaseController.getUser().getId();
+        List<SysUserBankCard> sysUserBankCardList = baseMapper.getUserBankList(userId);
+        return HttpResult.ok("success", sysUserBankCardList);
+    }
 }
 
 

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

@@ -29,6 +29,7 @@ public class InsuranceSlipReq {
     @JSONField(name = "prpTinsured")
 
     private PrpTinsuredDTO prpTinsured;
+
     @JsonProperty(value = "biPrptenages")
     @JSONField(name = "biPrptenages")
     private List<PremiumResp.DataDTO.BiPrptenagesDTO> biPrptenages;

+ 4 - 5
src/main/java/com/ydtech/modules/ins/model/yc/YcBuildData.java

@@ -17,6 +17,7 @@ import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -214,7 +215,7 @@ public class YcBuildData {
         }
 
         //出险信息
-        quoteRespVo.setAccidentInfoStr(String.format("%s%s", ciSB.toString(), biSB.toString()));
+        quoteRespVo.setAccidentInfoStr(String.format("%s%s", ciSB, biSB));
 
 
         //欠税信息
@@ -234,11 +235,9 @@ public class YcBuildData {
         if (null != rd.getTfiWarnList()) {
             //排空
             List<TfiWarnListResponse.TfiWarnData> tfiWarnData =
-                    rd.getTfiWarnList().getTfiWarnData().stream().filter(item -> null != item).filter(item -> StringUtils.isNotEmpty(item.getWarnMessage())).collect(Collectors.toList());
+                    rd.getTfiWarnList().getTfiWarnData().stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotEmpty(item.getWarnMessage())).collect(Collectors.toList());
             List<String> warnMessageList = new ArrayList<>();
-            tfiWarnData.stream().forEach(a -> {
-                warnMessageList.add(a.getWarnMessage());
-            });
+            tfiWarnData.forEach(a -> warnMessageList.add(a.getWarnMessage()));
             quoteRespVo.setWarnMessageList(warnMessageList);
         }
 

+ 22 - 2
src/main/java/com/ydtech/modules/inv/controller/InvReceivableController.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
-import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.inv.model.po.InvSettlementSource;
@@ -17,9 +16,21 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
+import org.springframework.core.io.UrlResource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.ResourceUtils;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.IOException;
+import javax.servlet.http.HttpServletResponse;
+import java.io.*;
+import java.net.MalformedURLException;
+import java.net.URLEncoder;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -241,4 +252,13 @@ public class InvReceivableController extends BaseController {
         return HttpResult.ok("", false);
     }
 
+    @GetMapping("getAccountsReceivable")
+    public HttpResult getAccountsReceivable(){
+        return HttpResult.ok("下载成功","template/finance/accountsReceivable.xlsx");
+    }
+
+    @GetMapping("/getSettlement")
+    public HttpResult getSettlement(){
+       return HttpResult.ok("下载成功","template/finance/settlement.xlsx");
+    }
 }

+ 1 - 0
src/main/java/com/ydtech/modules/order/components/ConfigureParametersComponents.java

@@ -10,6 +10,7 @@ import com.ydtech.modules.protocol.utils.AssertionUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ReflectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.lang.reflect.Field;
 import java.util.LinkedHashMap;

+ 33 - 22
src/main/java/com/ydtech/modules/order/components/bohai/BoHaiRequestApiComponent.java

@@ -7,6 +7,7 @@ import com.ydtech.config.properties.BohaiApiConfigurationProperties;
 import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.entity.api.bohai.BoHaiEncrypted;
+import com.ydtech.modules.order.entity.api.bohai.constants.RequestType;
 import com.ydtech.modules.order.entity.api.bohai.constants.ResponseCode;
 import com.ydtech.modules.order.entity.api.bohai.request.*;
 import com.ydtech.modules.order.entity.api.bohai.response.*;
@@ -47,12 +48,15 @@ public class BoHaiRequestApiComponent {
      * @param <S>    Response 响应体
      * @return <S>
      */
-    private <Q extends BoHaiBaseRequest, S extends BoHaiBaseResponse> S post(Q q, String url, Class<S> tClass, String sysSourceCode) throws Exception {
+    private <Q extends BoHaiBaseRequest, S extends BoHaiBaseResponse> S post(Q q, String url, Class<S> tClass, String sysSourceCode,
+                                                                             RequestType requestType) throws Exception {
+        q.setBaseParamRequestType(requestType.getCode());
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.setContentType(MediaType.APPLICATION_JSON);
 
         String busReqString = JSON.toJSONString(q, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
-        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> URl: {} \n---------> 请求参数:{}", url, busReqString);
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> {} \n\t---------> URl: {} \n\t---------> 请求参数:{}",
+                requestType.getDesc(), url, busReqString);
         BoHaiEncrypted boHaiEncrypted = new BoHaiEncrypted(busReqString, properties, sysSourceCode);
         String json = JSON.toJSONString(boHaiEncrypted, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty);
         // 获取请求头signature 和加密后的内容
@@ -61,21 +65,28 @@ public class BoHaiRequestApiComponent {
         String signature = stringStringMap.get("signature");
         String content = stringStringMap.get("content");
         httpHeaders.set("signature", signature);
-        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 加密后的参数:{} \n\t---------> 请求头内容signature:{}", content,
-                signature);
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> {} \n\t---------> 加密后的参数:{} \n\t---------> " +
+                "请求头内容signature:{}", requestType.getDesc(), content, signature);
         // 请求
         HttpEntity<String> httpEntity = new HttpEntity<>(content, httpHeaders);
         ResponseEntity<String> response = restTemplate.postForEntity(url, httpEntity, String.class);
         String body = response.getBody();
-        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 解密前的参数:{}", body);
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> {} \n\t---------> 解密前的参数:{}", requestType.getDesc(), body);
 
         // 解密响应
         BoHaiEncrypted encrypted = JSON.parseObject(body).toJavaObject(BoHaiEncrypted.class);
         String info = SignatureUtils.decryptByPrivateKey(encrypted.getBizContent(), properties.getSelfPrivateKey());
-        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> 解密后的参数:{}", info);
+        InsuranceLog.infoLog(InsuranceEnum.BPIC.getPinyin(), "\n\t---------> {} \n\t---------> 解密后的参数:{}", requestType.getDesc(), info);
         return JSON.parseObject(info).toJavaObject(tClass);
     }
 
+    public <Q extends BoHaiBaseRequest, S extends BoHaiBaseResponse> S verificationResponse(Q q, String url, Class<S> tClass,
+                                                                                            String sysSourceCode,
+                                                                                            RequestType requestType) throws Exception {
+        S response = post(q, url, tClass, sysSourceCode, requestType);
+        verificationResponseCode(response.getResponseCode(), response.getResponseMsg());
+        return response;
+    }
 
     /**
      * 生成订单号请求
@@ -84,7 +95,7 @@ public class BoHaiRequestApiComponent {
      * @return 返回订单号响应
      */
     public GenerateOrderNoResponse generateOrderNo(GenerateOrderNoRequest request, String sysSourceCode) throws Exception {
-        return post(request, properties.getUrl(), GenerateOrderNoResponse.class,  sysSourceCode);
+        return verificationResponse(request, properties.getUrl(), GenerateOrderNoResponse.class, sysSourceCode, RequestType.Z00002);
     }
 
     /**
@@ -94,7 +105,7 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public VehicleTypeQueryResponse vehicleTypeQuery(VehicleTypeQueryRequest request, String sysSourceCode) throws Exception {
-        return post(request, properties.getUrl(), VehicleTypeQueryResponse.class,  sysSourceCode);
+        return verificationResponse(request, properties.getUrl(), VehicleTypeQueryResponse.class, sysSourceCode, RequestType.Z00004);
     }
 
     /**
@@ -104,9 +115,10 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public VehicleConfirmationResponse vehicleConfirmation(VehicleConfirmationReqeust request, String sysSourceCode) throws Exception {
-        VehicleConfirmationResponse response = post(request, properties.getUrl(), VehicleConfirmationResponse.class, sysSourceCode);
+        VehicleConfirmationResponse response = post(request, properties.getUrl(), VehicleConfirmationResponse.class, sysSourceCode,
+                RequestType.Z00005);
         if (ResponseCode.R_Z00002.getCode().equals(response.getResponseCode())) {
-            response = post(request, properties.getUrl(), VehicleConfirmationResponse.class, sysSourceCode);
+            response = post(request, properties.getUrl(), VehicleConfirmationResponse.class, sysSourceCode, RequestType.Z00005);
         }
         if (ResponseCode.R_Z00001.getCode().equals(response.getResponseCode())) {
             return response;
@@ -121,7 +133,7 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public ImageUploadResponse imageUpload(ImageUploadRequest imageUploadRequest, String sysSourceCode) throws Exception {
-        return post(imageUploadRequest, properties.getUrl(), ImageUploadResponse.class, sysSourceCode);
+        return verificationResponse(imageUploadRequest, properties.getUrl(), ImageUploadResponse.class, sysSourceCode, RequestType.Z00014);
     }
 
 
@@ -132,7 +144,7 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public NonAutomotiveProductsResponse products(NonAutomotiveProductsRequest request, String sysSourceCode) throws Exception {
-        return post(request, properties.getUrl(), NonAutomotiveProductsResponse.class, sysSourceCode);
+        return verificationResponse(request, properties.getUrl(), NonAutomotiveProductsResponse.class, sysSourceCode, RequestType.Z00018);
     }
 
     /**
@@ -142,7 +154,8 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public NonAutomotiveProductsDetailsResponse productsDetails(NonAutomotiveProductsDetailsRequest request, String sysSourceCode) throws Exception {
-        return post(request, properties.getUrl(), NonAutomotiveProductsDetailsResponse.class, sysSourceCode);
+        return verificationResponse(request, properties.getUrl(), NonAutomotiveProductsDetailsResponse.class, sysSourceCode,
+                RequestType.Z00019);
     }
 
 
@@ -153,7 +166,7 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public QuotationResponse quotation(QuotationRequest request, String sysSourceCode) throws Exception {
-        return post(request, properties.getUrl(), QuotationResponse.class, sysSourceCode);
+        return post(request, properties.getUrl(), QuotationResponse.class, sysSourceCode, RequestType.Z00006);
     }
 
     /**
@@ -163,7 +176,7 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public UnderwritingResponse underwriting(UnderwritingRequest underwritingRequest, String sysSourceCode) throws Exception {
-        return post(underwritingRequest, properties.getUrl(), UnderwritingResponse.class, sysSourceCode);
+        return post(underwritingRequest, properties.getUrl(), UnderwritingResponse.class, sysSourceCode, RequestType.Z00007);
     }
 
     /**
@@ -173,7 +186,7 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public PaymentResponse payment(PaymentRequest paymentRequest, String sysSourceCode) throws Exception {
-        return post(paymentRequest, properties.getUrl(), PaymentResponse.class, sysSourceCode);
+        return post(paymentRequest, properties.getUrl(), PaymentResponse.class, sysSourceCode, RequestType.Z00008);
     }
 
     /**
@@ -183,9 +196,8 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public ElectronicPolicyResponse electronicPolicy(ElectronicPolicyRequest electronicPolicyRequest, String sysSourceCode) throws Exception {
-        ElectronicPolicyResponse response =  post(electronicPolicyRequest, properties.getUrl(), ElectronicPolicyResponse.class, sysSourceCode);
-        verificationResponseCode(response.getResponseCode(), response.getResponseMsg());
-        return response;
+        return verificationResponse(electronicPolicyRequest, properties.getUrl(), ElectronicPolicyResponse.class, sysSourceCode,
+                RequestType.Z00020);
     }
 
     /**
@@ -195,9 +207,8 @@ public class BoHaiRequestApiComponent {
      * @return 响应
      */
     public StatusDocumentsResponse statusDocuments(StatusDocumentsRequest statusDocumentsRequest, String sysSourceCode) throws Exception {
-        StatusDocumentsResponse response = post(statusDocumentsRequest, properties.getUrl(), StatusDocumentsResponse.class, sysSourceCode);
-        verificationResponseCode(response.getResponseCode(), response.getResponseMsg());
-        return response;
+        return verificationResponse(statusDocumentsRequest, properties.getUrl(), StatusDocumentsResponse.class, sysSourceCode,
+                RequestType.Z00021);
     }
 
     /**

+ 6 - 0
src/main/java/com/ydtech/modules/order/constants/OrderCacheConstant.java

@@ -67,6 +67,12 @@ public class OrderCacheConstant {
      */
     public static final String GR_SPECIAL_AGREEMENT_KEY = "gr:specialAgreement:";
 
+
+    /**
+     * 图片识别 key
+     */
+    public static final String IMAGE_IDENTIFY_KEY = "image:identify:";
+
     /**
      * 国任特别约定 存储时间
      */

+ 3 - 2
src/main/java/com/ydtech/modules/order/controller/IdentifyController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.Map;
 
 @RestController
@@ -27,13 +28,13 @@ public class IdentifyController {
 
     @PostMapping("/idCard")
     @ApiOperation(value = "身份证正反面识别")
-    public HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) throws IOException {
         return identifyService.idCard(image1, image2);
     }
 
     @PostMapping("/drivingPermit")
     @ApiOperation(value = "行驶证正反面识别")
-    public HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) throws IOException {
         return identifyService.drivingPermit(image1, image2);
     }
 

+ 3 - 0
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -41,6 +41,9 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
     InsAreaCompany queryLatestStatus(@Param("orderNo") String orderNo);
 
 
+    List<InsAreaCompany> getorDerIds();
+
+
 }
 
 

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -367,6 +367,9 @@ public class InsAreaCompany implements Serializable {
         this.lossRation = quoteRespVo.getLossRation();
         this.jqLossRation = quoteRespVo.getJqLossRation();
         this.syLossRation = quoteRespVo.getSyLossRation();
+
+        this.jqapplyno = quoteRespVo.getJqApplyNo();
+        this.syapplyno = quoteRespVo.getSyApplyNo();
     }
 
     public void setPaymentLink(String paymentLink) {

+ 14 - 5
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/BoHaiBaseRequest.java

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
 import lombok.Data;
 import lombok.NoArgsConstructor;
+import org.springframework.util.ObjectUtils;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
@@ -19,19 +20,27 @@ public class BoHaiBaseRequest implements Serializable {
     @JsonProperty("baseParam")
     private BaseParamDTO baseParam;
 
-    public void setBaseParam(BoHaiConfigureParameters parameters, String requestType) {
-        baseParam = new BaseParamDTO();
+    public void setBaseParam(BoHaiConfigureParameters parameters) {
+        if (ObjectUtils.isEmpty(this.baseParam)) {
+            baseParam = new BaseParamDTO();
+        }
         baseParam.requestNo = UUID.randomUUID().toString().replace("-", "");
         baseParam.requestTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
-        baseParam.requestType = requestType;
         baseParam.ip = "118.81.124.183";
         baseParam.insurerBranchCode = parameters.getInsurerBranchCode();
         baseParam.franchiserInstitutionCode = parameters.getFranchiserInstitutionCode();
         baseParam.franchiserChannel = new BaseParamDTO.FranchiserChannelDTO(parameters);
     }
 
-    public void setBaseParam(BoHaiConfigureParameters parameters, String requestType, String orderNo) {
-        setBaseParam(parameters, requestType);
+    public void setBaseParamRequestType(String requestType) {
+        if (ObjectUtils.isEmpty(this.baseParam)) {
+            baseParam = new BaseParamDTO();
+        }
+        this.baseParam.requestType = requestType;
+    }
+
+    public void setBaseParam(BoHaiConfigureParameters parameters, String orderNo) {
+        setBaseParam(parameters);
         baseParam.orderNo = orderNo;
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ElectronicPolicyRequest.java

@@ -28,7 +28,7 @@ public class ElectronicPolicyRequest extends BoHaiBaseRequest {
     private String policyType;
 
     public ElectronicPolicyRequest(BoHaiConfigureParameters parameters, String id, String jqpolicyno, String sypolicyno) {
-        this.setBaseParam(parameters, RequestType.Z00020.getCode(), id);
+        this.setBaseParam(parameters, id);
         this.policyNo = StringUtils.isNotEmpty(jqpolicyno) ? jqpolicyno : sypolicyno;
         if (StringUtils.isEmpty(jqpolicyno)) {
             this.policyType = "0";

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/GenerateOrderNoRequest.java

@@ -24,7 +24,7 @@ public class GenerateOrderNoRequest extends BoHaiBaseRequest {
     private static final long serialVersionUID = 8713399532011104295L;
 
     public GenerateOrderNoRequest(BoHaiConfigureParameters parameters) {
-        this.setBaseParam(parameters, RequestType.Z00002.getCode());
+        this.setBaseParam(parameters);
     }
 
 }

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/ImageUploadRequest.java

@@ -34,7 +34,7 @@ public class ImageUploadRequest extends BoHaiBaseRequest {
     private String busUniqueId;
 
     public ImageUploadRequest(BoHaiConfigureParameters parameters, String id, String insOrderNo, List<InsTaskImagesBase64> insTaskImagesBase64s) {
-        this.setBaseParam(parameters, RequestType.Z00014.getCode(), id);
+        this.setBaseParam(parameters, id);
         this.setBusUniqueId(insOrderNo);
         this.fileInfos = FileInfosDTO.toFileInfosDTOList(insTaskImagesBase64s);
     }

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/PaymentRequest.java

@@ -28,7 +28,7 @@ public class PaymentRequest extends BoHaiBaseRequest{
 
 
     public PaymentRequest(BoHaiConfigureParameters parameters, String orderNo, String insOrderNo) {
-        this.setBaseParam(parameters, RequestType.Z00008.getCode(), orderNo);
+        this.setBaseParam(parameters, orderNo);
         this.busUniqueId = insOrderNo;
         this.payWay = "82";
     }

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/QuotationRequest.java

@@ -58,7 +58,7 @@ public class QuotationRequest extends BoHaiBaseRequest {
                             String orderNO,
                             CarInfoVo carInfo,
                             List<BoHaiQuoteAccidentVo> accidentVo) {
-        this.setBaseParam(parameters, RequestType.Z00006.getCode(), orderNO);
+        this.setBaseParam(parameters, orderNO);
         this.argueSolution = "1";
         for (RiskInfoVo riskInfoVo : riskList) {
             if (InsuranceRisk.TRAFFIC.getCode().equals(riskInfoVo.getRiskCode())) {

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/StatusDocumentsRequest.java

@@ -24,7 +24,7 @@ public class StatusDocumentsRequest extends BoHaiBaseRequest {
     private String applicationNo;
 
     public StatusDocumentsRequest(BoHaiConfigureParameters parameters, String id, String applicationNo) {
-        this.setBaseParam(parameters, RequestType.Z00021.getCode(), id);
+        this.setBaseParam(parameters, id);
         this.applicationNo = applicationNo;
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/UnderwritingRequest.java

@@ -31,7 +31,7 @@ public class UnderwritingRequest extends BoHaiBaseRequest {
     private TrafficPolicyDTO trafficPolicy;
 
     public UnderwritingRequest(BoHaiConfigureParameters parameters, String orderNo) {
-        this.setBaseParam(parameters, RequestType.Z00007.getCode(), orderNo);
+        this.setBaseParam(parameters, orderNo);
     }
 
     @NoArgsConstructor

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleConfirmationReqeust.java

@@ -59,7 +59,7 @@ public class VehicleConfirmationReqeust extends BoHaiBaseRequest {
             effectDate = quoteInfoVo.getRiskList().get(0).getStartDate();
         }
 
-        this.setBaseParam(parameters, RequestType.Z00005.getCode(), orderNo);
+        this.setBaseParam(parameters, orderNo);
         // 车辆信息
         CarInfoVo carInfo = quoteInfoVo.getCarInfo();
         this.vehicle = new VehicleDTO(carInfo, vehicleModelsDTO, effectDate);

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/bohai/request/VehicleTypeQueryRequest.java

@@ -51,7 +51,7 @@ public class VehicleTypeQueryRequest extends BoHaiBaseRequest {
     private String newVehicleFlag;
 
     public VehicleTypeQueryRequest(BoHaiConfigureParameters parameters, String vehicleBrandModelKey, String orderNo) {
-        this.setBaseParam(parameters, RequestType.Z00004.getCode(), orderNo);
+        this.setBaseParam(parameters, orderNo);
         this.vehicleBrandModelKey = vehicleBrandModelKey;
     }
 

+ 60 - 2
src/main/java/com/ydtech/modules/order/entity/api/bohai/response/UnderwritingResponse.java

@@ -3,12 +3,15 @@ package com.ydtech.modules.order.entity.api.bohai.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ydtech.modules.order.entity.api.bohai.constants.ResultCode;
+import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
 import com.ydtech.utils.StringUtils;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
+import org.springframework.util.ObjectUtils;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 
@@ -48,12 +51,26 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
         @JsonProperty("total")
         private String total;
 
+        @JsonProperty("propertyPolicies")
+        private List<UnAutoPolicyDTO> propertyPolicies;
+
+        @JsonProperty("casualtyPolicies")
+        private List<UnAutoPolicyDTO> casualtyPolicies;
+
         @JsonProperty("businessPolicy")
         private BusinessPolicyDTO businessPolicy;
 
         @JsonProperty("trafficPolicy")
         private TrafficPolicyDTO trafficPolicy;
 
+        public List<UnAutoPolicyDTO> getPropertyPolicies() {
+            return ObjectUtils.isEmpty(propertyPolicies) ? new ArrayList<>() : propertyPolicies;
+        }
+
+        public List<UnAutoPolicyDTO> getCasualtyPolicies() {
+            return ObjectUtils.isEmpty(casualtyPolicies) ? new ArrayList<>() : casualtyPolicies;
+        }
+
         public int verificationUnderwriting() {
             int traffic = 1;
             int business = 1;
@@ -66,9 +83,9 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
                 business = extracted(this.businessResultCode);
             }
 
-            if(traffic == 1 && business == 1){
+            if (traffic == 1 && business == 1) {
                 return 1;
-            }else if(traffic == 2 || business == 2){
+            } else if (traffic == 2 || business == 2) {
                 return 2;
             }
             return 0;
@@ -134,5 +151,46 @@ public class UnderwritingResponse extends BoHaiBaseResponse {
                 private String specialTermText;
             }
         }
+
+        @NoArgsConstructor
+        @Data
+        public static class UnAutoPolicyDTO implements Serializable {
+
+            private static final long serialVersionUID = 6048226723767902266L;
+
+            /**
+             * 产品编码
+             */
+            @JsonProperty("productCode")
+            private String productCode;
+
+            /**
+             * 套餐编码
+             */
+            @JsonProperty("packageCode")
+            private String packageCode;
+
+            /**
+             * 投保单号
+             */
+            @JsonProperty("applicationNo")
+            private String applicationNo;
+
+            /**
+             * 非车核保规则
+             */
+            @JsonProperty("resultMsg")
+            private String resultMsg;
+
+
+            public DrivingInsuranceDto toDrivingInsuranceDto() {
+                DrivingInsuranceDto drivingInsuranceDto = new DrivingInsuranceDto();
+                drivingInsuranceDto.setCode(this.getProductCode());
+                drivingInsuranceDto.setName(this.getPackageCode());
+                drivingInsuranceDto.setApplicationNumber(this.getApplicationNo());
+                return drivingInsuranceDto;
+            }
+
+        }
     }
 }

+ 1 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/HuaTaiBaseResponse.java

@@ -14,6 +14,7 @@ public abstract class HuaTaiBaseResponse implements Serializable {
 
 
     private static final long serialVersionUID = -990496711871560039L;
+
     @JsonProperty(value = "head")
     private HuaTaiBaseResponseHead head;
 

+ 45 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/IndexRequest.java

@@ -0,0 +1,45 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class IndexRequest extends PingAnBaseRequest {
+
+    private static final long serialVersionUID = -2587880061389730743L;
+
+    private String cityCode;
+
+    private String inputBy;
+
+    private String saleCode;
+
+    private VehicleDTO vehicle;
+
+    private boolean isAllowRepeat;
+
+    @Data
+    public static class VehicleDTO implements Serializable {
+
+        private static final long serialVersionUID = 408333879699278346L;
+
+        private String licenseNo;
+
+        private String frameNo;
+
+    }
+
+    @Data
+    public static class BizQuoteDTO implements Serializable {
+
+        private static final long serialVersionUID = -4583474052247976539L;
+
+        private String loanVehicleFlag;
+
+    }
+
+}

+ 22 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/PingAnBaseRequest.java

@@ -0,0 +1,22 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class PingAnBaseRequest implements Serializable {
+
+    private static final long serialVersionUID = 8554995712964526165L;
+
+    /**
+     * 合作伙伴操作用户ID,用来记录合作伙伴操作人身份
+     */
+    private String userId;
+    /**
+     * 流程ID
+     */
+    private String flowid;
+
+
+}

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/request/SearchPAVehicleListRequest.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.pingan.request;
+
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+/**
+ * @description: 平安车型搜索接口 请求参数
+ * @author: wenks
+ * @date: 2024/3/20 10:14
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SearchPAVehicleListRequest extends PingAnBaseRequest {
+
+    private static final long serialVersionUID = 6733489357016348708L;
+
+    /**
+     * 车型关键字
+     */
+    private String keyword;
+
+}

+ 16 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/PingAnBaseResponse.java

@@ -0,0 +1,16 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class PingAnBaseResponse implements Serializable {
+
+    private static final long serialVersionUID = -4960017696151958700L;
+
+    private String resultMessage;
+
+    private String resultCode;
+
+}

+ 111 - 0
src/main/java/com/ydtech/modules/order/entity/api/pingan/response/SearchPAVehicleListResponse.java

@@ -0,0 +1,111 @@
+package com.ydtech.modules.order.entity.api.pingan.response;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+
+
+/**
+ * @version
+ * @description: 平安车型搜索接口 响应参数
+ * @author: wenks
+ * @date: 2024/3/20 10:14
+ **/
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class SearchPAVehicleListResponse extends PingAnBaseResponse {
+
+    private static final long serialVersionUID = 3896621571201019470L;
+
+    private List<ModelsDto> models;
+
+    @AllArgsConstructor
+    @NoArgsConstructor
+    @Data
+    public static class ModelsDto {
+
+        /**
+         * 车型编码索引
+         */
+        private String modelIndex;
+
+        /**
+         * 车型编码-非精友编码(可以通过车型编码,
+         * 脱离流程。暂定仅3个月有效,无法通过pa
+         * ModelCode反推精友编码)modelIndex
+         * 与paModelCode都会返回,可以选择一种
+         * 进行投保
+         */
+        private String paModelCode;
+
+        /**
+         * 品牌名
+         */
+        private String brandName;
+
+        /**
+         * 车型名称
+         */
+        private String modelName;
+
+        /**
+         * 车型详情
+         */
+        private String description;
+
+        /**
+         * 新车购置价
+         */
+        private String price;
+
+        /**
+         * 座位数
+         */
+        private String seats;
+
+        /**
+         * 上市时间
+         */
+        private String marketDate;
+
+        /**
+         * 排气量(升)
+         */
+        private String exhaustMeasure;
+
+        /**
+         * 整备质量(kg)
+         */
+        private String fullWeight;
+
+        /**
+         * 燃料类型(精友)
+         * D1:汽油
+         * D2:柴油
+         * D3:天然气
+         * D4:液化石油气
+         * D5:混合动力
+         * D6:电动
+         * D7:两用燃料
+         * D8:燃料电池
+         * D9:甲醇
+         * D11 :其他
+         * D12 :插电式混合动力
+         * D13 :混合油
+         * D14 :太阳能
+         * D15 :无
+         */
+        private String powerTypeCode;
+
+        /**
+         * 车辆种类
+         */
+        private String vehicleType;
+
+    }
+
+}

+ 3 - 2
src/main/java/com/ydtech/modules/order/service/IdentifyService.java

@@ -4,6 +4,7 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.order.entity.BusinessLicense;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.Map;
 
 public interface IdentifyService {
@@ -15,7 +16,7 @@ public interface IdentifyService {
      * @param image2 反面
      * @return
      */
-    HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2);
+    HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) throws IOException;
 
 
     /**
@@ -25,7 +26,7 @@ public interface IdentifyService {
      * @param image2 反面
      * @return
      */
-    HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2);
+    HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) throws IOException;
 
     /**
      * 营业执照识别

+ 4 - 0
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -58,4 +58,8 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      * @param orderNo 主订单号
      */
     InsAreaCompany queryLatestStatus(String orderNo);
+
+    List<InsAreaCompany> getorDerIds();
+
+
 }

+ 28 - 12
src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.order.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.exception.SystemException;
@@ -18,6 +19,7 @@ import com.ydtech.modules.order.entity.api.bohai.request.*;
 import com.ydtech.modules.order.entity.api.bohai.response.*;
 import com.ydtech.modules.order.entity.config.BoHaiConfigureParameters;
 import com.ydtech.modules.order.entity.crawler.vo.CrawlerPolicyPrintVo;
+import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
 import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
 import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
@@ -139,7 +141,9 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         QuotationRequest quotationRequest = new QuotationRequest(parameters, quoteInfoVo.getRiskList(), quoteInfoVo.getKindList(),
                 currentValue, orderNo, carInfo, quoteVo.getAccidentalDrivingVo());
         QuotationResponse response = boHaiRequestApiComponent.quotation(quotationRequest, parameters.getSysSourceCode());
-        return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo);
+        List<BoHaiQuoteAccidentVo> accidentalDrivingVo = quoteVo.getAccidentalDrivingVo();
+
+        return getQuoteRespVo(response, quoteInfoVo, vehicleModelsDTO, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
     }
 
     @Override
@@ -180,18 +184,29 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         UnderwritingRequest underwritingRequest = new UnderwritingRequest(parameters, insAreaCompany.getId());
         UnderwritingResponse underwritingResponse = boHaiRequestApiComponent.underwriting(underwritingRequest,
                 parameters.getSysSourceCode());
-        int i = underwritingResponse.getData().verificationUnderwriting();
+        UnderwritingResponse.DataDTO data = underwritingResponse.getData();
+        int i = data.verificationUnderwriting();
         // 交强
-        UnderwritingResponse.DataDTO.TrafficPolicyDTO trafficPolicy = underwritingResponse.getData().getTrafficPolicy();
+        UnderwritingResponse.DataDTO.TrafficPolicyDTO trafficPolicy = data.getTrafficPolicy();
         if (!ObjectUtils.isEmpty(trafficPolicy)) {
             insAreaCompany.setJqapplyno(trafficPolicy.getApplicationNo());
         }
         // 商业
-        UnderwritingResponse.DataDTO.BusinessPolicyDTO businessPolicy = underwritingResponse.getData().getBusinessPolicy();
+        UnderwritingResponse.DataDTO.BusinessPolicyDTO businessPolicy = data.getBusinessPolicy();
         if (!ObjectUtils.isEmpty(businessPolicy)) {
             insAreaCompany.setSyapplyno(businessPolicy.getApplicationNo());
         }
 
+        // 将驾意险保存起来
+        List<UnderwritingResponse.DataDTO.UnAutoPolicyDTO> casualtyPolicies = data.getCasualtyPolicies();
+        List<UnderwritingResponse.DataDTO.UnAutoPolicyDTO> policyDTOS = new ArrayList<>(casualtyPolicies);
+        List<UnderwritingResponse.DataDTO.UnAutoPolicyDTO> propertyPolicies = data.getPropertyPolicies();
+        policyDTOS.addAll(propertyPolicies);
+
+        List<DrivingInsuranceDto> collect = policyDTOS.stream().map(UnderwritingResponse.DataDTO.UnAutoPolicyDTO::toDrivingInsuranceDto).collect(Collectors.toList());
+        JSONArray objects = JSON.parseArray(JSON.toJSONString(collect));
+        insAreaCompany.setCrossInsurance(objects);
+
         if (i == 1) {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
             // 支付请求
@@ -206,9 +221,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         } else {
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
         }
-
-        String trafficResultMsg = underwritingResponse.getData().getTrafficResultMsg();
-        String businessResultMsg = underwritingResponse.getData().getBusinessResultMsg();
+        String trafficResultMsg = data.getTrafficResultMsg();
+        String businessResultMsg = data.getBusinessResultMsg();
         insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
         return HttpResult.error(trafficResultMsg + "/n" + businessResultMsg);
     }
@@ -379,8 +393,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                                                   BaseQuoteInfoVo yaQuoteInfoVo,
                                                   VehicleTypeQueryResponse.DataDTO.VehicleModelsDTO vehicleModelsDTO,
                                                   PtlAgreementAttribution ptlAgreementAttribution,
-                                                  String orderNo
-    ) {
+                                                  String orderNo,
+                                                  List<BoHaiQuoteAccidentVo> accidentalDrivingVo) {
 
         double sumPayTax = 0;
         double jqPremium = 0;
@@ -397,7 +411,6 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         // 交强
         quoteRespVo.setStartDateJq(trafficPolicy.getStartDate());
         quoteRespVo.setEndDateJq(trafficPolicy.getEndDate());
-        quoteRespVo.setJqApplyNo(trafficPolicy.getApplicationNo());
         // 商业险
         QuotationResponse.DataDTO.BusinessPolicyDTO businessPolicy = response.getData().getBusinessPolicy();
         List<QuoteKindRespVo> kindList1 = new ArrayList<>();
@@ -455,13 +468,14 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         quoteRespVo.setTotalAdjustRate(0);
         quoteRespVo.setOrderno(yaQuoteInfoVo.getOrderNo()); //订单号
         quoteRespVo.setCoreModels(vehicleModelsDTO.toCoreModelsVo());
-        return responseOrder(response, quoteRespVo, ptlAgreementAttribution, orderNo);
+        return responseOrder(response, quoteRespVo, ptlAgreementAttribution, orderNo, accidentalDrivingVo);
     }
 
     public HttpResult<QuoteRespVo> responseOrder(QuotationResponse response,
                                                  QuoteRespVo quoteRespVo,
                                                  PtlAgreementAttribution ptlAgreementAttribution,
-                                                 String orderId) {
+                                                 String orderId,
+                                                 List<BoHaiQuoteAccidentVo> accidentalDrivingVo) {
         // 保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
 
@@ -471,6 +485,8 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
         insAreaCompany.setReptxt(JSON.parseObject(JSON.toJSONString(response)));
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
         insAreaCompany.setInsOrderNo(busUniqueId);
+        // 驾意险
+        insAreaCompany.setAccidentInfo(JSON.parseArray(JSON.toJSONString(accidentalDrivingVo)));
         // 车船税
         QuotationResponse.DataDTO.TrafficPolicyDTO.VehicleTaxDTO vehicleTax = response.getData().getTrafficPolicy().getVehicleTax();
         TaxArrears taxArrears = new TaxArrears("往年欠税", Double.parseDouble(vehicleTax.getOverdueTaxAmount()),

+ 79 - 14
src/main/java/com/ydtech/modules/order/service/impl/IdentifyServiceImpl.java

@@ -8,17 +8,27 @@ import com.ydtech.modules.order.entity.BusinessLicense;
 import com.ydtech.modules.order.service.IdentifyService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.ImageCompressionUtils;
+import com.ydtech.utils.ObjectUtil;
+import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.baidu.BusinessLicenseRecognition;
 import com.ydtech.utils.baidu.Idcard;
 import com.ydtech.utils.baidu.MultiObjectDetect;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.springframework.beans.BeanUtils;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.IOException;
 import java.util.Base64;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+import static com.ydtech.modules.order.constants.OrderCacheConstant.IMAGE_IDENTIFY_KEY;
 
 /**
  * @author wenks
@@ -29,16 +39,45 @@ import java.util.Map;
 @Service
 public class IdentifyServiceImpl implements IdentifyService {
 
+
+    @Resource
+    private RedisTemplate<String, Object> redisTemplate;
+
     @Override
-    public HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> idCard(MultipartFile image1, MultipartFile image2) throws IOException {
         Map<String, Object> map = new HashMap<>();
         CustomerInfoVO customerInfoVO = new CustomerInfoVO();
+        if (image1 != null){
+            String s1MD5 = DigestUtils.md5Hex(image1.getBytes());
+            String s1 = byteToBase64(image1);
+            String s1Key = IMAGE_IDENTIFY_KEY + "idCard:" + "front:" + s1MD5;
+            if (StringUtils.isNotBlank(s1) && !ObjectUtil.isAllFieldNull(redisTemplate.opsForValue().get(s1Key))) {
+                //走缓存
+                BeanUtils.copyProperties(Objects.requireNonNull(redisTemplate.opsForValue().get(s1Key)), customerInfoVO);
+            } else {
+                //识别身份证正面
+                Idcard.getIdCardFront(s1, customerInfoVO);
+                AssertionUtils.isEmpty(customerInfoVO, "身份证识别失败");
+                //设置缓存
+                redisTemplate.opsForValue().set(s1Key, customerInfoVO, 1, TimeUnit.DAYS);
+            }
+        }
 
-        String s1 = byteToBase64(image1);
-        Idcard.getIdCardFront(s1, customerInfoVO);
-
-        String s2 = byteToBase64(image2);
-        Idcard.getIdCardBack(s2, customerInfoVO);
+        if (image2 != null) {
+            String s2MD5 = DigestUtils.md5Hex(image2.getBytes());
+            String s2 = byteToBase64(image2);
+            String s2Key = IMAGE_IDENTIFY_KEY + "idCard:" + "back:" + s2MD5;
+            if (StringUtils.isNotBlank(s2) && !ObjectUtil.isAllFieldNull(redisTemplate.opsForValue().get(s2Key))) {
+                //走缓存
+                BeanUtils.copyProperties(Objects.requireNonNull(redisTemplate.opsForValue().get(s2Key)), customerInfoVO);
+            } else {
+                //识别身份证背面
+                Idcard.getIdCardBack(s2, customerInfoVO);
+                AssertionUtils.isEmpty(customerInfoVO, "身份证识别失败");
+                //设置缓存
+                redisTemplate.opsForValue().set(s2Key, customerInfoVO, 1, TimeUnit.DAYS);
+            }
+        }
 
         AssertionUtils.isEmpty(customerInfoVO, "身份证识别失败");
         map.put("customerInfo", customerInfoVO);
@@ -46,17 +85,41 @@ public class IdentifyServiceImpl implements IdentifyService {
     }
 
     @Override
-    public HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) {
+    public HttpResult<Map<String, Object>> drivingPermit(MultipartFile image1, MultipartFile image2) throws IOException {
         Map<String, Object> map = new HashMap<>();
         CardUserInfo cardUserInfo = new CardUserInfo();
+        if (image1 != null) {
+            String s1MD5 = DigestUtils.md5Hex(image1.getBytes());
+            String s1 = byteToBase64(image1);
+            String s1Key = IMAGE_IDENTIFY_KEY + "drivingPermit:" + "front:" + s1MD5;
+            if (StringUtils.isNotBlank(s1) && !ObjectUtil.isAllFieldNull(redisTemplate.opsForValue().get(s1Key))) {
+                //走缓存
+                BeanUtils.copyProperties(Objects.requireNonNull(redisTemplate.opsForValue().get(s1Key)), cardUserInfo);
+            } else {
+                //行驶证正面识别
+                MultiObjectDetect.drivingPermitFront(s1, cardUserInfo);
+                AssertionUtils.isEmpty(cardUserInfo, "行驶证正面识别失败");
+                //设置缓存
+                redisTemplate.opsForValue().set(s1Key, cardUserInfo, 1, TimeUnit.DAYS);
+            }
+        }
 
-        String s1 = byteToBase64(image1);
-        MultiObjectDetect.drivingPermitFront(s1, cardUserInfo);
-
-        String s2 = byteToBase64(image2);
-        MultiObjectDetect.drivingPermitBack(s2, cardUserInfo);
-
-        AssertionUtils.isEmpty(cardUserInfo, "身份证识别失败");
+        if (image2 != null) {
+            String s2MD5 = DigestUtils.md5Hex(image2.getBytes());
+            String s2 = byteToBase64(image2);
+            String s2Key = IMAGE_IDENTIFY_KEY + "drivingPermit:" + "back:" + s2MD5;
+            if (StringUtils.isNotBlank(s2) && !ObjectUtil.isAllFieldNull(redisTemplate.opsForValue().get(s2Key))) {
+                //走缓存
+                BeanUtils.copyProperties(Objects.requireNonNull(redisTemplate.opsForValue().get(s2Key)), cardUserInfo);
+            } else {
+                //行驶证反面识别
+                MultiObjectDetect.drivingPermitBack(s2, cardUserInfo);
+                AssertionUtils.isEmpty(cardUserInfo, "行驶证正面识别失败");
+                //设置缓存
+                redisTemplate.opsForValue().set(s2Key, cardUserInfo, 1, TimeUnit.DAYS);
+            }
+        }
+        AssertionUtils.isEmpty(cardUserInfo, "行驶证正面识别失败");
         map.put("carInfo", cardUserInfo);
         return HttpResult.ok("success", map);
     }
@@ -85,4 +148,6 @@ public class IdentifyServiceImpl implements IdentifyService {
     }
 
 
+
+
 }

+ 5 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -81,6 +81,11 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         return baseMapper.queryLatestStatus(orderNo);
     }
 
+    @Override
+    public List<InsAreaCompany> getorDerIds() {
+        return  baseMapper.getorDerIds();
+    }
+
 }
 
 

+ 12 - 1
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -2,10 +2,12 @@ package com.ydtech.modules.order.service.impl;
 
 import cn.dev33.satoken.session.SaSession;
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.components.OrderComponents;
@@ -321,7 +323,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public BasePageResult<InsOrders> queryPageOrder(OrderQueryVo orderQueryVo) {
-
         // 领导标志
         boolean isTeamLeader = false;
         //是否出单员标志
@@ -387,6 +388,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             }
         }
 
+        //查出报价状态为 3
+        List<InsAreaCompany>   insAreaCompanies = insAreaCompanyService.getorDerIds();
+//      新的费用订单表
+        if(insAreaCompanies.size()>0){
+            List<String> collect = insAreaCompanies.stream().map(insAreaCompany -> insAreaCompany.getOrderno()).collect(Collectors.toList());
+            if (!collect.isEmpty()) {
+                wrapper.in(InsOrders::getOrderno, collect);
+            }
+        }
+
         Page<InsOrders> insOrdersPage = page(page, wrapper);
 
         return new BasePageResult<>(orderQueryVo.getPageNum(), page.getSize(), insOrdersPage.getTotal(), page.getPages(),

+ 3 - 0
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -157,6 +157,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
         ptlAgreementHistory.setId(IdGenerate.nextId());
+        ptlAgreementHistory.setOperatorType("add");
         ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
         PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo,ptlAgreement.getId(),esmInsCompany.getId(),esmInsCompany.getName(),agreement.getAttribution());
         ptlAgreementAttributionHistory.setId(IdGenerate.nextId());
@@ -395,6 +396,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreementHistory.setEndDate(byAgreementId.getData().getAgreement().getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreementHistory.getId());
         ptlAgreementHistory.setId(IdGenerate.nextId());
+        ptlAgreementHistory.setOperatorType("delete");
         ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
         PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo,agreementId,
                 byAgreementId.getData().getAgreement().getInsuranceCompanyId(),
@@ -437,6 +439,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreementHistory.setEndDate(ptlAgreement.getEndDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
         ptlAgreementHistory.setAgreementId(ptlAgreement.getId());
         ptlAgreementHistory.setId(IdGenerate.nextId());
+        ptlAgreementHistory.setOperatorType("update");
         ptlAgreementHistoryService.saveAgreementHistory(ptlAgreementHistory);
         PtlAgreementAttributionHistory ptlAgreementAttributionHistory = new PtlAgreementAttributionHistory(batchNo,ptlAgreement.getId(),esmInsCompany.getId(),esmInsCompany.getName(),agreement.getAttribution());
         ptlAgreementAttributionHistory.setId(IdGenerate.nextId());

+ 19 - 18
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCosts.java

@@ -6,6 +6,7 @@ import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsAttrLink;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 @Data
@@ -72,58 +73,58 @@ public class AgreementProductCosts {
     // ---------------
     // ---------------
     @ApiModelProperty(value = "交强出口比例一级")
-    private String jqExportRadioLevel1;
+    private BigDecimal jqExportRadioLevel1;
 
     @ApiModelProperty(value = "交强出口比例二级")
-    private String jqExportRadioLevel2;
+    private BigDecimal jqExportRadioLevel2;
 
     @ApiModelProperty(value = "交强出口比例三级")
-    private String jqExportRadioLevel3;
+    private BigDecimal jqExportRadioLevel3;
 
     @ApiModelProperty(value = "交强出口比例四级")
-    private String jqExportRadioLevel4;
+    private BigDecimal jqExportRadioLevel4;
 
     @ApiModelProperty(value = "交强出口比例五级")
-    private String jqExportRadioLevel5;
+    private BigDecimal jqExportRadioLevel5;
 
     @ApiModelProperty(value = "交强出口加投比例")
-    private String jqExportInvestmentRadio;
+    private BigDecimal jqExportInvestmentRadio;
 
     @ApiModelProperty(value = "商业出口比例一级")
-    private String syExportRadioLevel1;
+    private BigDecimal syExportRadioLevel1;
 
     @ApiModelProperty(value = "商业出口比例二级")
-    private String syExportRadioLevel2;
+    private BigDecimal syExportRadioLevel2;
 
     @ApiModelProperty(value = "商业出口比例三级")
-    private String syExportRadioLevel3;
+    private BigDecimal syExportRadioLevel3;
 
     @ApiModelProperty(value = "商业出口比例四级")
-    private String syExportRadioLevel4;
+    private BigDecimal syExportRadioLevel4;
 
     @ApiModelProperty(value = "商业出口比例五级")
-    private String syExportRadioLevel5;
+    private BigDecimal syExportRadioLevel5;
 
     @ApiModelProperty(value = "商业出口加投比例")
-    private String syExportInvestmentRadio;
+    private BigDecimal syExportInvestmentRadio;
 
     @ApiModelProperty(value = "非车出口比例一级")
-    private String noCarExportRadioLevel1;
+    private BigDecimal noCarExportRadioLevel1;
 
     @ApiModelProperty(value = "非车出口比例二级")
-    private String noCarExportRadioLevel2;
+    private BigDecimal noCarExportRadioLevel2;
 
     @ApiModelProperty(value = "非车出口比例三级")
-    private String noCarExportRadioLevel3;
+    private BigDecimal noCarExportRadioLevel3;
 
     @ApiModelProperty(value = "非车出口比例四级")
-    private String noCarExportRadioLevel4;
+    private BigDecimal noCarExportRadioLevel4;
 
     @ApiModelProperty(value = "非车出口比例五级")
-    private String noCarExportRadioLevel5;
+    private BigDecimal noCarExportRadioLevel5;
 
     @ApiModelProperty(value = "非车出口加投比例")
-    private String noCarExportInvestmentRadio;
+    private BigDecimal noCarExportInvestmentRadio;
 
 
     @ApiModelProperty(value = "费用属性")

+ 1 - 1
src/main/java/com/ydtech/modules/protocols/entity/vo/AgreementProductCostsSave.java

@@ -66,7 +66,7 @@ public class AgreementProductCostsSave {
     private String costsEndDate;
 
     @ApiModelProperty(value = "优先级")
-    private String priorityLevel;
+    private Integer priorityLevel;
 
 
     // ---------------

+ 41 - 0
src/main/java/com/ydtech/utils/ObjectUtil.java

@@ -0,0 +1,41 @@
+package com.ydtech.utils;
+import java.lang.reflect.Field;
+/**
+ * @author jianlong
+ * @date 2024-03-19 09:26
+ */
+import java.util.*;
+
+
+public class ObjectUtil {
+    /**
+     * 判断该对象是否所有属性为空
+     * 返回ture表示所有属性为null,返回false表示不是所有属性都是null
+     */
+    public static boolean isAllFieldNull(Object object) {
+        boolean flag = true;
+
+        if(object == null) return flag;
+        Class clazz = object.getClass();
+        Field[] fields = clazz.getDeclaredFields();
+
+        for (Field field : fields) {
+            //设置属性是可以访问的(私有的也可以)
+            field.setAccessible(true);
+            Object value = null;
+            try {
+                value = field.get(object);
+                // 只要有1个属性不为空,那么就不是所有的属性值都为空
+                if (value != null) {
+                    flag = false;
+                    break;
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return flag;
+    }
+}
+

+ 18 - 6
src/main/java/com/ydtech/utils/baidu/AuthService.java

@@ -11,7 +11,11 @@ import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
@@ -28,11 +32,19 @@ import java.util.Map;
  * @Date 2021/6/25
  **/
 @Slf4j
+@Component
 public class AuthService {
 
 
-    private AuthService() {
-        throw new IllegalStateException("Utility class");
+    @Autowired
+    private Environment environment;
+
+    @Autowired
+    private static Environment staticEnvironment;
+
+    @PostConstruct
+    public void init() {
+        staticEnvironment = environment;
     }
 
     /**
@@ -49,9 +61,9 @@ public class AuthService {
 //        String clientId = "MN5kwB9Qvi77eTKexMG69HH1";
 //        // 官网获取的 Secret Key 更新为你注册的
 //        String clientSecret = "LIZb0viMF5833zNHhhok3Kl1wqF9qWue";
+        String clientId = staticEnvironment.getProperty("baidu.clientId");
+        String clientSecret = staticEnvironment.getProperty("baidu.clientSecret");
 
-        String clientId = "xG9M8tSjNvYPwSTNavM0ELlD";
-        String clientSecret = "riYIRG67akE5FGVwnHE3dGBly5zmdS6t";
         return getAuth(clientId, clientSecret);
     }
 
@@ -66,7 +78,7 @@ public class AuthService {
      */
     public static String getAuth(String ak, String sk) {
         // 获取token地址
-        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
+        String authHost = staticEnvironment.getProperty("baidu.authHost");
         String getAccessTokenUrl = authHost
                 // 1. grant_type为固定参数
                 + "grant_type=client_credentials"
@@ -144,4 +156,4 @@ public class AuthService {
         }
     }
 
-}
+}

+ 19 - 5
src/main/java/com/ydtech/utils/baidu/Idcard.java

@@ -7,7 +7,11 @@ import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.CustomerInfoVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.Map;
@@ -16,12 +20,22 @@ import java.util.Map;
  * 身份证识别
  */
 @Slf4j
+@Component
 public class Idcard {
 
-    private Idcard() {
-        throw new IllegalStateException("Idcard class");
+
+    @Autowired
+    private Environment environment;
+
+    @Autowired
+    private static Environment staticEnvironment;
+
+    @PostConstruct
+    public void init() {
+        staticEnvironment = environment;
     }
 
+
     /**
      * 重要提示代码中所需工具类
      * FileUtil,Base64Util,HttpUtil,GsonUtils请从
@@ -37,7 +51,7 @@ public class Idcard {
         String accessToken = AuthService.getAuth();
         Map<String, Object> ma = new HashMap<>();
         // 请求url
-        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";
+        String url = staticEnvironment.getProperty("baidu.idcard");
         try {
             String imgParam = URLEncoder.encode(imgs, "UTF-8");
             String param = "id_card_side=" + "front" + "&image=" + imgParam + "&detect_photo=true";
@@ -68,7 +82,7 @@ public class Idcard {
         //// 从redis中获取信息,redis保存时间是20天。
         String accessToken = AuthService.getAuth();
         // 请求url
-        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";
+        String url = staticEnvironment.getProperty("baidu.idcard");
         try {
             String imgParam = URLEncoder.encode(image, "UTF-8");
             String param = "id_card_side=" + idCardSide + "&image=" + imgParam + "&detect_photo=true";
@@ -122,4 +136,4 @@ public class Idcard {
     }
 
 
-}
+}

+ 20 - 2
src/main/java/com/ydtech/utils/baidu/MultiObjectDetect.java

@@ -6,7 +6,11 @@ import com.alibaba.fastjson.JSONObject;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.ins.model.CardUserInfo;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import java.net.URLEncoder;
 import java.util.HashMap;
 import java.util.Map;
@@ -17,14 +21,28 @@ import java.util.Map;
  * @Author
  * @Date 2021/6/25
  **/
+@Component
 public class MultiObjectDetect {
 
 
+    @Autowired
+    private Environment environment;
+
+    @Autowired
+    private static Environment staticEnvironment;
+
+    @PostConstruct
+    public void init() {
+        staticEnvironment = environment;
+    }
+
+
+
     public static HttpResult multiObjectDetect(String imgData) {
         Map<String, Object> ma = new HashMap<>();
 
         // 请求url
-        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license";
+        String url = staticEnvironment.getProperty("baidu.vehicle");
         try {
             // 本地文件路径
             imgData = imgData.substring(imgData.indexOf(",") + 1);
@@ -75,7 +93,7 @@ public class MultiObjectDetect {
 
     public static JSONObject request(String images, String vehicleLicenseSide) {
         // 请求url
-        String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license";
+        String url = staticEnvironment.getProperty("baidu.vehicle");
         try {
 
             images = images.substring(images.indexOf(",") + 1);

+ 10 - 2
src/main/resources/application-pre.yml

@@ -11,6 +11,15 @@ ZMIMGUrl: https://www.echinacoal.com/singlePlatform/others/
 ZMSMSUrl: https://www.echinacoal.com/singlePlatform/prpall/
 ZMToken: THIRDSCOuloft2020052818346904zmYBSXQYTQ
 ZMUrl: https://www.echinacoal.com/singlePlatform/
+
+#百度图片识别API
+baidu:
+  clientId: xG9M8tSjNvYPwSTNavM0ELlD
+  clientSecret: riYIRG67akE5FGVwnHE3dGBly5zmdS6t
+  authHost: https://aip.baidubce.com/oauth/2.0/token?
+  vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
+  idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
+
 aly:
   cbit:
     url_pre: http://223.70.186.115:80/CBIT/API/insCBIT
@@ -277,8 +286,7 @@ bohai:
     selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGw4XAPHi+K+/F1yb4pP3MTSOurAWsV+o2bzeVLaI+L4AYeXWhMSZ/L5yEX1OvpZKkBRD6KeIzDFqlP+wZ3qgt4n8MoaeA4//Zj4TSXbyXVPtFAtpeTidd7oWBJWcydvhtcWXrhBRh9wErYZ6+hCwh10JBWmSbTcDm0qY8PyqusQIDAQAB
     selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIbDhcA8eL4r78XXJvik/cxNI66sBaxX6jZvN5Utoj4vgBh5daExJn8vnIRfU6+lkqQFEPop4jMMWqU/7BneqC3ifwyhp4Dj/9mPhNJdvJdU+0UC2l5OJ13uhYElZzJ2+G1xZeuEFGH3ASthnr6ELCHXQkFaZJtNwObSpjw/Kq6xAgMBAAECgYB2odAwNgukfVEJvCjWYYf6PT3YGh60ZIANg0JO1GkqjO4anXFrgLT+6Y7DCJfG296G/N7BGfXCMnHpXqgc7eDlmSy2JVfKzvptgKJBLktP7Yfajg3oY9S8parSK+iyHT6qYqQv6wBmQ3Q9smOp/TM2ndBMDXu9MjoTkNJhrfMDsQJBANbWHciQhazb3Y2DY42hW/zBf7rmmJFrw7aOrEjzw5E+SnGs/vcr3LUWBbSRTYHcoJ+V/kudfwRMlz0SLkfMAvMCQQCglcjNRx35Zw6vNKHE4vTN/ny2gukjvtkzXpPeTUfblrXjK3w3x9aWBZ/MUiphVe5NB8CAtlfYZMo4UG+WMEjLAkA4yHsyydArMinK/5FOm/meQt6p3c0xkpQ2KlurJJLqTtaKWTlCx1scmeeEJGuiCViDFbgS8FvkHQJUZ/vHikq1AkAHbUX/MHXTbg/AzKdaqsB1snpkGoPb0lzLQmmGU36qSjsZSY6SKdzjzVjJo1cwbz/5Mg2WJljDuk2b8yRmBs+nAkEAzoEZmM031u/0KBpukSbqef8JgJOZ0Do9KDbf2P6YuBal6drUeNYVhImKBxQAbjETp9m5TxxW/dkKmHCnc3zqsA==
     boHaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIC3wgJd+7Wue63Qjdh3/uscQSKec2m9gaeCq007kjEiSFES5Tfx75VPSxRj6qk6XN4umHOsHY+W9jkv+Cj4+z3XpPozsRdoj21oxPx8fPJzpVeaUHrEkZtj9Yvo/KhByBK5sRjKmlENXVF3wXVfAg48JZR2XUyUcBdZhR9aHhoQIDAQAB
-    sysSourceCode: 00000080
-
+    insurerCode: 'BPIC'
 
 knife4j:
   enable: false

+ 10 - 2
src/main/resources/application-prod.yml

@@ -11,6 +11,15 @@ ZMIMGUrl: https://www.echinacoal.com/singlePlatform/others/
 ZMSMSUrl: https://www.echinacoal.com/singlePlatform/prpall/
 ZMToken: THIRDSCOuloft2020052818346904zmYBSXQYTQ
 ZMUrl: https://www.echinacoal.com/singlePlatform/
+
+#百度图片识别API
+baidu:
+  clientId: xG9M8tSjNvYPwSTNavM0ELlD
+  clientSecret: riYIRG67akE5FGVwnHE3dGBly5zmdS6t
+  authHost: https://aip.baidubce.com/oauth/2.0/token?
+  vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
+  idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
+
 aly:
   cbit:
     url_pre: http://223.70.186.115:80/CBIT/API/insCBIT
@@ -276,8 +285,7 @@ bohai:
     selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGw4XAPHi+K+/F1yb4pP3MTSOurAWsV+o2bzeVLaI+L4AYeXWhMSZ/L5yEX1OvpZKkBRD6KeIzDFqlP+wZ3qgt4n8MoaeA4//Zj4TSXbyXVPtFAtpeTidd7oWBJWcydvhtcWXrhBRh9wErYZ6+hCwh10JBWmSbTcDm0qY8PyqusQIDAQAB
     selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIbDhcA8eL4r78XXJvik/cxNI66sBaxX6jZvN5Utoj4vgBh5daExJn8vnIRfU6+lkqQFEPop4jMMWqU/7BneqC3ifwyhp4Dj/9mPhNJdvJdU+0UC2l5OJ13uhYElZzJ2+G1xZeuEFGH3ASthnr6ELCHXQkFaZJtNwObSpjw/Kq6xAgMBAAECgYB2odAwNgukfVEJvCjWYYf6PT3YGh60ZIANg0JO1GkqjO4anXFrgLT+6Y7DCJfG296G/N7BGfXCMnHpXqgc7eDlmSy2JVfKzvptgKJBLktP7Yfajg3oY9S8parSK+iyHT6qYqQv6wBmQ3Q9smOp/TM2ndBMDXu9MjoTkNJhrfMDsQJBANbWHciQhazb3Y2DY42hW/zBf7rmmJFrw7aOrEjzw5E+SnGs/vcr3LUWBbSRTYHcoJ+V/kudfwRMlz0SLkfMAvMCQQCglcjNRx35Zw6vNKHE4vTN/ny2gukjvtkzXpPeTUfblrXjK3w3x9aWBZ/MUiphVe5NB8CAtlfYZMo4UG+WMEjLAkA4yHsyydArMinK/5FOm/meQt6p3c0xkpQ2KlurJJLqTtaKWTlCx1scmeeEJGuiCViDFbgS8FvkHQJUZ/vHikq1AkAHbUX/MHXTbg/AzKdaqsB1snpkGoPb0lzLQmmGU36qSjsZSY6SKdzjzVjJo1cwbz/5Mg2WJljDuk2b8yRmBs+nAkEAzoEZmM031u/0KBpukSbqef8JgJOZ0Do9KDbf2P6YuBal6drUeNYVhImKBxQAbjETp9m5TxxW/dkKmHCnc3zqsA==
     boHaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIC3wgJd+7Wue63Qjdh3/uscQSKec2m9gaeCq007kjEiSFES5Tfx75VPSxRj6qk6XN4umHOsHY+W9jkv+Cj4+z3XpPozsRdoj21oxPx8fPJzpVeaUHrEkZtj9Yvo/KhByBK5sRjKmlENXVF3wXVfAg48JZR2XUyUcBdZhR9aHhoQIDAQAB
-    sysSourceCode: 00000080
-
+    insurerCode: 'BPIC'
 
 knife4j:
   enable: false

+ 10 - 1
src/main/resources/application-test.yml

@@ -13,6 +13,15 @@ ZMSMSUrl: https://test.echinacoal.com/singlePlatform/prpall/
 ZMToken: THIRDSCOuloft2020052818346904zmYBSX
 #中煤接口测试地址
 ZMUrl: https://test.echinacoal.com/singlePlatform/
+
+#百度图片识别API
+baidu:
+  clientId: xG9M8tSjNvYPwSTNavM0ELlD
+  clientSecret: riYIRG67akE5FGVwnHE3dGBly5zmdS6t
+  authHost: https://aip.baidubce.com/oauth/2.0/token?
+  vehicle: https://aip.baidubce.com/rest/2.0/ocr/v1/vehicle_license
+  idcard: https://aip.baidubce.com/rest/2.0/ocr/v1/idcard
+
 aly:
   cbit:
     #================ 阿里云部署对接保信服务器==============#
@@ -361,7 +370,7 @@ bohai:
     selfPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCGw4XAPHi+K+/F1yb4pP3MTSOurAWsV+o2bzeVLaI+L4AYeXWhMSZ/L5yEX1OvpZKkBRD6KeIzDFqlP+wZ3qgt4n8MoaeA4//Zj4TSXbyXVPtFAtpeTidd7oWBJWcydvhtcWXrhBRh9wErYZ6+hCwh10JBWmSbTcDm0qY8PyqusQIDAQAB
     selfPrivateKey: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIbDhcA8eL4r78XXJvik/cxNI66sBaxX6jZvN5Utoj4vgBh5daExJn8vnIRfU6+lkqQFEPop4jMMWqU/7BneqC3ifwyhp4Dj/9mPhNJdvJdU+0UC2l5OJ13uhYElZzJ2+G1xZeuEFGH3ASthnr6ELCHXQkFaZJtNwObSpjw/Kq6xAgMBAAECgYB2odAwNgukfVEJvCjWYYf6PT3YGh60ZIANg0JO1GkqjO4anXFrgLT+6Y7DCJfG296G/N7BGfXCMnHpXqgc7eDlmSy2JVfKzvptgKJBLktP7Yfajg3oY9S8parSK+iyHT6qYqQv6wBmQ3Q9smOp/TM2ndBMDXu9MjoTkNJhrfMDsQJBANbWHciQhazb3Y2DY42hW/zBf7rmmJFrw7aOrEjzw5E+SnGs/vcr3LUWBbSRTYHcoJ+V/kudfwRMlz0SLkfMAvMCQQCglcjNRx35Zw6vNKHE4vTN/ny2gukjvtkzXpPeTUfblrXjK3w3x9aWBZ/MUiphVe5NB8CAtlfYZMo4UG+WMEjLAkA4yHsyydArMinK/5FOm/meQt6p3c0xkpQ2KlurJJLqTtaKWTlCx1scmeeEJGuiCViDFbgS8FvkHQJUZ/vHikq1AkAHbUX/MHXTbg/AzKdaqsB1snpkGoPb0lzLQmmGU36qSjsZSY6SKdzjzVjJo1cwbz/5Mg2WJljDuk2b8yRmBs+nAkEAzoEZmM031u/0KBpukSbqef8JgJOZ0Do9KDbf2P6YuBal6drUeNYVhImKBxQAbjETp9m5TxxW/dkKmHCnc3zqsA==
     boHaiPublicKey: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCIC3wgJd+7Wue63Qjdh3/uscQSKec2m9gaeCq007kjEiSFES5Tfx75VPSxRj6qk6XN4umHOsHY+W9jkv+Cj4+z3XpPozsRdoj21oxPx8fPJzpVeaUHrEkZtj9Yvo/KhByBK5sRjKmlENXVF3wXVfAg48JZR2XUyUcBdZhR9aHhoQIDAQAB
-    sysSourceCode: 00000080
+    insurerCode: 'BPIC'
 
 xxl:
   job:

+ 38 - 0
src/main/resources/mapper/modules/admin/SysAmountAuditingMapper.xml

@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.SysAmountAuditingMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.admin.model.po.SysAmountAuditingEntity">
+        <id property="id" column="id" jdbcType="INTEGER"/>
+        <result property="bankNumber" column="bank_number" jdbcType="VARCHAR"/>
+        <result property="amount" column="amount" jdbcType="DECIMAL"/>
+        <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+        <result property="property" column="auditing_status" jdbcType="VARCHAR"/>
+        <result property="amountStatus" column="amount_status" jdbcType="VARCHAR"/>
+        <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
+    </resultMap>
+
+
+
+    <select id="getByUserId" resultType="com.ydtech.modules.admin.model.po.SysAmountAuditingEntity">
+        select
+            a. id as  "id",
+            a. bank_number as  "bankNumber",
+            a. amount as  "amount",
+            a. user_id as  "userId",
+            a. auditing_status as  "auditingStatus",
+            a. amount_status as  "amountStatus"
+        from  sys_amount_auditing  a
+        <where>
+            a.auditing_status  ='2'
+            <if test="userId !=null and  userId !=''">
+              and  a.user_id =#{userId}
+            </if>
+        </where>
+
+    </select>
+
+
+</mapper>

+ 23 - 0
src/main/resources/mapper/modules/admin/SysUserAccountMapper.xml

@@ -56,6 +56,29 @@
             </if>
         </where>
     </select>
+    <select id="getById" resultType="com.ydtech.modules.admin.model.po.SysUserAccount">
+        select
+            a.user_id as "userId",
+            a.handling_fee as "handlingFee",
+            a.documentary as "documentary",
+            a.promotion as "promotion",
+            a.create_time as "createTime",
+            a.handling_amount_withdrawal as "handlingAmountWithdrawal",
+            a.handling_amount_account as "handlingAmountAccount",
+            a.handling_amount_payment as "handlingAmountPayment",
+            a.documentary_amount_withdrawal as "documentaryAmountWithdrawal",
+            a.documentary_amount_account as "documentaryAmountAccount",
+            a.documentary_amount_payment as "documentaryAmountPayment",
+            a.promotion_amount_withdrawal as "promotionAmountWithdrawal",
+            a.promotion_amount_account as "promotionAmountAccount",
+            a.promotion_amount_payment as "promotionAmountPayment"
+        from  sys_user_account a
+        <where>
+            <if test="userId != null and userId != ''">
+                and a.user_id = #{userId}
+            </if>
+        </where>
+    </select>
 
 
 </mapper>

+ 34 - 0
src/main/resources/mapper/modules/admin/SysUserBankCardMapper.xml

@@ -9,6 +9,7 @@
             <result property="bankNumber" column="bank_number" jdbcType="VARCHAR"/>
             <result property="bankAccount" column="bank_account" jdbcType="VARCHAR"/>
             <result property="userId" column="user_id" jdbcType="VARCHAR"/>
+            <result property="isDefault" column="is_default" jdbcType="TINYINT"/>
             <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
     </resultMap>
 
@@ -16,4 +17,37 @@
         id,bank_number,bank_account,
         user_id,create_time
     </sql>
+
+
+    <select id="getByUserId" resultType="com.ydtech.modules.admin.model.po.SysUserBankCard">
+            select
+                  a.id as "id",
+                  a.bank_number as "bankNumber",
+                  a.bank_account as "bankAccount",
+                  a.user_id as "userId"
+            from  sys_user_bank_card a
+            <where>
+                <if test="userId !=null and  userId  !=''">
+                    a.user_id =#{userId}
+                </if>
+            </where>
+
+
+    </select>
+    <select id="getUserBankList" resultType="com.ydtech.modules.admin.model.po.SysUserBankCard">
+            select
+                  a.id as "id",
+                  a.bank_number as "bankNumber",
+                  a.bank_account as "bankAccount",
+                  a.is_default as "isDefault",
+                  a.user_id as "userId"
+            from  sys_user_bank_card a
+            <where>
+                <if test="userId !=null and  userId  !=''">
+                    a.user_id =#{userId}
+                </if>
+            </where>
+
+
+    </select>
 </mapper>

+ 11 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -97,6 +97,17 @@
         ORDER BY orderstatus DESC
         LIMIT 1
     </select>
+    <select id="getorDerIds"    resultType="com.ydtech.modules.order.entity.InsAreaCompany">
+        SELECT
+            a.id  as  "id" ,
+            a.orderno as  "orderno"
+        FROM
+            ins_area_company a
+                LEFT JOIN ins_fee_order_new b ON  a.id =b.ins_order_no
+        WHERE
+            a.orderstatus = '3'
+            and  b.id is not  null
+    </select>
 
 
 </mapper>

+ 1 - 2
src/main/resources/mapper/modules/protocol/PtlAgreementHistoryMapper.xml

@@ -50,8 +50,7 @@
             iaah.password
         FROM
             ptl_agreement_history iah
-                LEFT JOIN ptl_agreement_attribution_history iaah ON iah.agreement_id = iaah.id
-                AND iah.batch = iaah.batch
+                LEFT JOIN ptl_agreement_attribution_history iaah ON iah.batch = iaah.batch
         WHERE
             iah.agreement_id = #{agreementId}
     </select>