From 792b5e1d022bd6133ccf1993f82dd809efe95040 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 26 十二月 2023 18:33:38 +0800 Subject: [PATCH] 海康接口对接开发 --- server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java | 186 +++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 165 insertions(+), 21 deletions(-) diff --git a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java index 1c94c15..62c0042 100644 --- a/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java +++ b/server/dmvisit_service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java @@ -1,9 +1,19 @@ package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.annotation.excel.ExcelColumn; 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.OrgAddRequest; +import com.doumee.core.haikang.model.param.request.OrgDelRequest; +import com.doumee.core.haikang.model.param.request.OrgEditRequest; +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.service.HKService; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; @@ -26,14 +36,13 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; +import org.checkerframework.checker.units.qual.C; import org.springframework.beans.BeanUtils; 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.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -46,16 +55,108 @@ @Autowired private CompanyMapper companyMapper; + @Autowired + private SystemDictDataBiz systemDictDataBiz; @Autowired private CompanyJoinMapper companyJoinMapper; @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer create(Company company) { + if(StringUtils.isBlank(company.getName())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + //鏌ヨ鍚嶇О涓嶈兘閲嶅 + if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() +// .eq(Company::getType,Constants.ONE) + .eq(Company::getName,company.getName()) + .eq(Company::getIsdeleted,Constants.ZERO)) >0){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐鍚嶇О涓嶈兘閲嶅~"); + } + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + String rootOrgId = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_ROOTORG_CODE).getCode(); + company.setHkParentId(rootOrgId); + if(company.getParentId() !=null){ + Company parent = findById(company.getParentId()); + if(parent == null || Constants.equalsInteger(parent.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐖剁骇缁勭粐淇℃伅涓嶅瓨鍦▇"); + } + if(StringUtils.isBlank(parent.getHkParentId())){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝鐖剁骇缁勭粐淇℃伅灏氭湭鍚屾涓嬪彂鎴愬姛~"); + + } + company.setHkParentId(parent.getHkParentId()); + } + company.setCreateDate(new Date()); + company.setCreator(user.getId()); + company.setIsdeleted(Constants.ZERO); + company.setHkStatus(Constants.ONE); + company.setStatus(Constants.ZERO); + company.setHkDate(company.getHkDate()); + company.setHkId(UUID.randomUUID().toString().replace("-","")); + companyMapper.insert(company); + //涓嬪彂娴峰悍瀹夐槻骞冲彴 + if(!addHkOrg(company)){ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝缁勭粐鍚屾涓嬪彂澶辫触锛岃绋嶅悗閲嶈瘯"); + } return company.getId(); } + private boolean addHkOrg(Company company) { + List<OrgAddRequest> addList = new ArrayList<>(); + addList.add(getOrgAddModel(company)); + + 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){ + //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵�� + return true; + } + } + return false; + } + + + private boolean editHkOrg(Company company) { + OrgEditRequest request = (getOrgHkEditModel(company)); + BaseResponse result = HKService.editOrg(request); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵�� + return true; + } + return false; + } + private boolean delHkOrg(Company company) { + OrgDelRequest request =new OrgDelRequest(); + request.setIndexCodes(new String[]{company.getHkId()}); + BaseResponse<List<OrgUpdateFailureResponse>> result = HKService.delBatchOrg(request); + if(result !=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE)){ + //澶勭悊鏂板鎴愬姛鐨勬暟鎹紝淇敼娴峰悍鍚屾鐘舵�� + if(result.getData()!=null && result.getData().size()>0){ + return true; + } + } + return false; + } + + + private OrgAddRequest getOrgAddModel(Company c ) { + OrgAddRequest model = new OrgAddRequest(); + model.setOrgIndexCode(HKConstants.RES_ORG_INDEX+ UUID.randomUUID().toString().replace("-","")); + model.setOrgName(c.getName()); +// model.setOrgCode(c.getCode()); + model.setParentIndexCode(c.getHkParentId()); + return model; + } + private OrgEditRequest getOrgHkEditModel(Company c ) { + OrgEditRequest model = new OrgEditRequest(); + model.setOrgIndexCode(c.getHkId()); + model.setOrgName(c.getName()); + return model; + } @Override public Integer createLaborServices(Company company) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); @@ -85,13 +186,30 @@ @Override public void deleteById(Integer id) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(id== null ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } - Company company=new Company(); + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + Company model = findById(id); + if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝缁勭粐淇℃伅涓嶅瓨鍦▇"); + } + if(StringUtils.isBlank(model.getHkId())){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝缁勭粐淇℃伅灏氭湭鍚屾涓嬪彂鎴愬姛,鏆備笉鏀寔淇敼锛岃灏濊瘯鍒犻櫎鍚庨噸鏂版坊鍔爚"); + } + Company company = new Company(); company.setId(id); - company.setIsdeleted(Constants.ZERO); company.setEditDate(new Date()); - company.setEditor(loginUserInfo.getId()); + company.setEditor(user.getId()); + company.setIsdeleted(Constants.ONE); + company.setHkStatus(Constants.ONE); + company.setHkDate(company.getHkDate()); companyMapper.updateById(company); + //涓嬪彂娴峰悍瀹夐槻骞冲彴 + if(!delHkOrg(company)){ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝缁勭粐鍒犻櫎涓嬪彂澶辫触锛岃纭璇ョ粍缁囨棤涓嬬骇缁勭粐鎴栫粍缁囦汉鍛樹俊鎭瘇"); + } } @Override @@ -105,22 +223,47 @@ if (CollectionUtils.isEmpty(ids)) { return; } - LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); - Company company=new Company(); - - // companyMapper.deleteBatchIds(ids); ids.stream().forEach(s->{ - company.setId(s); - company.setIsdeleted(Constants.ZERO); - company.setEditDate(new Date()); - company.setEditor(loginUserInfo.getId()); - companyMapper.updateById(company); + Company company = new Company(); + deleteById(s); }); } @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void updateById(Company company) { + if(company.getId() == null|| StringUtils.isBlank(company.getName())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + //鏌ヨ鍚嶇О涓嶈兘閲嶅 + if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() +// .eq(Company::getType,Constants.ONE) + .eq(Company::getName,company.getName()) + .ne(Company::getId,company.getId()) + .eq(Company::getIsdeleted,Constants.ZERO)) >0){ + throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "瀵逛笉璧凤紝缁勭粐鍚嶇О涓嶈兘閲嶅~"); + } + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + Company model = findById(company.getId()); + if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝缁勭粐淇℃伅涓嶅瓨鍦▇"); + } + if(StringUtils.isBlank(model.getHkId())){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝缁勭粐淇℃伅灏氭湭鍚屾涓嬪彂鎴愬姛,鏆備笉鏀寔淇敼锛岃灏濊瘯鍒犻櫎鍚庨噸鏂版坊鍔爚"); + } + company.setEditDate(new Date()); + company.setEditor(user.getId()); + company.setHkStatus(Constants.ONE); + company.setHkDate(company.getHkDate()); + company.setHkId(model.getHkId()); companyMapper.updateById(company); + //涓嬪彂娴峰悍瀹夐槻骞冲彴 + if(StringUtils.isNotBlank(company.getHkId()) + && Constants.equalsObject(Constants.ONE,model.getHkId()) + && !editHkOrg(company)){ + throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"瀵逛笉璧凤紝缁勭粐鍚屾涓嬪彂澶辫触锛岃绋嶅悗閲嶈瘯"); + } + } @Override @@ -295,22 +438,23 @@ @Override public List<CompanyDTO> findCompanyTreePage(Integer type) { - + //閰嶇疆缁勫憳浜哄憳绫诲瀷鏉ユ簮鏂瑰紡 0鑷缓 1ERP + String origin = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ORG_USER_ORIGIN).getCode(); LambdaQueryWrapper<Company> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Company::getIsdeleted,Constants.ZERO) .eq(Constants.equalsInteger(type,Constants.ONE),Company::getType,type); List<Company> companies = companyMapper.selectList(wrapper); - return getCompanyTree( companies, null); + return getCompanyTree( companies, null,origin); } - private List<CompanyDTO> getCompanyTree(List<Company> companies, Integer parentId){ + private List<CompanyDTO> getCompanyTree(List<Company> companies, String parentId,String origin){ if (CollectionUtils.isEmpty(companies)){ return null; } List<Company> collect = companies.stream() - .filter(s -> Constants.equalsInteger(s.getParentId(), parentId)) + .filter(s -> (StringUtils.equals(origin, Constants.ONE+"")?StringUtils.equals(s.getErpParentId(), parentId):StringUtils.equals(s.getParentId()+"", parentId))) .collect(Collectors.toList()); if (CollectionUtils.isEmpty(companies)){ return null; @@ -320,7 +464,7 @@ Company company = collect.get(i); CompanyDTO companyDTO = new CompanyDTO(); BeanUtils.copyProperties(company,companyDTO); - companyDTO.setCompanyDTOList(getCompanyTree(companies, company.getId())); + companyDTO.setCompanyDTOList(getCompanyTree(companies,StringUtils.equals(origin, Constants.ONE+"")?company.getErpId(): company.getId()+"",origin)); companyDTOList.add(companyDTO); } return companyDTOList; -- Gitblit v1.9.3