用电监控消息提醒

liweidong
maxiangong 2 days ago
parent 9e25ed294f
commit 7f36905454
  1. 27
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/energy/BsEnergyCoreUseWarningProcessor.java
  2. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/energy/feign/IBsEnergyCoreUseClient.java
  3. 476
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClient.java
  4. 5
      blade-service-api/blade-system-api/src/main/java/org/springblade/system/feign/ISysClientFallback.java
  5. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/feign/BsEnergyCoreUseClient.java
  6. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEnergyCoreUseService.java
  7. 89
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEnergyCoreUseServiceImpl.java
  8. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemSettlementApprovalMapper.xml
  9. 7
      blade-service/blade-system/src/main/java/org/springblade/system/feign/SysClient.java

@ -0,0 +1,27 @@
package org.springblade.job.processor.energy;
import jakarta.annotation.Resource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.energy.feign.IBsEnergyCoreUseClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
@Component
@Data
@Slf4j
public class BsEnergyCoreUseWarningProcessor implements BasicProcessor {
@Resource
private IBsEnergyCoreUseClient client;
@Override
public ProcessResult process(TaskContext context) throws Exception {
log.info("开始用电监控预警...");
client.warning();
log.info("结束用电监控预警...");
return new ProcessResult(true);
}
}

@ -13,10 +13,15 @@ public interface IBsEnergyCoreUseClient {
String API_PREFIX = "/feign/client/bs-energy-core-use"; String API_PREFIX = "/feign/client/bs-energy-core-use";
String UPDATE_USED = API_PREFIX + "/update-used"; String UPDATE_USED = API_PREFIX + "/update-used";
String SAVE_HISTORY_REC = API_PREFIX + "/save-history-rec"; String SAVE_HISTORY_REC = API_PREFIX + "/save-history-rec";
String WARNING = API_PREFIX + "/warning";
@GetMapping(UPDATE_USED) @GetMapping(UPDATE_USED)
void updateUsed(@RequestParam String type); void updateUsed(@RequestParam String type);
@GetMapping(SAVE_HISTORY_REC) @GetMapping(SAVE_HISTORY_REC)
void saveHistoryRec(); void saveHistoryRec();
@GetMapping(WARNING)
void warning();
} }

@ -40,266 +40,276 @@ import java.util.List;
* @author Chill * @author Chill
*/ */
@FeignClient( @FeignClient(
value = AppConstant.APPLICATION_SYSTEM_NAME, value = AppConstant.APPLICATION_SYSTEM_NAME,
fallback = ISysClientFallback.class fallback = ISysClientFallback.class
) )
public interface ISysClient { public interface ISysClient {
String API_PREFIX = "/feign/client/system"; String API_PREFIX = "/feign/client/system";
String MENU = API_PREFIX + "/menu"; String MENU = API_PREFIX + "/menu";
String DEPT = API_PREFIX + "/dept"; String DEPT = API_PREFIX + "/dept";
String DEPT_CODE = API_PREFIX + "/dept-code"; String DEPT_CODE = API_PREFIX + "/dept-code";
String DEPT_IDS = API_PREFIX + "/dept-ids"; String DEPT_IDS = API_PREFIX + "/dept-ids";
String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy"; String DEPT_IDS_FUZZY = API_PREFIX + "/dept-ids-fuzzy";
String DEPT_NAME = API_PREFIX + "/dept-name"; String DEPT_NAME = API_PREFIX + "/dept-name";
String DEPT_NAMES = API_PREFIX + "/dept-names"; String DEPT_NAMES = API_PREFIX + "/dept-names";
String DEPT_CHILD = API_PREFIX + "/dept-child"; String DEPT_CHILD = API_PREFIX + "/dept-child";
String POST = API_PREFIX + "/post"; String POST = API_PREFIX + "/post";
String POST_IDS = API_PREFIX + "/post-ids"; String POST_IDS = API_PREFIX + "/post-ids";
String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy"; String POST_IDS_FUZZY = API_PREFIX + "/post-ids-fuzzy";
String POST_NAME = API_PREFIX + "/post-name"; String POST_NAME = API_PREFIX + "/post-name";
String POST_NAMES = API_PREFIX + "/post-names"; String POST_NAMES = API_PREFIX + "/post-names";
String ROLE = API_PREFIX + "/role"; String ROLE = API_PREFIX + "/role";
String ROLE_IDS = API_PREFIX + "/role-ids"; String ROLE_IDS = API_PREFIX + "/role-ids";
String ROLE_NAME = API_PREFIX + "/role-name"; String ROLE_NAME = API_PREFIX + "/role-name";
String ROLE_NAMES = API_PREFIX + "/role-names"; String ROLE_NAMES = API_PREFIX + "/role-names";
String ROLE_ALIAS = API_PREFIX + "/role-alias"; String ROLE_ALIAS = API_PREFIX + "/role-alias";
String ROLE_ALIASES = API_PREFIX + "/role-aliases"; String ROLE_ALIASES = API_PREFIX + "/role-aliases";
String TENANT = API_PREFIX + "/tenant"; String TENANT = API_PREFIX + "/tenant";
String TENANT_ID = API_PREFIX + "/tenant-id"; String TENANT_ID = API_PREFIX + "/tenant-id";
String TENANT_PACKAGE = API_PREFIX + "/tenant-package"; String TENANT_PACKAGE = API_PREFIX + "/tenant-package";
String PARAM = API_PREFIX + "/param"; String PARAM = API_PREFIX + "/param";
String PARAM_VALUE = API_PREFIX + "/param-value"; String PARAM_VALUE = API_PREFIX + "/param-value";
String REGION = API_PREFIX + "/region"; String REGION = API_PREFIX + "/region";
String LIST_ALL_USER_BY_ROLE_ALIAS = API_PREFIX +"/list-all-user-by-role-alias";
/** /**
* 获取菜单 * 获取菜单
* *
* @param id 主键 * @param id 主键
* @return Menu * @return Menu
*/ */
@GetMapping(MENU) @GetMapping(MENU)
R<Menu> getMenu(@RequestParam("id") Long id); R<Menu> getMenu(@RequestParam("id") Long id);
/** /**
* 获取部门 * 获取部门
* *
* @param id 主键 * @param id 主键
* @return Dept * @return Dept
*/ */
@GetMapping(DEPT) @GetMapping(DEPT)
R<Dept> getDept(@RequestParam("id") Long id); R<Dept> getDept(@RequestParam("id") Long id);
/** /**
* 获取部门 * 获取部门
* *
* @param deptCode 主键 * @param deptCode 主键
* @return Dept * @return Dept
*/ */
@GetMapping(DEPT_CODE) @GetMapping(DEPT_CODE)
R<Dept> getDeptByCode(@RequestParam("deptCode") String deptCode); R<Dept> getDeptByCode(@RequestParam("deptCode") String deptCode);
/** /**
* 获取部门id * 获取部门id
* *
* @param tenantId 租户id * @param tenantId 租户id
* @param deptNames 部门名 * @param deptNames 部门名
* @return 部门id * @return 部门id
*/ */
@GetMapping(DEPT_IDS) @GetMapping(DEPT_IDS)
R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames); R<String> getDeptIds(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
/** /**
* 获取部门id * 获取部门id
* *
* @param tenantId 租户id * @param tenantId 租户id
* @param deptNames 部门名 * @param deptNames 部门名
* @return 部门id * @return 部门id
*/ */
@GetMapping(DEPT_IDS_FUZZY) @GetMapping(DEPT_IDS_FUZZY)
R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames); R<String> getDeptIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("deptNames") String deptNames);
/** /**
* 获取部门名 * 获取部门名
* *
* @param id 主键 * @param id 主键
* @return 部门名 * @return 部门名
*/ */
@GetMapping(DEPT_NAME) @GetMapping(DEPT_NAME)
R<String> getDeptName(@RequestParam("id") Long id); R<String> getDeptName(@RequestParam("id") Long id);
/** /**
* 获取部门名 * 获取部门名
* *
* @param deptIds 主键 * @param deptIds 主键
* @return * @return
*/ */
@GetMapping(DEPT_NAMES) @GetMapping(DEPT_NAMES)
R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds); R<List<String>> getDeptNames(@RequestParam("deptIds") String deptIds);
/** /**
* 获取子部门ID * 获取子部门ID
* *
* @param deptId * @param deptId
* @return * @return
*/ */
@GetMapping(DEPT_CHILD) @GetMapping(DEPT_CHILD)
R<List<Dept>> getDeptChild(@RequestParam("deptId") Long deptId); R<List<Dept>> getDeptChild(@RequestParam("deptId") Long deptId);
/** /**
* 获取岗位 * 获取岗位
* *
* @param id 主键 * @param id 主键
* @return Post * @return Post
*/ */
@GetMapping(POST) @GetMapping(POST)
R<Post> getPost(@RequestParam("id") Long id); R<Post> getPost(@RequestParam("id") Long id);
/** /**
* 获取岗位id * 获取岗位id
* *
* @param tenantId 租户id * @param tenantId 租户id
* @param postNames 岗位名 * @param postNames 岗位名
* @return 岗位id * @return 岗位id
*/ */
@GetMapping(POST_IDS) @GetMapping(POST_IDS)
R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames); R<String> getPostIds(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
/** /**
* 获取岗位id * 获取岗位id
* *
* @param tenantId 租户id * @param tenantId 租户id
* @param postNames 岗位名 * @param postNames 岗位名
* @return 岗位id * @return 岗位id
*/ */
@GetMapping(POST_IDS_FUZZY) @GetMapping(POST_IDS_FUZZY)
R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames); R<String> getPostIdsByFuzzy(@RequestParam("tenantId") String tenantId, @RequestParam("postNames") String postNames);
/** /**
* 获取岗位名 * 获取岗位名
* *
* @param id 主键 * @param id 主键
* @return 岗位名 * @return 岗位名
*/ */
@GetMapping(POST_NAME) @GetMapping(POST_NAME)
R<String> getPostName(@RequestParam("id") Long id); R<String> getPostName(@RequestParam("id") Long id);
/** /**
* 获取岗位名 * 获取岗位名
* *
* @param postIds 主键 * @param postIds 主键
* @return * @return
*/ */
@GetMapping(POST_NAMES) @GetMapping(POST_NAMES)
R<List<String>> getPostNames(@RequestParam("postIds") String postIds); R<List<String>> getPostNames(@RequestParam("postIds") String postIds);
/** /**
* 获取角色 * 获取角色
* *
* @param id 主键 * @param id 主键
* @return Role * @return Role
*/ */
@GetMapping(ROLE) @GetMapping(ROLE)
R<Role> getRole(@RequestParam("id") Long id); R<Role> getRole(@RequestParam("id") Long id);
/** /**
* 获取角色id * 获取角色id
* *
* @param tenantId 租户id * @param tenantId 租户id
* @param roleNames 角色名 * @param roleNames 角色名
* @return 角色id * @return 角色id
*/ */
@GetMapping(ROLE_IDS) @GetMapping(ROLE_IDS)
R<String> getRoleIds(@RequestParam("tenantId") String tenantId, @RequestParam("roleNames") String roleNames); R<String> getRoleIds(@RequestParam("tenantId") String tenantId, @RequestParam("roleNames") String roleNames);
/** /**
* 获取角色名 * 获取角色名
* *
* @param id 主键 * @param id 主键
* @return 角色名 * @return 角色名
*/ */
@GetMapping(ROLE_NAME) @GetMapping(ROLE_NAME)
R<String> getRoleName(@RequestParam("id") Long id); R<String> getRoleName(@RequestParam("id") Long id);
/** /**
* 获取角色别名 * 获取角色别名
* *
* @param id 主键 * @param id 主键
* @return 角色别名 * @return 角色别名
*/ */
@GetMapping(ROLE_ALIAS) @GetMapping(ROLE_ALIAS)
R<String> getRoleAlias(@RequestParam("id") Long id); R<String> getRoleAlias(@RequestParam("id") Long id);
/** /**
* 获取角色名 * 获取角色名
* *
* @param roleIds 主键 * @param roleIds 主键
* @return * @return
*/ */
@GetMapping(ROLE_NAMES) @GetMapping(ROLE_NAMES)
R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds); R<List<String>> getRoleNames(@RequestParam("roleIds") String roleIds);
/** /**
* 获取角色别名 * 获取角色别名
* *
* @param roleIds 主键 * @param roleIds 主键
* @return 角色别名 * @return 角色别名
*/ */
@GetMapping(ROLE_ALIASES) @GetMapping(ROLE_ALIASES)
R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds); R<List<String>> getRoleAliases(@RequestParam("roleIds") String roleIds);
/** /**
* 获取租户 * 获取租户
* *
* @param id 主键 * @param id 主键
* @return Tenant * @return Tenant
*/ */
@GetMapping(TENANT) @GetMapping(TENANT)
R<Tenant> getTenant(@RequestParam("id") Long id); R<Tenant> getTenant(@RequestParam("id") Long id);
/** /**
* 获取租户 * 获取租户
* *
* @param tenantId 租户id * @param tenantId 租户id
* @return Tenant * @return Tenant
*/ */
@GetMapping(TENANT_ID) @GetMapping(TENANT_ID)
R<Tenant> getTenant(@RequestParam("tenantId") String tenantId); R<Tenant> getTenant(@RequestParam("tenantId") String tenantId);
/** /**
* 获取租户产品包 * 获取租户产品包
* *
* @param tenantId 租户id * @param tenantId 租户id
* @return Tenant * @return Tenant
*/ */
@GetMapping(TENANT_PACKAGE) @GetMapping(TENANT_PACKAGE)
R<TenantPackage> getTenantPackage(@RequestParam("tenantId") String tenantId); R<TenantPackage> getTenantPackage(@RequestParam("tenantId") String tenantId);
/** /**
* 获取参数 * 获取参数
* *
* @param id 主键 * @param id 主键
* @return Param * @return Param
*/ */
@GetMapping(PARAM) @GetMapping(PARAM)
R<Param> getParam(@RequestParam("id") Long id); R<Param> getParam(@RequestParam("id") Long id);
/** /**
* 获取参数配置 * 获取参数配置
* *
* @param paramKey 参数key * @param paramKey 参数key
* @return String * @return String
*/ */
@GetMapping(PARAM_VALUE) @GetMapping(PARAM_VALUE)
R<String> getParamValue(@RequestParam("paramKey") String paramKey); R<String> getParamValue(@RequestParam("paramKey") String paramKey);
/** /**
* 获取行政区划 * 获取行政区划
* *
* @param code 主键 * @param code 主键
* @return Region * @return Region
*/ */
@GetMapping(REGION) @GetMapping(REGION)
R<Region> getRegion(@RequestParam("code") String code); R<Region> getRegion(@RequestParam("code") String code);
/**
* 根据角色别名查询所有用户
*
* @param roleAlias
* @return
*/
@GetMapping(LIST_ALL_USER_BY_ROLE_ALIAS)
R<List<User>> listAllByRoleAlias(@RequestParam("roleAlias") String roleAlias);
} }

@ -164,5 +164,10 @@ public class ISysClientFallback implements ISysClient {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@Override
public R<List<User>> listAllByRoleAlias(String roleAlias) {
return R.fail("获取数据失败");
}
} }

@ -21,4 +21,9 @@ public class BsEnergyCoreUseClient implements IBsEnergyCoreUseClient {
public void saveHistoryRec() { public void saveHistoryRec() {
service.saveHistoryRec(); service.saveHistoryRec();
} }
@Override
public void warning() {
service.warning();
}
} }

@ -32,5 +32,8 @@ public interface IBsEnergyCoreUseService extends BaseService<BsEnergyCoreUseEnti
*/ */
void saveHistoryRec(); void saveHistoryRec();
/**
* 预警
*/
void warning();
} }

@ -4,9 +4,13 @@ import com.alibaba.excel.util.StringUtils;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R;
import org.springblade.desk.common.feign.IMesNotifyMessageClient;
import org.springblade.desk.common.pojo.entity.MesNotifyMessageEntity;
import org.springblade.desk.device.pojo.entity.EquipmentEntity; import org.springblade.desk.device.pojo.entity.EquipmentEntity;
import org.springblade.desk.device.service.IEquipmentService; import org.springblade.desk.device.service.IEquipmentService;
import org.springblade.desk.energy.mapper.BsEnergyCoreUseMapper; import org.springblade.desk.energy.mapper.BsEnergyCoreUseMapper;
@ -18,6 +22,8 @@ import org.springblade.desk.energy.pojo.vo.BsEnergyHistoryRecVO;
import org.springblade.desk.energy.service.IBsEnergyCoreUseService; import org.springblade.desk.energy.service.IBsEnergyCoreUseService;
import org.springblade.desk.energy.service.IBsEnergyHistoryRecService; import org.springblade.desk.energy.service.IBsEnergyHistoryRecService;
import org.springblade.desk.energy.service.IBsEnergyQuotaService; import org.springblade.desk.energy.service.IBsEnergyQuotaService;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.pojo.entity.User;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
@ -34,9 +40,10 @@ import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Arrays; import java.util.*;
import java.util.Date; import java.util.stream.Collectors;
import java.util.List;
import static org.springblade.desk.oem.service.impl.OemStatementServiceImpl.SDF;
/** /**
@ -56,6 +63,10 @@ public class BsEnergyCoreUseServiceImpl extends BaseServiceImpl<BsEnergyCoreUseM
private IEquipmentService equipmentService; private IEquipmentService equipmentService;
@Resource @Resource
private RestTemplate httpClientTemplate; private RestTemplate httpClientTemplate;
@Resource
private ISysClient sysClient;
@Resource
private IMesNotifyMessageClient mesNotifyMessageClient;
private String timestamp = "timestamp", waterOne = "Water1", waterTwo = "Water2", waterThree = "Water3", waterFour = "Water4", readElectric = "ElectricPower", readElectric2 = "TotalElectricEnergyOfBX2", readElectric3 = "TotalElectricEnergyOfBX3"; private String timestamp = "timestamp", waterOne = "Water1", waterTwo = "Water2", waterThree = "Water3", waterFour = "Water4", readElectric = "ElectricPower", readElectric2 = "TotalElectricEnergyOfBX2", readElectric3 = "TotalElectricEnergyOfBX3";
@ -158,7 +169,7 @@ public class BsEnergyCoreUseServiceImpl extends BaseServiceImpl<BsEnergyCoreUseM
bsEnergyHistoryRec.setUploadTime(jsonObject.getDate(timestamp)); bsEnergyHistoryRec.setUploadTime(jsonObject.getDate(timestamp));
List<BsEnergyHistoryRecEntity> bsEnergyHistoryRecEntities = bsEnergyHistoryRecService.list(new LambdaQueryWrapper<BsEnergyHistoryRecEntity>().eq(BsEnergyHistoryRecEntity::getDeviceCode, deviceCode).orderByDesc(BsEnergyHistoryRecEntity::getCreateTime)); List<BsEnergyHistoryRecEntity> bsEnergyHistoryRecEntities = bsEnergyHistoryRecService.list(new LambdaQueryWrapper<BsEnergyHistoryRecEntity>().eq(BsEnergyHistoryRecEntity::getDeviceCode, deviceCode).orderByDesc(BsEnergyHistoryRecEntity::getCreateTime));
BsEnergyHistoryRecEntity last = null; BsEnergyHistoryRecEntity last = null;
if(!CollectionUtils.isEmpty(bsEnergyHistoryRecEntities)){ if (!CollectionUtils.isEmpty(bsEnergyHistoryRecEntities)) {
last = bsEnergyHistoryRecEntities.get(0); last = bsEnergyHistoryRecEntities.get(0);
} }
if (last != null && last.getId() != null) { if (last != null && last.getId() != null) {
@ -182,6 +193,76 @@ public class BsEnergyCoreUseServiceImpl extends BaseServiceImpl<BsEnergyCoreUseM
} }
} }
@Override
public void warning() {
QueryWrapper<BsEnergyCoreUseEntity> wrapper = new QueryWrapper<>();
LocalDate today = LocalDate.now();
LocalDate yesterday = today.minusDays(1);
LocalDate day1 = yesterday.minusDays(1);
LocalDate day2 = yesterday.minusDays(2);
LocalDate day3 = yesterday.minusDays(3);
wrapper.ne("QUO_ELECTRIC_NUM", 0);
wrapper.eq("TYPE", "2");
wrapper.apply("TRUNC(START_TIME) >= TRUNC({0}) AND TRUNC(START_TIME) < TRUNC({1}) AND (REAL_ELECTRIC_NUM < QUO_ELECTRIC_NUM OR REAL_ELECTRIC_NUM > QUO_ELECTRIC_NUM * 1.3)", day3, today);
List<BsEnergyCoreUseEntity> list = this.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return;
}
R<List<User>> userResult = sysClient.listAllByRoleAlias("environmentalTechnician");
if (userResult == null || !userResult.isSuccess()) {
return;
}
List<User> users = userResult.getData();
Map<String, Set<String>> workDayMap = list.stream()
.collect(Collectors.groupingBy(
BsEnergyCoreUseEntity::getWorkCenterId,
Collectors.mapping(
entity -> SDF.format(entity.getStartTime()),
Collectors.toSet()
)
));
Map<String, String> workCenterMap = list.stream()
.collect(Collectors.toMap(
BsEnergyCoreUseEntity::getWorkCenterId,
BsEnergyCoreUseEntity::getWorkCenterName,
(oldVal, newVal) -> oldVal
));
String date0 = SDF.format(localDateToDate(yesterday));
String date1 = SDF.format(localDateToDate(day1));
String date2 = SDF.format(localDateToDate(day2));
String date3 = SDF.format(localDateToDate(day3));
for (Map.Entry<String, Set<String>> entry : workDayMap.entrySet()) {
String workCenterId = entry.getKey();
String workCenterName = workCenterMap.get(workCenterId);
Set<String> dateSet = entry.getValue();
// 判断每一天是否异常
boolean b0 = dateSet.contains(date0);
boolean b1 = dateSet.contains(date1);
boolean b2 = dateSet.contains(date2);
boolean b3 = dateSet.contains(date3);
// 触发条件:仅最近三天异常
if (b0 && b1 && b2 && !b3) {
// 发送提醒
String title = String.format("%s - 用电异常提醒", workCenterName);
String content = String.format("%s - 已连续3天用电异常,请关注", workCenterName);
for (User user : users) {
MesNotifyMessageEntity notifyMessage = MesNotifyMessageEntity.builder()
.title(title)
.content(content)
.receiveUserId(user.getId())
.build();
mesNotifyMessageClient.save(notifyMessage);
}
}
}
}
private Date localDateToDate(LocalDate localDate) {
return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
}
/** /**
* 创建作业中心用水用电记录 * 创建作业中心用水用电记录
* *

@ -21,11 +21,12 @@
a.SETTLEMENT_MEMO, a.SETTLEMENT_MEMO,
a.APPROVAL_STATUS, a.APPROVAL_STATUS,
CASE a.APPROVAL_STATUS CASE a.APPROVAL_STATUS
WHEN 1 THEN '待审批' WHEN 1 THEN '待校对'
WHEN 2 THEN '审批中' WHEN 2 THEN '校对中'
WHEN 3 THEN '审批通过' WHEN 3 THEN '审核通过'
WHEN 4 THEN '审批不通过' WHEN 4 THEN '审核不通过'
ELSE '未知' WHEN 5 THEN '待审核'
ELSE '未知'
END AS APPROVAL_STATUS_NAME, END AS APPROVAL_STATUS_NAME,
a.SUBMIT_TIME, a.SUBMIT_TIME,
to_char(a.SUBMIT_TIME, 'yyyy-MM-dd') as SUBMIT_DATE, to_char(a.SUBMIT_TIME, 'yyyy-MM-dd') as SUBMIT_DATE,
@ -94,10 +95,11 @@
a.SETTLEMENT_MEMO, a.SETTLEMENT_MEMO,
a.APPROVAL_STATUS, a.APPROVAL_STATUS,
CASE a.APPROVAL_STATUS CASE a.APPROVAL_STATUS
WHEN 1 THEN '待审批' WHEN 1 THEN '待校对'
WHEN 2 THEN '审批中' WHEN 2 THEN '校对中'
WHEN 3 THEN '审批通过' WHEN 3 THEN '审核通过'
WHEN 4 THEN '审批不通过' WHEN 4 THEN '审核不通过'
WHEN 5 THEN '待审核'
ELSE '未知' ELSE '未知'
END AS APPROVAL_STATUS_NAME, END AS APPROVAL_STATUS_NAME,
a.SUBMIT_TIME, a.SUBMIT_TIME,

@ -63,6 +63,8 @@ public class SysClient implements ISysClient {
private final IRegionService regionService; private final IRegionService regionService;
private final IUserExtService userExtService;
@Override @Override
@GetMapping(MENU) @GetMapping(MENU)
public R<Menu> getMenu(Long id) { public R<Menu> getMenu(Long id) {
@ -206,5 +208,10 @@ public class SysClient implements ISysClient {
return R.data(regionService.getById(code)); return R.data(regionService.getById(code));
} }
@Override
public R<List<User>> listAllByRoleAlias(String roleAlias) {
return R.data(userExtService.listAllByRole(roleAlias));
}
} }

Loading…
Cancel
Save