Browse Source

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

‘linchangsheng’ 7 months ago
parent
commit
a72bdd91d3

+ 4 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/order/WorkerTeamBean.java

@@ -14,6 +14,10 @@ public class WorkerTeamBean {
     private String workerNumber;
     @ApiModelProperty("小工名称")
     private String workerName;
+    @ApiModelProperty("小工手机号")
+    private String workerMobile;
+    @ApiModelProperty("小工身份证")
+    private String workerIdCard;
     @ApiModelProperty("是否选中")
     private Boolean isSelect;
 }

+ 2 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/workorder/OrderBaseVO.java

@@ -17,4 +17,6 @@ public class OrderBaseVO extends PgOrderBase {
 
     private List<PgOrderProduct> pgOrderProducts;
 
+    private boolean needSlave = false;
+
 }

+ 3 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/workorder/PgOrderBaseDetailVO.java

@@ -22,4 +22,7 @@ public class PgOrderBaseDetailVO extends PgOrderBase {
 
     @ApiModelProperty("服务流程 1=提单 2=派工 3=服务 4=完工 5=已评价")
     private Integer serviceFlag = 1;
+
+    @ApiModelProperty("是否需要小工")
+    private boolean needSlave = false;
 }

+ 1 - 1
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/workorder/OrderBaseController.java

@@ -206,7 +206,7 @@ public class OrderBaseController {
     public ResponseHelper<List<WorkerTeamBean>> slaveWorkerTeam(
             @ApiParam(value = "工单id") @RequestParam String orderBaseId
     ) throws Exception {
-        List<WorkerTeamBean> beanList = orderBaseLogic.slaveWorkerTeam(orderBaseId);
+        List<WorkerTeamBean> beanList = orderBaseLogic.slaveWorkerTeam(orderBaseId, null);
         return ResponseHelper.success(beanList);
     }
 

+ 83 - 17
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/workorder/OrderBaseLogic.java

@@ -247,6 +247,20 @@ public class OrderBaseLogic {
                 .stream()
                 .map(OrderBaseVO::getId)
                 .collect(Collectors.toList());
+        List<AdminWebsit> adminWebsits = new ArrayList<>();
+        Map<String, String> adminWebsitMap = new HashMap<>();
+
+        if (CollectionUtil.isNotEmpty(orderBaseVOS)) {
+            adminWebsits = adminWebsitService.lambdaQuery()
+                    .eq(AdminWebsit::getCompanyWechatId, currentCompanyWechat.getCompanyWechatId())
+                    .in(AdminWebsit::getWebsitId, orderBaseVOS.stream().map(OrderBaseVO::getWebsitId).collect(Collectors.toList()))
+                    .list();
+        }
+
+        if (CollectionUtil.isNotEmpty(adminWebsits)) {
+            adminWebsitMap = adminWebsits.stream().collect(Collectors.toMap(AdminWebsit::getWebsitId, AdminWebsit::getAttr));
+        }
+
         Map<String, List<PgOrderFlag>> mapList = this.getOrderFlags(orderIds);
         for (OrderBaseVO orderBaseVO : orderBaseVOS) {
             orderBaseVO.setOrderFlags(mapList.get(orderBaseVO.getId()));
@@ -259,6 +273,12 @@ public class OrderBaseLogic {
                 orderBaseVO.setUserMobile(orderBaseVO.getUserMobile().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
                 orderBaseVO.setAddress(orderBaseVO.getProvince()+orderBaseVO.getCity()+orderBaseVO.getArea()+orderBaseVO.getStreet()+"****");
             }
+            final String attr = adminWebsitMap.get(orderBaseVO.getWebsitId());
+            if (StringUtils.isNotBlank(attr)
+                    && attr.equals(WebsitAttrEnum.SELF.getKey())
+                    && "安装, 拆移机".contains(orderBaseVO.getOrderSmallTypeText())) {
+                orderBaseVO.setNeedSlave(true);
+            }
         }
         page.setRecords(orderBaseVOS);
         return page;
@@ -352,6 +372,14 @@ public class OrderBaseLogic {
         }
         //服务单标记
         pgOrderBaseDetailVO.setPgOrderFlags(orderFlagLogic.list(orderBaseId));
+
+        final AdminWebsit adminWebsit = adminWebsitService.getById(pgOrderBase.getWebsitId());
+        if (Objects.nonNull(adminWebsit)) {
+            if (adminWebsit.getAttr().equals(WebsitAttrEnum.SELF.getKey())
+                    && "安装, 拆移机".contains(pgOrderBase.getOrderSmallTypeText())) {
+                pgOrderBaseDetailVO.setNeedSlave(true);
+            }
+        }
         return pgOrderBaseDetailVO;
     }
 
@@ -408,7 +436,7 @@ public class OrderBaseLogic {
         final AdminWebsit adminWebsit = adminWebsitService.getById(pgOrderBase.getWebsitId());
 
         if (adminWebsit.getAttr().equals(WebsitAttrEnum.SELF.getKey())
-                && "安装, 拆移".contains(pgOrderBase.getOrderSmallType())
+                && "安装, 拆移".contains(pgOrderBase.getOrderSmallTypeText())
                 && CollectionUtil.isEmpty(workerList)) {
             throw new RemoteServiceException("工单的类型必须至少选一个小工");
         }
@@ -465,6 +493,7 @@ public class OrderBaseLogic {
         if(!StringUtils.equals(user.getType(),UserTypeEnum.WORKER.getKey())){
             throw new RemoteServiceException("当前身份不可抢单");
         }
+
         pgOrderBase.setWorkerId(currentCompanyWechat.getUserId());
         pgOrderBase.setWorkerNumber(currentCompanyWechat.getUser().getWorkerNumber());
         pgOrderBase.setWorkerName(user.getNickName());
@@ -482,6 +511,7 @@ public class OrderBaseLogic {
         PgOrderWorker pgOrderWorker = new PgOrderWorker();
         pgOrderWorker.setIsMaster(true);
         pgOrderWorker.setWorkerId(user.getUserId());
+        pgOrderWorker.setWorkerNumber(currentCompanyWechat.getUser().getWorkerNumber());
         pgOrderWorker.setWorkerName(user.getNickName());
         pgOrderWorker.setWorkerIdcard(user.getIdCard());
         pgOrderWorker.setWorkerMobile(user.getMobile());
@@ -490,7 +520,31 @@ public class OrderBaseLogic {
         pgOrderWorker.setOrderBaseId(pgOrderBase.getId());
         pgOrderWorker.insert();
 
-        orderLogLogic.addLog(orderBaseId,"师傅抢单","工程师【"+pgOrderWorker.getWorkerName()+"】抢单成功",pgOrderWorker.getWebsitName());
+        final AdminWebsit adminWebsit = adminWebsitService.getById(pgOrderBase.getWebsitId());
+        StringBuilder joinSlaveStr = new StringBuilder();
+        if (adminWebsit.getAttr().equals(WebsitAttrEnum.SELF.getKey())
+                && "安装, 拆移机".contains(pgOrderBase.getOrderSmallTypeText())) {
+            final List<WorkerTeamBean> teamBeanList = this.slaveWorkerTeam(orderBaseId, pgOrderBase);
+            if (CollectionUtil.isEmpty(teamBeanList)) {
+                throw new RemoteServiceException("工单类型必须有一组有效的组队,抢单失败");
+            }
+            joinSlaveStr.append(", 辅助工程师");
+            final WorkerTeamBean bean = teamBeanList.get(0);
+            PgOrderWorker pgOrderWorker2 = new PgOrderWorker();
+            pgOrderWorker2.setIsMaster(false);
+            pgOrderWorker2.setWorkerId(bean.getWorkerId());
+            pgOrderWorker2.setWorkerNumber(bean.getWorkerNumber());
+            pgOrderWorker2.setWorkerName(bean.getWorkerName());
+            pgOrderWorker2.setWorkerIdcard(bean.getWorkerIdCard());
+            pgOrderWorker2.setWorkerMobile(bean.getWorkerMobile());
+            pgOrderWorker2.setWebsitId(pgOrderBase.getWebsitId());
+            pgOrderWorker2.setWebsitName(pgOrderBase.getWebsitName());
+            pgOrderWorker2.setOrderBaseId(pgOrderBase.getId());
+            pgOrderWorker2.insert();
+            joinSlaveStr.append("【").append(pgOrderWorker2.getWorkerName()).append("】");
+        }
+
+        orderLogLogic.addLog(orderBaseId,"师傅抢单","工程师【"+pgOrderWorker.getWorkerName()+"】" + joinSlaveStr + "抢单成功",pgOrderWorker.getWebsitName());
     }
 
     /**
@@ -564,10 +618,17 @@ public class OrderBaseLogic {
      * @param orderBaseId
      * @return
      */
-    public List<WorkerTeamBean> slaveWorkerTeam(String orderBaseId) {
-        final PgOrderBase orderBase = pgOrderBaseService.getById(orderBaseId);
-        if (StringUtils.equals(orderBase.getOrderStatus(), OrderBaseStatusEnum.YWG.getKey())) {
-            throw new RemoteServiceException("工单状态”已完工“");
+    public List<WorkerTeamBean> slaveWorkerTeam(String orderBaseId, PgOrderBase orderBase) {
+        String workerNumber;
+        if (Objects.isNull(orderBase)) {
+            orderBase = pgOrderBaseService.getById(orderBaseId);
+            if (StringUtils.equals(orderBase.getOrderStatus(), OrderBaseStatusEnum.YWG.getKey())) {
+                throw new RemoteServiceException("工单状态”已完工“");
+            }
+            workerNumber = orderBase.getWorkerNumber();
+        } else {
+            CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
+            workerNumber = currentCompanyWechat.getUser().getWorkerNumber();
         }
         Map<String, WorkerTeamBean> workerTeamMap = new HashMap<>();
         if (StringUtils.isNotBlank(orderBase.getWorkerId())) {
@@ -577,13 +638,14 @@ public class OrderBaseLogic {
                     .ne(PgOrderWorker::getWorkerId, orderBase.getWorkerId())
                     .list();
 
-
             if (CollectionUtil.isNotEmpty(orderWorkerList)) {
                 for (PgOrderWorker orderWorker : orderWorkerList) {
                     WorkerTeamBean bean = new WorkerTeamBean();
                     bean.setWorkerId(orderWorker.getWorkerId());
                     bean.setWorkerName(orderWorker.getWorkerName());
                     bean.setWorkerNumber(orderWorker.getWorkerNumber());
+                    bean.setWorkerMobile(orderWorker.getWorkerMobile());
+                    bean.setWorkerIdCard(orderWorker.getWorkerIdcard());
                     bean.setIsSelect(true);
                     workerTeamMap.put(orderWorker.getWorkerId(), bean);
                 }
@@ -592,7 +654,7 @@ public class OrderBaseLogic {
 
         final List<WorkerTeam> teamList = workerTeamService.lambdaQuery()
                 .eq(WorkerTeam::getCompanyWechatId, orderBase.getCompanyWechatId())
-                .eq(WorkerTeam::getMasterWorkerId, orderBase.getWorkerNumber())
+                .eq(WorkerTeam::getMasterWorkerId, workerNumber)
                 .eq(WorkerTeam::getStatus, StateEnum.ON.getKey())
                 .orderByAsc(WorkerTeam::getCreateTime)
                 .list();
@@ -612,6 +674,8 @@ public class OrderBaseLogic {
                     bean.setWorkerId(user.getUserId());
                     bean.setWorkerName(user.getNickName());
                     bean.setWorkerNumber(user.getWorkerNumber());
+                    bean.setWorkerMobile(user.getMobile());
+                    bean.setWorkerIdCard(user.getIdCard());
                     bean.setIsSelect(false);
                     if (index == 0 && CollectionUtil.isEmpty(workerTeamMap)) {
                         // 没有工单派工师傅并且下标为0时,默认选中
@@ -623,16 +687,18 @@ public class OrderBaseLogic {
             }
         }
 
-        // 清除非正常状态的小工师傅
-        final List<WebsitUser> websitUserList = websitUserService.lambdaQuery()
-                .eq(WebsitUser::getCompanyWechatId, orderBase.getCompanyWechatId())
-                .ne(WebsitUser::getExamineStatus, ExamineStatusEnum.OK.getKey())
-                .eq(WebsitUser::getWebsitId, orderBase.getWebsitId())
-                .in(WebsitUser::getUserId, workerTeamMap.keySet())
-                .list();
+        if (CollectionUtil.isNotEmpty(workerTeamMap)) {
+            // 清除非正常状态的小工师傅
+            final List<WebsitUser> websitUserList = websitUserService.lambdaQuery()
+                    .eq(WebsitUser::getCompanyWechatId, orderBase.getCompanyWechatId())
+                    .ne(WebsitUser::getExamineStatus, ExamineStatusEnum.OK.getKey())
+                    .eq(WebsitUser::getWebsitId, orderBase.getWebsitId())
+                    .in(WebsitUser::getUserId, workerTeamMap.keySet())
+                    .list();
 
-        for (WebsitUser websitUser : websitUserList) {
-            workerTeamMap.remove(websitUser.getUserId());
+            for (WebsitUser websitUser : websitUserList) {
+                workerTeamMap.remove(websitUser.getUserId());
+            }
         }
 
         return new ArrayList<>(workerTeamMap.values());

+ 0 - 11
mall-server-api/src/main/java/com/gree/mall/manager/logic/admin/AdminRoleLogic.java

@@ -1,6 +1,5 @@
 package com.gree.mall.manager.logic.admin;
 
-import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.excel.util.StringUtils;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -52,16 +51,10 @@ public class AdminRoleLogic {
             type = RoleTypeEnum.ADMIN.getCode();
         }
 
-        List<String> websitList = null;
-        if (adminUser.getType() == 0 && adminUser.getIsMaster()) {
-            websitList = adminUser.getAdminWebsitIds();
-        }
-
         Page<AdminRole> rolePage = adminRoleService.lambdaQuery()
                 .like(StringUtils.isNotBlank(companyWechatName), AdminRole::getCompanyName, companyWechatName)
                 .le(AdminRole::getType, type)
                 .in(CollectionUtils.isNotEmpty(companyWechatIds), AdminRole::getCompanyWechatId, companyWechatIds)
-                .in(CollectionUtil.isNotEmpty(websitList), AdminRole::getRoleWebsitId, websitList)
                 .orderByDesc(AdminRole::getType)
                 .page(new Page<>(pageNo, pageSize));
 
@@ -79,10 +72,6 @@ public class AdminRoleLogic {
         AdminUserCom adminUser = commonLogic.getAdminUser(request);
         adminRole.setCompanyWechatId(adminUser.getCompanyWechatId());
         adminRole.setCompanyName(adminUser.getCompanyName());
-        if (adminUser.getType() == 0 && adminUser.getIsMaster()) {
-            adminRole.setRoleWebsitId(adminUser.getAdminWebsitIds().get(0));
-            adminRole.setLevel(0);
-        }
         adminRole.setCreateTime(new Date());
         adminRoleService.save(adminRole);
     }