From e2fcf7a96c8ca34ca4cf13cdb3b49c90447c020a Mon Sep 17 00:00:00 2001 From: pengjie <17373303529@163.com> Date: Fri, 16 Aug 2024 18:43:04 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E6=9C=AC=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BaseDataController.java | 12 +++--- .../controller/CostCalculateController.java | 16 ++------ .../CostContractSettlementController.java | 2 +- .../service/impl/CostBudgetServiceImpl.java | 39 ++++++++++++------- .../impl/CostCalculateServiceImpl.java | 16 +++++--- .../service/impl/CostContractServiceImpl.java | 12 +++--- .../service/impl/CostSubjectServiceImpl.java | 23 ++++++++++- 7 files changed, 75 insertions(+), 45 deletions(-) diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java index 5bc1bff9f..e4191e487 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/BaseDataController.java @@ -234,12 +234,12 @@ public class BaseDataController { String encryptUserid = rsa.encryptBase64("1",CharsetUtil.CHARSET_UTF_8,KeyType.PublicKey); //调用ECOLOGY系统接口 - String data = HttpRequest.post(address + api) - .header("appid",APPID) - .header("token",token) - .header("userid",encryptUserid) - .body(jsonParams) - .execute().body(); + String data = HttpRequest.post(address + api) + .header("appid",APPID) + .header("token",token) + .header("userid",encryptUserid) + .body(jsonParams) + .execute().body(); System.out.println("testRestful():"+data); return data; } diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostCalculateController.java b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostCalculateController.java index c51034ac4..4d9bb8bec 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostCalculateController.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostCalculateController.java @@ -10,6 +10,7 @@ import com.zhgd.xmgl.modules.cost.entity.CostSubject; import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo; import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.util.PageUtil; +import io.loadkit.Res; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -168,19 +169,8 @@ public class CostCalculateController { @ApiImplicitParam(name = "id", value = "成本核算ID", paramType = "body", required = true, dataType = "Integer") @PostMapping(value = "/delete") public Result delete(@RequestBody CostCalculate costCalculate) { - Result result = new Result(); - CostCalculate costCalculateEntity = costCalculateService.getById(costCalculate.getId()); - if (costCalculateEntity == null) { - result.error500("未找到对应实体"); - } else { - boolean ok = costCalculateService.removeById(costCalculate.getId()); - if (ok) { - result.success("删除成功!"); - } else { - result.success("操作失败!"); - } - } - return result; + costCalculateService.removeById(costCalculate.getId()); + return Result.ok(); } /** diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractSettlementController.java b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractSettlementController.java index b63bc6d3a..f98ee095e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractSettlementController.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostContractSettlementController.java @@ -128,7 +128,7 @@ public class CostContractSettlementController { String typeName = object.getString("type"); for (int i = 0; i < type.length; i++) { if (type[i].equals(typeName)) { - costContractSettlement.setType(i); + costContractSettlement.setType(i + 1); } } costContractSettlement.setTotalCost(object.getString("totalCost")); diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java index 6837c6afc..8c1d9ebe5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java @@ -42,6 +42,8 @@ public class CostBudgetServiceImpl extends ServiceImpl list = costSubjectService.list(wrapper); List filter = list.stream().filter(l -> StringUtils.isNotBlank(l.getName())).collect(Collectors.toList()); List dtoList = convert(filter); + List total = list.stream().filter(l -> StringUtils.isBlank(l.getName())).collect(Collectors.toList()); + dtoList.addAll(convert(total)); if (dtoList.size() > 0) { List allList = costSubjectService.list(); List allDtoList = convert(allList); @@ -49,8 +51,6 @@ public class CostBudgetServiceImpl extends ServiceImpl total = list.stream().filter(l -> StringUtils.isBlank(l.getName())).collect(Collectors.toList()); - dtoList.addAll(convert(total)); return dtoList; } @@ -100,25 +100,38 @@ public class CostBudgetServiceImpl extends ServiceImpl collect = allBudgetList.stream().filter(c -> subIds.contains(c.getSubjectId().toString())).collect(Collectors.toList()); - BigDecimal budgetCost = collect.stream().map(s -> new BigDecimal(s.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add); - BigDecimal actualCost = collect.stream().map(s -> new BigDecimal(s.getActualCost())).reduce(BigDecimal.ZERO, BigDecimal::add); - budget1.setBudgetCost(budgetCost.toString()); - budget1.setActualCost(actualCost.toString()); - if (actualCost.toString().equals("0")) { - budget1.setCostDifference("0"); - } else { - BigDecimal ratio1 = actualCost.subtract(budgetCost).divide(budgetCost, 2, BigDecimal.ROUND_HALF_UP); - budget1.setCostDifference(ratio1.multiply(new BigDecimal(100)).toString()); - } - this.updateById(budget1); + calculatePrice(budget1, collect); } } + + List parentList = costSubjectService.list(Wrappers.lambdaQuery() + .eq(CostSubject::getType, costSubject.getType()) + .eq(CostSubject::getParentId, 0)); + List budParentList = this.list(Wrappers.lambdaQuery() + .in(CostBudget::getSubjectId, parentList.stream().filter(p -> StringUtils.isNotBlank(p.getName())).map(p -> p.getId()).collect(Collectors.toList()))); + CostBudget total = this.getOne(Wrappers.lambdaQuery().eq(CostBudget::getProjectSn, budget.getProjectSn()) + .eq(CostBudget::getSubjectId, parentList.stream().filter(p -> StringUtils.isBlank(p.getName())).collect(Collectors.toList()).get(0))); + calculatePrice(total, budParentList); return true; } else { return false; } } + private void calculatePrice(CostBudget parent, List children) { + BigDecimal budgetCost = children.stream().map(s -> new BigDecimal(s.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal actualCost = children.stream().map(s -> new BigDecimal(s.getActualCost())).reduce(BigDecimal.ZERO, BigDecimal::add); + parent.setBudgetCost(budgetCost.toString()); + parent.setActualCost(actualCost.toString()); + if (actualCost.toString().equals("0")) { + parent.setCostDifference("0"); + } else { + BigDecimal ratio1 = actualCost.subtract(budgetCost).divide(budgetCost, 2, BigDecimal.ROUND_HALF_UP); + parent.setCostDifference(ratio1.multiply(new BigDecimal(100)).toString()); + } + this.updateById(parent); + } + private void addChildren(List list, List resultList) { for (CostBudgetDto costBudgetDto : list) { resultList.add(costBudgetDto); diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostCalculateServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostCalculateServiceImpl.java index 6ecea7f65..09d1f3aba 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostCalculateServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostCalculateServiceImpl.java @@ -47,8 +47,8 @@ public class CostCalculateServiceImpl extends ServiceImpl total = list.stream().filter(l -> StringUtils.isBlank(l.getName())).collect(Collectors.toList()); - dtoList.addAll(convert(total)); +// List total = list.stream().filter(l -> StringUtils.isBlank(l.getName())).collect(Collectors.toList()); +// dtoList.addAll(convert(total)); return dtoList; } @@ -73,14 +73,20 @@ public class CostCalculateServiceImpl extends ServiceImpllambdaQuery() .eq(CostCalculate::getSubjectId, costSubject1.getId()) .eq(CostCalculate::getProjectSn, calculate.getProjectSn())); - List collect = allBudgetList.stream().filter(c -> subIds.contains(c.getSubjectId().toString())).collect(Collectors.toList()); + if(calculate1 == null) { + calculate1 = new CostCalculate(); + } + List collect = allBudgetList.stream().filter(c -> subIds.contains(c.getSubjectId().toString()) + && StringUtils.isNotBlank(c.getQuantity())).collect(Collectors.toList()); BigDecimal quantity = collect.stream().map(s -> new BigDecimal(s.getQuantity())).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal unitPrice = collect.stream().map(s -> new BigDecimal(s.getUnitPrice())).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal totalPrice = collect.stream().map(s -> new BigDecimal(s.getTotalPrice())).reduce(BigDecimal.ZERO, BigDecimal::add); calculate1.setQuantity(quantity.toString()); calculate1.setTotalPrice(totalPrice.toString()); - calculate1.setUnitPrice(unitPrice.divide(new BigDecimal(subIds.size()), 2, BigDecimal.ROUND_HALF_UP).toString()); - this.updateById(calculate1); + calculate1.setUnitPrice(unitPrice.divide(new BigDecimal(collect.size()), 2, BigDecimal.ROUND_HALF_UP).toString()); + calculate1.setSubjectId(costSubject1.getId()); + calculate1.setProjectSn(calculate.getProjectSn()); + this.saveOrUpdate(calculate1); } } return true; diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractServiceImpl.java index 79edd88e2..d5fa056d8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractServiceImpl.java @@ -32,11 +32,13 @@ public class CostContractServiceImpl extends ServiceImpl pageList(Page page, Wrapper wrapper) { Page result = this.page(page, wrapper); List list = result.getRecords().stream().map(r -> r.getId()).collect(Collectors.toList()); - List settlements = costContractSettlementService.list(Wrappers.lambdaQuery() - .in(CostContractSettlement::getContractId, list)); - for (CostContract record : result.getRecords()) { - List typeList = settlements.stream().filter(s -> s.getContractId() == record.getId()).map(s -> s.getType()).collect(Collectors.toList()); - record.setSettlementState(typeList.contains(3) ? 1 : 0); + if (list.size() > 0) { + List settlements = costContractSettlementService.list(Wrappers.lambdaQuery() + .in(CostContractSettlement::getContractId, list)); + for (CostContract record : result.getRecords()) { + List typeList = settlements.stream().filter(s -> s.getContractId() == record.getId()).map(s -> s.getType()).collect(Collectors.toList()); + record.setSettlementState(typeList.contains(3) ? 1 : 0); + } } return result; } diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectServiceImpl.java index 5572391ab..49b540a27 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectServiceImpl.java @@ -1,7 +1,11 @@ package com.zhgd.xmgl.modules.cost.service.impl; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.xmgl.modules.cost.dto.CostBulletinDto; @@ -10,10 +14,12 @@ import com.zhgd.xmgl.modules.cost.entity.CostSubject; import com.zhgd.xmgl.modules.cost.mapper.CostSubjectMapper; import com.zhgd.xmgl.modules.cost.service.ICostContractService; import com.zhgd.xmgl.modules.cost.service.ICostSubjectService; +import com.zhgd.xmgl.modules.project.entity.ProgressPanoramaNodePlan; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.security.entity.UserInfo; import com.zhgd.xmgl.security.util.SecurityUtils; +import org.apache.commons.collections.MapUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -83,11 +89,24 @@ public class CostSubjectServiceImpl extends ServiceImpl getCostBulletin(Map map) { + String projectSn = MapUtils.getString(map, "projectSn"); + String month = MapUtils.getString(map, "month"); List contractList = costContractService.list(Wrappers.lambdaQuery()); - List projects = projectService.list(Wrappers.lambdaQuery() - .eq(Project::getNature, 1)); + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery().eq(Project::getNature, 1); + if (StringUtils.isNotBlank(projectSn)) { + wrapper.eq(Project::getProjectSn, projectSn); + } + if (StringUtils.isNotBlank(month)) { + DateTime time = DateUtil.parse(month + "-01", "yyyy-MM-dd"); + wrapper.ge(Project::getCompleteWorkDate, DateUtil.beginOfMonth(time)) + .le(Project::getCompleteWorkDate, DateUtil.endOfMonth(time)); + } + List projects = projectService.list(wrapper); List costBulletinDtoList = new ArrayList<>(); for (Project project : projects) { + if (StringUtils.isBlank(project.getProjectAcreage()) || StringUtils.isBlank(project.getSaleAcreage())) { + continue; + } List projectContract = contractList.stream().filter(c -> c.getProjectSn().equals(project.getProjectSn())).collect(Collectors.toList()); BigDecimal total = projectContract.stream().map(p -> p.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add); CostBulletinDto costBulletinDto = new CostBulletinDto();