Преглед изворни кода

修复 获取作物种植档案信息农事记录与生长周期对不上的问题

zhaiyifei пре 11 месеци
родитељ
комит
fc62954206

+ 0 - 1
src/main/java/com/yunfeiyun/agmp/fms/controller/FmsTaskrcdController.java

@@ -61,7 +61,6 @@ public class FmsTaskrcdController extends BaseController
      * */
     @GetMapping("/plan/detail")
     public AjaxResult planDetail(FmsTaskrcdListReqVo fmsTaskrcdListReqVo){
-        fmsTaskrcdListReqVo.setTid(SecurityUtils.getTid());
         List<FmsTaskrcdVo> fmsTaskrcds = fmsTaskrcdService.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo);
         return AjaxResult.success(fmsTaskrcds);
     }

+ 4 - 0
src/main/java/com/yunfeiyun/agmp/fms/domain/reqvo/FmsTaskrcdListReqVo.java

@@ -23,4 +23,8 @@ public class FmsTaskrcdListReqVo extends BaseEntity
     private String taskrcdAuditstatus;
     
     private String tid;
+
+    private String startDate;
+
+    private String endDate;
 }

+ 3 - 3
src/main/java/com/yunfeiyun/agmp/fms/mapper/FmsTaskrcdMapper.java

@@ -1,13 +1,13 @@
 package com.yunfeiyun.agmp.fms.mapper;
 
-import java.util.List;
 import com.yunfeiyun.agmp.fms.domain.FmsTaskrcd;
 import com.yunfeiyun.agmp.fms.domain.dto.FmsTaskrcdByTaskrcdIdDto;
 import com.yunfeiyun.agmp.fms.domain.dto.FmsTaskrcdListDto;
 import com.yunfeiyun.agmp.fms.domain.reqvo.FmsTaskrcdListReqVo;
 import com.yunfeiyun.agmp.fms.domain.vo.FmsTaskrcdVo;
 import org.apache.ibatis.annotations.Param;
-import org.springframework.security.core.parameters.P;
+
+import java.util.List;
 
 /**
  * 农事任务提交记录Mapper接口
@@ -84,7 +84,7 @@ public interface FmsTaskrcdMapper
      */
     public int deleteFmsTaskrcdByTaskrcdIds(@Param("array") String[] taskrcdIds, @Param("tid") String tid);
 
-    List<FmsTaskrcdVo> selectFmsPlanTaskrcdList(@Param("planId") String planId, @Param("tid") String tid);
+    List<FmsTaskrcdVo> selectFmsPlanTaskrcdList(FmsTaskrcdListReqVo fmsTaskrcdListReqVo);
 
     FmsTaskrcd selectOneByTaskId(@Param("taskId") String taskId,@Param("tid") String tid);
 }

+ 174 - 40
src/main/java/com/yunfeiyun/agmp/fms/service/impl/FmsPlanServiceImpl.java

@@ -227,65 +227,199 @@ public class FmsPlanServiceImpl implements IFmsPlanService {
         return fmsPlanMapper.selectPlanListOfTaskStatus(param);
     }
 
-    @Override
     public FmsPlanDocumentResVo selectFmsPlanDocumentResVo(String planId) {
         String tid = SecurityUtils.getTid();
-        FmsPlanDocumentResVo fmsPlanDocumentResVo = new FmsPlanDocumentResVo();
+        // 查询种植计划详情
         FmsPlanResVo fmsPlan = selectFmsPlanByPlanId(planId,tid);
-
-        BeanUtils.copyProperties(fmsPlan,fmsPlanDocumentResVo);
+        // 查询作物信息
         FmsCrop fmsCrop = fmsCropService.selectFmsCropByCropId(fmsPlan.getCropId(),tid);
-        fmsPlanDocumentResVo.setFmsCrop(fmsCrop);
+
+        // 查询种植周期信息
         FmsPeriod fmsPeriodQuery = new FmsPeriod();
         fmsPeriodQuery.setCropId(fmsCrop.getCropId());
         List<FmsPeriod> fmsPeriodList = fmsPeriodService.selectFmsPeriodList(fmsPeriodQuery);
 
-        FmsTaskrcdListReqVo fmsTaskrcdListReqVo = new FmsTaskrcdListReqVo();
-        fmsTaskrcdListReqVo.setPlanId(fmsPlan.getPlanId());
-        long growDays = DateUtil.between(DateUtils.parseDate(fmsPlan.getPlanStartdate()),new Date(), DateUnit.DAY);
-        List<FmsTaskrcdVo> fmsTaskrcdVos = fmsTaskrcdService.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo);
-        Map<Integer,List<FmsTaskrcdVo>> map = new LinkedHashMap<>();
-        Map<Integer, JSONObject> fmsPeriodMap = new HashMap<>();
-        List<Integer> dayList = new LinkedList<>();
-        int day = 0;
-        int i = 0;
+        int totalPeriodDays = 0;
+
         String dateStart = fmsPlan.getPlanStartdate();
-        String dateEnd = null;
+        Date startDate = DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, dateStart);
+
+        String dateEndStart = "";
+        String dateStartStart = dateStart;
+
+        Date nowDate = DateUtils.getNowDate();
+        Map<Integer, JSONObject> fmsPeriodTreeMap = new TreeMap<>();
         for(FmsPeriod fmsPeriod : fmsPeriodList){
-            if(dateEnd != null){
-                dateStart = dateEnd;
+            int periodDays = fmsPeriod.getPeriodDays();
+            totalPeriodDays = totalPeriodDays + periodDays;
+
+            Date tempStartDate = DateUtils.parseDate(dateStartStart);
+            Date endDate = DateUtil.offsetDay(DateUtils.parseDate(dateStart),totalPeriodDays);
+            if(tempStartDate.getTime() > nowDate.getTime()){
+                continue;
             }
-            dateEnd = dateStrAdd(dateStart,fmsPeriod.getPeriodDays());
-            day = day + fmsPeriod.getPeriodDays();
-            map.put(day,new LinkedList<>());
-            dayList.add(day);
+            dateEndStart = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate);
+
             JSONObject fmsPeriodObject = JSONObject.from(fmsPeriod);
-            fmsPeriodObject.put("dateStart",dateStart);
-            fmsPeriodObject.put("dateEnd",dateEnd);
-            fmsPeriodMap.put(day,fmsPeriodObject);
-            if(day>growDays){
-                break;
-            }
-            i++;
+            fmsPeriodObject.put("dateStart",dateStartStart);
+            fmsPeriodObject.put("dateEnd",dateEndStart);
+            fmsPeriodTreeMap.put(totalPeriodDays, fmsPeriodObject);
+            dateStartStart = dateEndStart;
         }
-        if(i == dayList.size()){
-            i--;
-        }
-        if(!dayList.isEmpty()){
-            for(FmsTaskrcdVo fmsTaskrcdVo : fmsTaskrcdVos){
-                long dayBetween = DateUtil.between(DateUtils.parseDate(fmsTaskrcdVo.getTaskrcdSubmitdate()),new Date(),DateUnit.DAY);
-                if(dayBetween<dayList.get(i)&&i!=0){
-                    i--;
+
+        Date endDate = DateUtil.offsetDay(DateUtils.parseDate(dateStart),totalPeriodDays);
+        String rcdStartDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, startDate);
+        String rcdEndDate = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, endDate);
+        FmsTaskrcdListReqVo fmsTaskrcdListReqVo = new FmsTaskrcdListReqVo();
+        fmsTaskrcdListReqVo.setPlanId(fmsPlan.getPlanId());
+        fmsTaskrcdListReqVo.setStartDate(rcdStartDate);
+        fmsTaskrcdListReqVo.setEndDate(rcdEndDate);
+
+        List<FmsTaskrcdVo> fmsTaskrcdVos = fmsTaskrcdService.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo);
+        Map<Integer, List<FmsTaskrcdVo>> fmsPeriodTaskMap = new HashMap<>();
+        for(FmsTaskrcdVo fmsTaskrcdVo : fmsTaskrcdVos) {
+            String taskrcdCompletedate = fmsTaskrcdVo.getTaskrcdCompletedate();
+            long growDays = DateUtil.between(DateUtils.parseDate(taskrcdCompletedate), startDate, DateUnit.DAY);
+            for(Integer key : fmsPeriodTreeMap.keySet()){
+                if(growDays <= key){
+                    fmsPeriodTaskMap.computeIfAbsent(key, k -> new LinkedList<>()).add(fmsTaskrcdVo);
+                    break;
                 }
-                List<FmsTaskrcdVo> list = map.get(dayList.get(i));
-                list.add(fmsTaskrcdVo);
             }
         }
-        fmsPlanDocumentResVo.setFmsPeriodTaskMap(map);
-        fmsPlanDocumentResVo.setFmsPeriodMap(fmsPeriodMap);
+
+        Map<Integer, JSONObject> fmsPeriodMap = new HashMap<>();
+        for(Map.Entry<Integer, List<FmsTaskrcdVo>> entry: fmsPeriodTaskMap.entrySet()){
+            Integer key = entry.getKey();
+            List<FmsTaskrcdVo> taskVos = entry.getValue();
+            taskVos.sort(Comparator.comparing(FmsTaskrcdVo::getTaskrcdCompletedate).reversed());
+            fmsPeriodMap.put(key,fmsPeriodTreeMap.get(key));
+        }
+
+        FmsPlanDocumentResVo fmsPlanDocumentResVo = new FmsPlanDocumentResVo();
+        BeanUtils.copyProperties(fmsPlan,fmsPlanDocumentResVo);
+        fmsPlanDocumentResVo.setFmsCrop(fmsCrop);
+        fmsPlanDocumentResVo.setFmsPeriodTaskMap(fmsPeriodTaskMap);
+        fmsPlanDocumentResVo.setFmsPeriodMap(fmsPeriodTreeMap);
+
+//        FmsTaskrcdListReqVo fmsTaskrcdListReqVo = new FmsTaskrcdListReqVo();
+//        fmsTaskrcdListReqVo.setPlanId(fmsPlan.getPlanId());
+//        long growDays = DateUtil.between(DateUtils.parseDate(fmsPlan.getPlanStartdate()),new Date(), DateUnit.DAY);
+//        List<FmsTaskrcdVo> fmsTaskrcdVos = fmsTaskrcdService.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo);
+//        Map<Integer,List<FmsTaskrcdVo>> map = new LinkedHashMap<>();
+//        Map<Integer, JSONObject> fmsPeriodMap = new HashMap<>();
+//        List<Integer> dayList = new LinkedList<>();
+//        int day = 0;
+//        int i = 0;
+//        String dateStart = fmsPlan.getPlanStartdate();
+//        String dateEnd = null;
+//        for(FmsPeriod fmsPeriod : fmsPeriodList){
+//            if(dateEnd != null){
+//                dateStart = dateEnd;
+//            }
+//            dateEnd = dateStrAdd(dateStart,fmsPeriod.getPeriodDays());
+//            day = day + fmsPeriod.getPeriodDays();
+//            map.put(day,new LinkedList<>());
+//            dayList.add(day);
+//            JSONObject fmsPeriodObject = JSONObject.from(fmsPeriod);
+//            fmsPeriodObject.put("dateStart",dateStart);
+//            fmsPeriodObject.put("dateEnd",dateEnd);
+//            fmsPeriodMap.put(day,fmsPeriodObject);
+//            if(day>growDays){
+//                break;
+//            }
+//            i++;
+//        }
+//        if(i == dayList.size()){
+//            i--;
+//        }
+//        if(!dayList.isEmpty()){
+//            for(FmsTaskrcdVo fmsTaskrcdVo : fmsTaskrcdVos){
+//                long dayBetween = DateUtil.between(DateUtils.parseDate(fmsTaskrcdVo.getTaskrcdSubmitdate()),new Date(),DateUnit.DAY);
+//                if(dayBetween<dayList.get(i)&&i!=0){
+//                    i--;
+//                }
+//                List<FmsTaskrcdVo> list = map.get(dayList.get(i));
+//                String taskrcdCompletedate = fmsTaskrcdVo.getTaskrcdCompletedate();
+//                long completeTime = DateUtils.parseDate(taskrcdCompletedate).getTime();
+//                long dateStartTime = DateUtils.parseDate(dateStart).getTime();
+//                long dateEndTime = DateUtils.parseDate(dateEnd).getTime();
+//                if(dateStartTime <= completeTime && completeTime <= dateEndTime){
+//                    list.add(fmsTaskrcdVo);
+//                }
+//            }
+//        }
+//        fmsPlanDocumentResVo.setFmsPeriodTaskMap(map);
+//        fmsPlanDocumentResVo.setFmsPeriodMap(fmsPeriodMap);
         return fmsPlanDocumentResVo;
     }
 
+
+//    @Override
+//    public FmsPlanDocumentResVo selectFmsPlanDocumentResVo(String planId) {
+//        String tid = SecurityUtils.getTid();
+//        FmsPlanDocumentResVo fmsPlanDocumentResVo = new FmsPlanDocumentResVo();
+//        FmsPlanResVo fmsPlan = selectFmsPlanByPlanId(planId,tid);
+//
+//        BeanUtils.copyProperties(fmsPlan,fmsPlanDocumentResVo);
+//        FmsCrop fmsCrop = fmsCropService.selectFmsCropByCropId(fmsPlan.getCropId(),tid);
+//        fmsPlanDocumentResVo.setFmsCrop(fmsCrop);
+//        FmsPeriod fmsPeriodQuery = new FmsPeriod();
+//        fmsPeriodQuery.setCropId(fmsCrop.getCropId());
+//        List<FmsPeriod> fmsPeriodList = fmsPeriodService.selectFmsPeriodList(fmsPeriodQuery);
+//
+//        FmsTaskrcdListReqVo fmsTaskrcdListReqVo = new FmsTaskrcdListReqVo();
+//        fmsTaskrcdListReqVo.setPlanId(fmsPlan.getPlanId());
+//        long growDays = DateUtil.between(DateUtils.parseDate(fmsPlan.getPlanStartdate()),new Date(), DateUnit.DAY);
+//        List<FmsTaskrcdVo> fmsTaskrcdVos = fmsTaskrcdService.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo);
+//        Map<Integer,List<FmsTaskrcdVo>> map = new LinkedHashMap<>();
+//        Map<Integer, JSONObject> fmsPeriodMap = new HashMap<>();
+//        List<Integer> dayList = new LinkedList<>();
+//        int day = 0;
+//        int i = 0;
+//        String dateStart = fmsPlan.getPlanStartdate();
+//        String dateEnd = null;
+//        for(FmsPeriod fmsPeriod : fmsPeriodList){
+//            if(dateEnd != null){
+//                dateStart = dateEnd;
+//            }
+//            dateEnd = dateStrAdd(dateStart,fmsPeriod.getPeriodDays());
+//            day = day + fmsPeriod.getPeriodDays();
+//            map.put(day,new LinkedList<>());
+//            dayList.add(day);
+//            JSONObject fmsPeriodObject = JSONObject.from(fmsPeriod);
+//            fmsPeriodObject.put("dateStart",dateStart);
+//            fmsPeriodObject.put("dateEnd",dateEnd);
+//            fmsPeriodMap.put(day,fmsPeriodObject);
+//            if(day>growDays){
+//                break;
+//            }
+//            i++;
+//        }
+//        if(i == dayList.size()){
+//            i--;
+//        }
+//        if(!dayList.isEmpty()){
+//            for(FmsTaskrcdVo fmsTaskrcdVo : fmsTaskrcdVos){
+//                long dayBetween = DateUtil.between(DateUtils.parseDate(fmsTaskrcdVo.getTaskrcdSubmitdate()),new Date(),DateUnit.DAY);
+//                if(dayBetween<dayList.get(i)&&i!=0){
+//                    i--;
+//                }
+//                List<FmsTaskrcdVo> list = map.get(dayList.get(i));
+//                String taskrcdCompletedate = fmsTaskrcdVo.getTaskrcdCompletedate();
+//                long completeTime = DateUtils.parseDate(taskrcdCompletedate).getTime();
+//                long dateStartTime = DateUtils.parseDate(dateStart).getTime();
+//                long dateEndTime = DateUtils.parseDate(dateEnd).getTime();
+//                if(dateStartTime <= completeTime && completeTime <= dateEndTime){
+//                    list.add(fmsTaskrcdVo);
+//                }
+//            }
+//        }
+//        fmsPlanDocumentResVo.setFmsPeriodTaskMap(map);
+//        fmsPlanDocumentResVo.setFmsPeriodMap(fmsPeriodMap);
+//        return fmsPlanDocumentResVo;
+//    }
+
     /**
      * 农事预警调度获取种植计划列表
      *

+ 2 - 2
src/main/java/com/yunfeiyun/agmp/fms/service/impl/FmsTaskrcdServiceImpl.java

@@ -1,6 +1,5 @@
 package com.yunfeiyun.agmp.fms.service.impl;
 
-import com.alibaba.fastjson2.JSONObject;
 import com.yunfeiyun.agmp.common.constant.ErrorCode;
 import com.yunfeiyun.agmp.common.constant.PtsMsgBizType;
 import com.yunfeiyun.agmp.common.constant.ResConstants;
@@ -543,7 +542,8 @@ public class FmsTaskrcdServiceImpl implements IFmsTaskrcdService
     @Override
     public List<FmsTaskrcdVo> selectFmsPlanTaskrcdList(FmsTaskrcdListReqVo fmsTaskrcdListReqVo) {
         String tid = SecurityUtils.getTid();
-        List<FmsTaskrcdVo> fmsTaskrcdsList = fmsTaskrcdMapper.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo.getPlanId(), tid);
+        fmsTaskrcdListReqVo.setTid(tid);
+        List<FmsTaskrcdVo> fmsTaskrcdsList = fmsTaskrcdMapper.selectFmsPlanTaskrcdList(fmsTaskrcdListReqVo);
         String[] resBusId = new String[fmsTaskrcdsList.size()];
         Map<String,FmsTaskrcdVo> fmsTaskrcdVoMap = new HashMap<>();
         for(int i = 0;i<fmsTaskrcdsList.size();i++){

+ 4 - 9
src/main/resources/application-prod-demo.yml

@@ -239,18 +239,13 @@ policy:
       ossCloud:
         aliYun:
           accessType: 1
-          aliyunDomain: https://yunfei-agm.oss-cn-hangzhou.aliyuncs.com
+          aliyunDomain: https://agm-saas.oss-cn-beijing.aliyuncs.com
           aliyunPrefix: agmp
-          aliyunEndPoint: oss-cn-hangzhou.aliyuncs.com
+          aliyunEndPoint: oss-cn-beijing.aliyuncs.com
           aliyunAccessKeyId: LTAI4G7tFh5Nk4KXZoSPk1D8
           aliyunAccessKeySecret: RV4S2SfbLPoFNjlI4uIOoA0J1LQPQc
-          aliyunBucketName: yunfei-agm
-        qCloud:
-          qcloudDomain:
-          qcloudPrefix:
-          qcloudSecretId:
-          qcloudSecretKey:
-          qcloudBucketName: yunfei-agm
+          aliyunBucketName: agm-saas
+
   # table(表), cache(缓存)
   water: table
   queue:

+ 3 - 9
src/main/resources/application-test.yml

@@ -241,18 +241,12 @@ policy:
       ossCloud:
         aliYun:
           accessType: 1
-          aliyunDomain: https://yunfei-agm.oss-cn-hangzhou.aliyuncs.com
+          aliyunDomain: https://agm-saas.oss-cn-beijing.aliyuncs.com
           aliyunPrefix: agmp
-          aliyunEndPoint: oss-cn-hangzhou.aliyuncs.com
+          aliyunEndPoint: oss-cn-beijing.aliyuncs.com
           aliyunAccessKeyId: LTAI4G7tFh5Nk4KXZoSPk1D8
           aliyunAccessKeySecret: RV4S2SfbLPoFNjlI4uIOoA0J1LQPQc
-          aliyunBucketName: yunfei-agm
-        qCloud:
-          qcloudDomain:
-          qcloudPrefix:
-          qcloudSecretId:
-          qcloudSecretKey:
-          qcloudBucketName: yunfei-agm
+          aliyunBucketName: agm-saas
   # table(表), cache(缓存)
   water: table
   queue:

+ 17 - 18
src/main/resources/mapper/FmsTaskrcdMapper.xml

@@ -169,24 +169,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         where tc.taskrcdId = #{taskrcdId}
         and tc.tid = #{tid}
     </select>
-    <select id="selectFmsPlanTaskrcdList" resultType="com.yunfeiyun.agmp.fms.domain.vo.FmsTaskrcdVo">
-        SELECT
-        tr.*,
-        fb.blockName,
-        ft.taskType,
-        ft.taskManager,
-        ft.taskVisible,
-        su.userName as taskManagername
-        FROM
-        FmsTaskrcd tr
-        LEFT JOIN FmsTask ft ON ft.taskId = tr.taskId
-        LEFT JOIN SysUser su on su.userId = ft.taskManager
-        LEFT JOIN FmsBlock fb on fb.blockId = ft.blockId
-        WHERE
-        taskrcdAuditstatus = '2'
-        and planId = #{planId}
-        and tr.tid = #{tid}
-        order by ft.taskCompletedate desc
+
+    <select id="selectFmsPlanTaskrcdList" parameterType="FmsTaskrcdListReqVo" resultType="com.yunfeiyun.agmp.fms.domain.vo.FmsTaskrcdVo">
+        SELECT tr.*, fb.blockName, ft.taskType, ft.taskManager, ft.taskVisible, su.userName as taskManagername
+        FROM FmsTaskrcd tr
+            LEFT JOIN FmsTask ft ON ft.taskId = tr.taskId
+            LEFT JOIN SysUser su on su.userId = ft.taskManager
+            LEFT JOIN FmsBlock fb on fb.blockId = ft.blockId
+        <where>
+            taskrcdAuditstatus = '2' and planId = #{planId} and tr.tid = #{tid}
+            <if test="taskId != null  and taskId != ''"> and tr.taskId = #{taskId}</if>
+            <if test="startDate != null  and startDate != ''">
+                and tr.taskrcdCompletedate <![CDATA[ >= ]]> #{startDate}</if>
+            <if test="endDate != null  and endDate != ''">
+                and tr.taskrcdCompletedate <![CDATA[ <= ]]> #{endDate}
+            </if>
+        </where>
+        order by tr.taskrcdCompletedate asc
     </select>
 
     <insert id="insertFmsTaskrcd" parameterType="FmsTaskrcd">