Quellcode durchsuchen

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

jiawuxian vor 2 Jahren
Ursprung
Commit
bc8d3472e9
28 geänderte Dateien mit 1015 neuen und 0 gelöschten Zeilen
  1. 2 0
      project_data/sql/0.0.2/quartz/quartz.sql
  2. 20 0
      project_data/sql/0.0.2/soc/soc.sql
  3. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/mapper/TMonitoringRetrievalPlanMapper.java
  4. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  5. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppResumptionData.java
  6. 65 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java
  7. 36 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionService.java
  8. 336 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java
  9. 31 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/AreaResumptionVo.java
  10. 48 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionItemVo.java
  11. 47 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionNFCVo.java
  12. 91 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPlanVo.java
  13. 50 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPointVo.java
  14. 71 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskDetailVo.java
  15. 37 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskListVo.java
  16. 38 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskVo.java
  17. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java
  18. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataMapper.java
  19. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataNfcMapper.java
  20. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataRemarkimgMapper.java
  21. 20 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java
  22. 6 0
      soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml
  23. 25 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
  24. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataMapper.xml
  25. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataNfcMapper.xml
  26. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataRemarkimgMapper.xml
  27. 34 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml
  28. 1 0
      soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

+ 2 - 0
project_data/sql/0.0.2/quartz/quartz.sql

@@ -1 +1,3 @@
 INSERT INTO `sys_job`(`job_id`, `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (129, '恶劣天气预警', 'DEFAULT', 'WeatherTask.getDataFromApi', '0 0 7,10,14,17 * * ? *', '1', '1', '0', '超级管理员', '2023-09-25 11:46:50', '', NULL);
+INSERT INTO `sys_job` VALUES (128, '履职临期提醒(除了每日的)', 'DEFAULT', 'CoreMessageSendTask.resumptionRemind', '0 0 0 * * ?', '1', '1', '0', '超级管理员', '2023-09-22 17:03:31', '', '2023-09-22 20:29:13');
+INSERT INTO `sys_job` VALUES (125, '消息发送管理(每日凌晨零点)', 'DEFAULT', 'CoreMessageSendTask.messageSendTask', '0 0 0 * * ? *', '1', '1', '0', '超级管理员', '2023-09-21 12:30:22', '超级管理员', '2023-09-22 19:04:39');

+ 20 - 0
project_data/sql/0.0.2/soc/soc.sql

@@ -1013,6 +1013,26 @@ END IF;
 END$$
 DELIMITER ;
 
+
+CALL add_column_if_not_exists();
+DROP PROCEDURE add_column_if_not_exists;
+DELIMITER $$
+CREATE PROCEDURE add_column_if_not_exists()
+BEGIN
+  IF NOT EXISTS (
+      SELECT *
+      FROM INFORMATION_SCHEMA.COLUMNS
+      WHERE TABLE_NAME = 'core_resumption_data'
+      AND COLUMN_NAME = 'data_status'
+  )
+  THEN
+ALTER TABLE core_resumption_data
+    ADD COLUMN `data_status` int NULL DEFAULT NULL COMMENT '数据状态:1保存未处理,2保存已处理';
+END IF;
+END$$
+DELIMITER ;
+
+
 CALL add_column_if_not_exists();
 DROP PROCEDURE add_column_if_not_exists;
 

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/mapper/TMonitoringRetrievalPlanMapper.java

@@ -4,6 +4,7 @@ package com.xunmei.core.access.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -53,6 +54,14 @@ public interface TMonitoringRetrievalPlanMapper extends BaseMapper<TMonitoringRe
      * @return
      */
     int updatePlan(TMonitoringRetrievalPlan tMonitoringRetrievalPlan);
+
+    /**
+     * 根据父id修改状态
+     * @param status
+     * @param parentId
+     * @return
+     */
+    int updatePlanStatus(@Param("status") Integer status,@Param("parentId") Long parentId);
     /**
      * 删除监控调阅计划
      *

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -321,9 +321,18 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         TMonitoringRetrievalPlan plan = baseMapper.selectById(tMonitoringRetrievalPlan.getId());
         if (plan.getPlanStatus() != tMonitoringRetrievalPlan.getPlanStatus()) {
             if (tMonitoringRetrievalPlan.getPlanStatus() == 1) {
+                //删除任务
                 iCoreMonitoringRetrievalTaskService.updateDeleteTaskByPlanId(tMonitoringRetrievalPlan.getId(), 1);
+                //禁用子任务
+                if(null==plan.getParentId()){
+                    baseMapper.updatePlanStatus(1,tMonitoringRetrievalPlan.getId());
+                }
             } else {
+                //还原任务
                 iCoreMonitoringRetrievalTaskService.updateDeleteTaskByPlanId(tMonitoringRetrievalPlan.getId(), 0);
+                if(null==plan.getParentId()){
+                    baseMapper.updatePlanStatus(0,tMonitoringRetrievalPlan.getId());
+                }
             }
         }
         if (tMonitoringRetrievalPlan.getOrgType().equals("1")) {

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppResumptionData.java

@@ -74,4 +74,9 @@ public class AppResumptionData extends Model<AppResumptionData> implements Seria
      * 整改期限
      */
     private String rectificationDeadline;
+
+    /**
+     * 数据状态 1未处理,2已处理
+     */
+    private Integer dataStatus;
 }

+ 65 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java

@@ -0,0 +1,65 @@
+package com.xunmei.core.resumption.gx.controller;
+
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.core.resumption.gx.service.ResumptionService;
+import com.xunmei.core.resumption.gx.vo.ResumptionTaskDetailVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.Duration;
+
+/**
+ * 履职逻辑
+ */
+@RestController
+@RequestMapping("gx/resumption")
+public class GxResumptionController {
+
+    @Autowired
+    private ResumptionService resumptionService;
+
+    @RequestMapping("/getTask")
+    public AjaxResult getTask(@RequestBody ResumptionTaskDetailVo taskDetailVo){
+
+        try {
+            ResumptionTaskDetailVo task = resumptionService.getTask(taskDetailVo);
+            return  AjaxResult.success(task);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error(e.getMessage());
+        }
+
+    }
+
+    /**
+     * 履职任务保存
+     * @param taskDetailVo
+     * @return
+     */
+    @RequestMapping("/saveTask")
+    public AjaxResult saveTask(@RequestBody ResumptionTaskDetailVo taskDetailVo){
+
+        try {
+            RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
+            //仅当hashKey不存在时才设置
+            Boolean hasKey = RedisUtils.hasKey("resumption" + taskDetailVo.getTaskId());
+            if (!hasKey) {
+                RedisUtils.setCacheObject("resumption" + taskDetailVo.getTaskId(), taskDetailVo.getTaskId(), Duration.ofMillis(1000 * 20));
+            }
+            if (hasKey) {
+                return AjaxResult.error("请勿重复提交");
+            }
+            resumptionService.saveTask(taskDetailVo);
+            RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
+            return AjaxResult.success();
+        } catch (Exception e) {
+            e.printStackTrace();
+            RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+}

+ 36 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionService.java

@@ -0,0 +1,36 @@
+package com.xunmei.core.resumption.gx.service;
+
+import com.xunmei.core.resumption.gx.vo.ResumptionTaskDetailVo;
+import com.xunmei.core.resumption.gx.vo.ResumptionTaskListVo;
+import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ResumptionService {
+
+
+    /**
+     * 根据日期获取履职数据
+     * @param dto
+     * @return
+     */
+    Map<String, List<ResumptionTaskListVo>> getTaskList(ResumptionTaskNewDto dto);
+
+
+    /**
+     * 根据任务id,获取当前任务的具体详情
+     * @param taskDetailVo
+     * @return
+     * @throws Exception
+     */
+
+    ResumptionTaskDetailVo getTask(ResumptionTaskDetailVo taskDetailVo)throws Exception;
+
+    /**
+     * 保存履职数据
+     * @param taskDetailVo
+     * @throws Exception
+     */
+    void saveTask(ResumptionTaskDetailVo taskDetailVo)throws Exception;
+}

+ 336 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -0,0 +1,336 @@
+package com.xunmei.core.resumption.gx.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xunmei.common.core.utils.DateHelper;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.resumption.domain.*;
+import com.xunmei.core.resumption.gx.vo.*;
+import com.xunmei.core.resumption.mapper.*;
+import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service("gxResumptionService")
+public class ResumptionServiceImpl implements ResumptionService{
+
+    @Autowired
+    private ResumptionMapper resumptionMapper;
+
+    @Autowired
+    private AppPlanMapper appPlanMapper;
+
+    @Autowired
+    private AppResumptionDataRemarkimgMapper appResumptionDataRemarkimgMapper;
+
+    @Autowired
+    private AppResumptionDataMapper appResumptionDataMapper;
+
+    @Autowired
+    private AppResumptionDataNfcMapper appResumptionDataNfcMapper;
+
+    @Override
+    public Map<String, List<ResumptionTaskListVo>> getTaskList(ResumptionTaskNewDto dto) {
+
+        Date dateTime = dto.getDateTime();
+        if(dateTime == null){
+            dateTime = new Date();
+            dto.setDateTime(dateTime);
+        }
+
+        /*
+         *根据机构id,角色权限,日期,获取对应的履职任务数据
+         */
+
+
+
+        return null;
+    }
+
+    @Override
+    public ResumptionTaskDetailVo getTask(ResumptionTaskDetailVo taskDetailVo) throws Exception {
+        /**
+         * 逻辑梳理如下:
+         * 1、根据任务获取plan_id
+         * 2、根据任务的状态,进行不同的操作。根据数据分为:保存过数据任务,未保存过数据的任务
+         * 保存过数据的任务:进行中、已完成
+         * 未保存过数据的任务: 待履职,已逾期,未完成
+         * 3、未保存过任务的数据处理逻辑如下:
+         *    1)根据计划id组装任务的数据,并根据履职区域进行分组:
+         *    2)根据履职区域获取相应的NFC扫描点
+         *    3)组装数据
+         * 4、保存过任务的数据处理逻辑如下:
+         *    1)根据任务数据获取,要点数据,要点对应的备注,图片,nfc数据
+         *    2)获取计划对应的数据,组装数据
+         */
+        DateHelper dateTime = new DateHelper(taskDetailVo.getTaskDate());
+        int year =dateTime.getYear();
+        int quarter =dateTime.getQuarter() ;
+        //履职状态:1 待履职,2 进行中,3 已完成,4 已过期
+        Resumption resumption = resumptionMapper.findOneByTaskIdAndDate(taskDetailVo.getTaskId(), year,quarter);
+        Integer status = resumption.getStatus();
+        List<ResumptionPlanVo> resumptionPlanVos = new ArrayList<>();
+        boolean isExist = false;
+        if(status == 1 || status == 4){
+            //履职中待履职 和已过期的数据是没有保存过数据的只能根据计划获取
+            Long planId = resumption.getPlanId();
+            resumptionPlanVos = appPlanMapper.selectResumptionPlan(planId);
+            isExist = false;
+
+        }else{
+            resumptionPlanVos = resumptionMapper.selectResumptionPlan(taskDetailVo.getTaskId());
+            isExist = true;
+        }
+
+        /**
+         * 按区域组合的数据
+         */
+        ResumptionTaskDetailVo detailVo = assemblyData(resumptionPlanVos, isExist, resumption);
+
+        return detailVo;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void saveTask(ResumptionTaskDetailVo taskDetailVo) throws Exception {
+        /**
+         * subtype =1 表示保存数据
+         * subtype = 2 表示提交数据
+         */
+        Long taskId = taskDetailVo.getTaskId();
+        DateHelper dateTime = new DateHelper(taskDetailVo.getTaskDate());
+        int year =dateTime.getYear();
+        int quarter =dateTime.getQuarter() ;
+        //获取履职任务
+        Resumption sysResumption = resumptionMapper.findOneByTaskIdAndDate(taskId,year,quarter);
+        sysResumption.setUpdateBy(SecurityUtils.getUsername());
+        sysResumption.setUpdateTime(new Date());
+        sysResumption.setSubmitTime(new Date());
+        sysResumption.setStatus(2);
+
+        if(taskDetailVo.getSubType() == 2){
+            if (sysResumption.getStatus() == 3) {
+                throw new RuntimeException("该任务已过期不能完成提交");
+            }
+            sysResumption.setStatus(3);
+        }
+
+
+        resumptionMapper.updateById(sysResumption);
+
+
+
+        //删除之前的数据
+        appResumptionDataMapper.deleteByResumptionId(taskId);
+        appResumptionDataNfcMapper.deleteByResumptionId(taskId);
+        appResumptionDataRemarkimgMapper.deleteByResumptionId(taskId);
+
+        //保存新的数据
+        AppResumptionData data = null;
+        List<ResumptionItemVo> checks = taskDetailVo.getChecks();
+        for (ResumptionItemVo check : checks) {
+            List<ResumptionPointVo> points = check.getPoints();
+            for (ResumptionPointVo point : points) {
+                 data = new AppResumptionData();
+                 data.setDataStatus(point.getDataStatus());
+                 data.setResumptionId(taskId);
+                 data.setAreaId(check.getAreaId());
+                 data.setItemId(point.getPointId());
+                 data.setRectificationDeadline(point.getRectificationDeadline());
+                 data.setResRemark(point.getResRemark());
+                 data.setResValue(point.getResValue());
+                 data.setSubmitTime(new Date());
+                 data.setResTime(new Date());
+                 data.setPlanId(sysResumption.getPlanId());
+                 data.setSubmitBy(SecurityUtils.getLoginUser().getUserid());
+                 data.setSubmitName(SecurityUtils.getUsername());
+                if(taskDetailVo.getSubType() == 2){
+                    if(point.getDataStatus() == 1){
+                        data.setDataStatus(2);
+                    }
+                }
+                 appResumptionDataMapper.insert(data);
+
+                List<AppResumptionDataRemarkimg> imgs = point.getImgs();
+                for (AppResumptionDataRemarkimg img : imgs) {
+                    img.setResumptionDataId(data.getId());
+                    img.setResumptionId(taskId);
+                    appResumptionDataRemarkimgMapper.insert(img);
+                }
+            }
+        }
+
+
+        List<ResumptionNFCVo> nfcs = taskDetailVo.getNfcs();
+        AppResumptionDataNfc dataNfc = null;
+        for (ResumptionNFCVo nfc : nfcs) {
+            if(nfc.getStatus() == 0){
+                continue;
+            }
+            dataNfc = new AppResumptionDataNfc();
+            dataNfc.setResumptionId(taskId);
+            dataNfc.setNfcId(nfc.getNfcId());
+            dataNfc.setPointId(nfc.getAreaId());
+            dataNfc.setSubmitTime(new Date());
+            dataNfc.setImg(nfc.getImg());
+            dataNfc.setScanMethod(nfc.getScanMethod());
+            dataNfc.setStatus(nfc.getStatus());
+            appResumptionDataNfcMapper.insert(dataNfc);
+        }
+
+    }
+
+    /**
+     * 组装到前端的数据
+     * @param resumptionPlanVos
+     * @return
+     */
+    private ResumptionTaskDetailVo assemblyData(List<ResumptionPlanVo> resumptionPlanVos, boolean isExist, Resumption resumption){
+
+        ResumptionTaskDetailVo taskVo = new ResumptionTaskDetailVo();
+        taskVo.setTaskId(resumption.getId());
+        taskVo.setTaskName(resumption.getName());
+        taskVo.setStatus(resumption.getStatus());
+
+        /**
+         * 组装数据:
+         *  1.对数据按区域分组。
+         *  2.根据检查内容获取检查图片
+         *  3.构建返回到前端的数据
+         */
+        Map<Long,List<AppResumptionDataRemarkimg>> imgMap = new HashMap<>();
+        if(isExist){
+            //数据存在,需要获取任务的所有图片信息
+            QueryWrapper<AppResumptionDataRemarkimg> qw = new QueryWrapper<>();
+            qw.lambda().eq(AppResumptionDataRemarkimg::getResumptionId, resumption.getId());
+            List<AppResumptionDataRemarkimg> imgs = appResumptionDataRemarkimgMapper.selectList(qw);
+            for (AppResumptionDataRemarkimg img : imgs) {
+                Long resumptionDataId = img.getResumptionDataId();
+                List<AppResumptionDataRemarkimg> paths = imgMap.get(resumptionDataId);
+                if(paths == null){
+                    paths = new ArrayList<>();
+                }
+                paths.add(img);
+                imgMap.put(resumptionDataId, paths);
+            }
+        }
+        Integer yesPointNum = 0;
+        Integer noPointNum = 0;
+        Map<Long,ResumptionItemVo> itemMap = new HashMap<>();
+        Map<Long,Map<String,Integer>> itComMap = new HashMap<>();
+        for (ResumptionPlanVo vo : resumptionPlanVos) {
+            if(vo.getDataStatus() == 1){
+                noPointNum++;
+            }else{
+                yesPointNum++;
+            }
+
+            if(isExist){
+                //如果存在数据则设置图片啊
+                List<AppResumptionDataRemarkimg> imgs = imgMap.get(vo.getDataId());
+                if(imgs != null && imgs.size() > 0){
+                    vo.getImgs().addAll(imgs);
+                }
+            }
+            ResumptionItemVo resumptionItemVo = itemMap.get(vo.getItemId());
+            if(resumptionItemVo == null){
+                resumptionItemVo = new ResumptionItemVo();
+            }
+            resumptionItemVo.setItemName(vo.getItemName());
+            resumptionItemVo.setItemId(vo.getItemId());
+            resumptionItemVo.setAreaId(vo.getAreaId());
+            resumptionItemVo.setAreaName(vo.getAreaName());
+
+            ResumptionPointVo pointVo = new ResumptionPointVo();
+            pointVo.setPointName(vo.getPointName());
+            pointVo.setImgs(vo.getImgs());
+            pointVo.setPointId(vo.getPointId());
+            pointVo.setResRemark(vo.getResRemark());
+            if(vo.getResValue() == null){
+                pointVo.setResValue(0);
+            }else{
+                pointVo.setResValue(vo.getResValue());
+            }
+            pointVo.setRectificationDeadline(vo.getRectificationDeadline());
+            pointVo.setDataStatus(vo.getDataStatus());
+            resumptionItemVo.getPoints().add(pointVo);
+            Map<String, Integer> itCom = itComMap.get(vo.getAreaId());
+            if(itCom == null){
+                itCom = new HashMap<>();
+                itCom.put("total", 1);
+                if(pointVo.getDataStatus() == 1){
+                    itCom.put("yes",0);
+                }else{
+                    itCom.put("yes",1);
+                }
+                itComMap.put(vo.getAreaId(),itCom);
+            }else{
+                itCom.put("total",itCom.get("total") + 1);
+                if(pointVo.getDataStatus() == 2){
+                    itCom.put("yes",itCom.get("yes") + 1);
+                }
+            }
+
+            itemMap.put(vo.getItemId(),resumptionItemVo);
+        }
+
+        Map<Long, AreaResumptionVo> map = new HashMap<>();
+        List<ResumptionItemVo> items = new ArrayList<>();
+        for (Map.Entry<Long, ResumptionItemVo> entry: itemMap.entrySet()) {
+            ResumptionItemVo itemVo = entry.getValue();
+            AreaResumptionVo areaData = map.get(itemVo.getAreaId());
+            if(areaData == null){
+                areaData = new AreaResumptionVo();
+                areaData.setAreaId(itemVo.getAreaId());
+                areaData.setAreaName(itemVo.getAreaName());
+                map.put(itemVo.getAreaId(),areaData);
+            }
+            items.add(itemVo);
+        }
+
+        Integer yesNFC = 0;
+        Integer noNFC = 0;
+
+
+        List<ResumptionNFCVo> nfcs = new ArrayList<>();
+        List<AreaResumptionVo> areas = new ArrayList<>();
+        for (Map.Entry<Long, AreaResumptionVo> entry: map.entrySet()) {
+            AreaResumptionVo vo = entry.getValue();
+            Long areaId = entry.getKey();
+            //获取每个区域下的nfc
+            List<ResumptionNFCVo> resumptionNFCVos = resumptionMapper.selectResumptionNFC(resumption.getId(), areaId, resumption.getOrgId());
+            for (ResumptionNFCVo resumptionNFCVo : resumptionNFCVos) {
+                Integer status = resumptionNFCVo.getStatus();
+                if(status == 0){
+                    noNFC++;
+                    continue;
+                }
+                yesNFC++;
+            }
+            nfcs.addAll(resumptionNFCVos);
+            Map<String, Integer> com = itComMap.get(areaId);
+            Integer total = com.get("total");
+            Integer yes = com.get("yes");
+            if(total.equals(yes)){
+                //总数等于处理数
+                vo.setAreaStatus("1");
+            }else if(yes > 0){
+                vo.setAreaStatus("2");
+            }else if(yes == 0){
+                vo.setAreaStatus("0");
+            }
+            areas.add(vo);
+        }
+
+        taskVo.setNoNFCNums(noNFC);
+        taskVo.setYesNFCNums(yesNFC);
+        taskVo.setNoPointNums(noPointNum);
+        taskVo.setYesPointNums(yesPointNum);
+        taskVo.setAreas(areas);
+        taskVo.setChecks(items);
+        taskVo.setNfcs(nfcs);
+        return taskVo;
+    }
+}

+ 31 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/AreaResumptionVo.java

@@ -0,0 +1,31 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 区域数据
+ * @author gaoxiong
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AreaResumptionVo {
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+    /**
+     * 区域名称
+     */
+    private String areaName;
+    /**
+     * 区域状态,默认就是未开始
+     */
+    private String areaStatus = "0";
+
+}

+ 48 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionItemVo.java

@@ -0,0 +1,48 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionItemVo {
+
+    /**
+     * 检查项id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long itemId;
+
+    /**
+     * 检查项名称
+     */
+    private String itemName;
+
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+
+    /**
+     * 区域名称
+     */
+    private String areaName;
+
+    /**
+     * 该检查项是否完成
+     *0表示为完成 1表示 完成 2,表示完成一半
+     */
+    private int complete = 1;
+    /**
+     * 检查内容集合
+     */
+    private List<ResumptionPointVo> points = new ArrayList<>();
+}

+ 47 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionNFCVo.java

@@ -0,0 +1,47 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionNFCVo {
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+    /**
+     * nfcid
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long nfcId;
+
+    /**
+     * 区域采集点名称
+     */
+    private String nfcName;
+
+    /**
+     * nfc编码
+     */
+    private String nfcCode;
+    /**
+     * 扫描状态
+     */
+    private Integer status = 0;
+
+    /**
+     * 扫描方法
+     */
+    private Integer scanMethod;
+    /**
+     * nfc点位图片
+     */
+    private String img;
+
+}

+ 91 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPlanVo.java

@@ -0,0 +1,91 @@
+package com.xunmei.core.resumption.gx.vo;
+
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.resumption.domain.AppResumptionDataRemarkimg;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 履职计划数据
+ * @author gaoxiong
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionPlanVo {
+
+    /**
+     * 履职数据id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long dataId;
+
+    /**
+     * 履职计划id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long planId;
+    /**
+     * 履职项id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long itemId;
+
+    /**
+     * 履职项名称
+     */
+    private String itemName;
+
+    /**
+     * 履职内容id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long pointId;
+
+    /**
+     * 履职内容
+     */
+    private String pointName;
+
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+
+    /**
+     * 区域名称
+     */
+    private String areaName;
+
+    /**
+     * 正常异常
+     */
+    private Integer resValue;
+
+    /**
+     * 异常备注
+     */
+    private String resRemark;
+
+    /**
+     * 整改期限
+     */
+    private String rectificationDeadline;
+
+    /**
+     * 数据状态 1未处理 ,2 已处理
+     */
+    private Integer dataStatus = 1;
+    /**
+     * 对应检查点的图片集合
+     */
+    private List<AppResumptionDataRemarkimg> imgs = new ArrayList<>();
+
+}

+ 50 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPointVo.java

@@ -0,0 +1,50 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.resumption.domain.AppResumptionDataRemarkimg;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionPointVo {
+
+    /**
+     * 检查内容id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long pointId;
+
+    /**
+     * 检查内容
+     */
+    private String pointName;
+    /**
+     * 检查结果 正常 异常
+     */
+    private Integer resValue;
+
+    /**
+     * 异常备注
+     */
+    private String resRemark;
+
+    /**
+     * 整改期限
+     */
+    private String rectificationDeadline;
+    /**
+     * 1未处理,2已处理
+     */
+    private Integer dataStatus;
+    /**
+     * 图片
+     */
+    private List<AppResumptionDataRemarkimg> imgs;
+
+}

+ 71 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskDetailVo.java

@@ -0,0 +1,71 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 履职任务详情数据
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionTaskDetailVo {
+
+    /**
+     * 履职任务id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long taskId;
+    /**
+     * 履职任务时间
+     */
+    private Date taskDate;
+    /**
+     * 履职任务名称
+     */
+    private String taskName;
+    /**
+     * 已检查要点数量
+     */
+    private Integer yesPointNums = 0;
+    /**
+     * 未检查要点数量
+     */
+    private Integer noPointNums = 0;
+    /**
+     * 已扫描NFC数量
+     */
+    private Integer yesNFCNums = 0;
+    /**
+     * 未扫描NFC数量
+     */
+    private Integer noNFCNums = 0;
+
+    /**
+     * 提交类型
+     */
+    private Integer subType;
+
+    /**
+     * 履职任务状态
+     */
+    private Integer status;
+    /**
+     * 履职区域数据
+     */
+    private List<AreaResumptionVo> areas;
+    /**
+     * 履职要点数据
+     */
+    private List<ResumptionItemVo> checks;
+    /**
+     * 履职区域NFC数据
+     */
+    private List<ResumptionNFCVo>  nfcs;
+}

+ 37 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskListVo.java

@@ -0,0 +1,37 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 履职任务列表
+ * 1、待完成
+ * 2、未完成
+ * 3、已完成
+ */
+public class ResumptionTaskListVo {
+
+    /**
+     * 查询的履职日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date taskDate;
+
+    /**
+     * 待完成列表
+     */
+    private List<ResumptionTaskVo> waitList;
+
+    /**
+     * 未完成列表
+     */
+    private List<ResumptionTaskVo> noList;
+
+    /**
+     * 已完成列表
+     */
+    private List<ResumptionTaskVo> yesList;
+
+}

+ 38 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskVo.java

@@ -0,0 +1,38 @@
+package com.xunmei.core.resumption.gx.vo;
+
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ResumptionTaskVo {
+
+    /**
+     * 履职任务id
+     */
+    private Long taskId;
+
+    /**
+     * 履职任务名称
+     */
+    private String taskName;
+
+    /**
+     * 履职任务开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 履职任务结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 履职任务状态
+     */
+    private String status;
+
+
+}

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.dto.plan.CoreResumptionPlanPageDto;
+import com.xunmei.core.resumption.gx.vo.ResumptionPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.ObjectDataClass;
 import com.xunmei.core.resumption.vo.appPlan.ResumptionPlanPageVo;
@@ -80,4 +81,12 @@ public interface AppPlanMapper extends BaseMapper<AppPlan> {
     String selectPlanNameById(@Param("planId") Long planId);
 
     List<IdNameVo> selectPlanNames(@Param("ids") List<Long> ids);
+
+
+    /**
+     * 根据计划id获取履职内容
+     * @param planId
+     * @return
+     */
+    List<ResumptionPlanVo> selectResumptionPlan(@Param("planId") Long planId);
 }

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataMapper.java

@@ -34,4 +34,10 @@ public interface AppResumptionDataMapper extends BaseMapper<AppResumptionData> {
     List<AppResumptionData> findDataByPointBusinessType(Map<String, Object> map);
 
     void updateData(String taskId);
+
+    /**
+     * 根据任务id删除任务数据
+     * @param taskId
+     */
+    void deleteByResumptionId(Long taskId);
 }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataNfcMapper.java

@@ -30,4 +30,9 @@ public interface AppResumptionDataNfcMapper extends BaseMapper<AppResumptionData
     List<ResumptionNfcInfoVo> findPointNfcData(Map<String, Object> parmar);
 
     List<ResumptionNfcVo> findNfcByAreaIdAndOrgId(Map<String, Object> param);
+    /**
+     * 根据任务id删除任务
+     * @param taskId
+     */
+    void deleteByResumptionId(Long taskId);
 }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataRemarkimgMapper.java

@@ -15,4 +15,9 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface AppResumptionDataRemarkimgMapper extends BaseMapper<AppResumptionDataRemarkimg> {
 
+    /**
+     * 根据任务id删除数据
+     * @param taskId
+     */
+    void deleteByResumptionId(Long taskId);
 }

+ 20 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.resumption.domain.AppRulePoint;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.ResumptionTaskDto;
+import com.xunmei.core.resumption.gx.vo.ResumptionNFCVo;
+import com.xunmei.core.resumption.gx.vo.ResumptionPlanVo;
 import com.xunmei.core.resumption.vo.ResumptionAppVo;
 import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
 import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
@@ -46,4 +48,22 @@ public interface ResumptionMapper extends BaseMapper<Resumption> {
      * @return
      */
     List<Resumption>selectDay(@Param("planEndTime")String planEndTime,@Param("planExec")String planExec);
+
+    /**
+     * 根据任务id获取数据
+     * @param resumptionId
+     * @return
+     */
+    List<ResumptionPlanVo> selectResumptionPlan(@Param("resumptionId")Long resumptionId);
+
+    /**
+     * 获取任务的NFC点位情况
+     * @param resumptionId
+     * @param areaId
+     * @param orgId
+     * @return
+     */
+    List<ResumptionNFCVo> selectResumptionNFC(@Param("resumptionId")Long resumptionId, @Param("areaId")Long areaId, @Param("orgId")Long orgId);
+
+
 }

+ 6 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml

@@ -231,6 +231,12 @@
                                              OR parent_id = #{id})b
             )
     </update>
+    <update id="updatePlanStatus">
+        UPDATE core_monitoring_retrieval_plan
+set plan_status=#{status}
+        WHERE
+                parent_id=#{parentId}
+    </update>
 
     <delete id="deleteTMonitoringRetrievalPlanById" parameterType="Long">
         delete

+ 25 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml

@@ -400,4 +400,29 @@
             </if>
         </where>
     </select>
+    <select id="selectResumptionPlan" resultType="com.xunmei.core.resumption.gx.vo.ResumptionPlanVo">
+        select
+            q.item_id,
+            q.item_name,
+            q.point_id,
+            q.point_name,
+            q.area_id,
+            w.`name` as area_name,
+            q.plan_id
+        from
+            (
+                select
+                    c.id as item_id,
+                    c.`name` as item_name,
+                    b.id as point_id,
+                    b.name as point_name,
+                    b.area_id,
+                    a.plan_id
+                from core_resumption_plan_to_point a
+                         LEFT JOIN core_resumption_rule_point b on a.point_id = b.id
+                         LEFT JOIN core_resumption_rule_item c on b.item_id = c.id
+                where a.plan_id = #{planId}
+            ) q
+                LEFT JOIN sys_area w on q.area_id = w.id
+    </select>
 </mapper>

+ 3 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataMapper.xml

@@ -8,6 +8,9 @@
     <sql id="baseColumn">
         id,plan_id,item_id,resumption_id,res_value,res_time,submit_time,res_status,submit_by,submit_name
     </sql>
+    <delete id="deleteByResumptionId">
+        delete from core_resumption_data where resumption_id = #{taskId}
+    </delete>
 
     <select id="findTaskDataList" parameterType="java.util.HashMap" resultType="java.util.Map">
            SELECT c.id as itemid,c.item_name as itemname FROM core_resumption_data a LEFT JOIN core_resumption_rule_point b ON a.item_id= b.id LEFT JOIN core_resumption_rule_item c ON b.item_id = c.id WHERE a.resumption_id=#{taskid} AND b.area_id=#{areaid} GROUP BY c.id having c.id is not null

+ 3 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataNfcMapper.xml

@@ -8,6 +8,9 @@
     <sql id="baseColumn">
         id,resumption_id,nfc_id,submit_time,status
     </sql>
+    <delete id="deleteByResumptionId">
+        delete from core_resumption_data_nfc where resumption_id = #{taskId}
+    </delete>
     <select id="findnfcDataList" parameterType="java.util.HashMap" resultType="java.util.Map">
            SELECT ANY_VALUE(a.id) AS nfcdataid,ANY_VALUE(b.id) AS nfcid,ANY_VALUE(b.code) AS nfccdoe,ANY_VALUE(a.status) as status ,ANY_VALUE(c.check_name) as checkName FROM core_resumption_data_nfc a LEFT JOIN sys_nfc_bind b ON a.nfc_id = b.check_id  left join sys_area_check c on b.check_id = c.id WHERE b.area_id=#{areaid} AND a.resumption_id=#{taskid} AND b.org_id =#{orgId} group by b.code
     </select>

+ 3 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataRemarkimgMapper.xml

@@ -8,4 +8,7 @@
     <sql id="baseColumn">
         id,task_id,task_data_id,remark_id,img_path
     </sql>
+    <delete id="deleteByResumptionId">
+        delete from core_resumption_data_remarkimg where resumption_id = #{taskId}
+    </delete>
 </mapper>

+ 34 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -161,4 +161,38 @@
         </if>
 
     </select>
+    <select id="selectResumptionPlan" resultType="com.xunmei.core.resumption.gx.vo.ResumptionPlanVo">
+         select
+            a.data_id,
+            a.area_id,
+            d.`name` as area_name,
+            c.id as item_id,
+            c.`name` as item_name,
+            b.id as point_id,
+            b.`name` as point_name,
+            a.res_value,
+            a.res_remark,
+            a.rectification_deadline,
+            a.data_status
+        from
+            (select id as data_id,area_id,item_id,res_value,res_remark,rectification_deadline,data_status
+             from core_resumption_data where resumption_id = #{resumptionId}) a
+                LEFT JOIN core_resumption_rule_point b on a.item_id = b.id
+                LEFT JOIN core_resumption_rule_item c on b.item_id = c.id
+                LEFT JOIN sys_area d on a.area_id = d.id
+    </select>
+    <select id="selectResumptionNFC" resultType="com.xunmei.core.resumption.gx.vo.ResumptionNFCVo">
+         SELECT
+            a.area_id,
+            a.id as nfc_id,
+            a.collection_area_name as nfc_name,
+            a.`code` as nfc_code,
+            b.`status`,
+            b.scan_method,
+            b.img
+        FROM
+            ( SELECT area_id, collection_area_name, CODE, id FROM sys_nfc_bind WHERE area_id =#{areaId} AND org_id = #{orgId} ) a
+            LEFT JOIN ( SELECT nfc_id, point_id, img, STATUS, scan_method FROM core_resumption_data_nfc WHERE resumption_id = #{resumptionId} ) b ON a.id = b.nfc_id
+
+    </select>
 </mapper>

+ 1 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -138,6 +138,7 @@
         <if test="request.moth !=null">
             and ymd_date like concat('%', #{request.moth}, '%')
         </if>
+        ORDER BY create_time DESC ,status
     </select>
     <select id="selectTaskDataVoListByRetrievalTaskId"
             resultType="com.xunmei.common.core.domain.retrieval.vo.TaskDataVo">