|
@@ -78,6 +78,7 @@ import org.springblade.meter.service.ITaskRepealMessageService;
|
|
|
import org.springblade.meter.service.impl.*;
|
|
|
import org.springblade.meter.utils.*;
|
|
|
import org.springblade.meter.vo.*;
|
|
|
+import org.springblade.resource.feign.CommonFileClient;
|
|
|
import org.springblade.resource.feign.NewIOSSClient;
|
|
|
import org.springblade.system.cache.ParamCache;
|
|
|
import org.springblade.system.user.entity.User;
|
|
@@ -96,6 +97,7 @@ import java.io.*;
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
import java.lang.reflect.Method;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.BigInteger;
|
|
|
import java.math.RoundingMode;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
@@ -161,6 +163,7 @@ public class TaskController extends BladeController {
|
|
|
private final IInterimPayCertificateService interimPayCertificateService;
|
|
|
private final IInterimPayCertificateItemService interimPayCertificateItemService;
|
|
|
private final OperationLogClient operationLogClient;
|
|
|
+ private final CommonFileClient commonFileClient;
|
|
|
// 计量公式入口
|
|
|
private final FormulaClient formulaClient;
|
|
|
|
|
@@ -173,7 +176,7 @@ public class TaskController extends BladeController {
|
|
|
@ApiOperation(value = "获取任务名称", notes = "传入合同段contractId、期数id(变更令传勾选的id字符串英文逗号拼接)、type=1(中间计量申请)、=2(材料计量单)、3=(开工预付款计量单)、=4(变更令)")
|
|
|
public R<Object> name(@RequestParam String contractId, @RequestParam String id, @RequestParam String type) {
|
|
|
String name = null;
|
|
|
- BigDecimal bigDecimal=null;
|
|
|
+ BigDecimal bigDecimal=BigDecimal.ZERO;
|
|
|
if (ObjectUtil.isNotEmpty(contractId) && ObjectUtil.isNotEmpty(id)) {
|
|
|
ContractInfo contractInfo = jdbcTemplate.query("SELECT contract_name FROM m_contract_info WHERE id = " + contractId, new BeanPropertyRowMapper<>(ContractInfo.class)).stream().findAny().orElse(null);
|
|
|
String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
|
|
@@ -202,7 +205,14 @@ public class TaskController extends BladeController {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- bigDecimal = middleMeterApplyTaskMapper.selectAllMoney(Long.valueOf(contractId), Long.valueOf(id));
|
|
|
+ List<Long> longs = Func.toLongList(id);
|
|
|
+ for (Long l : longs) {
|
|
|
+ BigDecimal bigDecimal1 = middleMeterApplyTaskMapper.selectAllMoney(Long.valueOf(contractId), Long.valueOf(l));
|
|
|
+ if(bigDecimal1!=null&&bigDecimal1.compareTo(BigDecimal.ZERO)==0){
|
|
|
+ bigDecimal=bigDecimal.add(bigDecimal1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
Map<String,Object> map=new HashMap<>();
|
|
|
map.put("name",name);
|
|
@@ -217,7 +227,7 @@ public class TaskController extends BladeController {
|
|
|
// @PushMessage(clientId = ClientIdConstant.METER_CLIENT_ID)
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public R<Object> approval(@RequestBody MeterApprovalDTO approvalDTO) {
|
|
|
- if (ObjectUtil.isEmpty(approvalDTO.getBatch()) || ObjectUtil.isEmpty(approvalDTO.getPeriodId()) || ObjectUtil.isEmpty(approvalDTO.getProjectId()) || ObjectUtil.isEmpty(approvalDTO.getContractId()) || ObjectUtil.isEmpty(approvalDTO.getTaskName()) || ObjectUtil.isEmpty(approvalDTO.getRestrictDay())) {
|
|
|
+ if (ObjectUtil.isEmpty(approvalDTO.getBatch()) || ObjectUtil.isEmpty(approvalDTO.getPeriodId()) || ObjectUtil.isEmpty(approvalDTO.getProjectId()) || ObjectUtil.isEmpty(approvalDTO.getTaskName())||ObjectUtil.isEmpty(approvalDTO.getContractId()) || ObjectUtil.isEmpty(approvalDTO.getRestrictDay())) {
|
|
|
throw new ServiceException("请求入参数据异常,操作失败");
|
|
|
}
|
|
|
|
|
@@ -304,7 +314,7 @@ public class TaskController extends BladeController {
|
|
|
/*构造创建审批任务*/
|
|
|
Set<String> aopParamsSet = new HashSet<>();
|
|
|
try {
|
|
|
- this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 1);
|
|
|
+ this.buildTaskInfo(taskId+"", approvalDTO, aopParamsSet, 1);
|
|
|
} catch (Exception e) {
|
|
|
throw new ServiceException("创建审批任务异常," + e.getMessage());
|
|
|
}
|
|
@@ -419,7 +429,7 @@ public class TaskController extends BladeController {
|
|
|
/*构造创建审批任务*/
|
|
|
Set<String> aopParamsSet = new HashSet<>();
|
|
|
try {
|
|
|
- this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 2);
|
|
|
+ this.buildTaskInfo(taskId+"", approvalDTO, aopParamsSet, 2);
|
|
|
} catch (Exception e) {
|
|
|
throw new ServiceException("创建审批任务异常," + e.getMessage());
|
|
|
}
|
|
@@ -487,7 +497,7 @@ public class TaskController extends BladeController {
|
|
|
/*构造创建审批任务*/
|
|
|
Set<String> aopParamsSet = new HashSet<>();
|
|
|
try {
|
|
|
- this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 3);
|
|
|
+ this.buildTaskInfo(taskId+"", approvalDTO, aopParamsSet, 3);
|
|
|
} catch (Exception e) {
|
|
|
throw new ServiceException("创建审批任务异常," + e.getMessage());
|
|
|
}
|
|
@@ -513,8 +523,10 @@ public class TaskController extends BladeController {
|
|
|
} else if (approvalDTO.getType().equals(4)) {
|
|
|
/*==================== 变更令 ====================*/
|
|
|
Set<String> aopParamsSet = new HashSet<>();
|
|
|
- Long taskId = SnowFlakeUtil.getId();
|
|
|
+ String taskIds="";
|
|
|
for (String id : approvalDTO.getPeriodId().split(",")) {
|
|
|
+ Long taskId = SnowFlakeUtil.getId();
|
|
|
+ taskIds=taskIds+","+taskId;
|
|
|
/*获取变更令信息*/
|
|
|
ChangeTokenForm changeTokenForm = changeTokenFormService.getById(id);
|
|
|
if (changeTokenForm != null) {
|
|
@@ -574,10 +586,10 @@ public class TaskController extends BladeController {
|
|
|
throw new ServiceException("未获取到当前变更令信息,操作失败");
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ taskIds=taskIds.substring(1,taskIds.length());
|
|
|
/*构造创建审批任务*/
|
|
|
try {
|
|
|
- this.buildTaskInfo(taskId, approvalDTO, aopParamsSet, 4);
|
|
|
+ this.buildTaskInfo(taskIds, approvalDTO, aopParamsSet, 4);
|
|
|
} catch (Exception e) {
|
|
|
throw new ServiceException("创建审批任务异常," + e.getMessage());
|
|
|
}
|
|
@@ -601,7 +613,7 @@ public class TaskController extends BladeController {
|
|
|
* @param aopParamsSet
|
|
|
* @param meterTaskType
|
|
|
*/
|
|
|
- private void buildTaskInfo(Long taskId, MeterApprovalDTO approvalDTO, Set<String> aopParamsSet, Integer meterTaskType) {
|
|
|
+ private void buildTaskInfo(String taskId, MeterApprovalDTO approvalDTO, Set<String> aopParamsSet, Integer meterTaskType) {
|
|
|
/*预设流程*/
|
|
|
Map<String, List<FixedFlowLink>> sortedMap = null;
|
|
|
if (ObjectUtil.isNotEmpty(approvalDTO.getFixedFlowId())) {
|
|
@@ -629,157 +641,163 @@ public class TaskController extends BladeController {
|
|
|
throw new ServiceException(objectR.getMsg());
|
|
|
}
|
|
|
|
|
|
- /*主任务*/
|
|
|
- Long processInstanceId = SnowFlakeUtil.getId();
|
|
|
- Task task = new Task();
|
|
|
- task.setId(taskId);
|
|
|
- Date nowTime = new Date();
|
|
|
- task.setStartTime(DateUtil.format(nowTime, "yyyy-MM-dd"));
|
|
|
- task.setEndTime(DateUtil.format(DateUtils.addDays(nowTime, approvalDTO.getRestrictDay()), "yyyy-MM-dd"));
|
|
|
- task.setProcessDefinitionId(SnowFlakeUtil.getId().toString());
|
|
|
- task.setProcessInstanceId(processInstanceId.toString()); //实例id
|
|
|
- task.setReportUser(AuthUtil.getUserId().toString());
|
|
|
- task.setReportUserName(AuthUtil.getNickName());
|
|
|
- task.setCreateUser(AuthUtil.getUserId());
|
|
|
- task.setCreateTime(nowTime);
|
|
|
- task.setUpdateTime(nowTime);
|
|
|
- task.setUpdateUser(AuthUtil.getUserId());
|
|
|
- task.setCreateDept(null);
|
|
|
- task.setTaskContent(ObjectUtil.isNotEmpty(approvalDTO.getTaskDesc()) ? approvalDTO.getTaskDesc() : null);
|
|
|
- task.setTaskUser(null);
|
|
|
- task.setFormDataId(approvalDTO.getPeriodId()); //数据指向,指向期数id(变更令为id英文逗号拼接)
|
|
|
- task.setTaskName(approvalDTO.getTaskName());
|
|
|
- task.setContractId(approvalDTO.getContractId().toString());
|
|
|
- task.setProjectId(approvalDTO.getProjectId().toString());
|
|
|
- task.setBatch(approvalDTO.getBatch());
|
|
|
- task.setMeterTaskType(meterTaskType); //计量任务类型 1=中间计量申请,2=材料计量单,3=开工预付款计量单、4=变更令
|
|
|
- task.setIsBuildAudit(approvalDTO.getIsBuildAudit());
|
|
|
-
|
|
|
- task.setType(1);
|
|
|
-
|
|
|
- task.setApprovalType(meterTaskType+4); //计量
|
|
|
- task.setFixedFlowId(ObjectUtil.isNotEmpty(approvalDTO.getFixedFlowId()) ? Long.parseLong(approvalDTO.getFixedFlowId()) : 0L);
|
|
|
- task.setStatus(1); //待审批
|
|
|
- task.setIsDeleted(0);
|
|
|
-
|
|
|
- try {
|
|
|
- boolean taskBool = taskClient.saveTask(task);
|
|
|
- if (!taskBool) {
|
|
|
- throw new ServiceException("任务创建失败");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- throw new ServiceException("任务创建失败:" + e.getMessage());
|
|
|
- }
|
|
|
-
|
|
|
- /*副任务*/
|
|
|
- /*1.非预设流程*/
|
|
|
- if (sortedMap == null) {
|
|
|
- Map<Long, String> nameMap = jdbcTemplate.query("select id,name from blade_user where is_deleted = 0", new BeanPropertyRowMapper<>(User.class)).stream().collect(Collectors.toMap(User::getId, User::getName, (key1, key2) -> key1));
|
|
|
-
|
|
|
- /*(approvalDTO.getTaskUserIds()是按顺序构造,所以创建的任务也是按照顺序构造)*/
|
|
|
- String[] userIds = approvalDTO.getTaskUserIds().split(",");
|
|
|
- int sort = 1;
|
|
|
- for (String userId : userIds) {
|
|
|
- TaskParallel taskParallel = new TaskParallel();
|
|
|
- taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
- taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
- taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
- taskParallel.setTaskUser(userId);
|
|
|
- if (nameMap.get(Long.parseLong(userId)) != null) {
|
|
|
- taskParallel.setTaskUserName(nameMap.get(Long.parseLong(userId)));
|
|
|
- }
|
|
|
- taskParallel.setInitiative(1);
|
|
|
- taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateTime(nowTime);
|
|
|
- taskParallel.setUpdateTime(nowTime);
|
|
|
- taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateDept(null);
|
|
|
- taskParallel.setStatus(1); //待审批
|
|
|
- taskParallel.setIsDeleted(0);
|
|
|
- taskParallel.setSort(sort++);
|
|
|
- taskClient.saveTaskParallel(taskParallel);
|
|
|
-
|
|
|
- String param = userId + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
- aopParamsSet.add(param);
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
+ String[] formDataIds = approvalDTO.getPeriodId().split(",");
|
|
|
+ String[] taskIdList = taskId.split(",");
|
|
|
+ for (int i = 0; i < formDataIds.length; i++) {
|
|
|
+ /*主任务*/
|
|
|
+ Long processInstanceId = SnowFlakeUtil.getId();
|
|
|
+ Task task = new Task();
|
|
|
+ task.setId(Long.valueOf(taskIdList[i]));
|
|
|
+ Date nowTime = new Date();
|
|
|
+ task.setStartTime(DateUtil.format(nowTime, "yyyy-MM-dd"));
|
|
|
+ task.setEndTime(DateUtil.format(DateUtils.addDays(nowTime, approvalDTO.getRestrictDay()), "yyyy-MM-dd"));
|
|
|
+ task.setProcessDefinitionId(SnowFlakeUtil.getId().toString());
|
|
|
+ task.setProcessInstanceId(processInstanceId.toString()); //实例id
|
|
|
+ task.setReportUser(AuthUtil.getUserId().toString());
|
|
|
+ task.setReportUserName(AuthUtil.getNickName());
|
|
|
+ task.setCreateUser(AuthUtil.getUserId());
|
|
|
+ task.setCreateTime(nowTime);
|
|
|
+ task.setUpdateTime(nowTime);
|
|
|
+ task.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ task.setCreateDept(null);
|
|
|
+ task.setTaskContent(ObjectUtil.isNotEmpty(approvalDTO.getTaskDesc()) ? approvalDTO.getTaskDesc() : null);
|
|
|
+ task.setTaskUser(null);
|
|
|
+ task.setFormDataId(formDataIds[i]); //数据指向,指向期数id(变更令为id英文逗号拼接)
|
|
|
+ task.setTaskName(approvalDTO.getTaskName());
|
|
|
+ task.setContractId(approvalDTO.getContractId().toString());
|
|
|
+ task.setProjectId(approvalDTO.getProjectId().toString());
|
|
|
+ task.setBatch(approvalDTO.getBatch());
|
|
|
+ task.setMeterTaskType(meterTaskType); //计量任务类型 1=中间计量申请,2=材料计量单,3=开工预付款计量单、4=变更令
|
|
|
+ task.setIsBuildAudit(approvalDTO.getIsBuildAudit());
|
|
|
+
|
|
|
+ task.setType(1);
|
|
|
+
|
|
|
+ task.setApprovalType(meterTaskType+4); //计量
|
|
|
+ task.setFixedFlowId(ObjectUtil.isNotEmpty(approvalDTO.getFixedFlowId()) ? Long.parseLong(approvalDTO.getFixedFlowId()) : 0L);
|
|
|
+ task.setStatus(1); //待审批
|
|
|
+ task.setIsDeleted(0);
|
|
|
|
|
|
- /*2.预设流程*/
|
|
|
- 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;
|
|
|
+ try {
|
|
|
+ boolean taskBool = taskClient.saveTask(task);
|
|
|
+ if (!taskBool) {
|
|
|
+ throw new ServiceException("任务创建失败");
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new ServiceException("任务创建失败:" + e.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ /*副任务*/
|
|
|
+ /*1.非预设流程*/
|
|
|
+ if (sortedMap == null) {
|
|
|
+ Map<Long, String> nameMap = jdbcTemplate.query("select id,name from blade_user where is_deleted = 0", new BeanPropertyRowMapper<>(User.class)).stream().collect(Collectors.toMap(User::getId, User::getName, (key1, key2) -> key1));
|
|
|
+
|
|
|
+ /*(approvalDTO.getTaskUserIds()是按顺序构造,所以创建的任务也是按照顺序构造)*/
|
|
|
+ String[] userIds = approvalDTO.getTaskUserIds().split(",");
|
|
|
+ int sort = 1;
|
|
|
+ for (String userId : userIds) {
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
+ taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
+ taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
+ taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
+ taskParallel.setTaskUser(userId);
|
|
|
+ if (nameMap.get(Long.parseLong(userId)) != null) {
|
|
|
+ taskParallel.setTaskUserName(nameMap.get(Long.parseLong(userId)));
|
|
|
+ }
|
|
|
+ taskParallel.setInitiative(1);
|
|
|
+ taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateTime(nowTime);
|
|
|
+ taskParallel.setUpdateTime(nowTime);
|
|
|
+ taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateDept(null);
|
|
|
+ taskParallel.setStatus(1); //待审批
|
|
|
+ taskParallel.setIsDeleted(0);
|
|
|
+ taskParallel.setSort(sort++);
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
|
|
|
- String sortStr = stringListEntry.getKey();
|
|
|
- String branchType = sortStr.split("@@@")[1];
|
|
|
+ String param = userId + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
+ aopParamsSet.add(param);
|
|
|
+ }
|
|
|
|
|
|
- List<FixedFlowLink> value = stringListEntry.getValue();
|
|
|
+ } else {
|
|
|
|
|
|
- if (branchType.equals("1")) {
|
|
|
- //垂直,sort排序
|
|
|
- value.sort(Comparator.comparingInt(FixedFlowLink::getFixedFlowLinkSort));
|
|
|
+ /*2.预设流程*/
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
- for (FixedFlowLink fixedFlowLink : value) {
|
|
|
- TaskParallel taskParallel = new TaskParallel();
|
|
|
- taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
- taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
- taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
- taskParallel.setTaskUser(fixedFlowLink.getFixedFlowLinkUser().toString());
|
|
|
- taskParallel.setTaskUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
- taskParallel.setInitiative(1);
|
|
|
- taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateTime(nowTime);
|
|
|
- taskParallel.setUpdateTime(nowTime);
|
|
|
- taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateDept(null);
|
|
|
- taskParallel.setStatus(1);
|
|
|
- taskParallel.setIsDeleted(0);
|
|
|
+ String sortStr = stringListEntry.getKey();
|
|
|
+ String branchType = sortStr.split("@@@")[1];
|
|
|
|
|
|
- sortList.add(maxSort);
|
|
|
- taskParallel.setSort(maxSort++);
|
|
|
+ List<FixedFlowLink> value = stringListEntry.getValue();
|
|
|
|
|
|
- taskClient.saveTaskParallel(taskParallel);
|
|
|
+ if (branchType.equals("1")) {
|
|
|
+ //垂直,sort排序
|
|
|
+ value.sort(Comparator.comparingInt(FixedFlowLink::getFixedFlowLinkSort));
|
|
|
|
|
|
- String param = fixedFlowLink.getFixedFlowLinkUser() + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
- aopParamsSet.add(param);
|
|
|
- }
|
|
|
+ for (FixedFlowLink fixedFlowLink : value) {
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
+ taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
+ taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
+ taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
+ taskParallel.setTaskUser(fixedFlowLink.getFixedFlowLinkUser().toString());
|
|
|
+ taskParallel.setTaskUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
+ taskParallel.setInitiative(1);
|
|
|
+ taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateTime(nowTime);
|
|
|
+ taskParallel.setUpdateTime(nowTime);
|
|
|
+ taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateDept(null);
|
|
|
+ taskParallel.setStatus(1);
|
|
|
+ taskParallel.setIsDeleted(0);
|
|
|
+
|
|
|
+ sortList.add(maxSort);
|
|
|
+ taskParallel.setSort(maxSort++);
|
|
|
+
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
+
|
|
|
+ String param = fixedFlowLink.getFixedFlowLinkUser() + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
+ aopParamsSet.add(param);
|
|
|
+ }
|
|
|
|
|
|
- } else if (branchType.equals("2")) {
|
|
|
-
|
|
|
- //平行,固定sort
|
|
|
- for (FixedFlowLink fixedFlowLink : value) {
|
|
|
- TaskParallel taskParallel = new TaskParallel();
|
|
|
- taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
- taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
- taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
- taskParallel.setTaskUser(fixedFlowLink.getFixedFlowLinkUser().toString());
|
|
|
- taskParallel.setTaskUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
- taskParallel.setInitiative(1);
|
|
|
- taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateTime(nowTime);
|
|
|
- taskParallel.setUpdateTime(nowTime);
|
|
|
- taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
- taskParallel.setCreateDept(null);
|
|
|
- taskParallel.setStatus(1);
|
|
|
- taskParallel.setIsDeleted(0);
|
|
|
-
|
|
|
- sortList.add(maxSort);
|
|
|
- taskParallel.setSort(maxSort);
|
|
|
-
|
|
|
- taskClient.saveTaskParallel(taskParallel);
|
|
|
-
|
|
|
- String param = fixedFlowLink.getFixedFlowLinkUser() + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
- aopParamsSet.add(param);
|
|
|
+ } else if (branchType.equals("2")) {
|
|
|
+
|
|
|
+ //平行,固定sort
|
|
|
+ for (FixedFlowLink fixedFlowLink : value) {
|
|
|
+ TaskParallel taskParallel = new TaskParallel();
|
|
|
+ taskParallel.setId(SnowFlakeUtil.getId());
|
|
|
+ taskParallel.setProcessInstanceId(processInstanceId.toString());
|
|
|
+ taskParallel.setParallelProcessInstanceId(SnowFlakeUtil.getId().toString());
|
|
|
+ taskParallel.setTaskUser(fixedFlowLink.getFixedFlowLinkUser().toString());
|
|
|
+ taskParallel.setTaskUserName(fixedFlowLink.getFixedFlowLinkUserName());
|
|
|
+ taskParallel.setInitiative(1);
|
|
|
+ taskParallel.setCreateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateTime(nowTime);
|
|
|
+ taskParallel.setUpdateTime(nowTime);
|
|
|
+ taskParallel.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ taskParallel.setCreateDept(null);
|
|
|
+ taskParallel.setStatus(1);
|
|
|
+ taskParallel.setIsDeleted(0);
|
|
|
+
|
|
|
+ sortList.add(maxSort);
|
|
|
+ taskParallel.setSort(maxSort);
|
|
|
+
|
|
|
+ taskClient.saveTaskParallel(taskParallel);
|
|
|
+
|
|
|
+ String param = fixedFlowLink.getFixedFlowLinkUser() + "," + approvalDTO.getProjectId() + "," + approvalDTO.getContractId();
|
|
|
+ aopParamsSet.add(param);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -4413,6 +4431,7 @@ public class TaskController extends BladeController {
|
|
|
executionTime.info("生成PDF");
|
|
|
/*合并所有表*/
|
|
|
fileUrl = report.getReportPdf(file_path, reportResults);
|
|
|
+ //进行分页 400页一份,不超过400页
|
|
|
executionTime.info("合并PDF");
|
|
|
// 添加电签任务列表
|
|
|
if (taskType != 10) {
|
|
@@ -4424,6 +4443,10 @@ public class TaskController extends BladeController {
|
|
|
return R.data(fileUrl);
|
|
|
}
|
|
|
|
|
|
+ private void pagePdfUrl(List<ReportResult> reportResults) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private boolean isWanShengTemplate(Long projectId) {
|
|
|
String sql = "select id,reference_wbs_template_id_meter from m_project_info where id = "+projectId;
|
|
|
ProjectInfo projectInfo = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(ProjectInfo.class));
|
|
@@ -4764,6 +4787,77 @@ public class TaskController extends BladeController {
|
|
|
}, (v1, v2) -> v1, LinkedHashMap::new));
|
|
|
String upSql = "update " + REPORT_TYPE[this.type] + " set raw_url=?,file_url_list=? ,calculate_date=SYSDATE() where id=" + this.id;
|
|
|
jdbcTemplate.update(upSql, this.pdfUrl, JSON.toJSONString(fileListMap));
|
|
|
+ //如果是中间计量,需要对pdfUrl进行分页
|
|
|
+ if(this.type==0){
|
|
|
+ Map<String,String>pageMap=new HashMap<>();
|
|
|
+ List<String> currentBatch = new ArrayList<>();
|
|
|
+ int currentPageCount = 0;
|
|
|
+
|
|
|
+ for (Map.Entry<String, String> entry : fileListMap.entrySet()) {
|
|
|
+
|
|
|
+ String pdfUrl = entry.getValue();
|
|
|
+ String result = commonFileClient.getPdfNum(pdfUrl);
|
|
|
+ Integer pageNum=0;
|
|
|
+ if(StringUtils.isNotEmpty(result)){
|
|
|
+ pageNum= Integer.parseInt(result);
|
|
|
+ }
|
|
|
+ //单份超过400直接加入
|
|
|
+ if(pageNum>400){
|
|
|
+ int sort=pageMap.size()+1;
|
|
|
+ pageMap.put("第"+sort+"份"+pageNum+"页",pdfUrl);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //加起来超过400了就把已经存在了的合并了
|
|
|
+ if(currentPageCount+pageNum>400){
|
|
|
+ if (!currentBatch.isEmpty()) {
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
+ String localPdf = FileUtils.getSysLocalFileUrl() + "/pdf/" + id + ".pdf";
|
|
|
+ FileUtils.mergePdfPublicMethods(currentBatch,localPdf);
|
|
|
+ BladeFile bladeFile1 = newIOSSClient.uploadFile( SnowFlakeUtil.get() + ".pdf", localPdf);
|
|
|
+ int sort=pageMap.size()+1;
|
|
|
+ pageMap.put("第"+sort+"份"+currentPageCount+"页",bladeFile1.getLink());
|
|
|
+ currentBatch = new ArrayList<>();
|
|
|
+ currentPageCount = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ // 添加当前PDF到批次
|
|
|
+ currentBatch.add(pdfUrl);
|
|
|
+ currentPageCount += pageNum;
|
|
|
+ }
|
|
|
+ // 合并最后一批
|
|
|
+ if (!currentBatch.isEmpty()) {
|
|
|
+ String pdfUrl=this.pdfUrl;
|
|
|
+ //如果等于0说明总共没有超过400页,就直接用上面已经合并好了的
|
|
|
+ if(pageMap.size()!=0){
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
+ String localPdf = FileUtils.getSysLocalFileUrl() + "/pdf/" + id + ".pdf";
|
|
|
+ FileUtils.mergePdfPublicMethods(currentBatch,localPdf);
|
|
|
+ BladeFile bladeFile1 = newIOSSClient.uploadFile( SnowFlakeUtil.get() + ".pdf", localPdf);
|
|
|
+ pdfUrl=bladeFile1.getLink();
|
|
|
+ }
|
|
|
+ int sort=pageMap.size()+1;
|
|
|
+ pageMap.put("第"+sort+"份"+currentPageCount+"页",pdfUrl);
|
|
|
+ }
|
|
|
+ Map<String, String> sortedMap = pageMap.entrySet().stream()
|
|
|
+ // 提取 "第i份" 中的 i 并转为整数排序
|
|
|
+ .sorted(Comparator.comparingInt(
|
|
|
+ entry -> {
|
|
|
+ String key = entry.getKey();
|
|
|
+ // 匹配 "第i份" 中的 i
|
|
|
+ String numStr = key.split("份")[0].replaceAll("[^0-9]", "");
|
|
|
+ return Integer.parseInt(numStr);
|
|
|
+ }
|
|
|
+ ))
|
|
|
+ // 存入 LinkedHashMap 保持顺序
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ Map.Entry::getKey,
|
|
|
+ Map.Entry::getValue,
|
|
|
+ (oldVal, newVal) -> oldVal,
|
|
|
+ LinkedHashMap::new
|
|
|
+ ));
|
|
|
+ jdbcTemplate.update("update s_interim_pay_certificate set page_pdf_url=? where id=?", JSON.toJSONString(sortedMap), this.id);
|
|
|
+ }
|
|
|
return this.pdfUrl;
|
|
|
}
|
|
|
|