소스 검색

变更令相关

Signed-off-by: liuyc <56808083@qq.com>
liuyc 1 년 전
부모
커밋
29cb127626

+ 27 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/TaskChangeTokenInventoryUpdateDTO.java

@@ -0,0 +1,27 @@
+package org.springblade.meter.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class TaskChangeTokenInventoryUpdateDTO implements Serializable {
+
+    @ApiModelProperty(value = "合同段id")
+    private Long contractId;
+
+    @ApiModelProperty(value = "中间列表的id")
+    private Long dataId;
+
+    @ApiModelProperty(value = "部位的主键id")
+    private Long primaryKeyIdMeter;
+
+    @ApiModelProperty(value = "清单的主键id")
+    private Long primaryKeyIdInventory;
+
+    @ApiModelProperty(value = "变更增减数量")
+    private BigDecimal changTotal;
+
+}

+ 17 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/TaskChangeTokenMeterUpdateDTO.java

@@ -0,0 +1,17 @@
+package org.springblade.meter.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class TaskChangeTokenMeterUpdateDTO implements Serializable {
+
+    @ApiModelProperty(value = "主键id")
+    private Long primaryKeyId;
+
+    @ApiModelProperty(value = "合同图号")
+    private String contractPicture;
+
+}

+ 29 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/TaskDataRemoveDTO.java

@@ -0,0 +1,29 @@
+package org.springblade.meter.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class TaskDataRemoveDTO implements Serializable {
+
+    @ApiModelProperty(value = "项目id", required = true)
+    private Long projectId;
+
+    @ApiModelProperty(value = "合同段id", required = true)
+    private Long contractId;
+
+    @ApiModelProperty(value = "任务id", required = true)
+    private Long taskId;
+
+    @ApiModelProperty(value = "中间列表的数据id", required = true)
+    private Long dataId;
+
+    @ApiModelProperty(value = "主键id,取值:1、中期计量清单删除取taskDetailId;2、变更令的部位删除,清单删除都取primaryKeyId主键id")
+    private Long primaryKeyId;
+
+    @ApiModelProperty(value = "变更令删除时传入type,1=申请部位删除,2=申请清单删除")
+    private Integer type;
+
+}

+ 5 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/ChangeTokenFormTask.java

@@ -112,6 +112,10 @@ public class ChangeTokenFormTask extends BaseEntity {
     @ApiModelProperty(value = "下达日期")
     private LocalDateTime commandDate;
 
-
+    /**
+     * 单条数据驳回描述信息
+     */
+    @ApiModelProperty(value = "单条数据驳回描述信息")
+    private String repealDesc;
 
 }

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

@@ -14,6 +14,9 @@ import java.math.BigDecimal;
 @Data
 public class ChangeFormVO2 {
 
+    @ApiModelProperty(value = "主键id")
+    private Long primaryKeyId;
+
     @ApiModelProperty(value = "项目id")
     private Long projectId;
 

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

@@ -16,6 +16,9 @@ import java.util.Objects;
 @Data
 public class ChangeNodeVO {
 
+    @ApiModelProperty(value = "主键id")
+    private Long primaryKeyId;
+
     @ApiModelProperty(value = "id")
     private Long id;
 

+ 2 - 5
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/TaskDataDetailVO.java

@@ -18,11 +18,8 @@ public class TaskDataDetailVO implements Serializable {
     @ApiModelProperty(value = "中间计量-关联清单列表数据")
     private List<MeterInventoryVO> associatedDataInfoList;
 
-    @ApiModelProperty(value = "变更令-关联部位数据")
-    private List<ChangeTokenMeterTask> changeTokenMeterTaskList;
-
-    @ApiModelProperty(value = "变更令-关联部位清单数据")
-    private List<ChangeTokenInventoryTask> changeTokenInventoryTaskList;
+    @ApiModelProperty(value = "变更令-详情信息")
+    private ChangeTokenFormVO changeTokenFormVO;
 
     @ApiModelProperty(value = "附件文件信息")
     private List<AttachmentFormTask> attachmentFormTask;

+ 189 - 31
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -1003,7 +1003,7 @@ public class TaskController extends BladeController {
     @ApiOperation(value = "任务数据信息详情", notes = "传入任务id,数据dataId")
     public R<TaskDataDetailVO> dataDetail(@RequestParam String id, @RequestParam String dataId) {
         if (ObjectUtil.isEmpty(id) || ObjectUtil.isEmpty(dataId)) {
-            throw new ServiceException("任务、数据id不能为空");
+            throw new ServiceException("任务id、数据id不能为空");
         }
         TaskDataDetailVO vo = new TaskDataDetailVO();
         Task task = jdbcTemplate.query("SELECT meter_task_type,form_data_id FROM u_task WHERE id = " + id, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
@@ -1025,17 +1025,25 @@ public class TaskController extends BladeController {
                 vo.setBasicsInfo(startPayMeterFormTask);
 
             } else if (task.getMeterTaskType().equals(4)) {
-                ChangeTokenFormTask changeTokenFormTask = changeTokenFormServiceTask.getById(dataId);
-                if (changeTokenFormTask != null) {
-                    vo.setBasicsInfo(changeTokenFormTask);
-
-                    List<ChangeTokenMeterTask> changeTokenMeterTasks = changeTokenMeterServiceTask.getBaseMapper().selectList(Wrappers.<ChangeTokenMeterTask>lambdaQuery()
-                            .eq(ChangeTokenMeterTask::getChangeTokenId, changeTokenFormTask.getId()));
-                    vo.setChangeTokenMeterTaskList(changeTokenMeterTasks);
-
-                    List<ChangeTokenInventoryTask> changeTokenInventoryTasks = changeTokenInventoryServiceTask.getBaseMapper().selectList(Wrappers.<ChangeTokenInventoryTask>lambdaQuery()
-                            .eq(ChangeTokenInventoryTask::getChangeTokenId, changeTokenFormTask.getId()));
-                    vo.setChangeTokenInventoryTaskList(changeTokenInventoryTasks);
+                ChangeTokenFormVO changeTokenFormVO = changeTokenFormService.getBaseMapper().detailCopy(Long.parseLong(dataId));
+                if (changeTokenFormVO != null) {
+                    List<ChangeNodeVO> nodeListCopy = changeTokenFormService.getBaseMapper().getNodeListCopy(changeTokenFormVO.getContractId(), changeTokenFormVO.getId());
+                    if (nodeListCopy.size() > 0) {
+                        List<ChangeFormVO2> formListCopy = changeTokenFormService.getBaseMapper().getFormListCopy(changeTokenFormVO.getContractId(), changeTokenFormVO.getId());
+                        if (formListCopy.size() > 0) {
+                            Map<Long, List<ChangeFormVO2>> map = formListCopy.stream().collect(Collectors.groupingBy(ChangeFormVO2::getContractMeterId));
+                            for (ChangeNodeVO nodeVO : nodeListCopy) {
+                                List<ChangeFormVO2> vo2s = map.get(nodeVO.getId());
+                                nodeVO.setFormList(vo2s);
+                            }
+                        } else {
+                            for (ChangeNodeVO nodeVO : nodeListCopy) {
+                                nodeVO.setNodeUrl(middleMeterApplyService.getNodeDivide(nodeVO.getId()));
+                            }
+                        }
+                        changeTokenFormVO.setNodeList(nodeListCopy);
+                    }
+                    vo.setChangeTokenFormVO(changeTokenFormVO);
                 }
             }
 
@@ -1048,19 +1056,16 @@ public class TaskController extends BladeController {
         return R.data(200, vo, "操作成功");
     }
 
-    @GetMapping("/data/remove")
+    @PostMapping("/data/remove")
     @ApiOperationSupport(order = 7)
-    @ApiOperation(value = "任务关联的数据删除(清单、变更令删除)", notes = "传入任务id,数据taskDetailId")
-    public R<Object> dataRemove(@RequestParam String id, @RequestParam String taskDetailId) {
-        if (ObjectUtil.isEmpty(id) || ObjectUtil.isEmpty(taskDetailId)) {
-            throw new ServiceException("任务、数据taskDetailId不能为空");
-        }
-
-        Task task = jdbcTemplate.query("SELECT meter_task_type,form_data_id FROM u_task WHERE id = " + id, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
+    @ApiOperation(value = "任务关联的数据删除(清单、变更令删除)", notes = "传入TaskDataRemoveDTO")
+    public R<Object> dataRemove(@RequestBody TaskDataRemoveDTO dto) {
+        String sql = "SELECT meter_task_type,form_data_id FROM u_task WHERE id = ?";
+        Task task = jdbcTemplate.query(sql, new Object[]{dto.getTaskId()}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
         if (task != null) {
             if (task.getMeterTaskType().equals(1)) {
-                /*清单*/
-                InventoryFormApplyTask inventoryFormApplyTask = inventoryFormApplyServiceTask.getById(taskDetailId);
+                /*中间计量清单*/
+                InventoryFormApplyTask inventoryFormApplyTask = inventoryFormApplyServiceTask.getById(dto.getDataId());
                 if (inventoryFormApplyTask != null) {
                     MiddleMeterApplyTask middleMeterApplyTask = middleMeterApplyServiceTask.getById(inventoryFormApplyTask.getMiddleMeterId());
                     if (middleMeterApplyTask != null && inventoryFormApplyServiceTask.removeById(inventoryFormApplyTask.getId())) {
@@ -1082,9 +1087,62 @@ public class TaskController extends BladeController {
 
             } else if (task.getMeterTaskType().equals(4)) {
                 /*变更令*/
-                //TODO
-            }
+                if (Arrays.asList(1, 2).contains(dto.getType())) {
+                    /*获取变更令*/
+                    ChangeTokenFormTask tokenFormTask = changeTokenFormServiceTask.getById(dto.getDataId());
+                    if (dto.getType().equals(1)) { //申请部位删除
+                        ChangeTokenMeterTask changeTokenMeterTask = changeTokenMeterServiceTask.getBaseMapper().selectById(dto.getPrimaryKeyId());
+                        if (changeTokenMeterTask != null) {
+                            /*获取清单信息*/
+                            List<ChangeFormVO2> formListCopy = changeTokenFormService.getBaseMapper().getFormListCopyByMeterId(dto.getContractId(), dto.getDataId(), changeTokenMeterTask.getContractMeterId());
+                            if (formListCopy.size() > 0) {
+                                BigDecimal currentChangeMoneyAll = formListCopy.stream().map(ChangeFormVO2::getCurrentChangeMoney).reduce(BigDecimal.ZERO, BigDecimal::add); //累加
+                                BigDecimal remainingChangeMoney = tokenFormTask.getChangeMoney().subtract(currentChangeMoneyAll); //相减
+
+                                /*修改变更令变更金额*/
+                                String updateSql = "UPDATE s_change_token_form_task SET change_money = ? WHERE id = ?";
+                                Object[] params = {remainingChangeMoney, dto.getDataId()};
+                                jdbcTemplate.update(updateSql, params);
+
+                                /*删除部位信息*/
+                                String delSql_1 = "DELETE FROM s_change_token_meter_task WHERE id = ?";
+                                Object[] delParams_1 = {dto.getPrimaryKeyId()};
+                                jdbcTemplate.update(delSql_1, delParams_1);
+
+                                /*删除部位下的清单信息*/
+                                List<Long> collect = formListCopy.stream().map(ChangeFormVO2::getPrimaryKeyId).collect(Collectors.toList());
+                                String placeholders = collect.stream().map(id -> "?").collect(Collectors.joining(","));
+                                String delSql_2 = "DELETE FROM s_change_token_inventory_task WHERE id IN (" + placeholders + ")";
+                                Object[] delParams_2 = collect.toArray();
+                                jdbcTemplate.update(delSql_2, delParams_2);
+
+                                return R.data(200, remainingChangeMoney, "操作成功");
+                            }
+                        }
 
+                    } else if (dto.getType().equals(2)) { //申请清单删除
+                        /*获取清单信息*/
+                        String sql_1 = "SELECT * FROM s_change_token_inventory_task WHERE id = ?";
+                        Object[] params_1 = {dto.getPrimaryKeyId()};
+                        ChangeTokenInventoryTask changeTokenInventoryTask = jdbcTemplate.query(sql_1, params_1, new BeanPropertyRowMapper<>(ChangeTokenInventoryTask.class)).stream().findAny().orElse(null);
+                        if (changeTokenInventoryTask != null) {
+                            BigDecimal subtract = tokenFormTask.getChangeMoney().subtract(changeTokenInventoryTask.getChangeMoney()); //相减
+
+                            /*修改变更令变更金额*/
+                            String updateSql = "UPDATE s_change_token_form_task SET change_money = ? WHERE id = ?";
+                            Object[] params = {subtract, dto.getDataId()};
+                            jdbcTemplate.update(updateSql, params);
+
+                            /*删除清单信息*/
+                            String delSql = "DELETE FROM s_change_token_inventory_task WHERE id = ?";
+                            Object[] delParams = {dto.getPrimaryKeyId()};
+                            jdbcTemplate.update(delSql, delParams);
+
+                            return R.data(200, subtract, "操作成功");
+                        }
+                    }
+                }
+            }
         }
         return R.fail("操作失败");
     }
@@ -1206,6 +1264,77 @@ public class TaskController extends BladeController {
         return R.fail("操作失败");
     }
 
+    @PostMapping("/data/changeTokenFrom/update")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value = "变更令-基础信息修改", notes = "传入ChangeTokenFormTask")
+    public R<Object> dataChangeTokenFromUpdate(@RequestBody ChangeTokenFormTask obj) {
+        if (changeTokenFormServiceTask.updateById(obj)) {
+            return R.success("操作成功");
+        }
+        return R.fail("操作失败");
+    }
+
+    @PostMapping("/data/changeTokenMeter/update")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value = "变更令-申请部位合同图号修改", notes = "传入TaskChangeTokenMeterUpdateDTO")
+    public R<Object> dataChangeTokenMeterUpdate(@RequestBody TaskChangeTokenMeterUpdateDTO dto) {
+        if (ObjectUtil.isNotEmpty(dto.getPrimaryKeyId())) {
+            String sql = "UPDATE s_change_token_meter_task SET contract_picture = ? WHERE id = ?";
+            Object[] params = {(ObjectUtil.isNotEmpty(dto.getContractPicture()) ? dto.getContractPicture() : null), dto.getPrimaryKeyId()};
+            jdbcTemplate.update(sql, params);
+            return R.success("操作成功");
+        }
+        return R.fail("操作失败");
+    }
+
+    @PostMapping("/data/changeTokenInventory/update")
+    @ApiOperationSupport(order = 11)
+    @ApiOperation(value = "变更令-申请清单修改", notes = "传入TaskChangeTokenInventoryUpdateDTO")
+    public R<Object> dataChangeTokenInventoryUpdate(@RequestBody TaskChangeTokenInventoryUpdateDTO dto) {
+        if (ObjectUtil.isNotEmpty(dto.getPrimaryKeyIdInventory())) {
+            String sql = "SELECT * FROM s_change_token_inventory_task WHERE id = ?";
+            Object[] params = {dto.getPrimaryKeyIdInventory()};
+            ChangeTokenInventoryTask changeTokenInventoryTask = jdbcTemplate.query(sql, params, new BeanPropertyRowMapper<>(ChangeTokenInventoryTask.class)).stream().findAny().orElse(null);
+            if (changeTokenInventoryTask != null) {
+                //变更前数量
+                BigDecimal changeAfterTotal = changeTokenInventoryTask.getChangeBeforeTotal();
+                //变更数量
+                BigDecimal changTotalNow = dto.getChangTotal();
+                //变更后数量
+                BigDecimal afterTotalNow = changeAfterTotal.add(changTotalNow);
+
+                //变更金额(变更数量*单价)
+                BigDecimal changeMoneyNow = changTotalNow.multiply(changeTokenInventoryTask.getCurrentPrice());
+                //变更后金额(变更金额+变更前金额)
+                BigDecimal afterChangeMoneyNow = changeMoneyNow.add(changeTokenInventoryTask.getChangeBeforeMoney());
+
+                /*修改单条清单信息*/
+                String updateSqlInventory = "UPDATE s_change_token_inventory_task SET change_total = ? ,change_after_total = ? , change_money = ? , change_after_money = ? WHERE id = ?";
+                Object[] updateParamsInventory = {changTotalNow, afterTotalNow, changeMoneyNow, afterChangeMoneyNow, dto.getPrimaryKeyIdInventory()};
+                jdbcTemplate.update(updateSqlInventory, updateParamsInventory);
+
+                /*修改部位变更金额*/
+                ChangeTokenMeterTask changeTokenMeterTask = changeTokenMeterServiceTask.getBaseMapper().selectById(dto.getPrimaryKeyIdMeter());
+                List<ChangeFormVO2> formListCopyByMeterId = changeTokenFormService.getBaseMapper().getFormListCopyByMeterId(dto.getContractId(), dto.getDataId(), changeTokenMeterTask.getContractMeterId());
+                BigDecimal sumOfCurrentChangeMoneyByMeterId = formListCopyByMeterId.stream().map(ChangeFormVO2::getCurrentChangeMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal add = changeTokenMeterTask.getChangeMoney().add(sumOfCurrentChangeMoneyByMeterId);
+                String updateSqlMeter = "UPDATE s_change_token_meter_task SET change_money = ? WHERE id = ?";
+                Object[] updateParamsMeter = {add, dto.getPrimaryKeyIdMeter()};
+                jdbcTemplate.update(updateSqlMeter, updateParamsMeter);
+
+                /*修改变更令申请金额*/
+                List<ChangeFormVO2> formListCopyAll = changeTokenFormService.getBaseMapper().getFormListCopy(dto.getContractId(), dto.getDataId());
+                BigDecimal sumOfCurrentChangeMoneyAll = formListCopyAll.stream().map(ChangeFormVO2::getCurrentChangeMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+                String updateSqlForm = "UPDATE s_change_token_form_task SET change_money = ? WHERE id = ?";
+                Object[] updateParamsForm = {sumOfCurrentChangeMoneyAll, dto.getDataId()};
+                jdbcTemplate.update(updateSqlForm, updateParamsForm);
+
+                return R.success("操作成功");
+            }
+        }
+        return R.fail("操作失败");
+    }
+
     @PostMapping("/data/uploadFile")
     @ApiOperationSupport(order = 12)
     @ApiOperation(value = "附件文件上传", notes = "传入TaskDataUploadFileDTO")
@@ -1241,7 +1370,7 @@ public class TaskController extends BladeController {
     @ApiOperation(value = "单条数据同意或驳回", notes = "传入TaskAuditDTO")
     public R<Object> updateStatus(@RequestBody TaskAuditDTO dto) {
         if (ObjectUtil.isEmpty(dto.getDataId()) || ObjectUtil.isEmpty(dto.getTaskId())) {
-            throw new ServiceException("任务、数据id不能为空");
+            throw new ServiceException("任务id、数据id不能为空");
         }
         if (Arrays.asList("1", "2").contains(dto.getAuditStatus())) {
             Task task = jdbcTemplate.query("SELECT meter_task_type FROM u_task WHERE id = " + dto.getTaskId(), new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
@@ -1265,7 +1394,10 @@ public class TaskController extends BladeController {
                             .eq(StartPayMeterFormTask::getId, dto.getDataId()));
 
                 } else if (task.getMeterTaskType().equals(4)) {
-                    //TODO 变更令
+                    changeTokenFormServiceTask.update(Wrappers.<ChangeTokenFormTask>lambdaUpdate()
+                            .set(ChangeTokenFormTask::getStatus, dto.getAuditStatus())
+                            .set(ChangeTokenFormTask::getRepealDesc, ObjectUtil.isNotEmpty(dto.getRepealDesc()) ? dto.getRepealDesc() : null)
+                            .eq(ChangeTokenFormTask::getId, dto.getDataId()));
 
                 }
                 return R.success("操作成功");
@@ -1286,10 +1418,10 @@ public class TaskController extends BladeController {
         /*加锁*/
         String redisValue = bladeRedis.get("meter:approve:" + dto.getTaskId());
         if (StringUtils.isNotEmpty(redisValue) && redisValue.equals("1")) {
-            return R.fail(400, "当前任务已提交审批,请勿重复提交,60秒后再尝试");
+            return R.fail(400, "请勿重复提交,30秒后再尝试");
         }
         bladeRedis.set("meter:approve:" + dto.getTaskId(), "1");
-        bladeRedis.expire("meter:approve:" + dto.getTaskId(), 60);
+        bladeRedis.expire("meter:approve:" + dto.getTaskId(), 30);
 
         String sql_1 = "SELECT * FROM u_task WHERE id = ?";
         Task task = jdbcTemplate.query(sql_1, new Object[]{dto.getTaskId()}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
@@ -1405,7 +1537,7 @@ public class TaskController extends BladeController {
                 startPayMeterFormServiceTask.update(updateEntity, updateWrapper);
             }
         } else if (task.getMeterTaskType().equals(4)) {
-            //TODO 变更令
+            jdbcTemplate.execute("UPDATE s_change_token_form_task SET status = 1 WHERE id IN(" + formDataId + ")");
         }
     }
 
@@ -1465,7 +1597,7 @@ public class TaskController extends BladeController {
                 startPayMeterFormServiceTask.update(updateEntity, updateWrapper);
             }
         } else if (task.getMeterTaskType().equals(4)) {
-            //TODO 变更令
+            jdbcTemplate.execute("UPDATE s_change_token_form_task SET approve_status = 2 WHERE id IN(" + formDataId + ")");
         }
         return this;
     }
@@ -1522,7 +1654,33 @@ public class TaskController extends BladeController {
             startPayMeterFormService.saveBatch(startPayMeterForms, 1000);
 
         } else if (task.getMeterTaskType().equals(4)) {
-            //TODO 变更令
+            for (String dataId : task.getFormDataId().split(",")) {
+                ChangeTokenFormTask changeTokenFormTask = changeTokenFormServiceTask.getById(dataId);
+                if (changeTokenFormTask != null) {
+                    List<ChangeTokenMeterTask> changeTokenMeterTasks = changeTokenMeterServiceTask.getBaseMapper().selectList(Wrappers.<ChangeTokenMeterTask>lambdaQuery()
+                            .eq(ChangeTokenMeterTask::getChangeTokenId, changeTokenFormTask.getId()));
+                    Set<Long> contractMeterIds = changeTokenMeterTasks.stream().map(ChangeTokenMeterTask::getContractMeterId).collect(Collectors.toSet());
+                    if (contractMeterIds.size() > 0) {
+                        List<ChangeTokenInventoryTask> changeTokenInventoryTasks = changeTokenInventoryServiceTask.getBaseMapper().selectList(Wrappers.<ChangeTokenInventoryTask>lambdaQuery()
+                                .eq(ChangeTokenInventoryTask::getChangeTokenId, changeTokenFormTask.getId())
+                                .in(ChangeTokenInventoryTask::getContractMeterId, contractMeterIds));
+                        if (changeTokenInventoryTasks.size() > 0) {
+                            jdbcTemplate.execute("DELETE FROM s_change_token_inventory WHERE change_token_id = " + dataId);
+                            jdbcTemplate.execute("DELETE FROM s_change_token_meter WHERE change_token_id = " + dataId);
+                            jdbcTemplate.execute("DELETE FROM s_change_token_form WHERE id = " + dataId);
+
+                            ChangeTokenForm changeTokenForm = BeanUtil.copyProperties(changeTokenFormTask, ChangeTokenForm.class);
+                            changeTokenFormService.save(changeTokenForm);
+
+                            List<ChangeTokenMeter> changeTokenMeter = BeanUtil.copyProperties(changeTokenMeterTasks, ChangeTokenMeter.class);
+                            changeTokenMeterService.saveBatch(changeTokenMeter, 1000);
+
+                            List<ChangeTokenInventory> changeTokenInventoryList = BeanUtil.copyProperties(changeTokenInventoryTasks, ChangeTokenInventory.class);
+                            changeTokenInventoryService.saveBatch(changeTokenInventoryList, 1000);
+                        }
+                    }
+                }
+            }
         }
         return this;
     }

+ 11 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java

@@ -49,14 +49,25 @@ public interface ChangeTokenFormMapper extends BaseMapper<ChangeTokenForm> {
 
     ChangeTokenFormVO detail(@Param("id") Long id);
 
+    ChangeTokenFormVO detailCopy(@Param("id") Long id);
+
     //获取变更令下节点
     List<ChangeNodeVO> getNodeList(@Param("contractId") Long contractId,@Param("id") Long id);
+
+    List<ChangeNodeVO> getNodeListCopy(@Param("contractId") Long contractId,@Param("id") Long id);
+
     //获取变更令下节点,附带最新施工图金额和变更后金额
     List<ChangeNodeVO> getNodeList2(@Param("id") Long id,@Param("contractId") Long contractId);
     //获取变更令下节点,回退时使用,附带修改前的施工图号
     List<ChangeNodeVO> getNodeList3(@Param("id") Long id,@Param("contractId") Long contractId);
+
     //获取变更令下清单
     List<ChangeFormVO2> getFormList(@Param("contractId") Long contractId,@Param("id") Long id);
+
+    List<ChangeFormVO2> getFormListCopy(@Param("contractId") Long contractId,@Param("id") Long id);
+
+    List<ChangeFormVO2> getFormListCopyByMeterId(@Param("contractId") Long contractId,@Param("id") Long id,@Param("contractMeterId") Long contractMeterId);
+
     //获取变更令下清单,附带最新变更后数量和变更后金额
     List<ChangeFormVO2> getFormList2(@Param("id") Long id,@Param("contractId") Long contractId);
     //获取变更令下清单,回退时使用,附带修改前的变更后数量与变更后金额

+ 41 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml

@@ -178,6 +178,15 @@
         from s_change_token_form ctf
         where id = #{id}
     </select>
+
+    <select id="detailCopy" resultType="org.springblade.meter.vo.ChangeTokenFormVO">
+        select *,
+               (select dict_value from blade_dict where is_deleted = 0 and code = 'meter_change_type' and dict_key = ctf.change_type) as changeTypeName,
+               (select dict_value from blade_dict where is_deleted = 0 and code = 'meter_change_classify' and dict_key = ctf.change_classify) as changeClassifyName
+        from s_change_token_form_task ctf
+        where id = #{id}
+    </select>
+
     <select id="getNodeList" resultType="org.springblade.meter.vo.ChangeNodeVO">
         select ctm.contract_meter_id as id,ctm.node_name,ctm.node_url,before_change_money,
                if(ctm.is_supplement = 1,'是','否') as isSupplementName,
@@ -186,6 +195,16 @@
         where ctm.contract_id = #{contractId} and ctm.is_deleted = 0
           AND ctm.change_token_id = #{id}
     </select>
+
+    <select id="getNodeListCopy" resultType="org.springblade.meter.vo.ChangeNodeVO">
+        select ctm.id AS primaryKeyId,ctm.contract_meter_id as id,ctm.node_name,ctm.node_url,before_change_money,
+               if(ctm.is_supplement = 1,'是','否') as isSupplementName,
+               ctm.contract_picture,ctm.change_money,before_contract_picture
+        from s_change_token_meter_task ctm
+        where ctm.contract_id = #{contractId} and ctm.is_deleted = 0
+          AND ctm.change_token_id = #{id}
+    </select>
+
     <select id="getNodeList2" resultType="org.springblade.meter.vo.ChangeNodeVO">
         select ctm.contract_meter_id as id,ctm.node_name,ctm.node_url,
                (select build_picture_money from s_meter_tree_contract where id = ctm.contract_meter_id) as beforeBuildMoney,
@@ -202,6 +221,7 @@
         where ctm.contract_id = #{contractId} and ctm.is_deleted = 0
           AND ctm.change_token_id = #{id}
     </select>
+
     <select id="getFormList" resultType="org.springblade.meter.vo.ChangeFormVO2">
         select cti.contract_form_id as id,cti.form_number,cti.form_name,cti.current_price,cti.contract_meter_id,
                cti.change_before_total as contractTotal,cti.change_total as currentChangeTotal,
@@ -211,6 +231,27 @@
         where cti.contract_id = #{contractId} and cti.is_deleted = 0
           AND cti.change_token_id = #{id} and is_collect_form = 0
     </select>
+
+    <select id="getFormListCopy" resultType="org.springblade.meter.vo.ChangeFormVO2">
+        select cti.id as primaryKeyId,cti.contract_form_id as id,cti.form_number,cti.form_name,cti.current_price,cti.contract_meter_id,
+               cti.change_before_total as contractTotal,cti.change_total as currentChangeTotal,
+               cti.change_after_total as changeTotal,cti.change_before_money as contractMoney,
+               cti.change_money as currentChangeMoney,cti.change_after_money as changeMoney
+        from s_change_token_inventory_task cti
+        where cti.contract_id = #{contractId} and cti.is_deleted = 0
+          AND cti.change_token_id = #{id} and is_collect_form = 0
+    </select>
+
+    <select id="getFormListCopyByMeterId" resultType="org.springblade.meter.vo.ChangeFormVO2">
+        select cti.id as primaryKeyId,cti.contract_form_id as id,cti.form_number,cti.form_name,cti.current_price,cti.contract_meter_id,
+               cti.change_before_total as contractTotal,cti.change_total as currentChangeTotal,
+               cti.change_after_total as changeTotal,cti.change_before_money as contractMoney,
+               cti.change_money as currentChangeMoney,cti.change_after_money as changeMoney
+        from s_change_token_inventory_task cti
+        where cti.contract_id = #{contractId} and cti.is_deleted = 0
+          AND cti.change_token_id = #{id} AND cti.contract_meter_id = #{contractMeterId} and is_collect_form = 0
+    </select>
+
     <select id="getFormList2" resultType="org.springblade.meter.vo.ChangeFormVO2">
         select cti.contract_form_id as id,cti.form_number,cti.form_name,cti.current_price,cti.contract_meter_id,cti.change_token_id,
                cti.change_before_total as contractTotal,cti.change_total as currentChangeTotal,