Commit b459ca4a authored by danfuman's avatar danfuman

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents c1d2ca85 19155fe9
...@@ -61,7 +61,7 @@ public class CbDirectExpenseController extends BaseController { ...@@ -61,7 +61,7 @@ public class CbDirectExpenseController extends BaseController {
return toAjax(baseService.addExpense(addBo)); return toAjax(baseService.addExpense(addBo));
} }
/*** /**
* 删除直接费费用项 * 删除直接费费用项
*/ */
@DeleteMapping("/deleteExpense/{id}") @DeleteMapping("/deleteExpense/{id}")
......
package com.dsk.cscec.controller; package com.dsk.cscec.controller;
import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.annotation.SaMode;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.dsk.common.constant.TenantConstants;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.CbProjectRecord; import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.*; import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo; import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo;
import com.dsk.cscec.domain.vo.CbProjectHeadInfoVo; import com.dsk.cscec.domain.vo.CbProjectHeadInfoVo;
...@@ -45,12 +50,16 @@ public class CbProjectRecordController extends BaseController { ...@@ -45,12 +50,16 @@ public class CbProjectRecordController extends BaseController {
* 校验项目编码是否存在 * 校验项目编码是否存在
*/ */
@GetMapping("/checkProjectCodeExist") @GetMapping("/checkProjectCodeExist")
public R<Boolean> checkProjectCodeExist(@Validated CbCheckProjectCodeExistBo checkBo) { public R<String> checkProjectCodeExist(@Validated CbCheckProjectCodeExistBo checkBo) {
if (dProjectService.checkProjectCodeExist(checkBo)) { return R.ok(dProjectService.checkProjectCodeExist(checkBo));
return R.ok(true); }
} else {
return R.fail("IPM项目编码无效", false); /**
} * 根据项目名称模糊查询项目列表
*/
@GetMapping("/queryProjectNameList/projectName")
public R<List<DProject>> queryProjectNameList(@RequestParam @NotBlank(message = "项目名称不能为空") String projectName) {
return R.ok(dProjectService.queryProjectNameList(projectName));
} }
/** /**
......
...@@ -119,6 +119,18 @@ public class CbDirectExpense extends BaseEntity implements Serializable { ...@@ -119,6 +119,18 @@ public class CbDirectExpense extends BaseEntity implements Serializable {
*/ */
@Excel(name = "含税成本合价") @Excel(name = "含税成本合价")
private String includeTaxCbSumPrice; private String includeTaxCbSumPrice;
/**
* 规格型号
*/
private String specificationModel;
/**
* 计算规则
*/
private String calculateRule;
/**
* 甲供材料
*/
private String supplierMaterial;
/** /**
* 合价偏差 * 合价偏差
*/ */
......
package com.dsk.cscec.domain.bo; package com.dsk.cscec.domain.bo;
import com.dsk.common.annotation.Excel;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
...@@ -32,13 +33,37 @@ public class AddCbDirectExpenseBo { ...@@ -32,13 +33,37 @@ public class AddCbDirectExpenseBo {
*/ */
@NotBlank(message = "单位不能为空") @NotBlank(message = "单位不能为空")
private String unit; private String unit;
/**
* 招标控制价单价
*/
@NotBlank(message = "招标控制价单价不能为空")
private String tenderControlUnitPrice;
/** /**
* 不含税成本单价 * 不含税成本单价
*/ */
@NotBlank(message = "不含税成本单价不能为空") @NotBlank(message = "不含税成本单价不能为空")
private String excludeTaxCbUnitPrice; private String excludeTaxCbUnitPrice;
/**
* 含税成本单价
*/
@NotBlank(message = "含税成本单价不能为空")
private String includeTaxCbUnitPrice;
/**
* 规格型号
*/
@NotBlank(message = "规格型号不能为空")
private String specificationModel;
/** /**
* 特征描述 * 特征描述
*/ */
@NotBlank(message = "特征描述不能为空")
private String projectFeature; private String projectFeature;
/**
* 计算规则
*/
private String calculateRule;
/**
* 甲供材料
*/
private String supplierMaterial;
} }
\ No newline at end of file
...@@ -121,9 +121,13 @@ public class CbQuantitySummaryListVo { ...@@ -121,9 +121,13 @@ public class CbQuantitySummaryListVo {
*/ */
private String actualId; private String actualId;
/** /**
* 推送工程量 * 推送工程量(本月差值)
*/ */
private Double pushQuantities; private Double pushQuantities;
/**
* 累计差值
*/
private Double cumulativeDifference;
/** /**
* IPM项目编码 * IPM项目编码
*/ */
......
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.CbProjectRecord; import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.*; import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo; import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo;
import com.dsk.cscec.domain.vo.CbProjectHeadInfoVo; import com.dsk.cscec.domain.vo.CbProjectHeadInfoVo;
......
...@@ -61,7 +61,7 @@ public interface IDProjectService extends IService<DProject> { ...@@ -61,7 +61,7 @@ public interface IDProjectService extends IService<DProject> {
* @param checkBo 待校验信息 * @param checkBo 待校验信息
* @return 校验结果 * @return 校验结果
*/ */
Boolean checkProjectCodeExist(CbCheckProjectCodeExistBo checkBo); String checkProjectCodeExist(CbCheckProjectCodeExistBo checkBo);
/** /**
* 获取工程项目信息 * 获取工程项目信息
...@@ -70,5 +70,13 @@ public interface IDProjectService extends IService<DProject> { ...@@ -70,5 +70,13 @@ public interface IDProjectService extends IService<DProject> {
* @return 工程项目信息 * @return 工程项目信息
*/ */
CbProjectInfoVo getCbProjectInfo(Long projectId); CbProjectInfoVo getCbProjectInfo(Long projectId);
/**
* 根据项目名称模糊查询项目列表
*
* @param projectName 项目名称
* @return 项目列表
*/
List<DProject> queryProjectNameList(String projectName);
} }
...@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; ...@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.constant.TenantConstants;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.helper.LoginHelper; import com.dsk.common.helper.LoginHelper;
...@@ -17,12 +18,14 @@ import com.dsk.component.DataAnalysisComponent; ...@@ -17,12 +18,14 @@ import com.dsk.component.DataAnalysisComponent;
import com.dsk.cscec.constant.CbProjectConstants; import com.dsk.cscec.constant.CbProjectConstants;
import com.dsk.cscec.domain.CbProjectFile; import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.CbProjectRecord; import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.*; import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo; import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo;
import com.dsk.cscec.domain.vo.CbProjectHeadInfoVo; import com.dsk.cscec.domain.vo.CbProjectHeadInfoVo;
import com.dsk.cscec.domain.vo.CbProjectRecordSearchVo; import com.dsk.cscec.domain.vo.CbProjectRecordSearchVo;
import com.dsk.cscec.mapper.CbProjectFileMapper; import com.dsk.cscec.mapper.CbProjectFileMapper;
import com.dsk.cscec.mapper.CbProjectRecordMapper; import com.dsk.cscec.mapper.CbProjectRecordMapper;
import com.dsk.cscec.mapper.DProjectMapper;
import com.dsk.cscec.service.*; import com.dsk.cscec.service.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.aop.framework.AopContext; import org.springframework.aop.framework.AopContext;
...@@ -31,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -31,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -62,6 +66,8 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -62,6 +66,8 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
private ICbCostMeasureService costMeasureService; private ICbCostMeasureService costMeasureService;
@Resource @Resource
private CbDirectExpenseService directExpenseService; private CbDirectExpenseService directExpenseService;
@Resource
private DProjectMapper dProjectMapper;
/** /**
* 校验项目名称是否存在 * 校验项目名称是否存在
...@@ -90,6 +96,16 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -90,6 +96,16 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public CbProjectRecord addProject(AddCbProjectBo addCbProjectBo) { public CbProjectRecord addProject(AddCbProjectBo addCbProjectBo) {
//仅管理员可创建IPM系统中不存在的项目
Objects.requireNonNull(LoginHelper.getLoginUser()).getRolePermission().forEach(permission -> {
if (!TenantConstants.SUPER_ADMIN_ROLE_KEY.equals(permission) &&
!TenantConstants.TENANT_SUPER_ADMIN_ROLE_KEY.equals(permission) &&
!TenantConstants.TENANT_ADMIN_ROLE_KEY.equals(permission)) {
Assert.isFalse(dProjectMapper.exists(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectName, addCbProjectBo.getProjectName())), "IPM系统中不存在该项目,请重新选择");
}
});
CbProjectRecord projectRecord = BeanUtil.toBean(addCbProjectBo, CbProjectRecord.class); CbProjectRecord projectRecord = BeanUtil.toBean(addCbProjectBo, CbProjectRecord.class);
//生成唯一关联ID //生成唯一关联ID
......
...@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery; import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.AdvisoryBodyManageQueryConstants; import com.dsk.cscec.constant.AdvisoryBodyManageQueryConstants;
import com.dsk.cscec.domain.AdvisoryBody; import com.dsk.cscec.domain.AdvisoryBody;
...@@ -35,10 +36,12 @@ import com.dsk.jsk.domain.EnterpriseInfoHeaderBody; ...@@ -35,10 +36,12 @@ import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
import com.dsk.system.utils.DskOpenApiUtil; import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils; import org.apache.commons.collections4.MapUtils;
import org.apache.poi.ss.formula.functions.DProduct;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* 咨询机构管理 * 咨询机构管理
...@@ -261,16 +264,13 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject> ...@@ -261,16 +264,13 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
* @return 校验结果 * @return 校验结果
*/ */
@Override @Override
public Boolean checkProjectCodeExist(CbCheckProjectCodeExistBo checkBo) { public String checkProjectCodeExist(CbCheckProjectCodeExistBo checkBo) {
Long projectId = checkBo.getProjectId(); Long projectId = checkBo.getProjectId();
String projectCode = checkBo.getProjectCode(); String projectCode = checkBo.getProjectCode();
//新增全新项目时,直接校验IPM编码是否重复和是否存在 //新增全新项目时,直接校验IPM编码是否重复和是否存在
if (ObjectUtil.isNull(projectId)) { if (ObjectUtil.isNull(projectId)) {
Assert.isFalse(projectRecordMapper.exists(new LambdaQueryWrapper<CbProjectRecord>() return this.treatProjectCodeExist(projectCode);
.eq(CbProjectRecord::getIpmProjectNo, projectCode)), "项目台账列表中已存在相同IPM编码的项目");
return baseMapper.exists(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectCode));
} else { } else {
CbProjectRecord projectRecord = projectRecordMapper.selectById(projectId); CbProjectRecord projectRecord = projectRecordMapper.selectById(projectId);
////未做任何改动时 ////未做任何改动时
...@@ -278,16 +278,24 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject> ...@@ -278,16 +278,24 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
//修改项目信息or新增新阶段项目时 //修改项目信息or新增新阶段项目时
if (projectCode.equals(projectRecord.getIpmProjectNo()) if (projectCode.equals(projectRecord.getIpmProjectNo())
&& projectRecord.getIsGetProjectDetail()) { && projectRecord.getIsGetProjectDetail()) {
return true; return projectRecord.getProjectName();
} else { } else {
Assert.isFalse(projectRecordMapper.exists(new LambdaQueryWrapper<CbProjectRecord>() return this.treatProjectCodeExist(projectCode);
.eq(CbProjectRecord::getIpmProjectNo, projectCode)), "项目台账列表中已存在相同IPM编码的项目");
return baseMapper.exists(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectCode));
} }
} }
} }
private String treatProjectCodeExist(String projectCode) {
Assert.isFalse(projectRecordMapper.exists(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getIpmProjectNo, projectCode)), "项目台账列表中已存在相同IPM编码的项目");
DProject dProject = baseMapper.selectOne(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectCode));
if (ObjectUtil.isNotNull(dProject)) {
return dProject.getProjectName();
}
throw new ServiceException("IPM项目编码无效");
}
/** /**
* 获取工程项目信息 * 获取工程项目信息
* *
...@@ -303,5 +311,20 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject> ...@@ -303,5 +311,20 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
return BeanUtil.toBean(baseMapper.selectOne(new LambdaQueryWrapper<DProject>() return BeanUtil.toBean(baseMapper.selectOne(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectRecord.getIpmProjectNo())), CbProjectInfoVo.class); .eq(DProject::getProjectCode, projectRecord.getIpmProjectNo())), CbProjectInfoVo.class);
} }
/**
* 根据项目名称模糊查询项目列表
*
* @param projectName 项目名称
* @return 项目列表
*/
@Override
public List<DProject> queryProjectNameList(String projectName) {
return baseMapper.selectList(new LambdaQueryWrapper<DProject>()
.select(DProject::getProjectName, DProject::getProjectCode)
.like(StringUtils.isNotBlank(projectName), DProject::getProjectName, projectName)).stream().peek(item -> {
item.setProjectName(StringUtils.markInRed(item.getProjectName(), projectName));
}).collect(Collectors.toList());
}
} }
...@@ -91,10 +91,11 @@ ...@@ -91,10 +91,11 @@
cqs.combined_price, cqs.combined_price_tax, cqs.brand_name, cqs.bid_source, cqs.remark, cqs.`number`, cqsa.quantities, cqs.combined_price, cqs.combined_price_tax, cqs.brand_name, cqs.bid_source, cqs.remark, cqs.`number`, cqsa.quantities,
cqsa.quantities_unit, cqsa.conversion_quantities, cqsa.conversion_unit, cqsa.purchase_unit_price, cqsa.create_time, cqsa.quantities_unit, cqsa.conversion_quantities, cqsa.conversion_unit, cqsa.purchase_unit_price, cqsa.create_time,
cqsa.id actualId, cqsa.ipm_project_code, cqsa.ipm_contract_code, cqsa.ipm_biz_code, cqsa.push_quantities, cqsa.id actualId, cqsa.ipm_project_code, cqsa.ipm_contract_code, cqsa.ipm_biz_code, cqsa.push_quantities,
ifnull(sum(cqsa1.quantities),0) totalQuantities ifnull(sum(cqsa1.quantities),0) totalQuantities,ifnull(sum(cqsa2.push_quantities),0) cumulativeDifference
from cb_quantity_summary cqs from cb_quantity_summary cqs
left join cb_quantity_summary_actual cqsa on (cqs.id = cqsa.cb_quantity_summary_id and cqsa.record_date = #{recordDate} ) left join cb_quantity_summary_actual cqsa on (cqs.id = cqsa.cb_quantity_summary_id and cqsa.record_date = #{recordDate} )
left join cb_quantity_summary_actual cqsa1 on (cqs.id = cqsa1.cb_quantity_summary_id and cqsa1.record_date &lt;= #{recordDate} ) left join cb_quantity_summary_actual cqsa1 on (cqs.id = cqsa1.cb_quantity_summary_id and cqsa1.record_date &lt;= #{recordDate} )
left join cb_quantity_summary_actual cqsa2 on cqs.id = cqsa2.cb_quantity_summary_id
left join cb_subject cs1 on cqs.cb_subject_name = cs1.cb_subject_name left join cb_subject cs1 on cqs.cb_subject_name = cs1.cb_subject_name
where cqs.del_falg = 0 and cqs.project_id = #{projectId} and cqs.cb_stage = #{cbStage} where cqs.del_falg = 0 and cqs.project_id = #{projectId} and cqs.cb_stage = #{cbStage}
<if test="cbSubjectName != null and cbSubjectName !=''"> <if test="cbSubjectName != null and cbSubjectName !=''">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment