From 84cc4678e46328ebc6ec0bfdb2e2dfa954b93f66 Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期一, 19 五月 2025 18:58:39 +0800 Subject: [PATCH] git ch --- server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 635 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 627 insertions(+), 8 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 d5c68c8..f3ea9df 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 @@ -1,5 +1,6 @@ package com.doumee.service.business.impl; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; @@ -11,12 +12,12 @@ import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; -import com.doumee.dao.business.dto.SCSupplementDTO; -import com.doumee.dao.business.dto.SettleClaimsDTO; +import com.doumee.dao.business.dto.*; import com.doumee.dao.business.join.MultifileJoinMapper; import com.doumee.dao.business.join.SettleClaimsJoinMapper; import com.doumee.dao.business.join.SettleClaimsLogJoinMapper; import com.doumee.dao.business.model.*; +import com.doumee.dao.business.vo.CompensationVO; import com.doumee.dao.business.vo.RiskConfigVO; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.SettleClaimsLogService; @@ -37,12 +38,14 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.math.BigDecimal; import java.net.URLEncoder; import java.nio.charset.Charset; import java.util.*; @@ -370,8 +373,9 @@ SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); settleClaimsLogMapper.insert(log); return 1; - } + + @Override public Integer create(SettleClaims settleClaims) { LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); @@ -567,6 +571,8 @@ settleClaims.setDisabilityFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_SCZL_FILE.getKey())).collect(Collectors.toList())); settleClaims.setCompensationFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_JACL_FILE.getKey())).collect(Collectors.toList())); + + settleClaims.setOtherFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_OTHER_FILE.getKey())).collect(Collectors.toList())); } //鏌ヨ鎿嶄綔璁板綍 @@ -710,7 +716,6 @@ ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } - SettleClaims settleClaims = settleClaimsMapper.selectById(scSupplementDTO.getId()); if(!(settleClaims.getStatus().equals(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey()) || settleClaims.getStatus().equals(Constants.SettleClaimsStatus.DEAL_ING.getKey()) @@ -960,7 +965,9 @@ } - public void saveSettleClaims(SettleClaimsDTO settleClaimsDTO){ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void saveSettleClaims(SettleClaimsDTO settleClaimsDTO,SystemDictDataServiceImpl systemDictDataService){ LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!loginUserInfo.getType().equals(Constants.ONE)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氬憳宸ユ棤娉曡繘琛岃鎿嶄綔"); @@ -997,6 +1004,13 @@ if(Objects.nonNull(settleClaims.getId())){ 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)){ + //澶勭悊椋庨櫓淇℃伅 + this.saveRisk(settleClaims,settleClaimsDTO,systemDictDataService); + } + settleClaimsMapper.updateById(settleClaims); }else{ settleClaims.setCreateDate(new Date()); @@ -1004,14 +1018,18 @@ settleClaims.setCompanyId(loginUserInfo.getCompanyId()); 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)){ + //澶勭悊椋庨櫓淇℃伅 + this.saveRisk(settleClaims,settleClaimsDTO,systemDictDataService); + } settleClaims.setCreator(loginUserInfo.getId()); settleClaims.setCheckUserId(loginUserInfo.getId()); settleClaimsMapper.insert(settleClaims); } this.saveFile(settleClaims,settleClaimsDTO,loginUserInfo); - //澶勭悊椋庨櫓淇℃伅 - + //璁板綍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null); } public void saveRisk(SettleClaims settleClaims, SettleClaimsDTO settleClaimsDTO, SystemDictDataServiceImpl systemDictDataService){ @@ -1170,9 +1188,36 @@ settleClaims.setRiskSensitive(sensitiveWord); } } - //鐤戜技鏂板憳宸ュ嚭闄� + if(StringUtils.isNotBlank(riskConfigVO.getRiskNewMemberOpen()) + && StringUtils.equals(riskConfigVO.getRiskNewMemberOpen(),Constants.ONE+"") + && StringUtils.isNotBlank(riskConfigVO.getRiskNewMemberTimeUnit()) + && StringUtils.isNotBlank(riskConfigVO.getRiskNewMemberTime()) + ){ + Map<String,String> map = new HashMap<>(); + map.put("title","鐤戜技鏂板憳宸ュ嚭闄�"); + if(riskConfigVO.getRiskNewMemberTimeUnit().equals(Constants.ONE+"")){ + if(DateUtil.afterMinutesByDate(Integer.valueOf(riskConfigVO.getRiskNewMemberTime())*60,insuranceApply.getStartTime()).getTime() < happenTime.getTime()){ + map.put("info","淇濋櫓鐢熸晥鏃堕棿涓�"+DateUtil.getFomartDate(insuranceApply.getStartTime(),"yyyy-MM-dd")+""); + riskList.add(map); + settleClaims.setRiskNewUser(Constants.ONE); + }; + }else if(Constants.equalsInteger(solutionsBase.getRiskDelayUnit(),Constants.TWO)){ + if(DateUtil.afterDayByDate(Integer.valueOf(riskConfigVO.getRiskNewMemberTime()),insuranceApply.getStartTime()).getTime() < happenTime.getTime()){ + map.put("info","淇濋櫓鐢熸晥鏃堕棿涓�"+DateUtil.getFomartDate(insuranceApply.getStartTime(),"yyyy-MM-dd")+""); + riskList.add(map); + settleClaims.setRiskNewUser(Constants.ONE); + } + } + } + settleClaims.setRiskContent(JSONObject.toJSONString(riskList)); + if(riskList.size()>Constants.ZERO){ + settleClaims.setIsRisk(Constants.ONE); + }else{ + settleClaims.setIsRisk(Constants.ZERO); + settleClaims.setStatus(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()); + } } public void saveFile(SettleClaims settleClaims,SettleClaimsDTO settleClaimsDTO,LoginUserInfo loginUserInfo){ @@ -1305,14 +1350,588 @@ multifile.setSortnum(i+1); multifileJoinMapper.insert(multifile); } + } + } + +// public void getRiskSettleDetail(Integer id){ +// settleClaimsJoinMapper.selectJoinOne(SettleClaims.class,new MPJLambdaWrapper<SettleClaims>() +// .selectAll(SettleClaims.class) +// .selectAs(DispatchUnit::getName,SettleClaims::getDuName) +// .selectAs(Worktype::getName,SettleClaims::getWorktypeName) +// .selectAs(Solutions::getName,SettleClaims::getSolutionName) +// .selectAs(InsuranceApply::getStartTime,SettleClaims::getBaoxianStartTime) +// .selectAs(InsuranceApply::getEndTime,SettleClaims::getBaoxianEndTime) +// .leftJoin(Solutions.class,Solutions::getId,SettleClaims::getSolutionId) +// .leftJoin(DispatchUnit.class,DispatchUnit::getId,SettleClaims::getDuId) +// .leftJoin(Worktype.class,Worktype::getId,SettleClaims::getWorktypeId) +// .leftJoin(InsuranceApply.class,InsuranceApply::getId,SettleClaims::getInsuranceApplyId) +// +// +// .eq(SettleClaims::getId,id) +// .last(" limit 1 ") +// ); +// } + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void saveSupplementDescribe(SaveSupplementDescribeDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getDescribe())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + if(Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"寰呬紒涓氳ˉ鍏呮枃浠讹紝璇风瓑寰呬紒涓氳ˉ鍏呮枃浠�"); + } + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT_DESCRIBE,dto.getDescribe()); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getWaitSupplement,Constants.ONE)); + } + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void saveSupplementFile(SaveSupplementDescribeDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || CollectionUtils.isEmpty(dto.getSupplementFileList())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!(loginUserInfo.getType().equals(Constants.ZERO)||loginUserInfo.getType().equals(Constants.ONE))){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲钩鍙颁笌浼佷笟鍛樺伐鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(loginUserInfo.getType().equals(Constants.ZERO)){ + if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus()) + )){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + }else{ + //濡傛灉鏄紒涓� 鏌ヨ鏄惁鏄嚜宸变紒涓氱殑鏁版嵁 + if(!Constants.equalsInteger(settleClaims.getCompanyId(),loginUserInfo.getCompanyId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍浼佷笟鐨勬暟鎹紝鎮ㄦ棤娉曡繘琛岃鎿嶄綔"); + } + if(!Constants.equalsInteger(settleClaims.getWaitSupplement(),Constants.ONE)) { + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "褰撳墠涓氬姟鏃犻渶杩涜娣诲姞鏉愭枡"); + } + if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.REJECT_DEAL.getKey(),settleClaims.getStatus()) + || Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey(),settleClaims.getStatus()) + )){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getWaitSupplement,Constants.ZERO)); + } + multifileJoinMapper.delete(new QueryWrapper<Multifile>().lambda().eq(Multifile::getObjId,dto.getId()).eq(Multifile::getObjType,Constants.MultiFile.LP_OTHER_FILE.getKey())); + List<Multifile> fileList = dto.getSupplementFileList(); + if(CollectionUtils.isNotEmpty(fileList)){ + for (int i = 0; i < fileList.size(); i++) { + Multifile multifile = fileList.get(i); + if(Objects.isNull(multifile.getFileurl()) + || Objects.isNull(multifile.getType()) + || StringUtils.isBlank(multifile.getName()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢鍐呭寮傚父"); + } + multifile.setCreator(loginUserInfo.getId()); + multifile.setCreateDate(new Date()); + multifile.setIsdeleted(Constants.ZERO); + multifile.setObjId(settleClaims.getId()); + //娣诲姞鏉愭枡鏀惧叆 鍏朵粬鏉愭枡涓氬姟鍐� + multifile.setObjType(Constants.MultiFile.LP_OTHER_FILE.getKey()); + multifile.setSortnum(i+1); + multifileJoinMapper.insert(multifile); + } + } + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.SUPPLEMENT,null); + } + + + /** + * 鎾ら攢鎶ユ + * @param dto + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void returnSettle(OptSettleClaimsDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ONE)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氫汉鍛樻棤娉曡繘琛岃鎿嶄綔"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + //濡傛灉鏄紒涓� 鏌ヨ鏄惁鏄嚜宸变紒涓氱殑鏁版嵁 + if(!Constants.equalsInteger(settleClaims.getCompanyId(),loginUserInfo.getCompanyId())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炴偍浼佷笟鐨勬暟鎹紝鎮ㄦ棤娉曡繘琛岃鎿嶄綔"); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.RETURN_SETTLE,null); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getStatus,Constants.SettleClaimsStatus.RETURN.getKey())); + } + + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void register(OptSettleClaimsDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getRegisterStatus()) + || !(Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())||Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())) + || (Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey())&&StringUtils.isBlank(dto.getDescribe())) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + Constants.SettleClaimsStatus settleClaimsStatus = + Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())?Constants.SettleClaimsStatus.CONFIRM_INFORMATION:Constants.SettleClaimsStatus.FINISH_ACCEPTANCE; + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, Constants.equalsInteger(dto.getRegisterStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())?Constants.SettleClaimsLogType.PLATFORM_REGISTER:Constants.SettleClaimsLogType.PLATFORM_RETURN,dto.getDescribe()); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate, + DateUtil.getCurrDateTime()).set(SettleClaims::getStatus,settleClaimsStatus.getKey())); + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Integer addReportNum(OptSettleClaimsDTO param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getReportNum()) ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + SettleClaims model = settleClaimsMapper.selectById(param.getId()); + if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()) + || Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) + ) + ){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!user.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + //鏌ヨ鏄惁鏈夋姤妗堝彿鏇存敼璁板綍 + if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) + && settleClaimsLogMapper.selectCount(new QueryWrapper<SettleClaimsLog>().lambda() + .eq(SettleClaimsLog::getObjType,Constants.SettleClaimsLogType.PLATFORM_ADDCODE.getKey()) + .eq(SettleClaimsLog::getSettleClainmsId,param.getId()))>=Constants.ONE){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浠呭彲淇敼涓�娆℃姤妗堝彿"); + } + if(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey())&&StringUtils.isNotBlank(model.getReportNum())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸蹭慨鏀规姤妗堝彿锛屾棤娉曞啀娆′慨鏀�"); + } + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,param.getId()).set(SettleClaims::getEditDate, + DateUtil.getCurrDateTime()).set(SettleClaims::getReportNum,param.getReportNum())); + + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(user.getId()); + update.setId(model.getId()); + update.setCheckDate(update.getEditDate()); + update.setCheckInfo("娣诲姞澶囨鍙�"); + update.setCheckUserId(user.getId()); + update.setReportNum(param.getReportNum()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_ADDCODE; + String info =applyLogType.getInfo(); + info = info.replace("${param}", update.getReportNum()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + + return 1; + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public Integer addRemark(OptSettleClaimsDTO param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getDescribe()) ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + SettleClaims model = settleClaimsMapper.selectById(param.getId()); + if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!(Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.REJECT_DEAL.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.COMPENSATION.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.WAIT_CLOSE_CASE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.CLOSE_CASE.getKey()) + )){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇峰綋鍓嶄笉鏀寔璇ユ搷浣渵"); + } + LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(user.getId()); + update.setCheckDate(update.getEditDate()); + update.setCheckInfo("娣诲姞澶囨敞鏍囩"); + update.setCheckUserId(user.getId()); + update.setId(model.getId()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_REMARK; + String info =applyLogType.getInfo(); + info = info.replace("${param}", param.getDescribe()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + return 1; } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void acceptance(AcceptanceSettleClaimsDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getStatus()) + || StringUtils.isBlank(dto.getDescribe()) + || !(dto.getStatus()>=Constants.ZERO||dto.getStatus()<=Constants.THREE) + || ((Constants.equalsInteger(dto.getStatus(),Constants.THREE) ||Constants.equalsInteger(dto.getStatus(),Constants.TWO)) && StringUtils.isBlank(dto.getSyProblemOpts()) ) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_DEAL.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + if(Constants.equalsInteger(dto.getStatus(),Constants.ZERO) || Constants.equalsInteger(dto.getStatus(),Constants.THREE)){ + //鍙楃悊 + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId()) + .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.ACCEPTANCE.getKey())); + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?Constants.SettleClaimsLogType.PLATFORM_ACCEPTANCE:Constants.SettleClaimsLogType.PLATFORM_DISCUSS, + dto.getDescribe()); + }else if(Constants.equalsInteger(dto.getStatus(),Constants.ONE)){ + //鎷掔粷鍙楃悊 + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId()) + .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.REJECT_DEAL.getKey())); + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_REFUSE_ACCEPTANCE, + Constants.SettleClaimsLogType.PLATFORM_REFUSE_ACCEPTANCE.getInfo().replace("{param}",dto.getDescribe())); + }else if(Constants.equalsInteger(dto.getStatus(),Constants.TWO)){ + //鍙楃悊鍟嗚瀹℃壒 + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate,DateUtil.getCurrDateTime()).set(SettleClaims::getEditor,loginUserInfo.getId()) + .set(SettleClaims::getStatus,Constants.SettleClaimsStatus.REJECT_DEAL.getKey())); + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_WAIT_DISCUSS, + dto.getDescribe()); + } + } + + + @Override + public List<CompensationVO> getCompensation(Integer id){ + SettleClaims settleClaims = settleClaimsMapper.selectById(id); + List<CompensationVO> modelList = new ArrayList<>(); + if (Objects.nonNull(settleClaims)&&StringUtils.isNotBlank(settleClaims.getAccountContent())) { + modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class); + } + Constants.compensation [] compensations = Constants.compensation.values(); + List<CompensationVO> list = new ArrayList<>(); + for (Constants.compensation c:compensations) { + CompensationVO compensationVO = new CompensationVO(); + compensationVO.setType(c.getType()); + compensationVO.setName(c.getName()); + if(CollectionUtils.isNotEmpty(modelList)){ + Optional<CompensationVO> optionalModel = modelList.stream().filter(i->i.getName().equals(c.getName())).findFirst(); + if(optionalModel.isPresent()){ + CompensationVO oldModel = optionalModel.get(); + compensationVO.setFee(oldModel.getFee()); + compensationVO.setDescribe(oldModel.getDescribe()); + } + } + list.add(compensationVO); + } + return list; + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void compensation(CompensationDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || StringUtils.isBlank(dto.getCompensationJson()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!(Constants.equalsInteger(Constants.SettleClaimsStatus.ACCEPTANCE.getKey(),settleClaims.getStatus()))||Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + + List<CompensationVO> modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class); + + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(loginUserInfo.getId()); + update.setYlClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.YL_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setWgClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.WG_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setScClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SC_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setSwClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SW_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setAccountContent(dto.getCompensationJson()); + update.setId(settleClaims.getId()); + update.setStatus(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey()); + settleClaimsMapper.updateById(update); + + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_LP_DEAL, + Constants.SettleClaimsLogType.PLATFORM_LP_DEAL.getInfo()); + } + + + /** + * 鍟嗚瀹℃壒 + * @param dto + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void discussAudit(DiscussAuditDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || Objects.isNull(dto.getStatus()) + || !(Constants.equalsInteger(dto.getStatus(),Constants.ZERO)||Constants.equalsInteger(dto.getStatus(),Constants.ONE)) + || (Constants.equalsInteger(dto.getStatus(),Constants.ONE)&&StringUtils.isBlank(dto.getDescribe())) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_DISCUSS_AUDIT.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + Constants.SettleClaimsStatus settleClaimsStatus = + Constants.equalsInteger(dto.getStatus(),Constants.ZERO)?Constants.SettleClaimsStatus.ACCEPTANCE:Constants.SettleClaimsStatus.WAIT_DISCUSS_REJECT; + //瀛樺偍鏃ュ織 + Constants.SettleClaimsLogType settleClaimsLogType = Constants.equalsInteger(dto.getStatus(),Constants.ZERO) + ?Constants.SettleClaimsLogType.PLATFORM_DISCUSS_PASS:Constants.SettleClaimsLogType.PLATFORM_DISCUSS_REFUSE; + this.saveSettleClaimsLog(settleClaims, settleClaimsLogType + ,settleClaimsLogType.getInfo().replace("${param}",dto.getDescribe())); + settleClaimsMapper.update(null,new UpdateWrapper<SettleClaims>().lambda() + .eq(SettleClaims::getId,dto.getId()).set(SettleClaims::getEditDate, DateUtil.getCurrDateTime()) + .set(SettleClaims::getEditor,loginUserInfo.getId()) + .set(SettleClaims::getStatus,settleClaimsStatus.getKey())); + } + + + + + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void nuclearCompensation(CompensationDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || StringUtils.isBlank(dto.getCompensationJson()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.WAIT_AUDIT_COMPENSATION.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + + List<CompensationVO> modelList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class); + + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(loginUserInfo.getId()); + update.setYlClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.YL_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setWgClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.WG_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setScClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SC_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setSwClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SW_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setOtherAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setAccountContent(dto.getCompensationJson()); + update.setId(settleClaims.getId()); + update.setStatus(Constants.SettleClaimsStatus.COMPENSATION.getKey()); + settleClaimsMapper.updateById(update); + + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_HP_DEAL, + Constants.SettleClaimsLogType.PLATFORM_HP_DEAL.getInfo()); + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void updFee(CompensationDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getId()) + || StringUtils.isBlank(dto.getCompensationJson()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(dto.getId()); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + + List<CompensationVO> modelList = JSONArray.parseArray(dto.getCompensationJson(),CompensationVO.class); + + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(loginUserInfo.getId()); + update.setYlClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.YL_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setWgClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.WG_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setScClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SC_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setSwClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&i.getName().equals(Constants.compensation.SW_COMPENSATION.getName())).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + update.setClaimAccount(modelList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).map(i->i.getFee()).reduce(BigDecimal.ZERO,BigDecimal::add)); + + //澶勭悊鍘嗗彶鏁版嵁 + List<CompensationVO> oldList = JSONArray.parseArray(settleClaims.getAccountContent(),CompensationVO.class); + for (CompensationVO compensationVO:oldList) { + if(compensationVO.getName().equals(Constants.compensation.YL_COMPENSATION.getName())){ + compensationVO.setFee(update.getYlClaimAccount()); + }else if(compensationVO.getName().equals(Constants.compensation.WG_COMPENSATION.getName())){ + compensationVO.setFee(update.getWgClaimAccount()); + }else if(compensationVO.getName().equals(Constants.compensation.SC_COMPENSATION.getName())){ + compensationVO.setFee(update.getScClaimAccount()); + }else if(compensationVO.getName().equals(Constants.compensation.SW_COMPENSATION.getName())){ + compensationVO.setFee(update.getSwClaimAccount()); + }else{ + continue; + } + } + update.setAccountContent(dto.getCompensationJson()); + update.setAccountContent(JSONArray.toJSONString(oldList)); + update.setId(settleClaims.getId()); + settleClaimsMapper.updateById(update); + + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.PLATFORM_UPD_FEE, + Constants.SettleClaimsLogType.PLATFORM_UPD_FEE.getInfo()); + } + + + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void confirmFee(Integer id){ + + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + if(!loginUserInfo.getType().equals(Constants.ZERO)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐞嗗憳鏃犳硶杩涜璇ユ搷浣�"); + } + SettleClaims settleClaims = settleClaimsJoinMapper.selectById(id); + if(Objects.isNull(settleClaims)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + if(!Constants.equalsInteger(Constants.SettleClaimsStatus.COMPENSATION.getKey(),settleClaims.getStatus())){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝涓氬姟鐘舵�佸凡娴佽浆~"); + } + + + //瀛樺偍鏃ュ織 + this.saveSettleClaimsLog(settleClaims, + Constants.SettleClaimsLogType.CONFIRM_FEE, + Constants.SettleClaimsLogType.CONFIRM_FEE.getInfo()); + } + + + } -- Gitblit v1.9.3