From 6b152bd561f64f01a5bb0a8cc9784dfa601a72d1 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 27 六月 2024 11:53:40 +0800
Subject: [PATCH] 提交一把
---
server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java | 124 ++++++++++++++++++++++++++---------------
1 files changed, 79 insertions(+), 45 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
index ef47549..8c1d325 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/UnionChangeServiceImpl.java
@@ -156,7 +156,8 @@
.selectAs(UnionApply::getCode,UnionChange::getApplyCode)
.selectAs(Solutions::getName,UnionChange::getSolutionsName)
.selectAs(UnionApply::getStartTime,UnionChange::getStartTime)
- .selectAs(UnionApply::getEndTime,UnionChange::getEndTime)
+ .selectAs(UnionApply::getEndTime,UnionChange::getEndTime)
+ .selectAs(Solutions::getDelOnlyReplace,UnionChange::getDelOnlyReplace)
.selectAs(Company::getName,UnionChange::getShopName)
.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)
@@ -176,6 +177,7 @@
.ne(ApplyChagneDetail::getType,Constants.TWO)
.eq(ApplyChagneDetail::getUnionChangeId,unionChange.getId()));
BigDecimal fee = applyChangeList.stream().map(m->m.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add);
+// fee = fee.add(applyChangeList.stream().map(m->Objects.nonNull(m.getReduceMoney())?m.getReduceMoney():BigDecimal.ZERO).reduce(BigDecimal.ZERO,BigDecimal::add));
// for (ApplyChagneDetail applyChagneDetail:applyChangeList) {
// Integer maxDays = DateUtil.calculateBetween(unionChange.getApplyStartTime(),applyChagneDetail.getEndTime(),0);
// if(applyChagneDetail.getType().equals(Constants.ONE)){
@@ -796,7 +798,6 @@
.eq(ApplyChagneDetail::getApplyChangeId,applyChange.getId()));
this.dealApplyChangeDetail(applyChange,allList,solutions);
applyChangeJoinMapper.updateById(applyChange);
-
//瀛樺偍鎵瑰崟瀹屾垚淇℃伅
Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_PLATFORM_APPROVE;
String info = "";
@@ -827,9 +828,6 @@
,unionChange.getId(),applyLogType.getKey(),null, JSONObject.toJSONString(unionChange));
applyLogMapper.insert(log);
-// if(true){
-// throw new BusinessException(ResponseStatus.NOT_ALLOWED);
-// }
}
@@ -841,19 +839,34 @@
bigDecimalVO.setTotalFee(BigDecimal.ZERO);
bigDecimalVO.setCurrentFee(BigDecimal.ZERO);
InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChange.getApplyId());
- for (ApplyChagneDetail detail:applyChagneDetailList) {
+ List<ApplyChagneDetail> addList = applyChagneDetailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.ZERO)).collect(Collectors.toList());
+ List<ApplyChagneDetail> reduceList = applyChagneDetailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.ONE)).collect(Collectors.toList());
+ List<ApplyChagneDetail> changeList = applyChagneDetailList.stream().filter(f->Constants.equalsInteger(f.getType(),Constants.TWO)).collect(Collectors.toList());
+ for (ApplyChagneDetail detail:reduceList) {
Member member = memberMapper.selectById(detail.getMemberId());
if(Objects.isNull(member)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐鏁版嵁");
}
- if (Constants.equalsInteger(detail.getType(), Constants.ZERO)) {
- this.addChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO);
- }else if(Constants.equalsInteger(detail.getType(),Constants.ONE)){
- this.reduceChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO);
- }else{
- this.otherChangeDetailData(applyChange,detail,insuranceApply);
- }
+ this.reduceChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO);
}
+
+ for (int i = 0; i < addList.size(); i++) {
+ ApplyChagneDetail detail = addList.get(i);
+ Member member = memberMapper.selectById(detail.getMemberId());
+ if(Objects.isNull(member)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐鏁版嵁");
+ }
+ this.addChangeDetailData(applyChange,detail,insuranceApply,solutions,bigDecimalVO,reduceList,i);
+ }
+
+ for (ApplyChagneDetail detail:changeList) {
+ Member member = memberMapper.selectById(detail.getMemberId());
+ if(Objects.isNull(member)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鍛樺伐鏁版嵁");
+ }
+ this.otherChangeDetailData(applyChange,detail,insuranceApply);
+ }
+
//濡傛灉淇濆崟閲戦鍙戠敓缂栫爜锛屾洿鏂版�讳繚鍗曢噾棰�
insuranceApplyMapper.update(null, new UpdateWrapper<InsuranceApply>().lambda()
.setSql(bigDecimalVO.getTotalFee().compareTo(new BigDecimal(0)) != 0," fee = ifnull(fee,0)+" + bigDecimalVO.getTotalFee())
@@ -872,17 +885,12 @@
* @param detail
*/
public void addChangeDetailData(ApplyChange applyChange, ApplyChagneDetail detail,InsuranceApply insuranceApply,Solutions solutions
- , BigDecimalVO bigDecimalVO){
- //鏌ヨ鍔犱繚浜哄憳鏄惁瀛樺湪 鍐茬獊鐨� 淇濆崟鏄庣粏鏁版嵁
- if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>()
- .lambda()
- .eq(ApplyDetail::getApplyId,applyChange.getApplyId())
- .eq(ApplyDetail::getIdcardNo,detail.getIdcardNo())
- .le(ApplyDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(),1))
- .ge(ApplyDetail::getEndTime,DateUtil.getMontageDate(detail.getEndTime(),2))
- )>Constants.ZERO){
- throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鍔犱繚浜哄憳銆�" + detail.getMemberName() + "銆戝瓨鍦ㄦ棩鏈熷啿绐佺殑鏁版嵁");
- }
+ , BigDecimalVO bigDecimalVO,List<ApplyChagneDetail> reduceList,Integer i){
+ //鏌ヨ浜哄憳淇℃伅鏄惁瀛樺湪鐩稿悓鐨勬柟妗堜笅鏄惁瀛樺湪 鍐茬獊鏁版嵁
+ InsuranceApplyServiceImpl.checkStaticMemberSolution(solutions.getBaseId(),
+ detail.getIdcardNo(),detail.getMemberName(),DateUtil.getMontageDate(applyChange.getApplyStartTime(),1),DateUtil.getMontageDate(detail.getEndTime(),2),
+ applyDetailJoinMapper);
+
//鍔犱繚
ApplyDetail add = new ApplyDetail();
BigDecimal fee = Objects.isNull(insuranceApply.getServerCost())?
@@ -916,17 +924,23 @@
add.setEndTime(DateUtil.getMontageDate(detail.getEndTime(), 2));
add.setRemark(detail.getRemark());
add.setUnionApplyId(insuranceApply.getUnionApplyId());
+ add.setChangeStatus(Constants.ZERO);
+ if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)
+ && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && i < reduceList.size() ){
+ add.setReduceId(reduceList.get(i).getApplyDetailId());
+ }
applyDetailJoinMapper.insert(add);
-
- detail.setFee(add.getFee());
+ detail.setFee(Objects.isNull(add.getReduceId())?add.getFee():BigDecimal.ZERO);
+ bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(add.getFee()));
+ //濡傛灉涓嶆槸鏇挎崲涓氬姟鐨勫姞淇濇暟鎹� 鍒欐坊鍔犲疄闄呬骇鐢熻垂鐢�
+ if(Objects.isNull(add.getReduceId())){
+ bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(add.getCurrentFee()));
+ }
applyChagneDetailJoinMapper.update(null,new UpdateWrapper<ApplyChagneDetail>().lambda()
- .set(ApplyChagneDetail::getFee,add.getFee())
+ .set(ApplyChagneDetail::getFee,detail.getFee())
.set(ApplyChagneDetail::getStartTime,DateUtil.getMontageDate(applyChange.getApplyStartTime(), 1))
.eq(ApplyChagneDetail::getId,detail.getId())
);
- bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(add.getFee()));
- bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(add.getCurrentFee()));
-
MemberInsurance memberInsurance = new MemberInsurance(detail, applyChange, applyChange.getEditor(), add.getId(),applyChange.getSolutionsId());
memberInsurance.setStartTime(add.getStartTime());
memberInsurance.setEndTime(add.getEndTime());
@@ -939,13 +953,14 @@
.set(Member::getStartTime,memberInsurance.getStartTime())
.set(Member::getEndTime,memberInsurance.getEndTime())
.set(Member::getDuId,memberInsurance.getDuId())
+ .set(Member::getEditDate,applyChange.getEditDate())
+ .set(Member::getEditor,applyChange.getEditor())
.set(Member::getWorktypeId,memberInsurance.getWorktypeId())
.eq(Member::getId, memberInsurance.getMemberId())
);
-
-// if(1==1){
-// throw new BusinessException(ResponseStatus.NOT_ALLOWED);
-// }
+// if(1==1){
+// throw new BusinessException(ResponseStatus.NOT_ALLOWED);
+// }
}
/**
@@ -985,19 +1000,37 @@
pullFee = reduceFee;
}
}
-
- bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(reduceFee).subtract(oldModel.getFee()));
- bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(pullFee).subtract(oldModel.getCurrentFee()));
-
- applyDetailJoinMapper.update(null, new UpdateWrapper<ApplyDetail>().lambda()
- .setSql(" fee = " + reduceFee)
- .setSql(" current_fee = " + pullFee)
+ UpdateWrapper<ApplyDetail> updateWrapper = new UpdateWrapper<ApplyDetail>();
+ updateWrapper.lambda()
+ .setSql(" fee = " + reduceFee)
+ .setSql(" current_fee = " + pullFee)
.set(ApplyDetail::getEndTime, reduceDate)
.set(ApplyDetail::getEditor, applyChange.getEditor())
.set(ApplyDetail::getEditDate, applyChange.getEditDate())
- .eq(ApplyDetail::getId, oldModel.getId())
- );
+ .eq(ApplyDetail::getId, oldModel.getId());
+ BigDecimal reduceMoney = BigDecimal.ZERO;
+ if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)
+ && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit())){
+ if(reduceDate.getTime()<=oldModel.getStartTime().getTime()){
+ reduceFee = BigDecimal.ZERO;
+ updateWrapper.lambda().set(ApplyDetail::getFee,reduceFee)
+ .set(ApplyDetail::getChangeStatus,Constants.TWO);
+ }else{
+ reduceMoney = solutions.getPrice().multiply(new BigDecimal(-1));
+ //鏍囪鏁版嵁宸茶鏇挎崲
+ updateWrapper.lambda().set(ApplyDetail::getReduceMoney,reduceMoney)
+ .set(ApplyDetail::getChangeStatus,Constants.ONE);
+ }
+ detail.setApplyDetailId(oldModel.getId());
+ }
+ bigDecimalVO.setTotalFee(bigDecimalVO.getTotalFee().add(reduceFee).subtract(oldModel.getFee()).add(reduceMoney));
+ bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(pullFee).subtract(oldModel.getCurrentFee()));
+// //濡傛灉鍑忎繚鐨勬暟鎹� 宸茬粡缁撴潫 鍒欐鏁版嵁瑕佸幓鎺� 鍑忛櫎鐨勫疄闄呭樊鍊� reduceMoney
+// if(System.currentTimeMillis()>detail.getEndTime().getTime()){
+// bigDecimalVO.setCurrentFee(bigDecimalVO.getCurrentFee().add(reduceMoney));
+// }
+ applyDetailJoinMapper.update(null, updateWrapper);
//淇敼 鍛樺伐鎶曚繚鏄庣粏璁板綍 鍘嗗彶鏁版嵁
memberInsuranceJoinMapper.update(null, new UpdateWrapper<MemberInsurance>().lambda()
.setSql(" fee = " + reduceFee)
@@ -1021,13 +1054,14 @@
.set(ApplyChagneDetail::getEndTime,reduceDate)
.eq(ApplyChagneDetail::getId,detail.getId())
);
+ detail.setApplyDetailId(oldModel.getId());
}
public void otherChangeDetailData(ApplyChange applyChange,ApplyChagneDetail detail,InsuranceApply insuranceApply){
//瀹為檯鎵瑰崟鐢熸晥鏃ユ湡
Date applyStartTime = DateUtil.getMontageDate(applyChange.getApplyStartTime(),1);
//鏌ヨ鍑忎繚浜哄憳鏄惁瀛樺湪 鍐茬獊鐨� 淇濆崟鏄庣粏鏁版嵁
- if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>()
+ /*if(applyDetailJoinMapper.selectCount(new QueryWrapper<ApplyDetail>()
.lambda()
.eq(ApplyDetail::getApplyId,applyChange.getApplyId())
.eq(ApplyDetail::getIdcardNo,detail.getIdcardNo())
@@ -1036,7 +1070,7 @@
)<=Constants.ZERO){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鎹㈠巶浜哄憳銆�" + detail.getMemberName() + "銆戞湭鏌ヨ鍒扮鍚堟壒鍗曟棩鏈熺殑鏁版嵁");
}
-
+*/
//鏌ヨ鍛樺伐鏄湪涓诲崟涓� 鏄惁瀛樺湪鐢熸晥涓殑鏁版嵁
ApplyDetail oldModel = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda()
.eq(ApplyDetail::getApplyId, applyChange.getApplyId())
--
Gitblit v1.9.3