Administrator 2 years ago
parent
commit
7b6ae9e63c

+ 5 - 0
src/main/java/com/sysu/admin/controller/lz/ns/NsActionRecordRepository.java

@@ -4,6 +4,7 @@ import com.sysu.admin.controller.lz.ns.bean.NsActionRecord;
 import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
 import org.springframework.data.jpa.repository.Query;
 
+import javax.transaction.Transactional;
 import java.util.List;
 
 public interface NsActionRecordRepository extends JpaPlusRepository<NsActionRecord, Integer> {
@@ -15,4 +16,8 @@ public interface NsActionRecordRepository extends JpaPlusRepository<NsActionReco
     @Query(value = "from NsActionRecord ar where ar.treeId = ?1 and ar.actionId = ?2 and ar.finished = ?3")
     NsActionRecord findAllByTreeIdAndActionId(Integer treeId,Integer actionId, Integer finished);
 
+    @Query(value = "delete from lz_ns_action_record where task_id = ?1",nativeQuery = true)
+    @Transactional
+    int deleteByTaskId(Integer taskId);
+
 }

+ 7 - 0
src/main/java/com/sysu/admin/controller/lz/ns/NsActionRecordService.java

@@ -22,6 +22,13 @@ public class NsActionRecordService extends BaseService<NsActionRecord, Integer>
         return repository.findAllByTreeIdAndActionId(treeId, actionId, finished);
     }
 
+    public void deleteByTaskId(Integer taskId){
+        if(taskId == null){
+            return;
+        }
+        repository.deleteByTaskId(taskId);
+    }
+
     @Override
     public JpaPlusRepository<NsActionRecord, Integer> r() {
         return repository;

+ 11 - 0
src/main/java/com/sysu/admin/controller/lz/ns/NsTaskRepository.java

@@ -0,0 +1,11 @@
+package com.sysu.admin.controller.lz.ns;
+
+import com.sysu.admin.controller.lz.ns.bean.NsTask;
+import com.sysu.admin.controller.lz.ns.bean.NsType;
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+
+public interface NsTaskRepository extends JpaPlusRepository<NsTask, Integer> {
+
+    NsTask findByTreeIdAndNsTypeIdAndStatus(Integer treeId, Integer typeId, Integer status);
+
+}

+ 25 - 0
src/main/java/com/sysu/admin/controller/lz/ns/NsTaskService.java

@@ -0,0 +1,25 @@
+package com.sysu.admin.controller.lz.ns;
+
+import com.sysu.admin.controller.lz.ns.bean.NsTask;
+import com.sysu.admin.controller.lz.ns.bean.NsType;
+import com.sysu.admin.support.base.BaseService;
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class NsTaskService extends BaseService<NsTask, Integer> {
+
+    @Autowired
+    NsTaskRepository nsTypeRepository;
+
+    public NsTask findByTreeIdAndNsTypeIdAndStatus(Integer treeId,Integer typeId,Integer status){
+        return nsTypeRepository.findByTreeIdAndNsTypeIdAndStatus(treeId, typeId, status);
+    }
+
+
+    @Override
+    public JpaPlusRepository<NsTask, Integer> r() {
+        return nsTypeRepository;
+    }
+}

+ 1 - 0
src/main/java/com/sysu/admin/controller/lz/ns/bean/NsActionRecord.java

@@ -29,6 +29,7 @@ public class NsActionRecord {
     private Integer source;
     private Integer treeId;
     private String content;
+    private Integer taskId;
 
     @Transient
     private String actionName;

+ 36 - 0
src/main/java/com/sysu/admin/controller/lz/ns/bean/NsTask.java

@@ -0,0 +1,36 @@
+package com.sysu.admin.controller.lz.ns.bean;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import lombok.experimental.FieldNameConstants;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+import javax.persistence.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@FieldNameConstants(innerTypeName = "FIELDS")
+@Table(name = "lz_ns_task")
+@Entity
+@DynamicInsert
+@DynamicUpdate
+public class NsTask {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Integer id;
+    private Integer userId;
+    private String content;
+    private String title;
+    private Integer nsTypeId;
+    private Integer status;
+    private Date createDate;
+    private Integer treeId;
+
+    @Transient
+    private List<NsActionRecord> recordList = new ArrayList<>();
+}

+ 2 - 0
src/main/java/com/sysu/admin/controller/lz/ns/site/ActionRecordVo.java

@@ -12,6 +12,8 @@ public class ActionRecordVo {
     private String content;
     private Integer finished = 0;
     private Integer source;
+    private Integer typeId;
+    private String title;
 
 
 }

+ 51 - 21
src/main/java/com/sysu/admin/controller/lz/ns/site/NsActionRecordController.java

@@ -2,8 +2,10 @@ package com.sysu.admin.controller.lz.ns.site;
 
 import com.sysu.admin.controller.lz.ns.NsActionRecordService;
 import com.sysu.admin.controller.lz.ns.NsActionTreeService;
+import com.sysu.admin.controller.lz.ns.NsTaskService;
 import com.sysu.admin.controller.lz.ns.bean.NsActionRecord;
 import com.sysu.admin.controller.lz.ns.bean.NsActionTree;
+import com.sysu.admin.controller.lz.ns.bean.NsTask;
 import com.sysu.admin.controller.lz.ns.bean.NsType;
 import com.sysu.admin.controller.lz.tree.LzTree;
 import com.sysu.admin.controller.lz.tree.LzTreeService;
@@ -28,40 +30,37 @@ public class NsActionRecordController {
     private NsActionTreeService actionTreeService;
     @Autowired
     private LzTreeService lzTreeService;
+    @Autowired
+    private NsTaskService nsTaskService;
 
     @RequestMapping("/list")
     public BaseResult list(@RequestBody CommonVo commonVo){
         List<LzTree> treeList = lzTreeService.findListByAreaId(commonVo.getAreaId());
         List<Integer> ids = new ArrayList<>(treeList.size());
         treeList.stream().forEach(lzTree -> ids.add(lzTree.getId()));
+        List<NsTask> nsTaskList = nsTaskService.findAll();
+        List<NsActionRecord> res = nsActionRecordService.findAllByTreeIds(ids, commonVo.getFinished());
         List<NsActionTree> nsActionTrees = actionTreeService.findAll();
         Map<Integer, NsActionTree>  integerNsActionTreeMap =  listToMap(nsActionTrees);
-        List<NsActionRecord> res = nsActionRecordService.findAllByTreeIds(ids, commonVo.getFinished());
-        return R.succ(cast(res, integerNsActionTreeMap));
+        //把NsActionRecord 与 NsTask 合并
+        merge(nsTaskList, res, integerNsActionTreeMap );
+
+        return R.succ(cast(nsTaskList));
     }
 
     /**
-     * 把农事记录 List<NsActionRecord> 转换成 Map<TreeId, Map<NsTypeId, List<NsActionRecord>>>
-     * @param res
-     * @param integerNsActionTreeMap
+     * 把农事记录 List<NsActionRecord> 转换成 Map<TreeId, List<NsTask>>
      * @return
      */
-    private Map<String, Map<String,List<NsActionRecord>>> cast(List<NsActionRecord> res, Map<Integer, NsActionTree>  integerNsActionTreeMap){
-        Map<String, Map<String,List<NsActionRecord>>> resMap = new HashMap<>();
-        res.stream().forEach(nsActionRecord -> {
-            NsActionTree actionTree = integerNsActionTreeMap.get(nsActionRecord.getActionId());
-            Map<String, List<NsActionRecord>> nsTypeMap = resMap.get(nsActionRecord.getTreeId().toString());
-            if(nsTypeMap == null){
-                nsTypeMap = new HashMap<>();
-                resMap.put(nsActionRecord.getTreeId().toString(), nsTypeMap);
-            }
-            List<NsActionRecord> nsActionRecordList = nsTypeMap.get(actionTree.getTypeId().toString());
-            if(nsActionRecordList == null){
-                nsActionRecordList = new ArrayList<>();
-                nsTypeMap.put(actionTree.getTypeId().toString(), nsActionRecordList);
+    private Map<String, List<NsTask>> cast( List<NsTask> nsTaskList){
+        Map<String, List<NsTask>> resMap = new HashMap<>();
+        nsTaskList.stream().forEach(nsTask -> {
+            List<NsTask> taskList = resMap.get(nsTask.getTreeId().toString());
+            if(taskList == null){
+                taskList = new ArrayList<>();
+                resMap.put(nsTask.getTreeId().toString(), taskList);
             }
-            nsActionRecordList.add(nsActionRecord);
-            nsActionRecord.setActionName(actionTree.getName());
+            taskList.add(nsTask);
         });
         return resMap;
     }
@@ -74,6 +73,19 @@ public class NsActionRecordController {
         return map;
     }
 
+    public void merge(List<NsTask> nsTaskList, List<NsActionRecord> res, Map<Integer, NsActionTree>  integerNsActionTreeMap){
+         Map<String, NsTask>  nsTaskMap  = new HashMap<>();
+        nsTaskList.stream().forEach(nsTask -> {
+            nsTaskMap.put(nsTask.getId().toString(), nsTask);
+        });
+        res.stream().forEach(nsActionRecord -> {
+            String actionName = integerNsActionTreeMap.get(nsActionRecord.getActionId()).getName();
+            nsActionRecord.setActionName(actionName);
+            NsTask nsTask = nsTaskMap.get(nsActionRecord.getTaskId().toString());
+            nsTask.getRecordList().add(nsActionRecord);
+        });
+    }
+
 
     @RequestMapping("/save")
     public BaseResult save(@RequestBody ActionRecordVo actionRecordVo){
@@ -81,12 +93,27 @@ public class NsActionRecordController {
         Date now = new Date();
         List<NsActionRecord> nsActionRecordList = new ArrayList<>();
         treeList.stream().forEach(tree -> {
+            //先查有没有 同树 未完成的 同typeId 的任务
+            NsTask nsTask = nsTaskService.findByTreeIdAndNsTypeIdAndStatus(tree.getId(), actionRecordVo.getTypeId(), 0);
+            if(nsTask == null){
+                nsTask = new NsTask();
+            }
+            nsTask.setCreateDate(now);
+            nsTask.setContent(actionRecordVo.getContent());
+            nsTask.setUserId(-1);
+            nsTask.setNsTypeId(actionRecordVo.getTypeId());
+            nsTask.setStatus(0);
+            nsTask.setTreeId(tree.getId());
+            nsTask.setTitle(actionRecordVo.getTitle());
+            nsTaskService.saveAndFlush(nsTask);
+            Integer taskId = nsTask.getId();
+
             actionRecordVo.getActionIds().stream().forEach(actionId -> {
-                //先查有没有 未完成的 同actionId 的农事
                 NsActionRecord nsActionRecord = nsActionRecordService.findAllByTreeIdAndActionId(tree.getId(), actionId, 0);
                 if(nsActionRecord == null){
                     nsActionRecord = new NsActionRecord();
                 }
+                nsActionRecord.setTaskId(taskId);
                 nsActionRecord.setTreeId(tree.getId());
                 nsActionRecord.setActionId(actionId);
                 nsActionRecord.setFinished(actionRecordVo.getFinished());
@@ -104,16 +131,19 @@ public class NsActionRecordController {
     public BaseResult remove(@RequestBody ActionRecordVo actionRecordVo){
         List<LzTree> treeList = lzTreeService.findListByCodes(actionRecordVo.getCodes());
         List<NsActionRecord> nsActionRecordList = new ArrayList<>();
+        Set<Integer> taskIdSet = new HashSet<>();
         treeList.stream().forEach(tree -> {
             actionRecordVo.getActionIds().stream().forEach(actionId -> {
                 //先查有没有 未完成的 同actionId 的农事
                 NsActionRecord nsActionRecord = nsActionRecordService.findAllByTreeIdAndActionId(tree.getId(), actionId, 0);
                 if(nsActionRecord != null){
                     nsActionRecordList.add(nsActionRecord);
+                    taskIdSet.add(nsActionRecord.getTaskId());
                 }
             });
         });
         nsActionRecordService.deleteAll(nsActionRecordList);
+        nsTaskService.delete(taskIdSet.toArray(new Integer[0]));
         return R.succ();
     }
 }

+ 24 - 0
src/main/java/com/sysu/admin/controller/lz/ns/site/NsTaskController.java

@@ -0,0 +1,24 @@
+package com.sysu.admin.controller.lz.ns.site;
+
+import com.sysu.admin.controller.lz.ns.NsTaskService;
+import com.sysu.admin.controller.lz.ns.NsTypeService;
+import com.sysu.admin.controller.lz.ns.bean.NsTask;
+import com.xiesx.fastboot.base.result.BaseResult;
+import com.xiesx.fastboot.base.result.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Sort;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("/site/ns_task")
+@RestController
+public class NsTaskController {
+
+    @Autowired
+    NsTaskService nsTaskService;
+
+    @RequestMapping("/list")
+    public BaseResult list(){
+        return R.succ(nsTaskService.findAll(Sort.by("id")));
+    }
+}