|
|
@@ -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;
|
|
|
+// }
|
|
|
+
|
|
|
/**
|
|
|
* 农事预警调度获取种植计划列表
|
|
|
*
|