package org.chenyon.contract; import org.apache.commons.lang3.StringUtils; import org.chenyon.assets.vo.AssetsVo; import org.chenyon.file.OaFileHandlerService; import org.chenyon.file.OaFileLocalRefVo; import org.chenyon.file.OaFileVo; import org.chenyon.oa.OaContractService; import org.chenyon.oa.asset.OaAssetsVo; import org.chenyon.oa.contract.OaContractVo; import org.rcy.framework.api.entity.PageResult; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @Service public class ContractService { @Autowired private OaContractService oaContractService; @Autowired private OaFileHandlerService oaFileHandlerService; private void hanldeSignStatus(ContractQueryCondition condition) { if (StringUtils.isNotBlank(condition.getSignStatus())) { switch (condition.getSignStatus()){ case "all": condition.setSignStatus(null);break; case "pending" : condition.setSignStatus("待签署");break; case "signed" : condition.setSignStatus("已签署");break; case "expired" : condition.setSignStatus("已过期");break; } } } private String convertSignStatus(String status) { if (StringUtils.isNotBlank(status)) { switch (status){ case "待签署" : return "pending"; case "已签署" : return "signed"; case "已过期" : return "expired"; } } return ""; } public PageResult queryContractPage(ContractQueryCondition condition) throws Exception { //调用OA接口查询 hanldeSignStatus(condition); PageResult pageResultOa = oaContractService.pageQueryContract(condition); PageResult pageResult = new PageResult<>(); pageResult.setPageNo(pageResultOa.getPageNo()); pageResult.setPageSize(pageResultOa.getPageSize()); pageResult.setRecordTotal(pageResultOa.getRecordTotal()); List contractVoList = new ArrayList<>(); for (OaContractVo oaContractVo : pageResultOa.getResult()) { ContractVo contractVo = new ContractVo(); BeanUtils.copyProperties(oaContractVo, contractVo); if(oaContractVo.getAssetsVos() != null) { List assetsVos = oaContractVo.getAssetsVos(); OaAssetsVo assetsVo = assetsVos.get(0); List assetsCoverImg = oaFileHandlerService.getUrls(true, assetsVo.getAssetsNo(), assetsVo.getFormId(), "AssetsCoverImg", assetsVo.getCoverImg()); if(assetsCoverImg != null && assetsCoverImg.size() >= 1) { contractVo.setCoverImgUrl(assetsCoverImg.get(0)); } } contractVo.setSignStatus(convertSignStatus(contractVo.getSignStatus())); contractVoList.add(contractVo); } pageResult.setResult(contractVoList); return pageResult; } public List queryAll(String cusNo) throws Exception { ContractQueryCondition condition = new ContractQueryCondition(); condition.setCusNo(cusNo); condition.setSignStatus("已签署"); List contractVos = new ArrayList<>(); List oaContractVos = oaContractService.queryAll(condition); for (OaContractVo oaContractVo : oaContractVos) { ContractVo contractVo = new ContractVo(); BeanUtils.copyProperties(oaContractVo, contractVo); if(oaContractVo.getAssetsVos() != null) { List contractAssetsVos = new ArrayList<>(); for (OaAssetsVo assetsVo : oaContractVo.getAssetsVos()) { ContractAssetsVo contractAssetsVo = new ContractAssetsVo(); contractAssetsVo.setAssetsNo(assetsVo.getAssetsNo()); contractAssetsVo.setAssetsName(assetsVo.getAssetsName()); contractAssetsVos.add(contractAssetsVo); } contractVo.setAssetsInfos(contractAssetsVos); } contractVos.add(contractVo); } return contractVos; } public ContractAssetsVo queryMoreContractAssets(String formId,Integer pageNo,Integer pageSize) throws Exception { ContractQueryCondition condition = new ContractQueryCondition(); condition.setFormmainId(formId); condition.setPageNo(pageNo); condition.setPageSize(pageSize); OaAssetsVo assetsVo = oaContractService.pageQueryContractAssets(condition); List assetsCoverImgs = oaFileHandlerService.getUrls(true, assetsVo.getAssetsNo(), assetsVo.getFormId(), "AssetsCoverImg", assetsVo.getCoverImg()); ContractAssetsVo assetsInfo = new ContractAssetsVo(); BeanUtils.copyProperties(assetsVo, assetsInfo); RentFeeInfo rentFeeInfo = new RentFeeInfo(); if(StringUtils.isNotBlank(assetsVo.getRentFee())){ rentFeeInfo.setRentFee(Double.parseDouble(assetsVo.getRentFee())); } assetsInfo.setFeeInfo(rentFeeInfo); if(assetsCoverImgs != null) { assetsInfo.setCover(assetsCoverImgs.get(0)); } return assetsInfo; } public Integer countUnsign(String cusNo) throws Exception { Integer count = oaContractService.countUnsign(cusNo); return count; } public ContractVo queryContractDetail(String cusNo,String contractNo) throws Exception { ContractQueryCondition condition = new ContractQueryCondition(); condition.setContractNo(contractNo); OaContractVo oaContractVo = oaContractService.queryContractDetail(condition); if(!cusNo.equals(oaContractVo.getCusNo())) { return null; } ContractVo contractVo = new ContractVo(); BeanUtils.copyProperties(oaContractVo, contractVo); List assetsVos = oaContractVo.getAssetsVos(); OaAssetsVo assetsVo = assetsVos.get(0); List assetsCoverImgs = oaFileHandlerService.getUrls(true, assetsVo.getAssetsNo(), assetsVo.getFormId(), "AssetsCoverImg", assetsVo.getCoverImg()); List eContractUrl = oaFileHandlerService.getUrls(false,cusNo,oaContractVo.getContractNo(),oaContractVo.getFormId(),"eContractFile",oaContractVo.geteContractFile()); ContractAssetsVo assetsInfo = new ContractAssetsVo(); BeanUtils.copyProperties(assetsVo, assetsInfo); RentFeeInfo rentFeeInfo = new RentFeeInfo(); if(StringUtils.isNotBlank(assetsVo.getRentFee())){ rentFeeInfo.setRentFee(Double.parseDouble(assetsVo.getRentFee())); } assetsInfo.setFeeInfo(rentFeeInfo); if(assetsCoverImgs != null) { assetsInfo.setCover(assetsCoverImgs.get(0)); } if(eContractUrl != null) { contractVo.seteContractUrl(eContractUrl.get(0)); } List assetsInfoList = new ArrayList<>(); assetsInfoList.add(assetsInfo); contractVo.setAssetsInfos(assetsInfoList); return contractVo; } public String getSignLink(String eFlowId) throws Exception { String signLink = oaContractService.getSignLink(eFlowId); return signLink; } }