Procházet zdrojové kódy

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

FengChaoYu před 3 měsíci
rodič
revize
34f86791e4
21 změnil soubory, kde provedl 400 přidání a 185 odebrání
  1. 4 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/policy/WorkerRemind.java
  2. 5 73
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java
  3. 85 29
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/policy/WorkerLogic.java
  4. 2 0
      mall-server-api/src/main/java/com/gree/mall/manager/ManagerApplication.java
  5. 10 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/es/OrderBaseEs.java
  6. 10 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/es/OrderBaseEsDate.java
  7. 10 2
      mall-server-api/src/main/java/com/gree/mall/manager/bean/letter/LeLetterVO.java
  8. 10 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/listvo/workorder/OrderBaseVO.java
  9. 3 0
      mall-server-api/src/main/java/com/gree/mall/manager/bean/policy/PolicyVo.java
  10. 3 3
      mall-server-api/src/main/java/com/gree/mall/manager/bean/workorder/OrderBaseCountBean.java
  11. 2 2
      mall-server-api/src/main/java/com/gree/mall/manager/enums/workorder/OrderTypeEnum.java
  12. 16 15
      mall-server-api/src/main/java/com/gree/mall/manager/logic/LetterLogic.java
  13. 5 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java
  14. 3 3
      mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/AgreementLogic.java
  15. 26 23
      mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/PolicyOrderLogic.java
  16. 4 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/user/UserLogic.java
  17. 19 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java
  18. 180 31
      mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseCountLogic.java
  19. 1 0
      mall-server-api/src/main/java/com/gree/mall/manager/schedule/InsureEmailSchedule.java
  20. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/schedule/SyncUnicomeCallRecord.java
  21. 1 1
      mall-server-sync-api/src/main/java/com/gree/mall/manager/logic/SyncOrderInfoLogic.java

+ 4 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/policy/WorkerRemind.java

@@ -21,4 +21,8 @@ public class WorkerRemind {
 
     @ApiModelProperty("过期时间")
     private Date endTime;
+
+
+    @ApiModelProperty("过期天数")
+    private Integer day;
 }

+ 5 - 73
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -211,9 +211,6 @@ public class PayOrderLogic {
         workerOrderBuy.insert();
 
         BigDecimal totalAmount = new BigDecimal("0");
-        BigDecimal workerAmount = new BigDecimal("0");
-
-        BigDecimal workerProceAmount = new BigDecimal("0");
         BigDecimal manualAmount = new BigDecimal("0");
 
 
@@ -232,9 +229,7 @@ public class PayOrderLogic {
 
 
             totalAmount = totalAmount.add(workerOrderItem.getTotalAmount());
-            workerAmount = workerAmount.add(workerOrderItem.getWorkerAmount());
 
-            workerProceAmount = workerProceAmount.add(workerOrderItem.getWorkerProceAmount());
             manualAmount = manualAmount.add(Objects.isNull(workerOrderItem.getManualAmount()) ? BigDecimal.ZERO : workerOrderItem.getManualAmount());
             num = num.add(workerOrderItem.getNum());
         }
@@ -244,38 +239,13 @@ public class PayOrderLogic {
             totalAmount = totalAmount.add(workerOrderBuy.getServicePrice());
 
 
-            BigDecimal workerServiceProceAmount = workerOrderBuy.getServicePrice().multiply(Convert.toBigDecimal("0.006"));
-
-
-            if (workerServiceProceAmount.doubleValue() > 0.01) {
-                workerServiceProceAmount = workerServiceProceAmount.setScale(2, BigDecimal.ROUND_CEILING);
-                workerProceAmount =workerProceAmount.add(workerServiceProceAmount);
 
-            }else {
-                workerServiceProceAmount = Convert.toBigDecimal("0.01");
-                workerProceAmount =workerProceAmount.add(workerServiceProceAmount);
-            }
-
-            workerAmount = workerAmount.add(workerOrderBuy.getServicePrice()).subtract(workerServiceProceAmount);
         }
 
 
         if (workerOrderBuy.getOtherPrice() != null){
 
             totalAmount = totalAmount.add(workerOrderBuy.getOtherPrice());
-            workerAmount = workerAmount.add(workerOrderBuy.getServicePrice());
-            BigDecimal workerOtherProceAmount = workerOrderBuy.getOtherPrice().multiply(Convert.toBigDecimal("0.006"));
-
-
-            if (workerOtherProceAmount.doubleValue() > 0.01) {
-                workerOtherProceAmount = workerOtherProceAmount.setScale(2, BigDecimal.ROUND_CEILING);
-                workerProceAmount =workerProceAmount.add(workerOtherProceAmount.setScale(2, BigDecimal.ROUND_CEILING));
-
-            }else {
-                workerOtherProceAmount = Convert.toBigDecimal("0.01");
-                workerProceAmount =workerProceAmount.add(Convert.toBigDecimal("0.01"));
-            }
-            workerAmount = workerAmount.add(workerOrderBuy.getServicePrice()).subtract(workerOtherProceAmount);
 
         }
 
@@ -293,16 +263,11 @@ public class PayOrderLogic {
         }
 
 
-        if (workerProceAmount.doubleValue() > 0.01) {
-            workerOrderBuy.setWorkerProceAmount(workerProceAmount.setScale(2, BigDecimal.ROUND_CEILING));
-        }else {
-            if (totalAmount.doubleValue() > 0)
-                workerOrderBuy.setWorkerProceAmount(Convert.toBigDecimal("0.01"));
-        }
-        workerOrderBuy.setWorkerProceAmount(workerProceAmount);
-        workerOrderBuy.setCommissionAmount(workerProceAmount);
+
+        workerOrderBuy.setWorkerProceAmount(totalAmount.multiply(Convert.toBigDecimal("0.006")).setScale(2,BigDecimal.ROUND_CEILING));
+        workerOrderBuy.setCommissionAmount(totalAmount.multiply(Convert.toBigDecimal("0.006")).setScale(2,BigDecimal.ROUND_CEILING));
         workerOrderBuy.setTotalAmount(totalAmount);
-        workerOrderBuy.setWorkerAmount(workerAmount);
+        workerOrderBuy.setWorkerAmount(totalAmount.subtract(totalAmount.multiply(Convert.toBigDecimal("0.006")).setScale(2,BigDecimal.ROUND_CEILING)));
         workerOrderBuy.setManualAmount(manualAmount);
 
         workerOrderBuy.setNum(num);
@@ -351,25 +316,6 @@ public class PayOrderLogic {
 
         workerOrderItem.setChargeType("ACC");
         workerOrderItem.setWorkerAmount(workerOrderItem.getNormAmount().multiply(Convert.toBigDecimal(workerOrderItem.getNum())));
-
-
-
-        BigDecimal workerProceAmount = workerOrderItem.getWorkerAmount().multiply(Convert.toBigDecimal("0.006"));
-
-
-        if (workerProceAmount.doubleValue() > 0.01) {
-            workerOrderItem.setWorkerProceAmount(workerProceAmount.setScale(2, BigDecimal.ROUND_CEILING));
-
-        }else {
-            workerOrderItem.setWorkerProceAmount(Convert.toBigDecimal("0.01"));
-        }
-
-        workerOrderItem.setWorkerAmount(workerOrderItem.getWorkerAmount().subtract(workerOrderItem.getWorkerProceAmount()));
-
-        if (workerOrderItem.getWorkerAmount().doubleValue() <= 0){
-            workerOrderItem.setWorkerProceAmount(Convert.toBigDecimal("0"));
-            workerOrderItem.setWorkerAmount(Convert.toBigDecimal("0"));
-        }
     }
 
     private void addFuCai(Map<String, WorkerNormStockBean> workerStockMap, WorkerOrderItem workerOrderItem, WorkerOrderBuy workerOrderBuy) {
@@ -431,26 +377,12 @@ public class PayOrderLogic {
         }
 
 
-        workerOrderItem.setWorkerAmount(workerOrderItem.getTotalAmount());
-
-
-        BigDecimal workerProceAmount = workerOrderItem.getWorkerAmount().multiply(Convert.toBigDecimal("0.006"));
-
 
-        if (workerProceAmount.doubleValue() > 0.01) {
-            workerOrderItem.setWorkerProceAmount(workerProceAmount.setScale(2, BigDecimal.ROUND_CEILING));
+        workerOrderItem.setWorkerAmount(workerOrderItem.getTotalAmount());
 
-        }else {
-            workerOrderItem.setWorkerProceAmount(Convert.toBigDecimal("0.01"));
-        }
 
-        workerOrderItem.setWorkerAmount(workerOrderItem.getWorkerAmount().subtract(workerOrderItem.getWorkerProceAmount()));
 
 
-        if (workerOrderItem.getWorkerAmount().doubleValue() < 0){
-            workerOrderItem.setWorkerProceAmount(Convert.toBigDecimal("0"));
-            workerOrderItem.setWorkerAmount(Convert.toBigDecimal("0"));
-        }
 
     }
 

+ 85 - 29
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/policy/WorkerLogic.java

@@ -1,6 +1,7 @@
 package com.gree.mall.miniapp.logic.policy;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -84,6 +85,8 @@ public class WorkerLogic {
                 .eq(WebsitUser::getUserId,currentCompanyWechat.getUserId())
                 .list();
 
+        Mailbox mailbox = mailboxService.getById("1");
+
         List<WorkerRemind> workerReminds = new ArrayList<>();
 
         for (WebsitUser websitUser : websitUsers) {
@@ -131,29 +134,27 @@ public class WorkerLogic {
                 workerReminds.add(workerRemind);
             }
 
-            // 购买的意外险,七天后过期 每天提醒一次
+            // 购买的意外险,按配置后过期
             if (  workerPolicyService.lambdaQuery()
                     .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .in(WorkerPolicy::getStatus,"DSX","BZZ")
-                    .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(),7))
+                    .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(),mailbox.getOverNum()))
                     .eq(WorkerPolicy::getPolicyType,"AC")
-                    .and(item -> item.isNull(WorkerPolicy::getExTime).or().le(WorkerPolicy::getExTime,new Date()))
                     .count() > 0
-                    &&
-                    workerPolicyService.lambdaQuery()
-                            .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
-                            .in(WorkerPolicy::getStatus,"DSX","BZZ")
-                            .eq(WorkerPolicy::getPolicyType,"AC")
-                            .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
-                            .count() <= 1
 
                     &&
                     policyOrderService.lambdaQuery()
                             .eq(PolicyOrder::getWebsitUserId,websitUser.getId())
                             .in(PolicyOrder::getPolicyOrderStatus,"DSX","BZZ")
                             .eq(PolicyOrder::getType,"AC")
+                            .eq(PolicyOrder::getIsPay,IsYesNoEnum.YES.getKey())
+                            .and(item -> item
+                            .isNull(PolicyOrder::getStartTime)
+                            .or().ge(PolicyOrder::getEndTime, DateUtil.offsetDay(new Date(),mailbox.getOverNum()))
+
+                            )
                             .eq(PolicyOrder::getWebsitUserId,websitUser.getId())
-                            .count() <= 1
+                            .count() < 1
 
             ){
 
@@ -161,9 +162,8 @@ public class WorkerLogic {
                 List<WorkerPolicy> list = workerPolicyService.lambdaQuery()
                         .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                         .in(WorkerPolicy::getStatus,"DSX","BZZ")
-                        .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(),7))
+                        .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(),mailbox.getOverNum()))
                         .eq(WorkerPolicy::getPolicyType,"AC")
-                        .and(item -> item.isNull(WorkerPolicy::getExTime).or().le(WorkerPolicy::getExTime,new Date()))
                         .list();
 
                 AdminWebsit adminWebsit = adminWebsitService.getById(websitUser.getWebsitId());
@@ -180,6 +180,7 @@ public class WorkerLogic {
                     workerRemind.setWebsitName(adminWebsit.getName());
                     workerRemind.setRemindIn(2);
                     workerRemind.setEndTime(workerPolicy.getEndTime());
+                    workerRemind.setDay(mailbox.getOverNum());
                     workerReminds.add(workerRemind);
 
                     workerPolicy.setExTime(DateUtil.endOfDay(new Date())).updateById();
@@ -194,8 +195,6 @@ public class WorkerLogic {
                     .notIn(WorkerPolicy::getStatus,"DSX","BZZ")
                     .eq(WorkerPolicy::getPolicyType,"AC")
                     .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
-                    .and(item -> item.isNull(WorkerPolicy::getExTime).or().le(WorkerPolicy::getExTime,new Date()))
-
                     .count() > 0
 
                     &&
@@ -211,6 +210,7 @@ public class WorkerLogic {
                             .eq(PolicyOrder::getWebsitUserId,websitUser.getId())
                             .in(PolicyOrder::getPolicyOrderStatus,"DSX","BZZ")
                             .eq(PolicyOrder::getType,"AC")
+                            .eq(PolicyOrder::getIsPay,IsYesNoEnum.YES.getKey())
                             .eq(PolicyOrder::getWebsitUserId,websitUser.getId())
                             .count() < 1
 
@@ -296,22 +296,76 @@ public class WorkerLogic {
 
     public Page<Policy> policy(String websitId,Integer pageNum, Integer pageSize) {
 
+        CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
+
+        WebsitUser websitUser = websitUserService.lambdaQuery()
+                .eq(WebsitUser::getWebsitId, websitId)
+                .eq(WebsitUser::getUserId, currentCompanyWechat.getUserId()).last("limit 1").one();
+
         List<PolicyWebsit> policyWebsits = policyWebsitService.lambdaQuery().eq(PolicyWebsit::getWebsitId, websitId).list();
 
         if (CollectionUtils.isEmpty(policyWebsits))
             return new Page<>();
 
+        List<PolicyOrder> policyOrderList = policyOrderService
+                .lambdaQuery()
+                .eq(PolicyOrder::getType, "AC")
+                .isNotNull(PolicyOrder::getPolicyId)
+                .eq(PolicyOrder::getIsPay,IsYesNoEnum.YES.getKey())
+                .eq(PolicyOrder::getWebsitUserId, websitUser.getId())
+                .orderByDesc(PolicyOrder::getEndTime)
+                .list();
+
+        List<String> policyIds = policyOrderList.stream().map(PolicyOrder::getPolicyId).collect(Collectors.toList());
 
+        WorkerPolicy workerPolicy = workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId, websitUser.getId())
+                .eq(WorkerPolicy::getPolicyType, "AC")
+                .orderByDesc(WorkerPolicy::getEndTime)
+                .last("limit 1").one();
+
+        Date endTime = null;
+
+        if (!CollectionUtil.isEmpty(policyOrderList)){
+            endTime = policyOrderList.get(0).getEndTime();
+        }
 
-        Page<Policy> page = policyService.lambdaQuery()
-                .in(Policy::getId,policyWebsits.stream().map(PolicyWebsit::getPolicyId).collect(Collectors.toList()))
+        if (workerPolicy != null ){
+            endTime = workerPolicy.getEndTime();
+        }
+
+        if (workerPolicy != null && !CollectionUtil.isEmpty(policyOrderList)){
+            if (policyOrderList.get(0).getEndTime().after(workerPolicy.getEndTime()))
+                endTime = policyOrderList.get(0).getEndTime();
+            else
+                endTime = workerPolicy.getEndTime();
+        }
+
+
+
+
+        Policy policy = policyService.lambdaQuery()
+                .in(Policy::getId, policyWebsits.stream().map(PolicyWebsit::getPolicyId).collect(Collectors.toList()))
+                .notIn(CollectionUtil.isNotEmpty(policyIds), Policy::getId, policyIds)
+                .gt(endTime != null, Policy::getEndTime,endTime)
                 .eq(Policy::getIsBuy, IsYesNoEnum.YES.getKey())
-                .le(Policy::getStartTime,new Date())
-                .ge(Policy::getEndTime,new Date())
-                .page(new Page<>(pageNum, pageSize));
+                .le(Policy::getPolicyStartTime, new Date())
+                .ge(Policy::getEndTime, new Date())
+                .orderByAsc(Policy::getEndTime)
+                .last("limit 1").one();
 
+        Page<Policy> objectPage = new Page<>();
 
-        return page;
+        if (policy == null)
+            return objectPage;
+
+        List<Policy> policies = new ArrayList<>();
+        policies.add(policy);
+        objectPage.setPages(1);
+        objectPage.setTotal(1);
+        objectPage.setCurrent(1);
+        objectPage.setRecords(policies);
+
+        return objectPage;
     }
 
     public PolicyDetail detail(String id) {
@@ -378,6 +432,8 @@ public class WorkerLogic {
         policyOrder.setPolicyNumber(policy.getPolicyNumber());
 
         policyOrder.setWebsitUserId(websiUser.getId());
+        if (startTime.after(policy.getEndTime()))
+            throw new RemoteServiceException("已拥有对应时间得保险");
 
         int month = DateUtil.month(startTime);
         int month2 = DateUtil.month(policy.getEndTime());
@@ -498,6 +554,8 @@ public class WorkerLogic {
 
         List<AdminWebsit> adminWebsits = new ArrayList<>();
         for (WebsitUser websitUser : websitUsers) {
+
+            //保障,生效小于1 或 保障待生效,时间小于过期提醒  且  有订单大于提醒日期得保障待生效 小于1
             if ((workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .eq(WorkerPolicy::getPolicyType,"AC")
                     .in(WorkerPolicy::getStatus,"BZZ","DSX").count() < 1 ||
@@ -508,18 +566,16 @@ public class WorkerLogic {
                             .count() > 0)
 
                     &&
-                    workerPolicyService.lambdaQuery()
-                            .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
-                            .in(WorkerPolicy::getStatus,"DSX","BZZ")
-                            .eq(WorkerPolicy::getPolicyType,"AC")
-                            .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
-                            .count() < 1
-
-                    &&
                     policyOrderService.lambdaQuery()
                             .eq(PolicyOrder::getWebsitUserId,websitUser.getId())
                             .in(PolicyOrder::getPolicyOrderStatus,"DSX","BZZ")
                             .eq(PolicyOrder::getType,"AC")
+                            .eq(PolicyOrder::getIsPay,IsYesNoEnum.YES.getKey())
+                            .and(item -> item
+                                    .isNull(PolicyOrder::getStartTime)
+                                    .or().ge(PolicyOrder::getEndTime, DateUtil.offsetDay(new Date(),mailbox.getOverNum()))
+
+                            )
                             .eq(PolicyOrder::getWebsitUserId,websitUser.getId())
                             .count() < 1
 

+ 2 - 0
mall-server-api/src/main/java/com/gree/mall/manager/ManagerApplication.java

@@ -25,8 +25,10 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 public class ManagerApplication {
 
     public static void main(String[] args) {
+
         ApplicationContext context = SpringApplication.run(ManagerApplication.class, args);
         ApplicationContextUtils.setApplicationContext(context);
+        System.setProperty("mail.mime.splitlongparameters","false");
     }
 
 }

+ 10 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/es/OrderBaseEs.java

@@ -549,5 +549,15 @@ public class OrderBaseEs   {
     @Field(value = "parts_apply_status", type = FieldType.Keyword)
     private String partsApplyStatus;
 
+    @ApiModelProperty(value = "首次派工时间")
+    @Field(value = "first_dispatch_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private String firstDispatchTime;
 
+    @ApiModelProperty(value = "首次预约时间")
+    @Field(value = "first_appointment_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private String firstAppointmentTime;
+
+    @ApiModelProperty(value = "取消时间")
+    @Field(value = "cancel_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private String cancelTime;
 }

+ 10 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/es/OrderBaseEsDate.java

@@ -535,5 +535,15 @@ public class OrderBaseEsDate {
     @Field(value = "parts_apply_status", type = FieldType.Keyword)
     private String partsApplyStatus;
 
+    @ApiModelProperty(value = "首次派工时间")
+    @Field(value = "first_dispatch_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private Date firstDispatchTime;
 
+    @ApiModelProperty(value = "首次预约时间")
+    @Field(value = "first_appointment_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private Date firstAppointmentTime;
+
+    @ApiModelProperty(value = "取消时间")
+    @Field(value = "cancel_time", type = FieldType.Date,format = DateFormat.custom, pattern ="yyyy-MM-dd HH:mm:ss")
+    private Date cancelTime;
 }

+ 10 - 2
mall-server-api/src/main/java/com/gree/mall/manager/bean/letter/LeLetterVO.java

@@ -18,7 +18,7 @@ import java.util.Date;
 @ZfireField(tbName = "a")
 @ApiModel
 @Data
-public class LeLetterVO  {
+public class LeLetterVO   {
 
     @ZfireField(hide = true)
     @ApiModelProperty(value = "id")
@@ -100,7 +100,8 @@ public class LeLetterVO  {
     @ApiModelProperty(value = "所属科室")
     private String dapartment;
 
-
+    @ApiModelProperty(value = "产品大类")
+    private String mainName;
 
     @ApiModelProperty(value = "审批人")
     private String examineName;
@@ -117,6 +118,13 @@ public class LeLetterVO  {
     @ApiModelProperty(value = "最终考核分值")
     private BigDecimal examineFration;
 
+    @ApiModelProperty(value = "函件内容")
+    private String context;
+
+    @ApiModelProperty(value = "备注")
+    private String remark;
+
+
     @ZfireField(hide = true)
     @ApiModelProperty(value = "商户编号")
     private String companyWechatId;

+ 10 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/listvo/workorder/OrderBaseVO.java

@@ -7,6 +7,9 @@ import com.gree.mall.manager.plus.entity.PgOrderBase;
 import com.gree.mall.manager.plus.entity.PgOrderFlag;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.data.elasticsearch.annotations.DateFormat;
+import org.springframework.data.elasticsearch.annotations.Field;
+import org.springframework.data.elasticsearch.annotations.FieldType;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -220,5 +223,12 @@ public class OrderBaseVO     {
     @ApiModelProperty(value = "评价时间")
     private Date appraiseTime;
 
+    @ApiModelProperty(value = "首次派工时间")
+    private Date firstDispatchTime;
 
+    @ApiModelProperty(value = "首次预约时间")
+    private Date firstAppointmentTime;
+
+    @ApiModelProperty(value = "取消服务时间")
+    private Date cancelTime;
 }

+ 3 - 0
mall-server-api/src/main/java/com/gree/mall/manager/bean/policy/PolicyVo.java

@@ -32,6 +32,9 @@ public class PolicyVo   {
     @ApiModelProperty(value = "保费金额")
     private BigDecimal policyPrice;
 
+    @ApiModelProperty(value = "开始购买时间")
+    private Date policyStartTime;
+
     @ApiModelProperty(value = "生效时间")
     private Date startTime;
 

+ 3 - 3
mall-server-api/src/main/java/com/gree/mall/manager/bean/workorder/OrderBaseCountBean.java

@@ -27,11 +27,11 @@ public class OrderBaseCountBean {
     private Integer dqd = 0;
 
     @ApiModelProperty("七天订单趋势 新增工单,完工工单,进行中")
-    private Map<String, List<Integer>> qtddqs;
+    private Map<String, List<Long>> qtddqs;
 
     @ApiModelProperty("未来七天上门")
-    private  List<Integer> qtsm;
+    private  List<Long> qtsm;
 
     @ApiModelProperty("七天订单趋势 新增工单,完工工单,进行中")
-    private Map<String, List<Integer>> wglxfb;
+    private Map<String, List<Long>> wglxfb;
 }

+ 2 - 2
mall-server-api/src/main/java/com/gree/mall/manager/enums/workorder/OrderTypeEnum.java

@@ -15,8 +15,8 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor(access = AccessLevel.PRIVATE)
 public enum OrderTypeEnum implements BaseEnum {
-    INSTALL("INSTALL","安装"),
-    REPAIR("REPAIR","维修")
+    INSTALL("INSTALL","安装"),
+    REPAIR("REPAIR","维修")
     ;
 
     @EnumValue

+ 16 - 15
mall-server-api/src/main/java/com/gree/mall/manager/logic/LetterLogic.java

@@ -324,31 +324,32 @@ public class LetterLogic {
 
         //生成订单流水号
         if (websitNumber.equals("GZ")) {
-            String yyyyMM = DateUtil.format(new Date(), "yyyy");
+      /*
 
             if (redisUtil.get(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM) == null) {
-                redisUtil.set(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM, yyyyMM+"00000", 2726560);
+                redisUtil.set(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM, yyyyMM+"00000", 2726560*13);
             }
             Object water = redisUtil.get(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM);
 
 
             Long number = Convert.toLong(water) + 1;
-            redisUtil.set(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM, number, 2726560);
-            return "GZ"+number;
-        }
+            redisUtil.set(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM, number, 2726560*13);
+            return "GZ"+number;*/
 
-        String yyyyMM = DateUtil.format(new Date(), "yyyy");
+            String yyyyMM = DateUtil.format(new Date(), "yyyy");
+            Integer count = leLetterService.lambdaQuery().eq(LeLetter::getBelongCompanyCode, "S9219801")
+                    .like(LeLetter::getLetterNumber,"GZ"+yyyyMM)
+                    .count();
+            Long number = Convert.toLong(yyyyMM+"00001") + count;
+            return "GZ"+number;
 
-        if (redisUtil.get(Constant.RedisPrefix.LETTER_NUMBER_FS + yyyyMM) == null) {
-            redisUtil.set(Constant.RedisPrefix.LETTER_NUMBER_FS + yyyyMM, yyyyMM+"00000", 2726560);
         }
-        Object water = redisUtil.get(Constant.RedisPrefix.LETTER_NUMBER_FS + yyyyMM);
 
-
-        Long number = Convert.toLong(water) + 1;
-        redisUtil.set(Constant.RedisPrefix.LETTER_NUMBER + yyyyMM, number, 2726560);
+        String yyyyMM = DateUtil.format(new Date(), "yyyy");
+        Integer count = leLetterService.lambdaQuery().eq(LeLetter::getBelongCompanyCode, "S9219807")
+                .like(LeLetter::getLetterNumber,"FS"+yyyyMM).count();
+        Long number = Convert.toLong(yyyyMM+"00001") + count;
         return "FS"+number;
-
     }
 
 
@@ -374,8 +375,8 @@ public class LetterLogic {
     }
 
     public void cancel(List<String> ids) {
-        if (leLetterService.lambdaQuery().in(LeLetter::getLeLetterId,ids).ne(LeLetter::getStatus,"WAIT").count()>0)
-            throw new RemoteServiceException("存在有非待发送的联络函");
+ /*       if (leLetterService.lambdaQuery().in(LeLetter::getLeLetterId,ids).ne(LeLetter::getStatus,"WAIT").count()>0)
+            throw new RemoteServiceException("存在有非待发送的联络函");*/
         leLetterService.lambdaUpdate().in(LeLetter::getLeLetterId,ids)
                 .set(LeLetter::getStatus, LetterStatusEnum.CANCEL.getKey()).update();
     }

+ 5 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java

@@ -3,6 +3,7 @@ package com.gree.mall.manager.logic.common;
 import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
@@ -58,6 +59,7 @@ import org.jdom.Document;
 import org.jdom.Element;
 import org.jdom.JDOMException;
 import org.jdom.input.SAXBuilder;
+import org.joda.time.DateTimeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
@@ -1270,7 +1272,9 @@ public class WechatLogic {
         request.setSpbillCreateIp(ip);
         request.setAuthCode(authCode);
         request.setProfitSharing(profitSharingFlag); // 分账标记 Y=分账 N=不分账
-
+        Date date = new Date();
+        request.setTimeStart(DateUtil.format(date,"yyyyMMddHHmmss"));
+        request.setTimeExpire(DateUtil.format(DateUtil.offsetMinute(date,2),"yyyyMMddHHmmss"));
         WxPayMicropayResult payResult = null;
         try {
             this.addShareReveiverWorker(id);

+ 3 - 3
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/AgreementLogic.java

@@ -364,7 +364,7 @@ public class AgreementLogic {
             path = Objects.requireNonNull(this.getClass().getClassLoader().getResource("")).getPath();
         }
         // 文件名:采用UUID,防止多线程同时生成导致的文件重名
-        String filePath = String.format("%s-%s.xlsx", path, mailboxSendRecord.getSendBatch() + "-工伤险");
+        String filePath = String.format("%s%s.xlsx", path, mailboxSendRecord.getSendBatch() + "-工伤险");
         ExcelData excelData = new ExcelData();
         excelData.setTitles(Arrays.asList(titles));
         excelData.setRows(rows);
@@ -415,7 +415,7 @@ public class AgreementLogic {
             path = Objects.requireNonNull(this.getClass().getClassLoader().getResource("")).getPath();
         }
         // 文件名:采用UUID,防止多线程同时生成导致的文件重名
-        String filePath = String.format("%s-%s.xlsx", path, mailboxSendRecord.getSendBatch() + "-雇主险");
+        String filePath = String.format("%s%s.xlsx", path, mailboxSendRecord.getSendBatch() + "-雇主险");
         ExcelData excelData = new ExcelData();
         excelData.setTitles(Arrays.asList(titles));
         excelData.setRows(rows);
@@ -466,7 +466,7 @@ public class AgreementLogic {
             path = Objects.requireNonNull(this.getClass().getClassLoader().getResource("")).getPath();
         }
         // 文件名:采用UUID,防止多线程同时生成导致的文件重名
-        String filePath = String.format("%s-%s.xlsx", path, mailboxSendRecord.getSendBatch() + "-意外险");
+        String filePath = String.format("%s%s.xlsx", path, mailboxSendRecord.getSendBatch() + "-意外险");
         ExcelData excelData = new ExcelData();
         excelData.setTitles(Arrays.asList(titles));
         excelData.setRows(rows);

+ 26 - 23
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/PolicyOrderLogic.java

@@ -377,6 +377,32 @@ public class PolicyOrderLogic {
                     .one();
 
 
+            List<PolicyOrder> policyOrders = policyOrderService.lambdaQuery()
+                    .eq(PolicyOrder::getWebsitId, (String) row.get(1))
+                    .eq(PolicyOrder::getWorkerNumber, (String) row.get(3))
+                    .eq(PolicyOrder::getType, "EM")
+                    .in(PolicyOrder::getPolicyOrderStatus, PolicyOrderEmStutasEnum.XG.getKey(),
+                            PolicyOrderEmStutasEnum.DSX.getKey(),
+                            PolicyOrderEmStutasEnum.KTH.getKey()
+
+                    ).list();
+            for (PolicyOrder order : policyOrders) {
+                workerPolicyService.lambdaUpdate().eq(WorkerPolicy::getOrderId,order.getId()).remove();
+            }
+
+
+            policyOrderService.lambdaUpdate()
+                    .eq(PolicyOrder::getWebsitId, (String) row.get(1))
+                    .eq(PolicyOrder::getWebsitUserId, websitUser.getId())
+                    .eq(PolicyOrder::getType, "EM")
+                    .in(PolicyOrder::getPolicyOrderStatus, PolicyOrderEmStutasEnum.XG.getKey(),
+                            PolicyOrderEmStutasEnum.KTH.getKey(),
+                            PolicyOrderEmStutasEnum.DSX.getKey(),
+                            PolicyOrderEmStutasEnum.DTH.getKey()
+
+                    ).remove();
+
+
 
             PolicyOrder policyOrder = new PolicyOrder();
             policyOrder.setId("PW"+ IdWorker.getIdStr());
@@ -446,30 +472,7 @@ public class PolicyOrderLogic {
             }
             workerPolicy.insert();
 
-            List<PolicyOrder> policyOrders = policyOrderService.lambdaQuery()
-                    .eq(PolicyOrder::getWebsitId, (String) row.get(1))
-                    .eq(PolicyOrder::getWorkerNumber, (String) row.get(3))
-                    .eq(PolicyOrder::getType, "EM")
-                    .in(PolicyOrder::getPolicyOrderStatus, PolicyOrderEmStutasEnum.XG.getKey(),
-                            PolicyOrderEmStutasEnum.DSX.getKey(),
-                            PolicyOrderEmStutasEnum.KTH.getKey()
-
-                    ).list();
-            for (PolicyOrder order : policyOrders) {
-                workerPolicyService.lambdaUpdate().eq(WorkerPolicy::getOrderId,order.getId()).remove();
-            }
-
-
-            policyOrderService.lambdaUpdate()
-                    .eq(PolicyOrder::getWebsitId, (String) row.get(1))
-                    .eq(PolicyOrder::getWebsitUserId, websitUser.getId())
-                    .eq(PolicyOrder::getType, "EM")
-                    .in(PolicyOrder::getPolicyOrderStatus, PolicyOrderEmStutasEnum.XG.getKey(),
-                            PolicyOrderEmStutasEnum.DSX.getKey(),
-                            PolicyOrderEmStutasEnum.KTH.getKey(),
-                            PolicyOrderEmStutasEnum.DTH.getKey()
 
-                    ).remove();
 
 
 

+ 4 - 0
mall-server-api/src/main/java/com/gree/mall/manager/logic/user/UserLogic.java

@@ -467,6 +467,10 @@ public class UserLogic {
                 throw new RemoteServiceException("不同师傅不能导入重复师傅编号,请检查"+userWait.getMobile()+"!");
 
 
+            if (userWaits.stream().filter(item -> item.getWorkerNumber().equals(userWait.getWorkerNumber())).count() > 0) {
+                throw new RemoteServiceException("不同师傅不能导入重复师傅编号,请检查"+userWait.getMobile()+"!");
+            }
+
             userWaits.add(userWait);
         }
         userWaitService.saveBatch(userWaits);

+ 19 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java

@@ -369,6 +369,7 @@ public class SettlementOrderLogic {
     }
 
     public void lineSettlementOrder(List<String> id) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
 
         if (settlementOrderService.lambdaQuery()
                 .in(SettlementOrder::getSettlementOrderId, id)
@@ -380,7 +381,10 @@ public class SettlementOrderLogic {
         settlementOrderService.lambdaUpdate()
                 .in(SettlementOrder::getSettlementOrderId, id)
                 .eq(SettlementOrder::getStatus, SettlementStatusNewEnum.YC.getKey())
-                .set(SettlementOrder::getStatus, SettlementStatusNewEnum.LINE.getKey()).update();
+                .set(SettlementOrder::getStatus, SettlementStatusNewEnum.LINE.getKey())
+                .set(SettlementOrder::getSettlementName, adminUser.getNickName())
+                .set(SettlementOrder::getSettlementTime, new Date())
+                .update();
     }
 
 
@@ -825,8 +829,14 @@ public class SettlementOrderLogic {
 
         List<String> orderBaseIds = pgOrderBases.stream().map(PgOrderBase::getId).collect(Collectors.toList());
 
+        if (CollectionUtils.isEmpty(orderBaseIds))
+            return settlementOrderLogicVOIPage;
+
         List<WorkerOrder> workerOrders = workerOrderService.lambdaQuery()
                 .in(WorkerOrder::getWorkerOrderId, orderBaseIds)
+                .isNotNull(WorkerOrder::getWebsitId)
+                .isNotNull(WorkerOrder::getWorkerNumber)
+                .ne(WorkerOrder::getWorkerOrderId,"")
                 .eq(WorkerOrder::getPayStatus,"PAID")
                 .list();
 
@@ -848,6 +858,9 @@ public class SettlementOrderLogic {
             record.setZgds(pgOrderBaseList.size());
             record.setSbzts(pgOrderBaseList.stream().mapToInt(PgOrderBase::getTotalNum).sum());
 
+            if (CollectionUtils.isEmpty(workerOrders))
+                continue;
+
             List<WorkerOrder> workerOrderList = workerOrders.stream().filter(
                     item -> item.getWorkerNumber().equals(record.getWorkerNumber())
                             && item.getWebsitId().equals(record.getWebsitId())
@@ -862,6 +875,11 @@ public class SettlementOrderLogic {
             List<PgOrderBase> pgOrderBaseList1 = pgOrderBases.stream().filter(item -> orderWorkerIds.contains(item.getId()))
                     .collect(Collectors.toList());
 
+            if (CollectionUtils.isEmpty(pgOrderBaseList1))
+                continue;
+
+
+
             record.setDzzfs(pgOrderBaseList1.size());
             int sum = pgOrderBaseList1.stream().mapToInt(PgOrderBase::getTotalNum).sum();
 

+ 180 - 31
mall-server-api/src/main/java/com/gree/mall/manager/logic/workorder/OrderBaseCountLogic.java

@@ -1,20 +1,35 @@
 package com.gree.mall.manager.logic.workorder;
 
 import cn.hutool.core.date.DateUtil;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.google.common.collect.Lists;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
+import com.gree.mall.manager.bean.es.OrderBaseEs;
 import com.gree.mall.manager.bean.workorder.OrderBaseCountBean;
 import com.gree.mall.manager.bean.workorder.OrderCount7DayBean;
 import com.gree.mall.manager.commonmapper.workorder.OrderBaseCMapper;
 import com.gree.mall.manager.enums.OrderStatusEnum;
 import com.gree.mall.manager.enums.workorder.OrderBaseStatusEnum;
+import com.gree.mall.manager.enums.workorder.OrderTypeEnum;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.plus.entity.PgOrderBase;
 import com.gree.mall.manager.plus.service.PgOrderBaseService;
 import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.elasticsearch.index.query.BoolQueryBuilder;
+import org.elasticsearch.index.query.QueryBuilder;
+import org.elasticsearch.index.query.QueryBuilders;
+import org.elasticsearch.search.aggregations.AbstractAggregationBuilder;
+import org.elasticsearch.search.aggregations.AggregationBuilders;
+import org.elasticsearch.search.aggregations.Aggregations;
+import org.elasticsearch.search.aggregations.bucket.filter.FilterAggregationBuilder;
+import org.elasticsearch.search.aggregations.bucket.filter.ParsedFilter;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
+import org.springframework.data.elasticsearch.core.SearchHits;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
+import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
 import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
@@ -29,6 +44,7 @@ public class OrderBaseCountLogic {
     private final OrderBaseCMapper orderBaseCMapper;
     private final PgOrderBaseService pgOrderBaseService;
     private final CommonLogic commonLogic;
+    private final ElasticsearchRestTemplate elasticsearchRestTemplate;
 
     /**
      * 首页工单统计
@@ -39,21 +55,35 @@ public class OrderBaseCountLogic {
         OrderBaseCountBean orderBaseCountBean = orderBaseCMapper
                 .countOrderBaseIndex(adminUser.getCompanyWechatId(), adminUser.getAdminWebsitIds(),adminUser.getType());
 
+/*
         List<PgOrderBase> pgOrderBaseList = pgOrderBaseService.lambdaQuery()
                 .select(PgOrderBase::getOrderType, PgOrderBase::getOrderTypeText, PgOrderBase::getCreateTime, PgOrderBase::getId
                         , PgOrderBase::getOrderStatus,PgOrderBase::getAppointmentTime)
                 .between(PgOrderBase::getCreateTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -30)), new Date())
                 .in(CollectionUtils.isNotEmpty(adminUser.getCompanyWechatIds()),PgOrderBase::getCompanyWechatId,adminUser.getCompanyWechatId())
                 .and(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()),
+                        v -> v.in(PgOrderBase::getWebsitId,adminUser.getAdminWebsitIds()).or()
+                                .in(PgOrderBase::getCreateWebsitId,adminUser.getAdminWebsitIds()))
+                .list();
+*/
+
+/*
+        List<PgOrderBase> pgOrderBaseListOver = pgOrderBaseService.lambdaQuery()
+                .select(PgOrderBase::getOrderType, PgOrderBase::getOrderTypeText, PgOrderBase::getCreateTime, PgOrderBase::getId
+                        , PgOrderBase::getOrderStatus,PgOrderBase::getAppointmentTime,PgOrderBase::getOverDate,PgOrderBase::getOverTime)
+                .between(PgOrderBase::getOverTime, DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), -8)), new Date())
+                .in(CollectionUtils.isNotEmpty(adminUser.getCompanyWechatIds()),PgOrderBase::getCompanyWechatId,adminUser.getCompanyWechatId())
+                .and(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()),
                         v -> v.in(PgOrderBase::getWebsitId,adminUser.getAdminWebsitIds()).or().in(PgOrderBase::getCreateWebsitId,adminUser.getAdminWebsitIds()))
                 .list();
+*/
 
-        Map<String,List<Integer>> qtddqs = new HashMap<>();
+        Map<String,List<Long>> qtddqs = new HashMap<>();
 
-        List<Integer> xzgdList = new ArrayList<>();
-        List<Integer> wgdList = new ArrayList<>();
-        List<Integer> jxzList = new ArrayList<>();
-        List<Integer> qtsmList = new ArrayList<>();
+        List<Long> xzgdList = new ArrayList<>();
+        List<Long> wgdList = new ArrayList<>();
+        List<Long> jxzList = new ArrayList<>();
+        List<Long> qtsmList = new ArrayList<>();
 
         List<String> orderStatus = new ArrayList<>();
 
@@ -73,58 +103,161 @@ public class OrderBaseCountLogic {
 
         for (int i = 6; i >= 0; i--) {
             Integer day = i*-1;
-            int xzgd = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
+       /*     Long xzgd = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
                     item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
-            ).collect(Collectors.toList()).size();
-            xzgdList.add(xzgd);
-            int wgd = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
-                    item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
-                    && orderStatus.contains(item.getOrderStatus())
-
-            ).collect(Collectors.toList()).size();
-            wgdList.add(wgd);
-            int jxz = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
+            ).count();
+*/
+            BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
+
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
+                List<QueryBuilder> should = queryBuilder.should();
+                should.add(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()));
+                should.add(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()));
+            }
+            //新增工单
+            NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
+                    .withQuery(queryBuilder)
+                    .withPageable(PageRequest.of(1, 1))
+                    .addAggregation(this.getAggs(AggregationBuilders.filter("xzgd", QueryBuilders.boolQuery()
+                            .must(QueryBuilders.rangeQuery("create_time")
+                                    .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
+                                    .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss")))
+                    )))
+                    .build();
+            SearchHits response = elasticsearchRestTemplate.search(searchQuery, OrderBaseEs.class);
+
+            xzgdList.add(this.getWorkerOrderCountResult(response.getAggregations(),"xzgd"));
+
+    /*        Long wgd = pgOrderBaseListOver.stream().filter(item -> item.getOverTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
+                            item.getOverTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
+                            && orderStatus.contains(item.getOrderStatus())      ).count();*/
+
+
+            //完工单
+            NativeSearchQuery searchQueryWGD = new NativeSearchQueryBuilder()
+                    .withQuery(queryBuilder)
+                    .withPageable(PageRequest.of(1, 1))
+                    .addAggregation(this.getAggs(AggregationBuilders.filter("wgd", QueryBuilders.boolQuery()
+                            .must(QueryBuilders.termsQuery("order_status",orderStatus))
+                            .must(QueryBuilders.rangeQuery("over_time")
+                                    .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
+                                    .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss")))
+                    )))
+                    .build();
+            SearchHits responseWGD = elasticsearchRestTemplate.search(searchQueryWGD, OrderBaseEs.class);
+            wgdList.add(this.getWorkerOrderCountResult(responseWGD.getAggregations(),"wgd"));
+
+
+
+/*            Long jxz = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
                     item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
                     && !orderStatus.contains(item.getOrderStatus())
                     && !orderStatusQx.contains(item.getOrderStatus())
-            ).collect(Collectors.toList()).size();
-            jxzList.add(jxz);
+            ).count();*/
 
 
+            //待商户派工
+            NativeSearchQuery searchQueryJXZ= new NativeSearchQueryBuilder()
+                    .withQuery(queryBuilder)
+                    .withPageable(PageRequest.of(1, 1))
+                    .addAggregation(this.getAggs(AggregationBuilders.filter("jxz", QueryBuilders.boolQuery()
+                            .mustNot(QueryBuilders.termsQuery("order_status",orderStatus))
+                            .mustNot(QueryBuilders.termsQuery("order_status",orderStatusQx))
+                            .must(QueryBuilders.rangeQuery("create_time")
+                                    .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
+                                    .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss")))
+                    )))
+                    .build();
+            SearchHits responseJXZ = elasticsearchRestTemplate.search(searchQueryJXZ, OrderBaseEs.class);
 
-        }
 
-        for (int i = 0; i < 7; i++) {
-            Integer day = i;
-            int qtsm = pgOrderBaseList.stream().filter(item -> item.getAppointmentTime() != null && item.getAppointmentTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
-                    item.getAppointmentTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
+            jxzList.add(this.getWorkerOrderCountResult(responseJXZ.getAggregations(),"jxz"));
 
-            ).collect(Collectors.toList()).size();
 
-            qtsmList.add(qtsm);
 
         }
+
         qtddqs.put("新增工单",xzgdList);
         qtddqs.put("完工工单",wgdList);
         qtddqs.put("进行中",jxzList);
 
         orderBaseCountBean.setQtddqs(qtddqs);
+
+        for (int i = 0; i < 7; i++) {
+            Integer day = i;
+
+            BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
+
+            if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
+                List<QueryBuilder> should = queryBuilder.should();
+                should.add(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()));
+                should.add(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()));
+            }
+
+/*            Long qtsm = pgOrderBaseList.stream().filter(item -> item.getAppointmentTime() != null && item.getAppointmentTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
+                    item.getAppointmentTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
+
+            ).count();*/
+
+            //七天上门
+            NativeSearchQuery searchQueryQTSM= new NativeSearchQueryBuilder()
+                    .withQuery(queryBuilder)
+                    .withPageable(PageRequest.of(1, 1))
+                    .addAggregation(this.getAggs(AggregationBuilders.filter("qtsm", QueryBuilders.boolQuery()
+                            .must(QueryBuilders.rangeQuery("appointment_time")
+                                    .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
+                                    .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))))))
+                    .build();
+            SearchHits responseQTSM = elasticsearchRestTemplate.search(searchQueryQTSM, OrderBaseEs.class);
+
+
+            qtsmList.add(this.getWorkerOrderCountResult(responseQTSM.getAggregations(),"qtsm"));
+
+        }
+
+
+
         orderBaseCountBean.setQtsm(qtsmList);
 
-        List<String> collect = pgOrderBaseList.stream().map(PgOrderBase::getOrderTypeText).distinct().collect(Collectors.toList());
+        List<String> collect = new ArrayList<>();
+
+        collect.add(OrderTypeEnum.INSTALL.getRemark());
+        collect.add(OrderTypeEnum.REPAIR.getRemark());
 
-        Map<String,List<Integer>> wglxfb = new HashMap<>();
+        Map<String,List<Long>> wglxfb = new HashMap<>();
         for (String orderTypeText : collect) {
 
-            List<Integer> list = new ArrayList<>();
+            List<Long> list = new ArrayList<>();
             for (int i = 0; i < 30; i++) {
                 Integer day = i*-1;
 
-                int num = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
+       /*         Long num = pgOrderBaseList.stream().filter(item -> item.getCreateTime().before(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day)))) &&
                         item.getCreateTime().after(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))))
                         && item.getOrderTypeText().equals(orderTypeText)
-                ).collect(Collectors.toList()).size();
-                list.add(num);
+                ).count();*/
+
+                BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
+
+                if (CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds())) {
+                    List<QueryBuilder> should = queryBuilder.should();
+                    should.add(QueryBuilders.termsQuery("create_websit_id", adminUser.getAdminWebsitIds()));
+                    should.add(QueryBuilders.termsQuery("websit_id", adminUser.getAdminWebsitIds()));
+                }
+
+                //工单类型
+                NativeSearchQuery searchQueryGDLX= new NativeSearchQueryBuilder()
+                        .withQuery(queryBuilder)
+                        .withPageable(PageRequest.of(1, 1))
+                        .addAggregation(this.getAggs(AggregationBuilders.filter("gdlx", QueryBuilders.boolQuery()
+                                .must(QueryBuilders.termsQuery("order_type_text",orderTypeText))
+                                .must(QueryBuilders.rangeQuery("create_time")
+                                        .gte(DateUtil.format(DateUtil.beginOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))
+                                        .lte(DateUtil.format(DateUtil.endOfDay(DateUtil.offsetDay(new Date(), (day))),"yyyy-MM-dd HH:mm:ss"))))))
+                        .build();
+                SearchHits responseGDLX = elasticsearchRestTemplate.search(searchQueryGDLX, OrderBaseEs.class);
+
+
+                list.add(this.getWorkerOrderCountResult(responseGDLX.getAggregations(),"gdlx"));
             }
 
             Collections.reverse(list);
@@ -139,6 +272,22 @@ public class OrderBaseCountLogic {
         return orderBaseCountBean;
     }
 
+
+    public AbstractAggregationBuilder<?> getAggs(FilterAggregationBuilder filter) {
+        return filter.subAggregation(AggregationBuilders.sum("total_mac_sum").field("total_num"))
+                .subAggregation(AggregationBuilders.terms("order_type_group").field("order_type")
+                        .subAggregation(AggregationBuilders.sum("mac_sum").field("total_num")));
+    }
+
+    private long getWorkerOrderCountResult(Aggregations aggregations, String name) {
+        StringBuffer sb = new StringBuffer();
+        ParsedFilter parsedFilter = aggregations.get(name);
+        //总服务单数
+        long totalOrderNums = parsedFilter.getDocCount();
+
+        return totalOrderNums;
+    }
+
     /**
      * 统计近7天的订单趋势和需上门数量
      * @return

+ 1 - 0
mall-server-api/src/main/java/com/gree/mall/manager/schedule/InsureEmailSchedule.java

@@ -64,6 +64,7 @@ public class InsureEmailSchedule {
     //检查保险是否全部买齐转为保险待审批
     @Scheduled(fixedDelay = 30* 1000)
     public void task4(){
+        agreementLogic.offInsure();
         agreementLogic.task4();
     }
 

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/schedule/SyncUnicomeCallRecord.java

@@ -29,7 +29,7 @@ public class SyncUnicomeCallRecord {
     public void task(){
         //同步最近5分钟的通话记录
         try {
-            DateTime startTime = DateUtil.offsetMinute(new Date(), -30);
+            DateTime startTime = DateUtil.offsetMinute(new Date(), -2);
             unicomLogic.syncMsgRecord(startTime, new Date());
         }catch(Exception e){
             log.error("【同步通话记录失败】...");

+ 1 - 1
mall-server-sync-api/src/main/java/com/gree/mall/manager/logic/SyncOrderInfoLogic.java

@@ -634,7 +634,7 @@ public class SyncOrderInfoLogic {
                 workerOrderSyncBean.setInDownloadBatchNo(itfTblWorkOrder.getDownloadBatchNo());
                 WorkerOrderSyncBean workerOrderSyncBean1 = syncMapper.orderExecute(workerOrderSyncBean);
 
-                log.info("工单同步返回内容:" + workerOrderSyncBean1.toString());
+                log.info("工单同步返回内容:" + workerOrderSyncBean1);
 
                 if (!workerOrderSyncBean1.getOutSynStatus()) {