diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java index 7655e32..cf380d2 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/AdminFeignClient.java +++ b/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 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 + */ + @GetMapping("sys/role/getRoleStringIdsByUserId/{userId}") + Result getRoleStringIdsByUserId(@PathVariable("userId")Long userId); } diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java index 7ec1c52..b37b48d 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/feign/fallback/AdminFeignClientFallback.java +++ b/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 getParentAndAllDept(String depId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getParentAndAllDept", depId); } + + @Override + public Result getRoleStringIdsByUserId(Long userId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getRoleStringIdsByUserId", userId); + } } diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemAnalysisController.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemAnalysisController.java index 5c6261a..5d5d231 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/controller/ItemAnalysisController.java +++ b/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); + } } diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemAnalysisDao.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemAnalysisDao.java index 7abe0dc..c819c38 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemAnalysisDao.java +++ b/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 { List getCategoryCommDaily(@Param("date") String date); List 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 + */ + List 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 + */ + List checkDeptListByRole(@Param("deptId") Long deptId,@Param("roleIStrings") String roleIStrings); } diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/DifficultItemOverseeEntity.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/DifficultItemOverseeEntity.java index 83f5f2c..65aea91 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/DifficultItemOverseeEntity.java +++ b/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; + } \ No newline at end of file diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDifficultConfigEntity.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/entity/ItemDifficultConfigEntity.java new file mode 100644 index 0000000..ae60130 --- /dev/null +++ b/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 + *

+ * 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. + *

+ * 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. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +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; + +} \ No newline at end of file diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/ItemAnalysisService.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/ItemAnalysisService.java index 36a58e6..8cf5e81 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/ItemAnalysisService.java +++ b/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); } diff --git a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemAnalysisServiceImpl.java b/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemAnalysisServiceImpl.java index b054a0b..dc21c07 100644 --- a/epdc-cloud-analysis-pc/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemAnalysisServiceImpl.java +++ b/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(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 page = getPage(params); List list = baseDao.selectListDifficultItemResultDTO(params); return new PageData<>(list, page.getTotal()); @@ -183,4 +205,55 @@ public class ItemAnalysisServiceImpl extends BaseServiceImpl 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 parentResult = adminFeignClient.getParentAndAllDept(String.valueOf(deptId)); + if (!parentResult.success() || parentResult.getData() == null) { + throw new RenException("获取部门信息失败"); + } + ParentAndAllDeptDTO deptDTO = parentResult.getData(); + //检查该用户的所属角色是否有督办该部门的权限 + Result roleResult = adminFeignClient.getRoleStringIdsByUserId(user.getId()); + if (!roleResult.success()) { + throw new RenException("获取用户角色失败"); + } + List 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("督办成功!"); + } } diff --git a/epdc-cloud-analysis-pc/src/main/resources/mapper/item/ItemAnalysisDao.xml b/epdc-cloud-analysis-pc/src/main/resources/mapper/item/ItemAnalysisDao.xml index b12c263..3e040a2 100644 --- a/epdc-cloud-analysis-pc/src/main/resources/mapper/item/ItemAnalysisDao.xml +++ b/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 .epdc_item_handle_process eihp WHERE eihp.DEL_FLAG = '0' AND eihp.ITEM_ID = ei.ID ) AS takeTime, + if((select id from .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 @@ AND reportFlag = #{reportFlag} + + and (t.takeTime >= #{takeTime} or + t.operatNum >= #{operatNum} or + t.deptNum >= #{deptNum} + ) + + + and t.st=#{overseeName} + @@ -554,4 +566,71 @@ ei.CATEGORY_CODE, street.id + + + + +