Browse Source

Merge remote-tracking branch 'origin/master'

qianxb 1 year ago
parent
commit
7af2231f8e

+ 13 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterMidPayItemContractDTO.java

@@ -0,0 +1,13 @@
+package org.springblade.meter.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.meter.entity.MeterMidPayItemContract;
+
+@Data
+public class MeterMidPayItemContractDTO extends MeterMidPayItemContract {
+
+    @ApiModelProperty(value = "选择的id")
+    private String recordId;
+
+}

+ 13 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterMidPayItemProjectDTO.java

@@ -0,0 +1,13 @@
+package org.springblade.meter.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.meter.entity.MeterMidPayItemProject;
+
+@Data
+public class MeterMidPayItemProjectDTO extends MeterMidPayItemProject {
+
+    @ApiModelProperty(value = "选择的id")
+    private String recordId;
+
+}

+ 0 - 3
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemProject.java

@@ -57,9 +57,6 @@ public class MeterMidPayItemProject extends BaseEntity {
     @ApiModelProperty(value = "排序")
     private Integer sort;
 
-    @ApiModelProperty(value = "是否被引用 0=否 1=是")
-    private Integer isReferenced;
-
     @ApiModelProperty(value = "备注")
     private String remarks;
 

+ 0 - 3
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MeterMidPayItemSystem.java

@@ -54,9 +54,6 @@ public class MeterMidPayItemSystem extends BaseEntity {
     @ApiModelProperty(value = "排序")
     private Integer sort;
 
-    @ApiModelProperty(value = "是否被引用 0=否 1=是")
-    private Integer isReferenced;
-
     @ApiModelProperty(value = "备注")
     private String remarks;
 

+ 12 - 0
blade-service/blade-business/src/main/java/org/springblade/business/controller/InformationWriteQueryController.java

@@ -1086,6 +1086,12 @@ public class InformationWriteQueryController extends BladeController {
                         //获取当前任务的环节审批人
                         List<TaskParallel> linkList = this.taskClient.queryApprovalUserByTaskId(task.getProcessInstanceId());
 
+                        /*修改任务副表u_task_parallel全部废除*/
+                        List<Long> collect = linkList.stream().map(TaskParallel::getId).collect(Collectors.toList());
+                        if (collect.size() > 0) {
+                            jdbcTemplate.execute("UPDATE u_task_parallel SET status = 3 WHERE id in(" + StringUtils.join(collect, ",") + ")");
+                        }
+
                         for (InformationQuery query : queries) {
                             if (StringUtils.isNotEmpty(query.getFileUserIdAndName())) {
                                 String[] userArray = query.getFileUserIdAndName().split(",");
@@ -1180,6 +1186,12 @@ public class InformationWriteQueryController extends BladeController {
                     }
                 }
 
+                /*修改主表u_task(全部废除)*/
+                List<Long> collect = taskList.stream().map(Task::getId).collect(Collectors.toList());
+                if (collect.size() > 0) {
+                    jdbcTemplate.execute("UPDATE u_task SET status = 3 WHERE id in(" + StringUtils.join(collect, ",") + ")");
+                }
+
                 //修改试验任务状态为未上报
                 String sql;
                 if (StringUtils.isNotEmpty(primaryKeyId)) {

+ 109 - 50
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MidPayItemController.java

@@ -18,6 +18,8 @@ import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.meter.dto.MeterMidPayItemContractDTO;
+import org.springblade.meter.dto.MeterMidPayItemProjectDTO;
 import org.springblade.meter.entity.*;
 import org.springblade.meter.service.MidPayItemContractService;
 import org.springblade.meter.service.MidPayItemProjectService;
@@ -31,6 +33,7 @@ import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @RestController
@@ -149,14 +152,36 @@ public class MidPayItemController extends BladeController {
 
     @PostMapping("/system/list")
     @ApiOperationSupport(order = 5)
-    @ApiOperation(value = "系统中期支付项列表", notes = "type=0(未被引用),type=1(已引用),type=空(全部)")
-    public R<List<MeterMidPayItemSystem>> systemList(@RequestParam String type) {
-        LambdaQueryWrapper<MeterMidPayItemSystem> queryWrapper = Wrappers.lambdaQuery();
-        if (type != null) {
-            queryWrapper.eq(MeterMidPayItemSystem::getIsReferenced, type);
+    @ApiOperation(value = "系统中期支付项列表", notes = "传入项目id、选择的recordId(系统级id)")
+    public R<List<MeterMidPayItemSystem>> systemList(@RequestParam String projectId, String recordId) {
+        /*后管添加汇总项*/
+        if (ObjectUtil.isNotEmpty(recordId) && ObjectUtil.isNotEmpty(projectId)) {
+            List<MeterMidPayItemSystem> meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery()
+                    .ne(MeterMidPayItemSystem::getId, recordId)
+                    .orderByAsc(MeterMidPayItemSystem::getCreateTime)).stream().sorted(
+                    Comparator.nullsLast(
+                            Comparator.<MeterMidPayItemSystem, Integer>comparing(
+                                    systemVO -> {
+                                        Integer sortValue = systemVO.getSort();
+                                        return sortValue != null ? sortValue : Integer.MAX_VALUE;
+                                    }))
+                            .thenComparing(
+                                    Comparator.nullsLast(Comparator.comparing(MeterMidPayItemSystem::getCreateTime)))
+            ).collect(Collectors.toList());
+
+            return R.data(meterMidPayItemSystems);
         }
-        queryWrapper.orderByAsc(MeterMidPayItemSystem::getCreateTime);
-        return R.data(payItemSystemService.getBaseMapper().selectList(queryWrapper));
+
+        /*计量客户端项目引用系统*/
+        List<MeterMidPayItemProject> meterMidPayItemProjects = payItemProjectService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemProject>lambdaQuery().eq(MeterMidPayItemProject::getProjectId, projectId));
+        List<Long> collect = meterMidPayItemProjects.stream().map(MeterMidPayItemProject::getDataSourceId).collect(Collectors.toList());
+        List<MeterMidPayItemSystem> meterMidPayItemSystems;
+        if (collect.size() > 0) {
+            meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery().notIn(MeterMidPayItemSystem::getId, collect).orderByAsc(MeterMidPayItemSystem::getCreateTime));
+        } else {
+            meterMidPayItemSystems = payItemSystemService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemSystem>lambdaQuery().orderByAsc(MeterMidPayItemSystem::getCreateTime));
+        }
+        return R.data(meterMidPayItemSystems);
     }
 
     @GetMapping("/project/detail")
@@ -217,14 +242,8 @@ public class MidPayItemController extends BladeController {
                 }
             }
             if (meterMidPayItemProjects.size() > 0) {
-                /*批量修改状态为被引用*/
-                UpdateWrapper<MeterMidPayItemSystem> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.in("id", systemIds);
-                MeterMidPayItemSystem updateEntity = new MeterMidPayItemSystem();
-                updateEntity.setIsReferenced(1);
-                boolean b1 = payItemSystemService.update(updateEntity, updateWrapper);
-                boolean b2 = payItemProjectService.saveBatch(meterMidPayItemProjects, 1000);
-                if (b1 && b2) {
+                boolean b1 = payItemProjectService.saveBatch(meterMidPayItemProjects, 1000);
+                if (b1) {
                     return R.success("操作成功");
                 }
             }
@@ -243,10 +262,7 @@ public class MidPayItemController extends BladeController {
     @ApiOperationSupport(order = 9)
     @ApiOperation(value = "项目中期支付项删除", notes = "传入id")
     public R<Object> projectRemove(@RequestParam String id) {
-        MeterMidPayItemProject obj = payItemProjectService.getById(id);
-        if (obj != null && ObjectUtil.isNotEmpty(obj.getDataSourceId())) {
-            /*修改回未被引用状态*/
-            payItemSystemService.update(Wrappers.<MeterMidPayItemSystem>lambdaUpdate().set(MeterMidPayItemSystem::getIsReferenced, 0).eq(MeterMidPayItemSystem::getId, obj.getDataSourceId()));
+        if (ObjectUtil.isNotEmpty(id)) {
             payItemProjectService.removeById(id);
             jdbcTemplate.execute("DELETE FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id);
             return R.success("操作成功");
@@ -256,23 +272,45 @@ public class MidPayItemController extends BladeController {
 
     @PostMapping("/project/page")
     @ApiOperationSupport(order = 10)
-    @ApiOperation(value = "项目中期支付项分页", notes = "传入MeterMidPayItemProject、Query")
-    public R<IPage<MeterMidPayItemProjectVO>> projectPage(@RequestBody MeterMidPayItemProject meterMidPayItemProject, @RequestBody Query query) {
-        IPage<MeterMidPayItemProject> pages = payItemProjectService.page(Condition.getPage(query), Condition.getQueryWrapper(meterMidPayItemProject));
+    @ApiOperation(value = "项目中期支付项分页", notes = "传入MeterMidPayItemProjectDTO、Query")
+    public R<IPage<MeterMidPayItemProjectVO>> projectPage(@RequestBody MeterMidPayItemProjectDTO dto, @RequestBody Query query) {
+        IPage<MeterMidPayItemProject> pages = payItemProjectService.page(Condition.getPage(query), Condition.getQueryWrapper(dto));
 
         Map<String, String> meterPayTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
         Map<String, String> meterPayAppTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_applicable_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
 
+        /*如果是添加汇总的请求,那么剔除已被引用过的*/
+        Map<Long, MeterMidPayItemRelation> collect = new HashMap<>();
+        if (query.getSize().equals(10000) && ObjectUtil.isNotEmpty(dto.getRecordId())) {
+            List<MeterMidPayItemRelation> relationList = jdbcTemplate.query("SELECT * FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + dto.getRecordId(), new BeanPropertyRowMapper<>(MeterMidPayItemRelation.class));
+            collect = relationList.stream().collect(Collectors.toMap(MeterMidPayItemRelation::getMidPayIdRelation, Function.identity()));
+        }
+        Map<Long, MeterMidPayItemRelation> finalCollect = collect;
+
         List<MeterMidPayItemProjectVO> sortResult = pages.getRecords().stream()
                 .map(project -> {
                     MeterMidPayItemProjectVO vo = new MeterMidPayItemProjectVO();
                     BeanUtil.copyProperties(project, vo);
+
+                    /*剔除本身*/
+                    if (query.getSize().equals(10000) && ObjectUtil.isNotEmpty(dto.getRecordId()) && dto.getRecordId().equals(vo.getId().toString())) {
+                        return null;
+                    }
+                    /*剔除已引用过的*/
+                    if (finalCollect.size() > 0) {
+                        MeterMidPayItemRelation orDefault = finalCollect.getOrDefault(vo.getId(), null);
+                        if (orDefault != null) {
+                            return null;
+                        }
+                    }
+
                     if (ObjectUtil.isNotEmpty(project.getPayApplicableType())) {
                         vo.setPayApplicableTypeName(meterPayAppTypeMap.getOrDefault(project.getPayApplicableType().toString(), null));
                     }
                     if (ObjectUtil.isNotEmpty(project.getPayType())) {
                         vo.setPayTypeName(meterPayTypeMap.getOrDefault(project.getPayType().toString(), null));
                     }
+
                     return vo;
                 })
                 .sorted(
@@ -288,8 +326,10 @@ public class MidPayItemController extends BladeController {
                                         Comparator.nullsLast(Comparator.comparing(MeterMidPayItemProjectVO::getCreateTime))
                                 )
                 )
+                .filter(Objects::nonNull)
                 .collect(Collectors.toList());
 
+
         IPage<MeterMidPayItemProjectVO> resultPage = new Page<>();
         resultPage.setTotal(pages.getTotal());
         resultPage.setCurrent(pages.getCurrent());
@@ -300,19 +340,25 @@ public class MidPayItemController extends BladeController {
 
     @PostMapping("/project/list")
     @ApiOperationSupport(order = 11)
-    @ApiOperation(value = "项目中期支付项列表", notes = "传入type=0(未被引用),type=1(已引用),type=空(全部)、projectId")
-    public R<List<MeterMidPayItemProjectVO>> projectList(@RequestParam String type, @RequestParam String projectId) {
+    @ApiOperation(value = "项目中期支付项列表", notes = "传入合同段contractId、项目projectId")
+    public R<List<MeterMidPayItemProjectVO>> projectList(@RequestParam String contractId, @RequestParam String projectId) {
         Map<String, String> meterPayTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
         Map<String, String> meterPayAppTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_applicable_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
 
-        LambdaQueryWrapper<MeterMidPayItemProject> queryWrapper = Wrappers.lambdaQuery();
-        if (type != null) {
-            queryWrapper.eq(MeterMidPayItemProject::getIsReferenced, type);
+        List<MeterMidPayItemContract> meterMidPayItemContracts = payItemContractService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemContract>lambdaQuery().eq(MeterMidPayItemContract::getContractId, contractId));
+        List<Long> collect = meterMidPayItemContracts.stream().map(MeterMidPayItemContract::getDataSourceId).collect(Collectors.toList());
+
+        List<MeterMidPayItemProject> meterMidPayItemProjects;
+        if (collect.size() > 0) {
+            meterMidPayItemProjects = payItemProjectService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemProject>lambdaQuery()
+                    .eq(MeterMidPayItemProject::getProjectId, projectId)
+                    .notIn(MeterMidPayItemProject::getId, collect)
+                    .orderByAsc(MeterMidPayItemProject::getCreateTime));
+        } else {
+            meterMidPayItemProjects = payItemProjectService.getBaseMapper().selectList(Wrappers.<MeterMidPayItemProject>lambdaQuery()
+                    .eq(MeterMidPayItemProject::getProjectId, projectId)
+                    .orderByAsc(MeterMidPayItemProject::getCreateTime));
         }
-        queryWrapper.eq(MeterMidPayItemProject::getProjectId, projectId);
-        queryWrapper.orderByAsc(MeterMidPayItemProject::getCreateTime);
-
-        List<MeterMidPayItemProject> meterMidPayItemProjects = payItemProjectService.getBaseMapper().selectList(queryWrapper);
 
         List<MeterMidPayItemProjectVO> VOS = BeanUtil.copyProperties(meterMidPayItemProjects, MeterMidPayItemProjectVO.class);
         for (MeterMidPayItemProjectVO vo : VOS) {
@@ -386,14 +432,8 @@ public class MidPayItemController extends BladeController {
                 }
             }
             if (meterMidPayItemContracts.size() > 0) {
-                /*批量修改状态为被引用*/
-                UpdateWrapper<MeterMidPayItemProject> updateWrapper = new UpdateWrapper<>();
-                updateWrapper.in("id", projectIds);
-                MeterMidPayItemProject updateEntity = new MeterMidPayItemProject();
-                updateEntity.setIsReferenced(1);
-                boolean b1 = payItemProjectService.update(updateEntity, updateWrapper);
-                boolean b2 = payItemContractService.saveBatch(meterMidPayItemContracts, 1000);
-                if (b1 && b2) {
+                boolean b1 = payItemContractService.saveBatch(meterMidPayItemContracts, 1000);
+                if (b1) {
                     return R.success("操作成功");
                 }
             }
@@ -412,14 +452,10 @@ public class MidPayItemController extends BladeController {
     @ApiOperationSupport(order = 15)
     @ApiOperation(value = "合同段中期支付项删除", notes = "传入id")
     public R<Object> contractRemove(@RequestParam String id) {
-        MeterMidPayItemContract obj = payItemContractService.getById(id);
-        if (obj != null && ObjectUtil.isNotEmpty(obj.getDataSourceId())) {
-            /*修改回未被引用状态*/
-            if (payItemProjectService.update(Wrappers.<MeterMidPayItemProject>lambdaUpdate().set(MeterMidPayItemProject::getIsReferenced, 0).eq(MeterMidPayItemProject::getId, obj.getDataSourceId()))) {
-                if (payItemContractService.removeById(id)) {
-                    jdbcTemplate.execute("DELETE FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id);
-                    return R.success("操作成功");
-                }
+        if (ObjectUtil.isNotEmpty(id)) {
+            if (payItemContractService.removeById(id)) {
+                jdbcTemplate.execute("DELETE FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + id);
+                return R.success("操作成功");
             }
         }
         return R.fail("操作失败");
@@ -427,23 +463,45 @@ public class MidPayItemController extends BladeController {
 
     @PostMapping("/contract/page")
     @ApiOperationSupport(order = 16)
-    @ApiOperation(value = "合同段中期支付项分页", notes = "传入MeterMidPayItemContract、Query")
-    public R<IPage<MeterMidPayItemContractVO>> contractPage(@RequestBody MeterMidPayItemContract meterMidPayItemContract, @RequestBody Query query) {
-        IPage<MeterMidPayItemContract> pages = payItemContractService.page(Condition.getPage(query), Condition.getQueryWrapper(meterMidPayItemContract));
+    @ApiOperation(value = "合同段中期支付项分页", notes = "传入MeterMidPayItemContractDTO、Query")
+    public R<IPage<MeterMidPayItemContractVO>> contractPage(@RequestBody MeterMidPayItemContractDTO dto, @RequestBody Query query) {
+        IPage<MeterMidPayItemContract> pages = payItemContractService.page(Condition.getPage(query), Condition.getQueryWrapper(dto));
 
         Map<String, String> meterPayTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
         Map<String, String> meterPayAppTypeMap = jdbcTemplate.query("SELECT dict_key,dict_value FROM blade_dict WHERE is_deleted = 0 AND code = 'meter_pay_applicable_type'", new BeanPropertyRowMapper<>(Dict.class)).stream().collect(Collectors.toMap(Dict::getDictKey, Dict::getDictValue));
 
+        /*如果是添加汇总的请求,那么剔除已被引用过的*/
+        Map<Long, MeterMidPayItemRelation> collect = new HashMap<>();
+        if (query.getSize().equals(100000) && ObjectUtil.isNotEmpty(dto.getRecordId())) {
+            List<MeterMidPayItemRelation> relationList = jdbcTemplate.query("SELECT * FROM s_meter_mid_pay_item_relation WHERE mid_pay_id = " + dto.getRecordId(), new BeanPropertyRowMapper<>(MeterMidPayItemRelation.class));
+            collect = relationList.stream().collect(Collectors.toMap(MeterMidPayItemRelation::getMidPayIdRelation, Function.identity()));
+        }
+        Map<Long, MeterMidPayItemRelation> finalCollect = collect;
+
         List<MeterMidPayItemContractVO> sortResult = pages.getRecords().stream()
                 .map(contract -> {
                     MeterMidPayItemContractVO vo = new MeterMidPayItemContractVO();
                     BeanUtil.copyProperties(contract, vo);
+
+                    /*剔除本身*/
+                    if (query.getSize().equals(100000) && ObjectUtil.isNotEmpty(dto.getRecordId()) && dto.getRecordId().equals(vo.getId().toString())) {
+                        return null;
+                    }
+                    /*剔除已引用过的*/
+                    if (finalCollect.size() > 0) {
+                        MeterMidPayItemRelation orDefault = finalCollect.getOrDefault(vo.getId(), null);
+                        if (orDefault != null) {
+                            return null;
+                        }
+                    }
+
                     if (ObjectUtil.isNotEmpty(contract.getPayApplicableType())) {
                         vo.setPayApplicableTypeName(meterPayAppTypeMap.getOrDefault(contract.getPayApplicableType().toString(), null));
                     }
                     if (ObjectUtil.isNotEmpty(contract.getPayType())) {
                         vo.setPayTypeName(meterPayTypeMap.getOrDefault(contract.getPayType().toString(), null));
                     }
+
                     return vo;
                 })
                 .sorted(
@@ -459,6 +517,7 @@ public class MidPayItemController extends BladeController {
                                         Comparator.nullsLast(Comparator.comparing(MeterMidPayItemContractVO::getCreateTime))
                                 )
                 )
+                .filter(Objects::nonNull)
                 .collect(Collectors.toList());
 
         IPage<MeterMidPayItemContractVO> resultPage = new Page<>();

+ 13 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -1288,6 +1288,19 @@ public class TaskController extends BladeController {
         if (task != null) {
             check(task);
 
+            MaterialMeterFormTask old = materialMeterFormServiceTask.getById(obj.getId());
+            if (ObjectUtil.isEmpty(obj.getPrice())) {
+                obj.setPrice(old.getPrice());
+            }
+            if (ObjectUtil.isEmpty(obj.getMeterAmount())){
+                obj.setMeterAmount(old.getMeterAmount());
+            }
+
+            BigDecimal price = obj.getPrice();
+            BigDecimal meterAmount = obj.getMeterAmount();
+            BigDecimal meterMoney = price.multiply(meterAmount);
+            obj.setMeterMoney(meterMoney);
+
             if (materialMeterFormServiceTask.updateById(obj)) {
                 return R.success("操作成功");
             }