|
@@ -50,7 +50,6 @@ import com.rtrh.projects.modules.problem.po.SubquestionConsum;
|
|
|
import com.rtrh.projects.modules.problem.po.SubquestionInfo;
|
|
|
import com.rtrh.projects.modules.problem.service.Subquestioninfoservice;
|
|
|
import com.rtrh.projects.modules.projects.enums.ApprovalStatusEnum;
|
|
|
-import com.rtrh.projects.modules.projects.enums.Is3KgStatusEnum;
|
|
|
import com.rtrh.projects.modules.projects.enums.ProjectStatusEnum;
|
|
|
import com.rtrh.projects.modules.projects.enums.RptContKindEnum;
|
|
|
import com.rtrh.projects.modules.projects.enums.StatusEnum;
|
|
@@ -5036,6 +5035,176 @@ public class SubInfoServiceImpl implements SubInfoService {
|
|
|
return dataList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 储备转新建超期
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryExceedCbToXj(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
|
|
|
+ List<WorkBenchVO> list = subInfoMapper.queryExceedCbToXj();
|
|
|
+ return getStringObjectMap(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新建转在建超期
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryExceedXjToZj(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
|
|
|
+ List<WorkBenchVO> list = subInfoMapper.queryExceedXjToZj();
|
|
|
+ return getStringObjectMap(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryExceedZjTotc(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
|
|
|
+ List<WorkBenchVO> list = subInfoMapper.queryExceedZjTotc();
|
|
|
+ return getStringObjectMap(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryExceedTcToRg(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
|
|
|
+ List<WorkBenchVO> list = subInfoMapper.queryExceedTcToRg();
|
|
|
+ return getStringObjectMap(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryExceedNum() {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("cbToXjNum",subInfoMapper.queryExceedCbToXj().size());
|
|
|
+ map.put("preNum",subInfoMapper.preProcedureExceed().size());
|
|
|
+ map.put("xjToZjNum",subInfoMapper.queryExceedXjToZj().size());
|
|
|
+ map.put("zjToTcNum",subInfoMapper.queryExceedZjTotc().size());
|
|
|
+ map.put("tcToRgNum",subInfoMapper.queryExceedTcToRg().size());
|
|
|
+ map.put("monthlyNum",0);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> preProcedureExceed(LoginUserVO vo, PreWarnDataQueryVO queryVO) {
|
|
|
+ List<WorkBenchVO> list = subInfoMapper.preProcedureExceed();
|
|
|
+ return getStringObjectMap(list);
|
|
|
+ // /api/problemInfo/preData/getdata
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 月报超期
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> queryExceedMonthly(LoginUserVO loginUser, PreWarnDataQueryVO queryVO) {
|
|
|
+ List<WorkBenchVO> list = subInfoMapper.preProcedureExceed();
|
|
|
+ return getStringObjectMap(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ private Map<String, Object> getStringObjectMap(List<WorkBenchVO> list) {
|
|
|
+ Map<String, Object> resultMap = new HashMap<>();
|
|
|
+ if (CollectionUtil.isNotEmpty(list)){
|
|
|
+ List<TSystable> jsddDict = tSysTableService.getByKind(SysTableKind.JSDD);
|
|
|
+ Map<String, String> jsddMap = jsddDict.stream().collect(Collectors.toMap(TSystable::getCode, TSystable::getTitle));
|
|
|
+ Map<String, String> hyflMap = subInduService.queryParentAll().stream().collect(Collectors.toMap(SubIndu::getCode, SubIndu::getTitle));
|
|
|
+ // 1.按属地分-------------
|
|
|
+ List<String> subjectCodes = new ArrayList<>();
|
|
|
+ List<Map<String, Object>> subjectList = list.stream()
|
|
|
+ .collect(Collectors.groupingBy(WorkBenchVO::getSubjectId))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(e -> {
|
|
|
+ subjectCodes.add(e.getKey());
|
|
|
+ return new HashMap<String, Object>() {{
|
|
|
+ put("code",e.getKey());
|
|
|
+ put("title", jsddMap.getOrDefault(e.getKey(), e.getKey()));
|
|
|
+ put("number", e.getValue().size());
|
|
|
+ }};
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ jsddMap.forEach((k, v) -> {
|
|
|
+ if (!subjectCodes.contains(k)){
|
|
|
+ subjectList.add(new HashMap<String, Object>() {{
|
|
|
+ put("code", k);
|
|
|
+ put("title", v);
|
|
|
+ put("number", 0);
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ });
|
|
|
+ resultMap.put("listSubject", subjectList);
|
|
|
+ // 2.按金额分----------- 定义分组边界
|
|
|
+ Map<String, BigDecimal> groupBoundaries = new LinkedHashMap<>();
|
|
|
+ groupBoundaries.put("10亿元以下", new BigDecimal("100000"));
|
|
|
+ groupBoundaries.put("10-50亿元", new BigDecimal("500000"));
|
|
|
+ groupBoundaries.put("50-100亿元", new BigDecimal("1000000"));
|
|
|
+ groupBoundaries.put("100亿元以上", new BigDecimal("100000000000"));
|
|
|
+
|
|
|
+ List<Map<String, Object>> defaultScaleList = groupBoundaries.keySet().stream()
|
|
|
+ .map(entry -> new HashMap<String, Object>() {{
|
|
|
+ put("code", entry);
|
|
|
+ put("title", entry);
|
|
|
+ put("number", 0);
|
|
|
+ }})
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<Map<String, Object>> scaleList = list.stream()
|
|
|
+ .collect(Collectors.groupingBy(transaction -> {
|
|
|
+ for (Map.Entry<String, BigDecimal> entry : groupBoundaries.entrySet()) {
|
|
|
+ if (transaction.getAmtTotal()!=null && transaction.getAmtTotal().compareTo(entry.getValue()) < 0) {
|
|
|
+ return entry.getKey();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "未知分组"; // 超过最高范围的默认分组
|
|
|
+ }))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry -> {
|
|
|
+ return new HashMap<String, Object>() {{
|
|
|
+ put("code", entry.getKey());
|
|
|
+ put("title", entry.getKey());
|
|
|
+ put("number", entry.getValue().size());
|
|
|
+ }};
|
|
|
+ })
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ for (Map<String, Object> defaultScale : defaultScaleList) {
|
|
|
+ String code = (String) defaultScale.get("code");
|
|
|
+ Optional<Map<String, Object>> found = scaleList.stream()
|
|
|
+ .filter(scale -> scale.get("code").equals(code))
|
|
|
+ .findFirst();
|
|
|
+
|
|
|
+ if (found.isPresent()) {
|
|
|
+ // 如果找到了对应的组,使用实际的数量
|
|
|
+ Map<String, Object> actualScale = found.get();
|
|
|
+ defaultScale.put("number", actualScale.get("number"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ resultMap.put("listScale", defaultScaleList);
|
|
|
+ // 3.按行业分---------------
|
|
|
+ List<String> indusCodes = new ArrayList<>();
|
|
|
+ List<HashMap<String, Object>> indusKindList = list.stream()
|
|
|
+ .collect(Collectors.groupingBy(transaction -> {
|
|
|
+ String code = transaction.getIndusKind();
|
|
|
+ // 确保code不为空且长度至少为2
|
|
|
+ if (code == null || code.length() < 2) {
|
|
|
+ return "未知行业"; // 默认未知行业
|
|
|
+ }
|
|
|
+ return code.substring(0, 2);
|
|
|
+ }))
|
|
|
+ .entrySet().stream()
|
|
|
+ .map(entry ->{
|
|
|
+ indusCodes.add(entry.getKey());
|
|
|
+ return new HashMap<String, Object>() {{
|
|
|
+ put("code", entry.getKey());
|
|
|
+ put("title", hyflMap.getOrDefault(entry.getKey(), entry.getKey()));
|
|
|
+ put("number", entry.getValue().size());
|
|
|
+ }};
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ hyflMap.forEach((k, v) -> {
|
|
|
+ if (!indusCodes.contains(k)){
|
|
|
+ indusKindList.add(new HashMap<String, Object>() {{
|
|
|
+ put("code", k);
|
|
|
+ put("title", v);
|
|
|
+ put("number", 0);
|
|
|
+ }});
|
|
|
+ }
|
|
|
+ });
|
|
|
+ resultMap.put("listIndusKind", indusKindList);
|
|
|
+ }
|
|
|
+ return resultMap;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<SubInfoTotalExcel> exportTotalExcelByStatus(SubInfoQueryTzVO vo) {
|
|
|
return subInfoMapper.exportTotalExcelByStatus(vo.getStatus());
|