From 1b560792dcfcaacfbaab84871fa3ad6771336faf Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 03 六月 2025 15:45:42 +0800
Subject: [PATCH] git ch
---
server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 448 +++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 429 insertions(+), 19 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 49ec286..cdc9618 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
@@ -14,6 +14,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dto.*;
+import com.doumee.dao.business.join.ApplyDetailJoinMapper;
import com.doumee.dao.business.join.MultifileJoinMapper;
import com.doumee.dao.business.join.SettleClaimsJoinMapper;
import com.doumee.dao.business.join.SettleClaimsLogJoinMapper;
@@ -23,6 +24,7 @@
import com.doumee.dao.business.vo.SettleClaimsMoneyVO;
import com.doumee.dao.business.vo.SettleParentStatusVO;
import com.doumee.dao.business.vo.dataBoard.DataListVO;
+import com.doumee.dao.business.vo.dataBoard.InsuranceDataVO;
import com.doumee.dao.business.vo.dataBoard.SettleClaimsDataVO;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.SettleClaimsLogService;
@@ -53,6 +55,7 @@
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -100,6 +103,18 @@
@Autowired
private ApplyDetailMapper applyDetailMapper;
+ @Autowired
+ private AreasMapper areasMapper;
+
+
+ @Autowired
+ private WorktypeMapper worktypeMapper;
+
+ @Autowired
+ private InsuranceMapper insuranceMapper;
+
+ @Autowired
+ private ApplyDetailJoinMapper applyDetailJoinMapper;
/**
* 鍒犻櫎闄勪欢
* @return
@@ -1356,9 +1371,20 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
}
+ InsuranceApply insuranceApply = insuranceApplyMapper.selectById(settleClaimsDTO.getInsuranceApplyId());
+ if(Objects.isNull(insuranceApply)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ ApplyDetail applyDetail = applyDetailMapper.selectById(settleClaimsDTO.getApplyDetailId());
+ if(Objects.isNull(applyDetail)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
Member member =memberMapper.selectById(settleClaimsDTO.getMemberId());
if(member == null){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鍑洪櫓浜轰俊鎭笉姝g‘锛�");
+ }
+ if(!(Constants.equalsInteger(insuranceApply.getId(),applyDetail.getApplyId())||Constants.equalsInteger(applyDetail.getMemberId(),member.getId()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"淇℃伅鍖归厤閿欒");
}
SettleClaims settleClaims = new SettleClaims();
BeanUtils.copyProperties(settleClaimsDTO,settleClaims);
@@ -1367,6 +1393,9 @@
settleClaims.setOrigin(Constants.ZERO);
settleClaims.setMemberName(member.getName());
settleClaims.setCreateDate(new Date());
+ settleClaims.setMemberAge(
+ Constants.calculateAge(member.getIdcardNo(),DateUtil.StringToDate(settleClaims.getHappenTime()))
+ );
if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)&&StringUtils.isBlank(settleClaims.getCode())){
Long nextCode = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda().ne(SettleClaims::getStatus,Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
.eq(SettleClaims::getOrigin,Constants.ZERO) .like(SettleClaims::getCreateDate,DateUtil.getDate(new Date(),"yyyy-MM-dd"))
@@ -1376,11 +1405,21 @@
);
}
if(Objects.nonNull(settleClaims.getId())){
+ SettleClaims model = settleClaimsMapper.selectById(settleClaims.getId());
+ if(Objects.isNull(model)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
+ ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey())
+ ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey()))){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�佸凡娴佽浆锛屾棤娉曡繘琛屼慨鏀�");
+ }
settleClaims.setEditDate(new Date());
settleClaims.setEditor(loginUserInfo.getId());
settleClaims.setStatus(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)?
Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey():Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey());
- if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)){
+ if(Constants.equalsInteger(settleClaimsDTO.getSaveType(),Constants.ONE)&&
+ Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())){
//澶勭悊椋庨櫓淇℃伅
this.saveRisk(settleClaims,settleClaimsDTO,systemDictDataService);
}
@@ -1424,6 +1463,12 @@
}
public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){
+ settleClaims.setRiskDelayUnit(Constants.ZERO);
+ settleClaims.setRiskUnTakeEffect(Constants.ZERO);
+ settleClaims.setRiskNewUser(Constants.ZERO);
+ settleClaims.setRiskTimesCx(Constants.ZERO);
+ settleClaims.setRiskTimesSp(Constants.ZERO);
+ settleClaims.setRiskRepeat(Constants.ZERO);
//鏍规嵁淇濆崟淇℃伅 鏌ヨ鍑轰富鏂规
InsuranceApply insuranceApply = insuranceApplyMapper.selectById(settleClaims.getInsuranceApplyId());
if(Objects.isNull(insuranceApply)){
@@ -1450,6 +1495,7 @@
if(Constants.equalsInteger(solutionsBase.getRiskNewUserStatus(),Constants.ONE)
&& Objects.nonNull(solutionsBase.getRiskNewUserUnit())
&& Objects.nonNull(solutionsBase.getRiskNewUserTime())
+ && happenTime.getTime() < applyDetail.getStartTime().getTime()
){
if(happenTime.getTime() > applyDetail.getEndTime().getTime()){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�");
@@ -1466,10 +1512,12 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�");
}
}
+
if(happenTime.getTime() < startDate.getTime() ){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"浜嬫晠鍙戠敓鏃堕棿鏈湪浜哄憳淇濋殰鏃ユ湡鑼冨洿鍐�");
}else{
map.put("info","浜嬫晠鍙戠敓鏃堕棿鏃╀簬淇濆崟鐢熸晥鏃堕棿"+solutionsBase.getRiskNewUserUnit()+(Constants.equalsInteger(solutionsBase.getRiskNewUserUnit(),Constants.ONE)?"灏忔椂鍐�":"澶╁唴"));
+ settleClaims.setRiskUnTakeEffect(Constants.ONE);
riskList.add(map);
}
}else{
@@ -1485,18 +1533,21 @@
//鏍规嵁閰嶇疆 鏌ヨ 寤惰繜鎶ユ鎻愰啋鏃堕棿鍗曚綅 0鍒嗛挓 1灏忔椂 2澶�
if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ZERO)){
if(DateUtil.getBetweenMin(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
- map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"鍒嗛挓");
+ map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"鍒嗛挓");
+ settleClaims.setRiskDelayUnit(Constants.ONE);
riskList.add(map);
}
}else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.ONE)){
if(DateUtil.getBetweenHours(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
- map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"灏忔椂");
+ map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"灏忔椂");
riskList.add(map);
+ settleClaims.setRiskDelayUnit(Constants.ONE);
}
}else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.TWO)){
if(DateUtil.getBetweenDay(happenTime,new Date())>solutionsBase.getRiskDelayTime()){
- map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayUnit()+"澶�");
+ map.put("info","鎶ユ鏃堕棿瓒呰繃妗堝彂鏃堕棿"+solutionsBase.getRiskDelayTime()+"澶�");
riskList.add(map);
+ settleClaims.setRiskDelayUnit(Constants.ONE);
}
}
}
@@ -1511,7 +1562,7 @@
.ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId())
.apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY) ")
);
- if(cxcs>Integer.valueOf(riskConfigVO.getRiskTimesReportTimes())){
+ if(cxcs>=Integer.valueOf(riskConfigVO.getRiskTimesReportTimes())){
Map<String,String> map = new HashMap<>();
map.put("title","鐤戜技澶氭鍑洪櫓");
map.put("info","鍑洪櫓浜轰竴骞村唴宸插嚭闄�"+cxcs+"娆�");
@@ -1527,10 +1578,10 @@
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) ")
- .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("2")," HAPPEN_TIME > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" DAY) ")
+ .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")," CREATE_DATE > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" HOUR) ")
+ .apply(riskConfigVO.getRiskRepeatReportTimeUnit().equals("2")," CREATE_DATE > DATE_SUB(now(), INTERVAL "+riskConfigVO.getRiskRepeatReportTime()+" DAY) ")
);
- if(cxcs > Constants.TWO){
+ if(cxcs >= Constants.ONE){
Map<String,String> map = new HashMap<>();
map.put("title","鐤戜技閲嶅鎶ユ");
map.put("info","璇ュ嚭闄╀汉鍦�"+riskConfigVO.getRiskRepeatReportTime()+(riskConfigVO.getRiskRepeatReportTimeUnit().equals("1")?"灏忔椂":"澶�")+"鍐呭凡鎶ユ"+cxcs+"娆�");
@@ -1546,8 +1597,9 @@
&& StringUtils.isNotBlank(riskConfigVO.getRiskClaimTimes())){
Long cxcs = settleClaimsMapper.selectCount(new QueryWrapper<SettleClaims>().lambda()
.eq(SettleClaims::getInsuranceApplyId,settleClaimsDTO.getInsuranceApplyId())
+ .eq(SettleClaims::getIsdeleted,Constants.ZERO)
.ne(Objects.nonNull(settleClaims.getId()),SettleClaims::getId,settleClaims.getId())
- .apply(" HAPPEN_TIME > DATE_SUB(now(), INTERVAL 365 DAY) ")
+ .apply(" CREATE_DATE > DATE_SUB(now(), INTERVAL 365 DAY) ")
);
if(cxcs > Integer.valueOf(riskConfigVO.getRiskClaimTimes())){
Map<String,String> map = new HashMap<>();
@@ -1562,7 +1614,7 @@
if(StringUtils.isNotBlank(riskConfigVO.getRiskSensitiveWordsOpen())
&& StringUtils.equals(riskConfigVO.getRiskSensitiveWordsOpen(),Constants.ONE+"")
&& StringUtils.isNotBlank(riskConfigVO.getRiskSensitiveWords())){
- String [] words = riskConfigVO.getRiskSensitiveWords().split(",");
+ String [] words = riskConfigVO.getRiskSensitiveWords().split(";");
String sensitiveWord = "";
for (String word:words) {
if(settleClaims.getContent().indexOf(word)>=Constants.ZERO){
@@ -2161,7 +2213,8 @@
//瀛樺偍鏃ュ織
this.saveSettleClaimsLog(settleClaims,
Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?Constants.SettleClaimsLogType.PLATFORM_ACCEPTANCE:Constants.SettleClaimsLogType.PLATFORM_DISCUSS,
- dto.getDescribe(),Constants.SettleClaimsStatus.ACCEPTANCE);
+ Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?dto.getDescribe():(dto.getDescribe() + " 闂绫诲瀷锛�"+dto.getSyProblemOpts())
+ ,Constants.SettleClaimsStatus.ACCEPTANCE);
}else if(Constants.equalsInteger(dto.getStatus(),Constants.ONE)){
//鎷掔粷鍙楃悊
settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda()
@@ -2179,7 +2232,7 @@
//瀛樺偍鏃ュ織
this.saveSettleClaimsLog(settleClaims,
Constants.SettleClaimsLogType.PLATFORM_WAIT_DISCUSS,
- dto.getDescribe(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT);
+ dto.getDescribe() + " 闂绫诲瀷锛�"+dto.getSyProblemOpts(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT);
}
deletedNoticeBiz(null,settleClaims);//鍒犻櫎閫氱煡
if(Constants.equalsInteger(dto.getStatus(),Constants.ZERO) || Constants.equalsInteger(dto.getStatus(),Constants.THREE)){
@@ -2889,7 +2942,7 @@
settleClaimsTotal.setDataFirst(monthData);
settleClaimsTotal.setDataSecond(
- settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).toString()
+ settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).size()+""
);
settleClaimsFee.setDataFirst(monthData);
@@ -2899,9 +2952,14 @@
averageSettleClaims.setDataFirst(monthData);
Integer sumHours = closeCaseMonthList.stream().map(j->
j.getTotalHours()).reduce(Constants.ZERO,Integer::sum);
- averageSettleClaims.setDataSecond(
- new BigDecimal(sumHours.toString()).divide(new BigDecimal((closeCaseMonthList.size()*24)+"")).toString()
- );
+ if(Objects.isNull(sumHours)||CollectionUtils.isEmpty(closeCaseMonthList)
+ || Constants.equalsInteger(sumHours,Constants.ZERO)){
+ averageSettleClaims.setDataSecond("0");
+ }else{
+ averageSettleClaims.setDataSecond(
+ new BigDecimal(sumHours.toString()).divide(new BigDecimal((closeCaseMonthList.size()*24)+""),2,BigDecimal.ROUND_HALF_UP).toString());
+ }
+ ;
settleClaimsTotalList.add(settleClaimsTotal);
settleClaimsFeeList.add(settleClaimsFee);
@@ -2922,21 +2980,373 @@
settleClaimsDataVO.setAverageSettleClaimsTime(
new BigDecimal(closeCaseList.stream().map(i->i.getTotalHours()).reduce(Constants.ZERO,Integer::sum).toString())
.divide(new BigDecimal((closeCaseList.size()*24)+"") ,2,BigDecimal.ROUND_HALF_UP)
-
);
+ String monthDate = DateUtil.getFomartDate(new Date(),"yyyy-MM");
+ Calendar calendar = Calendar.getInstance();
+ calendar.add(Calendar.MONTH, -1);
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+ String lastMonth = sdf.format(calendar.getTime());
+
+ //椋庨櫓妗堜欢鍗犳瘮鏁版嵁
+ settleClaimsDataVO.setRiskTimesCxTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&Constants.equalsInteger(i.getRiskTimesCx(),Constants.ONE))
+ .collect(Collectors.toList()).size());
+ Integer lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&Constants.equalsInteger(i.getRiskTimesCx(),Constants.ONE))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskTimesCxRata(this.jsRata(settleClaimsDataVO.getRiskTimesCxTotal(),lastMonthTotal));
+
+ settleClaimsDataVO.setRiskRepeatTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&Constants.equalsInteger(i.getRiskRepeat(),Constants.ONE))
+ .collect(Collectors.toList()).size());
+ lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&Constants.equalsInteger(i.getRiskRepeat(),Constants.ONE))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskRepeatRata(this.jsRata(settleClaimsDataVO.getRiskRepeatTotal(),lastMonthTotal));
+
+ settleClaimsDataVO.setRiskTimesSpTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&Constants.equalsInteger(i.getRiskTimesSp(),Constants.ONE))
+ .collect(Collectors.toList()).size());
+ lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&Constants.equalsInteger(i.getRiskTimesSp(),Constants.ONE))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskTimesSpRata(this.jsRata(settleClaimsDataVO.getRiskTimesSpTotal(),lastMonthTotal));
+
+ settleClaimsDataVO.setRiskNewUserTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&Constants.equalsInteger(i.getRiskNewUser(),Constants.ONE))
+ .collect(Collectors.toList()).size());
+ lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&Constants.equalsInteger(i.getRiskNewUser(),Constants.ONE))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskNewUserRata(this.jsRata(settleClaimsDataVO.getRiskNewUserTotal(),lastMonthTotal));
+
+ settleClaimsDataVO.setRiskSensitiveTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&StringUtils.isNotBlank(i.getRiskSensitive()))
+ .collect(Collectors.toList()).size());
+ lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&StringUtils.isNotBlank(i.getRiskSensitive()))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskSensitiveRata(this.jsRata(settleClaimsDataVO.getRiskSensitiveTotal(),lastMonthTotal));
+
+ settleClaimsDataVO.setRiskDelayUnitTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&Constants.equalsInteger(i.getRiskDelayUnit(),Constants.ONE))
+ .collect(Collectors.toList()).size());
+ lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&Constants.equalsInteger(i.getRiskDelayUnit(),Constants.ONE))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskDelayUnitRata(this.jsRata(settleClaimsDataVO.getRiskDelayUnitTotal(),lastMonthTotal));
+
+
+ settleClaimsDataVO.setRiskUnTakeEffectTotal(settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(monthDate)
+ &&Constants.equalsInteger(i.getRiskUnTakeEffect(),Constants.ONE))
+ .collect(Collectors.toList()).size());
+ lastMonthTotal = settleClaimsList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM").equals(lastMonth)
+ &&Constants.equalsInteger(i.getRiskUnTakeEffect(),Constants.ONE))
+ .collect(Collectors.toList()).size();
+ settleClaimsDataVO.setRiskUnTakeEffectRata(this.jsRata(settleClaimsDataVO.getRiskUnTakeEffectTotal(),lastMonthTotal));
+
+ //椋庨櫓鏁忔劅璇嶆姤琛�
+ List<String> sensitiveList = settleClaimsList.stream().filter(i->StringUtils.isNotBlank(i.getRiskSensitive())).map(i->i.getRiskSensitive()).collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(sensitiveList)){
+ List<String> allSensitiveStrList = new ArrayList<>();
+ for (String string:sensitiveList) {
+ allSensitiveStrList.addAll(Arrays.asList(string.split(",")));
+ }
+ Set<String> sensitiveSetList = new HashSet<>(allSensitiveStrList);
+ List<DataListVO> sensitiveDataList = new ArrayList<>();
+ for (String string:sensitiveSetList) {
+ DataListVO dataListVO = new DataListVO();
+ dataListVO.setDataFirst(string);
+ dataListVO.setDataSecond(allSensitiveStrList.stream().filter(i->i.equals(string)).collect(Collectors.toList()).size()+"");
+ sensitiveDataList.add(dataListVO);
+ }
+ settleClaimsDataVO.setSensitiveDataList(sensitiveDataList);
+ }
+
+ //鍖哄煙妗堜欢绫诲瀷鍒嗗竷
+ this.getAreaDistribution(settleClaimsDataVO,
+ settleClaimsList.stream().filter(i->StringUtils.isNotBlank(i.getAreaId())).collect(Collectors.toList()));
+
+ //鍚勭被鍨嬫浠跺垎甯�
+ this.getCaseType(settleClaimsDataVO,
+ settleClaimsList.stream().filter(i->Objects.nonNull(i.getCaseType())).collect(Collectors.toList()));
+
+ //鎸夋湀缁熻妗堜欢閲戦
+ this.getSettleTotalMoneyData(settleClaimsDataVO,
+ settleClaimsList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList()));
+
+ //缁撴鐜�
+ this.getCloseRata(settleClaimsDataVO,
+ settleClaimsList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList()));
+
+ //骞撮緞鍒嗗竷
+ this.getMemberAgeDataList(settleClaimsDataVO,
+ settleClaimsList.stream().filter(i->Objects.nonNull(i.getMemberAge())).collect(Collectors.toList()));
+
+ //宸ョ鏁版嵁鍒嗗竷
+ this.getWorkTypeDate(settleClaimsDataVO,
+ settleClaimsList.stream().filter(i->Objects.nonNull(i.getWorktypeId())).collect(Collectors.toList()));
}
-
-
return settleClaimsDataVO;
+ }
+ public BigDecimal jsRata(Integer a,Integer b){
+ if(Objects.isNull(a)||Objects.isNull(b)||Constants.equalsInteger(a,Constants.ZERO)||Constants.equalsInteger(b,Constants.ZERO)){
+ return BigDecimal.ZERO;
+ }
+ return new BigDecimal(a.toString()).divide(new BigDecimal(b.toString()),2,BigDecimal.ROUND_HALF_UP).subtract(BigDecimal.ONE);
}
+ public void getAreaDistribution(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<Areas> areasList = areasMapper.selectList(new QueryWrapper<Areas>().lambda().isNull(Areas::getParentId).orderByAsc(Areas::getId));
+ List<DataListVO> areaDataList = new ArrayList<>();
+ for (Areas areas:areasList) {
+ DataListVO dataListVO = new DataListVO();
+ dataListVO.setDataFirst(areas.getName());
+ dataListVO.setDataSecond(
+ settleClaimsList.stream().filter(i->i.getAreaId().indexOf(areas.getCode())>=Constants.ZERO).collect(Collectors.toList()).size()+""
+ );
+ dataListVO.setDataThird(areas.getCode());
+ areaDataList.add(dataListVO);
+ }
+ settleClaimsDataVO.setAreaDataList(areaDataList);
+ }
+
+
+ public void getCaseType(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<DataListVO> caseTypeDataList = new ArrayList<>();
+ //1=鍖荤枟锛�2=浼ゆ畫锛�3=姝讳骸
+ for (int i = 1; i <= 3; i++) {
+ int finalI = i;
+ DataListVO dataListVO = new DataListVO();
+ if(finalI==1){
+ dataListVO.setDataFirst("鍖荤枟");
+ }else{
+ dataListVO.setDataFirst(Constants.equalsInteger(finalI,Constants.TWO)?"浼ゆ畫":"姝讳骸");
+ }
+ dataListVO.setDataSecond(settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getCaseType())&&Constants.equalsInteger(j.getCaseType(), finalI)).collect(Collectors.toList()).size()+"");
+ caseTypeDataList.add(dataListVO);
+ }
+ settleClaimsDataVO.setCaseTypeDataList(caseTypeDataList);
+ }
+
+
+ public void getSettleTotalMoneyData(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<DataListVO> monthTotalMoneyDataList = new ArrayList<>();
+ for (int i = -11; i <= 0 ; i++) {
+ String month = DateUtil.DateToStr(
+ DateUtil.afterDateByType(new Date(),1,i),"yyyy-MM");
+ DataListVO dataListVO = new DataListVO();
+ dataListVO.setDataFirst(month);
+ BigDecimal hpAccount = settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(month))
+ .map(j->j.getHpAccount().add(j.getHpOtherAccount())).reduce(BigDecimal.ZERO,BigDecimal::add);
+ dataListVO.setDataSecond(hpAccount.compareTo(BigDecimal.ZERO)>Constants.ZERO?
+ hpAccount.divide(new BigDecimal("10000"),2,BigDecimal.ROUND_HALF_UP).toString():"0"
+ );
+ monthTotalMoneyDataList.add(dataListVO);
+ }
+ settleClaimsDataVO.setMonthTotalMoneyDataList(monthTotalMoneyDataList);
+ }
+ public void getCloseRata(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<DataListVO> closeRataDataList = new ArrayList<>();
+ for (int i = -5; i <= 0 ; i++) {
+ String month = DateUtil.DateToStr(
+ DateUtil.afterDateByType(new Date(),1,i),"yyyy-MM");
+ DataListVO dataListVO = new DataListVO();
+ dataListVO.setDataFirst(month);
+ List<SettleClaims> monthList = settleClaimsList.stream().filter(j->DateUtil.DateToStr(j.getCreateDate(),"yyyy-MM").equals(month)).collect(Collectors.toList());
+ if(CollectionUtils.isNotEmpty(monthList)){
+ List<SettleClaims> closeCaseList = monthList.stream().filter(j->Constants.equalsInteger(j.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey())).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(closeCaseList)){
+ dataListVO.setDataSecond("0");
+ }else{
+ dataListVO.setDataSecond(new BigDecimal(closeCaseList.size()+"").divide(new BigDecimal(monthList.size()+""),2,BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100"))+"%");
+ }
+ }else{
+ dataListVO.setDataSecond("0");
+ }
+ closeRataDataList.add(dataListVO);
+ }
+ settleClaimsDataVO.setCloseRataDataList(closeRataDataList);
+ }
+
+
+ public void getType(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<DataListVO> typeDataList = new ArrayList<>();
+ //0宸ヤ綔鏈熼棿鍙椾激 1涓婁笅鐝�斾腑鍙椾激 2闈炲伐浣滄椂闂村彈浼� 3鎰忓鍙椾激
+ for (int i = 0; i <= 3; i++) {
+ int finalI = i;
+ DataListVO dataListVO = new DataListVO();
+ if(finalI==0){
+ dataListVO.setDataFirst("宸ヤ綔鏈熼棿鍙椾激");
+ }else if(finalI==1){
+ dataListVO.setDataFirst("涓婁笅鐝�斾腑鍙椾激");
+ }else{
+ dataListVO.setDataFirst(Constants.equalsInteger(finalI,Constants.TWO)?"闈炲伐浣滄椂闂村彈浼�":"鎰忓鍙椾激");
+ }
+ dataListVO.setDataSecond(settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getType())&&Constants.equalsInteger(j.getCaseType(), finalI)).collect(Collectors.toList()).size()+"");
+ typeDataList.add(dataListVO);
+ }
+ settleClaimsDataVO.setTypeDataList(typeDataList);
+ }
+
+
+ public void getMemberAgeDataList(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<DataListVO> memberAgeDataList = new ArrayList<>();
+
+ DataListVO dataListVOa = new DataListVO();
+ dataListVOa.setDataFirst("18-25");
+ dataListVOa.setDataSecond(
+ settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getMemberAge())&&
+ (j.getMemberAge() >= 18 || j.getMemberAge() <= 25))
+ .collect(Collectors.toList()).size()+""
+ );
+ memberAgeDataList.add(dataListVOa);
+
+
+ DataListVO dataListVOb = new DataListVO();
+ dataListVOb.setDataFirst("26-35");
+ dataListVOb.setDataSecond(
+ settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getMemberAge())&&
+ (j.getMemberAge() >= 26 || j.getMemberAge() <= 35))
+ .collect(Collectors.toList()).size()+""
+ );
+ memberAgeDataList.add(dataListVOb);
+
+ DataListVO dataListVOc = new DataListVO();
+ dataListVOc.setDataFirst("36-45");
+ dataListVOc.setDataSecond(
+ settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getMemberAge())&&
+ (j.getMemberAge() >= 36 || j.getMemberAge() <= 45))
+ .collect(Collectors.toList()).size()+""
+ );
+ memberAgeDataList.add(dataListVOc);
+
+ DataListVO dataListVOd = new DataListVO();
+ dataListVOd.setDataFirst("46-55");
+ dataListVOd.setDataSecond(
+ settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getMemberAge())&&
+ (j.getMemberAge() >= 46 || j.getMemberAge() <= 55))
+ .collect(Collectors.toList()).size()+""
+ );
+ memberAgeDataList.add(dataListVOd);
+
+ DataListVO dataListVOe = new DataListVO();
+ dataListVOe.setDataFirst("56-65");
+ dataListVOe.setDataSecond(
+ settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getMemberAge())&&
+ (j.getMemberAge() >= 56 || j.getMemberAge() <= 65))
+ .collect(Collectors.toList()).size()+""
+ );
+ memberAgeDataList.add(dataListVOe);
+
+
+ DataListVO dataListVOf = new DataListVO();
+ dataListVOf.setDataFirst("65+");
+ dataListVOf.setDataSecond(
+ settleClaimsList.stream()
+ .filter(j->Objects.nonNull(j.getMemberAge())&&
+ j.getMemberAge() >= 66 )
+ .collect(Collectors.toList()).size()+""
+ );
+ memberAgeDataList.add(dataListVOf);
+ settleClaimsDataVO.setMemberAgeDataList(memberAgeDataList);
+ }
+
+
+
+ public void getWorkTypeDate(SettleClaimsDataVO settleClaimsDataVO, List<SettleClaims> settleClaimsList){
+ List<DataListVO> workTypeDataList = new ArrayList<>();
+ if(CollectionUtils.isEmpty(settleClaimsList)){
+ return ;
+ }
+ List<Integer> workTypeIdList = settleClaimsList.stream().map(i->i.getWorktypeId()).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty(workTypeIdList)){
+ return ;
+ }
+ Set<Integer> setWorkType = new HashSet<>(workTypeIdList);
+ List<Worktype> workTypeList = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda().eq(Worktype::getIsdeleted,Constants.ZERO).in(Worktype::getId,setWorkType));
+ if(CollectionUtils.isEmpty(workTypeList)){
+ return ;
+ }
+ for (Worktype worktype:workTypeList) {
+ DataListVO dataListVO = new DataListVO();
+ dataListVO.setDataFirst(worktype.getName());
+ dataListVO.setDataSecond(
+ settleClaimsList.stream().filter(i->Constants.equalsInteger(i.getWorktypeId(),worktype.getId())).collect(Collectors.toList()).size()+"");
+ workTypeDataList.add(dataListVO);
+ }
+ workTypeDataList = workTypeDataList.stream().sorted(Comparator.comparing(DataListVO::getDataSecond).reversed()).collect(Collectors.toList());
+ settleClaimsDataVO.setWorkTypeDataList(workTypeDataList);
+ }
+
+
+
+ @Override
+ public InsuranceDataVO getInsuranceDataVO(){
+ InsuranceDataVO insuranceDataVO = new InsuranceDataVO();
+ insuranceDataVO.setInsuranceTotal(Constants.ZERO);
+ insuranceDataVO.setInsuranceAddTotal(Constants.ZERO);
+ insuranceDataVO.setInsuranceApplyTotal(Constants.ZERO);
+ insuranceDataVO.setInsuranceApplyAddTotal(Constants.ZERO);
+ insuranceDataVO.setInsuranceUserTotal(Constants.ZERO);
+ insuranceDataVO.setInsuranceUserAddTotal(Constants.ZERO);
+ insuranceDataVO.setTotalAddFee(BigDecimal.ZERO);
+ insuranceDataVO.setTotalFee(BigDecimal.ZERO);
+ //鏈湀鏃ユ湡
+ String monthData = DateUtil.DateToStr(new Date(),"yyyy-MM");
+ //淇濋櫓鍏徃鏁伴噺
+ List<Insurance> insuranceList = insuranceMapper.selectList(new QueryWrapper<Insurance>().lambda().eq(Insurance::getIsdeleted,Constants.ZERO).eq(Insurance::getStatus,Constants.ZERO));
+ if(CollectionUtils.isNotEmpty(insuranceList)){
+ insuranceDataVO.setInsuranceTotal(insuranceList.size());
+ insuranceDataVO.setInsuranceAddTotal(insuranceList.stream().filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).size());
+ }
+
+ //淇濆崟鏁伴噺
+ List<InsuranceApply> insuranceApplyList = insuranceApplyMapper.selectList(new QueryWrapper<InsuranceApply>()
+ .lambda().eq(InsuranceApply::getIsdeleted,Constants.ZERO).in(InsuranceApply::getStatus,
+ Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+ );
+ if(CollectionUtils.isNotEmpty(insuranceApplyList)){
+ insuranceDataVO.setInsuranceApplyTotal(insuranceApplyList.size());
+ insuranceDataVO.setInsuranceApplyAddTotal(insuranceApplyList.stream().filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM").equals(monthData)).collect(Collectors.toList()).size());
+ }
+
+ //鍦ㄤ繚浜烘暟
+ List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectJoinList(ApplyDetail.class,new MPJLambdaWrapper<ApplyDetail>().selectAll(ApplyDetail.class)
+ .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
+ .eq(InsuranceApply::getIsdeleted,Constants.ZERO).in(InsuranceApply::getStatus,
+ Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey(),Constants.InsuranceApplyStatus.WTB_DONE.getKey())
+ .eq(ApplyDetail::getIsdeleted,Constants.ZERO)
+ .apply(" ( t.START_TIME >= now() and t.END_TIME <= now() ) ")
+ );
+ if(CollectionUtils.isNotEmpty(applyDetailList)){
+ insuranceDataVO.setInsuranceUserTotal(applyDetailList.size());
+ insuranceDataVO.setInsuranceUserAddTotal(
+ applyDetailList.stream().filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM")
+ .equals(monthData)).collect(Collectors.toList()).size());
+
+ insuranceDataVO.setTotalFee(applyDetailList.stream().map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+ insuranceDataVO.setTotalAddFee(applyDetailList.stream()
+ .filter(i->Objects.nonNull(i.getCreateDate())&&DateUtil.DateToStr(i.getCreateDate(),"yyyy-MM")
+ .equals(monthData)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add));
+ }
+
+ return insuranceDataVO;
+ }
--
Gitblit v1.9.3