liukangdong
2024-12-03 a40e6a45b2207a9b172b7687ce6e4fe7da8b9ac6
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei
已添加1个文件
已修改32个文件
508 ■■■■ 文件已修改
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwDeviceDataVO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1359,12 +1359,12 @@
     * æ“ä½œç±»åž‹ 0工单创建 1指派 2处理 3合同创建 4合同变更 5合同退租
     */
    public  enum YwLogType{
        WORKORDER_CREATE(0, "工单创建", "工单创建"),
        WORKORDER_DISPATCH(1, "工单指派", "工单指派"),
        WORKORDER_DEAL(2, "工单处理 ", "工单处理 "),
        CONTRACT_CREATE(3, "合同新建 ", "新建 "),
        CONTRACT_UPDATE(4, "合同变更 ", "变更 "),
        CONTRACT_BACK(5, "合同退租 ", "退租 "),
        WORKORDER_CREATE(0, "创建工单", "创建工单"),
        WORKORDER_DISPATCH(1, "分派工单", "分派工单"),
        WORKORDER_DEAL(2, "处理工单", "处理工单"),
        CONTRACT_CREATE(3, "合同新建", "新建"),
        CONTRACT_UPDATE(4, "合同变更", "变更"),
        CONTRACT_BACK(5, "合同退租", "退租"),
        ;
        // æˆå‘˜å˜é‡
@@ -1423,4 +1423,16 @@
    }
    //邮箱格式的验证
    public static boolean validEmail(String email) {
        Pattern p = Pattern.compile("[a-zA-Z0-9]+@[A-Za-z0-9]+\\.[a-z0-9]");
        Matcher m = p.matcher(email);
        if(m.find()){
            return true;
        } else {
            return false;
        }
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolLineCloudController.java
@@ -70,6 +70,15 @@
        return ApiResponse.success(null);
    }
    @ApiOperation("更新状态")
    @PostMapping("/updateStatusById")
    @CloudRequiredPermission("business:ywpatrolline:update")
    public ApiResponse updateStatusById(@RequestBody YwPatrolLine ywPatrolLine,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        ywPatrolLine.setLoginUserInfo(this.getLoginUser(token));
        ywPatrolLineService.updateStatusById(ywPatrolLine);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:ywpatrolline:query")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwPatrolTaskCloudController.java
@@ -92,8 +92,6 @@
            }
        }
        ExcelExporter.build(YwPatrolTask.class).export(ywPatrolTaskService.findPage(pageWrap).getRecords(), "运维巡检任务信息表", response);
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
@@ -3,12 +3,17 @@
import com.alibaba.fastjson.JSONObject;
import com.doumee.api.BaseController;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.FtpUtil;
import com.doumee.core.utils.aliyun.ALiYunUtil;
import com.doumee.dao.business.YwDeviceMapper;
import com.doumee.dao.business.vo.YwDeviceDataVO;
import com.doumee.service.business.YwDeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -28,10 +33,8 @@
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import java.util.*;
import java.util.List;
/**
 * @author Eva.Caesar Liu
@@ -48,6 +51,16 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private YwDeviceService ywDeviceService;
    @ApiOperation("获取运维设备情况")
    @GetMapping("/getDeviceData")
    public ApiResponse<YwDeviceDataVO> getDeviceData() {
        return ApiResponse.success(ywDeviceService.getYwDeviceData());
    }
    @ApiOperation(value = "上传", notes = "上传", httpMethod = "POST", position = 6)
    @ApiImplicitParams({
        @ApiImplicitParam(name = "folder", value = "文件夹", required = true, paramType = "query", dataType = "String", dataTypeClass = String.class),
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwBuilding.java
@@ -102,13 +102,13 @@
    @ExcelColumn(name="所属项目编码(关联yw_project)")
    private Integer projectId;
    @ApiModelProperty(value = "可招商房源数")
    @TableField(exist = false)
    private Integer roomRentNum;
    @ApiModelProperty(value = "房源数")
    @TableField(exist = false)
    private Integer roomNum;
    @ApiModelProperty(value = "项目名称")
    @TableField(exist = false)
    private String projectName;
    @ApiModelProperty(value = "可招商房源数")
    @TableField(exist = false)
    private Integer roomeRentNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRevenue.java
@@ -104,6 +104,11 @@
    private String accountTitle;
    @ApiModelProperty(value = "账单类型", example = "1" , hidden = true)
    @TableField(exist = false)
    private Integer billType;
    @ApiModelProperty(value = "创建人名称")
    @ExcelColumn(name="创建人",index = 9,width = 10)
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwDeviceRecord.java
@@ -71,7 +71,7 @@
    private String content;
    @ApiModelProperty(value = "运维时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dealDate;
    @ApiModelProperty(value = "设备名称")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolScheme.java
@@ -78,7 +78,7 @@
    @ApiModelProperty(value = "处理备注")
    private String dealInfo;
    @ApiModelProperty(value = "循环周期  0每天 1每周 2每天", example = "1")
    @ApiModelProperty(value = "循环周期  0每天 1每周 2每月", example = "1")
    private Integer circleType;
    @ApiModelProperty(value = "循环重复规则 1-31,多个英文逗号隔开")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwPatrolTask.java
@@ -103,6 +103,11 @@
    @TableField(exist = false)
    private String userName;
    @ApiModelProperty(value = "任务状态:多个以,分割 0待开始 1进行中 2已超期 3已完成 4已取消")
    @TableField(exist = false)
    private String queryStatus;
    @ApiModelProperty(value = "计划编号")
    @ExcelColumn(name="计划编号",index = 1,width = 6)
    @TableField(exist = false)
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwProject.java
@@ -10,6 +10,8 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.math.BigDecimal;
import java.util.Date;
/**
@@ -81,7 +83,10 @@
    private Integer roomNum;
    @ApiModelProperty(value = "可招商房源数")
    @TableField(exist = false)
    private Integer roomeRentNum;
    private Integer roomRentNum;
    @ApiModelProperty(value = "管理面积")
    @TableField(exist = false)
    private BigDecimal area;
    @ApiModelProperty(value = "城市名称")
    @TableField(exist = false)
    private String cityName;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwRoom.java
@@ -106,6 +106,10 @@
    @ExcelColumn(name="所属楼宇编码(关联yw_building)")
    private Integer buildingId;
    @ApiModelProperty(value = "租赁状态:0=待租赁;1=已租赁 ;2=未开启租赁", example = "1")
    @TableField(exist = false)
    private Integer leaseStatus;
    @ApiModelProperty(value = "项目名称")
    @TableField(exist = false)
    private String projectName;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwWorkorder.java
@@ -35,7 +35,7 @@
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
@@ -73,7 +73,7 @@
    @ApiModelProperty(value = "上门时间")
    @ExcelColumn(name="上门时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date getDate;
    @ApiModelProperty(value = "所属项目编码(关联yw_project)", example = "1")
@@ -101,7 +101,7 @@
    @ApiModelProperty(value = "提报时间")
    @ExcelColumn(name="提报时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date submitDate;
    @ApiModelProperty(value = "工单分类编码(关联category)", example = "1")
@@ -126,7 +126,7 @@
    @ApiModelProperty(value = "分派时间")
    @ExcelColumn(name="分派时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dispatchDate;
    @ApiModelProperty(value = "分派处理说明")
@@ -139,7 +139,7 @@
    @ApiModelProperty(value = "处理时间")
    @ExcelColumn(name="处理时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date dealDate;
    @ApiModelProperty(value = "处理备注")
@@ -152,6 +152,10 @@
    @ApiModelProperty(value = "项目名称")
    @TableField(exist = false)
    private String projectName;
    @ApiModelProperty(value = "任务状态:多个以,分割  0待处理 1已分派 2已处理")
    @TableField(exist = false)
    private String queryStatus;
    @ApiModelProperty(value = "楼宇名称")
    @TableField(exist = false)
@@ -168,9 +172,15 @@
    @ApiModelProperty(value = "提报人姓名")
    @TableField(exist = false)
    private String creatorName;
    @ApiModelProperty(value = "提报人电话")
    @TableField(exist = false)
    private String creatorMobile;
    @ApiModelProperty(value = "处理人姓名")
    @TableField(exist = false)
    private String dealUserName;
    @ApiModelProperty(value = "处理人组织")
    @TableField(exist = false)
    private String dealUserCompany;
    @ApiModelProperty(value = "类别名称")
    @TableField(exist = false)
    private String categoryName;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwDeviceDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.doumee.dao.business.vo;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/12/2 10:02
 */
@Data
public class YwDeviceDataVO {
    @ApiModelProperty(value = "设备总数", example = "1")
    private Integer totalNum = 0 ;
    @ApiModelProperty(value = "在保设备数", example = "1")
    private Integer qualityNum = 0 ;
    @ApiModelProperty(value = "正常设备数", example = "1")
    private Integer normalNum = 0 ;
    @ApiModelProperty(value = "损坏设备数", example = "1")
    private Integer abnormalNum = 0 ;
    @ApiModelProperty(value = "报废设备总数", example = "1")
    private Integer scrapNum = 0 ;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwDeviceService.java
@@ -4,6 +4,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwDevice;
import com.doumee.dao.business.vo.YwDeviceDataVO;
import java.util.List;
/**
@@ -97,4 +99,8 @@
    long count(YwDevice ywDevice);
    YwDevice getDetail(Integer id);
    YwDeviceDataVO getYwDeviceData();
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwPatrolLineService.java
@@ -50,6 +50,13 @@
    void updateById(YwPatrolLine ywPatrolLine);
    /**
     * æ›´æ–°çŠ¶æ€
     * @param ywPatrolLine
     */
    void updateStatusById(YwPatrolLine ywPatrolLine);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param ywPatrolLines å®žä½“集
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CategoryServiceImpl.java
@@ -191,6 +191,7 @@
    private void checkUnique(Category category){
        QueryWrapper<Category> wrapper = new QueryWrapper<>();
        wrapper.lambda()
                .eq(Objects.nonNull(category.getId()),Category::getId,category.getId())
                .eq(Category::getIsdeleted,Constants.ZERO)
                .eq(Category::getType,category.getType())
                .eq(Category::getName,category.getName());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2118,6 +2118,9 @@
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(StringUtils.isNotBlank(member.getEmail())&&!Constants.validEmail(member.getEmail())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请填写正确的email");
        }
        LoginUserInfo loginUserInfo = member.getLoginUserInfo();
        member.setCreator(loginUserInfo.getId());
        member.setCreateDate(new Date());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java
@@ -8,8 +8,10 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwBuildingMapper;
import com.doumee.dao.business.YwFloorMapper;
import com.doumee.dao.business.YwProjectMapper;
import com.doumee.dao.business.model.YwBuilding;
import com.doumee.dao.business.model.YwFloor;
import com.doumee.dao.business.model.YwProject;
import com.doumee.service.business.YwBuildingService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -36,6 +38,8 @@
    private YwBuildingMapper ywBuildingMapper;
    @Autowired
    private YwProjectMapper ywProjectMapper;
    @Autowired
    private YwFloorMapper ywFloorMapper;
    @Override
    public Integer create(YwBuilding model) {
@@ -58,6 +62,12 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        //查询楼宇下的数据
        if(ywFloorMapper.selectCount(new QueryWrapper<YwFloor>().lambda().eq(YwFloor::getIsdeleted,Constants.ZERO)
                .eq(YwFloor::getBuildingId,id))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"楼宇中存在楼层数据!");
        };
        YwBuilding model = new YwBuilding();
        model.setId(id);
        model.setEditDate(new Date());
@@ -101,7 +111,17 @@
    @Override
    public YwBuilding findById(Integer id) {
        return ywBuildingMapper.selectById(id);
        MPJLambdaWrapper<YwBuilding> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(YwBuilding.class )
                .selectAs(YwProject::getName,YwBuilding::getProjectName)
                .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId)
                .eq(YwBuilding::getId,id)
                .last(" limit 1 ")
        ;
        return ywBuildingMapper.selectJoinOne(YwBuilding.class, queryWrapper);
    }
    @Override
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractRevenueServiceImpl.java
@@ -30,10 +30,7 @@
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -392,6 +389,7 @@
        IPage<YwContractRevenue> iPage = ywContractRevenueMapper.selectJoinPage(page,YwContractRevenue.class,
                queryWrapper.selectAll(YwContractRevenue.class)
                        .selectAs(YwContractBill::getCode,YwContractRevenue::getBillCode)
                        .selectAs(YwContractBill::getType,YwContractRevenue::getBillType)
                         .selectAs(YwContract::getCode,YwContractRevenue::getContractCode)
                        .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerName)
                        .selectAs(SystemUser::getRealname,YwContractRevenue::getRealname)
@@ -418,6 +416,17 @@
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                StringBuilder roomPathName = new StringBuilder();
                for (YwContractRoom ywContractRoom:ywContractRoomList) {
                    if(Constants.equalsInteger(ywContractRevenue.getBillType(),Constants.ZERO)){
                        if(!(Constants.equalsInteger(ywContractRevenue.getContractId(),ywContractRoom.getContractId())
                        && Constants.equalsInteger(ywContractRoom.getType(),Constants.ZERO))){
                            continue;
                        }
                    }else{
                        if(!(Constants.equalsInteger(ywContractRevenue.getBillId(),ywContractRoom.getContractId())
                                && Constants.equalsInteger(ywContractRoom.getType(),Constants.ONE))){
                            continue;
                        }
                    }
                    if(StringUtils.isNotBlank(ywContractRoom.getProjectName())){
                        roomPathName.append(ywContractRoom.getProjectName()+"/");
                    }
@@ -447,24 +456,30 @@
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRevenueList)){
            //获取所有数据
            List<Integer> billIdList = ywContractRevenueList.stream().map(i->i.getBillId()).collect(Collectors.toList());
            List<Integer> contractIdList = ywContractRevenueList.stream().map(i->i.getContractId()).collect(Collectors.toList());
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(billIdList)){
                List<YwContractRoom> ywContractRoomList  = ywContractRoomMapper.selectJoinList(YwContractRoom.class,new MPJLambdaWrapper<YwContractRoom>()
                        .selectAll(YwContractRoom.class)
                        .selectAs(YwProject::getName,YwRoom::getProjectName)
                        .selectAs(YwFloor::getName,YwRoom::getFloorName)
                        .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
                        .selectAs(YwRoom::getName,YwContractRoom::getRoomName)
                        .selectAs(YwRoom::getCode,YwContractRoom::getRoomName)
                        .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId)
                        .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
                        .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                        .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
                        .in(YwContractRoom::getContractId,billIdList)
                        .eq(YwContractRoom::getType,Constants.ONE)
                        .and(i->i.in(YwContractRoom::getContractId,billIdList).eq(YwContractRoom::getType,Constants.ONE)
                                .or().in(YwContractRoom::getContractId,contractIdList).eq(YwContractRoom::getType,Constants.ZERO)
                        )
//                        .in(YwContractRoom::getContractId,billIdList)
//                        .eq(YwContractRoom::getType,Constants.ONE)
                );
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                    for (YwContractRevenue ywContractRevenue:ywContractRevenueList) {
                        ywContractRevenue.setYwContractRoomList(
                                ywContractRoomList.stream().filter(i->Constants.equalsInteger(i.getContractId(),ywContractRevenue.getBillId())).collect(Collectors.toList())
                                ywContractRoomList.stream().filter(i->
                                        Constants.equalsInteger(i.getContractId(),ywContractRevenue.getBillId())||Constants.equalsInteger(i.getContractId(),ywContractRevenue.getContractId()))
                                        .collect(Collectors.toList())
                        );
                    }
                }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -87,7 +87,6 @@
        dealMultifileBiz(model);//处理附件信息
        dealRoomsForContract(model);//处理房源关联表
        dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,model.getLoginUserInfo().getRealname(),"【"+model.getRemark().replace("合同摘要:","")+"】");//记录新建日志
        return model.getId();
    }
@@ -194,7 +193,7 @@
            }
            for(YwContractDetail d :model.getWyDetailList()){
                if(  d.getStartDate() == null
                        ||d.getEditDate() == null
                        ||d.getEndDate() == null
                        ||d.getPrice() == null
                        ||d.getCircleType() == null
                        || d.getCircleType()>6
@@ -237,9 +236,9 @@
        String str = "";
        //起租日2024/06/01,租赁数为500㎡。首期租赁三月一付,租金单价35元/㎡·月。首期物业三月一付,物业单价4.3元/㎡·月
        String str0 = "合同摘要:起租日{param1},租赁数为{param2}㎡。首期租赁{param3},租金单价{param4}元{param5}。首期物业{param6},物业单价{param7}{param8}";
        String str1 = "合同摘要:起租日{param1},租赁数为{param2}㎡。首期租赁{param3},租金单价{param4}元{param5}。";
        String str2 = "合同摘要:起租日{param1},首期物业{param6},物业单价{param7}元{param8}";
        String str0 = "合同摘要:起租日{param1},租赁数为{param2}㎡。首期租赁{param3},租金单价{param4}{param5}。首期物业{param6},物业单价{param7}{param8}";
        String str1 = "合同摘要:起租日{param1},租赁数为{param2}㎡。首期租赁{param3},租金单价{param4}{param5}。";
        String str2 = "合同摘要:起租日{param1},首期物业{param6},物业单价{param7}{param8}";
        if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
            str= str0;
        }
@@ -253,10 +252,10 @@
                .replace("{param2}",model.getTotalArea().intValue()+"")
                .replace("{param3}",Constants.getPayTypeByNum(model.getZlPayType()))
                .replace("{param4}",Constants.formatBigdecimal(model.getZlFirstPrice()).intValue()+"")
                .replace("{param5}",Constants.getUnitTypeByNum(model.getZlFirstCircle())
                .replace("{param5}",Constants.getUnitTypeByNum(model.getZlFirstCircle()))
                .replace("{param6}",Constants.getPayTypeByNum(model.getWyPayType()))
                .replace("{param7}",Constants.formatBigdecimal(model.getWyFirstPrice()).intValue()+"")
                .replace("{param8}",Constants.getUnitTypeByNum(model.getWyFirstCircle())));
                .replace("{param8}",Constants.getUnitTypeByNum(model.getWyFirstCircle()));
        return  str;
    }
    private String getbackRentRemarkByParam(YwContract model) {
@@ -649,15 +648,12 @@
        }
        int num =1;
        for(int i=0;i<billList1.size();i++){
            if(Constants.equalsInteger( billList1.get(i).getCostType(),Constants.ZERO)){
                billList1.get(i).setSortnum(num++);
            }
            billList1.get(i).setSortnum(num);
            num++;
        }
          num =1;
        for(int i=0;i<billList2.size();i++){
            if(Constants.equalsInteger( billList2.get(i).getCostType(),Constants.ONE)){
                billList2.get(i).setSortnum(num++);
            }
            billList2.get(i).setSortnum(num);
            num++;
        }
        if(model.getId()!=null){
            ywContractBillMapper.insert(billList1);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java
@@ -61,6 +61,9 @@
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywCustomer.getLoginUserInfo();
        if(StringUtils.isNotBlank(ywCustomer.getEmail())&&!Constants.validEmail(ywCustomer.getEmail())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请填写正确的email");
        }
        ywCustomer.setStatus(Constants.ZERO);
        ywCustomer.setIsdeleted(Constants.ZERO);
        ywCustomer.setCreator(loginUserInfo.getId());
@@ -108,6 +111,14 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        //查询客户信息下是否存在人员信息
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getType,Constants.memberType.customer)
                        .eq(Member::getCustomerId,id)
                .eq(Member::getIsdeleted,Constants.ZERO))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在人员信息未删除,请先删除客户下人员信息!");
        }
        ywCustomerMapper.deleteById(id);
    }
@@ -122,6 +133,11 @@
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        if(memberMapper.selectCount(new QueryWrapper<Member>().lambda().eq(Member::getType,Constants.memberType.customer)
                .in(Member::getCustomerId,ids)
                .eq(Member::getIsdeleted,Constants.ZERO))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在人员信息未删除,请先删除客户下人员信息!");
        }
        ywCustomerMapper.deleteBatchIds(ids);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceRecordServiceImpl.java
@@ -125,6 +125,7 @@
                        .selectAs(SystemUser::getMobile,YwDeviceRecord::getMobile)
                        .selectAs(Company::getName,YwDeviceRecord::getCompanyName)
                        .selectAs(YwDevice::getName,YwDeviceRecord::getDeviceName)
                        .selectAs(YwDevice::getCode,YwDeviceRecord::getDeviceCode)
                        .leftJoin(SystemUser.class,SystemUser::getId,YwDeviceRecord::getUserId)
                        .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                        .leftJoin(YwDevice.class,YwDevice::getId,YwDeviceRecord::getDeviceId)
@@ -132,7 +133,7 @@
                        .last(" limit  1 ")
        );
        List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
                .eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_RECORD_FILE));
                .eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_RECORD_FILE.getKey()));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifiles)) {
            String path = systemDictDataBiz.queryByCode(Constants.FTP, Constants.FTP_RESOURCE_PATH).getCode()
                    + systemDictDataBiz.queryByCode(Constants.FTP, Constants.YW_DEVICE).getCode();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwDeviceServiceImpl.java
@@ -10,11 +10,15 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwDeviceMapper;
import com.doumee.dao.business.YwDeviceRecordMapper;
import com.doumee.dao.business.model.Category;
import com.doumee.dao.business.model.YwDevice;
import com.doumee.dao.business.model.YwDeviceRecord;
import com.doumee.dao.business.vo.YwDeviceDataVO;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.model.Multifile;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.YwDeviceRecordService;
import com.doumee.service.business.YwDeviceService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -31,6 +35,7 @@
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * è¿ç»´è®¾å¤‡ä¿¡æ¯è¡¨Service实现
@@ -47,6 +52,8 @@
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private MultifileMapper multifileMapper;
    @Autowired
    private YwDeviceRecordMapper ywDeviceRecordMapper;
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
@@ -86,10 +93,15 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywDeviceMapper.update(new UpdateWrapper<YwDevice>().lambda().set(YwDevice::getIsdeleted,Constants.ONE)
        //查询设备是否存在运维记录
        if(ywDeviceRecordMapper.selectCount(new QueryWrapper<YwDeviceRecord>().lambda().eq(YwDeviceRecord::getDeviceId,id).eq(YwDeviceRecord::getIsdeleted,Constants.ZERO))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前设备存在运维记录,无法删除");
        };
        ywDeviceMapper.update(new UpdateWrapper<YwDevice>()
                .lambda().set(YwDevice::getIsdeleted,Constants.ONE)
                .set(YwDevice::getEditDate, DateUtil.getCurrDateTime())
                .set(YwDevice::getEditor,user.getId())
                .eq(YwDevice::getId,user.getId())
                .eq(YwDevice::getId,id)
        );
    }
@@ -161,7 +173,8 @@
    @Override
    public YwDevice getDetail(Integer id) {
        YwDevice ywDevice = ywDeviceMapper.selectById(id);
        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_FILE).last(" limit 1"));
        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda()
                .eq(Multifile::getObjId,id).eq(Multifile::getObjType,Constants.MultiFile.FN_DEVICE_FILE.getKey()).last(" limit 1"));
        if(Objects.nonNull(multifile)){
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_DEVICE).getCode();
@@ -208,4 +221,26 @@
        QueryWrapper<YwDevice> wrapper = new QueryWrapper<>(ywDevice);
        return ywDeviceMapper.selectCount(wrapper);
    }
    @Override
    public YwDeviceDataVO getYwDeviceData(){
        YwDeviceDataVO ywDeviceDataVO = new YwDeviceDataVO();
        List<YwDevice> ywDeviceList = ywDeviceMapper.selectList(new QueryWrapper<YwDevice>().lambda().eq(YwDevice::getIsdeleted,Constants.ZERO));
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywDeviceList)){
            ywDeviceDataVO.setQualityNum(ywDeviceList.size());
            ywDeviceDataVO.setTotalNum(ywDeviceList.size());
            ywDeviceDataVO.setNormalNum(ywDeviceList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ZERO)).collect(Collectors.toList()).size());
            ywDeviceDataVO.setAbnormalNum(ywDeviceList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.ONE)).collect(Collectors.toList()).size());
            ywDeviceDataVO.setScrapNum(ywDeviceList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.TWO)).collect(Collectors.toList()).size());
        }
        return ywDeviceDataVO;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwFloorServiceImpl.java
@@ -9,6 +9,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwBuildingMapper;
import com.doumee.dao.business.YwFloorMapper;
import com.doumee.dao.business.YwRoomMapper;
import com.doumee.dao.business.model.YwBuilding;
import com.doumee.dao.business.model.YwFloor;
import com.doumee.dao.business.model.YwRoom;
@@ -36,6 +37,8 @@
    private YwFloorMapper ywFloorMapper;
    @Autowired
    private YwBuildingMapper ywBuildingMapper;
    @Autowired
    private YwRoomMapper ywRoomMapper;
    @Override
    public Integer create(YwFloor model) {
@@ -59,6 +62,13 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        //查询楼层下的数据
        if(ywRoomMapper.selectCount(new QueryWrapper<YwRoom>().lambda().eq(YwRoom::getIsdeleted,Constants.ZERO)
                .eq(YwRoom::getFloor,id))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"楼层存在房间数据!");
        };
        YwFloor model = new YwFloor();
        model.setId(id);
        model.setEditDate(new Date());
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwLinePointServiceImpl.java
@@ -1,11 +1,16 @@
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.YwLinePointMapper;
import com.doumee.dao.business.YwPatrolSchemeMapper;
import com.doumee.dao.business.model.YwLinePoint;
import com.doumee.dao.business.model.YwPatrolScheme;
import com.doumee.service.business.YwLinePointService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -28,6 +33,7 @@
    @Autowired
    private YwLinePointMapper ywLinePointMapper;
    @Override
    public Integer create(YwLinePoint ywLinePoint) {
        ywLinePointMapper.insert(ywLinePoint);
@@ -36,6 +42,7 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        ywLinePointMapper.deleteById(id);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolLineServiceImpl.java
@@ -9,6 +9,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwLinePointMapper;
import com.doumee.dao.business.YwPatrolLineMapper;
import com.doumee.dao.business.YwPatrolSchemeMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.YwPatrolLineService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -22,9 +23,8 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
 * è¿ç»´å·¡æ£€è·¯çº¿ä¿¡æ¯è¡¨Service实现
@@ -40,6 +40,8 @@
    @Autowired
    private YwLinePointMapper ywLinePointMapper;
    @Autowired
    private YwPatrolSchemeMapper ywPatrolSchemeMapper;
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public Integer create(YwPatrolLine ywPatrolLine) {
@@ -56,8 +58,12 @@
        ywPatrolLine.setStatus(Constants.ZERO);
        ywPatrolLineMapper.insert(ywPatrolLine);
        //循环处理 å­é›†æ•°æ®
        List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
        //是否存在相同数据
        Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getPointId()).collect(Collectors.toList()));
        if(setIds.size()!=ywLinePointList.size()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在相同巡检点!");
        }
        for (YwLinePoint ywLinePoint:ywLinePointList) {
            if(Objects.isNull(ywLinePoint)
            || Objects.isNull(ywLinePoint.getPointId())
@@ -77,6 +83,11 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        //查询是否存在巡检计划
        if(ywPatrolSchemeMapper.selectCount(new QueryWrapper<YwPatrolScheme>().lambda().eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
                .eq(YwPatrolScheme::getLineId,id))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前巡检线路已被使用,无法删除");
        };
        ywPatrolLineMapper.deleteById(id);
    }
@@ -111,6 +122,11 @@
                .eq(YwLinePoint::getLineId,ywPatrolLine.getId()));
        //循环处理 å­é›†æ•°æ®
        List<YwLinePoint> ywLinePointList = ywPatrolLine.getLinePointList();
        //是否存在相同数据
        Set<Integer> setIds = new HashSet<Integer>(ywLinePointList.stream().map(i->i.getLineId()).collect(Collectors.toList()));
        if(setIds.size()!=ywLinePointList.size()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在相同巡检点!");
        }
        for (YwLinePoint ywLinePoint:ywLinePointList) {
            if(Objects.isNull(ywLinePoint)
                    || Objects.isNull(ywLinePoint.getPointId())
@@ -128,6 +144,15 @@
    }
    @Override
    public void updateStatusById(YwPatrolLine ywPatrolLine) {
        YwPatrolLine model = new YwPatrolLine();
        model.setId(ywPatrolLine.getId());
        model.setStatus(ywPatrolLine.getStatus());
        ywPatrolLineMapper.updateById(model);
    }
    @Override
    public void updateByIdInBatch(List<YwPatrolLine> ywPatrolLines) {
        if (CollectionUtils.isEmpty(ywPatrolLines)) {
            return;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolPointServiceImpl.java
@@ -161,12 +161,14 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,id)
                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_POINT_FILE).last(" limit 1"));
                .eq(Multifile::getObjType,Constants.MultiFile.FN_PATROL_POINT_FILE.getKey()).orderByDesc(Multifile::getId).last(" limit 1"));
        if(Objects.nonNull(multifile) && StringUtils.isNotBlank(multifile.getFileurl())){
            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_PATROL).getCode();
            ywPatrolPoint.setFileFullUrl(path + multifile.getFileurl());
            ywPatrolPoint.setFileUrl(multifile.getFileurl());
        }
        return ywPatrolPoint;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolSchemeServiceImpl.java
@@ -94,7 +94,9 @@
    public void createThreeDaysData(YwPatrolScheme ywPatrolScheme){
        //循环生成三天内的数据
        for (int i = 0; i < 3; i++) {
            Date schemeDate = DateUtil.getXDayAfterDate(new Date(),i);
            Date schemeDate = DateUtil.getXDayAfterDate(
                    DateUtil.StringToDate(
                    DateUtil.getDate(new Date(),"yyyy-MM-dd"),"yyyy-MM-dd"),i);
            this.createTask(schemeDate,ywPatrolScheme);
        }
    }
@@ -105,8 +107,8 @@
     * @param ywPatrolScheme
     */
    public void createTask(Date schemeDate,YwPatrolScheme ywPatrolScheme){
        if(ywPatrolScheme.getStartDate().getTime() > schemeDate.getTime()
            || ywPatrolScheme.getEndDate().getTime() < schemeDate.getTime() ){
        if(!(ywPatrolScheme.getStartDate().getTime() <= schemeDate.getTime()
            && ywPatrolScheme.getEndDate().getTime() >= schemeDate.getTime()) ){
            return;
        }
        if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.ONE)){
@@ -116,16 +118,15 @@
                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)){
            if(weeks.stream().filter(i->Constants.equalsInteger(Integer.valueOf(i),week.getNumber())).collect(Collectors.toList()).size()<=Constants.ZERO){
                return;
            }
        }else{
        }else if(Constants.equalsInteger(ywPatrolScheme.getCircleType(),Constants.TWO)){
            //每月根据日期生成 æ ¹æ®æ—¥æœŸèŽ·å–æ˜¯å“ªå¤©
            List<String> days = Arrays.asList(ywPatrolScheme.getCircleDays().split(","));
            String dayStr = DateUtil.getFomartDate(schemeDate,"dd");
            Optional<String>  optional = days.stream().filter(i->StringUtils.equals(i,dayStr)).findAny();
            if(Objects.isNull(optional)){
            Integer dayStr = Integer.valueOf(DateUtil.getFomartDate(schemeDate,"dd"));
            if(days.stream().filter(i->i.equals(dayStr.toString())).collect(Collectors.toList()).size()<=Constants.ZERO){
                return;
            }
        }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskRecordServiceImpl.java
@@ -9,8 +9,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwContractRevenueMapper;
import com.doumee.dao.business.YwPatrolTaskRecordMapper;
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.model.Multifile;
@@ -45,9 +44,17 @@
    @Autowired
    private MultifileMapper multifileMapper;
    @Autowired
    private YwDeviceMapper ywDeviceMapper;
    @Autowired
    private YwPatrolPointMapper ywPatrolPointMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private YwPatrolTaskMapper ywPatrolTaskMapper;
@@ -117,9 +124,12 @@
        queryWrapper.selectAll(YwPatrolTaskRecord.class)
                .selectAs(YwPatrolPoint::getName,YwPatrolTaskRecord::getPointName)
                .selectAs(YwPatrolPoint::getContent,YwPatrolTaskRecord::getContent)
                .selectAs(SystemUser::getRealname,YwPatrolTaskRecord::getRealname)
                .leftJoin(YwPatrolPoint.class,YwPatrolPoint::getId,YwPatrolTaskRecord::getPointId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTaskRecord::getDealUserId)
                .eq(YwPatrolScheme::getIsdeleted, Constants.ZERO)
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getTaskId()),YwPatrolTaskRecord::getTaskId, model.getTaskId())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getDealUserId()),YwPatrolTaskRecord::getDealUserId, model.getDealUserId())
                .like(StringUtils.isNotBlank(model.getPointName()),YwPatrolPoint::getName,model.getPointName())
                .eq(Objects.nonNull(model) && Objects.nonNull(model.getStatus()) , YwPatrolTaskRecord::getStatus,model.getStatus())
                .orderByDesc(YwPatrolScheme::getCreateDate)
@@ -140,7 +150,7 @@
    public void patrolData(YwPatrolTaskRecord ywPatrolTaskRecord) {
        if(Objects.isNull(ywPatrolTaskRecord)
        || Objects.isNull(ywPatrolTaskRecord.getId())
        || Objects.isNull(ywPatrolTaskRecord.getDealStatus())){
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = ywPatrolTaskRecord.getLoginUserInfo();
@@ -151,9 +161,23 @@
        if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据状态已流转");
        }
        YwPatrolPoint ywPatrolPoint = ywPatrolPointMapper.selectById(model.getPointId());
        if(Objects.isNull(ywPatrolPoint)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        YwDevice ywDevice = ywDeviceMapper.selectById(ywPatrolPoint.getDeviceId());
        if(Objects.isNull(ywDevice)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        YwPatrolTask ywPatrolTask = ywPatrolTaskMapper.selectById(model.getTaskId());
        if(Objects.isNull(ywPatrolTask)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(ywPatrolTask.getStartDate().getTime()>System.currentTimeMillis()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未到巡检时间无法进行该操作");
        }
        ywPatrolTaskRecordMapper.update(null,new UpdateWrapper<YwPatrolTaskRecord>().lambda()
                .set(YwPatrolTaskRecord::getDealStatus,ywPatrolTaskRecord.getDealStatus())
                .set(YwPatrolTaskRecord::getDealStatus,ywDevice.getStatus())
                .set(YwPatrolTaskRecord::getEditor,loginUserInfo.getId())
                .set(YwPatrolTaskRecord::getEditDate, DateUtil.getCurrDateTime())
                .set(YwPatrolTaskRecord::getDealDate, DateUtil.getCurrDateTime())
@@ -162,6 +186,19 @@
                .set(YwPatrolTaskRecord::getDealInfo, ywPatrolTaskRecord.getDealInfo())
                .eq(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()));
        if(ywPatrolTaskRecordMapper.selectCount(new QueryWrapper<YwPatrolTaskRecord>().lambda()
                .eq(YwPatrolTaskRecord::getTaskId,ywPatrolTask.getId())
                .ne(YwPatrolTaskRecord::getId,ywPatrolTaskRecord.getId()))==Constants.ZERO){
            ywPatrolTask.setStatus(Constants.THREE);
        }else{
            ywPatrolTask.setStatus(Constants.ONE);
        }
        //查询是否存在其他未
       ywPatrolTaskMapper.update(null,new UpdateWrapper<YwPatrolTask>().lambda().eq(YwPatrolTask::getId,ywPatrolTask.getId())
               .set(YwPatrolTask::getStatus,ywPatrolTask.getStatus())
               .set(YwPatrolTask::getEditDate,DateUtil.getCurrDateTime())
               .set(YwPatrolTask::getEditor,loginUserInfo.getId())
       );
        //附件数据
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywPatrolTaskRecord.getMultifileList())){
            for (Multifile multifile:ywPatrolTaskRecord.getMultifileList()) {
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwPatrolTaskServiceImpl.java
@@ -94,6 +94,10 @@
                .eq(YwPatrolTask::getId,id)
                .last(" limit 1 "))
        ;
        if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.TWO) &&
                ywPatrolTask.getEndDate().getTime()<System.currentTimeMillis()){
            ywPatrolTask.setStatus(Constants.TWO);
        }
        return ywPatrolTask;
    }
@@ -141,12 +145,21 @@
                .leftJoin(SystemUser.class,SystemUser::getId,YwPatrolTask::getDealUserId)
                .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId)
                .eq(YwPatrolTask::getIsdeleted, Constants.ZERO)
                .eq(Objects.nonNull(model.getStatus()) && !Constants.equalsInteger(model.getStatus(),Constants.TWO),YwPatrolTask::getStatus, model.getStatus())
                .apply(Objects.nonNull(model.getStatus()) && Constants.equalsInteger(model.getStatus(),Constants.TWO)," t.status = 1 and t.END_DATE > now() ")
                .apply(StringUtils.isNotBlank(model.getQueryStatus())," find_in_set(t.status ,'"+model.getQueryStatus()+"') ")
                .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);
        for (YwPatrolTask ywPatrolTask:iPage.getRecords()) {
            if(Constants.equalsInteger(ywPatrolTask.getStatus(),Constants.TWO) &&
             ywPatrolTask.getEndDate().getTime()<System.currentTimeMillis()){
                ywPatrolTask.setStatus(Constants.TWO);
            }
        }
        return PageData.from(iPage);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwProjectServiceImpl.java
@@ -1,5 +1,7 @@
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;
@@ -19,6 +21,7 @@
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +31,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * è¿ç»´é¡¹ç›®ä¿¡æ¯è¡¨Service实现
@@ -53,6 +57,15 @@
    @Override
    public Integer create(YwProject  model) {
        if(Objects.isNull(model)
        || StringUtils.isBlank(model.getName())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(ywProjectMapper.selectCount(new QueryWrapper<YwProject>().lambda()
                .eq(YwProject::getName,model.getName())
                .eq(YwProject::getIsdeleted,Constants.ZERO))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+model.getName()+"】已存在!");
        }
        model.setCreator(model.getLoginUserInfo().getId());
        model.setIsdeleted(Constants.ZERO);
        model.setCreateDate(new Date());
@@ -65,6 +78,11 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        //查询项目下的数据
        if(ywBuildingMapper.selectCount(new QueryWrapper<YwBuilding>().lambda().eq(YwBuilding::getIsdeleted,Constants.ZERO)
                .eq(YwBuilding::getProjectId,id))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"项目下存在楼宇数据!");
        };
        YwProject model = new YwProject();
        model.setId(id);
        model.setEditDate(new Date());
@@ -91,6 +109,17 @@
    @Override
    public void updateById(YwProject model) {
        if(Objects.isNull(model)
                || Objects.isNull(model.getId())
                || StringUtils.isBlank(model.getName())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(ywProjectMapper.selectCount(new QueryWrapper<YwProject>().lambda()
                .eq(YwProject::getName,model.getName())
                .ne(YwProject::getId,model.getId())
                .eq(YwProject::getIsdeleted,Constants.ZERO))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+model.getName()+"】已存在!");
        }
        model.setEditDate(new Date());
        model.setEditor(model.getLoginUserInfo().getId());
        ywProjectMapper.updateById(model);
@@ -131,7 +160,8 @@
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper.select("*,(select count(1) from yw_room a where a.isdeleted=0 and a.PROJECT_ID=yw_project.id) as roomNum"+
                ",(select count(1) from yw_room a where a.isdeleted=0 and a.PROJECT_ID=yw_project.id and a.IS_INVESTMENT=1) as roomRentNum");
                ",(select count(1) from yw_room a where a.isdeleted=0 and a.PROJECT_ID=yw_project.id and a.IS_INVESTMENT=1) as roomRentNum," +
                "( select ifnull(sum(a.RENT_AREA),0) from  yw_room a where a.isdeleted=0 and a.PROJECT_ID=yw_project.id ) as area");
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(YwProject::getId, pageWrap.getModel().getId());
        }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwRoomServiceImpl.java
@@ -8,17 +8,17 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwBuildingMapper;
import com.doumee.dao.business.YwContractRoomMapper;
import com.doumee.dao.business.YwRoomMapper;
import com.doumee.dao.business.model.YwBuilding;
import com.doumee.dao.business.model.YwFloor;
import com.doumee.dao.business.model.YwProject;
import com.doumee.dao.business.model.YwRoom;
import com.doumee.dao.business.YwWorkorderMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.YwRoomService;
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.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -38,6 +38,10 @@
    private YwRoomMapper ywRoomMapper;
    @Autowired
    private YwBuildingMapper ywBuildingMapper;
    @Autowired
    private YwContractRoomMapper ywContractRoomMapper;
    @Autowired
    private YwWorkorderMapper ywWorkorderMapper;
    @Override
    public Integer create(YwRoom model) {
@@ -61,6 +65,16 @@
    @Override
    public void deleteById(Integer id, LoginUserInfo user) {
        if(ywContractRoomMapper.selectCount(new QueryWrapper<YwContractRoom>()
                .lambda().eq(YwContractRoom::getIsdeleted,Constants.ZERO)
                .eq(YwContractRoom::getRoomId,id))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"房间信息已使用,无法进行删除!");
        };
        if(ywWorkorderMapper.selectCount(new QueryWrapper<YwWorkorder>()
                .lambda().eq(YwWorkorder::getIsdeleted,Constants.ZERO)
                .eq(YwWorkorder::getRoomId,id))>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"房间信息已使用,无法进行删除!");
        };
        YwRoom model = new YwRoom();
        model.setId(id);
        model.setEditDate(new Date());
@@ -136,6 +150,9 @@
                .selectAs(YwProject::getName,YwRoom::getProjectName)
                .selectAs(YwFloor::getName,YwRoom::getFloorName)
                .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
                .select(" select case when y1.status = 3 then now() BETWEEN y1.START_DATE and y1.BT_DATE else now() BETWEEN y1.START_DATE and y1.END_DATE END  " +
                        "from yw_contract y1 left join yw_contract_room y2 on y1.id = y2.CONTRACT_ID and y2.TYPE = 0  " +
                        "where y1.`STATUS` <> 4  and y2.room_id = t.id order by y1.create_date desc  limit 1   ",YwRoom::getLeaseStatus)
                .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
                .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor);
@@ -204,7 +221,13 @@
            queryWrapper.eq(YwRoom::getBuildingId, pageWrap.getModel().getBuildingId());
        }
        queryWrapper.orderByAsc(YwRoom::getRoomNum);
        return PageData.from(ywRoomMapper.selectJoinPage(page,YwRoom.class, queryWrapper));
        IPage<YwRoom> iPage = ywRoomMapper.selectJoinPage(page,YwRoom.class, queryWrapper);
        for (YwRoom ywRoom:iPage.getRecords()) {
            if(Constants.equalsInteger(ywRoom.getIsInvestment(),Constants.ZERO)){
                ywRoom.setLeaseStatus(Constants.TWO);
            }
        }
        return PageData.from(iPage);
    }
    @Override
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwWorkorderServiceImpl.java
@@ -323,18 +323,25 @@
        MPJLambdaWrapper<YwWorkorder> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(YwWorkorder.class )
                .selectAs(SystemUser::getRealname,YwWorkorder::getDealUserName)
                .selectAs(Company::getName,YwWorkorder::getDealUserCompany)
                .select("t3.realname",YwWorkorder::getCreatorName)
                .select("t3.mobile",YwWorkorder::getCreatorMobile)
                .select("t9.name",YwWorkorder::getCreatorCompany)
                .selectAs(Category::getName,YwWorkorder::getCategoryName)
                .selectAs(YwRoom::getName,YwWorkorder::getRoomName)
                .selectAs(YwRoom::getRoomNum,YwWorkorder::getRoomNum)
                .selectAs(YwFloor::getName,YwWorkorder::getFloorName)
                .selectAs(YwBuilding::getName,YwWorkorder::getBuildingName)
                .selectAs(YwProject::getName,YwWorkorder::getProjectName)
                .leftJoin(SystemUser.class,SystemUser::getId,YwWorkorder::getDealUserId)
                .leftJoin(Category.class,Category::getId,YwWorkorder::getCateId)
                .leftJoin(SystemUser.class,SystemUser::getId,YwWorkorder::getCreator)
                .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
                .leftJoin(YwRoom.class,YwRoom::getId,YwWorkorder::getRoomId)
                .leftJoin(YwFloor.class,YwFloor::getId,YwWorkorder::getFloorId)
                .leftJoin(YwBuilding.class,YwBuilding::getId,YwWorkorder::getBuildingId)
                .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
                .leftJoin(" company t9 on t9.id = t1.company_id  ")
                .eq(YwWorkorder::getId,id);
        YwWorkorder model = ywWorkorderMapper.selectJoinOne(YwWorkorder.class,queryWrapper);
        initFiles(model);//读取附件信息
@@ -382,17 +389,22 @@
                .leftJoin(YwRoom.class,YwRoom::getId,YwWorkorder::getRoomId)
                .leftJoin(YwFloor.class,YwFloor::getId,YwWorkorder::getFloorId)
                .leftJoin(YwBuilding.class,YwBuilding::getId,YwWorkorder::getBuildingId)
                .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId);
                .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId)
                .apply(StringUtils.isNotBlank(pageWrap.getModel().getQueryStatus())," find_in_set(t.DEAL_STATUS ,'"+pageWrap.getModel().getQueryStatus()+"') ");
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.eq(YwWorkorder::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getDispatchUserId() != null) {
            queryWrapper.eq(YwWorkorder::getDispatchUserId, pageWrap.getModel().getDispatchUserId());
        }
        if(Objects.nonNull(pageWrap.getModel().getRoomName())){
            queryWrapper.and(i->i.like(YwFloor::getName,pageWrap.getModel().getRoomName()).or()
                    .like(YwRoom::getRoomNum,pageWrap.getModel().getRoomName())
            );
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.eq(YwWorkorder::getCreator, pageWrap.getModel().getCreator());
        }
@@ -460,9 +472,6 @@
        }
        if (pageWrap.getModel().getDealStatus() != null) {
            queryWrapper.eq(YwWorkorder::getDealStatus, pageWrap.getModel().getDealStatus());
        }
        if (pageWrap.getModel().getDispatchUserId() != null) {
            queryWrapper.eq(YwWorkorder::getDispatchUserId, pageWrap.getModel().getDispatchUserId());
        }
        if (pageWrap.getModel().getDispatchDate() != null) {
            queryWrapper.ge(YwWorkorder::getDispatchDate, Utils.Date.getStart(pageWrap.getModel().getDispatchDate()));