package com.doumee.service.business.impl; 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.join.SolutionWorktypeJoinMapper; import com.doumee.dao.business.join.SolutionsJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.CompanyService; import com.doumee.service.business.SolutionsService; 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.github.yulichang.wrapper.MPJLambdaWrapper; 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.util.*; /** * 保险方案信息表Service实现 * @author 江蹄蹄 * @date 2024/01/16 10:03 */ @Service public class SolutionsServiceImpl implements SolutionsService { @Autowired private SystemDictDataBiz systemDictDataBiz; @Autowired private MultifileMapper multifileMapper; @Autowired private SolutionsMapper solutionsMapper; @Autowired private SolutionsJoinMapper solutionsJoinMapper; @Autowired private WorktypeMapper worktypeMapper; @Autowired private SolutionWorktypeJoinMapper solutionWorktypeJoinMapper; @Autowired private InsuranceMapper insuranceMapper; @Autowired private CompanySolutionMapper companySolutionMapper; @Autowired private DuSolutionMapper duSolutionMapper; @Autowired private SolutionsBaseMapper solutionsBaseMapper; @Autowired private InsuranceApplyMapper insuranceApplyMapper; @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer create(Solutions solutions) { LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); initCreateParam(solutions);//工种数据有效性检验,去除空白行数据 if(solutionsMapper.selectCount(new QueryWrapper().lambda() .eq(Solutions::getName,solutions.getName()) .eq(Solutions::getIsdeleted,Constants.ZERO) .eq(Solutions::getDataType,Constants.ZERO) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"保险方案名称已存在"); } SolutionsBase solutionsBase = solutionsBaseMapper.selectById(solutions.getParentId()); if(Objects.isNull(solutionsBase)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到主方案数据!"); } solutions.setInsuranceId(solutionsBase.getInsuranceId()); solutions.setCanAdd(solutionsBase.getCanAdd()); solutions.setCanReduce(solutionsBase.getCanReduce()); solutions.setCanChangeUnit(solutionsBase.getCanChangeUnit()); solutions.setAddValidDays(solutionsBase.getAddValidDays()); solutions.setDelValidDays(solutionsBase.getDelValidDays()); solutions.setMinAge(solutionsBase.getMinAge()); solutions.setMaxAge(solutionsBase.getMaxAge()); solutions.setSpecialInfo(solutionsBase.getSpecialInfo()); solutions.setSpecialAgreement(solutionsBase.getSpecialAgreement()); solutions.setOrtherInfo(solutionsBase.getOrtherInfo()); solutions.setValidType(solutionsBase.getValidType()); solutions.setValidTypeNum(solutionsBase.getValidTypeNum()); solutions.setIsdeleted(Constants.ZERO); solutions.setCreator(user.getId()); solutions.setCreateDate(new Date()); solutions.setVersion(UUID.randomUUID().toString());//版本号 solutions.setDataType(Constants.ZERO); solutions.setStatus(Constants.ZERO); solutions.setCorrectWarnTime(solutionsBase.getCorrectWarnTime()); solutions.setDelOnlyReplace(solutionsBase.getDelOnlyReplace()); //2024年6月17日15:56:18 仅支持替换模式下,批增日期 等于 批减日期 if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)){ solutions.setAddValidDays(solutions.getDelValidDays()); } solutionsMapper.insert(solutions);//基础版本 //如果有工种,则产生一个新的有效历史版本 ~ Solutions newModel = new Solutions(); BeanUtils.copyProperties(solutions,newModel); newModel.setId(null); newModel.setBaseId(solutions.getId()); newModel.setDataType(Constants.TWO); solutionsMapper.insert(newModel); List worktypes = solutionWorktypeJoinMapper.selectList( new QueryWrapper().lambda() .eq(SolutionWorktype::getSolutionId,solutionsBase.getId()) .eq(SolutionWorktype::getType,Constants.ONE) .eq(SolutionWorktype::getIsdeleted,Constants.ZERO) ); dealWorkType(solutions,newModel,worktypes); if (solutions.getFanganFile()==null || StringUtils.isBlank(solutions.getFanganFile().getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传方案确认书!"); } Multifile file = solutions.getFanganFile(); file.setIsdeleted(Constants.ZERO); file.setCreateDate(new Date()); file.setCreator(user.getId()); file.setObjId(solutions.getId()); file.setObjType(Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey()); file.setType(Constants.formatIntegerNum(file.getType())); multifileMapper.insert(file); file.setId(null); file.setObjId(newModel.getId()); multifileMapper.insert(file); return solutions.getId(); } private void dealWorkType(Solutions solutions, Solutions newModel, List worktypes) { int num =0; for(SolutionWorktype type : worktypes) { //基础版本 SolutionWorktype w = new SolutionWorktype(); w.setSolutionId(solutions.getId()); w.setIsdeleted(Constants.ZERO); w.setCreator(newModel.getCreator()); w.setCreateDate(solutions.getCreateDate()); w.setWorktypeId(type.getWorktypeId()); w.setStatus(Constants.ZERO); w.setType(Constants.ZERO); w.setSortnum(num++); solutionWorktypeJoinMapper.insert(w); //历史版本的工种信息 SolutionWorktype newType = new SolutionWorktype(); BeanUtils.copyProperties(w, newType); newType.setSolutionId(newModel.getId()); solutionWorktypeJoinMapper.insert(newType); } } private void dealWorkType(Solutions solutions, Solutions newModel, List worktypeIdList, boolean b) { Insurance model = insuranceMapper.selectById(solutions.getInsuranceId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) || !Constants.equalsInteger(model.getDataType(),Constants.TWO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该保险公司信息不存在,请尝试刷新页面重试~" ); } if( !Constants.equalsInteger(model.getStatus(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该保险公司已被禁用,请尝试刷新页面重试~" ); } List worktypeList = worktypeMapper.selectList(new QueryWrapper().lambda() .eq(Worktype::getInsuranceId,solutions.getInsuranceId()) .eq(Worktype::getIsdeleted,Constants.ZERO) .in(Worktype::getId,worktypeIdList)); if(worktypeList==null ||worktypeIdList.size()==0){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,工种信息选择有误,请尝试刷新页面重试~" ); } int num =0; for(Worktype type : worktypeList) { //基础版本 SolutionWorktype w = new SolutionWorktype(); w.setSolutionId(solutions.getId()); w.setIsdeleted(Constants.ZERO); w.setCreator(newModel.getCreator()); w.setCreateDate(solutions.getCreateDate()); w.setWorktypeId(type.getId()); w.setStatus(Constants.ZERO); w.setSortnum(num++); solutionWorktypeJoinMapper.insert(w); //历史版本的工种信息 SolutionWorktype newType = new SolutionWorktype(); BeanUtils.copyProperties(w, newType); newType.setSolutionId(newModel.getId()); solutionWorktypeJoinMapper.insert(newType); } } private void initCreateParam(Solutions solutions) { if(StringUtils.isBlank(solutions.getName()) ||Objects.isNull(solutions.getParentId()) ||Objects.isNull(solutions.getType()) ||Objects.isNull(solutions.getRetrial()) ||Objects.isNull(solutions.getFanganFile()) // ||Constants.formatIntegerNum(solutions.getPriceCycleUnit()) < 0 ||Constants.formatIntegerNum(solutions.getInsureCycle()) < 0 ||Constants.formatIntegerNum(solutions.getInsureCycleUnit()) < 0 || Constants.formatBigdecimal(solutions.getPrice()).compareTo(new BigDecimal(0)) !=1 ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //委托投保加签方式 if(Constants.equalsInteger(solutions.getType(),Constants.ONE) && ( Objects.isNull(solutions.getSignType()) || Objects.isNull(solutions.getShopId()))){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } } @Override public void deleteById(Integer id) { //查询是否已存在使用中的保单 if(insuranceApplyMapper.selectCount(new QueryWrapper().lambda() .apply(" solution_id in ( select id from solutions where BASE_ID = "+id+" or id = "+id+" )" ) .notIn(InsuranceApply::getStatus ,Constants.InsuranceApplyStatus.PLATFORM_RETURN.getKey() ,Constants.InsuranceApplyStatus.CLOSE.getKey() ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() ) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在已投保的保单数据,无法进行删除"); }; solutionsMapper.update(null,new UpdateWrapper() .lambda() .set(Solutions::getIsdeleted,Constants.ONE) .and(i->i.eq(Solutions::getId,id).or().eq(Solutions::getBaseId,id)) ); } @Override public void delete(Solutions solutions) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(solutions); solutionsMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } solutionsMapper.deleteBatchIds(ids); } @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public void updateById(Solutions solutions) { LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); Solutions model = findById(solutions.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) || !Constants.equalsInteger(model.getDataType(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } //数据有效性校验 initCreateParam(solutions); //查询是否已存在使用中的保单 if(insuranceApplyMapper.selectCount(new QueryWrapper().lambda() .apply(" solution_id in ( select id from solutions where BASE_ID = "+solutions.getId()+" or id = "+solutions.getId()+" )" ) .notIn(InsuranceApply::getStatus ,Constants.InsuranceApplyStatus.PLATFORM_RETURN.getKey() ,Constants.InsuranceApplyStatus.CLOSE.getKey() ,Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() ) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在已投保的保单数据,无法进行修改"); }; solutions.setType(null);//不支持修改投保方案 if(solutionsMapper.selectCount(new QueryWrapper().lambda() .eq(Solutions::getName,solutions.getName()) .eq(Solutions::getIsdeleted,Constants.ZERO) .eq(Solutions::getDataType,Constants.ZERO) .ne(Solutions::getId,solutions.getId()) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"保险方案名称已存在"); } solutions.setEditor(user.getId()); solutions.setVersion(UUID.randomUUID().toString()); solutions.setEditDate(new Date()); solutionsMapper.updateById(solutions); Solutions oldVersion = solutionsMapper.selectOne(new QueryWrapper() .lambda() .eq(Solutions::getBaseId,solutions.getId()) .eq(Solutions::getDataType,Constants.TWO) .last("limit 1") ); if(Objects.isNull(oldVersion)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到历史版本数据"); } //如果修改,则产生一个新的历史版本 ~ Solutions newModel = new Solutions(); BeanUtils.copyProperties( findById(solutions.getId()),newModel); newModel.setId(null); newModel.setVersion(solutions.getVersion()); newModel.setCreateDate(new Date()); newModel.setBaseId(solutions.getId()); newModel.setDataType(Constants.TWO); solutionsMapper.insert(newModel); /** * 修改当前的启用方案为历史方案 */ solutionsMapper.update(null,new UpdateWrapper() .lambda() .ne(Solutions::getId,newModel.getId()) .eq(Solutions::getBaseId,solutions.getId()) .eq(Solutions::getDataType,Constants.TWO) .set(Solutions::getDataType,Constants.ONE) .set(StringUtils.isNotBlank(solutions.getSignKeyword()),Solutions::getSignKeyword,solutions.getSignKeyword()) ); if (solutions.getFanganFile()==null || StringUtils.isBlank(solutions.getFanganFile().getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传方案确认书!"); } multifileMapper.update(null,new UpdateWrapper().lambda() .set(Multifile::getIsdeleted,Constants.ONE) .set(Multifile::getEditDate,solutions.getEditDate()) .set(Multifile::getEditor,solutions.getEditor()) .eq(Multifile::getObjId,solutions.getId()) .eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjType,Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey())); Multifile file = solutions.getFanganFile(); file.setIsdeleted(Constants.ZERO); file.setCreateDate(solutions.getEditDate()); file.setCreator(solutions.getEditor()); file.setObjId(solutions.getId()); file.setObjType(Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey()); file.setType(Constants.formatIntegerNum(file.getType())); multifileMapper.insert(file); file.setObjId(newModel.getId()); multifileMapper.insert(file); //删除所有工种数据 solutionWorktypeJoinMapper.delete(new UpdateWrapper() .lambda() .eq(SolutionWorktype::getSolutionId,solutions.getId()) ); List worktypes = solutionWorktypeJoinMapper.selectList( new QueryWrapper().lambda() .eq(SolutionWorktype::getSolutionId,solutions.getParentId()) .eq(SolutionWorktype::getType,Constants.ONE) .eq(SolutionWorktype::getIsdeleted,Constants.ZERO) ); dealWorkType(solutions,newModel,worktypes); //更新company_solution 使用新版本的数据 companySolutionMapper.update(null, new UpdateWrapper() .lambda() .eq(CompanySolution::getStatus,Constants.ZERO) .set(CompanySolution::getSolutionId,newModel.getId()) .eq(CompanySolution::getSolutionBaseId,solutions.getId()) ); //更新 du_solution 使用新版本的数据 duSolutionMapper.update(null, new UpdateWrapper() .lambda() .eq(DuSolution::getIsdeleted, Constants.ZERO) .eq(DuSolution::getStatus, Constants.ONE) .set(DuSolution::getSolutionId,newModel.getId()) .eq(DuSolution::getSolutionId,oldVersion.getId())); } @Override public void updateByIdInBatch(List solutionss) { if (CollectionUtils.isEmpty(solutionss)) { return; } for (Solutions solutions: solutionss) { this.updateById(solutions); } } @Override public void updateStatus(Solutions solutions){ if(solutions.getId() == null || solutions.getStatus()==null || solutions.getStatus()<0||solutions.getStatus()>1){ throw new BusinessException(ResponseStatus.BAD_REQUEST ); } Solutions model = findById(solutions.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) || !Constants.equalsInteger(model.getDataType(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } if(Constants.equalsInteger(model.getStatus(),solutions.getStatus())){ //如果状态不发生改变,直接返回 return; } LoginUserInfo user= (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); //同时更新基表和历史版本所有数据状态 solutionsMapper.update(null,new UpdateWrapper() .lambda() .and(m -> m.eq(Solutions::getId,model.getId()).or().eq(Solutions::getBaseId,model.getId())) .eq(Solutions::getIsdeleted,Constants.ZERO) .set(Solutions::getEditDate,new Date()) .set(Solutions::getEditor,user.getId()) .set(Solutions::getStatus,solutions.getStatus()) ); } @Override public Solutions findById(Integer id) { MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(Solutions.class); queryWrapper.selectAs(Insurance::getName,Solutions::getInsuranceName); queryWrapper.selectAs(Company::getName,Solutions::getShopName); queryWrapper.selectAs(SolutionsBase::getName,Solutions::getSolutionBaseName); queryWrapper.leftJoin(Insurance.class,Insurance::getId,Solutions::getInsuranceId); queryWrapper.leftJoin(Company.class,Company::getId,Solutions::getShopId); queryWrapper.leftJoin(SolutionsBase.class,SolutionsBase::getId,Solutions::getParentId); queryWrapper.eq(Solutions::getId,id); Solutions model = solutionsJoinMapper.selectJoinOne(Solutions.class,queryWrapper); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(SolutionWorktype.class); wrapper.selectAs(Worktype::getName,SolutionWorktype::getWorktypeName); wrapper.leftJoin(Worktype.class,Worktype::getId,SolutionWorktype::getWorktypeId); wrapper.eq(SolutionWorktype::getSolutionId,id); wrapper.eq(SolutionWorktype::getIsdeleted,Constants.ZERO); wrapper.orderByAsc(SolutionWorktype::getSortnum); List worktypeList = solutionWorktypeJoinMapper.selectJoinList(SolutionWorktype.class,wrapper); model.setWorktypeList(worktypeList); Multifile f = multifileMapper.selectOne(new QueryWrapper().lambda() .eq(Multifile::getObjId,model.getId()) .eq(Multifile::getObjType,Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey()) .eq(Multifile::getIsdeleted,Constants.ZERO) .last("limit 1")); if(f!=null && StringUtils.isNotBlank(f.getFileurl())){ String url = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode()+f.getFileurl(); f.setFileurlFull(url); model.setFanganFile(f);//方案确认书 } return model; } @Override public Solutions findOne(Solutions solutions) { QueryWrapper wrapper = new QueryWrapper<>(solutions); return solutionsMapper.selectOne(wrapper); } @Override public List findList(Solutions solutions) { LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); solutions.setIsdeleted(Constants.ZERO); solutions.setStatus(Objects.nonNull(solutions.getStatus())?solutions.getStatus():null); if(solutions.getDataType() == null){ solutions.setDataType(Constants.TWO); } QueryWrapper wrapper = new QueryWrapper<>(solutions); if(Constants.equalsObject(user.getType(),Constants.TWO)){ //如果是删除 // wrapper.lambda().exists("select c.id from company_solution c left join solutions d on c.solution_id=d.id where c.isdeleted=0 and d.base_id=solutions.base_id and c.shop_id="+user.getCompanyId());//设置无效访问 wrapper.apply("((solutions.type=0 and exists(select cs.id from company_solution cs left join solutions s on cs.solution_id=s.id " + " where cs.isdeleted=0 and cs.SIGN_STATUS = 1 and s.base_id=solutions.base_id and cs.shop_id="+user.getCompanyId()+")) or (" + "solutions.type=1 and solutions.shop_id="+user.getCompanyId()+"))") ; } return solutionsMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); Utils.MP.blankToNull(pageWrap.getModel()); pageWrap.getModel().setDataType(Constants.ZERO);//只选择基表数据 pageWrap.getModel().setIsdeleted(Constants.ZERO); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); if(user.getType().equals(Constants.ONE)){ queryWrapper.selectAll(Solutions.class); queryWrapper.selectAs(Insurance::getName,Solutions::getInsuranceName); queryWrapper.selectAs(Company::getName,Solutions::getShopName); queryWrapper.selectAs(SolutionsBase::getName,Solutions::getSolutionBaseName); queryWrapper.selectAs(CompanySolution::getSignDate,Solutions::getSignDate); queryWrapper.selectAs(CompanySolution::getSignStatus,Solutions::getSignStatus); queryWrapper.selectAs(CompanySolution::getFileSignUrl,Solutions::getFileSignUrl); queryWrapper.selectAs(CompanySolution::getId,Solutions::getCompanySolutionId); queryWrapper.selectAs(SystemUser::getRealname,Solutions::getSignUserName); queryWrapper.leftJoin(Insurance.class,Insurance::getId,Solutions::getInsuranceId); queryWrapper.leftJoin(Company.class,Company::getId,Solutions::getShopId); queryWrapper.leftJoin(SolutionsBase.class,SolutionsBase::getId,Solutions::getParentId); queryWrapper.leftJoin(CompanySolution.class,CompanySolution::getSolutionBaseId,Solutions::getId); queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,CompanySolution::getSignUserId); queryWrapper.eq(CompanySolution::getCompanyId,user.getCompanyId()); queryWrapper.eq(CompanySolution::getIsdeleted,Constants.ZERO); }else{ queryWrapper.selectAll(Solutions.class); queryWrapper.selectAs(Insurance::getName,Solutions::getInsuranceName); queryWrapper.selectAs(Company::getName,Solutions::getShopName); queryWrapper.selectAs(SolutionsBase::getName,Solutions::getSolutionBaseName); queryWrapper.leftJoin(Insurance.class,Insurance::getId,Solutions::getInsuranceId); queryWrapper.leftJoin(Company.class,Company::getId,Solutions::getShopId); queryWrapper.leftJoin(SolutionsBase.class,SolutionsBase::getId,Solutions::getParentId); } if (pageWrap.getModel().getId() != null) { queryWrapper.eq(Solutions::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.eq(Solutions::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getSignStatus() != null) { queryWrapper.eq(CompanySolution::getSignStatus, pageWrap.getModel().getSignStatus()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.ge(Solutions::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.le(Solutions::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.eq(Solutions::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.ge(Solutions::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.le(Solutions::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.eq(Solutions::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getName() != null) { queryWrapper.like(Solutions::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.eq(Solutions::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.eq(Solutions::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getSortnum() != null) { queryWrapper.eq(Solutions::getSortnum, pageWrap.getModel().getSortnum()); } if (pageWrap.getModel().getInsuranceId() != null) { queryWrapper.eq(Solutions::getInsuranceId, pageWrap.getModel().getInsuranceId()); } if (pageWrap.getModel().getValidType() != null) { queryWrapper.eq(Solutions::getValidType, pageWrap.getModel().getValidType()); } if (pageWrap.getModel().getType() != null) { queryWrapper.eq(Solutions::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getMinAge() != null) { queryWrapper.eq(Solutions::getMinAge, pageWrap.getModel().getMinAge()); } if (pageWrap.getModel().getMaxAge() != null) { queryWrapper.eq(Solutions::getMaxAge, pageWrap.getModel().getMaxAge()); } if (pageWrap.getModel().getPrice() != null) { queryWrapper.eq(Solutions::getPrice, pageWrap.getModel().getPrice()); } if (pageWrap.getModel().getTimeUnit() != null) { queryWrapper.eq(Solutions::getTimeUnit, pageWrap.getModel().getTimeUnit()); } if (pageWrap.getModel().getInsureCycle() != null) { queryWrapper.eq(Solutions::getInsureCycle, pageWrap.getModel().getInsureCycle()); } if (pageWrap.getModel().getInsureCycleUnit() != null) { queryWrapper.eq(Solutions::getInsureCycleUnit, pageWrap.getModel().getInsureCycleUnit()); } if (pageWrap.getModel().getPriceCycleUnit() != null) { queryWrapper.eq(Solutions::getPriceCycleUnit, pageWrap.getModel().getPriceCycleUnit()); } if (pageWrap.getModel().getSingleWorktype() != null) { queryWrapper.eq(Solutions::getSingleWorktype, pageWrap.getModel().getSingleWorktype()); } if (pageWrap.getModel().getEmail() != null) { queryWrapper.eq(Solutions::getEmail, pageWrap.getModel().getEmail()); } if (pageWrap.getModel().getSpecialAgreement() != null) { queryWrapper.eq(Solutions::getSpecialAgreement, pageWrap.getModel().getSpecialAgreement()); } if (pageWrap.getModel().getSpecialInfo() != null) { queryWrapper.eq(Solutions::getSpecialInfo, pageWrap.getModel().getSpecialInfo()); } if (pageWrap.getModel().getOrtherInfo() != null) { queryWrapper.eq(Solutions::getOrtherInfo, pageWrap.getModel().getOrtherInfo()); } if (pageWrap.getModel().getParentId() != null) { queryWrapper.eq(Solutions::getParentId, pageWrap.getModel().getParentId()); } if (pageWrap.getModel().getVersion() != null) { queryWrapper.eq(Solutions::getVersion, pageWrap.getModel().getVersion()); } if (pageWrap.getModel().getDataType() != null) { queryWrapper.eq(Solutions::getDataType, pageWrap.getModel().getDataType()); } if (pageWrap.getModel().getBaseId() != null) { queryWrapper.eq(Solutions::getBaseId, pageWrap.getModel().getBaseId()); } queryWrapper.orderByDesc(Solutions::getCreateDate); // for(PageWrap.SortData sortData: pageWrap.getSorts()) { // if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { // queryWrapper.orderByDesc(sortData.getProperty()); // } else { // queryWrapper.orderByAsc(sortData.getProperty()); // } // } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode(); PageData pageData = PageData.from(solutionsJoinMapper.selectJoinPage(page,Solutions.class, queryWrapper)); for (Solutions solutions:pageData.getRecords()) { if(StringUtils.isNotBlank(solutions.getFileSignUrl())){ solutions.setFileSignUrl(path +solutions.getFileSignUrl()); } } return pageData; } @Override public PageData findPageCom(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); pageWrap.getModel().setDataType(Constants.ZERO);//只选择基表数据 pageWrap.getModel().setStatus(Constants.ZERO); pageWrap.getModel().setIsdeleted(Constants.ZERO); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); queryWrapper.exists(("select b.id from company_solution b where b.isdeleted=0 and b.company_id="+user.getCompanyId()+" and b.SOLUTION_BASE_ID = solutions.id")); if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().like(Solutions::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Solutions::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getSortnum() != null) { queryWrapper.lambda().eq(Solutions::getSortnum, pageWrap.getModel().getSortnum()); } if (pageWrap.getModel().getInsuranceId() != null) { queryWrapper.lambda().eq(Solutions::getInsuranceId, pageWrap.getModel().getInsuranceId()); } if (pageWrap.getModel().getBaseId() != null) { queryWrapper.lambda().eq(Solutions::getBaseId, pageWrap.getModel().getBaseId()); } queryWrapper.lambda().orderByAsc(Solutions::getInsuranceId); return PageData.from(solutionsMapper.selectPage(page, queryWrapper)); } @Override public List findListForCompany(Integer dataType) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); List solutionsList = solutionsJoinMapper.selectJoinList(Solutions.class,new MPJLambdaWrapper() .selectAll(Solutions.class) .leftJoin(CompanySolution.class,CompanySolution::getSolutionId,Solutions::getId) .leftJoin(Company.class,Company::getId,CompanySolution::getCompanyId) .leftJoin(Insurance.class,Insurance::getId,Solutions::getInsuranceId) .leftJoin(SolutionsBase.class,SolutionsBase::getId,Solutions::getParentId) .eq(Solutions::getIsdeleted,Constants.ZERO) .eq(Solutions::getStatus,Constants.ZERO) .eq(Solutions::getDataType,dataType) .eq(CompanySolution::getIsdeleted,Constants.ZERO) .eq(CompanySolution::getCompanyId,user.getCompanyId()) .eq(Company::getIsdeleted,Constants.ZERO) .eq(Company::getStatus,Constants.ZERO) .eq(Insurance::getIsdeleted,Constants.ZERO) .eq(Insurance::getStatus,Constants.ZERO) .eq(SolutionsBase::getStatus,Constants.ZERO) .eq(SolutionsBase::getIsdeleted,Constants.ZERO) .orderByDesc(Solutions::getCreateDate) ); return solutionsList; } /** * 查询企业已签署的方案信息 * @param dataType * @param companyId * @return */ @Override public List findListByCompanyId(Integer dataType,Integer companyId) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); // List solutionsList = solutionsJoinMapper.selectJoinList(Solutions.class,new MPJLambdaWrapper() // .selectAll(Solutions.class) // .leftJoin(CompanySolution.class,CompanySolution::getSolutionId,Solutions::getId) // .leftJoin(Company.class,Company::getId,CompanySolution::getCompanyId) // .leftJoin(Insurance.class,Insurance::getId,Solutions::getInsuranceId) // .leftJoin(SolutionsBase.class,SolutionsBase::getId,Solutions::getParentId) // .eq(Solutions::getIsdeleted,Constants.ZERO) // .eq(Solutions::getStatus,Constants.ZERO) // .eq(Solutions::getDataType,dataType) // .eq(CompanySolution::getIsdeleted,Constants.ZERO) // .eq(Company::getIsdeleted,Constants.ZERO) // .eq(Company::getStatus,Constants.ZERO) // .eq(Insurance::getIsdeleted,Constants.ZERO) // .eq(Insurance::getStatus,Constants.ZERO) // .eq(SolutionsBase::getStatus,Constants.ZERO) // .eq(SolutionsBase::getIsdeleted,Constants.ZERO) // .eq(CompanySolution::getCompanyId,companyId) // .eq(CompanySolution::getSignStatus,Constants.ONE) // .orderByDesc(Solutions::getCreateDate) // ); List solutionsList = solutionsJoinMapper.selectJoinList(Solutions.class,new MPJLambdaWrapper() .selectAll(Solutions.class) .leftJoin(CompanySolution.class,CompanySolution::getSolutionId,Solutions::getId) .eq(Solutions::getIsdeleted,Constants.ZERO) .eq(Solutions::getStatus,Constants.ZERO) .eq(Solutions::getDataType,dataType) .eq(CompanySolution::getIsdeleted,Constants.ZERO) .eq(CompanySolution::getCompanyId,companyId) .eq(CompanySolution::getSignStatus,Constants.ONE) .orderByDesc(Solutions::getCreateDate) ); return solutionsList; } /** * 根据历史版本查询当前最新启用版本 * @param solutionId * @return */ @Override public Solutions getNewVersion(Integer solutionId){ Solutions solutions = solutionsMapper.selectById(solutionId); if(Objects.isNull(solutions)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到历史方案信息"); } if(solutions.getDataType().equals(Constants.TWO)){ return solutions; } Solutions newVersion = solutionsMapper.selectOne(new QueryWrapper().lambda() .eq(Solutions::getIsdeleted,Constants.ZERO) .eq(Solutions::getDataType,Constants.TWO) .eq(Solutions::getBaseId,solutions.getBaseId()) .last("limit 1") ); if(Objects.isNull(newVersion)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到最新版本数据"); } return newVersion; } @Override public long count(Solutions solutions) { QueryWrapper wrapper = new QueryWrapper<>(solutions); return solutionsMapper.selectCount(wrapper); } @Override public BigDecimal testSolutionAddMoney(Integer id, BigDecimal fee, Date start,Date end,Date newDate,Date newEndTime){ return Constants.addFee(solutionsMapper.selectById(id),fee,start,end,newDate,newEndTime); } @Override public BigDecimal testSolutionReduceMoney(Integer id, BigDecimal fee, Date start,Date end,Date reduceStartTime,Date reduceEndTime){ return Constants.reduceFee(solutionsMapper.selectById(id),fee,start,end,reduceStartTime,reduceEndTime); } @Override public BigDecimal testSolutionProduceMoney(Integer id, BigDecimal fee, Date start,Date end,Date produceStart){ return Constants.produceFee(solutionsMapper.selectById(id),fee,start,end,produceStart); } }