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