浏览代码

Merge branch '20210223' of http://114.135.61.188:53000/UIMS/Code into 20210223

wangbo 3 年之前
父节点
当前提交
b5c426163d
共有 19 个文件被更改,包括 1140 次插入39 次删除
  1. 1 0
      common/src/main/java/com/huaxu/model/ResultStatus.java
  2. 6 0
      operation_manager/src/main/java/com/huaxu/client/UserCenterClient.java
  3. 181 0
      operation_manager/src/main/java/com/huaxu/task/controller/PlanStatisticsController.java
  4. 9 0
      operation_manager/src/main/java/com/huaxu/task/dao/PlanManageMapper.java
  5. 8 0
      operation_manager/src/main/java/com/huaxu/task/dto/PlanManageDto.java
  6. 24 0
      operation_manager/src/main/java/com/huaxu/task/dto/TaskChangeTendDto.java
  7. 54 0
      operation_manager/src/main/java/com/huaxu/task/dto/TaskConditionDto.java
  8. 10 0
      operation_manager/src/main/java/com/huaxu/task/service/PlanManageService.java
  9. 96 0
      operation_manager/src/main/java/com/huaxu/task/service/impl/PlanManageServiceImpl.java
  10. 226 0
      operation_manager/src/main/resources/mapper/task/PlanManageMapper.xml
  11. 39 27
      sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java
  12. 138 0
      sms_water/src/main/java/com/huaxu/controller/ParmSettingController.java
  13. 34 0
      sms_water/src/main/java/com/huaxu/dao/ParmSettingMapper.java
  14. 75 0
      sms_water/src/main/java/com/huaxu/entity/ParmSettingEntity.java
  15. 26 0
      sms_water/src/main/java/com/huaxu/service/DeviceSetupMethodService.java
  16. 91 0
      sms_water/src/main/java/com/huaxu/service/ParmSettingService.java
  17. 82 0
      sms_water/src/main/resources/mapper/ParmSettingMapper.xml
  18. 11 4
      user_center/src/main/java/com/huaxu/controller/UserController.java
  19. 29 8
      user_center/src/main/java/com/huaxu/service/UserService.java

+ 1 - 0
common/src/main/java/com/huaxu/model/ResultStatus.java

@@ -127,6 +127,7 @@ public enum ResultStatus {
     USER_AUTH_APPID_NOT_FOUND(910001,"appId不存在"),
     USER_AUTH_ENCRYPT_VALUE_VERIFY_ERROR(910002,"encrypt value验证不对或已过期!"),
     USER_AUTH_UNIQID_OR_CODE_ISNULL(910003,"获取不到uniqId或code已过期!"),
+    OP_PASSWORD_ERROR(910004,"安全密码错误!"),
     ;
 
     private final int status;

+ 6 - 0
operation_manager/src/main/java/com/huaxu/client/UserCenterClient.java

@@ -51,4 +51,10 @@ public interface UserCenterClient {
      */
     @RequestMapping(value = "/dict/selectList", method = RequestMethod.POST)
     AjaxMessage<List<Dict>> selectDictList(@RequestBody Dict dict);
+
+    /**
+     * 查询该时间内的运维人数
+     */
+    @RequestMapping(value = "/user/findMaintainerCount", method = RequestMethod.GET)
+    Integer findMaintainerCount(@RequestParam("endDate") String endDate);
 }

+ 181 - 0
operation_manager/src/main/java/com/huaxu/task/controller/PlanStatisticsController.java

@@ -0,0 +1,181 @@
+package com.huaxu.task.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huaxu.client.UserCenterClient;
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.LoginUser;
+import com.huaxu.model.Pagination;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.order.entity.WorkFlowDetail;
+import com.huaxu.order.entity.WorkFlowLog;
+import com.huaxu.order.service.WorkFlowLogService;
+import com.huaxu.process.entity.ProcessDefinition;
+import com.huaxu.process.service.WorkFlowService;
+import com.huaxu.task.dto.PlanManageDto;
+import com.huaxu.task.dto.TaskChangeTendDto;
+import com.huaxu.task.dto.TaskConditionDto;
+import com.huaxu.task.entity.PlanManage;
+import com.huaxu.task.entity.UserEntity;
+import com.huaxu.task.service.PlanManageService;
+import com.huaxu.util.DatesUtil;
+import com.huaxu.util.UserUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.activiti.engine.task.Task;
+import org.joda.time.DateTime;
+import org.joda.time.Days;
+import org.joda.time.Months;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/task/planStatistics")
+@Api(tags = "任务统计")
+public class PlanStatisticsController {
+
+    @Autowired
+    PlanManageService planManageService;
+    @Autowired
+    private UserCenterClient userCenterClient;
+
+    /**
+     * 查询任务完成情况
+     * @return Response对象
+     */
+    @RequestMapping(value = "selectTaskFinishedByDate", method = RequestMethod.GET)
+    @ApiOperation(value = "按时间查询任务完成情况")
+    public AjaxMessage<List<PlanManageDto>> selectTaskFinished(
+            @ApiParam(value = "开始时间", required = true) @RequestParam String startDate,
+            @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endDate,
+            @ApiParam(value = "统计类型0按月、1按年、2自定义", required = true)@RequestParam Integer statsType) {
+        PlanManageDto planManageDto=new PlanManageDto();
+        planManageDto.setStatsType(statsType);
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        planManageDto.setTenantId(loginUser.getTenantId());
+        planManageDto.setProgramItems(loginUser.getProgramItemList());
+        planManageDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        planManageDto.setPermissonType(loginUser.getPermissonType());
+        planManageDto.setStartDate(startDate);
+        planManageDto.setEndDate(endDate);
+        List<PlanManageDto> result=planManageService.selectTaskFinishedByDate(planManageDto);
+        if(result.size()>0) {
+            Map<String,String> dictMap=userCenterClient.selectListByPCodes("SC_TASK_TYPE");
+            for(PlanManageDto plan:result){
+                if (plan.getTaskType() != null) {
+                    plan.setTypeName(dictMap.get(plan.getTaskType().toString()));
+                }
+            }
+        }
+        return new AjaxMessage<>(ResultStatus.OK, result );
+    }
+
+    /**
+     * 查询任务情况
+     * @return Response对象
+     */
+    @RequestMapping(value = "selectTaskCondition", method = RequestMethod.GET)
+    @ApiOperation(value = "查询任务情况")
+    public AjaxMessage<TaskConditionDto> selectTaskCondition(
+            @ApiParam(value = "开始时间", required = true) @RequestParam String startDate,
+            @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endDate,
+            @ApiParam(value = "统计类型0按月、1按年、2自定义", required = true)@RequestParam Integer statsType) {
+        PlanManageDto planManageDto=new PlanManageDto();
+        planManageDto.setStatsType(statsType);
+        planManageDto.setStartDate(startDate);
+        planManageDto.setEndDate(endDate);
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        planManageDto.setTenantId(loginUser.getTenantId());
+        planManageDto.setProgramItems(loginUser.getProgramItemList());
+        planManageDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        planManageDto.setPermissonType(loginUser.getPermissonType());
+
+        TaskConditionDto result=planManageService.selectTaskCondition(planManageDto);
+        return new AjaxMessage<>(ResultStatus.OK, result );
+    }
+    /**
+     * 查询任务变化趋势和人均情况
+     * * @return Response对象
+     */
+    @RequestMapping(value = "selectTaskChangeTrend", method = RequestMethod.GET)
+    @ApiOperation(value = "查询任务变化趋势和人均情况")
+    public AjaxMessage<List<TaskChangeTendDto>> selectTaskChangeTrend(
+            @ApiParam(value = "开始时间", required = true) @RequestParam String startDate,
+            @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endDate,
+            @ApiParam(value = "统计类型0按月、1按年、2自定义", required = true)@RequestParam Integer statsType) {
+        PlanManageDto planManageDto=new PlanManageDto();
+        planManageDto.setStatsType(statsType);
+        planManageDto.setStartDate(startDate);
+        planManageDto.setEndDate(endDate);
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        planManageDto.setTenantId(loginUser.getTenantId());
+        planManageDto.setProgramItems(loginUser.getProgramItemList());
+        planManageDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        planManageDto.setPermissonType(loginUser.getPermissonType());
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            Calendar c=Calendar.getInstance();
+            String maintainerEndDate=null;
+            Integer intervalCount=0;
+            switch (statsType){
+                case 0:
+                    maintainerEndDate=startDate;
+                    c.setTime(sdf.parse(startDate));
+                    intervalCount= c.getActualMaximum(Calendar.DAY_OF_MONTH);
+                    break;
+                case 1:
+                    maintainerEndDate=startDate+"-12";
+                    intervalCount=12;
+                    break;
+                case 2:
+                    maintainerEndDate=endDate;
+                    c.setTime(sdf.parse(endDate));
+                    intervalCount= Days.daysBetween(new DateTime(startDate), new DateTime(endDate)).getDays()+c.getActualMaximum(Calendar.DAY_OF_MONTH);
+                    break;
+            }
+            planManageDto.setMaintainerCount(userCenterClient.findMaintainerCount(maintainerEndDate));
+            planManageDto.setIntervalCount(intervalCount);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return new AjaxMessage<>(ResultStatus.OK, planManageService.selectTaskChangeTrend(planManageDto));
+    }
+
+    /**
+     * 查询任务处理时长
+     * @return Response对象
+     */
+    @RequestMapping(value = "selectTaskDuration", method = RequestMethod.GET)
+    @ApiOperation(value = "查询任务处理时长")
+    public AjaxMessage<int[]> selectTaskDuration(
+            @ApiParam(value = "开始时间", required = true) @RequestParam String startDate,
+            @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endDate,
+            @ApiParam(value = "统计类型0按月、1按年、2自定义", required = true)@RequestParam Integer statsType) {
+        PlanManageDto planManageDto=new PlanManageDto();
+        planManageDto.setStatsType(statsType);
+        planManageDto.setStartDate(startDate);
+        planManageDto.setEndDate(endDate);
+
+        LoginUser loginUser = UserUtil.getCurrentUser();
+        planManageDto.setTenantId(loginUser.getTenantId());
+        planManageDto.setProgramItems(loginUser.getProgramItemList());
+        planManageDto.setUserType(loginUser.getType());
+        //1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+        planManageDto.setPermissonType(loginUser.getPermissonType());
+
+        int[] result=planManageService.selectTaskDuration(planManageDto);
+        return new AjaxMessage<>(ResultStatus.OK, result );
+    }
+}

+ 9 - 0
operation_manager/src/main/java/com/huaxu/task/dao/PlanManageMapper.java

@@ -3,6 +3,7 @@ package com.huaxu.task.dao;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.huaxu.task.dto.PlanManageDto;
+import com.huaxu.task.dto.TaskChangeTendDto;
 import com.huaxu.task.entity.PlanManage;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -36,4 +37,12 @@ public interface PlanManageMapper {
     List<Map<String,Object>> selectTaskName(Map<String,Object> map);
 
     List<PlanManageDto> selectTaskFinished(PlanManageDto planManageDto);
+
+    List<PlanManageDto> selectTaskFinishedByDate(PlanManageDto planManageDto);
+
+    PlanManageDto selectTaskCondition(PlanManageDto planManageDto);
+
+    List<TaskChangeTendDto> selectTaskChangeTrend(PlanManageDto planManageDto);
+
+    List<PlanManageDto> selectTaskDuration(PlanManageDto planManageDto);
 }

+ 8 - 0
operation_manager/src/main/java/com/huaxu/task/dto/PlanManageDto.java

@@ -84,4 +84,12 @@ public class PlanManageDto extends PlanManage {
     @ApiModelProperty(value="统计类型 0或null本月、1本年、2近一年",hidden = true)
     @JsonIgnore
     private Integer statsType;
+
+    @ApiModelProperty(value="间隔数",hidden = true)
+    @JsonIgnore
+    private Integer intervalCount;
+
+    @ApiModelProperty(value="运维人数",hidden = true)
+    @JsonIgnore
+    private Integer maintainerCount;
 }

+ 24 - 0
operation_manager/src/main/java/com/huaxu/task/dto/TaskChangeTendDto.java

@@ -0,0 +1,24 @@
+package com.huaxu.task.dto;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.common.Double2Serializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("任务变化趋势")
+public class TaskChangeTendDto implements Serializable {
+
+    @ApiModelProperty(value = "创建时间")
+    private String dateCreate;
+
+    @ApiModelProperty(value = "任务数")
+    private Integer taskCount;
+
+    @ApiModelProperty(value = "人均任务量")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double taskCountAvg;
+}

+ 54 - 0
operation_manager/src/main/java/com/huaxu/task/dto/TaskConditionDto.java

@@ -0,0 +1,54 @@
+package com.huaxu.task.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.huaxu.common.Double2Serializer;
+import com.huaxu.model.ProgramItem;
+import com.huaxu.order.entity.WorkFlowDetail;
+import com.huaxu.order.entity.WorkFlowLog;
+import com.huaxu.task.entity.PlanManage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+@ApiModel("任务情况")
+public class TaskConditionDto implements Serializable {
+
+    @ApiModelProperty(value = "任务总数")
+    private Integer taskCount;
+
+    @ApiModelProperty(value = "任务完成数")
+    private Integer finishedCount;
+
+    @ApiModelProperty(value = "任务完成率")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double taskFinishedRate;
+
+    @ApiModelProperty(value = "任务总数环比")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double taskCountRateMOnM;
+
+    @ApiModelProperty(value = "任务完成数环比")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double finishedCountRateMOnM;
+
+    @ApiModelProperty(value = "任务完成率环比")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double taskFinishedRateMOnM;
+
+    @ApiModelProperty(value = "任务总数同比")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double taskCountRateYOnY;
+
+    @ApiModelProperty(value = "任务完成数同比")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double finishedCountRateYOnY;
+
+    @ApiModelProperty(value = "任务完成率同比")
+    @JsonSerialize(using = Double2Serializer.class)
+    private Double taskFinishedRateYOnY;
+}

+ 10 - 0
operation_manager/src/main/java/com/huaxu/task/service/PlanManageService.java

@@ -2,6 +2,8 @@ package com.huaxu.task.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.task.dto.PlanManageDto;
+import com.huaxu.task.dto.TaskChangeTendDto;
+import com.huaxu.task.dto.TaskConditionDto;
 import com.huaxu.task.entity.PlanManage;
 import org.apache.ibatis.annotations.Param;
 
@@ -66,4 +68,12 @@ public interface PlanManageService {
      * 综合展示-查询任务执行情况
      */
     List<PlanManageDto> selectTaskFinished(PlanManageDto planManageDto);
+
+    List<PlanManageDto> selectTaskFinishedByDate(PlanManageDto planManageDto);
+
+    TaskConditionDto selectTaskCondition(PlanManageDto planManageDto);
+
+    List<TaskChangeTendDto> selectTaskChangeTrend(PlanManageDto planManageDto);
+
+    int[] selectTaskDuration(PlanManageDto planManageDto);
 }

+ 96 - 0
operation_manager/src/main/java/com/huaxu/task/service/impl/PlanManageServiceImpl.java

@@ -4,12 +4,19 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.huaxu.model.LoginUser;
 import com.huaxu.task.dao.PlanManageMapper;
 import com.huaxu.task.dto.PlanManageDto;
+import com.huaxu.task.dto.TaskChangeTendDto;
+import com.huaxu.task.dto.TaskConditionDto;
 import com.huaxu.task.entity.PlanManage;
 import com.huaxu.task.service.PlanManageService;
 import com.huaxu.util.UserUtil;
+import org.joda.time.DateTime;
+import org.joda.time.Months;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -83,4 +90,93 @@ public class PlanManageServiceImpl implements PlanManageService {
         result.add(plan);
         return result;
     }
+
+    @Override
+    public List<PlanManageDto> selectTaskFinishedByDate(PlanManageDto planManageDto) {
+        return planManageMapper.selectTaskFinishedByDate(planManageDto);
+    }
+
+    @Override
+    public TaskConditionDto selectTaskCondition(PlanManageDto planManageDto) {
+        TaskConditionDto result=new TaskConditionDto();
+        try{
+            PlanManageDto plan=planManageMapper.selectTaskCondition(planManageDto);
+            result.setTaskCount(plan.getTaskCount());
+            result.setFinishedCount(plan.getFinishedCount());
+            result.setTaskFinishedRate(plan.getTaskCount()!=0?(double)plan.getFinishedCount()/plan.getTaskCount()*100:null);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            Calendar c=Calendar.getInstance();
+
+            PlanManageDto planMOnM=new PlanManageDto();
+            PlanManageDto planYOnY=new PlanManageDto();
+            if(planManageDto.getStatsType()==0){
+                Date thisDate=sdf.parse(planManageDto.getStartDate());
+                c.setTime(thisDate);
+                c.add(Calendar.MONTH,-1);
+                planManageDto.setStartDate(sdf.format(c.getTime()));
+                planMOnM=planManageMapper.selectTaskCondition(planManageDto);
+
+                c.setTime(thisDate);
+                c.add(Calendar.YEAR,-1);
+                planManageDto.setStartDate(sdf.format(c.getTime()));
+                planYOnY=planManageMapper.selectTaskCondition(planManageDto);
+            }else if(planManageDto.getStatsType()==1){
+                planManageDto.setStartDate(String.valueOf(Integer.parseInt(planManageDto.getStartDate())-1));
+                planMOnM=planManageMapper.selectTaskCondition(planManageDto);
+                planYOnY=planMOnM;
+            }else if(planManageDto.getStatsType()==2){
+                //自定义时间相差多少个月
+                int month=Months.monthsBetween(new DateTime(planManageDto.getStartDate()), new DateTime(planManageDto.getEndDate())).getMonths();
+                Date startDate=sdf.parse(planManageDto.getStartDate());
+                Date endDate=sdf.parse(planManageDto.getEndDate());
+                c.setTime(startDate);
+                c.add(Calendar.MONTH,-1);
+                planManageDto.setEndDate(sdf.format(c.getTime()));
+                c.add(Calendar.MONTH,-month);
+                planManageDto.setStartDate(sdf.format(c.getTime()));
+                planMOnM=planManageMapper.selectTaskCondition(planManageDto);
+
+                c.setTime(startDate);
+                c.add(Calendar.YEAR,-1);
+                planManageDto.setStartDate(sdf.format(c.getTime()));
+                c.setTime(endDate);
+                c.add(Calendar.YEAR,-1);
+                planManageDto.setEndDate(sdf.format(c.getTime()));
+                planYOnY=planManageMapper.selectTaskCondition(planManageDto);
+            }
+            double taskFinishedRateMOnM=planMOnM.getTaskCount()!=0?(double)planMOnM.getFinishedCount()/planMOnM.getTaskCount()*100:0;
+            double taskFinishedRateYOnY=planYOnY.getTaskCount()!=0?(double)planYOnY.getFinishedCount()/planYOnY.getTaskCount()*100:0;
+
+            result.setTaskCountRateMOnM(planMOnM.getTaskCount()!=0?(double)(result.getTaskCount()-planMOnM.getTaskCount())/planMOnM.getTaskCount()*100:null);
+            result.setTaskCountRateYOnY(planYOnY.getTaskCount()!=0?(double)(result.getTaskCount()-planYOnY.getTaskCount())/planYOnY.getTaskCount()*100:null);
+            result.setFinishedCountRateMOnM(planMOnM.getFinishedCount()!=0?(double)(result.getFinishedCount()-planMOnM.getFinishedCount())/planMOnM.getFinishedCount()*100:null);
+            result.setFinishedCountRateYOnY(planYOnY.getFinishedCount()!=0?(double)(result.getFinishedCount()-planYOnY.getFinishedCount())/planYOnY.getFinishedCount()*100:null);
+            result.setTaskFinishedRateMOnM(taskFinishedRateMOnM !=0 ?(result.getTaskFinishedRate()-taskFinishedRateMOnM)/taskFinishedRateMOnM*100:null);
+            result.setTaskFinishedRateYOnY(taskFinishedRateYOnY !=0 ?(result.getTaskFinishedRate()-taskFinishedRateYOnY)/taskFinishedRateYOnY*100:null);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        return result;
+    }
+
+    @Override
+    public List<TaskChangeTendDto>  selectTaskChangeTrend(PlanManageDto planManageDto) {
+        return planManageMapper.selectTaskChangeTrend(planManageDto);
+    }
+
+    @Override
+    public int[]  selectTaskDuration(PlanManageDto planManageDto) {
+        int[] result=new int[6];
+        List<PlanManageDto> listPlan=planManageMapper.selectTaskDuration(planManageDto);
+        for(PlanManageDto plan : listPlan){
+            if(plan.getIntervalCount()!=null){
+                if(plan.getIntervalCount()<5){
+                    result[plan.getIntervalCount()]=plan.getFinishedCount();
+                }else{
+                    result[5]+=plan.getFinishedCount();
+                }
+            }
+        }
+        return result;
+    }
 }

+ 226 - 0
operation_manager/src/main/resources/mapper/task/PlanManageMapper.xml

@@ -32,6 +32,7 @@
     <result column="task_count" property="taskCount" jdbcType="VARCHAR" />
     <result column="finished_count" property="finishedCount" jdbcType="VARCHAR" />
     <result column="in_process_status" property="inProcessStatus" jdbcType="INTEGER" />
+    <result column="interval_count" property="intervalCount" jdbcType="INTEGER" />
   </resultMap>
 
   <resultMap id="workFlowLogResultMap" type="com.huaxu.order.entity.WorkFlowLog">
@@ -544,4 +545,229 @@
     group by task_type
   </select>
 
+  <select id="selectTaskFinishedByDate" resultMap="BaseResultMap" >
+    select task_type,sum(task_count) task_count,sum(case when plan_status=2 or plan_status=3 then task_count else 0 end) finished_count
+    from(
+      select task_type,plan_status,count(1) task_count
+      from sc_plan_manage t1
+      where
+      <if test="statsType == 0">
+        t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{startDate}, '-1') + INTERVAL 1 MONTH
+      </if>
+      <if test="statsType == 1">
+        t1.date_create >= concat(#{startDate}, '-1-1') and t1.date_create &lt; concat(#{startDate}, '-1-1') + INTERVAL 1 YEAR
+      </if>
+      <if test="statsType == 2">
+        t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{endDate}, '-1') + INTERVAL 1 MONTH
+      </if>
+      <if test="tenantId != null and tenantId != ''">
+        and t1.tenant_id=#{tenantId}
+      </if>
+      <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+        <if test="permissonType == 5 or permissonType == 2">
+          and ( t1.department_org_id in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          or
+          t1.COMPANY_ORG_ID in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          )
+        </if>
+        <if test="permissonType == 4 or permissonType == 3">
+          and t1.department_org_id in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+        </if>
+        <if test="permissonType == 1">
+          and t1.COMPANY_ORG_ID in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          and (t1.department_org_id is null or t1.department_org_id =0)
+        </if>
+      </if>
+      group by task_type,plan_status
+    )tab1
+    group by task_type
+  </select>
+
+  <select id="selectTaskCondition" resultMap="BaseResultMap" >
+    select count(1) task_count,ifnull(sum(case when plan_status=2 or plan_status=3 then 1 else 0 end),0) finished_count
+    from sc_plan_manage t1
+    where
+    <if test="statsType == 0">
+      t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{startDate}, '-1') + interval 1 month
+    </if>
+    <if test="statsType == 1">
+      t1.date_create >= concat(#{startDate}, '-1-1') and t1.date_create &lt; concat(#{startDate}, '-1-1') + interval 1 year
+    </if>
+    <if test="statsType == 2">
+      t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{endDate}, '-1') + interval 1 month
+    </if>
+    <if test="tenantId != null and tenantId != ''">
+      and t1.tenant_id=#{tenantId}
+    </if>
+    <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+      <if test="permissonType == 5 or permissonType == 2">
+        and ( t1.department_org_id in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+        or
+        t1.COMPANY_ORG_ID in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+        )
+      </if>
+      <if test="permissonType == 4 or permissonType == 3">
+        and t1.department_org_id in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+      </if>
+      <if test="permissonType == 1">
+        and t1.COMPANY_ORG_ID in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+        and (t1.department_org_id is null or t1.department_org_id =0)
+      </if>
+    </if>
+  </select>
+
+  <select id="selectTaskChangeTrend" resultType="com.huaxu.task.dto.TaskChangeTendDto" >
+    select
+      tab1.dateCreate,
+      ifnull(TaskCount, 0) TaskCount
+      <if test="maintainerCount != 0">
+        ,ifnull(TaskCount, 0) / #{maintainerCount} taskCountAvg
+      </if>
+    from(
+        select
+        <if test="statsType == 0 or statsType == 2">
+          date_format(date_add(concat(#{startDate}, '-1'),interval rownum day),'%Y-%m-%d') dateCreate
+        </if>
+        <if test="statsType == 1">
+          date_format(date_add(concat(#{startDate}, '-1-1'),interval rownum month),'%Y-%m') dateCreate
+        </if>
+        from(
+            select @rowNum :=@rowNum + 1 rownum
+            from sc_gps_data_his a,(select @rowNum :=- 1) b limit #{intervalCount}
+        ) duration
+    ) tab1
+    left join (
+      select
+      <if test="statsType == 0 or statsType == 2">
+        date_format(t1.date_create, '%Y-%m-%d') dateCreate
+      </if>
+      <if test="statsType == 1">
+        date_format(t1.date_create, '%Y-%m') dateCreate
+      </if>,count(1) TaskCount
+      from sc_plan_manage t1
+      where
+      <if test="statsType == 0">
+        t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{startDate}, '-1') + interval 1 month
+      </if>
+      <if test="statsType == 1">
+        t1.date_create >= concat(#{startDate}, '-1-1') and t1.date_create &lt; concat(#{startDate}, '-1-1') + interval 1 year
+      </if>
+      <if test="statsType == 2">
+        t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{endDate}, '-1') + interval 1 month
+      </if>
+      <if test="tenantId != null and tenantId != ''">
+        and t1.tenant_id=#{tenantId}
+      </if>
+      <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+        <if test="permissonType == 5 or permissonType == 2">
+          and ( t1.department_org_id in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          or
+          t1.COMPANY_ORG_ID in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          )
+        </if>
+        <if test="permissonType == 4 or permissonType == 3">
+          and t1.department_org_id in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+        </if>
+        <if test="permissonType == 1">
+          and t1.COMPANY_ORG_ID in
+          <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+            #{item.orgId}
+          </foreach>
+          and (t1.department_org_id is null or t1.department_org_id =0)
+        </if>
+      </if>
+      <if test="statsType == 0 or statsType == 2">
+        group by date_format(t1.date_create, '%Y-%m-%d')
+      </if>
+      <if test="statsType == 1">
+        group by date_format(t1.date_create, '%Y-%m')
+      </if>
+    ) tab2 on tab1.dateCreate = tab2.dateCreate
+    <if test="statsType == 0 or statsType == 2">
+      where tab1.dateCreate &lt;=date_format(now(),'%Y-%m-%d')
+    </if>
+    <if test="statsType == 1">
+      where tab1.dateCreate &lt;=date_format(now(),'%Y-%m')
+    </if>
+    order by tab1.dateCreate
+  </select>
+
+  <select id="selectTaskDuration" resultMap="BaseResultMap" >
+    SELECT timestampdiff(day,date_create,finish_date) interval_count,count(1) finished_count
+    FROM sc_plan_manage t1
+    where (plan_status=2 or plan_status=3) and
+    <if test="statsType == 0">
+      t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{startDate}, '-1') + interval 1 month
+    </if>
+    <if test="statsType == 1">
+      t1.date_create >= concat(#{startDate}, '-1-1') and t1.date_create &lt; concat(#{startDate}, '-1-1') + interval 1 year
+    </if>
+    <if test="statsType == 2">
+      t1.date_create >= concat(#{startDate}, '-1') and t1.date_create &lt; concat(#{endDate}, '-1') + interval 1 month
+    </if>
+    <if test="tenantId != null and tenantId != ''">
+      and t1.tenant_id=#{tenantId}
+    </if>
+    <if test="userType!=null and userType!=-999 and userType!=-9999 and  programItems != null and programItems.size() > 0">
+      <if test="permissonType == 5 or permissonType == 2">
+        and ( t1.department_org_id in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+        or
+        t1.COMPANY_ORG_ID in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+        )
+      </if>
+      <if test="permissonType == 4 or permissonType == 3">
+        and t1.department_org_id in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+      </if>
+      <if test="permissonType == 1">
+        and t1.COMPANY_ORG_ID in
+        <foreach collection="programItems" item="item" open="(" close=")" separator=",">
+          #{item.orgId}
+        </foreach>
+        and (t1.department_org_id is null or t1.department_org_id =0)
+      </if>
+    </if>
+    group by timestampdiff(day,date_create,finish_date)
+  </select>
 </mapper>

+ 39 - 27
sms_water/src/main/java/com/huaxu/controller/MonitorInfoController.java

@@ -43,7 +43,7 @@ public class MonitorInfoController {
     @Autowired
     private DeviceParmService deviceParmService;
     @Autowired
-    private  RedisUtil redisUtil;
+    private RedisUtil redisUtil;
     @Autowired
     private SceneService sceneService;
     @Autowired
@@ -51,9 +51,9 @@ public class MonitorInfoController {
     @Autowired
     private AlarmDetailsService alarmDetailsService;
     @Autowired
-    private  DeviceAttributeSpecsService deviceAttributeSpecsService;
+    private DeviceAttributeSpecsService deviceAttributeSpecsService;
     @Autowired
-    private  DeviceAttributeService deviceAttributeService;
+    private DeviceAttributeService deviceAttributeService;
     @Autowired
     private MonitorDataReportService monitorDataReportService;
     @Autowired
@@ -61,34 +61,35 @@ public class MonitorInfoController {
     @Autowired
     private DeviceSetupRecordService deviceSetupRecordService;
 
+
     @ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量(已废弃)")
-    @RequestMapping(value = "/findTotalUsageBySceneId",method = RequestMethod.GET)
+    @RequestMapping(value = "/findTotalUsageBySceneId", method = RequestMethod.GET)
     @ResponseBody
-    public  AjaxMessage<SceneUsageDto> findTotalUsageBySceneId(@ApiParam(value = "场景ID", required = true) @RequestParam Long id,@ApiParam(value = "类型(0综合调度 1综合展示)", required = false) @RequestParam(required = false) Integer... type) {
+    public AjaxMessage<SceneUsageDto> findTotalUsageBySceneId(@ApiParam(value = "场景ID", required = true) @RequestParam Long id, @ApiParam(value = "类型(0综合调度 1综合展示)", required = false) @RequestParam(required = false) Integer... type) {
         SceneUsageDto sceneUsageDto = new SceneUsageDto();
         //查询场景下的所有设备信息
-        sceneUsageDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,3,1).doubleValue());
-        sceneUsageDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,4,1).doubleValue());
-        sceneUsageDto.setPowerUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,5,1).doubleValue());
-        sceneUsageDto.setDrugUsage(monitorDataReportService.getAmountCount(null,id.intValue(),null,6,1).doubleValue());
+        sceneUsageDto.setYieldWaterUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 3, 1).doubleValue());
+        sceneUsageDto.setIntakeWaterUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 4, 1).doubleValue());
+        sceneUsageDto.setPowerUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 5, 1).doubleValue());
+        sceneUsageDto.setDrugUsage(monitorDataReportService.getAmountCount(null, id.intValue(), null, 6, 1).doubleValue());
         if (type != null && type.length > 0) {
             sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).divide(BigDecimal.valueOf(10000), 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale( 3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
-        }else {
+            sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
+        } else {
             sceneUsageDto.setYieldWaterUsage(sceneUsageDto.getYieldWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getYieldWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setIntakeWaterUsage(sceneUsageDto.getIntakeWaterUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getIntakeWaterUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setPowerUsage(sceneUsageDto.getPowerUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getPowerUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
             sceneUsageDto.setDrugUsage(sceneUsageDto.getDrugUsage() != null ? BigDecimal.valueOf(sceneUsageDto.getDrugUsage()).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue() : 0d);
         }
-        return new AjaxMessage<>(ResultStatus.OK,sceneUsageDto);
+        return new AjaxMessage<>(ResultStatus.OK, sceneUsageDto);
     }
 
     @ApiOperation(value = "按场景ID查询供水量出水量耗药量耗电量")
-    @RequestMapping(value = "/findTotalUsageBySceneIdForComDsiplay",method = RequestMethod.GET)
+    @RequestMapping(value = "/findTotalUsageBySceneIdForComDsiplay", method = RequestMethod.GET)
     @ResponseBody
-    public  AjaxMessage<SceneUsageDto> findTotalUsageBySceneIdForComDsiplay(@ApiParam(value = "场景ID", required = true) @RequestParam Long id,@ApiParam(value = "场景类型(0水源 1水厂 2泵站)", required = false) @RequestParam(required = false) Integer type) {
+    public AjaxMessage<SceneUsageDto> findTotalUsageBySceneIdForComDsiplay(@ApiParam(value = "场景ID", required = true) @RequestParam Long id, @ApiParam(value = "场景类型(0水源 1水厂 2泵站)", required = false) @RequestParam(required = false) Integer type) {
         SceneUsageDto sceneUsageDto = new SceneUsageDto();
 
         //查询场景下的所有设备信息
@@ -117,14 +118,14 @@ public class MonitorInfoController {
     }
 
     @ApiOperation(value = "按场景ID查询所有标签信息")
-    @RequestMapping(value = "/findBySceneId",method = RequestMethod.GET)
+    @RequestMapping(value = "/findBySceneId", method = RequestMethod.GET)
     @ResponseBody
     public AjaxMessage<List<MonitorInfoEntity>> findBySceneId(
             @ApiParam(value = "场景ID", required = true) @RequestParam Long id,
             @ApiParam(value = "图片类型(0鸟瞰图 1工艺图)", required = false) @RequestParam(required = false) Integer imageType,
             @ApiParam(value = "设备ID", required = false) @RequestParam(required = false) Long deviceId,
             @ApiParam(value = "类型(0综合调度 1综合展示)", required = false) @RequestParam(required = false) Integer... type
-            ) {
+    ) {
         MonitorInfoEntity monitorInfoEntity = new MonitorInfoEntity();
         monitorInfoEntity.setSceneId(id);
         if (imageType != null) {
@@ -158,26 +159,28 @@ public class MonitorInfoController {
 
     /**
      * 更新指令状态
+     *
      * @param sceneId
      * @param item
      */
-    public  void updateCommonState(Long sceneId,Integer type,MonitorInfoEntity item) {
-        DeviceSetupRecordEntity parm= new DeviceSetupRecordEntity();
+    public void updateCommonState(Long sceneId, Integer type, MonitorInfoEntity item) {
+        DeviceSetupRecordEntity parm = new DeviceSetupRecordEntity();
         parm.setDeviceId(item.getDeviceId());
         parm.setAttributeId(item.getAttributeId());
         parm.setType(type);
         DeviceSetupRecordEntity recordEntity = deviceSetupRecordService.selectLastOne(parm);
-        if(recordEntity!=null) {
+        if (recordEntity != null) {
             item.setCommonState(recordEntity.getState());
         }
     }
 
     /**
      * 更新标签值
+     *
      * @param sceneId
      * @param item
      */
-    public  void getMonitorInfo(Long sceneId,MonitorInfoEntity item) {
+    public void getMonitorInfo(Long sceneId, MonitorInfoEntity item) {
         //查询报警信息
         List<AlarmDetailsDto> alarmDetailsDtos = alarmDetailsService.selectByDeviceId(sceneId, item.getDeviceId().intValue());
         Map<Integer, AlarmDetailsDto> mapAlarm = new HashMap<>();
@@ -229,11 +232,12 @@ public class MonitorInfoController {
         }
     }
 
-    @RequestMapping(value="getDeviceParmByDeviceId" , method = RequestMethod.GET)
+    @RequestMapping(value = "getDeviceParmByDeviceId", method = RequestMethod.GET)
     @ApiOperation(value = "查询单个设备参数信息(标签设置)")
-    public AjaxMessage<List<DeviceParmEntity>> getByDeviceId(@ApiParam(value = "场景id",required = true) @RequestParam Integer sceneId,@ApiParam(value = "设备id",required = true) @RequestParam Integer id){
-        return new AjaxMessage<>(ResultStatus.OK, deviceParmService.selectByDeviceIdForGis(sceneId,id));
+    public AjaxMessage<List<DeviceParmEntity>> getByDeviceId(@ApiParam(value = "场景id", required = true) @RequestParam Integer sceneId, @ApiParam(value = "设备id", required = true) @RequestParam Integer id) {
+        return new AjaxMessage<>(ResultStatus.OK, deviceParmService.selectByDeviceIdForGis(sceneId, id));
     }
+
     /**
      * 新增
      */
@@ -255,6 +259,7 @@ public class MonitorInfoController {
         int result = monitorInfoService.addMonitorInfo(monitorInfo) ? 1 : 0;
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
+
     /**
      * 批量新增
      */
@@ -294,7 +299,7 @@ public class MonitorInfoController {
     @ApiOperation(value = "单个编辑")
     @RequestMapping(value = "/edit", method = RequestMethod.POST)
     @ResponseBody
-    public  AjaxMessage<Integer> editMonitorInfo(@ApiParam(value = "标签信息", required = true) @RequestBody MonitorInfoEntity monitorInfo) {
+    public AjaxMessage<Integer> editMonitorInfo(@ApiParam(value = "标签信息", required = true) @RequestBody MonitorInfoEntity monitorInfo) {
         int result = monitorInfoService.updateMonitorInfoById(monitorInfo) ? 1 : 0;
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
@@ -309,6 +314,7 @@ public class MonitorInfoController {
         int result = monitorInfoService.delMonitorInfoByIds(ids) ? 1 : 0;
         return new AjaxMessage<>(ResultStatus.OK, result);
     }
+
     /**
      * 操作标签--查询设备属性
      */
@@ -327,8 +333,14 @@ public class MonitorInfoController {
     @RequestMapping(value = "/setSetupForDevice", method = RequestMethod.GET)
     @ResponseBody
     public AjaxMessage<Integer> setSetupForDevice(
-            @ApiParam(value = "标签ID", required = true)@RequestParam Long id,
-            @ApiParam(value = "参数", required = true)@RequestParam String parms) {
+            @ApiParam(value = "标签ID", required = true) @RequestParam Long id,
+            @ApiParam(value = "参数", required = true) @RequestParam String parms,
+            @ApiParam(value = "密钥", required = true) @RequestParam String password) {
+        //校验密钥
+        boolean isPass = deviceSetupMethodService.checkPassword(password);
+        if (!isPass) {
+            return new AjaxMessage<>(ResultStatus.OP_PASSWORD_ERROR);
+        }
         //查询操作方法
         try {
             MonitorInfoEntity monitorInfo = monitorInfoService.findMonitorInfoById(id);
@@ -337,7 +349,7 @@ public class MonitorInfoController {
                 long deviceId = monitorInfo.getDeviceId();
                 long attributeId = monitorInfo.getAttributeId();
                 long sceneId = monitorInfo.getSceneId();
-                int result = deviceSetupMethodService.setSetupForDevice(type, sceneId,deviceId, attributeId,parms) ? 1 : 0;
+                int result = deviceSetupMethodService.setSetupForDevice(type, sceneId, deviceId, attributeId, parms) ? 1 : 0;
                 return new AjaxMessage<>(ResultStatus.OK, result);
             }
         } catch (Exception ex) {

+ 138 - 0
sms_water/src/main/java/com/huaxu/controller/ParmSettingController.java

@@ -0,0 +1,138 @@
+package com.huaxu.controller;
+
+import com.huaxu.model.AjaxMessage;
+import com.huaxu.model.LoginUser;
+import com.huaxu.model.ResultStatus;
+import com.huaxu.util.UserUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.ui.ModelMap;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Date;
+import org.springframework.web.bind.annotation.*;
+import com.huaxu.entity.ParmSettingEntity;
+import com.huaxu.service.ParmSettingService;
+
+/**
+ * 参数设置页面控制器
+ * @author WYY
+ * @date 2021-05-11 10:30
+ */
+@RestController
+@RequestMapping("/parmsetting")
+@Api(tags = "参数设置")
+public class ParmSettingController{
+    @Autowired
+    private ParmSettingService parmSettingService;
+
+    @RequestMapping(value = "/findList", method = RequestMethod.GET)
+    @ResponseBody
+    public AjaxMessage<List<ParmSettingEntity>> list(@RequestParam(required = false) Long companyOrgId) {
+        ParmSettingEntity parmSettingEntity = new ParmSettingEntity();
+        parmSettingEntity.setCompanyOrgId(companyOrgId);
+        List<ParmSettingEntity> list = parmSettingService.findList(parmSettingEntity);
+        return new AjaxMessage<>(ResultStatus.OK, list);
+    }
+
+
+    /**
+     * 新增
+     */
+    @ApiOperation(value = "新增参数信息")
+    @RequestMapping(value = "/add", method = RequestMethod.POST)
+    public AjaxMessage<Integer> addParm(@ApiParam(value = "参数信息", required = true) @RequestBody ParmSettingEntity parmSetting) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        if (currentUser != null) {
+            parmSetting.setUpdateBy(currentUser.getUsername());
+            parmSetting.setCreateBy(currentUser.getUsername());
+            parmSetting.setDateCreate(new Date());
+            parmSetting.setDateUpdate(new Date());
+            parmSetting.setTenantId(currentUser.getTenantId());
+        }
+        parmSetting.setStatus(1);
+        parmSettingService.addParmSetting(parmSetting);
+        return new AjaxMessage<>(ResultStatus.OK, 1);
+    }
+
+    @ApiOperation(value = "按ID查询参数")
+    @GetMapping(value = "/findParmById")
+    public  AjaxMessage<ParmSettingEntity> findParmById(@ApiParam(value = "参数ID", required = true) @RequestParam  Long id){
+        ParmSettingEntity parmSetting = parmSettingService.findParmSettingById(id);
+        return new AjaxMessage<>(ResultStatus.OK, parmSetting);
+    }
+
+    /**
+     * 修改保存考评等级
+     */
+    @ApiOperation(value = "修改保存参数")
+    @RequestMapping(value = "/edit", method = RequestMethod.POST)
+    public  AjaxMessage<Integer> editParm(@ApiParam(value = "参数信息", required = true) @RequestBody ParmSettingEntity parmSetting){
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        if (currentUser != null) {
+            parmSetting.setUpdateBy(currentUser.getUsername());
+            parmSetting.setDateUpdate(new Date());
+        }
+        int result= parmSettingService.updateParmSettingById(parmSetting)? 1: 0;
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+
+    /**
+     * 修改保存考评等级
+     */
+    @ApiOperation(value = "批量保存或更新参数")
+    @RequestMapping(value = "/batchSave", method = RequestMethod.POST)
+    public  AjaxMessage<Integer> editEvaluationGrade(@ApiParam(value = "参数信息", required = true) @RequestBody List<ParmSettingEntity> parmSettings) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        for (ParmSettingEntity item : parmSettings) {
+            if (currentUser != null) {
+                item.setUpdateBy(currentUser.getUsername());
+                item.setCreateBy(currentUser.getUsername());
+                item.setDateCreate(new Date());
+                item.setDateUpdate(new Date());
+                item.setTenantId(currentUser.getTenantId());
+            }
+            item.setStatus(1);
+            parmSettingService.saveOrUpdate(item);
+        }
+        return new AjaxMessage<>(ResultStatus.OK, 1);
+    }
+    /**
+     * 删除
+     */
+    @ApiOperation(value = "批量删除参数")
+    @RequestMapping(value = "/deleteByIds", method = RequestMethod.POST)
+    @ResponseBody
+    public AjaxMessage<Integer> deleteByIds(@ApiParam(value = "参数IDS", required = true) @RequestBody Long[] ids) {
+        if (ids == null || ids.length == 0) {
+            return new AjaxMessage<>(ResultStatus.PARAM_ERROR);
+        }
+        int result = parmSettingService.delParmSettingByIds(ids) ? 1 : 0;
+        return new AjaxMessage<>(ResultStatus.OK, result);
+    }
+    /**
+     * 删除
+     */
+    @ApiOperation(value = "单个删除参数")
+    @RequestMapping(value = "/deleteById", method = RequestMethod.POST)
+    public AjaxMessage<Integer> deleteById(@ApiParam(value = "参数ID", required = true) @RequestParam Long id) {
+        if (id == null) {
+            return new AjaxMessage<>(ResultStatus.PARAM_ERROR);
+        }
+        List<Long> longIds = new ArrayList<>();
+        longIds.add(id);
+        ParmSettingEntity parmSetting = parmSettingService.findParmSettingById(id);
+        if (parmSetting == null) {
+            return new AjaxMessage<>(ResultStatus.EXSIT_IS_PARENT_ERROR, 0);
+        } else {
+            int result = parmSettingService.delParmSettingById(id) ? 1 : 0;
+            return new AjaxMessage<>(ResultStatus.OK, result);
+        }
+    }
+}

+ 34 - 0
sms_water/src/main/java/com/huaxu/dao/ParmSettingMapper.java

@@ -0,0 +1,34 @@
+package com.huaxu.dao;
+
+import com.huaxu.entity.ParmSettingEntity;
+import java.io.Serializable;
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+/**
+ *
+ * sms_parm_settingDAO接口
+ * @author: WYY
+ * @date 2021-05-11 10:30
+ */
+@Mapper
+public interface ParmSettingMapper extends BaseMapper<ParmSettingEntity> {
+
+	/**
+     * 自定义分页查询
+     * @param  page 
+     * @param  parmSettingEntity 实体类
+     */
+     Page<ParmSettingEntity> findPage(IPage<ParmSettingEntity> page,
+                                       @Param("parmSetting") ParmSettingEntity parmSettingEntity);
+
+     ParmSettingEntity findParmSettingById(Serializable id);
+
+
+     List<ParmSettingEntity> findList(ParmSettingEntity parmSettingEntity);
+
+     /**删除相关方法  使用mybatis-plus集成的 **/
+}

+ 75 - 0
sms_water/src/main/java/com/huaxu/entity/ParmSettingEntity.java

@@ -0,0 +1,75 @@
+package com.huaxu.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * sms_parm_setting
+ * @author: WYY
+ * @date 2021-05-11 10:30
+ */
+@Data
+@TableName("sms_parm_setting")
+public class ParmSettingEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */ 
+	@TableId(type = IdType.AUTO)
+    private Long id;
+
+    /** 租户标识 */
+    @ApiModelProperty(value = "租户标识")
+    private String tenantId;
+
+    /** 所属公司 */
+    @ApiModelProperty(value = "所属公司")
+    private Long companyOrgId;
+
+    /** 参数类型 */
+    @ApiModelProperty(value = "参数类型")
+    private Integer parmType;
+
+    /** 参数值 */
+    @ApiModelProperty(value = "参数值")
+    private String parmValue;
+
+    /** 是否启用(0不启用1启用) */
+    @ApiModelProperty(value = "是否启用(0不启用1启用)")
+    private Integer enableState;
+
+    /**
+     * 数据删除标识
+     */
+    @ApiModelProperty(value = "数据删除标识")
+    @TableLogic
+    private Integer status;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date dateCreate;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
+    private Date dateUpdate;
+}

+ 26 - 0
sms_water/src/main/java/com/huaxu/service/DeviceSetupMethodService.java

@@ -11,6 +11,7 @@ import com.huaxu.dto.SetupMethod;
 import com.huaxu.entity.DeviceEntity;
 import com.huaxu.entity.DeviceSetupMethodEntity;
 import com.huaxu.entity.DeviceSetupRecordEntity;
+import com.huaxu.entity.ParmSettingEntity;
 import com.huaxu.model.LoginUser;
 import com.huaxu.util.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +48,8 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
     private DeviceService deviceService;
     @Value("${send.setsetup.url}")
     private  String setSetupUrl;
+    @Autowired
+    private ParmSettingService parmSettingService;
 
     /**
      * 查列表
@@ -169,4 +172,27 @@ public class DeviceSetupMethodService extends ServiceImpl<DeviceSetupMethodMappe
         }
         return true;
     }
+    /**
+     * 校验密码
+     * @param password
+     * @return
+     */
+    public Boolean checkPassword(String password) {
+        //校验密钥
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        ParmSettingEntity parmSettingEntity = new ParmSettingEntity();
+        parmSettingEntity.setEnableState(1);
+        parmSettingEntity.setParmType(1);
+        parmSettingEntity.setCompanyOrgId(Long.valueOf(currentUser.getCompanyId()));
+        parmSettingEntity.setTenantId(currentUser.getTenantId());
+        List<ParmSettingEntity> parmSettingEntities = parmSettingService.findList(parmSettingEntity);
+        if (parmSettingEntities.size() == 0) {
+            return false;
+        }
+        if (password.equals(parmSettingEntities.get(0).getParmValue())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 }

+ 91 - 0
sms_water/src/main/java/com/huaxu/service/ParmSettingService.java

@@ -0,0 +1,91 @@
+package com.huaxu.service;
+
+
+import com.huaxu.dao.ParmSettingMapper;
+import com.huaxu.entity.ParmSettingEntity;
+import com.huaxu.model.LoginUser;
+import com.huaxu.util.UserUtil;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+
+import javax.annotation.Resource;
+
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Map;
+import java.util.List;
+import java.util.Arrays;
+
+/**
+ * 参数设置Service接口
+ *
+ * @author: WYY
+ * @date 2021-05-11 10:30
+ */
+@Service
+public class ParmSettingService extends ServiceImpl<ParmSettingMapper, ParmSettingEntity> {
+
+    @Resource
+    private ParmSettingMapper parmSettingMapper;
+
+    /**
+     * 查列表
+     */
+    public List<ParmSettingEntity> findList(ParmSettingEntity parmSettingEntity) {
+        LoginUser currentUser = UserUtil.getCurrentUser();
+        if(currentUser!=null) {
+            parmSettingEntity.setTenantId(currentUser.getTenantId());
+        }
+        return parmSettingMapper.findList(parmSettingEntity);
+    }
+
+    /**
+     * 批量删除
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public boolean delParmSettingByIds(Long[] ids) {
+
+        return this.removeByIds(Arrays.asList(ids));
+
+    }
+
+    /**
+     * 单个删除
+     */
+    public boolean delParmSettingById(Long id) {
+
+
+        return this.removeById(id);
+
+    }
+
+    /**
+     * 保存
+     */
+    public boolean addParmSetting(ParmSettingEntity parmSetting) {
+        if (this.save(parmSetting)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 修改根居ID
+     */
+    public boolean updateParmSettingById(ParmSettingEntity parmSetting) {
+
+        if (this.updateById(parmSetting)) {
+            return true;
+        }
+        return false;
+    }
+
+    /**
+     * 根居ID获取对象
+     */
+    public ParmSettingEntity findParmSettingById(Long id) {
+        return parmSettingMapper.findParmSettingById(id);
+    }
+}

+ 82 - 0
sms_water/src/main/resources/mapper/ParmSettingMapper.xml

@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huaxu.dao.ParmSettingMapper">
+
+
+    <resultMap type="com.huaxu.entity.ParmSettingEntity" id="ParmSettingResult">
+        <result property="id" column="id"/>
+        <result property="tenantId" column="tenant_id"/>
+        <result property="companyOrgId" column="company_org_id"/>
+        <result property="parmType" column="parm_type"/>
+        <result property="parmValue" column="parm_value"/>
+        <result property="enableState" column="enable_state"/>
+        <result property="status" column="status"/>
+        <result property="dateCreate" column="date_create"/>
+        <result property="createBy" column="create_by"/>
+        <result property="dateUpdate" column="date_update"/>
+        <result property="updateBy" column="update_by"/>
+    </resultMap>
+
+    <!--  实体栏位  -->
+    <sql id="parmSettingColumns">
+         a.id as "id" ,
+         a.tenant_id as "tenantId" ,
+         a.company_org_id as "companyOrgId" ,
+         a.parm_type as "parmType" ,
+         a.parm_value as "parmValue" ,
+         a.enable_state as "enableState" ,
+         a.status as "status" ,
+         a.date_create as "dateCreate" ,
+         a.create_by as "createBy" ,
+         a.date_update as "dateUpdate" ,
+         a.update_by as "updateBy" 
+     </sql>
+
+
+    <!--  根据主键获取实体   -->
+    <select id="findParmSettingById" resultType="com.huaxu.entity.ParmSettingEntity">
+        SELECT
+        <include refid="parmSettingColumns"/>
+        FROM sms_parm_setting a
+
+        WHERE a.id = #{id} and a.status=1
+    </select>
+
+    <!--  根据获取实体List   -->
+    <select id="findList" resultType="com.huaxu.entity.ParmSettingEntity">
+        SELECT
+        <include refid="parmSettingColumns"/>
+        FROM sms_parm_setting a
+
+        <where>
+            <if test="tenantId != null  and tenantId != ''">and a.tenant_id = #{tenantId}</if>
+            <if test="companyOrgId != null ">and a.company_org_id = #{companyOrgId}</if>
+            <if test="parmType != null ">and a.parm_type = #{parmType}</if>
+            <if test="parmValue != null  and parmValue != ''">and a.parm_value = #{parmValue}</if>
+            <if test="enableState != null ">and a.enable_state = #{enableState}</if>
+            and a.status=1
+        </where>
+    </select>
+
+    <!--  根据获取实体 page   -->
+    <select id="findPage" resultType="com.huaxu.entity.ParmSettingEntity">
+        SELECT
+        <include refid="parmSettingColumns"/>
+        FROM sms_parm_setting a
+
+        <where>
+            <if test="parmSetting.tenantId != null  and parmSetting.tenantId != ''">and a.tenant_id =
+                #{parmSetting.tenantId}
+            </if>
+            <if test="parmSetting.companyOrgId != null ">and a.company_org_id = #{parmSetting.companyOrgId}</if>
+            <if test="parmSetting.parmType != null ">and a.parm_type = #{parmSetting.parmType}</if>
+            <if test="parmSetting.parmValue != null  and parmSetting.parmValue != ''">and a.parm_value =
+                #{parmSetting.parmValue}
+            </if>
+            <if test="parmSetting.enableState != null ">and a.enable_state = #{parmSetting.enableState}</if>
+            and a.status=1
+        </where>
+    </select>
+</mapper>

+ 11 - 4
user_center/src/main/java/com/huaxu/controller/UserController.java

@@ -311,11 +311,18 @@ public class UserController {
     @ApiOperation(value = "查询运维人员数量情况")
     @RequestMapping(value = "/findMaintainer", method = RequestMethod.GET)
     public AjaxMessage<MaintainerCountDto> findMaintainer(
-            @ApiParam(value = "开始时间", required = true) @RequestParam String startTime,
-            @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endTime,
-            @ApiParam(value = "统计类型0按月、1按年、2自定义", required = true)@RequestParam Integer type) {
-        MaintainerCountDto maintainerCountDto = userService.findMaintainer(startTime,endTime,type);
+            @ApiParam(value = "开始时间", required = true) @RequestParam String startDate,
+            @ApiParam(value = "结束时间", required = false) @RequestParam(required = false) String endDate,
+            @ApiParam(value = "统计类型0按月、1按年、2自定义", required = true)@RequestParam Integer statsType) {
+        MaintainerCountDto maintainerCountDto = userService.findMaintainer(startDate,endDate,statsType);
         return new AjaxMessage<>(ResultStatus.OK, maintainerCountDto);
     }
 
+    @ApiOperation(value = "查询运维人员数量")
+    @RequestMapping(value = "/findMaintainerCount", method = RequestMethod.GET)
+    public Integer findMaintainerCount(
+            @ApiParam(value = "结束时间(YYYY-MM)", required = true) @RequestParam String endDate) {
+        return userService.findMaintainerCount(endDate);
+    }
+
 }

+ 29 - 8
user_center/src/main/java/com/huaxu/service/UserService.java

@@ -472,7 +472,7 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 		List<UserEntity> userEntities = userMapper.findUserListByType(userEntity);
 		return userEntities;
 	}
-	public MaintainerCountDto findMaintainer(String startTime, String endTime, Integer type){
+	public MaintainerCountDto findMaintainer(String startDate, String endDate, Integer statsType){
 		MaintainerCountDto result=new MaintainerCountDto();
 		try {
 			LoginUser currentUser = UserUtil.getCurrentUser();
@@ -484,22 +484,22 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 			Calendar c=Calendar.getInstance();
 			Date thisDate=null, dateMtoM=null,dateYtoY=null;
-			if(type==0){
-				dateMtoM=sdf.parse(startTime+"-1");
+			if(statsType==0){
+				dateMtoM=sdf.parse(startDate+"-1");
 				c.setTime(dateMtoM);
 				c.add(Calendar.MONTH,1);
 				thisDate=c.getTime();
 				c.add(Calendar.YEAR,-1);
 				dateYtoY=c.getTime();
-			}else if(type==1){
-				dateMtoM=sdf.parse(startTime+"-1-1");
+			}else if(statsType==1){
+				dateMtoM=sdf.parse(startDate+"-1-1");
 				dateYtoY=dateMtoM;
 				c.setTime(dateMtoM);
 				c.add(Calendar.YEAR,1);
 				thisDate=c.getTime();
-			}else if(type==2){
-				dateMtoM=sdf.parse(startTime+"-1");
-				thisDate=sdf.parse(endTime+"-1");
+			}else if(statsType==2){
+				dateMtoM=sdf.parse(startDate+"-1");
+				thisDate=sdf.parse(endDate+"-1");
 				c.setTime(thisDate);
 				c.add(Calendar.MONTH,1);
 				thisDate=c.getTime();
@@ -519,4 +519,25 @@ public class UserService extends ServiceImpl<UserMapper,UserEntity> {
 		}
 		return result;
 	}
+
+	public Integer findMaintainerCount(String endDate){
+		Integer maintainerCount=0;
+		try {
+			LoginUser currentUser = UserUtil.getCurrentUser();
+			UserEntity userEntity = new UserEntity();
+			userEntity.setTenantId(currentUser.getTenantId());
+			userEntity.setProgramItems(currentUser.getProgramItemList());
+			//1是公司,2是公司及以下,3部门,4部门及以下,5自定义
+			userEntity.setPermissonType(currentUser.getPermissonType());
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			Calendar c=Calendar.getInstance();
+			c.setTime(sdf.parse(endDate+"-1"));
+			c.add(Calendar.MONTH,1);
+			userEntity.setDateCreate(c.getTime());
+			maintainerCount=userMapper.findMaintainer(userEntity);
+		}catch (Exception e){
+			e.printStackTrace();
+		}
+		return maintainerCount;
+	}
 }