From a9ca0823ab8f33ca85abebcf6ec4a8da235adb49 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 30 一月 2024 14:36:49 +0800 Subject: [PATCH] 开发业务接口 --- server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java | 355 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 351 insertions(+), 4 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 4846864..c6d87a5 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,8 @@ package com.doumee.service.business.impl; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.api.R; +import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; @@ -12,6 +15,7 @@ import com.doumee.dao.business.SettleClaimsMapper; import com.doumee.dao.business.dto.SCSupplementDTO; import com.doumee.dao.business.join.SettleClaimsJoinMapper; +import com.doumee.dao.business.join.SettleClaimsLogJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.service.business.SettleClaimsLogService; import com.doumee.service.business.SettleClaimsService; @@ -21,13 +25,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; +import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.*; +import java.util.stream.Collectors; /** * 鐞嗚禂鐢宠琛⊿ervice瀹炵幇 @@ -42,6 +54,8 @@ @Autowired private SettleClaimsLogMapper settleClaimsLogMapper; + @Autowired + private SystemDictDataBiz systemDictDataBiz; @Autowired private MultifileMapper multifileMapper; @@ -49,6 +63,250 @@ @Autowired private SettleClaimsJoinMapper settleClaimsJoinMapper; + @Autowired + private SettleClaimsLogJoinMapper settleClaimsLogJoinMapper; + + /** + * 閫�鍥炵敵璇� + * @param param + * @return + */ + @Override + public Integer back(SettleClaims param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getCheckInfo()) ){ + 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.FINISH_ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.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(param.getCheckInfo()); + update.setCheckUserId(user.getId()); + update.setId(model.getId()); + update.setStatus(Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_RETURN; + String info =applyLogType.getInfo(); + info = info.replace("${param}", update.getCheckInfo()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + return 1; + + } + /** + * 璧勬枡纭 + * @param param + * @return + */ + @Override + public Integer confirm(SettleClaims param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getCheckInfo()) ){ + 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.FINISH_ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.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(param.getCheckInfo()); + update.setCheckUserId(user.getId()); + update.setId(model.getId()); + update.setStatus(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_CONFIRM_INFORMATION; + String info =applyLogType.getInfo(); + info = info.replace("${param}", update.getCheckInfo()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + return 1; + + } + /** + * 鐞嗚禂澶囨敞鏍囩 + * @param param + * @return + */ + @Override + public Integer remark(SettleClaims param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getCheckInfo()) ){ + 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.FINISH_ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.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(param.getCheckInfo()); + 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}", update.getCheckInfo()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + return 1; + + } + /** + * 鐞嗚禂缁撴鎻愪氦 + * @param param + * @return + */ + @Override + public Integer doneCommit(SettleClaims param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getCheckInfo()) ){ + 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.FINISH_ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.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(param.getCheckInfo()); + update.setCheckUserId(user.getId()); + update.setStatus(Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.getKey()); + update.setId(model.getId()); + update.setYlClaimAccount(Constants.formatBigdecimal(param.getYlClaimAccount())); + update.setSwClaimAccount(Constants.formatBigdecimal(param.getSwClaimAccount())); + update.setWgClaimAccount(Constants.formatBigdecimal(param.getWgClaimAccount())); + update.setScClaimAccount(Constants.formatBigdecimal(param.getScClaimAccount())); + update.setClaimAccount(update.getYlClaimAccount().add(update.getSwClaimAccount()).add(update.getScClaimAccount()).add(update.getWgClaimAccount())); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_FINISH; + String info =applyLogType.getInfo(); + info = info.replace("${param}", update.getCheckInfo()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + return 1; + + } + /** + * 鐞嗚禂澶勭悊 + * @param param + * @return + */ + @Override + public Integer dealBiz(SettleClaims param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getCheckInfo()) ){ + 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.RETURN_ACCEPTANCE.getKey()) + ||Constants.equalsInteger(model.getStatus(),Constants.SettleClaimsStatus.FINISH_ACCEPTANCE.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(param.getCheckInfo()); + update.setCheckUserId(user.getId()); + update.setId(model.getId()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_LP_DEAL; + String info =applyLogType.getInfo(); + info = info.replace("${param}", update.getCheckInfo()); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + return 1; + + } + /** + * 娣诲姞澶囨鍙� + * @param param + * @return + */ + @Override + public Integer addCode(SettleClaims param){ + if(param.getId() == null + ||StringUtils.isBlank( param.getCode()) ){ + 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.WAIT_ACCEPTANCE.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()); + update.setStatus(Constants.SettleClaimsStatus.DEAL_ING.getKey()); + update.setCode(param.getCode()); + settleClaimsMapper.updateById(update); + + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_ADDCODE; + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), null,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(); @@ -108,17 +366,106 @@ return settleClaims.getId(); } + @Override + public void exportFiles(Integer id, HttpServletResponse response) { + try { + SettleClaims model = settleClaimsMapper.selectById(id); + if(model == null){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); + SettleClaims update = new SettleClaims(); + update.setEditDate(new Date()); + update.setEditor(loginUserInfo.getId()); + Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_DOWNLOAD; + String info =applyLogType.getInfo(); + SettleClaimsLog log = new SettleClaimsLog(update,applyLogType.getName(), info,update.getId(),applyLogType.getKey(), JSONObject.toJSONString(model), JSONObject.toJSONString(update)); + settleClaimsLogMapper.insert(log); + List<File> fileList = new ArrayList<>(); + List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda() + .eq(Multifile::getObjId,id) + .isNotNull(Multifile::getFileurl) + .in(Multifile::getObjType, Arrays.asList(new Integer[]{ + Constants.MultiFile.LP_YGGX_FILE.getKey(), + Constants.MultiFile.LP_MZCL_FILE.getKey(), + Constants.MultiFile.LP_ZYCL_FILE.getKey(), + Constants.MultiFile.LP_SCZL_FILE.getKey(), + Constants.MultiFile.LP_JACL_FILE.getKey(), + })) + ); + if(multifileList== null || multifileList.size() == 0){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.SETTLE_FILE).getCode(); + for(Multifile l : multifileList){ + File f = Constants.getFileByNetFile(path + l.getFileurl(),StringUtils.defaultString(l.getName(),"鏈懡鍚�")); + if(f !=null && f.isFile()){ + fileList.add(f); + } + } + if(fileList == null || fileList.size() == 0){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + String fileName = model.getInformantName() +"鐞嗚禂璧勬枡涓媉"+System.currentTimeMillis()+".zip" ; + String encodeFileName = URLEncoder.encode(fileName); + response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); + response.setContentType("application/octet-stream"); + response.setHeader("eva-opera-type", "download"); + response.setHeader("eva-download-filename", encodeFileName); + Constants.packFilesToZip(fileList,response.getOutputStream()); + } catch (IOException e) { + throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); + } + } + + + + @Override public SettleClaims getSettleClaimsDetail(Integer id){ SettleClaims settleClaims = settleClaimsJoinMapper.selectJoinOne(SettleClaims.class,new MPJLambdaWrapper<SettleClaims>() .selectAll(SettleClaims.class) .leftJoin(Member.class,Member::getId,SettleClaims::getMemberId) .leftJoin(InsuranceApply.class,InsuranceApply::getId,SettleClaims::getInsuranceApplyId) .leftJoin(DispatchUnit.class,DispatchUnit::getId,SettleClaims::getDuId) - + .leftJoin(Worktype.class,Worktype::getId,SettleClaims::getWorktypeId) + .eq(SettleClaims::getId,id) + .last(" limit 1 ") ); + List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>() + .lambda().eq(Multifile::getObjId,id) + .eq(Multifile::getIsdeleted,Constants.ZERO) + .orderByAsc(Multifile::getCreateDate) + ); + if(CollectionUtils.isNotEmpty(multifileList)){ + settleClaims.setReportFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_SGXC_FILE.getKey())).collect(Collectors.toList())); + settleClaims.setRelationFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_YGGX_FILE.getKey())).collect(Collectors.toList())); + + settleClaims.setOutpatientFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_MZCL_FILE.getKey())).collect(Collectors.toList())); + + settleClaims.setHospitalFileList(multifileList.stream().filter(m->m.getObjType().equals(Constants.MultiFile.LP_ZYCL_FILE.getKey())).collect(Collectors.toList())); + + 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())); + + } + + //鏌ヨ鎿嶄綔璁板綍 + List<SettleClaimsLog> settleClaimsLogList = settleClaimsLogJoinMapper.selectJoinList(SettleClaimsLog.class, + new MPJLambdaWrapper<SettleClaimsLog>() + .selectAll(SettleClaimsLog.class) + .selectAs(Member::getName,SettleClaimsLog::getCreatorName) + .selectAs(Company::getName,SettleClaimsLog::getCompanyName) + .leftJoin(Member.class,Member::getId,SettleClaimsLog::getCreator) + .leftJoin(Company.class,Company::getId,Member::getCompanyId) + .eq(SettleClaimsLog::getSettleClainmsId,settleClaims.getId()) + .orderByAsc(SettleClaimsLog::getCreateDate) + ); + + settleClaims.setSettleClaimsLogList(settleClaimsLogList); return settleClaims; } -- Gitblit v1.9.3