renkang
2024-11-21 b4eb1b683886899c4914f2a97961144624c46c74
设备、巡检任务业务
已添加5个文件
已修改11个文件
1021 ■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolSchemeCloudController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskRecordController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwPatrolSchemeMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwPatrolTaskRecordMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolSchemeService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolTaskRecordService.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolTaskService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java 316 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -222,7 +222,13 @@
       int sgscxh = 4;
    }
    public interface patrolTaskStatus{
        int waitStart = 0;
        int working= 1;
        int timeout = 2;
        int finish =3;
        int cancel =4;
    }
    public static  Date  getBirthdyByCardNo(String idCard){
    if(idCard ==null || idCard.length()<14){
        return null;
@@ -453,6 +459,7 @@
        public static final String GOODSORDER_KEY = "ordercode_";
        public static final String ACTIVITY_SIGN_KEY = "actcode_";
        public static final String AFTERSALE_KEY = "salecode_";
        public static final String PATROL_SCHEME_CODE_KEY = "patrolSchemeCode";
    }
server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1292,6 +1292,25 @@
        return now.getTime();
    }
    /**
     * èŽ·å–X天后的日期
     * @param date
     * @param days
     * @return
     */
    public static Date getXDayAfterDate(Date date, int days) {
        if(date ==null){
            date = new Date();
        }
        Calendar now = Calendar.getInstance();
        now.setTime(date);
        now.set(Calendar.DATE, now.get(Calendar.DATE) + days);
        return now.getTime();
    }
    /**
     * å¾—到两个日期之间相差的天数
     *
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolSchemeCloudController.java
@@ -70,6 +70,15 @@
        return ApiResponse.success(null);
    }
    @ApiOperation("启用禁用")
    @PostMapping("/updateStatus")
    @CloudRequiredPermission("business:ywpatrolscheme:update")
    public ApiResponse updateStatus(@RequestBody YwPatrolScheme ywPatrolScheme,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywPatrolScheme.setLoginUserInfo(this.getLoginUser(token));
        ywPatrolSchemeService.updateStatus(ywPatrolScheme);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywpatrolscheme:query")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java
@@ -83,6 +83,17 @@
    @CloudRequiredPermission("business:ywpatroltask:exportExcel")
    public void exportExcel (@RequestBody PageWrap<YwPatrolTask> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        List<YwPatrolTask> ywPatrolTaskList = ywPatrolTaskService.findPage(pageWrap).getRecords();
        for (YwPatrolTask ywPatrolTask:ywPatrolTaskList) {
            if((Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.ZERO) || Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.ONE))
            && ywPatrolTask.getEndDate().getTime() < System.currentTimeMillis()
            ){
                ywPatrolTask.setStatus(Constants.TWO);
            }
        }
        ExcelExporter.build(YwPatrolTask.class).export(ywPatrolTaskService.findPage(pageWrap).getRecords(), "运维巡检任务信息表", response);
    }
@@ -92,4 +103,13 @@
    public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywPatrolTaskService.findById(id));
    }
    @ApiOperation("任务取消")
    @GetMapping("/taskCancel")
    @CloudRequiredPermission("business:ywpatroltask:query")
    public ApiResponse taskCancel(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywPatrolTaskService.taskCancel(id,this.getLoginUser(token));
        return ApiResponse.success("操作成功");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskRecordController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwPatrolTaskRecord;
import com.doumee.service.business.YwPatrolTaskRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/21 18:11
 */
@Api(tags = "运维巡检任务 - å·¡æ£€ç‚¹ä¿¡æ¯è¡¨")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/ywPatrolTaskRecord")
public class YwPatrolTaskRecordController extends BaseController {
    @Autowired
    private YwPatrolTaskRecordService ywPatrolTaskRecordService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:ywpatroltaskrecord:create")
    public ApiResponse create(@RequestBody YwPatrolTaskRecord ywPatrolTaskRecord) {
        return ApiResponse.success(ywPatrolTaskRecordService.create(ywPatrolTaskRecord));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:ywpatroltaskrecord:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        ywPatrolTaskRecordService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:ywpatroltaskrecord:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        ywPatrolTaskRecordService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:ywpatroltaskrecord:update")
    public ApiResponse updateById(@RequestBody YwPatrolTaskRecord ywPatrolTaskRecord) {
        ywPatrolTaskRecordService.updateById(ywPatrolTaskRecord);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywpatroltaskrecord:query")
    public ApiResponse<PageData<YwPatrolTaskRecord>> findPage (@RequestBody PageWrap<YwPatrolTaskRecord> pageWrap) {
        return ApiResponse.success(ywPatrolTaskRecordService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:ywpatroltaskrecord:exportExcel")
    public void exportExcel (@RequestBody PageWrap<YwPatrolTaskRecord> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(YwPatrolTaskRecord.class).export(ywPatrolTaskRecordService.findPage(pageWrap).getRecords(), "运维巡检任务 - å·¡æ£€ç‚¹ä¿¡æ¯è¡¨", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:ywpatroltaskrecord:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(ywPatrolTaskRecordService.findById(id));
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwPatrolSchemeMapper.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.YwPatrolScheme;
import com.github.yulichang.base.MPJBaseMapper;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwPatrolTaskRecordMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.YwPatrolTaskRecord;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/21 18:11
 */
public interface YwPatrolTaskRecordMapper extends MPJBaseMapper<YwPatrolTaskRecord> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
@@ -23,96 +24,103 @@
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "标题")
    @ExcelColumn(name="标题")
    @ExcelColumn(name="计划名称",index = 0)
    private String title;
    @ApiModelProperty(value = "计划编码")
    @ExcelColumn(name="计划编号",index = 1)
    private String code;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "状态 0启用 1禁用", example = "1")
    @ExcelColumn(name="状态 0启用 1禁用")
    @ExcelColumn(name="状态",index = 9,width = 6,valueMapping = "0=启用;1=停用;")
    private Integer status;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "巡检点编码(关联yw_patrol_line)", example = "1")
    @ExcelColumn(name="巡检点编码(关联yw_patrol_line)")
    private Integer lineId;
    @ApiModelProperty(value = "巡检负责人编码集合,多个使用英文逗号隔开")
    @ExcelColumn(name="巡检负责人编码集合,多个使用英文逗号隔开")
    private String userIds;
    @ApiModelProperty(value = "处理人编码(关联system_user)", example = "1")
    @ExcelColumn(name="处理人编码(关联system_user)")
    private Integer dealUserId;
    @ApiModelProperty(value = "处理时间")
    @ExcelColumn(name="处理时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date dealDate;
    @ApiModelProperty(value = "处理备注")
    @ExcelColumn(name="处理备注")
    private String dealInfo;
    @ApiModelProperty(value = "循环周期  0每天 1每周 2每天", example = "1")
    @ExcelColumn(name="循环周期  0每天 1每周 2每天")
    private Integer circleType;
    @ApiModelProperty(value = "循环重复规则 1-31,多个英文逗号隔开")
    @ExcelColumn(name="循环重复规则 1-31,多个英文逗号隔开")
    private String circleDays;
    @ApiModelProperty(value = "开始日期")
    @ExcelColumn(name="开始日期")
    @ExcelColumn(name="开始日期",index = 3,width = 6,dateFormat ="yyyy-MM-dd" )
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    @ApiModelProperty(value = "结束日期")
    @ExcelColumn(name="结束日期")
    @ExcelColumn(name="结束日期",index = 4,width = 6,dateFormat ="yyyy-MM-dd" )
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    @ApiModelProperty(value = "开始时间点")
    @ExcelColumn(name="开始时间点")
    @ExcelColumn(name="开始时间",index = 5,width = 6)
    private String startTime;
    @ApiModelProperty(value = "结束时间点")
    @ExcelColumn(name="结束时间点")
    @ExcelColumn(name="结束时间",index = 6,width = 6)
    private String endTime;
    @ApiModelProperty(value = "执行进度 0待开始 1进行中 2超期 3已完成", example = "1")
    @ExcelColumn(name="执行进度 0待开始 1进行中 2超期 3已完成")
    private Integer processStatus;
    @ApiModelProperty(value = "创建人名称")
    @TableField(exist = false)
    private String createUserName;
    @ApiModelProperty(value = "负责人名称")
    @ExcelColumn(name="负责人",index = 2,width = 6)
    @TableField(exist = false)
    private String userName;
    @ApiModelProperty(value = "执行结果:0=待开始;1=进行中;2=已结束")
    @ExcelColumn(name="执行结果",index = 7,width = 6,valueMapping = "0=待开始;1=进行中;2=已结束")
    @TableField(exist = false)
    private Integer schemeStatus;
    @ApiModelProperty(value = "超期任务数")
    @TableField(exist = false)
    @ExcelColumn(name="超期任务数",index = 8,width = 6)
    private Integer timeOutTaskNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
@@ -23,84 +24,92 @@
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "标题")
    @ExcelColumn(name="标题")
    private String title;
    @ApiModelProperty(value = "任务编码")
    @ExcelColumn(name="任务编号",index = 2,width = 6)
    private String code;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "状态 0待开始 1进行中 2已超期 3已完成 4已取消", example = "1")
    @ExcelColumn(name="状态 0待开始 1进行中 2已超期 3已完成 4已取消")
    @ExcelColumn(name="执行结果",index = 7,width = 6,valueMapping = "0=待开始;1=进行中;2=已超期;3=已完成;")
    private Integer status;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "巡检计划编码(关联yw_patrol_scheme)", example = "1")
    @ExcelColumn(name="巡检计划编码(关联yw_patrol_scheme)")
    private Integer schemeId;
    @ApiModelProperty(value = "巡检点编码(关联yw_patrol_point)", example = "1")
    @ExcelColumn(name="巡检点编码(关联yw_patrol_point)")
    private Integer pointId;
    @ApiModelProperty(value = "处理人编码(关联system_user)", example = "1")
    @ExcelColumn(name="处理人编码(关联system_user)")
    private Integer dealUserId;
    @ApiModelProperty(value = "处理时间")
    @ExcelColumn(name="处理时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelColumn(name="实际完成时间",index = 5,width = 10,dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dealDate;
    @ApiModelProperty(value = "处理备注")
    @ExcelColumn(name="处理备注")
    private String dealInfo;
    @ApiModelProperty(value = "循环周期  0每天 1每周 2每天", example = "1")
    @ExcelColumn(name="循环周期  0每天 1每周 2每天")
    private Integer circleType;
    @ApiModelProperty(value = "开始日期")
    @ExcelColumn(name="开始日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelColumn(name="开始日期",index = 3,width = 10,dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;
    @ApiModelProperty(value = "结束日期")
    @ExcelColumn(name="结束日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ExcelColumn(name="结束日期",index = 4,width = 10,dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;
    @ApiModelProperty(value = "巡检结果  0正常 1异常", example = "1")
    @ExcelColumn(name="巡检结果  0正常 1异常")
    private Integer dealStatus;
    @ApiModelProperty(value = "计划标题")
    @ExcelColumn(name="计划名称",index = 0,width = 6)
    @TableField(exist = false)
    private String planTitle;
    @ApiModelProperty(value = "执行人")
    @ExcelColumn(name="执行人",index = 6,width = 6)
    @TableField(exist = false)
    private String userName;
    @ApiModelProperty(value = "计划编号")
    @ExcelColumn(name="计划编号",index = 1,width = 6)
    @TableField(exist = false)
    private String planCode;
    @ApiModelProperty(value = "序号" , hidden = true)
    @TableField(exist = false)
    private Integer codeSn;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTaskRecord.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * è¿ç»´å·¡æ£€ä»»åŠ¡ - å·¡æ£€ç‚¹ä¿¡æ¯è¡¨
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/21 18:11
 */
@Data
@ApiModel("运维巡检任务 - å·¡æ£€ç‚¹ä¿¡æ¯è¡¨")
@TableName("`yw_patrol_task_record`")
public class YwPatrolTaskRecord {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "巡检计划编码(关联yw_patrol_scheme)", example = "1")
    @ExcelColumn(name="巡检计划编码(关联yw_patrol_scheme)")
    private Integer schemeId;
    @ApiModelProperty(value = "巡检任务编码(关联yw_patrol_task)", example = "1")
    @ExcelColumn(name="巡检任务编码(关联yw_patrol_task)")
    private Integer taskId;
    @ApiModelProperty(value = "巡检点编码(关联yw_patrol_point)", example = "1")
    @ExcelColumn(name="巡检点编码(关联yw_patrol_point)")
    private Integer pointId;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "处理人编码(关联system_user)", example = "1")
    @ExcelColumn(name="处理人编码(关联system_user)")
    private Integer dealUserId;
    @ApiModelProperty(value = "处理时间")
    @ExcelColumn(name="处理时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date dealDate;
    @ApiModelProperty(value = "是否巡检  0=待开始;1=已巡检;", example = "1")
    @ExcelColumn(name="是否巡检  0=待开始;1=已巡检")
    private Integer status;
    @ApiModelProperty(value = "巡检结果  0=正常;1=异常", example = "1")
    @ExcelColumn(name="巡检结果  0=正常;1=异常")
    private Integer dealStatus;
    @ApiModelProperty(value = "处理备注")
    @ExcelColumn(name="处理备注")
    private String dealInfo;
    @ApiModelProperty(value = "巡检点名称")
    @TableField(exist = false)
    private String pointName;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolSchemeService.java
@@ -95,4 +95,10 @@
     * @return long
     */
    long count(YwPatrolScheme ywPatrolScheme);
    /**
     * ç¦å¯ç”¨
     * @param ywPatrolScheme
     */
    void updateStatus(YwPatrolScheme ywPatrolScheme);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolTaskRecordService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,97 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwPatrolTaskRecord;
import java.util.List;
/**
 * è¿ç»´å·¡æ£€ä»»åŠ¡ - å·¡æ£€ç‚¹ä¿¡æ¯è¡¨Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/21 18:11
 */
public interface YwPatrolTaskRecordService {
    /**
     * åˆ›å»º
     *
     * @param ywPatrolTaskRecord å®žä½“对象
     * @return Integer
     */
    Integer create(YwPatrolTaskRecord ywPatrolTaskRecord);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param ywPatrolTaskRecord å®žä½“对象
     */
    void delete(YwPatrolTaskRecord ywPatrolTaskRecord);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param ywPatrolTaskRecord å®žä½“对象
     */
    void updateById(YwPatrolTaskRecord ywPatrolTaskRecord);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param ywPatrolTaskRecords å®žä½“集
     */
    void updateByIdInBatch(List<YwPatrolTaskRecord> ywPatrolTaskRecords);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return YwPatrolTaskRecord
     */
    YwPatrolTaskRecord findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param ywPatrolTaskRecord å®žä½“对象
     * @return YwPatrolTaskRecord
     */
    YwPatrolTaskRecord findOne(YwPatrolTaskRecord ywPatrolTaskRecord);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param ywPatrolTaskRecord å®žä½“对象
     * @return List<YwPatrolTaskRecord>
     */
    List<YwPatrolTaskRecord> findList(YwPatrolTaskRecord ywPatrolTaskRecord);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<YwPatrolTaskRecord>
     */
    PageData<YwPatrolTaskRecord> findPage(PageWrap<YwPatrolTaskRecord> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param ywPatrolTaskRecord å®žä½“对象
     * @return long
     */
    long count(YwPatrolTaskRecord ywPatrolTaskRecord);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolTaskService.java
@@ -95,4 +95,6 @@
     * @return long
     */
    long count(YwPatrolTask ywPatrolTask);
    void taskCancel(Integer id, LoginUserInfo loginUserInfo);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
@@ -1,21 +1,35 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.utils.Week;
import com.doumee.core.utils.redis.RedisUtil;
import com.doumee.dao.business.YwLinePointMapper;
import com.doumee.dao.business.YwPatrolSchemeMapper;
import com.doumee.dao.business.model.YwPatrolScheme;
import com.doumee.dao.business.YwPatrolTaskMapper;
import com.doumee.dao.business.YwPatrolTaskRecordMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.YwPatrolSchemeService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * è¿ç»´å·¡æ£€è®¡åˆ’信息表Service实现
@@ -27,12 +41,146 @@
    @Autowired
    private YwPatrolSchemeMapper ywPatrolSchemeMapper;
    @Autowired
    private YwPatrolTaskMapper ywPatrolTaskMapper;
    @Autowired
    private YwLinePointMapper ywLinePointMapper;
    @Autowired
    private YwPatrolTaskRecordMapper ywPatrolTaskRecordMapper;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
    @Override
    public Integer create(YwPatrolScheme ywPatrolScheme) {
        if(Objects.isNull(ywPatrolScheme)
        || StringUtils.isBlank(ywPatrolScheme.getTitle())
                ||Objects.isNull(ywPatrolScheme.getLineId())
                ||StringUtils.isBlank(ywPatrolScheme.getUserIds())
                ||Objects.isNull(ywPatrolScheme.getStartDate())
                ||Objects.isNull(ywPatrolScheme.getEndDate())
                ||Objects.isNull(ywPatrolScheme.getCircleType())
                ||StringUtils.isBlank(ywPatrolScheme.getStartTime())
                ||StringUtils.isBlank(ywPatrolScheme.getEndTime())
                || (!Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ZERO) &&StringUtils.isBlank(ywPatrolScheme.getCircleDays()))
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo();
        ywPatrolScheme.setCreateDate(new Date());
        ywPatrolScheme.setCreator(loginUserInfo.getId());
        ywPatrolScheme.setIsdeleted(Constants.ZERO);
        ywPatrolScheme.setStatus(Constants.ZERO);
        ywPatrolScheme.setCode(this.getNextCode());
        ywPatrolSchemeMapper.insert(ywPatrolScheme);
        this.createThreeDaysData(ywPatrolScheme,loginUserInfo);
        return ywPatrolScheme.getId();
    }
    public synchronized String  getNextCode(){
        String prefix =  "P";
        Integer countNum  = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.PATROL_SCHEME_CODE_KEY,Integer.class);
        countNum = Constants.formatIntegerNum(countNum)+1;
        //更新缓存
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.PATROL_SCHEME_CODE_KEY,countNum);
        String nextIndex =Integer.toString( countNum );
        return prefix + StringUtils.leftPad(nextIndex,4,"0");
    }
    public void createThreeDaysData(YwPatrolScheme ywPatrolScheme,LoginUserInfo loginUserInfo){
        //循环生成三天内的数据
        for (int i = 0; i < 3; i++) {
            Date schemeDate = DateUtil.getXDayAfterDate(new Date(),i);
            this.createTask(schemeDate,ywPatrolScheme,loginUserInfo);
        }
    }
    /**
     * æ ¹æ®æ—¥æœŸç”Ÿæˆä»»åŠ¡
     * @param schemeDate
     * @param ywPatrolScheme
     */
    public void createTask(Date schemeDate,YwPatrolScheme ywPatrolScheme,LoginUserInfo loginUserInfo){
        if(ywPatrolScheme.getStartDate().getTime() > schemeDate.getTime()
            || ywPatrolScheme.getEndDate().getTime() < schemeDate.getTime() ){
            return;
        }
        if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ONE)){
            //每周根据日期生成 æ ¹æ®æ—¥æœŸèŽ·å–æ˜¯å‘¨å‡ 
            Week week = DateUtil.getWeek(schemeDate);
            if(Objects.isNull(week)){
                return;
            }
            List<String> weeks = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
            String weekStr = weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).findFirst().get();
            if(StringUtils.isBlank(weekStr)){
                return;
            }
        }else{
            //每月根据日期生成 æ ¹æ®æ—¥æœŸèŽ·å–æ˜¯å“ªå¤©
            List<String> days = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
            String dayStr = DateUtil.getFomartDate(schemeDate,"dd");
            if(Objects.isNull(days.stream().filter(i->StringUtils.equals(i,dayStr)).findFirst().get())){
                return;
            };
        }
        String schemeDateStr = DateUtil.getDate(schemeDate,"yyyy-MM-dd");
        //查询当天是否生成过数据
        if(ywPatrolTaskMapper.selectCount(new QueryWrapper<YwPatrolTask>().lambda().eq(YwPatrolTask::getSchemeId,ywPatrolScheme.getId()).like(YwPatrolTask::getStartDate,schemeDateStr))>Constants.ZERO){
            return;
        };
        YwPatrolTask ywPatrolTaskForCodeSn = ywPatrolTaskMapper.selectOne(new MPJLambdaWrapper<YwPatrolTask>()
                .select(" ifnull( max(replace(code,'"+ywPatrolScheme.getCode()+"-','')),0) AS codeSn ")
                .eq(YwPatrolTask::getSchemeId,ywPatrolScheme.getId())
                .orderByDesc( YwPatrolTask::getId)
                .last(" limit 1 ")
        );
        Integer codeSn = ywPatrolTaskForCodeSn.getCodeSn();
        List<YwLinePoint> ywLinePointList = ywLinePointMapper.selectList(new QueryWrapper<YwLinePoint>().lambda()
                .eq(YwLinePoint::getLineId,ywPatrolScheme.getLineId())
                .eq(YwLinePoint::getIsdeleted,Constants.ZERO)
                .orderByAsc(YwLinePoint::getSortnum));
        if(CollectionUtils.isEmpty(ywLinePointList)){
            return;
        }
        codeSn = codeSn + 1;
        String nextCode = StringUtils.leftPad(codeSn.toString(),3,"0");
        YwPatrolTask ywPatrolTask = new YwPatrolTask();
        ywPatrolTask.setCreateDate(new Date());
        ywPatrolTask.setCreator(loginUserInfo.getId());
        ywPatrolTask.setIsdeleted(Constants.ZERO);
        ywPatrolTask.setStatus(Constants.patrolTaskStatus.waitStart);
        ywPatrolTask.setSchemeId(ywPatrolScheme.getId());
        ywPatrolTask.setCircleType(ywPatrolScheme.getCircleType());
        ywPatrolTask.setStartDate(DateUtil.getDateFromString(schemeDateStr +" "+ ywPatrolScheme.getStartTime() +":00"));
        ywPatrolTask.setEndDate(DateUtil.getDateFromString(schemeDateStr +" "+ ywPatrolScheme.getEndTime() +":00"));
        ywPatrolTask.setDealUserId(ywPatrolScheme.getDealUserId());
        ywPatrolTask.setCode(ywPatrolScheme.getCode() + "-" + nextCode);
        ywPatrolTaskMapper.insert(ywPatrolTask);
        List<YwPatrolTaskRecord> ywPatrolTaskRecordList = new ArrayList<>();
        for (int i = 0; i < ywLinePointList.size(); i++) {
            YwLinePoint ywLinePoint = ywLinePointList.get(i);
            //生成任务数据
            YwPatrolTaskRecord ywPatrolTaskRecord = new YwPatrolTaskRecord();
            ywPatrolTaskRecord.setCreateDate(new Date());
            ywPatrolTaskRecord.setCreator(loginUserInfo.getId());
            ywPatrolTaskRecord.setIsdeleted(Constants.ZERO);
            ywPatrolTaskRecord.setStatus(Constants.ZERO);
            ywPatrolTaskRecord.setSchemeId(ywPatrolScheme.getId());
            ywPatrolTaskRecord.setPointId(ywLinePoint.getPointId());
            ywPatrolTaskRecord.setTaskId(ywPatrolTask.getId());
            ywPatrolTaskRecord.setDealUserId(ywPatrolScheme.getDealUserId());
            ywPatrolTaskRecord.setSortnum(i+1);
            ywPatrolTaskRecordList.add(ywPatrolTaskRecord);
        }
        ywPatrolTaskRecordMapper.insert(ywPatrolTaskRecordList);
    }
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
@@ -55,7 +203,42 @@
    @Override
    public void updateById(YwPatrolScheme ywPatrolScheme) {
        if(Objects.isNull(ywPatrolScheme)
                || Objects.isNull(ywPatrolScheme.getId())
                || StringUtils.isBlank(ywPatrolScheme.getTitle())
                ||Objects.isNull(ywPatrolScheme.getLineId())
                ||StringUtils.isBlank(ywPatrolScheme.getUserIds())
                ||Objects.isNull(ywPatrolScheme.getStartDate())
                ||Objects.isNull(ywPatrolScheme.getEndDate())
                ||Objects.isNull(ywPatrolScheme.getCircleType())
                ||StringUtils.isBlank(ywPatrolScheme.getStartTime())
                ||StringUtils.isBlank(ywPatrolScheme.getEndTime())
                || (!Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ZERO) &&StringUtils.isBlank(ywPatrolScheme.getCircleDays()))
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo();
        ywPatrolScheme.setEditDate(new Date());
        ywPatrolScheme.setEditor(loginUserInfo.getId());
        ywPatrolSchemeMapper.updateById(ywPatrolScheme);
    }
    @Override
    public void updateStatus(YwPatrolScheme ywPatrolScheme) {
        if(Objects.isNull(ywPatrolScheme)
                || Objects.isNull(ywPatrolScheme.getId())
                || Objects.isNull(ywPatrolScheme.getStatus())
                || !(Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ZERO) || Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ONE ))
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywPatrolScheme.getLoginUserInfo();
        ywPatrolScheme.setEditDate(new Date());
        ywPatrolScheme.setEditor(loginUserInfo.getId());
        ywPatrolSchemeMapper.updateById(ywPatrolScheme);
        if(Constants.equalsInteger(ywPatrolScheme.getStatus(),Constants.ZERO)){
            this.createThreeDaysData(ywPatrolScheme,loginUserInfo);
        }
    }
    @Override
@@ -88,92 +271,73 @@
    @Override
    public PageData<YwPatrolScheme> findPage(PageWrap<YwPatrolScheme> pageWrap) {
        IPage<YwPatrolScheme> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<YwPatrolScheme> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<YwPatrolScheme> queryWrapper = new MPJLambdaWrapper<YwPatrolScheme>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getId, pageWrap.getModel().getId());
        YwPatrolScheme model = pageWrap.getModel();
        queryWrapper.selectAll(YwPatrolScheme.class)
                .select(" t2.realName as createUserName ")
                .select(" t1.realName as userName ")
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolScheme::getUserIds)
                .leftJoin(" system_user t2 on t.creator =  t2.id  ")
                .eq(YwPatrolScheme::getIsdeleted,Constants.ZERO)
                .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle())
                .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
                .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
                .orderByDesc(YwPatrolScheme::getCreateDate)
        ;
        IPage<YwPatrolScheme> iPage = ywPatrolSchemeMapper.selectJoinPage(page,YwPatrolScheme.class,queryWrapper);
        for (YwPatrolScheme ywPatrolScheme:iPage.getRecords()) {
            this.getSchemeStatus(ywPatrolScheme);
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getCreator, pageWrap.getModel().getCreator());
        return PageData.from(iPage);
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(YwPatrolScheme::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(YwPatrolScheme::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
    //获取状态
    public void getSchemeStatus(YwPatrolScheme ywPatrolScheme){
        List<YwPatrolTask> ywPatrolTaskList = ywPatrolTaskMapper.selectList(new QueryWrapper<YwPatrolTask>().lambda()
                .eq(YwPatrolTask::getSchemeId,ywPatrolScheme.getId())
                .eq(YwPatrolTask::getIsdeleted,Constants.ZERO)
                .ne(YwPatrolTask::getStatus,Constants.FOUR)
        );
        if(CollectionUtils.isEmpty(ywPatrolTaskList)){
            ywPatrolScheme.setSchemeStatus(Constants.ZERO);
            ywPatrolScheme.setTimeOutTaskNum(Constants.ZERO);
            return;
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getEditor, pageWrap.getModel().getEditor());
        //过滤数据是否存在进行中的
        if(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ONE)).collect(Collectors.toList()).size()>Constants.ZERO){
            ywPatrolScheme.setSchemeStatus(Constants.ONE);
            ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis())
                    .collect(Collectors.toList()).size());
            return;
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(YwPatrolScheme::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(YwPatrolScheme::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        //过滤数据是不是全部未开始
        if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size(),ywPatrolTaskList.size())){
            ywPatrolScheme.setSchemeStatus(Constants.ZERO);
            ywPatrolScheme.setTimeOutTaskNum(ywPatrolTaskList.stream().filter(i->i.getEndDate().getTime()>System.currentTimeMillis())
                    .collect(Collectors.toList()).size());
            return;
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getLineId() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getLineId, pageWrap.getModel().getLineId());
        }
        if (pageWrap.getModel().getUserIds() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getUserIds, pageWrap.getModel().getUserIds());
        }
        if (pageWrap.getModel().getDealUserId() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getDealUserId, pageWrap.getModel().getDealUserId());
        }
        if (pageWrap.getModel().getDealDate() != null) {
            queryWrapper.lambda().ge(YwPatrolScheme::getDealDate, Utils.Date.getStart(pageWrap.getModel().getDealDate()));
            queryWrapper.lambda().le(YwPatrolScheme::getDealDate, Utils.Date.getEnd(pageWrap.getModel().getDealDate()));
        }
        if (pageWrap.getModel().getDealInfo() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getDealInfo, pageWrap.getModel().getDealInfo());
        }
        if (pageWrap.getModel().getCircleType() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getCircleType, pageWrap.getModel().getCircleType());
        }
        if (pageWrap.getModel().getCircleDays() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getCircleDays, pageWrap.getModel().getCircleDays());
        }
        if (pageWrap.getModel().getStartDate() != null) {
            queryWrapper.lambda().ge(YwPatrolScheme::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()));
            queryWrapper.lambda().le(YwPatrolScheme::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate()));
        }
        if (pageWrap.getModel().getEndDate() != null) {
            queryWrapper.lambda().ge(YwPatrolScheme::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()));
            queryWrapper.lambda().le(YwPatrolScheme::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate()));
        }
        if (pageWrap.getModel().getStartTime() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getStartTime, pageWrap.getModel().getStartTime());
        }
        if (pageWrap.getModel().getEndTime() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getEndTime, pageWrap.getModel().getEndTime());
        }
        if (pageWrap.getModel().getProcessStatus() != null) {
            queryWrapper.lambda().eq(YwPatrolScheme::getProcessStatus, pageWrap.getModel().getProcessStatus());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
        //过滤数据是不是全部已完成
        if(Constants.equalsInteger(ywPatrolTaskList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.THREE)).collect(Collectors.toList()).size()
                ,ywPatrolTaskList.size())){
            ywPatrolScheme.setSchemeStatus(Constants.TWO);
            return;
            }
        }
        return PageData.from(ywPatrolSchemeMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(YwPatrolScheme ywPatrolScheme) {
        QueryWrapper<YwPatrolScheme> wrapper = new QueryWrapper<>(ywPatrolScheme);
        return ywPatrolSchemeMapper.selectCount(wrapper);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package com.doumee.service.business.impl;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwPatrolTaskRecordMapper;
import com.doumee.dao.business.model.YwDeviceRecord;
import com.doumee.dao.business.model.YwPatrolPoint;
import com.doumee.dao.business.model.YwPatrolScheme;
import com.doumee.dao.business.model.YwPatrolTaskRecord;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.YwPatrolTaskRecordService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
 * è¿ç»´å·¡æ£€ä»»åŠ¡ - å·¡æ£€ç‚¹ä¿¡æ¯è¡¨Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2024/11/21 18:11
 */
@Service
public class YwPatrolTaskRecordServiceImpl implements YwPatrolTaskRecordService {
    @Autowired
    private YwPatrolTaskRecordMapper ywPatrolTaskRecordMapper;
    @Override
    public Integer create(YwPatrolTaskRecord ywPatrolTaskRecord) {
        ywPatrolTaskRecordMapper.insert(ywPatrolTaskRecord);
        return ywPatrolTaskRecord.getId();
    }
    @Override
    public void deleteById(Integer id) {
        ywPatrolTaskRecordMapper.deleteById(id);
    }
    @Override
    public void delete(YwPatrolTaskRecord ywPatrolTaskRecord) {
        UpdateWrapper<YwPatrolTaskRecord> deleteWrapper = new UpdateWrapper<>(ywPatrolTaskRecord);
        ywPatrolTaskRecordMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        ywPatrolTaskRecordMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(YwPatrolTaskRecord ywPatrolTaskRecord) {
        ywPatrolTaskRecordMapper.updateById(ywPatrolTaskRecord);
    }
    @Override
    public void updateByIdInBatch(List<YwPatrolTaskRecord> ywPatrolTaskRecords) {
        if (CollectionUtils.isEmpty(ywPatrolTaskRecords)) {
            return;
        }
        for (YwPatrolTaskRecord ywPatrolTaskRecord: ywPatrolTaskRecords) {
            this.updateById(ywPatrolTaskRecord);
        }
    }
    @Override
    public YwPatrolTaskRecord findById(Integer id) {
        return ywPatrolTaskRecordMapper.selectById(id);
    }
    @Override
    public YwPatrolTaskRecord findOne(YwPatrolTaskRecord ywPatrolTaskRecord) {
        QueryWrapper<YwPatrolTaskRecord> wrapper = new QueryWrapper<>(ywPatrolTaskRecord);
        return ywPatrolTaskRecordMapper.selectOne(wrapper);
    }
    @Override
    public List<YwPatrolTaskRecord> findList(YwPatrolTaskRecord ywPatrolTaskRecord) {
        QueryWrapper<YwPatrolTaskRecord> wrapper = new QueryWrapper<>(ywPatrolTaskRecord);
        return ywPatrolTaskRecordMapper.selectList(wrapper);
    }
    @Override
    public PageData<YwPatrolTaskRecord> findPage(PageWrap<YwPatrolTaskRecord> pageWrap) {
        IPage<YwPatrolTaskRecord> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwPatrolTaskRecord> queryWrapper = new MPJLambdaWrapper<YwPatrolTaskRecord>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwPatrolTaskRecord model = pageWrap.getModel();
        queryWrapper.selectAll(YwPatrolTaskRecord.class)
                .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName)
                .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId)
                .eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
                .like(StringUtils.isNotBlank(model.getPointName()),YwPatrolPoint::getName,model.getPointName())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()) , YwPatrolTaskRecord::getStatus,model.getStatus())
                .orderByDesc(YwPatrolScheme::getCreateDate)
        ;
        IPage<YwPatrolTaskRecord> iPage = ywPatrolTaskRecordMapper.selectJoinPage(page,YwPatrolTaskRecord.class,queryWrapper);
        return PageData.from(iPage);
    }
    @Override
    public long count(YwPatrolTaskRecord ywPatrolTaskRecord) {
        QueryWrapper<YwPatrolTaskRecord> wrapper = new QueryWrapper<>(ywPatrolTaskRecord);
        return ywPatrolTaskRecordMapper.selectCount(wrapper);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
@@ -1,21 +1,32 @@
package com.doumee.service.business.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwPatrolTaskMapper;
import com.doumee.dao.business.model.YwDeviceRecord;
import com.doumee.dao.business.model.YwPatrolScheme;
import com.doumee.dao.business.model.YwPatrolTask;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.YwPatrolTaskService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.java.Log;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * è¿ç»´å·¡æ£€ä»»åŠ¡ä¿¡æ¯è¡¨Service实现
@@ -85,81 +96,44 @@
        return ywPatrolTaskMapper.selectList(wrapper);
    }
  
    @Override
    public void taskCancel(Integer id, LoginUserInfo loginUserInfo) {
        YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectById(id);
        if(Objects.isNull(ywPatrolTask)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"状态已流转");
        }
        ywPatrolTask.setStatus(Constants.FOUR);
        ywPatrolTask.setEditDate(new Date());
        ywPatrolTask.setEditor(loginUserInfo.getId());
        ywPatrolTaskMapper.updateById(ywPatrolTask);
    }
    @Override
    public PageData<YwPatrolTask> findPage(PageWrap<YwPatrolTask> pageWrap) {
        IPage<YwPatrolTask> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<YwPatrolTask> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<YwPatrolTask> queryWrapper = new MPJLambdaWrapper<YwPatrolTask>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(YwPatrolTask::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(YwPatrolTask::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(YwPatrolTask::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getSortnum() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getSortnum, pageWrap.getModel().getSortnum());
        }
        if (pageWrap.getModel().getSchemeId() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getSchemeId, pageWrap.getModel().getSchemeId());
        }
        if (pageWrap.getModel().getPointId() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getPointId, pageWrap.getModel().getPointId());
        }
        if (pageWrap.getModel().getDealUserId() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getDealUserId, pageWrap.getModel().getDealUserId());
        }
        if (pageWrap.getModel().getDealDate() != null) {
            queryWrapper.lambda().ge(YwPatrolTask::getDealDate, Utils.Date.getStart(pageWrap.getModel().getDealDate()));
            queryWrapper.lambda().le(YwPatrolTask::getDealDate, Utils.Date.getEnd(pageWrap.getModel().getDealDate()));
        }
        if (pageWrap.getModel().getDealInfo() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getDealInfo, pageWrap.getModel().getDealInfo());
        }
        if (pageWrap.getModel().getCircleType() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getCircleType, pageWrap.getModel().getCircleType());
        }
        if (pageWrap.getModel().getStartDate() != null) {
            queryWrapper.lambda().ge(YwPatrolTask::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()));
            queryWrapper.lambda().le(YwPatrolTask::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate()));
        }
        if (pageWrap.getModel().getEndDate() != null) {
            queryWrapper.lambda().ge(YwPatrolTask::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()));
            queryWrapper.lambda().le(YwPatrolTask::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate()));
        }
        if (pageWrap.getModel().getDealStatus() != null) {
            queryWrapper.lambda().eq(YwPatrolTask::getDealStatus, pageWrap.getModel().getDealStatus());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(ywPatrolTaskMapper.selectPage(page, queryWrapper));
        YwPatrolTask model = pageWrap.getModel();
        queryWrapper.selectAll(YwPatrolTask.class)
                .selectAs(YwPatrolScheme::getCode,YwPatrolTask::getPlanCode)
                .selectAs(SystemUser::getRealname,YwPatrolTask::getUserName)
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId)
                .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                .eq(YwPatrolTask::getIsdeleted, Constants.ZERO)
                .like(StringUtils.isNotBlank(model.getPlanTitle()),YwPatrolScheme::getTitle,model.getPlanTitle())
                .ge(Objects.nonNull(model.getStartDate()), YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()))
                .le(Objects.nonNull(model.getEndDate()),YwPatrolTask::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()))
                .orderByDesc(YwPatrolTask::getId)
        ;
        IPage<YwPatrolTask> iPage = ywPatrolTaskMapper.selectJoinPage(page,YwPatrolTask.class,queryWrapper);
        return PageData.from(iPage);
    }
    @Override