Ver código fonte

上报计量任务时创建报表或者修改报表状态,计量任务显示具体预设流程名称

qianxb 1 ano atrás
pai
commit
e1c4d23102

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/TaskPageVO.java

@@ -51,6 +51,9 @@ public class TaskPageVO implements Serializable {
     @ApiModelProperty(value = "预设流程id")
     private Long fixedFlowId;
 
+    @ApiModelProperty("预设流程名称")
+    private String fixedFlowName;
+
     @ApiModelProperty(value = "驳回理由")
     private String rejectDesc;
 

+ 79 - 6
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -318,7 +318,8 @@ public class TaskController extends BladeController {
 
                     /*修改计量期的审批状态=待审批*/
                     contractMeterPeriodService.update(Wrappers.<ContractMeterPeriod>lambdaUpdate().set(ContractMeterPeriod::getApproveStatus, 1).eq(ContractMeterPeriod::getId, approvalDTO.getPeriodId()));
-
+                    //修改报表状态,如果不存在则创建报表,因为任务要查看报表
+                    this.updateStatement(Long.valueOf(approvalDTO.getPeriodId()),1,1);
                     return R.data(200, aopParamsSet, "操作成功");
                 }
 
@@ -383,7 +384,8 @@ public class TaskController extends BladeController {
 
                     /*修改计量期的审批状态=待审批*/
                     periodService.update(Wrappers.<MeterPeriod>lambdaUpdate().set(MeterPeriod::getApproveStatus, 1).eq(MeterPeriod::getId, approvalDTO.getPeriodId()));
-
+                    //修改报表状态,如果不存在则创建报表,因为任务要查看报表
+                    this.updateStatement(Long.valueOf(approvalDTO.getPeriodId()),2,1);
                     return R.data(200, aopParamsSet, "操作成功");
                 }
 
@@ -448,7 +450,8 @@ public class TaskController extends BladeController {
 
                     /*修改计量期的审批状态=待审批*/
                     periodService.update(Wrappers.<MeterPeriod>lambdaUpdate().set(MeterPeriod::getApproveStatus, 1).eq(MeterPeriod::getId, approvalDTO.getPeriodId()));
-
+                    //修改报表状态,如果不存在则创建报表,因为任务要查看报表
+                    this.updateStatement(Long.valueOf(approvalDTO.getPeriodId()),3,1);
                     return R.data(200, aopParamsSet, "操作成功");
                 }
             } else if (approvalDTO.getType().equals(4)) {
@@ -841,7 +844,8 @@ public class TaskController extends BladeController {
 
                         /*修改计量期的审批状态=未上报*/
                         contractMeterPeriodService.update(Wrappers.<ContractMeterPeriod>lambdaUpdate().set(ContractMeterPeriod::getApproveStatus, 0).eq(ContractMeterPeriod::getId, periodId));
-
+                        //修改报表状态,如果不存在则创建报表,因为任务要查看报表
+                        this.updateStatement(Long.valueOf(periodId),1,0);
                         try {
                             //修改所有复制数据id,并且同步修改中间表id,用于废除预览
                             List<MiddleMeterApplyTask> meterApplyTaskList = middleMeterApplyServiceTask.list(new LambdaQueryWrapper<MiddleMeterApplyTask>().eq(MiddleMeterApplyTask::getContractPeriodId, periodId));
@@ -918,7 +922,8 @@ public class TaskController extends BladeController {
 
                         /*修改计量期的审批状态=未上报*/
                         periodService.update(Wrappers.<MeterPeriod>lambdaUpdate().set(MeterPeriod::getApproveStatus, 0).eq(MeterPeriod::getId, periodId));
-
+                        //修改报表状态,如果不存在则创建报表,因为任务要查看报表
+                        this.updateStatement(Long.valueOf(periodId),2,0);
                         /*删除业务复制数据taskVO*/
                         try {
                             jdbcTemplate.execute("DELETE FROM s_material_meter_form_task WHERE meter_period_id = '" + periodId + "' AND task_id = " + taskRepealDTO.getTaskId());
@@ -946,7 +951,8 @@ public class TaskController extends BladeController {
 
                         /*修改计量期的审批状态=未上报*/
                         periodService.update(Wrappers.<MeterPeriod>lambdaUpdate().set(MeterPeriod::getApproveStatus, 0).eq(MeterPeriod::getId, periodId));
-
+                        //修改报表状态,如果不存在则创建报表,因为任务要查看报表
+                        this.updateStatement(Long.valueOf(periodId),3,0);
                         /*删除业务复制数据taskVO*/
                         try {
                             jdbcTemplate.execute("DELETE FROM s_start_pay_meter_form_task WHERE meter_period_id = '" + periodId + "' AND task_id = " + taskRepealDTO.getTaskId());
@@ -1124,6 +1130,8 @@ public class TaskController extends BladeController {
 
         /*获取用户信息Map*/
         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));
+        /*获取预设流程Map*/
+        Map<Long, String> flowMap = jdbcTemplate.query("select id,fixed_flow_name from u_fixed_flow where is_deleted = 0 and contract_id = "+dto.getContractId(), new BeanPropertyRowMapper<>(FixedFlow.class)).stream().collect(Collectors.toMap(FixedFlow::getId, FixedFlow::getFixedFlowName, (key1, key2) -> key1));
 
         /*解析page分页数据*/
         IPage<TaskPageVO> page = new Page<>(current, size);
@@ -1141,6 +1149,7 @@ public class TaskController extends BladeController {
             vo.setTaskDesc(task.getTaskContent());
             vo.setTaskReportUserName(nameMap.get(Long.parseLong(task.getReportUser())));
             vo.setFixedFlowId(ObjectUtil.isNotEmpty(task.getFixedFlowId()) ? task.getFixedFlowId().equals(0L) ? null : task.getFixedFlowId() : null);
+            vo.setFixedFlowName(vo.getFixedFlowId() == null ? "自定义流程" : flowMap.get(vo.getFixedFlowId()));
             List<TaskParallel> taskParallelList = finalTaskParallelGroupMap.get(task.getProcessInstanceId());
             if (taskParallelList != null && taskParallelList.size() > 0) {
                 List<String> names = taskParallelList.stream().map(TaskParallel::getTaskUserName).collect(Collectors.toList());
@@ -1584,6 +1593,7 @@ public class TaskController extends BladeController {
                 certificate.setStartDate(period.getStartDate());
                 certificate.setEndDate(period.getEndDate());
                 certificate.setPrintDate(period.getFormPrintDate());
+                certificate.setApproveStatus(1);
                 interimPayCertificateService.save(certificate);
                 //10代表不走电签,其他都会自动审批
                 this.calculate(certificate.getId() + "", 0, 10);
@@ -1608,6 +1618,7 @@ public class TaskController extends BladeController {
                 statement.setStatementName(period.getPeriodName() + "报表");
                 statement.setStatementPeriod(period.getPeriodName());
                 statement.setPrintDate(period.getFormPrintDate());
+                statement.setApproveStatus(1);
                 materialStartStatementService.save(statement);
                 //10代表不走电签,其他都会自动审批
                 this.calculate(statement.getId() + "", 1, 10);
@@ -1616,6 +1627,68 @@ public class TaskController extends BladeController {
         }
     }
 
+    /**
+     * 根据当前的计量期,查看是否存在对应报表,不存在则新增,存在则修改状态为已上报
+     *
+     * @param
+     * @return
+     */
+    private void updateStatement(Long periodId,Integer type,Integer status) {
+        if (type == 1) {
+            List<InterimPayCertificate> list = interimPayCertificateService.list(new LambdaQueryWrapper<InterimPayCertificate>().eq(InterimPayCertificate::getContractPeriodId, periodId));
+            if (list.size() > 1) {
+                throw new ServiceException("当前计量期获取出多条对应报表");
+            } else if (list.size() == 1) {
+                interimPayCertificateService.update(new LambdaUpdateWrapper<InterimPayCertificate>()
+                        .eq(InterimPayCertificate::getId,list.get(0).getId())
+                        .set(InterimPayCertificate::getApproveStatus,status));
+            } else {
+                ContractMeterPeriod period = contractMeterPeriodService.getById(periodId);
+                //新增报表
+                InterimPayCertificate certificate = new InterimPayCertificate();
+                certificate.setId(SnowFlakeUtil.getId());
+                certificate.setProjectId(period.getProjectId());
+                certificate.setContractId(period.getContractId());
+                certificate.setContractPeriodId(period.getId());
+                certificate.setPeriodNumber(period.getPeriodNumber());
+                certificate.setStartDate(period.getStartDate());
+                certificate.setEndDate(period.getEndDate());
+                certificate.setPrintDate(period.getFormPrintDate());
+                certificate.setApproveStatus(status);
+                interimPayCertificateService.save(certificate);
+                //10代表不走电签,其他都会自动审批
+                this.calculate(certificate.getId() + "", 0, 10);
+
+            }
+        } else {
+            List<MaterialStartStatement> list = materialStartStatementService.list(new LambdaQueryWrapper<MaterialStartStatement>().eq(MaterialStartStatement::getMeterPeriodId, periodId));
+            if (list.size() > 1) {
+                throw new ServiceException("当前计量期获取出多条对应报表");
+            } else if (list.size() == 1) {
+                materialStartStatementService.update(new LambdaUpdateWrapper<MaterialStartStatement>()
+                        .eq(MaterialStartStatement::getId,list.get(0).getId())
+                        .set(MaterialStartStatement::getApproveStatus,status));
+            } else {
+                MeterPeriod period = meterPeriodMapper.selectById(periodId);
+                //新增报表
+                MaterialStartStatement statement = new MaterialStartStatement();
+                statement.setId(SnowFlakeUtil.getId());
+                statement.setPeriodNumber(period.getPeriodNumber());
+                statement.setProjectId(period.getProjectId());
+                statement.setContractId(period.getContractId());
+                statement.setMeterPeriodId(period.getId());
+                statement.setType(type == 2 ? 1 : 2);
+                statement.setStatementName(period.getPeriodName() + "报表");
+                statement.setStatementPeriod(period.getPeriodName());
+                statement.setPrintDate(period.getFormPrintDate());
+                statement.setApproveStatus(status);
+                materialStartStatementService.save(statement);
+                //10代表不走电签,其他都会自动审批
+                this.calculate(statement.getId() + "", 1, 10);
+            }
+        }
+    }
+
     @GetMapping("/data/detail")
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "任务数据信息详情", notes = "传入任务id,数据dataId")