|
|
@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; |
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
import com.yxt.anrui.flowable.api.flow.FlowableFeign; |
|
|
|
import com.yxt.anrui.flowable.api.flow.UpdateFlowFieldVo; |
|
|
|
import com.yxt.anrui.flowable.api.flow2.FlowDelegateQuery; |
|
|
|
import com.yxt.anrui.flowable.api.flow2.FlowFeign; |
|
|
|
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign; |
|
|
|
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo; |
|
|
@ -21,14 +22,14 @@ import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserFeign; |
|
|
|
import com.yxt.anrui.portal.api.sysuser.SysUserVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebank.*; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebank.flowable.OverdueBankApplyNodeQuery; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebank.flowable.OverdueBankApplyNodeVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebank.flowable.OverdueBankApplyTaskQuery; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebank.flowable.SubmitApplyBankDto; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebank.flowable.*; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduebankdetails.LoanOverdueBankDetailsDto; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduefin.ExcelFinVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduefin.LoanOverdueFinVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduefin.ReturnExcelFinVo; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanoverduefindetails.LoanOverdueFinDetailsDto; |
|
|
|
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.LoanRepaymentScheduleDetailsVo; |
|
|
|
import com.yxt.anrui.riskcenter.biz.loanoverduebankdetails.LoanOverdueBankDetailsService; |
|
|
|
import com.yxt.common.base.config.component.FileUploadComponent; |
|
|
|
import com.yxt.common.base.service.MybatisBaseService; |
|
|
@ -40,10 +41,21 @@ import com.yxt.messagecenter.api.message.MessageFeign; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFlowVo; |
|
|
|
import com.yxt.messagecenter.api.message.MessageFlowableQuery; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|
|
|
import org.apache.poi.ss.usermodel.Cell; |
|
|
|
import org.apache.poi.ss.usermodel.Row; |
|
|
|
import org.apache.poi.ss.usermodel.Sheet; |
|
|
|
import org.apache.poi.ss.usermodel.Workbook; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
|
|
import org.apache.tomcat.util.threads.ThreadPoolExecutor; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.web.multipart.MultipartFile; |
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import java.io.File; |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.util.*; |
|
|
|
import java.util.concurrent.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -603,6 +615,7 @@ public class LoanOverdueBankService extends MybatisBaseService<LoanOverdueBankMa |
|
|
|
List<LoanOverdueBankDetailsDto> detailsVoList = detailsVoList(useOrgSid, loanOverdueBankDetailVo.getStopDate()); |
|
|
|
loanOverdueBankDetailVo.setDetailsVoList(detailsVoList); |
|
|
|
loanOverdueBankDetailVo.setOrgPath(orgPath); |
|
|
|
loanOverdueBankDetailVo.setUseOrgSid(useOrgSid); |
|
|
|
} |
|
|
|
|
|
|
|
} else {//编辑初始化
|
|
|
@ -622,6 +635,9 @@ public class LoanOverdueBankService extends MybatisBaseService<LoanOverdueBankMa |
|
|
|
loanOverdueBankDetailVo.setFilesList(fileList); |
|
|
|
} |
|
|
|
loanOverdueBankDetailVo.setOrgPath(loanOverdueBank.getOrgSidPath()); |
|
|
|
loanOverdueBankDetailVo.setTaskId(loanOverdueBank.getTaskId()); |
|
|
|
loanOverdueBankDetailVo.setProcInstId(loanOverdueBank.getProcInstId()); |
|
|
|
loanOverdueBankDetailVo.setUseOrgSid(loanOverdueBank.getUseOrgSid()); |
|
|
|
} |
|
|
|
return rb.success().setData(loanOverdueBankDetailVo); |
|
|
|
} |
|
|
@ -635,4 +651,176 @@ public class LoanOverdueBankService extends MybatisBaseService<LoanOverdueBankMa |
|
|
|
detailsDtoList.removeAll(Collections.singleton(null)); |
|
|
|
return detailsDtoList; |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean<List<ExcelBankVo>> getExcelInfo(MultipartFile file, HttpServletRequest request, String useOrgSid) throws IOException { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录
|
|
|
|
File tempFile = new File(temp); |
|
|
|
if (!tempFile.exists()) { |
|
|
|
tempFile.mkdirs(); |
|
|
|
} |
|
|
|
String fileName = file.getOriginalFilename(); |
|
|
|
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { |
|
|
|
return rb.fail().setMsg("上传文件不正确"); |
|
|
|
} |
|
|
|
int[] resultCell = new int[]{0, 1, 2}; |
|
|
|
List<ExcelBankVo> list = new ArrayList<>(); |
|
|
|
List<ExcelBankVo> list2 = new ArrayList<>(); |
|
|
|
boolean isExcel2003 = true; |
|
|
|
if (fileName.matches("^.+\\.(?i)(xlsx)$")) { |
|
|
|
isExcel2003 = false; |
|
|
|
} |
|
|
|
InputStream is = file.getInputStream(); |
|
|
|
Workbook wb = null; |
|
|
|
if (isExcel2003) { |
|
|
|
wb = new HSSFWorkbook(is); |
|
|
|
} else { |
|
|
|
wb = new XSSFWorkbook(is); |
|
|
|
} |
|
|
|
Sheet sheet = wb.getSheetAt(0); |
|
|
|
ReturnExcelBankVo importReturn = getSheetVal(sheet, resultCell, useOrgSid); |
|
|
|
list = importReturn.getInfos(); |
|
|
|
if (StringUtils.isNotBlank(importReturn.getCheckInfo())) { |
|
|
|
return rb.setMsg(importReturn.getCheckInfo()); |
|
|
|
} else { |
|
|
|
return rb.success().setData(list).setMsg("成功导入数据,请点击确定按钮"); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
private ReturnExcelBankVo getSheetVal(Sheet sheet, int[] resultCell, String useOrgSid) { |
|
|
|
ReturnExcelBankVo returnExcelBankVo = new ReturnExcelBankVo(); |
|
|
|
List<ExcelBankVo> importVoList = new ArrayList<>(); |
|
|
|
Set<String> checkWord = new HashSet<>(); |
|
|
|
for (int r = 1; r <= sheet.getLastRowNum(); r++) { |
|
|
|
Row row = sheet.getRow(r); |
|
|
|
if (row == null) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
ExcelBankVo excelBankVo = new ExcelBankVo(); |
|
|
|
for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) { |
|
|
|
String trim = new String(); |
|
|
|
try { |
|
|
|
trim = getCellVal(row.getCell(i)).toString().trim(); |
|
|
|
if (StringUtils.isBlank(trim)) { |
|
|
|
NullPointerException nullPointerException = new NullPointerException(); |
|
|
|
} |
|
|
|
String temp = getCellVal(row.getCell(i)).toString().trim(); |
|
|
|
temp = temp.replace(".0", ""); |
|
|
|
for (int j = 0; j < temp.length(); j++) { |
|
|
|
if (i == resultCell[j]) { |
|
|
|
switch (i) { |
|
|
|
case 0: |
|
|
|
excelBankVo.setBankContractNo(temp); |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
excelBankVo.setPeriod(temp); |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
excelBankVo.setBankOverdueMoney(temp); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
if (StringUtils.isBlank(trim)) { |
|
|
|
String word = new String(); |
|
|
|
switch (i) { |
|
|
|
case 0: |
|
|
|
word = "资方合同编号"; |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
word = "期数"; |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
word = "资方逾期月还"; |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
importVoList.add(excelBankVo); |
|
|
|
|
|
|
|
} |
|
|
|
if (!importVoList.isEmpty()) { |
|
|
|
for (ExcelBankVo excelBankVo : importVoList) { |
|
|
|
if (StringUtils.isBlank(excelBankVo.getBankContractNo())) { |
|
|
|
checkWord.add("资方合同编号不能为空"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(excelBankVo.getPeriod())) { |
|
|
|
checkWord.add("期数不能为空"); |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(excelBankVo.getBankOverdueMoney())) { |
|
|
|
checkWord.add("资方逾期月还不能为空,若无则需填写0"); |
|
|
|
} |
|
|
|
List<LoanRepaymentScheduleDetailsVo> loanRepaymentScheduleDetailsVos = loanOverdueBankDetailsService.selectBankContractNo(excelBankVo.getBankContractNo(), useOrgSid); |
|
|
|
loanRepaymentScheduleDetailsVos.removeAll(Collections.singleton(null)); |
|
|
|
if (loanRepaymentScheduleDetailsVos.isEmpty()) { |
|
|
|
if (StringUtils.isNotBlank(excelBankVo.getBankContractNo())) { |
|
|
|
checkWord.add("资方合同编号" + excelBankVo.getBankContractNo() + "在还款计划表中不存在"); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
StringBuffer sbcheck1 = new StringBuffer(); |
|
|
|
if (!checkWord.isEmpty()) { |
|
|
|
for (String s : checkWord) { |
|
|
|
if (StringUtils.isBlank(s)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
sbcheck1.append(s).append(";"); |
|
|
|
} |
|
|
|
} |
|
|
|
if (sbcheck1.length() > 0) { |
|
|
|
sbcheck1.delete(sbcheck1.length() - 1, sbcheck1.length()); |
|
|
|
returnExcelBankVo.setCheckInfo(sbcheck1.toString()); |
|
|
|
returnExcelBankVo.setInfos(new ArrayList<>()); |
|
|
|
return returnExcelBankVo; |
|
|
|
} |
|
|
|
returnExcelBankVo.setInfos(importVoList); |
|
|
|
return returnExcelBankVo; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public Object getCellVal(Cell cell) { |
|
|
|
Object obj = null; |
|
|
|
if (cell != null) { |
|
|
|
switch (cell.getCellTypeEnum()) { |
|
|
|
case BOOLEAN: |
|
|
|
obj = cell.getBooleanCellValue(); |
|
|
|
break; |
|
|
|
case ERROR: |
|
|
|
obj = cell.getErrorCellValue(); |
|
|
|
break; |
|
|
|
case NUMERIC: |
|
|
|
obj = cell.getNumericCellValue(); |
|
|
|
break; |
|
|
|
case STRING: |
|
|
|
obj = cell.getStringCellValue(); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
return obj; |
|
|
|
} |
|
|
|
|
|
|
|
public ResultBean delegate(OverBankApplyDelegateQuery query) { |
|
|
|
ResultBean rb = ResultBean.fireFail(); |
|
|
|
FlowDelegateQuery delegateQuery = new FlowDelegateQuery(); |
|
|
|
BeanUtil.copyProperties(query, delegateQuery); |
|
|
|
flowFeign.delegate(delegateQuery); |
|
|
|
return rb.success(); |
|
|
|
} |
|
|
|
} |
|
|
|