Browse Source

综合安保评价规则代码提交

jingyuanchao 2 năm trước cách đây
mục cha
commit
5c21950581
14 tập tin đã thay đổi với 483 bổ sung38 xóa
  1. 7 3
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java
  2. 5 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java
  3. 74 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/domain/CoreSafetyExceptionData.java
  4. 3 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java
  5. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java
  6. 50 27
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java
  7. 19 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/controller/CoreSafetyExceptionDataController.java
  8. 62 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/mapper/CoreSafetyExceptionDataMapper.java
  9. 22 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/ICoreSafetyExceptionDataService.java
  10. 80 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafetyExceptionDataServiceImpl.java
  11. 0 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafetyIndexCalculateRuleServiceImpl.java
  12. 17 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml
  13. 133 0
      soc-modules/soc-modules-core/src/main/resources/mapper/safetyindex/CoreSafetyExceptionDataMapper.xml
  14. 8 3
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysRoleController.java

+ 7 - 3
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java

@@ -2,16 +2,17 @@ package com.xunmei.system.api;
 
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
-import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @author :LuoWei
@@ -23,6 +24,9 @@ public interface RemoteRoleService {
     @GetMapping("/role/getRoleById")
     SysRole getRoleById(@RequestParam("id") Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @GetMapping("/role/getRoleByName")
+    SysRole getRoleByName(@RequestParam("name") String name, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
     @GetMapping(value = "/role/selectRoleNameByUserId")
     String selectRoleNameByUserId(@RequestParam("userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 

+ 5 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java

@@ -1,7 +1,6 @@
 package com.xunmei.system.api.factory;
 
 
-import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.RemoteRoleService;
@@ -52,6 +51,11 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
             public List<Long> getUserRoleId(Long userId, String source) {
                 return null;
             }
+
+            @Override
+            public SysRole getRoleByName(String name, String source) {
+                return null;
+            }
         };
 
     }

+ 74 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/domain/CoreSafetyExceptionData.java

@@ -0,0 +1,74 @@
+package com.xunmei.common.core.domain.safetyindex.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.web.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 安全指标的异常数据对象 core_safety_exception_data
+ *
+ * @author xunmei
+ * @date 2023-10-09
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("core_safety_exception_data")
+@ApiModel(value = "CoreSafetyExceptionData对象", description = "安全指标的异常数据")
+public class CoreSafetyExceptionData extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id")
+    private Long id;
+
+    @TableField(value = "data_id")
+    @ApiModelProperty(value = "异常数据id")
+    private String dataId;
+
+    @TableField(value = "org_id")
+    @ApiModelProperty(value = "机构id")
+    private Long orgId;
+
+    @TableField(value = "data_time")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "数据产生日期")
+    private Date dataTime;
+
+    @TableField(value = "data_source")
+    @ApiModelProperty(value = "数据来源表")
+    private String dataSource;
+
+    @TableField(value = "extra_field1")
+    @ApiModelProperty(value = "扩展预留字段")
+    private String extraField1;
+
+    @TableField(value = "extra_field2")
+    @ApiModelProperty(value = "扩展预留字段")
+    private String extraField2;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("dataId", getDataId())
+                .append("orgId", getOrgId())
+                .append("dataTime", getDataTime())
+                .append("dataSource", getDataSource())
+                .append("extraField1", getExtraField1())
+                .append("extraField2", getExtraField2())
+                .append("createTime", getCreateTime())
+                .toString();
+    }
+}

+ 3 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java

@@ -3,9 +3,8 @@ package com.xunmei.core.resumption.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
-import com.xunmei.core.resumption.domain.AppRulePoint;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.core.resumption.domain.Resumption;
-import com.xunmei.core.resumption.dto.ResumptionTaskDto;
 import com.xunmei.core.resumption.gx.vo.ResumptionNFCVo;
 import com.xunmei.core.resumption.gx.vo.ResumptionPlanVo;
 import com.xunmei.core.resumption.vo.ResumptionAppVo;
@@ -71,4 +70,6 @@ public interface ResumptionMapper extends BaseMapper<Resumption> {
 
 
     void updateNameByPlanId(@Param("planName") String planName, @Param("planId") Long planId);
+
+    List<CoreSafetyExceptionData> findResumptionExceptionList(@Param("year") int year, @Param("quarter") int quarter, @Param("month") int month, @Param("roleId") Long roleId);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.Resumption;
@@ -46,4 +47,6 @@ public interface ResumptionService extends IService<Resumption> {
     List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 
     void dayTaskByWorkTime(Map<String, Object> params);
+
+    List<CoreSafetyExceptionData> findResumptionList(DateTime time);
 }

+ 50 - 27
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -6,30 +6,31 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mysql.cj.PreparedQuery;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.AppPlanToRole;
 import com.xunmei.core.resumption.domain.Resumption;
-import com.xunmei.core.resumption.dto.resumptionRegister.ResumptionTaskDataDto;
 import com.xunmei.core.resumption.dto.TaskDetailsDto;
+import com.xunmei.core.resumption.dto.resumptionRegister.ResumptionTaskDataDto;
 import com.xunmei.core.resumption.mapper.AppPlanMapper;
 import com.xunmei.core.resumption.mapper.AppPlanToRoleMapper;
 import com.xunmei.core.resumption.mapper.ResumptionMapper;
-import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.service.ResumptionService;
 import com.xunmei.core.resumption.vo.AppRulePointTaskVo;
 import com.xunmei.core.resumption.vo.ResumptionAppVo;
 import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
 import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
+import com.xunmei.system.api.RemoteRoleService;
+import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysWorkTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -47,46 +48,56 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     private AppPlanToRoleMapper appPlanToRoleMapper;
     @Autowired
     private AppPlanMapper appPlanMapper;
+
+    @Autowired
+    private RemoteRoleService roleService;
+
     @Override
     public List<Map<String, Object>> findDayTaskList(int year, int quarter, String dateTime, Long roleId, Long orgid) {
-        return resumptionMapper.findDayTaskList(year,quarter,dateTime, roleId, orgid);
+        return resumptionMapper.findDayTaskList(year, quarter, dateTime, roleId, orgid);
     }
+
     @Override
     public List<Map<String, Object>> findMonthTaskList(int year, int month, int type, Long roleId, Long orgid, int quarter) {
         return resumptionMapper.findMonthTaskList(year, month, type, roleId, orgid, quarter);
     }
+
     @Override
     public List<Map<String, Object>> findYearTaskList(int year, int type, Long roleId, Long orgid, int quarter) {
-        return resumptionMapper.findYearTaskList(year, type, roleId, orgid,quarter);
+        return resumptionMapper.findYearTaskList(year, type, roleId, orgid, quarter);
     }
+
     @Override
     public Resumption findOneByTaskIdAndDate(TaskDetailsDto request) {
         DateHelper dateTime = new DateHelper(request.getDateTime());
-        int year =dateTime.getYear();
-        int quarter =dateTime.getQuarter() ;
+        int year = dateTime.getYear();
+        int quarter = dateTime.getQuarter();
         //如果是年任务季度设为1
-        if(request.getType()==5){
+        if (request.getType() == 5) {
             quarter = 1;
         }
-        return resumptionMapper.findOneByTaskIdAndDate(request.getTaskId(),year,quarter);
+        return resumptionMapper.findOneByTaskIdAndDate(request.getTaskId(), year, quarter);
     }
+
     @Override
     public Resumption findOneByTaskIdAndDate(ResumptionTaskDataDto request) {
-        return resumptionMapper.findOneByTaskIdAndDate(request.getResumptionId(),request.getYear(),request.getQuarter());
+        return resumptionMapper.findOneByTaskIdAndDate(request.getResumptionId(), request.getYear(), request.getQuarter());
     }
+
     @Override
     public List<Map<String, Object>> findOneByTaskId(TaskDetailsDto request) {
         final DateHelper dateTime = new DateHelper(request.getDateTime());
-        int year =dateTime.getYear();
-        int quarter =dateTime.getQuarter() ;
+        int year = dateTime.getYear();
+        int quarter = dateTime.getQuarter();
         //如果是年任务季度设为1
-        if(request.getType()==5){
+        if (request.getType() == 5) {
             quarter = 1;
         }
         return resumptionMapper.findOneByTaskId(request.getTaskId(), year, quarter);
     }
+
     @Override
-    public void updateResumption(Resumption resumption){
+    public void updateResumption(Resumption resumption) {
         resumptionMapper.updateResumption(resumption);
     }
 
@@ -94,6 +105,7 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     public List<ResumptionAppVo> findResumptionApp(ResumptionTaskNewDto res) {
         return resumptionMapper.findResumptionApp(res);
     }
+
     @Override
     @Transactional(readOnly = false, rollbackFor = {Exception.class, RuntimeException.class}, propagation = Propagation.REQUIRES_NEW)
     public void newbuild(Long orgId, ResumptionType type, final Date dateTime, final Boolean isWork, AppPlan appPlan, List<Object> nfcList, List<AppRulePointTaskVo> pointList, List<Long> roleIds, DateTime planstartTime, DateTime planendTime) {
@@ -112,7 +124,7 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
                 planendTime = DateUtil.endOfDay(planendTime).offset(DateField.MILLISECOND, -999);
             }
             Resumption resumption = new Resumption();
-            resumption.setStatus( 1);
+            resumption.setStatus(1);
             resumption.setYmd(ymd);
             resumption.setName(appPlan.getPlanName());
             resumption.setYmdDate(ymd.getDate());
@@ -136,10 +148,12 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
         this.saveBatch(resumptions);
 
     }
+
     @Override
     public List<WorkChangeResumptionVo> findResumptionList(List<Long> orgIds, Date date, Integer type, Integer status, Integer year, Integer quarter) {
         return resumptionMapper.findResumptionList(orgIds, date, type, status, year, quarter);
     }
+
     @Override
     @Transactional(readOnly = false, rollbackFor = {Exception.class, RuntimeException.class}, propagation = Propagation.REQUIRES_NEW)
     public void saveResumption(List<Resumption> listResumption, List<AppPlan> appPlanList, List<Map<String, Long>> planIdAndOrgs) {
@@ -159,6 +173,7 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
         //this.save(resumptionList);
         this.saveBatch(resumptionList);
     }
+
     @Override
     public void deleteResumption(List<String> ids, Integer year, Integer quarter) {
         resumptionMapper.deleteResumption(ids, year, quarter);
@@ -168,8 +183,10 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
 
         List<PanelListVo> list = resumptionMapper.selectCurUserTaskList(panelListDto);
-        list.removeIf(item->DateUtil.compare(new Date(), item.getEndTime()) > 0);
-        list.forEach(item->{item.setType(PanelTypeEnums.RESUMPTION.getCode());});
+        list.removeIf(item -> DateUtil.compare(new Date(), item.getEndTime()) > 0);
+        list.forEach(item -> {
+            item.setType(PanelTypeEnums.RESUMPTION.getCode());
+        });
 
         return list;
     }
@@ -190,12 +207,12 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
             //每日任务
             queryWrapper.lambda().eq(Resumption::getType, 2);
             List<Resumption> resumptionList = resumptionMapper.selectList(queryWrapper);
-            List<Resumption> resumptionListYlz =resumptionList.stream().filter(item -> item.getStatus()==3).collect(Collectors.toList());
+            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(resumptionList)) {
                 //取出未履职的数据(待履职,进行中)
                 List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
                 //删除这些数据
-                if(CollectionUtils.isNotEmpty(resumptionListWlz)){
+                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
                     resumptionMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
                 }
             }
@@ -211,15 +228,15 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
                     List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
                     List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
                     List<Resumption> newResumptionList = new ArrayList<>();
-                    for(AppPlan plan:listPlans){
+                    for (AppPlan plan : listPlans) {
                         //根据计划获取角色
                         List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
-                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles,workTime);
-                        if(CollectionUtils.isNotEmpty(resumptionLista)){
+                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
+                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
                             //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
                             List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
                                     && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
-                            if(CollectionUtils.isNotEmpty(resumptionListb)){
+                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
                                 newResumptionList.addAll(resumptionListb);
                             }
                         }
@@ -230,7 +247,7 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
 
             }
         } catch (Exception e) {
-           e.printStackTrace();
+            e.printStackTrace();
         }
     }
 
@@ -260,10 +277,10 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
             planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
             planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
         }
-        for(AppPlanToRole role :planToRoles){
+        for (AppPlanToRole role : planToRoles) {
             Resumption resumption = new Resumption();
             Ymd ymd = Ymd.of(dateTime);
-            resumption.setStatus( 1);
+            resumption.setStatus(1);
             resumption.setYmd(ymd);
             resumption.setName(appPlan.getPlanName());
             resumption.setYmdDate(ymd.getDate());
@@ -285,4 +302,10 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
         }
         return resumptionList;
     }
+
+    @Override
+    public List<CoreSafetyExceptionData> findResumptionList(DateTime time) {
+        SysRole role = roleService.getRoleByName("网点安全员", SecurityConstants.FROM_SOURCE);
+        return baseMapper.findResumptionExceptionList(time.year(), time.quarter(), time.month() + 1, role.getId());
+    }
 }

+ 19 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/controller/CoreSafetyExceptionDataController.java

@@ -0,0 +1,19 @@
+package com.xunmei.core.safetyindex.controller;
+
+import com.xunmei.common.core.web.controller.BaseController;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 安全指标的异常数据Controller
+ *
+ * @author xunmei
+ * @date 2023-10-09
+ */
+@Api(tags = {"CoreSafetyExceptionData"})
+@RestController
+@RequestMapping("/safetyExceptionData")
+public class CoreSafetyExceptionDataController extends BaseController {
+
+}

+ 62 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/mapper/CoreSafetyExceptionDataMapper.java

@@ -0,0 +1,62 @@
+package com.xunmei.core.safetyindex.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
+
+import java.util.List;
+
+/**
+ * 安全指标的异常数据Mapper接口
+ *
+ * @author xunmei
+ * @date 2023-10-09
+ */
+public interface CoreSafetyExceptionDataMapper extends BaseMapper<CoreSafetyExceptionData> {
+    /**
+     * 查询安全指标的异常数据
+     *
+     * @param id 安全指标的异常数据主键
+     * @return 安全指标的异常数据
+     */
+    CoreSafetyExceptionData selectCoreSafetyExceptionDataById(Long id);
+
+    /**
+     * 查询安全指标的异常数据列表
+     *
+     * @param coreSafetyExceptionData 安全指标的异常数据
+     * @return 安全指标的异常数据集合
+     */
+    List<CoreSafetyExceptionData> selectCoreSafetyExceptionDataList(CoreSafetyExceptionData coreSafetyExceptionData);
+
+    /**
+     * 新增安全指标的异常数据
+     *
+     * @param coreSafetyExceptionData 安全指标的异常数据
+     * @return 结果
+     */
+    int insertCoreSafetyExceptionData(CoreSafetyExceptionData coreSafetyExceptionData);
+
+    /**
+     * 修改安全指标的异常数据
+     *
+     * @param coreSafetyExceptionData 安全指标的异常数据
+     * @return 结果
+     */
+    int updateCoreSafetyExceptionData(CoreSafetyExceptionData coreSafetyExceptionData);
+
+    /**
+     * 删除安全指标的异常数据
+     *
+     * @param id 安全指标的异常数据主键
+     * @return 结果
+     */
+    int deleteCoreSafetyExceptionDataById(Long id);
+
+    /**
+     * 批量删除安全指标的异常数据
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    int deleteCoreSafetyExceptionDataByIds(Long[] ids);
+}

+ 22 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/ICoreSafetyExceptionDataService.java

@@ -0,0 +1,22 @@
+package com.xunmei.core.safetyindex.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
+
+import java.util.Date;
+
+/**
+ * 安全指标的异常数据Service接口
+ *
+ * @author xunmei
+ * @date 2023-10-09
+ */
+public interface ICoreSafetyExceptionDataService extends IService<CoreSafetyExceptionData> {
+
+
+
+    public void countExceptionData(String date);
+
+    void deleteExceptionData(Date date);
+
+}

+ 80 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafetyExceptionDataServiceImpl.java

@@ -0,0 +1,80 @@
+package com.xunmei.core.safetyindex.service.impl;
+
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
+import com.xunmei.core.resumption.service.ResumptionService;
+import com.xunmei.core.safetyindex.mapper.CoreSafetyExceptionDataMapper;
+import com.xunmei.core.safetyindex.service.ICoreSafetyExceptionDataService;
+import com.xunmei.system.api.RemoteOrgService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.TimeZone;
+
+/**
+ * 安全指标的异常数据Service业务层处理
+ *
+ * @author xunmei
+ * @date 2023-10-09
+ */
+@Service
+public class CoreSafetyExceptionDataServiceImpl extends ServiceImpl<CoreSafetyExceptionDataMapper, CoreSafetyExceptionData> implements ICoreSafetyExceptionDataService {
+    @Autowired
+    private CoreSafetyExceptionDataMapper coreSafetyExceptionDataMapper;
+    @Autowired
+    private RemoteOrgService orgService;
+    @Autowired
+    private ResumptionService resumptionService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void countExceptionData(String date) {
+        DateTime time = dealTimeParam(date);
+
+        //清空本月的异常数据
+        this.deleteExceptionData(new Date());
+        //获取安保履职的数据
+        doResumptionExceptionData(time);
+        //获取问题整改的异常数据
+        doProblemExceptionData(time);
+
+    }
+
+    private void doProblemExceptionData(DateTime time) {
+
+    }
+
+    private void doResumptionExceptionData(DateTime time) {
+        List<CoreSafetyExceptionData> resumptionExceptionList = resumptionService.findResumptionList(time);
+        this.saveBatch(resumptionExceptionList);
+    }
+
+    @Override
+    public void deleteExceptionData(Date date) {
+        //删除上个月所有的数据
+        LambdaQueryWrapper<CoreSafetyExceptionData> queryWrapper = new LambdaQueryWrapper<>();
+        //大于等于第一天
+        queryWrapper.ge(CoreSafetyExceptionData::getDataTime, DateUtil.beginOfDay(date));
+        //小于等于最后一天
+        queryWrapper.le(CoreSafetyExceptionData::getDataTime, DateUtil.endOfDay(date));
+        coreSafetyExceptionDataMapper.delete(queryWrapper);
+    }
+
+    private DateTime dealTimeParam(String date) {
+        int year = Integer.parseInt(date.split("-")[0]);
+        int month = Integer.parseInt(date.split("-")[1]);
+        DateTime time = new DateTime();
+        time.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        time.setField(DateField.YEAR, year);
+        time.setField(DateField.MONTH, month - 1);
+        time.setField(DateField.DAY_OF_MONTH, 1);
+        return time;
+    }
+}

+ 0 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafetyIndexCalculateRuleServiceImpl.java

@@ -69,8 +69,6 @@ public class CoreSafetyIndexCalculateRuleServiceImpl extends ServiceImpl<CoreSaf
         }
         //抓换为TableDataInfo适配前端
         return TableDataInfo.build(page);
-
-
     }
 
     private Map<String, String>  getCoreSafetyDictMap(){

+ 17 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -222,4 +222,21 @@ update   core_resumption set name=#{planName} where plan_id =#{planId}
         and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
         ))
     </select>
+
+    <select id="findResumptionExceptionList"
+            resultType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
+        SELECT a.id as dataId, a.org_id as orgId, a.plan_id as extraField1, a.status as extraField2, a.ymd_date as dataTime,'t_app_resumption' as dataSource,now() as createTime
+        FROM core_resumption a
+        WHERE a.plan_id IN (SELECT a.id
+                            FROM core_resumption_plan a
+                            WHERE a.plan_cycle IN (SELECT cycle
+                                                   FROM core_safety_index_calculate_rule a
+                                                   WHERE a.type_code = 1004
+                                                   GROUP BY org_type, cycle)
+                              AND exec_org_type IN (SELECT org_type
+                                                    FROM core_safety_index_calculate_rule a
+                                                    WHERE a.type_code = 1004
+                                                    GROUP BY org_type, cycle))
+          and ymd_year =#{year} and ymd_quarter=#{quarter} and ymd_month=#{month} and status in (4) and role_id =#{roleId}
+    </select>
 </mapper>

+ 133 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/safetyindex/CoreSafetyExceptionDataMapper.xml

@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.core.safetyindex.mapper.CoreSafetyExceptionDataMapper">
+
+    <resultMap type="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData" id="CoreSafetyExceptionDataResult">
+                <result property="id" column="id"/>
+                <result property="dataId" column="data_id"/>
+                <result property="orgId" column="org_id"/>
+                <result property="dataTime" column="data_time"/>
+                <result property="dataSource" column="data_source"/>
+                <result property="extraField1" column="extra_field1"/>
+                <result property="extraField2" column="extra_field2"/>
+                <result property="createTime" column="create_time"/>
+    </resultMap>
+
+    <sql id="selectCoreSafetyExceptionDataVo">
+        select id, data_id, org_id, data_time, data_source, extra_field1, extra_field2, create_time
+        from core_safety_exception_data
+    </sql>
+
+    <select id="selectCoreSafetyExceptionDataList" parameterType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData"
+            resultMap="CoreSafetyExceptionDataResult">
+        <include refid="selectCoreSafetyExceptionDataVo"/>
+        <where>
+                        <if test="dataId != null  and dataId != ''">
+                            and data_id = #{dataId}
+                        </if>
+                        <if test="orgId != null ">
+                            and org_id = #{orgId}
+                        </if>
+                        <if test="dataTime != null ">
+                            and data_time = #{dataTime}
+                        </if>
+                        <if test="dataSource != null  and dataSource != ''">
+                            and data_source = #{dataSource}
+                        </if>
+                        <if test="extraField1 != null  and extraField1 != ''">
+                            and extra_field1 = #{extraField1}
+                        </if>
+                        <if test="extraField2 != null  and extraField2 != ''">
+                            and extra_field2 = #{extraField2}
+                        </if>
+        </where>
+    </select>
+
+    <select id="selectCoreSafetyExceptionDataById" parameterType="Long"
+            resultMap="CoreSafetyExceptionDataResult">
+            <include refid="selectCoreSafetyExceptionDataVo"/>
+            where id = #{id}
+    </select>
+
+    <insert id="insertCoreSafetyExceptionData" parameterType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
+        insert into core_safety_exception_data
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+                    <if test="id != null">id,
+                    </if>
+                    <if test="dataId != null">data_id,
+                    </if>
+                    <if test="orgId != null">org_id,
+                    </if>
+                    <if test="dataTime != null">data_time,
+                    </if>
+                    <if test="dataSource != null">data_source,
+                    </if>
+                    <if test="extraField1 != null">extra_field1,
+                    </if>
+                    <if test="extraField2 != null">extra_field2,
+                    </if>
+                    <if test="createTime != null">create_time,
+                    </if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+                    <if test="id != null">#{id},
+                    </if>
+                    <if test="dataId != null">#{dataId},
+                    </if>
+                    <if test="orgId != null">#{orgId},
+                    </if>
+                    <if test="dataTime != null">#{dataTime},
+                    </if>
+                    <if test="dataSource != null">#{dataSource},
+                    </if>
+                    <if test="extraField1 != null">#{extraField1},
+                    </if>
+                    <if test="extraField2 != null">#{extraField2},
+                    </if>
+                    <if test="createTime != null">#{createTime},
+                    </if>
+        </trim>
+    </insert>
+
+    <update id="updateCoreSafetyExceptionData" parameterType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">
+        update core_safety_exception_data
+        <trim prefix="SET" suffixOverrides=",">
+                    <if test="dataId != null">data_id =
+                        #{dataId},
+                    </if>
+                    <if test="orgId != null">org_id =
+                        #{orgId},
+                    </if>
+                    <if test="dataTime != null">data_time =
+                        #{dataTime},
+                    </if>
+                    <if test="dataSource != null">data_source =
+                        #{dataSource},
+                    </if>
+                    <if test="extraField1 != null">extra_field1 =
+                        #{extraField1},
+                    </if>
+                    <if test="extraField2 != null">extra_field2 =
+                        #{extraField2},
+                    </if>
+                    <if test="createTime != null">create_time =
+                        #{createTime},
+                    </if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteCoreSafetyExceptionDataById" parameterType="Long">
+        delete
+        from core_safety_exception_data where id = #{id}
+    </delete>
+
+    <delete id="deleteCoreSafetyExceptionDataByIds" parameterType="String">
+        delete from core_safety_exception_data where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 8 - 3
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysRoleController.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.controller.BaseController;
@@ -12,11 +13,9 @@ import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.system.api.Eto.RoleConditionEto;
 import com.xunmei.system.api.domain.SysDept;
-import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.SysUserRole;
-import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.service.ISysDeptService;
 import com.xunmei.system.service.ISysRoleService;
 import com.xunmei.system.service.ISysUserService;
@@ -25,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -224,6 +222,13 @@ public class SysRoleController extends BaseController {
     public SysRole getRoleById(Long id) {
         return roleService.getById(id);
     }
+    @ApiOperation(value = "根据名称查询角色")
+    @InnerAuth
+    @GetMapping(value = "/getRoleByName")
+    public SysRole getRoleByName(String name) {
+        return roleService.getOne(new LambdaQueryWrapper<SysRole>()
+                .like(SysRole::getRoleName, name).select(SysRole::getId));
+    }
 
     /**
      * 根据用户查询角色