ソースを参照

1.供应商修改
2.协议修改
3.协议字典增加

wks 3 年 前
コミット
6f3dc4154e
33 ファイル変更845 行追加673 行削除
  1. 1 1
      src/main/java/com/ydtech/constants/SysConstants.java
  2. 0 1
      src/main/java/com/ydtech/constants/enums/dict/EnumUtils.java
  3. 25 0
      src/main/java/com/ydtech/constants/enums/dict/agreement/AgreementType.java
  4. 24 0
      src/main/java/com/ydtech/constants/enums/dict/agreement/FeeType.java
  5. 25 0
      src/main/java/com/ydtech/constants/enums/dict/agreement/MatchType.java
  6. 27 0
      src/main/java/com/ydtech/constants/enums/dict/agreement/MoneyType.java
  7. 1 1
      src/main/java/com/ydtech/core/page/PageRequest.java
  8. 20 24
      src/main/java/com/ydtech/core/page/PageResult.java
  9. 1 1
      src/main/java/com/ydtech/modules/demo/controller/DemoController.java
  10. 87 99
      src/main/java/com/ydtech/modules/esm/controller/EsmInsCompanyController.java
  11. 37 37
      src/main/java/com/ydtech/modules/esm/dao/EsmInsCompanyDao.java
  12. 4 0
      src/main/java/com/ydtech/modules/esm/dao/EsmInsCompanyMapper.java
  13. 370 371
      src/main/java/com/ydtech/modules/esm/dao/impl/EsmInsCompanyDaoImpl.java
  14. 13 17
      src/main/java/com/ydtech/modules/esm/model/EsmInsCompany.java
  15. 2 5
      src/main/java/com/ydtech/modules/esm/model/vo/req/EsmInsCompanyReq.java
  16. 11 11
      src/main/java/com/ydtech/modules/esm/model/vo/res/EsmInsCompanyResVo.java
  17. 30 7
      src/main/java/com/ydtech/modules/esm/service/EsmInsCompanyService.java
  18. 42 31
      src/main/java/com/ydtech/modules/esm/service/impl/EsmInsCompanyServiceImpl.java
  19. 0 10
      src/main/java/com/ydtech/modules/ins/controller/InsApiLogController.java
  20. 1 1
      src/main/java/com/ydtech/modules/order/service/InsCrawlerOrderService.java
  21. 4 2
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  22. 1 1
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderServiceImpl.java
  23. 2 11
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java
  24. 6 3
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsBaseDto.java
  25. 3 9
      src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementSaveDto.java
  26. 24 8
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java
  27. 6 6
      src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementProductCosts.java
  28. 2 2
      src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java
  29. 12 1
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  30. 56 9
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  31. 5 1
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlInsAttributionTemplateServiceImpl.java
  32. 2 2
      src/main/java/com/ydtech/modules/protocol/utils/AssertionUtils.java
  33. 1 1
      src/main/java/com/ydtech/utils/MacUtils.java

+ 1 - 1
src/main/java/com/ydtech/constants/SysConstants.java

@@ -21,7 +21,7 @@ public class SysConstants {
      */
     public static final String DEPT = "4";
 
-    public static String MAC_ADDRESS = MacUtils.getLocalMac();
+    public static final String MAC_ADDRESS = MacUtils.getLocalMac();
 
     /**
      * 薪酬管理审核状态(0:待审核;1:审核通过;2:审核未通过 9:未提交审核)

+ 0 - 1
src/main/java/com/ydtech/constants/enums/dict/EnumUtils.java

@@ -1,6 +1,5 @@
 package com.ydtech.constants.enums.dict;
 
-import com.ydtech.constants.enums.dict.IBaseEnum;
 import com.ydtech.utils.StringUtils;
 
 import java.util.Objects;

+ 25 - 0
src/main/java/com/ydtech/constants/enums/dict/agreement/AgreementType.java

@@ -0,0 +1,25 @@
+package com.ydtech.constants.enums.dict.agreement;
+
+import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "agreementType", desc = "协议类型")
+public enum AgreementType  implements IBaseEnum {
+
+    AT1("1", "平台协议-平台结算", 1, 0),
+    AT2("2", "私有协议-自行结算", 2, 0),
+    AT3("3", "网销协议-自行结算", 3, 0);
+
+    private final String code;
+
+    private final String desc;
+    //排序
+    private final Integer sort;
+    //状态  0 启用  1 不启用
+    private final Integer status;
+
+}

+ 24 - 0
src/main/java/com/ydtech/constants/enums/dict/agreement/FeeType.java

@@ -0,0 +1,24 @@
+package com.ydtech.constants.enums.dict.agreement;
+
+import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "feeType", desc = "费率类型")
+public enum FeeType implements IBaseEnum {
+
+    FT1("1", "跟单费率", 1, 0),
+    FT2("2", "固定费率", 2, 0),
+    FT3("3", "因子费率", 3, 0);
+
+    private final String code;
+
+    private final String desc;
+    //排序
+    private final Integer sort;
+    //状态  0 启用  1 不启用
+    private final Integer status;
+}

+ 25 - 0
src/main/java/com/ydtech/constants/enums/dict/agreement/MatchType.java

@@ -0,0 +1,25 @@
+package com.ydtech.constants.enums.dict.agreement;
+
+
+import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "matchType", desc = "保单匹配协议日期")
+public enum MatchType implements IBaseEnum {
+
+    MT1("1", "出单日期", 1, 0),
+    MT2("2", "投保日期", 2, 0);
+
+    private final String code;
+
+    private final String desc;
+    //排序
+    private final Integer sort;
+    //状态  0 启用  1 不启用
+    private final Integer status;
+
+}

+ 27 - 0
src/main/java/com/ydtech/constants/enums/dict/agreement/MoneyType.java

@@ -0,0 +1,27 @@
+package com.ydtech.constants.enums.dict.agreement;
+
+
+import com.ydtech.aop.request.DictEnum;
+import com.ydtech.constants.enums.dict.IBaseEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+@DictEnum(key = "moneyType", desc = "佣金发放方式")
+public enum MoneyType implements IBaseEnum {
+
+    MT1("1", "线下发放", 1, 0),
+    MT2("2", "发放到佣金账户", 2, 0),
+    MT3("3", "发放到掌柜币账户", 3, 0);
+
+    private final String code;
+
+    private final String desc;
+    //排序
+    private final Integer sort;
+    //状态  0 启用  1 不启用
+    private final Integer status;
+
+
+}

+ 1 - 1
src/main/java/com/ydtech/core/page/PageRequest.java

@@ -59,7 +59,7 @@ public class PageRequest {
     }
 
 
-    public static Page<T> buildPageRequest(PageRequest pageRequest) {
+    public static <T> Page<T> buildPageRequest(PageRequest pageRequest) {
         int pageNum = Math.max(pageRequest.getPageNum(), 1);
         int pageSize = Math.max(pageRequest.getPageSize(), 1);
 

+ 20 - 24
src/main/java/com/ydtech/core/page/PageResult.java

@@ -1,9 +1,7 @@
 package com.ydtech.core.page;
 
-import cn.hutool.http.HttpStatus;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonProperty;
 import com.github.pagehelper.Page;
 import com.ydtech.modules.inv.model.vo.res.InvBaseChannelMatchInsResVO;
 import io.swagger.annotations.ApiModel;
@@ -57,7 +55,6 @@ public class PageResult<T> {
     private String yssum;
 
 
-
     public PageResult() {
 
     }
@@ -98,42 +95,41 @@ public class PageResult<T> {
 
 
     /**
-     *  构造分页响应数据
+     * 构造分页响应数据
      *
      * @author: lig
      * @date: 2023年03月07日 0007
      */
-    public static PageResult buildPageResult(IPage page) {
-        PageResult p = new PageResult();
-        p.setPageNum((int)page.getCurrent());
-        p.setPageSize((int)page.getSize());
-        p.setTotalPages((int)page.getPages());
-        p.setTotalSize((int)page.getTotal());
-
-        p.setContent(page.getRecords()) ;
+    public static <T> PageResult<T> buildPageResult(IPage<T> page) {
+        PageResult<T> p = new PageResult<>();
+        p.setPageNum((int) page.getCurrent());
+        p.setPageSize((int) page.getSize());
+        p.setTotalPages((int) page.getPages());
+        p.setTotalSize((int) page.getTotal());
+        p.setContent(page.getRecords());
         return p;
 
     }
 
 
     /**
-     *  构造分页信息
-     *  使用与自定义sql
+     * 构造分页信息
+     * 使用与自定义sql
      *
      * @author: lig
      * @date: 2023年06月08日 0008
      */
-    public static <T> PageResult<InvBaseChannelMatchInsResVO> buildPageResult(BasePageVO basePageVo, int total, List<T> list){
+    public static <T> PageResult<InvBaseChannelMatchInsResVO> buildPageResult(BasePageVO basePageVo, int total, List<T> list) {
 
         int pageNum = basePageVo.getPageNum();
         int pageSize = basePageVo.getPageSize();
-        if(pageNum < 1) basePageVo.setPageNum(1);
-        if(pageSize < 1) basePageVo.setPageSize(10);
+        if (pageNum < 1) basePageVo.setPageNum(1);
+        if (pageSize < 1) basePageVo.setPageSize(10);
 
         PageResult p = new PageResult();
 
         //计算mysql分页总页数
-        int totalPages = total % pageSize == 0?total / pageSize:total / pageSize +1;
+        int totalPages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
 
         p.setPageNum(basePageVo.getPageNum());
         p.setPageSize(basePageVo.getPageSize());
@@ -148,21 +144,21 @@ public class PageResult<T> {
 
 
     /**
-     *  构造mysql 分页起始索引
-     *  使用与自定义sql
+     * 构造mysql 分页起始索引
+     * 使用与自定义sql
      *
      * @author: lig
      * @date: 2023年06月08日 0008
      */
-    public static int buildPageLimitStart(BasePageVO basePageVo){
+    public static int buildPageLimitStart(BasePageVO basePageVo) {
 
         int pageNum = basePageVo.getPageNum();
         int pageSize = basePageVo.getPageSize();
-        if(pageNum < 1) basePageVo.setPageNum(1);
-        if(pageSize < 1) basePageVo.setPageSize(10);
+        if (pageNum < 1) basePageVo.setPageNum(1);
+        if (pageSize < 1) basePageVo.setPageSize(10);
 
         //计算mysql分页起索引
-        int firstIndex = pageNum==1?0:(pageNum-1) * pageSize +1;
+        int firstIndex = pageNum == 1 ? 0 : (pageNum - 1) * pageSize + 1;
         return firstIndex;
 
     }

+ 1 - 1
src/main/java/com/ydtech/modules/demo/controller/DemoController.java

@@ -44,7 +44,7 @@ public class DemoController extends BaseController {
 
     @PostMapping(value = "/demo02")
     @ApiOperation(value = "post请求,三个以上参数可用,根据业务自建DTO")
-    public HttpResult demo02(@RequestBody TestDto dto) {
+    public HttpResult demo02(@RequestBody TestDto d7to) {
         //业务代码。。。
         return HttpResult.ok();
     }

+ 87 - 99
src/main/java/com/ydtech/modules/esm/controller/EsmInsCompanyController.java

@@ -2,27 +2,27 @@ package com.ydtech.modules.esm.controller;
 
 
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.bean.copier.CopyOptions;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ydtech.aop.request.RequestSingleParam;
+import com.ydtech.constants.enums.dict.SupplierTypeEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
+import com.ydtech.exception.SystemException;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.model.vo.req.EsmInsCompanyReq;
 import com.ydtech.modules.esm.model.vo.res.EsmInsCompanyResVo;
 import com.ydtech.modules.esm.service.EsmInsCompanyService;
-import com.ydtech.modules.esm.model.vo.req.EsmInsCompanyReq;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -37,55 +37,50 @@ import java.util.List;
 @RequestMapping("esmInsCompany")
 public class EsmInsCompanyController extends BaseController {
 
-    @Autowired
-    private EsmInsCompanyService esmInsCompanyService;
+    private final EsmInsCompanyService esmInsCompanyService;
+
+    public EsmInsCompanyController(EsmInsCompanyService esmInsCompanyService) {
+        this.esmInsCompanyService = esmInsCompanyService;
+    }
 
     @PostMapping("/findLeftInsTree")
-    public HttpResult findLeftInsTree() {
-        List<EsmInsCompany> lst = esmInsCompanyService.list();
-//        List<EsmInsCompany> lst = esmInsCompanyService.selectAll();
+    @ApiOperation("查询左侧树")
+    public HttpResult<List<EsmInsCompany>> findLeftInsTree(@RequestSingleParam("type") String type) {
+        LambdaQueryWrapper<EsmInsCompany> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StringUtils.isNullOrEmpty(type), EsmInsCompany::getType, type);
+        List<EsmInsCompany> lst = esmInsCompanyService.list(wrapper);
         return HttpResult.ok(lst);
     }
 
-    @ApiOperation(value = "获取树结构")
     @PostMapping("/findTree")
-    public HttpResult findTree(EsmInsCompanyReq req) {
-
+    @ApiOperation(value = "获取树结构")
+    public HttpResult<List<EsmInsCompany>> findTree(@RequestBody EsmInsCompanyReq req) {
         return HttpResult.ok(esmInsCompanyService.findTree(req));
     }
 
     @PostMapping(value = "/saveInsCompany")
     @ApiOperation(value = "保存信息")
     @ApiOperationSupport(ignoreParameters = "children")
-    public HttpResult save(@RequestBody EsmInsCompany record) {
-//    public HttpResult save(@RequestBody EsmInsCompany record) {
-        Integer result = 0;
-        String msg = "保存成功";
-
-        if (StringUtils.isNullOrEmpty(record.getId())) return HttpResult.ok("编号必填");
-
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper();
-        lqw.eq(EsmInsCompany::getId, record.getId());
+    public HttpResult<Object> save(@RequestBody EsmInsCompany esmInsCompany) {
+        if (StringUtils.isNullOrEmpty(esmInsCompany.getId())) return HttpResult.ok("编号必填");
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(EsmInsCompany::getId, esmInsCompany.getId());
         long i = esmInsCompanyService.count(lqw);
-        if (i > 0) return HttpResult.ok("重复编码");
-        esmInsCompanyService.save(record);
-        return HttpResult.ok(msg);
+        AssertionUtils.isSucceed(i > 0, "供应商编码重复");
+        esmInsCompanyService.save(esmInsCompany);
+        return HttpResult.ok("保存成功");
     }
 
     @PostMapping(value = "/editInsCompany")
     @ApiOperation(value = "修改信息")
     @ApiOperationSupport(ignoreParameters = "record.children")
-    public HttpResult update(@RequestBody EsmInsCompany record) {
-        Integer result = 0;
-        String msg = "保存成功";
-
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper();
-        lqw.eq(EsmInsCompany::getId, record.getId());
+    public HttpResult<Object> update(@RequestBody EsmInsCompany esmInsCompany) {
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(EsmInsCompany::getId, esmInsCompany.getId());
         long i = esmInsCompanyService.count(lqw);
-        if (i > 1) return HttpResult.ok("重复编码");
-
-        esmInsCompanyService.updateById(record);
-        return HttpResult.ok(msg);
+        AssertionUtils.isSucceed(i > 1, "供应商编码重复");
+        esmInsCompanyService.updateById(esmInsCompany);
+        return HttpResult.ok("修改成功");
     }
 
     /**
@@ -96,12 +91,11 @@ public class EsmInsCompanyController extends BaseController {
      */
     @ApiOperation(value = "查询下级机构列表")
     @PostMapping(value = "/selectList")
-    public HttpResult selectList(@RequestParam String parentid) {
+    public HttpResult<List<EsmInsCompany>> selectList(@RequestParam String parentid) {
         if (StringUtils.isNullOrEmpty(parentid)) parentid = "0";
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper();
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
         lqw.eq(EsmInsCompany::getParentId, parentid);
         List<EsmInsCompany> selectList = esmInsCompanyService.list(lqw);
-//        List<EsmInsCompany> selectList = esmInsCompanyService.selectList(" where parent_id = ? ", new Object[]{parentid});
         return HttpResult.ok(selectList);
     }
 
@@ -113,9 +107,8 @@ public class EsmInsCompanyController extends BaseController {
      */
     @ApiOperation(value = "根据主键查询")
     @GetMapping(value = "/findById")
-    public HttpResult findById(@RequestParam String id) {
+    public HttpResult<EsmInsCompany> findById(@RequestParam String id) {
         return HttpResult.ok(esmInsCompanyService.getById(id));
-//        return HttpResult.ok(esmInsCompanyService.selectByPk(id));
     }
 
     /**
@@ -127,21 +120,20 @@ public class EsmInsCompanyController extends BaseController {
     @PostMapping(value = "/findPage")
     public HttpResult findPage(@RequestBody PageRequest pageRequest) {
 
-        String id = pageRequest.getColumnFilterValue(pageRequest, "id");
-        String name = pageRequest.getColumnFilterValue(pageRequest, "name");
-        String parentId = pageRequest.getColumnFilterValue(pageRequest, "parentId");
+        String id = PageRequest.getColumnFilterValue(pageRequest, "id");
+        String name = PageRequest.getColumnFilterValue(pageRequest, "name");
+        String parentId = PageRequest.getColumnFilterValue(pageRequest, "parentId");
+
+        Page<EsmInsCompany> p = PageRequest.buildPageRequest(pageRequest);
 
-        Page p = PageRequest.buildPageRequest(pageRequest);
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper();
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
         lqw.eq(StringUtils.isNotEmpty(id), EsmInsCompany::getId, id);
         lqw.like(StringUtils.isNotEmpty(name), EsmInsCompany::getName, name);
         lqw.eq(StringUtils.isNotEmpty(parentId), EsmInsCompany::getParentId, parentId);
-        lqw.eq(EsmInsCompany::getDelFlag, 0);
 
         IPage<EsmInsCompany> pResult = esmInsCompanyService.page(p, lqw);
-
         //传入查询条件
-        PageResult pageResult = PageResult.buildPageResult(pResult);
+        PageResult<EsmInsCompany> pageResult = PageResult.buildPageResult(pResult);
         return HttpResult.ok(pageResult);
 
 
@@ -178,75 +170,71 @@ public class EsmInsCompanyController extends BaseController {
      * @author: lig
      * @date: 2023年04月14日 0014
      */
-    @ApiOperation(value = "批量删除操作")
-    @DeleteMapping(value = "/idBatch")
-    public HttpResult deleteBatch(@RequestParam List<String> idList) {
-        LambdaUpdateWrapper<EsmInsCompany> lqw = new LambdaUpdateWrapper<>();
-        lqw.in(EsmInsCompany::getId, idList);
-        lqw.set(EsmInsCompany::getDelFlag, -1);
-        esmInsCompanyService.update(lqw);
-
-        return HttpResult.ok("操作成功");
-
-    }
-
-
+//    @ApiOperation(value = "批量删除操作")
+//    @DeleteMapping(value = "/idBatch")
+//    public HttpResult<Object> deleteBatch(@RequestParam List<String> idList) {
+//
+//        LambdaUpdateWrapper<EsmInsCompany> lqw = new LambdaUpdateWrapper<>();
+//        lqw.in(EsmInsCompany::getId, idList);
+//        esmInsCompanyService.remove(lqw);
+//
+//        return HttpResult.ok("操作成功");
+//
+//    }
     @ApiOperation(value = "删除操作")
     @DeleteMapping(value = "/{id}")
-    public HttpResult delete(@PathVariable("id") String id) {
-
-        EsmInsCompany eic = esmInsCompanyService.getById(id);
-        if (null == eic) return HttpResult.error("对象不存在");
-
-        eic.setDelFlag(-1);
-        esmInsCompanyService.updateById(eic);
-
-        return HttpResult.ok("操作成功");
-
-    }
+    public HttpResult<Object> delete(@PathVariable("id") String id) {
+        EsmInsCompany esmInsCompany = esmInsCompanyService.isExists(id);
+        if ("0".equals(esmInsCompany.getParentId()) && !SupplierTypeEnum.AS0.getCode().equals(esmInsCompany.getType())) {
+            throw new SystemException("财险,寿险,一级保险公司无法删除");
+        }
 
-    @ApiOperation(value = "恢复删除操作")
-    @GetMapping(value = "/{id}")
-    public HttpResult rollBackDelete(@PathVariable("id") String id) {
-
-        EsmInsCompany eic = esmInsCompanyService.getById(id);
-        if (null == eic) return HttpResult.error("对象不存在");
-
-        eic.setDelFlag(0);
-        esmInsCompanyService.updateById(eic);
+        List<EsmInsCompany> list = esmInsCompanyService.list(new LambdaQueryWrapper<EsmInsCompany>().eq(EsmInsCompany::getParentId, id));
+        AssertionUtils.isSucceed(!list.isEmpty(), "此公司还有下级公司无法删除");
 
+        esmInsCompanyService.removeById(id);
         return HttpResult.ok("操作成功");
 
     }
 
+//    @ApiOperation(value = "恢复删除操作")
+//    @GetMapping(value = "/{id}")
+//    public HttpResult rollBackDelete(@PathVariable("id") String id) {
+//
+//        EsmInsCompany eic = esmInsCompanyService.getById(id);
+//        if (null == eic) return HttpResult.error("对象不存在");
+//
+//        eic.setDelFlag(0);
+//        esmInsCompanyService.updateById(eic);
+//
+//        return HttpResult.ok("操作成功");
+//
+//    }
 
-    @ApiOperation(value = "获取允许报价的保险公司列表")
-    @GetMapping(value = "/gainAllowQuoteList")
-    public HttpResult gainAllowQuoteList() {
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(EsmInsCompany::getDelFlag, 0);
-        lqw.eq(EsmInsCompany::getOpenQuote, 1);
-        lqw.eq(EsmInsCompany::getParentId, "0");
-        List<EsmInsCompany> list = esmInsCompanyService.list(lqw);
-        return HttpResult.ok(list);
 
-    }
+//    @ApiOperation(value = "获取允许报价的保险公司列表")
+//    @GetMapping(value = "/gainAllowQuoteList")
+//    public HttpResult gainAllowQuoteList() {
+//        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
+//        lqw.eq(EsmInsCompany::getDelFlag, 0);
+//        lqw.eq(EsmInsCompany::getOpenQuote, 1);
+//        lqw.eq(EsmInsCompany::getParentId, "0");
+//        List<EsmInsCompany> list = esmInsCompanyService.list(lqw);
+//        return HttpResult.ok(list);
+//
+//    }
 
 
     @ApiOperation(value = "获取顶级保险公司列表")
     @GetMapping(value = "/gainTopList")
-    public HttpResult<List<EsmInsCompanyResVo>> gainTopList() {
+    public HttpResult<List<EsmInsCompanyResVo>> gainTopList(@RequestParam String type) {
         LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
-        lqw.eq(EsmInsCompany::getDelFlag, 0);
         lqw.eq(EsmInsCompany::getParentId, "0");
         lqw.orderByAsc(EsmInsCompany::getOrderNum);
+        lqw.eq(!StringUtils.isNullOrEmpty(type), EsmInsCompany::getType, type);
         List<EsmInsCompany> list = esmInsCompanyService.list(lqw);
-        List<EsmInsCompanyResVo> resVoList = new ArrayList<>();
-        list.stream().forEach(a ->{
-            resVoList.add(BeanUtil.copyProperties(a, EsmInsCompanyResVo.class));
-        });
-        return HttpResult.ok(resVoList);
-
+        List<EsmInsCompanyResVo> esmInsCompanyResVos = BeanUtil.copyToList(list, EsmInsCompanyResVo.class);
+        return HttpResult.ok(esmInsCompanyResVos);
     }
 
 }

+ 37 - 37
src/main/java/com/ydtech/modules/esm/dao/EsmInsCompanyDao.java

@@ -1,37 +1,37 @@
-package com.ydtech.modules.esm.dao;
-
-
-import com.ydtech.core.page.PageResult;
-import com.ydtech.modules.esm.model.EsmInsCompany;
-
-import java.util.List;
-
-public interface EsmInsCompanyDao {
-
-    public EsmInsCompany selectByPk(String id);
-
-    public List<EsmInsCompany> selectAll();
-
-    public List<EsmInsCompany> selectList(String whereCase, Object[] paramValues);
-
-    public Integer count(String whereCase, Object[] paramValues);
-
-    public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues);
-
-    public Integer insert(EsmInsCompany model);
-
-    public Integer insertReturnPk(EsmInsCompany model);
-
-    public Integer insertSelective(EsmInsCompany model);
-
-    public Integer update(EsmInsCompany model);
-
-    public Integer updateSelective(EsmInsCompany model);
-
-    public Integer delete(String id);
-
-    public Integer delete(List<String> idList);
-}
-
-
-
+//package com.ydtech.modules.esm.dao;
+//
+//
+//import com.ydtech.core.page.PageResult;
+//import com.ydtech.modules.esm.model.EsmInsCompany;
+//
+//import java.util.List;
+//
+//public interface EsmInsCompanyDao {
+//
+//    public EsmInsCompany selectByPk(String id);
+//
+//    public List<EsmInsCompany> selectAll();
+//
+//    public List<EsmInsCompany> selectList(String whereCase, Object[] paramValues);
+//
+//    public Integer count(String whereCase, Object[] paramValues);
+//
+//    public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues);
+//
+//    public Integer insert(EsmInsCompany model);
+//
+//    public Integer insertReturnPk(EsmInsCompany model);
+//
+//    public Integer insertSelective(EsmInsCompany model);
+//
+//    public Integer update(EsmInsCompany model);
+//
+//    public Integer updateSelective(EsmInsCompany model);
+//
+//    public Integer delete(String id);
+//
+//    public Integer delete(List<String> idList);
+//}
+//
+//
+//

+ 4 - 0
src/main/java/com/ydtech/modules/esm/dao/EsmInsCompanyMapper.java

@@ -3,8 +3,12 @@ package com.ydtech.modules.esm.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ydtech.modules.esm.model.EsmInsCompany;
 
+import java.util.List;
+
 public interface EsmInsCompanyMapper extends BaseMapper<EsmInsCompany> {
 
+    List<String> getByLowerId(String companyId);
+
 }
 
 

+ 370 - 371
src/main/java/com/ydtech/modules/esm/dao/impl/EsmInsCompanyDaoImpl.java

@@ -1,371 +1,370 @@
-package com.ydtech.modules.esm.dao.impl;
-
-
-import com.github.drinkjava2.jdialects.Dialect;
-import com.ydtech.core.page.PageResult;
-import com.ydtech.modules.esm.dao.EsmInsCompanyDao;
-import com.ydtech.modules.esm.model.EsmInsCompany;
-import net.bytebuddy.implementation.bind.ArgumentTypeResolver;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.jdbc.core.BatchPreparedStatementSetter;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.core.PreparedStatementCreator;
-import org.springframework.jdbc.core.RowMapper;
-import org.springframework.jdbc.support.GeneratedKeyHolder;
-import org.springframework.jdbc.support.KeyHolder;
-import org.springframework.stereotype.Repository;
-
-import javax.sql.DataSource;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import java.util.List;
-
-
-@Repository
-public class EsmInsCompanyDaoImpl implements EsmInsCompanyDao {
-
-    @Autowired
-    public DataSource dataSource;
-
-    public static class EsmInsCompanyRowMapper implements RowMapper {
-        public EsmInsCompany mapRow(ResultSet resultSet, int rowNum) throws SQLException {
-            EsmInsCompany model = new EsmInsCompany();
-
-            model.setId(resultSet.getString("id"));
-            model.setName(resultSet.getString("name"));
-            model.setParentId(resultSet.getString("parent_id"));
-            model.setNamesimple(resultSet.getString("namesimple"));
-            model.setRemark(resultSet.getString("remark"));
-            model.setOrderNum(resultSet.getInt("order_num"));
-            model.setCreateBy(resultSet.getString("create_by"));
-            model.setCreateTime(resultSet.getDate("create_time"));
-            model.setLastUpdateBy(resultSet.getString("last_update_by"));
-            model.setLastUpdateTime(resultSet.getDate("last_update_time"));
-            model.setDelFlag(resultSet.getInt("del_flag"));
-            model.setLogo(resultSet.getString("logo"));
-            return model;
-        }
-    }
-
-    @Override
-    public EsmInsCompany selectByPk(String id) {
-        String sql = "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, t.logo from esm_ins_company t  where id=?";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        return (EsmInsCompany) jdbcTemplate.queryForObject(sql,
-                new Object[]{id}, new EsmInsCompanyRowMapper());
-    }
-
-    @Override
-    public List<EsmInsCompany> selectAll() {
-        String sql = "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, '' logo from esm_ins_company t  ";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        return jdbcTemplate.query(sql, new EsmInsCompanyRowMapper());
-    }
-
-    public List<EsmInsCompany> selectList(String whereCase, Object[] paramValues) {
-        String sql = "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, '' logo from esm_ins_company t  " + whereCase;
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        return jdbcTemplate.query(sql, paramValues, new EsmInsCompanyRowMapper());
-    }
-
-    public Integer count(String whereCase, Object[] paramValues) {
-        String sql = "select count(1) from esm_ins_company t " + whereCase;
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        return jdbcTemplate.queryForObject(sql, paramValues, Integer.class);
-    }
-
-    public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues) {
-
-        Dialect dialect = Dialect.guessDialect(dataSource);
-        String sql = dialect.pagin(pageNumber, pageSize, "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, '' logo from esm_ins_company t  " + whereCase);
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-        List<EsmInsCompany> recordList = jdbcTemplate.query(sql, paramValues, new EsmInsCompanyRowMapper());
-
-        int totalCount = count(whereCase, paramValues);
-
-        PageResult PageResult = new PageResult(pageNumber, pageSize, totalCount, recordList);
-
-        return PageResult;
-    }
-
-
-    @Override
-    public Integer insert(EsmInsCompany model) {
-
-        String sql = "insert into esm_ins_company ( id, name, parent_id, namesimple, remark, order_num, create_by, create_time, last_update_by, last_update_time, del_flag, logo) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        Object[] params = new Object[]{model.getId(), model.getName(), model.getParentId(), model.getNamesimple(), model.getRemark(), model.getOrderNum(), model.getCreateBy(), model.getCreateTime(), model.getLastUpdateBy(), model.getLastUpdateTime(), model.getDelFlag(), model.getLogo()};
-
-        int out = jdbcTemplate.update(sql, params);
-
-        return out;
-    }
-
-    @Override
-    public Integer insertReturnPk(EsmInsCompany model) {
-
-        String sql = "insert into esm_ins_company ( id, name, parent_id, namesimple, remark, order_num, create_by, create_time, last_update_by, last_update_time, del_flag, logo) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        KeyHolder keyHolder = new GeneratedKeyHolder();
-        jdbcTemplate.update(new PreparedStatementCreator() {
-            @Override
-            public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
-                PreparedStatement ps = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
-                ps.setObject(1, model.getId());
-                ps.setObject(2, model.getName());
-                ps.setObject(3, model.getParentId());
-                ps.setObject(4, model.getNamesimple());
-                ps.setObject(5, model.getRemark());
-                ps.setObject(6, model.getOrderNum());
-                ps.setObject(7, model.getCreateBy());
-                ps.setObject(8, model.getCreateTime());
-                ps.setObject(9, model.getLastUpdateBy());
-                ps.setObject(10, model.getLastUpdateTime());
-                ps.setObject(11, model.getDelFlag());
-                ps.setObject(12, model.getLogo());
-                return ps;
-            }
-        }, keyHolder);
-
-        return keyHolder.getKey().intValue();
-    }
-
-
-    @Override
-    public Integer insertSelective(EsmInsCompany model) {
-
-        StringBuffer sbSql = new StringBuffer();
-        StringBuffer sbParams = new StringBuffer();
-        ArrayList<Object> alParamsValues = new ArrayList<Object>();
-
-        String pre = "";
-
-        if (model.getId() != null) {
-            sbSql.append(pre + "id");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getId());
-            pre = ",";
-        }
-        if (model.getName() != null) {
-            sbSql.append(pre + "name");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getName());
-            pre = ",";
-        }
-        if (model.getParentId() != null) {
-            sbSql.append(pre + "parent_id");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getParentId());
-            pre = ",";
-        }
-        if (model.getNamesimple() != null) {
-            sbSql.append(pre + "namesimple");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getNamesimple());
-            pre = ",";
-        }
-        if (model.getRemark() != null) {
-            sbSql.append(pre + "remark");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getRemark());
-            pre = ",";
-        }
-        if (model.getOrderNum() != null) {
-            sbSql.append(pre + "order_num");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getOrderNum());
-            pre = ",";
-        }
-        if (model.getCreateBy() != null) {
-            sbSql.append(pre + "create_by");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getCreateBy());
-            pre = ",";
-        }
-        if (model.getCreateTime() != null) {
-            sbSql.append(pre + "create_time");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getCreateTime());
-            pre = ",";
-        }
-        if (model.getLastUpdateBy() != null) {
-            sbSql.append(pre + "last_update_by");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getLastUpdateBy());
-            pre = ",";
-        }
-        if (model.getLastUpdateTime() != null) {
-            sbSql.append(pre + "last_update_time");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getLastUpdateTime());
-            pre = ",";
-        }
-        if (model.getDelFlag() != null) {
-            sbSql.append(pre + "del_flag");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getDelFlag());
-            pre = ",";
-        }
-        if (model.getLogo() != null) {
-            sbSql.append(pre + "logo");
-            sbParams.append(pre + "?");
-            alParamsValues.add(model.getLogo());
-            pre = ",";
-        }
-
-        String sql = "INSERT INTO esm_ins_company (" + sbSql.toString() + ") VALUES (" + sbParams.toString() + ")";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        Object[] params = alParamsValues.toArray();
-
-        int out = jdbcTemplate.update(sql, params);
-
-        return out;
-    }
-
-    @Override
-    public Integer update(EsmInsCompany model) {
-
-        String sql = "update esm_ins_company set name=?, parent_id=?, namesimple=?, remark=?, order_num=?, create_by=?, create_time=?, last_update_by=?, last_update_time=?, del_flag=?, logo=? where id=?";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        Object[] params = new Object[]{model.getName(), model.getParentId(), model.getNamesimple(), model.getRemark(), model.getOrderNum(), model.getCreateBy(), model.getCreateTime(), model.getLastUpdateBy(), model.getLastUpdateTime(), model.getDelFlag(), model.getLogo(), model.getId()};
-
-        return jdbcTemplate.update(sql, params);
-    }
-
-    @Override
-    public Integer updateSelective(EsmInsCompany model) {
-
-        StringBuffer sbSql = new StringBuffer();
-        StringBuffer sbParams = new StringBuffer();
-        ArrayList<Object> alParamsValues = new ArrayList<Object>();
-
-        String pre = "";
-        String preWhere = "";
-
-        if (model.getName() != null) {
-            sbSql.append(pre + "name=?");
-            alParamsValues.add(model.getName());
-            pre = ",";
-        }
-        if (model.getParentId() != null) {
-            sbSql.append(pre + "parent_id=?");
-            alParamsValues.add(model.getParentId());
-            pre = ",";
-        }
-        if (model.getNamesimple() != null) {
-            sbSql.append(pre + "namesimple=?");
-            alParamsValues.add(model.getNamesimple());
-            pre = ",";
-        }
-        if (model.getRemark() != null) {
-            sbSql.append(pre + "remark=?");
-            alParamsValues.add(model.getRemark());
-            pre = ",";
-        }
-        if (model.getOrderNum() != null) {
-            sbSql.append(pre + "order_num=?");
-            alParamsValues.add(model.getOrderNum());
-            pre = ",";
-        }
-        if (model.getCreateBy() != null) {
-            sbSql.append(pre + "create_by=?");
-            alParamsValues.add(model.getCreateBy());
-            pre = ",";
-        }
-        if (model.getCreateTime() != null) {
-            sbSql.append(pre + "create_time=?");
-            alParamsValues.add(model.getCreateTime());
-            pre = ",";
-        }
-        if (model.getLastUpdateBy() != null) {
-            sbSql.append(pre + "last_update_by=?");
-            alParamsValues.add(model.getLastUpdateBy());
-            pre = ",";
-        }
-        if (model.getLastUpdateTime() != null) {
-            sbSql.append(pre + "last_update_time=?");
-            alParamsValues.add(model.getLastUpdateTime());
-            pre = ",";
-        }
-        if (model.getDelFlag() != null) {
-            sbSql.append(pre + "del_flag=?");
-            alParamsValues.add(model.getDelFlag());
-            pre = ",";
-        }
-        if (model.getLogo() != null) {
-            sbSql.append(pre + "logo=?");
-            alParamsValues.add(model.getLogo());
-            pre = ",";
-        }
-        if (model.getId() != null) {
-            sbParams.append(preWhere + "id=?");
-            alParamsValues.add(model.getId());
-            preWhere = ",";
-        }
-
-
-        if (!sbSql.toString().equalsIgnoreCase("")) {
-            String sql = "update esm_ins_company set " + sbSql.toString() + " where " + sbParams.toString();
-
-            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-            Object[] params = alParamsValues.toArray();
-
-            return jdbcTemplate.update(sql, params);
-        }
-
-        return 0;
-    }
-
-    @Override
-    public Integer delete(String id) {
-
-        String sql = "delete from esm_ins_company where id=?";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        return jdbcTemplate.update(sql, id);
-    }
-
-    @Override
-    public Integer delete(List<String> idList) {
-        String sql = "delete from esm_ins_company where id=?";
-
-        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
-
-        return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
-            @Override
-            public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
-                preparedStatement.setString(1, idList.get(i));
-            }
-
-            @Override
-            public int getBatchSize() {
-                return idList.size();
-            }
-        }).length;
-    }
-}
-
-
-
+//package com.ydtech.modules.esm.dao.impl;
+//
+//
+//import com.github.drinkjava2.jdialects.Dialect;
+//import com.ydtech.core.page.PageResult;
+//import com.ydtech.modules.esm.dao.EsmInsCompanyDao;
+//import com.ydtech.modules.esm.model.EsmInsCompany;
+//import net.bytebuddy.implementation.bind.ArgumentTypeResolver;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.jdbc.core.BatchPreparedStatementSetter;
+//import org.springframework.jdbc.core.JdbcTemplate;
+//import org.springframework.jdbc.core.PreparedStatementCreator;
+//import org.springframework.jdbc.core.RowMapper;
+//import org.springframework.jdbc.support.GeneratedKeyHolder;
+//import org.springframework.jdbc.support.KeyHolder;
+//import org.springframework.stereotype.Repository;
+//
+//import javax.sql.DataSource;
+//import java.sql.Connection;
+//import java.sql.PreparedStatement;
+//import java.sql.ResultSet;
+//import java.sql.SQLException;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+//
+//@Repository
+//public class EsmInsCompanyDaoImpl implements EsmInsCompanyDao {
+//
+//    @Autowired
+//    public DataSource dataSource;
+//
+//    public static class EsmInsCompanyRowMapper implements RowMapper {
+//        public EsmInsCompany mapRow(ResultSet resultSet, int rowNum) throws SQLException {
+//            EsmInsCompany model = new EsmInsCompany();
+//
+//            model.setId(resultSet.getString("id"));
+//            model.setName(resultSet.getString("name"));
+//            model.setParentId(resultSet.getString("parent_id"));
+//            model.setNamesimple(resultSet.getString("namesimple"));
+//            model.setRemark(resultSet.getString("remark"));
+//            model.setOrderNum(resultSet.getInt("order_num"));
+//            model.setCreateBy(resultSet.getString("create_by"));
+//            model.setCreateTime(resultSet.getDate("create_time"));
+//            model.setLastUpdateBy(resultSet.getString("last_update_by"));
+//            model.setLastUpdateTime(resultSet.getDate("last_update_time"));
+//            model.setLogo(resultSet.getString("logo"));
+//            return model;
+//        }
+//    }
+//
+//    @Override
+//    public EsmInsCompany selectByPk(String id) {
+//        String sql = "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, t.logo from esm_ins_company t  where id=?";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        return (EsmInsCompany) jdbcTemplate.queryForObject(sql,
+//                new Object[]{id}, new EsmInsCompanyRowMapper());
+//    }
+//
+//    @Override
+//    public List<EsmInsCompany> selectAll() {
+//        String sql = "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, '' logo from esm_ins_company t  ";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        return jdbcTemplate.query(sql, new EsmInsCompanyRowMapper());
+//    }
+//
+//    public List<EsmInsCompany> selectList(String whereCase, Object[] paramValues) {
+//        String sql = "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, '' logo from esm_ins_company t  " + whereCase;
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        return jdbcTemplate.query(sql, paramValues, new EsmInsCompanyRowMapper());
+//    }
+//
+//    public Integer count(String whereCase, Object[] paramValues) {
+//        String sql = "select count(1) from esm_ins_company t " + whereCase;
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        return jdbcTemplate.queryForObject(sql, paramValues, Integer.class);
+//    }
+//
+//    public PageResult selectPaging(int pageNumber, int pageSize, String whereCase, Object[] paramValues) {
+//
+//        Dialect dialect = Dialect.guessDialect(dataSource);
+//        String sql = dialect.pagin(pageNumber, pageSize, "select t.id, t.name, t.parent_id, t.namesimple, t.remark, t.order_num, t.create_by, t.create_time, t.last_update_by, t.last_update_time, t.del_flag, '' logo from esm_ins_company t  " + whereCase);
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//        List<EsmInsCompany> recordList = jdbcTemplate.query(sql, paramValues, new EsmInsCompanyRowMapper());
+//
+//        int totalCount = count(whereCase, paramValues);
+//
+//        PageResult PageResult = new PageResult(pageNumber, pageSize, totalCount, recordList);
+//
+//        return PageResult;
+//    }
+//
+//
+//    @Override
+//    public Integer insert(EsmInsCompany model) {
+//
+//        String sql = "insert into esm_ins_company ( id, name, parent_id, namesimple, remark, order_num, create_by, create_time, last_update_by, last_update_time, del_flag, logo) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        Object[] params = new Object[]{model.getId(), model.getName(), model.getParentId(), model.getNamesimple(), model.getRemark(), model.getOrderNum(), model.getCreateBy(), model.getCreateTime(), model.getLastUpdateBy(), model.getLastUpdateTime(), model.getDelFlag(), model.getLogo()};
+//
+//        int out = jdbcTemplate.update(sql, params);
+//
+//        return out;
+//    }
+//
+//    @Override
+//    public Integer insertReturnPk(EsmInsCompany model) {
+//
+//        String sql = "insert into esm_ins_company ( id, name, parent_id, namesimple, remark, order_num, create_by, create_time, last_update_by, last_update_time, del_flag, logo) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        KeyHolder keyHolder = new GeneratedKeyHolder();
+//        jdbcTemplate.update(new PreparedStatementCreator() {
+//            @Override
+//            public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {
+//                PreparedStatement ps = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
+//                ps.setObject(1, model.getId());
+//                ps.setObject(2, model.getName());
+//                ps.setObject(3, model.getParentId());
+//                ps.setObject(4, model.getNamesimple());
+//                ps.setObject(5, model.getRemark());
+//                ps.setObject(6, model.getOrderNum());
+//                ps.setObject(7, model.getCreateBy());
+//                ps.setObject(8, model.getCreateTime());
+//                ps.setObject(9, model.getLastUpdateBy());
+//                ps.setObject(10, model.getLastUpdateTime());
+//                ps.setObject(11, model.getDelFlag());
+//                ps.setObject(12, model.getLogo());
+//                return ps;
+//            }
+//        }, keyHolder);
+//
+//        return keyHolder.getKey().intValue();
+//    }
+//
+//
+//    @Override
+//    public Integer insertSelective(EsmInsCompany model) {
+//
+//        StringBuffer sbSql = new StringBuffer();
+//        StringBuffer sbParams = new StringBuffer();
+//        ArrayList<Object> alParamsValues = new ArrayList<Object>();
+//
+//        String pre = "";
+//
+//        if (model.getId() != null) {
+//            sbSql.append(pre + "id");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getId());
+//            pre = ",";
+//        }
+//        if (model.getName() != null) {
+//            sbSql.append(pre + "name");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getName());
+//            pre = ",";
+//        }
+//        if (model.getParentId() != null) {
+//            sbSql.append(pre + "parent_id");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getParentId());
+//            pre = ",";
+//        }
+//        if (model.getNamesimple() != null) {
+//            sbSql.append(pre + "namesimple");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getNamesimple());
+//            pre = ",";
+//        }
+//        if (model.getRemark() != null) {
+//            sbSql.append(pre + "remark");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getRemark());
+//            pre = ",";
+//        }
+//        if (model.getOrderNum() != null) {
+//            sbSql.append(pre + "order_num");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getOrderNum());
+//            pre = ",";
+//        }
+//        if (model.getCreateBy() != null) {
+//            sbSql.append(pre + "create_by");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getCreateBy());
+//            pre = ",";
+//        }
+//        if (model.getCreateTime() != null) {
+//            sbSql.append(pre + "create_time");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getCreateTime());
+//            pre = ",";
+//        }
+//        if (model.getLastUpdateBy() != null) {
+//            sbSql.append(pre + "last_update_by");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getLastUpdateBy());
+//            pre = ",";
+//        }
+//        if (model.getLastUpdateTime() != null) {
+//            sbSql.append(pre + "last_update_time");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getLastUpdateTime());
+//            pre = ",";
+//        }
+//        if (model.getDelFlag() != null) {
+//            sbSql.append(pre + "del_flag");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getDelFlag());
+//            pre = ",";
+//        }
+//        if (model.getLogo() != null) {
+//            sbSql.append(pre + "logo");
+//            sbParams.append(pre + "?");
+//            alParamsValues.add(model.getLogo());
+//            pre = ",";
+//        }
+//
+//        String sql = "INSERT INTO esm_ins_company (" + sbSql.toString() + ") VALUES (" + sbParams.toString() + ")";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        Object[] params = alParamsValues.toArray();
+//
+//        int out = jdbcTemplate.update(sql, params);
+//
+//        return out;
+//    }
+//
+//    @Override
+//    public Integer update(EsmInsCompany model) {
+//
+//        String sql = "update esm_ins_company set name=?, parent_id=?, namesimple=?, remark=?, order_num=?, create_by=?, create_time=?, last_update_by=?, last_update_time=?, del_flag=?, logo=? where id=?";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        Object[] params = new Object[]{model.getName(), model.getParentId(), model.getNamesimple(), model.getRemark(), model.getOrderNum(), model.getCreateBy(), model.getCreateTime(), model.getLastUpdateBy(), model.getLastUpdateTime(), model.getDelFlag(), model.getLogo(), model.getId()};
+//
+//        return jdbcTemplate.update(sql, params);
+//    }
+//
+//    @Override
+//    public Integer updateSelective(EsmInsCompany model) {
+//
+//        StringBuffer sbSql = new StringBuffer();
+//        StringBuffer sbParams = new StringBuffer();
+//        ArrayList<Object> alParamsValues = new ArrayList<Object>();
+//
+//        String pre = "";
+//        String preWhere = "";
+//
+//        if (model.getName() != null) {
+//            sbSql.append(pre + "name=?");
+//            alParamsValues.add(model.getName());
+//            pre = ",";
+//        }
+//        if (model.getParentId() != null) {
+//            sbSql.append(pre + "parent_id=?");
+//            alParamsValues.add(model.getParentId());
+//            pre = ",";
+//        }
+//        if (model.getNamesimple() != null) {
+//            sbSql.append(pre + "namesimple=?");
+//            alParamsValues.add(model.getNamesimple());
+//            pre = ",";
+//        }
+//        if (model.getRemark() != null) {
+//            sbSql.append(pre + "remark=?");
+//            alParamsValues.add(model.getRemark());
+//            pre = ",";
+//        }
+//        if (model.getOrderNum() != null) {
+//            sbSql.append(pre + "order_num=?");
+//            alParamsValues.add(model.getOrderNum());
+//            pre = ",";
+//        }
+//        if (model.getCreateBy() != null) {
+//            sbSql.append(pre + "create_by=?");
+//            alParamsValues.add(model.getCreateBy());
+//            pre = ",";
+//        }
+//        if (model.getCreateTime() != null) {
+//            sbSql.append(pre + "create_time=?");
+//            alParamsValues.add(model.getCreateTime());
+//            pre = ",";
+//        }
+//        if (model.getLastUpdateBy() != null) {
+//            sbSql.append(pre + "last_update_by=?");
+//            alParamsValues.add(model.getLastUpdateBy());
+//            pre = ",";
+//        }
+//        if (model.getLastUpdateTime() != null) {
+//            sbSql.append(pre + "last_update_time=?");
+//            alParamsValues.add(model.getLastUpdateTime());
+//            pre = ",";
+//        }
+//        if (model.getDelFlag() != null) {
+//            sbSql.append(pre + "del_flag=?");
+//            alParamsValues.add(model.getDelFlag());
+//            pre = ",";
+//        }
+//        if (model.getLogo() != null) {
+//            sbSql.append(pre + "logo=?");
+//            alParamsValues.add(model.getLogo());
+//            pre = ",";
+//        }
+//        if (model.getId() != null) {
+//            sbParams.append(preWhere + "id=?");
+//            alParamsValues.add(model.getId());
+//            preWhere = ",";
+//        }
+//
+//
+//        if (!sbSql.toString().equalsIgnoreCase("")) {
+//            String sql = "update esm_ins_company set " + sbSql.toString() + " where " + sbParams.toString();
+//
+//            JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//            Object[] params = alParamsValues.toArray();
+//
+//            return jdbcTemplate.update(sql, params);
+//        }
+//
+//        return 0;
+//    }
+//
+//    @Override
+//    public Integer delete(String id) {
+//
+//        String sql = "delete from esm_ins_company where id=?";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        return jdbcTemplate.update(sql, id);
+//    }
+//
+//    @Override
+//    public Integer delete(List<String> idList) {
+//        String sql = "delete from esm_ins_company where id=?";
+//
+//        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
+//
+//        return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
+//            @Override
+//            public void setValues(PreparedStatement preparedStatement, int i) throws SQLException {
+//                preparedStatement.setString(1, idList.get(i));
+//            }
+//
+//            @Override
+//            public int getBatchSize() {
+//                return idList.size();
+//            }
+//        }).length;
+//    }
+//}
+//
+//
+//

+ 13 - 17
src/main/java/com/ydtech/modules/esm/model/EsmInsCompany.java

@@ -59,9 +59,9 @@ public class EsmInsCompany implements Serializable {
     @ApiModelProperty(value = "更新时间")
     private Date lastUpdateTime;
 
-    @TableField(value = "del_flag")
-    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
-    private Integer delFlag;
+//    @TableField(value = "del_flag")
+//    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
+//    private Integer delFlag;
 
     @TableField(value = "logo")
     @ApiModelProperty(value = "公司logo")
@@ -73,26 +73,22 @@ public class EsmInsCompany implements Serializable {
      * @author: lig
      * @date: 2023年03月14日 0014
      */
-    @TableField(value = "open_quote")
-    @ApiModelProperty(value = "开启报价   0不开启  1开启")
-    private Integer openQuote;
+//    @TableField(value = "open_quote")
+//    @ApiModelProperty(value = "开启报价   0不开启  1开启")
+//    private Integer openQuote;
 
     @TableField(value = "cn_name")
     @ApiModelProperty(value = "拼音")
     private String cnName;
 
-//    @TableField(value = "code")
-//    @ApiModelProperty(value = "编码")
-//    private String code;
-
-//    @TableField(value = "type")
-//    @ApiModelProperty(value = "保司类型(1 - 财险、2 - 寿险、0 - 渠道)")
-//    @NotNull(message = "保司类型不能为空!")
-//    private String type;
-
-
-
+    @TableField(value = "code")
+    @ApiModelProperty(value = "编码")
+    private String code;
 
+    @TableField(value = "type")
+    @ApiModelProperty(value = "保司类型(1 - 财险、2 - 寿险、0 - 渠道)")
+    @NotNull(message = "保司类型不能为空!")
+    private String type;
 
     @ApiModelProperty(value = "子集")
     @TableField(exist = false)

+ 2 - 5
src/main/java/com/ydtech/modules/esm/model/vo/req/EsmInsCompanyReq.java

@@ -5,8 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
 
 @Data
 @ApiModel(value = "保险公司")
@@ -17,9 +15,8 @@ public class EsmInsCompanyReq implements Serializable {
     @ApiModelProperty(value = "名称")
     private String name;
 
-//    @ApiModelProperty(value = "父编号")
-//    private String parentId;
-
+    @ApiModelProperty(value = "供应商类型")
+    private String type;
 
 }
 

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

@@ -30,17 +30,17 @@ public class EsmInsCompanyResVo implements Serializable {
     @ApiModelProperty(value = "排序")
     private Integer orderNum;
 
-    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
-    private Integer delFlag;
-
-    /**
-     * 开启报价   0不开启  1开启
-     *
-     * @author: lig
-     * @date: 2023年03月14日 0014
-     */
-    @ApiModelProperty(value = "开启报价   0不开启  1开启")
-    private Integer openQuote;
+//    @ApiModelProperty(value = "是否删除  -1:已删除  0:正常")
+//    private Integer delFlag;
+//
+//    /**
+//     * 开启报价   0不开启  1开启
+//     *
+//     * @author: lig
+//     * @date: 2023年03月14日 0014
+//     */
+//    @ApiModelProperty(value = "开启报价   0不开启  1开启")
+//    private Integer openQuote;
 
     @ApiModelProperty(value = "拼音")
     private String cnName;

+ 30 - 7
src/main/java/com/ydtech/modules/esm/service/EsmInsCompanyService.java

@@ -17,20 +17,43 @@ public interface EsmInsCompanyService extends IService<EsmInsCompany> {
 //     */
 //    void allowQuote(EsmInsCompany record, List<String> ids);
 
-    /**
-     * 判断保险公司是否开启
-     *
-     * @param companyId 保险公司id
-     * @return
-     */
-    EsmInsCompany isOpen(String companyId);
+//    /**
+//     * 判断保险公司是否开启
+//     *
+//     * @param companyId 保险公司id
+//     * @return
+//     */
+//    EsmInsCompany isOpen(String companyId);
 
 
     List<EsmInsCompany> findTree(EsmInsCompanyReq req);
 
+    /**
+     * 验证保险公司是否存在
+     * @param companyId
+     * @return
+     */
     EsmInsCompany isExists(String companyId);
 
     EsmInsCompany findInsCompanyByName(String companyName);
+
+    /**
+     * 通过子公司id获取保险公司
+     *
+     * @param subsidiaryId 子公司
+     * @return EsmInsCompany
+     */
+    EsmInsCompany getBySubsidiary(String subsidiaryId);
+
+    /**
+     * 通过保险公司id查询下级id及本级id;
+     *
+     * @param companyId 下级id
+     * @return List<String>
+     */
+    List<String> getByLowerId(String companyId);
+
+
 }
 
 

+ 42 - 31
src/main/java/com/ydtech/modules/esm/service/impl/EsmInsCompanyServiceImpl.java

@@ -3,14 +3,13 @@ package com.ydtech.modules.esm.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ydtech.exception.SystemException;
 import com.ydtech.modules.esm.dao.EsmInsCompanyMapper;
 import com.ydtech.modules.esm.model.EsmInsCompany;
-import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.esm.model.vo.req.EsmInsCompanyReq;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.StringUtils;
 import org.springframework.stereotype.Service;
-import org.springframework.util.ObjectUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -21,42 +20,39 @@ import java.util.concurrent.atomic.AtomicBoolean;
 public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, EsmInsCompany>
         implements EsmInsCompanyService {
 
-    @Override
-    public EsmInsCompany isOpen(String company) {
-        LambdaQueryWrapper<EsmInsCompany> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(EsmInsCompany::getId, company)
-                .eq(EsmInsCompany::getDelFlag, "0")
-                .eq(EsmInsCompany::getOpenQuote, "1");
-        EsmInsCompany esmInsCompanies = baseMapper.selectOne(wrapper);
-        if (ObjectUtils.isEmpty(esmInsCompanies)) {
-            throw new SystemException("报价公司未开启, 请联系团队长配置。");
-        }
-        return esmInsCompanies;
-    }
+//    @Override
+//    public EsmInsCompany isOpen(String company) {
+//        LambdaQueryWrapper<EsmInsCompany> wrapper = new LambdaQueryWrapper<>();
+//        wrapper.eq(EsmInsCompany::getId, company)
+//                .eq(EsmInsCompany::getDelFlag, "0")
+//                .eq(EsmInsCompany::getOpenQuote, "1");
+//        EsmInsCompany esmInsCompanies = baseMapper.selectOne(wrapper);
+//        if (ObjectUtils.isEmpty(esmInsCompanies)) {
+//            throw new SystemException("报价公司未开启, 请联系团队长配置。");
+//        }
+//        return esmInsCompanies;
+//    }
 
     @Override
     public List<EsmInsCompany> findTree(EsmInsCompanyReq req) {
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper();
-        lqw.eq(EsmInsCompany::getDelFlag, 0);
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
         if (null != req) {
             lqw.like(StringUtils.isNotEmpty(req.getName()), EsmInsCompany::getName, req.getName());
+            lqw.eq(StringUtils.isNotEmpty(req.getType()), EsmInsCompany::getType, req.getType());
 //            lqw.like(StringUtils.isNotEmpty(req.getParentId()), EsmInsCompany::getParentId, req.getParentId());
         }
 
         List<EsmInsCompany> list = new ArrayList<>();
         List<EsmInsCompany> allList = list(lqw);
 
-        allList.stream().forEach(r -> {
-            if (StringUtils.isNullOrEmpty(r.getParentId()) || r.getParentId().equalsIgnoreCase("0")) {
-                if (!exists(list, r)) {
-                    r.setLogo("");
-                    list.add(r);
-                }
-            }
+        allList.forEach(r -> {
+            if (StringUtils.isNullOrEmpty(r.getParentId()) || r.getParentId().equalsIgnoreCase("0") && (!exists(list, r))) {
+                r.setLogo("");
+                list.add(r);
 
+            }
         });
 
-
         findChildren(list, allList);
         return list;
     }
@@ -65,18 +61,16 @@ public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, E
     @Override
     public EsmInsCompany isExists(String companyId) {
         EsmInsCompany esmInsCompany = baseMapper.selectById(companyId);
-        if (ObjectUtils.isEmpty(esmInsCompany)) {
-            throw new SystemException("保险公司不存在");
-        }
+        AssertionUtils.isEmpty(esmInsCompany, "保险公司不存在");
         return esmInsCompany;
     }
 
     @Override
     public EsmInsCompany findInsCompanyByName(String companyName) {
-        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper();
-        lqw.eq(EsmInsCompany::getName,companyName);
+        LambdaQueryWrapper<EsmInsCompany> lqw = new LambdaQueryWrapper<>();
+        lqw.eq(EsmInsCompany::getName, companyName);
         List<EsmInsCompany> list = list(lqw);
-        if(null != list && list.size()>0){
+        if (null != list && !list.isEmpty()) {
             return list.get(0);
         }
         return null;
@@ -111,6 +105,23 @@ public class EsmInsCompanyServiceImpl extends ServiceImpl<EsmInsCompanyMapper, E
 
         return exist.get();
     }
+
+
+    @Override
+    public EsmInsCompany getBySubsidiary(String subsidiaryId) {
+        String code = "000000";
+        String substring = subsidiaryId.substring(0, 5);
+        String companyId = substring + code;
+        EsmInsCompany esmInsCompany = getById(companyId);
+        AssertionUtils.isEmpty(esmInsCompany, "保险公司不存在");
+        return esmInsCompany;
+    }
+
+
+    @Override
+    public List<String> getByLowerId(String companyId) {
+        return baseMapper.getByLowerId(companyId);
+    }
 }
 
 

+ 0 - 10
src/main/java/com/ydtech/modules/ins/controller/InsApiLogController.java

@@ -2,25 +2,15 @@ package com.ydtech.modules.ins.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ydtech.core.page.HttpResult;
-import com.ydtech.modules.esm.model.InsTaskImage;
 import com.ydtech.modules.ins.dao.InsApiLogDao;
 import com.ydtech.modules.ins.model.InsApiLog;
-import com.ydtech.modules.ins.model.InsOrder;
-import com.ydtech.modules.ins.model.ya.CarModel_Req;
-import com.ydtech.modules.order.components.InsOrdersComponents;
-import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
-import com.ydtech.utils.Base64Utils;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 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 java.util.Arrays;
 import java.util.List;
 
 /**

+ 1 - 1
src/main/java/com/ydtech/modules/order/service/InsCrawlerOrderService.java

@@ -30,6 +30,6 @@ public interface InsCrawlerOrderService extends BaseOrderService<Object> {
      * @param insCompanyName 保险公司名称
      * @return 是否成功登陆
      */
-    boolean isLogin(PtlAgreementAttributionDto attribution, String insCompanyName);
+    void isLogin(PtlAgreementAttributionDto attribution, String insCompanyName);
 
 }

+ 4 - 2
src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java

@@ -26,6 +26,7 @@ import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.service.PtlCrawlerApiService;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.springframework.beans.BeanUtils;
@@ -61,11 +62,12 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
 
 
     @Override
-    public boolean isLogin(PtlAgreementAttributionDto attribution, String insCompanyName) {
+    public void isLogin(PtlAgreementAttributionDto attribution, String insCompanyName) {
         String apiUrl = ptlCrawlerApiService.getByTemplateId(attribution.getTemplateId(), PtlCrawlerApiType.API_1);
         CrawlerLoginRequest crawlerLoginRequest = new CrawlerLoginRequest(attribution);
         CrawlerBaseResponse response = insCrawlerOrderComponents.request(apiUrl, insCompanyName, PtlCrawlerApiType.API_2.getDesc(), crawlerLoginRequest, CrawlerBaseResponse.class);
-        return response.getCode() == 200;
+
+        AssertionUtils.isSucceed(response.getCode() == 200, insCompanyName + "登录用户名和密码不正确");
     }
 
     @Override

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

@@ -98,10 +98,10 @@ public class ZhongMeiOrderServiceImpl implements ZhongMeiOrderService {
 
     @Override
     public HttpResult quote(BaseQuoteInfoVo quoteInfoVo, BaseQuoteVo<AccidentalDrivingVo> quoteVo) {
-        EsmInsCompany esmInsCompany = esmInsCompanyService.isOpen(quoteVo.getCompanyId());
         SysUser sysUser = sysUserService.getById(new BaseController().getUserId());
         // 保险公司是否授权
         EsmInsAttribution esmInsAttribution = esmInsAttributionService.gainAuthorizeAffiliation(sysUser, quoteVo.getCompanyId());
+        EsmInsCompany esmInsCompany = esmInsCompanyService.getById(quoteVo.getCompanyId());
         if (ObjectUtils.isEmpty(esmInsAttribution)) {
             throw new SystemException("报价未授权,请联系团队长配置。");
         }

+ 2 - 11
src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java

@@ -29,11 +29,10 @@ public class PtlAgreementController extends BaseController {
 
     private final PtlAgreementService ptlAgreementService;
 
-    private final InsCrawlerOrderService insCrawlerOrderController;
 
-    public PtlAgreementController(PtlAgreementService ptlAgreementService, InsCrawlerOrderService insCrawlerOrderController) {
+    public PtlAgreementController(PtlAgreementService ptlAgreementService) {
         this.ptlAgreementService = ptlAgreementService;
-        this.insCrawlerOrderController = insCrawlerOrderController;
+
     }
 
     @PostMapping("/page")
@@ -46,14 +45,6 @@ public class PtlAgreementController extends BaseController {
     @ApiOperation("添加协议")
     public HttpResult<Object> save(@RequestBody PtlAgreementSaveVo agreement) {
         String userName = getUserName();
-
-        // 验证用户名密码 python api 对接需要验证用户名
-        if (PtlApiType.PTL_API_2.getCode() == agreement.getAttribution().getApiType()) {
-            String insuranceCompany = agreement.getAgreement().getInsuranceCompany();
-            boolean login = insCrawlerOrderController.isLogin(agreement.getAttribution(), insuranceCompany);
-            AssertionUtils.isSucceed(login, insuranceCompany + "登录用户名和密码不正确");
-        }
-
         return ptlAgreementService.saveAgreement(agreement, userName);
     }
 

+ 6 - 3
src/main/java/com/ydtech/modules/protocol/entity/dto/PtlAgreementProductCostsBaseDto.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.protocol.entity.dto;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementProductCosts;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -7,7 +8,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.time.LocalDate;
+import java.time.LocalDateTime;
 
 @Data
 @AllArgsConstructor
@@ -26,10 +27,12 @@ public class PtlAgreementProductCostsBaseDto implements Serializable {
     private String costsLevel;
 
     @ApiModelProperty("费用起期")
-    private LocalDate costsStartDate;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime costsStartDate;
 
     @ApiModelProperty("费用止期")
-    private LocalDate costsEndDate;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime costsEndDate;
 
     @ApiModelProperty("溢出保费")
     private String spilloverPremiums;

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

@@ -17,20 +17,17 @@ public class PtlAgreementSaveDto implements Serializable {
     @ApiModelProperty("协议类型")
     private String agreementType;
 
-    @ApiModelProperty("协议代码")
-    private String agreementCode;
-
     @ApiModelProperty("协议名称")
     private String agreementName;
 
     @ApiModelProperty("协议简称")
     private String agreementAbbreviation;
 
-    @ApiModelProperty("保险公司")
-    private String insuranceCompany;
+    @ApiModelProperty("合作公司id")
+    private String partnerCompaniesId;
 
     @ApiModelProperty("保险公司id")
-    private String insuranceCompanyId;
+    private String associationCompaniesId;
 
     @ApiModelProperty("协议起期")
     private LocalDate startDate;
@@ -56,9 +53,6 @@ public class PtlAgreementSaveDto implements Serializable {
     @ApiModelProperty("佣金发放方式")
     private String moneyType;
 
-    @ApiModelProperty("合作渠道")
-    private String cooperationChannels;
-
     @ApiModelProperty("有效状态")
     private String validStatus;
 

+ 24 - 8
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreement.java

@@ -4,11 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.ydtech.modules.protocol.utils.AssertionUtils;
+import com.ydtech.utils.StringUtils;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 
 /**
  * 协议信息表
@@ -49,13 +53,25 @@ public class PtlAgreement implements Serializable {
     private String agreementAbbreviation;
 
     /**
-     * 合作公司
+     * 合作公司 id
+     */
+    @TableField(value = "partner_companies_id")
+    private String partnerCompaniesId;
+
+    /**
+     * 保险公司id
+     */
+    @TableField(value = "association_companies_id")
+    private String associationCompaniesId;
+
+    /**
+     * 关联-保险公司
      */
     @TableField(value = "insurance_company")
     private String insuranceCompany;
 
     /**
-     * 合作公司
+     * 关联-保险公司id
      */
     @TableField(value = "insurance_company_id")
     private String insuranceCompanyId;
@@ -108,12 +124,6 @@ public class PtlAgreement implements Serializable {
     @TableField(value = "money_type")
     private String moneyType;
 
-    /**
-     * 合作渠道
-     */
-    @TableField(value = "cooperation_channels")
-    private String cooperationChannels;
-
     /**
      * 有效状态
      */
@@ -165,4 +175,10 @@ public class PtlAgreement implements Serializable {
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 
+    public void generateTheProtocolCode() {
+        AssertionUtils.isFail(StringUtils.isNullOrEmpty(this.getPartnerCompaniesId()), "请检查合作保险公司是否选择");
+        String string = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE);
+        this.agreementCode = this.getPartnerCompaniesId() + string;
+    }
+
 }

+ 6 - 6
src/main/java/com/ydtech/modules/protocol/entity/po/PtlAgreementProductCosts.java

@@ -11,7 +11,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
-import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -77,13 +77,13 @@ public class PtlAgreementProductCosts implements Serializable {
      * 费用起期
      */
     @TableField(value = "costs_start_date")
-    private LocalDate costsStartDate;
+    private LocalDateTime costsStartDate;
 
     /**
      * 费用止期
      */
     @TableField(value = "costs_end_date")
-    private LocalDate costsEndDate;
+    private LocalDateTime costsEndDate;
 
     /**
      * 溢出保费
@@ -101,16 +101,16 @@ public class PtlAgreementProductCosts implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     * @param AgreementId                         协议id
+     * @param agreementId                         协议id
      * @param productId                           产品id
      * @param productName                         产品名称
      * @param ptlAgreementProductCostsSaveDtoList 协议费用 Dto list
      * @return List<PtlAgreementProductCosts>
      */
-    public static List<PtlAgreementProductCosts> toPtlAgreementProductCostsList(String AgreementId, String productId, String productName, List<PtlAgreementProductCostsSaveDto> ptlAgreementProductCostsSaveDtoList) {
+    public static List<PtlAgreementProductCosts> toPtlAgreementProductCostsList(String agreementId, String productId, String productName, List<PtlAgreementProductCostsSaveDto> ptlAgreementProductCostsSaveDtoList) {
         return ptlAgreementProductCostsSaveDtoList.stream().map(
                 ptlAgreementProductCostsSaveDto ->
-                        new PtlAgreementProductCosts(AgreementId, productId, productName, ptlAgreementProductCostsSaveDto)
+                        new PtlAgreementProductCosts(agreementId, productId, productName, ptlAgreementProductCostsSaveDto)
         ).collect(Collectors.toList());
     }
 

+ 2 - 2
src/main/java/com/ydtech/modules/protocol/entity/vo/PtlAgreementPageVo.java

@@ -22,8 +22,8 @@ public class PtlAgreementPageVo extends BasePageVO {
     @ApiModelProperty("录入时间 结束")
     private LocalDate endDate;
 
-    @ApiModelProperty("合作公司")
-    private String insuranceCompany;
+    @ApiModelProperty("合作公司id")
+    private String partnerCompaniesId;
 
     @ApiModelProperty("审核状态 0 申请审核 1 审核通过 2 审核不通过")
     private Integer auditStatus;

+ 12 - 1
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java

@@ -3,7 +3,10 @@ package com.ydtech.modules.protocol.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementAttributionDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
+import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementAuditVo;
 import com.ydtech.modules.protocol.entity.vo.PtlAgreementPageVo;
@@ -68,7 +71,6 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      */
     HttpResult<Object> deleteAgreement(String agreementId);
 
-
     /**
      * 修改协议
      *
@@ -102,4 +104,13 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      * @return
      */
     HttpResult<Object> auditAgreement(String agreementId, PtlAgreementAuditVo ptlAgreementAuditVo);
+
+    /**
+     * 校验登录
+     * @param ptlAgreement 协议信息
+     * @param agreementSaveDto 协议添加实体
+     * @param attribution 协议归属添加实体
+     */
+    EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto, PtlAgreementAttributionDto attribution);
+
 }

+ 56 - 9
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -3,14 +3,16 @@ package com.ydtech.modules.protocol.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.constants.enums.dict.agreement.AgreementType;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.esm.model.EsmInsCompany;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.order.service.InsCrawlerOrderService;
 import com.ydtech.modules.protocol.dao.PtlAgreementMapper;
-import com.ydtech.modules.protocol.entity.dto.PltAgreementSchemeQueryDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
-import com.ydtech.modules.protocol.entity.dto.PtlAgreementSaveDto;
+import com.ydtech.modules.protocol.entity.constants.PtlApiType;
+import com.ydtech.modules.protocol.entity.dto.*;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.entity.po.PtlAgreementDept;
@@ -50,13 +52,19 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
 
     private final PtlAgreementDeptService ptlAgreementDeptService;
 
+    private final EsmInsCompanyService esmInsCompanyService;
+
+    private final InsCrawlerOrderService insCrawlerOrderController;
+
     private PtlAgreementService proxyObject;
 
-    public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService, PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService, PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService) {
+    public PtlAgreementServiceImpl(PtlAgreementProductCostsService ptlAgreementProductCostsService, PtlAgreementUnderwritingRulesService ptlAgreementUnderwritingRulesService, PtlAgreementAttributionService ptlAgreementAttributionService, PtlAgreementDeptService ptlAgreementDeptService, EsmInsCompanyService esmInsCompanyService, InsCrawlerOrderService insCrawlerOrderController) {
         this.ptlAgreementProductCostsService = ptlAgreementProductCostsService;
         this.ptlAgreementUnderwritingRulesService = ptlAgreementUnderwritingRulesService;
         this.ptlAgreementAttributionService = ptlAgreementAttributionService;
         this.ptlAgreementDeptService = ptlAgreementDeptService;
+        this.esmInsCompanyService = esmInsCompanyService;
+        this.insCrawlerOrderController = insCrawlerOrderController;
     }
 
     @Override
@@ -95,13 +103,17 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     @Transactional
     public HttpResult<Object> saveAgreement(PtlAgreementSaveVo agreement, String userName) {
         PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
+        PtlAgreementAttributionDto attribution = agreement.getAttribution();
         PtlAgreement ptlAgreement = new PtlAgreement();
         BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
+
+        EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
+
         ptlAgreement.setCreator(userName);
         ptlAgreement.setCreateTime(LocalDateTime.now());
         save(ptlAgreement);
         // 产品费用
-        String insuranceCompanyId = ptlAgreement.getInsuranceCompanyId();
+        String insuranceCompanyId = esmInsCompany.getId();
         proxyObject.saveAssociationInformation(ptlAgreement.getId(), insuranceCompanyId, agreement);
         return HttpResult.ok("添加成功");
     }
@@ -112,10 +124,12 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         int pageSize = ptlAgreementPageVo.getPageSize();
         Page<PtlAgreement> ptlAgreementPage = new Page<>(pageNum, pageSize);
         LambdaQueryWrapper<PtlAgreement> wrapper = new LambdaQueryWrapper<>();
+        // 获取供应商本级id 及其 下级id
+        List<String> lowerId = esmInsCompanyService.getByLowerId(ptlAgreementPageVo.getPartnerCompaniesId());
         // 审核状态
         wrapper.eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getAuditStatus()), PtlAgreement::getAuditStatus, ptlAgreementPageVo.getAuditStatus())
-                // 保险公司
-                .eq(!ObjectUtils.isEmpty(ptlAgreementPageVo.getInsuranceCompany()), PtlAgreement::getInsuranceCompany, ptlAgreementPageVo.getInsuranceCompany())
+                // 合作公司
+                .in(!lowerId.isEmpty(), PtlAgreement::getPartnerCompaniesId, lowerId)
                 // 录入时间
                 .between(!ObjectUtils.isEmpty(ptlAgreementPageVo.getStartDate()) && ObjectUtils.isEmpty(ptlAgreementPageVo.getEndDate()), PtlAgreement::getCreateTime, ptlAgreementPageVo.getStartDate(), ptlAgreementPageVo.getEndDate());
         Page<PtlAgreement> agreementPage = page(ptlAgreementPage, wrapper);
@@ -153,8 +167,12 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     @Transactional
     public HttpResult<Object> reviseAgreement(String userName, String agreementId, PtlAgreementSaveVo agreement) {
         PtlAgreementSaveDto agreementSaveDto = agreement.getAgreement();
+        PtlAgreementAttributionDto attribution = agreement.getAttribution();
         PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
         BeanUtils.copyProperties(agreementSaveDto, ptlAgreement);
+
+        EsmInsCompany esmInsCompany = proxyObject.verifyLogin(ptlAgreement, agreementSaveDto, attribution);
+
         ptlAgreement.setModifiedBy(userName);
         ptlAgreement.setUpdateTime(LocalDateTime.now());
         // 修改协议
@@ -163,7 +181,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         // 关联表都是先删除后添加
         proxyObject.deleteAssociationInformation(agreementId);
 
-        String insuranceCompanyId = ptlAgreement.getInsuranceCompanyId();
+        String insuranceCompanyId = esmInsCompany.getId();
         proxyObject.saveAssociationInformation(agreementId, insuranceCompanyId, agreement);
         return HttpResult.ok("修改成功");
     }
@@ -193,6 +211,34 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         ptlAgreementDeptService.deleteByAgreementId(agreementId);
     }
 
+    @Override
+    public EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto, PtlAgreementAttributionDto attribution){
+        EsmInsCompany esmInsCompany;
+
+        // 获取保险公司
+        if (AgreementType.AT2.getCode().equals(agreementSaveDto.getAgreementType())) {
+            String message = String.format("协议为 %s 保险公司必须传入", AgreementType.AT2.getDesc());
+            AssertionUtils.isStringEmpty(agreementSaveDto.getAssociationCompaniesId(), message);
+            esmInsCompany = esmInsCompanyService.isExists(agreementSaveDto.getAssociationCompaniesId());
+        } else {
+            esmInsCompany = esmInsCompanyService.getBySubsidiary(agreementSaveDto.getPartnerCompaniesId());
+        }
+
+        // 验证用户名密码 python api 对接需要验证用户名
+        if (PtlApiType.PTL_API_2.getCode() == attribution.getApiType()) {
+            String nameSimple = esmInsCompany.getNamesimple();
+            insCrawlerOrderController.isLogin(attribution, nameSimple);
+        }
+
+        ptlAgreement.setInsuranceCompanyId(esmInsCompany.getId());
+        ptlAgreement.setInsuranceCompany(esmInsCompany.getNamesimple());
+        // 生成协议id
+        ptlAgreement.generateTheProtocolCode();
+        return esmInsCompany;
+    }
+
+
+
     @Override
     public HttpResult<Object> auditAgreement(String agreementId, PtlAgreementAuditVo ptlAgreementAuditVo) {
         PtlAgreement ptlAgreement = proxyObject.ifExistsById(agreementId);
@@ -204,4 +250,5 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         return HttpResult.ok("修改成功");
     }
 
+
 }

+ 5 - 1
src/main/java/com/ydtech/modules/protocol/service/impl/PtlInsAttributionTemplateServiceImpl.java

@@ -143,7 +143,11 @@ public class PtlInsAttributionTemplateServiceImpl extends ServiceImpl<PtlInsAttr
 
     @Override
     public HttpResult<PtlInsAttributionTemplate> getPtlInsAttributionTemplate(PtlInsAttributionTemplateVo ptlInsAttributionTemplateVo) {
-        LambdaQueryWrapper<PtlInsAttributionTemplate> wrapper = byInsCompanyIdAndApiType(ptlInsAttributionTemplateVo.getInsCompanyId(), ptlInsAttributionTemplateVo.getApiType());
+        String code = "000000";
+        String substring = ptlInsAttributionTemplateVo.getInsCompanyId().substring(0, 5);
+        String companyId = substring + code;
+
+        LambdaQueryWrapper<PtlInsAttributionTemplate> wrapper = byInsCompanyIdAndApiType(companyId, ptlInsAttributionTemplateVo.getApiType());
         PtlInsAttributionTemplate ptlInsAttributionTemplate = getOne(wrapper);
         AssertionUtils.isEmpty(ptlInsAttributionTemplate, "保险公司归属信息模板查询失败");
         return HttpResult.ok(ptlInsAttributionTemplate);

+ 2 - 2
src/main/java/com/ydtech/modules/protocol/utils/AssertionUtils.java

@@ -22,8 +22,8 @@ public class AssertionUtils {
         }
     }
 
-    public static void isSucceed(int b, String message) {
-        assertion(b <= 0, message);
+    public static void isFail(boolean b, String message) {
+        assertion(b, message);
     }
 
     public static void isSucceed(boolean b, String message) {

+ 1 - 1
src/main/java/com/ydtech/utils/MacUtils.java

@@ -31,7 +31,7 @@ public class MacUtils {
                 tmpMacList.add(sb.toString());
             }
         }
-        if (tmpMacList.size() <= 0) {
+        if (tmpMacList.isEmpty()) {
             return tmpMacList;
         }
         /***去重,别忘了同一个网卡的ipv4,ipv6得到的mac都是一样的,肯定有重复,下面这段代码是。。流式处理***/