|
@@ -56,6 +56,7 @@ import org.springblade.meter.vo.*;
|
|
|
import org.springblade.producer.bean.PushMessage;
|
|
|
import org.springblade.resource.feign.NewIOSSClient;
|
|
|
import org.springblade.system.user.entity.User;
|
|
|
+import org.springblade.system.user.feign.IUserClient;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -85,6 +86,7 @@ public class TaskController extends BladeController {
|
|
|
private final JdbcTemplate jdbcTemplate;
|
|
|
private final BladeRedis bladeRedis;
|
|
|
private final TaskClient taskClient;
|
|
|
+ private final IUserClient iUserClient;
|
|
|
private final ArchiveFileTaskClient archiveFileTaskClient;
|
|
|
private final ContractMeterPeriodServiceImpl contractMeterPeriodService;
|
|
|
private final MeterPeriodServiceImpl periodService;
|
|
@@ -602,9 +604,17 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
+
|
|
|
/*2.预设流程*/
|
|
|
- int sort = 1;
|
|
|
+ Set<Integer> sortList = new HashSet<>();
|
|
|
for (Map.Entry<String, List<FixedFlowLink>> stringListEntry : sortedMap.entrySet()) {
|
|
|
+ int maxSort;
|
|
|
+ if (sortList.isEmpty()) {
|
|
|
+ maxSort = 1;
|
|
|
+ } else {
|
|
|
+ maxSort = Collections.max(sortList) + 1;
|
|
|
+ }
|
|
|
+
|
|
|
String sortStr = stringListEntry.getKey();
|
|
|
String branchType = sortStr.split("@@@")[1];
|
|
|
|
|
@@ -630,7 +640,8 @@ public class TaskController extends BladeController {
|
|
|
taskParallel.setStatus(1);
|
|
|
taskParallel.setIsDeleted(0);
|
|
|
|
|
|
- taskParallel.setSort(sort++); //sort累加
|
|
|
+ sortList.add(maxSort);
|
|
|
+ taskParallel.setSort(maxSort++);
|
|
|
|
|
|
taskClient.saveTaskParallel(taskParallel);
|
|
|
|
|
@@ -657,7 +668,8 @@ public class TaskController extends BladeController {
|
|
|
taskParallel.setStatus(1);
|
|
|
taskParallel.setIsDeleted(0);
|
|
|
|
|
|
- taskParallel.setSort(sort); //sort固定
|
|
|
+ sortList.add(maxSort);
|
|
|
+ taskParallel.setSort(maxSort);
|
|
|
|
|
|
taskClient.saveTaskParallel(taskParallel);
|
|
|
|
|
@@ -742,6 +754,15 @@ public class TaskController extends BladeController {
|
|
|
List<TaskParallel> taskParallels = jdbcTemplate.query("SELECT * FROM u_task_parallel WHERE process_instance_id = '" + processInstanceId + "' ORDER BY sort", new BeanPropertyRowMapper<>(TaskParallel.class));
|
|
|
List<String> taskParallelsUserIds = taskParallels.stream().map(TaskParallel::getTaskUser).collect(Collectors.toList());
|
|
|
List<String> name = new ArrayList<>();
|
|
|
+
|
|
|
+ /*平行签废除,首先排除相同sort,只判断自己的顺序*/
|
|
|
+ TaskParallel current = taskParallels.stream().filter(f -> f.getTaskUser().equals(SecureUtil.getUserId().toString())).findAny().orElse(null);
|
|
|
+ if (current == null) {
|
|
|
+ throw new ServiceException("获取当前用户任务信息失败");
|
|
|
+ }
|
|
|
+ Integer currentSort = current.getSort();
|
|
|
+ taskParallels.removeIf(f -> f.getSort().equals(currentSort) && !f.getTaskUser().equals(SecureUtil.getUserId().toString()));
|
|
|
+
|
|
|
for (TaskParallel parallel : taskParallels) {
|
|
|
if (parallel.getTaskUser().equals(SecureUtil.getUserId().toString())) {
|
|
|
break;
|
|
@@ -1305,11 +1326,11 @@ public class TaskController extends BladeController {
|
|
|
MaterialMeterFormTask materialMeterFormTask = materialMeterFormServiceTask.getById(dataId);
|
|
|
MaterialMeterFormTaskVO materialMeterFormTaskVO = BeanUtil.copyProperties(materialMeterFormTask, MaterialMeterFormTaskVO.class);
|
|
|
if (materialMeterFormTaskVO != null) {
|
|
|
- if(materialMeterFormTaskVO.getMaterialConform()!=null){
|
|
|
- materialMeterFormTaskVO.setMaterialConformName( materialMeterFormTaskVO.getMaterialConform().equals(0) ? "不符合" : "符合");
|
|
|
+ if (materialMeterFormTaskVO.getMaterialConform() != null) {
|
|
|
+ materialMeterFormTaskVO.setMaterialConformName(materialMeterFormTaskVO.getMaterialConform().equals(0) ? "不符合" : "符合");
|
|
|
}
|
|
|
- if(materialMeterFormTaskVO.getStorageConform()!=null){
|
|
|
- materialMeterFormTaskVO.setStorageConformName(materialMeterFormTaskVO.getStorageConform()==0 ? "不符合" : "符合");
|
|
|
+ if (materialMeterFormTaskVO.getStorageConform() != null) {
|
|
|
+ materialMeterFormTaskVO.setStorageConformName(materialMeterFormTaskVO.getStorageConform() == 0 ? "不符合" : "符合");
|
|
|
}
|
|
|
vo.setBasicsInfo(materialMeterFormTaskVO);
|
|
|
}
|
|
@@ -2147,7 +2168,7 @@ public class TaskController extends BladeController {
|
|
|
data.setStatementName("材料预付款--" + me.getPeriodName());
|
|
|
|
|
|
//计量任务类型 1=中间计量申请,2=材料计量单,3=开工预付款计量单,4=变更令
|
|
|
- if(task.getMeterTaskType()==2){
|
|
|
+ if (task.getMeterTaskType() == 2) {
|
|
|
data.setType(1);
|
|
|
}
|
|
|
materialStartStatementService.addOrUpdate(data);
|
|
@@ -2156,7 +2177,7 @@ public class TaskController extends BladeController {
|
|
|
reportId = materialS.getId();
|
|
|
}
|
|
|
/**计量公式执行 0中间,1材料,2开工*/
|
|
|
- meterPdfInfo(reportId+"",1);
|
|
|
+ meterPdfInfo(reportId + "", 1);
|
|
|
|
|
|
/*复制业务数据状态>主任务状态>替换数据*/
|
|
|
updateCopyDataApproveStatus(task, dto).updateTaskStatus(task).displace(task, dto);
|
|
@@ -2187,6 +2208,14 @@ public class TaskController extends BladeController {
|
|
|
//是否为最后一个审批人
|
|
|
boolean isCurrentUserLastApprover = false;
|
|
|
|
|
|
+ /*平行签审批,首先排除相同sort,只判断自己的顺序*/
|
|
|
+ TaskParallel current = taskParallels.stream().filter(f -> f.getTaskUser().equals(SecureUtil.getUserId().toString())).findAny().orElse(null);
|
|
|
+ if (current == null) {
|
|
|
+ throw new ServiceException("获取当前用户任务信息失败");
|
|
|
+ }
|
|
|
+ Integer currentSort = current.getSort();
|
|
|
+ taskParallels.removeIf(f -> f.getSort().equals(currentSort) && !f.getTaskUser().equals(SecureUtil.getUserId().toString()));
|
|
|
+
|
|
|
for (TaskParallel parallel : taskParallels) {
|
|
|
if (parallel.getTaskUser().equals(SecureUtil.getUserId().toString())) {
|
|
|
if (parallel.getStatus().equals(2)) {
|
|
@@ -2538,9 +2567,8 @@ public class TaskController extends BladeController {
|
|
|
return R.fail("操作失败");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
@GetMapping("/meterPdfInfoOld")
|
|
|
- @ApiOperationSupport(order = 20)
|
|
|
+ @ApiOperationSupport(order = 22)
|
|
|
@ApiOperation(value = "计量生成Pdf", notes = "计量生成Pdf")
|
|
|
public R meterPdfInfo(@RequestParam String ContractId, @RequestParam String FormDataId, @RequestParam Integer type) {
|
|
|
String file_path = CollectionUtils.getSysLocalFileUrl();
|
|
@@ -2664,14 +2692,14 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
@GetMapping("/meterPdfInfo")
|
|
|
- @ApiOperationSupport(order = 20)
|
|
|
+ @ApiOperationSupport(order = 22)
|
|
|
@ApiOperation(value = "计量生成Pdf", notes = "计量生成Pdf")
|
|
|
- public R meterPdfInfo( @RequestParam String reportId, @RequestParam Integer type){
|
|
|
- return R.data(calculate(reportId,type));
|
|
|
+ public R meterPdfInfo(@RequestParam String reportId, @RequestParam Integer type) {
|
|
|
+ return R.data(calculate(reportId, type));
|
|
|
}
|
|
|
|
|
|
- public R<String> calculate(String reportId, Integer type){
|
|
|
- if(BaseUtils.isNumber(reportId)&& BaseUtils.isNumber(type)) {
|
|
|
+ public R<String> calculate(String reportId, Integer type) {
|
|
|
+ if (BaseUtils.isNumber(reportId) && BaseUtils.isNumber(type)) {
|
|
|
Report report = generateReport(Long.parseLong(reportId), type);
|
|
|
return generateReportsPdf(report);
|
|
|
}
|
|
@@ -2679,7 +2707,7 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
/*中期支付证书报表、开工、材料手册报表*/
|
|
|
- public R<String> generateReportsPdf(Report report){
|
|
|
+ public R<String> generateReportsPdf(Report report) {
|
|
|
/*报表记录新增或者重算的时候会调用当前方法,生成PDF*/
|
|
|
/*保存两类PDF,一每种表独立一份用于浏览,二合成表用于电签*/
|
|
|
/*数据完全独立互不影响,可以并发生成,预估PDF的总大小来决定是否全部在内存中生成PDF*/
|
|
@@ -2687,30 +2715,30 @@ public class TaskController extends BladeController {
|
|
|
/*如果数据没有变化,则各表的PDF可以不用更新*/
|
|
|
List<ReportResult> reportResults = formulaClient.formulaExecute3(report.getContractId(), report.getId(), report.getType());
|
|
|
String fileUrl = null;
|
|
|
- if(Func.isNotEmpty(reportResults)){
|
|
|
+ if (Func.isNotEmpty(reportResults)) {
|
|
|
/*List<String> dataListPdf = new ArrayList<>();*/
|
|
|
String file_path = CollectionUtils.getSysLocalFileUrl();
|
|
|
- Map<String,Object> projectMap=jdbcTemplate.queryForMap("select b.project_name projectName from m_contract_info a join m_project_info b on a.p_id=b.id where a.id= "+report.getContractId());
|
|
|
- String projectName = projectMap.getOrDefault("projectName",StringPool.EMPTY).toString();
|
|
|
- /* String fileUrl = "";*/
|
|
|
- List<Map<String,Object>> excelInfo=jdbcTemplate.queryForList("SELECT id,file_url from m_excel_tab where id in("+reportResults.stream().map(ReportResult::getExcelId).distinct().map(Objects::toString).collect(Collectors.joining(","))+")");
|
|
|
- if(Func.isNotEmpty(excelInfo)){
|
|
|
+ Map<String, Object> projectMap = jdbcTemplate.queryForMap("select b.project_name projectName from m_contract_info a join m_project_info b on a.p_id=b.id where a.id= " + report.getContractId());
|
|
|
+ String projectName = projectMap.getOrDefault("projectName", StringPool.EMPTY).toString();
|
|
|
+ /* String fileUrl = "";*/
|
|
|
+ List<Map<String, Object>> excelInfo = jdbcTemplate.queryForList("SELECT id,file_url from m_excel_tab where id in(" + reportResults.stream().map(ReportResult::getExcelId).distinct().map(Objects::toString).collect(Collectors.joining(",")) + ")");
|
|
|
+ if (Func.isNotEmpty(excelInfo)) {
|
|
|
/*所有的Excel地址映射*/
|
|
|
- Map<String,String> fileUrlMapping = excelInfo.stream().collect(Collectors.toMap(m->m.get("id").toString(),m->m.get("file_url").toString(),(v1,v2)->v1));
|
|
|
+ Map<String, String> fileUrlMapping = excelInfo.stream().collect(Collectors.toMap(m -> m.get("id").toString(), m -> m.get("file_url").toString(), (v1, v2) -> v1));
|
|
|
/*把Excel缺失的移除*/
|
|
|
- reportResults.removeIf(rs->!fileUrlMapping.containsKey(rs.getExcelId().toString()));
|
|
|
+ reportResults.removeIf(rs -> !fileUrlMapping.containsKey(rs.getExcelId().toString()));
|
|
|
/*准备*/
|
|
|
- reportResults.forEach(rs->{
|
|
|
+ reportResults.forEach(rs -> {
|
|
|
/*初始化路径*/
|
|
|
- rs.pathInit(file_path);
|
|
|
- rs.setExcelUrl(fileUrlMapping.get(rs.getExcelId().toString()));
|
|
|
+ rs.pathInit(file_path);
|
|
|
+ rs.setExcelUrl(fileUrlMapping.get(rs.getExcelId().toString()));
|
|
|
/*删除已经存在的PDF*/
|
|
|
File tabPdf;
|
|
|
try {
|
|
|
tabPdf = ResourceUtil.getFile(rs.getPdfPath());
|
|
|
if (tabPdf.exists()) {
|
|
|
- if(tabPdf.delete()){
|
|
|
- System.out.println(rs.getPdfPath()+"删除成功");
|
|
|
+ if (tabPdf.delete()) {
|
|
|
+ System.out.println(rs.getPdfPath() + "删除成功");
|
|
|
}
|
|
|
}
|
|
|
} catch (FileNotFoundException e) {
|
|
@@ -2719,24 +2747,24 @@ public class TaskController extends BladeController {
|
|
|
});
|
|
|
/*每种表生成一份pdf*/
|
|
|
StringBuffer sb = new StringBuffer();
|
|
|
- reportResults.parallelStream().forEach(rs->{
|
|
|
+ reportResults.parallelStream().forEach(rs -> {
|
|
|
try {
|
|
|
byte[] excelByte = CommonUtil.InputStreamToBytes(CommonUtil.getOSSInputStream(rs.getExcelUrl()));
|
|
|
PdfReader reader = null;
|
|
|
Document doc = new Document();
|
|
|
- PdfCopy pdfCopy = new PdfCopy(doc, new FileOutputStream(rs.getPdfPath()));
|
|
|
+ PdfCopy pdfCopy = new PdfCopy(doc, new FileOutputStream(rs.getPdfPath()));
|
|
|
int pageCount;
|
|
|
doc.open();
|
|
|
- String tile=rs.getName().contains("封面")?projectName:projectName+StringPool.DASH+rs.getName();
|
|
|
+ String tile = rs.getName().contains("封面") ? projectName : projectName + StringPool.DASH + rs.getName();
|
|
|
/*把公共部分内容释放到每一页*/
|
|
|
rs.putCommon();
|
|
|
- for(Map<String,Object> dataMap:rs.getData()){
|
|
|
+ for (Map<String, Object> dataMap : rs.getData()) {
|
|
|
try {
|
|
|
- Workbook workbook = WorkbookFactory.create(new ByteArrayInputStream(excelByte));
|
|
|
+ Workbook workbook = WorkbookFactory.create(new ByteArrayInputStream(excelByte));
|
|
|
//获取工作表
|
|
|
Sheet sheet = workbook.getSheetAt(0);
|
|
|
sheet.setForceFormulaRecalculation(true);
|
|
|
- if(Func.isNotEmpty(dataMap)) {
|
|
|
+ if (Func.isNotEmpty(dataMap)) {
|
|
|
for (String keys : dataMap.keySet()) {
|
|
|
int y1 = Func.toInt(keys.split("_")[0]);
|
|
|
int x1 = Func.toInt(keys.split("_")[1]);
|
|
@@ -2752,7 +2780,7 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
}
|
|
|
/*设置表头*/
|
|
|
- setTitle(sheet,tile);
|
|
|
+ setTitle(sheet, tile);
|
|
|
//去掉表格虚线
|
|
|
sheet.setPrintGridlines(false);
|
|
|
//设置 整个工作表为一页
|
|
@@ -2761,7 +2789,7 @@ public class TaskController extends BladeController {
|
|
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
|
|
workbook.write(out);
|
|
|
workbook.write(new FileOutputStream(rs.getExcelPath()));
|
|
|
- com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook( new ByteArrayInputStream(out.toByteArray()));
|
|
|
+ com.aspose.cells.Workbook wb = new com.aspose.cells.Workbook(new ByteArrayInputStream(out.toByteArray()));
|
|
|
out.reset();
|
|
|
wb.save(out, SaveFormat.PDF);
|
|
|
reader = new PdfReader(new ByteArrayInputStream(out.toByteArray()));
|
|
@@ -2771,47 +2799,45 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
out.close();
|
|
|
workbook.close();
|
|
|
- }catch (Exception e){
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
pdfCopy.flush();
|
|
|
pdfCopy.close();
|
|
|
- if(reader!=null)reader.close();
|
|
|
+ if (reader != null) reader.close();
|
|
|
doc.close();
|
|
|
- rs.setPdfOssPath(CompletableFuture.supplyAsync(()->{
|
|
|
- BladeFile bladeFile = newIOSSClient.uploadFile(rs.getName()+SnowFlakeUtil.getId() + ".pdf", rs.getPdfPath());
|
|
|
- String url=bladeFile.getLink();
|
|
|
- if(Func.isEmpty(url)){
|
|
|
- url="无效链接";
|
|
|
+ rs.setPdfOssPath(CompletableFuture.supplyAsync(() -> {
|
|
|
+ BladeFile bladeFile = newIOSSClient.uploadFile(rs.getName() + SnowFlakeUtil.getId() + ".pdf", rs.getPdfPath());
|
|
|
+ String url = bladeFile.getLink();
|
|
|
+ if (Func.isEmpty(url)) {
|
|
|
+ url = "无效链接";
|
|
|
}
|
|
|
return url;
|
|
|
}));
|
|
|
- }catch (Exception e){
|
|
|
+ } catch (Exception e) {
|
|
|
sb.append("【").append(rs.getName()).append("】");
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
});
|
|
|
- if(sb.length()>0){
|
|
|
+ if (sb.length() > 0) {
|
|
|
sb.append("生成异常");
|
|
|
return R.fail(sb.toString());
|
|
|
}
|
|
|
/*合并所有表*/
|
|
|
- fileUrl=report.getReportPdf(file_path,reportResults);
|
|
|
+ fileUrl = report.getReportPdf(file_path, reportResults);
|
|
|
}
|
|
|
}
|
|
|
- return R.data(fileUrl);
|
|
|
+ return R.data(fileUrl);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- public void setTitle(Sheet sheet,String name){
|
|
|
+ public void setTitle(Sheet sheet, String name) {
|
|
|
Row row = sheet.getRow(0);
|
|
|
Cell cell = row.getCell(0);
|
|
|
if (cell != null) {
|
|
|
- /* Workbook workbook = sheet.getWorkbook();*/
|
|
|
- /* Font font = workbook.createFont();*/
|
|
|
- CellStyle style=cell.getCellStyle();
|
|
|
+ /* Workbook workbook = sheet.getWorkbook();*/
|
|
|
+ /* Font font = workbook.createFont();*/
|
|
|
+ CellStyle style = cell.getCellStyle();
|
|
|
/* font.setFontName("黑体"); // 设置字体名称
|
|
|
font.setFontHeightInPoints((short) 20); // 设置字号为20*/
|
|
|
/*CellStyle style = workbook.createCellStyle();*/
|
|
@@ -2824,38 +2850,46 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
@Data
|
|
|
- class Report{
|
|
|
- public final String[] REPORT_TYPE=new String[]{"s_interim_pay_certificate","s_material_start_statement","s_material_start_statement"};
|
|
|
- public final String[] PERIOD_TYPE=new String[]{"s_contract_meter_period","s_meter_period","s_meter_period"};
|
|
|
- /**报表记录id*/
|
|
|
+ class Report {
|
|
|
+ public final String[] REPORT_TYPE = new String[]{"s_interim_pay_certificate", "s_material_start_statement", "s_material_start_statement"};
|
|
|
+ public final String[] PERIOD_TYPE = new String[]{"s_contract_meter_period", "s_meter_period", "s_meter_period"};
|
|
|
+ /**
|
|
|
+ * 报表记录id
|
|
|
+ */
|
|
|
private Long id;
|
|
|
- /**报表PDF地址*/
|
|
|
+ /**
|
|
|
+ * 报表PDF地址
|
|
|
+ */
|
|
|
private String pdfUrl;
|
|
|
/*报表对应计量期Id*/
|
|
|
private Long periodId;
|
|
|
- /**计量期ID*/
|
|
|
+ /**
|
|
|
+ * 计量期ID
|
|
|
+ */
|
|
|
private Long contractId;
|
|
|
- /**计量类型,0中间计量 1材料,2开工动员*/
|
|
|
+ /**
|
|
|
+ * 计量类型,0中间计量 1材料,2开工动员
|
|
|
+ */
|
|
|
private Integer type;
|
|
|
|
|
|
- /*上传并关联PDF,然后返回合并后的PDF链接*/
|
|
|
- public String getReportPdf(String file_path,List<ReportResult> reportResults){
|
|
|
+ /*上传并关联PDF,然后返回合并后的PDF链接*/
|
|
|
+ public String getReportPdf(String file_path, List<ReportResult> reportResults) {
|
|
|
Long dataId = SnowFlakeUtil.getId();
|
|
|
String lasPdf = file_path + "/pdf//" + dataId + "_last.pdf";
|
|
|
CollectionUtils.mergePdfPublicMethods(reportResults.stream().map(ReportResult::getPdfPath).collect(Collectors.toList()), lasPdf);
|
|
|
BladeFile bladeFile = newIOSSClient.uploadFile(dataId + "_last.pdf", lasPdf);
|
|
|
- this.pdfUrl=bladeFile.getLink();
|
|
|
- Map<String,String> fileListMap = reportResults.stream().collect(Collectors.toMap(ReportResult::getName, rs-> {
|
|
|
+ this.pdfUrl = bladeFile.getLink();
|
|
|
+ Map<String, String> fileListMap = reportResults.stream().collect(Collectors.toMap(ReportResult::getName, rs -> {
|
|
|
try {
|
|
|
return rs.getPdfOssPath().get();
|
|
|
} catch (InterruptedException | ExecutionException e) {
|
|
|
e.printStackTrace();
|
|
|
return "无效地址";
|
|
|
}
|
|
|
- },(v1,v2)->v1,LinkedHashMap::new));
|
|
|
- String upSql = "update "+REPORT_TYPE[this.type]+" set raw_url=?,file_url_list=? where id="+this.id;
|
|
|
- jdbcTemplate.update(upSql,this.pdfUrl , JSON.toJSONString(fileListMap));
|
|
|
- return this.pdfUrl;
|
|
|
+ }, (v1, v2) -> v1, LinkedHashMap::new));
|
|
|
+ String upSql = "update " + REPORT_TYPE[this.type] + " set raw_url=?,file_url_list=? where id=" + this.id;
|
|
|
+ jdbcTemplate.update(upSql, this.pdfUrl, JSON.toJSONString(fileListMap));
|
|
|
+ return this.pdfUrl;
|
|
|
}
|
|
|
|
|
|
public Report(Long id, Integer type) {
|
|
@@ -2864,21 +2898,21 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public Report generateReport(Long reportId,Integer type){
|
|
|
- Report report =new Report(reportId,type);
|
|
|
- Map<String,Object> map;
|
|
|
- if(type==0){
|
|
|
- map = this.jdbcTemplate.queryForMap("select id,contract_id ,contract_period_id period_id from s_interim_pay_certificate where id = "+reportId);
|
|
|
- }else{
|
|
|
- map = this.jdbcTemplate.queryForMap("select id,contract_id,meter_period_id period_id from s_material_start_statement where id = "+reportId);
|
|
|
+ public Report generateReport(Long reportId, Integer type) {
|
|
|
+ Report report = new Report(reportId, type);
|
|
|
+ Map<String, Object> map;
|
|
|
+ if (type == 0) {
|
|
|
+ map = this.jdbcTemplate.queryForMap("select id,contract_id ,contract_period_id period_id from s_interim_pay_certificate where id = " + reportId);
|
|
|
+ } else {
|
|
|
+ map = this.jdbcTemplate.queryForMap("select id,contract_id,meter_period_id period_id from s_material_start_statement where id = " + reportId);
|
|
|
}
|
|
|
report.setContractId(Long.parseLong(map.get("contract_id").toString()));
|
|
|
report.setPeriodId(Long.parseLong(map.get("period_id").toString()));
|
|
|
return report;
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
@PostMapping("/getFixedFlowPage")
|
|
|
- @ApiOperationSupport(order = 21)
|
|
|
+ @ApiOperationSupport(order = 23)
|
|
|
@ApiOperation(value = "计量预设流程分页", notes = "传入dto")
|
|
|
public R<Page<Map<String, Object>>> getFixedFlowPage(@RequestBody PageFixedFlowDTO dto) {
|
|
|
Page<Map<String, Object>> resultMap = new Page<>();
|
|
@@ -2890,7 +2924,7 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
@PostMapping("/saveFixedFlow")
|
|
|
- @ApiOperationSupport(order = 22)
|
|
|
+ @ApiOperationSupport(order = 24)
|
|
|
@ApiOperation(value = "计量新增预设流程", notes = "传入dto")
|
|
|
public R<Object> saveFixedFlow(@RequestBody SaveFixedFlowDTO dto) {
|
|
|
if (ObjectUtil.isEmpty(dto.getFixedBranchList()) || dto.getFixedBranchList().size() == 0) {
|
|
@@ -2913,7 +2947,26 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
}
|
|
|
if (!duplicateUserIds.isEmpty()) {
|
|
|
- throw new ServiceException("存在重复的用户ID:" + String.join(",", duplicateUserIds));
|
|
|
+ if (duplicateUserIds.contains("")) {
|
|
|
+ throw new ServiceException("操作异常,userIds不能为null");
|
|
|
+ }
|
|
|
+ Map<Long, String> userMap = iUserClient.selectUserAll().stream().filter(f -> cn.hutool.core.util.ObjectUtil.isNotEmpty(f.getRealName())).collect(Collectors.toMap(User::getId, User::getRealName));
|
|
|
+ List<String> names = new LinkedList<>();
|
|
|
+ for (String duplicateUserId : duplicateUserIds) {
|
|
|
+ String orDefault = userMap.getOrDefault(Long.parseLong(duplicateUserId), null);
|
|
|
+ names.add(orDefault);
|
|
|
+ }
|
|
|
+ throw new ServiceException("每个任务人只能归属于一个任务中,以下任务人重复:" + String.join("、", names));
|
|
|
+ }
|
|
|
+
|
|
|
+ /*检查签字证书信息*/
|
|
|
+ List<String> userIds = dto.getFixedBranchList().stream().map(SaveFixedFlowDTO.FixedBranch::getUserIds).collect(Collectors.toList());
|
|
|
+ if (userIds.size() > 0) {
|
|
|
+ String resultString = StringUtils.join(userIds, ",");
|
|
|
+ R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(resultString);
|
|
|
+ if (!objectR.isSuccess()) {
|
|
|
+ throw new ServiceException("预设流程选择的任务人没有签字证书信息");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
Long fixedFlowId = SnowFlakeUtil.getId();
|
|
@@ -2933,20 +2986,23 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
@GetMapping("/getFixedFlow")
|
|
|
- @ApiOperationSupport(order = 23)
|
|
|
+ @ApiOperationSupport(order = 25)
|
|
|
@ApiOperation(value = "计量获取预设流程信息", notes = "传入预设流程id")
|
|
|
public R<FixedFlowVO> getFixedFlow(@RequestParam String id) {
|
|
|
FixedFlow fixedFlow = jdbcTemplate.query("SELECT * FROM u_fixed_flow WHERE is_deleted = 0 AND id = ?", new Object[]{id}, new BeanPropertyRowMapper<>(FixedFlow.class)).stream().findAny().orElse(null);
|
|
|
if (fixedFlow != null) {
|
|
|
- List<FixedFlowLink> fixedFlowLinkList = jdbcTemplate.query("SELECT * FROM u_fixed_flow_link WHERE is_deleted = 0 AND fixed_flow_id = ?", new Object[]{fixedFlow.getId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
|
|
|
+ List<FixedFlowLink> fixedFlowLinkList = jdbcTemplate.query("SELECT * FROM u_fixed_flow_link WHERE is_deleted = 0 AND fixed_flow_id = ? ORDER BY fixed_flow_branch_sort,fixed_flow_link_sort", new Object[]{fixedFlow.getId()}, new BeanPropertyRowMapper<>(FixedFlowLink.class));
|
|
|
if (fixedFlowLinkList.size() > 0) {
|
|
|
- Map<String, List<FixedFlowLink>> group = fixedFlowLinkList.stream().collect(Collectors.groupingBy(obj -> obj.getFixedFlowLink() + "@@@" + obj.getFixedFlowLinkType()));
|
|
|
+ Map<String, List<FixedFlowLink>> group = fixedFlowLinkList.stream()
|
|
|
+ .collect(Collectors.groupingBy(obj -> obj.getFixedFlowLink() + "@@@" + obj.getFixedFlowLinkType(),
|
|
|
+ LinkedHashMap::new,
|
|
|
+ Collectors.toList()));
|
|
|
|
|
|
FixedFlowVO vo = new FixedFlowVO();
|
|
|
vo.setFixedFlowId(fixedFlow.getId());
|
|
|
vo.setFixedFlowName(fixedFlow.getFixedFlowName());
|
|
|
|
|
|
- List<FixedFlowVO.FixedBranchVO> fixedBranchVOList = new ArrayList<>();
|
|
|
+ List<FixedFlowVO.FixedBranchVO> fixedBranchVOList = new LinkedList<>();
|
|
|
for (Map.Entry<String, List<FixedFlowLink>> listEntry : group.entrySet()) {
|
|
|
|
|
|
String nameAndType = listEntry.getKey();
|
|
@@ -2981,7 +3037,7 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
|
|
|
@PostMapping("/updateFixedFlow")
|
|
|
- @ApiOperationSupport(order = 24)
|
|
|
+ @ApiOperationSupport(order = 26)
|
|
|
@ApiOperation(value = "计量修改预设流程", notes = "传入dto")
|
|
|
public R<Object> updateFixedFlow(@RequestBody UpdateFixedFlowDTO dto) {
|
|
|
if (ObjectUtil.isEmpty(dto.getFixedBranchList()) || dto.getFixedBranchList().size() == 0) {
|
|
@@ -3002,7 +3058,26 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
}
|
|
|
if (!duplicateUserIds.isEmpty()) {
|
|
|
- throw new ServiceException("存在重复的用户ID:" + String.join(",", duplicateUserIds));
|
|
|
+ if (duplicateUserIds.contains("")) {
|
|
|
+ throw new ServiceException("操作异常,userIds不能为null");
|
|
|
+ }
|
|
|
+ Map<Long, String> userMap = iUserClient.selectUserAll().stream().filter(f -> cn.hutool.core.util.ObjectUtil.isNotEmpty(f.getRealName())).collect(Collectors.toMap(User::getId, User::getRealName));
|
|
|
+ List<String> names = new LinkedList<>();
|
|
|
+ for (String duplicateUserId : duplicateUserIds) {
|
|
|
+ String orDefault = userMap.getOrDefault(Long.parseLong(duplicateUserId), null);
|
|
|
+ names.add(orDefault);
|
|
|
+ }
|
|
|
+ throw new ServiceException("每个任务人只能归属于一个任务中,以下任务人重复:" + String.join("、", names));
|
|
|
+ }
|
|
|
+
|
|
|
+ /*检查签字证书信息*/
|
|
|
+ List<String> userIds = dto.getFixedBranchList().stream().map(UpdateFixedFlowDTO.FixedBranch::getUserIds).collect(Collectors.toList());
|
|
|
+ if (userIds.size() > 0) {
|
|
|
+ String resultString = StringUtils.join(userIds, ",");
|
|
|
+ R<Object> objectR = archiveFileTaskClient.checkTaskUserCertificateInfo(resultString);
|
|
|
+ if (!objectR.isSuccess()) {
|
|
|
+ throw new ServiceException("预设流程选择的任务人没有签字证书信息");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (taskClient.updateFixedFlow(dto.getFixedFlowId(), dto.getFixedName())) {
|
|
@@ -3019,16 +3094,8 @@ public class TaskController extends BladeController {
|
|
|
return R.fail("操作失败");
|
|
|
}
|
|
|
|
|
|
- /*@PostMapping("/deleteFixedFlowBranch")
|
|
|
- @ApiOperationSupport(order = 25)
|
|
|
- @ApiOperation(value = "计量刪除预设流程分支", notes = "传入预设流程id、分支名称")
|
|
|
- public R<Object> deleteFixedFlowBranch(@RequestParam String id, @RequestParam String name) {
|
|
|
- jdbcTemplate.update("DELETE FROM u_fixed_flow_link WHERE fixed_flow_id = ? AND fixed_flow_link = ?", new Object[]{id, name});
|
|
|
- return R.success("操作成功");
|
|
|
- }*/
|
|
|
-
|
|
|
@PostMapping("/deleteFixedFlow")
|
|
|
- @ApiOperationSupport(order = 26)
|
|
|
+ @ApiOperationSupport(order = 27)
|
|
|
@ApiOperation(value = "计量刪除预设流程", notes = "传入预设流程id")
|
|
|
public R<Object> deleteFixedFlow(@RequestParam String id) {
|
|
|
jdbcTemplate.update("DELETE FROM u_fixed_flow WHERE id = ?", new Object[]{id});
|