k94314517
2024-01-11 9ffa4aac7e3ae6b268dbc3567a0749a9898c3708
ERP接口
已修改10个文件
220 ■■■■ 文件已修改
server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberCardController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/erp/ErpTool.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberCard.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/MemberCardService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/dmvisit_admin/src/main/java/com/doumee/api/business/MemberCardController.java
@@ -67,11 +67,19 @@
        return ApiResponse.success(null);
    }
    @ApiOperation("挂失/解挂操作")
    @PostMapping("/batchUpdate")
    @ApiOperation("挂失操作")
    @PostMapping("/batchLoss")
    //@RequiresPermissions("business:membercard:update")
    public ApiResponse batchUpdate(@RequestBody List<MemberCard> memberCards) {
        memberCardService.updateByIdInBatch(memberCards);
    public ApiResponse batchLoss(@RequestBody List<MemberCard> memberCards) {
        memberCardService.updateByIdInBatch(memberCards,0);
        return ApiResponse.success(null);
    }
    @ApiOperation("解挂操作")
    @PostMapping("/batchUnLoss")
    //@RequiresPermissions("business:membercard:update")
    public ApiResponse batchUnLoss(@RequestBody List<MemberCard> memberCards) {
        memberCardService.updateByIdInBatch(memberCards,1);
        return ApiResponse.success(null);
    }
server/dmvisit_service/src/main/java/com/doumee/core/erp/ErpTool.java
@@ -1,5 +1,6 @@
package com.doumee.core.erp;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.doumee.core.constants.ResponseStatus;
@@ -14,24 +15,52 @@
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.HttpsUtil;
import com.doumee.dao.business.model.InterfaceLog;
import com.doumee.dao.business.model.Member;
import com.doumee.service.business.InterfaceLogService;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class ErpTool {
    @Autowired
    private InterfaceLogService interfaceLogService;
    public void saveInterfaceLog(Object param, String path,String result,Integer type) {
        InterfaceLog interfaceLog=new InterfaceLog();
        interfaceLog.setType(type);
        interfaceLog.setCreateDate(new Date());
        interfaceLog.setIsdeleted(Constants.ZERO);
        if(param!=null){
            interfaceLog.setRequest(JSONObject.toJSONString(param));
        }
        interfaceLog.setPlat(Constants.ONE);
        interfaceLog.setRepose(result);
        interfaceLog.setName(path);
        interfaceLog.setUrl(path);
        interfaceLogService.create(interfaceLog);
    }
    /**
     * 同步组织
     * @param url
     * @param param
     * @return
     */
    public static List<ErpOrgListResponse> getErpOrgList(String url, OrgListRequest param){
    public   List<ErpOrgListResponse> getErpOrgList(String url, OrgListRequest param){
        List<ErpOrgListResponse> list = new ArrayList<>();
        try {
        int page =1;
        int pageSize  = 100;
        boolean hasLast = true;
@@ -44,7 +73,8 @@
            String result = HttpsUtil.postJson(url, JSONObject.toJSONString(pageWrap));
            if(StringUtils.isNotBlank(result)){
                TypeReference typeReference =
                        new TypeReference<ERPApiResponse<PageData<ErpOrgListResponse>>>(){};
                            new TypeReference<ERPApiResponse<PageData<ErpOrgListResponse>>>() {
                            };
                ERPApiResponse<PageData<ErpOrgListResponse>> response = JSONObject.parseObject(result, typeReference.getType());
                if(response!=null && response.getData()!=null&& response.getData().getRecords()!=null){
                    list.addAll(response.getData().getRecords());
@@ -55,6 +85,11 @@
                    }
                }
            }
        }catch (Exception e){
            throw e;
        }finally {
            saveInterfaceLog(param,url,JSONArray.toJSONString(list),Constants.ZERO);
        }
        return  list;
    }
@@ -64,9 +99,10 @@
     * @param param
     * @return
     */
    public static List<ErpUserListResponse> getErpUserList(String url, UserListRequest param){
    public List<ErpUserListResponse> getErpUserList(String url, UserListRequest param){
        List<ErpUserListResponse> list = new ArrayList<>();
        try{
        int page =1;
        int pageSize  = 100;
        boolean hasLast = true;
@@ -90,6 +126,11 @@
                }
            }
        }
        }catch (Exception e){
            throw e;
        }finally {
            saveInterfaceLog(param,url, JSONArray.toJSONString(list),Constants.ZERO);
        }
        return  list;
    }
@@ -100,9 +141,10 @@
     * @param param
     * @return
     */
    public static ApproveInfoResponse submitApprove(String url, ApproveAddRequest param){
    public  ApproveInfoResponse submitApprove(String url, ApproveAddRequest param){
        System.out.println(JSONObject.toJSONString(param));
        String result = HttpsUtil.postJson(url, JSONObject.toJSONString(param));
        try{
        if(StringUtils.isNotBlank(result)){
            TypeReference typeReference =
                    new TypeReference<ERPApiResponse<String>>(){};
@@ -115,6 +157,11 @@
                throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMessage());
            }
        }
        }catch (Exception e){
            throw e;
        }finally {
           saveInterfaceLog(param,url,JSONObject.toJSONString(result),Constants.ZERO);
        }
        return  null;
    }
@@ -124,8 +171,9 @@
     * @param param
     * @return
     */
    public static ERPApiResponse noticeUserStatus(String url, UserFailRequest param){
    public   ERPApiResponse noticeUserStatus(String url, UserFailRequest param){
        String result = HttpsUtil.postJson(url, JSONObject.toJSONString(param));
        try{
        if(StringUtils.isNotBlank(result)){
            TypeReference typeReference =
                    new TypeReference<ERPApiResponse>(){};
@@ -134,6 +182,11 @@
                return response;
            }
        }
        }catch (Exception e){
            throw e;
        }finally {
            saveInterfaceLog(param,url,JSONObject.toJSONString(result),Constants.ZERO);
        }
        return  null;
    }
}
server/dmvisit_service/src/main/java/com/doumee/core/erp/model/openapi/request/UserUpdateRequest.java
@@ -43,7 +43,8 @@
    private String phone;
    @ApiModelProperty(value = "卡号集合" )
    private List<String> cardList;
    @ApiModelProperty(value = "授权门禁组编码集合,【访客端】唯一标识" )
    //2024年1月9日 沟通不从此业务触发
    @ApiModelProperty(value = "授权门禁组编码集合,【访客端】唯一标识" ,hidden = true )
    private Integer[] roleIds;
    @ApiModelProperty(value = "授权有效期(开始时间),为空时默认长期有效,如2023-11-24 11:39:23"  )
    private Date validStartTime;
server/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -730,7 +730,7 @@
        log.info("【海康批量挂失】================开始===="+JSONObject.toJSONString(param));
        String res = null;
        try {
            res = HKTools.cardDeletion(JSONObject.toJSONString(param));
            res = HKTools.cardLoss(JSONObject.toJSONString(param));
            TypeReference typeReference =
                    new TypeReference< BaseResponse >(){};
            BaseResponse     result = JSONObject.parseObject(res, typeReference.getType());
server/dmvisit_service/src/main/java/com/doumee/dao/admin/response/MemberInfoDTO.java
@@ -85,7 +85,7 @@
    private String openid;
    @ApiModelProperty(value = "门禁角色编码")
    private Integer roleId;
    private String roleId;
    @ApiModelProperty(value = "门禁角色名称")
    private String roleName;
server/dmvisit_service/src/main/java/com/doumee/dao/business/model/MemberCard.java
@@ -100,8 +100,8 @@
    @TableField(exist = false)
    private String statusName;
    @ApiModelProperty(value = "卡类型 1 IC卡 2 CPU卡  3远距离卡 4M卡 -- 前端新增传值写死")
    @ExcelColumn(name="卡类型 1 IC卡 2 CPU卡  3远距离卡 4M卡")
    @ApiModelProperty(value = "卡类型 1 IC卡 2 CPU卡  3远距离卡 4M卡 0虚拟卡 -- 前端新增传值写死")
    @ExcelColumn(name="卡类型 1 IC卡 2 CPU卡  3远距离卡 4M卡 0虚拟卡")
    private Integer type;
    @ApiModelProperty(value = "卡类型名称")
@@ -120,5 +120,5 @@
    @ApiModelProperty(value = "关键字")
    @TableField(exist = false)
    private String KeyWords;
    private String keyword;
}
server/dmvisit_service/src/main/java/com/doumee/service/business/MemberCardService.java
@@ -54,7 +54,9 @@
     *
     * @param memberCards 实体集
     */
    void updateByIdInBatch(List<MemberCard> memberCards);
    void updateByIdInBatch(List<MemberCard> memberCards,Integer type);
    /**
     * 主键查询
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberCardServiceImpl.java
@@ -3,14 +3,20 @@
import cn.hutool.core.lang.PatternPool;
import cn.hutool.core.lang.Validator;
import cn.hutool.core.util.ReUtil;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.CardBingdingRequest;
import com.doumee.core.haikang.model.param.request.CardDeletionRequest;
import com.doumee.core.haikang.model.param.request.CardInfoRequest;
import com.doumee.core.haikang.model.param.request.CardLossRequest;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.admin.response.CarEventDTO;
import com.doumee.dao.business.*;
@@ -27,6 +33,8 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.impl.hksync.HkSyncOrgUserServiceImpl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -60,9 +68,38 @@
    private MemberCardJoinMapper memberCardJoinMapper;
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public Integer create(MemberCard memberCard) {
        LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Objects.isNull(memberCard.getMemberId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        memberCard.setCreator(userInfo.getId());
        memberCard.setCreateDate(new Date());
        memberCard.setStatus(Constants.ONE);
        memberCardMapper.insert(memberCard);
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        Member member = memberMapper.selectById(memberCard.getMemberId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息");
        }
        CardBingdingRequest param = new CardBingdingRequest();
        if(member.getStartTime() !=null && member.getEndTime()!=null){
            param.setStartDate(DateUtil.getISO8601Timestamp(member.getStartTime()));
            param.setEndDate(DateUtil.getISO8601Timestamp(member.getEndTime()));
        }
        CardInfoRequest cr = new CardInfoRequest();
        cr.setCardNo(memberCard.getCode());
        cr.setOrgIndexCode(member.getCompanyHkId());
        cr.setPersonId(member.getHkId());
        cr.setCardType(memberCard.getType());
        List<CardInfoRequest> cardList = new ArrayList<>();
        cardList.add(cr);
        param.setCardList(cardList);
        BaseResponse response = HKService.cardBingding(param);
        if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
        }
        return memberCard.getId();
    }
@@ -90,25 +127,80 @@
        memberCardMapper.updateById(memberCard);
    }
    /**
     * 批量挂失/解挂
     * @param memberCards 实体集
     * @param type 0=挂失;1=解挂
     */
    @Override
    public void updateByIdInBatch(List<MemberCard> memberCards) {
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void updateByIdInBatch(List<MemberCard> memberCards,Integer type) {
        LoginUserInfo userInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if (CollectionUtils.isEmpty(memberCards)) {
            return;
        }
        CardLossRequest param = new CardLossRequest();
        List<CardDeletionRequest> cardList = new ArrayList();
        for (MemberCard memberCard: memberCards) {
            MemberCard model = memberCardMapper.selectById(memberCard.getId());
            if(type.equals(Constants.ZERO)){
                //挂失操作
                if(!model.getStatus().equals(Constants.MemberCard.normal)){
                    continue;
                }
            }else{
                //解挂操作
                if(!model.getStatus().equals(Constants.MemberCard.loss)){
                    continue;
                }
            }
            CardDeletionRequest cardDeletionRequest = this.dealCardData(model);
            memberCard.setEditDate(new Date());
            memberCard.setEditor(userInfo.getId());
            this.updateById(memberCard);
            cardList.add(cardDeletionRequest);
            param.setCardList(cardList);
        }
        BaseResponse response = new BaseResponse();
        if(type.equals(Constants.ZERO)){
            response = HKService.cardLoss(param);
        }else{
            response = HKService.cardUnLoss(param);
    }
        if(response==null
                ||!StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
        }
    }
    public CardDeletionRequest dealCardData(MemberCard model){
        if(model.getType().equals(Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"卡号:" +model.getCode() + " 为虚拟卡无法进行该操作");
        }
        Member member = memberMapper.selectById(model.getMemberId());
        if(Objects.isNull(member)||Objects.isNull(member.getHkId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"卡号:" +model.getCode() + " 对应人员海康信息异常");
        }
        dealMemberRoleEmpower(member);
        CardDeletionRequest cardDeletionRequest = new CardDeletionRequest();
        cardDeletionRequest.setCardNumber(model.getCode());
        cardDeletionRequest.setPersonId(member.getHkId());
        return cardDeletionRequest;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
    public void updateRefundCard(MemberCard memberCard) {
        MemberCard model = memberCardMapper.selectById(memberCard.getId());
        CardDeletionRequest cardDeletionRequest = this.dealCardData(model);
        memberCardMapper.updateById(memberCard);
        dealMemberRoleEmpower(memberMapper.selectById(memberCard.getMemberId()));
        BaseResponse response = HKService.cardDeletion(new CardDeletionRequest());
        if(){
        BaseResponse response = HKService.cardDeletion(cardDeletionRequest);
        if(response==null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),response.getMsg());
        }
    }
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -38,6 +38,7 @@
import com.doumee.dao.web.response.VisitDetailVO;
import com.doumee.dao.web.response.VisitRecordVO;
import com.doumee.service.business.ApproveService;
import com.doumee.service.business.InterfaceLogService;
import com.doumee.service.business.VisitsService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -84,6 +85,8 @@
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private DeviceJoinMapper deviceJoinMapper;
    @Autowired
    private ErpTool erpTool;
    @Autowired
    private WxPlatNotice wxPlatNotice;
@@ -584,7 +587,6 @@
        }
        param.setWithUserList(withUserList);
        param.setId(visits.getId());
        param.setBeVisitedUserId(visitMember.getErpId());
        param.setVisitorWorkUint(visits.getCompanyName());
@@ -602,13 +604,16 @@
                 param.setRoleNames(deviceRoleList.stream().map(m->m.getName()).collect(Collectors.toList()));
             }
        }
        ApproveInfoResponse response = ErpTool.submitApprove(ErpConstants.approveUrl,param);
        ApproveInfoResponse response   = erpTool.submitApprove(ErpConstants.approveUrl,param);
        if(!Objects.isNull(response)){
            return visits.getId().toString();
        }
        return  null;
    }
    private String visitAppiontment(Visits visits) {
        VisitAppointmentRequest param = new VisitAppointmentRequest();
        param.setVisitStartTime(DateUtil.getISO8601Timestamp(visits.getStarttime()));
server/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -105,6 +105,9 @@
    @Autowired
    private InterfaceLogService interfaceLogService;
    @Autowired
    private ErpTool erpTool;
    @Override
    @PostConstruct
@@ -128,7 +131,7 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持组织同步操作~");
        }
        //获取ERP组织信息(全量同步)
        List<ErpOrgListResponse>  list = ErpTool.getErpOrgList(ErpConstants.orgListUrl,param);
        List<ErpOrgListResponse>  list = erpTool.getErpOrgList(ErpConstants.orgListUrl,param);
        if(list !=null && list.size()>0){
            List<Company> addList = new ArrayList<>();
            List<Company> updateList = new ArrayList<>();
@@ -278,7 +281,7 @@
        if(!StringUtils.equals(Constants.ONE+"", systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORG_USER_ORIGIN).getCode())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,当前不支持人员同步操作~");
        }
        List<ErpUserListResponse>  list = ErpTool.getErpUserList(ErpConstants.userListUrl,param);
        List<ErpUserListResponse>  list = erpTool.getErpUserList(ErpConstants.userListUrl,param);
        if(list !=null && list.size()>0) {
            List<Member> addList = new ArrayList<>();
            List<Member> updateList = new ArrayList<>();
@@ -445,7 +448,7 @@
     */
    @Override
    public  boolean noticeUserFail(UserFailRequest param){
        ERPApiResponse r  = ErpTool.noticeUserStatus(ErpConstants.userStatusUrl,param);
        ERPApiResponse r  = erpTool.noticeUserStatus(ErpConstants.userStatusUrl,param);
        if(r!=null && r.isSuccess()){
            return true;
        }