瀏覽代碼

Accept Merge Request #37: (dev-wxl -> master)

Merge Request: bug修复

Created By: @万新亮
Accepted By: @万新亮
URL: https://chuanghaikeji.coding.net/p/smarCampus/d/repair_backend/git/merge/37?initial=true
万新亮 1 年之前
父節點
當前提交
e17b21bbc1

+ 175 - 92
src/main/java/com/repair/controller/RepairRecordController.java

@@ -1731,8 +1731,60 @@ public class RepairRecordController implements RepairRecordControllerAPI {
         Date nowDate = new Date();
         String dateHour = new SimpleDateFormat("HH:mm").format(new Date());
         String dateNow = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
-
+        RepairUser repairUser = repairUserService.getById(rsor.getId());
         try {
+            String userID = AesUtils.decrypt(userhead);
+            RepairAdmin operateData = repairAdminService.getRepairById(userID);
+            if (operateData == null) {
+                return CommonResult.fail("操作人信息不合法,无法进行回复!");
+            }
+            //操作人
+            Integer senderId = 0;//超级管理员用ID为0
+            if (!operateData.getIsSuper().equals(eIsSuper.Super.getValue())) {
+                RepairUser user = repairUserService.getRepairByCardNumber(operateData.getCardNumber());
+                if (user == null) {
+                    return CommonResult.fail("管理端账号未与移动端账号绑定,无法进行审核!");
+                }
+                senderId = user.getId();
+            }
+            if(repairUser.getUserZzid()==4){
+                String strContent="派单线下";
+                //同意
+                rr.setMaintenanceState(eRecordStatu.Offline.getValue());
+                //将维修师傅也加进去
+                rr.setMaintenancerName(repairUser.getUserName());
+                rr.setMaintenancerPhone(repairUser.getUserPhone());
+                int updateRecord = repairRecordService.updateRepairRecord(rr);
+                if (updateRecord <= 0) {
+                    System.out.println("派单线下失败,更新维修师傅失败");
+                    throw new Exception("派单线下失败!");
+                }
+
+                RepairSystemMessages rsm = new RepairSystemMessages();
+                rsm.setIsRead(0);
+                rsm.setRecordId(rsor.getRecordId());
+                rsm.setRecipientId(rsor.getId());
+                rsm.setContent("派单线下!");
+                int insertRsm = repairSystemMessagesService.insertRepairSystemMessages(rsm);
+                if (insertRsm <= 0) {
+                    System.out.println("派单线下失败,插入消息失败");
+                    throw new Exception("派单线下失败!");
+                }
+
+                //添加跟踪记录
+                RepairTrackRecord repairTrackRecord = new RepairTrackRecord();
+                repairTrackRecord.setRecordId(rr.getId());
+                repairTrackRecord.setContent(strContent);
+                repairTrackRecord.setMaintenanceState(rr.getMaintenanceState());
+                repairTrackRecord.setUserId(senderId);
+                repairTrackRecord.setUserZzstr("管理员");
+                int insertTrack = repairTrackRecordService.insertRepairTrackRecord(repairTrackRecord);
+                if (insertTrack <= 0) {
+                    System.out.println("派单线下失败,插入跟踪记录失败");
+                    throw new Exception("派单线下师傅失败!");
+                }
+                return CommonResult.ok("派单线下成功");
+            }
             List<String> shifts = Arrays.asList(rsor.getShiftId().split(",")).stream().distinct().collect(Collectors.toList());
             RepairDispatchRecord rdr = null;
             //只获取不是值班 或下班后的排班数据
@@ -1832,21 +1884,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                 }
             }
 
-            String userID = AesUtils.decrypt(userhead);
-            RepairAdmin operateData = repairAdminService.getRepairById(userID);
-            if (operateData == null) {
-                return CommonResult.fail("操作人信息不合法,无法进行回复!");
-            }
 
-            //操作人
-            Integer senderId = 0;//超级管理员用ID为0
-            if (!operateData.getIsSuper().equals(eIsSuper.Super.getValue())) {
-                RepairUser user = repairUserService.getRepairByCardNumber(operateData.getCardNumber());
-                if (user == null) {
-                    return CommonResult.fail("管理端账号未与移动端账号绑定,无法进行审核!");
-                }
-                senderId = user.getId();
-            }
 
             RepairSystemMessages rsm = new RepairSystemMessages();
             rsm.setIsRead(0);
@@ -1857,7 +1895,6 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             if (insertRsm <= 0) {
                 throw new Exception("派单失败!");
             }
-
             //添加跟踪记录  派单不加跟踪记录
             RepairTrackRecord rtr = new RepairTrackRecord();
             rtr.setRecordId(rsor.getRecordId());
@@ -1981,12 +2018,11 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             if (insertTransfer <= 0) {
                 throw new Exception("转单审核失败!");
             }
-
             if (eApprovalStatu.Agree.getValue() == tr.getApproverStatu()) {
-                //被派单用户
+                //转线下用户
                 RepairUser repairUser = repairUserService.getById(tr.getUserId());
                 if (repairUser == null) {
-                    return CommonResult.fail("被派单师傅数据异常,审核失败");
+                    return CommonResult.fail("被转线下师傅数据异常,审核失败");
                 }
 
                 //将原有的派单记录数据置为失效
@@ -1995,24 +2031,50 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                 int updateDis = repairDispatchRecordService.updateDispatch(rr.getId(), oldDispatchRecord);
 
                 //同意
-                //添加派单记录
-                RepairDispatchRecord repairDispatchRecord = new RepairDispatchRecord();
-                repairDispatchRecord.setRecordId(rr.getId());
-                repairDispatchRecord.setUsersId(tr.getUserId());
-                repairDispatchRecord.setAssignedTime(new Date());
-                //repairDispatchRecord.setAcceptanceAssessTime(repairUser.getAcceptanceAssessTime());
-                repairDispatchRecord.setOrderType(eDispatchType.Transfer.getValue());
-                repairDispatchRecord.setIsLoseEfficacy(eDispatchResult.NotExpired.getValue());
-                int insertDispatch = repairDispatchRecordService.insertRepairDispatchRecord(repairDispatchRecord);
-                if (insertDispatch <= 0) {
-                    throw new Exception("转单审核失败!");
+                rr.setMaintenanceState(eRecordStatu.Offline.getValue());
+                //将维修师傅也加进去
+                rr.setMaintenancerName(repairUser.getUserName());
+                rr.setMaintenancerPhone(repairUser.getUserPhone());
+            }
+            String strContent="转单审核";
+            if (eApprovalStatu.Agree.getValue() == tr.getApproverStatu()) {
+                //被派单用户
+                RepairUser repairUser = repairUserService.getById(tr.getUserId());
+                if (repairUser == null) {
+                    return CommonResult.fail("被派单师傅数据异常,审核失败");
+                }
+                //将原有的派单记录数据置为失效
+                RepairDispatchRecord oldDispatchRecord = new RepairDispatchRecord();
+                oldDispatchRecord.setIsLoseEfficacy(eDispatchResult.Expired.getValue());
+                int updateDis = repairDispatchRecordService.updateDispatch(rr.getId(), oldDispatchRecord);
+                //转线下
+                if(repairUser.getUserZzid()==4){
+                    strContent="转线下审核";
+                    //同意
+                    rr.setMaintenanceState(eRecordStatu.Offline.getValue());
+                    //将维修师傅也加进去
+                    rr.setMaintenancerName(repairUser.getUserName());
+                    rr.setMaintenancerPhone(repairUser.getUserPhone());
+                }else {
+                    //同意
+                    //添加派单记录
+                    RepairDispatchRecord repairDispatchRecord = new RepairDispatchRecord();
+                    repairDispatchRecord.setRecordId(rr.getId());
+                    repairDispatchRecord.setUsersId(tr.getUserId());
+                    repairDispatchRecord.setAssignedTime(new Date());
+                    //repairDispatchRecord.setAcceptanceAssessTime(repairUser.getAcceptanceAssessTime());
+                    repairDispatchRecord.setOrderType(eDispatchType.Transfer.getValue());
+                    repairDispatchRecord.setIsLoseEfficacy(eDispatchResult.NotExpired.getValue());
+                    int insertDispatch = repairDispatchRecordService.insertRepairDispatchRecord(repairDispatchRecord);
+                    if (insertDispatch <= 0) {
+                        throw new Exception("转单审核失败!");
+                    }
+                    //同意的时候将维修表的状态改成派单中
+                    //拒绝的时候将维修表的状态改成转单前的
+                    rr.setMaintenanceState(eRecordStatu.Dispatch.getValue());
                 }
-
             }
 
-            //同意的时候将维修表的状态改成派单中
-            //拒绝的时候将维修表的状态改成转单前的
-            rr.setMaintenanceState(eRecordStatu.Dispatch.getValue());
             int updateRecord = repairRecordService.updateRepairRecord(rr);
             if (updateRecord <= 0) {
                 throw new Exception("转单审核失败!");
@@ -2031,7 +2093,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             //添加跟踪记录
             RepairTrackRecord repairTrackRecord = new RepairTrackRecord();
             repairTrackRecord.setRecordId(rr.getId());
-            repairTrackRecord.setContent("转单审核" + (tr.getRefuseRemark() == null ? "" : "-" + tr.getRefuseRemark()));
+            repairTrackRecord.setContent(strContent + (tr.getRefuseRemark() == null ? "" : "-" + tr.getRefuseRemark()));
             repairTrackRecord.setMaintenanceState(rr.getMaintenanceState());
             repairTrackRecord.setUserId(senderId);
             repairTrackRecord.setUserZzstr("管理员");
@@ -2114,7 +2176,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             if (insertOffline <= 0) {
                 throw new Exception("转线下审核失败!");
             }
-
+            String strContent="转线下审核";
             if (eApprovalStatu.Agree.getValue() == tr.getApproverStatu()) {
                 //转线下用户
                 RepairUser repairUser = repairUserService.getById(tr.getUserId());
@@ -2127,11 +2189,32 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                 oldDispatchRecord.setIsLoseEfficacy(eDispatchResult.Expired.getValue());
                 int updateDis = repairDispatchRecordService.updateDispatch(rr.getId(), oldDispatchRecord);
 
-                //同意
-                rr.setMaintenanceState(eRecordStatu.Offline.getValue());
-                //将维修师傅也加进去
-                rr.setMaintenancerName(repairUser.getUserName());
-                rr.setMaintenancerPhone(repairUser.getUserPhone());
+                if(repairUser.getUserZzid()==4){
+
+                    //同意
+                    rr.setMaintenanceState(eRecordStatu.Offline.getValue());
+                    //将维修师傅也加进去
+                    rr.setMaintenancerName(repairUser.getUserName());
+                    rr.setMaintenancerPhone(repairUser.getUserPhone());
+                }else {
+                    strContent="转单审核";
+                    //同意
+                    //添加派单记录
+                    RepairDispatchRecord repairDispatchRecord = new RepairDispatchRecord();
+                    repairDispatchRecord.setRecordId(rr.getId());
+                    repairDispatchRecord.setUsersId(tr.getUserId());
+                    repairDispatchRecord.setAssignedTime(new Date());
+                    //repairDispatchRecord.setAcceptanceAssessTime(repairUser.getAcceptanceAssessTime());
+                    repairDispatchRecord.setOrderType(eDispatchType.Transfer.getValue());
+                    repairDispatchRecord.setIsLoseEfficacy(eDispatchResult.NotExpired.getValue());
+                    int insertDispatch = repairDispatchRecordService.insertRepairDispatchRecord(repairDispatchRecord);
+                    if (insertDispatch <= 0) {
+                        throw new Exception("转单审核失败!");
+                    }
+                    //同意的时候将维修表的状态改成派单中
+                    //拒绝的时候将维修表的状态改成转单前的
+                    rr.setMaintenanceState(eRecordStatu.Dispatch.getValue());
+                }
             } else {
                 //转线下前的维修单记录状态
                 rr.setMaintenanceState(offlineRecord.getOldRecord());
@@ -2155,7 +2238,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             //添加跟踪记录
             RepairTrackRecord repairTrackRecord = new RepairTrackRecord();
             repairTrackRecord.setRecordId(rr.getId());
-            repairTrackRecord.setContent("转线下审核" + (tr.getRefuseRemark() == null ? "" : "-" + tr.getRefuseRemark()));
+            repairTrackRecord.setContent(strContent + (tr.getRefuseRemark() == null ? "" : "-" + tr.getRefuseRemark()));
             repairTrackRecord.setMaintenanceState(rr.getMaintenanceState());
             repairTrackRecord.setUserId(senderId);
             repairTrackRecord.setUserZzstr("管理员");
@@ -3418,14 +3501,14 @@ public class RepairRecordController implements RepairRecordControllerAPI {
         List<RepairDispatchRecord> repairDispatchRecords = repairDispatchRecordService.list(rdrsWrapper);
         for (RepairDispatchRecord repairDispatchRecord : repairDispatchRecords) {
             // 派单时间
-            long sendTime = repairDispatchRecord.getAssignedTime().getTime();
-            // 接单考核时间
-            Integer acceptanceAssessTime = repairDispatchRecord.getAcceptanceAssessTime() * 1000 * 60;
-
-            long time = sendTime + acceptanceAssessTime;
-
-            // 接单时间
-            long receivingTime = repairDispatchRecord.getReceivingTime().getTime();
+//            long sendTime = repairDispatchRecord.getAssignedTime().getTime();
+//            // 接单考核时间
+//            Integer acceptanceAssessTime = repairDispatchRecord.getAcceptanceAssessTime() * 1000 * 60;
+//
+//            long time = sendTime + acceptanceAssessTime;
+//
+//            // 接单时间
+//            long receivingTime = repairDispatchRecord.getReceivingTime().getTime();
             // 接单人
             Integer usersId = repairDispatchRecord.getUsersId();
             Integer recordId = repairDispatchRecord.getRecordId();
@@ -3442,29 +3525,29 @@ public class RepairRecordController implements RepairRecordControllerAPI {
 
 
             // 实际完成时间大于接单时间加考核时间为超时
-            if (receivingTime > time) {
-                if (sendTimeOutMap.containsKey(usersId)) {
-                    // 次数
-                    Integer count = sendTimeOutMap.get(usersId);
-                    count = count + 1;
-                    sendTimeOutMap.put(usersId, count);
-                } else {
-                    sendTimeOutMap.put(usersId, 1);
-                }
-            }
+//            if (receivingTime > time) {
+//                if (sendTimeOutMap.containsKey(usersId)) {
+//                    // 次数
+//                    Integer count = sendTimeOutMap.get(usersId);
+//                    count = count + 1;
+//                    sendTimeOutMap.put(usersId, count);
+//                } else {
+//                    sendTimeOutMap.put(usersId, 1);
+//                }
+//            }
 
             // 接单时长=接单时间-派单时间(分)
-            Long orderReceivingTime = receivingTime - sendTime;
-            orderReceivingTime = orderReceivingTime / 1000 / 60;
-
-            if (sendMap.containsKey(usersId)) {
-                // 接单总时长
-                Long sendTotalTime = sendMap.get(usersId);
-                sendTotalTime = sendTotalTime + orderReceivingTime;
-                sendMap.put(usersId, sendTotalTime);
-            } else {
-                sendMap.put(usersId, orderReceivingTime);
-            }
+//            Long orderReceivingTime = receivingTime - sendTime;
+//            orderReceivingTime = orderReceivingTime / 1000 / 60;
+
+//            if (sendMap.containsKey(usersId)) {
+//                // 接单总时长
+//                Long sendTotalTime = sendMap.get(usersId);
+//                sendTotalTime = sendTotalTime + orderReceivingTime;
+//                sendMap.put(usersId, sendTotalTime);
+//            } else {
+//                sendMap.put(usersId, orderReceivingTime);
+//            }
         }
 
         Wrapper<RepairSchool> schoolWrapper = new LambdaQueryWrapper<>();
@@ -3497,27 +3580,27 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             maintenanceWorkerVo.setWorkOrderTotal(size);
 
             // 超时率--待消除
-            if (maintainTimeOutMap.containsKey(id)) {
-                Integer integer = maintainTimeOutMap.get(id);
-                BigDecimal a = new BigDecimal(integer);
-                BigDecimal c = b;
-
-                // 接单总次数
-                List<Integer> integers = sendCountMap.get(id);
-                BigDecimal bigDecimal1 = new BigDecimal(integers.size());
-                c = c.add(bigDecimal1);
-                // 接单
-                if (sendTimeOutMap.containsKey(id)) {
-                    Integer integer1 = sendTimeOutMap.get(id);
-                    BigDecimal bigDecimal = new BigDecimal(integer1);
-                    a = a.add(bigDecimal);
-
-                }
-
-                BigDecimal bigDecimal = a.divide(c, 2, BigDecimal.ROUND_HALF_UP);
-                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(100));
-                //maintenanceWorkerVo.setTimeOut(multiply + "%");
-            }
+//            if (maintainTimeOutMap.containsKey(id)) {
+//                Integer integer = maintainTimeOutMap.get(id);
+//                BigDecimal a = new BigDecimal(integer);
+//                BigDecimal c = b;
+//
+//                // 接单总次数
+//                List<Integer> integers = sendCountMap.get(id);
+//                BigDecimal bigDecimal1 = new BigDecimal(integers.size());
+//                c = c.add(bigDecimal1);
+//                // 接单
+//                if (sendTimeOutMap.containsKey(id)) {
+//                    Integer integer1 = sendTimeOutMap.get(id);
+//                    BigDecimal bigDecimal = new BigDecimal(integer1);
+//                    a = a.add(bigDecimal);
+//
+//                }
+//
+//                BigDecimal bigDecimal = a.divide(c, 2, BigDecimal.ROUND_HALF_UP);
+//                BigDecimal multiply = bigDecimal.multiply(new BigDecimal(100));
+//                //maintenanceWorkerVo.setTimeOut(multiply + "%");
+//            }
 
             // 平均维修时间--带消除
             Long aLong = maintainMap.get(id) == null ? 0L : maintainMap.get(id);

+ 1 - 0
src/main/java/com/repair/controller/RepairUserController.java

@@ -435,6 +435,7 @@ public class RepairUserController implements RepairUserControllerAPI {
 
         String dateNow = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
         PageUtils<AutoDispatchUserVo> users = repairUserService.autoDispatchUser(currentPage, pageCount, rr.getSchoolId(), dateNow, rr.getArticleId(), rr.getBuildId(), keyWord);
+//        PageUtils<AutoOfflineUserVo> users = repairUserService.autoOfflineRepairUser(currentPage, pageCount, rr.getSchoolId(), keyWord);
 
         return CommonResult.ok(users);
     }

+ 6 - 5
src/main/resources/mapper/repair/RepairUserMapper.xml

@@ -183,11 +183,12 @@
         inner join repair_classes_settings rcs on rcs.deleted = 0 and rcs.user_id = ru.id and start_date = #{dateNow}
         left join repair_work_type wt on wt.deleted = 0 and wt.id = ru.work_type
         where ru.school_id = #{schoolId} and ru.deleted = 0 and (ru.user_zzid = 1 or ru.user_zzid = 2) and ru.state = 1
-        and ru.id in (select user_id from
-        (select user_id,(select GROUP_CONCAT(id) from repair_article_type where (id = repair_article_build.article_id or parent_id = repair_article_build.article_id) and deleted = 0) as article_id,build_id
-        from repair_article_build
-        where deleted = 0) d
-        where FIND_IN_SET(${articleId},d.article_id) and FIND_IN_SET(${buildId},d.build_id))
+--         取消物品类别限制
+--         and ru.id in (select user_id from
+--         (select user_id,(select GROUP_CONCAT(id) from repair_article_type where (id = repair_article_build.article_id or parent_id = repair_article_build.article_id) and deleted = 0) as article_id,build_id
+--         from repair_article_build
+--         where deleted = 0) d
+--         where FIND_IN_SET(${articleId},d.article_id) and FIND_IN_SET(${buildId},d.build_id))
         <if test="keyWord != null and keyWord != ''">
             and (ru.user_name like '%' #{keyWord} '%' or ru.user_phone like '%' #{keyWord} '%')
         </if>