浏览代码

重写履职执行逻辑

gaoxiong 2 年之前
父节点
当前提交
4ada723d26
共有 22 个文件被更改,包括 968 次插入0 次删除
  1. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppResumptionData.java
  2. 65 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java
  3. 36 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionService.java
  4. 336 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java
  5. 31 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/AreaResumptionVo.java
  6. 48 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionItemVo.java
  7. 47 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionNFCVo.java
  8. 91 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPlanVo.java
  9. 50 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPointVo.java
  10. 71 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskDetailVo.java
  11. 37 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskListVo.java
  12. 38 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskVo.java
  13. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java
  14. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataMapper.java
  15. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataNfcMapper.java
  16. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataRemarkimgMapper.java
  17. 20 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java
  18. 25 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
  19. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataMapper.xml
  20. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataNfcMapper.xml
  21. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataRemarkimgMapper.xml
  22. 34 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

+ 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);
+
+
 }

+ 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>