Selaa lähdekoodia

[chg] 推送每日维保急修数量,急修单导出优化

wcz 5 vuotta sitten
vanhempi
commit
7417356c4a

+ 1 - 1
lift-business-service/src/main/java/cn/com/ty/lift/business/annualinspection/dto/InspectionRequest.java

@@ -109,7 +109,7 @@ public class InspectionRequest extends PageRequest {
 
     /**
      * 是否检查限速器(0 否;1 是;默认0)
-     */
+            */
     @NotNull(message = "请设置是否检查限速器")
     @Max(value = 1,message = "是否检查限速器有误")
     private Integer isCheckGoverner;

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

@@ -183,9 +183,9 @@ public class EmergencyRepairController {
         if (result) {
             //消息推送
             Long id = entity.getId();
-            Region region = pushUserService.findRegionByEmergencyRepair(id, mtCompanyId);
             List<Long> userIds = new ArrayList<>();
             userIds.add(entity.getWorkerId1());
+            Region region = pushUserService.findRegionByEmergencyRepair(id, mtCompanyId);
             if (Objects.nonNull(region)) {
                 userIds.add(region.getUserId());
             }
@@ -306,9 +306,9 @@ public class EmergencyRepairController {
             //消息推送
             Long id = entity.getId();
             Long mtCompanyId = entity.getMtCompanyId();
-            Region region = pushUserService.findRegionByEmergencyRepair(id, mtCompanyId);
             List<Long> userIds = new ArrayList<>();
             userIds.add(request.getWorkerId());
+            Region region = pushUserService.findRegionByEmergencyRepair(id, mtCompanyId);
             if (Objects.nonNull(region)) {
                 userIds.add(region.getUserId());
             }

+ 3 - 3
lift-business-service/src/main/java/cn/com/ty/lift/business/emergency/dto/CostRequest.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import javax.validation.constraints.Min;
-import java.time.LocalDateTime;
+import java.time.LocalDate;
 
 /**
  * <p>
@@ -56,12 +56,12 @@ public class CostRequest extends PageRequest {
     /**
      * 报修开始时间
      */
-    private LocalDateTime repairBegin;
+    private LocalDate repairBegin;
 
     /**
      * 报修结束时间
      */
-    private LocalDateTime repairEnd;
+    private LocalDate repairEnd;
 
     /**
      * 急修收费状态

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

@@ -4,6 +4,7 @@ import cn.com.ty.lift.business.maintenance.dao.entity.MaintenancePlan;
 import cn.com.ty.lift.business.maintenance.service.MaintenancePlanService;
 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.entity.TaskTips;
 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;
@@ -19,6 +20,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -118,10 +120,17 @@ public class BusinessJob {
         if(companies.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()) {
@@ -143,12 +152,33 @@ public class BusinessJob {
                     RepairTips repair = tips.get(0);
                     //区域主管(项目所属)
                     PushUserInfo director = pushUserService.listByUserId(repair.getMtCompanyId(), repair.getDirectorId());
-                    PushMessage.managerTaskForRegionChargerDaily(repair.getAreaName(), total, finish, doings, 0).sendTokenOnPlatform(jmsMessagingTemplate, director);
+                    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, 0).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
+                PushMessage.managerTaskForLeaderDaily(companyTotal, companyFinish, companyDoings, maintain).sendTokenOnPlatform(jmsMessagingTemplate, pushUserInfos);
             }
         }
     }
+
+    @Scheduled(cron = "0 0 8 * * ?")
+    public void pageRepairAndMaintainForClerk() {
+        log.info("Staring repair and maintain for clerk job...");
+        long pageNum = 1;
+        long pages;
+        do {
+            IPage<TaskTips> tipsIPage = pushUserService.pageRepairAndMaintainForClerk(new Page<>(pageNum, 20));
+            pages = tipsIPage.getPages();
+            List<TaskTips> records = tipsIPage.getRecords();
+            if (!records.isEmpty()) {
+                for (TaskTips record : records) {
+                    PushUserInfo pushUserInfo = pushUserService.listByUserId(record.getMtCompanyId(), record.getUserId());
+                    if(Objects.nonNull(pushUserInfo)){
+                        PushMessage.managerMaintainDaily(record.getMaintainTotal(), record.getRepairTotal());
+                    }
+                }
+            }
+            pageNum++;
+        } while (pageNum <= pages);
+    }
 }

+ 1 - 2
lift-business-service/src/main/java/cn/com/ty/lift/business/library/controller/LiftImportController.java

@@ -40,9 +40,8 @@ public class LiftImportController {
 
     private LiftService liftService;
 
-
     @PostMapping("import")
-    @Validation(fields = {"file","mtCompanyId"})
+    @Validation(fields = {"file","mtCompanyId", "projectId"})
     public RestResponse importData(@Val @RequestBody LiftImportRequest request) throws Exception{
         Long mtCompanyId = request.getMtCompanyId();
         MultipartFile file = request.getFile();

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

@@ -17,15 +17,15 @@ public class InspectionTips {
     /**
      * 维保公司id
      */
-    private Long   mtCompanyId;
+    private long   mtCompanyId;
     /**
      * 电梯主要负责人id
      */
-    private Long   workerId;
+    private long   workerId;
     /**
      * 区域主管id
      */
-    private Long   directorId;
+    private long   directorId;
     /**
      * 文员
      */

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

@@ -20,11 +20,11 @@ public class RepairTips {
     /**
      * 维保公司id
      */
-    private Long    mtCompanyId;
+    private long    mtCompanyId;
     /**
      * 区域主管id
      */
-    private Long    directorId;
+    private long    directorId;
     /**
      * 文员
      */

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

@@ -0,0 +1,20 @@
+package cn.com.ty.lift.business.push.entity;
+
+import lombok.Data;
+
+/**
+ * TODO
+ *
+ * @author wcz
+ * @since 2020/4/29
+ */
+@Data
+public class TaskTips {
+    private long mtCompanyId;
+
+    private long userId;
+
+    private int maintainTotal;
+
+    private int repairTotal;
+}

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

@@ -3,6 +3,7 @@ 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.business.push.entity.TaskTips;
 import cn.com.ty.lift.common.model.PushUserInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -35,4 +36,8 @@ public interface PushUserMapper extends BaseMapper<PushUserInfo> {
     IPage<InspectionTips> pageMtCompanyByAnnualInspection(IPage<InspectionTips> page, @Param("days") int days);
 
     List<RepairTips> listMtCompanyByEmergencyRepair();
+
+    IPage<TaskTips> pageRepairAndMaintainForClerk(IPage<TaskTips> page);
+
+    List<TaskTips> listMaintainForEnterpriseAdmin();
 }

+ 9 - 0
lift-business-service/src/main/java/cn/com/ty/lift/business/push/service/PushUserService.java

@@ -3,6 +3,7 @@ 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.entity.TaskTips;
 import cn.com.ty.lift.business.push.mapper.PushUserMapper;
 import cn.com.ty.lift.common.constants.CommonEnum;
 import cn.com.ty.lift.common.model.PushUserInfo;
@@ -79,4 +80,12 @@ public class PushUserService extends ServiceImpl<PushUserMapper, PushUserInfo> {
     public List<RepairTips> listMtCompanyByEmergencyRepair(){
         return baseMapper.listMtCompanyByEmergencyRepair();
     }
+
+    public IPage<TaskTips> pageRepairAndMaintainForClerk(IPage<TaskTips> page){
+        return baseMapper.pageRepairAndMaintainForClerk(page);
+    }
+
+    public List<TaskTips> listMaintainForEnterpriseAdmin(){
+        return baseMapper.listMaintainForEnterpriseAdmin();
+    }
 }

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

@@ -212,4 +212,36 @@
             count(*) > 0;
     </select>
 
+    <select id="pageRepairAndMaintainForClerk" resultType="cn.com.ty.lift.business.push.entity.TaskTips">
+        SELECT
+            mp.mt_company_id,
+            pu.user_id,
+            count(*) AS maintain_total,
+            (SELECT count(*) FROM emergency_repair WHERE STATUS &lt; 2 AND mt_company_id = mp.mt_company_id ) AS repair_total
+        FROM
+            maintenance_plan mp
+        LEFT JOIN project_user pu ON mp.mt_company_id = pu.mt_company_id
+            AND mp.project_id = pu.project_id
+            AND pu.user_role = 'CLERK'
+        WHERE
+          mp.STATUS = 0
+          AND mp.plan_date = curdate()
+        GROUP BY
+            mp.mt_company_id,
+            pu.user_id
+    </select>
+
+    <select id="listMaintainForEnterpriseAdmin" resultType="cn.com.ty.lift.business.push.entity.TaskTips">
+        SELECT
+            p.mt_company_id,
+            count(*) AS maintain_total
+        FROM
+            maintenance_plan mp
+            LEFT JOIN project p ON mp.project_id = p.id
+        WHERE
+            mp.plan_date = curdate()
+            AND mp.`status` = 0
+        GROUP BY
+            p.mt_company_id
+    </select>
 </mapper>

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

@@ -415,9 +415,9 @@ public class PushMessage implements Serializable {
      * 早上8点
      * 即时提醒:今天计划有X台电梯需保养,X台电梯正在维修中。
      */
-    public static PushMessage managerMaintainDaily(int needs, int doings) {
+    public static PushMessage managerMaintainDaily(int maintain, int repair) {
         String message = "即时提醒:今天计划有%s台电梯需保养,%s台电梯正在维修中。";
-        String content = String.format(message, needs, doings);
+        String content = String.format(message, maintain, repair);
         return manager(content);
     }
 

+ 7 - 7
lift-common/src/main/java/cn.com.ty.lift.common/verify/Validator.java

@@ -1399,14 +1399,14 @@ public class Validator {
                 if (isEmpty(validateAnnotations)) continue;
                 //get value.
                 Object value = obtainFieldValue(object, validateField);
-                for (Annotation validateAnnotation : validateAnnotations) {
+                for (Annotation annotation : validateAnnotations) {
                     //get method
-                    Method method = lookupMethod(this.getClass(), validateMethodName, validateAnnotation.annotationType());
+                    Method method = lookupMethod(this.getClass(), validateMethodName, annotation.annotationType());
                     // result.
-                    boolean invoke = invokeMethod(this, method, value, validateAnnotation);
+                    boolean invoke = invokeMethod(this, method, value, annotation);
                     if (invoke) continue;
                     if (logWrite) {
-                        write(validateField, value, method, validateAnnotation);
+                        write(validateField, value, method, annotation);
                     }
                     if (1 == code) {
                         throw newValidateException(message);
@@ -1571,12 +1571,12 @@ public class Validator {
      * @param validateField the field to valid.
      * @param value      the value of the field.
      * @param method     the method to action
-     * @param validateAnnotation the validation annotation of the field.
+     * @param annotation the validation annotation of the field.
      */
-    private static void write(Field validateField, Object value, Method method, Annotation validateAnnotation) {
+    private static void write(Field validateField, Object value, Method method, Annotation annotation) {
         log.warn("###| FIELD       : {}", validateField);
         log.warn("###| FIELD_VALUE : {}", value);
-        log.warn("###| METHOD      : (false) {}(Object,{})", method.getName(), validateAnnotation.annotationType().getName());
+        log.warn("###| METHOD      : (false) {}(Object,{})", method.getName(), annotation.annotationType().getName());
     }
     /**
      * create a {@link IllegalArgumentException} with the message.

+ 2 - 4
lift-enterprise-service/src/main/java/cn/com/ty/lift/enterprise/oa/service/AttendanceService.java

@@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.util.List;
@@ -61,9 +60,8 @@ public class AttendanceService extends ServiceImpl<AttendanceMapper,Attendance>
         lambdaQueryWrapper.eq(Attendance::getUserId, userId);
         lambdaQueryWrapper.eq(Attendance::getType, type);
         //查询当天的打卡记录
-        LocalDateTime begin = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
-        LocalDateTime end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
-        lambdaQueryWrapper.between(Attendance::getCreateDate, begin, end);
+        LocalDateTime today = LocalDateTime.now();
+        lambdaQueryWrapper.between(Attendance::getCreateDate, today.with(LocalTime.MIN), today.with(LocalTime.MAX));
         lambdaQueryWrapper.last("LIMIT 1");
         return getOne(lambdaQueryWrapper);
     }

+ 66 - 6
repair/repair.doc.ftl

@@ -2227,7 +2227,7 @@
 											<w:snapToGrid w:val="off"/>
 											<w:ind w:first-line-chars="0" w:first-line="0"/>
 											<w:rPr>
-												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
 												<wx:font wx:val="微软雅黑"/>
 												<w:color w:val="414141"/>
 												<w:sz w:val="20"/>
@@ -2242,17 +2242,37 @@
 												<w:sz w:val="20"/>
 												<w:sz-cs w:val="20"/>
 											</w:rPr>
-											<w:t>更换配件:</w:t>
+											<w:t>应收总金额</w:t>
+										</w:r>
+										<w:r wsp:rsidR="00ED4754">
+											<w:rPr>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<wx:font wx:val="微软雅黑"/>
+												<w:color w:val="414141"/>
+												<w:sz w:val="20"/>
+												<w:sz-cs w:val="20"/>
+											</w:rPr>
+											<w:t>:</w:t>
+										</w:r>
+										<w:r>
+											<w:rPr>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<wx:font wx:val="微软雅黑"/>
+												<w:color w:val="414141"/>
+												<w:sz w:val="20"/>
+												<w:sz-cs w:val="20"/>
+											</w:rPr>
+											<w:t>¥${repair.costTotal?string("0.##")}</w:t>
 										</w:r>
 									</w:p>
 									<w:p wsp:rsidR="00ED4754" wsp:rsidRDefault="00ED4754" wsp:rsidP="00ED4754">
-										<w:pPr>
+<w:pPr>
 											<w:pStyle w:val="2"/>
 											<w:adjustRightInd w:val="off"/>
 											<w:snapToGrid w:val="off"/>
 											<w:ind w:first-line-chars="0" w:first-line="0"/>
 											<w:rPr>
-												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑"/>
 												<wx:font wx:val="微软雅黑"/>
 												<w:color w:val="414141"/>
 												<w:sz w:val="20"/>
@@ -2267,7 +2287,27 @@
 												<w:sz w:val="20"/>
 												<w:sz-cs w:val="20"/>
 											</w:rPr>
-											<w:t>配 件 费:</w:t>
+											<w:t>已收总金额</w:t>
+										</w:r>
+										<w:r wsp:rsidR="00ED4754">
+											<w:rPr>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<wx:font wx:val="微软雅黑"/>
+												<w:color w:val="414141"/>
+												<w:sz w:val="20"/>
+												<w:sz-cs w:val="20"/>
+											</w:rPr>
+											<w:t>:</w:t>
+										</w:r>
+										<w:r>
+											<w:rPr>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<wx:font wx:val="微软雅黑"/>
+												<w:color w:val="414141"/>
+												<w:sz w:val="20"/>
+												<w:sz-cs w:val="20"/>
+											</w:rPr>
+											<w:t>¥${repair.payTotal?string("0.##")}</w:t>
 										</w:r>
 									</w:p>
 									<w:p wsp:rsidR="00ED4754" wsp:rsidRPr="006D03BA" wsp:rsidRDefault="00ED4754" wsp:rsidP="00ED4754">
@@ -2292,7 +2332,27 @@
 												<w:sz w:val="20"/>
 												<w:sz-cs w:val="20"/>
 											</w:rPr>
-											<w:t>工 时 费:</w:t>
+											<w:t>开票总金额</w:t>
+										</w:r>
+										<w:r wsp:rsidR="00ED4754">
+											<w:rPr>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<wx:font wx:val="微软雅黑"/>
+												<w:color w:val="414141"/>
+												<w:sz w:val="20"/>
+												<w:sz-cs w:val="20"/>
+											</w:rPr>
+											<w:t>:</w:t>
+										</w:r>
+										<w:r>
+											<w:rPr>
+												<w:rFonts w:ascii="微软雅黑" w:fareast="微软雅黑" w:h-ansi="微软雅黑" w:hint="fareast"/>
+												<wx:font wx:val="微软雅黑"/>
+												<w:color w:val="414141"/>
+												<w:sz w:val="20"/>
+												<w:sz-cs w:val="20"/>
+											</w:rPr>
+											<w:t>¥${repair.invoiceTotal?string("0.##")}</w:t>
 										</w:r>
 									</w:p>
 								</w:txbxContent>