Commit b227fca8 authored by 施翔轲's avatar 施翔轲

直接费相关

parent 9188fa11
...@@ -88,5 +88,32 @@ public interface CbProjectConstants { ...@@ -88,5 +88,32 @@ public interface CbProjectConstants {
*/ */
int CB_TYPE_SUMMARY = 5; int CB_TYPE_SUMMARY = 5;
String CB_TYPE_SUMMARY_NAME = "成本汇总"; String CB_TYPE_SUMMARY_NAME = "成本汇总";
/**
* 直接费清单/费用项分类标识:清
*/
String DIRECT_EXPENSE_CATEGORY_TAG_QING = "清";
/**
* 直接费清单/费用项分类标识:专
*/
String DIRECT_EXPENSE_CATEGORY_TAG_ZHUAN = "专";
/**
* 直接费清单/费用项分类标识:劳
*/
String DIRECT_EXPENSE_CATEGORY_TAG_LAO = "劳";
/**
* 直接费清单/费用项分类标识:材
*/
String DIRECT_EXPENSE_CATEGORY_TAG_CAI = "材";
/**
* 直接费编码:专
*/
String DIRECT_EXPENSE_CODE_ZHUAN = "ZY";
/**
* 直接费编码:劳
*/
String DIRECT_EXPENSE_CODE_LAO = "LW";
/**
* 直接费编码:材
*/
String DIRECT_EXPENSE_CODE_CAI = "FG";
} }
package com.dsk.cscec.controller; package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import com.dsk.cscec.domain.bo.AddCbDirectExpenseBo;
import com.dsk.cscec.domain.vo.CbDirectExpenseDataDetailVo;
import com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo;
import com.dsk.cscec.service.CbDirectExpenseService; import com.dsk.cscec.service.CbDirectExpenseService;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.List;
/** /**
* 直接费成本表(CbDirectExpense)表控制层 * 直接费成本表(CbDirectExpense)表控制层
...@@ -14,12 +21,45 @@ import javax.annotation.Resource; ...@@ -14,12 +21,45 @@ import javax.annotation.Resource;
*/ */
@RestController @RestController
@RequestMapping("cbDirectExpense") @RequestMapping("cbDirectExpense")
public class CbDirectExpenseController { public class CbDirectExpenseController extends BaseController {
/** /**
* 服务对象 * 服务对象
*/ */
@Resource @Resource
private CbDirectExpenseService baseService; private CbDirectExpenseService baseService;
/**
* 获取直接费菜单
*/
@GetMapping("/getMenuList/{projectId}")
public R<CbDirectExpenseMenuVo> getMenuList(@NotNull(message = "项目ID不能为空") @PathVariable Long projectId) {
return R.ok(baseService.getMenuList(projectId));
}
/**
* 直接费数据解析
*/
@GetMapping("/parseDirectExpenseData/{projectId}")
public R<Void> parseDirectExpenseData(@PathVariable Long projectId) throws Exception {
baseService.parseDirectExpenseData(projectId, 1);
return R.ok();
}
/**
* 获取直接费数据详情
*/
@GetMapping("/getDataDetail/{menuId}")
public R<List<CbDirectExpenseDataDetailVo>> getDataDetail(@NotNull(message = "菜单ID不能为空") @PathVariable Long menuId) {
return R.ok(baseService.getDataDetail(menuId));
}
/**
* 新增直接费费用项
*/
@PostMapping("/addExpense")
public R<Void> addExpense(@Validated @RequestBody AddCbDirectExpenseBo addBo) {
return toAjax(baseService.addExpense(addBo));
}
} }
...@@ -2,6 +2,7 @@ package com.dsk.cscec.domain; ...@@ -2,6 +2,7 @@ package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableLogic;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity; import com.dsk.common.core.domain.BaseEntity;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -24,112 +25,127 @@ public class CbDirectExpense extends BaseEntity implements Serializable { ...@@ -24,112 +25,127 @@ public class CbDirectExpense extends BaseEntity implements Serializable {
@TableId(value = "id") @TableId(value = "id")
private Long id; private Long id;
/** /**
* 项目ID * 排序
*/
private Long projectId;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/ */
private Integer cbStage; private Integer sort;
/** /**
* 父级ID * 父级ID
*/ */
private Long parentId; private Long parentId;
/** /**
* 项目文件ID * 层级
*/ */
private Long projectFileId; private Integer level;
/** /**
* 序号 * 项目ID
*/ */
private String number; private Long projectId;
/** /**
* 排序 * 项目文件ID
*/ */
private Integer sort; private Long projectFileId;
/** /**
* 编码 * 编码
*/ */
@Excel(name = "编码")
private String code; private String code;
/** /**
* 名称 * 名称
*/ */
@Excel(name = "名称")
private String expenseName; private String expenseName;
/** /**
* 清单/费用项分类标识 * 清单/费用项分类标识
*/ */
@Excel(name = "清单/费用项分类标识")
private String expenseCategoryTag; private String expenseCategoryTag;
/** /**
* 项目特征 * 项目特征
*/ */
@Excel(name = "项目特征")
private String projectFeature; private String projectFeature;
/** /**
* 单位 * 单位
*/ */
@Excel(name = "单位")
private String unit; private String unit;
/** /**
* 工程量表达式 * 工程量表达式
*/ */
@Excel(name = "工程量表达式")
private String engineeringVolumeExpression; private String engineeringVolumeExpression;
/** /**
* 工程量 * 工程量
*/ */
@Excel(name = "工程量")
private String engineeringVolume; private String engineeringVolume;
/** /**
* 成本科目 * 成本科目
*/ */
@Excel(name = "成本科目")
private String cbSubject; private String cbSubject;
/** /**
* 招标控制价单价 * 招标控制价单价
*/ */
@Excel(name = "招标控制价单价")
private String tenderControlUnitPrice; private String tenderControlUnitPrice;
/** /**
* 招标控制价合价 * 招标控制价合价
*/ */
@Excel(name = "招标控制价合价")
private String tenderControlSumPrice; private String tenderControlSumPrice;
/** /**
* 不含税成本单价 * 不含税成本单价
*/ */
@Excel(name = "不含税成本单价")
private String excludeTaxCbUnitPrice; private String excludeTaxCbUnitPrice;
/** /**
* 不含税成本合价 * 不含税成本合价
*/ */
@Excel(name = "不含税成本合价")
private String excludeTaxCbSumPrice; private String excludeTaxCbSumPrice;
/** /**
* 成本税金合计 * 成本税金合计
*/ */
@Excel(name = "成本税金合计")
private String cbTaxSum; private String cbTaxSum;
/** /**
* 含税成本单价 * 含税成本单价
*/ */
@Excel(name = "含税成本单价")
private String includeTaxCbUnitPrice; private String includeTaxCbUnitPrice;
/** /**
* 含税成本合价 * 含税成本合价
*/ */
@Excel(name = "含税成本合价")
private String includeTaxCbSumPrice; private String includeTaxCbSumPrice;
/** /**
* 合价偏差 * 合价偏差
*/ */
@Excel(name = "合价偏差")
private String sumPriceDeviation; private String sumPriceDeviation;
/** /**
* 盈亏率 * 盈亏率
*/ */
@Excel(name = "盈亏率")
private String profitLossRatio; private String profitLossRatio;
/** /**
* 标准成本费用 * 标准成本费用
*/ */
@Excel(name = "标准成本费用")
private String standardCbItem; private String standardCbItem;
/** /**
* 数据源(0:导入、1:手动新增) * 备注
*/
@Excel(name = "备注")
private String remark;
/**
* 是否为导入数据
*/ */
private Integer dataOrigin; private Boolean isImport;
/** /**
* 删除状态(0:否、2:是) * 删除状态(0:否、2:是)
*/ */
@TableLogic(value = "0", delval = "2") @TableLogic(value = "0", delval = "2")
private Integer delFlag; private Integer delFlag;
/**
* 备注
*/
private String failRemark;
} }
package com.dsk.cscec.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author sxk
* @date 2024.03.01
* @time 17:59
*/
@Data
public class AddCbDirectExpenseBo {
/**
* 清ID
*/
@NotNull(message = "清ID不能为空")
private Long qingId;
/**
* 编码
*/
@NotBlank(message = "编码不能为空")
private String code;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空")
private String expenseName;
/**
* 单位
*/
@NotBlank(message = "单位不能为空")
private String unit;
/**
* 单价
*/
@NotBlank(message = "单价不能为空")
private String tenderControlUnitPrice;
/**
* 特征描述
*/
private String projectFeature;
}
\ No newline at end of file
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.CbDirectExpense;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
* @author sxk
* @date 2024.03.01
* @time 17:03
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CbDirectExpenseDataDetailVo extends CbDirectExpense {
/**
* 子集
*/
private List<CbDirectExpenseDataDetailVo> childrenList = new ArrayList<>();
;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author sxk
* @date 2024.03.01
* @time 09:34
*/
@Data
public class CbDirectExpenseMenuVo {
/**
* 菜单ID
*/
private Long menuId;
/**
* 父级ID
*/
private Long parentId;
/**
* 菜单名称
*/
private String menuName;
/**
* 菜单层级
*/
private Integer menuLevel;
/**
* 子菜单
*/
private List<CbDirectExpenseMenuVo> childrenList = new ArrayList<>();
}
...@@ -2,6 +2,10 @@ package com.dsk.cscec.mapper; ...@@ -2,6 +2,10 @@ package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbDirectExpense; import com.dsk.cscec.domain.CbDirectExpense;
import com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 直接费成本表(CbDirectExpense)表数据库访问层 * 直接费成本表(CbDirectExpense)表数据库访问层
...@@ -10,6 +14,14 @@ import com.dsk.cscec.domain.CbDirectExpense; ...@@ -10,6 +14,14 @@ import com.dsk.cscec.domain.CbDirectExpense;
* @since 2024-02-05 14:43:31 * @since 2024-02-05 14:43:31
*/ */
public interface CbDirectExpenseMapper extends BaseMapper<CbDirectExpense> { public interface CbDirectExpenseMapper extends BaseMapper<CbDirectExpense> {
/**
* 查询清单/费用项分类标识为数字的数字
*
* @param projectId 项目ID
* @param regx 正则表达式1-10
* @param deleteFlagExist 删除标识
*/
List<CbDirectExpenseMenuVo> selectMenuData(@Param("projectId") Long projectId, @Param("regx") String regx, @Param("deleteFlagExist") Integer deleteFlagExist);
} }
...@@ -2,6 +2,11 @@ package com.dsk.cscec.service; ...@@ -2,6 +2,11 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbDirectExpense; import com.dsk.cscec.domain.CbDirectExpense;
import com.dsk.cscec.domain.bo.AddCbDirectExpenseBo;
import com.dsk.cscec.domain.vo.CbDirectExpenseDataDetailVo;
import com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo;
import java.util.List;
/** /**
* 直接费成本表(CbDirectExpense)表服务接口 * 直接费成本表(CbDirectExpense)表服务接口
...@@ -10,6 +15,35 @@ import com.dsk.cscec.domain.CbDirectExpense; ...@@ -10,6 +15,35 @@ import com.dsk.cscec.domain.CbDirectExpense;
* @since 2024-02-05 14:43:34 * @since 2024-02-05 14:43:34
*/ */
public interface CbDirectExpenseService extends IService<CbDirectExpense> { public interface CbDirectExpenseService extends IService<CbDirectExpense> {
/**
* 获取直接费菜单
*
* @param projectId 项目ID
* @return 直接费菜单
*/
CbDirectExpenseMenuVo getMenuList(Long projectId);
/**
* 直接费数据解析
*
* @param projectId 项目ID
* @param cbStage 成本阶段
*/
void parseDirectExpenseData(Long projectId, Integer cbStage) throws Exception;
/**
* 获取直接费数据详情
*
* @param menuId 菜单ID
* @return 数据详情
*/
List<CbDirectExpenseDataDetailVo> getDataDetail(Long menuId);
/**
* 新增直接费费用项
*
* @param addBo 费用项
* @return 新增结果
*/
Integer addExpense(AddCbDirectExpenseBo addBo);
} }
...@@ -56,6 +56,8 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -56,6 +56,8 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
private CbProjectOtherService projectOtherService; private CbProjectOtherService projectOtherService;
@Resource @Resource
private ICbCostMeasureService costMeasureService; private ICbCostMeasureService costMeasureService;
@Resource
private CbDirectExpenseService directExpenseService;
/** /**
* 新增项目 * 新增项目
...@@ -124,10 +126,11 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -124,10 +126,11 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
projectFile.setFailRemark(null); projectFile.setFailRemark(null);
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
//TODO:调各个成本类型的解析文件方法 //调各个成本类型的解析文件方法
Integer cbStage = projectRecord.getCbStage(); Integer cbStage = projectRecord.getCbStage();
String username = Objects.requireNonNull(LoginHelper.getLoginUser()).getUsername(); String username = Objects.requireNonNull(LoginHelper.getLoginUser()).getUsername();
//直接费成本 //直接费成本
directExpenseService.parseDirectExpenseData(projectId, cbStage);
//工料汇总 //工料汇总
CbProjectBaseBo projectBaseBo = new CbProjectBaseBo(); CbProjectBaseBo projectBaseBo = new CbProjectBaseBo();
projectBaseBo.setProjectId(projectId); projectBaseBo.setProjectId(projectId);
...@@ -178,7 +181,7 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -178,7 +181,7 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
//判断是否有历史阶段 //判断是否有历史阶段
searchVo.setHasChildren(baseMapper.selectCount(new LambdaQueryWrapper<CbProjectRecord>() searchVo.setHasChildren(baseMapper.selectCount(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getRelatedId, searchVo.getRelatedId()) .eq(CbProjectRecord::getRelatedId, searchVo.getRelatedId())
.ne(CbProjectRecord::getProjectFileStatus,CbProjectConstants.PROJECT_FILE_STATUS_PREPARING)) > 1 .ne(CbProjectRecord::getProjectFileStatus, CbProjectConstants.PROJECT_FILE_STATUS_PREPARING)) > 1
); );
//关键字标红 //关键字标红
......
...@@ -2,5 +2,13 @@ ...@@ -2,5 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.CbDirectExpenseMapper"> <mapper namespace="com.dsk.cscec.mapper.CbDirectExpenseMapper">
<select id="selectMenuData" resultType="com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo">
select cde.id menuId, cde.parent_id, cde.expense_name menuName, cde.level menuLevel
from cb_direct_expense cde
where cde.project_id = #{projectId}
and cde.expense_category_tag regexp #{regx}
and cde.del_flag = #{deleteFlagExist}
order by cde.sort
</select>
</mapper> </mapper>
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