From 25baa25ea30432ba8651b5cc9dc0c2bdfed4fc2d Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 20 五月 2025 16:14:54 +0800 Subject: [PATCH] 提交一把 --- server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 191 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 140 insertions(+), 51 deletions(-) diff --git a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java index 268b6b1..d412f7a 100644 --- a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java +++ b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java @@ -19,6 +19,7 @@ import com.doumee.dao.business.model.*; import com.doumee.dao.business.vo.CompensationVO; import com.doumee.dao.business.vo.RiskConfigVO; +import com.doumee.dao.business.vo.SettleClaimsMoneyVO; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.SettleClaimsLogService; import com.doumee.service.business.SettleClaimsService; @@ -61,6 +62,8 @@ @Autowired private SettleClaimsMapper settleClaimsMapper; + @Autowired + private SettleClaimsExtMapper settleClaimsExtMapper; @Autowired private SettleClaimsLogMapper settleClaimsLogMapper; @@ -375,67 +378,150 @@ return 1; } - @Override - public Integer createSys(SettleClaims settleClaims) { + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Integer createOrEditSys(SettleClaims settleClaims) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); settleClaims.setOrigin(Constants.ONE); if(Objects.isNull(settleClaims) - || Objects.isNull(settleClaims.getMemberName()) - || Objects.isNull(settleClaims.getSolutionName()) - || Objects.isNull(settleClaims.getDuId()) - || Objects.isNull(settleClaims.getWorktypeId()) - || Objects.isNull(settleClaims.getHappenTime()) - || Objects.isNull(settleClaims.getType()) - || Objects.isNull(settleClaims.getInHospital()) - || Objects.isNull(settleClaims.getMedicalInsurance()) - || Objects.isNull(settleClaims.getContent()) - || Objects.isNull(settleClaims.getInformantName()) - || Objects.isNull(settleClaims.getInformantPhone())){ + || Objects.isNull(settleClaims.getExtData()) + || Objects.isNull(settleClaims.getExtData().getMemberName()) + || Objects.isNull(settleClaims.getExtData().getMemberIdcardType()) + || Objects.isNull(settleClaims.getExtData().getMemberIdcard())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } - if(!loginUserInfo.getType().equals(Constants.ONE)){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氬憳宸ユ棤娉曡繘琛岃鎿嶄綔"); + if(!Constants.equalsObject(settleClaims.getStatus(),Constants.ZERO) + &&( Objects.isNull(settleClaims.getExtData().getBxName()) + || Objects.isNull(settleClaims.getExtData().getBxCode()) + || Objects.isNull(settleClaims.getExtData().getBxEnddate()) + || Objects.isNull(settleClaims.getExtData().getBxOrg()) + || Objects.isNull(settleClaims.getInformantPhone()) )){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); } - //鏌ヨ鏄惁瀛樺湪宸叉彁鎶ョ殑鏁版嵁 鏍规嵁浜哄憳鍜屼繚闄╂柟妗堣繘琛岃繃婊� 鏄惁瀛樺湪杩涜涓殑鏁版嵁 - if(settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() - .eq(SettleClaims::getSolutionId,settleClaims.getSolutionId()) - .eq(SettleClaims::getMemberId,loginUserInfo.getId()) - .in(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey(), - Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()) - )>Constants.ZERO){ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀛樺湪鎻愭姤涓殑鎶ユ鏁版嵁!"); + if(!Constants.equalsInteger(loginUserInfo.getType(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲钩鍙扮鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); } - settleClaims.setCreateDate(new Date()); - settleClaims.setIsdeleted(Constants.ZERO); - settleClaims.setCompanyId(loginUserInfo.getCompanyId()); - settleClaims.setStatus(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey()); - settleClaims.setCreator(loginUserInfo.getId()); - settleClaims.setCheckUserId(loginUserInfo.getId()); - settleClaimsMapper.insert(settleClaims); + Date date =new Date(); + settleClaims.setEditDate(date); + settleClaims.setEditor(loginUserInfo.getId()); - List<Multifile> reportVideo = settleClaims.getReportFileList(); - if(CollectionUtils.isNotEmpty(reportVideo)){ - for (int i = 0; i < reportVideo.size(); i++) { - Multifile multifile = reportVideo.get(i); - if(Objects.isNull(multifile.getFileurl()) - || Objects.isNull(multifile.getType()) - || StringUtils.isBlank(multifile.getName()) - ){ - throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父"); + List<SettleClaimsMoneyVO> feeList = settleClaims.getAccountList(); + BigDecimal mainFee = new BigDecimal(0); + BigDecimal ortherFee = new BigDecimal(0); + if(feeList!=null && feeList.size()>0){ + for(SettleClaimsMoneyVO fee : feeList){ + if(Constants.equalsObject(fee.getType(),Constants.ZERO)){ + mainFee = mainFee.add(Constants.formatBigdecimal(fee.getMoney())); + }else{ + ortherFee = ortherFee.add(Constants.formatBigdecimal(fee.getMoney())); } - multifile.setCreator(loginUserInfo.getId()); - multifile.setCreateDate(new Date()); - multifile.setIsdeleted(Constants.ZERO); - multifile.setObjId(settleClaims.getId()); - multifile.setObjType(Constants.ONE); - multifile.setSortnum(i+1); - multifileJoinMapper.insert(multifile); } + settleClaims.setHpAccountContent(JSONObject.toJSONString(feeList)); + settleClaims.setHpAccount(mainFee); + settleClaims.setHpOtherAccount(ortherFee); } - + if(settleClaims.getId() ==null){ + //濡傛灉鏄柊澧炶褰� + dealCreateSysBiz(settleClaims,date,loginUserInfo); + }else{ + //濡傛灉鏇存柊 + dealUpdateSysBiz(settleClaims,date,loginUserInfo); + } return settleClaims.getId(); } + + private void dealUpdateSysBiz(SettleClaims settleClaims, Date date, LoginUserInfo loginUserInfo) { + SettleClaims model = settleClaimsMapper.selectById(settleClaims.getId()); + if(model ==null){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + settleClaimsMapper.updateById(settleClaims); + //鍒犻櫎鍘熸潵鐨勬墿灞曞睘鎬т俊鎭紝淇濈暀鏈�鏂扮殑 + settleClaimsExtMapper.delete(new UpdateWrapper<SettleClaimsExt>().lambda().eq(SettleClaimsExt::getSettileClaimsId,model.getId())); + settleClaims.getExtData().setCreator(settleClaims.getCreator()); + settleClaims.getExtData().setCreateDate(date); + settleClaims.getExtData().setEditor(settleClaims.getCreator()); + settleClaims.getExtData().setEditDate(date); + settleClaims.getExtData().setIsdeleted(Constants.ZERO); + settleClaims.getExtData().setSettileClaimsId(settleClaims.getId()); + settleClaimsExtMapper.insert(settleClaims.getExtData()); + //澶勭悊闄勪欢寮�濮� + multifileJoinMapper.update(null,new UpdateWrapper<Multifile>().lambda() + .set(Multifile::getIsdeleted,Constants.ZERO) + .eq(Multifile::getObjId,model.getId()) + .in(Multifile::getObjType,Constants.MultiFile.LP_YGGX_FILE.getKey() + ,Constants.MultiFile.LP_ZYCL_FILE.getKey() + ,Constants.MultiFile.LP_MZCL_FILE.getKey() + ,Constants.MultiFile.LP_OTHER_FILE.getKey() + ,Constants.MultiFile.LP_SCZL_FILE.getKey())); + dealSysFileListBiz(settleClaims); + } + + private void dealCreateSysBiz(SettleClaims settleClaims,Date date,LoginUserInfo loginUserInfo) { + settleClaims.setCreateDate(date); + settleClaims.setIsdeleted(Constants.ZERO); + settleClaims.setCreator(loginUserInfo.getId()); + + settleClaimsMapper.insert(settleClaims); + settleClaims.getExtData().setCreator(settleClaims.getCreator()); + settleClaims.getExtData().setCreateDate(date); + settleClaims.getExtData().setEditor(settleClaims.getCreator()); + settleClaims.getExtData().setEditDate(date); + settleClaims.getExtData().setIsdeleted(Constants.ZERO); + settleClaims.getExtData().setSettileClaimsId(settleClaims.getId()); + settleClaimsExtMapper.insert(settleClaims.getExtData()); + //澶勭悊闄勪欢寮�濮� + dealSysFileListBiz(settleClaims); + } + + /** + * 澶勭悊闄勪欢寮�濮� + * @param settleClaims + */ + + private void dealSysFileListBiz(SettleClaims settleClaims) { + List<Multifile> relationFileList = settleClaims.getRelationFileList();//鍛樺伐鍏崇郴鏉愭枡 + List<Multifile> hospitalFileList = settleClaims.getHospitalFileList();//浣忛櫌鏉愭枡 + List<Multifile> outpatientFileList = settleClaims.getOutpatientFileList();//闂ㄨ瘖鏉愭枡 + List<Multifile> otherFileList = settleClaims.getOtherFileList();//鍏朵粬鏉愭枡 + List<Multifile> disabilityFileList = settleClaims.getDisabilityFileList();//浼ゆ畫鏉愭枡 + List<Multifile> insetList = new ArrayList<>(); + insetList.addAll(getMultifileListByObjtype(relationFileList,Constants.MultiFile.LP_YGGX_FILE.getKey(),settleClaims)); + insetList.addAll(getMultifileListByObjtype(hospitalFileList,Constants.MultiFile.LP_ZYCL_FILE.getKey(),settleClaims)); + insetList.addAll(getMultifileListByObjtype(outpatientFileList,Constants.MultiFile.LP_MZCL_FILE.getKey(),settleClaims)); + insetList.addAll(getMultifileListByObjtype(otherFileList,Constants.MultiFile.LP_OTHER_FILE.getKey(),settleClaims)); + insetList.addAll(getMultifileListByObjtype(disabilityFileList,Constants.MultiFile.LP_SCZL_FILE.getKey(),settleClaims)); + if(CollectionUtils.isNotEmpty(insetList)){ + multifileJoinMapper.insert(insetList); + } + //--------------澶勭悊闄勪欢缁撴潫---------------- + } + + private Collection<? extends Multifile> getMultifileListByObjtype(List<Multifile> list, int key,SettleClaims model) { + List<Multifile> insetList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(list)){ + int index = 0; + for (int i = 0; i < list.size(); i++) { + Multifile multifile = list.get(i); + if(Objects.isNull(multifile.getFileurl()) + || Objects.isNull(multifile.getType()) + || StringUtils.isBlank(multifile.getName()) ){ + continue; + } + multifile.setCreator(model.getEditor()); + multifile.setCreateDate(model.getEditDate()); + multifile.setEditor(model.getEditor()); + multifile.setEditDate(model.getEditDate()); + multifile.setIsdeleted(Constants.ZERO); + multifile.setObjId(model.getId()); + multifile.setObjType(key); + multifile.setSortnum(index++); + insetList.add(multifile); + } + } + return insetList; + } + @Override public Integer create(SettleClaims settleClaims) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); @@ -1174,7 +1260,7 @@ //澶氭鍑洪櫓鎻愰啋 if(StringUtils.isNotBlank(riskConfigVO.getRiskTimesOpen()) && StringUtils.equals(riskConfigVO.getRiskTimesOpen(),Constants.ONE+"") && StringUtils.isNotBlank(riskConfigVO.getRiskTimesReportTimes())){ - Integer cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() + Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() .eq(SettleClaims::getMemberId,settleClaimsDTO.getMemberId()) .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId()) .apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY) ") @@ -1192,7 +1278,7 @@ && StringUtils.equals(riskConfigVO.getRiskRepeatReportOpen(),Constants.ONE+"") && StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportTimeUnit()) && StringUtils.isNotBlank(riskConfigVO.getRiskRepeatReportTime())){ - Integer cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() + Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() .eq(SettleClaims::getMemberId,settleClaimsDTO.getMemberId()) .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId()) .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")," HAPPEN_TIME > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" HOUR) ") @@ -1212,7 +1298,7 @@ if(StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimesOpen()) && StringUtils.equals(riskConfigVO.getRiskClaimTimesOpen(),Constants.ONE+"") && StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimes())){ - Integer cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() + Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda() .eq(SettleClaims::getInsuranceApplyId,settleClaimsDTO.getInsuranceApplyId()) .ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId()) .apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY) ") @@ -1944,7 +2030,10 @@ update.setEditDate(new Date()); update.setEditor(loginUserInfo.getId()); update.setHpAccountContent(dto.getCompensationJson()); - update.setHpAccount(modelList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setHpAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setHpOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + + update.setId(settleClaims.getId()); update.setStatus(Constants.SettleClaimsStatus.COMPENSATION.getKey()); settleClaimsMapper.updateById(update); -- Gitblit v1.9.3