Explorar el Código

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

Qchen hace 1 año
padre
commit
fceca070d3
Se han modificado 33 ficheros con 1121 adiciones y 136 borrados
  1. 0 17
      src/main/java/com/ydtech/config/scheduledConfig/ScheduledConfig.java
  2. 19 0
      src/main/java/com/ydtech/constants/RabbitMqEnum.java
  3. 48 0
      src/main/java/com/ydtech/modules/admin/controller/PushOrder.java
  4. 35 0
      src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java
  5. 16 0
      src/main/java/com/ydtech/modules/admin/dao/TaskStatisticsMapper.java
  6. 3 0
      src/main/java/com/ydtech/modules/admin/model/vo/BusinessAgentData.java
  7. 62 0
      src/main/java/com/ydtech/modules/admin/model/vo/BusinessOrderData.java
  8. 7 0
      src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java
  9. 11 0
      src/main/java/com/ydtech/modules/admin/model/vo/TaskStatisticsVo.java
  10. 17 0
      src/main/java/com/ydtech/modules/admin/service/TaskStatisticsService.java
  11. 56 2
      src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java
  12. 107 0
      src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java
  13. 2 0
      src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java
  14. 10 0
      src/main/java/com/ydtech/modules/fnc/controller/contract/ContractController.java
  15. 7 0
      src/main/java/com/ydtech/modules/fnc/service/contract/ContractService.java
  16. 14 0
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java
  17. 34 6
      src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java
  18. 7 0
      src/main/java/com/ydtech/modules/fnc/vo/ContractVo.java
  19. 4 0
      src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java
  20. 49 0
      src/main/java/com/ydtech/modules/order/dao/InsOrderPushMsgMapper.java
  21. 6 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  22. 105 0
      src/main/java/com/ydtech/modules/order/entity/po/InsOrderPushMsg.java
  23. 37 0
      src/main/java/com/ydtech/modules/order/entity/vo/PushDataVo.java
  24. 64 0
      src/main/java/com/ydtech/modules/order/orderThread/OrderRunnableThread.java
  25. 44 0
      src/main/java/com/ydtech/modules/order/service/InsOrderPushMsgService.java
  26. 5 0
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  27. 159 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrderPushMsgServiceImpl.java
  28. 0 48
      src/main/java/com/ydtech/utils/scheduledFutureUtil/ScheduledFutureHolder.java
  29. 0 40
      src/main/java/com/ydtech/utils/scheduledFutureUtil/ScheduledFutureUtil.java
  30. 8 4
      src/main/resources/mapper/modules/admin/SysUserMapper.xml
  31. 108 12
      src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml
  32. 20 7
      src/main/resources/mapper/modules/fnc/contract/ContractMapper.xml
  33. 57 0
      src/main/resources/mapper/modules/order/InsOrderPushMsgMapper.xml

+ 0 - 17
src/main/java/com/ydtech/config/scheduledConfig/ScheduledConfig.java

@@ -1,17 +0,0 @@
-package com.ydtech.config.scheduledConfig;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
-
-@Configuration
-public class ScheduledConfig {
-    @Bean
-    public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
-        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
-        threadPoolTaskScheduler.setPoolSize(5);
-        threadPoolTaskScheduler.setRemoveOnCancelPolicy(true);
-        return threadPoolTaskScheduler;
-    }
-}
-

+ 19 - 0
src/main/java/com/ydtech/constants/RabbitMqEnum.java

@@ -0,0 +1,19 @@
+package com.ydtech.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum RabbitMqEnum {
+
+
+    ORDER_QUEUE("order_push_queue", "队列"),
+    ORDER_EXCHANGE("order_push_exchange", "交换机"),
+
+    ORDER_ROUTINGKEY("order_push_routingKey", "关键字");
+
+    private final String code;
+    private final String desc;
+
+}

+ 48 - 0
src/main/java/com/ydtech/modules/admin/controller/PushOrder.java

@@ -0,0 +1,48 @@
+package com.ydtech.modules.admin.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.order.service.InsOrderPushMsgService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/11/4 18:26
+ *  @Description: 测试消息
+ */
+@Api(tags = "测试消息推送")
+@RequestMapping("/push")
+@RestController
+public class PushOrder {
+
+
+    @Autowired
+    private InsOrderPushMsgService insOrderPushMsgService;
+
+
+    @GetMapping("pushHistoryOrders")
+    @ApiOperation(value = "测试推送历史订单数据消息")
+    public HttpResult pushHistoryOrders() {
+        insOrderPushMsgService.getPushInsAreaCompanyList();
+        return HttpResult.ok();
+    }
+
+    @GetMapping("pushCompensateOrders")
+    @ApiOperation(value = "测试补偿订单数据消息")
+    public HttpResult pushCompensateOrders() {
+        insOrderPushMsgService.getPushCompensateInsAreaCompanyList();
+        return HttpResult.ok();
+    }
+
+    @GetMapping("pushSignOrder")
+    @ApiOperation(value = "测试承保订单数据消息")
+    public HttpResult pushSignOrder(String subOrderId) {
+        insOrderPushMsgService.testSignData(subOrderId);
+        return HttpResult.ok();
+    }
+}

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

@@ -2,10 +2,12 @@ package com.ydtech.modules.admin.controller.taskStatistics;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.pagehelper.PageInfo;
 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.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
@@ -472,4 +474,37 @@ public class TaskStatisticsController {
         }
     }
 
+
+    /**
+     * @description:   任控制台-业务数据-渠道-详情
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @PostMapping("getBusinessOrderDataDetails")
+    @ApiOperation(value = "控制台-业务数据-渠道-订单详情-详情")
+    public HttpResult<PageInfo<BusinessOrderData>> getBusinessOrderDataDetails(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try {
+            PageInfo<BusinessOrderData> businessOrderDataDetails = taskStatisticsService.getBusinessOrderDataDetails(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", businessOrderDataDetails);
+        } catch (Exception e) {
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     * @description:   控制台-业务数据-渠道-订单详情-合计
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @PostMapping("getBusinessOrderDataTotal")
+    @ApiOperation(value = "控制台-业务数据-渠道-订单详情-合计")
+    public HttpResult<BusinessOrderData> getBusinessOrderDataTotal(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try {
+            BusinessOrderData result = taskStatisticsService.getBusinessOrderDataTotal(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        } catch (Exception e) {
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
 }

+ 16 - 0
src/main/java/com/ydtech/modules/admin/dao/TaskStatisticsMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import org.apache.ibatis.annotations.Mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +40,19 @@ public interface TaskStatisticsMapper extends BaseMapper<TaskStatisticsDto> {
      */
     IPage<TaskStatisticsDto> channelAgentDetails(Page page, TaskStatisticsVo taskStatisticsVo);
 
+
+    /**
+     * @description:   任控制台-业务数据-渠道-订单详情
+     * @author: hh
+     * @date: 2024/09/10
+     **/
+    List<BusinessOrderData> getBusinessOrderDataDetails(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   任控制台-业务数据-渠道-订单详情总和
+     * @author: hh
+     * @date: 2024/09/10
+     **/
+    BusinessOrderData getBusinessOrderDataTotal(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
 }

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

@@ -87,6 +87,9 @@ public class BusinessAgentData {
     @ApiModelProperty(value = "毛利润占比")
     private BigDecimal distributionAmountRate;
 
+    @ApiModelProperty(value = "毛利润率")
+    private String grossMargin;
+
     @ApiModelProperty(value = "入口金额")
     private BigDecimal entranceAllFee;
 

+ 62 - 0
src/main/java/com/ydtech/modules/admin/model/vo/BusinessOrderData.java

@@ -0,0 +1,62 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+@Data
+@ApiModel("业务数据-渠道-详情")
+public class BusinessOrderData {
+
+
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "工号")
+    private String userId;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "车牌号")
+    private String carNum;
+
+    @ApiModelProperty(value = "签单保费")
+    private BigDecimal sumPremium;
+
+    @ApiModelProperty(value = "交强险保费")
+    private BigDecimal jqPremium;
+
+    @ApiModelProperty(value = "车船税")
+    private BigDecimal taxAmount;
+
+    @ApiModelProperty(value = "商业险保费")
+    private BigDecimal syPremium;
+
+    @ApiModelProperty(value = "非车险保费")
+    private BigDecimal jyPremium;
+
+    @ApiModelProperty(value = "签单保费占比")
+    private BigDecimal sumPremiumProportion;
+
+    @ApiModelProperty(value = "总人数")
+    private String totalNumber;
+
+    @ApiModelProperty(value = "毛利润")
+    private BigDecimal distributionAmount;
+
+    @ApiModelProperty(value = "毛利润占比")
+    private BigDecimal distributionAmountRate;
+
+    @ApiModelProperty(value = "毛利润率")
+    private String grossMargin;
+
+    @ApiModelProperty(value = "入口金额")
+    private BigDecimal entranceAllFee;
+
+    @ApiModelProperty(value = "出口金额")
+    private BigDecimal exportAllFee;
+}

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/vo/SysUserBaseVO.java

@@ -119,4 +119,11 @@ public class SysUserBaseVO {
 
     @ApiModelProperty(value = "银行卡号信息")
     private String bankCardNumbers;
+
+    @ApiModelProperty(value = "身份证号")
+    private String identity;
+
+    @ApiModelProperty(value = "居住地址")
+    private String liveAddress;
+
 }

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

@@ -152,4 +152,15 @@ public class TaskStatisticsVo implements Serializable {
     @ApiModelProperty(value = "对接人")
     private String dockingPerson;
 
+    @ApiModelProperty(value = "筛选签单开始时间")
+    private String signingTimeStart;
+
+    @ApiModelProperty(value = "筛选签单结束时间")
+    private String signingTimeEnd;
+
+    @ApiModelProperty(value = "筛选录单开始时间")
+    private String enterTimeStart;
+
+    @ApiModelProperty(value = "筛选录单开始时间")
+    private String enterTimeEnd;
 }

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

@@ -1,10 +1,12 @@
 package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.pagehelper.PageInfo;
 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.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
@@ -142,4 +144,19 @@ public interface TaskStatisticsService {
      **/
     HttpResult electricExcel(TaskStatisticsVo taskStatisticsVo);
 
+
+    /**
+     * @description:   任控制台-业务数据-渠道-详情
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    PageInfo<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   控制台-业务数据-渠道-订单详情-合计
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo);
+
 }

+ 56 - 2
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -1533,7 +1533,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             treeShowLevel.setShowLevel("subordinate");
         }
         //获取领导字段不为空的人的ID
-        List<SysUser> users = lambdaQuery().isNotNull(SysUser::getLeaderId).list();
+        List<SysUser> users = lambdaQuery()
+                .isNotNull(SysUser::getLeaderId)
+                .ne(SysUser::getStatus, 0)
+                .list();
+        System.out.println(JSONObject.toJSONString(users));
 
         if (users == null || users.size() == 0) {
             return new ArrayList<>();
@@ -1866,11 +1870,61 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt) {
         if (StringUtils.isNotEmpty(sysUserVOExt.getUserId()) || StringUtils.isNotEmpty(sysUserVOExt.getIdentity()) ||
                 StringUtils.isNotEmpty(sysUserVOExt.getMobile()) || StringUtils.isNotEmpty(sysUserVOExt.getName())) {
-            return super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
+            List<SysUserBaseVO> allUsersByHospitality = super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
+            //数据隔离操作
+            List<SysUserBaseVO> divideUserInfo = this.dataDivide(allUsersByHospitality);
+            return divideUserInfo;
         }
         return new ArrayList<SysUserBaseVO>();
     }
 
+    private List<SysUserBaseVO> dataDivide(List<SysUserBaseVO> allUsersByHospitality) {
+        List<SysUserBaseVO> divideUserInfo = new ArrayList<>();
+        List<SysUser> userList = new ArrayList<>();
+        String userId = BaseController.getUserId();
+//        String userId = "99D1502";
+        if ("admin".equals(userId) || "99D1501".equals(userId)) {
+            return allUsersByHospitality;
+        }
+        SysUser sysUser = sysUserMapper.selectById(userId);
+        if ("99D1502".equals(userId)) {
+            List<SysUser> leaderUsers = sysUserMapper.selectByLeadId(userId);
+            List<String> leaderInfoList = leaderUsers.stream()
+                    .filter(userInfo -> !StringUtils.isNullOrEmpty(userInfo) && StringUtils.isNotEmpty(userInfo.getId())
+                            && !userInfo.getId().contains("M"))
+                    .map(userInfo -> userInfo.getId()).collect(Collectors.toList());
+            if (!StringUtils.isNullOrEmpty(leaderInfoList)) {
+                QueryWrapper<SysUser> leaderIds = new QueryWrapper<SysUser>().in("leader_id", leaderInfoList);
+                List<SysUser> sysUsers = sysUserMapper.selectList(leaderIds);
+                userList.addAll(sysUsers);
+            }
+            userList.addAll(leaderUsers);
+        } else if ("99D1502".equals(sysUser.getLeaderId())) {
+            userList.add(sysUser);
+            List<SysUser> leaderUsers = sysUserMapper.selectByLeadId(userId);
+            userList.addAll(leaderUsers);
+        } else {
+            List<SysUser> sysUsers = sysUserMapper.selectByLeadId(sysUser.getLeaderId());
+            SysUser loginUserLeader = sysUserMapper.selectById(sysUser.getLeaderId());
+            userList.add(loginUserLeader);
+            userList.addAll(sysUsers);
+        }
+
+        userList.stream()
+                .filter(user -> !StringUtils.isNullOrEmpty(user) && StringUtils.isNotEmpty(user.getIdentity()))
+                .forEach(user -> {
+                    allUsersByHospitality.stream()
+                            .filter(selectUser -> !StringUtils.isNullOrEmpty(selectUser) && StringUtils.isNotEmpty(selectUser.getIdentity())
+                                    && user.getIdentity().equals(selectUser.getIdentity()))
+                            .forEach(selectUser -> {
+                                selectUser.setLeaderId(user.getLeaderId());
+                                selectUser.setLeaderName(user.getLeaderName());
+                                divideUserInfo.add(selectUser);
+                            });
+                });
+        return divideUserInfo;
+    }
+
     /**
      * @version
      * @author: hxl

+ 107 - 0
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -18,6 +18,7 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
@@ -40,6 +41,7 @@ import java.math.RoundingMode;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -691,11 +693,17 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
 
         IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
         List<BusinessAgentData> records = list.getRecords();
         for (BusinessAgentData record : records) {
             this.appendName(record);
+            //新增毛利润率   毛利润/成本(出口费用)
+            BigDecimal grossMarginBD = record.getDistributionAmount().divide(record.getExportAllFee(), 4, RoundingMode.HALF_UP); //毛利润率
+            DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+            String grossMargin = decimalFormat.format(grossMarginBD);
+            record.setGrossMargin(grossMargin);
         }
         Long  total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
         list.setTotal(total);
@@ -838,6 +846,7 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
 
 
         if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) || "3".equals(taskStatisticsVo.getManagementSource())){
@@ -958,6 +967,7 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
         PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
         Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
         page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
@@ -1049,4 +1059,101 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
             }
         }
     }
+
+    /**
+     * @description:   任控制台-业务数据-渠道-详情
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @Override
+    public PageInfo<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo) {
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
+
+        PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        List<BusinessOrderData> businessOrderList = this.taskStatisticsMapper.getBusinessOrderDataDetails(taskStatisticsVo);
+        for (BusinessOrderData businessOrderData : businessOrderList) {
+            BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ? businessOrderData.getEntranceAllFee() : BigDecimal.ZERO;
+            BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO;
+            BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee);
+            businessOrderData.setDistributionAmount(distributionAmount); //毛利润
+            if (distributionAmount.compareTo(BigDecimal.ZERO) > 0) {
+                //新增毛利润率   毛利润/成本(出口费用)
+                BigDecimal grossMarginBD = distributionAmount.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
+                DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+                String grossMargin = decimalFormat.format(grossMarginBD);
+                businessOrderData.setGrossMargin(grossMargin);
+            } else {
+                businessOrderData.setGrossMargin("0.00%");
+            }
+        }
+        return new PageInfo<>(businessOrderList);
+    }
+
+
+    /**
+     * @description:   任控制台-业务数据-渠道-合计
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @Override
+    public BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo) {
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
+
+        BusinessOrderData result = this.taskStatisticsMapper.getBusinessOrderDataTotal(taskStatisticsVo);
+
+        BigDecimal sumPremium = result.getSumPremium();
+        BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
+        if (ObjectUtils.isNotEmpty(sumPremium)) {
+            BigDecimal allSumPremium = allsumPremium.getSumPremium();
+            if (sumPremium.compareTo(BigDecimal.ZERO) == 1) {
+                BigDecimal multiply = sumPremium.divide(allSumPremium, 4, BigDecimal.ROUND_DOWN);
+                result.setSumPremiumProportion(multiply);
+            }
+        } else {
+            result.setSumPremiumProportion(BigDecimal.ZERO);
+        }
+
+        BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
+        BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
+        BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
+        result.setDistributionAmount(subtract); //毛利润
+        if (subtract.compareTo(BigDecimal.ZERO) > 0) {
+            //新增毛利润率   毛利润/成本(出口费用)
+            BigDecimal grossMarginBD = subtract.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
+            DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+            String grossMargin = decimalFormat.format(grossMarginBD);
+            result.setGrossMargin(grossMargin);
+        } else {
+            result.setGrossMargin(BigDecimal.ZERO.toString());
+        }
+        return result;
+    }
+
+    /**
+     *  @version
+     *  @author: hh
+     *  @Date: 2024/11/19
+     *  @Description:  通过时间类型判断
+     */
+    private static void getDateByType(String type, TaskStatisticsVo taskStatisticsVo) {
+        String  startDateStr= new String();
+        String  endDateStr= new String();
+        if (StringUtils.isNotEmpty(type)) {
+            switch (type) {
+                case "1" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0)+" 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                           break;
+                case "2" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                           break;
+                case "3" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                           break;
+            }
+            taskStatisticsVo.setSigningTimeStart(startDateStr);
+            taskStatisticsVo.setSigningTimeEnd(endDateStr);
+            taskStatisticsVo.setEnterTimeStart(startDateStr);
+            taskStatisticsVo.setEnterTimeEnd(endDateStr);
+        }
+    }
 }

+ 2 - 0
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -306,6 +306,8 @@ public class RuleAttrMappingVo {
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("LicenseArea", insOrders.getLicenseno().substring(0,1)));
         // 系数
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("Coefficient", getCoefficient(carInfo,insAreaCompany).toString()));
+        // 商业是否有费用
+        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CiMessage", (insAreaCompany.getCiMessage() == null || "".equals(insAreaCompany.getCiMessage())) ? "0" : "1"));
         return ruleAttrMappingVoList;
     }
 

+ 10 - 0
src/main/java/com/ydtech/modules/fnc/controller/contract/ContractController.java

@@ -151,4 +151,14 @@ public class ContractController extends BaseController {
         return HttpResult.ok("合同编辑成功");
     }
 
+    /**
+     * @description: 合同编辑
+     * @author: whp
+     **/
+    @GetMapping("updateTimer")
+    @ApiOperation(value = "定时任务测试")
+    public HttpResult updateTimer(@RequestBody ContractVo contractVo) {
+        contractService.updateTimer(contractVo);
+        return HttpResult.ok("定时任务测试");
+    }
 }

+ 7 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/ContractService.java

@@ -76,4 +76,11 @@ public interface ContractService extends IService<ContractEntity> {
      * @author: whp
      **/
     void updateByEntity(ContractVo contractVo);
+
+    /**
+     * 测试定时任务
+     * @param contractVo
+     */
+    void updateTimer(ContractVo contractVo);
+
 }

+ 14 - 0
src/main/java/com/ydtech/modules/fnc/service/contract/impl/ContractSupplierServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
 import com.ydtech.modules.fnc.dao.contract.ContractSupplierMapper;
 import com.ydtech.modules.fnc.dto.contract.ContractDto;
 import com.ydtech.modules.fnc.dto.contract.ContractSupplierDto;
@@ -19,11 +20,16 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 @Service
 public class ContractSupplierServiceImpl extends ServiceImpl<ContractSupplierMapper, ContractSupplierEntity> implements ContractSupplierService {
+    @Autowired
+    private EsmInsCompanyService esmInsCompanyService;
+
     @Autowired
     private ContractSupplierService contractSupplierService;
 
@@ -85,6 +91,14 @@ public class ContractSupplierServiceImpl extends ServiceImpl<ContractSupplierMap
 //            contractVO.setContractIdList(contractIdList);
 //
 //        }
+        Set<String> uniqueIds = new HashSet<>();
+        List<String> supplierIdList = contractVO.getSupplierIdList();
+        for (String s : supplierIdList) {
+            List<String> lowerId = esmInsCompanyService.getByLowerId(s);
+            uniqueIds.addAll(lowerId);
+        }
+        List<String> supIds = new ArrayList<>(uniqueIds);
+        contractVO.setSupplierIdList(supIds);
         IPage<ContractDto> queriedPage = baseMapper.queryPage(page, contractVO);
         return queriedPage;
     }

+ 34 - 6
src/main/java/com/ydtech/modules/fnc/service/contract/impl/contractServiceImpl.java

@@ -9,6 +9,8 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.model.vo.SysDeptTreeVo;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.esm.service.EsmInsCompanyService;
+import com.ydtech.modules.fnc.controller.contract.ControllerTimer;
 import com.ydtech.modules.fnc.dao.contract.ContractMapper;
 import com.ydtech.modules.fnc.dao.contract.ContractSupplierMapper;
 import com.ydtech.modules.fnc.dto.contract.ContractDto;
@@ -39,9 +41,7 @@ import org.springframework.util.CollectionUtils;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Slf4j
@@ -62,6 +62,9 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
     @Autowired
     private ContractFileService contractFileService;
 
+    @Autowired
+    private EsmInsCompanyService esmInsCompanyService;
+
     /**
      * @param contractDto
      * @return 新增合同
@@ -265,8 +268,15 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
             List<String> contractIdList = contractSupplierEntityList.stream().map(ContractSupplierEntity::getContractId).collect(Collectors.toList());
             contractVO.setContractIdList(contractIdList);
 
+            Set<String> uniqueIds = new HashSet<>();
+            List<String> supplierIdList = contractVO.getSupplierIdList();
+            for (String s : supplierIdList) {
+                List<String> lowerId = esmInsCompanyService.getByLowerId(s);
+                uniqueIds.addAll(lowerId);
+            }
+            List<String> supIds = new ArrayList<>(uniqueIds);
+            contractVO.setSupplierIdList(supIds);
         }
-
         IPage<ContractEntity> queriedPage = contractMapper.queryPage(page, contractVO);
         List<ContractEntity> records = queriedPage.getRecords();
         if (!records.isEmpty()) {
@@ -376,7 +386,7 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
         // 查询当前状态的合同
         QueryWrapper<ContractEntity> contractQueryWrapper = new QueryWrapper<>();
         contractQueryWrapper.eq("id", contractVo.getId());
-        if (StringUtils.isNotEmpty(contractVo.getContractStatus())) {
+        if (StringUtils.isNotEmpty(contractVo.getContractStatus())  || StringUtils.isEmpty(contractVo.getIsView())) {
             contractQueryWrapper.eq("contract_status", "0");
         }
         List<ContractEntity> currentContracts = baseMapper.selectList(contractQueryWrapper);
@@ -384,7 +394,7 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
         // 查询以其为父合同的合同
         QueryWrapper<ContractEntity> parentContractQueryWrapper = new QueryWrapper<>();
         parentContractQueryWrapper.eq("parent_id", contractVo.getId());
-        if (StringUtils.isNotEmpty(contractVo.getContractStatus())) {
+        if (StringUtils.isNotEmpty(contractVo.getContractStatus()) || StringUtils.isEmpty(contractVo.getIsView())) {
             parentContractQueryWrapper.eq("contract_status", "0");
         }
         List<ContractEntity> parentContracts = baseMapper.selectList(parentContractQueryWrapper);
@@ -483,4 +493,22 @@ public class contractServiceImpl extends ServiceImpl<ContractMapper, ContractEnt
         BeanUtils.copyProperties(contractVo, contractEntity);
         baseMapper.updateById(contractEntity);
     }
+
+    /**
+     * 测试定时任务
+     * @param contractVo
+     */
+    @Override
+    @Transactional
+    public void updateTimer(ContractVo contractVo) {
+        String nowTime ="";
+        if(StringUtils.isNotEmpty(contractVo.getTimeDate())){
+            nowTime=contractVo.getTimeDate();
+        }else {
+            nowTime = LocalDateTime.now().toString();
+        }
+        List<ContractEntity> contractEntityList = baseMapper.selectFilterFailure(nowTime.toString());
+        this.saveOrUpdateBatch(contractEntityList);
+
+    }
 }

+ 7 - 0
src/main/java/com/ydtech/modules/fnc/vo/ContractVo.java

@@ -113,4 +113,11 @@ public class ContractVo implements Serializable {
 
     @ApiModelProperty("合同idList")
     private List<String> idList;
+
+
+    @ApiModelProperty("定时测试时间")
+    private String timeDate;
+
+    @ApiModelProperty("是否是查看详情")
+    private String isView;
 }

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

@@ -201,6 +201,10 @@ public class QuoteRespVo {
     @ApiModelProperty("验车链接")
     private String vehicleInspectionUrl;
 
+    //太平使用
+    @ApiModelProperty("商业险是否有费用")
+    private String ciMessage;
+
     // 诚泰增加特约
     @ApiModelProperty("交强特别约定")
     private String jqappoint;

+ 49 - 0
src/main/java/com/ydtech/modules/order/dao/InsOrderPushMsgMapper.java

@@ -0,0 +1,49 @@
+package com.ydtech.modules.order.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author Administrator
+* @description 针对表【ins_order_push_msg(子订单推送数据表)】的数据库操作Mapper
+* @createDate 2024-11-05 11:45:52
+* @Entity com.ydtech.modules.order.entity.po.InsOrderPushMsg
+*/
+public interface InsOrderPushMsgMapper extends BaseMapper<InsOrderPushMsg> {
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/5 14:51
+     *  @Description: 获取补偿的时间段内的订单
+     */
+    List<String> getPushInsAreaCompanyList(@Param("benginTime") String benginTime,@Param("endTime") String endTime);
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/5 14:51
+     *  @Description: 获取订单的所有时间段
+     */
+    List<String> getPushInsAreaCompanyDateList();
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/8 11:02
+     *  @Description: 更新状态字段
+     */
+    void updateBySubOrderNo(@Param("subOrderNo") String subOrderNo, @Param("status") int status);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/11 8:52
+     *  @Description: 查询补偿推送的数据
+     */
+    List<String> getPushCompensateInsAreaCompanyList();
+}
+
+
+
+

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

@@ -564,6 +564,12 @@ public class InsAreaCompany implements Serializable {
     @TableField(value = "vehicle_inspection_url")
     private String vehicleInspectionUrl;
 
+    /**
+     * 商业是否有费用  太平使用
+     */
+    @TableField(value = "ci_message")
+    private String ciMessage;
+
     //入口总金额
     @TableField(exist = false)
     private BigDecimal entranceAllFee;

+ 105 - 0
src/main/java/com/ydtech/modules/order/entity/po/InsOrderPushMsg.java

@@ -0,0 +1,105 @@
+package com.ydtech.modules.order.entity.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 子订单推送数据表
+ * @TableName ins_order_push_msg
+ */
+@TableName(value ="ins_order_push_msg")
+@Data
+public class InsOrderPushMsg implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 子订单id
+     */
+    private String subOrderNo;
+
+    /**
+     * 状态 0. 发送中 1成功  2.失败
+     */
+    private String status;
+
+    /**
+     * 发送时间
+     */
+    private Date createTime;
+
+    /**
+     * 发送内容
+     */
+    private String msgContent;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        InsOrderPushMsg other = (InsOrderPushMsg) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+                && (this.getSubOrderNo() == null ? other.getSubOrderNo() == null : this.getSubOrderNo().equals(other.getSubOrderNo()))
+                && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
+                && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
+                && (this.getMsgContent() == null ? other.getMsgContent() == null : this.getMsgContent().equals(other.getMsgContent()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getSubOrderNo() == null) ? 0 : getSubOrderNo().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
+        result = prime * result + ((getMsgContent() == null) ? 0 : getMsgContent().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", subOrderNo=").append(subOrderNo);
+        sb.append(", status=").append(status);
+        sb.append(", createTime=").append(createTime);
+        sb.append(", msgContent=").append(msgContent);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+
+    public InsOrderPushMsg() {
+    }
+
+    public InsOrderPushMsg(Long id, String subOrderNo, String status, Date createTime, String msgContent) {
+        this.id = id;
+        this.subOrderNo = subOrderNo;
+        this.status = status;
+        this.createTime = createTime;
+        this.msgContent = msgContent;
+    }
+}

+ 37 - 0
src/main/java/com/ydtech/modules/order/entity/vo/PushDataVo.java

@@ -0,0 +1,37 @@
+package com.ydtech.modules.order.entity.vo;
+
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.dto.InsTaskImagesDto;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/11/5 16:31
+ *  @Description:  推送数据
+ */
+@Data
+public class PushDataVo  implements Serializable {
+
+
+    private InsAreaCompany insAreaCompany;
+
+    private InsOrders orders;
+
+    private List<InsTaskImagesDto> taskImagesList =new ArrayList<InsTaskImagesDto>();
+
+
+    public PushDataVo() {
+    }
+
+    public PushDataVo(InsAreaCompany insAreaCompany, InsOrders orders, List<InsTaskImagesDto> taskImagesList) {
+        this.insAreaCompany = insAreaCompany;
+        this.orders = orders;
+        this.taskImagesList = taskImagesList;
+    }
+}

+ 64 - 0
src/main/java/com/ydtech/modules/order/orderThread/OrderRunnableThread.java

@@ -0,0 +1,64 @@
+package com.ydtech.modules.order.orderThread;
+
+import com.alibaba.fastjson.JSON;
+import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
+import com.ydtech.modules.order.entity.vo.PushDataVo;
+import com.ydtech.modules.order.service.InsOrderPushMsgService;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/11/5 15:50
+ *  @Description:  发送订单的线程池
+ */
+public class OrderRunnableThread implements Runnable {
+
+    //private RabbitTemplate rabbitTemplate;
+
+    private ArrayList<String> message =new ArrayList<>();
+
+    private InsOrderPushMsgService insOrderPushMsgService;
+
+   // public OrderRunnableThread(RabbitTemplate rabbitTemplate, ArrayList<String> message, InsOrderPushMsgService insOrderPushMsgService) {
+   //     this.rabbitTemplate = rabbitTemplate;
+   //     this.message = message;
+   //     this.insOrderPushMsgService = insOrderPushMsgService;
+    //}
+
+    public OrderRunnableThread() {
+    }
+
+    public OrderRunnableThread(InsOrderPushMsgService insOrderPushMsgService, ArrayList<String> message) {
+        this.message = message;
+        this.insOrderPushMsgService = insOrderPushMsgService;
+    }
+
+    @Override
+    public void run() {
+        //发送数据
+        this.message.forEach(item ->{
+            //修改执行相应业务逻辑
+           // MessageProperties messageProperties = new MessageProperties();
+           // messageProperties.setMessageId(UUID.randomUUID().toString());
+           // messageProperties.setContentType(CONTENT_TYPE_TEXT_PLAIN);
+           // messageProperties.setContentEncoding("UTF-8");
+           // Message message_cj = new Message(item.getBytes(StandardCharsets.UTF_8), messageProperties);
+            PushDataVo pushDataVo = JSON.parseObject(item, PushDataVo.class);
+            //推送
+            InsOrderPushMsg insOrderPushMsg = new InsOrderPushMsg(null, pushDataVo.getInsAreaCompany().getId(), "0", new Date(), pushDataVo.toString());
+            try{
+                //更新狀態
+                insOrderPushMsgService.save(insOrderPushMsg);
+                //this.rabbitTemplate.convertAndSend(RabbitMqEnum.ORDER_EXCHANGE.getCode(), RabbitMqEnum.ORDER_ROUTINGKEY.getCode(), message_cj);
+            }catch(Exception e){
+                e.getStackTrace();
+            }
+
+        });
+
+    }
+}
+

+ 44 - 0
src/main/java/com/ydtech/modules/order/service/InsOrderPushMsgService.java

@@ -0,0 +1,44 @@
+package com.ydtech.modules.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
+
+/**
+* @author Administrator
+* @description 针对表【ins_order_push_msg(子订单推送数据表)】的数据库操作Service
+* @createDate 2024-11-05 11:45:52
+*/
+public interface InsOrderPushMsgService extends IService<InsOrderPushMsg> {
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/11/11 8:38
+    *  @Description: 查询历史订单
+    */
+   void getPushInsAreaCompanyList();
+
+
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/11/11 8:41
+    *  @Description: 推送补偿的订单数据
+    */
+   void getPushCompensateInsAreaCompanyList();
+
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/11/11 8:41
+    *  @Description: 推送承保的订单数据
+    */
+   void getPushSignInsAreaCompanyList(String subOrderNo);
+
+   /**
+    *  @version
+    *  @author: hxl
+    *  @Date: 2024/11/11 9:14
+    *  @Description: 测试承保数据推送
+    */
+   void testSignData(String orderId);
+}

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

@@ -458,6 +458,11 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         }
         // 验车支付链接
         quoteRespVo.setVehicleInspectionUrl(response.getOther().getUpimageUrl());
+        
+        if(response.getOther().getCiMessage() != null && !response.getOther().getCiMessage().equals("")){
+            quoteRespVo.setCiMessage(response.getOther().getCiMessage());
+            insAreaCompany.setCiMessage(response.getOther().getCiMessage());
+        }
 
         //太平绿黄红区
         for (String item : quoteRespVo.getWarnMessageList()) {

+ 159 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrderPushMsgServiceImpl.java

@@ -0,0 +1,159 @@
+package com.ydtech.modules.order.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
+import com.ydtech.modules.admin.utils.SliceUpDateUtil;
+import com.ydtech.modules.order.dao.InsOrderPushMsgMapper;
+import com.ydtech.modules.order.dao.InsTaskImagesMapper;
+import com.ydtech.modules.order.entity.InsAreaCompany;
+import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.dto.InsTaskImagesDto;
+import com.ydtech.modules.order.entity.po.InsOrderPushMsg;
+import com.ydtech.modules.order.entity.vo.PushDataVo;
+import com.ydtech.modules.order.service.InsAreaCompanyService;
+import com.ydtech.modules.order.service.InsOrderPushMsgService;
+import com.ydtech.modules.order.service.InsOrdersService;
+import com.ydtech.utils.OrderUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @description 针对表【ins_order_push_msg(子订单推送数据表)】的数据库操作Service实现
+ * @createDate 2024-11-05 11:45:52
+ */
+@Service
+public class InsOrderPushMsgServiceImpl extends ServiceImpl<InsOrderPushMsgMapper, InsOrderPushMsg>
+        implements InsOrderPushMsgService {
+
+    private static final Logger log = LoggerFactory.getLogger(InsOrderPushMsgServiceImpl.class);
+
+    @Autowired
+    private  InsOrderPushMsgMapper  insOrderPushMsgMapper;
+
+    @Autowired
+    private  InsAreaCompanyService insAreaCompanyService;
+
+    @Autowired
+    private InsOrdersService insOrdersService;
+
+    @Autowired
+    private InsTaskImagesMapper insTaskImagesMapper;
+
+    //@Autowired
+    //private RabbitTemplate rabbitTemplate;
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/5 14:50
+     *  @Description: 推送历史的订单信息
+     */
+    @Override
+    public void getPushInsAreaCompanyList() {
+        List<String> dateList = insOrderPushMsgMapper.getPushInsAreaCompanyDateList();
+       // List<String> dateList  =new ArrayList<String>();
+       // dateList.add("2024-10");
+        if(dateList!=null && !dateList.isEmpty()){
+            //启动线程池
+            dateList.forEach(item ->{
+                String benginTime = SliceUpDateUtil.getStartOfMonth(Integer.parseInt(item.split("-")[0]), Integer.parseInt(item.split("-")[1]));
+                String endTime = SliceUpDateUtil.getEndOfMonth(Integer.parseInt(item.split("-")[0]), Integer.parseInt(item.split("-")[1]));
+                List<String> orderList = insOrderPushMsgMapper.getPushInsAreaCompanyList(benginTime,endTime);
+                ArrayList<String>  pushDataList =new ArrayList<String>();
+                if(orderList!=null && !orderList.isEmpty()){
+                    orderList.forEach(orderId ->{
+                        pushDataList.add(getPushDataJsonString(orderId));
+                    });
+                }
+                if(pushDataList!=null && !pushDataList.isEmpty()){
+                   // Thread thread = new Thread(new OrderRunnableThread(rabbitTemplate, pushDataList,this));
+                    //thread.start();
+                }
+            });
+        }
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/11 8:39
+     *  @Description:  查询补偿的订单数据并推送
+     */
+    @Override
+    public void getPushCompensateInsAreaCompanyList() {
+        List<String> orderList = insOrderPushMsgMapper.getPushCompensateInsAreaCompanyList();
+        ArrayList<String>  pushDataList =new ArrayList<String>();
+        if(orderList!=null && !orderList.isEmpty()){
+            //通过
+            orderList.forEach(orderId ->{
+                pushDataList.add(getPushDataJsonString(orderId));
+            });
+        }
+        if(pushDataList!=null && !pushDataList.isEmpty()){
+            //Thread thread = new Thread(new OrderRunnableThread(rabbitTemplate, pushDataList,this));
+            //thread.start();
+        }
+     }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/11 8:39
+     *  @Description:  承保数据推送
+     */
+    @Override
+    public void getPushSignInsAreaCompanyList(String item) {
+        try{
+            ArrayList<String>  pushDataList =new ArrayList<String>();
+            pushDataList.add(getPushDataJsonString(item));
+            //Thread thread = new Thread(new OrderRunnableThread(rabbitTemplate, pushDataList,this));
+            //thread.start();
+        }catch(Exception e){
+            log.error(e.getMessage());
+        }
+
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/11 8:45
+     *  @Description: 通过订单id查询订单数据
+     */
+    public String getPushDataJsonString(String orderId) {
+        //小订单的数据
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(orderId);
+        //大订单数据
+        InsOrders orders = insOrdersService.getById(insAreaCompany.getOrderno());
+        String jyPolicyNo="";
+        String apiType = insAreaCompany.getApiType() == null ? null : insAreaCompany.getApiType() + "";
+        if (insAreaCompany.getCrossInsurance() != null) {
+            jyPolicyNo = OrderUtils.getJyPolicyNo(insAreaCompany.getCompanyId(), apiType, insAreaCompany.getCrossInsurance().toString(), String.valueOf(orders.getIsExternal()));
+        }
+        insAreaCompany.setJyPolicyNo(jyPolicyNo);
+        //影像数据
+        List<InsTaskImagesDto> taskImagesList = insTaskImagesMapper.getTaskImagesList(insAreaCompany.getOrderno());
+        PushDataVo pushDataVo  =new PushDataVo(insAreaCompany,orders,taskImagesList);
+        String json = JSONObject.toJSONString(pushDataVo);
+        return json;
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/11/11 9:04
+     *  @Description: 测试承保推送
+     */
+    public void testSignData(String orderId) {
+        //小订单的数据
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getById(orderId);
+        insAreaCompany.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
+        insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+    }
+
+}

+ 0 - 48
src/main/java/com/ydtech/utils/scheduledFutureUtil/ScheduledFutureHolder.java

@@ -1,48 +0,0 @@
-package com.ydtech.utils.scheduledFutureUtil;
-
-import java.util.concurrent.ScheduledFuture;
-
-/**
- * 任务执行的包装类
- */
-public class ScheduledFutureHolder {
-    private ScheduledFuture<?> scheduledFuture;
-
-    private Class<? extends Runnable> runnableClass;
-
-    private String corn;
-
-    public ScheduledFuture<?> getScheduledFuture() {
-        return scheduledFuture;
-    }
-
-    public void setScheduledFuture(ScheduledFuture<?> scheduledFuture) {
-        this.scheduledFuture = scheduledFuture;
-    }
-
-    public Class<? extends Runnable> getRunnableClass() {
-        return runnableClass;
-    }
-
-    public void setRunnableClass(Class<? extends Runnable> runnableClass) {
-        this.runnableClass = runnableClass;
-    }
-
-    public String getCorn() {
-        return corn;
-    }
-
-    public void setCorn(String corn) {
-        this.corn = corn;
-    }
-
-    @Override
-    public String toString() {
-        return "ScheduledFutureHolder{" +
-                "scheduledFuture=" + scheduledFuture +
-                ", runnableClass=" + runnableClass +
-                ", corn='" + corn + '\'' +
-                '}';
-    }
-}
-

+ 0 - 40
src/main/java/com/ydtech/utils/scheduledFutureUtil/ScheduledFutureUtil.java

@@ -1,40 +0,0 @@
-package com.ydtech.utils.scheduledFutureUtil;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
-import org.springframework.scheduling.support.CronTrigger;
-import org.springframework.stereotype.Component;
-
-import java.util.HashMap;
-import java.util.concurrent.ScheduledFuture;
-
-@Slf4j
-@Component
-public class ScheduledFutureUtil {
-    //存储任务执行的包装类
-    public static HashMap<String, ScheduledFutureHolder> scheduleMap = new HashMap<>();
-    @Autowired
-    private ThreadPoolTaskScheduler threadPoolTaskScheduler;
-
-    public  void startJob(Runnable runnable, String cron) {
-        //将任务交给任务调度器执行
-        ScheduledFuture<?> schedule = threadPoolTaskScheduler.schedule(runnable, new CronTrigger(cron));
-        //将任务包装成ScheduledFutureHolder
-        ScheduledFutureHolder scheduledFutureHolder = new ScheduledFutureHolder();
-        scheduledFutureHolder.setScheduledFuture(schedule);
-        scheduledFutureHolder.setRunnableClass(runnable.getClass());
-        scheduledFutureHolder.setCorn(cron);
-        scheduleMap.put(scheduledFutureHolder.getRunnableClass().getName(), scheduledFutureHolder);
-    }
-
-    public void endJob(String className){
-        if(ScheduledFutureUtil.scheduleMap.containsKey(className)){//如果包含这个任务
-            ScheduledFuture<?> scheduledFuture = ScheduledFutureUtil.scheduleMap.get(className).getScheduledFuture();
-            if(scheduledFuture!=null){
-                scheduledFuture.cancel(true);
-                log.info("{}任务已停止",className);
-            }
-        }
-    }
-}

+ 8 - 4
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -868,8 +868,12 @@
         su.id as userId,
         su.name,
         info.sex,
+        info.live_address,
         su.mobile,
+        su.leader_id,
+        su.leader_name,
         su.status,
+        su.identity,
         sd.id as deptId,
         sd.name as deptName,
         t4.id as roleId,
@@ -901,16 +905,16 @@
         su.status != 0 AND su.id LIKE '%M%' and su.id!='admin'
         <if test='user !=null  '>
             <if test='user.name !=null and user.name!="" '>
-                and su.name = #{user.name}
+                and su.name like concat('%', #{user.name}, '%')
             </if>
             <if test='user.userId !=null and user.userId!="" '>
-                and su.id = #{user.userId}
+                and su.id like concat('%', #{user.userId}, '%')
             </if>
             <if test='user.mobile !=null and user.mobile!=""  '>
-                and su.mobile = #{user.mobile}
+                and su.mobile like concat('%', #{user.mobile}, '%')
             </if>
             <if test='user.identity !=null and user.identity!=""  '>
-                and su.identity = #{user.identity}
+                and su.identity like concat('%', #{user.identity}, '%')
             </if>
         </if>
     </select>

+ 108 - 12
src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml

@@ -20,6 +20,7 @@
         IFNULL(a.riskCodeJshang,0) as "riskCodeJshang",
         IFNULL(a.riskCodeDs,0) as "riskCodeDs",
         IFNULL(a.riskCodeDsan,0) as "riskCodeDsan",
+        IFNULL(a.exportAllFee,0) as "exportAllFee",
         sd.management_source as "managementSource",
         IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)  as  "distributionAmount",
         (IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)) / a.sumpremium as "distributionAmountRate"
@@ -50,9 +51,11 @@
         LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
         <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 test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
@@ -179,9 +182,11 @@
                  LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
         <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 test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
@@ -230,9 +235,11 @@
         <where>
              1=1
            and  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 test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.userName !=null  and vo.userName!=''">
@@ -306,9 +313,11 @@
                 and su.id=#{vo.userId}
             </if>
 
-            <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 test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.managementSource !=null  and vo.managementSource!=''">
@@ -416,6 +425,93 @@
         iac.inscompany
     </select>
 
+    <resultMap id="OrderDataMap" type="com.ydtech.modules.admin.model.vo.BusinessOrderData">
+        <result property="totalNumber" column="total"/>
+        <result property="orderNo"     column="order_no"/>
+        <result property="carNum"      column="car_num"/>
+        <result property="sumPremium"  column="sum_premium"/>
+        <result property="jqPremium"   column="jq_premium"/>
+        <result property="syPremium"   column="sy_premium"/>
+        <result property="taxAmount"   column="tax_amount"/>
+        <result property="jyPremium"   column="jy_premium"/>
+        <result property="userId"      column="user_id"/>
+        <result property="userName"    column="user_name"/>
+    </resultMap>
+
+    <sql id="BusinessOrderDataSQL">
+        SELECT
+            io.orderno AS "order_no",
+            io.licenseno AS "car_num",
+            su.id AS "user_id",
+            su.name AS "user_name",
+            IFNULL(sum(jqpremium), 0) AS "jq_premium",
+            IFNULL(sum(sypremium), 0) AS "sy_premium",
+            IFNULL(sum(taxamount), 0) AS "tax_amount",
+            IFNULL(sum(jypremium), 0) AS "jy_premium",
+            (IFNULL(sum(jqpremium), 0) + IFNULL(sum(sypremium), 0) + IFNULL(sum(jypremium), 0)) AS "sum_premium",
+            ROUND(sum(IFNULL(ifon.jq_costs_premiums, 0) + IFNULL(ifon.sy_costs_premiums, 0)
+                + IFNULL(ifon.no_costs_premiums, 0)), 2) AS "entrance_all_fee",
+            ROUND(sum(IFNULL(jq_export_other_costs_premiums, 0) + IFNULL(jq_export_supervise_costs_premiums, 0)
+                + IFNULL(sy_export_other_costs_premiums, 0) + IFNULL(sy_export_supervise_costs_premiums, 0)
+                + IFNULL(no_export_other_costs_premiums, 0) + IFNULL(no_export_supervise_costs_premiums, 0)), 2) AS "export_all_fee"
+        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 ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
+    </sql>
 
+    <select id="getBusinessOrderDataDetails" resultMap="OrderDataMap">
+        <include refid="BusinessOrderDataSQL"/>
+        <where>
+            iac.orderstatus = '3'
+            AND io.orderstatus = '3'
+            <if test="vo.userId != null and vo.userId!=''">
+                AND su.id = #{vo.userId}
+            </if>
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
+            </if>
+        </where>
+        GROUP BY
+            io.orderno
+    </select>
+
+    <select id="getBusinessOrderDataTotal" resultMap="OrderDataMap">
+        SELECT
+            count(*) AS `total`,
+            IFNULL(SUM(a.jq_premium), 0) AS `jq_premium`,
+            IFNULL(SUM(a.sy_premium), 0) AS `sy_premium`,
+            IFNULL(SUM(a.tax_amount), 0) AS `tax_amount`,
+            IFNULL(SUM(a.jy_premium), 0) AS `jy_premium`,
+            sum(IFNULL(a.jq_premium, 0) + IFNULL(a.sy_premium, 0) + IFNULL(a.jy_premium, 0)) as `sum_premium`,
+            IFNULL(SUM(a.entrance_all_fee), 0) AS `entrance_all_fee`,
+            IFNULL(SUM(a.export_all_fee), 0) AS `export_all_fee`
+        FROM (
+        <include refid="BusinessOrderDataSQL"/>
+        <where>
+                iac.orderstatus = '3'
+                AND io.orderstatus = '3'
+                <if test="vo.userId != null and vo.userId!=''">
+                    AND su.id = #{vo.userId}
+                </if>
+                <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                    AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d')
+                    AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+                </if>
+                <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                    AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d')
+                    AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
+                </if>
+            </where>
+            GROUP BY
+                io.orderno) a
+        GROUP BY
+            a.user_id
+    </select>
 
 </mapper>

+ 20 - 7
src/main/resources/mapper/modules/fnc/contract/ContractMapper.xml

@@ -67,14 +67,28 @@
 
     <select id="selectFilterFailure" resultType="com.ydtech.modules.fnc.entity.ContractEntity">
         select
-            ic.id as "id",
-            "1"  as "contractStatus"
-            from
-            ins_contract  ic
+        ic.id as "id",
+        "1" as "contractStatus"
+        from
+        ins_contract ic
+        <where>
+            ic.contract_status  ='0'
+            and  ( ic.expiring_date is not null and ic.should_postponed_effective_date is not null )
+            <if test="nowTime !=null  and  nowTime != ''">
+                and ic.should_postponed_effective_date &lt; #{nowTime}
+            </if>
+        </where>
+        UNION ALL
+        select
+        ic.id as "id",
+        "1" as "contractStatus"
+        from
+        ins_contract ic
         <where>
-            ic.expiring_date is not  null
+            ic.contract_status  ='0'
+           and  ic.expiring_date is not null and ic.should_postponed_effective_date is null
             <if test="nowTime !=null  and  nowTime != ''">
-               and  ic.expiring_date &lt; #{nowTime}
+                and ic.expiring_date &lt; #{nowTime}
             </if>
         </where>
     </select>
@@ -100,7 +114,6 @@
             file_path_id                    =#{filePathId},
             extern_type                     =#{externType},
             internal_type                   =#{internalType},
-            parent_id                       =#{parentId},
             date_time                       =#{dateTime},
             date_type                       =#{dateType}
         WHERE id = #{id};

+ 57 - 0
src/main/resources/mapper/modules/order/InsOrderPushMsgMapper.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.order.dao.InsOrderPushMsgMapper">
+
+    <resultMap id="BaseResultMap" type="com.ydtech.modules.order.entity.po.InsOrderPushMsg">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="subOrderNo" column="sub_order_no" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="VARCHAR"/>
+            <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="msgContent" column="msg_content" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,sub_order_no,status,
+        create_time,msg_content
+    </sql>
+    <update id="updateBySubOrderNo">
+        update    ins_order_push_msg   set  status = #{status}
+        where sub_order_no =#{subOrderNo}
+    </update>
+    <select id="getPushInsAreaCompanyList" resultType="String">
+        SELECT
+        id
+        FROM
+        ins_area_company iac
+        WHERE
+        iac.orderstatus = 3
+        AND iac.createtime  <![CDATA[ >= ]]>  #{benginTime}
+        AND iac.createtime  <![CDATA[ <= ]]>  #{endTime}
+        AND iac.id NOT IN (
+        SELECT
+        sub_order_no
+        FROM
+        ins_order_push_msg)
+    </select>
+
+    <select id="getPushInsAreaCompanyDateList" resultType="String">
+        SELECT
+            DATE_FORMAT( createtime, '%Y-%m' )
+        FROM
+            ins_area_company iac
+        WHERE
+            iac.orderstatus = 3
+          AND iac.id NOT IN ( SELECT sub_order_no FROM ins_order_push_msg )
+        GROUP BY
+            DATE_FORMAT( createtime, '%Y-%m' )
+        ORDER BY
+            DATE_FORMAT(
+                    createtime,
+                    '%Y-%m')
+    </select>
+    <select id="getPushCompensateInsAreaCompanyList" resultType="java.lang.String">
+        SELECT sub_order_no FROM ins_order_push_msg  where status=2
+    </select>
+</mapper>