Parcourir la source

Merge branch 'feature-wcz' of lift-manager/lift-server into develop

wucizhong il y a 5 ans
Parent
commit
b03052db87

+ 4 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/dto/RepairResponse.java

@@ -53,6 +53,10 @@ public class RepairResponse extends EmergencyRepair{
      * 电梯位置
      */
     private String devicePosition;
+    /**
+     * 电梯经纬度
+     */
+    private String coordinate;
 
     /**
      * 单位设备编号

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

@@ -18,10 +18,10 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 /**
  * 定时任务
@@ -74,7 +74,7 @@ public class BusinessJob {
         long pageNum = 1;
         long pages;
         do {
-            IPage<InspectionTips> tips = pushUserService.pageMtCompanyByAnnualInspection(new Page<>(pageNum, 10), days);
+            IPage<InspectionTips> tips = pushUserService.pageMtCompanyByAnnualInspection(new Page<>(pageNum, 100), days);
             pages = tips.getPages();
             List<InspectionTips> records = tips.getRecords();
             if(records.isEmpty()){
@@ -98,66 +98,66 @@ public class BusinessJob {
             pageNum++;
         } while (pageNum <= pages);
     }
+
     /**
      * 年检到期提前15天提醒
      */
-//    @Scheduled(cron = "0/30 * * * * ?")
     @Scheduled(cron = "0 0 10 * * ?")
     public void inspection15days() {
         log.warn("Starting inspection 15days notice job...");
         sendAnnualInspection(15);
     }
 
-    @Scheduled(cron = "0 0 16 * * ?")
-    public void taskNotice() {
+    @Scheduled(cron = "0 10 16 * * ?")
+    public void taskTipsForRegion() {
         log.trace("Starting task report notice job...");
-        List<RepairTips> repairTips = pushUserService.listMtCompanyByEmergencyRepair();
+        List<RepairTips> repairTips = pushUserService.listMtCompanyByEmergencyRepairForRegion();
         if(repairTips.isEmpty()){
             return;
         }
-        //按维保公司分组
-        Map<Long, List<RepairTips>> companies = repairTips.stream().collect(Collectors.groupingBy(RepairTips::getMtCompanyId));
-        if(companies.isEmpty()){
+
+        Map<Long, TaskTips> taskTipsMap = new HashMap<>();
+        List<TaskTips> taskTips = pushUserService.listMaintainForEnterpriseAdmin();
+        for (TaskTips taskTip : taskTips) {
+            taskTipsMap.put(taskTip.getMtCompanyId(), taskTip);
+        }
+
+        //区域主管(项目所属)
+        for (RepairTips repairTip : repairTips) {
+            long mtCompanyId = repairTip.getMtCompanyId();
+            PushUserInfo director = pushUserService.listByUserId(mtCompanyId, repairTip.getDirectorId());
+            int maintain = 0;
+            TaskTips current = taskTipsMap.get(mtCompanyId);
+            if(Objects.nonNull(current)){
+                maintain = current.getMaintainTotal();
+            }
+            PushMessage.managerTaskForRegionChargerDaily(repairTip.getAreaName(), repairTip.getTotal(), repairTip.getFinish(), repairTip.getRepairing(), maintain).sendTokenOnPlatform(jmsMessagingTemplate, director);
+        }
+    }
+
+    @Scheduled(cron = "0 0 16 * * ?")
+    public void taskTipsForDirector() {
+        log.trace("Starting task report notice job...");
+        List<RepairTips> repairTips = pushUserService.listMtCompanyByEmergencyRepairForDirector();
+        if (repairTips.isEmpty()) {
             return;
         }
-        List<TaskTips> taskTips = pushUserService.listMaintainForEnterpriseAdmin();
-        Map<Long, List<TaskTips>> maintains = taskTips.stream().collect(Collectors.groupingBy(TaskTips::getMtCompanyId));
-        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)){
-                List<TaskTips> tipsList = maintains.get(repairTipsList.get(0).getMtCompanyId());
-                int maintain = 0;
-                if(IterUtil.isNotEmpty(tipsList)){
-                    maintain = tipsList.get(0).getMaintainTotal();
-                }
-                //按区域分组, 发给区域主管
-                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(tip.isRepairing()){
-                            doings += tip.getTotal();
-                        }else if(tip.isFinish()){
-                            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, maintain).sendTokenOnPlatform(jmsMessagingTemplate, director);
-                }
-                //总经理
-                List<PushUserInfo> pushUserInfos = pushUserService.listHighDirector(repairTipsList.get(0).getMtCompanyId());
-                PushMessage.managerTaskForLeaderDaily(companyTotal, companyFinish, companyDoings, maintain).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
+        Map<Long, TaskTips> taskTipsMap = new HashMap<>();
+        List<TaskTips> taskTips = pushUserService.listMaintainForEnterpriseAdmin();
+        for (TaskTips taskTip : taskTips) {
+            taskTipsMap.put(taskTip.getMtCompanyId(), taskTip);
+        }
+        //总经理
+        for (RepairTips repairTip : repairTips) {
+            long mtCompanyId = repairTip.getMtCompanyId();
+            List<PushUserInfo> pushUserInfos = pushUserService.listHighDirector(mtCompanyId);
+            int maintain = 0;
+            TaskTips current = taskTipsMap.get(mtCompanyId);
+            if(Objects.nonNull(current)){
+                maintain = current.getMaintainTotal();
             }
+            PushMessage.managerTaskForLeaderDaily(repairTip.getTotal(), repairTip.getFinish(), repairTip.getRepairing(), maintain).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
         }
     }
 
@@ -167,7 +167,7 @@ public class BusinessJob {
         long pageNum = 1;
         long pages;
         do {
-            IPage<TaskTips> tipsIPage = pushUserService.pageRepairAndMaintainForClerk(new Page<>(pageNum, 20));
+            IPage<TaskTips> tipsIPage = pushUserService.pageRepairAndMaintainForClerk(new Page<>(pageNum, 100));
             pages = tipsIPage.getPages();
             List<TaskTips> records = tipsIPage.getRecords();
             if (!records.isEmpty()) {

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

@@ -33,15 +33,15 @@ public class RepairTips {
      * 区域
      */
     private String  areaName;
-    /**
-     * 急修状态
-     */
-    private int status;
     /**
      * 急修单总数
      */
     private int total;
 
+    private int repairing;
+
+    private int finish;
+
     /**
      * 返回区域主管和文员的id列表
      */
@@ -62,12 +62,4 @@ public class RepairTips {
         }
         return members;
     }
-
-    public boolean isRepairing(){
-        return this.status == 1;
-    }
-
-    public boolean isFinish(){
-        return this.status == 2;
-    }
 }

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

@@ -35,7 +35,9 @@ public interface PushUserMapper extends BaseMapper<PushUserInfo> {
 
     IPage<InspectionTips> pageMtCompanyByAnnualInspection(IPage<InspectionTips> page, @Param("days") int days);
 
-    List<RepairTips> listMtCompanyByEmergencyRepair();
+    List<RepairTips> listMtCompanyByEmergencyRepairForRegion();
+
+    List<RepairTips> listMtCompanyByEmergencyRepairForDirector();
 
     IPage<TaskTips> pageRepairAndMaintainForClerk(IPage<TaskTips> page);
 

+ 6 - 2
lift-business-service/src/main/java/cn/com/ty/lift/business/push/service/PushUserService.java

@@ -77,8 +77,12 @@ public class PushUserService extends ServiceImpl<PushUserMapper, PushUserInfo> {
     /**
      * 查询有急修的维保公司
      */
-    public List<RepairTips> listMtCompanyByEmergencyRepair(){
-        return baseMapper.listMtCompanyByEmergencyRepair();
+    public List<RepairTips> listMtCompanyByEmergencyRepairForDirector(){
+        return baseMapper.listMtCompanyByEmergencyRepairForDirector();
+    }
+
+    public List<RepairTips> listMtCompanyByEmergencyRepairForRegion(){
+        return baseMapper.listMtCompanyByEmergencyRepairForRegion();
     }
 
     public IPage<TaskTips> pageRepairAndMaintainForClerk(IPage<TaskTips> page){

+ 20 - 18
lift-business-service/src/main/resources/mapper/emergency/EmergencyRepairMapper.xml

@@ -60,6 +60,7 @@
 		<result column="lift_category" property="liftCategory" jdbcType="INTEGER" />
         <result column="lift_type" property="liftType" jdbcType="INTEGER" />
 		<result column="device_position" property="devicePosition" jdbcType="VARCHAR" />
+        <result column="coordinate" property="coordinate" jdbcType="VARCHAR" />
 		<result column="create_name" property="createName" jdbcType="VARCHAR" />
 		<result column="worker_name" property="workerName" jdbcType="VARCHAR" />
         <result column="worker_mobile" property="workerMobile" jdbcType="VARCHAR" />
@@ -86,6 +87,7 @@
                 li.lift_type,
 				li.use_company_code,
 				li.device_position,
+                li.coordinate,
 				pr.project_name,
                 pr.project_code,
                 pr.address AS project_address,
@@ -133,28 +135,28 @@
     <select id="pageByCondition" resultMap="BaseResultMap" parameterType="cn.com.ty.lift.business.emergency.dto.RepairRequest" >
         SELECT
             er.*,
-			li.registration_code,
-			li.device_position,
+            li.registration_code,
+            li.device_position,
             li.category AS lift_category,
             li.lift_type,
-			li.use_company_code,
+            li.use_company_code,
             pr.project_name,
             pr.project_code,
             pr.address AS project_address,
             re.area_name,
-			ui.name AS worker_name,
+            ui.name AS worker_name,
             ui.mobile AS worker_mobile,
-			TimeStampDiff(SECOND ,er.stop_date,er.recovery_date) * 1000 AS repair_diff
+            TimeStampDiff(SECOND ,er.stop_date,er.recovery_date) * 1000 AS repair_diff
         FROM
             emergency_repair er
-		LEFT JOIN project pr ON er.project_id = pr.id AND pr.mt_company_id = er.mt_company_id
-		LEFT JOIN region re ON pr.region_id = re.id
-		LEFT JOIN lift li ON er.lift_id = li.id
-		LEFT JOIN user_info ui ON ui.user_id = er.worker_id1
+            LEFT JOIN project pr ON er.project_id = pr.id AND pr.mt_company_id = er.mt_company_id
+            LEFT JOIN region re ON pr.region_id = re.id
+            LEFT JOIN lift li ON er.lift_id = li.id
+            LEFT JOIN user_info ui ON ui.user_id = er.worker_id1
         <where>
-			<if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
-				AND er.mt_company_id = #{cond.mtCompanyId}
-			</if>
+            <if test="cond.mtCompanyId != null and cond.mtCompanyId > 0">
+                AND er.mt_company_id = #{cond.mtCompanyId}
+            </if>
             <if test="cond.projectId != null and cond.projectId > 0">
                 AND pr.id = #{cond.projectId}
             </if>
@@ -173,12 +175,12 @@
             <if test="cond.status != null">
                 AND er.status = #{cond.status}
             </if>
-			<if test="cond.source != null">
-				AND er.source = #{cond.source}
-			</if>
-			<if test="cond.info != null and cond.info != ''">
-				AND li.registration_code LIKE concat('%',#{cond.info},'%')
-			</if>
+            <if test="cond.source != null">
+                AND er.source = #{cond.source}
+            </if>
+            <if test="cond.info != null and cond.info != ''">
+                AND li.registration_code LIKE concat('%',#{cond.info},'%')
+            </if>
         </where>
     </select>
 

+ 74 - 21
lift-business-service/src/main/resources/mapper/push/PushUserMapper.xml

@@ -186,30 +186,83 @@
             AND li.annual_inspection_date >= CURDATE()
     </select>
 
-    <select id="listMtCompanyByEmergencyRepair" resultType="cn.com.ty.lift.business.push.entity.RepairTips">
+    <select id="listMtCompanyByEmergencyRepairForRegion" 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
+            t.mt_company_id,
+            t.area_name,
+            t.director_id,
+            t.clerk,
+            SUM(t.total) AS total,
+            SUM( CASE t.STATUS WHEN '1' THEN t.total ELSE 0 END ) AS repairing,
+            SUM( CASE t.STATUS WHEN '2' THEN t.total ELSE 0 END ) AS finish
         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 re.id > 0
-            AND TO_DAYS(er.create_date) = TO_DAYS(NOW())
+            (
+                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 re.id > 0
+                    AND TO_DAYS( er.create_date ) = TO_DAYS( NOW( ) )
+                GROUP BY
+                    mc.id,
+                    re.id,
+                    er.`status`
+                HAVING
+                    count( * ) > 0
+            ) t
+        GROUP BY
+            t.mt_company_id,t.director_id
+    </select>
+
+    <select id="listMtCompanyByEmergencyRepairForDirector" resultType="cn.com.ty.lift.business.push.entity.RepairTips">
+        SELECT
+            t.mt_company_id,
+            t.area_name,
+            t.director_id,
+            t.clerk,
+            SUM(t.total) AS total,
+            SUM( CASE t.STATUS WHEN '1' THEN t.total ELSE 0 END ) AS repairing,
+            SUM( CASE t.STATUS WHEN '2' THEN t.total ELSE 0 END ) AS finish
+        FROM
+            (
+                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 re.id > 0
+                    AND TO_DAYS( er.create_date ) = TO_DAYS( NOW( ) )
+                GROUP BY
+                    mc.id,
+                    re.id,
+                    er.`status`
+                HAVING
+                    count( * ) > 0
+            ) t
         GROUP BY
-            mc.id,
-            re.id,
-            er.`status`
-        HAVING
-            count(*) > 0;
+            t.mt_company_id
     </select>
 
     <select id="pageRepairAndMaintainForClerk" resultType="cn.com.ty.lift.business.push.entity.TaskTips">