package com.doumee.service.business.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; import com.doumee.dao.business.model.*; import com.doumee.dao.system.SystemUserMapper; import com.doumee.dao.system.dto.CompanyDTO; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.model.SystemUserRole; import com.doumee.service.business.*; import com.doumee.service.business.CompanyChangeService; import com.doumee.service.business.CompanyEconomicsService; import com.doumee.service.business.CompanyService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.system.SystemUserRoleService; import com.doumee.service.system.SystemUserService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; /** * 企业信息表Service实现 * * @author 江蹄蹄 * @date 2023/02/15 08:55 */ @Service public class CompanyServiceImpl implements CompanyService { @Autowired private CompanyMapper companyMapper; @Autowired private SystemUserService systemUserService; @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private SystemUserRoleService systemUserRoleService; @Autowired private MultifileService multifileService; @Autowired private CompanyEconomicsMapper companyEconomicsMapper; @Autowired private CompanyEconomicsService companyEconomicsService; @Autowired private SystemUserMapper systemUserMapper; @Autowired private CompanyChangeService companyChangeService; @Autowired private CompanyChangeMapper companyChangeMapper; @Autowired private CompanyJoinMapper companyJoinMapper; @Autowired private ProjectService projectService; @Autowired private DeclaresMapper declaresMapper; @Autowired private AreasService areasService; @Autowired private LabelsMapper labelsMapper; @Override public Integer create(Company company) { companyMapper.insert(company); return company.getId(); } @Override public void deleteById(Integer id) { companyMapper.deleteById(id); } @Override public void delete(Company company) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(company); companyMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } companyMapper.deleteBatchIds(ids); } @Transactional(rollbackFor = {RuntimeException.class,Exception.class}) @Override public void updateById(Company company) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Company update = new Company(); if (Constants.equalsInteger(user.getType(), Constants.UserType.SYSTEM.getKey())){ update.setId(company.getId()); }else { update.setId(user.getCompanyId()); } //补全企业信息 company.setType(Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); firstUpdateCompany(company); Date now = new Date(); update.setId(company.getId()); update.setEditor(user.getId()); update.setEditDate(now); update.setRegisterDate(company.getRegisterDate()); update.setProduct(company.getProduct()); update.setAddress(company.getAddress()); update.setLegalPersonPhone(company.getLegalPersonPhone()); update.setLinkName(company.getLinkName()); update.setLinkPhone(company.getLinkPhone()); update.setNatureId(company.getNatureId()); update.setLabelId(company.getLabelId()); update.setIndustryId(company.getIndustryId()); update.setContent(company.getContent()); update.setLabelId(company.getLabelId()); List list = company.getList(); if (org.apache.commons.collections.CollectionUtils.isNotEmpty(list) && Constants.equalsInteger(user.getType(),Constants.ONE)){ list.forEach(s->{ s.setCompanyId(company.getId()); companyEconomicsService.createOrUpdate(s); }); } //修改 工商变更 // updateCompanyMultifiles(company.getChangeFileList(), company.getId(), Constants.MultiFile.BUSINESS_CHANGE.getKey()); //修改 企业资质集合 updateCompanyMultifiles(company.getZzFileList(), company.getId(), Constants.MultiFile.BUSINESS_ZZ.getKey()); //修改 企业中标通知书集合 updateCompanyMultifiles(company.getNoticeFileList(), company.getId(),Constants.MultiFile.BUSINESS_NOTICE.getKey()); companyMapper.updateById(update); } private void updateCompanyMultifiles(List multifileList, Integer companyId, Integer objType){ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(multifileList)){ Multifile multifile = new Multifile(); multifile.setObjId(companyId); multifile.setObjType(objType); multifileService.delete(multifile); multifileList.forEach(s->{ Multifile insert = new Multifile(); insert.setIsdeleted(Constants.ZERO); insert.setCreateDate(new Date()); insert.setObjId(companyId); insert.setObjType(objType); insert.setName(s.getName()); insert.setType(Constants.ZERO); insert.setFileurl(s.getFileurl()); multifileService.create(insert); }); } } /** * 补全必要信息 */ private void firstUpdateCompany(Company updateCompany){ Company currentCompany = companyMapper.selectById(updateCompany.getId()); if (Objects.isNull(currentCompany)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请输入正确的企业信息"); } Company company = new Company(); Boolean update = false; if (StringUtils.isEmpty(currentCompany.getCreditCode())){ //统一信用代码校验 if (StringUtils.isNotEmpty(updateCompany.getCreditCode())){ QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Company::getType,currentCompany.getType()) .eq(Company::getCreditCode,updateCompany.getCreditCode()); Integer integer = companyMapper.selectCount(wrapper); if (integer > 0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"统一信用代码存在重复"); } } update = true; company.setCreditCode(updateCompany.getCreditCode()); }else if (StringUtils.isNotEmpty(currentCompany.getCreditCode()) && StringUtils.isNotEmpty(updateCompany.getCreditCode()) && !currentCompany.getCreditCode().equals(updateCompany.getCreditCode()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); } // currentCompany.getCityId(); if (Objects.isNull(currentCompany.getCityId())){ update = true; company.setCityId(updateCompany.getCityId()); }else if (Objects.nonNull(currentCompany.getCityId()) && Objects.nonNull(updateCompany.getCityId()) && !currentCompany.getCityId().equals(updateCompany.getCityId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); } // currentCompany.getAreaId(); if (Objects.isNull(currentCompany.getAreaId())){ update = true; company.setAreaId(updateCompany.getAreaId()); }else if (Objects.nonNull(currentCompany.getAreaId()) && Objects.nonNull(updateCompany.getAreaId()) && !currentCompany.getAreaId().equals(updateCompany.getAreaId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); } // currentCompany.getProduct(); // if (Objects.isNull(currentCompany.getProduct())){ // update = true; // company.setProduct(updateCompany.getProduct()); // }else if (Objects.nonNull(currentCompany.getProduct()) // && Objects.nonNull(updateCompany.getProduct()) // && !currentCompany.getProduct().equals(updateCompany.getProduct())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getAddress(); // if (Objects.isNull(currentCompany.getAddress())){ // update = true; // company.setAddress(updateCompany.getAddress()); // }else if (Objects.nonNull(currentCompany.getAddress()) // && Objects.nonNull(updateCompany.getAddress()) // && !currentCompany.getAddress().equals(updateCompany.getAddress())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getRegisterDate(); // if (Objects.isNull(currentCompany.getRegisterDate())){ // update = true; // company.setRegisterDate(updateCompany.getRegisterDate()); // }else if (Objects.nonNull(currentCompany.getRegisterDate()) // && Objects.nonNull(updateCompany.getRegisterDate()) // && !currentCompany.getRegisterDate().equals(updateCompany.getRegisterDate())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getLegalPerson(); if (StringUtils.isEmpty(currentCompany.getLegalPerson())){ update = true; company.setLegalPerson(updateCompany.getLegalPerson()); }else if (StringUtils.isNotEmpty(currentCompany.getLegalPerson()) && StringUtils.isNotEmpty(updateCompany.getLegalPerson()) && !currentCompany.getLegalPerson().equals(updateCompany.getLegalPerson())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); } // currentCompany.getLegalPersonPhone(); // if (Objects.isNull(currentCompany.getLegalPersonPhone())){ // update = true; // company.setLegalPersonPhone(updateCompany.getLegalPersonPhone()); // }else if (Objects.nonNull(currentCompany.getLegalPersonPhone()) // && Objects.nonNull(updateCompany.getLegalPersonPhone()) // && !currentCompany.getLegalPersonPhone().equals(updateCompany.getLegalPersonPhone())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getLinkName(); // if (Objects.isNull(currentCompany.getLinkName())){ // update = true; // company.setLinkName(updateCompany.getLinkName()); // }else if (Objects.nonNull(currentCompany.getLinkName()) // && Objects.nonNull(updateCompany.getLinkName()) // && !currentCompany.getLinkName().equals(updateCompany.getLinkName())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getLinkPhone(); // if (Objects.isNull(currentCompany.getLinkPhone())){ // update = true; // company.setLinkPhone(updateCompany.getLinkPhone()); // }else if (Objects.nonNull(currentCompany.getLinkPhone()) // && Objects.nonNull(updateCompany.getLinkPhone()) // && !currentCompany.getLinkPhone().equals(updateCompany.getLinkPhone())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getNatureId(); // if (Objects.isNull(currentCompany.getNatureId())){ // update = true; // company.setNatureId(updateCompany.getNatureId()); // }else if (Objects.nonNull(currentCompany.getNatureId()) // && Objects.nonNull(updateCompany.getNatureId()) // && !currentCompany.getNatureId().equals(updateCompany.getNatureId())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getIndustryId(); // if (Objects.isNull(currentCompany.getIndustryId())){ // update = true; // company.setIndustryId(updateCompany.getIndustryId()); // }else if (Objects.nonNull(currentCompany.getIndustryId()) // && Objects.nonNull(updateCompany.getIndustryId()) // && !currentCompany.getIndustryId().equals(updateCompany.getIndustryId())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } // currentCompany.getContent(); // if (Objects.isNull(currentCompany.getContent())){ // update = true; // company.setContent(updateCompany.getContent()); // }else if (Objects.nonNull(currentCompany.getContent()) // && Objects.nonNull(updateCompany.getContent()) // && !currentCompany.getContent().equals(updateCompany.getContent())){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业信息不可修改"); // } if(org.apache.commons.collections.CollectionUtils.isNotEmpty(updateCompany.getBusinessList())){ //判断是否存在营业执照 有就就不允许传 Map> objAllFileUrl = multifileService.getOBJAllFileUrl(updateCompany.getId(), Constants.ZERO); if (!objAllFileUrl.containsKey(Constants.MultiFile.BUSINESS_LICENSE.getKey())){ updateCompany.getBusinessList().forEach(s->{ Multifile multifile = new Multifile(); multifile.setIsdeleted(Constants.ZERO); multifile.setCreateDate(new Date()); multifile.setObjId(updateCompany.getId()); multifile.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifile.setType(Constants.ZERO); multifile.setName(s.getName()); multifile.setFileurl(s.getFileurl()); multifile.setType(Constants.ZERO); multifileService.create(multifile); }); }else { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业营业执照不可随意修改,如需要,请走企业变更申请流程!"); } } UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.lambda().eq(Company::getId,updateCompany.getId()); if (update){ companyMapper.update(company,wrapper); } } @Override @Transactional(rollbackFor = {BusinessException.class, Exception.class}) public void improveData(Company company) { Company oldCom = companyMapper.selectById(company.getId()); /** * 后台分配的账户首次可进行企业名称、所属区域、企业法定代表人、营业执照信息的修改,资料完善提交后只能走变更审核流程,不需审核的字段可一直进行完善资料 */ if (oldCom.getOrigin() == Constants.ONE && this.judgeImproveIsFinish(company)) { if (!StringUtils.equals(oldCom.getName().trim(), company.getName().trim()) || oldCom.getCityId() != company.getCityId() || !StringUtils.equals(oldCom.getLegalPerson().trim(), company.getLegalPerson().trim()) || !StringUtils.equals(oldCom.getFileurl().trim(), company.getFileurl().trim()) ) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "不允许操作"); } } if ( /* StringUtils.isBlank(company.getName())||*/ StringUtils.isBlank(company.getCreditCode()) || StringUtils.isBlank(company.getCreditCode()) || StringUtils.isBlank(company.getPassword()) || StringUtils.isBlank(company.getProduct()) || /* company.getAreaId()==null|| company.getCityId()==null||*/ StringUtils.isBlank(company.getAddress()) || /* StringUtils.isBlank(company.getLegalPerson())||*/ StringUtils.isBlank(company.getLegalPersonPhone()) || StringUtils.isBlank(company.getLinkName()) || StringUtils.isBlank(company.getLinkPhone()) || company.getNatureId() == null || company.getIndustryId() == null || StringUtils.isBlank(company.getRegisterDate()) || StringUtils.isBlank(company.getContent()) || StringUtils.isBlank(company.getCreditCode()) /* StringUtils.isBlank(company.getFileurl())*/ ) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); company.setEditDate(new Date()); company.setEditor(user.getId()); Company cpquery = new Company(); cpquery.setName(company.getName().trim()); List cqList = companyMapper.selectList(new QueryWrapper<>(cpquery)); if (cqList.size() > 1) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "企业名称已存在!"); } companyMapper.updateById(company); /**------------------start 插入/更新经济指标------------------------*/ if (org.apache.commons.collections.CollectionUtils.isNotEmpty(company.getList())) { //判断是否关联经济指标,未关联插入,已关联更新 CompanyEconomics ceQuery = new CompanyEconomics(); ceQuery.setIsdeleted(Constants.ZERO); ceQuery.setCompanyId(company.getId()); List ceList = companyEconomicsMapper.selectList(new QueryWrapper<>(ceQuery) .orderByAsc() .last("limit 3") ); for (int i = 0; i < company.getList().size(); i++) { CompanyEconomics cesNew = company.getList().get(i); Boolean sign = true; for (int j = 0; j < ceList.size(); j++) { CompanyEconomics cesOld = ceList.get(j); if (cesNew.getYears() == cesOld.getYears()) { cesNew.setId(cesOld.getId()); cesNew.setIsdeleted(Constants.ZERO); cesNew.setEditDate(new Date()); cesNew.setEditor(user.getId()); cesNew.setCompanyId(company.getId()); companyEconomicsService.createOrUpdate(cesNew); sign = false; } } if (sign) { cesNew.setIsdeleted(Constants.ZERO); cesNew.setCompanyId(company.getId()); companyEconomicsService.create(cesNew); } } } /**------------------end 插入/更新经济指标------------------------*/ /**------------------end 插入/更新营业执照------------------------*/ Multifile mufQuery = new Multifile(); mufQuery.setIsdeleted(Constants.ZERO); mufQuery.setObjId(company.getId()); mufQuery.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); mufQuery.setType(Constants.ZERO); Multifile resultMf = multifileService.findOne(mufQuery); //判断营业执照是否存在更新,不存在插入 if (Objects.nonNull(resultMf)) { mufQuery.setFileurl(company.getFileurl()); mufQuery.setEditDate(new Date()); mufQuery.setEditor(user.getId()); multifileService.updateById(mufQuery); } else { //添加营业执照 Multifile multifile = new Multifile(); multifile.setIsdeleted(Constants.ZERO); multifile.setCreateDate(new Date()); multifile.setObjId(company.getId()); //multifile.setName(); multifile.setType(Constants.ZERO); multifile.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifile.setFileurl(company.getFileurl()); multifileService.create(multifile); } /**------------------end 插入/更新营业执照------------------------*/ /**------------------start 更新登录账号------------------------*/ SystemUser systemUser = new SystemUser(); systemUser.setCompanyId(company.getId()); systemUser.setDeleted(Boolean.FALSE); SystemUser querysys = systemUserMapper.selectOne(new QueryWrapper<>(systemUser)); systemUser.setUpdateUser(user.getId()); systemUser.setUpdateTime(new Date()); systemUser.setId(querysys.getId()); systemUser.setUsername(company.getName().trim()); systemUserMapper.updateById(systemUser); /**------------------end 更新登录账号------------------------*/ } @Override public void updateByIdInBatch(List companys) { if (CollectionUtils.isEmpty(companys)) { return; } for (Company company : companys) { this.updateById(company); } } @Override public Company findById(Integer id) { return companyMapper.selectById(id); } @Override public Company findOne(Company company) { QueryWrapper wrapper = new QueryWrapper<>(company); return companyMapper.selectOne(wrapper); } @Override public List findList(Company company) { company.setIsdeleted(Constants.ZERO); QueryWrapper wrapper = new QueryWrapper<>(company); if(company.getProjectId()!=null){ // wrapper.exists("(select b.id from project_so b where b.COMPANY_ID = company.id and b.isdeleted=0 and b.project_id="+company.getProjectId()+")"); wrapper.exists("(select b.id from declares b where b.SO_ID = company.id and b.isdeleted=0 and b.project_id="+company.getProjectId()+")"); } if(company.getNoProjectId()!=null){ wrapper.notExists("(select b.id from project_so b where b.COMPANY_ID = company.id and b.isdeleted=0 and b.project_id="+company.getNoProjectId()+")"); } return companyMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Company::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Company::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Company::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Company::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(Company::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Company::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Company::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(Company::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getOrigin() != null) { queryWrapper.lambda().eq(Company::getOrigin, pageWrap.getModel().getOrigin()); } if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().eq(Company::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Company::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getLegalPerson() != null) { queryWrapper.lambda().eq(Company::getLegalPerson, pageWrap.getModel().getLegalPerson()); } if (pageWrap.getModel().getLegalPersonPhone() != null) { queryWrapper.lambda().eq(Company::getLegalPersonPhone, pageWrap.getModel().getLegalPersonPhone()); } if (pageWrap.getModel().getRegisterDate() != null) { queryWrapper.lambda().eq(Company::getRegisterDate, pageWrap.getModel().getRegisterDate()); } if (pageWrap.getModel().getAreaId() != null) { queryWrapper.lambda().eq(Company::getAreaId, pageWrap.getModel().getAreaId()); } if (pageWrap.getModel().getCityId() != null) { queryWrapper.lambda().eq(Company::getCityId, pageWrap.getModel().getCityId()); } if (pageWrap.getModel().getProduct() != null) { queryWrapper.lambda().eq(Company::getProduct, pageWrap.getModel().getProduct()); } if (pageWrap.getModel().getAddress() != null) { queryWrapper.lambda().eq(Company::getAddress, pageWrap.getModel().getAddress()); } if (pageWrap.getModel().getCreditCode() != null) { queryWrapper.lambda().eq(Company::getCreditCode, pageWrap.getModel().getCreditCode()); } if (pageWrap.getModel().getLinkName() != null) { queryWrapper.lambda().eq(Company::getLinkName, pageWrap.getModel().getLinkName()); } if (pageWrap.getModel().getLinkPhone() != null) { queryWrapper.lambda().eq(Company::getLinkPhone, pageWrap.getModel().getLinkPhone()); } if (pageWrap.getModel().getNatureId() != null) { queryWrapper.lambda().eq(Company::getNatureId, pageWrap.getModel().getNatureId()); } if (pageWrap.getModel().getIndustryId() != null) { queryWrapper.lambda().eq(Company::getIndustryId, pageWrap.getModel().getIndustryId()); } if (pageWrap.getModel().getContent() != null) { queryWrapper.lambda().eq(Company::getContent, pageWrap.getModel().getContent()); } if (pageWrap.getModel().getType() != null) { queryWrapper.lambda().eq(Company::getType, pageWrap.getModel().getType()); } for (PageWrap.SortData sortData : pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(companyMapper.selectPage(page, queryWrapper)); } @Override public long count(Company company) { QueryWrapper wrapper = new QueryWrapper<>(company); return companyMapper.selectCount(wrapper); } @Override @Transactional(rollbackFor = {BusinessException.class, Exception.class}) public Integer register(Company company) { // 验证用户名 if (StringUtils.isBlank(company.getName().trim()) || StringUtils.isBlank(company.getCreditCode()) || StringUtils.isBlank(company.getPassword()) || StringUtils.isBlank(company.getProduct()) || company.getAreaId() == null || company.getCityId() == null || StringUtils.isBlank(company.getAddress()) || StringUtils.isBlank(company.getLegalPerson()) || StringUtils.isBlank(company.getLegalPersonPhone()) || StringUtils.isBlank(company.getLinkName()) || StringUtils.isBlank(company.getLinkPhone()) || company.getNatureId() == null || company.getIndustryId() == null || StringUtils.isBlank(company.getRegisterDate()) || StringUtils.isBlank(company.getContent()) || org.apache.commons.collections.CollectionUtils.isEmpty(company.getFileList()) ) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage()); } Company fData = new Company(); fData.setName(company.getName().trim()); fData.setType(Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); fData.setIsdeleted(Constants.ZERO); Company resData = this.findOne(fData); if (Objects.nonNull(resData)) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "该企业名称已注册!"); } Company query = new Company(); query.setCreditCode(company.getCreditCode()); query.setIsdeleted(Constants.ZERO); query.setType(Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); resData = this.findOne(query); if (Objects.nonNull(resData)) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "该统一信用社代码企业已注册!"); } company.setName(company.getName().trim()); company.setType(Constants.CompanyType.BUSINESS_COMPANYTYPE.getValue()); company.setUserName(company.getUserName()); company.setOrigin(Constants.ORIGIN.platformRegister); company.setIsdeleted(Constants.ZERO); company.setCreateDate(new Date()); //企业添加数据 createSystemUser(company); //添加营业执照 company.getFileList().stream().forEach(s -> { if(StringUtils.isEmpty(s.getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请上传营业执照!"); } s.setIsdeleted(Constants.ZERO); s.setCreateDate(new Date()); s.setObjId(company.getId()); s.setType(Constants.ZERO); s.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifileService.create(s); }); return company.getId(); } @Transactional(rollbackFor = {BusinessException.class, Exception.class}) @Override public Integer registerServiceCompany(ServiceCompanyDTO company) { Company fData = new Company(); fData.setName(company.getCompanyName().trim()); fData.setIsdeleted(Constants.ZERO); fData.setType(Constants.CompanyType.SERVICE_COMPANYTYPE.getValue()); Company resData = this.findOne(fData); if (Objects.nonNull(resData)) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业名称已存在"); } Company query = new Company(); query.setCreditCode(company.getCreditCode()); query.setIsdeleted(Constants.ZERO); query.setType(Constants.CompanyType.SERVICE_COMPANYTYPE.getValue()); resData = this.findOne(query); if (Objects.nonNull(resData)) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "统一社会信用代码已存在"); } Company insert = new Company(); insert.setOrigin(Constants.ORIGIN.platformRegister); insert.setName(company.getCompanyName()); insert.setLegalPerson(company.getLegalPerson()); insert.setLegalPersonPhone(company.getLegalPersonPhone()); insert.setAreaId(company.getAreaId()); insert.setCityId(company.getCityId()); insert.setLabelId(company.getLabelId()); insert.setAddress(company.getAddress()); insert.setCreditCode(company.getCreditCode()); insert.setLinkName(company.getLinkName()); insert.setLinkPhone(company.getLinkPhone()); insert.setContent(company.getContent()); insert.setType(Constants.ONE); insert.setIsdeleted(Constants.ZERO); insert.setCreateDate(new Date()); insert.setEditDate(new Date()); Integer integer = create(insert); //添加营业执照 company.getFileList().stream().forEach(s -> { if(StringUtils.isEmpty(s.getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请上传营业执照!"); } s.setIsdeleted(Constants.ZERO); s.setCreateDate(new Date()); s.setObjId(insert.getId()); s.setType(Constants.ZERO); s.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifileService.create(s); }); //系统用户表插入信息 SystemUser systemUser = new SystemUser(); systemUser.setUsername(company.getUserName()); systemUser.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(systemUser); if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在!"); } // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(company.getPassword(), salt)); systemUser.setSalt(salt); // 创建用户记录 systemUser.setStatus(Constants.ZERO); systemUser.setMobile(company.getLegalPersonPhone()); systemUser.setCreateTime(new Date()); systemUser.setType(Constants.UserType.SO_ADMIN.getKey()); systemUser.setCompanyId(insert.getId()); systemUser.setCityId(company.getCityId()); systemUser.setAreaId(company.getAreaId()); Integer userId = systemUserService.create(systemUser); //获取服务机构角色id String roleCode = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.SO_ADMIN_ROLE).getCode(); // 新增新的角色 SystemUserRole newUserRole = new SystemUserRole(); newUserRole.setCreateTime(new Date()); newUserRole.setUserId(userId); newUserRole.setRoleId(Integer.valueOf(roleCode)); newUserRole.setCreateUser(userId); systemUserRoleService.create(newUserRole); return null; } @Transactional(rollbackFor = {BusinessException.class, Exception.class}) @Override public Integer registerZFServiceCompany(ServiceCompanyDTO company) { Company fData = new Company(); fData.setName(company.getCompanyName().trim()); fData.setIsdeleted(Constants.ZERO); fData.setType(Constants.CompanyType.ZF_SERVICE_COMPANY.getValue()); Company resData = this.findOne(fData); if (Objects.nonNull(resData)) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "企业名称已存在!"); } Company query = new Company(); query.setCreditCode(company.getCreditCode()); query.setIsdeleted(Constants.ZERO); query.setType(Constants.CompanyType.ZF_SERVICE_COMPANY.getValue()); resData = this.findOne(query); if (Objects.nonNull(resData)) { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "统一社会信用代码已注册!"); } Company insert = new Company(); insert.setOrigin(Constants.ORIGIN.platformRegister); insert.setName(company.getCompanyName()); insert.setLegalPerson(company.getLegalPerson()); insert.setLegalPersonPhone(company.getLegalPersonPhone()); insert.setAreaId(company.getAreaId()); insert.setCityId(company.getCityId()); insert.setLabelId(company.getLabelId()); insert.setAddress(company.getAddress()); insert.setCreditCode(company.getCreditCode()); insert.setLinkName(company.getLinkName()); insert.setLinkPhone(company.getLinkPhone()); insert.setContent(company.getContent()); insert.setType(Constants.TWO); insert.setIsdeleted(Constants.ZERO); Integer integer = create(insert); //添加营业执照 company.getFileList().stream().forEach(s -> { if(StringUtils.isEmpty(s.getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请上传营业执照!"); } s.setIsdeleted(Constants.ZERO); s.setCreateDate(new Date()); s.setObjId(insert.getId()); s.setType(Constants.ZERO); s.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifileService.create(s); }); //系统用户表插入信息 SystemUser systemUser = new SystemUser(); systemUser.setUsername(company.getUserName()); systemUser.setType(Constants.UserType.SD_ADMIN.getKey()); systemUser.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(systemUser); if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在!"); } // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(company.getPassword(), salt)); systemUser.setSalt(salt); // 创建用户记录 systemUser.setStatus(Constants.ZERO); systemUser.setMobile(company.getLegalPersonPhone()); systemUser.setCreateTime(new Date()); systemUser.setType(Constants.UserType.SD_ADMIN.getKey()); systemUser.setCompanyId(insert.getId()); systemUser.setCityId(company.getCityId()); systemUser.setAreaId(company.getAreaId()); Integer userId = systemUserService.create(systemUser); //获取服务机构角色id String roleCode = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.SD_ADMIN_ROLE).getCode(); // 新增新的角色 SystemUserRole newUserRole = new SystemUserRole(); newUserRole.setCreateTime(new Date()); newUserRole.setUserId(userId); newUserRole.setRoleId(Integer.valueOf(roleCode)); newUserRole.setCreateUser(userId); systemUserRoleService.create(newUserRole); return null; } @Override public void createSystemUser(Company company) { int insert = companyMapper.insert(company); //系统用户表插入信息 SystemUser systemUser = new SystemUser(); systemUser.setRealname(company.getName()); systemUser.setUsername(company.getUserName() != null ? company.getUserName() : company.getName()); systemUser.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(systemUser); if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在!"); } // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(company.getPassword(), salt)); systemUser.setSalt(salt); // 创建用户记录 systemUser.setStatus(Constants.ZERO); systemUser.setMobile(company.getLegalPersonPhone()); systemUser.setCreateTime(new Date()); systemUser.setType(Constants.UserType.COMPANY.getKey()); systemUser.setCompanyId(company.getId()); systemUser.setCityId(company.getCityId()); systemUser.setAreaId(company.getAreaId()); Integer userId = systemUserService.create(systemUser); //获取企业角色id String roleCode = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.COMPANY_ROLE).getCode(); // 新增新的角色 SystemUserRole newUserRole = new SystemUserRole(); newUserRole.setCreateTime(new Date()); newUserRole.setUserId(userId); newUserRole.setRoleId(Integer.valueOf(roleCode)); newUserRole.setCreateUser(userId); systemUserRoleService.create(newUserRole); } @Override public Company queryCompanyDetail(Company company) { //查询企业资料 MPJLambdaWrapper mpjWrapper = new MPJLambdaWrapper<>(); mpjWrapper.selectAll(Company.class) .select("l2.name as industryName") .select("l.name as natureName") .select("l3.name as labelName") .leftJoin("labels l on l.id = t.NATURE_ID ") .leftJoin("labels l2 on l2.id = t.INDUSTRY_ID ") .leftJoin("labels l3 on l3.id = t.LABEL_ID ") .eq(Company::getId,company.getId()) ; Company result = companyJoinMapper.selectOne(mpjWrapper); // Company result = companyMapper.selectById(company.getId()); Areas city = areasService.findById(result.getCityId(), Constants.ONE); Areas area = areasService.findById(result.getAreaId(), Constants.TWO); String belongAddress = Optional.ofNullable(city) .map(item -> item.getProvinceName() + item.getName()) .orElse(""); String areaName = Optional.ofNullable(area).map(s->s.getName()).orElse(""); result.setCityName(city !=null?city.getName():null); result.setAreaName(areaName); result.setProvinceId(city !=null?city.getProvinceId():null); result.setProvinceName(city !=null?city.getProvinceName():null); result.setBelongAreaName(belongAddress + areaName); if (Objects.nonNull(result)) { //查询营业执照 String path =systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); dealCompanyFiles(result,path); if (Constants.equalsInteger(result.getType(),Constants.ZERO)){ List lastThreeCompanyEconomics = companyEconomicsService.findLastThreeCompanyEconomics(company.getId()); result.setList(lastThreeCompanyEconomics); } //查询企业工商变更登记信息 CompanyChange companyChange = new CompanyChange(); companyChange.setIsdeleted(Constants.ZERO); companyChange.setCompanyId(result.getId()); companyChange.setStatus(Constants.ONE);//审核通过 CompanyChange comChangeRes = companyChangeMapper.selectOne(new QueryWrapper<>(companyChange) .orderByDesc("EDIT_DATE") .last("limit 1") ); if (Objects.nonNull(comChangeRes)) { //工商变更登记图片 Multifile multifile1 = new Multifile(); multifile1.setIsdeleted(Constants.ZERO); multifile1.setObjId(comChangeRes.getId()); multifile1.setObjType(Constants.MultiFile.BUSINESS_CHANGE.getKey()); multifile1.setType(Constants.ZERO); List query1 = multifileService.findList(multifile1); comChangeRes.setChangeFileList(query1); Multifile multifile2 = new Multifile(); //营业执照图片 multifile2.setIsdeleted(Constants.ZERO); multifile2.setObjId(comChangeRes.getId()); multifile2.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifile2.setType(Constants.ZERO); List query2list = multifileService.findList(multifile2); comChangeRes.setFileList(query2list); initFulFileurl(query1,path); initFulFileurl(query2list,path); result.setCompanyChange(comChangeRes); } } return result; } private void dealCompanyFiles(Company result, String path) { Multifile tf = new Multifile(); tf.setIsdeleted(Constants.ZERO); tf.setObjId(result.getId()); // tf.setType(Constants.ZERO); List comfileList = multifileService.findList(tf); initFulFileurl(comfileList,path); if(comfileList!=null){ for(Multifile tt : comfileList){ if(Constants.equalsInteger(tt.getObjType(), Constants.MultiFile.BUSINESS_LICENSE.getKey())){ if(result.getBusinessList() == null){ result.setBusinessList( new ArrayList<>()); } result.getBusinessList().add(tt); }else if(Constants.equalsInteger(tt.getObjType(), Constants.MultiFile.BUSINESS_CHANGE.getKey())){ if(result.getChangeFileList() == null){ result.setChangeFileList( new ArrayList<>()); } result.getChangeFileList().add(tt); }else if(Constants.equalsInteger(tt.getObjType(), Constants.MultiFile.BUSINESS_ZZ.getKey())){ if(result.getZzFileList() == null){ result.setZzFileList( new ArrayList<>()); } result.getZzFileList().add(tt); }else if(Constants.equalsInteger(tt.getObjType(), Constants.MultiFile.BUSINESS_NOTICE.getKey())){ if(result.getNoticeFileList() == null){ result.setNoticeFileList( new ArrayList<>()); } result.getNoticeFileList().add(tt); } } } } private void initFulFileurl(List query2list,String path) { if(query2list!=null){ for(Multifile f :query2list){ if(StringUtils.isNoneBlank(f.getFileurl())){ f.setFileurlfull(path +f.getFileurl()); } } } } @Override public CompanyDTO queryCompanyDetail(Integer companyId) { MPJLambdaWrapper mpjWrapper = new MPJLambdaWrapper<>(); mpjWrapper.selectAll(Company.class) .select("l2.name as industryName") .select("l3.name as labelName") .select("l.name as natureName"); mpjWrapper.leftJoin("labels l on l.id = t.NATURE_ID ") .leftJoin("labels l2 on l2.id = t.INDUSTRY_ID ") .leftJoin("labels l3 on l3.id = t.LABEL_ID ") .eq(Company::getId,companyId); Company result = companyJoinMapper.selectOne(mpjWrapper.last(" limit 1")); CompanyDTO serviceCompany = new CompanyDTO(); if (Objects.nonNull(result)) { BeanUtils.copyProperties(result, serviceCompany); //查询该服务商资源 Map> objAllFileUrl = multifileService.getOBJAllFileUrl(result.getId(),Constants.ZERO); List licenseUrls = Optional.ofNullable(objAllFileUrl.get(Constants.MultiFile.BUSINESS_LICENSE.getKey())) .orElse(new ArrayList<>()) .stream() .map(s -> s.getFileurl()) .collect(Collectors.toList()); List businessChanges = Optional.ofNullable(objAllFileUrl.get(Constants.MultiFile.BUSINESS_CHANGE.getKey())) .orElse(new ArrayList<>()) .stream() .map(s -> s.getFileurl()) .collect(Collectors.toList()); List businessZzs = Optional.ofNullable(objAllFileUrl.get(Constants.MultiFile.BUSINESS_ZZ.getKey())) .orElse(new ArrayList<>()) .stream() .map(s -> s.getFileurl()) .collect(Collectors.toList()); List businessNotices = Optional.ofNullable(objAllFileUrl.get(Constants.MultiFile.BUSINESS_NOTICE.getKey())) .orElse(new ArrayList<>()) .stream() .map(s -> s.getFileurl()) .collect(Collectors.toList()); //企业查询经济指标 if (Constants.equalsInteger(result.getType(),Constants.ZERO)){ List lastThreeCompanyEconomics = companyEconomicsService.findLastThreeCompanyEconomics(result.getId()); result.setList(lastThreeCompanyEconomics); } Areas city = areasService.findById(serviceCompany.getCityId(), Constants.ONE); Areas areas = areasService.findById(serviceCompany.getAreaId(), Constants.TWO); serviceCompany.setProvinceId(city==null?null:city.getProvinceId()); serviceCompany.setProvinceName(city==null?null:city.getProvinceName()); serviceCompany.setCityName(city==null?null:city.getName()); serviceCompany.setAreaName(areas != null ? areas.getName(): ""); serviceCompany.setChanceFileUrls(businessChanges); serviceCompany.setFileurls(licenseUrls); serviceCompany.setCertificationUrls(businessZzs); serviceCompany.setAcceptances(businessNotices); } return serviceCompany; } /** * 是否完善资料 * * @return * @ true 已完成资料,FALSE 未完成资料 */ @Override public Boolean judgeImproveIsFinish(Company param) { Company company = companyMapper.selectById(param.getId()); if (Objects.nonNull(company)) { //查询营业执照 Multifile multifile = new Multifile(); multifile.setIsdeleted(Constants.ZERO); multifile.setObjId(company.getId()); multifile.setObjType(Constants.MultiFile.BUSINESS_LICENSE.getKey()); multifile.setType(Constants.ZERO); List query = multifileService.findList(multifile); String path =systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); initFulFileurl(query,path); if(query==null||query.size()<=0){ return false; } //查询近三年经济指标 CompanyEconomics ceQuery = new CompanyEconomics(); ceQuery.setIsdeleted(Constants.ZERO); ceQuery.setCompanyId(company.getId()); List ceList = companyEconomicsMapper.selectList(new QueryWrapper<>(ceQuery) .apply(" YEARS >= year(now())-3 ") .orderByDesc("YEARS") .last("limit 3") ); if(ceList.size()>0){ boolean b = ceList.stream().anyMatch(s -> { BigDecimal income = s.getIncome(); BigDecimal profit = s.getProfit(); return (Objects.isNull(income) || Objects.isNull(profit)); }); if (b){ return !b; } Integer year = LocalDate.now().getYear(); Integer upyear=year-1; if(!Constants.equalsInteger(upyear,ceList.get(0).getYears())){ return false; } } if ( StringUtils.isNotEmpty(company.getName()) && StringUtils.isNotEmpty(company.getCreditCode()) && StringUtils.isNotEmpty(company.getProduct()) && company.getAreaId() != null && company.getCityId() != null && StringUtils.isNotEmpty(company.getAddress()) && StringUtils.isNotEmpty(company.getLegalPerson()) && StringUtils.isNotEmpty(company.getLegalPersonPhone()) && StringUtils.isNotEmpty(company.getLinkName()) && StringUtils.isNotEmpty(company.getLinkPhone()) && company.getNatureId() != null && company.getIndustryId() != null && StringUtils.isNotEmpty(company.getRegisterDate()) && StringUtils.isNotEmpty(company.getContent()) && ceList.size() == 3 ) { return true; } else { return false; } } else { return false; } } @Override public Boolean judgeCompanyServiceIsFinish(Company param) { Company company = companyMapper.selectById(param.getId()); if (Objects.nonNull(company)) { Multifile multifile = new Multifile(); multifile.setObjId(param.getId()); List query = multifileService.findList(multifile); List collect = query.stream().map(s -> s.getObjType()) .collect(Collectors.toList()); boolean b = Arrays.asList(Constants.MultiFile.BUSINESS_LICENSE.getKey()).stream() .allMatch(s -> collect.contains(s)); if ( b && StringUtils.isNotEmpty(company.getName()) && StringUtils.isNotEmpty(company.getCreditCode()) && company.getAreaId() != null && company.getCityId() != null && StringUtils.isNotEmpty(company.getAddress()) && StringUtils.isNotEmpty(company.getLegalPerson()) && StringUtils.isNotEmpty(company.getLegalPersonPhone()) && StringUtils.isNotEmpty(company.getLinkName()) && StringUtils.isNotEmpty(company.getLinkPhone()) && StringUtils.isNotEmpty(company.getRegisterDate()) && StringUtils.isNotEmpty(company.getContent()) ) { return true; } } return false; } @Override public Integer updateZFServiceCompany(Company company) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if (Constants.equalsInteger(user.getType(),Constants.UserType.SD_ADMIN.getKey())){ updateById(company); } return null; } }