From f2a9768f0c86751e1f825aed5745dbce6ba352ce Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Wed, 27 Nov 2024 15:53:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=9C=80=E6=B1=821127?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- easy-api/pom.xml | 64 +++---- .../controller/HuzhouProjectController.java | 20 +++ .../huzhou/controller/WorkflowController.java | 5 + .../modules/huzhou/dao/WorkflowMapper.java | 2 +- .../dao/mapping/HuzhouProjectinfoMapper.xml | 2 +- .../huzhou/dao/mapping/WorkflowMapper.xml | 16 ++ .../huzhou/entity/HuzhouProjectinfo.java | 4 + .../service/IHuzhouProjectinfoService.java | 4 + .../huzhou/service/IWorkflowService.java | 2 + .../impl/HuzhouProjectinfoServiceImpl.java | 156 +++++++++++++++++- .../service/impl/WorkflowServiceImpl.java | 60 ++++++- .../modules/huzhou/vo/MoneyDetailOV.java | 69 ++++++++ .../huzhou/vo/ProjectContactShouYeOV.java | 21 +++ .../modules/huzhou/vo/ProjectSummaryOV.java | 3 +- 14 files changed, 383 insertions(+), 45 deletions(-) create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/MoneyDetailOV.java create mode 100644 huzhou/src/main/java/com/easy/admin/modules/huzhou/vo/ProjectContactShouYeOV.java diff --git a/easy-api/pom.xml b/easy-api/pom.xml index 85629e9..5efe217 100644 --- a/easy-api/pom.xml +++ b/easy-api/pom.xml @@ -89,39 +89,39 @@ - - - + + + + + + - - com.gitee.lcm742320521 - classfinal-maven-plugin - 1.4.1 - - - 123456 - - com.easy.admin - - *.properties,*.yml,com/easy/admin/**/mapping/*.xml - - - huzhou-1.1.0.jar - - - - - 7E38231D00D8427BB1E463E0BD7375EDD41D8CD98F00B204E9800998ECF8427ED41D8CD98F00B204E9800998ECF8427E - - - - package - - classFinal - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java index 40cd2be..1638a1d 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/HuzhouProjectController.java @@ -380,4 +380,24 @@ public class HuzhouProjectController { HashMap result = projectinfoService.getUrtTaskStatusNum(projectinfo); return Result.ok(result); } + /** + * 项目金额统计 + * @param projectid 项目id + * @return 返回值 + */ + @GetMapping("/queryMoneyDetail") + public Result queryMoneyDetail(String projectid){ + MoneyDetailOV result = projectinfoService.queryMoneyDetail(projectid); + return Result.ok(result); + } + + /** + * 项目联系人首页统计数据 + * @return + */ + @GetMapping("/projectContactShouYe") + public Result> shouyeProjectContact(){ + List result = projectinfoService.projectContactShouYe(); + return Result.ok(result); + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java index 9cea3f1..bcf790c 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/controller/WorkflowController.java @@ -385,4 +385,9 @@ public class WorkflowController { Page page = workflowService.getURTUnApprovedDaysPage(superLeaderApproveInfo,pageNo,pageSize); return Result.OK(page); } + @GetMapping("/getOutDay") + public Result getOutDay(){ + Map map = workflowService.getOutDays(); + return Result.OK(map); + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/WorkflowMapper.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/WorkflowMapper.java index b41120e..ff7c60c 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/WorkflowMapper.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/WorkflowMapper.java @@ -25,5 +25,5 @@ public interface WorkflowMapper extends BaseMapper { List getUnApprovedDays(@Param("superLeader") String superLeader, @Param("reform") String reform); Page getURTDepInfo(Page page); List getURTUnApprovedDays(@Param("urtDep") String urtDep); - + List getUnApprovedDaysBySuperLeader(@Param("superLeader") String superLeader); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml index 085f6e1..1863cef 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/dao/mapping/HuzhouProjectinfoMapper.xml @@ -541,7 +541,7 @@ order by create_date desc + \ No newline at end of file diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java index 158924d..17d454d 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/entity/HuzhouProjectinfo.java @@ -159,5 +159,9 @@ public class HuzhouProjectinfo extends BaseEntity { * 排序 */ private Integer sort; + /** + * 造价建议金额 + */ + private Double suggestedCostAmount; } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java index 6686b69..f0ccfd2 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IHuzhouProjectinfoService.java @@ -213,5 +213,9 @@ public interface IHuzhouProjectinfoService extends IService { HashMap getUrtTaskStatusNum(HuzhouProjectinfoOV projectinfom); CountNumberOV countStopNumber(); + + MoneyDetailOV queryMoneyDetail(String projectid); + + List projectContactShouYe(); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IWorkflowService.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IWorkflowService.java index 4949f6d..615bd12 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IWorkflowService.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/IWorkflowService.java @@ -55,4 +55,6 @@ public interface IWorkflowService { com.baomidou.mybatisplus.extension.plugins.pagination.Page getSuperLeaderApproveInfo(SuperLeaderApprovalDetailsOV superLeaderApproveInfo, Integer pageNo, Integer pageSize); com.baomidou.mybatisplus.extension.plugins.pagination.Page getURTUnApprovedDaysPage(SuperLeaderApprovalDetailsOV superLeaderApproveInfo, Integer pageNo, Integer pageSize); + + Map getOutDays(); } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java index edbb284..2ff42cd 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/HuzhouProjectinfoServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.easy.admin.auth.model.SysRole; import com.easy.admin.auth.model.SysUser; import com.easy.admin.auth.service.SysUserService; import com.easy.admin.common.core.common.select.Select; @@ -23,6 +24,7 @@ import com.easy.admin.modules.huzhou.vo.*; import com.easy.admin.sys.model.SysDict; import com.easy.admin.sys.service.SysDictService; +import com.easy.admin.util.ShiroUtil; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.runtime.ProcessInstance; @@ -100,7 +102,9 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl getProjectSummaryPage(HuzhouProjectinfo projectInfo, Integer pageNo, Integer pageSize,String orderBy,String orderDir){ - IPage result = new Page<>(); + IPage result = new Page<>(); + pageSize=10000; List dutyWorkplaceList=List.of("湖州市第一人民医院","湖州市中心医院","湖州市第三人民医院","湖州市妇幼保健院", "湖州市中医院", "医政处","妇幼处","科教处","体改处","规信处","中医处","财审处","机关党委","人事处"); List adminDivisionList=List.of("吴兴区","南浔区","德清县","长兴县","安吉县"); @@ -1506,6 +1511,66 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl currentPageData = projectSummaryPageList.subList(fromIndex, Math.min(fromIndex + pageSize, projectSummaryPageList.size())); result.setSize(pageSize).setCurrent(pageNo).setRecords(currentPageData).setTotal(projectSummaryPageList.size()); } + List records = result.getRecords(); + //找出DutyWorkplace 是"湖州市第一人民医院","湖州市中心医院","湖州市第三人民医院","湖州市妇幼保健院", "湖州市中医院" 为一组list 分组叫市委建委 + //找出DutyWorkplace是"医政处","妇幼处","科教处","体改处","规信处","中医处","财审处","机关党委","人事处" 为一组list 分组叫市级医院 + //找出DutyWorkplace 是 "吴兴区","南浔区","德清县","长兴县","安吉县" 为一组list 分组叫区县 + //分组后的先后顺序和原本一致 + //创建一个List map key有centralMoney,totalMoney,projectNum 是各组的和,projectProgress 是各组的平均值 children 是各组的list + // 定义分组条件 + Set shijiYiyuan = new HashSet<>(Arrays.asList( + "湖州市第一人民医院", "湖州市中心医院", "湖州市第三人民医院", "湖州市妇幼保健院", "湖州市中医院" + )); + Set shiweiJianwei = new HashSet<>(Arrays.asList( + "医政处", "妇幼处", "科教处", "体改处", "规信处", "中医处", "财审处", "机关党委", "人事处" + )); + Set quxian = new HashSet<>(Arrays.asList( + "吴兴区", "南浔区", "德清县", "长兴县", "安吉县" + )); + + // 分组 + Map> groupedRecords = new HashMap<>(); + groupedRecords.put("市委建委", records.stream().filter(r -> shiweiJianwei.contains(r.getDutyWorkplace())).collect(Collectors.toList())); + groupedRecords.put("市级医院", records.stream().filter(r -> shijiYiyuan.contains(r.getDutyWorkplace())).collect(Collectors.toList())); + groupedRecords.put("区县", records.stream().filter(r -> quxian.contains(r.getDutyWorkplace())).collect(Collectors.toList())); + + // 创建最终的 List + List> resultList = new ArrayList<>(); + + for (Map.Entry> entry : groupedRecords.entrySet()) { + String groupName = entry.getKey(); + List groupList = entry.getValue(); + + BigDecimal totalCentralMoney = groupList.stream() + .map(ProjectSummaryOV::getCentralMoney) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal totalTotalMoney = groupList.stream() + .map(ProjectSummaryOV::getTotalMoney) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + int totalProjectNum = groupList.stream() + .mapToInt(ProjectSummaryOV::getProjectNum) + .sum(); + + double averageProjectProgress = groupList.stream() + .map(ProjectSummaryOV::getProjectProgress) + .map(Double::parseDouble) + .mapToDouble(Double::doubleValue) + .average() + .orElse(0.0); + + Map groupInfo = new HashMap<>(); + groupInfo.put("dutyWorkplace",groupName); + groupInfo.put("centralMoney", totalCentralMoney); + groupInfo.put("totalMoney", totalTotalMoney); + groupInfo.put("projectNum", totalProjectNum); + groupInfo.put("projectProgress", averageProjectProgress); + groupInfo.put("children", groupList); + + resultList.add(groupInfo); + } + result.setRecords(resultList); }else { result.setSize(pageSize).setCurrent(pageNo).setRecords(Collections.emptyList()).setTotal(0); } @@ -1776,6 +1841,8 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl contractMoneyList = originalList.stream().map(x -> x.getContractMoney()).collect(Collectors.toList()); List contractCentralMoneyList = originalList.stream().map(x -> x.getContractCentralMoney()).collect(Collectors.toList()); List projectProgressList = originalList.stream().map(x -> x.getProjectProgress()).collect(Collectors.toList()); + List approvalCentralMoneyList = originalList.stream().map(x -> x.getApprovalCentralMoney()).collect(Collectors.toList()); + List approvalTotalMoneyList = originalList.stream().map(x -> x.getApprovalTotalMoney()).collect(Collectors.toList()); List empList=new ArrayList<>(); if (Objects.equals(orderBy, "projectNum")&& Objects.equals(orderDir, "descend")){ @@ -1830,6 +1897,14 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImplx.getProjectProgress()!=null).sorted(Comparator.comparing(ProjectSummaryOV::getProjectProgress).reversed()).collect(Collectors.toList()); empList = originalList.stream().filter(x -> x.getProjectProgress() == null).collect(Collectors.toList()); sortedList.addAll(empList); + }else if (Objects.equals(orderBy, "approvalCentralMoney")&& Objects.equals(orderDir, "descend")){ + sortedList=approvalCentralMoneyList.isEmpty()?originalList:originalList.stream().filter(x->x.getApprovalCentralMoney()!=null).sorted(Comparator.comparing(ProjectSummaryOV::getApprovalCentralMoney).reversed()).collect(Collectors.toList()); + empList = originalList.stream().filter(x -> x.getApprovalCentralMoney() == null).collect(Collectors.toList()); + sortedList.addAll(empList); + }else if (Objects.equals(orderBy, "approvalTotalMoney")&& Objects.equals(orderDir, "ascend")){ + sortedList=approvalCentralMoneyList.isEmpty()?originalList:originalList.stream().filter(x->x.getApprovalCentralMoney()!=null).sorted(Comparator.comparing(ProjectSummaryOV::getApprovalCentralMoney).reversed()).collect(Collectors.toList()); + empList = originalList.stream().filter(x -> x.getApprovalCentralMoney() == null).collect(Collectors.toList()); + sortedList.addAll(empList); } return sortedList; } @@ -2328,4 +2403,81 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl projectContactShouYe() { + ArrayList projectContactShouYeOVS = new ArrayList<>(); + HuzhouProjectinfo projectInfo = new HuzhouProjectinfo(); + projectInfo.setStage("0"); + ProjectInfoAuthSelect projectInfoAuthSelect = CommonUtils.setGetProjectInfoAuth(projectInfo); + List projectinfoOVList = projectinfoMapper.getProjectAndChildInfoPageList(projectInfoAuthSelect); + if(projectinfoOVList.size()>0){ + for (HuzhouProjectinfoOV huzhouProjectinfoOV : projectinfoOVList) { + ProjectContactShouYeOV projectContactShouYeOV = new ProjectContactShouYeOV(); + projectContactShouYeOV.setProjectName(huzhouProjectinfoOV.getProjectName()); + ArrayList planInfoMainTimelineList = planinfoService.getPlanInfoMainTimelineList(huzhouProjectinfoOV.getId()); + if(planInfoMainTimelineList.size()>0){ + + // 创建一个新的 "项目申报阶段" 项 + HuzhouPlaninfoOV newPlanInfo = new HuzhouPlaninfoOV(); + newPlanInfo.setTaskName("项目申报阶段"); + newPlanInfo.setPercent("100"); + HuzhouPlaninfoOV childPlanInfo = new HuzhouPlaninfoOV(); + childPlanInfo.setTaskName("项目申报完成"); + childPlanInfo.setIsfinish("2"); + newPlanInfo.setChildren(Arrays.asList(childPlanInfo)); + // 过滤掉 "绩效评估阶段" 的项 + List filteredList = planInfoMainTimelineList.stream() + .filter(planInfo -> !"绩效评估阶段".equals(planInfo.getTaskName())) + .collect(Collectors.toList()); + + // 在列表最前面添加 "项目申报阶段" 项 + ArrayList updatedList = new ArrayList<>(); + updatedList.add(newPlanInfo); + updatedList.addAll(filteredList); + projectContactShouYeOV.setProjectProgressDetail(updatedList);//要处理一下 + + projectContactShouYeOV.setProjectTotalProgress(planInfoMainTimelineList.get(0).getTotalPercent()); + }else{ + projectContactShouYeOV.setProjectProgressDetail(new ArrayList<>()); + projectContactShouYeOV.setProjectTotalProgress("0"); + } + + //获取项目合同信息 + Map totalMap = contractinfoMapper.getTotalByProjectIds(Arrays.asList(huzhouProjectinfoOV.getId())); + //获取已支付金额 + Map paymentsMap = contractinfoMapper.getPaymentsByProjectIds(Arrays.asList(huzhouProjectinfoOV.getId())); + if(totalMap!=null&&paymentsMap!=null){ + BigDecimal totalAcount = totalMap.get("totalAcount"); + BigDecimal totalcentralAcount = totalMap.get("centralAcount"); + BigDecimal totalPayment = paymentsMap.get("totalPayment"); + BigDecimal centralPayment = paymentsMap.get("centralPayment"); + projectContactShouYeOV.setProjectFundPaymentProgress(totalPayment.divide(totalAcount, 4, BigDecimal.ROUND_HALF_UP).toString()); + projectContactShouYeOV.setCentralFundPaymentSituation(centralPayment.divide(totalcentralAcount, 4, BigDecimal.ROUND_HALF_UP).toString()); + projectContactShouYeOVS.add(projectContactShouYeOV); + }else{ + projectContactShouYeOV.setProjectFundPaymentProgress("0"); + projectContactShouYeOV.setCentralFundPaymentSituation("0"); + projectContactShouYeOVS.add(projectContactShouYeOV); + } + + } + } + return projectContactShouYeOVS; + } } diff --git a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java index 1dd8256..2be862e 100644 --- a/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java +++ b/huzhou/src/main/java/com/easy/admin/modules/huzhou/service/impl/WorkflowServiceImpl.java @@ -4,8 +4,7 @@ package com.easy.admin.modules.huzhou.service.impl; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONObject; -import com.alibaba.fastjson.JSON; + import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.easy.admin.activiti.constant.ActivitiTaskStatusConst; @@ -15,16 +14,15 @@ import com.easy.admin.activiti.model.ActivitiProcessDefinitionVO; import com.easy.admin.activiti.model.ActivitiTask; import com.easy.admin.activiti.service.ActivitiModelService; import com.easy.admin.activiti.service.ActivitiProcessDefinitionService; -import com.easy.admin.activiti.service.ActivitiTaskService; -import com.easy.admin.auth.dao.SysUserRoleMapper; + +import com.easy.admin.auth.model.SysRole; import com.easy.admin.auth.model.SysUser; import com.easy.admin.auth.model.SysUserRole; +import com.easy.admin.auth.service.SysUserRoleService; import com.easy.admin.auth.service.SysUserService; -import com.easy.admin.common.api.vo.Result; import com.easy.admin.common.core.common.pagination.Page; import com.easy.admin.common.core.common.select.Select; -import com.easy.admin.common.core.util.ToolUtil; import com.easy.admin.common.util.CommonUtils; import com.easy.admin.modules.huzhou.dao.HuzhouPlaninfoMapper; import com.easy.admin.modules.huzhou.dao.HuzhouProcessinfoMapper; @@ -34,6 +32,7 @@ import com.easy.admin.modules.huzhou.entity.*; import com.easy.admin.modules.huzhou.service.IHuzhouProcessinfoService; import com.easy.admin.modules.huzhou.vo.*; +import com.easy.admin.sys.service.SysDictService; import com.easy.admin.util.ShiroUtil; import com.easy.admin.modules.huzhou.service.IWorkflowService; @@ -100,7 +99,9 @@ public class WorkflowServiceImpl implements IWorkflowService { @Autowired private SysUserService sysUserService; @Autowired - private SysUserRoleMapper userRoleMapper; + private SysUserRoleService userRoleService; + @Autowired + private SysDictService dictService; public WorkFlow createFlow(String processDefinitionKey,String id){ String definitionId = activitiModelService.selectProcessDefinitionId(processDefinitionKey); ActivitiProcessDefinitionVO activitiProcessDefinitionVO = new ActivitiProcessDefinitionVO(); @@ -674,7 +675,7 @@ public class WorkflowServiceImpl implements IWorkflowService { }else{ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysUserRole::getRoleId,candidateGroups.get(0)); - List sysUserRoles = userRoleMapper.selectList(queryWrapper); + List sysUserRoles = userRoleService.list(queryWrapper); String name=""; String phone=""; if(sysUserRoles.size()>0){ @@ -866,4 +867,47 @@ public class WorkflowServiceImpl implements IWorkflowService { }); return urtDepInfo; } + + @Override + public Map getOutDays() { + Map hashMap = new HashMap<>(); + SysUser currentUser = ShiroUtil.getCurrentUser(); + List roleList = currentUser.getRoleList(); + List targetRoles = List.of( + "中医处", "妇幼处", "医政处", "财审处", "体改处", + "组织人事处", "机关党委", "规信处", "市财政局", + "市发展改革委", "市数据局", "市委网信办", "市公安局", "市密码管理局" + ); + + Optional foundRole = roleList.stream() + .filter(role -> targetRoles.contains(role.getCode())) + .findFirst(); + + if (foundRole.isPresent()) { + SysRole role = foundRole.get(); + String code = role.getCode(); + List