|
@@ -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<>();
|