From 3e76748af46dcc2602205f80caf8e9ea357c1e53 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 11 六月 2025 18:28:16 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1
---
server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java | 203 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 201 insertions(+), 2 deletions(-)
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
index 1dd9e0a..4055cf6 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -1416,8 +1416,6 @@
}
}
-
-
/**
* 鍔犱繚鏁版嵁澶勭悊
* @param applyChange 鍔犲噺淇濅繚鍗曟暟鎹�
@@ -1426,6 +1424,205 @@
* @param loginUserInfo 鎿嶄綔浜�
*/
public void addChangeDetail(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList,
+ List<DuSolution> duSolutionList,
+ InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize,
+ List<Integer> worktypeIdList){
+ if(applyChange.getApplyStartTime().getTime()>insuranceApply.getEndTime().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚鐢熸晥鏈熶笉鑳藉ぇ浜庝繚鍗曠粨鏉熸棩鏈�");
+ }
+ //鏌ヨ鏈鍔犱繚鎵�鏈変汉鍛樹俊鎭�
+ List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .in(Member::getIdcardNo,addDetailList.stream().map(i->i.getIdcardNo()).collect(Collectors.toList()))
+ );
+ ApplyDetail applyDetail = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>().lambda()
+ .eq(ApplyDetail::getApplyId,applyChange.getApplyId())
+ .isNotNull(ApplyDetail::getPrice)
+ .last("limit 1 ")
+ );
+ if(Objects.isNull(applyDetail)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "淇濆崟涓嬫棤鏄庣粏鏁版嵁");
+ }
+ List<Member> updMemberList = new ArrayList<>();
+ //鏌ヨ鏈鍔犱繚鎵�鏈変汉鍛樼殑鍘嗗彶淇濆崟璁板綍
+ List<ApplyDetail> applyDetailAllList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,
+ new MPJLambdaWrapper<ApplyDetail>()
+ .selectAll(ApplyDetail.class)
+ .selectAs(InsuranceApply::getCode,ApplyDetail::getApplyCode)
+ .selectAs(InsuranceApply::getStatus,ApplyDetail::getApplyStatus)
+ .selectAs(Company::getName,ApplyDetail::getCompanyName)
+ .selectAs(Solutions::getBaseId,ApplyDetail::getSolutionBaseId)
+ .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
+ .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
+ .leftJoin(Company.class,Company::getId,InsuranceApply::getCompanyId)
+ .in(ApplyDetail::getMemberId,memberList.stream().map(i->i.getId()).collect(Collectors.toList()))
+ .eq(ApplyDetail::getIsdeleted,Constants.ZERO));
+
+ List<ApplyChagneDetail> applyChangeDetailAllList = applyChagneDetailJoinMapper.selectJoinList(ApplyChagneDetail.class,
+ new MPJLambdaWrapper<ApplyChagneDetail>()
+ .selectAll(ApplyChagneDetail.class)
+ .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId)
+ .leftJoin(Member.class,Member::getId,ApplyChagneDetail::getMemberId)
+ .eq(ApplyChange::getApplyId,applyChange.getApplyId())
+ .in(Member::getIdcardNo,memberList.stream().map(i->i.getId()).collect(Collectors.toList()))
+ .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE));
+
+ List<ApplyChagneDetail> applyChagneDetailList = new ArrayList<>();
+ for (int i = 0; i < addDetailList.size(); i++) {
+ ApplyChagneDetail applyChagneDetail = addDetailList.get(i);
+ if (
+ Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO) && Objects.isNull(applyChagneDetail.getDuId())
+ || Objects.isNull(applyChagneDetail.getWorktypeId())
+ || StringUtils.isBlank(applyChagneDetail.getIdcardNo())
+ ) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝繀濉」缂哄け");
+ }
+
+ //鏍规嵁鍛樺伐韬唤璇佽繘琛屽垽鏂勾榫�
+ long age = Constants.getAgeByIdCard(applyChagneDetail.getIdcardNo());
+ if(Objects.isNull(age)
+ || age > solutions.getMaxAge()
+ || age < solutions.getMinAge()){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"銆�"+applyChagneDetail.getMemberName()+"銆戝憳宸ュ勾榫勮秴鍑烘柟妗堥厤缃� 鏂规閰嶇疆銆�"+solutions.getMinAge()+" - "+solutions.getMaxAge()+"銆戝瓨鍦ㄥ紓甯告暟鎹紒");
+ }
+
+ //鏌ヨ褰撳墠澶勭悊鐨勪汉鍛樹俊鎭�
+ List<Member> optMembers = memberList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList());
+ Member member = new Member();
+ if(CollectionUtils.isEmpty(optMembers)){
+ member = new Member();
+ member.setCreateDate(new Date());
+ member.setCreator(loginUserInfo.getId());
+ member.setIsdeleted(Constants.ZERO);
+ member.setName(applyChagneDetail.getMemberName());
+ member.setCompanyId(insuranceApply.getCompanyId());
+ member.setSex(Constants.getSexByIdCard(applyChagneDetail.getIdcardNo()));
+ if(!IdcardUtil.isValidCard(applyChagneDetail.getIdcardNo())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鍔犱繚鍛樺伐淇℃伅韬唤璇佷俊鎭敊璇痆"+member.getName()+"]");
+ }
+ member.setIdcardNo(applyChagneDetail.getIdcardNo());
+ member.setApplyId(insuranceApply.getId());
+ member.setDuId(applyChagneDetail.getDuId());
+ member.setWorktypeId(applyChagneDetail.getWorktypeId());
+ memberMapper.insert(member);
+ applyChagneDetail.setMemberId(member.getId());
+ }else{
+ member = optMembers.get(Constants.ZERO);
+ member.setApplyId(insuranceApply.getId());
+ member.setDuId(applyChagneDetail.getDuId());
+ member.setWorktypeId(applyChagneDetail.getWorktypeId());
+ member.setStartTime(applyChagneDetail.getStartTime());
+ member.setEndTime(applyChagneDetail.getEndTime());
+// memberMapper.updateById(member);
+ updMemberList.add(member);
+ applyChagneDetail.setMemberId(member.getId());
+ if(applyChangeDetailAllList.stream().filter(
+ j->Constants.equalsInteger(j.getMemberId(),applyChagneDetail.getMemberId())
+ ).collect(Collectors.toList()).size()>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄧ敵璇蜂腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁");
+ }
+
+ }
+ List<ApplyDetail> memberApplyDetailList = new ArrayList<>();
+ if(CollectionUtils.isNotEmpty(applyDetailAllList)){
+ memberApplyDetailList = applyDetailAllList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())).collect(Collectors.toList());
+
+ if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())&&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId())
+ && j.getStartTime().getTime() <= DateUtil.getMontageDate(applyChange.getApplyStartTime(),1).getTime()
+ && j.getEndTime().getTime() >= DateUtil.getMontageDate(insuranceApply.getEndTime(),2).getTime()
+ ).collect(Collectors.toList()).size()>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "褰撳墠淇濆崟涓嬶紝鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄦ棩鏈熷啿绐佺殑鏁版嵁");
+ };
+
+ if(memberApplyDetailList.stream().filter(j->j.getIdcardNo().equals(applyChagneDetail.getIdcardNo())
+ &&Constants.equalsInteger(j.getApplyId(),applyChange.getApplyId())
+ && j.getStartTime().getTime() <= System.currentTimeMillis()
+ && j.getEndTime().getTime() >= System.currentTimeMillis()
+ ).collect(Collectors.toList()).size()>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚");
+ };
+
+ }
+
+ applyChagneDetail.setPrice(applyDetail.getPrice());
+ applyChagneDetail.setCreateDate(new Date());
+ applyChagneDetail.setCreator(loginUserInfo.getId());
+ applyChagneDetail.setIsdeleted(Constants.ZERO);
+ applyChagneDetail.setApplyChangeId(applyChange.getId());
+ applyChagneDetail.setStartTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),1));
+ applyChagneDetail.setEndTime(DateUtil.getMontageDate(insuranceApply.getEndTime(),2));
+ applyChagneDetail.setType(Constants.ZERO);
+
+
+ List<ApplyDetail> checkStaticMemberSolutionList = memberApplyDetailList.stream()
+ .filter(j->Constants.equalsInteger(j.getSolutionBaseId(),solutions.getBaseId())
+ && !( j.getApplyStatus() == Constants.InsuranceApplyStatus.CLOSE.getKey() || j.getApplyStatus() == Constants.InsuranceApplyStatus.WTB_CLOSED.getKey() )
+ && (
+ ( applyChange.getApplyStartTime().getTime()<= j.getStartTime().getTime() && j.getStartTime().getTime() < insuranceApply.getEndTime().getTime() )
+ ||
+ ( applyChange.getApplyStartTime().getTime()< j.getEndTime().getTime() && j.getEndTime().getTime() < insuranceApply.getEndTime().getTime() )
+ ||
+ ( applyChange.getApplyStartTime().getTime()> j.getStartTime().getTime() && insuranceApply.getEndTime().getTime() < j.getEndTime().getTime() )
+ )
+ ).collect(Collectors.toList());
+
+ if(checkStaticMemberSolutionList.size() >Constants.ZERO){
+ String companyName = checkStaticMemberSolutionList.get(Constants.ZERO).getCompanyName();
+ String idCode = checkStaticMemberSolutionList.get(Constants.ZERO).getIdcardNo();
+ if(StringUtils.isNotBlank(companyName)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+applyChagneDetail.getMemberName()+" "+idCode+"銆戝凡鍦ㄣ��"+companyName+"銆戝瓨鍦ㄤ繚闄�,璇疯仈绯诲鏈嶇‘璁�");
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ュ憳宸ャ��"+applyChagneDetail.getMemberName()+" "+idCode+"銆戝湪璇ヤ繚闄╂柟妗堜笅宸插瓨鍦ㄦ姇淇濊褰曪紝鏃犳硶杩涜璇ユ搷浣�");
+ }
+ };
+
+ //楠岃瘉娲鹃仯鍗曚綅淇℃伅 涓庡伐绉嶄俊鎭� 鏄惁瀛樺湪
+ if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){
+ if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) {
+ throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ユ淳閬e崟浣嶆湭鏌ヨ鍒帮紒");
+ }
+ }
+ if (worktypeIdList.stream().filter(d -> Constants.equalsInteger(d,applyChagneDetail.getWorktypeId()))
+ .collect(Collectors.toList()).size() <= Constants.ZERO) {
+ throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "銆�" + applyChagneDetail.getMemberName() + "銆戝憳宸ュ伐绉嶄俊鎭湭鏌ヨ鍒帮紒");
+ }
+ applyChagneDetail.setMemberId(member.getId());
+ //濡傛灉鏄噺淇濅笟鍔′负浠呮浛鎹� 涓� 鏂规鐨勬墸璐瑰懆鏈熷拰鎬诲懆鏈熺浉绛� 鍒欏鐞嗗噺淇濊垂鐢�
+ if(Constants.equalsInteger(solutions.getDelOnlyReplace(),Constants.ONE)
+ && Constants.equalsInteger(solutions.getTimeUnit(),solutions.getInsureCycleUnit()) && delSize> i){
+ applyChagneDetail.setFee(BigDecimal.ZERO);
+ }else{
+ applyChagneDetail.setFee(detailFee);
+ }
+ applyChagneDetail.setId(null);
+ applyChagneDetailList.add(applyChagneDetail);
+ }
+ if(CollectionUtils.isNotEmpty(applyChagneDetailList)){
+ applyChagneDetailJoinMapper.insert(applyChagneDetailList);
+ }
+ if(CollectionUtils.isNotEmpty(updMemberList)){
+ Thread t1=new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ memberMapper.insertOrUpdate(updMemberList);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ });
+ t1.start();
+ }
+ }
+
+ /**
+ * 鍔犱繚鏁版嵁澶勭悊
+ * @param applyChange 鍔犲噺淇濅繚鍗曟暟鎹�
+ * @param addDetailList 鍔犱繚浜哄憳
+ * @param duSolutionList 娲鹃仯鍗曚綅鏂规鏁版嵁
+ * @param loginUserInfo 鎿嶄綔浜�
+ */
+ public void addChangeDetailOld(ApplyChange applyChange ,List<ApplyChagneDetail> addDetailList,
List<DuSolution> duSolutionList,
InsuranceApply insuranceApply,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal detailFee,Integer delSize,
List<Integer> worktypeIdList){
@@ -1456,6 +1653,7 @@
ApplyDetail applyDetail = applyDetailJoinMapper.selectOne(new QueryWrapper<ApplyDetail>()
.lambda()
.eq(ApplyDetail::getApplyId,applyChange.getApplyId()).last("limit 1"));
+
if(Objects.isNull(applyDetail)){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "淇濆崟涓湭瀛樺湪鏄庣粏璁板綍");
}
@@ -1548,6 +1746,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄤ繚闅滀腑鐨勪繚鍗曚俊鎭紝鏃犳硶杩涜鍔犱繚");
}
}
+
//楠岃瘉娲鹃仯鍗曚綅淇℃伅 涓庡伐绉嶄俊鎭� 鏄惁瀛樺湪
if(Constants.equalsInteger(solutions.getHasDispatchUnit(),Constants.ZERO)){
if (duSolutionList.stream().filter(d -> d.getDispatchUnitId().equals(applyChagneDetail.getDuId())).collect(Collectors.toList()).size() <= Constants.ZERO) {
--
Gitblit v1.9.3