Browse Source

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

Qchen 1 year ago
parent
commit
0f3d5f34dd
55 changed files with 1587 additions and 195 deletions
  1. 64 0
      src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusAllEnum.java
  2. 0 3
      src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusEnum.java
  3. 53 0
      src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java
  4. 0 3
      src/main/java/com/ydtech/modules/admin/controller/SysQyWeChatController.java
  5. 25 0
      src/main/java/com/ydtech/modules/admin/controller/kzt/KZTRoleController.java
  6. 96 0
      src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java
  7. 2 0
      src/main/java/com/ydtech/modules/admin/dao/SysUserRoleKztMapper.java
  8. 23 0
      src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDto.java
  9. 25 0
      src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDtoExcel.java
  10. 23 0
      src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDtoNew.java
  11. 33 0
      src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java
  12. 49 0
      src/main/java/com/ydtech/modules/admin/model/vo/AgencyLeaderInfo.java
  13. 5 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserRoleVo.java
  14. 3 0
      src/main/java/com/ydtech/modules/admin/model/vo/TaskStatisticsVo.java
  15. 5 3
      src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java
  16. 9 0
      src/main/java/com/ydtech/modules/admin/service/SysUserRoleKztService.java
  17. 26 0
      src/main/java/com/ydtech/modules/admin/service/TaskStatisticsService.java
  18. 90 16
      src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java
  19. 15 0
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserRoleKztServiceImpl.java
  20. 145 4
      src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java
  21. 28 19
      src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java
  22. 1 0
      src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java
  23. 1 0
      src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java
  24. 18 0
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  25. 3 0
      src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java
  26. 9 3
      src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java
  27. 1 1
      src/main/java/com/ydtech/modules/order/components/gouren/GuorenDuplicateInsuranceComponent.java
  28. 3 3
      src/main/java/com/ydtech/modules/order/components/zijin/ZijinRequestApiComponents.java
  29. 14 1
      src/main/java/com/ydtech/modules/order/constants/OrderFeeAuditHistroy.java
  30. 1 1
      src/main/java/com/ydtech/modules/order/controller/InsAreaCompanyController.java
  31. 25 19
      src/main/java/com/ydtech/modules/order/controller/QuoteController.java
  32. 31 1
      src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java
  33. 18 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  34. 10 0
      src/main/java/com/ydtech/modules/order/entity/InsOrders.java
  35. 8 0
      src/main/java/com/ydtech/modules/order/entity/InsOrdersTrack.java
  36. 18 0
      src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java
  37. 7 1
      src/main/java/com/ydtech/modules/order/service/InsuranceCompanyPolymerizationService.java
  38. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  39. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  40. 9 3
      src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java
  41. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java
  42. 37 12
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  43. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  44. 1 1
      src/main/java/com/ydtech/modules/order/service/impl/InsOrderQrCodeServiceImpl.java
  45. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  46. 56 7
      src/main/java/com/ydtech/modules/order/service/impl/InsSubOrderUpdateDetailServiceImpl.java
  47. 4 0
      src/main/java/com/ydtech/modules/order/service/impl/InsuranceCompanyPolymerizationServiceImpl.java
  48. 25 0
      src/main/java/com/ydtech/modules/order/service/impl/PingAnOrderApiServiceImpl.java
  49. 2 1
      src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java
  50. 9 8
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  51. 1 1
      src/main/java/com/ydtech/modules/xxl/service/impl/ZijinQueryStatusService.java
  52. 14 0
      src/main/resources/mapper/modules/admin/SysUserRoleKztMapper.xml
  53. 42 67
      src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml
  54. 452 10
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml
  55. 38 2
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 64 - 0
src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusAllEnum.java

@@ -0,0 +1,64 @@
+package com.ydtech.constants.enums.dict;
+
+import com.ydtech.aop.request.DictEnum;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Objects;
+
+
+@Getter
+@AllArgsConstructor
+@DictEnum(key = "insOrderStatusAll", desc = "保险订单所有状态")
+public enum InsOrderStatusAllEnum implements IBaseEnum {
+
+    //所有未提交核保的均为报价中(包括拒保订单 )
+    QUOTE_ING("0", "报价完成", 1, 0),
+
+    //已提交核保,并转人工核保状态
+    WAIT_AUDIT("1", "待核保", 2, 0),
+
+    //自动核保或者人工核保审核通过
+    WAIT_PAY("2", "已核保待缴费", 3, 0),
+
+    //客户缴费完成生成保单状态
+    ACCEPT_INSURANCE("3", "已承保", 4, 0),
+
+    //人工核保退回状态,直至再次提交核保,状态修改为待核保
+    TO_BACK("4", "核保退回", 6, 0),
+
+    UPDATE_BACK("状态更新", "状态更新", 7, 0),
+
+    WAIT_RG("人工核保", "人工核保", 8, 0),
+    WAIT_ZD("自动核保", "自动核保", 9, 0)
+
+    //撤回二维码
+//    BACK_QR_CODE("5", "撤销二维码", 7, 0),
+    ;
+
+
+    private final String code;
+
+    private final String desc;
+    //排序
+    private final Integer sort;
+    //状态  0 启用  1 不启用
+    private final Integer status;
+
+
+    public static InsOrderStatusAllEnum matchKey(String key) {
+        InsOrderStatusAllEnum result = null;
+        for (InsOrderStatusAllEnum e : values()) {
+            if (Objects.equals(e.getCode(), key)) {
+                result = e;
+                break;
+            }
+        }
+        return result;
+    }
+
+    public static String[] getRefuseUnderwriting() {
+        return new String[]{WAIT_AUDIT.getCode(), TO_BACK.getCode()};
+    }
+
+}

+ 0 - 3
src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusEnum.java

@@ -26,9 +26,6 @@ public enum InsOrderStatusEnum implements IBaseEnum {
 
     //人工核保退回状态,直至再次提交核保,状态修改为待核保
     TO_BACK("4", "核保退回", 6, 0),
-
-    UPDATE_BACK("状态更新", "状态更新", 7, 0)
-
     //撤回二维码
 //    BACK_QR_CODE("5", "撤销二维码", 7, 0),
     ;

+ 53 - 0
src/main/java/com/ydtech/modules/admin/controller/APPPartnerController.java

@@ -0,0 +1,53 @@
+package com.ydtech.modules.admin.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.SysPartner;
+import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
+import com.ydtech.modules.admin.service.SysPartnerService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Api(tags = "合伙人app")
+@RestController
+@RequestMapping("/APPPartner")
+public class APPPartnerController {
+
+    @Resource
+    private SysPartnerService sysPartnerService;
+
+
+    /**
+     * 合伙人推荐下的合伙人
+     */
+    @GetMapping("/info")
+    @ApiOperation(value = "APP合伙人推荐下的合伙人")
+    public HttpResult<List<SysPartner>> partnerInfo(@RequestParam("beginTime") String beginTime,
+                                                    @RequestParam("endTime") String endTime) {
+
+        return HttpResult.ok(this.sysPartnerService.partnerInfo(beginTime,endTime));
+    }
+
+    /**
+     * 合伙人信息包含下面所有工作室信息
+     */
+    @GetMapping("/getLeaderInfo")
+    @ApiOperation(value = "查询合伙人有关的工作室管理员")
+    public HttpResult<APPPartnerInfo> getLeaderInfo(@RequestParam("userId") String userId) {
+
+        return HttpResult.ok(this.sysPartnerService.getLeaderInfo(userId));
+    }
+
+
+    /**
+     * 根据id查询工作室信息包含西面所有成员
+     */
+
+
+
+
+
+}

+ 0 - 3
src/main/java/com/ydtech/modules/admin/controller/SysQyWeChatController.java

@@ -50,9 +50,6 @@ public class SysQyWeChatController {
     public HttpResult<SysQyWeChat> findWechatPicture() {
         String userId = BaseController.getUser().getId();
         SysUser user = sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, userId));
-        if (user.getLeaderId() == null) {
-            throw new SystemException("该员工领导人为空");
-        }
         SysQyWeChat sysQyWeChat = sysQyWeChatService.getOne(new LambdaQueryWrapper<SysQyWeChat>().eq(SysQyWeChat::getUserId, user.getLeaderId()));
         if (sysQyWeChat == null) {
             List<SysQyWeChat> list = sysQyWeChatService.list();

+ 25 - 0
src/main/java/com/ydtech/modules/admin/controller/kzt/KZTRoleController.java

@@ -202,6 +202,31 @@ public class KZTRoleController extends BaseController {
         return HttpResult.ok("保存成功");
     }
 
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/10/10
+     *  @Description:
+     */
+    @PostMapping(value = "/saveBatchUserRoleKzt")
+    @ApiOperation(value = "批量保存控制台用户角色信息")
+    public HttpResult saveBatchUserRoleKzt(@RequestBody SysUserRoleVo sysUserRoleVo) {
+        List<String> userIds = sysUserRoleVo.getUserIds();
+        String roleId = sysUserRoleVo.getRoleId();
+        if (userIds.isEmpty()) {
+            throw new SystemException("用戶id不能为空!!");
+        }
+        if (StringUtils.isBlank(roleId)) {
+            throw new SystemException("角色id不能为空!!");
+        }
+        try{
+            sysUserRoleKztService.saveBatchUserRoleKzt(userIds,roleId,"2");
+        }catch(Exception e){
+            return HttpResult.error("保存失败");
+        }
+        return HttpResult.ok("保存成功");
+    }
+
     /**
      *  @version
      *  @author: hxl

+ 96 - 0
src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java

@@ -4,6 +4,7 @@ package com.ydtech.modules.admin.controller.taskStatistics;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsDtoNew;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
@@ -58,6 +59,31 @@ public class TaskStatisticsController {
         }
     }
 
+    /**
+     * @description:   电销任务统计查询
+     * @author: whp
+     * @date: 2024/10/11
+     **/
+    @PostMapping("queryPageElectric")
+    @ApiOperation(value = "控制台-电销任务统计查询")
+    public HttpResult<IPage<TaskStatisticsDto>> queryPageElectric(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        try{
+            KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+            KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+            if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+                if("1".equals(kztGetDeptUtilsDto.getType())){
+                    taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+                } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                    taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+                }
+            }
+            IPage<TaskStatisticsDto> result = taskStatisticsService.queryPageElectric(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
     /**
      * @description:   保险公司统计查询
      * @author: whp
@@ -144,6 +170,76 @@ public class TaskStatisticsController {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+    /**
+     * @description:   财务中心-费用校验-明细
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    @PostMapping("costCenterDetails")
+    @ApiOperation(value = "控制台-财务中心-费用校验详情")
+    public HttpResult<IPage<TaskStatisticsDto>> costCenterDetails(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        try{
+            KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+            KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+            if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+                if("1".equals(kztGetDeptUtilsDto.getType())){
+                    taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+                } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                    taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+                }
+            }
+            IPage<TaskStatisticsDto> result = taskStatisticsService.costCenterDetails(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     * @description:   财务中心-费用校验-明细-查看
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    @PostMapping("costCenterDetailsLicense")
+    @ApiOperation(value = "控制台-财务中心-费用校验详情-查看")
+    public HttpResult<TaskStatisticsDtoNew> costCenterDetailsLicense(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        try{
+            KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+            KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+            if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+                if("1".equals(kztGetDeptUtilsDto.getType())){
+                    taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+                } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                    taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+                }
+            }
+            TaskStatisticsDtoNew result = taskStatisticsService.costCenterDetailsLicense(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    @PostMapping("/costCenterDetailsExcel")
+    @ApiOperation(value = "控制台-财务中心-费用校验详情-导出")
+    public HttpResult costCenterDetailsExcel(@RequestBody TaskStatisticsVo taskStatisticsVo, HttpServletRequest httpServerRequest) {
+        KztGetDeptUtils kztGetDeptUtils = new KztGetDeptUtils();
+        KztGetDeptUtilsDto kztGetDeptUtilsDto = kztGetDeptUtils.KztGetDeptIds(httpServerRequest.getRequestURL().toString());
+        if(ObjectUtils.isNotEmpty(kztGetDeptUtilsDto)){
+            if("1".equals(kztGetDeptUtilsDto.getType())){
+                taskStatisticsVo.setDeptIds(kztGetDeptUtilsDto.getIds());
+            } else if ("2".equals(kztGetDeptUtilsDto.getType())) {
+                taskStatisticsVo.setUserIds(kztGetDeptUtilsDto.getIds());
+            }
+        }
+        return this.taskStatisticsService.costCenterDetailsExcel(taskStatisticsVo);
+    }
+
 
     /**
      * @description:   财务中心-费用校验-合计

+ 2 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserRoleKztMapper.java

@@ -33,6 +33,8 @@ public interface SysUserRoleKztMapper extends BaseMapper<SysUserRoleKzt> {
     Page<SysUser> queryPageByParam(@Param("page") Page<SysUser> page,@Param("vo") KZTUserQueryDto kZTUserQueryDto);
 
     List<SysMenu> findMenuIdsByRoleId(Long roleId, String sysType);
+
+    void deleteBatcgByUserId(List<String> userIds, String number);
 }
 
 

+ 23 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDto.java

@@ -147,4 +147,27 @@ public class TaskStatisticsDto {
     @ApiModelProperty(value = "领导人电话")
     private String leaderMobile;
 
+
+    @ApiModelProperty(value = "审核人id")
+    private String audituser;
+
+    @ApiModelProperty(value = "审核人名称")
+    private String audituserName;
+
+    @ApiModelProperty(value = "审核人电话")
+    private String audituserMobile;
+
+    @ApiModelProperty(value = "创建时间")
+    private String createTime;
+
+    @ApiModelProperty(value = "审核时间")
+    private String audittime;
+
+    @ApiModelProperty(value = "车牌号")
+    private String licenseno;
+
+
+    @ApiModelProperty(value = "时间差")
+    private String timeDifference;
+
 }

+ 25 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDtoExcel.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class TaskStatisticsDtoExcel {
+    @ExcelProperty(value = "保险公司",index = 0)
+    private String insuranceCompanyName;
+
+    @ExcelProperty(value = "审核人工号",index = 1)
+    private String audituser;
+
+    @ExcelProperty(value = "审核人名称",index = 2)
+    private String audituserName;
+
+    @ExcelProperty(value = "审核人电话",index = 3)
+    private String audituserMobile;
+
+    @ExcelProperty(value = "已审(条)",index = 4)
+    private String auditstatusOrders;
+
+    @ExcelProperty(value = "未审(条)",index = 5)
+    private String auditOrder;
+}

+ 23 - 0
src/main/java/com/ydtech/modules/admin/model/dto/TaskStatisticsDtoNew.java

@@ -0,0 +1,23 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@ApiModel("任务统计控制台")
+@Data
+public class TaskStatisticsDtoNew {
+
+    @ApiModelProperty(value = "平均秒数")
+    private String  averageSecond;
+
+    @ApiModelProperty(value = "总笔数")
+    private String  orderNumber;
+
+    @ApiModelProperty(value = "总秒数")
+    private String  sumSecond;
+
+    @ApiModelProperty(value = "分页数据")
+    private  IPage<TaskStatisticsDto> pageResult;
+}

+ 33 - 0
src/main/java/com/ydtech/modules/admin/model/vo/APPPartnerInfo.java

@@ -0,0 +1,33 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@ApiModel(value = "合伙人下的管理员信息")
+public class APPPartnerInfo {
+
+
+
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumpremium;
+
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+    @ApiModelProperty(value = "成员总人数")
+    private Long number;
+
+
+    @ApiModelProperty(value = "管理员信息")
+    private List<AgencyLeaderInfo> agencyLeaderInfo;
+
+
+}

+ 49 - 0
src/main/java/com/ydtech/modules/admin/model/vo/AgencyLeaderInfo.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.admin.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+@ApiModel(value = "合伙人下的管理员信息")
+public class AgencyLeaderInfo {
+
+    @ApiModelProperty(value = "管理员id")
+    private String userId;
+    /**
+     * 员工姓名
+     */
+    @ApiModelProperty(value = "管理员姓名")
+    private String userName;
+
+
+    @ApiModelProperty(value = "机构id")
+    private String deptId;
+
+    @ApiModelProperty(value = "机构name")
+    private String deptName;
+
+    @ApiModelProperty(value = "机构下成员总人数")
+    private Integer number;
+
+    @ApiModelProperty(value = "推荐人id")
+    private String suggestId;
+
+    @ApiModelProperty(value = "推荐人name")
+    private String suggestName;
+
+    @ApiModelProperty(value = "抽成比例(总保费抽成)")
+    private String proportional;
+
+    @ApiModelProperty(value = "总保费")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal sumPremium;
+
+    @ApiModelProperty(value = "总佣金")
+    @JsonFormat(pattern = "0.00")
+    private BigDecimal extractFee;
+
+}

+ 5 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserRoleVo.java

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.util.List;
+
 @Data
 @ApiModel
 public class SysUserRoleVo {
@@ -27,4 +29,7 @@ public class SysUserRoleVo {
     @ApiModelProperty(value = "拨号权限密码")
     private String dialPassWord;
 
+    @ApiModelProperty(value = "用户ids")
+    private List<String> userIds;
+
 }

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

@@ -126,6 +126,9 @@ public class TaskStatisticsVo implements Serializable {
     @ApiModelProperty(value = "审核人")
     private String reviewer;
 
+    @ApiModelProperty(value = "审核人(审核表)")
+    private String audituser;
+
     @ApiModelProperty("审核时间")
     private String audittime;
 

+ 5 - 3
src/main/java/com/ydtech/modules/admin/service/SysPartnerService.java

@@ -2,14 +2,12 @@ package com.ydtech.modules.admin.service;
 
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ydtech.modules.admin.model.SysAgencyLeader;
 import com.ydtech.modules.admin.model.SysPartner;
-import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
-import com.ydtech.modules.admin.model.vo.AgencyExtractFee;
+import com.ydtech.modules.admin.model.vo.APPPartnerInfo;
 import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
 import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
 import com.ydtech.modules.admin.model.vo.SysUserPartner;
@@ -44,4 +42,8 @@ public interface SysPartnerService extends IService<SysPartner> {
     boolean edit(SysPartnerDto sysPartnerDto);
 
     BasePageResult<AgencyExtractFeeVo> queryAgencyLeaderById(SysAgencyLeaderPageDto sysAgencyLeaderPageDto);
+
+    List<SysPartner> partnerInfo(String beginTime, String endTime);
+
+    APPPartnerInfo getLeaderInfo(String userId);
 }

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

@@ -6,6 +6,8 @@ import com.ydtech.modules.admin.model.SysUserRoleKzt;
 import com.ydtech.modules.admin.model.dto.KZTUserQueryDto;
 import com.ydtech.modules.order.entity.BasePageResult;
 
+import java.util.List;
+
 /**
 * @author Administrator
 * @description 针对表【sys_user_role_kzt(控制台用户关联角色)】的数据库操作Service
@@ -33,4 +35,11 @@ public interface SysUserRoleKztService extends IService<SysUserRoleKzt> {
      *  @Description: 通过机构id查询已授权的用户表
      */
     BasePageResult<SysUser> queryPageByParam(KZTUserQueryDto kZTUserQueryDto);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/10/10
+     *  @Description:  控制台批量配置角色
+     */
+    void saveBatchUserRoleKzt(List<String> userIds, String roleId, String number);
 }

+ 26 - 0
src/main/java/com/ydtech/modules/admin/service/TaskStatisticsService.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsDtoNew;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.order.entity.BasePageResult;
@@ -104,4 +105,29 @@ public interface TaskStatisticsService {
      * @date: 2024/9/28
      **/
     HashMap<String, Object> costCenterTotal(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   财务中心-费用校验-明细
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    IPage<TaskStatisticsDto> costCenterDetails(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   财务中心-费用校验-明细-查看
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    TaskStatisticsDtoNew costCenterDetailsLicense(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    HttpResult costCenterDetailsExcel(TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   电销任务统计查询
+     * @author: whp
+     * @date: 2024/10/11
+     **/
+    IPage<TaskStatisticsDto> queryPageElectric(TaskStatisticsVo taskStatisticsVo);
+
 }

+ 90 - 16
src/main/java/com/ydtech/modules/admin/service/impl/SysPartnerServiceImpl.java

@@ -15,18 +15,12 @@ import com.ydtech.modules.admin.model.dto.SysAgencyLeaderPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerAPPPageDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerDto;
 import com.ydtech.modules.admin.model.dto.SysPartnerPageDto;
-import com.ydtech.modules.admin.model.vo.AgencyExtractFeeVo;
-import com.ydtech.modules.admin.model.vo.SysPartnerAPPPageVo;
-import com.ydtech.modules.admin.model.vo.SysUserPartner;
+import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.SysAgencyLeaderService;
 import com.ydtech.modules.admin.service.SysPartnerService;
 import com.ydtech.modules.admin.service.SysUserService;
 import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
-import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.entity.BasePageResult;
-import com.ydtech.modules.order.entity.InsAreaCompany;
-import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.utils.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -75,7 +69,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
     public List<SysPartner> queryRecommendAndPartner(String id) {
         List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getDelFlag, 1)
                 .likeRight(SysPartner::getUserId, id).orderByDesc(SysPartner::getId));
-        if (sysPartnerList.size()>0) {
+        if (sysPartnerList.size() > 0) {
             for (SysPartner sysPartner : sysPartnerList) {
                 SysUser sysUser = sysUserMapper.selectById(sysPartner.getUserId());
                 sysPartner.setUserName(sysUser.getName());
@@ -108,8 +102,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         }
         LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
         wrapper.ne(SysUser::getStatus, 0);
-        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()),SysUser::getId, sysPartnerPageDto.getUserId());
-        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()),SysUser::getName, sysPartnerPageDto.getUserName());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserId()), SysUser::getId, sysPartnerPageDto.getUserId());
+        wrapper.like(StringUtils.isNotEmpty(sysPartnerPageDto.getUserName()), SysUser::getName, sysPartnerPageDto.getUserName());
         wrapper.likeRight(StringUtils.isNotEmpty(sysPartnerPageDto.getDeptId()), SysUser::getId, sysPartnerPageDto.getDeptId());
         wrapper.notLike(SysUser::getId, "M");
         wrapper.notIn(CollectionUtil.isNotEmpty(stringList), SysUser::getId, stringList);
@@ -212,6 +206,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             b = sysPartnerMapper.insert(sysPartner) > 0;
         }
 
+
         return b;
     }
 
@@ -312,7 +307,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                             } else {
                                 dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
                             }
-                            HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
+                            HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
                             if (CollectionUtil.isNotEmpty(map)) {
                                 bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
                             }
@@ -438,7 +433,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                                     } else {
                                         dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
                                     }
-                                    HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysDept1.getId(), dateStr,null,null);
+                                    HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysDept1.getId(), dateStr, null, null);
                                     if (CollectionUtil.isNotEmpty(map)) {
                                         bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
                                     }
@@ -476,12 +471,17 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                 .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getUserId()));
         if (sysPartner == null) throw new DescribeException("系统错误,请联系管理员!");
 
-        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId())) {
+        if (StringUtils.isNullOrEmpty(sysPartner.getSuggestId()) && StringUtils.isNotEmpty(sysPartnerDto.getSuggestId()))  {
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
+
             partner.setSuggestId(sysPartnerDto.getSuggestId());
             partner.setSuggestName(sysPartnerDto.getSuggestName());
+            SysPartner sysPartnerSuggest = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>()
+                    .eq(SysPartner::getDelFlag, 1).eq(SysPartner::getUserId, sysPartnerDto.getSuggestId()));
+            if (sysPartnerSuggest == null) throw new SystemException("推荐人不存在");
+            partner.setType(sysPartnerSuggest.getType()+1);
             b = sysPartnerMapper.updateById(partner) > 0;
 
             SysRelationPerson sysRelationPerson = new SysRelationPerson();
@@ -515,6 +515,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
             SysPartner partner = new SysPartner();
             partner.setId(sysPartner.getId());
             partner.setProportional(sysPartnerDto.getProportional());
+            //判断本月是否已修改比例 TODO
+
             b = sysPartnerMapper.updateById(partner) > 0;
         }
 
@@ -528,8 +530,8 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
         List<SysRelationPerson> sysRelationPeople = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
                 .eq(SysRelationPerson::getSuggestId, sysAgencyLeaderPageDto.getUserId()).eq(SysRelationPerson::getType, 1));
 
-            //获取所有推荐的机构负责人id
-            List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        //获取所有推荐的机构负责人id
+        List<String> agencyLeaderIds = sysRelationPeople.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
 
         Page<SysAgencyLeader> page = new Page<>(sysAgencyLeaderPageDto.getPageNum(), sysAgencyLeaderPageDto.getPageSize());
         LambdaQueryWrapper<SysAgencyLeader> wrapper = new LambdaQueryWrapper<>();
@@ -564,7 +566,7 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
                     dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime);
                     agencyExtractFee.setStartTime(createTime);
                 }
-                HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr,null,null);
+                HashMap<String, BigDecimal> map = sysAgencyLeaderMapper.getBigDecimalNum(sysAgencyLeaders.getDeptId(), dateStr, null, null);
                 if (CollectionUtil.isNotEmpty(map)) {
 
                     bigDecimal = bigDecimal.add(map.get("bigDecimal") == null ? BigDecimal.ZERO : map.get("bigDecimal"));
@@ -603,5 +605,77 @@ public class SysPartnerServiceImpl extends ServiceImpl<SysPartnerMapper, SysPart
 
     }
 
+    @Override
+    public List<SysPartner> partnerInfo(String beginTime, String endTime) {
+
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(StringUtils.isNotEmpty(BaseController.getUserId()), SysRelationPerson::getSuggestId, BaseController.getUserId())
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 0));
+        if (sysRelationPersonList.size() == 0) return null;
+        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        List<SysPartner> sysPartnerList = sysPartnerMapper.selectList(new LambdaQueryWrapper<SysPartner>()
+                .eq(SysPartner::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysPartner::getUserId, collect)
+                .between(StringUtils.isNotEmpty(beginTime) && StringUtils.isNotEmpty(endTime)
+                        ,SysPartner::getCreateTime,beginTime,endTime));
+
+        return sysPartnerList;
+    }
+
+    @Override
+    public APPPartnerInfo getLeaderInfo(String userId) {
+        APPPartnerInfo appPartnerInfo = new APPPartnerInfo();
+        //查询合伙人有关系的工作室管理员
+        List<SysRelationPerson> sysRelationPersonList = sysRelationPersonMapper.selectList(new LambdaQueryWrapper<SysRelationPerson>()
+                .eq(StringUtils.isNotEmpty(userId), SysRelationPerson::getSuggestId, userId)
+                .eq(SysRelationPerson::getDelFlag, 1)
+                .eq(SysRelationPerson::getType, 1));
+        if (sysRelationPersonList.size() == 0) return null;
+
+        List<String> collect = sysRelationPersonList.stream().map(SysRelationPerson::getAgencyLeaderId).collect(Collectors.toList());
+        List<SysAgencyLeader> leaderList = sysAgencyLeaderMapper.selectList(new LambdaQueryWrapper<SysAgencyLeader>()
+                .eq(SysAgencyLeader::getDelFlag, 1).in(CollectionUtil.isNotEmpty(collect), SysAgencyLeader::getUserId, collect));
+
+        List<AgencyLeaderInfo> agencyLeaderInfos = BeanUtil.copyToList(leaderList, AgencyLeaderInfo.class);
+        for (AgencyLeaderInfo agencyLeaderInfo : agencyLeaderInfos) {
+
+            SysUser sysUser = sysUserMapper.selectById(agencyLeaderInfo.getUserId());
+            agencyLeaderInfo.setUserName(sysUser.getName());
+            SysUser sysUser1 = sysUserMapper.selectById(agencyLeaderInfo.getSuggestId());
+            agencyLeaderInfo.setSuggestName(sysUser1.getName());
+            SysDept sysDept = sysDeptMapper.selectById(agencyLeaderInfo.getDeptId());
+            agencyLeaderInfo.setDeptName(sysDept.getName());
+            //填充费用
+            AgencyExtractFee agencyExtractFee = sysAgencyLeaderService.queryExtractFee(agencyLeaderInfo.getUserId());
+            BigDecimal sumpremium = agencyExtractFee.getSumpremium();
+            agencyLeaderInfo.setSumPremium(sumpremium);
+            BigDecimal percentage = new BigDecimal(agencyLeaderInfo.getProportional()).divide(new BigDecimal("100"));
+            agencyLeaderInfo.setProportional(percentage.toString());
+            BigDecimal extractFee = sumpremium.multiply(percentage).setScale(2, RoundingMode.DOWN);
+            agencyLeaderInfo.setExtractFee(extractFee);
+
+            List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
+                    .likeRight(SysUser::getId, agencyLeaderInfo.getDeptId()).ne(SysUser::getStatus, 0));
+            agencyLeaderInfo.setNumber(sysUsers.size());
+        }
+        appPartnerInfo.setAgencyLeaderInfo(agencyLeaderInfos);
+        //机构总人数
+        long count = agencyLeaderInfos.stream().mapToInt(AgencyLeaderInfo::getNumber).count();
+        appPartnerInfo.setNumber(count);
+        //总保费
+        BigDecimal reduce = agencyLeaderInfos.stream().map(AgencyLeaderInfo::getSumPremium).reduce(BigDecimal.ZERO, BigDecimal::add);
+        appPartnerInfo.setSumpremium(reduce);
+
+        SysPartner sysPartner = sysPartnerMapper.selectOne(new LambdaQueryWrapper<SysPartner>().eq(SysPartner::getUserId, userId));
+        BigDecimal percentage = new BigDecimal(sysPartner.getProportional()).divide(new BigDecimal("100"));
+        appPartnerInfo.setExtractFee(reduce.multiply(percentage).setScale(2, RoundingMode.DOWN));
+
+        return appPartnerInfo;
+    }
+
+
+
+
+
 
 }

+ 15 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserRoleKztServiceImpl.java

@@ -11,8 +11,11 @@ import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.order.entity.BasePageResult;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
 * @author Administrator
@@ -68,6 +71,18 @@ public class SysUserRoleKztServiceImpl extends ServiceImpl<SysUserRoleKztMapper,
         return  new BasePageResult<>(kZTUserQueryDto.getPageNum(), page.getSize(), userPageResult.getTotal(), page.getPages(),
                 userPageResult.getRecords());
     }
+
+    @Override
+    @Transactional
+    public void saveBatchUserRoleKzt(List<String> userIds, String roleId, String number) {
+        ArrayList<SysUserRoleKzt> saveObj = new ArrayList<>();
+        sysUserRoleKztMapper.deleteBatcgByUserId(userIds,number);
+        for (String userId : userIds) {
+            SysUserRoleKzt userRole = new SysUserRoleKzt(null, userId,Long.parseLong(roleId), number, new BaseController().getUserId(), new Date(), new BaseController().getUserId(), new Date());
+            saveObj.add(userRole);
+        }
+        this.saveBatch(saveObj);
+    }
 }
 
 

+ 145 - 4
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -16,9 +16,7 @@ import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.dao.TaskStatisticsMapper;
 import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
-import com.ydtech.modules.admin.model.dto.InsuranceCompanyExcel;
-import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
-import com.ydtech.modules.admin.model.dto.TaskStatisticsExcel;
+import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.SysDeptService;
@@ -147,6 +145,17 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
             taskStatisticsVo.setCountyId(countyId);
         }
 
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
+            if("7".equals(taskStatisticsVo.getDays())){
+                taskStatisticsVo.setDays("2");
+            } else if ("30".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDays("3");
+            }
+        }
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+
         PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
         Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
         page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
@@ -248,6 +257,138 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenter(page,taskStatisticsVo);
         return list;
     }
+    /**
+     * @description:   财务中心-费用校验-明细
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    @Override
+
+    public IPage<TaskStatisticsDto> costCenterDetails(TaskStatisticsVo taskStatisticsVo) {
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
+            if("7".equals(taskStatisticsVo.getDays())){
+                taskStatisticsVo.setDays("2");
+            } else if ("30".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDays("3");
+            }
+        }
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenterDetails(page,taskStatisticsVo);
+        return list;
+    }
+
+    /**
+     * @description:   任务统计-保险公司-导出
+     * @author: whp
+     * @date: 2024/9/9
+     **/
+    @Override
+    public HttpResult costCenterDetailsExcel(TaskStatisticsVo taskStatisticsVo) {
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
+            if("7".equals(taskStatisticsVo.getDays())){
+                taskStatisticsVo.setDays("2");
+            } else if ("30".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDays("3");
+            }
+        }
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        List<TaskStatisticsDtoExcel> list = this.insAreaCompanyMapper.costCenterDetailsExcel(taskStatisticsVo);
+
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            try {
+                Files.createDirectories(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, "费用校验审核人导出", TaskStatisticsDtoExcel.class, list);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+    /**
+     * @description:   电销任务统计查询
+     * @author: whp
+     * @date: 2024/10/11
+     **/
+    @Override
+    public IPage<TaskStatisticsDto> queryPageElectric(TaskStatisticsVo taskStatisticsVo) {
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.queryPageElectric(page,taskStatisticsVo);
+        if (list != null && !list.getRecords().isEmpty()) {
+            List<TaskStatisticsDto> records = list.getRecords();
+            for (TaskStatisticsDto record : records) {
+                String deptId = record.getDeptId();
+                if (StringUtils.isNotEmpty(deptId)) {
+                    int length = deptId.length();
+                    if (length > 0) {
+                        if (length > 0) {
+                            if (length > 10) {
+                                String substring = deptId.substring(0, 6);
+                                String substring1 = deptId.substring(0, 8);
+                                String province = deptId.substring(0, 4);
+                                SysDept cityName = sysDeptService.getById(substring);
+                                SysDept districtName = sysDeptService.getById(substring1);
+                                SysDept provinceName = sysDeptService.getById(province);
+                                SysDept storeDeptName = sysDeptService.getById(deptId);
+                                record.setCityName(cityName.getName());
+                                record.setDistrictName(districtName.getName());
+                                record.setProvinceName(provinceName.getName());
+                                record.setStoreDeptName(storeDeptName.getName());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        Long  total  = this.insAreaCompanyMapper.queryPageElectricTotal(taskStatisticsVo);
+        list.setTotal(total);
+        return list;
+    }
+
+    /**
+     * @description:   财务中心-费用校验-明细-查看
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    @Override
+    public TaskStatisticsDtoNew costCenterDetailsLicense(TaskStatisticsVo taskStatisticsVo) {
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
+            if("7".equals(taskStatisticsVo.getDays())){
+                taskStatisticsVo.setDays("2");
+            } else if ("30".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDays("3");
+            }
+        }
+        HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDays(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
+        taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
+        taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+
+        PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
+        Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        pageVo.setPageNum(taskStatisticsVo.getPageNum());
+        pageVo.setPageSize(taskStatisticsVo.getPageSize());
+        IPage<TaskStatisticsDto> list = this.insAreaCompanyMapper.costCenterDetailsLicense(page,taskStatisticsVo);
+        TaskStatisticsDtoNew sumSecond = this.insAreaCompanyMapper.costCenterSecond(taskStatisticsVo);
+        sumSecond.setPageResult(list);
+        return sumSecond;
+    }
+
+
+
     /**
      * @description:   保险公司统计总报价
      * @author: whp
@@ -556,8 +697,8 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         result.setTotalNumber(total.toString());
         BigDecimal sumPremium = result.getSumPremium();
         BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
-        BigDecimal sumPremium1 = allsumPremium.getSumPremium();
         if(ObjectUtils.isNotEmpty(sumPremium)){
+            BigDecimal sumPremium1 = allsumPremium.getSumPremium();
             if(sumPremium.compareTo(BigDecimal.ZERO) ==1){
                 BigDecimal multiply = sumPremium.divide(sumPremium1, 2, BigDecimal.ROUND_DOWN);
                 result.setSumPremiumProportion(multiply);

+ 28 - 19
src/main/java/com/ydtech/modules/admin/service/impl/UserReportServiceImpl.java

@@ -223,6 +223,8 @@ public class UserReportServiceImpl implements UserReportService {
                 this.channelPerson(getQxFrontlineAgentList, qxFrontlineAgentVo);
             } else if (qxFrontlineAgentVo.getManagementSource().equals("2")) {// 代理人
                 this.agentPerson(getQxFrontlineAgentList, qxFrontlineAgentVo);
+            } else if (qxFrontlineAgentVo.getManagementSource().equals("3")) { //电销
+                this.electricPerson(getQxFrontlineAgentList,qxFrontlineAgentVo);
             }
 
             if (StringUtils.isNotEmpty(qxFrontlineAgentVo.getOutThere())) {
@@ -391,25 +393,6 @@ public class UserReportServiceImpl implements UserReportService {
             userItem.setTotalPremium(orderManpower.getTotalPremium());
             //单均保费
             userItem.setAveragePremium(orderManpower.getAveragePremium());
-//            String deptId = userItem.getDeptId();
-//            if(StringUtils.isNotEmpty(deptId)){
-//                int length = deptId.length();
-//                if (length > 0) {
-//                    if (length > 10) {
-//                        String substring = deptId.substring(0, 6);
-//                        String substring1 = deptId.substring(0, 8);
-//                        String province = deptId.substring(0, 4);
-//                        String storeDept = deptId.substring(0, 11);
-//                        SysDept cityName = sysDeptService.getById(substring);
-//                        SysDept districtName = sysDeptService.getById(substring1);
-//                        SysDept provinceName = sysDeptService.getById(province);
-//                        SysDept storeDeptEntity = sysDeptService.getById(storeDept);
-//                        String deptName = userItem.getDeptName();
-//                        String a = provinceName.getName()+"-"+cityName.getName()+"-"+districtName.getName()+"-"+storeDeptEntity.getName()+"-"+deptName;
-//                        userItem.setDeptName(a);
-//                    }
-//                }
-//            }
         }
     }
 
@@ -445,6 +428,32 @@ public class UserReportServiceImpl implements UserReportService {
             }
         }
     }
+    /**
+     *   电销统计
+     * @param sysUserList  渠道userIds
+     */
+    private void electricPerson(List<QxFrontlineAgentDto> getQxFrontlineAgentList, QxFrontlineAgentVo qxFrontlineAgentVo) {
+        for (QxFrontlineAgentDto  item  : getQxFrontlineAgentList){
+//            是否是团队长
+            String userId = item.getUserId();
+                QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
+                wrapper.eq("operatorCode", userId);
+                wrapper.eq("status", "1");
+                List<SysUser> sysUsers = sysUserMapper.selectList(wrapper);
+                List<String> collect =new ArrayList<>();
+                if(sysUsers!=null && sysUsers.size()>0){
+                    collect = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
+                }
+                QxFrontlineAgentDto qxFrontlineAgentDto = new QxFrontlineAgentDto();
+                collect.add(userId);
+                qxFrontlineAgentDto.setCreatetimeEnd(qxFrontlineAgentVo.getCreatetimeEnd());
+                qxFrontlineAgentDto.setCreatetimeStart(qxFrontlineAgentVo.getCreatetimeStart());
+                qxFrontlineAgentDto.setIds(collect);
+                QxFrontlineAgentDto taskStatisticsDto = insAreaCompanyMapper.getOrderManpowerNew(qxFrontlineAgentDto);
+                item.setAveragePremium(taskStatisticsDto.getAveragePremium());
+                item.setTotalPremium(taskStatisticsDto.getTotalPremium());
+        }
+    }
 
     /**
      *  @version

+ 1 - 0
src/main/java/com/ydtech/modules/fee/service/impl/FeeRuleSchemeServiceNewImpl.java

@@ -1134,6 +1134,7 @@ public class FeeRuleSchemeServiceNewImpl implements FeeRuleSchemeNewService {
     public void calcCostsExternal(PtlAgreementProductCostsNew ptlAgreementProductCostsNew, InsAreaCompany insAreaCompany) {
         //获取协议信息
         // 外部订单比例
+        ptlAgreementProductCostsNew.blank();
         PtlAgreement ptlAgreement = ptlAgreementService.getById(insAreaCompany.getAgreementId());
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
         SysUser sysUser = sysUserService.findByUserId(insOrders.getUserid());

+ 1 - 0
src/main/java/com/ydtech/modules/fnc/controller/CarSettleController.java

@@ -171,6 +171,7 @@ public class CarSettleController extends BaseController {
             jsonObject.put("audituser",item.getOperatorId());
             jsonObject.put("operator",item.getOperator());
             jsonObject.put("desc",desc);
+            jsonObject.put("remark",item.getRemark());
             list.add(jsonObject);
         });
 

+ 18 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -1287,6 +1287,24 @@ public class InsPlyIncomeServiceImpl extends ServiceImpl<InsPlyIncomeMapper, Ins
         insPlyIncomeLogService.saveLog(insPlyIncomeLog);  //添加日志
 
         this.amountCalculate(insPlyIncomeVo, insPlyIncome);
+        String agreementId = insPlyIncomeVo.getAgreementId();
+        if(StringUtils.isNotEmpty(agreementId)){
+            PtlAgreement byId1 = ptlAgreementService.getById(agreementId);
+            if(ObjectUtils.isNotEmpty(byId1)){
+                String partnerCompaniesId = byId1.getPartnerCompaniesId();
+                String insuranceCompanyId = byId1.getInsuranceCompanyId();
+                String insuranceCompany = byId1.getInsuranceCompany();
+                if(StringUtils.isNotEmpty(partnerCompaniesId)){
+                    insPlyIncome.setPartnerCompaniesId(partnerCompaniesId);
+                    EsmInsCompany esmInsCompany = EsmInsCompanyService.getById(partnerCompaniesId);
+                    String name = esmInsCompany.getNamesimple();   //合作名称
+                    insPlyIncome.setPartnerCompaniesName(name);
+                }
+                insPlyIncome.setCompanyId(insuranceCompanyId);
+                insPlyIncome.setCompanyName(insuranceCompany);
+            }
+
+        }
         insPlyIncome.setUpdateUserId(BaseController.getUser().getId());
         baseMapper.updateById(insPlyIncome);
 

+ 3 - 0
src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java

@@ -194,6 +194,9 @@ public class QuoteRespVo {
     @ApiModelProperty("费用显示")
     private Boolean feeDisplay;
 
+    @ApiModelProperty("请求类型")
+    private Integer apiType;
+
     public void setJqClaims(String jqClaims) {
         this.jqClaims = StringUtils.isEmpty(jqClaims) ? null : jqClaims;
     }

+ 9 - 3
src/main/java/com/ydtech/modules/order/components/InsOrdersComponents.java

@@ -16,6 +16,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
 import java.util.List;
+import java.util.Objects;
 
 
 @Component
@@ -75,13 +76,18 @@ public class InsOrdersComponents {
             // 缓存中不存在,在数据库中取
             InsOrders insOrders = insOrdersService.getById(orderNo);
             quoteInfoVo = new BaseQuoteInfoVo(insOrders);
+        }else {
+            quoteInfoVo.setRiskList(JSON.parseArray(JSON.toJSONString(quoteInfoObj.getJSONArray("risk")), RiskInfoVo.class));
+            quoteInfoVo.setInsuredPersonInfo(JSON.parseObject(JSON.toJSONString(quoteInfoObj.getJSONObject("insureinfo")), CustomerInfoVo.class));
+            quoteInfoVo.setPolicyHolderInfo(JSON.parseObject(JSON.toJSONString(quoteInfoObj.getJSONObject("applyinfo")), CustomerInfoVo.class));
         }
-        quoteInfoVo.setRiskList(JSON.parseArray(JSON.toJSONString(quoteInfoObj.getJSONArray("risk")),RiskInfoVo.class));
-        quoteInfoVo.setInsuredPersonInfo(JSON.parseObject(JSON.toJSONString(quoteInfoObj.getJSONObject("insureinfo")), CustomerInfoVo.class));
-        quoteInfoVo.setPolicyHolderInfo(JSON.parseObject(JSON.toJSONString(quoteInfoObj.getJSONObject("applyinfo")), CustomerInfoVo.class));
         quoteInfoVo.setOrderNo(orderNo);
         //替换商业险信息
         quoteInfoVo.setKindList(kindInfoVoList);
+        //赋值 userid
+        if(Objects.isNull(quoteInfoVo.getUserid()) && quoteInfoVo.getUserid().equals("")) {
+            quoteInfoVo.setUserid(quoteInfoVo.getUserId());
+        }
         return quoteInfoVo;
     }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/components/gouren/GuorenDuplicateInsuranceComponent.java

@@ -195,7 +195,7 @@ public class GuorenDuplicateInsuranceComponent {
         bodyMap.put("jqImage", com.ydtech.utils.StringUtils.toString(jqImageStr, ""));
         bodyMap.put("syImage", com.ydtech.utils.StringUtils.toString(syImageStr, ""));
         String sendBody = JsonUtils.toJson(bodyMap);
-        String ocrStr = HttpUtil.sendPost("http://47.92.254.66:8088/getres", sendBody);
+        String ocrStr = HttpUtil.sendPost("http://39.98.41.104:8088/getres", sendBody);
         return JSONUtil.toBean(ocrStr, CheckCodeResp.class);
 
     }

+ 3 - 3
src/main/java/com/ydtech/modules/order/components/zijin/ZijinRequestApiComponents.java

@@ -350,11 +350,11 @@ public class ZijinRequestApiComponents {
     /**
      * 订单详情查询服务
      *
-     * @param orderNoRequest 紫金财险 订单详情查询服务 入参实体
+     * @param orderId 紫金财险 订单详情查询服务 入参实体
      * @return 出参实体
      */
-    public QueryOrderDetailResponse getOrderDetail(OrderNoRequest orderNoRequest, HttpHeaders httpHeaders) {
-        String url = zijinApiConfigurationProperties.getOrderUrl() + "?orderNo=" + orderNoRequest.getOrderNo();
+    public QueryOrderDetailResponse getOrderDetail(String orderId, HttpHeaders httpHeaders) {
+        String url = zijinApiConfigurationProperties.getOrderUrl() + "?orderId=" + orderId;
         return request(url, RequestUrl.GET_ORDER_DETAIL.getDesc(), null, QueryOrderDetailResponse.class, httpHeaders);
     }
 

+ 14 - 1
src/main/java/com/ydtech/modules/order/constants/OrderFeeAuditHistroy.java

@@ -10,7 +10,14 @@ public enum OrderFeeAuditHistroy {
     OFH_6("6", "已审核"),
     OFH_7("7", "驳回"),
     OFH_8("8", "电销未提交"),
-    OFH_9("9", "电销待提交");
+    OFH_9("9", "电销待提交"),
+    OFH_51("51", "费用调整"),
+    OFH_61("61", "外部订单暂存修改"),
+    OFH_62("62", "外部订单保存修改"),
+    OFH_00("状态更新", "状态更新"),
+    OFH_10("人工核保", "人工核保"),
+    OFH_20("自动核保", "自动核保")
+    ;
 
     private final String code;
     private final String desc;
@@ -48,6 +55,12 @@ public enum OrderFeeAuditHistroy {
             return OFH_5.getCode();
         }else if(auditStatus.equals("5")){
             return OFH_6.getCode();
+        }else if(auditStatus.equals("6")){
+            return OFH_51.getCode();
+        }else if(auditStatus.equals("61")){
+            return OFH_61.getCode();
+        }else if(auditStatus.equals("62")){
+            return OFH_62.getCode();
         }
         return "";
     }

+ 1 - 1
src/main/java/com/ydtech/modules/order/controller/InsAreaCompanyController.java

@@ -67,7 +67,7 @@ public class InsAreaCompanyController {
     @ApiOperation("取消核保")
     public HttpResult<String> cancelUnderwriting(@PathVariable String subOrderNo) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(subOrderNo);
-        if (!InsOrderStatusEnum.WAIT_PAY.getCode().equals(insAreaCompany.getOrderstatus())) {
+        if (InsOrderStatusEnum.WAIT_PAY.getCode().equals(insAreaCompany.getOrderstatus())) {
             throw new SystemException("只有[已核保待缴费]状态下允许取消核保");
         }
         insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());

+ 25 - 19
src/main/java/com/ydtech/modules/order/controller/QuoteController.java

@@ -36,6 +36,7 @@ import io.swagger.annotations.Api;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -139,6 +140,8 @@ public class QuoteController extends BaseController {
             }
         }
 
+        HttpResult<QuoteRespVo> respVo = null;
+
         PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(quoteVo.getAgreementId());
 
         if (PtlApiType.PTL_API_2.getCode() == ptlAgreementAttribution.getApiType()) {
@@ -148,10 +151,10 @@ public class QuoteController extends BaseController {
             BeanUtils.copyProperties(quoteVo, quoteVo1);
             quoteVo1.setAccidentalDrivingVo(javaObject);
             BaseQuoteVo baseQuoteVo = insOrdersService.convertDriving(quoteVo1);
-            return insCrawlerOrderService.quote(quoteInfo, baseQuoteVo);
+            respVo = insCrawlerOrderService.quote(quoteInfo, baseQuoteVo);
         }
 
-        if("ZMBX1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("ZMBX1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
             BaseQuoteVo<AccidentalDrivingVo> quoteVo1 = new BaseQuoteVo<>();
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(quoteVo.getAccidentalDrivingVo()));
             BeanUtils.copyProperties(quoteVo, quoteVo1);
@@ -161,9 +164,9 @@ public class QuoteController extends BaseController {
             }else{
                 quoteVo1.setAccidentalDrivingVo(null);
             }
-            return zhongMeiOrderApiService.quote(quoteInfo, quoteVo1);
+            respVo = zhongMeiOrderApiService.quote(quoteInfo, quoteVo1);
         }
-        if("AICS1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("AICS1000000".equals(ptlAgreementAttribution.getInsCompanyId())  && Objects.isNull(respVo)){
             BaseQuoteVo<QuoteAccidentalDrivingVo> quoteVo1 = new BaseQuoteVo<>();
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(quoteVo.getAccidentalDrivingVo()));
             QuoteAccidentalDrivingVo javaObject = jsonObject.toJavaObject(QuoteAccidentalDrivingVo.class);
@@ -171,20 +174,20 @@ public class QuoteController extends BaseController {
             quoteVo1.setAccidentalDrivingVo(javaObject);
             //转换类型
             BaseQuoteVo<AccidentalDrivingVo> baseQuoteVo = insOrdersService.convertDriving(quoteVo1);
-            return yongchengOrderApiService.quoteApi(baseQuoteVo);
+            respVo = yongchengOrderApiService.quoteApi(baseQuoteVo);
         }
-        if("YAIC1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("YAIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
 
         }
-        if("ZKIC1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("ZKIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
             BaseQuoteVo<List<ZjQuoteAccidentVo>> quoteVo1 = new BaseQuoteVo<>();
             JSONArray jsonObject = JSONArray.parseArray(JSONArray.toJSONString(quoteVo.getAccidentalDrivingVo()));
             List<ZjQuoteAccidentVo> javaObject = jsonObject.toJavaList(ZjQuoteAccidentVo.class);
             BeanUtils.copyProperties(quoteVo, quoteVo1);
             quoteVo1.setAccidentalDrivingVo(javaObject);
-            return zijinOrderApiService.quote(quoteInfo, quoteVo1);
+            respVo = zijinOrderApiService.quote(quoteInfo, quoteVo1);
         }
-        if("XDCX1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("XDCX1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
             GuoRenQuoteVo<QuoteAccidentalDrivingVo> quoteVo1 = new GuoRenQuoteVo<>();
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(quoteVo.getAccidentalDrivingVo()));
             QuoteAccidentalDrivingVo javaObject = jsonObject.toJavaObject(QuoteAccidentalDrivingVo.class);
@@ -195,9 +198,9 @@ public class QuoteController extends BaseController {
             GuoRenQuoteVo guoRenQuoteVo = new GuoRenQuoteVo();
             BeanUtils.copyProperties(baseQuoteVo, guoRenQuoteVo);
             guoRenQuoteVo.setGuoRenSpecialAgreementVo(baseQuoteVo.getGuoRenSpecialAgreementVo());
-            return guorenOrderApiService.quoteApi(guoRenQuoteVo);
+            respVo = guorenOrderApiService.quoteApi(guoRenQuoteVo);
         }
-        if("HTIC1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("HTIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
 
             BaseQuoteVo<AccidentalDrivingVo> quoteVo1 = new BaseQuoteVo<>();
             AccidentalDrivingVo javaObject = new AccidentalDrivingVo();
@@ -207,12 +210,12 @@ public class QuoteController extends BaseController {
             }
             BeanUtils.copyProperties(quoteVo,quoteVo1);
             quoteVo1.setAccidentalDrivingVo(javaObject);
-            return huaTaiOrderApiService.quote(quoteInfo, quoteVo1);
+            respVo = huaTaiOrderApiService.quote(quoteInfo, quoteVo1);
         }
-        if("DJPC1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
-            return daJiaOrderService.quote(quoteInfo, quoteVo);
+        if("DJPC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
+            respVo = daJiaOrderService.quote(quoteInfo, quoteVo);
         }
-        if("BPIC1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("BPIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
             BaseQuoteVo<List<BoHaiQuoteAccidentVo>> quoteVo1 = new BaseQuoteVo<>();
             JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(quoteVo.getAccidentalDrivingVo()));
             BeanUtils.copyProperties(quoteVo, quoteVo1);
@@ -228,9 +231,9 @@ public class QuoteController extends BaseController {
             }else{
                 quoteVo1.setAccidentalDrivingVo(new ArrayList<>());
             }
-            return boHaiOrderApiService.quote(quoteInfo, quoteVo1);
+            respVo = boHaiOrderApiService.quote(quoteInfo, quoteVo1);
         }
-        if("PAIC1000000".equals(ptlAgreementAttribution.getInsCompanyId())){
+        if("PAIC1000000".equals(ptlAgreementAttribution.getInsCompanyId()) && Objects.isNull(respVo)){
 //            BaseQuoteVo<AccidentalDrivingVo> quoteVo1 = new BaseQuoteVo<>();
 //            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(quoteVo.getAccidentalDrivingVo()));
 //            AccidentalDrivingVo javaObject = jsonObject.toJavaObject(AccidentalDrivingVo.class);
@@ -238,7 +241,10 @@ public class QuoteController extends BaseController {
 //            quoteVo1.setAccidentalDrivingVo(javaObject);
 //            return pingAnOrderApiService.quote(quoteInfo, quoteVo1);
         }
-
-        return null;
+        PtlAgreementAttribution byId = ptlAgreementAttributionService.getById(quoteVo.getAgreementId());
+        if( respVo != null && !ObjectUtils.isEmpty( respVo.getData() )){
+            respVo.getData().setApiType(byId.getApiType());
+        }
+        return respVo;
     }
 }

+ 31 - 1
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -344,7 +344,37 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      *  @Date: 2024/9/30 8:55
      *  @Description:  查询所有的驳回订单信息
      */
-    Page<InsAreaCompany> getAllRejectOrders(@Param("") Page page, @Param("vo") RejectPageQueryVo rejectPageQueryVo);
+    Page<InsAreaCompany> getAllRejectOrders(@Param("page") Page page, @Param("vo") RejectPageQueryVo rejectPageQueryVo);
+    /**
+     * @description:   财务中心-费用校验-明细
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    IPage<TaskStatisticsDto> costCenterDetails(@Param("page") Page page,@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   财务中心-费用校验-明细-查看
+     * @author: whp
+     * @date: 2024/10/10
+     **/
+    IPage<TaskStatisticsDto> costCenterDetailsLicense( @Param("page") Page page, @Param("taskStatisticsVo")  TaskStatisticsVo taskStatisticsVo);
+
+    TaskStatisticsDtoNew costCenterSecond(@Param("taskStatisticsVo")TaskStatisticsVo taskStatisticsVo);
+
+    List<TaskStatisticsDtoExcel> costCenterDetailsExcel(@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+    /**
+     * @description:   电销任务统计查询
+     * @author: whp
+     * @date: 2024/10/11
+     **/
+    IPage<TaskStatisticsDto> queryPageElectric( @Param("page") Page page, @Param("taskStatisticsVo")  TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     *
+     * @param taskStatisticsVo
+     * @return 电销合计
+     */
+    Long queryPageElectricTotal(@Param("taskStatisticsVo") TaskStatisticsVo taskStatisticsVo);
+
 }
 
 

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

@@ -15,6 +15,7 @@ import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -519,6 +520,23 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "del_flag")
     private String delFlag;
 
+    //add by  hxl  添加时间相关
+    /**
+     * 核保时间
+     */
+    @TableField(value = "underwriting_time")
+    private Date underwritingTime;
+    /**
+     * 更新状态  1 手动更新   2. 自动更新
+     */
+    @TableField(value = "update_status")
+    private String updateStatus;
+    /**
+     * 更新时间
+     */
+    @TableField(value = "update_status_time")
+    private Date updateStatusTime;
+
     public InsAreaCompany(QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
         this.id = IdGenerate.nextId();
         this.orderno = quoteRespVo.getOrderno();

+ 10 - 0
src/main/java/com/ydtech/modules/order/entity/InsOrders.java

@@ -371,7 +371,17 @@ public class InsOrders implements Serializable {
     @TableField(exist = false)
     private String areaInfo;
 
+    @ApiModelProperty("核保时间")
+    @TableField(exist = false)
+    private String underwritingTime;
+
+    @ApiModelProperty("更新状态")
+    @TableField(exist = false)
+    private String updateStatus;
 
+    @ApiModelProperty("更新时间")
+    @TableField(exist = false)
+    private String updateStatusTime;
     public InsOrders(SysUser user, SysDept dept, BaseQuoteInfoVo quoteInfoVo) {
         // 2. 组装订单
         this.setQuoteno(String.valueOf(quoteInfoVo.getQuoteno()));

+ 8 - 0
src/main/java/com/ydtech/modules/order/entity/InsOrdersTrack.java

@@ -95,6 +95,14 @@ public class InsOrdersTrack implements Serializable {
     @ApiModelProperty("备注")
     private String remark;
 
+    /***
+     *  人工核保  1 ,自动核保  2.人工核保
+     *  更新状态   1.手动更新  2. 自动更新
+     */
+    @TableField(value = "order_type")
+    @ApiModelProperty("类型")
+    private String orderType;
+
     @TableField(exist = false)
     private static final long serialVersionUID = 1L;
 

+ 18 - 0
src/main/java/com/ydtech/modules/order/entity/vo/OrderQueryVo.java

@@ -173,6 +173,24 @@ public class OrderQueryVo {
     @ApiModelProperty("审核人")
     private String checkUser;
 
+    @ApiModelProperty("核保开始时间")
+    private String auditStartDateStr;
+
+    @ApiModelProperty("核保结束时间")
+    private String auditEndDateStr;
+
+
+    @ApiModelProperty("更新开始时间")
+    private String updateStartDateStr;
+
+    @ApiModelProperty("更新结束时间")
+    private String updateEndDateStr;
+
+    @ApiModelProperty("更新状态")
+    private String updateStatus;
+
+
+
     public LocalDate getEndDatePlusOneDay() {
         if(ObjectUtils.isEmpty(endDate)){
             return endDate;

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

@@ -12,10 +12,16 @@ public interface InsuranceCompanyPolymerizationService {
     /**
      * 撤销保险公司二维码/订单
      *
-     * @param insAreaCompany 子订单
+     * @param insAreaCompany 子订单信息
      * @return 是否成功
      */
     boolean cancelOrder(InsAreaCompany insAreaCompany);
 
+    /**
+     * 更新订单状态
+     * @param insAreaCompany 子订单信息
+     * @return 是否成功
+     */
+    boolean updateOrder(InsAreaCompany insAreaCompany);
 
 }

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

@@ -380,8 +380,9 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
             return HttpResult.ok("核保通过");
         } else if (i == 2) {
             //  add  by  hxl  添加自动更新状态
-            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
             insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
+            //insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
         } else {
             //  add  by  hxl  添加自动更新状态

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

@@ -586,9 +586,10 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                 }
                 if ("1".equals(odr1010Response.getResult().getJqAppStatus()) || "1".equals(odr1010Response.getResult().getSyAppStatus())) {
                     //  add  by  hxl  添加自动更新状态
+                    insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
                     insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                     //修改状态 转人工
-                    insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+                   // insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                     String message = "";
                     String jqAppStatusMessage = odr1010Response.getResult().getJqAppStatusMessage();

+ 9 - 3
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -286,7 +286,8 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         InsuranceSlipResp insuranceSlip = guorenRequestApiComponent.insuranceSlip(yaQuoteInfoVo,
                 carPriceResult.getInputvo(), orderCode, specialAgreementVo);
         if (insuranceSlip.getResultCode() == 1) {
-            return HttpResult.error(insuranceSlip.getResultMsg());
+            throw new SystemException(insuranceSlip.getResultMsg());
+//            return HttpResult.error(insuranceSlip.getResultMsg());
         }
 
         iac.setJqapplyno(insuranceSlip.getData().getProposalNoDetailVo().getProposalNoCI());
@@ -379,18 +380,23 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
 
         }
         //  add  by  hxl  添加自动更新状态
-        insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
+        //insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
             iac.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+            //  add  by  hxl  添加自动更新状态
+            insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
             insAreaCompanyService.updateCompanyAndOrdersMessage(iac, message);
             return HttpResult.error(message);
         }
 
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.TO_BACK.getCode())) {
+            //  add  by  hxl  添加自动更新状态
+            //insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
             insAreaCompanyService.updateCompanyAndOrdersMessage(iac, message);
             return HttpResult.error(message);
         }
-
+        //  add  by  hxl  添加自动更新状态
+        insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
         InsUtils.buildOrderStatus(order, iac);
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
             //获取签名地址

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

@@ -269,8 +269,9 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
                 return getPayURL(insAreaCompany, huaTaiConfigureParameters);
             } else if ("9".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//待核保
                 //  add  by  hxl  添加自动更新状态
-                insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                 insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+                insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
+                //insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
                 return HttpResult.ok("已转人工核保");

+ 37 - 12
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -15,12 +15,16 @@ import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.fee.service.FeeRuleSchemeNewService;
+import com.ydtech.modules.fnc.entity.InsFeeAudit;
+import com.ydtech.modules.fnc.entity.InsFeeAuditHistory;
 import com.ydtech.modules.fnc.entity.vo.ProblemOrderQueryVo;
+import com.ydtech.modules.fnc.service.InsFeeAuditHistoryService;
 import com.ydtech.modules.fnc.service.InsFeeAuditService;
 import com.ydtech.modules.ins.model.vo.KindInfoVo;
 import com.ydtech.modules.ins.model.vo.RiskInfoVo;
 import com.ydtech.modules.message.constants.MessageTypeConstants;
 import com.ydtech.modules.message.service.MessageSecretaryService;
+import com.ydtech.modules.order.constants.OrderFeeAuditHistroy;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.dao.InsOrdersMapper;
 import com.ydtech.modules.order.entity.*;
@@ -34,6 +38,7 @@ import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import com.ydtech.modules.protocols.entity.vo.AgreementProductQueryVo;
 import com.ydtech.modules.protocols.service.PtlAgreementProductCostsNewService;
+import com.ydtech.utils.BigDecimalUtils;
 import com.ydtech.utils.idgen.IdGenerate;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -95,6 +100,9 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
     @Autowired
     private InsAreaCompanyExternalPolicyService insAreaCompanyExternalPolicyService;
 
+    @Autowired
+    private InsFeeAuditHistoryService insFeeAuditHistoryService;
+
     public InsAreaCompanyServiceImpl(@Lazy InsOrdersService insOrdersService, InsOrdersTrackService insOrdersTrackService, SysDeptService sysDeptService) {
         this.insOrdersService = insOrdersService;
         this.insOrdersTrackService = insOrdersTrackService;
@@ -843,11 +851,10 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         if (costsNews.isEmpty()) {
             throw new SystemException("没有找到费用信息");
         }
-        BigDecimal jqSuperviseCostsProportion, sySuperviseCostsProportion, noSuperviseCostsProportion = new BigDecimal(0);
-        jqSuperviseCostsProportion = (new BigDecimal(costsNews.get(0).getJqCarCostsProportion()));
-        sySuperviseCostsProportion = (new BigDecimal(costsNews.get(0).getSyCarCostsProportion()));
-        noSuperviseCostsProportion = (new BigDecimal(costsNews.get(0).getNoCarCostsProportion()));
-
+        BigDecimal jqSuperviseCostsProportion, sySuperviseCostsProportion, noSuperviseCostsProportion;
+        jqSuperviseCostsProportion = BigDecimalUtils.transferToBigDecmail(costsNews.get(0).getJqCarCostsProportion());
+        sySuperviseCostsProportion = BigDecimalUtils.transferToBigDecmail(costsNews.get(0).getSyCarCostsProportion());
+        noSuperviseCostsProportion = BigDecimalUtils.transferToBigDecmail(costsNews.get(0).getNoCarCostsProportion());
 
         InsAreaCompanyExternalFee insAreaCompanyExternalFee = new InsAreaCompanyExternalFee();
         insAreaCompanyExternalFee.setSubOrderNo(subOrderNo);
@@ -898,6 +905,23 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
         //计算费用
         feeRuleSchemeNewService.calcCostsExternal(costsNews.get(0), insAreaCompany);
+
+        // add  by  hxl  2024-10-10  外部订单添加暂存,保存逻辑插入的审核轨迹表
+        InsFeeAudit insFeeAudit = insFeeAuditService.getOne(new LambdaQueryWrapper<InsFeeAudit>()
+                .eq(InsFeeAudit::getOrderno, insAreaCompany.getOrderno())
+                .eq(InsFeeAudit::getInsOrderNo, insAreaCompany.getId()));
+        if (insFeeAudit != null) {
+            String status = "";
+            if (insOrdersEditingVo.getStageFlag() == 0) {
+                status = OrderFeeAuditHistroy.OFH_61.getCode();
+            } else {
+                status = OrderFeeAuditHistroy.OFH_62.getCode();
+            }
+            //说明是驳回的数据,插入审核驳回表
+            InsFeeAuditHistory his = new InsFeeAuditHistory(insAreaCompany, status, new BaseController().getUser().getName());
+            // 保存审核轨迹
+            insFeeAuditHistoryService.save(his);
+        }
         // add by  hxl   2024-07-10  保存时查询审核表
         if (insOrdersEditingVo.getStageFlag() == 1) {
             //重新进入审核状态
@@ -1051,15 +1075,16 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         List<SubOrderCountDTO> subOrderCountDTO = baseMapper.getSubOrderCountDTO(orderNo);
         return subOrderCountDTO.stream().collect(Collectors.toMap(x -> x.getOrderNo() + x.getOrderStatus(), SubOrderCountDTO::getCount));
     }
-     /**
-      *  @version
-      *  @author: hxl
-      *  @Date: 2024/9/30 8:54
-      *  @Description:  查询驳回的订单信息
-      */
+
+    /**
+     * @version
+     * @author: hxl
+     * @Date: 2024/9/30 8:54
+     * @Description: 查询驳回的订单信息
+     */
     @Override
     public Page<InsAreaCompany> getAllRejectOrders(Page page, RejectPageQueryVo rejectPageQueryVo) {
-        return baseMapper.getAllRejectOrders(page,rejectPageQueryVo);
+        return baseMapper.getAllRejectOrders(page, rejectPageQueryVo);
     }
 
 }

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

@@ -217,8 +217,9 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         // 是否人工核保
         if (StringUtils.isNotEmpty(crawlerAuditResponse.getManual())) {
             //  add  by  hxl  添加自动更新状态
-            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
             insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+            insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
+            //insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
             String message = crawlerAuditResponse.getMessage();
             insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);

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

@@ -159,7 +159,7 @@ public class InsOrderQrCodeServiceImpl extends ServiceImpl<InsOrderQrCodeMapper,
                 }
             } else {
                 //base64 二维码图片
-
+                jumlUrl = jumlUrl.replaceAll("\n","");
                 String qrCodeUrl = getQrCodeUrl(jumlUrl);
                 insOrderQrCode.setJumpUrl(qrCodeUrl);
             }

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

@@ -766,6 +766,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             BigDecimal sum = feeOrderNewVo.getExportFee()
                     .stream()
+                    .filter(x -> BusinessConstant.FEE_INSURANCE_TYPE_4.equals(x.getInsuranceType()))
                     .map(FeeOrderNewVo.ExportFee::getTotalAmount)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             orderAndAreaCompany.setSumFee(sum.toString());
@@ -1416,7 +1417,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             BigDecimal sum = feeOrderNewVo.getExportFee()
                     .stream()
-                    .filter(x-> BusinessConstant.FEE_INSURANCE_TYPE_4.equals(x.getInsuranceType()))
+                    .filter(x -> BusinessConstant.FEE_INSURANCE_TYPE_4.equals(x.getInsuranceType()))
                     .map(FeeOrderNewVo.ExportFee::getTotalAmount)
                     .reduce(BigDecimal.ZERO, BigDecimal::add);
             orderAndAreaCompany.setSumFee(sum.toString());

+ 56 - 7
src/main/java/com/ydtech/modules/order/service/impl/InsSubOrderUpdateDetailServiceImpl.java

@@ -1,14 +1,13 @@
 package com.ydtech.modules.order.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.modules.base.controller.BaseController;
-import com.ydtech.modules.ins.model.InsTaskHistory;
-import com.ydtech.modules.ins.service.InsTaskHistoryService;
-import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
 import com.ydtech.modules.order.dao.InsSubOrderUpdateDetailMapper;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrdersTrack;
 import com.ydtech.modules.order.entity.po.InsSubOrderUpdateDetail;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersTrackService;
 import com.ydtech.modules.order.service.InsSubOrderUpdateDetailService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,7 +15,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author Administrator
@@ -27,6 +29,9 @@ import java.util.Date;
 public class InsSubOrderUpdateDetailServiceImpl extends ServiceImpl<InsSubOrderUpdateDetailMapper, InsSubOrderUpdateDetail>
         implements InsSubOrderUpdateDetailService {
 
+    @Autowired
+    private InsAreaCompanyService insAreaCompanyService;
+
     @Autowired
     private InsOrdersTrackService insOrdersTrackService;
 
@@ -76,15 +81,59 @@ public class InsSubOrderUpdateDetailServiceImpl extends ServiceImpl<InsSubOrderU
             }else if("2".equals(updateMethod)){
                 updateMethodRemark="自动更新为";
             }
+            Date date = new Date();
             updateRemark =new BaseController().getUser().getName()+"将子订单"+subOrder.getId()+"的"+oldRemark+updateMethodRemark+newRemark;
-            InsSubOrderUpdateDetail  detail =new InsSubOrderUpdateDetail(subOrder.getId(), subOrder.getOrderno(), updateMethod, new Date(), new BaseController().getUser().getId(), new BaseController().getUser().getName(), updateRemark,updateType, oldStatus, newStatus);
-            this.save(detail);
+            InsSubOrderUpdateDetail  detail =new InsSubOrderUpdateDetail(subOrder.getId(), subOrder.getOrderno(), updateMethod, date, new BaseController().getUser().getId(), new BaseController().getUser().getName(), updateRemark,updateType, oldStatus, newStatus);
+            //保证承保数据只有一条
+            if(InsOrderStatusEnum.WAIT_PAY.getCode().equals(oldStatus) &&  InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(newStatus)){
+                LambdaQueryWrapper<InsSubOrderUpdateDetail> lqw = new LambdaQueryWrapper<>();
+                lqw.eq(InsSubOrderUpdateDetail::getSubOrderNo, subOrder.getId());
+                lqw.eq(InsSubOrderUpdateDetail::getUpdateAfterStatus, InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
+                List<InsSubOrderUpdateDetail> list = this.list(lqw);
+                if(list==null || list.size()==0) {
+                    this.save(detail);
+                }
+            }else{
+                this.save(detail);
+            }
+            InsAreaCompany old = insAreaCompanyService.getById(subOrder.getId());
+
+            //插入轨迹表
+            InsOrdersTrack insOrdersTrack = new InsOrdersTrack(subOrder.getId(), subOrder.getCompanyId(), subOrder.getInscompany(), subOrder.getOrderno(), newStatus, new BaseController().getUser().getId(), new BaseController().getUser().getName(),updateRemark);
+            //如果是人工核保更新人工核保时间,出入轨迹表
+            if(InsOrderStatusEnum.QUOTE_ING.getCode().equals(oldStatus) &&  InsOrderStatusEnum.WAIT_AUDIT.getCode().equals(newStatus)){
+                //插入轨迹表
+                insOrdersTrack.setOrderType("2");
+                insOrdersTrack.setOrderStatus("人工核保");
+                insOrdersTrackService.save(insOrdersTrack);
+                LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                insOrdersTrack.setCreateTime(localDateTime);
+                //更新核保时间
+                old.setUnderwritingTime(date);
+                insAreaCompanyService.updateById(old);
+            }
+            //如果是状态为核保待缴费插入轨迹表
+            if(InsOrderStatusEnum.QUOTE_ING.getCode().equals(oldStatus) &&  InsOrderStatusEnum.WAIT_PAY.getCode().equals(newStatus)){
+                insOrdersTrack.setOrderType("1");
+                insOrdersTrack.setOrderStatus("自动核保");
+                LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                insOrdersTrack.setCreateTime(localDateTime);
+                insOrdersTrackService.save(insOrdersTrack);
+                //更新核保时间
+                old.setUnderwritingTime(date);
+                insAreaCompanyService.updateById(old);
+            }
             //如果是状态为核保待缴费插入轨迹表
             if(InsOrderStatusEnum.WAIT_PAY.getCode().equals(oldStatus) &&  InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(newStatus)){
-                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                 //插入轨迹表
-                InsOrdersTrack insOrdersTrack = new InsOrdersTrack(subOrder.getId(), subOrder.getCompanyId(), subOrder.getInscompany(), subOrder.getOrderno(), newStatus, new BaseController().getUser().getId(), new BaseController().getUser().getName(),updateRemark);
+                insOrdersTrack.setOrderType(updateMethod);
+                LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
+                insOrdersTrack.setCreateTime(localDateTime);
                 insOrdersTrackService.save(insOrdersTrack);
+                //更新状态   更新时间
+                old.setUpdateStatusTime(date);
+                old.setUpdateStatus(updateMethod);
+                insAreaCompanyService.updateById(old);
             }
 
         }

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

@@ -63,4 +63,8 @@ public class InsuranceCompanyPolymerizationServiceImpl implements InsuranceCompa
         return false;
     }
 
+    @Override
+    public boolean updateOrder(InsAreaCompany insAreaCompany) {
+        return false;
+    }
 }

+ 25 - 0
src/main/java/com/ydtech/modules/order/service/impl/PingAnOrderApiServiceImpl.java

@@ -120,6 +120,9 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
 
 
     private final  PinganRecordService  pinganRecordService;
+
+
+    private final  InsSubOrderUpdateDetailService  insSubOrderUpdateDetailService;
     /**
      * @Description 获取财意险险种套餐列表  调用 4.4
      * @Author hxl
@@ -1029,14 +1032,20 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
                         url = signEleApplyResponse.getResultMessage();
                     }
                     insAreaCompany.setPaymentLink(url);
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_PAY.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
                 }else if((OrderStatusCodeEnum.ORDER_STATUS_CODE_BH.getCode().equals(status) || OrderStatusCodeEnum.ORDER_STATUS_CODE_BE.getCode().equals(status)
                         ||  OrderStatusCodeEnum.ORDER_STATUS_CODE_B1.getCode().equals(status)  || OrderStatusCodeEnum.ORDER_STATUS_CODE_B6.getCode().equals(status) )  && ("0".equals(insAreaCompany.getOrderstatus()))){
                     // 待验车 BH 资料人工审核-BE B1 B6
                     insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 }else if(OrderStatusCodeEnum.ORDER_STATUS_CODE_B4.getCode().equals(status)){
                     //变为核保退回
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.TO_BACK.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
                 }
 
@@ -1283,6 +1292,8 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
                     if (insAreaCompany.getPayDate() == null) {
                         insAreaCompany.setPayDate(LocalDateTime.now());
                     }
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                     insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
                     return HttpResult.ok("承保成功");
@@ -1424,6 +1435,8 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
                     if (insAreaCompany.getPayDate() == null) {
                         insAreaCompany.setPayDate(LocalDateTime.now());
                     }
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                     insAreaCompanyService.updateCompanyAndOrdersNew(insAreaCompany);
                 }
@@ -1697,10 +1710,14 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
                         url = signEleApplyResponse.getResultMessage();
                     }
                     insAreaCompany.setPaymentLink(url);
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_PAY.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode() );
                     insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
                 }else if(OrderStatusCodeEnum.ORDER_STATUS_CODE_B5.getCode().equals(status) && ("0".equals(insAreaCompany.getOrderstatus()) || "1".equals(insAreaCompany.getOrderstatus()) || "2".equals(insAreaCompany.getOrderstatus()))) {
                     //承保
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                     insAreaCompany.setPayDate(LocalDateTime.now());
                     insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
@@ -1708,9 +1725,13 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
                 }else if(OrderStatusCodeEnum.ORDER_STATUS_CODE_BH.getCode().equals(status) || OrderStatusCodeEnum.ORDER_STATUS_CODE_BE.getCode().equals(status)
                         ||  OrderStatusCodeEnum.ORDER_STATUS_CODE_B1.getCode().equals(status)  || OrderStatusCodeEnum.ORDER_STATUS_CODE_B6.getCode().equals(status)){
                     // 待验车 BH 资料人工审核-BE B1 B6
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 }else if(OrderStatusCodeEnum.ORDER_STATUS_CODE_B4.getCode().equals(status)){
                     //变为核保退回
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.TO_BACK.getCode(),"1");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
                 }
             }
@@ -2322,10 +2343,14 @@ public class PingAnOrderApiServiceImpl implements PingAnOrderApiService {
                 logger.info(documentStatusListResponse.toString()+"调用状态查询接口");
                 if(OrderStatusCodeEnum.ORDER_STATUS_CODE_B2.getCode().equals(status) && ("0".equals(insAreaCompany.getOrderstatus()) || "1".equals(insAreaCompany.getOrderstatus()) )){
                     //说明核保成功,更新大订单和小订单的状态为1  更新为已核保待缴费
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_PAY.getCode(),"2");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode() );
                     insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
                 }else if(OrderStatusCodeEnum.ORDER_STATUS_CODE_B5.getCode().equals(status) && ("0".equals(insAreaCompany.getOrderstatus()) || "1".equals(insAreaCompany.getOrderstatus()) || "2".equals(insAreaCompany.getOrderstatus()))) {
                     //承保
+                    //  add  by  hxl  添加手动更新状态
+                    insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"2");
                     insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                     insAreaCompany.setPayDate(LocalDateTime.now());
                     insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);

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

@@ -240,9 +240,10 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
                 zmConfigureParameters);
         // 3. 人工核保
         if (SubmitStatus.S_3.getCode().equals(response.getSubmitStatus())) {
+            insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
             //  add  by  hxl  添加手动更新状态
             insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
-            insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+            //insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
             String message = response.getSubmitNotion();
             insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, message);

+ 9 - 8
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -228,18 +228,21 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
         } catch (SystemException systemException) {
             // 下发修改
-            OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
-            QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(orderNoRequest, httpHeaders);
+            QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(insAreaCompany.getInsOrderNo(), httpHeaders);
             QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
             String uwMsg = systemException.getMessage();
 
             if (OrderStatusEnum.O_3.getCode().equals(resultObj.getOrderStatus())) {
+                //  add  by  hxl  添加手动更新状态
+                insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.TO_BACK.getCode(),"1");
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
                 return HttpResult.error(OrderStatusEnum.O_3.getName() + ":" + uwMsg);
                 // 人工核保
             } else if (OrderStatusEnum.O_1.getCode().equals(resultObj.getOrderStatus())) {
                 insAreaCompany.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
+                //  add  by  hxl  添加手动更新状态
+                insSubOrderUpdateDetailService.insertData(insAreaCompany,insAreaCompany.getOrderstatus(),InsOrderStatusEnum.WAIT_AUDIT.getCode(),"1");
                 insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
                 insAreaCompanyService.updateCompanyAndOrdersMessage(insAreaCompany, uwMsg);
                 return HttpResult.error("人工核保" + ":" + uwMsg);
@@ -290,7 +293,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
     public HttpResult<String> getPolicyPrint(PolicyPrintVo policyPrintVo) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(policyPrintVo.getCompanyId());
         if (!InsOrderStatusEnum.ACCEPT_INSURANCE.getCode().equals(insAreaCompany.getOrderstatus())) {
-            throw new SystemException("此订单还未承");
+            throw new SystemException("此订单还未承");
         }
 
         InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
@@ -348,7 +351,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
         // 2 请求查看订单状态
         OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
-        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(orderNoRequest, httpHeaders);
+        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(insAreaCompany.getInsOrderNo(), httpHeaders);
         QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
 
         String orderStatus = resultObj.getOrderStatus();
@@ -429,9 +432,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         HttpHeaders httpHeaders = zijinRequestApiComponents.getHttpHeaders(insAreaCompany.getAgreementId());
         // 2 请求查看订单状态
 
-
-        OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
-        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(orderNoRequest, httpHeaders);
+        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(insAreaCompany.getInsOrderNo(), httpHeaders);
 
         // 3. 订单生效以后修改状态
         QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
@@ -636,7 +637,7 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
 
         // 2 请求查看订单状态
         OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
-        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(orderNoRequest, httpHeaders);
+        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(insAreaCompany.getInsOrderNo(), httpHeaders);
         QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
 
         String orderStatus = resultObj.getOrderStatus();

+ 1 - 1
src/main/java/com/ydtech/modules/xxl/service/impl/ZijinQueryStatusService.java

@@ -45,7 +45,7 @@ public class ZijinQueryStatusService implements BaseQueryStatusService {
 
         // 2 请求查看订单状态
         OrderNoRequest orderNoRequest = new OrderNoRequest(insAreaCompany.getId());
-        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(orderNoRequest, httpHeaders);
+        QueryOrderDetailResponse queryOrderDetailResponse = zijinRequestApiComponents.getOrderDetail(insAreaCompany.getInsOrderNo(), httpHeaders);
         QueryOrderDetailResponse.ResultObjDTO resultObj = queryOrderDetailResponse.getResultObj();
 
         String orderStatus = resultObj.getOrderStatus();

+ 14 - 0
src/main/resources/mapper/modules/admin/SysUserRoleKztMapper.xml

@@ -23,6 +23,20 @@
     <delete id="deleteByUserId">
           delete  from  sys_user_role_kzt  where user_id=#{userId}  and sys_type=#{sysType}
     </delete>
+
+    <delete id="deleteBatcgByUserId">
+        delete from sys_user_role_kzt
+        <where>
+            <if test="userIds !=null  and  userIds  !=''  and userIds.size()>0">
+                and user_id IN
+                <foreach collection="userIds" item="id" index="index" open="(" close=")" separator=",">
+                    #{id}
+                </foreach>
+            </if>
+            and sys_type=#{number}
+        </where>
+    </delete>
+
     <select id="queryPageByParam" resultType="com.ydtech.modules.admin.model.SysUser">
         SELECT
             su.id,

+ 42 - 67
src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml

@@ -6,42 +6,36 @@
 
     <select id="getBusinessAgentData" resultType="com.ydtech.modules.admin.model.vo.BusinessAgentData">
         select
-        io.userid as "userId",
+        su.id as "userId",
         su.name as "userName",
         sd.id as "deptId",
+        IFNULL(a.sumpremium,0) as "sumpremium",
+        IFNULL(a.jqpremium,0) as "jqpremium",
+        IFNULL(a.sypremium,0) as "sypremium",
+        IFNULL(a.taxamount,0) as "taxamount",
+        IFNULL(a.jypremium,0) as "jypremium",
+        sd.management_source as "managementSource"
+        from sys_user su
+        left join sys_dept sd on sd.id =su.dept_id
+        left join (
+        select
+        io.userid as "userId",
         sum(IFNULL(jqpremium, 0) + IFNULL(sypremium, 0)+ IFNULL(jypremium, 0)) as "sumpremium",
         IFNULL(sum(jqpremium),0) as "jqpremium",
         IFNULL(sum(sypremium),0) as "sypremium",
         IFNULL(sum(taxamount),0) as "taxamount",
-        IFNULL(sum(jypremium),0) as "jypremium",
-        sd.management_source as "managementSource"
+        IFNULL(sum(jypremium),0) as "jypremium"
         from ins_area_company iac
         left join ins_orders io on io.orderno =iac.orderno
-        left join sys_user su on io.userid =su.id
-        left join sys_dept sd on sd.id =su.dept_id
         <where>
             iac.orderstatus = '3'
             <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
-                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
             </if>
 
-            <if test="vo.userId !=null  and vo.userId!=''">
-                and su.id=#{vo.userId}
-            </if>
-
-            <if test="vo.managementSource !=null  and vo.managementSource!=''">
-                and sd.management_source=#{vo.managementSource}
-            </if>
-
-            <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
-                and su.id in
-                <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
             <if test="vo.deptIds != null and vo.deptIds != '' and vo.deptIds.size() > 0">
-                AND io.deptid  in
+                AND io.deptid in
                 <foreach collection="vo.deptIds" item="item" open="(" separator="," close=")">
                     #{item}
                 </foreach>
@@ -50,74 +44,55 @@
             <if test="vo.deptId !=null  and vo.deptId!=''">
                 and io.deptid like concat('%',#{vo.deptId},'%')
             </if>
-
+        </where>
+        group by io.userid
+        ) a  on  a.userId  =su.id
+        <where>
+            1=1
+            <if test="vo.userId !=null  and vo.userId!=''">
+                and su.id=#{vo.userId}
+            </if>
+            <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
+                and su.id in
+                <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
             <if test="vo.userName !=null  and vo.userName!=''">
                 and su.name=#{vo.userName}
             </if>
+
+            <if test="vo.managementSource !=null  and vo.managementSource!=''">
+                and sd.management_source=#{vo.managementSource}
+            </if>
         </where>
-        group by io.userid,su.name,sd.management_source,sd.id
+        order by  a.sumpremium  desc
     </select>
 
     <select id="getBusinessAgentDataTotal" resultType="java.lang.Long">
         select
-            count(0)
-        from  (
-        select
-        io.userid
-        from ins_area_company iac
-        left join ins_orders io on io.orderno =iac.orderno
-        left join sys_user su on io.userid =su.id
+        COUNT(0)
+        from sys_user su
         left join sys_dept sd on sd.id =su.dept_id
-
         <where>
-            iac.orderstatus = '3'
-            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
-                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
-            </if>
-
-            <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
-                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{vo.days} DAY)
-            </if>
-
-            <if test="vo.userName !=null  and vo.userName!=''">
-                and su.name=#{vo.userName}
-            </if>
-
+            1=1
             <if test="vo.userId !=null  and vo.userId!=''">
                 and su.id=#{vo.userId}
             </if>
-
             <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
                 and su.id in
                 <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
                     #{item}
                 </foreach>
             </if>
-
-            <if test="vo.deptId !=null  and vo.deptId!=''">
-                and io.deptid like concat('%',#{vo.deptId},'%')
+            <if test="vo.userName !=null  and vo.userName!=''">
+                and su.name=#{vo.userName}
             </if>
 
             <if test="vo.managementSource !=null  and vo.managementSource!=''">
                 and sd.management_source=#{vo.managementSource}
             </if>
-            <if test="vo.deptIds != null and vo.deptIds != '' and vo.deptIds.size() > 0">
-                AND io.deptid  in
-                <foreach collection="vo.deptIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
-
-            <if test="vo.userIds != null and vo.userIds != '' and vo.userIds.size() > 0">
-                AND io.userid  in
-                <foreach collection="vo.userIds" item="item" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
         </where>
-        group by io.userid
-              ) a
     </select>
 
     <select id="getBusinessAgentDataTotalAdd" resultType="com.ydtech.modules.admin.model.vo.BusinessAgentData">
@@ -259,7 +234,7 @@
             </if>
 
             <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
+                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
                 DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
             </if>
 
@@ -298,7 +273,7 @@
                   </if>
 
                   <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                      AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
+                      AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
                       DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
                   </if>
 

+ 452 - 10
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1149,8 +1149,186 @@
                 and su.id =#{taskStatisticsVo.userId}
             </if>
         </where>
+    </select>
 
+    <select id="queryPageElectric"  resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        select a.*, su.name  as "userName",
+        inf.url  as "logo",
+        sui.sex as "sex",
+        su.leader_name as "leaderName",
+        su2.mobile  as "leaderMobile"
+        from (
+        SELECT
+        sd.NAME AS "deptName",
+        io.userid AS "userId",
+        sd.parent_id as "deptId",
+        COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS qutationCount,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,
+        COUNT( CASE WHEN iac.orderstatus = 4 THEN 1 END ) AS underwritingReturn,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) / COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS "passingRate",
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) /  COUNT( iac.orderstatus ) AS "closeRate",
+        (COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )  +  COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ))/ COUNT( iac.orderstatus ) AS "contributionRate",
+        COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) / COUNT( iac.orderstatus ) AS "quotationRate",
+        COUNT(CASE WHEN io.order_source = 0  and iac.orderstatus = 0 THEN 1 END) as "pcOrderSource",
+        COUNT(CASE WHEN io.order_source = 1  and iac.orderstatus = 0 THEN 1 END) as "appOrderSource",
+        COUNT( CASE WHEN iac.orderstatus = 1 THEN 1 END ) AS "auditOrder"
+        FROM
+        ins_area_company iac
+        LEFT JOIN ins_orders io ON io.orderno = iac.orderno
+        LEFT JOIN sys_dept sd ON sd.id = io.deptid
+        <where>
+            sd.management_source = '3'
+            <if test="taskStatisticsVo.provinceId != null and taskStatisticsVo.provinceId != ''">
+                and io.deptid like "${taskStatisticsVo.provinceId}%"
+            </if>
+            <if test="taskStatisticsVo.cityId != null and taskStatisticsVo.cityId != ''">
+                and io.deptid like "${taskStatisticsVo.cityId}%"
+            </if>
+            <if test="taskStatisticsVo.countyId != null and taskStatisticsVo.countyId != ''">
+                and io.deptid like "${taskStatisticsVo.countyId}%"
+            </if>
+            <if test="taskStatisticsVo.houseId != null and taskStatisticsVo.houseId != ''">
+                and io.deptid like "${taskStatisticsVo.houseId}%"
+            </if>
+
+            <if test="taskStatisticsVo.userId != null and taskStatisticsVo.userId != ''">
+                and io.userid =#{taskStatisticsVo.userId}
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( io.createtime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+            </if>
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d') AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{taskStatisticsVo.days} DAY)
+            </if>
+
+            <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
+                AND sd.id  in
+                <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="taskStatisticsVo.userIds != null and taskStatisticsVo.userIds != '' and taskStatisticsVo.userIds.size() > 0">
+                AND io.userid  in
+                <foreach collection="taskStatisticsVo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                <choose>
+                    <when test="taskStatisticsVo.days =='1'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 1 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='7'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 7 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='30'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 30 DAY)
+                    </when>
+                </choose>
+            </if>
+        </where>
+        GROUP BY
+        io.userid,
+        sd.NAME,
+        sd.id
+        ) a
+        left  join  sys_user su  on su.id =a.userId
+        LEFT JOIN  ins_upload_files   inf on  su.head_sculpture  =inf.id
+        LEFT JOIN sys_user_info  sui  on  sui .id =su.id
+        LEFT JOIN  sys_user  su2  on su2.id =su.leader_id
+        <where>
+            <if test='taskStatisticsVo.userName !=null and taskStatisticsVo.userName!="" '>
+                and su.name like concat('%',#{taskStatisticsVo.userName},'%')
+            </if>
+            <if test='taskStatisticsVo.leaderId !=null and taskStatisticsVo.leaderId!="" '>
+                and su.leader_id  =#{taskStatisticsVo.leaderId}
+            </if>
+             <if test='taskStatisticsVo.userId !=null and taskStatisticsVo.userId!="" '>
+                and su.id =#{taskStatisticsVo.userId}
+            </if>
+        </where>
     </select>
+
+    <select id="queryPageElectricTotal"  resultType="java.lang.Long">
+        select count(0) from (
+        SELECT
+        io.userid
+        FROM
+        ins_area_company iac
+        LEFT JOIN ins_orders io ON io.orderno = iac.orderno
+        LEFT JOIN sys_dept sd ON sd.id = io.deptid
+        <where>
+            sd.management_source = '3'
+            <if test="taskStatisticsVo.provinceId != null and taskStatisticsVo.provinceId != ''">
+                and io.deptid like "${taskStatisticsVo.provinceId}%"
+            </if>
+            <if test="taskStatisticsVo.cityId != null and taskStatisticsVo.cityId != ''">
+                and io.deptid like "${taskStatisticsVo.cityId}%"
+            </if>
+            <if test="taskStatisticsVo.countyId != null and taskStatisticsVo.countyId != ''">
+                and io.deptid like "${taskStatisticsVo.countyId}%"
+            </if>
+            <if test="taskStatisticsVo.houseId != null and taskStatisticsVo.houseId != ''">
+                and io.deptid like "${taskStatisticsVo.houseId}%"
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( io.createtime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+            </if>
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d') AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{taskStatisticsVo.days} DAY)
+            </if>
+
+            <if test="taskStatisticsVo.userId != null and taskStatisticsVo.userId != ''">
+                and io.userid =#{taskStatisticsVo.userId}
+            </if>
+
+            <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
+                AND sd.id  in
+                <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="taskStatisticsVo.userIds != null and taskStatisticsVo.userIds != '' and taskStatisticsVo.userIds.size() > 0">
+                AND io.userid  in
+                <foreach collection="taskStatisticsVo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
+                <choose>
+                    <when test="taskStatisticsVo.days =='1'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 1 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='7'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 7 DAY)
+                    </when>
+
+                    <when test="taskStatisticsVo.days =='30'">
+                        and io.createtime >= DATE_SUB(NOW(), INTERVAL 30 DAY)
+                    </when>
+                </choose>
+            </if>
+        </where>
+        GROUP BY
+        io.userid
+        ) a
+    </select>
+
+
     <select id="queryPageTaskStatisticsTotal"  resultType="java.lang.Long">
         select count(0) from (
         SELECT
@@ -1276,9 +1454,6 @@
                 AND  iac.company_id =#{taskStatisticsVo.companyId}
             </if>
 
-            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
-                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{taskStatisticsVo.days} DAY)
-            </if>
             <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
                 AND io.deptid  in
                 <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
@@ -1330,15 +1505,12 @@
                 and io.deptid like concat('%', #{taskStatisticsVo.houseId}, '%')
             </if>
             <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
-                AND   io.createtime   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+                AND   DATE_FORMAT( io.createtime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
             </if>
             <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
                 AND   iac.signing_time   BETWEEN #{taskStatisticsVo.beginDate} AND #{taskStatisticsVo.endDate}
             </if>
 
-            <if test="taskStatisticsVo.days !=null  and taskStatisticsVo.days !='' ">
-                and iac.createtime >= DATE_SUB(NOW(), INTERVAL #{taskStatisticsVo.days} DAY)
-            </if>
             <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
                 AND io.deptid  in
                 <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
@@ -1449,7 +1621,7 @@
                 </choose>
             </if>
         </where>
-        GROUP BY io.userid , su.name, sd.id , sd.name
+        GROUP BY io.userid , su.name, sd.id , sd.name,suLeader.name,suLeader.mobile
     </select>
 
 
@@ -1543,8 +1715,6 @@
             1=1
             and iac.id = ifa.ins_order_no
             AND iac.orderstatus = 3
-
-
             <if test="taskStatisticsVo.reviewer !=null  and  taskStatisticsVo.reviewer !=''">
                 and su.name =#{taskStatisticsVo.reviewer}
             </if>
@@ -1589,6 +1759,278 @@
     </select>
 
 
+    <select id="costCenterDetails" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+            ifa.audituser as "audituser",
+            su.name  as "audituserName",
+            su.mobile as "audituserMobile",
+            iac.inscompany as "insuranceCompanyName",
+            COUNT( CASE WHEN ifa.auditstatus = 1 THEN 1 END ) AS "auditstatusOrders",
+            COUNT( CASE WHEN ifa.auditstatus = 0 THEN 1 END ) AS "auditOrder"
+        FROM
+            ins_fee_audit ifa
+            LEFT JOIN ins_orders io ON io.orderno = ifa.orderno
+            LEFT JOIN ins_area_company iac ON iac.orderno = io.orderno
+            LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+            LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_id
+            left join sys_user  su  on su.id =ifa.audituser
+        <where>
+            1=1
+            and iac.id = ifa.ins_order_no
+            AND iac.orderstatus = 3
+            AND ifa.audituser != '自动审核'
+            AND (ifa.auditstatus ='1' or ifa.auditstatus ='0')
+            <if test="taskStatisticsVo.reviewer !=null  and  taskStatisticsVo.reviewer !=''">
+                and su.name =#{taskStatisticsVo.reviewer}
+            </if>
+
+            <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.audittime !=null  and  taskStatisticsVo.audittime !=''">
+                and ifa.audittime =#{taskStatisticsVo.audittime}
+            </if>
+
+             <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( ifa.audittime, '%Y-%m-%d')  BETWEEN  DATE_FORMAT( #{taskStatisticsVo.createtimeStart}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
+                AND io.deptid  in
+                <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="taskStatisticsVo.userIds != null and taskStatisticsVo.userIds != '' and taskStatisticsVo.userIds.size() > 0">
+                AND su.id  in
+                <foreach collection="taskStatisticsVo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <choose>
+                <when test="taskStatisticsVo.riskCode != null and taskStatisticsVo.riskCode != '' and  taskStatisticsVo.riskCode != 'all' ">
+                    and iac.product = #{taskStatisticsVo.riskCode}
+                </when>
+            </choose>
+        </where>
+        GROUP BY
+          ifa.audituser,su.name,su.mobile,iac.inscompany
+    </select>
+
+    <select id="costCenterDetailsExcel" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDtoExcel">
+        SELECT
+            ifa.audituser as "audituser",
+            su.name  as "audituserName",
+            su.mobile as "audituserMobile",
+            iac.inscompany as "insuranceCompanyName",
+            COUNT( CASE WHEN ifa.auditstatus = 1 THEN 1 END ) AS "auditstatusOrders",
+            COUNT( CASE WHEN ifa.auditstatus = 0 THEN 1 END ) AS "auditOrder"
+        FROM
+            ins_fee_audit ifa
+            LEFT JOIN ins_orders io ON io.orderno = ifa.orderno
+            LEFT JOIN ins_area_company iac ON iac.orderno = io.orderno
+            LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+            LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_id
+            left join sys_user  su  on su.id =ifa.audituser
+        <where>
+            1=1
+            and iac.id = ifa.ins_order_no
+            AND iac.orderstatus = 3
+            AND ifa.audituser != '自动审核'
+            AND (ifa.auditstatus ='1' or ifa.auditstatus ='0')
+            <if test="taskStatisticsVo.reviewer !=null  and  taskStatisticsVo.reviewer !=''">
+                and su.name =#{taskStatisticsVo.reviewer}
+            </if>
+
+            <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.audittime !=null  and  taskStatisticsVo.audittime !=''">
+                and ifa.audittime =#{taskStatisticsVo.audittime}
+            </if>
+
+             <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( ifa.audittime, '%Y-%m-%d')  BETWEEN  DATE_FORMAT( #{taskStatisticsVo.createtimeStart}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
+                AND io.deptid  in
+                <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="taskStatisticsVo.userIds != null and taskStatisticsVo.userIds != '' and taskStatisticsVo.userIds.size() > 0">
+                AND su.id  in
+                <foreach collection="taskStatisticsVo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <choose>
+                <when test="taskStatisticsVo.riskCode != null and taskStatisticsVo.riskCode != '' and  taskStatisticsVo.riskCode != 'all' ">
+                    and iac.product = #{taskStatisticsVo.riskCode}
+                </when>
+            </choose>
+        </where>
+        GROUP BY
+          ifa.audituser,su.name,su.mobile,iac.inscompany
+    </select>
+
+
+
+    <select id="costCenterDetailsLicense" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
+        SELECT
+            io.licenseno as "licenseno",
+            iac.createtime as "createTime",
+            iac.audittime as "auditTime",
+            IFNULL(TIMESTAMPDIFF(SECOND, iac.createtime, iac.audittime),0) as "timeDifference"
+        FROM
+            ins_fee_audit ifa
+            LEFT JOIN ins_orders io ON io.orderno = ifa.orderno
+            LEFT JOIN ins_area_company iac ON iac.orderno = io.orderno
+            LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+            LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_id
+            left join sys_user  su  on su.id =ifa.audituser
+        <where>
+            1=1
+            and iac.id = ifa.ins_order_no
+            AND iac.orderstatus = 3
+            AND io.orderstatus = 3
+            AND ifa.audituser != '自动审核'
+            AND (ifa.auditstatus ='1' or ifa.auditstatus ='0')
+            <if test="taskStatisticsVo.reviewer !=null  and  taskStatisticsVo.reviewer !=''">
+                and su.name =#{taskStatisticsVo.reviewer}
+            </if>
+
+            <if test="taskStatisticsVo.audituser !=null  and  taskStatisticsVo.audituser !=''">
+                and ifa.audituser =#{taskStatisticsVo.audituser}
+            </if>
+
+            <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.audittime !=null  and  taskStatisticsVo.audittime !=''">
+                and ifa.audittime =#{taskStatisticsVo.audittime}
+            </if>
+
+             <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( ifa.audittime, '%Y-%m-%d')  BETWEEN  DATE_FORMAT( #{taskStatisticsVo.createtimeStart}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
+                AND io.deptid  in
+                <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="taskStatisticsVo.userIds != null and taskStatisticsVo.userIds != '' and taskStatisticsVo.userIds.size() > 0">
+                AND su.id  in
+                <foreach collection="taskStatisticsVo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <choose>
+                <when test="taskStatisticsVo.riskCode != null and taskStatisticsVo.riskCode != '' and  taskStatisticsVo.riskCode != 'all' ">
+                    and iac.product = #{taskStatisticsVo.riskCode}
+                </when>
+            </choose>
+        </where>
+    </select>
+
+    <select id="costCenterSecond" resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDtoNew">
+        SELECT
+        IFNULL(count(io.licenseno),0) as "orderNumber",
+        IFNULL(sum(TIMESTAMPDIFF(SECOND, iac.createtime, iac.audittime)),0) as "sumSecond",
+        IFNULL(sum(TIMESTAMPDIFF(SECOND, iac.createtime, iac.audittime)),0) / count(io.licenseno)  as "averageSecond"
+        FROM
+            ins_fee_audit ifa
+            LEFT JOIN ins_orders io ON io.orderno = ifa.orderno
+            LEFT JOIN ins_area_company iac ON iac.orderno = io.orderno
+            LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
+            LEFT JOIN esm_ins_company eic ON eic.id = pa.partner_companies_id
+            left join sys_user  su  on su.id =ifa.audituser
+        <where>
+            1=1
+            and iac.id = ifa.ins_order_no
+            AND iac.orderstatus = 3
+            AND io.orderstatus = 3
+            AND ifa.audituser != '自动审核'
+            AND (ifa.auditstatus ='1' or ifa.auditstatus ='0')
+            <if test="taskStatisticsVo.reviewer !=null  and  taskStatisticsVo.reviewer !=''">
+                and su.name =#{taskStatisticsVo.reviewer}
+            </if>
+
+            <if test="taskStatisticsVo.audituser !=null  and  taskStatisticsVo.audituser !=''">
+                and ifa.audituser =#{taskStatisticsVo.audituser}
+            </if>
+
+            <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.audittime !=null  and  taskStatisticsVo.audittime !=''">
+                and ifa.audittime =#{taskStatisticsVo.audittime}
+            </if>
+
+             <if test="taskStatisticsVo.companyId !=null  and  taskStatisticsVo.companyId !=''">
+                and iac.company_id =#{taskStatisticsVo.companyId}
+            </if>
+
+            <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
+                AND   DATE_FORMAT( ifa.audittime, '%Y-%m-%d')  BETWEEN  DATE_FORMAT( #{taskStatisticsVo.createtimeStart}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.createtimeEnd}, '%Y-%m-%d')
+            </if>
+
+            <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
+                AND   DATE_FORMAT( iac.signing_time, '%Y-%m-%d')   BETWEEN  DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')   AND  DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
+            </if>
+            <if test="taskStatisticsVo.deptIds != null and taskStatisticsVo.deptIds != '' and taskStatisticsVo.deptIds.size() > 0">
+                AND io.deptid  in
+                <foreach collection="taskStatisticsVo.deptIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+            <if test="taskStatisticsVo.userIds != null and taskStatisticsVo.userIds != '' and taskStatisticsVo.userIds.size() > 0">
+                AND su.id  in
+                <foreach collection="taskStatisticsVo.userIds" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <choose>
+                <when test="taskStatisticsVo.riskCode != null and taskStatisticsVo.riskCode != '' and  taskStatisticsVo.riskCode != 'all' ">
+                    and iac.product = #{taskStatisticsVo.riskCode}
+                </when>
+            </choose>
+        </where>
+    </select>
+
+
     <select id="getOrderManpower" resultType="com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto">
         SELECT
         count( a.numberUserId ) as "orderManpower",

+ 38 - 2
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -54,6 +54,11 @@
         <result property="leaderId" column="leader_id" jdbcType="VARCHAR"/>
         <result property="underwritingStatus" column="underwritingStatus" jdbcType="INTEGER"/>
         <result property="entryStatus" column="entryStatus" jdbcType="VARCHAR"/>
+        <result property="underwritingTime" column="underwritingTime" jdbcType="TIMESTAMP"/>
+        <result property="payDate" column="payDate" jdbcType="TIMESTAMP"/>
+        <result property="updateStatus" column="updateStatus" jdbcType="VARCHAR"/>
+        <result property="updateStatusTime" column="updateStatusTime" jdbcType="TIMESTAMP"/>
+        <result property="signingTime" column="signingTime" jdbcType="TIMESTAMP"/>
     </resultMap>
     <resultMap id="OrderResultMap" type="com.ydtech.modules.order.entity.vo.OrderVo">
         <id property="orderno" column="orderno" jdbcType="VARCHAR"/>
@@ -936,7 +941,12 @@
         WHEN '3' THEN '电销'
         ELSE '' END
         AS managementSource,
-        io.entry_status  as entryStatus
+        io.entry_status  as entryStatus,
+        iac.underwriting_time as underwritingTime,
+        iac.pay_date  as payDate,
+        iac.update_status AS updateStatus,
+        iac.update_status_time AS updateStatusTime,
+        iac.signing_time as signingTime
         from
             ins_area_company iac
         left JOIN
@@ -952,7 +962,7 @@
         LEFT JOIN sys_area d2 ON d2.area_code = pdept.city
         LEFT JOIN sys_area d3 ON d3.area_code = pdept.area
         LEFT JOIN
-                sys_user u on io.userid = u.id
+        sys_user u on io.userid = u.id
         <where>
             <if test="agentUserIds != null and agentUserIds.size>0" >
                 AND (
@@ -1078,6 +1088,19 @@
             <if test="orderQueryVo.entryStatus != null and orderQueryVo.entryStatus != ''">
                 and io.entry_status = #{orderQueryVo.entryStatus }
             </if>
+            <if test="orderQueryVo.payStartDateStr != null and orderQueryVo.payEndDateStr != null">
+                and  DATE_FORMAT(iac.pay_date, '%Y-%m-%d') between #{orderQueryVo.payStartDateStr} AND #{orderQueryVo.payEndDateStr}
+            </if>
+
+            <if test="orderQueryVo.auditStartDateStr != null and orderQueryVo.auditEndDateStr != null">
+                and  DATE_FORMAT(iac.underwriting_time, '%Y-%m-%d') between #{orderQueryVo.auditStartDateStr} AND #{orderQueryVo.auditEndDateStr}
+            </if>
+            <if test="orderQueryVo.updateStartDateStr != null and orderQueryVo.updateEndDateStr != null">
+                and  DATE_FORMAT( iac.update_status_time, '%Y-%m-%d') between #{orderQueryVo.updateStartDateStr} AND #{orderQueryVo.updateEndDateStr}
+            </if>
+            <if test="orderQueryVo.updateStatus != null and orderQueryVo.updateStatus != null">
+                and  iac.update_status =  #{orderQueryVo.updateStatus}
+            </if>
         </where>
         order by io.createtime desc
     </select>
@@ -1219,6 +1242,19 @@
             <if test="orderQueryVo.entryStatus != null and orderQueryVo.entryStatus != ''">
                 and io.entry_status = #{orderQueryVo.entryStatus }
             </if>
+            <if test="orderQueryVo.payStartDateStr != null and orderQueryVo.payEndDateStr != null">
+                and  DATE_FORMAT(iac.pay_date, '%Y-%m-%d') between #{orderQueryVo.payStartDateStr} AND #{orderQueryVo.payEndDateStr}
+            </if>
+
+            <if test="orderQueryVo.auditStartDateStr != null and orderQueryVo.auditEndDateStr != null">
+                and  DATE_FORMAT(iac.underwriting_time, '%Y-%m-%d') between #{orderQueryVo.auditStartDateStr} AND #{orderQueryVo.auditEndDateStr}
+            </if>
+            <if test="orderQueryVo.updateStartDateStr != null and orderQueryVo.updateEndDateStr != null">
+                and  DATE_FORMAT( iac.update_status_time, '%Y-%m-%d') between #{orderQueryVo.updateStartDateStr} AND #{orderQueryVo.updateEndDateStr}
+            </if>
+            <if test="orderQueryVo.updateStatus != null and orderQueryVo.updateStatus != null">
+                and  iac.update_status =  #{orderQueryVo.updateStatus}
+            </if>
         </where>
         ) as s
     </select>