|
@ -32,6 +32,7 @@ import com.easy.admin.sys.service.SysDictService; |
|
|
import com.easy.admin.util.PasswordUtil; |
|
|
import com.easy.admin.util.PasswordUtil; |
|
|
import com.easy.admin.util.ShiroUtil; |
|
|
import com.easy.admin.util.ShiroUtil; |
|
|
import javassist.expr.NewArray; |
|
|
import javassist.expr.NewArray; |
|
|
|
|
|
import kotlin.collections.EmptyList; |
|
|
import org.activiti.engine.IdentityService; |
|
|
import org.activiti.engine.IdentityService; |
|
|
import org.activiti.engine.RuntimeService; |
|
|
import org.activiti.engine.RuntimeService; |
|
|
import org.activiti.engine.TaskService; |
|
|
import org.activiti.engine.TaskService; |
|
@ -512,6 +513,7 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
// return "0";
|
|
|
// return "0";
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//查询当前用户名下主项目和子项目的id
|
|
|
@Override |
|
|
@Override |
|
|
public Map<String,List<String>> findAllProjectIds() { |
|
|
public Map<String,List<String>> findAllProjectIds() { |
|
|
HuzhouProjectinfo projectInfo =new HuzhouProjectinfo(); |
|
|
HuzhouProjectinfo projectInfo =new HuzhouProjectinfo(); |
|
@ -533,62 +535,83 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//统计主项目和子项目中的总投资
|
|
|
@Override |
|
|
@Override |
|
|
public BigDecimal totalMoneyByProjectIds(Map<String,List<String>> projectIds) { |
|
|
public BigDecimal totalMoneyByProjectIds(Map<String,List<String>> projectIds) { |
|
|
|
|
|
|
|
|
LambdaQueryWrapper<HuzhouProjectinfo> query = new LambdaQueryWrapper<>(new HuzhouProjectinfo()) |
|
|
BigDecimal zxmTotal = new BigDecimal("0.00"); |
|
|
.in(HuzhouProjectinfo::getId,projectIds.get("zxm")) |
|
|
BigDecimal cxmTotal = new BigDecimal("0.00"); |
|
|
.select(HuzhouProjectinfo::getId,HuzhouProjectinfo::getTotalMoney); |
|
|
if(projectIds.get("zxm").size()!=0) { |
|
|
List<HuzhouProjectinfo> projectInfoList=projectinfoMapper.selectList(query); |
|
|
LambdaQueryWrapper<HuzhouProjectinfo> query = new LambdaQueryWrapper<>(new HuzhouProjectinfo()) |
|
|
BigDecimal zxmTotal = new BigDecimal(Double.toString(projectInfoList.stream().mapToDouble(x -> x.getTotalMoney()).sum())); |
|
|
.in(HuzhouProjectinfo::getId, projectIds.get("zxm")) |
|
|
|
|
|
.select(HuzhouProjectinfo::getId, HuzhouProjectinfo::getTotalMoney); |
|
|
LambdaQueryWrapper<HuzhouSubProjectinfo> cquery = new LambdaQueryWrapper<>(new HuzhouSubProjectinfo()) |
|
|
List<HuzhouProjectinfo> projectInfoList = projectinfoMapper.selectList(query); |
|
|
.in(HuzhouSubProjectinfo::getId,projectIds.get("cxm")) |
|
|
zxmTotal = new BigDecimal(Double.toString(projectInfoList.stream().mapToDouble(x -> x.getTotalMoney()).sum())); |
|
|
.select(HuzhouSubProjectinfo::getId,HuzhouSubProjectinfo::getTotalMoney); |
|
|
} |
|
|
List<HuzhouSubProjectinfo> subProjectInfoList=subProjectinfoMapper.selectList(cquery); |
|
|
if(projectIds.get("cxm").size()!=0){ |
|
|
BigDecimal cxmTotal = new BigDecimal(Double.toString(subProjectInfoList.stream().mapToDouble(x -> x.getTotalMoney()).sum())); |
|
|
LambdaQueryWrapper<HuzhouSubProjectinfo> cquery = new LambdaQueryWrapper<>(new HuzhouSubProjectinfo()) |
|
|
|
|
|
.in(HuzhouSubProjectinfo::getId,projectIds.get("cxm")) |
|
|
|
|
|
.select(HuzhouSubProjectinfo::getId,HuzhouSubProjectinfo::getTotalMoney); |
|
|
|
|
|
List<HuzhouSubProjectinfo> subProjectInfoList=subProjectinfoMapper.selectList(cquery); |
|
|
|
|
|
cxmTotal = new BigDecimal(Double.toString(subProjectInfoList.stream().mapToDouble(x -> x.getTotalMoney()).sum())); |
|
|
|
|
|
} |
|
|
BigDecimal result = zxmTotal.add(cxmTotal); |
|
|
BigDecimal result = zxmTotal.add(cxmTotal); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//统计项目总进度(计划阶段已完成数和未完成数)
|
|
|
@Override |
|
|
@Override |
|
|
public ProjectProgressOV countProjectProgress() { |
|
|
public ProjectProgressOV countProjectProgress() { |
|
|
|
|
|
|
|
|
|
|
|
int fininshNum=0; |
|
|
|
|
|
int unfininshNum=0; |
|
|
//1、查询所有项目
|
|
|
//1、查询所有项目
|
|
|
//2、查询所有项目对应的计划阶段
|
|
|
//2、查询所有项目对应的计划阶段
|
|
|
Map<String, List<String>> projectIdsMap = this.findAllProjectIds(); |
|
|
Map<String, List<String>> projectIdsMap = this.findAllProjectIds(); |
|
|
List<String> projectIdsList = projectIdsMap.get("zxm"); |
|
|
List<String> projectIdsList = projectIdsMap.get("zxm"); |
|
|
projectIdsList.addAll(projectIdsMap.get("cxm")); |
|
|
projectIdsList.addAll(projectIdsMap.get("cxm")); |
|
|
List<HuzhouPlaninfo> planInfoList = planinfoService.listByProjectIds(projectIdsList); |
|
|
if(projectIdsList.size()!=0){ |
|
|
int fininshNum = (int) planInfoList.stream().filter(x -> (x.getIsfinish().equals("2"))).count(); |
|
|
List<HuzhouPlaninfo> planInfoList = planinfoService.listByProjectIds(projectIdsList); |
|
|
int unfininshNum=planInfoList.size()-fininshNum; |
|
|
fininshNum = (int) planInfoList.stream().filter(x -> (x.getIsfinish().equals("2"))).count(); |
|
|
|
|
|
unfininshNum = planInfoList.size()-fininshNum; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
ProjectProgressOV result = ProjectProgressOV.builder().fininshNum(fininshNum).unfininshNum(unfininshNum).build(); |
|
|
ProjectProgressOV result = ProjectProgressOV.builder().fininshNum(fininshNum).unfininshNum(unfininshNum).build(); |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//统计资金拨付情况(支付阶段在计划中已完成即为已付款)
|
|
|
@Override |
|
|
@Override |
|
|
public FundOV countFund() { |
|
|
public FundOV countFund() { |
|
|
Map<String, List<String>> projectIdsMap = this.findAllProjectIds(); |
|
|
Map<String, List<String>> projectIdsMap = this.findAllProjectIds(); |
|
|
List<String> projectIdsList = projectIdsMap.get("zxm"); |
|
|
List<String> projectIdsList = projectIdsMap.get("zxm"); |
|
|
projectIdsList.addAll(projectIdsMap.get("cxm")); |
|
|
projectIdsList.addAll(projectIdsMap.get("cxm")); |
|
|
List<HuzhouContractinfo> contractInfoList = contractinfoService.ListByProjectIds(projectIdsList); |
|
|
BigDecimal totalAmount = new BigDecimal("0.00"); |
|
|
List<HuzhouPlaninfo> planInfoList = planinfoService.listByProjectIds(projectIdsList); |
|
|
BigDecimal unPayAmount = new BigDecimal("0.00"); |
|
|
BigDecimal payAmount = new BigDecimal("0.00"); |
|
|
BigDecimal payAmount = new BigDecimal("0.00"); |
|
|
Map<String, Double> contractMoneyMap; |
|
|
if(projectIdsList.size()!=0){ |
|
|
List<String> finishPlanTaskList; |
|
|
List<HuzhouContractinfo> contractInfoList = contractinfoService.ListByProjectIds(projectIdsList); |
|
|
for(String projectId:projectIdsList){ |
|
|
List<HuzhouPlaninfo> planInfoList = planinfoService.listByProjectIds(projectIdsList); |
|
|
contractMoneyMap = contractInfoList.stream().filter(x -> x.getProjectId().equals(projectId)) |
|
|
Map<String, Double> contractMoneyMap; |
|
|
.collect(Collectors.toMap(HuzhouContractinfo::getTaskName, HuzhouContractinfo::getTotalMoney)); |
|
|
List<String> finishPlanTaskList; |
|
|
finishPlanTaskList = planInfoList.stream().filter(x->x.getProjectId().equals(projectId)) |
|
|
for(String projectId:projectIdsList){ |
|
|
.filter(x->x.getIsfinish().equals("2")).map(x->x.getTaskName()).collect(Collectors.toList()); |
|
|
contractMoneyMap = contractInfoList.stream().filter(x -> x.getProjectId().equals(projectId)) |
|
|
for(String key:contractMoneyMap.keySet()){ |
|
|
.collect(Collectors.toMap(HuzhouContractinfo::getTaskName, HuzhouContractinfo::getTotalMoney)); |
|
|
if(finishPlanTaskList.contains(key)){ |
|
|
finishPlanTaskList = planInfoList.stream().filter(x->x.getProjectId().equals(projectId)) |
|
|
payAmount=payAmount.add(new BigDecimal(Double.toString(contractMoneyMap.get(key)))); |
|
|
.filter(x->x.getIsfinish().equals("2")).map(x->x.getTaskName()).collect(Collectors.toList()); |
|
|
|
|
|
for(String key:contractMoneyMap.keySet()){ |
|
|
|
|
|
if(finishPlanTaskList.contains(key)){ |
|
|
|
|
|
payAmount=payAmount.add(new BigDecimal(Double.toString(contractMoneyMap.get(key)))); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
//根据projectIds累加总金额
|
|
|
|
|
|
totalAmount = this.totalMoneyByProjectIds(projectIdsMap); |
|
|
|
|
|
unPayAmount = totalAmount.subtract(payAmount); |
|
|
} |
|
|
} |
|
|
//根据projectIds累加总金额
|
|
|
|
|
|
BigDecimal totalAmount = this.totalMoneyByProjectIds(projectIdsMap); |
|
|
|
|
|
BigDecimal unPayAmount = totalAmount.subtract(payAmount); |
|
|
|
|
|
FundOV result = FundOV.builder().fininshNum(payAmount.toString()).unfininshNum(unPayAmount.toString()).build(); |
|
|
FundOV result = FundOV.builder().fininshNum(payAmount.toString()).unfininshNum(unPayAmount.toString()).build(); |
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
@ -598,49 +621,60 @@ public class HuzhouProjectinfoServiceImpl extends ServiceImpl<HuzhouProjectinfoM |
|
|
Map<String, List<String>> projectIdsMap = this.findAllProjectIds(); |
|
|
Map<String, List<String>> projectIdsMap = this.findAllProjectIds(); |
|
|
List<String> zxmIds = projectIdsMap.get("zxm"); |
|
|
List<String> zxmIds = projectIdsMap.get("zxm"); |
|
|
List<String> cxmIds = projectIdsMap.get("cxm"); |
|
|
List<String> cxmIds = projectIdsMap.get("cxm"); |
|
|
List<HuzhouProjectinfo> projectInfoList = projectinfoMapper.selectBatchIds(zxmIds); |
|
|
zxmIds.addAll(cxmIds); |
|
|
List<HuzhouSubProjectinfo> cProjectinfoList = subProjectinfoService.listByProjectIds(cxmIds); |
|
|
CountOV result; |
|
|
projectInfoList.addAll(cProjectinfoList); |
|
|
|
|
|
List<Select> projectStage1 = dictService.selectByDictType("projectStage").stream().collect(Collectors.toList()); |
|
|
|
|
|
Map<String, String> projectStage = dictService.selectByDictType("projectStage").stream().collect(Collectors.toMap(x -> x.getValue(), x -> x.getLabel())); |
|
|
|
|
|
Map<String, String> reformTasks = dictService.selectByDictType("reformTasks").stream().collect(Collectors.toMap(x -> x.getValue(), x -> x.getLabel())); |
|
|
|
|
|
//根据项目状态统计
|
|
|
|
|
|
List<ProjectStatusOV> projectStatusList= new ArrayList<>(); |
|
|
List<ProjectStatusOV> projectStatusList= new ArrayList<>(); |
|
|
Map<String, List<HuzhouProjectinfo>> statusCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getStage())); |
|
|
|
|
|
for(String key:statusCountMap.keySet()){ |
|
|
|
|
|
projectStatusList.add(ProjectStatusOV.builder().name(projectStage.get(key)).value(statusCountMap.get(key).size()).build()); |
|
|
|
|
|
} |
|
|
|
|
|
//根据所属改革任务统计(阶段完成情况)
|
|
|
|
|
|
List<CommonCountOV> projectByReformList= new ArrayList<>(); |
|
|
List<CommonCountOV> projectByReformList= new ArrayList<>(); |
|
|
Map<String, List<HuzhouProjectinfo>> reformCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getReformName().trim())); |
|
|
|
|
|
for (String key:reformCountMap.keySet()){ |
|
|
|
|
|
List<String> keyProjectIdsList = reformCountMap.get(key).stream().map(x -> x.getId()).collect(Collectors.toList()); |
|
|
|
|
|
Map<String, Integer> countMap = planinfoService.conutCompletionStatus(keyProjectIdsList); |
|
|
|
|
|
projectByReformList.add(CommonCountOV.builder().name(reformTasks.get(key)).fininshNum(countMap.get("fininshNum")).unfininshNum(countMap.get("unfininshNum")).build()); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
//根据行政区统计
|
|
|
|
|
|
List<CommonCountOV> projectByRegionList= new ArrayList<>(); |
|
|
List<CommonCountOV> projectByRegionList= new ArrayList<>(); |
|
|
Map<String, List<HuzhouProjectinfo>> regionCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getAdminDivision().trim())); |
|
|
|
|
|
for (String key:regionCountMap.keySet()){ |
|
|
|
|
|
List<String> keyProjectIdsList = regionCountMap.get(key).stream().map(x -> x.getId()).collect(Collectors.toList()); |
|
|
|
|
|
Map<String, Integer> countMap = planinfoService.conutCompletionStatus(keyProjectIdsList); |
|
|
|
|
|
projectByRegionList.add(CommonCountOV.builder().name(key).fininshNum(countMap.get("fininshNum")).unfininshNum(countMap.get("unfininshNum")).build()); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
//根据单位统计
|
|
|
|
|
|
List<CommonCountOV> projectByWorkplaceList= new ArrayList<>(); |
|
|
List<CommonCountOV> projectByWorkplaceList= new ArrayList<>(); |
|
|
Map<String, List<HuzhouProjectinfo>> workplaceCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getWorkplaceProperties().trim())); |
|
|
if(zxmIds.size()!=0){ |
|
|
for (String key:workplaceCountMap.keySet()){ |
|
|
List<HuzhouProjectinfo> projectInfoList = projectinfoMapper.selectBatchIds(zxmIds); |
|
|
List<String> keyProjectIdsList = workplaceCountMap.get(key).stream().map(x -> x.getId()).collect(Collectors.toList()); |
|
|
List<HuzhouSubProjectinfo> cProjectinfoList = subProjectinfoService.listByProjectIds(cxmIds); |
|
|
Map<String, Integer> countMap = planinfoService.conutCompletionStatus(keyProjectIdsList); |
|
|
projectInfoList.addAll(cProjectinfoList); |
|
|
projectByWorkplaceList.add(CommonCountOV.builder().name(key).fininshNum(countMap.get("fininshNum")).unfininshNum(countMap.get("unfininshNum")).build()); |
|
|
Map<String, String> projectStage = dictService.selectByDictType("projectStage").stream().collect(Collectors.toMap(x -> x.getValue(), x -> x.getLabel())); |
|
|
|
|
|
Map<String, String> reformTasks = dictService.selectByDictType("reformTasks").stream().collect(Collectors.toMap(x -> x.getValue(), x -> x.getLabel())); |
|
|
|
|
|
|
|
|
|
|
|
//根据项目状态统计
|
|
|
|
|
|
Map<String, List<HuzhouProjectinfo>> statusCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getStage())); |
|
|
|
|
|
for(String key:statusCountMap.keySet()){ |
|
|
|
|
|
projectStatusList.add(ProjectStatusOV.builder().name(projectStage.get(key)).value(statusCountMap.get(key).size()).build()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//根据所属改革任务统计(阶段完成情况)
|
|
|
|
|
|
Map<String, List<HuzhouProjectinfo>> reformCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getReformName().trim())); |
|
|
|
|
|
for (String key:reformCountMap.keySet()){ |
|
|
|
|
|
List<String> keyProjectIdsList = reformCountMap.get(key).stream().map(x -> x.getId()).collect(Collectors.toList()); |
|
|
|
|
|
Map<String, Integer> countMap = planinfoService.conutCompletionStatus(keyProjectIdsList); |
|
|
|
|
|
projectByReformList.add(CommonCountOV.builder().name(reformTasks.get(key)).fininshNum(countMap.get("fininshNum")).unfininshNum(countMap.get("unfininshNum")).build()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//根据行政区统计
|
|
|
|
|
|
Map<String, List<HuzhouProjectinfo>> regionCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getAdminDivision().trim())); |
|
|
|
|
|
for (String key:regionCountMap.keySet()){ |
|
|
|
|
|
List<String> keyProjectIdsList = regionCountMap.get(key).stream().map(x -> x.getId()).collect(Collectors.toList()); |
|
|
|
|
|
Map<String, Integer> countMap = planinfoService.conutCompletionStatus(keyProjectIdsList); |
|
|
|
|
|
projectByRegionList.add(CommonCountOV.builder().name(key).fininshNum(countMap.get("fininshNum")).unfininshNum(countMap.get("unfininshNum")).build()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//根据单位统计
|
|
|
|
|
|
Map<String, List<HuzhouProjectinfo>> workplaceCountMap = projectInfoList.stream().collect(Collectors.groupingBy(x -> x.getWorkplaceProperties().trim())); |
|
|
|
|
|
for (String key:workplaceCountMap.keySet()){ |
|
|
|
|
|
List<String> keyProjectIdsList = workplaceCountMap.get(key).stream().map(x -> x.getId()).collect(Collectors.toList()); |
|
|
|
|
|
Map<String, Integer> countMap = planinfoService.conutCompletionStatus(keyProjectIdsList); |
|
|
|
|
|
projectByWorkplaceList.add(CommonCountOV.builder().name(key).fininshNum(countMap.get("fininshNum")).unfininshNum(countMap.get("unfininshNum")).build()); |
|
|
|
|
|
} |
|
|
|
|
|
ProjectProgressOV projectProgress = countProjectProgress(); |
|
|
|
|
|
FundOV fund = countFund(); |
|
|
|
|
|
result = CountOV.builder().xiangmZJD(projectProgress).xiangmuZJ(fund) |
|
|
|
|
|
.xiangmuZT(projectStatusList).XXQY(projectByRegionList).SSGGRW(projectByReformList).DWSX(projectByWorkplaceList).build(); |
|
|
|
|
|
}else { |
|
|
|
|
|
result=CountOV.builder().xiangmZJD(ProjectProgressOV.builder().fininshNum(0).unfininshNum(0).build()) |
|
|
|
|
|
.xiangmuZJ(FundOV.builder().fininshNum("0").unfininshNum("0").build()) |
|
|
|
|
|
.xiangmuZT(projectStatusList) |
|
|
|
|
|
.XXQY(projectByRegionList) |
|
|
|
|
|
.SSGGRW(projectByReformList) |
|
|
|
|
|
.DWSX(projectByWorkplaceList).build(); |
|
|
} |
|
|
} |
|
|
ProjectProgressOV projectProgress = countProjectProgress(); |
|
|
|
|
|
FundOV fund = countFund(); |
|
|
|
|
|
CountOV result = CountOV.builder().xiangmZJD(projectProgress).xiangmuZJ(fund) |
|
|
|
|
|
.xiangmuZT(projectStatusList).XXQY(projectByRegionList).SSGGRW(projectByReformList).DWSX(projectByWorkplaceList).build(); |
|
|
|
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|