Commit 61c79e19 authored by tianhongyang's avatar tianhongyang

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 192f5803 cbff7dc7
......@@ -61,32 +61,32 @@ public interface CbProjectConstants {
/**
* 成本类型:直接费成本
*/
Integer CB_TYPE_DIRECT_EXPENSE = 0;
int CB_TYPE_DIRECT_EXPENSE = 0;
String CB_TYPE_DIRECT_EXPENSE_NAME = "直接费成本";
/**
* 成本类型:工料汇总
*/
Integer CB_TYPE_QUANTITY_SUMMARY = 1;
int CB_TYPE_QUANTITY_SUMMARY = 1;
String CB_TYPE_QUANTITY_SUMMARY_NAME = "工料汇总";
/**
* 成本类型:措施项目
*/
Integer CB_TYPE_MEASURE_PROJECT = 2;
int CB_TYPE_MEASURE_PROJECT = 2;
String CB_TYPE_MEASURE_PROJECT_NAME = "措施项目";
/**
* 成本类型:其他项目
*/
Integer CB_TYPE_OTHER_PROJECT = 3;
int CB_TYPE_OTHER_PROJECT = 3;
String CB_TYPE_OTHER_PROJECT_NAME = "其他项目";
/**
* 成本类型:现场经费
*/
Integer CB_TYPE_SCENE_EXPENSE = 4;
int CB_TYPE_SCENE_EXPENSE = 4;
String CB_TYPE_SCENE_EXPENSE_NAME = "现场经费";
/**
* 成本类型:成本汇总
*/
Integer CB_TYPE_SUMMARY = 5;
int CB_TYPE_SUMMARY = 5;
String CB_TYPE_SUMMARY_NAME = "成本汇总";
}
......@@ -8,6 +8,7 @@ import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.CbProjectCbStageNotDraftVo;
import com.dsk.cscec.domain.vo.CbProjectInfoVo;
import com.dsk.cscec.domain.vo.CbProjectRecordSearchVo;
import com.dsk.cscec.service.CbProjectRecordService;
import com.dsk.cscec.service.IDProjectService;
......@@ -76,7 +77,7 @@ public class CbProjectRecordController extends BaseController {
* 获取项目历史阶段信息(懒加载)
*/
@GetMapping("/getProjectHistoryInfo")
public R<List<CbProjectRecord>> getProjectHistoryInfo(@RequestBody CbProjectHistorySearchBo searchBo) {
public R<List<CbProjectRecord>> getProjectHistoryInfo(CbProjectHistorySearchBo searchBo) {
return R.ok(baseService.getProjectHistoryInfo(searchBo));
}
......@@ -136,5 +137,13 @@ public class CbProjectRecordController extends BaseController {
public R<Void> deleteDraft(@NotNull(message = "项目ID不能为空") @PathVariable Long projectId) {
return toAjax(baseService.deleteDraft(projectId));
}
/**
* 获取工程项目信息
*/
@GetMapping("/getCbProjectInfo/{projectId}")
public R<CbProjectInfoVo> getCbProjectInfo(@NotNull(message = "项目ID不能为空") @PathVariable Long projectId) {
return R.ok(dProjectService.getCbProjectInfo(projectId));
}
}
......@@ -33,7 +33,6 @@ public class DProject implements Serializable {
/**
* IPM项目名称
*/
private String projectName;
/**
......@@ -49,7 +48,6 @@ public class DProject implements Serializable {
/**
* 项目简称
*/
private String projectShortName;
/**
......
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.Date;
/**
* @author sxk
* @date 2024.02.28
* @time 14:24
*/
@Data
public class CbProjectInfoVo {
//项目基本情况↓
/**
* 工程名称
*/
private String projectName;
/**
* 区域名称(工程所在地)
*/
private String areaName;
/**
* 城市名称(工程所在地)
*/
private String cityName;
/**
* 县市(工程所在地)
*/
private String districtName;
/**
* 项目地址(工程详细地址)
*/
private String projectAddress;
//业态
/**
* 工程类型上级名称(工程类型)
*/
private String projectType1;
//计价模式(清单/定额)
//承包形式(EPC/DB/EP/PC)
//合同类型
//建设单位
/**
* 设计单位
*/
private String designOrgName;
//勘察单位
/**
* 监理单位
*/
private String supervisorOrgName;
//代理公司(或工料测量师)
//招标形式
//承包方式
//预计合同额(万元)
/**
* 资金来源名称(资金来源)
*/
private String moneySource;
//分包标准费用项价格库
//材料机械标准费用价格库
//专业类别
//平台项目名称
//核定总人数
//折算收入不含税系数(应纳税率)
//收入清单增值税率
//项目特征信息↓
//地上建筑面积
//地下建筑面积
//坑底面积
//占地面积
//结构类型
//基础类型
//单体个数
/**
* 地上层数
*/
private String noOfOverfloor;
/**
* 地下层数
*/
private String noOfUnderfloor;
/**
* 建筑高度(m)
*/
private String constructHeight;
//地下深度
//首层(m)
//标准层(m)
//其他说明
//项目投标时的要点↓
//建筑工程
//机电工程
//专业工程暂估
//装饰工程
//配套工程
//指定分包
//报价方式/合同形式
//指定供应
//电子标
/**
* 计划开工日期
*/
private Date planStartDate;
/**
* 计划竣工日期
*/
private Date planEndDate;
/**
* 合同总工期(总工期)
*/
private String contractWorkDays;
//缺陷责任
//质量标准
//品牌要求
//质量要求
//报价中需要注意的其他问题/风险
//评标办法↓
//评标程序
//评标原则
//招标控制价(如有)
//专家组成
//定标原则
//报价上限(如有)
//投标各时间节点↓
//标前会议(或者领取投标文件的时间)
//投标人提出疑问的截止时间
//招标人答复疑问的截止时间
//现场踏勤时间
//招标控制价(如有)
//报价上限(如有)
//时间
//开标时的要求
//地点
//投标有效期
}
......@@ -7,6 +7,7 @@ import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectDetailBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
import com.dsk.cscec.domain.vo.CbProjectInfoVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
......@@ -60,5 +61,12 @@ public interface IDProjectService extends IService<DProject> {
* @return 校验结果
*/
Boolean checkProjectCodeExist(String projectCode);
/**
* 获取工程项目信息
* @param projectId 项目ID
* @return 工程项目信息
*/
CbProjectInfoVo getCbProjectInfo(Long projectId);
}
......@@ -72,6 +72,7 @@ public class CbProjectExpenseSummaryServiceImpl extends ServiceImpl<CbProjectExp
InputStream inputStream = ossService.downFileIO(projectFile.getFileOssId());
if (ObjectUtil.isNull(inputStream)) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
log.error("FileId:" + projectFile.getId() + ",文件数据不存在");
projectFile.setFailRemark("文件数据不存在");
projectFileMapper.updateById(projectFile);
continue;
......@@ -80,6 +81,7 @@ public class CbProjectExpenseSummaryServiceImpl extends ServiceImpl<CbProjectExp
List<CbProjectExpenseSummary> importList = new ExcelUtils<>(CbProjectExpenseSummary.class).importExcelAllSheet(inputStream, 0);
if (importList.isEmpty()) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
log.error("FileId:" + projectFile.getId() + ",表格中不存在待导入数据");
projectFile.setFailRemark("表格中不存在待导入数据!");
projectFileMapper.updateById(projectFile);
continue;
......@@ -100,7 +102,8 @@ public class CbProjectExpenseSummaryServiceImpl extends ServiceImpl<CbProjectExp
.collect(Collectors.toList());
if (summaryList.size() != importList.size()) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
projectFile.setFailRemark("表格中存在\"名称\"列为空数据!");
log.error("FileId:" + projectFile.getId() + ",表格中存在\"名称\"列为空数据!");
projectFile.setFailRemark("表格中存在\"名称\"列为空数据");
projectFileMapper.updateById(projectFile);
continue;
}
......
......@@ -181,7 +181,7 @@ public class CbProjectOtherServiceImpl extends ServiceImpl<CbProjectOtherMapper,
file.setFileParseStatus(3);
file.setFailRemark("文件数据不存在");
projectFileService.updateById(file);
break;
continue;
}
// 文件名称
......@@ -191,7 +191,7 @@ public class CbProjectOtherServiceImpl extends ServiceImpl<CbProjectOtherMapper,
Long fileId = file.getId();
if ("其他费".equals(name)) {
totalDataAnalysis(inputStream, name, file, projectId, cbStage);
break;
continue;
}
//解析数据
ExcelResult<CbProjectOtherImportVo> importVoExcelResult =
......@@ -204,7 +204,7 @@ public class CbProjectOtherServiceImpl extends ServiceImpl<CbProjectOtherMapper,
file.setFileParseStatus(3);
file.setFailRemark("表格中不存在待导入数据!");
projectFileService.updateById(file);
break;
continue;
}
log.debug(">>>>" + importVoList.size());
CbProjectOther rootProjectOther = new CbProjectOther();
......
......@@ -113,6 +113,7 @@ public class CbSceneExpenseChildrenServiceImpl extends ServiceImpl<CbSceneExpens
InputStream inputStream = ossService.downFileIO(projectFile.getFileOssId());
if (ObjectUtil.isNull(inputStream)) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
log.error("FileId:" + projectFile.getId() + ",文件数据不存在");
projectFile.setFailRemark("文件数据不存在");
projectFileMapper.updateById(projectFile);
continue;
......@@ -121,6 +122,7 @@ public class CbSceneExpenseChildrenServiceImpl extends ServiceImpl<CbSceneExpens
List<CbSceneExpenseChildrenImportBo> importList = new ExcelUtils<>(CbSceneExpenseChildrenImportBo.class).importExcelAllSheet(inputStream, 0);
if (importList.isEmpty()) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
log.error("FileId:" + projectFile.getId() + ",表格中不存在待导入数据");
projectFile.setFailRemark("表格中不存在待导入数据");
projectFileMapper.updateById(projectFile);
continue;
......@@ -154,7 +156,8 @@ public class CbSceneExpenseChildrenServiceImpl extends ServiceImpl<CbSceneExpens
.collect(Collectors.toList());
if (summaryList.size() != importList.size()) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
projectFile.setFailRemark("表格中存在\"名称\"列为空数据!");
log.error("FileId:" + projectFile.getId() + ",表格中存在\"名称\"列为空数据");
projectFile.setFailRemark("表格中存在\"名称\"列为空数据");
projectFileMapper.updateById(projectFile);
continue;
}
......
......@@ -3,6 +3,7 @@ package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -15,15 +16,18 @@ import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.AdvisoryBodyManageQueryConstants;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectDetailBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
import com.dsk.cscec.domain.vo.CbProjectInfoVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
import com.dsk.cscec.mapper.CbProjectRecordMapper;
import com.dsk.cscec.mapper.DProjectMapper;
import com.dsk.cscec.service.IDProjectService;
import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
......@@ -52,6 +56,8 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
private AdvisoryBodyProjectMapper advisoryBodyProjectMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Resource
private CbProjectRecordMapper projectRecordMapper;
/**
* 获取所有项目列表数据
......@@ -258,5 +264,19 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
return baseMapper.exists(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectCode));
}
/**
* 获取工程项目信息
*
* @param projectId 项目ID
* @return 工程项目信息
*/
@Override
public CbProjectInfoVo getCbProjectInfo(Long projectId) {
CbProjectRecord projectRecord = projectRecordMapper.selectById(projectId);
Assert.isTrue(projectRecord.getIsGetProjectDetail(), "请先通过IPM项目编码获取数据,或IPM项目编码无效");
return BeanUtil.toBean(baseMapper.selectOne(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectRecord.getIpmProjectNo())), CbProjectInfoVo.class);
}
}
......@@ -172,6 +172,15 @@ export function projectVolume(data) {
});
}
//措施费-获取实际成本月份列表
export function actualMonths(params) {
return request({
url: '/cb/cost/measures/actual/months',
method: 'GET',
params
});
}
// 工料汇总
......@@ -204,8 +213,8 @@ export const getFeedSummaryMonthListApi = (params = {}) => request({
* recordDate : string;
* projectId : number;
* cbStage : number
* }} params
* @returns
* }} params
* @returns
*/
export const getFeedSummaryListApi = (params = {}) => request({
url: "/cb/quantity/summary/subjectList",
......
......@@ -11,12 +11,21 @@
</div>
<div class="profitloss">
<div class="search">
<el-date-picker size="small" style="width: 140px"
v-model="expenseDate"
type="month"
placeholder="选择月" @change="changetime"
:picker-options="pickerOptions">
</el-date-picker>
<!--<el-date-picker size="small" style="width: 140px"-->
<!--v-model="expenseDate"-->
<!--type="month"-->
<!--placeholder="选择月" @change="changetime"-->
<!--value-format="yyyy-MM"-->
<!--:picker-options="pickerOptions">-->
<!--</el-date-picker>-->
<el-select v-model="expenseDate">
<el-option
v-for="item in dateoptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<el-button v-if="!isall" type="primary" size="small" @click="addcost">添加实际成本</el-button>
</div>
<!--汇总-->
......@@ -183,7 +192,7 @@
getMeasureslist,
getSummarydata,
projectVolume,
pushProjectvolume
pushProjectvolume,actualMonths
} from '@/api/projectCostLedger'
export default {
......@@ -247,14 +256,15 @@
isall:true,//是否汇总
dialogVisible:false,
queryParam:{},//推送工程量数据
dateoptions:[],
};
},
//可访问data属性
created() {
let month = new Date().getMonth() +1
let year = new Date().getFullYear()
this.expenseDate = year + '-' + (month>= 9? month:'0'+ month)
// let month = new Date().getMonth() +1
// let year = new Date().getFullYear()
// this.expenseDate = year + (month>= 9? month:'0'+ month)
this.getactualMonths()
},
//计算集
computed: {
......@@ -262,13 +272,29 @@
},
//方法集
methods: {
getactualMonths(){
const formDatas = new FormData();
formDatas.append("projectId", this.projectId);
formDatas.append("id", this.id);
console.log(formDatas.get('projectId'))
console.log(formDatas.get('id'))
actualMonths(formDatas).then(res=>{
let data = res.data
data.forEach(item=>{
item.value = item
item.label = item.substring(1,4)+'-'+item.substring(5,6)
})
if(data&&data.length>0)
this.expenseDate = data[0].value
})
},
select(menuPath){
this.id = menuPath
let month = this.expenseDate.replace('-', "");
// let month = this.expenseDate.replace('-', "");
let param = {
projectId:this.projectId,
id:this.id,
month:month
month:this.expenseDate
}
if(menuPath == 0){//费用汇总
this.isall = true
......@@ -283,6 +309,7 @@
this.tableData = res.data
})
}
this.getactualMonths()
},
async init(detail = '') {
try {
......@@ -318,9 +345,6 @@
}
},
changetime(val){
let month = val.getMonth() +1
let year = val.getFullYear()
this.expenseDate = year + '-' + (month>= 9? month:'0'+ month)
this.select(this.id)
},
//推送工作量
......@@ -336,6 +360,7 @@
projectVolume(row.id).then(res=>{
if(res.data){
let datas = res.data
this.queryParam.currentProjectVolume = datas.currentProjectVolume
this.queryParam.ipmProjectCode = datas.ipmProjectCode
this.queryParam.ipmContractCode = datas.ipmContractCode
this.queryParam.ipmBizCode = datas.ipmBizCode
......
......@@ -15,6 +15,7 @@
v-model="expenseDate"
type="month"
placeholder="选择月" @change="changetime"
value-format="yyyy-MM"
>
</el-date-picker>
</div>
......@@ -254,10 +255,6 @@
}
},
changetime(val){
console.log(val)
// let month = val.getMonth() +1
// let year = val.getFullYear()
// this.expenseDate = year + '-' + (month>= 9? month:'0'+ month)
this.select(this.id)
},
},
......
......@@ -283,6 +283,7 @@
uploadtype:0,//上传的版块类型
visible:false,
issub:false,//已填完数据可以开始解析
isclick:true,
}
},
created() {
......@@ -327,7 +328,7 @@
})
},
uplpro(type){
if(!this.prodetail){
if(!this.prodetail && this.isclick){
this.uploadtype = type
this.$refs.uploadpro.$el.querySelector('input').click()
}
......@@ -359,6 +360,7 @@
});
},
handleFileListChange(file, fileList) {
this.isclick = false
var testmsg = file.name.substring(file.name.lastIndexOf(".") + 1);
const extension = testmsg === "xlsx";
const extension1 = testmsg === "xls";
......@@ -408,6 +410,7 @@
default:
break
}
this.isclick = true
}
})
},
......
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