ソースを参照

安全指数代码提交

jingyuanchao 2 年 前
コミット
e85df73dd1

+ 11 - 0
project_data/sql/0.0.3/soc/soc.sql

@@ -449,6 +449,17 @@ DROP PROCEDURE IF EXISTS schema_change ??
     END IF;
 
 
+    -- 安全指数机构分数表增加机构名称字段
+    IF NOT EXISTS(SELECT *
+                  FROM information_schema.STATISTICS
+                  WHERE table_schema = DATABASE()
+                    AND table_name = 'core_safe_month_score'
+                    AND INDEX_NAME = 'idx_year_month') THEN
+        drop index idx_orgId on core_safe_month_score;
+        drop index idx_year_month on core_safe_month_score;
+
+        create unique index idx_orgId_year_month on core_safe_month_score (org_id, data_year, data_month) comment '机构id+年+月';
+    END IF;
 
 
     END ??

+ 29 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/vo/CoreSafeMonthScoreDetailVo.java

@@ -0,0 +1,29 @@
+package com.xunmei.common.core.domain.safetyindex.vo;
+
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class CoreSafeMonthScoreDetailVo {
+    @ApiModelProperty(value = "上级机构名称1")
+    private String firstOrgName;
+    @ApiModelProperty(value = "上级机构名称2")
+    private String secondOrgName;
+    @ApiModelProperty(value = "营业场所")
+    private String orgTypeText;
+    @JsonFormat(pattern = "yyyy-MM", timezone = "GMT+8")
+    @ApiModelProperty(value = "年月")
+    private Date date;
+    @ApiModelProperty(value = "安全指数")
+    private Double dataScore;
+    @ApiModelProperty(value = "安全等级")
+    private String levelName;
+
+    private List<MonthScoreDetailDictVo> dataList;
+
+}

+ 41 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/vo/MonthScoreDetailDictDetailTempVo.java

@@ -0,0 +1,41 @@
+package com.xunmei.common.core.domain.safetyindex.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class MonthScoreDetailDictDetailTempVo {
+
+
+
+    @ApiModelProperty(value = "指标分类code")
+    private  String typeCode;
+
+    @ApiModelProperty(value = "指标名称")
+    private String typeName;
+
+    @ApiModelProperty(value = "指标项目code")
+    private String projectCode;
+
+    @ApiModelProperty(value = "指标项目名称")
+    private String projectName;
+
+    @ApiModelProperty(value = "指标要点code")
+    private String pointCode;
+
+    @ApiModelProperty(value = "指标要点名称")
+    private String pointName;
+
+    @ApiModelProperty(value = "计算项目")
+    private String itemName;
+
+    @ApiModelProperty(value = "数量")
+    private Integer times;
+
+    @ApiModelProperty(value = "扣分数")
+    private Double score;
+
+    private Long ruleId;
+
+    private Double realScore;
+}

+ 38 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/vo/MonthScoreDetailDictDetailVo.java

@@ -0,0 +1,38 @@
+package com.xunmei.common.core.domain.safetyindex.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class MonthScoreDetailDictDetailVo {
+
+    @ApiModelProperty(value = "指标分类code")
+    private  String typeCode;
+
+    @ApiModelProperty(value = "指标名称")
+    private String typeName;
+
+    @ApiModelProperty(value = "指标项目code")
+    private String projectCode;
+
+    @ApiModelProperty(value = "指标项目名称")
+    private String projectName;
+
+    @ApiModelProperty(value = "指标要点code")
+    private String pointCode;
+
+    @ApiModelProperty(value = "指标要点名称")
+    private String pointName;
+
+    @ApiModelProperty(value = "计算项目")
+    private String itemName;
+
+    @ApiModelProperty(value = "数量")
+    private Integer times;
+
+    @ApiModelProperty(value = "扣分数")
+    private Double score;
+
+    private Long ruleId;
+
+}

+ 25 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/safetyindex/vo/MonthScoreDetailDictVo.java

@@ -0,0 +1,25 @@
+package com.xunmei.common.core.domain.safetyindex.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class MonthScoreDetailDictVo {
+
+    @ApiModelProperty(value = "类型")
+    private String typeCode;
+
+    @ApiModelProperty(value = "类型名称")
+    private String typeName;
+
+    @ApiModelProperty(value = "数量")
+    private Integer times;
+
+    @ApiModelProperty(value = "扣分数")
+    private Double score;
+
+    private List<MonthScoreDetailDictDetailVo> detailList;
+}

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/controller/CoreSafeMonthScoreController.java

@@ -4,6 +4,7 @@ import com.xunmei.common.core.domain.safetyindex.domain.CoreSafeMonthScore;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScoreDetailPageDto;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScorePageDto;
 import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScoreDetailPageVo;
+import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScoreDetailVo;
 import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScorePageVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
@@ -49,7 +50,7 @@ public class CoreSafeMonthScoreController extends BaseController {
     @ApiOperation(value = "获取某机构指数分布详情")
     //@RequiresPermissions("core:safeMonthScore:query")
     @PostMapping("/find/singleOrg")
-    public Object singleOrg(@RequestBody CoreSafeMonthScorePageDto request) {
+    public CoreSafeMonthScoreDetailVo singleOrg(@RequestBody CoreSafeMonthScorePageDto request) {
         return coreSafeMonthScoreService.singleOrg(request);
     }
 

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/mapper/CoreSafeMonthScoreMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafeMonthScore;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScorePageDto;
 import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScorePageVo;
+import com.xunmei.common.core.domain.safetyindex.vo.MonthScoreDetailDictDetailTempVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -66,4 +67,8 @@ public interface CoreSafeMonthScoreMapper extends BaseMapper<CoreSafeMonthScore>
     int deleteCoreSafeMonthScoreByIds(Long[] ids);
 
     IPage<CoreSafeMonthScorePageVo> selectPageData(Page<CoreSafeMonthScorePageVo> pageRequest, @Param("request") CoreSafeMonthScorePageDto req);
+
+    void saveOrUpdateData(CoreSafeMonthScore safeMonthScore);
+
+    List<MonthScoreDetailDictDetailTempVo> selectDetailVoData(@Param("request") CoreSafeMonthScorePageDto request);
 }

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/ICoreSafeMonthScoreService.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.domain.safetyindex.domain.CoreSafeMonthScore;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScoreDetailPageDto;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScorePageDto;
 import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScoreDetailPageVo;
+import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScoreDetailVo;
 import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScorePageVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -78,6 +79,6 @@ public interface ICoreSafeMonthScoreService extends IService<CoreSafeMonthScore>
 
     void checkAndSaveData(CoreSafeMonthScore monthScore);
 
-    Object singleOrg(CoreSafeMonthScorePageDto request);
+    CoreSafeMonthScoreDetailVo singleOrg(CoreSafeMonthScorePageDto request);
 
 }

+ 42 - 6
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyindex/service/impl/CoreSafeMonthScoreServiceImpl.java

@@ -7,12 +7,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.safetyindex.domain.CoreSafeMonthScore;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScoreDetailPageDto;
 import com.xunmei.common.core.domain.safetyindex.dto.CoreSafeMonthScorePageDto;
-import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScoreDetailPageVo;
-import com.xunmei.common.core.domain.safetyindex.vo.CoreSafeMonthScorePageVo;
+import com.xunmei.common.core.domain.safetyindex.vo.*;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -21,11 +21,14 @@ import com.xunmei.core.safetyindex.mapper.CoreSafeMonthScoreMapper;
 import com.xunmei.core.safetyindex.service.ICoreSafeMonthScoreService;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -100,8 +103,37 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
     }
 
     @Override
-    public Object singleOrg(CoreSafeMonthScorePageDto request) {
-        return null;
+    public CoreSafeMonthScoreDetailVo singleOrg(CoreSafeMonthScorePageDto request) {
+        CoreSafeMonthScoreDetailVo detailVo=new CoreSafeMonthScoreDetailVo();
+        SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        List<Long> collect = Arrays.stream(sysOrg.getPath().split("-")).map(Long::valueOf).collect(Collectors.toList());
+
+        List<SysOrg> sysOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() ->
+                orgService.selectOrgByIdList(collect, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        detailVo.setFirstOrgName(sysOrgList.get(0).getName());
+        detailVo.setSecondOrgName(sysOrgList.get(1).getName());
+        detailVo.setOrgTypeText(OrgTypeEnum.getName(sysOrg.getType()));
+
+       List<MonthScoreDetailDictDetailTempVo> tempVoList= baseMapper.selectDetailVoData(request);
+        Map<String, List<MonthScoreDetailDictDetailTempVo>> listMap = tempVoList.stream().collect(Collectors.groupingBy(MonthScoreDetailDictDetailTempVo::getTypeCode));
+        List<MonthScoreDetailDictVo> dataList = new ArrayList<MonthScoreDetailDictVo>();
+        detailVo.setDataList(dataList);
+        for (String typeCode : listMap.keySet()) {
+
+            List<MonthScoreDetailDictDetailTempVo> voList = listMap.get(typeCode);
+            MonthScoreDetailDictVo dictVo = new MonthScoreDetailDictVo();
+            dictVo.setTypeCode(typeCode);
+            dictVo.setTypeName(voList.get(0).getTypeName());
+
+            List<MonthScoreDetailDictDetailVo> detailVoList = BeanHelper.copyProperties(voList, MonthScoreDetailDictDetailVo.class);
+            dictVo.setDetailList(detailVoList);
+
+            dataList.add(dictVo);
+        }
+
+
+        return detailVo;
     }
 
     /**
@@ -162,13 +194,13 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
     @Override
     public void checkAndSaveBatchData(List<CoreSafeMonthScore> listSafeMonthScore) {
         for (CoreSafeMonthScore monthScore : listSafeMonthScore) {
-            checkAndSave(monthScore);
+            saveOrUpdateData(monthScore);
         }
     }
 
     @Override
     public void checkAndSaveData(CoreSafeMonthScore monthScore) {
-        checkAndSave(monthScore);
+        saveOrUpdateData(monthScore);
     }
 
     private void checkAndSave(CoreSafeMonthScore monthScore) {
@@ -182,4 +214,8 @@ public class CoreSafeMonthScoreServiceImpl extends ServiceImpl<CoreSafeMonthScor
             updateById(monthScore);
         }
     }
+
+    private void saveOrUpdateData(CoreSafeMonthScore safeMonthScore) {
+        baseMapper.saveOrUpdateData(safeMonthScore);
+    }
 }

+ 32 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/safetyindex/CoreSafeMonthScoreMapper.xml

@@ -204,4 +204,36 @@
         WHERE q.data_year is not null
         GROUP BY q.org_id, q.org_name, q.data_year, q.data_month
     </select>
+
+    <insert id="saveOrUpdateData">
+        insert into core_safe_month_score(id,org_id, level_id, data_year, data_month, org_score, release_status, org_path)
+            values (#{id},#{orgId},#{levelId},#{dataYear},#{dataMonth},#{orgScore},#{releaseStatus},#{orgPath})
+        ON DUPLICATE KEY UPDATE id = VALUES(id), level_id = VALUES(level_id), org_score = VALUES(org_score),
+                                release_status = VALUES(release_status), org_path = VALUES(org_path);
+    </insert>
+
+    <select id="selectDetailVoData"
+            resultType="com.xunmei.common.core.domain.safetyindex.vo.MonthScoreDetailDictDetailTempVo">
+        select q.typeCode,q.typeName, d.code as projectCode, d.name projectName,d2.code as pointName,d2.name pointName, q.indicator_note itemName, q.score score, q.times times,q.score_real realScore,q.rule_id indexId
+        from core_safety_dict d,
+             (
+                 select q.*, c.project_code,c.point_code
+                 from core_safety_index_calculate_rule c,
+                      (
+                          select item.indicator_note, q.*
+                          from core_safety_index_calculate_rule_item item,
+                               (
+                                   select b.score_real, a.times, a.item_id, a.rule_id,a.score,a.typeCode,a.typeName
+                                   from core_safety_deduct_data b,
+                                        (
+                                            select rule_id, item_id, times, org_id,data_month,data_year,score,t.code as typeCode,t.name as typeName
+                                            from core_safety_source_data,
+                                                 (select name,code from core_safety_dict sd where parent_code=-1) t
+                                            where  org_id = #{request.orgId} and data_year = #{request.dataYear} and data_month = #{request.dataMonth} and t.code=type_code) a
+                                   where b.rule_id = a.rule_id
+                                     and b.org_id = a.org_id and b.data_year = a.data_year and b.data_month = a.data_month) q
+                          where item.id = q.item_id) q
+                 where c.id = q.rule_id) q,core_safety_dict d2
+        where d.code = q.project_code and d2.code = q.point_code
+    </select>
 </mapper>