Browse Source

值班人员发送报修消息通知

guarantee-lsq 2 years ago
parent
commit
9fe495e224

+ 1 - 0
platform-dao/src/main/java/com/platform/dao/enums/SysConfigEnum.java

@@ -51,6 +51,7 @@ public enum SysConfigEnum {
     PRODUCE_VERIFY_USERS("生产审核人员配置"),
     REPAIR_RECEIVE_SUCCESS_WECHAT_TEMPLATE_ID("报修接收后通知报修人"),
     REPAIR_NOTICE_SUCCESS_WECHAT_TEMPLATE_ID("派工后通知维修人"),
+    REPAIR_HOLIDAY("节假日配置"),
     REPAIR_TWENTY_FOUR_USER("24小时值班人"),
     SPARE_UPDATE_ALERT_DAY("备件更换预警设置天数");
     private final String typeName;

+ 42 - 3
platform-rest/src/main/java/com/platform/rest/controller/repair/RepairApplicationFormController.java

@@ -1,15 +1,17 @@
 package com.platform.rest.controller.repair;
 
+import com.alibaba.fastjson.JSONArray;
 import com.platform.common.constant.CommonConstants;
+import com.platform.common.exception.DeniedException;
 import com.platform.common.model.UserInfo;
-import com.platform.common.util.BeanConverterUtil;
-import com.platform.common.util.R;
-import com.platform.common.util.SecurityUtils;
+import com.platform.common.util.*;
 import com.platform.common.validation.group.AddGroup;
 import com.platform.common.validation.group.UpdateGroup;
 import com.platform.dao.bean.MyVOPage;
 import com.platform.dao.dto.repair.RepairApplicationFormDTO;
+import com.platform.dao.entity.upms.SysConfig;
 import com.platform.dao.enums.RepairApplicationFormTypeEnum;
+import com.platform.dao.enums.SysConfigEnum;
 import com.platform.dao.enums.SysRoleCodeEnum;
 import com.platform.dao.util.ExcelUtil;
 import com.platform.dao.vo.NoticeNumberVO;
@@ -19,6 +21,7 @@ import com.platform.rest.log.annotation.SysLog;
 import com.platform.service.repair.RepairApplicationFormService;
 import com.platform.service.repair.strategy.RepairBaseStrategy;
 import com.platform.service.repair.strategy.RepairStrategyFactory;
+import com.platform.service.upms.SysConfigService;
 import lombok.AllArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
@@ -41,6 +44,8 @@ public class RepairApplicationFormController {
 
     private final RepairApplicationFormService repairApplicationFormService;
 
+    private final SysConfigService sysConfigService;
+
     /**
      * 通过id查询单条记录
      *
@@ -422,5 +427,39 @@ public class RepairApplicationFormController {
         return new R<>();
     }
 
+    @SysLog("加入假节日")
+    @GetMapping("/join/{dateStr}")
+    public R joinHoliday(@PathVariable("dateStr") String dateStr) {
+        SysConfig config = sysConfigService.getByCode(SysConfigEnum.REPAIR_HOLIDAY.name());
+        if(config == null){
+            throw new DeniedException("假节日参数尚未配置,请联系技术人员进行配置");
+        }
+        String content = config.getContent();
+        if(StringUtils.isBlank(content)){
+            content = "[]";
+        }
+        List<String> dateList = JSONArray.parseArray(content,String.class);
+        dateList.add(dateStr);
+        SysConfig updConfig = new SysConfig();
+        updConfig.setId(config.getId());
+        updConfig.setContent(JsonUtils.objectToJson(dateList));
+        sysConfigService.modModelByPrimaryKey(updConfig);
+        return new R<>();
+    }
 
+    @SysLog("取消假节日")
+    @GetMapping("/cancel/{dateStr}")
+    public R cancelHoliday(@PathVariable("dateStr") String dateStr) {
+        SysConfig config = sysConfigService.getByCode(SysConfigEnum.REPAIR_HOLIDAY.name());
+        if(config == null){
+            throw new DeniedException("假节日参数尚未配置,请联系技术人员进行配置");
+        }
+        List<String> dateList = JSONArray.parseArray(config.getContent(),String.class);
+        dateList.remove(dateStr);
+        SysConfig updConfig = new SysConfig();
+        updConfig.setId(config.getId());
+        updConfig.setContent(JsonUtils.objectToJson(dateList));
+        sysConfigService.modModelByPrimaryKey(updConfig);
+        return new R<>();
+    }
 }

+ 46 - 12
platform-service/src/main/java/com/platform/service/repair/strategy/impl/LongYanRepairStrategy.java

@@ -11,6 +11,7 @@ import com.platform.dao.dto.upms.SysUserDTO;
 import com.platform.dao.entity.customize.CustomFieldTemplateData;
 import com.platform.dao.entity.repair.RepairApplicationForm;
 import com.platform.dao.entity.sb.SbInfo;
+import com.platform.dao.entity.upms.SysConfig;
 import com.platform.dao.entity.upms.SysUser;
 import com.platform.dao.enums.*;
 import com.platform.dao.mapper.customize.CustomFieldTemplateDataMapper;
@@ -21,13 +22,16 @@ import com.platform.dao.util.MessageTemplateUtil;
 import com.platform.dao.vo.SysUserVO;
 import com.platform.service.part.PartInfoService;
 import com.platform.service.repair.strategy.AbstractRepairBaseStrategy;
+import com.platform.service.upms.SysConfigService;
 import com.platform.service.util.SendMessageUtils;
 import org.springframework.stereotype.Component;
 import tk.mybatis.mapper.weekend.Weekend;
 import tk.mybatis.mapper.weekend.WeekendCriteria;
 
 import javax.annotation.Resource;
+import java.time.DayOfWeek;
 import java.time.LocalDateTime;
+import java.time.temporal.TemporalField;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +56,8 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
     private SbPositionMapper sbPositionMapper;
     @Resource
     private SysUserDeptMapper sysUserDeptMapper;
+    @Resource
+    private SysConfigService sysConfigService;
 
 
     /**
@@ -91,20 +97,46 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
         // 给相关的工程师推送信息
         sendMessageToRepairManger(form,sysUserVOList,CommonConstants.CALL_REPAIR_NOTICE);
         // 给该部门班组长推送信息
-        List<SysUserVO> banzuzhangs = getRepairMangers(repairDeptId,null,SysRoleCodeEnum.Maintenance_Leader.name());
+        /*List<SysUserVO> banzuzhangs = getRepairMangers(repairDeptId,null,SysRoleCodeEnum.Maintenance_Leader.name());
         if(banzuzhangs != null && banzuzhangs.size() > 0){
             sendMessageToRepairManger(form,banzuzhangs,CommonConstants.CALL_REPAIR_NOTICE);
-        }
-        // 给二十四小时人员发送信息
-        String everyWhereUsers = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_TWENTY_FOUR_USER.name());
-        if(StringUtils.isNotBlank(everyWhereUsers)){
-            sendMessageToRepairManger(form,getUserVOs(everyWhereUsers.trim()),CommonConstants.CALL_REPAIR_NOTICE);
+        }*/
+        // 给值班人员发送消息
+        if(isSendMessage()){
+            String everyWhereUsers = ConfigCache.getLabelByValueAllowNull(SysConfigEnum.REPAIR_TWENTY_FOUR_USER.name());
+            if(StringUtils.isNotBlank(everyWhereUsers)){
+                sendMessageToRepairManger(form,getUserVOs(everyWhereUsers.trim()),CommonConstants.CALL_REPAIR_NOTICE);
+            }
         }
         // 生产票证数据
         generateTicketData(form);
         return form;
     }
 
+    private boolean isSendMessage(){
+        LocalDateTime now = LocalDateTime.now();
+        // 今天是否是节假日
+        SysConfig config = sysConfigService.getByCode(SysConfigEnum.REPAIR_HOLIDAY.name());
+        String content = "[]";
+        if(config != null){
+            content = config.getContent();
+        }
+        if(content.contains(DateUtils.dateToString(now,DateUtils.PATTERN_YMD))){
+            return Boolean.TRUE;
+        }
+        int dayOfWeek = now.getDayOfWeek().getValue();
+        if(dayOfWeek == 6 || dayOfWeek == 7){
+            return Boolean.TRUE;
+        }
+        LocalDateTime startTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.getDayOfMonth(),18,00,00);
+        LocalDateTime second = now.plusDays(1);
+        LocalDateTime endTime = LocalDateTime.of(second.getYear(),second.getMonthValue(),second.getDayOfMonth(),8,00,00);
+        if(now.isAfter(startTime) && now.isBefore(endTime)){
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
+
     /**
      * 生成维修票证数据
      * @param form
@@ -174,12 +206,14 @@ public class LongYanRepairStrategy extends AbstractRepairBaseStrategy {
     }
 
     public static void main(String[] args) {
-        Map<String,String> maps = new HashMap<>();
-        maps.put("13410011001","12121,2323,2323");
-        maps.put("13410011002","12121,2323,2323");
-        System.out.println(JsonUtils.objectToJson(maps));
-        Map<String,String> covertMap = JsonUtils.jsonToMap("{\"13410011002\":\"12121,2323,2323\",\"13410011001\":\"12121,2323,2323\"}");
-        System.out.println(covertMap.get("13410011001"));
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime startTime = LocalDateTime.of(now.getYear(),now.getMonthValue(),now.getDayOfMonth(),18,00,00);
+        LocalDateTime second = now.plusDays(1);
+        LocalDateTime endTime = LocalDateTime.of(second.getYear(),second.getMonthValue(),second.getDayOfMonth(),8,00,00);
+        System.out.println(startTime);
+        System.out.println(endTime);
+        System.out.println(now.isAfter(startTime));
+        System.out.println(now.isBefore(endTime));
     }
 
     /**