Procházet zdrojové kódy

Merge remote-tracking branch 'origin/V0.0.5' into V0.0.5

jingyuanchao před 1 rokem
rodič
revize
81df09e4ce
26 změnil soubory, kde provedl 252 přidání a 83 odebrání
  1. 3 0
      project_data/sql/0.0.5/soc/soc.sql
  2. 22 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteNfcBindService.java
  3. 22 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteNfcBindFallbackFactory.java
  4. 4 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/retrieval/vo/CoreMonitoringRetrievalTaskOneVo.java
  5. 11 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/CoreMonitoringTaskRegistrationServiceImpl.java
  6. 0 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluatePlanController.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluateTaskController.java
  8. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java
  9. 47 11
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java
  10. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  11. 28 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java
  12. 50 31
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java
  13. 4 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/TaskRegisterVo.java
  14. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/device/ProtectionMapper.xml
  15. 2 2
      soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml
  16. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
  17. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml
  18. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionRecordMapper.xml
  19. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml
  20. 15 3
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml
  21. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRuleMapper.xml
  22. 9 8
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysNfcBindController.java
  23. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysNfcBindMapper.java
  24. 9 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysNfcBindService.java
  25. 6 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysNfcBindServiceImpl.java
  26. 10 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml

+ 3 - 0
project_data/sql/0.0.5/soc/soc.sql

@@ -121,3 +121,6 @@ INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_cla
 VALUES (6, '中心业务库', '6', 'monitor_org', null, 'default', 'N', '0',  null, now(), null, now(), null);
 INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, update_by, update_time, remark)
 VALUES (10, '监控中心', '10', 'monitor_org', null, 'default', 'N', '0',  null, now(), null, now(), null);
+delete  from `sys_menu` where  id=01719892877586239490;
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01719892877586239490, '外包履职评价统计表', 1719287834364436482, 2, 'evaluateTable', 'evaluateTable/index', NULL, 1, 1, 'C', '0', '0', 'core:evaluateTask:statistics', '1', 'chart', NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');

+ 22 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteNfcBindService.java

@@ -0,0 +1,22 @@
+package com.xunmei.system.api;
+
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.constant.ServiceNameConstants;
+import com.xunmei.system.api.factory.RemoteNfcBindFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.List;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/12/15
+ */
+@FeignClient(contextId = "remoteNfcBindService", value = ServiceNameConstants.SYSTEM_SERVICE)
+public interface RemoteNfcBindService {
+    @GetMapping("/bind/selectNfcByCode")
+    List<Long> selectNfcByCode(@RequestParam("code") String code, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+}

+ 22 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteNfcBindFallbackFactory.java

@@ -0,0 +1,22 @@
+package com.xunmei.system.api.factory;
+
+import com.xunmei.system.api.RemoteNfcBindService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+
+/**
+ * @author :LuoWei
+ * @date : 2023/12/15
+ */
+@Component
+public class RemoteNfcBindFallbackFactory implements FallbackFactory<RemoteNfcBindService> {
+    private static final Logger log = LoggerFactory.getLogger(RemoteNfcBindFallbackFactory.class);
+    @Override
+    public RemoteNfcBindService create(Throwable cause) {
+        log.error("nfc服务调用失败:{}", cause.getMessage());
+        return null;
+    }
+}

+ 4 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/retrieval/vo/CoreMonitoringRetrievalTaskOneVo.java

@@ -43,28 +43,28 @@ public class CoreMonitoringRetrievalTaskOneVo {
     /**
      * 开始时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
     @ApiModelProperty(value = "开始时间")
     private Date planStartTime;
 
     /**
      * 结束时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
     @ApiModelProperty(value = "结束时间")
     private Date planEndTime;
 
     /**
      * 调阅开始时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
     @ApiModelProperty(value = "调阅开始时间")
     private Date startTime;
 
     /**
      * 调阅结束时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
     @ApiModelProperty(value = "调阅结束时间")
     private Date endTime;
 

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

@@ -5,6 +5,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
@@ -18,6 +19,7 @@ import com.xunmei.core.access.service.ICoreMonitoringTaskRegistrationService;
 import com.xunmei.core.access.vo.CoreMonitoringTaskRegistrationVO;
 import com.xunmei.core.retrieval.mapper.CoreMonitoringRetrievalTaskMapper;
 import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
+import com.xunmei.system.api.RemoteNfcBindService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -43,6 +45,8 @@ public class CoreMonitoringTaskRegistrationServiceImpl extends ServiceImpl<CoreM
     private CoreMonitoringRetrievalTaskMapper coreMonitoringRetrievalTaskMapper;//任务
     @Autowired
     private CoreMonitoringTaskMonitorInfoMapper coreMonitoringTaskMonitorInfoMapper;//项目
+    @Autowired
+    private RemoteNfcBindService remoteNfcBindService;
 
     /**
      * 查询【请填写功能名称】
@@ -79,6 +83,13 @@ public class CoreMonitoringTaskRegistrationServiceImpl extends ServiceImpl<CoreM
      */
     @Override
     public int insertCoreMonitoringTaskRegistration(CoreMonitoringTaskRegistration coreMonitoringTaskRegistration) {
+        //如果进来的NFC不是本机构和不是设备间就不让扫
+        if (StringUtils.isNotEmpty(coreMonitoringTaskRegistration.getStartNfc())) {
+            List<Long> longs = remoteNfcBindService.selectNfcByCode(coreMonitoringTaskRegistration.getStartNfc(), SecurityConstants.INNER);
+            if (!longs.contains(SecurityUtils.getUserId())) {
+                throw new ServiceException("请扫描本机构NFC");
+            }
+        }
         //jiaoyan
         QueryWrapper queryWrapper = new QueryWrapper();
         queryWrapper.eq("task_id", coreMonitoringTaskRegistration.getTaskId());

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluatePlanController.java

@@ -55,7 +55,6 @@ public class CoreEvaluatePlanController extends BaseController {
     }
 
     @ApiOperation(value = "查询CoreEvaluatePlan列表全部")
-    @RequiresPermissions("core:evaluatePlan:list")
     @GetMapping("/allList")
     public List<CoreEvaluatePlan> allList() {
         return coreEvaluatePlanService.allList();

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/controller/CoreEvaluateTaskController.java

@@ -108,7 +108,7 @@ public class CoreEvaluateTaskController extends BaseController {
     }
 
     @ApiOperation(value = "统计")
-    @RequiresPermissions("core:evaluateTask:list")
+    @RequiresPermissions("core:evaluateTask:statistics")
     @GetMapping("/statistics")
     public AjaxResult statistics(EvaluateTaskStatisticsDTO evaluateTaskStatisticsDTO) {
         AjaxResult ajaxResult = AjaxResult.success();

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionServiceImpl.java

@@ -426,7 +426,7 @@ public class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> i
 
     private List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto, Long confirmButton, Long dissentButton, Long reformButton) {
         LambdaQueryWrapper<Question> wrapper = generateCurUserTaskWrapper(panelListDto, confirmButton, dissentButton, reformButton);
-
+        wrapper.orderByAsc(Question::getConfirmStatus);
         if (wrapper.isEmptyOfWhere()) {
             return new ArrayList<>();
         } else {

+ 47 - 11
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -42,10 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service
@@ -65,6 +62,7 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     private CoreSafetyExceptionDataMapper exceptionDataMapper;
     @Autowired
     private CoreSafeMonthScoreMapper safeMonthScoreMapper;
+
     @Override
     public List<Map<String, Object>> findDayTaskList(int year, int quarter, String dateTime, Long roleId, Long orgid) {
         return resumptionMapper.findDayTaskList(year, quarter, dateTime, roleId, orgid);
@@ -116,12 +114,32 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
 
     @Override
     public List<ResumptionAppVo> findResumptionApp(ResumptionTaskNewDto res) {
-        if(ObjectUtil.isNotNull(res.getDateTime())){
+        if (ObjectUtil.isNotNull(res.getDateTime())) {
             res.setStartTime(DateUtil.endOfDay(res.getDateTime()));
             res.setEndTime(DateUtil.beginOfDay(res.getDateTime()));
         }
 
-        return resumptionMapper.findResumptionApp(res);
+        List<ResumptionAppVo> data = resumptionMapper.findResumptionApp(res);
+        data.sort(new Comparator<ResumptionAppVo>() {
+            @Override
+            public int compare(ResumptionAppVo o1, ResumptionAppVo o2) {
+                Integer o1Status = o1.getStatus();
+                Integer o2Status = o2.getStatus();
+                if (ObjectUtil.equal(o1Status, 1)) {
+                    o1Status = -1;
+                }
+                if (ObjectUtil.equal(o2Status, 1)) {
+                    o2Status = -1;
+                }
+                if (ObjectUtil.equal(o1Status, o2Status)) {
+                    return o1.getPlanEndTime().compareTo(o2.getPlanEndTime());
+                } else {
+                    return -o1Status.compareTo(o2Status);
+                }
+            }
+        });
+
+        return data;
     }
 
     @Override
@@ -211,7 +229,25 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
         list.forEach(item -> {
             item.setType(PanelTypeEnums.RESUMPTION.getCode());
         });
+        list.sort(new Comparator<PanelListVo>() {
+            @Override
+            public int compare(PanelListVo o1, PanelListVo o2) {
+                Integer o1Status = o1.getStatus();
+                Integer o2Status = o2.getStatus();
+                if (ObjectUtil.equal(o1Status, 1)) {
+                    o1Status = -1;
+                }
+                if (ObjectUtil.equal(o2Status, 1)) {
+                    o2Status = -1;
+                }
 
+                if (ObjectUtil.equal(o1Status, o2Status)) {
+                    return o1.getEndTime().compareTo(o2.getEndTime());
+                } else {
+                    return -o1Status.compareTo(o2Status);
+                }
+            }
+        });
         return list;
     }
 
@@ -328,15 +364,15 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
 //    }
 
     @Override
-    @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRES_NEW)
-    public void findResumptionList(List<Long> orgIds,DateTime time) {
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+    public void findResumptionList(List<Long> orgIds, DateTime time) {
         SysRole role = roleService.getRoleByName("网点安全员", SecurityConstants.INNER);
-         //baseMapper.findResumptionExceptionList(time.year(), time.quarter(), time.month() + 1, role.getId());
-         baseMapper.saveResumptionExceptionList(time.year(), time.quarter(), time.month() + 1, role.getId(),orgIds);
+        //baseMapper.findResumptionExceptionList(time.year(), time.quarter(), time.month() + 1, role.getId());
+        baseMapper.saveResumptionExceptionList(time.year(), time.quarter(), time.month() + 1, role.getId(), orgIds);
     }
 
     @Override
-    public List<SafeScoreResumptionDataVo>  findSource(SafeScoreSourceDto request) {
+    public List<SafeScoreResumptionDataVo> findSource(SafeScoreSourceDto request) {
 
 
         List<CoreSafetyExceptionData> exceptionDataList = exceptionDataMapper.selectList(new LambdaQueryWrapper<CoreSafetyExceptionData>()

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -313,7 +313,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
      */
     private Date getEffectiveTime(CoreSafecheckPlan plan, Boolean immediateEffect) {
         if (ObjectUtil.equal(plan.getPlanCycle(), SafetyPlanCycle.NONE.getCode())) {
-            return DateUtil.beginOfDay(plan.getEndDate());
+            return DateUtil.beginOfDay(plan.getStartDate());
         }
 
         Date effectiveTime = new Date();

+ 28 - 8
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -20,6 +20,7 @@ import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.security.utils.DictUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.resumption.vo.ResumptionAppVo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.enums.SafetyTaskSourceType;
 import com.xunmei.core.safetyCheck.mapper.CoreSafecheckPlanToRoleMapper;
@@ -83,9 +84,9 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
         if (coreSafetyTask.getParams().get("beginTime") != null && coreSafetyTask.getParams().get("endTime") != null) {
             query.between("create_time", coreSafetyTask.getParams().get("beginTime"), coreSafetyTask.getParams().get("endTime"));
         }
-        if(CollectionUtil.isNotEmpty(coreSafetyTask.getRange()) && coreSafetyTask.getRange().size()==2 ){
-            coreSafetyTask.getRange().set(0,DateUtil.beginOfDay(coreSafetyTask.getRange().get(0)));
-            coreSafetyTask.getRange().set(1,DateUtil.endOfDay(coreSafetyTask.getRange().get(1)));
+        if (CollectionUtil.isNotEmpty(coreSafetyTask.getRange()) && coreSafetyTask.getRange().size() == 2) {
+            coreSafetyTask.getRange().set(0, DateUtil.beginOfDay(coreSafetyTask.getRange().get(0)));
+            coreSafetyTask.getRange().set(1, DateUtil.endOfDay(coreSafetyTask.getRange().get(1)));
         }
         coreSafetyTask.setGrantUserId(SecurityUtils.getUserId());
         //获取数据
@@ -107,7 +108,7 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
                     List<SafetyPlanRoleVo> roles = planRoles.stream().filter(pr -> ObjectUtil.equal(r.getPlanId(), pr.getPlanId())).collect(Collectors.toList());
 //                    if (coreSafetyTask.getRoleId() != null) {
 //                        roles = roles.stream().filter(e -> e.getRoleId().equals(coreSafetyTask.getRoleId())).collect(Collectors.toList());
-                        r.setRoles(roles);
+                    r.setRoles(roles);
 //                    } else {
 //                        r.setRoles(roles);
 //                    }
@@ -218,7 +219,7 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
         return WebPanelResult
                 .builder()
                 .status(1)
-                .statusText(DictUtils.getDictLabel(DictConstants.SAFETY_CHECK_STATUS,1))
+                .statusText(DictUtils.getDictLabel(DictConstants.SAFETY_CHECK_STATUS, 1))
                 .taskType(PanelTypeEnums.SAFETY_CHECK.ordinal())
                 .taskTypeText(PanelTypeEnums.SAFETY_CHECK.getName())
                 .nums(taskList.size()).build();
@@ -231,6 +232,25 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
         list.forEach(item -> {
             item.setType(PanelTypeEnums.SAFETY_CHECK.getCode());
         });
+        list.sort(new Comparator<PanelListVo>() {
+            @Override
+            public int compare(PanelListVo o1, PanelListVo o2) {
+                Integer o1Status = o1.getStatus();
+                Integer o2Status = o2.getStatus();
+                if (ObjectUtil.equal(o1Status, 1)) {
+                    o1Status = -1;
+                }
+                if (ObjectUtil.equal(o2Status, 1)) {
+                    o2Status = -1;
+                }
+
+                if (ObjectUtil.equal(o1Status, o2Status)) {
+                    return o1.getStartTime().compareTo(o2.getStartTime());
+                } else {
+                    return -o1Status.compareTo(o2Status);
+                }
+            }
+        });
         return list;
     }
 
@@ -241,9 +261,9 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
 
     @Override
     public List<CoreSafetyTaskExport> down(CoreSafetyTask coreSafetyTask) {
-        if(CollectionUtil.isNotEmpty(coreSafetyTask.getRange()) && coreSafetyTask.getRange().size()==2 ){
-            coreSafetyTask.getRange().set(0,DateUtil.beginOfDay(coreSafetyTask.getRange().get(0)));
-            coreSafetyTask.getRange().set(1,DateUtil.endOfDay(coreSafetyTask.getRange().get(1)));
+        if (CollectionUtil.isNotEmpty(coreSafetyTask.getRange()) && coreSafetyTask.getRange().size() == 2) {
+            coreSafetyTask.getRange().set(0, DateUtil.beginOfDay(coreSafetyTask.getRange().get(0)));
+            coreSafetyTask.getRange().set(1, DateUtil.endOfDay(coreSafetyTask.getRange().get(1)));
         }
         coreSafetyTask.setGrantUserId(SecurityUtils.getUserId());
         return coreSafetyTaskMapper.down(coreSafetyTask);

+ 50 - 31
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRegisterSericeImpl.java

@@ -3,6 +3,7 @@ package com.xunmei.core.safetyCheck.service.impl;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -40,6 +41,7 @@ import com.xunmei.system.api.RemoteUserService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.model.LoginUser;
+import io.reactivex.rxjava3.core.Completable;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -87,8 +89,8 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
 
     @Override
     public TableDataInfo appList(AppPageDto dto) {
-        if(ObjectUtil.isNotNull(dto.getTaskTime())){
-            DateRange r= DateUtils.getStartAndEnd(dto.getTaskTime(), CycleCommonEnum.MONTHLY);
+        if (ObjectUtil.isNotNull(dto.getTaskTime())) {
+            DateRange r = DateUtils.getStartAndEnd(dto.getTaskTime(), CycleCommonEnum.MONTHLY);
             dto.setStartTime(r.getStartTime());
             dto.setEndTime(r.getEndTime());
         }
@@ -121,7 +123,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
 //        }
 //        wrapper.in(CoreSafetyTask::getPlanId, page.getRecords().stream().map(r -> r.getPlanId()).collect(Collectors.toList()));
 
-        List<CoreSafetyTask> list = baseMapper.selectTaskList(dto,SecurityUtils.getUserId());
+        List<CoreSafetyTask> list = baseMapper.selectTaskList(dto, SecurityUtils.getUserId());
 //        Map<Long, List<CoreSafetyTask>> grouped = list.stream().collect(Collectors.groupingBy(t -> t.getBatchId()));
 
         List<Long> planIds = page.getRecords().stream().map(r -> r.getPlanId()).distinct().collect(Collectors.toList());
@@ -142,12 +144,22 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
                 vo.setUncompleted(convertToAppItemVo(v, i -> !ObjectUtil.equal(i.getStatus(), SafetyCheckTaskStatus.Completed.getValue())));
             }
 
-            Date date=DateUtil.beginOfDay(new Date());
-            Date planStartDate=DateUtil.beginOfDay(vo.getPlanStartTime());
-            Date planEndDate=DateUtil.beginOfDay(vo.getPlanEndTime());
-            vo.setInRegisterTime((planStartDate.before(date) && planEndDate.after(date) || date.getTime()==planStartDate.getTime())?1:0);
+            vo.setInRegisterTime(getInRegisterTime(vo.getPlanStartTime(), vo.getPlanEndTime()));
         });
 
+        page.getRecords().sort(new Comparator<AppPageVo>() {
+            @Override
+            public int compare(AppPageVo o1, AppPageVo o2) {
+                int o1Uncount = o1.getUncompleted().size();
+                int o2Uncount = o2.getUncompleted().size();
+
+                if (o1Uncount == o2Uncount) {
+                    return o1.getPlanStartTime().compareTo(o2.getPlanStartTime());
+                } else {
+                    return -NumberUtil.compare(o1Uncount, o2Uncount);
+                }
+            }
+        });
         return TableDataInfo.success(page);
     }
 
@@ -211,7 +223,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         BeanUtils.copyProperties(baseData, vo);
         List<AppTaskRegisterItemVo> itemVos = new ArrayList<>();
         //for (Long itemId : groupByItem.keySet()) {
-        for(Map.Entry<Long, List<AppTaskRegisterPointVo>> map:groupByItem.entrySet()){
+        for (Map.Entry<Long, List<AppTaskRegisterPointVo>> map : groupByItem.entrySet()) {
             List<AppTaskRegisterPointVo> pointVos = map.getValue();//groupByItem.get(itemId);
             AppTaskRegisterItemVo itemVo = new AppTaskRegisterItemVo();
             itemVo.setItemId(pointVos.get(0).getItemId());
@@ -235,7 +247,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         if (ObjectUtil.isNotNull(task.getPlanId())) {
             plan = coreSafecheckPlanMapper.get(task.getPlanId());
         } else {
-          throw  new RuntimeException("计划id不存在");
+            throw new RuntimeException("计划id不存在");
         }
 
         SysOrg beCheckedOrg = remoteOrgService.selectOrgById(task.getOrgId(), SecurityConstants.INNER);
@@ -272,7 +284,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
             taskImgs = imgs.stream().collect(Collectors.groupingBy(CoreSafetyTaskDataRemarkimg::getTaskDataId));
         }
 
-        TaskRegisterVo<AppTaskRegisterPointVo> vo = TaskRegisterVo.of(task, beCheckedOrg.getType().toString(), roleNames);
+        TaskRegisterVo<AppTaskRegisterPointVo> vo = TaskRegisterVo.of(task, beCheckedOrg.getType().toString(), roleNames, getInRegisterTime(task.getPlanStartTime(), task.getPlanEndTime()));
         if (ObjectUtil.isNotNull(plan)) {
             vo.setPlanType(plan.getCheckType().intValue());
         }
@@ -289,13 +301,13 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
             }
 
             point.setNfcList(new ArrayList<>());
-            if(ObjectUtil.equal( point.getMustCheck(),1)){
+            if (ObjectUtil.equal(point.getMustCheck(), 1)) {
                 for (TaskRegisterNfcVo nfc : nfcs) {
-                    if(usedNfcId.contains(nfc.getNfcId())){
+                    if (usedNfcId.contains(nfc.getNfcId())) {
                         continue;
                     }
 
-                    if(ObjectUtil.equal(point.getAreaId(),nfc.getAreaId())){
+                    if (ObjectUtil.equal(point.getAreaId(), nfc.getAreaId())) {
                         point.getNfcList().add(nfc);
                         usedNfcId.add(nfc.getNfcId());
                     }
@@ -307,6 +319,13 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         return vo;
     }
 
+    private int getInRegisterTime(Date startTime, Date endTime) {
+        Date date = DateUtil.beginOfDay(new Date());
+        Date planStartDate = DateUtil.beginOfDay(startTime);
+        Date planEndDate = DateUtil.endOfDay(endTime);
+        return (!planStartDate.after(date) && !planEndDate.before(date)) ? 1 : 0;
+    }
+
     private List<IdNameVo> getTaskRoles(CoreSafecheckPlan plan, CoreSafetyTask task) {
         List<Long> roleIds = new ArrayList<>();
         if (ObjectUtil.equal(task.getSourceType(), SafetyTaskSourceType.TempTask.getCode().longValue())) {
@@ -407,11 +426,11 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
      */
     @Transactional
     public Boolean submit(TaskRegisterVo<AppTaskRegisterPointVo> data, Boolean isNewTask) {
-        if(DateUtil.beginOfDay(data.getPlanStartTime()).after(DateUtil.beginOfDay(new Date()))){
+        if (DateUtil.beginOfDay(data.getPlanStartTime()).after(DateUtil.beginOfDay(new Date()))) {
             throw new ServiceException("任务未到开始时间");
         }
 
-        if(DateUtil.beginOfDay(data.getPlanEndTime()).before(DateUtil.beginOfDay(new Date()))){
+        if (DateUtil.beginOfDay(data.getPlanEndTime()).before(DateUtil.beginOfDay(new Date()))) {
             throw new ServiceException("任务已过结束时间");
         }
 
@@ -433,8 +452,8 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
 
         if (!isNewTask) {
             removeExistData(data.getId());
-        }else{
-            SysOrg checkOrg =null;
+        } else {
+            SysOrg checkOrg = null;
             checkOrg = remoteOrgService.selectOrgById(data.getCheckOrgId(), SecurityConstants.INNER);
             data.setBeCheckOrgType(org.getType().toString());
             data.setBeCheckedOrgName(org.getShortName());
@@ -478,13 +497,13 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
             }
         }
         if (isNewTask) {
-            addTask(data, questions.size(), data.getIsSubmit(),org);
+            addTask(data, questions.size(), data.getIsSubmit(), org);
         } else {
             updateTask(data, questions.size(), data.getIsSubmit());
         }
         if (data.getIsSubmit() > 0) {
             coreSafecheckPlanService.buildPdf(data.getId());
-            coreSafecheckPlanService.updatePlanCompletedState(data.getPlanId(),1);
+            coreSafecheckPlanService.updatePlanCompletedState(data.getPlanId(), 1);
         }
         return true;
     }
@@ -588,7 +607,7 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
      * @param isSubmit
      * @return
      */
-    private boolean addTask(TaskRegisterVo data, Integer exceptionCount, Integer isSubmit,SysOrg beCheckedOrg) {
+    private boolean addTask(TaskRegisterVo data, Integer exceptionCount, Integer isSubmit, SysOrg beCheckedOrg) {
         CoreSafetyTask task = new CoreSafetyTask();
         task.setId(data.getId());
         task.setPlanId(-1L);
@@ -686,17 +705,17 @@ public class SafetyCheckRegisterSericeImpl extends ServiceImpl<CoreSafetyTaskMap
         }
 
 //        if (ObjectUtil.isNull(task.getGrantUserId())) {
-            Long canGrantCount = tasks.stream()
-                    .filter(t -> ObjectUtil.notEqual(t.getStatus(), SafetyCheckTaskStatus.Completed.getValue()) &&
-                            ObjectUtil.notEqual(t.getStatus(),SafetyCheckTaskStatus.OverDue.getValue()) &&
-                            (ObjectUtil.isNull(t.getGrantUserId()) || ObjectUtil.equal(t.getId(),dto.getTaskId())))
-                    .count();
-            Long selfCompletedCount = tasks.stream()
-                    .filter(t -> ObjectUtil.equal(t.getStatus(), SafetyCheckTaskStatus.Completed.getValue()) && ObjectUtil.isNull(t.getGrantUserId()))
-                    .count();
-            if (canGrantCount <= 1 && selfCompletedCount == 0) {
-                throw new ServiceException("网点负责人每月亲自检查不少于1次");
-            }
+        Long canGrantCount = tasks.stream()
+                .filter(t -> ObjectUtil.notEqual(t.getStatus(), SafetyCheckTaskStatus.Completed.getValue()) &&
+                        ObjectUtil.notEqual(t.getStatus(), SafetyCheckTaskStatus.OverDue.getValue()) &&
+                        (ObjectUtil.isNull(t.getGrantUserId()) || ObjectUtil.equal(t.getId(), dto.getTaskId())))
+                .count();
+        Long selfCompletedCount = tasks.stream()
+                .filter(t -> ObjectUtil.equal(t.getStatus(), SafetyCheckTaskStatus.Completed.getValue()) && ObjectUtil.isNull(t.getGrantUserId()))
+                .count();
+        if (canGrantCount <= 1 && selfCompletedCount == 0) {
+            throw new ServiceException("网点负责人每月亲自检查不少于1次");
+        }
 //        }
 
         LambdaUpdateWrapper<CoreSafetyTask> updateWrapper = new LambdaUpdateWrapper<>();

+ 4 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/vo/regsiter/TaskRegisterVo.java

@@ -38,9 +38,11 @@ public class TaskRegisterVo<T> {
     private Integer planType;
 
     @ApiModelProperty(value = "计划开始时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date planStartTime;
 
     @ApiModelProperty(value = "计划结束时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date planEndTime;
 
     @ApiModelProperty(value = "检查时间")
@@ -92,7 +94,7 @@ public class TaskRegisterVo<T> {
     @ApiModelProperty(value = "检查列表")
     private List<T> checkList;
 
-    public static TaskRegisterVo of(CoreSafetyTask task, String beCheckOrgType, List<IdNameVo> checkRoles) {
+    public static TaskRegisterVo of(CoreSafetyTask task, String beCheckOrgType, List<IdNameVo> checkRoles,int inRegisterTime) {
         TaskRegisterVo vo = new TaskRegisterVo();
         vo.setId(task.getId());
         vo.setTaskName(task.getTitle());
@@ -113,10 +115,7 @@ public class TaskRegisterVo<T> {
         vo.setExceptionCount(task.getExceptionCount().intValue());
         vo.setSubmitBy(task.getSubmitBy());
 
-        Date date=DateUtil.beginOfDay(new Date());
-        Date planStartDate=DateUtil.beginOfDay(task.getPlanStartTime());
-        Date planEndDate=DateUtil.beginOfDay(task.getPlanEndTime());
-        vo.setInRegisterTime((planStartDate.before(date) && planEndDate.after(date) || date.getTime()==planStartDate.getTime())?1:0);
+        vo.setInRegisterTime(inRegisterTime);
 
         return vo;
     }

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/device/ProtectionMapper.xml

@@ -40,7 +40,7 @@
         <if test="request.startTime!=null and request.endTime!=null">
             and a.status_update_time >= #{request.startTime} and  a.status_update_time&lt;=#{request.endTime}
         </if>
-        order by c.sort asc,a.id desc
+        order by a.org_Id asc,a.name,a.id desc
     </select>
 <!--    <select id="pageLog" resultType="com.xunmei.core.resumption.vo.protection.ProtectionLogPageVo">-->
 <!--        select a.id, a.name as name,a.status as status,a.status_update_time,a.status_updator_name-->

+ 2 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/question/QuestionMapper.xml

@@ -309,7 +309,7 @@
                 concat('%',#{params.searchKey},'%'))
             </if>
         </if>
-        order by q.submit_time desc,o.sort desc ,q.id desc
+        order by q.submit_time desc,q.id desc
     </select>
     <select id="pageReform" resultType="com.xunmei.core.question.domain.Question">
         select * from core_question q
@@ -336,7 +336,7 @@
             and (q.question_desc like concat('%',#{params.searchKey},'%') or q.check_content like
             concat('%',#{params.searchKey},'%'))
         </if>
-        order by q.submit_time desc,o.sort desc ,q.id desc
+        order by q.submit_time desc,q.id desc
     </select>
     <select id="selectQuestionExceptionData"
             resultType="com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData">

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

@@ -113,7 +113,7 @@
                 where path like concat((select path from sys_org where id=#{info.orgId}),'%'))
             </if>
         </where>
-        order by a.plan_name DESC
+        order by a.plan_status asc, a.plan_name DESC,a.id desc
     </select>
     <!--    <select id="selectChildren" parameterType="com.xunmei.core.resumption.dto.plan.CoreResumptionPlanPageDto"-->
     <!--            resultMap="appPlans">-->

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

@@ -264,7 +264,6 @@
             </foreach>
         </if>
         )
-
         and t.status in (1, 2)
         and ((
         #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
@@ -278,6 +277,7 @@
         #{request.startTime} >= t.plan_start_time
         and #{request.endTime}  <![CDATA[<=]]> t.plan_end_time
         ))
+        order by t.status asc,t.plan_end_time desc,t.id desc
     </select>
 
     <select id="findResumptionExceptionList"

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionRecordMapper.xml

@@ -165,7 +165,7 @@
             <!--            </if>-->
 
         </where>
-        order by r.name desc ,o.sort asc,r.id desc
+        order by r.plan_start_time desc, r.name desc ,r.id desc
     </select>
     <select id="selectResumptionDataList"
             resultType="com.xunmei.core.resumption.vo.resumptionRecord.AppResumptionDataInfoVo">

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml

@@ -291,7 +291,7 @@
 
         ) tem
         GROUP BY tem.id,tem.create_time
-        order by tem.id desc
+        order by tem.plan_status asc, tem.plan_name DESC,tem.id desc
     </select>
     <select id="selectItemIdsByPlanId" resultType="java.lang.String">
         select distinct point_id as item_id

+ 15 - 3
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml

@@ -197,7 +197,6 @@
         where id = #{id}
     </select>
     <select id="selectCoreSafetyTaskPage" resultType="com.xunmei.core.safetyCheck.domain.CoreSafetyTask">
-select  * from (
 SELECT t.id,
         t.title,
         o1.`short_name` as org_name,
@@ -237,7 +236,18 @@ SELECT t.id,
             and DATE_FORMAT(t.plan_start_time, '%Y-%m-%d') = DATE_FORMAT(#{task.planStartTime}, '%Y-%m-%d')
         </if>
         <if test="task.range !=null and task.range.size==2">
-            and t.plan_start_time>=#{task.range[0]} and t.plan_start_time &lt; #{task.range[1]}
+            and ((
+            #{task.range[0]}  &lt;= t.plan_start_time
+            and #{task.range[1]} >= t.plan_start_time
+            )
+            or (
+            #{task.range[0]}   &lt;= t.plan_end_time
+            and #{task.range[1]} >= t.plan_end_time
+            )
+            or (
+            #{task.range[0]} >= t.plan_start_time
+            and #{task.range[1]} &lt;=  t.plan_end_time
+            ))
         </if>
         <if test="task.status != null  and task.status != ''">
             and t.status =#{task.status}
@@ -260,7 +270,8 @@ SELECT t.id,
                 #{id}
             </foreach>
         </if>
-        ) temp group by temp.id
+        order by t.plan_start_time desc, t.title desc ,t.id desc
+
     </select>
 
     <insert id="insertCoreSafetyTask" parameterType="com.xunmei.core.safetyCheck.domain.CoreSafetyTask">
@@ -880,6 +891,7 @@ SELECT t.id,
         #{request.startTime} >= t.plan_start_time
         and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
         ))
+        order by t.status asc,t.plan_end_time desc,t.id desc
     </select>
     <select id="down" resultType="com.xunmei.core.safetyCheck.vo.CoreSafetyTaskExport">
         SELECT

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRuleMapper.xml

@@ -39,7 +39,7 @@
                 </if>
             </if>
         </where>
-        order by a.id desc
+        order by a.status asc,a.name desc, a.id desc
     </select>
 
     <select id="getRuleGroupList" resultType="com.xunmei.core.safetyCheck.vo.rule.SafetyCheckRuleGroupVo">

+ 9 - 8
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysNfcBindController.java

@@ -3,20 +3,14 @@ package com.xunmei.system.controller;
 import java.util.List;
 
 import com.xunmei.common.core.utils.StringUtils;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.system.api.domain.SysArea;
 import com.xunmei.system.domain.SysAreaCheck;
 import com.xunmei.system.dto.SysNfcBindDTO;
 import com.xunmei.system.service.ISysAreaCheckService;
 import com.xunmei.system.service.ISysAreaService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.RequiresPermissions;
@@ -70,6 +64,13 @@ public class SysNfcBindController extends BaseController {
         return ajax;
     }
 
+    @ApiOperation("传入机构和NFC的code看看有没有设备间")
+    @InnerAuth
+    @GetMapping("/selectNfcByCode")
+    List<Long> selectNfcByCode(@RequestParam String code) {
+        return sysNfcBindService.check(code);
+    }
+
     /**
      * 获取【请填写功能名称】详细信息
      */

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysNfcBindMapper.java

@@ -44,7 +44,7 @@ public interface SysNfcBindMapper extends BaseMapper<SysNfcBind> {
     Page<SysNfcBind> selectNFCPage(Page<SysNfcBind> page, @Param("info") SysNfcBindDTO info);
 
     SysNfcBind selectSysNfcBindByCode(String code);
-
+    List<Long> selectSysNfcBindByCodeAndOrgId(String code);
     /**
      * 修改区域名称
      *

+ 9 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysNfcBindService.java

@@ -26,6 +26,15 @@ public interface ISysNfcBindService extends IService<SysNfcBind> {
     SysNfcBind selectSysNfcBindByCode(String code);
 
     /**
+     * 监控调阅用的NFC检查
+     *
+     * @param orgId
+     * @param code
+     * @return
+     */
+    List<Long> check(String code);
+
+    /**
      * 查询【NFC管理】列表
      *
      * @param sysNfcBind 【NFC管理】

+ 6 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysNfcBindServiceImpl.java

@@ -102,6 +102,12 @@ public class SysNfcBindServiceImpl extends ServiceImpl<SysNfcBindMapper, SysNfcB
         return sysNfcBindMapper.selectSysNfcBindByCode(code);
     }
 
+    @Override
+    public List<Long> check(String code) {
+        List<Long> longs = sysNfcBindMapper.selectSysNfcBindByCodeAndOrgId(code);
+        return longs;
+    }
+
     /**
      * 查询【请填写功能名称】列表
      *

+ 10 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml

@@ -131,6 +131,16 @@
         WHERE del_flag = 0
           AND code = #{code}
     </select>
+    <select id="selectSysNfcBindByCodeAndOrgId" resultType="java.lang.Long">
+        SELECT
+            org_id
+        FROM
+            sys_nfc_bind
+        WHERE
+            area_name = '设备间'
+          AND `code` = #{code}
+    </select>
+
 
     <insert id="insertSysNfcBind" parameterType="com.xunmei.system.domain.SysNfcBind">
         insert into sys_nfc_bind