From 539c86b9699edbbaa11a0df6b862f0fc6fb7365c Mon Sep 17 00:00:00 2001
From: guoshengxiong <1923636941@qq.com>
Date: Tue, 10 Sep 2024 19:00:48 +0800
Subject: [PATCH] =?UTF-8?q?=E6=88=90=E6=9C=AC=E7=A7=91=E7=9B=AE=E6=9D=83?=
=?UTF-8?q?=E9=99=90=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 7 +-
.../controller/OrganizationJobController.java | 4 +-
.../cost/controller/CostBudgetController.java | 2 +
.../controller/CostSubjectController.java | 113 ++++++++++++------
.../modules/cost/dto/CompanyProjectDto.java | 4 +
.../xmgl/modules/cost/entity/CostBudget.java | 5 +
.../xmgl/modules/cost/entity/CostSubject.java | 34 +++++-
.../entity/CostSubjectToOrganizationJob.java | 38 ++++++
.../entity/dto/BindOrganizationJobDto.java | 14 +++
.../CostSubjectToOrganizationJobMapper.java | 19 +++
.../cost/mapper/xml/CostSubjectMapper.xml | 2 +-
.../CostSubjectToOrganizationJobMapper.xml | 5 +
.../cost/service/ICostSubjectService.java | 3 +-
.../ICostSubjectToOrganizationJobService.java | 53 ++++++++
.../impl/CostContractPlanServiceImpl.java | 18 +--
.../service/impl/CostSubjectServiceImpl.java | 50 ++++++--
...stSubjectToOrganizationJobServiceImpl.java | 88 ++++++++++++++
.../service/impl/ProjectServiceImpl.java | 1 +
18 files changed, 390 insertions(+), 70 deletions(-)
create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubjectToOrganizationJob.java
create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/entity/dto/BindOrganizationJobDto.java
create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostSubjectToOrganizationJobMapper.java
create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectToOrganizationJobMapper.xml
create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectToOrganizationJobService.java
create mode 100644 src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectToOrganizationJobServiceImpl.java
diff --git a/pom.xml b/pom.xml
index 3ad970605..7526af59c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -294,16 +294,17 @@
-
-
+
+
io.springfox
diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OrganizationJobController.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OrganizationJobController.java
index 5f9faa920..8abe76b2b 100644
--- a/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OrganizationJobController.java
+++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/controller/OrganizationJobController.java
@@ -47,7 +47,7 @@ public class OrganizationJobController {
@PostMapping(value = "/selectList")
public Result> selectList(@RequestBody Map map) {
QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(OrganizationJob::getSn, MapUtils.getString(map, "sn"));
+// queryWrapper.lambda().eq(OrganizationJob::getSn, MapUtils.getString(map, "sn"));
List pageList = organizationJobService.list(queryWrapper);
return Result.success(pageList);
}
@@ -61,7 +61,7 @@ public class OrganizationJobController {
@PostMapping(value = "/selectPage")
public Result> selectPage(@RequestBody Map map) {
QueryWrapper queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(OrganizationJob::getSn, MapUtils.getString(map, "sn"));
+// queryWrapper.lambda().eq(OrganizationJob::getSn, MapUtils.getString(map, "sn"));
Page page = PageUtil.getPage(map);
Page pageList = organizationJobService.page(page, queryWrapper);
return Result.success(pageList);
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostBudgetController.java b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostBudgetController.java
index 2177b3625..2feb3870f 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostBudgetController.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostBudgetController.java
@@ -407,6 +407,7 @@ public class CostBudgetController {
String startUser = object.getString("startUser");
String projectSn = object.getJSONArray("projectSn").get(0).toString();
String fileName = object.getJSONArray("file").getJSONObject(0).getString("url");
+ Integer version = object.getJSONArray("version").getJSONObject(0).getInteger("url");
String basePath = fileStorageProperties.getLocal().get(0).getBasePath();
MultipartFile multipartFile = FileUtil.getMulFileByPath(basePath + fileName);
ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn);
@@ -438,6 +439,7 @@ public class CostBudgetController {
costBudget.setCreateTime(new Date());
costBudget.setIsCount(StringUtils.isBlank(codeList.get(0).getName()));
costBudget.setLevel(codeList.get(0).getLevel());
+ costBudget.setVersion(version);
costBudgetList.add(costBudget);
}
int num = 0;
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostSubjectController.java b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostSubjectController.java
index 5d12fa8e2..fbc5d37b5 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostSubjectController.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/controller/CostSubjectController.java
@@ -16,8 +16,11 @@ import com.zhgd.xmgl.modules.basicdata.entity.Company;
import com.zhgd.xmgl.modules.basicdata.service.ICompanyService;
import com.zhgd.xmgl.modules.cost.entity.CostBudget;
import com.zhgd.xmgl.modules.cost.entity.CostSubject;
+import com.zhgd.xmgl.modules.cost.entity.CostSubjectToOrganizationJob;
+import com.zhgd.xmgl.modules.cost.entity.dto.BindOrganizationJobDto;
import com.zhgd.xmgl.modules.cost.service.ICostBudgetService;
import com.zhgd.xmgl.modules.cost.service.ICostSubjectService;
+import com.zhgd.xmgl.modules.cost.service.ICostSubjectToOrganizationJobService;
import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo;
import com.zhgd.xmgl.modules.project.service.IProjectService;
import com.zhgd.xmgl.security.entity.UserInfo;
@@ -31,13 +34,11 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import java.util.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
@@ -64,6 +65,9 @@ public class CostSubjectController {
@Lazy
@Autowired
private ICostBudgetService costBudgetService;
+ @Lazy
+ @Autowired
+ private ICostSubjectToOrganizationJobService toOrganizationJobService;
/**
* 分页列表查询
@@ -99,35 +103,6 @@ public class CostSubjectController {
return Result.success(list);
}
- /**
- * 获取最下级节点
- *
- * @param map
- * @return
- */
- @OperLog(operModul = "成本科目管理", operType = "列表查询", operDesc = "获取最下级节点")
- @ApiOperation(value = " 获取最下级节点", notes = "获取最下级节点", httpMethod = "POST")
- @PostMapping(value = "/lastNodeList")
- public Result> lastNodeList(@RequestBody Map map) {
- List lastNodeList = new ArrayList<>();
- String projectSn = MapUtils.getString(map, "projectSn");
- if (StringUtils.isBlank(projectSn)) {
- return Result.success(lastNodeList);
- }
- ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn);
- Company company = companyService.getOne(Wrappers.lambdaQuery().eq(Company::getCompanySn, projectInfoBySn.getCompanySn()));
- List list = costSubjectService.list(Wrappers.lambdaQuery()
- .eq(CostSubject::getSn, company.getHeadquartersSn())
- .eq(CostSubject::getType, projectInfoBySn.getProjectLx()));
- for (CostSubject subject : list) {
- long count = list.stream().filter(l -> l.getParentId().toString().equals(subject.getId().toString())).count();
- if (count == 0 && StringUtils.isNotBlank(subject.getName())) {
- lastNodeList.add(subject);
- }
- }
- return Result.success(lastNodeList);
- }
-
// /**
// * 列表查询
// *
@@ -156,6 +131,35 @@ public class CostSubjectController {
// return Result.success(list);
// }
+ /**
+ * 获取最下级节点
+ *
+ * @param map
+ * @return
+ */
+ @OperLog(operModul = "成本科目管理", operType = "列表查询", operDesc = "获取最下级节点")
+ @ApiOperation(value = " 获取最下级节点", notes = "获取最下级节点", httpMethod = "POST")
+ @PostMapping(value = "/lastNodeList")
+ public Result> lastNodeList(@RequestBody Map map) {
+ List lastNodeList = new ArrayList<>();
+ String projectSn = MapUtils.getString(map, "projectSn");
+ if (StringUtils.isBlank(projectSn)) {
+ return Result.success(lastNodeList);
+ }
+ ProjectInfoExtVo projectInfoBySn = projectService.getProjectInfoBySn(projectSn);
+ Company company = companyService.getOne(Wrappers.lambdaQuery().eq(Company::getCompanySn, projectInfoBySn.getCompanySn()));
+ List list = costSubjectService.list(Wrappers.lambdaQuery()
+ .eq(CostSubject::getSn, company.getHeadquartersSn())
+ .eq(CostSubject::getType, projectInfoBySn.getProjectLx()));
+ for (CostSubject subject : list) {
+ long count = list.stream().filter(l -> l.getParentId().toString().equals(subject.getId().toString())).count();
+ if (count == 0 && StringUtils.isNotBlank(subject.getName())) {
+ lastNodeList.add(subject);
+ }
+ }
+ return Result.success(lastNodeList);
+ }
+
/**
* 列表查询
*
@@ -181,7 +185,7 @@ public class CostSubjectController {
}
Page page = PageUtil.getPage(map);
QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(CostSubject.class, map);
- Page list = costSubjectService.tree(page, queryWrapper);
+ Page list = costSubjectService.tree(page, queryWrapper, map);
return Result.success(list);
}
@@ -282,7 +286,7 @@ public class CostSubjectController {
Integer toLevelType = MapUtils.getInteger(param, "toLevelType");
String sn = MapUtils.getString(param, "sn");
List exists = costSubjectService.list(new LambdaQueryWrapper().eq(CostSubject::getSn, sn));
- Set existCodes = exists.stream().map(CostSubject::getCode).collect(Collectors.toSet());
+ Map existCodes = exists.stream().collect(Collectors.toMap(CostSubject::getCode, Function.identity(), (k1, k2) -> k1));
List subjectIds = exists.stream().map(CostSubject::getId).collect(Collectors.toList());
Set useCodes = new HashSet<>();
if (CollUtil.isNotEmpty(subjectIds)) {
@@ -303,7 +307,7 @@ public class CostSubjectController {
return Result.ok();
}
- private void addCostSubject(CostSubject costSubject, List list, String sn, Long parentId, Integer toLevelType, Set existCodes, Set useCodes) {
+ private void addCostSubject(CostSubject costSubject, List list, String sn, Long parentId, Integer toLevelType, Map existCodes, Set useCodes) {
List childList = list.stream().filter(subject -> Objects.equals(subject.getParentId(), costSubject.getId())).collect(Collectors.toList());
CostSubject costSubject1 = JSON.parseObject(JSON.toJSONString(costSubject), CostSubject.class);
costSubject1.setId(null);
@@ -321,19 +325,52 @@ public class CostSubjectController {
costSubject1.setLevelType(toLevelType);
// costSubject1.setChildren(Lists.newArrayList());
if (!useCodes.contains(costSubject1.getCode())) {
- if (existCodes.contains(costSubject1.getCode())) {
+ if (existCodes.containsKey(costSubject1.getCode())) {
UserInfo user = SecurityUtils.getUser();
costSubjectService.update(new LambdaUpdateWrapper().set(CostSubject::getCreateBy, user.getUserId().toString())
.set(CostSubject::getUpdateTime, new Date()).eq(CostSubject::getSn, sn).eq(CostSubject::getCode, costSubject1.getCode()));
} else {
costSubjectService.saveInfo(costSubject1);
+ parentId = costSubject1.getId();
}
}
+ if (existCodes.containsKey(costSubject.getCode())) {
+ parentId = existCodes.get(costSubject.getCode()).getId();
+ }
if (CollUtil.isNotEmpty(childList)) {
for (CostSubject subject : childList) {
- addCostSubject(subject, list, sn, costSubject1.getId(), toLevelType, existCodes, useCodes);
+ addCostSubject(subject, list, sn, parentId, toLevelType, existCodes, useCodes);
}
}
}
+ @OperLog(operModul = "成本科目管理", operType = "", operDesc = "成本科目绑定岗位信息")
+ @ApiOperation(value = "成本科目绑定岗位信息", notes = "成本科目绑定岗位信息", httpMethod = "POST")
+ @PostMapping(value = "/bindOrganizationJob")
+ public Result bindOrganizationJob(@RequestBody BindOrganizationJobDto bindOrganizationJobDto) {
+ toOrganizationJobService.remove(new LambdaQueryWrapper().eq(CostSubjectToOrganizationJob::getCostSubjectId, bindOrganizationJobDto.getCostSubjectId()));
+ List organizationJobIds = bindOrganizationJobDto.getOrganizationJobIds();
+ if (CollUtil.isNotEmpty(organizationJobIds)) {
+ ArrayList toOrganizationJobs = new ArrayList<>();
+ for (Long jobId : organizationJobIds) {
+ CostSubjectToOrganizationJob toOrganizationJob = new CostSubjectToOrganizationJob();
+ toOrganizationJob.setCostSubjectId(bindOrganizationJobDto.getCostSubjectId());
+ toOrganizationJob.setOrganizationJobId(jobId);
+ toOrganizationJobs.add(toOrganizationJob);
+ }
+ toOrganizationJobService.saveBatch(toOrganizationJobs);
+ }
+ return Result.ok();
+ }
+
+ @OperLog(operModul = "成本科目管理", operType = "", operDesc = "查询一个成本科目绑定岗位ids")
+ @ApiOperation(value = "查询一个成本科目绑定岗位ids", notes = "查询一个成本科目绑定岗位ids", httpMethod = "GET")
+ @ApiImplicitParam(name = "costSubjectId", value = "成本科目ID", paramType = "query", required = true, dataType = "String")
+ @GetMapping(value = "/getBindOrganizationJobIds")
+ public Result> getBindOrganizationJobIds(@RequestParam String costSubjectId) {
+ List list = toOrganizationJobService.list(new LambdaQueryWrapper().eq(CostSubjectToOrganizationJob::getCostSubjectId, costSubjectId));
+ return Result.success(list.stream().map(CostSubjectToOrganizationJob::getOrganizationJobId).distinct().collect(Collectors.toList()));
+ }
+
+
}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/dto/CompanyProjectDto.java b/src/main/java/com/zhgd/xmgl/modules/cost/dto/CompanyProjectDto.java
index 61e24f926..79ce12f82 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/dto/CompanyProjectDto.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/dto/CompanyProjectDto.java
@@ -41,4 +41,8 @@ public class CompanyProjectDto {
@Excel(name = "父级ID", width = 15)
@ApiModelProperty(value = "父级ID")
private List childrenList;
+
+ @ApiModelProperty(value = "项目类型")
+ private java.lang.String projectLx;
+
}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostBudget.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostBudget.java
index d6204a14b..be51c0056 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostBudget.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostBudget.java
@@ -95,6 +95,11 @@ public class CostBudget implements Serializable {
*/
@ApiModelProperty(value = "最后操作时间")
private Date updateTime;
+ /**
+ * 版本(字典数据)
+ */
+ @ApiModelProperty(value = "版本(字典数据)")
+ private Integer version;
@TableField(exist = false)
@ApiModelProperty(value = "科目级别")
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubject.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubject.java
index 30a10d42c..1220aa751 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubject.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubject.java
@@ -93,11 +93,41 @@ public class CostSubject implements Serializable {
*/
@ApiModelProperty(value = "级别类型:1:集团标准控制科目;2:公司控制科目;3:项目控制科目;")
private Integer levelType;
-
+ /**
+ * 科目归属(字典数据)
+ */
+ @ApiModelProperty(value = "科目归属(字典数据)")
+ private String subjectAttribution;
+ /**
+ * 是否科目大类(0否1是)
+ */
+ @ApiModelProperty(value = "是否科目大类(0否1是)")
+ private Integer isLargeCategory;
+ /**
+ * 科目细类(字典数据)
+ */
+ @ApiModelProperty(value = "科目细类(字典数据)")
+ private String subjectConcreteCategory;
+ /**
+ * 说明
+ */
+ @ApiModelProperty(value = "说明")
+ private String description;
@TableField(exist = false)
@ApiModelProperty(value = "子级科目信息")
private List children;
-
+ @TableField(exist = false)
+ @ApiModelProperty(value = "是否有权限修改删除")
+ private Boolean hasPermission;
+ @TableField(exist = false)
+ @ApiModelProperty(value = "科目类型名称")
+ private String typeName;
+ @TableField(exist = false)
+ @ApiModelProperty(value = "科目归属名称")
+ private String subjectAttributionName;
+ @TableField(exist = false)
+ @ApiModelProperty(value = "科目细类名称")
+ private String subjectConcreteCategoryName;
/* @Excel(name = "预算成本", width = 15)
@TableField(exist = false)
@ApiModelProperty(value = "预算成本")
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubjectToOrganizationJob.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubjectToOrganizationJob.java
new file mode 100644
index 000000000..3ca42d0ad
--- /dev/null
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/CostSubjectToOrganizationJob.java
@@ -0,0 +1,38 @@
+package com.zhgd.xmgl.modules.cost.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+/**
+ * @Description: 成本科目和组织岗位中间表
+ * @author: pds
+ * @date: 2024-09-10
+ * @version: V1.0
+ */
+@Data
+@TableName("cost_subject_to_organization_job")
+@ApiModel(value="CostSubjectToOrganizationJob实体类",description="CostSubjectToOrganizationJob")
+public class CostSubjectToOrganizationJob implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**id*/
+ @TableId(type = IdType.ASSIGN_ID)
+ @ApiModelProperty(value="id")
+ private java.lang.Long id ;
+ /**成本科目ID*/
+ @Excel(name = "成本科目ID", width = 15)
+ @ApiModelProperty(value="成本科目ID")
+ private java.lang.Long costSubjectId ;
+ /**组织岗位ID*/
+ @Excel(name = "组织岗位ID", width = 15)
+ @ApiModelProperty(value="组织岗位ID")
+ private java.lang.Long organizationJobId ;
+}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/entity/dto/BindOrganizationJobDto.java b/src/main/java/com/zhgd/xmgl/modules/cost/entity/dto/BindOrganizationJobDto.java
new file mode 100644
index 000000000..2c3ff693f
--- /dev/null
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/entity/dto/BindOrganizationJobDto.java
@@ -0,0 +1,14 @@
+package com.zhgd.xmgl.modules.cost.entity.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class BindOrganizationJobDto {
+ @ApiModelProperty("成本科目id")
+ private Long costSubjectId;
+ @ApiModelProperty("岗位ids")
+ private List organizationJobIds;
+}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostSubjectToOrganizationJobMapper.java b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostSubjectToOrganizationJobMapper.java
new file mode 100644
index 000000000..cd7228db5
--- /dev/null
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/CostSubjectToOrganizationJobMapper.java
@@ -0,0 +1,19 @@
+package com.zhgd.xmgl.modules.cost.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import com.zhgd.xmgl.modules.cost.entity.CostSubjectToOrganizationJob;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 成本科目和组织岗位中间表
+ * @author: pds
+ * @date: 2024-09-10
+ * @version: V1.0
+ */
+@Mapper
+public interface CostSubjectToOrganizationJobMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectMapper.xml b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectMapper.xml
index fc65c1375..da3a89854 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectMapper.xml
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectMapper.xml
@@ -2,4 +2,4 @@
-
\ No newline at end of file
+
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectToOrganizationJobMapper.xml b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectToOrganizationJobMapper.xml
new file mode 100644
index 000000000..54fd3b788
--- /dev/null
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/mapper/xml/CostSubjectToOrganizationJobMapper.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectService.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectService.java
index c26cd7fc1..50c23f3ef 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectService.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectService.java
@@ -1,6 +1,5 @@
package com.zhgd.xmgl.modules.cost.service;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhgd.xmgl.modules.cost.dto.CostBulletinDto;
@@ -19,7 +18,7 @@ import java.util.Map;
*/
public interface ICostSubjectService extends IService {
- Page tree(Page page, QueryWrapper wrapper);
+ Page tree(Page page, QueryWrapper wrapper, Map map);
boolean saveInfo(CostSubject costSubject);
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectToOrganizationJobService.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectToOrganizationJobService.java
new file mode 100644
index 000000000..dcf757667
--- /dev/null
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/ICostSubjectToOrganizationJobService.java
@@ -0,0 +1,53 @@
+package com.zhgd.xmgl.modules.cost.service;
+
+import com.zhgd.xmgl.modules.cost.entity.CostSubjectToOrganizationJob;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @Description: 成本科目和组织岗位中间表
+ * @author: pds
+ * @date: 2024-09-10
+ * @version: V1.0
+ */
+public interface ICostSubjectToOrganizationJobService extends IService {
+ /**
+ * 分页列表查询成本科目和组织岗位中间表信息
+ * @param param 参数map
+ * @return
+ */
+ IPage queryPageList(HashMap param);
+ /**
+ * 列表查询成本科目和组织岗位中间表信息
+ * @param param 参数map
+ * @return
+ */
+ List queryList(HashMap param);
+ /**
+ * 添加成本科目和组织岗位中间表信息
+ * @param costSubjectToOrganizationJob 成本科目和组织岗位中间表
+ * @return
+ */
+ void add(CostSubjectToOrganizationJob costSubjectToOrganizationJob);
+ /**
+ * 编辑成本科目和组织岗位中间表信息
+ * @param costSubjectToOrganizationJob 成本科目和组织岗位中间表
+ * @return
+ */
+ void edit(CostSubjectToOrganizationJob costSubjectToOrganizationJob);
+ /**
+ * 根据id删除成本科目和组织岗位中间表信息
+ * @param id 成本科目和组织岗位中间表的id
+ * @return
+ */
+ void delete(String id);
+ /**
+ * 根据id查询成本科目和组织岗位中间表信息
+ * @param id 成本科目和组织岗位中间表的id
+ * @return
+ */
+ CostSubjectToOrganizationJob queryById(String id);
+
+}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java
index a212911c6..2bcdf1823 100644
--- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java
@@ -3,11 +3,10 @@ package com.zhgd.xmgl.modules.cost.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.zhgd.xmgl.modules.cost.dto.CostBudgetDto;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhgd.xmgl.modules.cost.dto.CostContractPlanDto;
import com.zhgd.xmgl.modules.cost.dto.DynamicCostDto;
import com.zhgd.xmgl.modules.cost.entity.*;
-import com.zhgd.xmgl.modules.cost.mapper.CostContractPayPlanMapper;
import com.zhgd.xmgl.modules.cost.mapper.CostContractPlanMapper;
import com.zhgd.xmgl.modules.cost.service.*;
import com.zhgd.xmgl.modules.cost.vo.CostContractPlanVo;
@@ -17,12 +16,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
import java.math.BigDecimal;
-import java.math.RoundingMode;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -30,7 +25,7 @@ import java.util.stream.Collectors;
/**
* @Description: 合约规划
* @author: pengj
- * @date: 2024-07-31
+ * @date: 2024-07-31
* @version: V1.0
*/
@Service
@@ -54,8 +49,13 @@ public class CostContractPlanServiceImpl extends ServiceImpl parentSubList = allSubList.stream().filter(l -> l.getParentId().toString().equals("0") && StringUtils.isNotBlank(l.getName())).collect(Collectors.toList());
List resultList = new ArrayList<>();
if (allSubList.size() > 0) {
+ CostBudget b = costBudgetService.getOne(Wrappers.lambdaQuery()
+ .eq(CostBudget::getProjectSn, projectInfoBySn.getProjectSn())
+ .orderByDesc(CostBudget::getVersion).last("limit 1"));
List budgetList = costBudgetService.list(Wrappers.lambdaQuery()
- .eq(CostBudget::getProjectSn, projectInfoBySn.getProjectSn()));
+ .eq(CostBudget::getProjectSn, projectInfoBySn.getProjectSn())
+ .eq(CostBudget::getVersion, b != null ? b.getVersion() : -1)
+ );
List contractList = costContractService.list(Wrappers.lambdaQuery()
.eq(CostContract::getProjectSn, projectInfoBySn.getProjectSn()));
List contractPlanList = this.list(Wrappers.lambdaQuery()
@@ -133,7 +133,7 @@ public class CostContractPlanServiceImpl extends ServiceImpl list, List allList, List planList, List budgetList) {
+ // private void getChildren(List list, List allList, List planList, List budgetList) {
// for (CostContractPlanDto costContractPlan : list) {
// costContractPlan.setType(0);
// List childrenList = allList.stream().filter(a -> a.getSubjectId().toString().equals(costContractPlan.getId().toString())).collect(Collectors.toList());
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 a0256db92..de3cd6148 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
@@ -2,20 +2,24 @@ 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhgd.xmgl.modules.basicdata.entity.DictionaryItem;
+import com.zhgd.xmgl.modules.basicdata.service.IDictionaryItemService;
+import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
import com.zhgd.xmgl.modules.cost.dto.CostBulletinDto;
import com.zhgd.xmgl.modules.cost.dto.CostDynamicDto;
import com.zhgd.xmgl.modules.cost.entity.CostContract;
import com.zhgd.xmgl.modules.cost.entity.CostSubject;
+import com.zhgd.xmgl.modules.cost.entity.CostSubjectToOrganizationJob;
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.cost.service.ICostSubjectToOrganizationJobService;
import com.zhgd.xmgl.modules.project.entity.Project;
import com.zhgd.xmgl.modules.project.service.IProjectService;
import com.zhgd.xmgl.security.entity.UserInfo;
@@ -23,21 +27,17 @@ 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.context.annotation.Lazy;
import org.springframework.stereotype.Service;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 成本科目
* @author: pengj
- * @date: 2024-07-03
+ * @date: 2024-07-03
* @version: V1.0
*/
@Service
@@ -48,14 +48,30 @@ public class CostSubjectServiceImpl extends ServiceImpl tree(Page page, QueryWrapper wrapper) {
+ public Page tree(Page page, QueryWrapper wrapper, Map map) {
+ String projectSn = MapUtils.getString(map, "projectSn");
wrapper.lambda().eq(CostSubject::getParentId, 0);
wrapper.lambda().isNotNull(CostSubject::getName);
List allList = this.list();
Page pageList = this.page(page, wrapper);
- getChildren(pageList.getRecords(), allList);
+ Long jobId = systemUserService.getById(SecurityUtils.getUser().getUserId()).getJobId();
+ List toOrganizationJobs = toOrganizationJobService.list(new LambdaQueryWrapper().eq(CostSubjectToOrganizationJob::getOrganizationJobId, jobId));
+ Set hasSubjectIds = toOrganizationJobs.stream().map(CostSubjectToOrganizationJob::getCostSubjectId).collect(Collectors.toSet());
+ List records = pageList.getRecords();
+ Map typeMap = dictionaryItemService.getDictList("project_lx", projectSn).stream().collect(Collectors.toMap(DictionaryItem::getData, DictionaryItem::getName, (s, s2) -> s));
+ Map subjectAttributionMap = dictionaryItemService.getDictList("cost_subject_attribution", projectSn).stream().collect(Collectors.toMap(DictionaryItem::getData, DictionaryItem::getName, (s, s2) -> s));
+ Map subjectConcreteCategoryMap = dictionaryItemService.getDictList("cost_subject_concrete_category", projectSn).stream().collect(Collectors.toMap(DictionaryItem::getData, DictionaryItem::getName, (s, s2) -> s));
+ getChildren(records, allList, hasSubjectIds, typeMap, subjectAttributionMap, subjectConcreteCategoryMap);
return pageList;
}
@@ -125,11 +141,19 @@ public class CostSubjectServiceImpl extends ServiceImpl list, List allList) {
+ private void getChildren(List list, List allList, Set hasSubjectIds, Map typeMap, Map subjectAttributionMap, Map subjectConcreteCategoryMap) {
for (CostSubject costSubject : list) {
List childrenList = allList.stream().filter(a -> a.getParentId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList());
- getChildren(childrenList, allList);
+ getChildren(childrenList, allList, hasSubjectIds, typeMap, subjectAttributionMap, subjectConcreteCategoryMap);
costSubject.setChildren(childrenList);
+ boolean hasPermission = true;
+ if (SecurityUtils.getUser().getUserId() != 4) {
+ hasPermission = hasSubjectIds.contains(costSubject.getId());
+ }
+ costSubject.setHasPermission(hasPermission);
+ costSubject.setTypeName(typeMap.get(costSubject.getType() + ""));
+ costSubject.setSubjectAttributionName(typeMap.get(costSubject.getSubjectAttribution()));
+ costSubject.setSubjectConcreteCategoryName(typeMap.get(costSubject.getSubjectConcreteCategory()));
}
}
}
diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectToOrganizationJobServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectToOrganizationJobServiceImpl.java
new file mode 100644
index 000000000..c1d362bb3
--- /dev/null
+++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostSubjectToOrganizationJobServiceImpl.java
@@ -0,0 +1,88 @@
+package com.zhgd.xmgl.modules.cost.service.impl;
+
+import com.zhgd.jeecg.common.execption.OpenAlertException;
+import com.zhgd.xmgl.modules.cost.entity.CostSubjectToOrganizationJob;
+import com.zhgd.xmgl.modules.cost.mapper.CostSubjectToOrganizationJobMapper;
+import com.zhgd.xmgl.modules.cost.service.ICostSubjectToOrganizationJobService;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zhgd.jeecg.common.system.query.QueryGenerator;
+import com.zhgd.xmgl.util.PageUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import java.util.HashMap;
+import java.util.List;
+import com.zhgd.xmgl.util.RefUtil;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * @Description: 成本科目和组织岗位中间表
+ * @author: pds
+ * @date: 2024-09-10
+ * @version: V1.0
+ */
+@Service
+public class CostSubjectToOrganizationJobServiceImpl extends ServiceImpl implements ICostSubjectToOrganizationJobService {
+ @Autowired
+ private CostSubjectToOrganizationJobMapper costSubjectToOrganizationJobMapper;
+ @Override
+ public IPage queryPageList(HashMap param) {
+ QueryWrapper queryWrapper = getQueryWrapper(param);
+ Page page = PageUtil.getPage(param);
+ IPage pageList = this.page(page, queryWrapper);
+ pageList.setRecords(dealList(pageList.getRecords()));
+ return pageList;
+ }
+
+ @Override
+ public List queryList(HashMap param) {
+ QueryWrapper queryWrapper = getQueryWrapper(param);
+ return dealList(this.list(queryWrapper));
+ }
+
+ private QueryWrapper getQueryWrapper(HashMap param) {
+ QueryWrapper queryWrapper = QueryGenerator.initPageQueryWrapper(CostSubjectToOrganizationJob.class, param, true);
+ queryWrapper.orderByDesc(RefUtil.fieldNameUlc(CostSubjectToOrganizationJob::getId));
+ return queryWrapper;
+ }
+
+ private List dealList(List list) {
+ return list;
+ }
+
+ @Override
+ public void add(CostSubjectToOrganizationJob costSubjectToOrganizationJob) {
+ costSubjectToOrganizationJob.setId(null);
+ baseMapper.insert(costSubjectToOrganizationJob);
+ }
+
+ @Override
+ public void edit(CostSubjectToOrganizationJob costSubjectToOrganizationJob) {
+ CostSubjectToOrganizationJob oldCostSubjectToOrganizationJob = baseMapper.selectById(costSubjectToOrganizationJob.getId());
+ if(oldCostSubjectToOrganizationJob==null) {
+ throw new OpenAlertException("未找到对应实体");
+ }
+ baseMapper.updateById(costSubjectToOrganizationJob);
+ }
+
+ @Override
+ public void delete(String id) {
+ CostSubjectToOrganizationJob costSubjectToOrganizationJob = baseMapper.selectById(id);
+ if(costSubjectToOrganizationJob==null) {
+ throw new OpenAlertException("未找到对应实体");
+ }
+ baseMapper.deleteById(id);
+ }
+
+ @Override
+ public CostSubjectToOrganizationJob queryById(String id) {
+ CostSubjectToOrganizationJob entity = getById(id);
+ if (entity == null) {
+ throw new OpenAlertException("未找到对应实体");
+ }
+ return entity;
+ }
+
+}
diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java
index 1fb0edb92..d23b0c446 100644
--- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java
+++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectServiceImpl.java
@@ -220,6 +220,7 @@ public class ProjectServiceImpl extends ServiceImpl impl
second.setType(2);
second.setName(project.getProjectName());
second.setCompanySn(project.getCompanySn());
+ second.setProjectLx(project.getProjectLx());
secondList.add(second);
}
first.setChildrenList(secondList);