liukangdong
2024-10-18 a2746876e81443d52bc4cb6f35bf8554741a6b4c
Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
已添加7个文件
已修改22个文件
862 ■■■■■ 文件已修改
admin/src/views/business/carEvent.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/deviceEvent.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/relativeMember.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/system/permission.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/api/BaseController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WxNoticeConfigController.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WxNoticeConfigMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WxNoticeConfig.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WxNoticeConfigService.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WxNoticeConfigServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/business/carEvent.vue
@@ -20,10 +20,10 @@
      </el-form-item>
      <el-form-item label="事件类型" prop="eventType">
        <el-select v-model="searchForm.eventType" placeholder="请选择">
          <el-option label="在园压线事件" value="771760130"></el-option>
          <el-option label="在园放行事件" value="771760131"></el-option>
          <el-option label="离园压线事件" value="771760133"></el-option>
          <el-option label="离园放行事件" value="771760134"></el-option>
          <el-option label="入场压线事件" value="771760130"></el-option>
          <el-option label="入场放行事件" value="771760131"></el-option>
          <el-option label="出场压线事件" value="771760133"></el-option>
          <el-option label="出场放行事件" value="771760134"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="起始时间" prop="eventType">
admin/src/views/business/deviceEvent.vue
@@ -77,7 +77,7 @@
        </el-table-column>
        <el-table-column label="抓拍照片" min-width="100px">
          <template slot-scope="{row}">
            <el-image style="width: 80px; height: 80px" :src="row.extEventPictureURL"
            <el-image v-if="row.extEventPictureURL" style="width: 80px; height: 80px" :src="row.extEventPictureURL"
              :preview-src-list="[row.extEventPictureURL]">
            </el-image>
          </template>
admin/src/views/business/relativeMember.vue
@@ -37,9 +37,9 @@
          <el-option label="同步失败" value="2"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="">
<!--      <el-form-item label="">
        <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1">是否包含下级组织</el-checkbox>
      </el-form-item>
      </el-form-item>-->
      <section>
        <el-button type="primary" @click="search">搜索</el-button>
        <el-button @click="reset">重置</el-button>
@@ -71,8 +71,14 @@
            icon="el-icon-plus" v-permissions="['business:traintime:create']">培训期导入</el-button></li>
        <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete"
            v-permissions="['business:member:delete']">批量删除</el-button></li>
        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">下发授权</el-button></li>
        <li><el-button type="primary" v-permissions="['business:empower:create']" @click="startEmpowerBatch()">下发授权</el-button>
        <li style="float: right">
          <el-checkbox style="font-size: 12px" label="1" v-model="searchForm.includeChild" key="1"
                       @change="search">是否包含下级组织</el-checkbox>
        </li>
<!--
        <li><el-button type="primary" v-permissions="['business:empower:exportExcel']" @click="exportExcel">导出</el-button></li>
-->
      </ul>
      <el-table v-loading="isWorking.search" :data="tableData.list" stripe @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55"></el-table-column>
admin/src/views/system/permission.vue
@@ -29,8 +29,8 @@
      >
        <el-table-column type="selection" fixed="left" width="55"></el-table-column>
        <el-table-column prop="code" label="权限编码" fixed="left" min-width="200px"></el-table-column>
        <el-table-column prop="name" label="权限名称" fixed="left" min-width="120px"></el-table-column>
        <el-table-column prop="remark" label="权限备注" min-width="120px"></el-table-column>
        <el-table-column prop="name" label="权限名称" fixed="left" min-width="200px"></el-table-column>
        <el-table-column prop="remark" label="权限备注" min-width="200px"></el-table-column>
        <el-table-column prop="createUser" label="创建人" min-width="100px">
          <template slot-scope="{row}">{{row.createUserInfo == null ? '' : row.createUserInfo.username}}</template>
        </el-table-column>
server/system_gateway/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: dev
    active: pro
  application:
    name: system_gateway
  # å®‰å…¨é…ç½®
server/system_service/src/main/java/com/doumee/api/BaseController.java
@@ -1,6 +1,7 @@
package com.doumee.api;
import com.alibaba.fastjson.JSONObject;
import com.doumee.config.jwt.JwtProperties;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -13,9 +14,11 @@
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
 * Controller基类
@@ -27,6 +30,8 @@
    @Autowired
    private RedisTemplate<String,Object> stringRedisTemplate;
    @Resource
    private JwtProperties jwtProperties;
    /**
     * èŽ·å–å½“å‰ç™»å½•ç”¨æˆ·
     * @author Eva.Caesar Liu
@@ -47,6 +52,9 @@
        }
        return  user;
    }
    public void updateLoginUser (String token,LoginUserInfo userInfo) {
        stringRedisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(userInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
    }
    /**
server/system_service/src/main/java/com/doumee/api/cloud/SystemCloudController.java
@@ -4,6 +4,7 @@
import com.doumee.biz.system.SystemUserBiz;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.dao.system.dto.UpdatePwdDto;
import com.doumee.service.system.SystemLoginService;
@@ -35,8 +36,11 @@
    @ApiOperation("修改当前用户密码")
    @PostMapping("/updatePwd")
    public ApiResponse updatePwd (@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @Validated @RequestBody UpdatePwdDto dto) {
        dto.setUserId(this.getLoginUser(token).getId());
        LoginUserInfo userInfo = this.getLoginUser(token);
        dto.setUserId(userInfo.getId());
        systemUserBiz.updatePwd(dto);
        userInfo.setNeedChangePwd(Constants.ONE);
        updateLoginUser(token,userInfo);//更新登录token中绑定的用户信息为已更新密码
        return ApiResponse.success(null);
    }
server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -9,6 +9,7 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.PwdCheckUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.system.SystemDepartmentUserMapper;
import com.doumee.dao.system.dto.*;
@@ -81,6 +82,13 @@
    @Override
    public void updatePwd(UpdatePwdDto dto) {
        //登录密码复杂度校验:6-20个字符,至少包含字母、数字及特殊字符2种
        if(StringUtils.isBlank(dto.getNewPwd())
                ||dto.getNewPwd().length()>20
                ||dto.getNewPwd().length()<6
                ||PwdCheckUtil.checkPassword(dto.getNewPwd())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,密码复杂度不满足要求:6-20个字符,至少包含字母、数字及特殊字符2种");
        }
        SystemUser user = systemUserService.findById(dto.getUserId());
        if (user.getDeleted()) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "用户不存在或已被删除");
@@ -93,6 +101,7 @@
        SystemUser newUser = new SystemUser();
        newUser.setId(dto.getUserId());
        newUser.setPassword(Utils.Secure.encryptPassword(dto.getNewPwd(), user.getSalt()));
        newUser.setNeedChangePwd(Constants.ONE);
        systemUserService.updateById(newUser);
    }
@@ -108,6 +117,7 @@
        updateUserDto.setId(dto.getId());
        updateUserDto.setUpdateUser(dto.getOperaUserId());
        updateUserDto.setPassword(Utils.Secure.encryptPassword(dto.getPassword(), systemUser.getSalt()));
        updateUserDto.setNeedChangePwd(Constants.ZERO);
        systemUserService.updateById(updateUserDto);
    }
@@ -138,6 +148,7 @@
        systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
        systemUser.setSalt(salt);
        systemUser.setSource(Constants.ZERO);
        systemUser.setNeedChangePwd(Constants.ZERO);
        // åˆ›å»ºç”¨æˆ·è®°å½•
        systemUser.setType(Constants.ZERO);
@@ -263,20 +274,27 @@
                    .filter(s->StringUtils.isNotBlank(s))
                    .distinct()
                    .collect(Collectors.toList());
            String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode();
            if (!CollectionUtils.isEmpty(collect)){
                QueryWrapper<SystemDepartment> wrapper = new QueryWrapper<>();
                wrapper.lambda().in(SystemDepartment::getName,collect);
                List<SystemDepartment> systemDepartments = systemDepartmentService.findList(wrapper);
                Map<Integer, String> collect1 = systemDepartments.stream().collect(Collectors.toMap(s -> s.getId(), s -> s.getName()));
                // ç”Ÿæˆå¯†ç ç›
                dataList.forEach(s->{
                    CreateSystemUserDTO systemUser = new CreateSystemUserDTO();
                    systemUser.setDepartmentId(getKey(collect1,s.getDepartmentName()));
                    systemUser.setUsername(s.getUsername());
                    systemUser.setRealname(s.getUsername());
                    systemUser.setEmpNo(s.getEmpNo());
                    systemUser.setMobile(s.getMobile());
                    systemUser.setPassword(s.getMobile());
                    String salt = RandomStringUtils.randomAlphabetic(6);
//                    systemUser.setPassword(s.getMobile());
                    // ç”Ÿæˆå¯†ç   String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode();
                    systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt));
                    systemUser.setNeedChangePwd(Constants.ZERO);
                    systemUser.setSalt(salt);
                    systemUser.setCreateUser(loginUserInfo.getId());
                    systemUser.setUpdateUser(loginUserInfo.getId());
                    systemUser.setType(Constants.ZERO);
@@ -297,7 +315,11 @@
                    systemUser.setRealname(s.getUsername());
                    systemUser.setEmpNo(s.getEmpNo());
                    systemUser.setMobile(s.getMobile());
                    systemUser.setPassword(s.getMobile());
                    // ç”Ÿæˆå¯†ç              String pwd =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode();
                    String salt = RandomStringUtils.randomAlphabetic(6);
                    systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt));
                    systemUser.setNeedChangePwd(Constants.ZERO);
//                    systemUser.setPassword(s.getMobile());
                    systemUser.setCreateUser(loginUserInfo.getId());
                    systemUser.setUpdateUser(loginUserInfo.getId());
                    systemUser.setType(Constants.ZERO);
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -36,6 +36,7 @@
    private Integer memberId;
    private Integer type;
    private Integer needChangePwd;
    private String mobile;
    private String sessionId;
server/system_service/src/main/java/com/doumee/core/utils/DESUtil.java
@@ -18,6 +18,7 @@
import java.net.URLEncoder;
import java.security.Key;
import java.util.Base64;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
public class DESUtil {
@@ -191,12 +192,14 @@
         long currentTimeMillis = System.currentTimeMillis() + 1000*60*60*hour;
         String encrypt = DESUtil.encrypt("12345678",currentTimeMillis + "_" + userName );
        try{
            encrypt = URLEncoder.encode(encrypt,"UTF-8");
//            encrypt =  Base64.getEncoder().encodeToString(encrypt.getBytes());
//            encrypt = URLEncoder.encode(encrypt,"UTF-8");
        }catch (Exception e){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"生成加密码失败!");
        }
        redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+encrypt, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS);
         return encrypt;
        String token = UUID.randomUUID().toString();
        redisTemplate.opsForValue().set(Constants.REDIS_HK_TOKEN_KEY+token, encrypt,1000*60*60*hour, TimeUnit.MILLISECONDS);
        return token;
    }
server/system_service/src/main/java/com/doumee/core/utils/PwdCheckUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
package com.doumee.core.utils;
import java.util.regex.Pattern;
/**
 * Java正则校验密码至少包含:字母数字特殊符号中的2种
 */
public class PwdCheckUtil {
    /**
     * å‡å®šè®¾ç½®å¯†ç æ—¶ï¼Œå¯†ç è§„则为:  å­—母、数字、特殊符号,至少匹配2种
     * åˆ™å¯†ç å¯èƒ½å‡ºçŽ°çš„æƒ…å†µæœ‰ï¼š
     * 1、数字+特殊符号
     * 2、字母+特殊符号
     * 3、字母+数字
     * 4、字母+数字+特殊符号
     * (组合与顺序无关)
     * è§£å†³æ€è·¯ï¼š
     * 1、遍历字符串的字符数组,查看是否包含目标特殊字符,若包含,则标记字符串
     * åŒ…含特殊字符,并替换当前特殊字符为''。
     * 2、判断剩下的字符组成的字符串,是否匹配以下情况
     * - çº¯å­—母
     * - çº¯æ•°å­—
     * - å­—母+数字
     * 3、字符串匹配规则
     * çº¯å­—母+包含特殊字符  ---- åŒ¹é…é€šè¿‡
     * çº¯æ•°å­—+包含特殊字符 ---- åŒ¹é…é€šè¿‡
     * å­—母+数字+包含个数字符 ---- åŒ¹é…é€šè¿‡
     */
    //特殊字符
    public static final String SPEC_CHARACTERS = " !\"#$%&'()*+,-./:;<=>?@\\]\\[^_`{|}~";
    // çº¯å­—母
    public static final String character = "[a-zA-Z]{1,}$";
    // çº¯æ•°å­—
    public static final String numberic = "[0-9]{1,}$";
    // å­—母和数字
    public static final String number_and_character = "((^[a-zA-Z]{1,}[0-9]{1,}[a-zA-Z0-9]*)+)" +
            "|((^[0-9]{1,}[a-zA-Z]{1,}[a-zA-Z0-9]*)+)$";
    // å­—母或数字
    public static final String number_or_character = "[a-zA-Z0-9]+$";
    // å­—母数字下划线
    public static final String ncw = "\\w+$";
    public static boolean checkPassword(String targetString) {
        String opStr = targetString;
        boolean isLegal = false;
        boolean hasSpecChar = false;
        char[] charArray = opStr.toCharArray();
        for (char c : charArray) {
            if (SPEC_CHARACTERS.contains(String.valueOf(c))) {
                hasSpecChar = true;
                // æ›¿æ¢æ­¤å­—符串
                opStr = opStr.replace(c, ' ');
            }
        }
        String excSpecCharStr = opStr.replace(" ", "");
        boolean isPureNum = Pattern.compile(numberic).matcher(excSpecCharStr).matches();
        boolean isPureChar = Pattern.compile(character).matcher(excSpecCharStr).matches();
        boolean isNumAndChar = Pattern.compile(number_and_character).matcher(excSpecCharStr).matches();
        isLegal = ((isPureNum && hasSpecChar)
                || (isPureChar && hasSpecChar) || isNumAndChar && hasSpecChar) || isNumAndChar;
        System.out.println("字符串:" + targetString + ",是否符合规则:" + isLegal);
        System.out.println("---------------");
        return isLegal;
    }
    public static void main(String[] args) {
        checkPassword("fasdagd");
        checkPassword("41234123");
        checkPassword("#$%^&&*(");
        checkPassword("fasd$$");
        checkPassword("41234%%%");
        checkPassword("fasd41^(324");
        checkPassword("fa413%^&*");
        checkPassword("&%fa413%^&*");
    }
}
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
@@ -17,9 +17,12 @@
@Data
public class NoticesDTO {
    @ApiModelProperty(value = "用户主键",hidden = true)
    @ApiModelProperty(value = "member主键",hidden = true)
    private Integer memberId;
    @ApiModelProperty(value = "用户主键",hidden = true)
    private Integer userId;
    @ApiModelProperty(value = "查询类型: 0=待处理;1=已处理;2=我发布的;3=抄送我")
    private Integer queryType;
server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -84,6 +84,8 @@
    @ApiModelProperty(value = "创建人", example = "1", hidden = true)
    private Integer createUser;
    @ApiModelProperty(value = "是否需要强制更新密码 0是 1否")
    private Integer needChangePwd;
    @ApiModelProperty(value = "更新人", example = "1", hidden = true)
    private Integer updateUser;
server/system_service/src/main/java/com/doumee/service/system/impl/NoticesServiceImpl.java
@@ -178,6 +178,7 @@
        queryWrapper.ge(noticesDTO.getStartDate() != null, Notices::getCreateDate, Utils.Date.getStart(noticesDTO.getStartDate() ));
        queryWrapper.le(noticesDTO.getEndDate() != null,  Notices::getCreateDate, Utils.Date.getEnd(noticesDTO.getEndDate() ));
        queryWrapper.eq(Objects.nonNull(noticesDTO.getType()),Notices::getType,noticesDTO.getType());
        queryWrapper.eq(Objects.nonNull(noticesDTO.getMemberId()),Notices::getUserId,noticesDTO.getMemberId());
        queryWrapper.eq(StringUtils.isNotBlank(noticesDTO.getTitle()),Notices::getTitle,noticesDTO.getTitle());
        queryWrapper.orderByDesc(Notices::getCreateDate);
        PageData<Notices> pageData = PageData.from(noticesMapper.selectJoinPage(page,Notices.class, queryWrapper));
server/visits/dmvisit_admin/src/main/java/com/doumee/api/business/WmsPushController.java
@@ -72,7 +72,7 @@
            e.printStackTrace();
            success = Constants.ONE;
        }finally {
            wmsService.saveInterfaceLog("/wms/push/outboundNotice", "推送出库单通知任务",JSONObject.toJSONString(param),success
            wmsService.saveInterfaceLog("/wms/push/outboundNotice", "【WMS】推送出库单通知任务",JSONObject.toJSONString(param),success
                    , JSONObject.toJSONString(result),Constants.ONE);
        }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/StagingCloudController.java
@@ -97,7 +97,9 @@
    @ApiOperation(value = "任务中心头部 - PC", notes = "PC")
    @PostMapping("/taskCenterHeadPC")
    public ApiResponse<InternalHomeVO> taskCenterHeadPC(@RequestBody NoticesDTO  noticesDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        noticesDTO.setMemberId(getLoginUser(token).getMemberId());
        LoginUserInfo loginUserInfo = getLoginUser(token);
        noticesDTO.setMemberId(loginUserInfo.getMemberId());
        noticesDTO.setUserId(loginUserInfo.getId());
        return ApiResponse.success("查询成功",approveService.getHomeDataPC(noticesDTO));
    }
@@ -107,6 +109,7 @@
    public ApiResponse<PageData<Notices>> taskPage (@RequestBody PageWrap<NoticesDTO> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo loginUserInfo = getLoginUser(token);
        pageWrap.getModel().setMemberId(loginUserInfo.getMemberId());
        pageWrap.getModel().setUserId(loginUserInfo.getId());
        return ApiResponse.success(noticesService.taskCanterPage(pageWrap));
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WxNoticeConfigController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
import com.doumee.config.annotation.CloudRequiredPermission;
import com.doumee.core.annotation.excel.ExcelExporter;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageWrap;
import com.doumee.core.model.PageData;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.WxNoticeConfig;
import com.doumee.service.business.WxNoticeConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/17 15:44
 */
@Api(tags = "微信公众号通知配置")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/wxNoticeConfig")
public class WxNoticeConfigController extends BaseController {
    @Autowired
    private WxNoticeConfigService wxNoticeConfigService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @CloudRequiredPermission("business:wxnoticeconfig:create")
    public ApiResponse create(@RequestBody WxNoticeConfig wxNoticeConfig) {
        return ApiResponse.success(wxNoticeConfigService.create(wxNoticeConfig));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @CloudRequiredPermission("business:wxnoticeconfig:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        wxNoticeConfigService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @CloudRequiredPermission("business:wxnoticeconfig:delete")
    public ApiResponse deleteByIdInBatch(@RequestParam String ids) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        wxNoticeConfigService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @CloudRequiredPermission("business:wxnoticeconfig:update")
    public ApiResponse updateById(@RequestBody WxNoticeConfig wxNoticeConfig) {
        wxNoticeConfigService.updateById(wxNoticeConfig);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @CloudRequiredPermission("business:wxnoticeconfig:query")
    public ApiResponse<PageData<WxNoticeConfig>> findPage (@RequestBody PageWrap<WxNoticeConfig> pageWrap) {
        return ApiResponse.success(wxNoticeConfigService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @CloudRequiredPermission("business:wxnoticeconfig:exportExcel")
    public void exportExcel (@RequestBody PageWrap<WxNoticeConfig> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(WxNoticeConfig.class).export(wxNoticeConfigService.findPage(pageWrap).getRecords(), "微信公众号通知配置", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @CloudRequiredPermission("business:wxnoticeconfig:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(wxNoticeConfigService.findById(id));
    }
    @ApiOperation("批量禁启用")
    @GetMapping("/updateStatus/batch")
    @CloudRequiredPermission("business:wxnoticeconfig:update")
    public ApiResponse updateStatusBatch(@RequestParam String ids,@RequestParam Integer status) {
        String [] idArray = ids.split(",");
        List<Integer> idList = new ArrayList<>();
        for (String id : idArray) {
            idList.add(Integer.valueOf(id));
        }
        wxNoticeConfigService.updateStatusByIdInBatch(idList,status);
        return ApiResponse.success(null);
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/openapi/HkOpenApiController.java
@@ -68,12 +68,10 @@
    @ApiOperation("token解析")
    @GetMapping("/water/decodeToken")
    public Map<String,Object> decodeToken(@RequestParam String token) {
        String token1 =token;
        log.info("【安防平台单点登录token解析】================="+token1);
        log.info("【安防平台单点登录token解析】================="+token);
        int success = Constants.ZERO;
        Map<String,Object>  result = new HashMap<>() ;
        try {
             token = URLEncoder.encode(token1);
            HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest();
            hkBaseTokenRequest.setToken(token);
            result = this.decodeTokenForHk(hkBaseTokenRequest);
@@ -85,7 +83,7 @@
            e.printStackTrace();
            success = Constants.ONE;
        }finally {
            interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "【安防平台】单点登录token解析",token1,
            interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "【安防平台】单点登录token解析",token,
                    success, JSONObject.toJSONString(result),Constants.ZERO);
        }
        return result;
@@ -106,11 +104,7 @@
            result.put("msg","token无效!");
            return result;
        }
        String userName = null;
        try {
             userName = DESUtil.verifyHkToken(URLDecoder.decode(hkBaseTokenRequest.getToken(),"UTF-8"));
        }catch (Exception e){
        }
        String userName = DESUtil.verifyHkToken( redisToken);;
        if(StringUtils.isBlank(userName)){
            result.put("code","-1");
            result.put("msg","token参数为空");
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatConstants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,145 @@
package com.doumee.core.wx.wxPlat;
import com.doumee.core.utils.Constants;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/10/17 13:54
 */
public class WxPlatConstants {
    public static final String visit ="1" ;
    public static final String visitReport ="2" ;
    public static final String hiddenDanger ="3" ;
    public static final String carUse ="4" ;
    public static final String meeting ="5" ;
    public static final String platformBook ="6" ;
    public static final String platformJob ="7" ;
    /**
     * è®¿å®¢ç”³è¯·
     */
    public interface visitContent{
        //  æäº¤æˆåŠŸç»™ç”³è¯·äººï¼šç”³è¯·æäº¤æˆåŠŸå¾…å®¡æ ¸
        String visitUpload = "visitUpload";
        // å®¡æ‰¹é€šè¿‡ç»™ç”³è¯·äººï¼šç”³è¯·å·²å®¡æ ¸é€šè¿‡
        String visitAuditSuccess = "visitAuditSuccess";
        //  å®¡æ‰¹é©³å›žç»™ç”³è¯·äººï¼šç”³è¯·å·²è¢«é©³å›ž
        String visitAuditFail = "visitWaitAudit";
        // ç»™å®¡æ‰¹äººï¼šç”³è¯·å¾…您审批
        String visitWaitAudit = "visitWaitAudit";
    }
    /**
     * è®¿å®¢æŠ¥å¤‡
     */
    public interface visitReportContent{
        //  æäº¤æˆåŠŸç»™ç”³è¯·äººï¼šç”³è¯·æäº¤æˆåŠŸå¾…å®¡æ ¸
        String visitReportUpload = "visitReportUpload";
        // å®¡æ‰¹é€šè¿‡ç»™ç”³è¯·äººï¼šç”³è¯·å·²å®¡æ ¸é€šè¿‡
        String visitReportAuditSuccess = "visitReportAuditSuccess";
        //  å®¡æ‰¹é©³å›žç»™ç”³è¯·äººï¼šç”³è¯·å·²è¢«é©³å›ž
        String visitReportAuditFail = "visitReportAuditFail";
        // ç»™å®¡æ‰¹äººï¼šç”³è¯·å¾…您审批
        String visitReportWaitAudit = "visitReportAuditSuccess";
    }
    /**
     * é𐿂£éšæ‰‹æ‹
     */
    public interface hiddenDangerContent{
        //隐患上报通知
        String hiddenDangerUpload = "hiddenDangerUpload";
        //隐患整改通知
        String hiddenDangerDeal = "hiddenDangerDeal";
    }
    /**
     * ç”¨è½¦ç”³è¯·
     */
    public interface carUseBookContent{
        //短信通知模板(给处理人)
        String carUseBookUpload = "carUseBookUpload";
        //用车申请-审批通过通知(给申请人):。
        String carUseBookAuditSuccess = "carUseBookAuditSuccess";
        //用车申请-审批驳回通知(给申请人):。
        String carUseBookAuditFail = "carUseBookAuditFail";
        //用车申请-审批驳回通知(给申请人):。
        String carUseBookWaitAudit = "carUseBookWaitAudit";
    }
    /**
     * ä¼šè®®é€šçŸ¥
     */
    public interface meetingContent{
        //线下会议预约成功通知
        String reservationSuccess = "reservationSuccess";
        //会议取消通知。
        String meetingCancel = "meetingCancel";
        //会议即将开始提醒(订阅消息)
        String meetingBeginA = "meetingBeginA";
        //会议即将结束提醒(订阅消息)
        String meetingEndA = "meetingEndA";
    }
    /**
     * ç‰©æµè½¦é¢„约
     */
    public interface platformBookContent{
        //  æäº¤æˆåŠŸç»™ç”³è¯·äººï¼šç”³è¯·æäº¤æˆåŠŸå¾…å®¡æ ¸
        String platformBookUpload = "platformBookUpload";
        // å®¡æ‰¹é€šè¿‡ç»™ç”³è¯·äººï¼šç”³è¯·å·²å®¡æ ¸é€šè¿‡
        String platformBookAuditSuccess = "platformBookAuditSuccess";
        //  å®¡æ‰¹é©³å›žç»™ç”³è¯·äººï¼šç”³è¯·å·²è¢«é©³å›ž
        String platformBookAuditFail = "platformBookWaitAudit";
        // ç»™å®¡æ‰¹äººï¼šç”³è¯·å¾…您审批
        String platformBookWaitAudit = "platformBookWaitAudit";
    }
    /**
     * ç‰©æµä½œä¸š
     */
    public interface platformJobContent{
        //物流车预约-叫号入园等待(给司机)
        String platformJobCallIn = "platformJobCallIn";
        //物流车预约-月台叫号(给司机)
        String platformJobSingIn = "platformJobSingIn";
        //物流车预约-月台叫号过号(给司机)
        String platformJobOverNum = "platformJobOverNum";
        //物流车预约-作业开始(给司机)
        String platformJobWorking = "platformJobWorking";
        //物流车预约-作业完成(给司机)
        String platformJobFinish = "platformJobFinish";
        //物流车预约-离园授权(给司机)
        String platformJobLevelPower = "platformJobLevelPower";
        //物流车预约-月台转移(给司机)
        String platformJobMove = "platformJobMove";
        //物流车预约-作业异常挂起(给司机)
        String platformJobError = "platformJobError";
        //物流车预约-月台停靠超时(给司机)
        String platformJobTimeOut = "platformJobTimeOut";
        //物流车预约-月台停靠错误(给司机)
        String platformJobStopErr = "platformJobStopErr";
        // è¿è¾“任务下达 ï¼ˆç»™å¸æœºï¼‰
        String platformJobNewJob = "platformJobNewJob";
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/wx/wxPlat/WxPlatNotice.java
@@ -1,6 +1,11 @@
package com.doumee.core.wx.wxPlat;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.WxNoticeConfigMapper;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.business.model.WxNoticeConfig;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
@@ -8,6 +13,9 @@
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Objects;
/**
 * å¾®ä¿¡å…¬ä¼—号通知
@@ -28,8 +36,9 @@
        this.wxMpService = wxMpService;
    }
    /**
     * è®¿å®¢è®°å½•审批业务通知
     * è®¿å®¢ä¸šåŠ¡é€šçŸ¥æŽ¥å£
     */
    public Boolean  sendVisitAuditTemplateNotice(Visits visits,String prefix,String tempId){
        if(StringUtils.isBlank(visits.getOpenid())){
@@ -40,6 +49,8 @@
                .templateId(tempId)
                .url(prefix + visits.getId())
                .build();
        String thing1 = "待审批";
        if(visits.getStatus()==2){
            thing1 = "审核通过";
@@ -66,4 +77,50 @@
    }
    /**
     * è®¿å®¢ä¸šåŠ¡é€šçŸ¥
     */
    public void  sendVisitTemplateNotice(WxNoticeConfigMapper wxNoticeConfigMapper,Visits visits,String objCode, String prefix, String tempId, List<String> openIds){
        if(CollectionUtils.isNotEmpty(openIds)){
           WxNoticeConfig wxNoticeConfig =  wxNoticeConfigMapper.selectOne(new QueryWrapper<WxNoticeConfig>().lambda().eq(WxNoticeConfig::getObjType,WxPlatConstants.visit)
                    .eq(WxNoticeConfig::getObjCode,objCode)
                           .eq(WxNoticeConfig::getStatus, Constants.ZERO)
                    .last(" limit 1")
            );
           if(Objects.isNull(wxNoticeConfig)){
               return;
           }
            WxMpTemplateMessage templateMessage =  WxMpTemplateMessage.builder()
                    .toUser(visits.getOpenid())
                    .templateId(tempId)
                    .url(prefix + visits.getId())
                    .build();
            templateMessage.addData(new WxMpTemplateData("thing1", visits.getName()))
                    .addData(new WxMpTemplateData("car_number7", StringUtils.isBlank(visits.getCarNos())?visits.getCarNos():"-"))
                    .addData(new WxMpTemplateData("character_string6", Constants.equalsInteger(visits.getMemberNum(),Constants.ZERO)?Constants.ONE+"":visits.getMemberNum().toString()))
                    .addData(new WxMpTemplateData("const9", wxNoticeConfig.getTitile()))
                    .addData(new WxMpTemplateData("thing4", visits.getReason()))
                    ;
            String msgId = null;
            try {
                for (String openId:openIds) {
                    templateMessage.setToUser(openId);
                }
                // å‘送模板消息
                msgId = wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
            } catch (WxErrorException e) {
                e.printStackTrace();
            }
            log.warn("·==++--·推送微信模板信息:{}·--++==·", msgId != null ? "成功" : "失败");
        }
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/WxNoticeConfigMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.WxNoticeConfig;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/17 15:44
 */
public interface WxNoticeConfigMapper extends BaseMapper<WxNoticeConfig> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/SmsConfig.java
@@ -59,6 +59,10 @@
    @ExcelColumn(name="短信编码")
    private String code;
    @ApiModelProperty(value = "标题")
    @ExcelColumn(name="标题")
    private String name;
    @ApiModelProperty(value = "短信内容")
    @ExcelColumn(name="短信内容")
    private String content;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/WxNoticeConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
 * å¾®ä¿¡å…¬ä¼—号通知配置
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/17 15:44
 */
@Data
@ApiModel("微信公众号通知配置")
@TableName("`wx_notice_config`")
public class WxNoticeConfig {
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "主键", example = "1")
    @ExcelColumn(name="主键")
    private Integer id;
    @ApiModelProperty(value = "创建人编码")
    @ExcelColumn(name="创建人编码")
    private String creator;
    @ApiModelProperty(value = "创建时间")
    @ExcelColumn(name="创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "更新人编码")
    @ExcelColumn(name="更新人编码")
    private String edirot;
    @ApiModelProperty(value = "更新时间")
    @ExcelColumn(name="更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date editDate;
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
    private String remark;
    @ApiModelProperty(value = "开启状态:0开启;1关闭", example = "1")
    @ExcelColumn(name="开启状态:0开启;1关闭")
    private Integer status;
    @ApiModelProperty(value = "模板ID")
    @ExcelColumn(name="模板ID")
    private String tempId;
    @ApiModelProperty(value = "标题(枚举值)")
    @ExcelColumn(name="标题(枚举值)")
    private String titile;
    @ApiModelProperty(value = "业务编码")
    @ExcelColumn(name="业务编码")
    private String objCode;
    @ApiModelProperty(value = "业务类型 1=访客业务;2=访客报备;3=隐患随手拍;4=用车申请;5=会议室信息;6=物流车预约;7=物流车作业", example = "1")
    @ExcelColumn(name="业务类型 1=访客业务;2=访客报备;3=隐患随手拍;4=用车申请;5=会议室信息;6=物流车预约;7=物流车作业")
    private Integer objType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -115,7 +115,7 @@
    DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo);
    /**
     * è·ç¦»ç­¾åˆ°
     * è·ç¦»ç­¾åˆ°Â·
     * @param signInDTO
     */
    void signIn(SignInDTO signInDTO);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/WxNoticeConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.WxNoticeConfig;
import java.util.List;
/**
 * å¾®ä¿¡å…¬ä¼—号通知配置Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/17 15:44
 */
public interface WxNoticeConfigService {
    /**
     * åˆ›å»º
     *
     * @param wxNoticeConfig å®žä½“对象
     * @return Integer
     */
    Integer create(WxNoticeConfig wxNoticeConfig);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param wxNoticeConfig å®žä½“对象
     */
    void delete(WxNoticeConfig wxNoticeConfig);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param wxNoticeConfig å®žä½“对象
     */
    void updateById(WxNoticeConfig wxNoticeConfig);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param wxNoticeConfigs å®žä½“集
     */
    void updateByIdInBatch(List<WxNoticeConfig> wxNoticeConfigs);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return WxNoticeConfig
     */
    WxNoticeConfig findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param wxNoticeConfig å®žä½“对象
     * @return WxNoticeConfig
     */
    WxNoticeConfig findOne(WxNoticeConfig wxNoticeConfig);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param wxNoticeConfig å®žä½“对象
     * @return List<WxNoticeConfig>
     */
    List<WxNoticeConfig> findList(WxNoticeConfig wxNoticeConfig);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<WxNoticeConfig>
     */
    PageData<WxNoticeConfig> findPage(PageWrap<WxNoticeConfig> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param wxNoticeConfig å®žä½“对象
     * @return long
     */
    long count(WxNoticeConfig wxNoticeConfig);
    void updateStatusByIdInBatch(List<Integer> ids,Integer status);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PositionServiceImpl.java
@@ -109,7 +109,9 @@
        QueryWrapper<Position> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper.lambda()
        queryWrapper
                .select("*,(select count(1) from member where member.position_id = position.id and member.type=2 and isdeleted=0) as memberNum" )
                .lambda()
                .eq(pageWrap.getModel().getId() != null, Position::getId, pageWrap.getModel().getId())
                .eq(pageWrap.getModel().getCreator() != null, Position::getCreator, pageWrap.getModel().getCreator())
                .ge(pageWrap.getModel().getCreateDate() != null, Position::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WxNoticeConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
package com.doumee.service.business.impl;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.WxNoticeConfigMapper;
import com.doumee.dao.business.model.SmsConfig;
import com.doumee.dao.business.model.WxNoticeConfig;
import com.doumee.service.business.WxNoticeConfigService;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
/**
 * å¾®ä¿¡å…¬ä¼—号通知配置Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2024/10/17 15:44
 */
@Service
public class WxNoticeConfigServiceImpl implements WxNoticeConfigService {
    @Autowired
    private WxNoticeConfigMapper wxNoticeConfigMapper;
    @Override
    public Integer create(WxNoticeConfig wxNoticeConfig) {
        wxNoticeConfigMapper.insert(wxNoticeConfig);
        return wxNoticeConfig.getId();
    }
    @Override
    public void deleteById(Integer id) {
        wxNoticeConfigMapper.deleteById(id);
    }
    @Override
    public void delete(WxNoticeConfig wxNoticeConfig) {
        UpdateWrapper<WxNoticeConfig> deleteWrapper = new UpdateWrapper<>(wxNoticeConfig);
        wxNoticeConfigMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        wxNoticeConfigMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(WxNoticeConfig wxNoticeConfig) {
        wxNoticeConfigMapper.updateById(wxNoticeConfig);
    }
    @Override
    public void updateByIdInBatch(List<WxNoticeConfig> wxNoticeConfigs) {
        if (CollectionUtils.isEmpty(wxNoticeConfigs)) {
            return;
        }
        for (WxNoticeConfig wxNoticeConfig: wxNoticeConfigs) {
            this.updateById(wxNoticeConfig);
        }
    }
    @Override
    public WxNoticeConfig findById(Integer id) {
        return wxNoticeConfigMapper.selectById(id);
    }
    @Override
    public WxNoticeConfig findOne(WxNoticeConfig wxNoticeConfig) {
        QueryWrapper<WxNoticeConfig> wrapper = new QueryWrapper<>(wxNoticeConfig);
        return wxNoticeConfigMapper.selectOne(wrapper);
    }
    @Override
    public List<WxNoticeConfig> findList(WxNoticeConfig wxNoticeConfig) {
        QueryWrapper<WxNoticeConfig> wrapper = new QueryWrapper<>(wxNoticeConfig);
        return wxNoticeConfigMapper.selectList(wrapper);
    }
    @Override
    public PageData<WxNoticeConfig> findPage(PageWrap<WxNoticeConfig> pageWrap) {
        IPage<WxNoticeConfig> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<WxNoticeConfig> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(WxNoticeConfig::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(WxNoticeConfig::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEdirot() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getEdirot, pageWrap.getModel().getEdirot());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(WxNoticeConfig::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(WxNoticeConfig::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getTempId() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getTempId, pageWrap.getModel().getTempId());
        }
        if (pageWrap.getModel().getTitile() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getTitile, pageWrap.getModel().getTitile());
        }
        if (pageWrap.getModel().getObjCode() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getObjCode, pageWrap.getModel().getObjCode());
        }
        if (pageWrap.getModel().getObjType() != null) {
            queryWrapper.lambda().eq(WxNoticeConfig::getObjType, pageWrap.getModel().getObjType());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(wxNoticeConfigMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(WxNoticeConfig wxNoticeConfig) {
        QueryWrapper<WxNoticeConfig> wrapper = new QueryWrapper<>(wxNoticeConfig);
        return wxNoticeConfigMapper.selectCount(wrapper);
    }
    @Override
    public void updateStatusByIdInBatch(List<Integer> ids,Integer status) {
        if (CollectionUtils.isEmpty(ids) || Objects.isNull(status)) {
            return;
        }
        wxNoticeConfigMapper.update(new UpdateWrapper<WxNoticeConfig>()
                .set("status",status)
                .in("id",ids)
        );
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -22,6 +22,7 @@
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
import com.doumee.service.business.PlatformJobService;
import com.doumee.service.business.impl.PlatformWarnEventServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
@@ -841,7 +842,7 @@
                                    Constants.PlatformJobStatus.EXCEPTION.getKey(),
                                    Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                            )
                    )<Constants.ZERO){
                    )==Constants.ZERO){
                        PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                                .eq(PlatformJob::getCarCodeFront,event.getPlateNos())
                                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -342,7 +342,9 @@
                job.setArriveDate(new Date());
                job.setSingType(Constants.TWO);
                job.setSignDate(new Date());
                List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  "));
                List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().
                        lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null  ")
                );
                if(CollectionUtils.isEmpty(signList)){
                    job.setSignNum(Constants.ONE);
                } else{