| | |
| | | import com.doumee.dao.business.dto.ApplyChangeOptDTO; |
| | | import com.doumee.dao.business.dto.CountCyclePriceDTO; |
| | | import com.doumee.dao.business.dto.InsuranceApplyOptDTO; |
| | | import com.doumee.dao.business.join.ApplyChagneDetailJoinMapper; |
| | | import com.doumee.dao.business.join.ApplyChangeJoinMapper; |
| | | import com.doumee.dao.business.join.ApplyDetailJoinMapper; |
| | | import com.doumee.dao.business.join.DuSolutionJoinMapper; |
| | | import com.doumee.dao.business.join.*; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.vo.CountCyclePriceVO; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.ApplyChangeService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | @Autowired |
| | | private CompanyMapper companyMapper; |
| | | @Autowired |
| | | private SignService signService; |
| | | @Autowired |
| | | private ApplyChagneDetailJoinMapper applyChagneDetailJoinMapper; |
| | |
| | | |
| | | @Autowired |
| | | private ApplyLogMapper applyLogMapper; |
| | | @Value("${debug_model}") |
| | | private boolean debugModel; |
| | | @Autowired |
| | | private ApplyLogJoinMapper applyLogJoinMapper; |
| | | |
| | | @Autowired |
| | | private SolutionsMapper solutionsMapper; |
| | |
| | | .selectAs(Solutions::getTimeUnit,ApplyChagneDetail::getSolutionTimeUnit) |
| | | .selectAs(Solutions::getPrice,ApplyChagneDetail::getSolutionPrice) |
| | | .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) |
| | | .leftJoin(Solutions.class, Solutions::getId, ApplyChange::getSolutionsId) |
| | | .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class, Solutions::getId, InsuranceApply::getSolutionId) |
| | | .eq(ApplyChagneDetail::getApplyChangeId,update.getId()) |
| | | .eq(ApplyChagneDetail::getIsdeleted,Constants.ZERO) ); |
| | | if(detailList ==null || detailList.size()==0){ |
| | |
| | | .selectAs(Solutions::getTimeUnit,ApplyChagneDetail::getSolutionTimeUnit) |
| | | .selectAs(Solutions::getPrice,ApplyChagneDetail::getSolutionPrice) |
| | | .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId) |
| | | .leftJoin(Solutions.class, Solutions::getId, ApplyChange::getSolutionsId) |
| | | .leftJoin(InsuranceApply.class, InsuranceApply::getId, ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class, Solutions::getId, InsuranceApply::getSolutionId) |
| | | .eq(ApplyChagneDetail::getApplyChangeId,update.getId()) |
| | | .eq(ApplyChagneDetail::getIsdeleted,Constants.ZERO) ); |
| | | if(detailList ==null || detailList.size()==0){ |
| | |
| | | add.setDuId(detail.getDuId()); |
| | | add.setStartTime(update.getApplyStartTime()); |
| | | add.setEndTime(detail.getEndTime()); |
| | | add.setFee(Constants.countDetailFee(detail.getSolutionTimeUnit(),detail.getSolutionPrice(), add.getStartTime(),add.getEndTime())); |
| | | add.setFee(new BigDecimal(0)); |
| | | // add.setFee(Constants.countDetailFee(detail.getSolutionTimeUnit(),detail.getSolutionPrice(), add.getStartTime(),add.getEndTime())); |
| | | if(DateUtil.daysBetweenDates(add.getStartTime(),new Date() )>=0){ |
| | | //如果已产生费用,计算已产生费用 |
| | | add.setCurrentFee(Constants.countDetailFee(detail.getSolutionTimeUnit(),detail.getSolutionPrice(), add.getStartTime(),new Date())); |
| | |
| | | BigDecimal updateCurrentFee = new BigDecimal(0); |
| | | if(DateUtil.daysBetweenDates(update.getApplyStartTime(),new Date() )>0){ |
| | | //如果生效时间 是今天之前,退回已产生费用,计算已产生费用(总费用-已产生费用) |
| | | updateCurrentFee = updateFee.subtract(oldModel.getCurrentFee()); |
| | | updateCurrentFee = updateFee.subtract(Constants.formatBigdecimal(oldModel.getCurrentFee())); |
| | | } |
| | | applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda() |
| | | .setSql(" fee = ifnull(fee,0)+"+updateFee) |
| | |
| | | queryWrapper.selectAll(ApplyChange.class) |
| | | .selectAs(InsuranceApply::getCode,ApplyChange::getApplyCode) |
| | | .selectAs(Company::getName,ApplyChange::getCompanyName) |
| | | .selectAs(InsuranceApply::getStartTime,ApplyChange::getStartTime) |
| | | .selectAs(InsuranceApply::getEndTime,ApplyChange::getEndTime) |
| | | .selectAs(Solutions::getName,ApplyChange::getSolutionsName) |
| | | .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 0 )",ApplyChange::getAddNum) |
| | | .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 1 )",ApplyChange::getDelNum) |
| | | .select("( select count(1) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID and ad.TYPE = 2 )",ApplyChange::getChangeNum) |
| | | .select("( select ifnull(sum(ad.FEE),0) from apply_chagne_detail ad where t.id = ad.APPLY_CHANGE_ID )",ApplyChange::getChangeMoney) |
| | | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) |
| | | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) |
| | | .eq(ApplyChange::getId,id); |
| | | ApplyChange applyChange = applyChangeJoinMapper.selectOne(queryWrapper); |
| | | |
| | | //查询操作记录 |
| | | List<ApplyLog> applyLogList = applyLogJoinMapper.selectJoinList(ApplyLog.class, |
| | | new MPJLambdaWrapper<ApplyLog>() |
| | | .selectAll(ApplyLog.class) |
| | | .selectAs(SystemUser::getRealname,ApplyLog::getCreatorName) |
| | | .selectAs(SystemUser::getType,ApplyLog::getCreatorType) |
| | | .selectAs(Company::getName,ApplyLog::getCompanyName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,ApplyLog::getCreator) |
| | | .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId) |
| | | .eq(ApplyLog::getObjId,applyChange.getId()) |
| | | .orderByAsc(ApplyLog::getCreateDate) |
| | | ); |
| | | applyChange.setApplyLogList(applyLogList); |
| | | |
| | | List<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda() |
| | | .eq(Multifile::getObjId,applyChange.getId()) |
| | | .in(Multifile::getObjType, Arrays.asList(new Integer[]{Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey() |
| | | ,Constants.MultiFile.CA_PD_PDF.getKey() |
| | | ,Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey()})) |
| | | .eq(Multifile::getIsdeleted,Constants.ZERO)); |
| | | if(multifiles!=null){ |
| | | String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode(); |
| | | for(Multifile f : multifiles){ |
| | | if(StringUtils.isBlank(f.getFileurl())){ |
| | | continue; |
| | | } |
| | | f.setFileurlFull(path+f.getFileurl()); |
| | | if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey())){ |
| | | //签署后申请单 |
| | | applyChange.setApplyFile(f); |
| | | }else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey())){ |
| | | //签署后申请单 |
| | | applyChange.setApplyUnitFile(f); |
| | | }else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.CA_PD_PDF.getKey())){ |
| | | //签署后的投保单 |
| | | applyChange.setPidanFile(f); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return applyChange; |
| | | } |
| | | /** |
| | |
| | | @Override |
| | | public ApplyChange exportChangeUnitExcel(ApplyChange param){ |
| | | ApplyChange model = findJoinDetail(param); |
| | | if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getType())){ |
| | | if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getIsdeleted())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | private String getOnlineSignLink(ApplyChange model) { |
| | | if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getType())){ |
| | | if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getIsdeleted())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!Constants.equalsInteger(Constants.ZERO,model.getStatus())){ |
| | |
| | | } |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | Company company = user.getCompany(); |
| | | if(company== null || StringUtils.isBlank( company.getEmail()) || !Constants.equalsInteger(company.getSignStatus(),Constants.ONE)){ |
| | | if(debugModel){ |
| | | company = companyMapper.selectById(model.getCompanyId()); |
| | | } |
| | | if(company== null || StringUtils.isBlank( company.getEmail()) || !Constants.equalsInteger(company.getSignStatus(),Constants.THREE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,企业尚未具备在线签章条件,请联系平台管理员确认~"); |
| | | } |
| | | |
| | | String fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"缓存申请表"); |
| | | String fileUrl = null; |
| | | if(Constants.equalsObject(model.getType(), Constants.ONE)){ |
| | | fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"换厂申请表"); |
| | | }else{ |
| | | fileUrl = ExcelExporter.build(ApplyChange.class).exportJiajianBaoExcelToPdf(model,"加减保申请表"); |
| | | } |
| | | String notifyUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SIGN_DONE_NOTIFY_URL).getCode(); |
| | | notifyUrl = notifyUrl.replace("${type}","0").replace("${id}",model.getId().toString()); |
| | | String applyNo = signService.applySignLocalFile(company.getName(),fileUrl,company.getName(),company.getCode(),company.getEmail(),null,company.getSignId(),notifyUrl); |
| | | String applyNo = signService.applySignLocalFile(company.getName(),company.getName(),fileUrl,company.getCode(),company.getEmail(),"投保企业签章",company.getSignId(),notifyUrl); |
| | | if(StringUtils.isBlank(applyNo) ){ |
| | | throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,获取在线签章地址失败,请稍后重试!"); |
| | | } |
| | |
| | | update.setEditDate(new Date()); |
| | | update.setSignApplyNo(applyNo); |
| | | applyChangeMapper.updateById(update); |
| | | |
| | | return link; |
| | | } |
| | | |
| | |
| | | public ApplyChange exportJiajianBaoExcel(ApplyChange param){ |
| | | |
| | | ApplyChange model = findJoinDetail(param); |
| | | if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getType())){ |
| | | if(Objects.isNull(model) ||! Constants.equalsInteger(Constants.ZERO,model.getIsdeleted())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | |
| | |
| | | .selectAll(ApplyChange.class) |
| | | .selectAs(Solutions::getName,ApplyChange::getSolutionsName) |
| | | .selectAs(Company::getName,ApplyChange::getCompanyName) |
| | | .selectAs(InsuranceApply::getCompanyId,ApplyChange::getCompanyId) |
| | | .selectAs(InsuranceApply::getCode,ApplyChange::getApplyCode) |
| | | .selectAs(InsuranceApply::getStartTime,ApplyChange::getStartTime) |
| | | .selectAs(InsuranceApply::getStartTime,ApplyChange::getEndTime) |
| | | .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId) |
| | | .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId) |
| | | .leftJoin(Company.class,Company::getId,ApplyChange::getCompanyId) |
| | | .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId) |
| | | .eq(ApplyChange::getId,param.getId()) |
| | | .last("limit 1"); |
| | | |
| | |
| | | .selectAll(ApplyChagneDetail.class) |
| | | .selectAs(Member::getName,ApplyChagneDetail::getMemberName) |
| | | .selectAs(Member::getSex,ApplyChagneDetail::getSex) |
| | | .selectAs(Member::getIdcardNo,ApplyChagneDetail::getIdcardNo) |
| | | .selectAs(Member::getIdcardNo,ApplyChagneDetail::getMemberIdcardNo) |
| | | .selectAs(Worktype::getName,ApplyChagneDetail::getWorkTypeName) |
| | | .selectAs(DispatchUnit::getName,ApplyChagneDetail::getDuName) |
| | | .leftJoin(Worktype.class,Worktype::getId,ApplyChagneDetail::getWorktypeId) |
| | |
| | | .select("t3.name as oldWorktypeName") |
| | | .select("t4.name as oldDuName") |
| | | .selectAs(Member::getSex,ApplyChagneDetail::getSex) |
| | | .selectAs(Member::getIdcardNo,ApplyChagneDetail::getIdcardNo) |
| | | .selectAs(Member::getIdcardNo,ApplyChagneDetail::getMemberIdcardNo) |
| | | .leftJoin(Worktype.class,Worktype::getId,ApplyChagneDetail::getWorktypeId) |
| | | .leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyChagneDetail::getDuId) |
| | | .leftJoin(Worktype.class,Worktype::getId,ApplyChagneDetail::getOldWorktypeId) |