From 9ffa4aac7e3ae6b268dbc3567a0749a9898c3708 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期四, 11 一月 2024 18:09:09 +0800 Subject: [PATCH] ERP接口 --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java | 607 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 552 insertions(+), 55 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java index 610c3ff..916c664 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncOrgUserServiceImpl.java @@ -4,71 +4,85 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.erp.model.openapi.request.UserUpdateRequest; +import com.doumee.core.erp.model.openapi.request.erp.UserFailRequest; import com.doumee.core.exception.BusinessException; import com.doumee.core.haikang.model.HKConstants; +import com.doumee.core.haikang.model.HKTools; import com.doumee.core.haikang.model.param.BaseResponse; -import com.doumee.core.haikang.model.param.request.OrgAddRequest; -import com.doumee.core.haikang.model.param.request.OrgDelRequest; -import com.doumee.core.haikang.model.param.request.ParkListRequest; -import com.doumee.core.haikang.model.param.respose.OrgOrUserAddResponse; -import com.doumee.core.haikang.model.param.respose.OrgOrUserAddSuccessResponse; -import com.doumee.core.haikang.model.param.respose.OrgUpdateFailureResponse; -import com.doumee.core.haikang.model.param.respose.ParkListResponse; +import com.doumee.core.haikang.model.param.request.*; +import com.doumee.core.haikang.model.param.respose.*; import com.doumee.core.haikang.service.HKService; import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.DateUtil; -import com.doumee.dao.business.CompanyMapper; -import com.doumee.dao.business.ParksMapper; +import com.doumee.core.utils.ImageBase64Util; +import com.doumee.dao.business.*; import com.doumee.dao.business.join.CompanyJoinMapper; -import com.doumee.dao.business.model.Company; -import com.doumee.dao.business.model.Parks; +import com.doumee.dao.business.join.MemberJoinMapper; +import com.doumee.dao.business.model.*; +import com.doumee.service.business.ERPSyncService; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.checkerframework.checker.units.qual.C; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.UUID; +import java.util.*; /** - * 娴峰悍鍋滆溅搴撳悓姝ervice瀹炵幇 + * 娴峰悍缁勭粐浜哄憳閫氳繃姝ervice瀹炵幇 * @author 姹熻箘韫� * @date 2023/11/30 15:33 */ @Service +@Slf4j public class HkSyncOrgUserServiceImpl extends HkSyncBaseServiceImpl { - @Autowired private CompanyMapper companyMapper; + + @Autowired + private MemberRoleMapper memberRoleMapper; + @Autowired + private DeviceRoleMapper deviceRoleMapper; + @Autowired + private DeviceMapper deviceMapper; + @Autowired + private EmpowerMapper empowerMapper; + @Autowired + private MemberCardMapper memberCardMapper; + @Autowired + private MemberJoinMapper memberMapper; + @Autowired + private ERPSyncService erpSyncService; @Autowired private SystemDictDataBiz systemDictDataBiz; /** - * 鍚屾娴峰悍缁勭粐淇℃伅 - * @return + * 鍚屾娴峰悍缁勭粐淇℃伅,鏍规嵁erp鍚屾缁勭粐缁撴灉锛屽畾鏃舵鏌ラ渶瑕佷笅鍙戝埌娴峰悍鐨勭粍缁囦俊鎭� */ @Override public void syncOrgData(){ - if(Constants.DEALING_HK_IMG){ + if(Constants.DEALING_HK_ORG){ return ; } - Constants.DEALING_HK_IMG =true; + Constants.DEALING_HK_ORG =true; try { //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁 String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode(); List<Company> list = companyMapper.selectList(new QueryWrapper<Company>() - .select("*,(select b.hk_id from company b where company.erp_parent_id = b.id limit 1) as hkParentId") + .select("*,(select b.hk_id from company b where company.erp_parent_id = b.erp_id limit 1) as hkParentId") .lambda() .eq(Company::getHkStatus,Constants.ZERO) - .orderByDesc(Company::getErpDate)); + .orderByAsc(Company::getErpDate)); if(list ==null || list.size()==0){ return; } Date date = new Date(); + List<OrgEditRequest> editHkList = new ArrayList<>(); List<OrgAddRequest> addList = new ArrayList<>(); List<Company> updateList = new ArrayList<>(); List<Integer> delIds = new ArrayList<>(); @@ -95,24 +109,25 @@ c.setHkId(m.getOrgIndexCode()); updateList.add(c); }else{ - //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎 - delIds.add(c.getId()); - delHKIds.add(c.getHkId()); - //鍒犻櫎娴峰悍鍘熸湁鐨勬暟鎹紝鍐嶆柊澧炵粍缁� - OrgAddRequest m = getOrgAddModel(c,rootOrgId); - addList.add(m); - c.setHkId(m.getOrgIndexCode()); + if(Constants.equalsInteger(c.getIsdeleted(),Constants.ONE)){ + //鍒犻櫎鐨勬暟鎹紝杩涜鍒犻櫎 + delIds.add(c.getId()); + delHKIds.add(c.getHkId()); + }else{ + //濡傛灉鏇存柊 + editHkList.add(getOrgHkEditModel(c,rootOrgId)); + } updateList.add(c); } } //澶勭悊鍒犻櫎鏁版嵁 doHkDeleteOrg(delIds,delHKIds,date); //澶勭悊鏂板鏁版嵁 - doHkAddOrg(updateList,addList); + doHkAddOrg(updateList,addList,editHkList); }catch (Exception e){ e.printStackTrace(); }finally { - Constants.DEALING_HK_IMG =false; + Constants.DEALING_HK_ORG =false; } } @@ -122,23 +137,51 @@ * @param updateList * @param addList */ - private void doHkAddOrg(List<Company> updateList, List<OrgAddRequest> addList) { + private void doHkAddOrg(List<Company> updateList, List<OrgAddRequest> addList, List<OrgEditRequest> editHkList) { Date date = new Date(); - BaseResponse<OrgOrUserAddResponse> result = HKService.addBatchOrg(addList); - if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ - OrgOrUserAddResponse data = result.getData(); - if(data.getSuccesses()!=null && data.getSuccesses().size()>0){ - //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵�� - for(OrgOrUserAddSuccessResponse r :data.getSuccesses()){ - Integer index = getCompanyId(updateList,r.getOrgIndexCode()); - if(index!=null){ - companyMapper.update(null,new UpdateWrapper<Company>().lambda() - .set(Company::getHkStatus,Constants.ONE) - .set(Company::getHkDate,date) - .set(Company::getHkId,r.getOrgIndexCode()) - .eq(Company::getId, index) ); - } - } + if(addList!=null &&addList.size()>0){ + //澶勭悊鏂板 + BaseResponse<OrgOrUserAddResponse> result = HKService.addBatchOrg(addList); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + OrgOrUserAddResponse data = result.getData(); + if(data.getSuccesses()!=null && data.getSuccesses().size()>0){ + //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵�� + for(OrgOrUserAddSuccessResponse r :data.getSuccesses()){ + Integer index = getCompanyId(updateList,r.getOrgIndexCode()); + if(index!=null){ + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.ONE) + .set(Company::getHkDate,date) + .set(Company::getHkId,r.getOrgIndexCode()) + .eq(Company::getId, index) ); + } + } + } + } + } + if(editHkList!=null){ + //鎵ц鏇存柊鎿嶄綔 + List<String> success = new ArrayList<>(); + List<String> error = new ArrayList<>(); + for(OrgEditRequest param : editHkList){ + BaseResponse result = HKService.editOrg(param); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + success.add(param.getOrgIndexCode()); + }else{ + error.add(param.getOrgIndexCode()); + } + } + if(success.size()>0){ + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.ONE) + .set(Company::getHkDate,date) + .in(Company::getHkId, success) ); + } + if(error.size()>0){ + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.TWO) + .set(Company::getHkDate,date) + .in(Company::getHkId, error) ); } } } @@ -156,10 +199,17 @@ private OrgAddRequest getOrgAddModel(Company c,String rootOrgId) { OrgAddRequest model = new OrgAddRequest(); - model.setOrgIndexCode(HKConstants.RES_INDEX+UUID.randomUUID().toString()); + model.setOrgIndexCode(HKConstants.RES_ORG_INDEX+UUID.randomUUID().toString().replace("-","")); + model.setOrgName(c.getName()+HKConstants.RES_ORG_NAME_INDEX); +// model.setOrgCode(c.getCode()); + model.setParentIndexCode(c.getHkParentId()); + return model; + + } + private OrgEditRequest getOrgHkEditModel(Company c,String rootOrgId) { + OrgEditRequest model = new OrgEditRequest(); + model.setOrgIndexCode(c.getHkId()); model.setOrgName(c.getName()); - model.setOrgCode(c.getCode()); - model.setOrgIndexCode(c.getHkParentId()); return model; } @@ -170,22 +220,34 @@ * @param date */ private void doHkDeleteOrg(List<Integer> delIds,List<String> delHkIds, Date date) { + if(delHkIds.size() == 0){ + return; + } OrgDelRequest request = new OrgDelRequest(); - request.setIndexCodes((String[]) delHkIds.toArray()); + request.setIndexCodes( delHkIds.toArray(new String[]{})); BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request); - if(StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ List<String> fIds = new ArrayList<>(); if(result.getData()!=null){ for(OrgUpdateFailureResponse r : result.getData()){ - fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚� + if(!r.getCode().equals("0x00052102")){ + //涓嶅瓨鍦ㄧ殑涔熺畻鍒犻櫎鎴愬姛 + fIds.add(r.getOrgIndexCode());//鍒犻櫎澶辫触鐨勬暟鎹泦鍚� + } } } //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� companyMapper.update(null,new UpdateWrapper<Company>().lambda() .set(Company::getHkStatus,Constants.ONE) .set(Company::getHkDate,date) + .set(Company::getHkId,null ) .in(Company::getId, delIds) .notIn(fIds.size()>0,Company::getHkId, fIds)); + companyMapper.update(null,new UpdateWrapper<Company>().lambda() + .set(Company::getHkStatus,Constants.TWO) + .set(Company::getHkDate,date) + .in(Company::getId, delIds) + .in(fIds.size()>0,Company::getHkId, fIds)); } } @@ -195,7 +257,442 @@ */ @Override public void syncUserData(){ + if(Constants.DEALING_HK_USER){ + return ; + } + Constants.DEALING_HK_USER =true; + try { + //鏌ヨ鎵�鏈夐渶瑕佸悓姝ョ殑浼佷笟鏁版嵁 + List<Member> list = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() + .selectAll(Member.class ) + .selectAs(Company::getHkId,Member::getCompanyHkId) + .isNotNull(Member::getFaceImg) + .leftJoin(Company.class,Company::getId,Member::getCompanyId) + .eq(Member::getHkStatus,Constants.ZERO) + .orderByAsc(Member::getErpDate)); + if(list ==null || list.size()==0){ + return; + } + Date date = new Date(); + String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + for(Member c : list){ + dealMemberInfoBiz(c,date,path) ; + } + }catch (Exception e){ + e.printStackTrace(); + }finally { + Constants.DEALING_HK_USER =false; + } + } + public static List<Integer> getRoleIdByParam( Member member,DeviceRoleMapper deviceRoleMapper) { + //鏌ヨ鏁版嵁搴撳瓨鍦ㄧ殑鏉冮檺 + List<DeviceRole> deviceRoleList= deviceRoleMapper.selectList(new QueryWrapper<DeviceRole>().lambda() + .eq(DeviceRole::getType,Constants.TWO) + .exists("(select b.id from member_role b where b.ROLE_ID = device_role.ID and b.MEMBER_ID="+member.getId()+")")); + if(CollectionUtils.isNotEmpty(deviceRoleList)){ + List<MemberRole> memberRoleList = new ArrayList<>(); + String ids = ""; + List<Integer> r = new ArrayList<>(); + for (int i = 0; i < deviceRoleList.size(); i++) { + DeviceRole deviceRole =deviceRoleList.get(i); + if(i>0){ + ids += ","; + } + String doorids =deviceRole.getDoorIds(); + if(StringUtils.isNotBlank(doorids)){ + String[] ss = doorids.split(","); + try { + for(String s :ss){ + r.add(Integer.parseInt(s)); + } + }catch (Exception e){ + //鑴忔暟鎹笉澶勭悊 + } + } + } + return r; + } + return null; + } + @Transactional + private boolean dealMemberInfoBiz(Member c, Date date, String path) { + if( c.getCompanyId() == null){ + //濡傛灉娌℃湁缁勭粐涓嶅仛澶勭悊 + return false; + } + if(!Constants.equalsInteger(Constants.ONE,c.getIsdeleted()) && StringUtils.isBlank(c.getHkId())){ + //濡傛灉鏂板鍚屾鏁告摎 + dealUserHkAddBiz(c,date,path); + }else{ + //濡傛灉涔嬪墠宸茬粡鍜屾捣搴峰悓姝ワ紝鍒欐洿鏂扮敤鎴锋暟鎹互鍙婁汉鑴告暟鎹紙鍙兘鏂板浜鸿劯 涔熷彲鑳芥洿鏂颁汉鑴革級 + dealUserHkEditBiz(c,date,path); + } + return false; + } + private void dealMemberRoleEmpower(Member member ) { + //澶勭悊鏂板鐨勪汉鍛樺崱鐗囨暟鎹紙涓庢捣搴峰悓姝ワ級 + List<MemberCard> cards = dealMemberHkCard(member); + dealMemberRoleEmpowerDo(cards,member,deviceRoleMapper,empowerMapper,deviceMapper); + } + public static void dealMemberRoleEmpowerDo(List<MemberCard> cards,Member member , DeviceRoleMapper deviceRoleMapper, EmpowerMapper empowerMapper, DeviceMapper deviceMapper) { + if(cards == null || cards.size() == 0){ + return; + } + List<Integer> doorIds = getRoleIdByParam(member,deviceRoleMapper); + if(doorIds==null || doorIds.size() == 0){ + return; + } + if(StringUtils.isBlank(member.getFaceImg())){ + return; + } + + List<Integer> deviceIds =new ArrayList<>();//鏂拌澶囩紪鐮侀泦鍚� + List<Empower> list = new ArrayList<>();//鏂版巿鏉冭褰曢泦鍚� + if(Constants.equalsInteger(member.getIsdeleted(),Constants.ZERO) + && Constants.equalsObject(member.getHkStatus(),Constants.ONE)){ + //濡傛灉鐢ㄦ埛鏄悓姝ユ捣搴锋垚鍔燂紝娣诲姞甯︿笅鍙戞潈闄愶紙鍙鐞嗘柊澧炴垨鑰呯紪杈戠殑锛� + List<Device> deviceList = deviceMapper.selectList(new QueryWrapper<Device>().lambda().in(Device::getId,doorIds)); + if(deviceList == null || deviceList.size() == 0){ + return; + } + for (Device deviceRole:deviceList) { + Empower model = new Empower(); + model.setCreateDate(new Date()); + model.setMemberId(member.getId()); + model.setIsdeleted(Constants.ZERO); + model.setDeviceId(deviceRole.getId()); + model.setSendStatus(Constants.ZERO); + model.setSendInfo("寰呭悓姝ュ畨闃插钩鍙�"); + model.setRemark("寰呭悓姝ュ畨闃插钩鍙�"); + model.setStartTime(member.getStartTime()); + model.setEndTime(member.getEndTime()); + //榛樿缁欎簬铏氭嫙鍗� + model.setCardNos(Constants.VIRTUAL_CARD_INDEX+member.getId()); + model.setSendType(Constants.ZERO); + //鏍囪鏈�鏂扮殑鎺堟潈璁惧缂栫爜闆嗗悎 + deviceIds.add(deviceRole.getId()); + list.add(model); + } + + } + //寰呯Щ闄ゆ潈闄愮殑璁惧鏁版嵁鎺堟潈璁板綍锛堥拡瀵瑰垹闄ゅ拰鏇存柊涓㈠け鐨勬潈闄愶紝闇�瑕佸悓姝ヤ笅鍙戝垹闄ゆ潈闄愶級 + empowerMapper.update(null,new UpdateWrapper<Empower>().lambda() + .eq(Empower::getMemberId,member.getId()) + .set(Empower::getIsdeleted,Constants.ONE) + .eq(Empower::getIsdeleted,Constants.ZERO) + .notIn(deviceIds.size()>0,Empower::getDeviceId,deviceIds) + .set(Empower::getSendStatus,Constants.ZERO)); + //瀵煎叆鏂板鐨勬巿鏉冧俊鎭� + if(list.size()>0){ + //鐩存帴瑕嗙洊閲嶅鐨勮澶囨潈闄愶紝鐩存帴鍒犻櫎鍗冲彲 + empowerMapper.delete(new UpdateWrapper<Empower>().lambda() + .eq(Empower::getMemberId,member.getId()) + .eq(Empower::getIsdeleted,Constants.ZERO) + .in(Empower::getDeviceId,deviceIds) ); + empowerMapper.insertBatchSomeColumn(list); + } + } + + /** + * 瀵逛汉鍛樺甫寮�鍗℃暟鎹繘琛岃嚜鍔ㄥ紑鍗℃搷浣� + * @param member + * @return + */ + private List<MemberCard> dealMemberHkCard(Member member) { + List<MemberCard> memberCards = memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda() + .eq(MemberCard::getMemberId,member.getId()) + .eq(MemberCard::getType,Constants.TWO) + .eq(MemberCard::getHkStatus,Constants.ZERO) ); + if(memberCards==null || memberCards.size()==0){ + //娌℃湁甯﹀鐞嗙殑鏁版嵁锛岀洿鎺ヨ烦杩� + return getNormalCardList(member,memberCardMapper); + } + + List<Integer> allCodes = new ArrayList<>(); + List<String> doneCodes = new ArrayList<>(); + CardBingdingRequest param = new CardBingdingRequest(); + if(member.getStartTime() !=null && member.getEndTime()!=null){ + param.setStartDate(DateUtil.getISO8601Timestamp(member.getStartTime())); + param.setEndDate(DateUtil.getISO8601Timestamp(member.getEndTime())); + } + param.setCardList(new ArrayList<>()); + for(MemberCard m : memberCards){ + allCodes.add(m.getId()); + if(StringUtils.isBlank(m.getCode())){ + continue; + } + CardInfoRequest cr = new CardInfoRequest(); + cr.setCardNo(m.getCode()); + cr.setOrgIndexCode(member.getCompanyHkId()); + cr.setPersonId(member.getHkId()); + cr.setCardType(m.getType()); + param.getCardList().add(cr); + } + + //澶勭悊鏂板鏁版嵁 + BaseResponse<List<CardInfoResponse>> result = HKService.cardBingding(param); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){ + if(result.getData()!=null ){ + for(CardInfoResponse r : result.getData()){ + doneCodes.add(r.getCardNo()); + } + } + } + if(doneCodes.size()>0){ + memberCardMapper.update(null,new UpdateWrapper<MemberCard>().lambda() + .eq(MemberCard::getMemberId,member.getId()) + .eq(MemberCard::getHkStatus,Constants.ZERO) + .set(MemberCard::getHkStatus,Constants.ONE) + .set(MemberCard::getHkDate,new Date()) + .set(MemberCard::getRemark,"寮�鍗℃垚鍔�") + .in(MemberCard::getCode,doneCodes)); + } + memberCardMapper.update(null,new UpdateWrapper<MemberCard>().lambda() + .eq(MemberCard::getMemberId,member.getId()) + .eq(MemberCard::getHkStatus,Constants.ZERO) + .set(MemberCard::getHkStatus,Constants.TWO) + .set(MemberCard::getRemark,"寮�鍗″け璐�") + .set(MemberCard::getHkDate,new Date()) + .notIn(doneCodes.size()>0,MemberCard::getCode,doneCodes) + .in(MemberCard::getId,allCodes)); + + return getNormalCardList(member,memberCardMapper); + } + + public static List<MemberCard> getNormalCardList(Member member,MemberCardMapper memberCardMapper) { + return memberCardMapper.selectList(new QueryWrapper<MemberCard>().lambda() + .eq(MemberCard::getMemberId,member.getId()) + .eq(MemberCard::getType,Constants.TWO) + .eq(MemberCard::getStatus,Constants.MemberCard.normal) + .eq(MemberCard::getHkStatus,Constants.ONE) ); + + } + + + /** + * 濡傛灉涔嬪墠宸茬粡鍜屾捣搴峰悓姝ワ紝鍒欐洿鏂扮敤鎴锋暟鎹互鍙婁汉鑴告暟鎹紙鍙兘鏂板浜鸿劯 涔熷彲鑳芥洿鏂颁汉鑴革級 + * @param c + * @param date + * @param path + */ + private void dealUserHkEditBiz(Member c, Date date, String path) { + c.setHkStatus(Constants.ONE); + if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ + //澶勭悊鍒犻櫎鏁版嵁锛堝垹闄や箣鍓嶄笅鍙戠殑娴峰悍浜哄憳淇℃伅锛� + boolean r = doHkDeleteUser(c.getId(),c.getHkId(),date); + c.setHkStatus(r?Constants.ONE:Constants.TWO); + c.setRemark(r?null:"鍒犻櫎娴峰悍浜哄憳淇℃伅澶辫触锛�"); + c.setIsdeleted(r? Constants.ONE: Constants.ZERO);//鍒犻櫎澶辫触锛屾仮澶嶆暟鎹� + //鍒犻櫎鎵�鏈夌粦瀹氱殑鍗$墖淇℃伅 + memberCardMapper.delete(new QueryWrapper<MemberCard>().lambda().eq(MemberCard::getMemberId,c.getId())); + }else{ + //澶勭悊淇敼鏁版嵁锛屽苟涓旀洿鏂颁汉鑴� + UserAddRequest addHkModel = getUserAddModel(c,path,1);//淇敼 + //澶勭悊鏂板鏁版嵁 + BaseResponse result = HKService.editUser(addHkModel); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) ){ + if(StringUtils.isNotBlank(c.getFaceImg())){ + //濡傛灉鏈変汉鑴哥収鐗囷紝澶勭悊浜鸿劯鐓х墖鍚屾 + String faceid = dealMemberFace(c,path); + if(StringUtils.isBlank(faceid)){ + noticeErpFail(c,Constants.ZERO,"浜鸿劯淇℃伅鏇存柊澶辫触锛岃妫�鏌ヤ汉鑴哥収鐗囨槸鍚﹀悎娉曪紒"); + c.setHkStatus(Constants.TWO); + c.setRemark("浜鸿劯淇℃伅鏇存柊澶辫触锛岃妫�鏌ヤ汉鑴哥収鐗囨槸鍚﹀悎娉曪紒锛�"+result.getMsg()); + }else{ + c.setFaceId(faceid); + } + } + }else{ + noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"); + c.setHkStatus(Constants.TWO); + c.setRemark("浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴鏇存柊澶辫触锛岃淇鍚庨噸璇曪紒锛�"+(result!=null?result.getCode()+result.getMsg():"")); + } + //閲嶆柊涓嬪彂鏉冮檺鏁版嵁 + dealMemberRoleEmpower(c); + } + c.setHkDate(date); + memberMapper.updateById(c); + } + + /** + * 鏂扮敤鎴峰悓姝ュ埌娴峰悍骞冲彴 + * @param c + * @param date + * @param path + * @return + */ + private boolean dealUserHkAddBiz(Member c, Date date, String path) { + if(Constants.equalsInteger(Constants.ONE,c.getIsdeleted())){ + //鍒犻櫎鐨勭粍缁囷紝涓嶅仛澶勭悊,娴峰悍鐘舵�佹洿鏂颁负涓嶅鐞嗭紝涓嬫涓嶅啀澶勭悊杩欎釜璁板綍 + c.setHkStatus(Constants.TWO); + c.setRemark("鏈悓姝ユ暟鎹紝鐩存帴鍒犻櫎"); + c.setEditDate(date); + c.setErpId(c.getErpOrgId()+"_"+UUID.randomUUID().toString()); + memberMapper.updateById(c); + return false; + } + UserAddRequest addHkModel = getUserAddModel(c,path,0);//鏂板 + if(addHkModel == null){ + //濡傛灉浜鸿劯鏁版嵁涓嶆纭紝涓嬭浇澶辫触绛夊師鍥� + noticeErpFail(c,Constants.ZERO,"浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�"); + c.setHkStatus(Constants.TWO); + c.setRemark("浜鸿劯鐓х墖涓嶅瓨鍦紝鑾峰彇澶辫触锛�"); + memberMapper.updateById(c); + return false; + } + //澶勭悊鏂板鏁版嵁 + BaseResponse<UserAddResponse> result = HKService.addUser(addHkModel); + if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ + c.setFaceId(result.getData().getFaceId()); + c.setHkStatus(Constants.ONE); + c.setHkId(addHkModel.getPersonId()); + memberMapper.updateById(c); + dealMemberRoleEmpower(c); + return true; + }else{ + noticeErpFail(c,Constants.ZERO,"浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+result.getCode()+result.getMsg()); + c.setHkStatus(Constants.TWO); + c.setRemark("浜哄憳淇℃伅鍚屾瀹夐槻骞冲彴澶辫触锛岃淇鍚庨噸璇曪紒"+(result!=null?result.getMsg():"")); + memberMapper.updateById(c); + return false; + } + } + + /** + * 澶勭悊鏂板鎴栬�呬慨鏀逛汉鑴镐俊鎭� + * @param c + * @param path + * @return + */ + private String dealMemberFace(Member c,String path) { + if(StringUtils.isBlank(c.getFaceId())){ + BaseResponse<FaceAddOrEditesponse> response = HKService.addFace(getFaceAddModel(c,path)); + if(response !=null && StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE)&& response.getData()!=null ){ + return response.getData().getFaceId(); + } + }else{ + BaseResponse response = HKService.editFace(getFaceUpdateModel(c,path)); + if(StringUtils.equals(response.getCode(),HKConstants.RESPONSE_SUCCEE) ){ + return c.getFaceId(); + } + } + return null; + } + + /** + * 閫氱煡erp绯荤粺锛屼汉鍛樹笅鍙戝悓姝ヤ俊鎭姸鎬佸け璐� + * @param c + * @param type + * @param s + */ + private void noticeErpFail(Member c, int type, String s) { + UserFailRequest r = new UserFailRequest(); + r.setUserId(c.getErpId()); + r.setInfo(s); + r.setType(type); + //閫氱煡ERP浜鸿劯鏁版嵁涓嶆纭� + erpSyncService.noticeUserFail(r); + } + + /** + * 瀵规捣搴峰垹闄ょ粍缁囦俊鎭� + * @param id + * @param date + */ + private boolean doHkDeleteUser(Integer id,String delHkIds, Date date ) { + if(StringUtils.isBlank(delHkIds)){ + return true; + } + UserDelRequest request = new UserDelRequest(); + request.setPersonIds(new String[]{delHkIds}); + BaseResponse<List<UserDelResponse>> result = HKService.delBatchUser(request); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + List<String> fIds = new ArrayList<>(); + //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� + if(result.getData()!=null && result.getData().size()>0){ + log.info("娴峰悍鍒犻櫎鐢ㄦ埛澶辫触锛�==============="+result.getData().get(0).getPersonId()); + memberMapper.update(null,new UpdateWrapper<Member>().lambda() + .set(Member::getHkStatus,Constants.TWO)//鍚屾澶辫触 + .set(Member::getHkDate,date) + .in(Member::getId, id)); + }else{ + //鏍囪鍒犻櫎鎴愬姛鐨勬暟鎹紙娴峰悍瀵规帴鐘舵�佷负宸插悓姝ワ紝锛屽悓姝ュけ璐ョ殑浠嶄负寰呭悓姝ワ紝绛変笅涓�娆$户缁鐞嗭紝鐭ラ亾鍏ㄩ儴鍒犻櫎瀹屾瘯锛� + memberMapper.update(null,new UpdateWrapper<Member>().lambda() + .set(Member::getHkStatus,Constants.ONE)//鍚屾鎴愬姛 + .set(Member::getHkDate,date) + .in(Member::getId, id)); + } + return true; + } + return false; + } + + /** + * 鍒犻櫎浜哄憳鎵�鏈夎澶囦笂鐨勬潈闄愪俊鎭� + * @param userId + * @param allDevice + */ + private void delUserHkRolle(String userId,List<Device> allDevice) { + //鍒涘缓浠诲姟 + String taskId = hkTaskAddtion(); + // + if(taskId!=null){ + //鍒犻櫎鎵�鏈夎澶囦笂鐨勬潈闄� + addTaskDataAllDel(userId,taskId,allDevice); + startTask(taskId); + } + } + + private UserAddRequest getUserAddModel(Member c,String path,int type) { + UserAddRequest model = new UserAddRequest(); + model.setOrgIndexCode(c.getCompanyHkId()); + model.setJobNo(c.getCode()); + model.setCertificateNo(DESUtil.decrypt(Constants.EDS_PWD, c.getIdcardNo())); + model.setCertificateType(HKConstants.CertificateType.SHENFENZHENG.getKey()+""); + model.setPersonId(type == 0 ?UUID.randomUUID().toString().replace("-", ""):c.getHkId()); + model.setGender(Constants.formatIntegerNum(c.getSex())+""); + model.setPersonName(c.getName()); + if(type== 0 && StringUtils.isNotBlank(c.getFaceImg())){ + model.setFaces(new ArrayList<>()); + UserAddFaceRequest face = new UserAddFaceRequest(); + String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); + if(imageBase== null){ + //浜鸿劯鏁版嵁涓嶆纭紝 + return null; + } + face.setFaceData(imageBase); + model.getFaces().add(face); + + } + return model; + } + private FaceAddRequest getFaceAddModel(Member c,String path) { + FaceAddRequest model = new FaceAddRequest(); + model.setPersonId(c.getHkId()); + if(StringUtils.isNotBlank(c.getFaceImg())){ + String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); + if(imageBase == null){ + //浜鸿劯鏁版嵁涓嶆纭紝 + return null; + } + model.setFaceData(imageBase); + } + return model; + } + private FaceEditRequest getFaceUpdateModel(Member c,String path) { + FaceEditRequest model = new FaceEditRequest(); + model.setFaceId(c.getFaceId()); + if(StringUtils.isNotBlank(c.getFaceImg())){ + String imageBase = ImageBase64Util.Image2Base64(path+c.getFaceImg()); + if(imageBase == null){ + //浜鸿劯鏁版嵁涓嶆纭紝 + return null; + } + model.setFaceData(imageBase); + } + return model; } } -- Gitblit v1.9.3