Sfoglia il codice sorgente

问题督办、问题列表、项目信息接口修改;

张维明 2 mesi fa
parent
commit
501b5f0f76

+ 1 - 1
projects-service/src/main/java/com/rtrh/projects/modules/problem/service/impl/SubquestioninfoserviceImpl.java

@@ -552,7 +552,7 @@ public class SubquestioninfoserviceImpl implements Subquestioninfoservice {
 		sql.append(" LEFT JOIN sub_verify f ON f.sub_id = a.sub_id AND f.logic_delete_flag = 0 ");
 		sql.append(" LEFT JOIN sec_user_sub us ON b.id = us.sub_id AND us.logic_delete_flag = 0 AND us.user_id = '"
 				+ vo.getId() + "' ");
-		sql.append(" WHERE a.logic_delete_flag=0 ");
+		sql.append(" WHERE a.logic_delete_flag=0 and b.sub_name != '' ");
 		if (Objects.equals(vo.getKindUnit(), UserKindUnitEnum.SBDW.getCode())) {
 			// 项目单位
 			sql.append(" AND b.unit_id = '" + vo.getUnitId() + "' ");

+ 41 - 32
projects-service/src/main/java/com/rtrh/projects/modules/projects/service/impl/SubInfoServiceImpl.java

@@ -801,42 +801,45 @@ public class SubInfoServiceImpl implements SubInfoService {
         //当前项目状态
         String status = String.valueOf(data.get("status"));
         ProjectStatusEnum statusEnum = ProjectStatusEnum.getEnumByKey(status);
-        switch (statusEnum) {
-            case DKG:
-                //待开工
-                String startQueryHql = "FROM SubStart WHERE logicDeleteFlag = ? AND subId = ? ";
-                Long startCount = subInfoDao.getCount(startQueryHql, 0, id);
-                if (startCount == 0) {
-                    data.put("statusName", ProjectStatusEnum.DKG.getDesc() + ":未提交审核");
-                } else {
-                    data.put("statusName", ProjectStatusEnum.DKG.getDesc() + ":待审核");
-                }
-                break;
-            case YKG:
-                //已开工
-                String completedQueryHql = "FROM SubCompleted WHERE logicDeleteFlag = ? AND subId = ? ";
-                Long completedCount = subInfoDao.getCount(completedQueryHql, 0, id);
-                if (completedCount == 0) {
-                    data.put("statusName", ProjectStatusEnum.YKG.getDesc() + ":无竣工申请");
-                } else {
-                    if (data.get("status_sp") == null || Objects.equals(data.get("status_sp"), ApprovalStatusEnum.DSP.getKey())) {
-                        data.put("statusName", ProjectStatusEnum.YKG.getDesc() + ":待审核");
-                    } else if (Objects.equals(data.get("status_sp"), ApprovalStatusEnum.YSP.getKey())) {
-                        data.put("statusName", ProjectStatusEnum.YKG.getDesc() + ":竣工申请已审核");
+        if(statusEnum != null){
+            switch (statusEnum) {
+                case DKG:
+                    //待开工
+                    String startQueryHql = "FROM SubStart WHERE logicDeleteFlag = ? AND subId = ? ";
+                    Long startCount = subInfoDao.getCount(startQueryHql, 0, id);
+                    if (startCount == 0) {
+                        data.put("statusName", ProjectStatusEnum.DKG.getDesc() + ":未提交审核");
+                    } else {
+                        data.put("statusName", ProjectStatusEnum.DKG.getDesc() + ":待审核");
                     }
-                }
-                break;
-            default:
-                data.put("statusName", statusEnum.getDesc());
+                    break;
+                case YKG:
+                    //已开工
+                    String completedQueryHql = "FROM SubCompleted WHERE logicDeleteFlag = ? AND subId = ? ";
+                    Long completedCount = subInfoDao.getCount(completedQueryHql, 0, id);
+                    if (completedCount == 0) {
+                        data.put("statusName", ProjectStatusEnum.YKG.getDesc() + ":无竣工申请");
+                    } else {
+                        if (data.get("status_sp") == null || Objects.equals(data.get("status_sp"), ApprovalStatusEnum.DSP.getKey())) {
+                            data.put("statusName", ProjectStatusEnum.YKG.getDesc() + ":待审核");
+                        } else if (Objects.equals(data.get("status_sp"), ApprovalStatusEnum.YSP.getKey())) {
+                            data.put("statusName", ProjectStatusEnum.YKG.getDesc() + ":竣工申请已审核");
+                        }
+                    }
+                    break;
+                default:
+                    data.put("statusName", statusEnum.getDesc());
 //			//如果是项目单位, 并且项目在前期过程中。  能点击项目前期  按钮。
 //
 //			if (ProjectStatusEnum.PRE.getKey().equals(status)){
 //				// 判断是否能   点击项目前期。 20231219
 //				data.put("preCheck",true);
 //			}
-                break;
+                    break;
+            }
         }
 
+
         if (!Objects.equals("0", data.get("status_fgw"))) {
             //显示红绿灯,且不是绿灯
             SubquestionInfo subquestionInfo = subquestioninfoservice.findByColor(String.valueOf(data.get("id")), (Date) data.get("date_fgw"));
@@ -849,11 +852,14 @@ public class SubInfoServiceImpl implements SubInfoService {
 
     @Override
     public SubInfoVO getById(String id) {
-        SubInfo subInfo = subInfoDao.findById(id);
-        //List<SubPlan> list = subPlanDao.getPlanListBySubId(id);
-        List<SubSourceVO> subSourceVOs = subSourceService.findBySubId(id);
-        // List<SubSourceVO> subSourceVOs = subSourceDao.findBySubId(id);
-        return new SubInfoVO(subInfo, null, subSourceVOs);
+        return Optional.ofNullable(id)
+                .filter(StringUtils::isNotEmpty)
+                .map(i -> {
+                    SubInfo subInfo = subInfoDao.findById(i);
+                    List<SubSourceVO> subSourceVOs = subSourceDao.findBySubId(i);
+                    return new SubInfoVO(subInfo, null, subSourceVOs);
+                })
+                .orElse(new SubInfoVO());
     }
 
     @Override
@@ -1021,6 +1027,9 @@ public class SubInfoServiceImpl implements SubInfoService {
         } else {
             subInfo = subInfoDao.findById(subId);
         }
+        if(subInfo == null){
+            return null;
+        }
         return new SubInfoJsonForm(subInfo, plans, subSourceVOs);
     }
 

+ 42 - 0
projects-service/src/main/java/com/rtrh/projects/modules/utils/DateUtils.java

@@ -5,11 +5,15 @@ import com.rtrh.common.util.StringUtil;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.YearMonth;
 import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
 import java.time.temporal.ChronoUnit;
+import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 public class DateUtils {
     public static String getPreMonth(String currMonth) throws ParseException {
@@ -92,4 +96,42 @@ public class DateUtils {
         long yearsBetween = ChronoUnit.YEARS.between(date1, date2);
         return yearsBetween;
     }
+
+    // 定义常见的日期时间格式列表
+    private static final List<DateTimeFormatter> FORMATTERS = Arrays.asList(
+            DateTimeFormatter.ofPattern("yyyy-MM-dd"),
+            DateTimeFormatter.ofPattern("yyyy/MM/dd"),
+            DateTimeFormatter.ofPattern("yyyyMMdd"),
+            DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"),
+            DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss"),
+            DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss")
+    );
+
+    // 目标格式
+    private static final DateTimeFormatter TARGET_FORMATTER = DateTimeFormatter.ofPattern("yyyyMM");
+    /**
+     * 将任意格式的时间字符串转换为 yyyyMM 格式
+     * @param dateStr 输入的时间字符串
+     * @return 转换后的 yyyyMM 格式字符串,如果无法解析则返回 null
+     */
+    public static String convertToYYYYMM(String dateStr) {
+        // 尝试使用每个格式化器进行解析
+        for (DateTimeFormatter formatter : FORMATTERS) {
+            try {
+                // 先尝试解析为 LocalDate
+                LocalDate localDate = LocalDate.parse(dateStr, formatter);
+                return localDate.format(TARGET_FORMATTER);
+            } catch (DateTimeParseException e1) {
+                try {
+                    // 如果解析为 LocalDate 失败,尝试解析为 LocalDateTime
+                    LocalDateTime localDateTime = LocalDateTime.parse(dateStr, formatter);
+                    return localDateTime.format(TARGET_FORMATTER);
+                } catch (DateTimeParseException e2) {
+                    // 继续尝试下一个格式化器
+                }
+            }
+        }
+        // 如果所有格式化器都无法解析,返回 null
+        return null;
+    }
 }

+ 5 - 1
projects/src/main/java/com/rtrh/projects/outapi/controller/ProblemTracingApiController.java

@@ -112,7 +112,11 @@ public class ProblemTracingApiController  extends BaseOutApiController {
             result.setData("subId",subquestionInfo.getSub_id());
             if (StringUtil.isNotEmpty(subquestionInfo.getSub_id())){
                 SubInfo subInfo= subInfoService.getBySubId(subquestionInfo.getSub_id());
-                result.setData("subName",subInfo.getSubName());
+                if(subInfo == null){
+                    result.setData("subName","");
+                }else {
+                    result.setData("subName",subInfo.getSubName());
+                }
             }
         } catch (Exception e) {
             logger.error("",e);

+ 3 - 2
projects/src/main/java/com/rtrh/projects/outapi/controller/ProblemTrackApiController.java

@@ -5,6 +5,7 @@ import java.util.Map;
 
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -82,14 +83,14 @@ public class ProblemTrackApiController extends BaseOutApiController {
             for (Map<String, String> map : (List<Map<String, String>>) pageData.getList()) {
                 String sta1 = map.get("status");
                 if(sta1!=null&&sta1!=""){
-                    map.put("status", ProjectStatusEnum.getEnumByKey(map.get("status")).getDesc());
+                    map.put("status", ProjectStatusEnum.getEnumByKey(map.get("status")) == null ?null:ProjectStatusEnum.getEnumByKey(map.get("status")).getDesc());
                 }
                 if(map.get("file_addre") != null) {
                 	map.put("file_addre", ApiStaticUrl.getImg(map.get("file_addre")));
                 }
                 String sta2 = map.get("stu");
                 if(sta2!=null&&sta2!=""){
-                    map.put("stu", SubqestionStatus.getEnumByKey(map.get("stu")).getDesc());
+                    map.put("stu", SubqestionStatus.getEnumByKey(map.get("stu")).getDesc() == null ?null:SubqestionStatus.getEnumByKey(map.get("stu")).getDesc());
                 }
             }
             result.setData("list", pageData.getList());

+ 2 - 0
projects/src/main/java/com/rtrh/projects/outapi/controller/projects/ProjectsApiController.java

@@ -1473,6 +1473,8 @@ public class ProjectsApiController extends BaseOutApiController {
     public JsonResult sumDepartment(@RequestBody SubinfoPreQueryVo queryVO) {
         JsonResult result = new JsonResult();
         try {
+            queryVO.setBeginDate(DateUtils.convertToYYYYMM(queryVO.getBeginDate()));
+            queryVO.setEndDate(DateUtils.convertToYYYYMM(queryVO.getEndDate()));
             Object pageData = new Object();
             //1按部门  2 按手续 3 按项目
             switch (queryVO.getCat()) {