Browse Source

[chg] 每日任务提醒消息推送,app端进行中的急修和年检总计

wcz 5 năm trước cách đây
mục cha
commit
7c68415d98
17 tập tin đã thay đổi với 412 bổ sung56 xóa
  1. 18 6
      lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/controller/AnnualInspectionController.java
  2. 2 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/mapper/AnnualInspectionMapper.java
  3. 4 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/service/AnnualInspectionService.java
  4. 27 17
      lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/controller/EmergencyRepairController.java
  5. 6 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/mapper/EmergencyRepairMapper.java
  6. 13 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/service/EmergencyRepairService.java
  7. 75 24
      lift-business-service/src/main/java/cn/com/ty/lift/business/framework/job/BusinessJob.java
  8. 3 1
      lift-business-service/src/main/java/cn/com/ty/lift/business/project/dao/entity/Region.java
  9. 63 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/push/entity/InspectionTips.java
  10. 59 0
      lift-business-service/src/main/java/cn/com/ty/lift/business/push/entity/RepairTips.java
  11. 5 3
      lift-business-service/src/main/java/cn/com/ty/lift/business/push/mapper/PushUserMapper.java
  12. 17 1
      lift-business-service/src/main/java/cn/com/ty/lift/business/push/PushUserService.java
  13. 17 0
      lift-business-service/src/main/resources/mapper/annualinspection/AnnualInspectionMapper.xml
  14. 45 0
      lift-business-service/src/main/resources/mapper/emergency/EmergencyRepairMapper.xml
  15. 54 0
      lift-business-service/src/main/resources/mapper/push/PushUserMapper.xml
  16. 3 3
      lift-common/src/main/java/cn.com.ty.lift.common/model/PushMessage.java
  17. 1 1
      lift-common/src/main/java/cn.com.ty.lift.common/verify/Verify.java

+ 18 - 6
lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/controller/AnnualInspectionController.java

@@ -10,7 +10,7 @@ import cn.com.ty.lift.business.library.service.LiftService;
 import cn.com.ty.lift.business.project.dao.entity.ProjectLiftRelevance;
 import cn.com.ty.lift.business.project.dao.entity.Region;
 import cn.com.ty.lift.business.project.service.ProjectLiftRelevanceService;
-import cn.com.ty.lift.business.push.PushUserService;
+import cn.com.ty.lift.business.push.service.PushUserService;
 import cn.com.ty.lift.common.model.CountPage;
 import cn.com.ty.lift.common.model.PushMessage;
 import cn.com.ty.lift.common.model.PushUserInfo;
@@ -252,9 +252,11 @@ public class AnnualInspectionController {
             Region region = pushUserService.findRegionByAnnualInspection(old.getId(), old.getMtCompanyId());
             InspectionResponse info = annualInspectionService.infoById(entity);
             List<Long> userIds = new ArrayList<>();
+            //区域主管
             if (Objects.nonNull(region)) {
                 userIds.add(region.getUserId());
             }
+            //电梯主要负责人
             ProjectLiftRelevance relevance = projectLiftRelevanceService.getOne(info.getMtCompanyId(), info.getLiftId());
             if (Objects.nonNull(relevance)) {
                 userIds.add(relevance.getWorkerId());
@@ -482,10 +484,10 @@ public class AnnualInspectionController {
                 registrationCode = StrUtil.isNotEmpty(registrationCode) ? registrationCode.replace(illegalChars,"-") : "[电梯注册代码]";
                 //图片文件夹 dir/i.AreaName-ProjectName-RegistrationCode/
                 String imgDir = StrUtil.format("{}{}{}.{}-{}-{}{}", dir, File.separator, (i + 1), areaName, projectName, registrationCode, File.separator);
-                getImg(ins.getSelfcheckReportImg(), imgDir, "1.自检报告.jpg");
-                getImg(ins.getCheckResultImg(), imgDir, "2.检验结果.jpg");
-                getImg(ins.getCertificateImgUrl(), imgDir, "3.合格证.jpg");
-                getImg(ins.getAnnualInspectionImg(), imgDir, "4.年检报告.jpg");
+                downloadImage(ins.getSelfcheckReportImg(), imgDir, "1.自检报告.jpg");
+                downloadImage(ins.getCheckResultImg(), imgDir, "2.检验结果.jpg");
+                downloadImage(ins.getCertificateImgUrl(), imgDir, "3.合格证.jpg");
+                downloadImage(ins.getAnnualInspectionImg(), imgDir, "4.年检报告.jpg");
             }
 
             //压缩文件夹
@@ -523,7 +525,7 @@ public class AnnualInspectionController {
     }
 
     //根据图片URL生成图片文件
-    private void getImg(String imgUrl, String imgDir, String imgName) {
+    private void downloadImage(String imgUrl, String imgDir, String imgName) {
         if (StrUtil.isNotEmpty(imgUrl)) {
             log.info("imgUrl: {}", imgUrl);
             String filename = imgDir + imgName;
@@ -538,4 +540,14 @@ public class AnnualInspectionController {
         IPage<InspectionResponse> pages = annualInspectionService.pageByLift(request);
         return RestResponse.success(pages);
     }
+
+    /**
+     * 根据用户统计进行中的年检总数
+     */
+    @PostMapping("countDoing")
+    @Verifier(fields = {"mtCompanyId", "userId"})
+    public RestResponse countDoing(@Ver @RequestBody InspectionRequest request){
+        long count = annualInspectionService.countDoingByUser(request);
+        return RestResponse.success(count);
+    }
 }

+ 2 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/mapper/AnnualInspectionMapper.java

@@ -33,4 +33,6 @@ public interface AnnualInspectionMapper extends BaseMapper<AnnualInspection> {
     List<InspectionResponse> listByIdList(@Param("cond") InspectionRequest request);
 
     IPage<InspectionResponse> pageByLift(IPage<InspectionResponse> page, @Param("cond") InspectionRequest request);
+
+    long countDoingByUser(@Param("cond") InspectionRequest request);
 }

+ 4 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/service/AnnualInspectionService.java

@@ -281,4 +281,8 @@ public class AnnualInspectionService extends ServiceImpl<AnnualInspectionMapper,
                 .eq(AnnualInspection::getMtCompanyId, mtCompanyId);
         return getOne(lambdaQueryWrapper);
     }
+
+    public long countDoingByUser(InspectionRequest request){
+        return baseMapper.countDoingByUser(request);
+    }
 }

+ 27 - 17
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/controller/EmergencyRepairController.java

@@ -12,7 +12,7 @@ import cn.com.ty.lift.business.evaluation.service.EvaluationService;
 import cn.com.ty.lift.business.library.dao.entity.PlatformCompanyLiftRelevance;
 import cn.com.ty.lift.business.library.service.PlatformCompanyLiftRelevanceService;
 import cn.com.ty.lift.business.project.dao.entity.Region;
-import cn.com.ty.lift.business.push.PushUserService;
+import cn.com.ty.lift.business.push.service.PushUserService;
 import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.model.CountPage;
 import cn.com.ty.lift.common.model.PushMessage;
@@ -280,7 +280,7 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "workerId"})
     public RestResponse transfer(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair entity = emergencyRepairService.getById(request.getId());
-        Verify.notNull(entity);
+        Verify.notNull(entity, Verify.Repair.notExist);
 
         //如果已经接单,在急修中了不能被转派
         Verify.notTrue(Verify.Repair.statusRepairing(entity.getStatus()), Verify.Repair.repairHadTaked);
@@ -327,7 +327,7 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "closeReason"})
     public RestResponse close(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair entity = emergencyRepairService.getById(request.getId());
-        Verify.notNull(entity);
+        Verify.notNull(entity, "急修记录不存在,请核查");
 
         entity.setCloseReason(request.getCloseReason());
         //新状态(-1 暂停中,0 待修理;1 修理中;2 已完成 3 已关闭)
@@ -360,7 +360,7 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "takingTime"})
     public RestResponse taking(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair entity = emergencyRepairService.getById(request.getId());
-        Verify.notNull(entity);
+        Verify.notNull(entity, Verify.Repair.notExist);
 
         Verify.isTrue(Verify.Repair.statusToRepaired(entity.getStatus()), Verify.Repair.mustToRepair);
         entity.setTakingTime(request.getTakingTime());
@@ -399,7 +399,7 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "arriveTime", "position"})
     public RestResponse arrive(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair entity = emergencyRepairService.getById(request.getId());
-        Verify.notNull(entity);
+        Verify.notNull(entity, Verify.Repair.notExist);
 
         Verify.isTrue(Verify.Repair.statusRepairing(entity.getStatus()), Verify.Repair.mustInRepairing);
         entity.setArriveTime(request.getArriveTime());
@@ -438,7 +438,7 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "stopDate", "safetyConfirm"})
     public RestResponse stopLift(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair entity = emergencyRepairService.getById(request.getId());
-        Verify.notNull(entity);
+        Verify.notNull(entity, Verify.Repair.notExist);
 
         Verify.isTrue(Verify.Repair.statusRepairing(entity.getStatus()), Verify.Repair.mustInRepairing);
         entity.setStopDate(request.getStopDate());
@@ -458,16 +458,16 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "erRecordCosts"})
     public RestResponse addCost(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair repair = emergencyRepairService.getById(request.getId());
-        Verify.notNull(repair);
+        Verify.notNull(repair, Verify.Repair.notExist);
 
         List<ErRecordCost> erRecordCosts = request.getErRecordCosts();
-        BigDecimal costTotal = erRecordCosts.stream().map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
+        BigDecimal costTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getCostMoney())).map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
         repair.setCostTotal(costTotal);
 
-        BigDecimal payTotal = erRecordCosts.stream().map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
+        BigDecimal payTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getPayMoney())).map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
         repair.setPayTotal(payTotal);
 
-        BigDecimal invoiceTotal = erRecordCosts.stream().map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
+        BigDecimal invoiceTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getInvoiceMoney())).map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
         repair.setInvoiceTotal(invoiceTotal);
 
         return emergencyRepairService.addCost(repair, erRecordCosts);
@@ -486,7 +486,7 @@ public class EmergencyRepairController {
         Long erCostItemId = request.getErCostItemId();
 
         EmergencyRepair repair = emergencyRepairService.getById(id);
-        Verify.notNull(repair);
+        Verify.notNull(repair, Verify.Repair.notExist);
 
         ErRecordCost erRecordCost = erRecordCostService.findByRecordAndId(id, erCostItemId);
         Verify.notNull(erRecordCost);
@@ -526,16 +526,16 @@ public class EmergencyRepairController {
     @Verifier(fields = {"id", "erRecordCosts"})
     public RestResponse modifyCost(@Ver @RequestBody RepairRequest request) {
         EmergencyRepair repair = emergencyRepairService.getById(request.getId());
-        Verify.notNull(repair);
+        Verify.notNull(repair, Verify.Repair.notExist);
 
         List<ErRecordCost> erRecordCosts = request.getErRecordCosts();
-        BigDecimal costTotal = erRecordCosts.stream().map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
+        BigDecimal costTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getCostMoney())).map(ErRecordCost::getCostMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
         repair.setCostTotal(costTotal);
 
-        BigDecimal payTotal = erRecordCosts.stream().map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
+        BigDecimal payTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getPayMoney())).map(ErRecordCost::getPayMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
         repair.setPayTotal(payTotal);
 
-        BigDecimal invoiceTotal = erRecordCosts.stream().map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
+        BigDecimal invoiceTotal = erRecordCosts.stream().filter(cost -> Objects.nonNull(cost.getInvoiceMoney())).map(ErRecordCost::getInvoiceMoney).reduce(BigDecimal.ZERO, (m1, m2) -> m1.add(m2));
         repair.setInvoiceTotal(invoiceTotal);
 
         List<ErRecordCost> oldRecordCosts = erRecordCostService.listByErRecordId(request.getId());
@@ -593,7 +593,7 @@ public class EmergencyRepairController {
     public RestResponse evaluate(@Valid @RequestBody Evaluation entity) {
         Long recordId = entity.getRecordId();
         EmergencyRepair repair = emergencyRepairService.getById(recordId);
-        Verify.notNull(repair);
+        Verify.notNull(repair, Verify.Repair.notExist);
 
         Verify.isTrue(Verify.Repair.statusFinish(repair.getStatus()), Verify.Repair.mustFinish);
         Verify.notTrue(repair.getHasEvaluate() == 1, Verify.Repair.hadEvaluate);
@@ -623,7 +623,7 @@ public class EmergencyRepairController {
         List<String> erRecordImg = request.getErRecordImg();
 
         EmergencyRepair entity = emergencyRepairService.getById(id);
-        Verify.notNull(entity);
+        Verify.notNull(entity, Verify.Repair.notExist);
         Verify.isTrue(Verify.Repair.statusRepairing(entity.getStatus()), Verify.Repair.mustInRepairing);
         List<ErRecordImg> erRecordImgs = new ArrayList<>();
         for (int i = 0; i < erRecordImg.size(); i++) {
@@ -888,4 +888,14 @@ public class EmergencyRepairController {
             }
         }
     }
+
+    /**
+     * 根据用户总计进行中的急修总数
+     */
+    @PostMapping("countDoing")
+    @Verifier(fields = {"mtCompanyId", "userId"})
+    public RestResponse countDoing(@Ver @RequestBody RepairRequest request){
+        long count = emergencyRepairService.countDoingByUser(request);
+        return RestResponse.success(count);
+    }
 }

+ 6 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/mapper/EmergencyRepairMapper.java

@@ -32,4 +32,10 @@ public interface EmergencyRepairMapper extends BaseMapper<EmergencyRepair> {
     IPage<RepairResponse> pageByLift(IPage<RepairResponse> page, @Param("cond") RepairRequest request);
 
     List<RepairResponse> listByIdList(@Param("cond") RepairRequest request);
+
+    long countDoingByWorker(@Param("cond") RepairRequest request);
+
+    long countDoingByUser(@Param("cond") RepairRequest request);
+
+    String findUserRole(@Param("cond") RepairRequest request);
 }

+ 13 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/service/EmergencyRepairService.java

@@ -504,4 +504,17 @@ public class EmergencyRepairService extends ServiceImpl<EmergencyRepairMapper, E
         }
         return RestResponse.success(true);
     }
+
+    public long countDoingByUser(RepairRequest request){
+        String userRole = baseMapper.findUserRole(request);
+        if(Objects.nonNull(userRole)){
+            if(Objects.equals("13", userRole)){
+                return baseMapper.countDoingByWorker(request);
+            }else{
+                return baseMapper.countDoingByUser(request);
+            }
+        }else{
+            return 0;
+        }
+    }
 }

+ 75 - 24
lift-business-service/src/main/java/cn/com/ty/lift/business/framework/job/BusinessJob.java

@@ -1,11 +1,12 @@
 package cn.com.ty.lift.business.framework.job;
 
-import cn.com.ty.lift.business.library.dao.entity.model.response.LiftAnnualInspectionResponse;
-import cn.com.ty.lift.business.library.service.LiftService;
 import cn.com.ty.lift.business.maintenance.service.MaintenancePlanService;
-import cn.com.ty.lift.business.project.dao.entity.Region;
-import cn.com.ty.lift.business.push.PushUserService;
+import cn.com.ty.lift.business.push.entity.InspectionTips;
+import cn.com.ty.lift.business.push.entity.RepairTips;
+import cn.com.ty.lift.business.push.service.PushUserService;
 import cn.com.ty.lift.common.model.PushMessage;
+import cn.com.ty.lift.common.model.PushUserInfo;
+import cn.hutool.core.collection.IterUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.AllArgsConstructor;
@@ -16,6 +17,8 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 定时任务
@@ -30,14 +33,14 @@ import java.util.List;
 public class BusinessJob {
 
     private MaintenancePlanService maintenancePlanService;
-    private LiftService            liftService;
     private JmsMessagingTemplate   jmsMessagingTemplate;
-    private PushUserService pushUserService;
+    private PushUserService        pushUserService;
+
     /**
      * 更新维保计划过期状态job:每天1-3点,每10分钟执行一次
      */
     @Scheduled(cron = "0 0/10 1-3 * * ?")
-    public void updateMtPlanJob(){
+    public void updateMtPlanJob() {
         log.trace("Starting update maintenance Plan Job");
         maintenancePlanService.updateOverduePlan(1000);
     }
@@ -45,43 +48,91 @@ public class BusinessJob {
     /**
      * 年检到期提前45天提醒
      */
-    @Scheduled(cron = "0 0 8 * * ?")
+    @Scheduled(cron = "0 0 9 * * ?")
     public void inspection45days() {
         log.trace("Starting inspection 45days");
         sendAnnualInspection(45);
     }
 
     private void sendAnnualInspection(int days) {
-        int pageNum = 1;
+        long pageNum = 1;
         long pages;
-        Long mtCompanyId = 1L;
         do {
-            IPage<LiftAnnualInspectionResponse> confirms = liftService.toConfirmAnnualInspection(new Page<>(pageNum, 10), mtCompanyId, days);
-            pages = confirms.getPages();
-            List<LiftAnnualInspectionResponse> records = confirms.getRecords();
-            if (!records.isEmpty()) {
-                if (days == 45) {
-                    for (LiftAnnualInspectionResponse record : records) {
-                        Region region = pushUserService.findRegionByProject(record.getProjectId(), mtCompanyId);
-
-                        PushMessage.inspectionAdvance45daysNotice(record.getProjectName(), record.getDevicePosition(), record.getRegistrationCode()).sendAllOnPlatform(jmsMessagingTemplate);
+            IPage<InspectionTips> tips = pushUserService.pageMtCompanyByAnnualInspection(new Page<>(pageNum, 10), days);
+            pages = tips.getPages();
+            List<InspectionTips> records = tips.getRecords();
+            if(records.isEmpty()){
+                continue;
+            }
+            if (days == 45) {
+                for (InspectionTips record : records) {
+                    List<PushUserInfo> pushUserInfos = pushUserService.listByUserIds(record.getMtCompanyId(), record.members());
+                    if (IterUtil.isNotEmpty(pushUserInfos)) {
+                        PushMessage.inspectionAdvance15daysNotice(record.getProjectName(), record.getDevicePosition(), record.getRegistrationCode()).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
                     }
-                } else {
-                    for (LiftAnnualInspectionResponse record : records) {
-                        PushMessage.inspectionAdvance15daysNotice(record.getProjectName(), record.getDevicePosition(), record.getRegistrationCode()).sendAllOnPlatform(jmsMessagingTemplate);
+                }
+            } else {
+                for (InspectionTips record : records) {
+                    List<PushUserInfo> pushUserInfos = pushUserService.listByUserIds(record.getMtCompanyId(), record.members());
+                    if (IterUtil.isNotEmpty(pushUserInfos)) {
+                        PushMessage.inspectionAdvance15daysNotice(record.getProjectName(), record.getDevicePosition(), record.getRegistrationCode()).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
                     }
                 }
             }
             pageNum++;
         } while (pageNum <= pages);
     }
-
     /**
      * 年检到期提前15天提醒
      */
-    @Scheduled(cron = "0 0 8 * * ?")
+    @Scheduled(cron = "0 0 10 * * ?")
     public void inspection15days() {
         log.trace("Starting inspection 15days");
         sendAnnualInspection(15);
     }
+
+    @Scheduled(cron = "0 0 16 * * ?")
+    public void taskNotice() {
+        List<RepairTips> repairTips = pushUserService.listMtCompanyByEmergencyRepair();
+        if(repairTips.isEmpty()){
+            return;
+        }
+        //按维保公司分组
+        Map<Long, List<RepairTips>> companies = repairTips.stream().collect(Collectors.groupingBy(RepairTips::getMtCompanyId));
+        if(companies.isEmpty()){
+            return;
+        }
+        for (Map.Entry<Long, List<RepairTips>> entry : companies.entrySet()) {
+            int companyTotal = 0, companyFinish = 0, companyDoings = 0;
+            List<RepairTips> repairTipsList = entry.getValue();
+            if(IterUtil.isNotEmpty(repairTipsList)){
+                //按区域分组, 发给区域主管
+                Map<String, List<RepairTips>> areas = repairTipsList.stream().collect(Collectors.groupingBy(RepairTips::getAreaName));
+                for (Map.Entry<String, List<RepairTips>> listEntry : areas.entrySet()) {
+                    List<RepairTips> tips = listEntry.getValue();
+                    int total = 0, finish = 0, doings = 0;
+                    //循环同一个公司同一个区域下的数据
+                    for (RepairTips tip : tips) {
+                        total += tip.getTotal();
+                        if(1 == tip.getStatus()){
+                            doings += tip.getTotal();
+                        }else if(2 == tip.getStatus()){
+                            finish += tip.getTotal();
+                        }
+                    }
+                    companyTotal += total;
+                    companyFinish += finish;
+                    companyDoings += doings;
+
+                    RepairTips repair = tips.get(0);
+                    //区域主管(项目所属)
+                    PushUserInfo director = pushUserService.listByUserId(repair.getMtCompanyId(), repair.getDirectorId());
+                    PushMessage.managerTaskForRegionChargerDaily(repair.getAreaName(), total, finish, doings, 0).sendTokenOnPlatform(jmsMessagingTemplate, director);
+                }
+                //总经理
+                List<PushUserInfo> pushUserInfos = pushUserService.listHighDirector(repairTipsList.get(0).getMtCompanyId());
+                PushMessage.managerTaskForLeaderDaily(companyTotal, companyFinish, companyDoings, 0).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
+            }
+        }
+    }
 }

+ 3 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/project/dao/entity/Region.java

@@ -92,7 +92,9 @@ public class Region implements Serializable {
      */
     public Set<Long> members(){
         Set<Long> members = new HashSet<>();
-        members.add(userId);
+        if(Objects.nonNull(userId)){
+            members.add(userId);
+        }
         members.addAll(splitClerk());
         return members;
     }

+ 63 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/push/entity/InspectionTips.java

@@ -0,0 +1,63 @@
+package cn.com.ty.lift.business.push.entity;
+
+import cn.hutool.core.util.StrUtil;
+import lombok.Data;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Data
+public class InspectionTips {
+    /**
+     * 维保公司id
+     */
+    private Long   mtCompanyId;
+    /**
+     * 电梯主要负责人id
+     */
+    private Long   workerId;
+    /**
+     * 区域主管id
+     */
+    private Long   directorId;
+    /**
+     * 文员
+     */
+    private String clerk;
+    /**
+     * 项目名称
+     */
+    private String projectName;
+    /**
+     * 注册代码
+     */
+    private String registrationCode;
+    /**
+     * 设备使用地点
+     */
+    private String devicePosition;
+
+    /**
+     * 返回区域主管和文员的id列表
+     */
+    public List<Long> members() {
+        List<Long> members = new ArrayList<>();
+        if (Objects.nonNull(workerId)) {
+            members.add(workerId);
+        }
+        if (Objects.nonNull(directorId)) {
+            members.add(directorId);
+        }
+        if (StrUtil.isNotBlank(clerk)) {
+            try {
+                if (clerk.contains(",")) {
+                    members.addAll(Arrays.stream(clerk.split(",")).map(c -> Long.parseLong(c.trim())).collect(Collectors.toSet()));
+                } else {
+                    members.add(Long.parseLong(clerk.trim()));
+                }
+            } catch (Exception ignore) {
+            }
+        }
+        return members;
+    }
+}

+ 59 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/push/entity/RepairTips.java

@@ -0,0 +1,59 @@
+package cn.com.ty.lift.business.push.entity;
+
+import cn.hutool.core.util.StrUtil;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Data
+public class RepairTips {
+    /**
+     * 维保公司id
+     */
+    private Long    mtCompanyId;
+    /**
+     * 区域主管id
+     */
+    private Long    directorId;
+    /**
+     * 文员
+     */
+    private String  clerk;
+    /**
+     * 区域
+     */
+    private String  areaName;
+    /**
+     * 急修状态
+     */
+    private Integer status;
+    /**
+     * 急修单总数
+     */
+    private Integer total;
+
+    /**
+     * 返回区域主管和文员的id列表
+     */
+    public List<Long> members() {
+        List<Long> members = new ArrayList<>();
+        if (Objects.nonNull(directorId)) {
+            members.add(directorId);
+        }
+        if (StrUtil.isNotBlank(clerk)) {
+            try {
+                if (clerk.contains(",")) {
+                    members.addAll(Arrays.stream(clerk.split(",")).map(c -> Long.parseLong(c.trim())).collect(Collectors.toSet()));
+                } else {
+                    members.add(Long.parseLong(clerk.trim()));
+                }
+            } catch (Exception ignore) {
+            }
+        }
+        return members;
+    }
+}

+ 5 - 3
lift-business-service/src/main/java/cn/com/ty/lift/business/push/mapper/PushUserMapper.java

@@ -1,8 +1,11 @@
 package cn.com.ty.lift.business.push.mapper;
 
 import cn.com.ty.lift.business.project.dao.entity.Region;
+import cn.com.ty.lift.business.push.entity.InspectionTips;
+import cn.com.ty.lift.business.push.entity.RepairTips;
 import cn.com.ty.lift.common.model.PushUserInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -31,8 +34,7 @@ public interface PushUserMapper extends BaseMapper<PushUserInfo> {
 
     Region findRegionByProject(@Param("id") Long projectId, @Param("mtCompanyId") Long mtCompanyId);
 
-    List<PushUserInfo> listByEmergencyRepair(@Param("id") Long repairId, @Param("mtCompanyId") Long mtCompanyId, @Param("roleCodes") List<String> roleCodes);
-
-    List<PushUserInfo> listByAnnualInspection(@Param("id") Long inspectionId, @Param("mtCompanyId") Long mtCompanyId, @Param("roleCodes") List<String> roleCodes);
+    IPage<InspectionTips> pageMtCompanyByAnnualInspection(IPage<InspectionTips> page, @Param("days") int days);
 
+    List<RepairTips> listMtCompanyByEmergencyRepair();
 }

+ 17 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/push/PushUserService.java

@@ -1,11 +1,14 @@
-package cn.com.ty.lift.business.push;
+package cn.com.ty.lift.business.push.service;
 
 import cn.com.ty.lift.business.project.dao.entity.Region;
+import cn.com.ty.lift.business.push.entity.InspectionTips;
+import cn.com.ty.lift.business.push.entity.RepairTips;
 import cn.com.ty.lift.business.push.mapper.PushUserMapper;
 import cn.com.ty.lift.common.constants.ApiConstants;
 import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.model.PushUserInfo;
 import cn.com.xwy.boot.service.impl.BaseServiceImpl;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.stereotype.Service;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
@@ -112,4 +115,17 @@ public class PushUserService extends BaseServiceImpl<PushUserMapper, PushUserInf
     public Region findRegionByProject(Long projectId, Long mtCompanyId){
         return baseMapper.findRegionByProject(projectId, mtCompanyId);
     }
+
+    /**
+     * 查询有年检的维保公司
+     */
+    public IPage<InspectionTips> pageMtCompanyByAnnualInspection(IPage<InspectionTips> page, int days){
+        return baseMapper.pageMtCompanyByAnnualInspection(page, days);
+    }
+    /**
+     * 查询有急修的维保公司
+     */
+    public List<RepairTips> listMtCompanyByEmergencyRepair(){
+        return baseMapper.listMtCompanyByEmergencyRepair();
+    }
 }

+ 17 - 0
lift-business-service/src/main/resources/mapper/annualinspection/AnnualInspectionMapper.xml

@@ -237,4 +237,21 @@
             </if>
         </where>
     </select>
+
+    <select id="countDoingByUser" resultType="java.lang.Long" parameterType="cn.com.ty.lift.business.annualinspection.dto.InspectionRequest">
+        SELECT
+            count( * )
+        FROM
+            annual_inspection ai
+            LEFT JOIN project_lift_relevance plr ON plr.mt_company_id = ai.mt_company_id AND plr.lift_id = ai.lift_id
+            LEFT JOIN project_user pu ON pu.project_id = plr.project_id AND pu.mt_company_id = ai.mt_company_id
+        WHERE
+            ai.`status` = 0
+        <if test="cond.userId != null and cond.userId > 0">
+            AND pu.user_id = #{cond.userId}
+        </if>
+        <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
+            AND ai.mt_company_id = #{cond.mtCompanyId}
+        </if>
+    </select>
 </mapper>

+ 45 - 0
lift-business-service/src/main/resources/mapper/emergency/EmergencyRepairMapper.xml

@@ -285,4 +285,49 @@
 			</if>
 		</where>
 	</select>
+
+    <select id="countDoingByWorker" resultType="java.lang.Long" parameterType="cn.com.ty.lift.business.emergency.dto.RepairRequest">
+        SELECT
+            count(*)
+        FROM
+            emergency_repair er
+        WHERE er.status IN (0, 1)
+        <if test="cond.userId != null and cond.userId > 0">
+            AND er.worker_id1 = #{cond.userId}
+        </if>
+        <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
+            AND er.mt_company_id = #{cond.mtCompanyId}
+        </if>
+
+    </select>
+
+    <select id="countDoingByUser" resultType="java.lang.Long" parameterType="cn.com.ty.lift.business.emergency.dto.RepairRequest">
+        SELECT
+            count(*)
+        FROM
+            emergency_repair er
+            LEFT JOIN project_user pu ON er.project_id = pu.project_id AND er.mt_company_id = pu.mt_company_id
+        WHERE er.status IN (0, 1)
+        <if test="cond.userId != null and cond.userId > 0">
+            AND pu.user_id = #{cond.userId}
+        </if>
+        <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
+            AND er.mt_company_id = #{cond.mtCompanyId}
+        </if>
+    </select>
+
+    <select id="findUserRole" resultType="java.lang.String" parameterType="cn.com.ty.lift.business.emergency.dto.RepairRequest">
+        SELECT
+            user_role
+        FROM
+            project_user
+        <where>
+            <if test="cond.userId != null and cond.userId > 0">
+                AND user_id = #{cond.userId}
+            </if>
+            <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
+                AND mt_company_id = #{cond.mtCompanyId}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 54 - 0
lift-business-service/src/main/resources/mapper/push/PushUserMapper.xml

@@ -160,4 +160,58 @@
             </if>
         </where>
     </select>
+
+    <select id="pageMtCompanyByAnnualInspection" resultType="cn.com.ty.lift.business.push.entity.InspectionTips">
+        SELECT
+            mc.id AS mt_company_id,
+            plr.worker_id,
+            pr.project_name,
+            li.device_position,
+            li.registration_code,
+            re.user_id AS director_id,
+            re.clerk
+        FROM
+            maintenance_company mc
+            LEFT JOIN annual_inspection ai ON ai.mt_company_id = mc.id
+            LEFT JOIN project_lift_relevance plr ON plr.lift_id = ai.lift_id AND ai.mt_company_id = plr.mt_company_id
+            LEFT JOIN lift li ON li.id = ai.lift_id
+            LEFT JOIN project pr ON pr.id = plr.project_id
+            LEFT JOIN region re ON pr.region_id = re.id
+        WHERE
+            ai.id > 0
+            AND plr.project_id > 0
+            AND li.annual_inspection_date &gt;= date_add(CURDATE(), INTERVAL #{days} DAY)
+            AND li.annual_inspection_date >= CURDATE()
+        GROUP BY
+            mc.id,
+            ai.id
+        HAVING
+            count(*) > 0;
+    </select>
+
+    <select id="listMtCompanyByEmergencyRepair" resultType="cn.com.ty.lift.business.push.entity.RepairTips">
+        SELECT
+            mc.id AS mt_company_id,
+            er.`status`,
+            re.area_name,
+            re.user_id AS director_id,
+            re.clerk,
+            count(*) AS total
+        FROM
+            maintenance_company mc
+            LEFT JOIN emergency_repair er ON er.mt_company_id = mc.id
+            LEFT JOIN project_lift_relevance plr ON plr.project_id = er.project_id AND plr.mt_company_id = er.mt_company_id
+            LEFT JOIN project pr ON pr.id = er.project_id
+            LEFT JOIN region re ON pr.region_id = re.id
+        WHERE
+            er.id > 0
+            AND TO_DAYS(er.create_date) = TO_DAYS(NOW())
+        GROUP BY
+            mc.id,
+            re.id,
+            er.`status`
+        HAVING
+            count(*) > 0;
+    </select>
+
 </mapper>

+ 3 - 3
lift-common/src/main/java/cn.com.ty.lift.common/model/PushMessage.java

@@ -439,9 +439,9 @@ public class PushMessage implements Serializable {
      * 下午4点
      * 即时提醒:今天共发生急修X次,已维修完毕X次,X次仍在处理中;X台电梯计划保养未完成。
      */
-    public static PushMessage managerTaskForLeaderDaily(String areaName, int total, int finish, int doings, int todos) {
-        String message = "即时提醒:%s今天共发生急修%s次,已维修完毕%s次,%s次仍在处理中;%s台电梯计划保养未完成。";
-        String content = String.format(message, areaName, total, finish, doings, todos);
+    public static PushMessage managerTaskForLeaderDaily(int total, int finish, int doings, int todos) {
+        String message = "即时提醒:今天共发生急修%s次,已维修完毕%s次,%s次仍在处理中;%s台电梯计划保养未完成。";
+        String content = String.format(message, total, finish, doings, todos);
         return manager(content);
     }
 

+ 1 - 1
lift-common/src/main/java/cn.com.ty.lift.common/verify/Verify.java

@@ -666,7 +666,7 @@ public interface Verify {
         String hadEvaluate         = "急修已经评价了";
         String incorrectAmount     = "金额有误";
         String inspection          = "电梯正在年检中,无法创建";
-
+        String notExist            = "急修不存在,请核查";
         //==============================================================================
     }