From 27e41b5c21b4ba13178b2184c76c4d8cba0952b6 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期四, 01 二月 2024 19:21:18 +0800
Subject: [PATCH] Mr.Shi
---
server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java | 181 +++++++++++++++++++++++++++++++++++---------
1 files changed, 143 insertions(+), 38 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
index cf56469..c3e08a2 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -15,10 +15,7 @@
import com.doumee.dao.business.dto.CountCyclePriceDTO;
import com.doumee.dao.business.dto.InsuranceApplyOptDTO;
import com.doumee.dao.business.dto.InsuranceApplyQueryDTO;
-import com.doumee.dao.business.join.ApplyDetailJoinMapper;
-import com.doumee.dao.business.join.ApplyLogJoinMapper;
-import com.doumee.dao.business.join.DuSolutionJoinMapper;
-import com.doumee.dao.business.join.InsuranceApplyJoinMapper;
+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;
@@ -27,6 +24,8 @@
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.business.SmsEmailService;
+import com.doumee.service.business.third.EmailService;
import com.doumee.service.business.third.SignService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -39,6 +38,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.io.File;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -56,7 +56,9 @@
@Autowired
private InsuranceApplyMapper insuranceApplyMapper;
@Autowired
- private ApplyChangeMapper applyChangeMapper;
+ private SmsEmailService smsEmailService;
+ @Autowired
+ private ApplyChangeJoinMapper applyChangeMapper;
@Autowired
private SystemDictDataBiz systemDictDataBiz;
@@ -64,6 +66,8 @@
private InsuranceApplyJoinMapper insuranceApplyJoinMapper;
@Autowired
private CompanyMapper companyMapper;
+ @Autowired
+ private MemberInsuranceJoinMapper memberInsuranceJoinMapper;
@Autowired
private ApplyDetailMapper applyDetailMapper;
@@ -182,6 +186,36 @@
}
ApplyLog log = new ApplyLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
applyLogMapper.insert(log);
+
+
+ //瀛樺偍鍛樺伐淇℃伅鎶曚繚璁板綍
+ //鏌ヨ鍗曟嵁鏄庣粏璁板綍
+ MPJLambdaWrapper<ApplyDetail> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(ApplyDetail.class);
+ queryWrapper.selectAs(DispatchUnit::getName,ApplyDetail::getDuName);
+ queryWrapper.selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode);
+ queryWrapper.selectAs(Solutions::getId,ApplyDetail::getSolutionId);
+ queryWrapper.selectAs(Solutions::getName,ApplyDetail::getSolutionName);
+ queryWrapper.selectAs(Worktype::getName,ApplyDetail::getWorkTypeName);
+ queryWrapper.selectAs(Member::getIdcardNo,ApplyDetail::getIdcardNo);
+ queryWrapper.selectAs(Member::getName,ApplyDetail::getMemberName);
+ queryWrapper.leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId);
+ queryWrapper.leftJoin(Worktype.class,Worktype::getId,ApplyDetail::getWorktypeId);
+ queryWrapper.leftJoin(Member.class,Member::getId,ApplyDetail::getMemberId);
+ queryWrapper.leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId);
+ queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId);
+ queryWrapper.eq(ApplyDetail::getApplyId,insuranceApply.getId());
+ List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,queryWrapper);
+
+ if(CollectionUtils.isNotEmpty(applyDetailList)){
+ List<MemberInsurance> memberInsuranceList = new ArrayList<>();
+ for (ApplyDetail applyDetail:applyDetailList) {
+ MemberInsurance memberInsurance = new MemberInsurance(applyDetail,user.getId());
+ memberInsuranceList.add(memberInsurance);
+ }
+ memberInsuranceJoinMapper.insertBatchSomeColumn(memberInsuranceList);
+ }
+
return 1;
}
@@ -367,14 +401,13 @@
return tempFileName;
}
}catch (Exception e){
-
}
return null;
}
- public Integer uploadSignedFileDo(InsuranceApply model,String fileurl) {
+ public Multifile uploadSignedFileDo(InsuranceApply model,String fileurl,String fullUrl) {
InsuranceApply update = new InsuranceApply();
update.setEditDate(new Date());
update.setEditor(model.getCreator());
@@ -393,15 +426,19 @@
f.setObjType(Constants.MultiFile.BD_SIGNED_PDF.getKey());
f.setType(Constants.TWO);
f.setFileurl(fileurl);
+ f.setFileurlFull(fullUrl);
+ f.setInfo("鎶曚繚鍗曚紒涓氱绾﹀悎鍚�");
f.setName("鎶曚繚鍗曠绾﹀悎鍚�.pdf");
multifileMapper.insert(f);
Constants.ApplyLogType applyLogType = Constants.ApplyLogType.SIGNATURE;
ApplyLog log = new ApplyLog(update,applyLogType.getName(), null,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
applyLogMapper.insert(log);
- return 1;
+
+ startSendEmail(f, model.getCompanyName(),model.getSolutionsName(),model.getSolutionEmail());
+ return f;
}
- public Integer uploadChangeSignedFileDo(ApplyChange model,String fileurl) {
+ public Multifile uploadChangeSignedFileDo(ApplyChange model,String fileurl,String fullurl) {
ApplyChange update = new ApplyChange();
update.setEditDate(new Date());
update.setEditor(model.getCreator());
@@ -420,19 +457,53 @@
f.setObjType(Constants.equalsInteger(Constants.ZERO,model.getType())?Constants.MultiFile.CA_APPLY_JIAJIAN_SIGN.getKey() : Constants.MultiFile.CA_APPLY_CHANGEUNIT_SIGN.getKey());
f.setType(Constants.TWO);
f.setFileurl(fileurl);
+ f.setFileurlFull(fullurl);
+ f.setInfo("浼佷笟鐢宠琛ㄧ缃叉枃浠�");
f.setName("绛剧珷鐢宠琛�.pdf");
multifileMapper.insert(f);
Constants.ApplyLogType applyLogType =Constants.equalsInteger(Constants.ZERO,model.getType())? Constants.ApplyLogType.CA_JIAJIAN_APPLY_SIGN: Constants.ApplyLogType.CA_CHANGUNIT_APPLY_SIGN;
ApplyLog log = new ApplyLog(update,applyLogType.getName(), null,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
applyLogMapper.insert(log);
- return 1;
+
+ startSendEmail(f,model.getCompanyName(),model.getSolutionsName(),model.getSolutionEmail());
+ return f;
}
+
+ private void startSendEmail(Multifile f, String companyName, String solutionsName, String solutionEmail) {
+ if(StringUtils.isBlank(solutionEmail) || f==null|| StringUtils.isBlank(f.getFileurl())){
+ return;
+ }
+ SmsEmail email = new SmsEmail();
+ email.setTitle(f.getInfo());
+ email.setEmail(solutionEmail);
+ email.setContent("鏉ヨ嚜浼佷笟銆�"+companyName+"銆戝叧浜庝繚闄╂柟妗堛��"+solutionsName+"銆戠殑"+f.getInfo());
+ File file = Constants.getFileByNetFile(f.getFileurlFull(),f.getName());
+ if(file!=null && file.isFile()){
+ Map<String,Object> files = new HashMap<>();
+ files.put("name",f.getName());
+ files.put("file",file);
+ email.setFileList(new ArrayList<>());
+ email.getFileList().add(files);
+ smsEmailService.sendEmail(email);
+ file.delete();//鍙戦�佸悗鍒犻櫎涓存椂鏂囦欢
+ }
+ }
+
@Override
public void dealWaitSignedData(){
- List<InsuranceApply> applyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>().lambda()
+ List<InsuranceApply> applyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
+ new MPJLambdaWrapper<InsuranceApply>()
+ .selectAll(InsuranceApply.class)
+ .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+ .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+ .selectAs(Company::getName,InsuranceApply::getCompanyName)
+ .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+ .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
.eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())
.isNotNull(InsuranceApply::getSignApplyNo));
+ String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode();
if(applyList !=null && applyList.size()>0 ){
for(InsuranceApply model : applyList){
String status = signService.linkFileStatus(model.getSignApplyNo());
@@ -445,11 +516,19 @@
//濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
return;
}
- uploadSignedFileDo(model,fileUrl);
+ uploadSignedFileDo(model,fileUrl,path+fileUrl);
return;
}
}
- List<ApplyChange> chagneList = applyChangeMapper.selectList(new QueryWrapper<ApplyChange>().lambda()
+ List<ApplyChange> chagneList = applyChangeMapper.selectJoinList(ApplyChange.class,
+ new MPJLambdaWrapper<ApplyChange>()
+ .selectAll(ApplyChange.class)
+ .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+ .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+ .selectAs(Company::getName,InsuranceApply::getCompanyName)
+ .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
+ .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+ .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
.eq(ApplyChange::getStatus,Constants.ApplyChangeStatus.UPLOAD.getKey())
.isNotNull(ApplyChange::getSignApplyNo));
if(chagneList !=null && chagneList.size()>0 ){
@@ -464,7 +543,7 @@
//濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
return;
}
- uploadChangeSignedFileDo(model,fileUrl);
+ uploadChangeSignedFileDo(model,fileUrl,path+fileUrl);
return;
}
}
@@ -476,7 +555,18 @@
}
if(Constants.equalsInteger(data.getSignStatus(), Constants.THREE )){
//濡傛灉宸蹭繚鍏�,鍙笅杞界绾﹂檮浠�
- InsuranceApply model = insuranceApplyMapper.selectOne(new QueryWrapper<InsuranceApply>().lambda().eq(InsuranceApply::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
+ String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
+ systemDictDataBiz.queryByCode(Constants.OSS,Constants.APPLY_FILE).getCode();
+ InsuranceApply model = insuranceApplyJoinMapper.selectJoinOne(InsuranceApply.class,
+ new MPJLambdaWrapper<InsuranceApply>()
+ .selectAll(InsuranceApply.class)
+ .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+ .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+ .selectAs(Company::getName,InsuranceApply::getCompanyName)
+ .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+ .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+ .eq(InsuranceApply::getSignApplyNo,data.getApplyNo())
+ .last("limit 1" ));
if(model != null && Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())){
//瀹屾垚绛剧讲宸插畬鎴愭搷浣�
String link = signService.linkFile(data.getApplyNo());
@@ -485,11 +575,19 @@
//濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
return;
}
- uploadSignedFileDo(model,fileUrl);
+ uploadSignedFileDo(model,fileUrl,path+fileUrl);
return;
}
-
- ApplyChange applyChange = applyChangeMapper.selectOne(new QueryWrapper<ApplyChange>().lambda().eq(ApplyChange::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
+ ApplyChange applyChange = applyChangeMapper.selectJoinOne(ApplyChange.class,
+ new MPJLambdaWrapper<ApplyChange>()
+ .selectAll(ApplyChange.class)
+ .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
+ .selectAs(Solutions::getEmail,InsuranceApply::getSolutionEmail)
+ .selectAs(Company::getName,InsuranceApply::getCompanyName)
+ .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyChange::getApplyId)
+ .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+ .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+ .eq(ApplyChange::getSignApplyNo,data.getApplyNo()).last("limit 1" ));
if(applyChange != null &&Constants.equalsInteger(applyChange.getStatus(),Constants.ApplyChangeStatus.UPLOAD.getKey())){
String link = signService.linkFile(data.getApplyNo());
String fileUrl = uploadSignFile(link);
@@ -497,7 +595,7 @@
//濡傛灉涓嬭浇澶辫触锛屾竻闄ゅ悎鍚岋紝涓嬫绛剧珷閲嶆柊鐢熸垚鏂板悎鍚�
return;
}
- uploadChangeSignedFileDo(applyChange,fileUrl);
+ uploadChangeSignedFileDo(applyChange,fileUrl,path+fileUrl);
}
}else if(Constants.equalsInteger(data.getSignStatus(), Constants.TWO )){
//濡傛灉宸叉嫆绛撅紝娓呴櫎鍚堝悓锛屼笅娆$绔犻噸鏂扮敓鎴愭柊鍚堝悓
@@ -633,14 +731,22 @@
insuranceApply.setCompanyId(loginUserInfo.getCompanyId());
insuranceApply.setCheckInfo(insuranceApplyStatus.getName());
insuranceApply.setStartTime(insuranceApply.getApplyStartTime());
- insuranceApply.setEndTime(insuranceApply.getApplyEndTime());
insuranceApply.setCheckDate(new Date());
insuranceApply.setCurrentFee(BigDecimal.ZERO);
insuranceApply.setCheckUserId(loginUserInfo.getId());
insuranceApply.setStatus(insuranceApplyStatus.getKey());
+
+ CountCyclePriceDTO countCyclePriceDTO = new CountCyclePriceDTO();
+ countCyclePriceDTO.setSolutionsId(insuranceApply.getSolutionId());
+ countCyclePriceDTO.setStartDate(insuranceApply.getStartTime());
+ CountCyclePriceVO countCyclePriceVO = this.getCountCyclePriceVO(countCyclePriceDTO);
+ insuranceApply.setApplyEndTime(countCyclePriceVO.getEndDate());
+ insuranceApply.setEndTime(countCyclePriceVO.getEndDate());
insuranceApplyMapper.insert(insuranceApply);
+
+
//澶勭悊涓嬬骇鏁版嵁
- this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo);
+ this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo,countCyclePriceVO);
InsuranceApply updBean = new InsuranceApply();
updBean.setId(insuranceApply.getId());
updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
@@ -692,14 +798,21 @@
insuranceApply.setCompanyId(loginUserInfo.getCompanyId());
insuranceApply.setCheckInfo(insuranceApplyStatus.getName());
insuranceApply.setStartTime(insuranceApply.getApplyStartTime());
- insuranceApply.setEndTime(insuranceApply.getApplyEndTime());
insuranceApply.setCheckDate(new Date());
insuranceApply.setCurrentFee(BigDecimal.ZERO);
insuranceApply.setCheckUserId(loginUserInfo.getId());
insuranceApply.setStatus(insuranceApplyStatus.getKey());
+
+ CountCyclePriceDTO countCyclePriceDTO = new CountCyclePriceDTO();
+ countCyclePriceDTO.setSolutionsId(insuranceApply.getSolutionId());
+ countCyclePriceDTO.setStartDate(insuranceApply.getStartTime());
+ CountCyclePriceVO countCyclePriceVO = this.getCountCyclePriceVO(countCyclePriceDTO);
+ insuranceApply.setApplyEndTime(countCyclePriceVO.getEndDate());
+ insuranceApply.setEndTime(countCyclePriceVO.getEndDate());
+
applyDetailMapper.delete(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,insuranceApply.getId()));
//澶勭悊涓嬬骇鏁版嵁
- this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo);
+ this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo,countCyclePriceVO);
insuranceApply.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
insuranceApplyMapper.updateById(insuranceApply);
//瀛樺偍鏃ュ織鏁版嵁
@@ -709,7 +822,7 @@
- public void dealApplyDetailData(InsuranceApply insuranceApply,List<ApplyDetail> applyDetailList,LoginUserInfo loginUserInfo){
+ public void dealApplyDetailData(InsuranceApply insuranceApply,List<ApplyDetail> applyDetailList,LoginUserInfo loginUserInfo,CountCyclePriceVO countCyclePriceVO){
Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
if(Objects.isNull(solutions)){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
@@ -796,7 +909,7 @@
applyDetail.setMemberId(member.getId());
applyDetail.setIdcardNo(member.getIdcardNo());
applyDetail.setSex(member.getSex());
- applyDetail.setFee(Constants.countDetailFee(solutions,insuranceApply.getApplyEndTime(),insuranceApply.getApplyStartTime()));
+ applyDetail.setFee(countCyclePriceVO.getCyclePrice());
//楠岃瘉娲鹃仯鍗曚綅淇℃伅鏄惁瀛樺湪
if(duSolutionList.stream().filter(d->d.getDispatchUnitId().equals(applyDetail.getDuId())).collect(Collectors.toList()).size()<=Constants.ZERO){
throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"銆�"+applyDetail.getMemberName()+"銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒");
@@ -1306,6 +1419,8 @@
+
+
@Override
public CountCyclePriceVO getCountCyclePriceVO(CountCyclePriceDTO countCyclePriceDTO){
if(Objects.isNull(countCyclePriceDTO)
@@ -1318,21 +1433,11 @@
if(Objects.isNull(solutions)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
}
- CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO();
- if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){
- countCyclePriceVO.setEndDate(DateUtil.afterDateByType(countCyclePriceDTO.getStartDate(),0,solutions.getInsureCycle()));
- }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){
- Integer monthDays = DateUtil.monthDays(countCyclePriceDTO.getStartDate());
- Date afterDate = DateUtil.afterDateByType(countCyclePriceDTO.getStartDate(),0,monthDays);
- countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1));
- }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){
- Date afterDate = DateUtil.afterDateByType(countCyclePriceDTO.getStartDate(),2,solutions.getInsureCycle());
- countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1));
- }
- countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),countCyclePriceDTO.getStartDate()));
- return countCyclePriceVO;
+ return Constants.countPriceVO(countCyclePriceDTO.getStartDate(),solutions);
}
+
+
}
--
Gitblit v1.9.3