Ver código fonte

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

FengChaoYu 7 meses atrás
pai
commit
56dd11378b
22 arquivos alterados com 439 adições e 71 exclusões
  1. 66 4
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/policy/WorkerLogic.java
  2. 61 25
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/workorder/OrderBaseLogic.java
  3. 1 1
      mall-miniapp-service/src/main/resources/mapper/workorder/OrderBaseCMapper.xml
  4. 2 4
      mall-server-api/src/main/java/com/gree/mall/manager/bean/admin/AdminUserCom.java
  5. 3 4
      mall-server-api/src/main/java/com/gree/mall/manager/bean/letter/LeLetterVO.java
  6. 2 1
      mall-server-api/src/main/java/com/gree/mall/manager/bean/letter/LeProjectVO.java
  7. 1 4
      mall-server-api/src/main/java/com/gree/mall/manager/bean/listvo/UserVO.java
  8. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/bean/websit/SettlementOrderLogicVO.java
  9. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/LetterMapper.java
  10. 3 0
      mall-server-api/src/main/java/com/gree/mall/manager/constant/Constant.java
  11. 23 0
      mall-server-api/src/main/java/com/gree/mall/manager/enums/LeletterExamineEnum.java
  12. 2 2
      mall-server-api/src/main/java/com/gree/mall/manager/enums/LetterStatusEnum.java
  13. 117 6
      mall-server-api/src/main/java/com/gree/mall/manager/logic/LetterLogic.java
  14. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/SyncOrderInfoLogic.java
  15. 2 8
      mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java
  16. 2 1
      mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminWebsitLogic.java
  17. 4 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/common/CommonLogic.java
  18. 61 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/AgreementLogic.java
  19. 61 8
      mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/WorkerManagerLogic.java
  20. 8 0
      mall-server-api/src/main/java/com/gree/mall/manager/logic/user/UserLogic.java
  21. 7 0
      mall-server-api/src/main/java/com/gree/mall/manager/schedule/InsureEmailSchedule.java
  22. 10 0
      mall-server-api/src/main/resources/mapper/LetterMapper.xml

+ 66 - 4
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/policy/WorkerLogic.java

@@ -138,7 +138,24 @@ public class WorkerLogic {
                     .le(WorkerPolicy::getEndTime, DateUtil.offsetDay(new Date(),7))
                     .eq(WorkerPolicy::getPolicyType,"AC")
                     .and(item -> item.isNull(WorkerPolicy::getExTime).or().le(WorkerPolicy::getExTime,new Date()))
-                    .count() > 0){
+                    .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::getWebsitUserId,websitUser.getId())
+                            .count() < 1
+
+            ){
 
 
                 List<WorkerPolicy> list = workerPolicyService.lambdaQuery()
@@ -152,6 +169,12 @@ public class WorkerLogic {
                 AdminWebsit adminWebsit = adminWebsitService.getById(websitUser.getWebsitId());
 
                 for (WorkerPolicy workerPolicy : list) {
+
+                    if (websitUserService.lambdaQuery().in(WebsitUser::getExamineStatus, ExamineWorkerStatusEnum.WAIT_WORKER.getKey())
+                            .eq(WebsitUser::getId,workerPolicy.getWebsitUserId()).count() > 0) {
+                        continue;
+                    }
+
                     WorkerRemind workerRemind = new WorkerRemind();
                     workerRemind.setWebsitId(websitUser.getWebsitId());
                     workerRemind.setWebsitName(adminWebsit.getName());
@@ -173,7 +196,27 @@ public class WorkerLogic {
                     .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .and(item -> item.isNull(WorkerPolicy::getExTime).or().le(WorkerPolicy::getExTime,new Date()))
 
-                    .count() > 0){
+                    .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::getWebsitUserId,websitUser.getId())
+                            .count() < 1
+
+
+
+            ){
 
                 workerPolicyService.lambdaUpdate()
                         .eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
@@ -455,14 +498,33 @@ public class WorkerLogic {
 
         List<AdminWebsit> adminWebsits = new ArrayList<>();
         for (WebsitUser websitUser : websitUsers) {
-            if (workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
+            if ((workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                     .eq(WorkerPolicy::getPolicyType,"AC")
                     .in(WorkerPolicy::getStatus,"BZZ","DSX").count() < 1 ||
                     workerPolicyService.lambdaQuery().eq(WorkerPolicy::getWebsitUserId,websitUser.getId())
                             .eq(WorkerPolicy::getPolicyType,"AC")
                             .in(WorkerPolicy::getStatus,"BZZ","DSX")
                             .le(WorkerPolicy::getEndTime,DateUtil.endOfDay(DateUtil.offsetDay(new Date(),mailbox.getOverNum())))
-                            .count() > 0) {
+                            .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::getWebsitUserId,websitUser.getId())
+                            .count() < 1
+
+
+            ) {
                 AdminWebsit adminWebsit = adminWebsitService.getById(websitUser.getWebsitId());
                 adminWebsits.add(adminWebsit);
             }

+ 61 - 25
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/workorder/OrderBaseLogic.java

@@ -22,6 +22,7 @@ import com.gree.mall.miniapp.logic.common.outside.WorkOrderApiLogic;
 import com.gree.mall.miniapp.plus.entity.*;
 import com.gree.mall.miniapp.plus.service.*;
 import com.gree.mall.miniapp.utils.DateUtils;
+import com.gree.mall.miniapp.utils.StringUtil;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -103,7 +104,10 @@ public class OrderBaseLogic {
         mySchedule7Day.setDayList(dayList);
 
         List<String> orderBaseIds = pgOrderWorkerService.lambdaQuery()
-                .eq(PgOrderWorker::getWorkerId, currentCompanyWechat.getUserId())
+                .and(item -> item.eq(PgOrderWorker::getWorkerId, currentCompanyWechat.getUserId())
+                        .or(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()))
+                        .eq(PgOrderWorker::getWorkerNumber,currentCompanyWechat.getUser().getWorkerNumber())
+                )
                 .list().stream().map(PgOrderWorker::getOrderBaseId).distinct().collect(Collectors.toList());
         if(CollectionUtils.isEmpty(orderBaseIds)){
             return mySchedule7Day;
@@ -113,24 +117,32 @@ public class OrderBaseLogic {
                 .in(PgOrderBase::getId, orderBaseIds)
                 .list();
 
+        List<String> djd = new ArrayList<>();
+        djd.add("DJD");
+
+        List<String> fwz = new ArrayList<>();
+        djd.add("FWZ");
+        djd.add("GCSZT");
+        djd.add("BFWG");
+
         List<Long> djdList = Lists.newArrayList(
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())),
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),1),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),1)),
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),2),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),2)),
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),3),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),3)),
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),4),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),4)),
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),5),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),5)),
-                scheduleSupply(list,OrderBaseStatusEnum.DJD,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),6),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),6))
+                scheduleSupply(list,djd,DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())),
+                scheduleSupply(list,djd,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),1),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),1)),
+                scheduleSupply(list,djd,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),2),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),2)),
+                scheduleSupply(list,djd,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),3),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),3)),
+                scheduleSupply(list,djd,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),4),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),4)),
+                scheduleSupply(list,djd,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),5),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),5)),
+                scheduleSupply(list,djd,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),6),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),6))
                 );
 
         List<Long> fwzList = Lists.newArrayList(
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())),
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),1),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),1)),
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),2),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),2)),
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),3),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),3)),
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),4),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),4)),
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),5),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),5)),
-                scheduleSupply(list,OrderBaseStatusEnum.FWZ,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),6),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),6))
+                scheduleSupplyFWZ(list,fwz,DateUtil.beginOfDay(new Date()),DateUtil.endOfDay(new Date())),
+                scheduleSupplyFWZ(list,fwz,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),1),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),1)),
+                scheduleSupplyFWZ(list,fwz,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),2),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),2)),
+                scheduleSupplyFWZ(list,fwz,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),3),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),3)),
+                scheduleSupplyFWZ(list,fwz,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),4),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),4)),
+                scheduleSupplyFWZ(list,fwz,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),5),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),5)),
+                scheduleSupplyFWZ(list,fwz,DateUtil.offsetDay(DateUtil.beginOfDay(new Date()),6),DateUtil.offsetDay(DateUtil.endOfDay(new Date()),6))
         );
 
         mySchedule7Day.setDjdList(djdList);
@@ -138,9 +150,17 @@ public class OrderBaseLogic {
         return mySchedule7Day;
     }
 
-    private long scheduleSupply(List<PgOrderBase> list,OrderBaseStatusEnum orderBaseStatusEnum,Date startTime,Date endTime){
+    private long scheduleSupplyFWZ(List<PgOrderBase> list,List<String> status,Date startTime,Date endTime){
+        long count = list.stream()
+                .filter(v ->  status.contains(v.getOrderStatus()))
+                .filter(v -> v.getAppointmentTime() != null && v.getAppointmentTime().getTime() >= startTime.getTime() && v.getAppointmentTime().getTime() <= endTime.getTime())
+                .count();
+        return count;
+    }
+
+    private long scheduleSupply(List<PgOrderBase> list,List<String> status,Date startTime,Date endTime){
         long count = list.stream()
-                .filter(v -> StringUtils.equals(v.getOrderStatus(), orderBaseStatusEnum.getKey()))
+                .filter(v ->  status.contains(v.getOrderStatus()) || !v.getIsMeet())
                 .filter(v -> v.getAppointmentTime() != null && v.getAppointmentTime().getTime() >= startTime.getTime() && v.getAppointmentTime().getTime() <= endTime.getTime())
                 .count();
         return count;
@@ -222,7 +242,11 @@ public class OrderBaseLogic {
                                 .like(PgOrderBase::getOrderSmallTypeText,keyword).or()
                                 .like(PgOrderBase::getUserMobile,keyword).or()
                                 .like(PgOrderBase::getAddress,keyword))
-                .in(CollectionUtils.isNotEmpty(orderStatusList), PgOrderBase::getOrderStatus, orderStatusList)
+                .and(CollectionUtils.isNotEmpty(orderStatusList),item -> item.in(CollectionUtils.isNotEmpty(orderStatusList), PgOrderBase::getOrderStatus, orderStatusList)
+                .or(CollectionUtils.isNotEmpty(orderStatusList) && orderStatusList.contains("DJD"))
+                                .eq(CollectionUtils.isNotEmpty(orderStatusList) && orderStatusList.contains("DJD"),PgOrderBase::getIsMeet,false)
+                )
+                .in(CollectionUtils.isNotEmpty(orderStatusList) && !orderStatusList.contains("DJD"),PgOrderBase::getIsMeet,true)
                 .eq(StringUtils.equals(orderStatus, OrderBaseStatusEnum.YCD.getKey()),PgOrderBase::getIsException,true)
                 .between(!StringUtils.equals(orderStatus, OrderBaseStatusEnum.YWG.getKey())
                         && StringUtils.isNoneBlank(startTime, endTime) && (byDay == null || byDay != 3), PgOrderBase::getDispatchTime, startTime, endTime)
@@ -419,15 +443,18 @@ public class OrderBaseLogic {
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
         PgOrderWorker one = pgOrderWorkerService.lambdaQuery()
                 .eq(PgOrderWorker::getOrderBaseId, orderBaseId)
-                .eq(PgOrderWorker::getWorkerId, currentCompanyWechat.getUserId())
+                .and(item -> item.eq(PgOrderWorker::getWorkerId, currentCompanyWechat.getUserId())
+                .or(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()))
+                        .eq(!StringUtil.isEmpty(currentCompanyWechat.getUser().getWorkerNumber()),PgOrderWorker::getWorkerNumber,currentCompanyWechat.getUser().getWorkerNumber()))
+
                 .one();
         if (one == null) {
             throw new RemoteServiceException("暂无权限接单");
         }
         PgOrderBase pgOrderBase = pgOrderBaseService.getById(orderBaseId);
-        if (!(StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.DJD.getKey())
+        if (!pgOrderBase.getIsImportExcel() && (!(StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.DJD.getKey())
                 || StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.DSM.getKey())
-                || StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.YZP.getKey())
+                || StringUtils.equals(pgOrderBase.getOrderStatus(), OrderBaseStatusEnum.YZP.getKey()))
         )) {
             throw new RemoteServiceException("当前状态不可接单");
         }
@@ -475,10 +502,19 @@ public class OrderBaseLogic {
         }
 
 
-        pgOrderBase.setOrderStatus(OrderBaseStatusEnum.FWZ.getKey());
-        pgOrderBase.setOrderStatusText(OrderBaseStatusEnum.FWZ.getRemark());
-        pgOrderBase.setWorkerReceTime(new Date());
-        pgOrderBase.updateById();
+        if (!pgOrderBase.getIsImportExcel()) {
+            pgOrderBase.setOrderStatus(OrderBaseStatusEnum.FWZ.getKey());
+            pgOrderBase.setOrderStatusText(OrderBaseStatusEnum.FWZ.getRemark());
+            pgOrderBase.setWorkerReceTime(new Date());
+            pgOrderBase.updateById();
+        }else {
+            if (pgOrderBase.getOrderStatus().equals(OrderBaseStatusEnum.DJD.getKey())){
+                pgOrderBase.setOrderStatus(OrderBaseStatusEnum.FWZ.getKey());
+                pgOrderBase.setOrderStatusText(OrderBaseStatusEnum.FWZ.getRemark());
+            }
+            pgOrderBase.setIsMeet(true);
+            pgOrderBase.updateById();
+        }
 
         orderLogLogic.addLog(orderBaseId, "接收工单", "主要工程师【" + one.getWorkerName() + "】确认接单" + joinSlaveStr, one.getWebsitName());
     }

+ 1 - 1
mall-miniapp-service/src/main/resources/mapper/workorder/OrderBaseCMapper.xml

@@ -4,7 +4,7 @@
 
     <select id="countOrderStatus" resultType="com.gree.mall.miniapp.bean.workorder.CountOrderStatusBean">
          select
-            count(DISTINCT if(a.order_status='DJD',a.id,null)) 'djd',
+            count(DISTINCT if(a.order_status='DJD' or a.is_meet = false ,a.id,null)) 'djd',
             count(DISTINCT if(a.order_status in ('FWZ','GCSZT','BFWG'),a.id,null)) 'fwz',
             count(DISTINCT if(a.is_exception=1,a.id,null)) 'ycd',
             count(DISTINCT if(a.order_status='DQD',a.id,null)) 'dqd',

+ 2 - 4
mall-server-api/src/main/java/com/gree/mall/manager/bean/admin/AdminUserCom.java

@@ -1,10 +1,7 @@
 package com.gree.mall.manager.bean.admin;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.gree.mall.manager.plus.entity.AdminCompanyWechat;
-import com.gree.mall.manager.plus.entity.AdminDept;
-import com.gree.mall.manager.plus.entity.AdminUser;
-import com.gree.mall.manager.plus.entity.AdminWebsit;
+import com.gree.mall.manager.plus.entity.*;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -46,6 +43,7 @@ public class AdminUserCom extends AdminUser {
     private String contractSignInfo;
 
 
+
     @JsonIgnore
     public String getJoinNickName() {
         return "(" + this.getUserName() + ")" + this.getNickName();

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

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.gree.mall.manager.annotation.ZfireField;
+import com.gree.mall.manager.enums.LeletterExamineEnum;
 import com.gree.mall.manager.enums.LetterStatusEnum;
 import com.gree.mall.manager.plus.entity.LeLetter;
 import io.swagger.annotations.ApiModel;
@@ -64,7 +65,6 @@ public class LeLetterVO  {
     @ApiModelProperty(value = "工单创建时间")
     private Date orderCreateTime;
 
-    private String projectId;
 
     @ApiModelProperty(value = "考核项目")
     private String projectName;
@@ -100,14 +100,13 @@ public class LeLetterVO  {
     @ApiModelProperty(value = "所属科室")
     private String dapartment;
 
-    @ApiModelProperty(value = "科室id")
-    private String dapartmentId;
+
 
     @ApiModelProperty(value = "审批人")
     private String examineName;
 
     @ApiModelProperty(value = "审批结果")
-    private String examineStatus;
+    private LeletterExamineEnum examineStatus;
 
     @ApiModelProperty(value = "审批时间")
     private Date examineTime;

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

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.gree.mall.manager.annotation.ZfireField;
 import com.gree.mall.manager.enums.StatusEnum;
+import com.gree.mall.manager.enums.material.StateEnum;
 import com.gree.mall.manager.plus.entity.LeProject;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -40,7 +41,7 @@ public class LeProjectVO  {
     private BigDecimal price;
 
     @ApiModelProperty(value = "状态")
-    private StatusEnum status;
+    private StateEnum status;
 
     @ApiModelProperty(value = "创建时间")
     @TableField(fill = FieldFill.INSERT)

+ 1 - 4
mall-server-api/src/main/java/com/gree/mall/manager/bean/listvo/UserVO.java

@@ -41,7 +41,7 @@ public class UserVO     {
     @ApiModelProperty("网点名称")
     private String websitName;
 
-    @ZfireField(tbName = "b")
+    @ZfireField(tbName = "a")
     @ApiModelProperty("师傅编号")
     private String workerNumber;
 
@@ -58,9 +58,6 @@ public class UserVO     {
     @ZfireField(hide = true, tbName = "b")
     private String slaveWorkerId;
 
-    @ZfireField(tbName = "d", colName = "nick_name", ignoreSelect = true)
-    @ApiModelProperty("辅助师傅")
-    private String slaveWorkerName;
 
     @ApiModelProperty("用户类型")
     private UserTypeEnum type;

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/bean/websit/SettlementOrderLogicVO.java

@@ -44,7 +44,7 @@ public class SettlementOrderLogicVO      {
     private String userMobile;
 
     @ApiModelProperty(value = "工程师编号")
-    private String workerId;
+    private String workerNumber;
 
     @ApiModelProperty(value = "工程师名称")
     private String workerName;

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/commonmapper/LetterMapper.java

@@ -26,5 +26,5 @@ public interface LetterMapper {
     IPage<LeProjectVO> listProject(Page page, @Param("ex")ZfireParamBean zfireParam,@Param("companyWechatIds") List<String> adminCompanyIds);
 
     @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
-    IPage<LeLetterVO> listLetter(Page page,@Param("ex") ZfireParamBean zfireParam,@Param("companyWechatIds") List<String> adminCompanyIds);
+    IPage<LeLetterVO> listLetter(Page page,@Param("ex") ZfireParamBean zfireParam,@Param("companyWechatIds") List<String> adminCompanyIds,Boolean isWeb);
 }

+ 3 - 0
mall-server-api/src/main/java/com/gree/mall/manager/constant/Constant.java

@@ -112,6 +112,9 @@ public class Constant {
         public static final String TOKEN_GREE = "SETTLE:TOKEN:GREE";
         public final static String TOKEN_GREE_V3 ="SETTLE:TOKEN:GREE:V3";
         public final static String SYNC_LOCK = "SYNC_LOCK:DEPT:MALL:";
+
+        public final static String LETTER_NUMBER = "LETTER_NUMBER:MALL:";
+        public final static String LETTER_NUMBER_FS = "LETTER_NUMBER_FS:MALL:";
     }
     public class ChatMessage {
         public final static String MSG_TYPE_DOC = "docmsg";

+ 23 - 0
mall-server-api/src/main/java/com/gree/mall/manager/enums/LeletterExamineEnum.java

@@ -0,0 +1,23 @@
+package com.gree.mall.manager.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.gree.mall.manager.enums.base.BaseEnum;
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor(access = AccessLevel.PRIVATE)
+public enum  LeletterExamineEnum implements BaseEnum {
+    SUB("SUB","减免"),
+    FAIL("FAIL","驳回"),
+    OK("OK","OK"),
+
+            ;
+
+    @EnumValue
+    @JsonValue
+    private final String key;
+    private final String remark;
+}

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

@@ -11,8 +11,8 @@ import lombok.Getter;
 @AllArgsConstructor(access = AccessLevel.PRIVATE)
 public enum LetterStatusEnum implements BaseEnum {
 
-    SEND("SEND","已发送"),
-    WAIT("WAIT","待执行"),
+    SEND("SEND","待执行"),
+    WAIT("WAIT","待发送"),
     WAIT_EXAMINE("WAIT_EXAMINE","待审核"),
     EXECUTED("EXECUTED","已执行"),
     REVOKE("REVOKE","已撤销"),

+ 117 - 6
mall-server-api/src/main/java/com/gree/mall/manager/logic/LetterLogic.java

@@ -2,18 +2,22 @@ package com.gree.mall.manager.logic;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
+import cn.hutool.core.date.DateUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.letter.*;
 import com.gree.mall.manager.bean.policy.PolicyOrderVO;
 import com.gree.mall.manager.commonmapper.LetterMapper;
+import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.LetterItemStatus;
 import com.gree.mall.manager.enums.LetterStatusEnum;
 import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
+import com.gree.mall.manager.utils.RedisUtil;
+import com.gree.mall.manager.utils.StringUtil;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import org.apache.commons.collections4.CollectionUtils;
@@ -22,6 +26,7 @@ import org.springframework.stereotype.Service;
 
 import java.rmi.RemoteException;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
 @Service
@@ -57,6 +62,9 @@ public class LetterLogic {
     @Autowired
     LeLetterItemService leLetterItemService;
 
+    @Autowired
+    RedisUtil redisUtil;
+
 
     public IPage<LeDepartmentVO> list(Page page, ZfireParamBean zfireParam) {
         //获取当前登录企业id
@@ -78,10 +86,13 @@ public class LetterLogic {
     }
 
     public void add(LeDepartment leDepartment) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
 
         if (leDepartmentService.lambdaQuery().eq(LeDepartment::getDapartment,leDepartment.getDapartment()).count() > 0)
             throw new RemoteServiceException("重复科室名称");
 
+        leDepartment.setCompanyWechatId(adminUser.getCompanyWechatId());
+        leDepartment.setCompanyWechatName(adminUser.getCompanyName());
         leDepartment.insert();
     }
 
@@ -124,6 +135,12 @@ public class LetterLogic {
             throw new RemoteServiceException("该账号设置过科室");
         }
 
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+
+        leUserDepartment.setCompanyWechatName(adminUser.getCompanyName());
+        leUserDepartment.setCompanyWechatId(adminUser.getCompanyWechatId());
+
+
         leUserDepartment.insert();
 
     }
@@ -225,6 +242,10 @@ public class LetterLogic {
     }
 
     public void addProject(LeProject leProject) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        leProject.setCompanyWechatName(adminUser.getCompanyName());
+        leProject.setCompanyWechatId(adminUser.getCompanyWechatId());
+
         leProject.insert();
     }
 
@@ -240,11 +261,13 @@ public class LetterLogic {
         //获取当前登录企业id
         AdminUserCom adminUser = commonLogic.getAdminUser();
 
+
         List<String> adminCompanyIds = adminUser.getCompanyWechatIds();
         //1.组装查询条件
         zfireParam = FieldUtils.supplyParam(zfireParam, LeLetterVO.class, adminUser);
 
-        IPage<LeLetterVO> leLetterVOIPage = letterMapper.listLetter(page, zfireParam, adminCompanyIds);
+        IPage<LeLetterVO> leLetterVOIPage = letterMapper.listLetter(page, zfireParam, adminCompanyIds,
+                adminUser.getType().equals(0)?true:false);
         return leLetterVOIPage;
 
     }
@@ -262,10 +285,78 @@ public class LetterLogic {
     }
 
     public void addLetter(LeLetter leLetter) {
+
+        AdminUserCom adminUser = commonLogic.getAdminUser();
+        AdminWebsit adminWebsit = adminWebsitService.getById(leLetter.getWebsitId());
+
+        if (adminWebsit == null)
+            throw new RemoteServiceException("网点未配置");
+
+        leLetter.setCompanyWechatName(adminUser.getCompanyName());
+        leLetter.setCompanyWechatId(adminUser.getCompanyWechatId());
+        leLetter.setBelongCompany(adminWebsit.getBelongCompany());
+        leLetter.setBelongCompanyCode(adminWebsit.getBelongCompanyCode());
+        if (adminWebsit.getBelongCompanyCode().equals("S9219801"))
+            leLetter.setLetterNumber(this.generateInvoiceOrder("GZ"));
+        else
+            leLetter.setLetterNumber(this.generateInvoiceOrder("FS"));
+
+
+        if (leLetter.getStatus().equals(LetterStatusEnum.SEND.getKey())){
+            leLetter.setSendTime(new Date());
+        }else {
+            leLetter.setStatus(LetterStatusEnum.WAIT.getKey());
+        }
+
+
         leLetter.insert();
+
+        leLetter.setLetterNum(leLetterService.lambdaQuery().eq(LeLetter::getBelongCompany,leLetter.getBelongCompany()).count());
+        leLetter.setLetteWebsitNum(leLetterService.lambdaQuery().eq(LeLetter::getWebsitId,leLetter.getWebsitId()).count());
+
+        leLetter.updateById();
+    }
+
+    /*
+     * 产生编号
+     * */
+    public String generateInvoiceOrder(String websitNumber) {
+
+        //生成订单流水号
+        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);
+            }
+            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;
+        }
+
+        String yyyyMM = DateUtil.format(new Date(), "yyyy");
+
+        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);
+        return "FS"+number;
+
     }
 
+
     public void updateLetter(LeLetter leLetter) {
+
+        if (leLetter.getStatus().equals(LetterStatusEnum.SEND.getKey())){
+            leLetter.setSendTime(new Date());
+        }
         leLetter.updateById();
     }
 
@@ -277,7 +368,8 @@ public class LetterLogic {
         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.EXECUTED.getKey()).update();
+                .set(LeLetter::getSendTime,new Date())
+                .set(LeLetter::getStatus, LetterStatusEnum.SEND.getKey()).update();
 
     }
 
@@ -290,22 +382,38 @@ public class LetterLogic {
 
     public void reject(List<String> ids) {
 
-        if (leLetterService.lambdaQuery().in(LeLetter::getLeLetterId,ids).isNotNull(LeLetter::getExamineStatus).ne(LeLetter::getStatus,LetterStatusEnum.WAIT.getKey()).count()>0)
-            throw new RemoteServiceException("存在有待执行的联络函");
+        if (leLetterService.lambdaQuery().in(LeLetter::getLeLetterId,ids)
+                .in(LeLetter::getStatus,LetterStatusEnum.WAIT.getKey(),LetterStatusEnum.SEND.getKey(),LetterStatusEnum.WAIT_EXAMINE.getKey(),
+                        LetterStatusEnum.CANCEL.getKey()).count()>0)
+            throw new RemoteServiceException("存在有非审批的联络函");
+
         leLetterService.lambdaUpdate().in(LeLetter::getLeLetterId,ids)
-                .set(LeLetter::getStatus, LetterStatusEnum.WAIT.getKey()).update();
+                .set(LeLetter::getStatus, LetterStatusEnum.SEND.getKey()).update();
     }
 
     public void appeal(LeLetterItem leLetterItem) {
         LeLetter leLetter = leLetterService.getById(leLetterItem.getLeLetterId());
-        if (!leLetter.getStatus().equals(LetterStatusEnum.WAIT.getKey()))
+        if (!leLetter.getStatus().equals(LetterStatusEnum.SEND.getKey()))
             throw new RemoteServiceException("不为待执行不能申诉");
+
+        if (StringUtil.isEmpty(leLetterItem.getWebsitAppeal()))
+            throw new RemoteServiceException("网点状态未传");
+
         leLetter.setStatus(LetterStatusEnum.WAIT_EXAMINE.getKey());
+        if (leLetterItem.getWebsitAppeal().equals("OK")){
+            leLetter.setStatus(LetterStatusEnum.EXECUTED.getKey());
+            leLetter.setExaminePrice(leLetter.getPrice());
+            leLetter.setExamineFration(leLetter.getFraction());
+        }
+
+
         leLetter.updateById();
+
         leLetterItem.insert();
     }
 
     public void examine(LeLetterItem leLetterItem) {
+        AdminUserCom adminUser = commonLogic.getAdminUser();
 
         LeLetter leLetter = leLetterService.getById(leLetterItem.getLeLetterId());
         if (!leLetter.getStatus().equals(LetterStatusEnum.WAIT_EXAMINE.getKey()))
@@ -319,6 +427,9 @@ public class LetterLogic {
         if (leLetterItem.getExamineStatus().equals(LetterItemStatus.SUB.getKey()))
             leLetter.setStatus(LetterStatusEnum.REDUCTION.getKey());
 
+        leLetterItem.setExamineName(adminUser.getNickName());
+        leLetterItem.setExamineTime(new Date());
+
         leLetter.setExamineFration(leLetterItem.getExamineFration());
         leLetter.setExamineName(leLetterItem.getExamineName());
         leLetter.setExaminePrice(leLetterItem.getExaminePrice());

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

@@ -215,7 +215,7 @@ public class SyncOrderInfoLogic {
 
             Map<String, Object> bodyMap = JSON.parseObject(body);
 
-            log.info("【工单同步数据内容】:" + bodyMap.get("data").toString());
+            log.info(itfGreeSynRule.getSalesWebsitNumber()+"时间为:"+time+"【工单同步数据内容】:" + bodyMap.toString());
 
             String s = bodyMap.get("data").toString();
 

+ 2 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminUserLogic.java

@@ -499,13 +499,7 @@ public class AdminUserLogic {
                 throw new RemoteServiceException("暂无权限创建当前网点的账号");
             }
 
-            if (StringUtils.equals(adminWebsit.getType(), AdminWebsitTypeEnum.C.getKey())) {
-                newUser.setType(0);
-            } else if (StringUtils.equals(adminWebsit.getType(), AdminWebsitTypeEnum.B.getKey())) {
-                newUser.setType(1);
-            } else if (StringUtils.equals(adminWebsit.getType(), AdminWebsitTypeEnum.A.getKey())) {
-                newUser.setType(2);
-            }
+
         }
 
         if (!CollectionUtils.isEmpty(newUser.getAdminDeptId())) {
@@ -522,7 +516,7 @@ public class AdminUserLogic {
                 newUser.setCompanyWechatId(adminDept.getCompanyWechatId());
                 newUser.setCompanyName(adminDept.getCompanyWechatName());
 
-                newUser.setType(0);
+
             }
         }
 

+ 2 - 1
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminWebsitLogic.java

@@ -162,7 +162,8 @@ public class AdminWebsitLogic {
                 .like(!StringUtil.isEmpty(websitId), AdminWebsit::getWebsitId, websitId)
                 .like(!StringUtil.isEmpty(websitName), AdminWebsit::getName, websitName)
                 .eq(!StringUtil.isEmpty(attr), AdminWebsit::getAttr, attr)
-                .in(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()) && (isAll == null || !isAll), AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds())
+                .in(CollectionUtils.isNotEmpty(adminUser.getAdminWebsitIds()) && (isAll == null || !isAll),
+                        AdminWebsit::getWebsitId, adminUser.getAdminWebsitIds())
                 .in(CollectionUtils.isNotEmpty(adminUser.getCompanyWechatIds()), AdminWebsit::getCompanyWechatId, adminUser.getCompanyWechatIds())
                 .and(Objects.nonNull(queryPartsWebsit) && queryPartsWebsit, v -> v.isNotNull(AdminWebsit::getPartsWebsitId)
                         .or()

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

@@ -95,6 +95,9 @@ public class CommonLogic {
     @Autowired
     IncrKeyValueService incrKeyValueService;
 
+    @Autowired
+    AdminRoleService adminRoleService;
+
     public Map<String, String> getOSSConfig() throws UnsupportedEncodingException {
         return ossUtil.getConfig();
     }
@@ -125,6 +128,7 @@ public class CommonLogic {
             adminUserCom.setAdminCompanyWechat(adminCompanyWechat);
             adminUserCom.setJoinCode(adminCompanyWechat.getJoinCode());
 
+
             List<AdminUserDeptRela> adminUserDeptRelas = adminUserDeptRelaService.lambdaQuery().in(AdminUserDeptRela::getAdminUserId, admin.getAdminUserId()).list();
             if (!CollectionUtils.isEmpty(adminUserDeptRelas)) {
                 List<String> deptIds = adminUserDeptRelas.stream().map(AdminUserDeptRela::getAdminDeptId).collect(Collectors.toList());

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

@@ -10,10 +10,12 @@ import com.gree.mall.manager.bean.ExcelData;
 import com.gree.mall.manager.bean.admin.AdminUserCom;
 import com.gree.mall.manager.bean.policy.*;
 import com.gree.mall.manager.commonmapper.PolicyCMapper;
+import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.*;
 import com.gree.mall.manager.logic.common.CommonLogic;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
+import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.StringUtil;
 import com.gree.mall.manager.utils.email.EmailUtilsNew;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
@@ -91,6 +93,18 @@ public class AgreementLogic {
     @Autowired
     SysDictCompanyService sysDictCompanyService;
 
+    @Autowired
+    RedisUtil redisUtil;
+
+    @Autowired
+    LeConfigService leConfigService;
+
+    @Autowired
+    LeLetterService leLetterService;
+
+    @Autowired
+    LeLetterItemService leLetterItemService;
+
 
     public IPage<AgreementVo> list(Page page, ZfireParamBean zfireParam) {
 
@@ -866,6 +880,10 @@ public class AgreementLogic {
                 }
                 websitUser1.updateById();
             }
+            if (StringUtil.isEmpty(remark)){
+                websitUserService.lambdaUpdate().eq(WebsitUser::getId,websitUser.getId())
+                        .set(WebsitUser::getOverdueRemark,"").update();
+            }
 
         }
 
@@ -1064,6 +1082,8 @@ public class AgreementLogic {
     }
 
     public void task6() {
+
+
         List<WebsitUser> websitUsers = websitUserService.lambdaQuery().eq(WebsitUser::getExamineStatus, ExamineStatusEnum.OK.getKey()).list();
 
         List<String> websitUserIds = websitUsers.stream().map(WebsitUser::getId).collect(Collectors.toList());
@@ -1179,4 +1199,45 @@ public class AgreementLogic {
         LocalDateTime endOfDay = localDateTime.with(localTime);
         return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());
     }
+
+    public void task8() {
+
+        LeConfig leConfig = leConfigService.getById("1");
+
+        if (leLetterService.lambdaQuery().eq(LeLetter::getStatus, LetterStatusEnum.SEND.getKey())
+                .le(LeLetter::getSendTime, DateUtil.offsetDay(new Date(),-1*leConfig.getDayNum()))
+                .count() > 0) {
+            leLetterService.lambdaUpdate().eq(LeLetter::getStatus, LetterStatusEnum.SEND.getKey())
+                    .le(LeLetter::getSendTime, DateUtil.offsetDay(new Date(),-1*leConfig.getDayNum()))
+                    .set(LeLetter::getStatus,LetterStatusEnum.EXECUTED.getKey()).update();
+        }
+
+        if (leConfig.getIsDay().equals(IsYesNoEnum.YES.getKey())) {
+
+            List<LeLetterItem> letterItems = leLetterItemService.lambdaQuery().eq(LeLetterItem::getWebsitAppeal, "AP")
+                    .isNull(LeLetterItem::getExamineStatus)
+                    .le(LeLetterItem::getCreateTime, DateUtil.offsetDay(new Date(), -1 * leConfig.getCoreNum()))
+                    .list();
+
+            if (!CollectionUtils.isEmpty(letterItems)) {
+
+                for (LeLetterItem letterItem : letterItems) {
+
+                    letterItem.setExamineStatus("OK");
+                    letterItem.setExamineName("审批截止时间已到自动批复");
+
+
+                    leLetterService.lambdaUpdate().eq(LeLetter::getStatus, LetterStatusEnum.WAIT_EXAMINE.getKey())
+                            .eq(LeLetter::getLeLetterId,letterItem.getLeLetterId())
+                            .set(LeLetter::getStatus, LetterStatusEnum.REVOKE.getKey())
+                            .update();
+
+                }
+
+
+            }
+        }
+
+
+    }
 }

+ 61 - 8
mall-server-api/src/main/java/com/gree/mall/manager/logic/policy/WorkerManagerLogic.java

@@ -105,6 +105,13 @@ public class WorkerManagerLogic {
         websitUserLog.setWebsitId(websitUserBean.getWebsitId());
 
         websitUserLog.insert();
+
+        if (!StringUtil.isEmpty(websitUserBean.getWorkerNumber())
+                && userService.lambdaQuery().eq(User::getWorkerNumber,websitUserBean.getWorkerNumber()).ne(User::getUserId,websitUserBean.getUserId())
+                .count() > 0
+        ){
+            throw new RemoteServiceException("账号已被使用无法激活");
+        }
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -195,6 +202,13 @@ public class WorkerManagerLogic {
 
         }
 
+        if (!StringUtil.isEmpty(websitUserBean.getWorkerNumber())
+                && userService.lambdaQuery().eq(User::getWorkerNumber,websitUserBean.getWorkerNumber()).ne(User::getUserId,websitUserBean.getUserId())
+                .count() > 0
+        ){
+            throw new RemoteServiceException("账号已被使用无法激活");
+        }
+
         WebsitUserLog websitUserLog = new WebsitUserLog();
 
         websitUserLog.setTypeText("重新入职");
@@ -230,22 +244,61 @@ public class WorkerManagerLogic {
             websitUserLog.insert();
         }
 
+        if (!user.getMobile().equals(workerManagerBean.getUser().getMobile())){
 
-        workerManagerBean.setExamineStatus(ExamineWorkerStatusEnum.POLICY_WAIT.getKey());
+            if (userService.lambdaQuery().eq(User::getMobile,workerManagerBean.getUser().getMobile())
+                    .ne(User::getUserId,websitUser.getUserId()).count() > 0) {
 
+                throw new RemoteServiceException("手机号已经被绑定,无法更改");
+            }
 
+            WebsitUserLog websitUserLog = new WebsitUserLog();
+            websitUserLog.setTypeText("手机号修改");
+            websitUserLog.setOpRemark("原手机号为"+user.getMobile()+",变更为"+workerManagerBean.getUser().getMobile());
+
+            websitUserLog.setWebsitUserId(workerManagerBean.getId());
+
+            websitUserLog.insert();
 
-        if (!StringUtil.isEmpty(user.getWorkerNumber())){
-            if (!workerManagerBean.getWorkerNumber().equals(user.getWorkerNumber())) {
-                throw new RemoteServiceException("师傅编号已经录入不允许更改");
-            }
         }
 
+        if (!user.getNickName().equals(workerManagerBean.getUser().getNickName())){
+            WebsitUserLog websitUserLog = new WebsitUserLog();
+            websitUserLog.setTypeText("师傅名称修改");
+            websitUserLog.setOpRemark("原师傅名称为"+user.getNickName()+",变更为"+workerManagerBean.getUser().getNickName());
 
+            websitUserLog.setWebsitUserId(workerManagerBean.getId());
 
-        if(userService.lambdaQuery().eq(User::getWorkerNumber,workerManagerBean.getWorkerNumber())
-                .ne(User::getUserId,workerManagerBean.getUserId()).count() > 0)
-            throw new RemoteServiceException("已有该师傅编号");
+            websitUserLog.insert();
+        }
+
+
+        workerManagerBean.setExamineStatus(ExamineWorkerStatusEnum.POLICY_WAIT.getKey());
+
+
+
+        if (!StringUtil.isEmpty(workerManagerBean.getUser().getWorkerNumber())) {
+
+            workerManagerBean.setWorkerNumber(workerManagerBean.getUser().getWorkerNumber().trim());
+            workerManagerBean.getUser().setWorkerNumber(workerManagerBean.getUser().getWorkerNumber().trim());
+
+            if (userService.lambdaQuery().eq(User::getWorkerNumber, workerManagerBean.getUser().getWorkerNumber())
+                    .ne(User::getUserId, workerManagerBean.getUserId()).count() > 0) {
+
+                if (websitUserService.lambdaQuery().eq(WebsitUser::getWorkerNumber,  workerManagerBean.getUser().getWorkerNumber())
+                        .ne(WebsitUser::getUserId, workerManagerBean.getUserId())
+                        .notIn(WebsitUser::getExamineStatus, ExamineWorkerStatusEnum.QUIT.getKey(),ExamineWorkerStatusEnum.STOP.getKey()).count() > 0) {
+                    throw new RemoteServiceException("已有该师傅编号");
+                }
+
+                //离职师傅去除手机号
+                userService.lambdaUpdate().eq(User::getWorkerNumber, workerManagerBean.getWorkerNumber())
+                        .ne(User::getUserId, workerManagerBean.getUserId())
+                        .set(User::getWorkerNumber,"")
+                        .set(User::getType,"GENERAL").update();
+
+            }
+        }
 
 
         workerManagerBean.setBankAccount(workerManagerBean.getUser().getBankAccount());

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

@@ -387,10 +387,18 @@ public class UserLogic {
             }
 
 
+            if (!StringUtil.isEmpty(userWait.getWorkerNumber()) && userWaitService.lambdaQuery().in(UserWait::getWorkerNumber,userWait.getWorkerNumber())
+                    .eq(UserWait::getWebsitId,userWait.getWebsitId()).count()
+                    > 0)
+                throw new RemoteServiceException("不同师傅不能导入重复师傅编号,请检查"+userWait.getMobile()+"!");
+
 
             userWaits.add(userWait);
         }
         userWaitService.saveBatch(userWaits);
+
+
+
     }
 
 

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

@@ -71,4 +71,11 @@ public class InsureEmailSchedule {
     public void task7(){
         agreementLogic.task7();
     }
+
+
+    //将联络涵设置对应状态
+    @Scheduled(fixedDelay = 60* 1000)
+    public void task8(){
+        agreementLogic.task8();
+    }
 }

+ 10 - 0
mall-server-api/src/main/resources/mapper/LetterMapper.xml

@@ -61,6 +61,16 @@
                 #{item}
             </foreach>
         </if>
+
+        <if test="ex.adminWebsitIds != null and ex.adminWebsitIds.size > 0">
+            AND a.websit_id IN
+            <foreach item="item" index="index" collection="ex.adminWebsitIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="isWeb != null and isWeb == true">
+           and a.status not in  ('WAIT','CANCEL')
+        </if>
         <if test="ex.orderBy == null or ex.orderBy ==''">
             ORDER BY a.create_time DESC
         </if>