Explorar el Código

增加批量关单;取消删除员工的在途工单限制;工单除最后4个状态都增加关单按钮

wanxl hace 1 año
padre
commit
5d153cc020

+ 1 - 9
repair_system.iml

@@ -1,13 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
-  <component name="AdditionalModuleElements">
-    <content url="file://$MODULE_DIR$" dumb="true">
-      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
-      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/target" />
-    </content>
-  </component>
+<module version="4">
   <component name="FacetManager">
   <component name="FacetManager">
     <facet type="Spring" name="Spring">
     <facet type="Spring" name="Spring">
       <configuration />
       <configuration />

+ 5 - 0
src/main/java/com/repair/api/RepairRecordControllerAPI.java

@@ -12,6 +12,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 
 
 
 @RequestMapping("/api/repairRecord")
 @RequestMapping("/api/repairRecord")
@@ -246,4 +247,8 @@ public interface RepairRecordControllerAPI {
     @ApiOperation(value = "获取打印数据", notes = "获取打印数据", httpMethod = "GET")
     @ApiOperation(value = "获取打印数据", notes = "获取打印数据", httpMethod = "GET")
     CommonResult queryPrintData(@RequestParam int recordId,@RequestHeader("user_head") String userhead);
     CommonResult queryPrintData(@RequestParam int recordId,@RequestHeader("user_head") String userhead);
 
 
+    @GetMapping(value = "/closePCOrderBeath")
+    @ApiOperation(value = "管理端批量关单", notes = "管理端批量关单", httpMethod = "GET")
+    CommonResult closePCOrderBeath(@RequestParam String recordId, @RequestHeader("user_head") String userhead, @RequestParam String reason, @RequestParam String remark) throws Exception;
+
 }
 }

+ 16 - 2
src/main/java/com/repair/controller/RepairConsumablesController.java

@@ -2,6 +2,8 @@ package com.repair.controller;
 
 
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.repair.api.RepairConsumablesControllerAPI;
 import com.repair.api.RepairConsumablesControllerAPI;
 import com.repair.common.utils.*;
 import com.repair.common.utils.*;
 import com.repair.model.enumModel.eIsSuper;
 import com.repair.model.enumModel.eIsSuper;
@@ -20,6 +22,7 @@ import com.repair.services.*;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.validation.BindingResult;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
@@ -159,8 +162,19 @@ public class RepairConsumablesController implements RepairConsumablesControllerA
             //当返回值大于0时,表示BigDecimal对象大于指定的数值。
             //当返回值大于0时,表示BigDecimal对象大于指定的数值。
             data.setStatu(data.getTotalPrice().compareTo(BigDecimal.ZERO) > 0 ? "有偿" : "无偿");
             data.setStatu(data.getTotalPrice().compareTo(BigDecimal.ZERO) > 0 ? "有偿" : "无偿");
         }
         }
-
-        return CommonResult.ok(result);
+        JSONObject jsonObject=(JSONObject) JSONObject.toJSON(result);
+        QueryWrapper<RepairConsumables> ew = new QueryWrapper<>();
+        if(StringUtils.hasText(endTime)&&StringUtils.hasText(startTime)){
+            ew.between("update_time",startTime,endTime);
+        }
+        if (StringUtils.hasText(keyWord)) {
+            String str ="record_id  in (select id from   repair_record rr where  rr.deleted = 0 and rr.record_no like '%" + keyWord + "%')";
+            ew.and(w -> w.like("consume_name", keyWord).or().apply(str));
+        }
+        ew.select("IFNULL(sum(number),0) tcont,IFNULL(sum(total_price),0) tprice");
+        Map<String,Object> map=repairConsumablesService.getMap(ew);
+        jsonObject.putAll(map);
+        return CommonResult.ok(jsonObject);
     }
     }
 
 
     /**
     /**

+ 80 - 4
src/main/java/com/repair/controller/RepairRecordController.java

@@ -1068,9 +1068,11 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                     } else if (r.getMaintenanceState() == 4) {
                     } else if (r.getMaintenanceState() == 4) {
                         r.setState("待支付");
                         r.setState("待支付");
                         r.setDelayed(1);
                         r.setDelayed(1);
+                        r.setClose(1);
                     } else if (r.getMaintenanceState() == 5 || r.getMaintenanceState() == 6) {
                     } else if (r.getMaintenanceState() == 5 || r.getMaintenanceState() == 6) {
                         r.setState(r.getMaintenanceState() == 5 ? "转单待审核" : "协作待审核");
                         r.setState(r.getMaintenanceState() == 5 ? "转单待审核" : "协作待审核");
                         r.setDelayed(1);
                         r.setDelayed(1);
+                        r.setClose(1);
                     } else if (r.getMaintenanceState() == 7) {
                     } else if (r.getMaintenanceState() == 7) {
                         r.setState("已完成");
                         r.setState("已完成");
                     } else if (r.getMaintenanceState() == 8) {
                     } else if (r.getMaintenanceState() == 8) {
@@ -1116,6 +1118,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                 for (RepairRecordPageVo r : result.getList()) {
                 for (RepairRecordPageVo r : result.getList()) {
                     r.setState(r.getMaintenanceState() == 5 ? "转单待审核" : (r.getMaintenanceState() == 6 ? "协作待审核" : "转线下待审核"));
                     r.setState(r.getMaintenanceState() == 5 ? "转单待审核" : (r.getMaintenanceState() == 6 ? "协作待审核" : "转线下待审核"));
                     r.setDelayed(1);
                     r.setDelayed(1);
+                    r.setClose(1);
                 }
                 }
                 break;
                 break;
             case 5:
             case 5:
@@ -1180,6 +1183,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                 result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime, schoolId, maintenanceName);
                 result = repairRecordService.queryNotTimeout(currentPage, pageCount, stateStr, keyWord, startTime, endTime, schoolId, maintenanceName);
                 for (RepairRecordPageVo r : result.getList()) {
                 for (RepairRecordPageVo r : result.getList()) {
                     r.setState("待支付");
                     r.setState("待支付");
+                    r.setClose(1);
                 }
                 }
             default:
             default:
                 break;
                 break;
@@ -1250,7 +1254,7 @@ public class RepairRecordController implements RepairRecordControllerAPI {
                 List<RepairLeaveMessage> alls = messages.stream().filter(e -> e.getRecordId() == r.getId()).collect(Collectors.toList());
                 List<RepairLeaveMessage> alls = messages.stream().filter(e -> e.getRecordId() == r.getId()).collect(Collectors.toList());
                 List<RepairLeaveMessage> owns = alls.stream().filter(e -> e.getRecordId() == r.getId() && e.getSenderId().equals(r.getUserId())).collect(Collectors.toList());
                 List<RepairLeaveMessage> owns = alls.stream().filter(e -> e.getRecordId() == r.getId() && e.getSenderId().equals(r.getUserId())).collect(Collectors.toList());
                 r.setReply(owns.size() > alls.size() / 2 ? 1 : 0);
                 r.setReply(owns.size() > alls.size() / 2 ? 1 : 0);
-                r.setAreaName(r.getAreaName()+":"+r.getAddressName());
+                r.setAreaName(r.getAreaName()+r.getAddressName());
             }
             }
 
 
         }
         }
@@ -4318,10 +4322,23 @@ public class RepairRecordController implements RepairRecordControllerAPI {
             return CommonResult.fail("订单不存在,关单失败!");
             return CommonResult.fail("订单不存在,关单失败!");
         }
         }
 
 
-        //待接单才能关单
-        if (recordData.getMaintenanceState() != eRecordStatu.Dispatch.getValue()) {
-            return CommonResult.fail("待接单状态的工单才能关闭");
+        //已关闭
+        if (recordData.getMaintenanceState() == eRecordStatu.Closed.getValue()) {
+            return CommonResult.fail("工单已关闭");
+        }
+        //已取消
+        if (recordData.getMaintenanceState() == eRecordStatu.Canceled.getValue()) {
+            return CommonResult.fail("工单已取消");
+        }
+        //已完成
+        if (recordData.getMaintenanceState() == eRecordStatu.Finished.getValue()) {
+            return CommonResult.fail("工单已完成");
         }
         }
+        //已转线下
+        if (recordData.getMaintenanceState() == eRecordStatu.Offline.getValue()) {
+            return CommonResult.fail("工单已转线下");
+        }
+
 
 
         String userID = AesUtils.decrypt(userhead);
         String userID = AesUtils.decrypt(userhead);
         RepairAdmin operateData = repairAdminService.getRepairById(userID);
         RepairAdmin operateData = repairAdminService.getRepairById(userID);
@@ -4900,5 +4917,64 @@ public class RepairRecordController implements RepairRecordControllerAPI {
 //    public CommonResult queryTeamWorkPage(int currentPage, int pageCount, int state, int schoolId) {
 //    public CommonResult queryTeamWorkPage(int currentPage, int pageCount, int state, int schoolId) {
 //        return CommonResult.ok("");
 //        return CommonResult.ok("");
 //    }
 //    }
+
+    /**
+     * 管理端关单操作
+     *
+     * @param recordIds 维修记录ID
+     * @param userhead 请求头
+     * @param reason   关单原因
+     * @return
+     * @throws Exception
+     */
+    @Override
+    @Transactional(rollbackFor = {Exception.class})
+    public CommonResult closePCOrderBeath(String recordIds, String userhead, String reason, String remark) throws Exception {
+
+        List<String> listIds = Arrays.asList(recordIds.split(","));
+        //获取订单
+        Collection<RepairRecord> recordDataS =  repairRecordService.listByIds(listIds);
+        if (recordDataS == null||recordDataS.size()<1) {
+            return CommonResult.fail("订单均不存在,关单失败!");
+        }
+        String userID = AesUtils.decrypt(userhead);
+        RepairAdmin operateData = repairAdminService.getRepairById(userID);
+        if (operateData == null) {
+            return CommonResult.fail("操作人信息不合法,无法进行关单!");
+        }
+        recordDataS=recordDataS.stream().filter(e->e.getMaintenanceState()<7||e.getMaintenanceState()==11).collect(Collectors.toList());
+
+        try {
+            Collection<RepairTrackRecord> trackRecordS=new ArrayList<RepairTrackRecord>();
+            for(RepairRecord record:recordDataS){
+                //将工单状态更新为维修中
+                record.setCustomsOfficerId(userID.toString());
+                record.setRemark(reason);
+                record.setMaintenanceState(eRecordStatu.Closed.getValue());
+                RepairTrackRecord rtr = new RepairTrackRecord();
+                //插入工单记录表
+                rtr.setRecordId(record.getId());
+                rtr.setMaintenanceState(eRecordStatu.Closed.getValue());
+                rtr.setContent("已关单-" + reason + "  补充说明:" + remark+" 批量关单");
+                rtr.setUserId(0);
+                rtr.setUserZzstr("维修师傅");
+                trackRecordS.add(rtr);
+            }
+            boolean updateRecord = repairRecordService.updateBatchById(recordDataS);
+            if (!updateRecord) {
+                return CommonResult.fail("关单失败!");
+            }
+            boolean insertRtr = repairTrackRecordService.saveBatch(trackRecordS);
+            if (!insertRtr) {
+                throw new Exception("关单失败");
+            }
+
+        } catch (Exception e) {
+            throw new Exception("关单失败!");
+        }
+
+        return CommonResult.ok("关单成功");
+    }
+
 }
 }
 
 

+ 7 - 6
src/main/java/com/repair/controller/RepairUserController.java

@@ -375,12 +375,13 @@ public class RepairUserController implements RepairUserControllerAPI {
         //判断是否存在待接单或维修中数据:
         //判断是否存在待接单或维修中数据:
         //接单表中是否存在当前用户ID的数据条数
         //接单表中是否存在当前用户ID的数据条数
         //维修表中是否存在当前用户ID的数据条数
         //维修表中是否存在当前用户ID的数据条数
-        DisReceCountVo disCount = repairDispatchRecordService.queryDisReceCount(Integer.valueOf(id));
-        if (disCount != null) {
-            if (disCount.getDisCount() > 0 || disCount.getRecCount() > 0) {
-                return CommonResult.fail("存在待处理工单,无法删除");
-            }
-        }
+        //2024年9月24日取消删除限制
+//        DisReceCountVo disCount = repairDispatchRecordService.queryDisReceCount(Integer.valueOf(id));
+//        if (disCount != null) {
+//            if (disCount.getDisCount() > 0 || disCount.getRecCount() > 0) {
+//                return CommonResult.fail("存在待处理工单,无法删除");
+//            }
+//        }
 
 
         try {
         try {
             //删除维修关联楼栋数据
             //删除维修关联楼栋数据

+ 1 - 1
src/main/resources/application-dev.yml

@@ -13,7 +13,7 @@ spring:
   datasource:
   datasource:
     username: root
     username: root
     password: Chuanghai_2023.
     password: Chuanghai_2023.
-    url: jdbc:mysql://172.16.20.95:3306/repair_report?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://172.16.20.95:3306/repair_test?useUnicode=tru&characterEncoding=UTF-8&useSSL=false&useAffectedRows=true&allowPublicKeyRetrieval=true&allowMultiQueries=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai
     driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.mysql.cj.jdbc.Driver
     cache:
     cache:
       type: redis
       type: redis

+ 1 - 1
src/main/resources/mapper/repair/RepairPayRecordMapper.xml

@@ -67,7 +67,7 @@
             or rpr.record_id in (select id from repair_record where deleted = 0 and record_no like '%' #{keyWord} '%')
             or rpr.record_id in (select id from repair_record where deleted = 0 and record_no like '%' #{keyWord} '%')
             or rpr.record_id in (select id from repair_record where deleted = 0 and area_id like '%' #{keyWord} '%')
             or rpr.record_id in (select id from repair_record where deleted = 0 and area_id like '%' #{keyWord} '%')
             or rpr.record_id in (select id from repair_record where deleted =0 and address like '%' #{keyWord} '%')
             or rpr.record_id in (select id from repair_record where deleted =0 and address like '%' #{keyWord} '%')
-            or rpr.record_id in (select id from repair_record where deleted =0 and concat(area_id,address)like concat('%',#{keyWord),'%'))
+            or rpr.record_id in (select id from repair_record where deleted =0 and concat(area_id,address)like concat('%' #{keyWord} '%')))
         </if>
         </if>
         <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
         <if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
             and rpr.create_time between #{startTime} and #{endTime}
             and rpr.create_time between #{startTime} and #{endTime}