server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -4,6 +4,7 @@ import com.doumee.dao.business.model.InsuranceApply; import com.doumee.service.business.CompanyService; import com.doumee.service.business.InsuranceApplyService; import com.doumee.service.business.UnionApplyService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.EnableScheduling; @@ -25,6 +26,9 @@ @Autowired private InsuranceApplyService insuranceApplyService; @Autowired private UnionApplyService unionApplyService; /** @@ -74,6 +78,10 @@ log.info("==============宿¶æ´æ°ä¿åå®é éé¢=======start======"); insuranceApplyService.updateApplyCurrentFee(null); log.info("==============宿¶æ´æ°ä¿åå®é éé¢======end======="); log.info("==============宿¶æ´æ°åå¹¶åå®é éé¢=======start======"); unionApplyService.updateUnionApplyCurrentFee(null); log.info("==============宿¶æ´æ°åå¹¶åå®é éé¢======end======="); } server/service/src/main/java/com/doumee/dao/business/dto/UnionApplyBXDDTO.java
@@ -1,6 +1,5 @@ package com.doumee.dao.business.dto; import com.doumee.core.annotation.excel.ExcelColumn; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -38,6 +37,6 @@ private String fileName; @ApiModelProperty(value = "åå¹¶åæç»ä¿åä¿¡æ¯") private List<UnionApplyBXDDDetailTO> unionApplyBXDDDetailTOList; private List<UnionApplyBXDDetailDTO> unionApplyBXDDDetailDTOList; } server/service/src/main/java/com/doumee/dao/business/dto/UnionApplyBXDDetailDTO.java
ÎļþÃû´Ó server/service/src/main/java/com/doumee/dao/business/dto/UnionApplyBXDDDetailTO.java ÐÞ¸Ä @@ -1,11 +1,9 @@ package com.doumee.dao.business.dto; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** * Created by IntelliJ IDEA. @@ -14,7 +12,7 @@ * @create 2024/3/20 16:52 */ @Data public class UnionApplyBXDDDetailTO { public class UnionApplyBXDDetailDTO { @ApiModelProperty(value = "æä¿åä¸»é® insurance_apply") private Integer applyId; server/service/src/main/java/com/doumee/dao/business/model/UnionChange.java
@@ -149,4 +149,10 @@ @ApiModelProperty(value = "æ¢å人æ°") @TableField(exist = false) private Integer changeNum; @ApiModelProperty(value = "æ¥å¿è®°å½") @TableField(exist = false) private List<ApplyLog> applyLogList; } server/service/src/main/java/com/doumee/service/business/UnionApplyService.java
@@ -131,4 +131,10 @@ UnionApply detail(Integer applyId); UnionApply findDetailForExport(UnionApply model); /** * æ´æ°åå¹¶åéé¢ * @param id */ void updateUnionApplyCurrentFee(Integer id); } server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java
@@ -232,6 +232,9 @@ } } PageData<ApplyChagneDetail> pageData = PageData.from(applyChangeDetailJoinMapper.selectJoinPage(page,ApplyChagneDetail.class, queryWrapper)); for (ApplyChagneDetail applyChagneDetail:pageData.getRecords()) { applyChagneDetail.setAge(Constants.getAgeByIdCard(applyChagneDetail.getMemberIdcardNo())); } return pageData; } server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -1470,6 +1470,7 @@ .eq(!Objects.isNull(model.getSolutionType()),Solutions::getType,model.getSolutionType()) .eq(!Objects.isNull(model.getApplyId()),ApplyChange::getApplyId,model.getApplyId()) .eq(!Objects.isNull(model.getBaseSolutionsId()),Solutions::getBaseId,model.getBaseSolutionsId()) .like(StringUtils.isNotBlank(model.getSolutionsName()),Solutions::getName,model.getSolutionsName()) .ge(StringUtils.isNotBlank(model.getCreateDateS()),ApplyChange::getCreateDate, model.getCreateDateS()+" 00:00:00" ) .le(StringUtils.isNotBlank(model.getCreateDateE()),ApplyChange::getCreateDate, model.getCreateDateE()+" 23:59:59" ) .ge(StringUtils.isNotBlank(model.getApplyStartS()),ApplyChange::getApplyStartTime, model.getApplyStartS()+" 00:00:00" ) server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -2330,11 +2330,12 @@ * æ´æ°ä¿åå®é éé¢ */ @Override @Transactional(rollbackFor = {Exception.class}) @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void updateApplyCurrentFee(Integer id){ List<InsuranceApply> insuranceApplyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda() List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,new MPJLambdaWrapper<InsuranceApply>() .selectAll(InsuranceApply.class) .eq(InsuranceApply::getIsdeleted,Constants.ZERO) .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey()) .in(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_TOUBAOING.getKey()) .eq(!Objects.isNull(id),InsuranceApply::getId,id) .le(InsuranceApply::getStartTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 00:00:00") .ge(InsuranceApply::getEndTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 23:59:59") @@ -2342,20 +2343,23 @@ if(CollectionUtils.isNotEmpty(insuranceApplyList)){ for (InsuranceApply insuranceApply:insuranceApplyList) { Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId()); if(Objects.isNull(solutions)){ continue; } // Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId()); // if(Objects.isNull(solutions)){ // continue; // } BigDecimal sumAmount = BigDecimal.ZERO; List<ApplyDetail> applyDetailList = applyDetailMapper.selectList(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,insuranceApply.getId())); List<ApplyDetail> applyDetailList = applyDetailMapper .selectList(new QueryWrapper<ApplyDetail>().lambda() .eq(ApplyDetail::getApplyId,insuranceApply.getId())); if(CollectionUtils.isNotEmpty(applyDetailList)){ for (ApplyDetail applyDetail: applyDetailList) { //2024-1-30 10:04:24 ä¿®æ¹ æ ¹æ®å®é 天æ°è¿è¡è®¡ç® å½åè´¹ç¨ æ»éé¢/æ»å¤©æ°*å®é å¤©æ° Integer maxDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0); // Integer maxDays = DateUtil.calculateBetween(applyDetail.getStartTime(),applyDetail.getEndTime(),0); BigDecimal fee = applyDetail.getFee(); if(applyDetail.getStartTime().compareTo(new Date()) <= 0 && applyDetail.getEndTime().compareTo(new Date()) >= 0 ){ Integer days = DateUtil.calculateBetween(applyDetail.getStartTime(),new Date(),0); applyDetail.setCurrentFee(fee.divide(BigDecimal.valueOf(maxDays),2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(days))); applyDetail.setCurrentFee(new BigDecimal(days).multiply(applyDetail.getPrice())); //applyDetail.setCurrentFee(fee.divide(BigDecimal.valueOf(maxDays),2, BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(days))); applyDetailMapper.updateById(applyDetail); }else if(applyDetail.getStartTime().compareTo(new Date()) <= 0&&applyDetail.getEndTime().compareTo(new Date()) <= 0){ applyDetail.setCurrentFee(fee); @@ -2368,10 +2372,6 @@ insuranceApplyMapper.updateById(insuranceApply); } } // if(1==1){ // throw new BusinessException(ResponseStatus.NOT_ALLOWED); // } } server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
@@ -26,7 +26,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.third.SignService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import io.swagger.models.auth.In; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -695,7 +694,6 @@ || Objects.isNull(unionApplyBXDDTO.getStartTime()) || Objects.isNull(unionApplyBXDDTO.getEndTime()) || StringUtils.isBlank(unionApplyBXDDTO.getCode()) || Objects.isNull(unionApplyBXDDTO.getUnionApplyBXDDDetailTOList()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } @@ -711,7 +709,7 @@ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对ä¸èµ·ï¼è¯¥åå¹¶åç¶æå·²æµè½¬ï¼å½å䏿¯æè¯¥æä½~"); } //å ä»·åæ° List<UnionApplyBXDDDetailTO> unionApplyBXDDDetailTOList = unionApplyBXDDTO.getUnionApplyBXDDDetailTOList(); List<UnionApplyBXDDetailDTO> unionApplyBXDDetailDTOList = unionApplyBXDDTO.getUnionApplyBXDDDetailDTOList(); //æææä¿ç³è¯·ä¿åæç»è¡ List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda().select(ApplyDetail::getPrice) @@ -727,33 +725,18 @@ //å½åæ¥æå¨ç»ææ¥æä¹å useDays = -1; } BigDecimal sumFee = BigDecimal.ZERO; BigDecimal sumCurrFee = BigDecimal.ZERO; for (UnionApplyBXDDDetailTO unionApplyBXDDDetailTO:unionApplyBXDDDetailTOList) { InsuranceApply insuranceApply = insuranceApplyJoinMapper.selectById(unionApplyBXDDDetailTO.getApplyId()); if(Objects.isNull(insuranceApply)||!Constants.equalsInteger(insuranceApply.getIsdeleted(),Constants.ZERO)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } if(!insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.PLATFORM_CHECK_PASS.getKey())){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对ä¸èµ·ï¼è¯¥æä¿åç¶æå·²æµè½¬ï¼å½å䏿¯æè¯¥æä½~"); } List<ApplyDetail> applyDetails = applyDetailList.stream().filter(m->m.getApplyId().equals(unionApplyBXDDDetailTO.getApplyId())).collect(Collectors.toList()); if(CollectionUtils.isEmpty(applyDetails)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } //æäº¤åçæ°ä»·æ ¼ å 䏿å¡è´¹ BigDecimal price = applyDetails.get(Constants.ZERO).getPrice().add(unionApplyBXDDDetailTO.getServerMoney()); //å®é 已产çè´¹ç¨ BigDecimal currentFee = BigDecimal.ZERO; if(useDays==-1){ currentFee = new BigDecimal(maxDays).multiply(price); }else if(useDays>0){ currentFee = new BigDecimal(useDays).multiply(price); } List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectList(new QueryWrapper<InsuranceApply>() .lambda().eq(InsuranceApply::getUnionApplyId,unionApply.getId())); for (InsuranceApply insuranceApply:insuranceApplyList) { BigDecimal price = insuranceApply.getPrice(); Optional<UnionApplyBXDDetailDTO> unionApplyBXDDDetailTO= unionApplyBXDDetailDTOList.stream().filter(m->m.getApplyId().equals(insuranceApply.getId())).findFirst(); if(unionApplyBXDDDetailTO.isPresent()){ UnionApplyBXDDetailDTO unionApplyBXDDetailDTO = unionApplyBXDDDetailTO.get(); price = price.add(unionApplyBXDDetailDTO.getServerMoney()); //ä¸ä¼ ä¿åä¿¡æ¯ if(StringUtils.isNotBlank(unionApplyBXDDDetailTO.getFileUrl())){ if(StringUtils.isNotBlank(unionApplyBXDDetailDTO.getFileUrl())){ Multifile multifile = new Multifile(); multifile.setIsdeleted(Constants.ZERO); multifile.setCreator(user.getId()); @@ -761,13 +744,23 @@ multifile.setObjId(insuranceApply.getId()); multifile.setObjType(Constants.MultiFile.BD_DONE_PDF.getKey()); multifile.setType(Constants.TWO); multifile.setFileurl(unionApplyBXDDDetailTO.getFileUrl()); multifile.setName(unionApplyBXDDDetailTO.getFileName()); multifile.setFileurl(unionApplyBXDDetailDTO.getFileUrl()); multifile.setName(unionApplyBXDDetailDTO.getFileName()); multifileMapper.insert(multifile); insuranceApply.setUnionApplyTbdStatus(Constants.ONE); }else{ insuranceApply.setUnionApplyTbdStatus(Constants.ZERO); } } //å®é 已产çè´¹ç¨ BigDecimal currentFee = BigDecimal.ZERO; if(useDays==-1){ currentFee = new BigDecimal(maxDays).multiply(price); }else if(useDays>0){ currentFee = new BigDecimal(useDays).multiply(price); } List<ApplyDetail> applyDetails = applyDetailList.stream().filter(m->m.getApplyId().equals(insuranceApply.getId())).collect(Collectors.toList()); //æ´æ°æä¿ç³è¯·å insuranceApplyJoinMapper.update(null,new UpdateWrapper<InsuranceApply>().lambda() .set(InsuranceApply::getFee, @@ -798,7 +791,9 @@ sumFee = sumFee.add(price.multiply(new BigDecimal(applyDetails.size())).multiply(new BigDecimal(maxDays))); sumCurrFee = sumCurrFee.add(currentFee.multiply(new BigDecimal(applyDetails.size()))); } unionApplyMapper.update(null,new UpdateWrapper<UnionApply>() .lambda() .set(UnionApply::getStatus,Constants.UnionApplyStatus.FINISH) @@ -838,4 +833,32 @@ } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void updateUnionApplyCurrentFee(Integer id){ List<UnionApply> unionApplyList = unionApplyJoinMapper.selectJoinList(UnionApply.class,new MPJLambdaWrapper<UnionApply>() .selectAll(UnionApply.class) .eq(UnionApply::getIsdeleted,Constants.ZERO) .eq(UnionApply::getStatus,Constants.UnionApplyStatus.FINISH) .eq(!Objects.isNull(id),UnionApply::getId,id) .le(UnionApply::getStartTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 00:00:00") .ge(UnionApply::getEndTime,DateUtil.getDate(new Date(),"yyyy-MM-dd") + " 23:59:59") ); if(CollectionUtils.isNotEmpty(unionApplyList)){ for (UnionApply unionApply:unionApplyList) { List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper .selectList(new QueryWrapper<InsuranceApply>().lambda() .eq(InsuranceApply::getUnionApplyId,unionApply.getId())); if(CollectionUtils.isNotEmpty(insuranceApplyList)){ unionApply.setCurrentFee(insuranceApplyList.stream().map(m->m.getCurrentFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); unionApplyMapper.updateById(unionApply); } } } } } server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -16,6 +16,7 @@ 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.SmsEmailService; import com.doumee.service.business.UnionChangeService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -92,6 +93,9 @@ @Autowired private ApplyLogMapper applyLogMapper; @Autowired private ApplyLogJoinMapper applyLogJoinMapper; @Override public Integer create(UnionChange unionChange) { unionChangeMapper.insert(unionChange); @@ -157,6 +161,23 @@ .eq(UnionChange::getId,id) .last(" limit 1 ") ); if(!Objects.isNull(unionChange)){ //æ¥è¯¢æä½è®°å½ List<ApplyLog> applyLogList = applyLogJoinMapper.selectJoinList(ApplyLog.class, new MPJLambdaWrapper<ApplyLog>() .selectAll(ApplyLog.class) .selectAs(SystemUser::getRealname,ApplyLog::getCreatorName) .selectAs(Company::getName,ApplyLog::getCompanyName) .selectAs(SystemUser::getType,ApplyLog::getCreatorType) .leftJoin(SystemUser.class,SystemUser::getId,ApplyLog::getCreator) .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId) .in(ApplyLog::getObjType,Constants.ApplyLogType.getTypeList(Constants.THREE)) .eq(ApplyLog::getApplyId,unionChange.getId()) .orderByAsc(ApplyLog::getCreateDate) ); unionChange.setApplyLogList(applyLogList); } return unionChange; } @@ -179,14 +200,15 @@ IPage<UnionChange> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper<UnionChange> queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(UnionChange.class); queryWrapper.selectAs(UnionApply::getCode,UnionChange::getApplyCode) queryWrapper.selectAs(UnionApply::getCode,UnionChange::getApplyCode); queryWrapper.selectAs(Solutions::getName,UnionChange::getSolutionsName) .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 0 )",UnionChange::getAddNum) .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 1 )",UnionChange::getDelNum) .select("( select count(1) from apply_chagne_detail ad where t.id = ad.UNION_CHANGE_ID and ad.TYPE = 2 )",UnionChange::getChangeNum); queryWrapper.leftJoin(UnionApply.class,UnionApply::getId,UnionChange::getUnionApplyId); queryWrapper.leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(user.getType().equals(Constants.TWO)){ if(Constants.equalsInteger(user.getType(),Constants.TWO)){ queryWrapper.eq(UnionChange::getShopId, pageWrap.getModel().getShopId()); } Utils.MP.blankToNull(pageWrap.getModel()); server/shop/src/main/java/com/doumee/api/business/UnionChangeController.java
@@ -112,7 +112,7 @@ @ApiOperation("ç¾ç½²ç³è¯·å") @PostMapping("/getSignLink") @RequiresPermissions("business:unionchange:query") @RequiresPermissions("business:unionchange:sign") public ApiResponse getSignLink(@RequestBody SmsCheckDTO smsCheckDTO) { unionChangeService.getSignLink(smsCheckDTO); return ApiResponse.success(null); @@ -120,7 +120,7 @@ @ApiOperation("ä¸ä¼ ä¿é©å") @PostMapping("/uploadBXD") @RequiresPermissions("business:unionchange:query") @RequiresPermissions("business:unionchange:uploadBXD") public ApiResponse uploadBXD(@RequestBody UnionChangeBXDDTO unionChangeBXDDTO) { unionChangeService.uploadBXD(unionChangeBXDDTO); return ApiResponse.success(null);