jiangping
2023-12-08 7edf9a7c98fadade6cfd439083337634e7b80019
Merge remote-tracking branch 'origin/master'
已添加11个文件
已修改31个文件
1190 ■■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceEventController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/ProblemLogController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/VisitEventController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/system/SystemDictDataController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/config/mybatis/JSONObjectHandler.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/CarsQuery.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborConfigDTO.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/MemberQuery.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/VisitConfigDTO.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarsDTO.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CompanyDTO.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberCardJoinMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/ParkBookJoinMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/RetentionJoinMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberCard.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/CarsService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/ProblemsService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/TrainTimeService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ProblemLogServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ProblemsServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/system/SystemDictDataService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/CarEventController.java
@@ -10,7 +10,7 @@
import com.doumee.service.business.CarEventService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
@@ -33,7 +33,7 @@
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:carevent:create")
//    @RequiresPermissions("business:carevent:create")
    public ApiResponse create(@RequestBody CarEvent carEvent) {
        return ApiResponse.success(carEventService.create(carEvent));
    }
server/dmvisit_admin/src/main/java/com/doumee/api/business/CompanyController.java
@@ -7,6 +7,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.response.CompanyDTO;
import com.doumee.dao.business.model.Company;
import com.doumee.service.business.CompanyService;
import io.swagger.annotations.Api;
@@ -107,4 +108,18 @@
        company.setCategoryId(query.getCategoryId());
        return ApiResponse.success(companyService.findList(company));
    }
    /**
     * æŸ¥è¯¢éƒ¨é—¨åŠå…¶å­éƒ¨é—¨ä¿¡æ¯
     * @param type 0 æŸ¥è¯¢æ‰€æœ‰ä¿¡æ¯ 1 æŸ¥è¯¢å†…部信息
     * @return
     */
    @ApiOperation("根据类型查询组织信息")
    @GetMapping("/findCompanyTreePage")
//    @RequiresPermissions("business:company:query")
    public ApiResponse<List<CompanyDTO>> findCompanyTreePage(Integer type){
        return ApiResponse.success(companyService.findCompanyTreePage(type));
    }
}
server/dmvisit_admin/src/main/java/com/doumee/api/business/DeviceEventController.java
@@ -10,7 +10,7 @@
import com.doumee.service.business.DeviceEventService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
@@ -33,7 +33,7 @@
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:deviceevent:create")
//    @RequiresPermissions("business:deviceevent:create")
    public ApiResponse create(@RequestBody DeviceEvent deviceEvent) {
        return ApiResponse.success(deviceEventService.create(deviceEvent));
    }
server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberController.java
@@ -7,6 +7,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.request.MemberQuery;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.model.Member;
import com.doumee.service.business.MemberService;
@@ -112,4 +113,18 @@
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(memberService.findById(id));
    }
    /**
     *
     * åˆ†é¡µæŸ¥è¯¢å†…部人员信息
     * @param pageWrap
     * @return
     */
    @ApiOperation("分页查询内部人员信息")
    @GetMapping("/findMemberInfoPage")
    @RequiresPermissions("business:member:query")
    public ApiResponse<PageData<MemberInfoDTO>> findMemberInfoPage(@RequestBody PageWrap<MemberQuery> pageWrap){
        return ApiResponse.success(memberService.findMemberInfoPage(pageWrap));
    }
}
server/dmvisit_admin/src/main/java/com/doumee/api/business/ProblemLogController.java
@@ -10,7 +10,7 @@
import com.doumee.service.business.ProblemLogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
@@ -33,7 +33,7 @@
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:problemlog:create")
//    @RequiresPermissions("business:problemlog:create")
    public ApiResponse create(@RequestBody ProblemLog problemLog) {
        return ApiResponse.success(problemLogService.create(problemLog));
    }
@@ -69,7 +69,7 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:problemlog:query")
//    @RequiresPermissions("business:problemlog:query")
    public ApiResponse<PageData<ProblemLog>> findPage (@RequestBody PageWrap<ProblemLog> pageWrap) {
        return ApiResponse.success(problemLogService.findPage(pageWrap));
    }
server/dmvisit_admin/src/main/java/com/doumee/api/business/VisitEventController.java
@@ -10,7 +10,7 @@
import com.doumee.service.business.VisitEventService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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;
server/dmvisit_admin/src/main/java/com/doumee/api/system/SystemDictDataController.java
@@ -8,6 +8,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.request.LaborConfigDTO;
import com.doumee.dao.admin.request.VisitConfigDTO;
import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.vo.SystemDictDataListVO;
@@ -111,4 +113,47 @@
    public ApiResponse<SystemDictData> getSystemDictData(@RequestParam String dictCode, @RequestParam String label) {
        return ApiResponse.success(systemDictDataBiz.queryByCode(dictCode,label));
    }
    /**
     * è®¿å®¢æ¥è®¿é…ç½®
     * @return
     */
    @ApiOperation(value = "访客来访配置" )
    @GetMapping("/getVisitConfigDTO")
    public ApiResponse<VisitConfigDTO> getVisitConfigDTO(){
        return ApiResponse.success(systemDictDataService.getVisitConfigDTO());
    };
    /**
     * ä¿®æ”¹è®¿å®¢æ¥è®¿é…ç½®
     * @param visitConfigDTO
     */
    @ApiOperation(value = "修改访客来访配置" )
    @PostMapping("/updateVisitConfig")
    public ApiResponse updateVisitConfig(@RequestBody VisitConfigDTO visitConfigDTO){
        systemDictDataService.updateVisitConfig(visitConfigDTO);
        return ApiResponse.success(null);
    };
    /**
     * åŠ³åŠ¡æ¥è®¿é…ç½®
     * @return
     */
    @ApiOperation(value = "劳务来访配置" )
    @GetMapping("/getLaborConfigDTO")
    public ApiResponse<LaborConfigDTO> getLaborConfigDTO(){
        return ApiResponse.success(systemDictDataService.getLaborConfigDTO());
    };
    /**
     * ä¿®æ”¹åŠ³åŠ¡æ¥è®¿é…ç½®
     * @param miniProgrammeDTO
     */
    @ApiOperation(value = "修改劳务来访配置" )
    @PostMapping("/updateLaborConfigDTO")
    public ApiResponse updateLaborConfigDTO(@RequestBody LaborConfigDTO miniProgrammeDTO){
        systemDictDataService.updateLaborConfigDTO(miniProgrammeDTO);
        return ApiResponse.success(null);
    };
}
server/dmvisit_service/src/main/java/com/doumee/config/mybatis/JSONObjectHandler.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.doumee.config.mybatis;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * @author T14
 */
public class JSONObjectHandler implements TypeHandler<JSONObject> {
    @Override
    public void setParameter(PreparedStatement preparedStatement, int i, JSONObject o, JdbcType jdbcType) throws SQLException {
        preparedStatement.setString(i,toString());
    }
    @Override
    public JSONObject getResult(ResultSet resultSet, String s) throws SQLException {
        String str = resultSet.getString(s);
        if (StringUtils.isBlank(str)){
            return null;
        }
        if (!JSONUtil.isJsonObj(str)){
            throw new SQLException("解析数据格式有误");
        }
        return (JSONObject)JSONObject.parse(str);
    }
    @Override
    public JSONObject getResult(ResultSet resultSet, int i) throws SQLException {
        String str = resultSet.getString(i);
        if (StringUtils.isBlank(str)){
            return null;
        }
        if (!JSONUtil.isJsonObj(str)){
            throw new SQLException("解析数据格式有误");
        }
        return (JSONObject)JSONObject.parse(str);
    }
    @Override
    public JSONObject getResult(CallableStatement callableStatement, int i) throws SQLException {
        String str = callableStatement.getString(i);
        if (StringUtils.isBlank(str)){
            return null;
        }
        if (!JSONUtil.isJsonObj(str)){
            throw new SQLException("解析数据格式有误");
        }
        return (JSONObject)JSONObject.parse(str);
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -1,8 +1,13 @@
package com.doumee.core.utils;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
@@ -35,6 +40,12 @@
    public static final String MDJ_LW_REQUIRED = "MDJ_LW_REQUIRED";
    public static final String MDJ_VISIT_REQUIRED = "MDJ_VISIT_REQUIRED";
    public static final String EDS_PWD ="!@#$%^&QWERTY" ;
    public static final String ROOT_PATH = "";
    public static final String FILE_DIR = "";
    // è®¿å®¢æ¥è®¿é…ç½®
    public static final String VISIT_CONFIG = "VISIT_CONFIG";
    // åŠ³åŠ¡æ¥è®¿é…ç½®
    public static final String LABOR_CONFIG = "LABOR_CONFIG";
    public static  Date  getBirthdyByCardNo(String idCard){
@@ -253,7 +264,27 @@
        }
    }
    /**
     * å¯¹è±¡é©¼å³°å±žæ€§è½¬ä¸‹åˆ’线
     * @param object
     * @return
     * @throws JsonProcessingException
     */
    public static String toUnderlineJSONString(Object object) throws JsonProcessingException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
        String reqJson = mapper.writeValueAsString(object);
        return reqJson;
    }
    public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
        T reqJson =  mapper.readValue(json, clazz);
        return reqJson;
    }
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/CarsQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.dao.admin.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author T14
 */
@Data
@ApiModel("长期车查询")
public class CarsQuery {
    @ApiModelProperty(value = "关键字")
    private String keyWords;
    @ApiModelProperty(value = "公司名称")
    private String companyName;
    @ApiModelProperty(value = "车牌号")
    private String carNo;
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/LaborConfigDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.doumee.dao.admin.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author T14
 */
@Data
@ApiModel("劳务访客配置")
public class LaborConfigDTO {
    @ApiModelProperty(value = "来访预约方式")
    private String reservationWay = "";
    @ApiModelProperty(value = "被访人校验方式")
    private String checkVisit = "";
    @ApiModelProperty(value = "健康证是否必填")
    private String healthCard = "";
    @ApiModelProperty(value = "劳务是否答题")
    private String isAnswer = "";
    @ApiModelProperty(value = "劳务答题主题")
    private String theme = "";
    @ApiModelProperty(value = "劳务答题说明")
    private String description = "";
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/MemberQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.doumee.dao.admin.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.models.auth.In;
import lombok.Data;
import java.util.List;
/**
 * @author T14
 */
@Data
@ApiModel("人员查询 å‚æ•°")
public class MemberQuery {
    @ApiModelProperty(value = "姓名/手机号/工号")
    private String keyWords;
    @ApiModelProperty(value = "是否有人脸 0 å¦ 1 æ˜¯")
    private Integer hasFace;
    @ApiModelProperty(value = "可拜访")
    private Integer canVisit;
    @ApiModelProperty(value = "状态")
    private Integer status;
    @ApiModelProperty(value = "公司IDs")
    private List<Integer> companyIds;
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/RetentionQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.dao.admin.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @author T14
 */
@Data
@ApiModel("实时在场人员查询")
public class RetentionQuery {
    @ApiModelProperty(value = "姓名/手机号")
    private String keyWords;
    @ApiModelProperty(value = "公司/部门名称")
    private String companyName;
    @ApiModelProperty(value = "人员类型")
    private Integer type;
    @ApiModelProperty(value = "开始时间")
    private Date startTime;
    @ApiModelProperty(value = "结束时间")
    private Date endTime;
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/request/VisitConfigDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.doumee.dao.admin.request;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.IOException;
/**
 * @author T14
 */
@Data
@ApiModel("劳务来访配置")
public class VisitConfigDTO {
    @ApiModelProperty(value = "来访预约方式")
    private String reservationWay = "";
    @ApiModelProperty(value = "被访人校验方式")
    private String checkVisit = "";
    @ApiModelProperty(value = "健康证是否必填")
    private String healthCard = "";
    @ApiModelProperty(value = "劳务是否答题")
    private String isAnswer = "";
    @ApiModelProperty(value = "劳务答题主题")
    private String theme = "";
    @ApiModelProperty(value = "劳务答题说明")
    private String description = "";
//    /**
//     * å¯¹è±¡é©¼å³°å±žæ€§è½¬ä¸‹åˆ’线
//     * @param object
//     * @return
//     * @throws JsonProcessingException
//     */
//    public static String toUnderlineJSONString(Object object) throws JsonProcessingException {
//        ObjectMapper mapper = new ObjectMapper();
//        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
//        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
//        String reqJson = mapper.writeValueAsString(object);
//        return reqJson;
//    }
//
//
//    public static <T> T toSnakeObject(String json, Class<T> clazz) throws IOException {
//        ObjectMapper mapper = new ObjectMapper();
//        mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE);
//        T reqJson =  mapper.readValue(json, clazz);
//        return reqJson;
//    }
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CarsDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package com.doumee.dao.admin.response;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @author T14
 */
@Data
public class CarsDTO {
    @ApiModelProperty(value = "车牌号")
    @ExcelColumn(name="车牌号")
    private String code;
    @ApiModelProperty(value = "车库编码(关联parks)")
    @ExcelColumn(name="车库编码(关联parks)")
    private Integer parkId;
    @ApiModelProperty(value = "车库名称")
    @ExcelColumn(name="车库名称")
    private Integer parkName;
    @ApiModelProperty(value = "归属人编码")
    @ExcelColumn(name="归属人编码")
    private Integer memberId;
    @ApiModelProperty(value = "归属人编码")
    @ExcelColumn(name="归属人名称")
    private String memberName;
    @ApiModelProperty(value = "归属人编码")
    @ExcelColumn(name="归属人类型")
    private Integer memberType;
    @ApiModelProperty(value = "归属人编码")
    @ExcelColumn(name="归属人所在部门")
    private String companyName;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "时间类型 0长期有效 1时间段")
    @ExcelColumn(name="时间类型 0长期有效 1时间段")
    private Integer timeType;
    @ApiModelProperty(value = "开始时间")
    @ExcelColumn(name="开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;
    @ApiModelProperty(value = "结束时间")
    @ExcelColumn(name="结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endTime;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    private Date createDate;
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/CompanyDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package com.doumee.dao.admin.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author T14
 */
@Data
@ApiModel("组织模型")
public class CompanyDTO {
    @ApiModelProperty(value = "名称")
    private String name;
    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "状态 0启用 1禁用")
    private Integer status;
    @ApiModelProperty(value = "排序码")
    private Integer sortnum;
    @ApiModelProperty(value = "劳务人数")
    private Integer countNum;
    @ApiModelProperty(value = "图标")
    private String imgurl;
    @ApiModelProperty(value = "类型 0劳务公司 1内部组织")
    private Integer type;
    @ApiModelProperty(value = "分类编码(关联category)")
    private Integer categoryId;
    @ApiModelProperty(value = "分类编码名称")
    private String categoryName;
    @ApiModelProperty(value = "企业代码")
    private Integer code;
    @ApiModelProperty(value = "上级组织编码(自关联)")
    private Integer parentId;
    @ApiModelProperty(value = "联系人姓名")
    private String linkName;
    @ApiModelProperty(value = "联系电话")
    private String linkPhone;
    @ApiModelProperty(value = "子部门")
    private List<CompanyDTO> companyDTOList;
}
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java
@@ -82,6 +82,19 @@
    @ApiModelProperty(value = "微信openid")
    private String openid;
    @ApiModelProperty(value = "门禁角色编码")
    private Integer roleId;
    @ApiModelProperty(value = "门禁角色名称")
    private String roleName;
    @ApiModelProperty(value = "是否可拜访人 0否 1是")
    private String canVisit;
    @ApiModelProperty(value = "卡片数")
    private Integer memberCardCount;
    @ApiModelProperty(value = "培训有效期结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date trainTimeEndTime;
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/MemberCardJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.DeviceEvent;
import com.doumee.dao.business.model.MemberCard;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import org.springframework.stereotype.Repository;
/**
 * @author T14
 */
@Repository
public interface MemberCardJoinMapper extends MPJJoinMapper<MemberCard> {
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/ParkBookJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.ParkBook;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import org.springframework.stereotype.Repository;
/**
 * @author T14
 */
@Repository
public interface ParkBookJoinMapper extends MPJJoinMapper<ParkBook> {
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/join/RetentionJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.Retention;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import org.springframework.stereotype.Repository;
/**
 * @author T14
 */
@Repository
public interface RetentionJoinMapper extends MPJJoinMapper<Retention> {
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/DeviceEvent.java
@@ -90,10 +90,12 @@
    @ApiModelProperty(value = "报警输入/防区通道", example = "1")
    @ExcelColumn(name="报警输入/防区通道")
    @TableField("ext_event_alarm_in_id")
    private Integer extEventAlarmInID;
    @ApiModelProperty(value = "报警输出通道", example = "1")
    @ExcelColumn(name="报警输出通道")
    @TableField("ext_event_alarm_out_id")
    private Integer extEventAlarmOutID;
    @ApiModelProperty(value = "卡号")
@@ -102,6 +104,7 @@
    @ApiModelProperty(value = "事件输入通道", example = "1")
    @ExcelColumn(name="事件输入通道")
    @TableField("ext_event_case_id")
    private Integer extEventCaseID;
    @ApiModelProperty(value = "事件类型代码", example = "1")
@@ -110,22 +113,27 @@
    @ApiModelProperty(value = "门编号", example = "1")
    @ExcelColumn(name="门编号")
    @TableField("ext_event_door_id")
    private Integer extEventDoorID;
    @ApiModelProperty(value = "身份证图片URL")
    @ExcelColumn(name="身份证图片URL")
    @TableField("ext_event_idcard_picture_url")
    private String extEventIDCardPictureURL;
    @ApiModelProperty(value = "进出方向 1-进 0-出 -1:未知 è¦æ±‚:进门读卡器拨码设置为1,出门读卡器拨码设置为2", example = "1")
    @ExcelColumn(name="进出方向 1-进 0-出 -1:未知 è¦æ±‚:进门读卡器拨码设置为1,出门读卡器拨码设置为2")
    @TableField("ext_event_in_out")
    private Integer extEventInOut;
    @ApiModelProperty(value = "就地控制器id", example = "1")
    @ExcelColumn(name="就地控制器id")
    @TableField("ext_event_local_controller_id")
    private Integer extEventLocalControllerID;
    @ApiModelProperty(value = "主设备拨码", example = "1")
    @ExcelColumn(name="主设备拨码")
    @TableField("ext_event_main_dev_id")
    private Integer extEventMainDevID;
    @ApiModelProperty(value = "人员编号")
@@ -138,10 +146,12 @@
    @ApiModelProperty(value = "读卡器id", example = "1")
    @ExcelColumn(name="读卡器id")
    @TableField("ext_event_reader_id")
    private Integer extEventReaderID;
    @ApiModelProperty(value = "图片的url")
    @ExcelColumn(name="图片的url")
    @TableField("ext_event_picture_url")
    private String extEventPictureURL;
    @ApiModelProperty(value = "图片存储服务器唯一标识")
@@ -154,15 +164,17 @@
    @ApiModelProperty(value = "群组编号", example = "1")
    @ExcelColumn(name="群组编号")
    @TableField("ext_event_role_id")
    private Integer extEventRoleID;
    @ApiModelProperty(value = "分控制器硬件ID", example = "1")
    @ExcelColumn(name="分控制器硬件ID")
    private Integer extEventSubDevID;
    @TableField("ext_event_eub_dev_id")
    private Integer extEventEubDevID;
    @ApiModelProperty(value = "刷卡次数", example = "1")
    @ExcelColumn(name="刷卡次数")
    private Integer extEventSwipNum;
    private Integer extEventEwipNum;
    @ApiModelProperty(value = "门禁事件类型", example = "1")
    @ExcelColumn(name="门禁事件类型")
@@ -170,10 +182,12 @@
    @ApiModelProperty(value = "多重认证序号", example = "1")
    @ExcelColumn(name="多重认证序号")
    @TableField("ext_event_verify_id")
    private Long extEventVerifyID;
    @ApiModelProperty(value = "白名单单号")
    @ExcelColumn(name="白名单单号")
    @TableField("ext_event_white_list_no")
    private String extEventWhiteListNo;
    @ApiModelProperty(value = "事件上报驱动的时间")
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberCard.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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -21,11 +22,11 @@
public class MemberCard {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ApiModelProperty(value = "主键")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
@@ -34,7 +35,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
@@ -43,7 +44,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ApiModelProperty(value = "是否删除0否 1是")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
@@ -51,9 +52,24 @@
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "用户编码(关联member表)", example = "1")
    @ApiModelProperty(value = "用户编码(关联member表)")
    @ExcelColumn(name="用户编码(关联member表)")
    private Integer memberId;
    @ApiModelProperty(value = "用户编码名称")
    @ExcelColumn(name="用户编码名称")
    @TableField(exist = false)
    private String memberName;
    @ApiModelProperty(value = "用户电话")
    @ExcelColumn(name="用户电话")
    @TableField(exist = false)
    private String memberPhone;
    @ApiModelProperty(value = "公司组织名称")
    @ExcelColumn(name="公司组织名称")
    @TableField(exist = false)
    private String companyName;
    @ApiModelProperty(value = "卡号")
    @ExcelColumn(name="卡号")
@@ -63,11 +79,11 @@
    @ExcelColumn(name="卡密")
    private String passward;
    @ApiModelProperty(value = "海康标识", example = "1")
    @ApiModelProperty(value = "海康标识")
    @ExcelColumn(name="海康标识")
    private String hkId;
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步", example = "1")
    @ApiModelProperty(value = "海康同步状态 0未同步 1已同步")
    @ExcelColumn(name="海康同步状态 0未同步 1已同步")
    private Integer hkStatus;
@@ -76,8 +92,12 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date hkDate;
    @ApiModelProperty(value = "状态 0禁用 1启用", example = "1")
    @ApiModelProperty(value = "状态 0禁用 1启用")
    @ExcelColumn(name="状态 0禁用 1启用")
    private Integer status;
    @ApiModelProperty(value = "关键字")
    @TableField(exist = false)
    private String KeyWords;
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/ProblemLog.java
@@ -1,5 +1,8 @@
package com.doumee.dao.business.model;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.config.mybatis.JSONObjectHandler;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -18,7 +21,7 @@
 */
@Data
@ApiModel("访客答题记录表")
@TableName("`problem_log`")
@TableName(value = "`problem_log`",autoResultMap = true)
public class ProblemLog {
    @TableId(type = IdType.AUTO)
@@ -70,12 +73,18 @@
    @ApiModelProperty(value = "答题明细,json存储")
    @ExcelColumn(name="答题明细,json存储")
    private String content;
    @TableField(value = "content", typeHandler = JSONObjectHandler.class)
    private JSONObject content;
    @ApiModelProperty(value = "答题人姓名")
    @ExcelColumn(name="答题人姓名")
    private String name;
    @ApiModelProperty(value = "类型 0劳务访客 1普通访客  2内部人员")
    @ExcelColumn(name="类型 0劳务访客 1普通访客  2内部人员")
    @TableField(exist = false)
    private Integer type;
    @ApiModelProperty(value = "答题人手机后")
    @ExcelColumn(name="答题人手机后")
    private String phone;
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/Retention.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 io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -21,11 +22,11 @@
public class Retention {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ApiModelProperty(value = "主键")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码", example = "1")
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name="创建人编码")
    private Integer creator;
@@ -34,7 +35,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码", example = "1")
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name="更新人编码")
    private Integer editor;
@@ -43,7 +44,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ApiModelProperty(value = "是否删除0否 1是")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
@@ -51,7 +52,7 @@
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "所属组织编码(关联company表)", example = "1")
    @ApiModelProperty(value = "所属组织编码(关联company表)")
    @ExcelColumn(name="所属组织编码(关联company表)")
    private Integer companyId;
@@ -63,7 +64,7 @@
    @ExcelColumn(name="健康码")
    private String imgurl;
    @ApiModelProperty(value = "类型 0劳务访客 1普通访客 2内部员工", example = "1")
    @ApiModelProperty(value = "类型 0劳务访客 1普通访客 2内部员工")
    @ExcelColumn(name="类型 0劳务访客 1普通访客 2内部员工")
    private Integer type;
@@ -101,7 +102,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date eventDate;
    @ApiModelProperty(value = "访客ID(关联member)", example = "1")
    @ApiModelProperty(value = "访客ID(关联member)")
    @ExcelColumn(name="访客ID(关联member)")
    private Integer memberId;
@@ -109,4 +110,18 @@
    @ExcelColumn(name="事件类型码")
    private String eventCode;
    @ApiModelProperty(value = "公司组织")
    @ExcelColumn(name="公司组织")
    @TableField(exist = false)
    public String companyName;
    @ApiModelProperty(value = "访客用户类型")
    @ExcelColumn(name="访客用户类型")
    @TableField(exist = false)
    private Integer memberType;
    @ApiModelProperty(value = "门禁名称")
    @ExcelColumn(name="门禁名称")
    @TableField(exist = false)
    private String srcName;
}
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/VisitEvent.java
@@ -163,4 +163,8 @@
    @ExcelColumn(name="被访问人所属组织id")
    private String beVisitedPersonOrgId;
    @ApiModelProperty(value = "被访问人所属组织id")
    @ExcelColumn(name="被访问人所属组织id")
    private String idcardDecode;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/CarsService.java
@@ -2,6 +2,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.request.CarsQuery;
import com.doumee.dao.admin.response.CarsDTO;
import com.doumee.dao.business.model.Cars;
import java.util.List;
@@ -14,7 +16,7 @@
    /**
     * åˆ›å»º
     *
     *
     * @param cars å®žä½“对象
     * @return Integer
     */
@@ -78,7 +80,7 @@
     * @return List<Cars>
     */
    List<Cars> findList(Cars cars);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
@@ -94,4 +96,11 @@
     * @return long
     */
    long count(Cars cars);
    /**
     * é•¿æœŸè½¦æŸ¥è¯¢
     * @param pageWrap
     * @return
     */
    PageData<CarsDTO> findCarPage(PageWrap<CarsQuery> pageWrap);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/CompanyService.java
@@ -2,6 +2,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.response.CompanyDTO;
import com.doumee.dao.business.model.Company;
import java.util.List;
@@ -110,4 +111,11 @@
     * @return long
     */
    long count(Company company);
    /**
     * æŸ¥è¯¢éƒ¨é—¨åŠå…¶å­éƒ¨é—¨ä¿¡æ¯
     * @param type 0 æŸ¥è¯¢æ‰€æœ‰ä¿¡æ¯ 1 æŸ¥è¯¢å†…部信息
     * @return
     */
    List<CompanyDTO> findCompanyTreePage(Integer type);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -5,6 +5,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.request.LaborEmpowerDTO;
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.request.MemberQuery;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.web.response.WxAuthorizeVO;
@@ -136,6 +137,14 @@
    void importMemberBatch(LaborEmpowerDTO laborEmpowerDTO);
    /**
     *
     * åˆ†é¡µæŸ¥è¯¢å†…部人员信息
     * @param pageWrap
     * @return
     */
    PageData<MemberInfoDTO> findMemberInfoPage(PageWrap<MemberQuery> pageWrap);
    /********************************************公众号接口***********************************************************************/
server/dmvisit_service/src/main/java/com/doumee/service/business/ProblemsService.java
@@ -2,6 +2,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.response.ProblemDTO;
import com.doumee.dao.business.model.Problems;
import com.doumee.dao.web.response.ProblemsVO;
@@ -110,5 +111,5 @@
     * @param useType
     * @return
     */
    List<Problems> findListByUseType(Integer useType);
    List<ProblemDTO> findListByUseType(Integer useType);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/RetentionService.java
@@ -2,7 +2,10 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.request.RetentionQuery;
import com.doumee.dao.business.model.Retention;
import com.doumee.dao.business.model.TrainTime;
import java.util.List;
/**
@@ -14,7 +17,7 @@
    /**
     * åˆ›å»º
     *
     *
     * @param retention å®žä½“对象
     * @return Integer
     */
@@ -78,7 +81,7 @@
     * @return List<Retention>
     */
    List<Retention> findList(Retention retention);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
@@ -94,4 +97,7 @@
     * @return long
     */
    long count(Retention retention);
    PageData<Retention> findTrainTimePage(PageWrap<RetentionQuery> pageWrap);
}
server/dmvisit_service/src/main/java/com/doumee/service/business/TrainTimeService.java
@@ -2,6 +2,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.request.RetentionQuery;
import com.doumee.dao.business.model.TrainTime;
import java.util.List;
@@ -14,7 +15,7 @@
    /**
     * åˆ›å»º
     *
     *
     * @param trainTime å®žä½“对象
     * @return Integer
     */
@@ -78,7 +79,7 @@
     * @return List<TrainTime>
     */
    List<TrainTime> findList(TrainTime trainTime);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java
@@ -3,13 +3,17 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.CarsQuery;
import com.doumee.dao.admin.response.CarsDTO;
import com.doumee.dao.business.CarsMapper;
import com.doumee.dao.business.model.Cars;
import com.doumee.dao.business.join.ParkBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.CarsService;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -26,6 +30,9 @@
    @Autowired
    private CarsMapper carsMapper;
    @Autowired
    private ParkBookJoinMapper parkBookJoinMapper;
    @Override
    public Integer create(Cars cars) {
@@ -83,7 +90,7 @@
        QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars);
        return carsMapper.selectList(wrapper);
    }
    @Override
    public PageData<Cars> findPage(PageWrap<Cars> pageWrap) {
        IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -161,4 +168,30 @@
        QueryWrapper<Cars> wrapper = new QueryWrapper<>(cars);
        return carsMapper.selectCount(wrapper);
    }
    @Override
    public PageData<CarsDTO> findCarPage(PageWrap<CarsQuery> pageWrap) {
        MPJLambdaWrapper<ParkBook> wrapper = new MPJLambdaWrapper<>();
        IPage<Cars> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        Utils.MP.blankToNull(pageWrap.getModel());
        wrapper.leftJoin(Member.class,Member::getId,ParkBook::getMemberId)
                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .leftJoin(Parks.class,Parks::getId,ParkBook::getParkId);
        wrapper.selectAs(ParkBook::getCarCode,CarsDTO::getCode)
                .selectAs(ParkBook::getParkId,CarsDTO::getParkId)
                .selectAs(ParkBook::getRemark,CarsDTO::getRemark)
                .selectAs(Parks::getName,CarsDTO::getParkName)
                .selectAs(ParkBook::getMemberId,CarsDTO::getMemberId)
                .selectAs(Member::getName,CarsDTO::getMemberName)
                .selectAs(Member::getType,CarsDTO::getMemberType)
                .selectAs(Company::getName,CarsDTO::getCompanyName)
                .selectAs(ParkBook::getTimeType,CarsDTO::getTimeType)
                .selectAs(ParkBook::getStartTime,CarsDTO::getStartTime)
                .selectAs(ParkBook::getEndTime,CarsDTO::getEndTime)
                .selectAs(ParkBook::getCreateDate,CarsDTO::getCreateDate);
        wrapper.orderByDesc(ParkBook::getCreateDate);
        IPage<CarsDTO> carsDTOIPage = parkBookJoinMapper.selectJoinPage(page, CarsDTO.class, wrapper);
        return PageData.from(carsDTOIPage);
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -1,5 +1,7 @@
package com.doumee.service.business.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -7,6 +9,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.response.CompanyDTO;
import com.doumee.dao.business.CompanyMapper;
import com.doumee.dao.business.join.CompanyJoinMapper;
import com.doumee.dao.business.model.Category;
@@ -18,13 +21,18 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.collections.CollectionUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * ä¼ä¸šä¿¡æ¯è¡¨Service实现
@@ -245,6 +253,41 @@
        return companyMapper.selectCount(wrapper);
    }
    @Override
    public List<CompanyDTO> findCompanyTreePage(Integer type) {
        LambdaQueryWrapper<Company> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Company::getIsdeleted,Constants.ZERO)
                .eq(Constants.equalsInteger(type,Constants.ONE),Company::getType,type);
        List<Company> companies = companyMapper.selectList(wrapper);
        return getCompanyTree( companies, null);
    }
    private List<CompanyDTO> getCompanyTree(List<Company> companies, Integer parentId){
        if (CollectionUtils.isEmpty(companies)){
            return null;
        }
        List<Company> collect = companies.stream()
                                        .filter(s -> Constants.equalsInteger(s.getParentId(), parentId))
                                        .collect(Collectors.toList());
        if (CollectionUtils.isEmpty(companies)){
            return null;
        }
        List<CompanyDTO> companyDTOList = new ArrayList<>();
        for (int i = 0; i < collect.size(); i++) {
            Company company = collect.get(i);
            CompanyDTO companyDTO = new CompanyDTO();
            BeanUtils.copyProperties(company,companyDTO);
            companyDTO.setCompanyDTOList(getCompanyTree(companies, company.getId()));
            companyDTOList.add(companyDTO);
        }
        return companyDTOList;
    }
    /**
     * åŠ³åŠ¡å…¬å¸å”¯ä¸€æ€§æ ¡éªŒ
     * @param company
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/DeviceEventServiceImpl.java
@@ -206,11 +206,11 @@
        if (pageWrap.getModel().getExtEventRoleID() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getExtEventRoleID, pageWrap.getModel().getExtEventRoleID());
        }
        if (pageWrap.getModel().getExtEventSubDevID() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getExtEventSubDevID, pageWrap.getModel().getExtEventSubDevID());
        if (pageWrap.getModel().getExtEventEubDevID() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getExtEventEubDevID, pageWrap.getModel().getExtEventEubDevID());
        }
        if (pageWrap.getModel().getExtEventSwipNum() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getExtEventSwipNum, pageWrap.getModel().getExtEventSwipNum());
        if (pageWrap.getModel().getExtEventEwipNum() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getExtEventEwipNum, pageWrap.getModel().getExtEventEwipNum());
        }
        if (pageWrap.getModel().getExtEventType() != null) {
            queryWrapper.lambda().eq(DeviceEvent::getExtEventType, pageWrap.getModel().getExtEventType());
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java
@@ -1,20 +1,28 @@
package com.doumee.service.business.impl;
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ReUtil;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.MemberCardMapper;
import com.doumee.dao.business.join.MemberCardJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.MemberCard;
import com.doumee.service.business.MemberCardService;
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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
 * ç”¨æˆ·å¡ç‰‡ç»‘定信息表Service实现
@@ -26,6 +34,9 @@
    @Autowired
    private MemberCardMapper memberCardMapper;
    @Autowired
    private MemberCardJoinMapper memberCardJoinMapper;
    @Override
    public Integer create(MemberCard memberCard) {
@@ -83,65 +94,79 @@
        QueryWrapper<MemberCard> wrapper = new QueryWrapper<>(memberCard);
        return memberCardMapper.selectList(wrapper);
    }
    @Override
    public PageData<MemberCard> findPage(PageWrap<MemberCard> pageWrap) {
        IPage<MemberCard> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<MemberCard> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<MemberCard> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(MemberCard::getId, pageWrap.getModel().getId());
            queryWrapper.eq(MemberCard::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(MemberCard::getCreator, pageWrap.getModel().getCreator());
            queryWrapper.eq(MemberCard::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(MemberCard::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(MemberCard::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
            queryWrapper.ge(MemberCard::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.le(MemberCard::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(MemberCard::getEditor, pageWrap.getModel().getEditor());
            queryWrapper.eq(MemberCard::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(MemberCard::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(MemberCard::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
            queryWrapper.ge(MemberCard::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.le(MemberCard::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(MemberCard::getIsdeleted, pageWrap.getModel().getIsdeleted());
            queryWrapper.eq(MemberCard::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(MemberCard::getRemark, pageWrap.getModel().getRemark());
            queryWrapper.eq(MemberCard::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getMemberId() != null) {
            queryWrapper.lambda().eq(MemberCard::getMemberId, pageWrap.getModel().getMemberId());
            queryWrapper.eq(MemberCard::getMemberId, pageWrap.getModel().getMemberId());
        }
        if (pageWrap.getModel().getCode() != null) {
            queryWrapper.lambda().eq(MemberCard::getCode, pageWrap.getModel().getCode());
            queryWrapper.eq(MemberCard::getCode, pageWrap.getModel().getCode());
        }
        if (pageWrap.getModel().getPassward() != null) {
            queryWrapper.lambda().eq(MemberCard::getPassward, pageWrap.getModel().getPassward());
            queryWrapper.eq(MemberCard::getPassward, pageWrap.getModel().getPassward());
        }
        if (pageWrap.getModel().getHkId() != null) {
            queryWrapper.lambda().eq(MemberCard::getHkId, pageWrap.getModel().getHkId());
            queryWrapper.eq(MemberCard::getHkId, pageWrap.getModel().getHkId());
        }
        if (pageWrap.getModel().getHkStatus() != null) {
            queryWrapper.lambda().eq(MemberCard::getHkStatus, pageWrap.getModel().getHkStatus());
            queryWrapper.eq(MemberCard::getHkStatus, pageWrap.getModel().getHkStatus());
        }
        if (pageWrap.getModel().getHkDate() != null) {
            queryWrapper.lambda().ge(MemberCard::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()));
            queryWrapper.lambda().le(MemberCard::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()));
            queryWrapper.ge(MemberCard::getHkDate, Utils.Date.getStart(pageWrap.getModel().getHkDate()));
            queryWrapper.le(MemberCard::getHkDate, Utils.Date.getEnd(pageWrap.getModel().getHkDate()));
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(MemberCard::getStatus, pageWrap.getModel().getStatus());
            queryWrapper.eq(MemberCard::getStatus, pageWrap.getModel().getStatus());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(memberCardMapper.selectPage(page, queryWrapper));
        queryWrapper.orderByDesc(MemberCard::getCreateDate);
        //是否是数字
        boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords());
        //是否包含中文
        boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords());
        //是否包含英文
        boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords());
        queryWrapper.leftJoin(Member.class,Member::getId,MemberCard::getMemberId)
                    .leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.selectAll(MemberCard.class)
                    .selectAs(Member::getName,MemberCard::getMemberName)
                    .selectAs(Member::getPhone,MemberCard::getMemberPhone)
                    .selectAs(Company::getName,MemberCard::getCompanyName);
        queryWrapper.like(Objects.nonNull(pageWrap.getModel().getCode()),MemberCard::getCode,pageWrap.getModel().getCode())
                    .eq(Objects.nonNull(pageWrap.getModel().getStatus()),MemberCard::getStatus,pageWrap.getModel().getStatus())
                    .eq(Objects.nonNull(pageWrap.getModel().getStatus()),MemberCard::getStatus,pageWrap.getModel().getStatus())
                    .like(number,Member::getPhone,pageWrap.getModel().getKeyWords())
                    .like((b||hasWord),Member::getName,pageWrap.getModel().getKeyWords());
        IPage<MemberCard> memberCardIPage = memberCardJoinMapper.selectJoinPage(page, MemberCard.class,queryWrapper);
        return PageData.from(memberCardIPage);
    }
    @Override
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2,8 +2,11 @@
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.core.util.ReUtil;
import com.alibaba.fastjson.JSONObject;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.Jwt.JwtPayLoad;
@@ -20,14 +23,12 @@
import com.doumee.core.wx.WXConstant;
import com.doumee.dao.admin.request.LaborEmpowerDTO;
import com.doumee.dao.admin.request.LaborMemberDTO;
import com.doumee.dao.admin.request.MemberQuery;
import com.doumee.dao.admin.response.MemberInfoDTO;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.TrainTimeMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.Empower;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.TrainTime;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.response.WxAuthorizeVO;
import com.doumee.service.business.MemberService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -383,8 +384,43 @@
    }
    @Override
    public PageData<MemberInfoDTO> findMemberInfoPage(PageWrap<MemberQuery> pageWrap) {
        //是否是数字
        boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords());
        //是否包含中文
        boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords());
        //是否包含英文
        boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords());
        IPage<Member> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Member> queryWrapper = new MPJLambdaWrapper<>();
        MemberQuery model = pageWrap.getModel();
        Utils.MP.blankToNull(model);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .leftJoin(DeviceRole.class,DeviceRole::getId,Member::getRoleId)
                .leftJoin(MemberCard.class,MemberCard::getMemberId,Member::getId);
        queryWrapper.selectAll(Member.class)
                .selectAs(Company::getName,MemberInfoDTO::getCompanyName)
                .selectAs(DeviceRole::getName,MemberInfoDTO::getRoleName)
                .select("count(t3.id) as memberCardCount ");
        queryWrapper.in(Objects.nonNull(model.getCompanyIds()),Member::getCompanyId,model.getCompanyIds())
                    .like(number,Member::getPhone,model.getKeyWords())
                    .like((b||hasWord),Member::getPhone,model.getKeyWords())
                    .isNull(Constants.equalsInteger(model.getHasFace(),Constants.ZERO),Member::getFaceId)
                    .isNotNull(Constants.equalsInteger(model.getHasFace(),Constants.ONE),Member::getFaceId)
                    .eq(Objects.nonNull(model.getCanVisit()),Member::getCanVisit,model.getCanVisit())
                    .eq(Objects.nonNull(model.getStatus()),Member::getStatus,model.getStatus());
        IPage<MemberInfoDTO> memberIPage = memberJoinMapper.selectJoinPage(page, MemberInfoDTO.class,queryWrapper);
        if (!CollectionUtils.isEmpty(memberIPage.getRecords())){
            memberIPage.getRecords().forEach(s->s.setSex(IdcardUtil.getGenderByIdCard(s.getIdcardDecode())));
        }
        return PageData.from(memberIPage);
    }
    /********************************************公众号接口***********************************************************************/
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ProblemLogServiceImpl.java
@@ -102,7 +102,7 @@
        QueryWrapper<ProblemLog> wrapper = new QueryWrapper<>(problemLog);
        return problemLogMapper.selectList(wrapper);
    }
    @Override
    public PageData<ProblemLog> findPage(PageWrap<ProblemLog> pageWrap) {
        IPage<ProblemLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -161,13 +161,8 @@
        if (pageWrap.getModel().getOpenid() != null) {
            queryWrapper.lambda().eq(ProblemLog::getOpenid, pageWrap.getModel().getOpenid());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        queryWrapper.select("problem_log.*,(select type from member where member.openid = problem_log.openid) as type");
        queryWrapper.orderByAsc("problem_log.createDate");
        return PageData.from(problemLogMapper.selectPage(page, queryWrapper));
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/ProblemsServiceImpl.java
@@ -1,9 +1,13 @@
package com.doumee.service.business.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.admin.response.ProblemDTO;
import com.doumee.dao.business.ProblemsMapper;
import com.doumee.dao.business.model.Problems;
import com.doumee.dao.web.response.ProblemsVO;
@@ -13,12 +17,16 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.BeanUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
 * è¯•题信息表Service实现
@@ -33,8 +41,24 @@
    @Override
    public Integer create(Problems problems) {
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Problems insert = new Problems();
        insert.setCreator(loginUserInfo.getId());
        insert.setCreateDate(new Date());
        insert.setEditor(loginUserInfo.getId());
        insert.setEditDate(new Date());
        insert.setIsdeleted(Constants.ZERO);
        insert.setRemark(problems.getRemark());
        insert.setTitle(problems.getTitle());
        insert.setOptions(problems.getOptions());
        insert.setAnswer(problems.getAnswer());
        insert.setSortnu(problems.getSortnu());
        insert.setType(problems.getType());
        insert.setScore(problems.getScore());
        insert.setUseType(problems.getUseType());
        problemsMapper.insert(problems);
        return problems.getId();
        return insert.getId();
    }
    @Override
@@ -58,7 +82,19 @@
    @Override
    public void updateById(Problems problems) {
        problemsMapper.updateById(problems);
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        Problems update = new Problems();
        update.setId(problems.getId());
        update.setEditor(loginUserInfo.getId());
        update.setEditDate(new Date());
        update.setTitle(problems.getTitle());
        update.setOptions(problems.getOptions());
        update.setAnswer(problems.getAnswer());
        update.setSortnu(problems.getSortnu());
        update.setType(problems.getType());
        update.setScore(problems.getScore());
        update.setUseType(problems.getUseType());
        problemsMapper.updateById(update);
    }
    @Override
@@ -117,7 +153,7 @@
            queryWrapper.lambda().eq(Problems::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(Problems::getTitle, pageWrap.getModel().getTitle());
            queryWrapper.lambda().like(Problems::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getOptions() != null) {
            queryWrapper.lambda().eq(Problems::getOptions, pageWrap.getModel().getOptions());
@@ -137,7 +173,7 @@
        if (pageWrap.getModel().getUseType() != null) {
            queryWrapper.lambda().eq(Problems::getUseType, pageWrap.getModel().getUseType());
        }
        queryWrapper.lambda().orderByAsc(Problems::getCreateDate);
        queryWrapper.lambda().orderByAsc(Problems::getSortnu);
        queryWrapper.select("problems.*, (select REALNAME from system_user where system_user.id = problems.CREATOR) as creatorName");
        return PageData.from(problemsMapper.selectPage(page, queryWrapper));
    }
@@ -149,9 +185,22 @@
    }
    @Override
    public List<Problems> findListByUseType(Integer useType) {
    public List<ProblemDTO> findListByUseType(Integer useType) {
        LambdaQueryWrapper<Problems> wrapper = new LambdaQueryWrapper<>();
        return null;
        wrapper.eq(Problems::getIsdeleted, Constants.ZERO)
                .eq(Problems::getUseType, useType)
                .orderByAsc(Problems::getSortnu);
        List<Problems> problems = problemsMapper.selectList(wrapper);
        List<ProblemDTO> collect = problems.stream().map(s -> {
            ProblemDTO dto = new ProblemDTO();
            BeanUtils.copyProperties(dto, s);
            return dto;
        }).collect(Collectors.toList());
        return collect;
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/RetentionServiceImpl.java
@@ -1,20 +1,28 @@
package com.doumee.service.business.impl;
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ReUtil;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.request.RetentionQuery;
import com.doumee.dao.business.RetentionMapper;
import com.doumee.dao.business.model.Retention;
import com.doumee.dao.business.join.RetentionJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.RetentionService;
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实现
@@ -26,6 +34,10 @@
    @Autowired
    private RetentionMapper retentionMapper;
    @Autowired
    private RetentionJoinMapper retentionJoinMapper;
    @Override
    public Integer create(Retention retention) {
@@ -83,7 +95,7 @@
        QueryWrapper<Retention> wrapper = new QueryWrapper<>(retention);
        return retentionMapper.selectList(wrapper);
    }
    @Override
    public PageData<Retention> findPage(PageWrap<Retention> pageWrap) {
        IPage<Retention> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -171,4 +183,43 @@
        QueryWrapper<Retention> wrapper = new QueryWrapper<>(retention);
        return retentionMapper.selectCount(wrapper);
    }
    @Override
    public PageData<Retention> findTrainTimePage(PageWrap<RetentionQuery> pageWrap) {
        //是否是数字
        boolean number = Validator.isNumber(pageWrap.getModel().getKeyWords());
        //是否包含中文
        boolean b = Validator.hasChinese(pageWrap.getModel().getKeyWords());
        //是否包含英文
        boolean hasWord = ReUtil.contains(PatternPool.WORD, pageWrap.getModel().getKeyWords());
        IPage<Retention> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Retention> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        queryWrapper.leftJoin(Company.class,Company::getId,Retention::getId)
                    .leftJoin(Member.class,Member::getId,Retention::getMemberId)
                    .leftJoin(DeviceEvent.class,DeviceEvent::getEventId,Retention::getEventCode);
        queryWrapper.selectAll(Retention.class)
                    .selectAs(Company::getName,Retention::getCompanyName)
                    .selectAs(Member::getType,Retention::getMemberType)
                    .selectAs(DeviceEvent::getSrcName,Retention::getSrcName);
        queryWrapper.like(number,Member::getPhone,pageWrap.getModel().getKeyWords())
                    .like((b||hasWord),Member::getName,pageWrap.getModel().getKeyWords())
                    .eq(Objects.nonNull(pageWrap.getModel().getType()),
                            Member::getType,
                            pageWrap.getModel().getType())
                    .like(StringUtils.isNotBlank(pageWrap.getModel().getCompanyName()),
                            Company::getName,
                            pageWrap.getModel().getCompanyName())
                    .ge(Objects.nonNull(pageWrap.getModel().getStartTime()),
                            Retention::getEventDate,
                            Utils.Date.getStart(pageWrap.getModel().getStartTime()))
                    .le(Objects.nonNull(pageWrap.getModel().getEndTime()),
                            Retention::getEventDate,
                            Utils.Date.getDayEnd(pageWrap.getModel().getEndTime()));
        queryWrapper.orderByDesc(Retention::getCreateDate);
        IPage<Retention> retentionIPage = retentionJoinMapper.selectJoinPage(page, Retention.class, queryWrapper);
        return PageData.from(retentionIPage);
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java
@@ -27,6 +27,8 @@
    @Autowired
    private TrainTimeMapper trainTimeMapper;
    @Override
    public Integer create(TrainTime trainTime) {
        trainTimeMapper.insert(trainTime);
@@ -83,7 +85,7 @@
        QueryWrapper<TrainTime> wrapper = new QueryWrapper<>(trainTime);
        return trainTimeMapper.selectList(wrapper);
    }
    @Override
    public PageData<TrainTime> findPage(PageWrap<TrainTime> pageWrap) {
        IPage<TrainTime> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -142,4 +144,6 @@
        QueryWrapper<TrainTime> wrapper = new QueryWrapper<>(trainTime);
        return trainTimeMapper.selectCount(wrapper);
    }
}
server/dmvisit_service/src/main/java/com/doumee/service/system/SystemDictDataService.java
@@ -2,6 +2,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.request.LaborConfigDTO;
import com.doumee.dao.admin.request.VisitConfigDTO;
import com.doumee.dao.system.dto.QuerySystemDictDataDTO;
import com.doumee.dao.system.model.SystemDictData;
import com.doumee.dao.system.vo.SystemDictDataListVO;
@@ -70,7 +72,7 @@
     * @date 2023/03/21 14:49
     */
    List<SystemDictData> findList(SystemDictData systemDictData);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     * @author Eva.Caesar Liu
@@ -96,5 +98,28 @@
    List<SystemDictData> findList(Integer dicId,List<String> codes);
    /**
     * è®¿å®¢æ¥è®¿é…ç½®
     * @return
     */
    VisitConfigDTO getVisitConfigDTO();
    /**
     * ä¿®æ”¹è®¿å®¢æ¥è®¿é…ç½®
     * @param miniProgrammeDTO
     */
    void updateVisitConfig(VisitConfigDTO miniProgrammeDTO);
    /**
     * åŠ³åŠ¡æ¥è®¿é…ç½®
     * @return
     */
    LaborConfigDTO getLaborConfigDTO();
    /**
     * ä¿®æ”¹åŠ³åŠ¡æ¥è®¿é…ç½®
     * @param miniProgrammeDTO
     */
    void updateLaborConfigDTO(LaborConfigDTO miniProgrammeDTO);
}
server/dmvisit_service/src/main/java/com/doumee/service/system/impl/SystemDictDataServiceImpl.java
@@ -1,9 +1,15 @@
package com.doumee.service.system.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.Constants;
import com.doumee.dao.admin.request.LaborConfigDTO;
import com.doumee.dao.admin.request.VisitConfigDTO;
import com.doumee.dao.system.SystemDictMapper;
import com.doumee.dao.system.model.SystemDict;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.doumee.core.model.PageData;
@@ -22,6 +28,7 @@
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
 * å­—典数据Service实现
@@ -34,6 +41,8 @@
    @Autowired
    private SystemDictDataMapper systemDictDataMapper;
    @Autowired
    private SystemDictMapper systemDictMapper;
    @Override
    public Integer create(SystemDictData systemDictData) {
        systemDictDataMapper.insert(systemDictData);
@@ -91,7 +100,7 @@
        Wrapper<SystemDictData> wrapper = new QueryWrapper<>(systemDictData);
        return systemDictDataMapper.selectList(wrapper);
    }
    @Override
    public PageData<SystemDictDataListVO> findPage(PageWrap<QuerySystemDictDataDTO> pageWrap) {
        PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
@@ -112,4 +121,132 @@
                .in(SystemDictData::getLabel,codes);
        return systemDictDataMapper.selectList(wrapper);
    }
    @Override
    public VisitConfigDTO getVisitConfigDTO() {
        try {
            String jasonStr = Constants.toUnderlineJSONString(new VisitConfigDTO());
            JSONObject parse = (JSONObject) JSONObject.parse(jasonStr);
            List<String> collect = parse.entrySet().stream().map(s -> s.getKey().toUpperCase()).collect(Collectors.toList());
            QueryWrapper<SystemDict> systemDictQuery = new QueryWrapper<>();
            systemDictQuery.lambda()
                            .eq(SystemDict::getDeleted,Boolean.FALSE)
                            .eq(SystemDict::getCode,Constants.VISIT_CONFIG);
            SystemDict systemDict = systemDictMapper.selectOne(systemDictQuery);
            if (Objects.isNull(systemDict)){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
            }
            QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>();
            wrapper.lambda()
                    .eq(SystemDictData::getDictId,systemDict.getId())
                    .in(SystemDictData::getLabel,collect);
            List<SystemDictData> systemDictData = systemDictDataMapper.selectList(wrapper);
            if (CollectionUtils.isEmpty(systemDictData)){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典值不存在");
            }
            systemDictData.forEach(s->{
                parse.put(s.getLabel().toLowerCase(),s.getCode());
            });
            String s = parse.toJSONString();
            VisitConfigDTO miniProgrammeDTO = Constants.toSnakeObject(s, VisitConfigDTO.class);
            return miniProgrammeDTO;
        } catch (Exception e) {
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"字典值解析有误");
        }
    }
    @Override
    public void updateVisitConfig(VisitConfigDTO miniProgrammeDTO) {
        try {
            QueryWrapper<SystemDict> systemDictQuery = new QueryWrapper<>();
            systemDictQuery.lambda()
                    .eq(SystemDict::getDeleted,Boolean.FALSE)
                    .eq(SystemDict::getCode,Constants.VISIT_CONFIG);
            SystemDict systemDict = systemDictMapper.selectOne(systemDictQuery);
            if (Objects.isNull(systemDict)){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
            }
            String jasonStr = Constants.toUnderlineJSONString(miniProgrammeDTO);
            JSONObject parse = (JSONObject) JSONObject.parse(jasonStr);
            parse.entrySet().forEach(s->{
                UpdateWrapper<SystemDictData> wrapper = new UpdateWrapper<>();
                wrapper.lambda()
                        .eq(SystemDictData::getDictId,systemDict.getId())
                        .eq(SystemDictData::getLabel,s.getKey().toUpperCase())
                        .set(SystemDictData::getCode,s.getValue());
                systemDictDataMapper.update(null,wrapper);
            });
        } catch (JsonProcessingException e) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"字典值解析有误");
        }
    }
    @Override
    public LaborConfigDTO getLaborConfigDTO() {
        try {
            String jasonStr = Constants.toUnderlineJSONString(new LaborConfigDTO());
            JSONObject parse = (JSONObject) JSONObject.parse(jasonStr);
            List<String> collect = parse.entrySet().stream().map(s -> s.getKey().toUpperCase()).collect(Collectors.toList());
            QueryWrapper<SystemDict> systemDictQuery = new QueryWrapper<>();
            systemDictQuery.lambda()
                    .eq(SystemDict::getDeleted,Boolean.FALSE)
                    .eq(SystemDict::getCode,Constants.LABOR_CONFIG);
            SystemDict systemDict = systemDictMapper.selectOne(systemDictQuery);
            if (Objects.isNull(systemDict)){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
            }
            QueryWrapper<SystemDictData> wrapper = new QueryWrapper<>();
            wrapper.lambda()
                    .eq(SystemDictData::getDictId,systemDict.getId())
                    .in(SystemDictData::getLabel,collect);
            List<SystemDictData> systemDictData = systemDictDataMapper.selectList(wrapper);
            if (CollectionUtils.isEmpty(systemDictData)){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典值不存在");
            }
            systemDictData.forEach(s->{
                parse.put(s.getLabel().toLowerCase(),s.getCode());
            });
            String s = parse.toJSONString();
            LaborConfigDTO miniProgrammeDTO = Constants.toSnakeObject(s, LaborConfigDTO.class);
            return miniProgrammeDTO;
        } catch (Exception e) {
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"字典值解析有误");
        }
    }
    @Override
    public void updateLaborConfigDTO(LaborConfigDTO miniProgrammeDTO) {
        try {
            QueryWrapper<SystemDict> systemDictQuery = new QueryWrapper<>();
            systemDictQuery.lambda()
                    .eq(SystemDict::getDeleted,Boolean.FALSE)
                    .eq(SystemDict::getCode,Constants.VISIT_CONFIG);
            SystemDict systemDict = systemDictMapper.selectOne(systemDictQuery);
            if (Objects.isNull(systemDict)){
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"字典不存在");
            }
            String jasonStr = Constants.toUnderlineJSONString(miniProgrammeDTO);
            JSONObject parse = (JSONObject) JSONObject.parse(jasonStr);
            parse.entrySet().forEach(s->{
                UpdateWrapper<SystemDictData> wrapper = new UpdateWrapper<>();
                wrapper.lambda()
                        .eq(SystemDictData::getDictId,systemDict.getId())
                        .eq(SystemDictData::getLabel,s.getKey().toUpperCase())
                        .set(SystemDictData::getCode,s.getValue());
                systemDictDataMapper.update(null,wrapper);
            });
        } catch (JsonProcessingException e) {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"字典值解析有误");
        }
    }
}