Browse Source

督办相关

hotfix/zhy
Jackwang 4 years ago
parent
commit
03f2dfef56
  1. 10
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java
  2. 5
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java
  3. 30
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemAnalysisController.java
  4. 48
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemAnalysisDao.java
  5. 21
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/DifficultItemOverseeEntity.java
  6. 53
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDifficultConfigEntity.java
  7. 19
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/ItemAnalysisService.java
  8. 73
      epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemAnalysisServiceImpl.java
  9. 79
      epdc-cloud-analysis-pc/src/main/resources/mapper/item/ItemAnalysisDao.xml

10
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java

@ -39,4 +39,14 @@ public interface AdminFeignClient {
*/
@GetMapping("/sys/dept/getParentAndAllDept/{deptId}")
Result<ParentAndAllDeptDTO> getParentAndAllDept(@PathVariable("deptId") String deptId);
/**
* @describe: 根据用户ID查询角色ID用逗号隔开
* @author wangtong
* @date 2021/8/27 15:03
* @params [userId]
* @return com.elink.esua.epdc.commons.tools.utils.Result<java.lang.String>
*/
@GetMapping("sys/role/getRoleStringIdsByUserId/{userId}")
Result<String> getRoleStringIdsByUserId(@PathVariable("userId")Long userId);
}

5
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java

@ -26,4 +26,9 @@ public class AdminFeignClientFallback implements AdminFeignClient {
public Result<ParentAndAllDeptDTO> getParentAndAllDept(String depId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId);
}
@Override
public Result<String> getRoleStringIdsByUserId(Long userId) {
return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getRoleStringIdsByUserId", userId);
}
}

30
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemAnalysisController.java

@ -19,13 +19,11 @@ package com.elink.esua.epdc.modules.item.controller;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.analysis.pc.item.DifficultItemOverseeDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.result.*;
import com.elink.esua.epdc.modules.item.service.ItemAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@ -134,4 +132,28 @@ public class ItemAnalysisController {
public Result getCategoryOrgDaily(String date) {
return itemAnalysisService.getCategoryOrgDaily(date);
}
/**
* @describe: 督办详情
* @author wangtong
* @date 2021/8/26 10:48
* @params [id]
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
@GetMapping("difficultItemOversee/{id}")
public Result difficultItemOversee(@PathVariable("id") String id) {
return itemAnalysisService.difficultItemOversee(id);
}
/**
* @describe: 督办
* @author wangtong
* @date 2021/8/26 15:16
* @params [dto]
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
@PostMapping("saveOversee")
public Result saveOversee(@RequestBody DifficultItemOverseeDTO dto) {
return itemAnalysisService.saveOversee(dto);
}
}

48
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemAnalysisDao.java

@ -18,10 +18,13 @@
package com.elink.esua.epdc.modules.item.dao;
import com.elink.esua.epdc.commons.mybatis.dao.BaseDao;
import com.elink.esua.epdc.dto.analysis.pc.item.DifficultItemOverseeDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.HotItemListFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.ItemAnalysisFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.ItemSurveyFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.result.*;
import com.elink.esua.epdc.modules.item.entity.ItemDifficultConfigEntity;
import com.elink.esua.epdc.modules.item.entity.RoleDifficultDeptEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -112,4 +115,49 @@ public interface ItemAnalysisDao extends BaseDao<ItemResultDTO> {
List<CategoryOrgDailyResultDTO> getCategoryCommDaily(@Param("date") String date);
List<CategoryOrgDailyResultDTO> getCategoryStreetDaily(@Param("date") String date);
/**
* @describe: 查询评判难点堵点的标准
* @author wangtong
* @date 2021/8/26 10:19
* @params []
* @return com.elink.esua.epdc.modules.item.entity.ItemDifficultConfigEntity
*/
ItemDifficultConfigEntity selectItemDifficultConfig();
/**
* @describe: 督办详情
* @author wangtong
* @date 2021/8/26 10:54
* @params [id]
* @return com.elink.esua.epdc.dto.analysis.pc.item.result.DifficultItemResultDTO
*/
DifficultItemResultDTO difficultItemOversee(@Param("id") String id);
/**
* @describe: 查询督办记录
* @author wangtong
* @date 2021/8/26 13:43
* @params [itemId]
* @return java.util.List<com.elink.esua.epdc.dto.analysis.pc.item.DifficultItemOverseeDTO>
*/
List<DifficultItemOverseeDTO> getOverseeListById(@Param("itemId") String itemId);
/**
* @describe:根据项目id查询最新的相关部门
* @author wangtong
* @date 2021/8/27 14:44
* @params [itemId]
* @return java.lang.Long
*/
Long selectDeptByItemId(@Param("itemId") String itemId);
/**
* @describe: 通过角色和部门查询信息
* @author wangtong
* @date 2021/8/27 15:23
* @params [deptId, roleIStrings]
* @return java.util.List<com.elink.esua.epdc.modules.item.entity.RoleDifficultDeptEntity>
*/
List<RoleDifficultDeptEntity> checkDeptListByRole(@Param("deptId") Long deptId,@Param("roleIStrings") String roleIStrings);
}

21
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/DifficultItemOverseeEntity.java

@ -39,9 +39,9 @@ public class DifficultItemOverseeEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
/**
* 难点堵点ID
* 项目ID
*/
private String difficultId;
private String itemId;
/**
* 督办人ID
@ -83,4 +83,21 @@ public class DifficultItemOverseeEntity extends BaseEpdcEntity {
*/
private String beOverseeDeptName;
/**
* 被督办父所有部门ID
*/
private String parentDeptIds;
/**
* 被督办父所有部门
*/
private String parentDeptNames;
/**
* 被督办所有部门ID
*/
private String allDeptIds;
/**
* 被督办所有部门
*/
private String allDeptNames;
}

53
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDifficultConfigEntity.java

@ -0,0 +1,53 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.modules.item.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 项目难点堵点配置表 项目难点堵点配置表
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2021-08-12
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("epdc_item_difficult_config")
public class ItemDifficultConfigEntity extends BaseEpdcEntity {
private static final long serialVersionUID = 1L;
/**
* 最小耗时 单位小时
*/
private Integer minSpendTime;
/**
* 最小处理次数
*/
private Integer minHandleTotal;
/**
* 最小涉及部门
*/
private Integer minDeptTotal;
}

19
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/ItemAnalysisService.java

@ -2,6 +2,7 @@ package com.elink.esua.epdc.modules.item.service;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.dto.analysis.pc.item.DifficultItemOverseeDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.HotItemListFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.ItemAnalysisFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.ItemSurveyFormDTO;
@ -109,4 +110,22 @@ public interface ItemAnalysisService {
* @date 2021/3/23 9:13
*/
Result getCategoryOrgDaily(String date);
/**
* @describe: 督办详情
* @author wangtong
* @date 2021/8/26 10:48
* @params [id]
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
Result difficultItemOversee(String id);
/**
* @describe: 督办
* @author wangtong
* @date 2021/8/26 15:16
* @params [dto]
* @return com.elink.esua.epdc.commons.tools.utils.Result
*/
Result saveOversee(DifficultItemOverseeDTO dto);
}

73
epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemAnalysisServiceImpl.java

@ -1,9 +1,11 @@
package com.elink.esua.epdc.modules.item.service.impl;
import com.alibaba.nacos.client.naming.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.EpmetConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.exception.RenException;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.security.user.SecurityUser;
import com.elink.esua.epdc.commons.tools.security.user.UserDetail;
@ -11,11 +13,18 @@ import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.datasources.DataSourceNames;
import com.elink.esua.epdc.datasources.annotation.DataSource;
import com.elink.esua.epdc.dto.ParentAndAllDeptDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.DifficultItemOverseeDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.HotItemListFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.ItemAnalysisFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.form.ItemSurveyFormDTO;
import com.elink.esua.epdc.dto.analysis.pc.item.result.*;
import com.elink.esua.epdc.feign.AdminFeignClient;
import com.elink.esua.epdc.modules.item.dao.DifficultItemOverseeDao;
import com.elink.esua.epdc.modules.item.dao.ItemAnalysisDao;
import com.elink.esua.epdc.modules.item.entity.DifficultItemOverseeEntity;
import com.elink.esua.epdc.modules.item.entity.ItemDifficultConfigEntity;
import com.elink.esua.epdc.modules.item.entity.RoleDifficultDeptEntity;
import com.elink.esua.epdc.modules.item.service.ItemAnalysisService;
import com.elink.esua.epdc.utils.EpmetUtils;
import com.elink.esua.epdc.utils.ScreenDataUtils;
@ -43,6 +52,12 @@ public class ItemAnalysisServiceImpl extends BaseServiceImpl<ItemAnalysisDao, It
@Autowired
private EpmetUtils epmetUtils;
@Autowired
private AdminFeignClient adminFeignClient;
@Autowired
private DifficultItemOverseeDao difficultItemOverseeDao;
/**
* @param params
* @return com.elink.esua.epdc.dto.analysis.pc.item.result.ItemResultDTO
@ -98,6 +113,13 @@ public class ItemAnalysisServiceImpl extends BaseServiceImpl<ItemAnalysisDao, It
return new PageData<>(null, 0);
}
params.put("deptIdList", userDetail.getDeptIdList());
//查询评判难点堵点的标准
ItemDifficultConfigEntity config = baseDao.selectItemDifficultConfig();
if(config != null){
params.put("takeTime",config.getMinSpendTime());
params.put("deptNum",config.getMinDeptTotal());
params.put("operatNum",config.getMinHandleTotal());
}
IPage<DifficultItemResultDTO> page = getPage(params);
List<DifficultItemResultDTO> list = baseDao.selectListDifficultItemResultDTO(params);
return new PageData<>(list, page.getTotal());
@ -183,4 +205,55 @@ public class ItemAnalysisServiceImpl extends BaseServiceImpl<ItemAnalysisDao, It
epmetUtils.httpPost(EpmetConstant.EPMET_PROJECT_CATEGORY_ORG_DAILY, dataJson);
return new Result();
}
@Override
public Result difficultItemOversee(String id) {
DifficultItemResultDTO result = baseDao.difficultItemOversee(id);
List<DifficultItemOverseeDTO> overseeList = baseDao.getOverseeListById(id);
result.setOverseeList(overseeList);
return new Result().ok(result);
}
@DataSource(name = DataSourceNames.FOURTH)
@Override
public Result saveOversee(DifficultItemOverseeDTO dto) {
UserDetail user = SecurityUser.getUser();
DifficultItemOverseeEntity entity = new DifficultItemOverseeEntity();
entity.setItemId(dto.getId());
entity.setOverseeContent(dto.getOverseeContent());
entity.setOverseeUserId(user.getId().toString());
entity.setOverseeUserName(user.getRealName());
entity.setOverseeDeptId(user.getDeptId().toString());
entity.setOverseeDeptName(user.getDeptName());
entity.setOverseeTime(new Date());
//被督办相关信息
//查询该项目最新相关部门
Long deptId = baseDao.selectDeptByItemId(dto.getId());
if(null == deptId){
return new Result().error("未查到该项目的相关部门");
}
Result<ParentAndAllDeptDTO> parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(deptId));
if (!parentResult.success() || parentResult.getData() == null) {
throw new RenException("获取部门信息失败");
}
ParentAndAllDeptDTO deptDTO = parentResult.getData();
//检查该用户的所属角色是否有督办该部门的权限
Result<String> roleResult = adminFeignClient.getRoleStringIdsByUserId(user.getId());
if (!roleResult.success()) {
throw new RenException("获取用户角色失败");
}
List<RoleDifficultDeptEntity> deptList = baseDao.checkDeptListByRole(deptId,roleResult.getData());
if(CollectionUtils.isEmpty(deptList)){
return new Result().error("您暂时没有督办<"+deptDTO.getGrid()+">的权限");
}
//插入数据
entity.setBeOverseeDept(deptDTO.getGridId().toString());
entity.setBeOverseeDeptName(deptDTO.getGrid());
entity.setAllDeptIds(deptDTO.getAllDeptIds());
entity.setAllDeptNames(deptDTO.getAllDeptNames());
entity.setParentDeptIds(deptDTO.getParentDeptIds());
entity.setParentDeptNames(deptDTO.getParentDeptNames());
difficultItemOverseeDao.insert(entity);
return new Result().ok("督办成功!");
}
}

79
epdc-cloud-analysis-pc/src/main/resources/mapper/item/ItemAnalysisDao.xml

@ -120,6 +120,7 @@
t.ITEM_STATE,
t.processedTime,
t.takeTime,
if(t.st='0','已督办','未督办')as overseeName,
t.ALL_DEPT_NAMES,
t.EVALUATION_SCORE
FROM (
@ -138,6 +139,8 @@
eihp.ITEM_ID = ei.ID AND eihp.STATE IN (5, 10) LIMIT 1 ) AS processedTime,
( SELECT TIMESTAMPDIFF( HOUR, MIN(eihp.CREATED_TIME), MAX(eihp.CREATED_TIME) ) FROM
<include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_handle_process eihp WHERE eihp.DEL_FLAG = '0' AND eihp.ITEM_ID = ei.ID ) AS takeTime,
if((select id from <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_difficult_item_oversee o where ei.id=o.item_id and o.DEL_FLAG='0'
group by o.item_id)!='','0','1') as st,
ei.ALL_DEPT_NAMES,
ei.EVALUATION_SCORE
FROM
@ -190,6 +193,15 @@
<if test="reportFlag != null and reportFlag != ''">
AND reportFlag = #{reportFlag}
</if>
<if test="takeTime != null and takeTime != ''">
and (t.takeTime >= #{takeTime} or
t.operatNum >= #{operatNum} or
t.deptNum >= #{deptNum}
)
</if>
<if test="overseeName != null and overseeName != ''">
and t.st=#{overseeName}
</if>
</select>
<!-- 区域调度-解决中项目列表 -->
@ -554,4 +566,71 @@
ei.CATEGORY_CODE,
street.id
</select>
<select id="selectItemDifficultConfig"
resultType="com.elink.esua.epdc.modules.item.entity.ItemDifficultConfigEntity">
SELECT *
FROM <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_analysis"/>.`epdc_item_difficult_config`
where DEL_FLAG='0'
</select>
<select id="difficultItemOversee" resultType="com.elink.esua.epdc.dto.analysis.pc.item.result.DifficultItemResultDTO">
SELECT
t.ID,
t.ITEM_CONTENT,
t.CREATED_TIME,
t.operatNum,
t.reportFlag,
t.deptNum,
t.ITEM_STATE,
t.processedTime,
t.takeTime,
t.ALL_DEPT_NAMES,
t.EVALUATION_SCORE
FROM (
SELECT
ei.ID,
ei.ITEM_CONTENT,
ei.CREATED_TIME,
( SELECT COUNT( eihp.ID ) FROM <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_handle_process eihp WHERE eihp.DEL_FLAG = '0' AND
eihp.ITEM_ID = ei.ID ) AS operatNum,
( SELECT CASE WHEN COUNT(eigp.ID) > 0 THEN '1' ELSE '0' END FROM <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_grid_platform eigp
WHERE eigp.DEL_FLAG = '0' AND eigp.REFERENCE_ID = ei.ID ) AS reportFlag,
( SELECT COUNT(eid.ID) FROM <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_dept eid WHERE eid.DEL_FLAG = '0' AND eid.ITEM_ID = ei.ID
) AS deptNum,
ei.ITEM_STATE,
( SELECT eihp.CREATED_TIME FROM <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_handle_process eihp WHERE eihp.DEL_FLAG = '0' AND
eihp.ITEM_ID = ei.ID AND eihp.STATE IN (5, 10) LIMIT 1 ) AS processedTime,
( SELECT TIMESTAMPDIFF( HOUR, MIN(eihp.CREATED_TIME), MAX(eihp.CREATED_TIME) ) FROM
<include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_handle_process eihp WHERE eihp.DEL_FLAG = '0' AND eihp.ITEM_ID = ei.ID ) AS takeTime,
ei.ALL_DEPT_NAMES,
ei.EVALUATION_SCORE
FROM
<include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item ei
WHERE
ei.DEL_FLAG = '0') t
WHERE 1=1
and t.id=#{id}
</select>
<select id="getOverseeListById"
resultType="com.elink.esua.epdc.dto.analysis.pc.item.DifficultItemOverseeDTO">
select *
from <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_difficult_item_oversee
where DEL_FLAG='0'
and ITEM_ID=#{itemId}
order by CREATED_TIME desc
</select>
<select id="selectDeptByItemId" resultType="java.lang.Long">
select DEPT_ID
from <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_item_dept
where DEL_FLAG='0'
and ITEM_ID=#{itemId}
order by CREATED_TIME desc
limit 1
</select>
<select id="checkDeptListByRole" resultType="com.elink.esua.epdc.modules.item.entity.RoleDifficultDeptEntity">
select *
from <include refid="com.elink.esua.epdc.modules.common.dao.EpdcTableNameDao.tb_events"/>.epdc_role_difficult_dept
where DEL_FLAG='0'
and FIND_IN_SET(ROLE_ID,#{roleIStrings})
and DEPT_ID=#{deptId}
</select>
</mapper>

Loading…
Cancel
Save