Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@ -175,7 +175,7 @@ sms:
|
||||
# 配置源类型用于标定配置来源(interface,yaml)
|
||||
config-type: yaml
|
||||
# 用于标定yml中的配置是否开启短信拦截,接口配置不受此限制
|
||||
restricted: true
|
||||
restricted: false
|
||||
# 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效
|
||||
minute-max: 1
|
||||
# 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效
|
||||
|
||||
@ -326,7 +326,7 @@ ys7:
|
||||
app-key: 3acf9f1a43dc4209841e0893003db0a2
|
||||
app-secret: 09e29c70ae1161fbc3ce2030fc09ba2e
|
||||
job:
|
||||
capture-enabled: true # 控制是否启用萤石抓拍任务
|
||||
capture-enabled: false # 控制是否启用萤石抓拍任务
|
||||
device-sync-enabled: true # 控制是否同步萤石设备
|
||||
# 斯巴达算法
|
||||
sparta:
|
||||
|
||||
@ -186,14 +186,6 @@ public class ProjectBigScreenController extends BaseController {
|
||||
@GetMapping("/news/{projectId}")
|
||||
public R<List<BusProjectNewsVo>> getProjectNews(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long projectId) {
|
||||
// List<BusCorporateEvents> busCorporateEvents = projectBigScreenMapper.getBusCorporateEvents();
|
||||
// return R.ok(busCorporateEvents.stream().map(event -> {
|
||||
// BusProjectNewsVo vo = new BusProjectNewsVo();
|
||||
// vo.setId(event.getId());
|
||||
// vo.setTitle(event.getHeadline());
|
||||
// vo.setContent(event.getContent());
|
||||
// return vo;
|
||||
// }).toList());
|
||||
return R.ok(projectBigScreenService.getProjectNews(projectId));
|
||||
}
|
||||
|
||||
@ -204,23 +196,6 @@ public class ProjectBigScreenController extends BaseController {
|
||||
@GetMapping("/safetyInspection/{projectId}")
|
||||
public R<List<ProjectSafetyInspectionVo>> getProjectSafetyInspection(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long projectId) {
|
||||
/* BusProject project = projectService.getById(projectId);
|
||||
projectId = project.getGoId();
|
||||
String pic;
|
||||
if (projectId == 60) {
|
||||
pic = "http://xny.yj-3d.com:7464";
|
||||
} else {
|
||||
pic = "http://xny.yj-3d.com:7363";
|
||||
}
|
||||
List<BusTour> busTours = projectBigScreenMapper.selectTourByProjectId(projectId);
|
||||
return R.ok(busTours.stream().map(tour -> {
|
||||
ProjectSafetyInspectionVo vo = new ProjectSafetyInspectionVo();
|
||||
vo.setId(tour.getId());
|
||||
vo.setViolationType(tour.getTourType());
|
||||
vo.setPicture(pic + tour.getPicture());
|
||||
vo.setCreateTime(tour.getCreatedAt());
|
||||
return vo;
|
||||
}).toList());*/
|
||||
return R.ok(projectBigScreenService.getProjectSafetyInspection(projectId));
|
||||
}
|
||||
|
||||
@ -231,51 +206,6 @@ public class ProjectBigScreenController extends BaseController {
|
||||
@GetMapping("/people/{projectId}")
|
||||
public R<ProjectPeopleVo> getProjectPeople(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long projectId) {
|
||||
// BusProject project = projectService.getById(projectId);
|
||||
// projectId = project.getGoId();
|
||||
// Integer projectUserCount = projectBigScreenMapper.getProjectUserCount(projectId);
|
||||
// ProjectPeopleVo vo = new ProjectPeopleVo();
|
||||
// vo.setPeopleCount(BigDecimal.valueOf(projectUserCount));
|
||||
// Integer attendanceCount = projectBigScreenMapper.getAttendanceCount(projectId, DateUtils.getDate());
|
||||
// vo.setAttendanceCount(BigDecimal.valueOf(attendanceCount));
|
||||
// vo.setAttendanceRate(BigDecimalUtil.toPercentage(BigDecimal.valueOf(attendanceCount), BigDecimal.valueOf(projectUserCount)));
|
||||
// List<BusConstructionUser> projectUserList = projectBigScreenMapper.getProjectUserList(projectId);
|
||||
// List<BusProjectTeamByGo> teamList = projectBigScreenMapper.getTeamList(projectId);
|
||||
//
|
||||
// List<ProjectTeamAttendanceVo> teamAttendanceList = new ArrayList<>();
|
||||
// String punchRange = project.getPunchRange();
|
||||
// String punchTime = "";
|
||||
// if (punchRange != null) {
|
||||
// String start = punchRange.split(",")[0];
|
||||
// punchTime = LocalDate.now() + " " + start;
|
||||
// }
|
||||
// if (projectUserList != null && teamList != null) {
|
||||
// projectUserList = projectUserList.stream().filter(user -> user.getTeamId() != null).toList();
|
||||
// Map<Long, List<BusConstructionUser>> userMap = projectUserList.stream()
|
||||
// .collect(Collectors.groupingBy(BusConstructionUser::getTeamId));
|
||||
// for (BusProjectTeamByGo team : teamList) {
|
||||
// ProjectTeamAttendanceVo vo1 = new ProjectTeamAttendanceVo();
|
||||
// vo1.setId(team.getId());
|
||||
// vo1.setTeamName(team.getName());
|
||||
// vo1.setAttendanceTime(punchTime);
|
||||
// vo1.setAttendanceNumber(BigDecimal.ZERO);
|
||||
// List<BusConstructionUser> userList = userMap.get(team.getId());
|
||||
// if (CollUtil.isNotEmpty(userList)) {
|
||||
// List<String> list = userList.stream().map(BusConstructionUser::getOpenid).distinct().toList();
|
||||
// Integer aCount = projectBigScreenMapper.getAttendanceCountByOpenIds(list, LocalDate.now());
|
||||
// vo1.setAttendanceNumber(BigDecimal.valueOf(aCount));
|
||||
// }
|
||||
// vo1.setAllNumber(BigDecimal.valueOf(userMap.getOrDefault(team.getId(), List.of()).size()));
|
||||
// if (vo1.getAttendanceNumber() != null && vo1.getAllNumber() != null && vo1.getAllNumber().compareTo(BigDecimal.ZERO) != 0) {
|
||||
// vo1.setAttendanceRate(BigDecimalUtil.toPercentage(vo1.getAttendanceNumber(), vo1.getAllNumber()));
|
||||
// } else {
|
||||
// vo1.setAttendanceRate(BigDecimal.ZERO);
|
||||
// }
|
||||
// teamAttendanceList.add(vo1);
|
||||
// }
|
||||
// }
|
||||
// vo.setTeamAttendanceList(teamAttendanceList);
|
||||
// return R.ok(vo);
|
||||
return R.ok(projectBigScreenService.getProjectPeople(projectId));
|
||||
}
|
||||
|
||||
@ -296,18 +226,7 @@ public class ProjectBigScreenController extends BaseController {
|
||||
@GetMapping("/generalize/{projectId}")
|
||||
public R<String> getProjectGeneralize(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long projectId) {
|
||||
// BusProject project = projectService.getById(projectId);
|
||||
// if (project != null) {
|
||||
// Long goId = project.getGoId();
|
||||
// if (goId != null) {
|
||||
// List<SysProjectIntroduce> sysProjectIntroduces = projectBigScreenMapper.selectByProjectId(goId);
|
||||
// if (CollUtil.isNotEmpty(sysProjectIntroduces)) {
|
||||
// return R.ok(sysProjectIntroduces.getFirst().getRichText());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
return R.ok(projectBigScreenService.getProjectGeneralize(projectId));
|
||||
// return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -347,11 +266,11 @@ public class ProjectBigScreenController extends BaseController {
|
||||
if (count > 0) {
|
||||
throw new ServiceException("已存在同名萤石摄像头", HttpStatus.CONFLICT);
|
||||
}
|
||||
// todo 更新云端名称
|
||||
/* Boolean result = ys7Manager.updateDeviceName(one.getDeviceSerial(), deviceName);
|
||||
// 更新云端名称
|
||||
Boolean result = ys7Manager.updateDeviceName(one.getDeviceSerial(), deviceName);
|
||||
if (!result) {
|
||||
throw new ServiceException("更新云端萤石摄像头名称异常", HttpStatus.ERROR);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
return toAjax(othYs7DeviceService.updateById(ys7Device));
|
||||
}
|
||||
@ -409,7 +328,7 @@ public class ProjectBigScreenController extends BaseController {
|
||||
@SaCheckPermission("project:big:screen")
|
||||
@PostMapping("/updatePosition")
|
||||
public R<Void> updatePosition(@RequestBody ProjectUpdateDto dto) {
|
||||
return toAjax(projectService.updatePosition(dto));
|
||||
return toAjax(projectService.updatePosition(dto));
|
||||
}
|
||||
|
||||
|
||||
@ -437,7 +356,7 @@ public class ProjectBigScreenController extends BaseController {
|
||||
*/
|
||||
// @SaCheckPermission("project:big:screen")
|
||||
@GetMapping("/setWrjHc")
|
||||
public void setWrjHc(){
|
||||
public void setWrjHc() {
|
||||
projectBigScreenService.setWrjHc();
|
||||
}
|
||||
|
||||
@ -446,7 +365,7 @@ public class ProjectBigScreenController extends BaseController {
|
||||
*/
|
||||
// @SaCheckPermission("project:big:screen")
|
||||
@GetMapping("/getInfoData")
|
||||
public R<Map<String, Map<String, Object>>> getInfoData(TanchuangInfoReq req){
|
||||
public R<Map<String, Map<String, Object>>> getInfoData(TanchuangInfoReq req) {
|
||||
return R.ok(projectBigScreenService.getInfoData(req));
|
||||
}
|
||||
|
||||
|
||||
@ -19,9 +19,7 @@ import org.dromara.system.service.ISysRoleService;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
@ -59,6 +57,7 @@ public class DesignFileJob {
|
||||
.eq(DesSmsRecord::getAgain, "1")
|
||||
.le(DesSmsRecord::getCreateTime, threeDaysAgo) // Date类型直接比较
|
||||
);
|
||||
HashSet<String> phoneNumbers = new HashSet<>();
|
||||
for (DesSmsRecord record : records) {
|
||||
DesVolumeFile desVolumeFile = designFileService.getById(record.getVolumeFileId());
|
||||
DesVolumeCatalog desVolumeCatalog = volumeCatalogService.getById(desVolumeFile.getVolumeCatalogId());
|
||||
@ -85,10 +84,13 @@ public class DesignFileJob {
|
||||
List<Long> list1 = list.stream().map(DesVolumeFileViewer::getUserId).toList();
|
||||
//找出没有查看的人 发送短信
|
||||
List<SysUser> list2 = sysUsers.stream().filter(vo -> !list1.contains(vo.getUserId())).toList();
|
||||
asyncUtil.sendSms(list2.stream().map(SysUser::getPhonenumber).toList(), "config5");
|
||||
phoneNumbers.addAll(list2.stream().map(SysUser::getPhonenumber).toList());
|
||||
|
||||
}
|
||||
|
||||
if(CollectionUtil.isEmpty(phoneNumbers)){
|
||||
return;
|
||||
}
|
||||
asyncUtil.sendSms(new ArrayList<>(phoneNumbers), "config5");
|
||||
List<Long> list1 = records.stream().map(DesSmsRecord::getId).toList();
|
||||
|
||||
desSmsRecordService.lambdaUpdate().in(DesSmsRecord::getId, list1)
|
||||
|
||||
@ -51,32 +51,40 @@ public class InspectionJob {
|
||||
|
||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("config4");
|
||||
|
||||
List<String> phones = new ArrayList<>();
|
||||
List<Long> userIds = new ArrayList<>();
|
||||
// 每500条记录作为一批进行处理
|
||||
int batchSize = 500;
|
||||
for (int i = 0; i < list.size(); i += batchSize) {
|
||||
int endIndex = Math.min(i + batchSize, list.size());
|
||||
List<QltQualityInspection> batch = list.subList(i, endIndex);
|
||||
List<Long> userIds = new ArrayList<>();
|
||||
|
||||
for (QltQualityInspection qualityInspection : batch) {
|
||||
Long correctorId = qualityInspection.getCorrectorId();
|
||||
String phonenumber = userService.queryById(correctorId).getPhonenumber();
|
||||
if (phonenumber == null) {
|
||||
continue;
|
||||
}
|
||||
if(phones.contains(phonenumber)){
|
||||
continue;
|
||||
}
|
||||
phones.add(phonenumber);
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap<String, String>());
|
||||
if (!smsResponse.isSuccess()) {
|
||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||
}
|
||||
userIds.add(correctorId);
|
||||
}
|
||||
if(userIds.isEmpty()){
|
||||
continue;
|
||||
if(!userIds.contains(correctorId)){
|
||||
userIds.add(correctorId);
|
||||
}
|
||||
|
||||
}
|
||||
log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
||||
}
|
||||
if(!userIds.isEmpty()){
|
||||
SseMessageDto sseMessageDto = new SseMessageDto();
|
||||
sseMessageDto.setMessage("您负责整改的质量工单已逾期,请尽快前往处理!");
|
||||
sseMessageDto.setUserIds(userIds);
|
||||
SseMessageUtils.publishMessage(sseMessageDto);
|
||||
log.info("质量工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
||||
}
|
||||
|
||||
log.info("执行定时任务:质量工单短信提醒完成,总处理数量: {}", list.size());
|
||||
@ -93,34 +101,38 @@ public class InspectionJob {
|
||||
|
||||
SmsBlend smsBlend = SmsFactory.getSmsBlend("config6");
|
||||
|
||||
List<String> phones = new ArrayList<>();
|
||||
List<Long> userIds = new ArrayList<>();
|
||||
// 每500条记录作为一批进行处理
|
||||
int batchSize = 500;
|
||||
for (int i = 0; i < list.size(); i += batchSize) {
|
||||
int endIndex = Math.min(i + batchSize, list.size());
|
||||
List<HseSafetyInspection> batch = list.subList(i, endIndex);
|
||||
|
||||
List<Long> userIds = new ArrayList<>();
|
||||
for (HseSafetyInspection safetyInspection : batch) {
|
||||
Long correctorId = safetyInspection.getCorrectorId();
|
||||
String phonenumber = userService.queryById(correctorId).getPhonenumber();
|
||||
if (phonenumber == null) {
|
||||
continue;
|
||||
}
|
||||
if(phones.contains(phonenumber)){
|
||||
continue;
|
||||
}
|
||||
phones.add(phonenumber);
|
||||
SmsResponse smsResponse = smsBlend.sendMessage(phonenumber, new LinkedHashMap<String, String>());
|
||||
if (!smsResponse.isSuccess()) {
|
||||
log.error("验证码短信发送异常 => {}", smsResponse);
|
||||
}
|
||||
userIds.add(correctorId);
|
||||
}
|
||||
|
||||
log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
||||
}
|
||||
if(!userIds.isEmpty()){
|
||||
SseMessageDto sseMessageDto = new SseMessageDto();
|
||||
sseMessageDto.setMessage("您负责整改的安全工单已逾期,请尽快前往处理!");
|
||||
sseMessageDto.setUserIds(userIds);
|
||||
SseMessageUtils.publishMessage(sseMessageDto);
|
||||
|
||||
log.info("安全工单短信提醒批次发送完成,当前批次数量: {}", batch.size());
|
||||
}
|
||||
|
||||
log.info("执行定时任务:安全工单短信提醒完成,总处理数量: {}", list.size());
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,4 +94,14 @@ public class MatMaterialsInventory extends BaseEntity {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 操作人id
|
||||
*/
|
||||
private Long operatorId;
|
||||
|
||||
/**
|
||||
* 分包单位id
|
||||
*/
|
||||
private Long recipientId;
|
||||
|
||||
}
|
||||
|
||||
@ -50,6 +50,11 @@ public class OutConstructionValue extends BaseEntity {
|
||||
*/
|
||||
private Long progressCategoryId;
|
||||
|
||||
/**
|
||||
* 分项工程名称
|
||||
*/
|
||||
private String progressCategoryName;
|
||||
|
||||
/**
|
||||
* 计划详情id
|
||||
*/
|
||||
|
||||
@ -25,4 +25,19 @@ public class OutConstructionAllValueVo implements Serializable {
|
||||
* 对甲产值
|
||||
*/
|
||||
private BigDecimal ownerValue;
|
||||
|
||||
/**
|
||||
* 人工填报数量
|
||||
*/
|
||||
private BigDecimal artificialNum;
|
||||
|
||||
/**
|
||||
* 无人机识别数量
|
||||
*/
|
||||
private BigDecimal uavNum;
|
||||
|
||||
/**
|
||||
* 确认数量
|
||||
*/
|
||||
private BigDecimal confirmNum;
|
||||
}
|
||||
|
||||
@ -171,4 +171,19 @@ public class OutConstructionValueVo implements Serializable {
|
||||
* 工作类型
|
||||
*/
|
||||
private String workType;
|
||||
|
||||
/**
|
||||
* 计量方式(0无 1数量 2百分比)
|
||||
*/
|
||||
private String unitType;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 完成数量
|
||||
*/
|
||||
private Integer completeNum;
|
||||
}
|
||||
|
||||
@ -110,7 +110,6 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
private LambdaQueryWrapper<OutConstructionValue> buildQueryWrapper(OutConstructionValueBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<OutConstructionValue> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(OutConstructionValue::getId);
|
||||
Long projectId = bo.getProjectId();
|
||||
List<Long> ids = new ArrayList<>();
|
||||
if (projectId != null) {
|
||||
@ -150,6 +149,9 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
lqw.in(OutConstructionValue::getProgressCategoryId, categoryIds);
|
||||
}
|
||||
}
|
||||
lqw.orderByAsc(OutConstructionValue::getProgressCategoryName);
|
||||
lqw.orderByDesc(OutConstructionValue::getProgressCategoryId);
|
||||
lqw.orderByDesc(OutConstructionValue::getReportDate);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@ -275,6 +277,27 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.setScale(4, RoundingMode.HALF_UP);
|
||||
vo.setOwnerValue(ownerValue);
|
||||
// 统计确认数量
|
||||
BigDecimal confirmNum = list.stream()
|
||||
.map(OutConstructionValueVo::getConfirmNum)
|
||||
.filter(Objects::nonNull)
|
||||
.map(BigDecimal::valueOf) // 转换成 BigDecimal
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setConfirmNum(confirmNum);
|
||||
// 统计人工填报数量
|
||||
BigDecimal artificialNum = list.stream()
|
||||
.map(OutConstructionValueVo::getArtificialNum)
|
||||
.filter(Objects::nonNull)
|
||||
.map(BigDecimal::valueOf) // 转换成 BigDecimal
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setArtificialNum(artificialNum);
|
||||
// 统计无人机识别数量
|
||||
BigDecimal uavNum = list.stream()
|
||||
.map(OutConstructionValueVo::getUavNum)
|
||||
.filter(Objects::nonNull)
|
||||
.map(BigDecimal::valueOf) // 转换成 BigDecimal
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
vo.setUavNum(uavNum);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@ -335,6 +358,8 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
PgsProgressCategoryVo pgsProgressCategoryVo = pgsProgressCategoryService.queryById(vo.getProgressCategoryId());
|
||||
vo.setProgressCategoryName(pgsProgressCategoryVo.getName());
|
||||
vo.setWorkType(pgsProgressCategoryVo.getWorkType());
|
||||
vo.setUnitType(pgsProgressCategoryVo.getUnitType());
|
||||
vo.setUnit(pgsProgressCategoryVo.getUnit());
|
||||
PgsProgressCategoryVo pgsProgressCategoryVo1 = pgsProgressCategoryService.queryById(pgsProgressCategoryVo.getParentId());
|
||||
vo.setCategoryId(pgsProgressCategoryVo1.getId());
|
||||
vo.setCategoryName(pgsProgressCategoryVo1.getName());
|
||||
@ -346,10 +371,14 @@ public class OutConstructionValueServiceImpl extends ServiceImpl<OutConstruction
|
||||
if (vo.getMatrixId() != null && vo.getMatrixId() != 0) {
|
||||
FacMatrix facMatrix = facMatrixService.getById(vo.getMatrixId());
|
||||
vo.setMatrixName(facMatrix.getMatrixName());
|
||||
vo.setCategoryName(facMatrix.getMatrixName() + "/" + pgsProgressCategoryVo1.getName());
|
||||
}
|
||||
BusProjectVo busProjectVo1 = busProjectService.queryById(pgsProgressCategoryVo.getProjectId());
|
||||
vo.setSubProjectId(busProjectVo1.getId());
|
||||
vo.setSubProjectName(busProjectVo1.getProjectName());
|
||||
|
||||
// 统计完成数量
|
||||
vo.setCompleteNum(vo.getArtificialNum() + vo.getUavNum());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -971,6 +971,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
value.setRangeId(rangeId);
|
||||
value.setMatrixId(category.getMatrixId());
|
||||
value.setProgressCategoryId(progressCategoryId);
|
||||
value.setProgressCategoryName(category.getName());
|
||||
value.setDetailId(planDetail.getId());
|
||||
BigDecimal finishedNumber = planDetail.getFinishedNumber();
|
||||
BigDecimal aiFill = planDetail.getAiFill();
|
||||
@ -1049,6 +1050,7 @@ public class PgsProgressPlanDetailServiceImpl extends ServiceImpl<PgsProgressPla
|
||||
value.setRangeId(range.getId());
|
||||
value.setMatrixId(category.getMatrixId());
|
||||
value.setProgressCategoryId(progressCategoryId);
|
||||
value.setProgressCategoryName(category.getName());
|
||||
value.setDetailId(planDetail.getId());
|
||||
BigDecimal finishedNumber = planDetail.getFinishedNumber();
|
||||
BigDecimal aiFill = planDetail.getAiFill();
|
||||
|
||||
@ -0,0 +1,118 @@
|
||||
package org.dromara.project.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.project.domain.BusAttendanceMachine;
|
||||
import org.dromara.project.domain.dto.attendance.*;
|
||||
import org.dromara.project.service.IBusAttendanceMachineService;
|
||||
import org.dromara.project.service.IBusAttendanceService;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Base64;
|
||||
|
||||
/**
|
||||
* 考勤
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-08-05
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping()
|
||||
@Slf4j
|
||||
public class BusAttendanceDeviceController extends BaseController {
|
||||
|
||||
private final IBusAttendanceService busAttendanceService;
|
||||
|
||||
private final IBusAttendanceMachineService busAttendanceMachineService;
|
||||
|
||||
@PostMapping("/api/v1/record/face")
|
||||
@SaIgnore
|
||||
public R<Boolean> punchCardByFace(@RequestBody DeviceDto dto) {
|
||||
//打印接收数据
|
||||
log.info("接收数据:{}", dto);
|
||||
if (dto.getLogs().isEmpty()) {
|
||||
return R.fail("没有数据");
|
||||
}
|
||||
Log first = dto.getLogs().getFirst();
|
||||
|
||||
Long userId = Long.valueOf(first.getUser_id());
|
||||
|
||||
BusAttendanceMachine one = busAttendanceMachineService.lambdaQuery()
|
||||
.eq(BusAttendanceMachine::getSn, dto.getSn())
|
||||
.last("limit 1")
|
||||
.one();
|
||||
if (one == null || one.getProjectId() == null) {
|
||||
return R.fail("考勤机不存在或未关联项目");
|
||||
}
|
||||
|
||||
String recogTime = first.getRecog_time();
|
||||
|
||||
LocalDateTime localDateTime = LocalDateTime.parse(recogTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
|
||||
BusAttendancePunchCardByFaceReq req = new BusAttendancePunchCardByFaceReq();
|
||||
DeviceLocation location = first.getLocation();
|
||||
req.setLat(location.getLatitude());
|
||||
req.setLng(location.getLongitude());
|
||||
req.setProjectId(one.getProjectId());
|
||||
req.setUserId(userId);
|
||||
req.setPunchTime(localDateTime);
|
||||
//打印req
|
||||
log.info("请求参数:{}", req);
|
||||
//base64转MultipartFile
|
||||
try {
|
||||
// 假设first.getImage()返回base64字符串,且你有一个文件名
|
||||
MultipartFile file = convert(first.getPhoto(), "face.jpg");
|
||||
log.info("开始打卡");
|
||||
return R.ok(busAttendanceService.punchCardByFace(file, req));
|
||||
} catch (IOException e) {
|
||||
return R.fail("文件转换失败");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static MultipartFile convert(String base64String, String fileName) throws IOException {
|
||||
// 先进行URL解码(如果是URL编码过的数据)
|
||||
try {
|
||||
base64String = java.net.URLDecoder.decode(base64String, "UTF-8");
|
||||
} catch (Exception e) {
|
||||
// 如果不是URL编码的数据,直接跳过
|
||||
}
|
||||
|
||||
// 去除base64前缀(如data:image/png;base64,)
|
||||
if (base64String.contains(",")) {
|
||||
base64String = base64String.split(",")[1];
|
||||
}
|
||||
|
||||
// 解码base64字符串
|
||||
byte[] decodedBytes = Base64.getDecoder().decode(base64String);
|
||||
|
||||
// 创建MultipartFile对象
|
||||
return new MockMultipartFile(fileName, fileName, "image/jpeg", decodedBytes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -5,6 +5,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
@ -41,4 +42,9 @@ public class BusAttendancePunchCardByFaceReq implements Serializable {
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 打卡时间
|
||||
*/
|
||||
private LocalDateTime punchTime;
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package org.dromara.project.domain.dto.attendance;
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.poi.ss.formula.functions.Count;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class DeviceDto {
|
||||
private String sn;
|
||||
private int Count;
|
||||
private List<Log> logs;
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package org.dromara.project.domain.dto.attendance;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class DeviceLocation {
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package org.dromara.project.domain.dto.attendance;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class Log {
|
||||
private String user_id;
|
||||
private String recog_type;
|
||||
private String recog_time;
|
||||
private String photo;
|
||||
private DeviceLocation location;
|
||||
}
|
||||
@ -1,5 +1,6 @@
|
||||
package org.dromara.project.domain.dto.projectteammember;
|
||||
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
@ -45,4 +46,9 @@ public class BusProjectTeamMemberCreateReq implements Serializable {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 分包公司id
|
||||
*/
|
||||
private Long contractorId;
|
||||
|
||||
}
|
||||
|
||||
@ -326,7 +326,11 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
}
|
||||
synchronized (userId.toString().intern()) {
|
||||
// 记录当前打卡时间
|
||||
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
if(req.getPunchTime() != null){
|
||||
now = req.getPunchTime();
|
||||
}
|
||||
|
||||
//打卡范围
|
||||
if (!checkInRange(req)) {
|
||||
@ -617,6 +621,9 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B
|
||||
public Boolean checkInRange(BusAttendancePunchCardByFaceReq req) {
|
||||
// 获取当前用户
|
||||
Long userId = LoginHelper.getUserId();
|
||||
if (req.getUserId() != null) {
|
||||
userId = req.getUserId();
|
||||
}
|
||||
Long projectId = req.getProjectId();
|
||||
|
||||
SysUserVo sysUserVo = userService.queryById(userId);
|
||||
|
||||
@ -176,11 +176,13 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
||||
LambdaUpdateWrapper<SubConstructionUser> constructionUserLuw = Wrappers.lambdaUpdate(SubConstructionUser.class)
|
||||
.eq(SubConstructionUser::getId, constructionUser.getId())
|
||||
.set(SubConstructionUser::getProjectId, req.getProjectId())
|
||||
.set(req.getContractorId()!=null,SubConstructionUser::getContractorId, req.getContractorId())
|
||||
.set(SubConstructionUser::getTeamId, projectTeamMember.getTeamId())
|
||||
.set(SubConstructionUser::getTeamName, projectTeam.getTeamName())
|
||||
.set(SubConstructionUser::getEntryDate, new Date())
|
||||
.set(SubConstructionUser::getLeaveDate, null)
|
||||
.set(SubConstructionUser::getExitStatus, "0")
|
||||
.set(SubConstructionUser::getUserRole, "0")
|
||||
.set(StrUtil.isNotBlank(req.getTypeOfWork()),SubConstructionUser::getTypeOfWork,req.getTypeOfWork())
|
||||
.set(constructionUser.getFirstDate() == null, SubConstructionUser::getFirstDate, LocalDate.now());
|
||||
constructionUserService.update(constructionUserLuw);
|
||||
@ -212,6 +214,10 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamM
|
||||
|
||||
roleService.cleanOnlineUser(Collections.singletonList(constructionUser.getSysUserId()));
|
||||
|
||||
if(req.getContractorId()!=null){
|
||||
userService.updateFb(constructionUser.getSysUserId(),req.getContractorId(),false);
|
||||
}
|
||||
|
||||
return projectTeamMember.getId();
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,8 @@ package org.dromara.quality.domain.vo.qualityinspection;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.dromara.common.translation.annotation.Translation;
|
||||
import org.dromara.common.translation.constant.TransConstant;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@ -23,6 +25,12 @@ public class QltQualityInspectionGis {
|
||||
/**
|
||||
* 巡检类型
|
||||
*/
|
||||
private String inspectionType;
|
||||
|
||||
/**
|
||||
* 巡检类型名称
|
||||
*/
|
||||
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "inspectionType", other = "quality_inspection_check_type")
|
||||
private String inspectionTypeLabel;
|
||||
|
||||
/**
|
||||
|
||||
@ -27,7 +27,12 @@ public class QltQualityInspectionListGisVo implements Serializable {
|
||||
private Long count;
|
||||
|
||||
/**
|
||||
* 巡检情况
|
||||
* 整改列表
|
||||
*/
|
||||
private List<QltQualityInspectionGis> correctList;
|
||||
|
||||
/**
|
||||
* 整改总数
|
||||
*/
|
||||
private Long correctSituation;
|
||||
|
||||
|
||||
@ -36,10 +36,8 @@ import org.dromara.quality.domain.vo.qualityinspection.QltQualityInspectionListG
|
||||
import org.dromara.quality.domain.vo.qualityinspection.QltQualityInspectionVo;
|
||||
import org.dromara.quality.mapper.QltQualityInspectionMapper;
|
||||
import org.dromara.quality.service.IQltQualityInspectionService;
|
||||
import org.dromara.system.domain.vo.SysDictDataVo;
|
||||
import org.dromara.system.domain.vo.SysOssVo;
|
||||
import org.dromara.system.service.ISysDictDataService;
|
||||
import org.dromara.system.service.ISysDictTypeService;
|
||||
import org.dromara.system.service.ISysOssService;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.dromara.websocket.ChatServerHandler;
|
||||
@ -83,9 +81,6 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
|
||||
@Resource
|
||||
private ISysDictDataService dictDataService;
|
||||
|
||||
@Resource
|
||||
private ISysDictTypeService dictTypeService;
|
||||
|
||||
@Resource
|
||||
private ChatServerHandler chatServerHandler;
|
||||
|
||||
@ -148,39 +143,33 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
|
||||
if (CollUtil.isEmpty(qualityInspectionList)) {
|
||||
return gisVo;
|
||||
}
|
||||
// 获取字典值
|
||||
List<SysDictDataVo> dictDataVoList = dictTypeService.selectDictDataByType(QltQualityConstant.QUALITY_INSPECTION_CHECK_TYPE);
|
||||
Map<String, String> dictDataMap = dictDataVoList.stream().collect(Collectors.toMap(SysDictDataVo::getDictValue, SysDictDataVo::getDictLabel));
|
||||
// 获取最新的检查工单
|
||||
List<QltQualityInspection> topList = qualityInspectionList.stream()
|
||||
.sorted(Comparator.comparing(QltQualityInspection::getCreateTime).reversed())
|
||||
.limit(Optional.ofNullable(req.getPageSize()).orElse(20))
|
||||
.toList();
|
||||
// 转换为 GIS 对象,并设置标签
|
||||
List<QltQualityInspectionGis> gisList = topList.stream().map(qualityInspection -> {
|
||||
QltQualityInspectionGis gis = new QltQualityInspectionGis();
|
||||
BeanUtils.copyProperties(qualityInspection, gis);
|
||||
String label = dictDataMap.get(qualityInspection.getInspectionType());
|
||||
if (label != null) {
|
||||
gis.setInspectionTypeLabel(label);
|
||||
}
|
||||
return gis;
|
||||
}).toList();
|
||||
// 获取整改情况
|
||||
long passCount = 0L;
|
||||
for (QltQualityInspection qualityInspection : qualityInspectionList) {
|
||||
if ("1".equals(qualityInspection.getIsReply())) {
|
||||
if (!qualityInspection.getInspectionStatus().equals(QltQualityInspectionStatusEnum.INFORM.getValue())) {
|
||||
passCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
gisVo.setList(gisList);
|
||||
gisVo.setCount((long) qualityInspectionList.stream()
|
||||
// 获取巡检情况
|
||||
List<QltQualityInspectionGis> list = qualityInspectionList.stream()
|
||||
.filter(q -> "2".equals(q.getIsReply()))
|
||||
.toList()
|
||||
.size());
|
||||
gisVo.setCorrectSituation(passCount);
|
||||
.toList().stream().map(q -> {
|
||||
QltQualityInspectionGis gis = new QltQualityInspectionGis();
|
||||
BeanUtils.copyProperties(q, gis);
|
||||
return gis;
|
||||
}).toList();
|
||||
gisVo.setList(list.stream()
|
||||
.sorted(Comparator.comparing(QltQualityInspectionGis::getCreateTime).reversed())
|
||||
.limit(Optional.ofNullable(req.getPageSize()).orElse(20))
|
||||
.toList());
|
||||
gisVo.setCount((long) list.size());
|
||||
// 获取整改情况
|
||||
List<QltQualityInspectionGis> correctList = qualityInspectionList.stream()
|
||||
.filter(q -> "1".equals(q.getIsReply()))
|
||||
.filter(q -> !q.getInspectionStatus().equals(QltQualityInspectionStatusEnum.INFORM.getValue()))
|
||||
.toList().stream().map(q -> {
|
||||
QltQualityInspectionGis gis = new QltQualityInspectionGis();
|
||||
BeanUtils.copyProperties(q, gis);
|
||||
return gis;
|
||||
}).toList();
|
||||
gisVo.setCorrectSituation((long) correctList.size());
|
||||
gisVo.setCorrectList(correctList.stream()
|
||||
.sorted(Comparator.comparing(QltQualityInspectionGis::getCreateTime).reversed())
|
||||
.limit(Optional.ofNullable(req.getPageSize()).orElse(20))
|
||||
.toList());
|
||||
// gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / qualityInspectionList.size()));
|
||||
return gisVo;
|
||||
}
|
||||
|
||||
@ -3,7 +3,6 @@ package org.dromara.safety.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
@ -74,7 +73,7 @@ public class HseRecognizeRecordController extends BaseController {
|
||||
@SaCheckPermission("safety:recognizeRecord:remove")
|
||||
@Log(title = "识别记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{id}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
public R<Void> remove(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return toAjax(recognizeRecordService.deleteById(id));
|
||||
}
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
package org.dromara.safety.domain.vo.safetyinspection;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-10-17 09:26
|
||||
*/
|
||||
@Data
|
||||
public class HseSafetyInspectionGis implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3098473090533804934L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 检查类型
|
||||
*/
|
||||
private String checkType;
|
||||
|
||||
/**
|
||||
* 违章类型
|
||||
*/
|
||||
private String violationType;
|
||||
|
||||
/**
|
||||
* 巡检结果
|
||||
*/
|
||||
private String inspectionResult;
|
||||
|
||||
/**
|
||||
* 工单状态(1通知 2整改 3复查)
|
||||
*/
|
||||
private String status;
|
||||
|
||||
}
|
||||
@ -27,11 +27,21 @@ public class HseSafetyInspectionListGisVo implements Serializable {
|
||||
*/
|
||||
private Long teamMeetingCount;
|
||||
|
||||
/**
|
||||
* 安全巡检列表
|
||||
*/
|
||||
private List<HseSafetyInspectionGis> safetyInspectionList;
|
||||
|
||||
/**
|
||||
* 安全巡检总数
|
||||
*/
|
||||
private Long safetyInspectionCount;
|
||||
|
||||
/**
|
||||
* 整改情况列表
|
||||
*/
|
||||
private List<HseSafetyInspectionGis> correctSituationList;
|
||||
|
||||
/**
|
||||
* 整改情况总数
|
||||
*/
|
||||
|
||||
@ -35,6 +35,7 @@ import org.dromara.safety.domain.HseSafetyInspection;
|
||||
import org.dromara.safety.domain.HseTeamMeeting;
|
||||
import org.dromara.safety.domain.dto.safetyinspection.*;
|
||||
import org.dromara.safety.domain.enums.HseSafetyInspectionStatusEnum;
|
||||
import org.dromara.safety.domain.vo.safetyinspection.HseSafetyInspectionGis;
|
||||
import org.dromara.safety.domain.vo.safetyinspection.HseSafetyInspectionListGisVo;
|
||||
import org.dromara.safety.domain.vo.safetyinspection.HseSafetyInspectionVo;
|
||||
import org.dromara.safety.domain.vo.teammeeting.HseTeamMeetingGis;
|
||||
@ -229,11 +230,36 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
}
|
||||
}
|
||||
}
|
||||
List<HseSafetyInspection> passList = safetyInspectionList.stream()
|
||||
.filter(q -> "1".equals(q.getIsReply()))
|
||||
.filter(q -> !q.getStatus().equals(HseSafetyInspectionStatusEnum.INFORM.getValue()))
|
||||
.toList();
|
||||
List<HseSafetyInspectionGis> pass = passList.stream().map(p -> {
|
||||
HseSafetyInspectionGis gis = new HseSafetyInspectionGis();
|
||||
gis.setId(p.getId());
|
||||
gis.setCheckType(p.getCheckType());
|
||||
gis.setViolationType(p.getViolationType());
|
||||
gis.setInspectionResult(p.getInspectionResult());
|
||||
gis.setStatus(p.getStatus());
|
||||
return gis;
|
||||
}).toList();
|
||||
gisVo.setTeamMeetingCount((long) teamMeetings.size());
|
||||
gisVo.setSafetyInspectionCount((long) safetyInspectionList.stream()
|
||||
List<HseSafetyInspectionGis> inspections = safetyInspectionList.stream()
|
||||
.filter(q -> "2".equals(q.getIsReply()))
|
||||
.toList().size());
|
||||
.toList()
|
||||
.stream().map(p -> {
|
||||
HseSafetyInspectionGis gis = new HseSafetyInspectionGis();
|
||||
gis.setId(p.getId());
|
||||
gis.setCheckType(p.getCheckType());
|
||||
gis.setViolationType(p.getViolationType());
|
||||
gis.setInspectionResult(p.getInspectionResult());
|
||||
gis.setStatus(p.getStatus());
|
||||
return gis;
|
||||
}).toList();
|
||||
gisVo.setSafetyInspectionCount((long) inspections.size());
|
||||
gisVo.setSafetyInspectionList(inspections);
|
||||
gisVo.setCorrectSituationCount(passCount);
|
||||
gisVo.setCorrectSituationList(pass);
|
||||
gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / safetyInspectionList.size()));
|
||||
return gisVo;
|
||||
}
|
||||
|
||||
@ -404,7 +404,7 @@ public class SysUserController extends BaseController {
|
||||
@PutMapping("/fb/{userId}/{contractorId}")
|
||||
public R<Boolean> updateFb(@PathVariable("userId") Long userId,
|
||||
@PathVariable("contractorId") Long contractorId) {
|
||||
return R.ok(userService.updateFb(userId, contractorId));
|
||||
return R.ok(userService.updateFb(userId, contractorId,true));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -275,11 +275,13 @@ public interface ISysUserService {
|
||||
|
||||
List<SysUserVo> selectUserListByAppUserType(String appUserType,Long projectId,Long contractorId);
|
||||
|
||||
Boolean updateFb(Long userId,Long contractorId);
|
||||
Boolean updateFb(Long userId,Long contractorId,Boolean isSub);
|
||||
|
||||
List<SysUser> selectUserByRoleIdAndProjectId(Long roleId,Long projectId);
|
||||
|
||||
List<SysUser> selectUserByRoleIdsAndProjectId(List<Long> roleIds,Long projectId);
|
||||
|
||||
String queryNameById(Long id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1223,17 +1223,20 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateFb(Long userId,Long contractorId) {
|
||||
public Boolean updateFb(Long userId,Long contractorId,Boolean isSub) {
|
||||
SysUser sysUser = baseMapper.selectById(userId);
|
||||
sysUser.setContractorId(contractorId);
|
||||
|
||||
SubConstructionUser constructionUser = constructionUserService.lambdaQuery()
|
||||
.eq(SubConstructionUser::getSysUserId, userId)
|
||||
.one();
|
||||
if(constructionUser != null){
|
||||
constructionUser.setContractorId(contractorId);
|
||||
constructionUserService.updateById(constructionUser);
|
||||
if(isSub){
|
||||
SubConstructionUser constructionUser = constructionUserService.lambdaQuery()
|
||||
.eq(SubConstructionUser::getSysUserId, userId)
|
||||
.one();
|
||||
if(constructionUser != null){
|
||||
constructionUser.setContractorId(contractorId);
|
||||
constructionUserService.updateById(constructionUser);
|
||||
}
|
||||
}
|
||||
|
||||
return baseMapper.updateById(sysUser)>0;
|
||||
}
|
||||
|
||||
|
||||
@ -0,0 +1,142 @@
|
||||
package org.dromara.xzd.comprehensive.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 合同管理-合同变更清单对象 xzd_htgl_htbgqd
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_htgl_htbgqd")
|
||||
public class XzdHtglHtbgqd extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 立项(1、承包合同信息,2、承包合同变更,3分包合同信息,4、分包合同变更,5、采购合同信息,6、采购合同变更,7、综合服务信息,8、综合服务变更)
|
||||
*/
|
||||
private Long type;
|
||||
|
||||
/**
|
||||
* 附件(路径/关联ID)
|
||||
*/
|
||||
private String attachment;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 合同名称(带*,必填)
|
||||
*/
|
||||
private String contractName;
|
||||
|
||||
/**
|
||||
* 报销单号
|
||||
*/
|
||||
private String bidNo;
|
||||
|
||||
/**
|
||||
* 计算单位(带*,必填)
|
||||
*/
|
||||
private String calculateUnit;
|
||||
|
||||
/**
|
||||
* 原数值
|
||||
*/
|
||||
private BigDecimal originalValue;
|
||||
|
||||
/**
|
||||
* 变更后数值
|
||||
*/
|
||||
private BigDecimal afterChangeValue;
|
||||
|
||||
/**
|
||||
* 原含税单价
|
||||
*/
|
||||
private BigDecimal originalTaxInclUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价
|
||||
*/
|
||||
private BigDecimal afterChangeTaxInclUnitPrice;
|
||||
|
||||
/**
|
||||
* 原含税金额
|
||||
*/
|
||||
private BigDecimal originalTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 变更后含税金额
|
||||
*/
|
||||
private BigDecimal afterChangeTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 原税率
|
||||
*/
|
||||
private BigDecimal originalTaxRate;
|
||||
|
||||
/**
|
||||
* 变更后税率
|
||||
*/
|
||||
private BigDecimal afterChangeTaxRate;
|
||||
|
||||
/**
|
||||
* 原WBS
|
||||
*/
|
||||
private String originalWbs;
|
||||
|
||||
/**
|
||||
* 变更后WBS
|
||||
*/
|
||||
private String afterChangeWbs;
|
||||
|
||||
/**
|
||||
* 原CBS
|
||||
*/
|
||||
private String originalCbs;
|
||||
|
||||
/**
|
||||
* 变更后CBS
|
||||
*/
|
||||
private String afterChangeCbs;
|
||||
|
||||
/**
|
||||
* 成本预算金额
|
||||
*/
|
||||
private BigDecimal costBudgetAmount;
|
||||
|
||||
/**
|
||||
* 成本预算来源
|
||||
*/
|
||||
private String costBudgetSource;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 已结价税合计
|
||||
*/
|
||||
private Long settledPriceTotal;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,144 @@
|
||||
package org.dromara.xzd.comprehensive.domain.bo;
|
||||
|
||||
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 合同管理-合同变更清单业务对象 xzd_htgl_htbgqd
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdHtglHtbgqd.class, reverseConvertGenerate = false)
|
||||
public class XzdHtglHtbgqdBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 立项(1、承包合同信息,2、承包合同变更,3分包合同信息,4、分包合同变更,5、采购合同信息,6、采购合同变更,7、综合服务信息,8、综合服务变更)
|
||||
*/
|
||||
@NotNull(message = "立项(1、承包合同信息,2、承包合同变更,3分包合同信息,4、分包合同变更,5、采购合同信息,6、采购合同变更,7、综合服务信息,8、综合服务变更)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long type;
|
||||
|
||||
/**
|
||||
* 附件(路径/关联ID)
|
||||
*/
|
||||
private String attachment;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 合同名称(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "合同名称(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String contractName;
|
||||
|
||||
/**
|
||||
* 报销单号
|
||||
*/
|
||||
private String bidNo;
|
||||
|
||||
/**
|
||||
* 计算单位(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "计算单位(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String calculateUnit;
|
||||
|
||||
/**
|
||||
* 原数值
|
||||
*/
|
||||
private BigDecimal originalValue;
|
||||
|
||||
/**
|
||||
* 变更后数值
|
||||
*/
|
||||
private BigDecimal afterChangeValue;
|
||||
|
||||
/**
|
||||
* 原含税单价
|
||||
*/
|
||||
private BigDecimal originalTaxInclUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价
|
||||
*/
|
||||
private BigDecimal afterChangeTaxInclUnitPrice;
|
||||
|
||||
/**
|
||||
* 原含税金额
|
||||
*/
|
||||
private BigDecimal originalTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 变更后含税金额
|
||||
*/
|
||||
private BigDecimal afterChangeTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 原税率
|
||||
*/
|
||||
private BigDecimal originalTaxRate;
|
||||
|
||||
/**
|
||||
* 变更后税率
|
||||
*/
|
||||
private BigDecimal afterChangeTaxRate;
|
||||
|
||||
/**
|
||||
* 原WBS
|
||||
*/
|
||||
private String originalWbs;
|
||||
|
||||
/**
|
||||
* 变更后WBS
|
||||
*/
|
||||
private String afterChangeWbs;
|
||||
|
||||
/**
|
||||
* 原CBS
|
||||
*/
|
||||
private String originalCbs;
|
||||
|
||||
/**
|
||||
* 变更后CBS
|
||||
*/
|
||||
private String afterChangeCbs;
|
||||
|
||||
/**
|
||||
* 成本预算金额
|
||||
*/
|
||||
private BigDecimal costBudgetAmount;
|
||||
|
||||
/**
|
||||
* 成本预算来源
|
||||
*/
|
||||
private String costBudgetSource;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 已结价税合计
|
||||
*/
|
||||
private Long settledPriceTotal;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,175 @@
|
||||
package org.dromara.xzd.comprehensive.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 合同管理-合同变更清单视图对象 xzd_htgl_htbgqd
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdHtglHtbgqd.class)
|
||||
public class XzdHtglHtbgqdVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 立项(1、承包合同信息,2、承包合同变更,3分包合同信息,4、分包合同变更,5、采购合同信息,6、采购合同变更,7、综合服务信息,8、综合服务变更)
|
||||
*/
|
||||
@ExcelProperty(value = "立项", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "1=、承包合同信息,2、承包合同变更,3分包合同信息,4、分包合同变更,5、采购合同信息,6、采购合同变更,7、综合服务信息,8、综合服务变更")
|
||||
private Long type;
|
||||
|
||||
/**
|
||||
* 附件(路径/关联ID)
|
||||
*/
|
||||
@ExcelProperty(value = "附件", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "路=径/关联ID")
|
||||
private String attachment;
|
||||
|
||||
/**
|
||||
* 编码
|
||||
*/
|
||||
@ExcelProperty(value = "编码")
|
||||
private String code;
|
||||
|
||||
/**
|
||||
* 合同名称(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "合同名称", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String contractName;
|
||||
|
||||
/**
|
||||
* 报销单号
|
||||
*/
|
||||
@ExcelProperty(value = "报销单号")
|
||||
private String bidNo;
|
||||
|
||||
/**
|
||||
* 计算单位(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "计算单位", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String calculateUnit;
|
||||
|
||||
/**
|
||||
* 原数值
|
||||
*/
|
||||
@ExcelProperty(value = "原数值")
|
||||
private BigDecimal originalValue;
|
||||
|
||||
/**
|
||||
* 变更后数值
|
||||
*/
|
||||
@ExcelProperty(value = "变更后数值")
|
||||
private BigDecimal afterChangeValue;
|
||||
|
||||
/**
|
||||
* 原含税单价
|
||||
*/
|
||||
@ExcelProperty(value = "原含税单价")
|
||||
private BigDecimal originalTaxInclUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价
|
||||
*/
|
||||
@ExcelProperty(value = "变更后含税单价")
|
||||
private BigDecimal afterChangeTaxInclUnitPrice;
|
||||
|
||||
/**
|
||||
* 原含税金额
|
||||
*/
|
||||
@ExcelProperty(value = "原含税金额")
|
||||
private BigDecimal originalTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 变更后含税金额
|
||||
*/
|
||||
@ExcelProperty(value = "变更后含税金额")
|
||||
private BigDecimal afterChangeTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 原税率
|
||||
*/
|
||||
@ExcelProperty(value = "原税率")
|
||||
private BigDecimal originalTaxRate;
|
||||
|
||||
/**
|
||||
* 变更后税率
|
||||
*/
|
||||
@ExcelProperty(value = "变更后税率")
|
||||
private BigDecimal afterChangeTaxRate;
|
||||
|
||||
/**
|
||||
* 原WBS
|
||||
*/
|
||||
@ExcelProperty(value = "原WBS")
|
||||
private String originalWbs;
|
||||
|
||||
/**
|
||||
* 变更后WBS
|
||||
*/
|
||||
@ExcelProperty(value = "变更后WBS")
|
||||
private String afterChangeWbs;
|
||||
|
||||
/**
|
||||
* 原CBS
|
||||
*/
|
||||
@ExcelProperty(value = "原CBS")
|
||||
private String originalCbs;
|
||||
|
||||
/**
|
||||
* 变更后CBS
|
||||
*/
|
||||
@ExcelProperty(value = "变更后CBS")
|
||||
private String afterChangeCbs;
|
||||
|
||||
/**
|
||||
* 成本预算金额
|
||||
*/
|
||||
@ExcelProperty(value = "成本预算金额")
|
||||
private BigDecimal costBudgetAmount;
|
||||
|
||||
/**
|
||||
* 成本预算来源
|
||||
*/
|
||||
@ExcelProperty(value = "成本预算来源")
|
||||
private String costBudgetSource;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 已结价税合计
|
||||
*/
|
||||
@ExcelProperty(value = "已结价税合计")
|
||||
private Long settledPriceTotal;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.comprehensive.mapper;
|
||||
|
||||
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
|
||||
import org.dromara.xzd.comprehensive.domain.vo.XzdHtglHtbgqdVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 合同管理-合同变更清单Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdHtglHtbgqdMapper extends BaseMapperPlus<XzdHtglHtbgqd, XzdHtglHtbgqdVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.comprehensive.service;
|
||||
|
||||
import org.dromara.xzd.comprehensive.domain.vo.XzdHtglHtbgqdVo;
|
||||
import org.dromara.xzd.comprehensive.domain.bo.XzdHtglHtbgqdBo;
|
||||
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 合同管理-合同变更清单Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdHtglHtbgqdService extends IService<XzdHtglHtbgqd>{
|
||||
|
||||
/**
|
||||
* 查询合同管理-合同变更清单
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 合同管理-合同变更清单
|
||||
*/
|
||||
XzdHtglHtbgqdVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询合同管理-合同变更清单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 合同管理-合同变更清单分页列表
|
||||
*/
|
||||
TableDataInfo<XzdHtglHtbgqdVo> queryPageList(XzdHtglHtbgqdBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的合同管理-合同变更清单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 合同管理-合同变更清单列表
|
||||
*/
|
||||
List<XzdHtglHtbgqdVo> queryList(XzdHtglHtbgqdBo bo);
|
||||
|
||||
/**
|
||||
* 新增合同管理-合同变更清单
|
||||
*
|
||||
* @param bo 合同管理-合同变更清单
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdHtglHtbgqdBo bo);
|
||||
|
||||
/**
|
||||
* 修改合同管理-合同变更清单
|
||||
*
|
||||
* @param bo 合同管理-合同变更清单
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdHtglHtbgqdBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除合同管理-合同变更清单信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,151 @@
|
||||
package org.dromara.xzd.comprehensive.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.comprehensive.domain.bo.XzdHtglHtbgqdBo;
|
||||
import org.dromara.xzd.comprehensive.domain.vo.XzdHtglHtbgqdVo;
|
||||
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
|
||||
import org.dromara.xzd.comprehensive.mapper.XzdHtglHtbgqdMapper;
|
||||
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 合同管理-合同变更清单Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdHtglHtbgqdServiceImpl extends ServiceImpl<XzdHtglHtbgqdMapper, XzdHtglHtbgqd> implements IXzdHtglHtbgqdService {
|
||||
|
||||
private final XzdHtglHtbgqdMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询合同管理-合同变更清单
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 合同管理-合同变更清单
|
||||
*/
|
||||
@Override
|
||||
public XzdHtglHtbgqdVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询合同管理-合同变更清单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 合同管理-合同变更清单分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdHtglHtbgqdVo> queryPageList(XzdHtglHtbgqdBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdHtglHtbgqd> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdHtglHtbgqdVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的合同管理-合同变更清单列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 合同管理-合同变更清单列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdHtglHtbgqdVo> queryList(XzdHtglHtbgqdBo bo) {
|
||||
LambdaQueryWrapper<XzdHtglHtbgqd> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdHtglHtbgqd> buildQueryWrapper(XzdHtglHtbgqdBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdHtglHtbgqd> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdHtglHtbgqd::getId);
|
||||
lqw.eq(bo.getType() != null, XzdHtglHtbgqd::getType, bo.getType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), XzdHtglHtbgqd::getAttachment, bo.getAttachment());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCode()), XzdHtglHtbgqd::getCode, bo.getCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdHtglHtbgqd::getContractName, bo.getContractName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBidNo()), XzdHtglHtbgqd::getBidNo, bo.getBidNo());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCalculateUnit()), XzdHtglHtbgqd::getCalculateUnit, bo.getCalculateUnit());
|
||||
lqw.eq(bo.getOriginalValue() != null, XzdHtglHtbgqd::getOriginalValue, bo.getOriginalValue());
|
||||
lqw.eq(bo.getAfterChangeValue() != null, XzdHtglHtbgqd::getAfterChangeValue, bo.getAfterChangeValue());
|
||||
lqw.eq(bo.getOriginalTaxInclUnitPrice() != null, XzdHtglHtbgqd::getOriginalTaxInclUnitPrice, bo.getOriginalTaxInclUnitPrice());
|
||||
lqw.eq(bo.getAfterChangeTaxInclUnitPrice() != null, XzdHtglHtbgqd::getAfterChangeTaxInclUnitPrice, bo.getAfterChangeTaxInclUnitPrice());
|
||||
lqw.eq(bo.getOriginalTaxInclAmount() != null, XzdHtglHtbgqd::getOriginalTaxInclAmount, bo.getOriginalTaxInclAmount());
|
||||
lqw.eq(bo.getAfterChangeTaxInclAmount() != null, XzdHtglHtbgqd::getAfterChangeTaxInclAmount, bo.getAfterChangeTaxInclAmount());
|
||||
lqw.eq(bo.getOriginalTaxRate() != null, XzdHtglHtbgqd::getOriginalTaxRate, bo.getOriginalTaxRate());
|
||||
lqw.eq(bo.getAfterChangeTaxRate() != null, XzdHtglHtbgqd::getAfterChangeTaxRate, bo.getAfterChangeTaxRate());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOriginalWbs()), XzdHtglHtbgqd::getOriginalWbs, bo.getOriginalWbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAfterChangeWbs()), XzdHtglHtbgqd::getAfterChangeWbs, bo.getAfterChangeWbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOriginalCbs()), XzdHtglHtbgqd::getOriginalCbs, bo.getOriginalCbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAfterChangeCbs()), XzdHtglHtbgqd::getAfterChangeCbs, bo.getAfterChangeCbs());
|
||||
lqw.eq(bo.getCostBudgetAmount() != null, XzdHtglHtbgqd::getCostBudgetAmount, bo.getCostBudgetAmount());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCostBudgetSource()), XzdHtglHtbgqd::getCostBudgetSource, bo.getCostBudgetSource());
|
||||
lqw.eq(bo.getSettledPriceTotal() != null, XzdHtglHtbgqd::getSettledPriceTotal, bo.getSettledPriceTotal());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增合同管理-合同变更清单
|
||||
*
|
||||
* @param bo 合同管理-合同变更清单
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdHtglHtbgqdBo bo) {
|
||||
XzdHtglHtbgqd add = MapstructUtils.convert(bo, XzdHtglHtbgqd.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改合同管理-合同变更清单
|
||||
*
|
||||
* @param bo 合同管理-合同变更清单
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdHtglHtbgqdBo bo) {
|
||||
XzdHtglHtbgqd update = MapstructUtils.convert(bo, XzdHtglHtbgqd.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdHtglHtbgqd entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除合同管理-合同变更清单信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -20,10 +20,8 @@ import java.time.LocalDateTime;
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_subcontract")
|
||||
public class XzdSubcontract extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysJdcbfj")
|
||||
public class XzdCbysJdcbfjController extends BaseController {
|
||||
|
||||
private final IXzdCbysJdcbfjService xzdCbysJdcbfjService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysJdcbfjVo> list(XzdCbysJdcbfjBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysJdcbfjService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-阶段成本分解列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:export")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysJdcbfjBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysJdcbfjVo> list = xzdCbysJdcbfjService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-阶段成本分解", XzdCbysJdcbfjVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-阶段成本分解详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysJdcbfjVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysJdcbfjService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:add")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysJdcbfjBo bo) {
|
||||
return toAjax(xzdCbysJdcbfjService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:edit")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysJdcbfjBo bo) {
|
||||
return toAjax(xzdCbysJdcbfjService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfj:remove")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysJdcbfjService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysJdcbfjFubiao")
|
||||
public class XzdCbysJdcbfjFubiaoController extends BaseController {
|
||||
|
||||
private final IXzdCbysJdcbfjFubiaoService xzdCbysJdcbfjFubiaoService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解附列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysJdcbfjFubiaoVo> list(XzdCbysJdcbfjFubiaoBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysJdcbfjFubiaoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-阶段成本分解附列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:export")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysJdcbfjFubiaoBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysJdcbfjFubiaoVo> list = xzdCbysJdcbfjFubiaoService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-阶段成本分解附", XzdCbysJdcbfjFubiaoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-阶段成本分解附详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysJdcbfjFubiaoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysJdcbfjFubiaoService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解附
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:add")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysJdcbfjFubiaoBo bo) {
|
||||
return toAjax(xzdCbysJdcbfjFubiaoService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解附
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:edit")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysJdcbfjFubiaoBo bo) {
|
||||
return toAjax(xzdCbysJdcbfjFubiaoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysJdcbfjFubiao:remove")
|
||||
@Log(title = "立项及成本-成本预算-阶段成本分解附", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysJdcbfjFubiaoService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysSscbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysSscbService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 税收项明细
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysSscb")
|
||||
public class XzdCbysSscbController extends BaseController {
|
||||
|
||||
private final IXzdCbysSscbService xzdCbysSscbService;
|
||||
|
||||
/**
|
||||
* 查询税收项明细列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysSscb:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysSscbVo> list(XzdCbysSscbBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysSscbService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出税收项明细列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysSscb:export")
|
||||
@Log(title = "税收项明细", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysSscbBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysSscbVo> list = xzdCbysSscbService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "税收项明细", XzdCbysSscbVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取税收项明细详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysSscb:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysSscbVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysSscbService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增税收项明细
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysSscb:add")
|
||||
@Log(title = "税收项明细", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysSscbBo bo) {
|
||||
return toAjax(xzdCbysSscbService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改税收项明细
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysSscb:edit")
|
||||
@Log(title = "税收项明细", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysSscbBo bo) {
|
||||
return toAjax(xzdCbysSscbService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除税收项明细
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysSscb:remove")
|
||||
@Log(title = "税收项明细", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysSscbService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysWgcbtbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysWgcbtb")
|
||||
public class XzdCbysWgcbtbController extends BaseController {
|
||||
|
||||
private final IXzdCbysWgcbtbService xzdCbysWgcbtbService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-完工成本填报列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtb:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysWgcbtbVo> list(XzdCbysWgcbtbBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysWgcbtbService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-完工成本填报列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtb:export")
|
||||
@Log(title = "立项及成本-成本预算-完工成本填报", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysWgcbtbBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysWgcbtbVo> list = xzdCbysWgcbtbService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-完工成本填报", XzdCbysWgcbtbVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-完工成本填报详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtb:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysWgcbtbVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysWgcbtbService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-完工成本填报
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtb:add")
|
||||
@Log(title = "立项及成本-成本预算-完工成本填报", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysWgcbtbBo bo) {
|
||||
return toAjax(xzdCbysWgcbtbService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-完工成本填报
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtb:edit")
|
||||
@Log(title = "立项及成本-成本预算-完工成本填报", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysWgcbtbBo bo) {
|
||||
return toAjax(xzdCbysWgcbtbService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtb:remove")
|
||||
@Log(title = "立项及成本-成本预算-完工成本填报", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysWgcbtbService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysWgcbtbFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbFubiaoService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysWgcbtbFubiao")
|
||||
public class XzdCbysWgcbtbFubiaoController extends BaseController {
|
||||
|
||||
private final IXzdCbysWgcbtbFubiaoService xzdCbysWgcbtbFubiaoService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-附列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtbFubiao:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysWgcbtbFubiaoVo> list(XzdCbysWgcbtbFubiaoBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysWgcbtbFubiaoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-附列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtbFubiao:export")
|
||||
@Log(title = "立项及成本-成本预算-附", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysWgcbtbFubiaoBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysWgcbtbFubiaoVo> list = xzdCbysWgcbtbFubiaoService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-附", XzdCbysWgcbtbFubiaoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-附详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtbFubiao:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysWgcbtbFubiaoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysWgcbtbFubiaoService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-附
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtbFubiao:add")
|
||||
@Log(title = "立项及成本-成本预算-附", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysWgcbtbFubiaoBo bo) {
|
||||
return toAjax(xzdCbysWgcbtbFubiaoService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-附
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtbFubiao:edit")
|
||||
@Log(title = "立项及成本-成本预算-附", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysWgcbtbFubiaoBo bo) {
|
||||
return toAjax(xzdCbysWgcbtbFubiaoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-附
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysWgcbtbFubiao:remove")
|
||||
@Log(title = "立项及成本-成本预算-附", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysWgcbtbFubiaoService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysZjhcb")
|
||||
public class XzdCbysZjhcbController extends BaseController {
|
||||
|
||||
private final IXzdCbysZjhcbService xzdCbysZjhcbService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZjhcb:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysZjhcbVo> list(XzdCbysZjhcbBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysZjhcbService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-总体计划成本列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZjhcb:export")
|
||||
@Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysZjhcbBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysZjhcbVo> list = xzdCbysZjhcbService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-总体计划成本", XzdCbysZjhcbVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-总体计划成本详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZjhcb:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysZjhcbVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysZjhcbService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-总体计划成本
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZjhcb:add")
|
||||
@Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysZjhcbBo bo) {
|
||||
return toAjax(xzdCbysZjhcbService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-总体计划成本
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZjhcb:edit")
|
||||
@Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysZjhcbBo bo) {
|
||||
return toAjax(xzdCbysZjhcbService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZjhcb:remove")
|
||||
@Log(title = "立项及成本-成本预算-总体计划成本", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysZjhcbService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZtjhcbBgjlBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZtjhcbBgjlService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/costBudget/cbysZtjhcbBgjl")
|
||||
public class XzdCbysZtjhcbBgjlController extends BaseController {
|
||||
|
||||
private final IXzdCbysZtjhcbBgjlService xzdCbysZtjhcbBgjlService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-变更记录列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZtjhcbBgjl:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<XzdCbysZtjhcbBgjlVo> list(XzdCbysZtjhcbBgjlBo bo, PageQuery pageQuery) {
|
||||
return xzdCbysZtjhcbBgjlService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出立项及成本-成本预算-变更记录列表
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZtjhcbBgjl:export")
|
||||
@Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(XzdCbysZtjhcbBgjlBo bo, HttpServletResponse response) {
|
||||
List<XzdCbysZtjhcbBgjlVo> list = xzdCbysZtjhcbBgjlService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "立项及成本-成本预算-变更记录", XzdCbysZtjhcbBgjlVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取立项及成本-成本预算-变更记录详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZtjhcbBgjl:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<XzdCbysZtjhcbBgjlVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(xzdCbysZtjhcbBgjlService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-变更记录
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZtjhcbBgjl:add")
|
||||
@Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysZtjhcbBgjlBo bo) {
|
||||
return toAjax(xzdCbysZtjhcbBgjlService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-变更记录
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZtjhcbBgjl:edit")
|
||||
@Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysZtjhcbBgjlBo bo) {
|
||||
return toAjax(xzdCbysZtjhcbBgjlService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("costBudget:cbysZtjhcbBgjl:remove")
|
||||
@Log(title = "立项及成本-成本预算-变更记录", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(xzdCbysZtjhcbBgjlService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解对象 xzd_cbys_jdcbfj
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_jdcbfj")
|
||||
public class XzdCbysJdcbfj extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 预算分类
|
||||
*/
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 总体计划成本(带*,必填)
|
||||
*/
|
||||
private Long totalPlanCost;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private Long projectLeader;
|
||||
|
||||
/**
|
||||
* 开工日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 竣工日期
|
||||
*/
|
||||
private LocalDate completionDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
private Long year;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
private BigDecimal exchangeRate;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,122 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附对象 xzd_cbys_jdcbfj_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_jdcbfj_fubiao")
|
||||
public class XzdCbysJdcbfjFubiao extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 主表id
|
||||
*/
|
||||
private Long mainTableId;
|
||||
|
||||
/**
|
||||
* 预算项编码
|
||||
*/
|
||||
private String budgetItemCode;
|
||||
|
||||
/**
|
||||
* 预算项名称
|
||||
*/
|
||||
private String budgetItemName;
|
||||
|
||||
/**
|
||||
* BOQ编码
|
||||
*/
|
||||
private String boq;
|
||||
|
||||
/**
|
||||
* WBS编码
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal quantity;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 变更数量
|
||||
*/
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
/**
|
||||
* 变更金额
|
||||
*/
|
||||
private BigDecimal changeAmount;
|
||||
|
||||
/**
|
||||
* 变更后数量
|
||||
*/
|
||||
private BigDecimal afterChangeQuantity;
|
||||
|
||||
/**
|
||||
* 变更后单价
|
||||
*/
|
||||
private BigDecimal afterChangeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后金额
|
||||
*/
|
||||
private BigDecimal afterChangeAmount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 税收项明细对象 xzd_cbys_sscb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_sscb")
|
||||
public class XzdCbysSscb extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等)
|
||||
*/
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 税收项(带*,必填)
|
||||
*/
|
||||
private String taxItem;
|
||||
|
||||
/**
|
||||
* 计税金额
|
||||
*/
|
||||
private BigDecimal taxableAmount;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 应纳税额
|
||||
*/
|
||||
private BigDecimal taxPayable;
|
||||
|
||||
/**
|
||||
* 可抵税额
|
||||
*/
|
||||
private BigDecimal taxDeductible;
|
||||
|
||||
/**
|
||||
* 应缴税额
|
||||
*/
|
||||
private BigDecimal taxDue;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,112 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报对象 xzd_cbys_wgcbtb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_wgcbtb")
|
||||
public class XzdCbysWgcbtb extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID,自增
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 预算分类
|
||||
*/
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private Long projectLeader;
|
||||
|
||||
/**
|
||||
* 开工日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 竣工日期
|
||||
*/
|
||||
private LocalDate completionDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
private Integer year;
|
||||
|
||||
/**
|
||||
* 月份
|
||||
*/
|
||||
private Integer month;
|
||||
|
||||
/**
|
||||
* 统计周期
|
||||
*/
|
||||
private String statCycle;
|
||||
|
||||
/**
|
||||
* 来源单据类型
|
||||
*/
|
||||
private String sourceDocType;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 启用按科目属性分页签编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableAccountAttrTab;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,127 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附对象 xzd_cbys_wgcbtb_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_wgcbtb_fubiao")
|
||||
public class XzdCbysWgcbtbFubiao extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联单据主表的ID(外键,指向单据基础信息表等主表)
|
||||
*/
|
||||
private Long mainDocId;
|
||||
|
||||
/**
|
||||
* 类型(1、成本明细,2、)
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 预算项编码
|
||||
*/
|
||||
private String budgetItemCode;
|
||||
|
||||
/**
|
||||
* 预算项标题
|
||||
*/
|
||||
private String budgetItemTitle;
|
||||
|
||||
/**
|
||||
* BOQ编码
|
||||
*/
|
||||
private String boq;
|
||||
|
||||
/**
|
||||
* WBS编码
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
private BigDecimal planQuantity;
|
||||
|
||||
/**
|
||||
* 累计计划数量
|
||||
*/
|
||||
private BigDecimal cumulativePlanQuantity;
|
||||
|
||||
/**
|
||||
* 计划金额
|
||||
*/
|
||||
private BigDecimal planAmount;
|
||||
|
||||
/**
|
||||
* 累计计划金额
|
||||
*/
|
||||
private BigDecimal cumulativePlanAmount;
|
||||
|
||||
/**
|
||||
* 完工数量
|
||||
*/
|
||||
private BigDecimal completedQuantity;
|
||||
|
||||
/**
|
||||
* 累计完工数量
|
||||
*/
|
||||
private BigDecimal cumulativeCompletedQuantity;
|
||||
|
||||
/**
|
||||
* 完工金额
|
||||
*/
|
||||
private BigDecimal completedAmount;
|
||||
|
||||
/**
|
||||
* 累计完工金额
|
||||
*/
|
||||
private BigDecimal cumulativeCompletedAmount;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,148 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本对象 xzd_cbys_zjhcb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_zjhcb")
|
||||
public class XzdCbysZjhcb extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目(带*,必填)
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 预算分类(带*,必填)
|
||||
*/
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 总不含税金额
|
||||
*/
|
||||
private BigDecimal totalTaxExclAmount;
|
||||
|
||||
/**
|
||||
* 总税额
|
||||
*/
|
||||
private BigDecimal totalTaxAmount;
|
||||
|
||||
/**
|
||||
* 总含税金额
|
||||
*/
|
||||
private BigDecimal totalTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private Long projectLeader;
|
||||
|
||||
/**
|
||||
* 执行项目经理
|
||||
*/
|
||||
private Long execProjectManager;
|
||||
|
||||
/**
|
||||
* 承包合同金额(带*,必填)
|
||||
*/
|
||||
private BigDecimal contractAmount;
|
||||
|
||||
/**
|
||||
* 税务成本
|
||||
*/
|
||||
private BigDecimal taxCost;
|
||||
|
||||
/**
|
||||
* 利润率
|
||||
*/
|
||||
private BigDecimal profitRate;
|
||||
|
||||
/**
|
||||
* 利润金额
|
||||
*/
|
||||
private BigDecimal profitAmount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 启用成本预控模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableCostPrecontrol;
|
||||
|
||||
/**
|
||||
* 成本控制模式(如WBS+CBS)
|
||||
*/
|
||||
private String costControlMode;
|
||||
|
||||
/**
|
||||
* 外币含税类型
|
||||
*/
|
||||
private String foreignCurrencyTaxType;
|
||||
|
||||
/**
|
||||
* 禁止标识
|
||||
*/
|
||||
private String forbidFlag;
|
||||
|
||||
/**
|
||||
* 启用按科目属性分页签编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableAccountAttrTab;
|
||||
|
||||
/**
|
||||
* 启用物料组编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableMaterialGroup;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,182 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本附对象 xzd_cbys_zjhcb_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_zjhcb_fubiao")
|
||||
public class XzdCbysZjhcbFubiao extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等)
|
||||
*/
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 预算项编码(budgetCode)
|
||||
*/
|
||||
private String budgetCode;
|
||||
|
||||
/**
|
||||
* 预算项名称(budgetName)
|
||||
*/
|
||||
private String budgetName;
|
||||
|
||||
/**
|
||||
* WBS编码(wbs)
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码(cbs)
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位(unit)
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 数量(quantity)
|
||||
*/
|
||||
private BigDecimal quantity;
|
||||
|
||||
/**
|
||||
* 单价(unitPrice)
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 含税单价(taxIncludedUnitPrice)
|
||||
*/
|
||||
private BigDecimal taxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 税率(taxRate,如13%表示为0.1300)
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 税额(taxAmount)
|
||||
*/
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
/**
|
||||
* 不含税金额(taxExcludedAmount)
|
||||
*/
|
||||
private BigDecimal taxExcludedAmount;
|
||||
|
||||
/**
|
||||
* 含税金额(taxIncludedAmount)
|
||||
*/
|
||||
private BigDecimal taxIncludedAmount;
|
||||
|
||||
/**
|
||||
* 变更数量(changeQuantity)
|
||||
*/
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
/**
|
||||
* 变更单价(changeUnitPrice)
|
||||
*/
|
||||
private BigDecimal changeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价(changeTaxIncludedUnitPrice)
|
||||
*/
|
||||
private BigDecimal changeTaxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更税率(changeTaxRate)
|
||||
*/
|
||||
private BigDecimal changeTaxRate;
|
||||
|
||||
/**
|
||||
* 变更税额(changeTaxAmount)
|
||||
*/
|
||||
private BigDecimal changeTaxAmount;
|
||||
|
||||
/**
|
||||
* 变更后数量(afterChangeQuantity)
|
||||
*/
|
||||
private BigDecimal afterChangeQuantity;
|
||||
|
||||
/**
|
||||
* 变更后单价(afterChangeUnitPrice)
|
||||
*/
|
||||
private BigDecimal afterChangeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价(afterChangeTaxIncludedUnitPrice)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后税率(afterChangeTaxRate)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxRate;
|
||||
|
||||
/**
|
||||
* 变更后税额(afterChangeTaxAmount)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxAmount;
|
||||
|
||||
/**
|
||||
* 变更后不含税金额(afterChangeTaxExcludedAmount)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxExcludedAmount;
|
||||
|
||||
/**
|
||||
* 变更后含税金额(afterChangeTaxIncludedAmount)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxIncludedAmount;
|
||||
|
||||
/**
|
||||
* 备注(remarks)
|
||||
*/
|
||||
private String remarks;
|
||||
|
||||
/**
|
||||
* 合同模式(contractMode)
|
||||
*/
|
||||
private String contractMode;
|
||||
|
||||
/**
|
||||
* 中标预算收入(bidBudgetIncome)
|
||||
*/
|
||||
private BigDecimal bidBudgetIncome;
|
||||
|
||||
/**
|
||||
* 利润率(profitRate,如20%表示为20.00)
|
||||
*/
|
||||
private BigDecimal profitRate;
|
||||
|
||||
/**
|
||||
* 附件(attachment,存储附件路径或关联ID)
|
||||
*/
|
||||
private String attachment;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,103 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录对象 xzd_cbys_ztjhcb_bgjl
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("xzd_cbys_ztjhcb_bgjl")
|
||||
public class XzdCbysZtjhcbBgjl extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 行号
|
||||
*/
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 附件(关联附件表可按需调整为外键)
|
||||
*/
|
||||
private String attachment;
|
||||
|
||||
/**
|
||||
* 单据编码
|
||||
*/
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题
|
||||
*/
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 变更根源
|
||||
*/
|
||||
private String changeSource;
|
||||
|
||||
/**
|
||||
* 变更不含税金额
|
||||
*/
|
||||
private BigDecimal changeTaxExclAmount;
|
||||
|
||||
/**
|
||||
* 变更含税金额
|
||||
*/
|
||||
private BigDecimal changeTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 核准人
|
||||
*/
|
||||
private String approver;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private String projectLeader;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,118 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解业务对象 xzd_cbys_jdcbfj
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysJdcbfj.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysJdcbfjBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "单据标题(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 预算分类
|
||||
*/
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 总体计划成本(带*,必填)
|
||||
*/
|
||||
@NotNull(message = "总体计划成本(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long totalPlanCost;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private Long projectLeader;
|
||||
|
||||
/**
|
||||
* 开工日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 竣工日期
|
||||
*/
|
||||
private LocalDate completionDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
private Long year;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
private BigDecimal exchangeRate;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 副表数据
|
||||
*/
|
||||
List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,121 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附业务对象 xzd_cbys_jdcbfj_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysJdcbfjFubiao.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysJdcbfjFubiaoBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 主表id
|
||||
*/
|
||||
private Long mainTableId;
|
||||
|
||||
/**
|
||||
* 预算项编码
|
||||
*/
|
||||
private String budgetItemCode;
|
||||
|
||||
/**
|
||||
* 预算项名称
|
||||
*/
|
||||
private String budgetItemName;
|
||||
|
||||
/**
|
||||
* BOQ编码
|
||||
*/
|
||||
private String boq;
|
||||
|
||||
/**
|
||||
* WBS编码
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private BigDecimal quantity;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 变更数量
|
||||
*/
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
/**
|
||||
* 变更金额
|
||||
*/
|
||||
private BigDecimal changeAmount;
|
||||
|
||||
/**
|
||||
* 变更后数量
|
||||
*/
|
||||
private BigDecimal afterChangeQuantity;
|
||||
|
||||
/**
|
||||
* 变更后单价
|
||||
*/
|
||||
private BigDecimal afterChangeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后金额
|
||||
*/
|
||||
private BigDecimal afterChangeAmount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 税收项明细业务对象 xzd_cbys_sscb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysSscb.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysSscbBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等)
|
||||
*/
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 税收项(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "税收项(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String taxItem;
|
||||
|
||||
/**
|
||||
* 计税金额
|
||||
*/
|
||||
private BigDecimal taxableAmount;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 应纳税额
|
||||
*/
|
||||
private BigDecimal taxPayable;
|
||||
|
||||
/**
|
||||
* 可抵税额
|
||||
*/
|
||||
private BigDecimal taxDeductible;
|
||||
|
||||
/**
|
||||
* 应缴税额
|
||||
*/
|
||||
private BigDecimal taxDue;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,115 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtb;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报业务对象 xzd_cbys_wgcbtb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysWgcbtb.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysWgcbtbBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID,自增
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "单据标题(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 预算分类
|
||||
*/
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private Long projectLeader;
|
||||
|
||||
/**
|
||||
* 开工日期
|
||||
*/
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 竣工日期
|
||||
*/
|
||||
private LocalDate completionDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
private Integer year;
|
||||
|
||||
/**
|
||||
* 月份
|
||||
*/
|
||||
private Integer month;
|
||||
|
||||
/**
|
||||
* 统计周期
|
||||
*/
|
||||
private String statCycle;
|
||||
|
||||
/**
|
||||
* 来源单据类型
|
||||
*/
|
||||
private String sourceDocType;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 启用按科目属性分页签编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableAccountAttrTab;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
private List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiao;
|
||||
|
||||
}
|
||||
@ -0,0 +1,126 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附业务对象 xzd_cbys_wgcbtb_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysWgcbtbFubiao.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysWgcbtbFubiaoBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联单据主表的ID(外键,指向单据基础信息表等主表)
|
||||
*/
|
||||
private Long mainDocId;
|
||||
|
||||
/**
|
||||
* 类型(1、成本明细,2、)
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 预算项编码
|
||||
*/
|
||||
private String budgetItemCode;
|
||||
|
||||
/**
|
||||
* 预算项标题
|
||||
*/
|
||||
private String budgetItemTitle;
|
||||
|
||||
/**
|
||||
* BOQ编码
|
||||
*/
|
||||
private String boq;
|
||||
|
||||
/**
|
||||
* WBS编码
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
private BigDecimal planQuantity;
|
||||
|
||||
/**
|
||||
* 累计计划数量
|
||||
*/
|
||||
private BigDecimal cumulativePlanQuantity;
|
||||
|
||||
/**
|
||||
* 计划金额
|
||||
*/
|
||||
private BigDecimal planAmount;
|
||||
|
||||
/**
|
||||
* 累计计划金额
|
||||
*/
|
||||
private BigDecimal cumulativePlanAmount;
|
||||
|
||||
/**
|
||||
* 完工数量
|
||||
*/
|
||||
private BigDecimal completedQuantity;
|
||||
|
||||
/**
|
||||
* 累计完工数量
|
||||
*/
|
||||
private BigDecimal cumulativeCompletedQuantity;
|
||||
|
||||
/**
|
||||
* 完工金额
|
||||
*/
|
||||
private BigDecimal completedAmount;
|
||||
|
||||
/**
|
||||
* 累计完工金额
|
||||
*/
|
||||
private BigDecimal cumulativeCompletedAmount;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,167 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本业务对象 xzd_cbys_zjhcb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysZjhcb.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysZjhcbBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { EditGroup.class })
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "单据标题(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目(带*,必填)
|
||||
*/
|
||||
@NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 预算分类(带*,必填)
|
||||
*/
|
||||
@NotBlank(message = "预算分类(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 总不含税金额
|
||||
*/
|
||||
private BigDecimal totalTaxExclAmount;
|
||||
|
||||
/**
|
||||
* 总税额
|
||||
*/
|
||||
private BigDecimal totalTaxAmount;
|
||||
|
||||
/**
|
||||
* 总含税金额
|
||||
*/
|
||||
private BigDecimal totalTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private Long projectLeader;
|
||||
|
||||
/**
|
||||
* 执行项目经理
|
||||
*/
|
||||
private Long execProjectManager;
|
||||
|
||||
/**
|
||||
* 承包合同金额(带*,必填)
|
||||
*/
|
||||
@NotNull(message = "承包合同金额(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private BigDecimal contractAmount;
|
||||
|
||||
/**
|
||||
* 税务成本
|
||||
*/
|
||||
private BigDecimal taxCost;
|
||||
|
||||
/**
|
||||
* 利润率
|
||||
*/
|
||||
private BigDecimal profitRate;
|
||||
|
||||
/**
|
||||
* 利润金额
|
||||
*/
|
||||
private BigDecimal profitAmount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 启用成本预控模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableCostPrecontrol;
|
||||
|
||||
/**
|
||||
* 成本控制模式(如WBS+CBS)
|
||||
*/
|
||||
private String costControlMode;
|
||||
|
||||
/**
|
||||
* 外币含税类型
|
||||
*/
|
||||
private String foreignCurrencyTaxType;
|
||||
|
||||
/**
|
||||
* 禁止标识
|
||||
*/
|
||||
private String forbidFlag;
|
||||
|
||||
/**
|
||||
* 启用按科目属性分页签编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableAccountAttrTab;
|
||||
|
||||
/**
|
||||
* 启用物料组编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
private Long enableMaterialGroup;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 变更记录
|
||||
*/
|
||||
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjl;
|
||||
|
||||
/**
|
||||
* 成本明细
|
||||
*/
|
||||
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
|
||||
|
||||
/**
|
||||
* 税收成本
|
||||
*/
|
||||
List<XzdCbysSscb> xzdCbysSscb;
|
||||
}
|
||||
@ -0,0 +1,183 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本附业务对象 xzd_cbys_zjhcb_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysZjhcbFubiao.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysZjhcbFubiaoBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等)
|
||||
*/
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 预算项编码(budgetCode)
|
||||
*/
|
||||
@NotBlank(message = "预算项编码(budgetCode)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String budgetCode;
|
||||
|
||||
/**
|
||||
* 预算项名称(budgetName)
|
||||
*/
|
||||
@NotBlank(message = "预算项名称(budgetName)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String budgetName;
|
||||
|
||||
/**
|
||||
* WBS编码(wbs)
|
||||
*/
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码(cbs)
|
||||
*/
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位(unit)
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 数量(quantity)
|
||||
*/
|
||||
private BigDecimal quantity;
|
||||
|
||||
/**
|
||||
* 单价(unitPrice)
|
||||
*/
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 含税单价(taxIncludedUnitPrice)
|
||||
*/
|
||||
private BigDecimal taxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 税率(taxRate,如13%表示为0.1300)
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 税额(taxAmount)
|
||||
*/
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
/**
|
||||
* 不含税金额(taxExcludedAmount)
|
||||
*/
|
||||
private BigDecimal taxExcludedAmount;
|
||||
|
||||
/**
|
||||
* 含税金额(taxIncludedAmount)
|
||||
*/
|
||||
private BigDecimal taxIncludedAmount;
|
||||
|
||||
/**
|
||||
* 变更数量(changeQuantity)
|
||||
*/
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
/**
|
||||
* 变更单价(changeUnitPrice)
|
||||
*/
|
||||
private BigDecimal changeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价(changeTaxIncludedUnitPrice)
|
||||
*/
|
||||
private BigDecimal changeTaxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更税率(changeTaxRate)
|
||||
*/
|
||||
private BigDecimal changeTaxRate;
|
||||
|
||||
/**
|
||||
* 变更税额(changeTaxAmount)
|
||||
*/
|
||||
private BigDecimal changeTaxAmount;
|
||||
|
||||
/**
|
||||
* 变更后数量(afterChangeQuantity)
|
||||
*/
|
||||
private BigDecimal afterChangeQuantity;
|
||||
|
||||
/**
|
||||
* 变更后单价(afterChangeUnitPrice)
|
||||
*/
|
||||
private BigDecimal afterChangeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价(afterChangeTaxIncludedUnitPrice)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后税率(afterChangeTaxRate)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxRate;
|
||||
|
||||
/**
|
||||
* 变更后税额(afterChangeTaxAmount)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxAmount;
|
||||
|
||||
/**
|
||||
* 变更后不含税金额(afterChangeTaxExcludedAmount)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxExcludedAmount;
|
||||
|
||||
/**
|
||||
* 变更后含税金额(afterChangeTaxIncludedAmount)
|
||||
*/
|
||||
private BigDecimal afterChangeTaxIncludedAmount;
|
||||
|
||||
/**
|
||||
* 备注(remarks)
|
||||
*/
|
||||
private String remarks;
|
||||
|
||||
/**
|
||||
* 合同模式(contractMode)
|
||||
*/
|
||||
private String contractMode;
|
||||
|
||||
/**
|
||||
* 中标预算收入(bidBudgetIncome)
|
||||
*/
|
||||
private BigDecimal bidBudgetIncome;
|
||||
|
||||
/**
|
||||
* 利润率(profitRate,如20%表示为20.00)
|
||||
*/
|
||||
private BigDecimal profitRate;
|
||||
|
||||
/**
|
||||
* 附件(attachment,存储附件路径或关联ID)
|
||||
*/
|
||||
private String attachment;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,99 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录业务对象 xzd_cbys_ztjhcb_bgjl
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = XzdCbysZtjhcbBgjl.class, reverseConvertGenerate = false)
|
||||
public class XzdCbysZtjhcbBgjlBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 附件(关联附件表可按需调整为外键)
|
||||
*/
|
||||
private String attachment;
|
||||
|
||||
/**
|
||||
* 单据编码
|
||||
*/
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题
|
||||
*/
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 变更根源
|
||||
*/
|
||||
private String changeSource;
|
||||
|
||||
/**
|
||||
* 变更不含税金额
|
||||
*/
|
||||
private BigDecimal changeTaxExclAmount;
|
||||
|
||||
/**
|
||||
* 变更含税金额
|
||||
*/
|
||||
private BigDecimal changeTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 核准人
|
||||
*/
|
||||
private String approver;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
private String projectLeader;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,147 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附视图对象 xzd_cbys_jdcbfj_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysJdcbfjFubiao.class)
|
||||
public class XzdCbysJdcbfjFubiaoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 主表id
|
||||
*/
|
||||
@ExcelProperty(value = "主表id")
|
||||
private Long mainTableId;
|
||||
|
||||
/**
|
||||
* 预算项编码
|
||||
*/
|
||||
@ExcelProperty(value = "预算项编码")
|
||||
private String budgetItemCode;
|
||||
|
||||
/**
|
||||
* 预算项名称
|
||||
*/
|
||||
@ExcelProperty(value = "预算项名称")
|
||||
private String budgetItemName;
|
||||
|
||||
/**
|
||||
* BOQ编码
|
||||
*/
|
||||
@ExcelProperty(value = "BOQ编码")
|
||||
private String boq;
|
||||
|
||||
/**
|
||||
* WBS编码
|
||||
*/
|
||||
@ExcelProperty(value = "WBS编码")
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码
|
||||
*/
|
||||
@ExcelProperty(value = "CBS编码")
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
@ExcelProperty(value = "单位")
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
@ExcelProperty(value = "数量")
|
||||
private BigDecimal quantity;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
@ExcelProperty(value = "单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
@ExcelProperty(value = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 变更数量
|
||||
*/
|
||||
@ExcelProperty(value = "变更数量")
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
/**
|
||||
* 变更金额
|
||||
*/
|
||||
@ExcelProperty(value = "变更金额")
|
||||
private BigDecimal changeAmount;
|
||||
|
||||
/**
|
||||
* 变更后数量
|
||||
*/
|
||||
@ExcelProperty(value = "变更后数量")
|
||||
private BigDecimal afterChangeQuantity;
|
||||
|
||||
/**
|
||||
* 变更后单价
|
||||
*/
|
||||
@ExcelProperty(value = "变更后单价")
|
||||
private BigDecimal afterChangeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后金额
|
||||
*/
|
||||
@ExcelProperty(value = "变更后金额")
|
||||
private BigDecimal afterChangeAmount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,142 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解视图对象 xzd_cbys_jdcbfj
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysJdcbfj.class)
|
||||
public class XzdCbysJdcbfjVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "单据编码", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "单据标题", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
@ExcelProperty(value = "单据日期")
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
@ExcelProperty(value = "工程项目")
|
||||
private Long projectId;
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 预算分类
|
||||
*/
|
||||
@ExcelProperty(value = "预算分类")
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 总体计划成本(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "总体计划成本", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private Long totalPlanCost;
|
||||
private String totalPlanCostName;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
@ExcelProperty(value = "项目责任人")
|
||||
private Long projectLeader;
|
||||
private String projectLeaderName;
|
||||
|
||||
/**
|
||||
* 开工日期
|
||||
*/
|
||||
@ExcelProperty(value = "开工日期")
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 竣工日期
|
||||
*/
|
||||
@ExcelProperty(value = "竣工日期")
|
||||
private LocalDate completionDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
@ExcelProperty(value = "年度")
|
||||
private Long year;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
@ExcelProperty(value = "币种")
|
||||
private String currency;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
@ExcelProperty(value = "汇率")
|
||||
private BigDecimal exchangeRate;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 副表数据
|
||||
*/
|
||||
List<XzdCbysJdcbfjFubiao> xzdCbysJdcbfjFubiao;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,101 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 税收项明细视图对象 xzd_cbys_sscb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysSscb.class)
|
||||
public class XzdCbysSscbVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等)
|
||||
*/
|
||||
@ExcelProperty(value = "关联主单据的ID", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "外=键,指向对应主表,如预算/付款单据表等")
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 税收项(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "税收项", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String taxItem;
|
||||
|
||||
/**
|
||||
* 计税金额
|
||||
*/
|
||||
@ExcelProperty(value = "计税金额")
|
||||
private BigDecimal taxableAmount;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
@ExcelProperty(value = "税率")
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 应纳税额
|
||||
*/
|
||||
@ExcelProperty(value = "应纳税额")
|
||||
private BigDecimal taxPayable;
|
||||
|
||||
/**
|
||||
* 可抵税额
|
||||
*/
|
||||
@ExcelProperty(value = "可抵税额")
|
||||
private BigDecimal taxDeductible;
|
||||
|
||||
/**
|
||||
* 应缴税额
|
||||
*/
|
||||
@ExcelProperty(value = "应缴税额")
|
||||
private BigDecimal taxDue;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,153 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附视图对象 xzd_cbys_wgcbtb_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysWgcbtbFubiao.class)
|
||||
public class XzdCbysWgcbtbFubiaoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联单据主表的ID(外键,指向单据基础信息表等主表)
|
||||
*/
|
||||
@ExcelProperty(value = "关联单据主表的ID", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "外=键,指向单据基础信息表等主表")
|
||||
private Long mainDocId;
|
||||
|
||||
/**
|
||||
* 类型(1、成本明细,2、)
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
/**
|
||||
* 预算项编码
|
||||
*/
|
||||
@ExcelProperty(value = "预算项编码")
|
||||
private String budgetItemCode;
|
||||
|
||||
/**
|
||||
* 预算项标题
|
||||
*/
|
||||
@ExcelProperty(value = "预算项标题")
|
||||
private String budgetItemTitle;
|
||||
|
||||
/**
|
||||
* BOQ编码
|
||||
*/
|
||||
@ExcelProperty(value = "BOQ编码")
|
||||
private String boq;
|
||||
|
||||
/**
|
||||
* WBS编码
|
||||
*/
|
||||
@ExcelProperty(value = "WBS编码")
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码
|
||||
*/
|
||||
@ExcelProperty(value = "CBS编码")
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
@ExcelProperty(value = "单位")
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
@ExcelProperty(value = "单价")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 计划数量
|
||||
*/
|
||||
@ExcelProperty(value = "计划数量")
|
||||
private BigDecimal planQuantity;
|
||||
|
||||
/**
|
||||
* 累计计划数量
|
||||
*/
|
||||
@ExcelProperty(value = "累计计划数量")
|
||||
private BigDecimal cumulativePlanQuantity;
|
||||
|
||||
/**
|
||||
* 计划金额
|
||||
*/
|
||||
@ExcelProperty(value = "计划金额")
|
||||
private BigDecimal planAmount;
|
||||
|
||||
/**
|
||||
* 累计计划金额
|
||||
*/
|
||||
@ExcelProperty(value = "累计计划金额")
|
||||
private BigDecimal cumulativePlanAmount;
|
||||
|
||||
/**
|
||||
* 完工数量
|
||||
*/
|
||||
@ExcelProperty(value = "完工数量")
|
||||
private BigDecimal completedQuantity;
|
||||
|
||||
/**
|
||||
* 累计完工数量
|
||||
*/
|
||||
@ExcelProperty(value = "累计完工数量")
|
||||
private BigDecimal cumulativeCompletedQuantity;
|
||||
|
||||
/**
|
||||
* 完工金额
|
||||
*/
|
||||
@ExcelProperty(value = "完工金额")
|
||||
private BigDecimal completedAmount;
|
||||
|
||||
/**
|
||||
* 累计完工金额
|
||||
*/
|
||||
@ExcelProperty(value = "累计完工金额")
|
||||
private BigDecimal cumulativeCompletedAmount;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,157 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import org.dromara.common.translation.annotation.Translation;
|
||||
import org.dromara.common.translation.constant.TransConstant;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtb;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报视图对象 xzd_cbys_wgcbtb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysWgcbtb.class)
|
||||
public class XzdCbysWgcbtbVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID,自增
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID,自增")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "单据编码", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "单据标题", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
@ExcelProperty(value = "单据日期")
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 预算分类
|
||||
*/
|
||||
@ExcelProperty(value = "预算分类")
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
@ExcelProperty(value = "工程项目")
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 工程项目名称
|
||||
*/
|
||||
@ExcelProperty(value = "工程项目名称")
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
@ExcelProperty(value = "项目责任人")
|
||||
private Long projectLeader;
|
||||
|
||||
|
||||
/**
|
||||
* 项目责任人名称
|
||||
*/
|
||||
@ExcelProperty(value = "项目责任人名称")
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "projectLeader")
|
||||
private String projectLeaderName;
|
||||
|
||||
/**
|
||||
* 开工日期
|
||||
*/
|
||||
@ExcelProperty(value = "开工日期")
|
||||
private LocalDate startDate;
|
||||
|
||||
/**
|
||||
* 竣工日期
|
||||
*/
|
||||
@ExcelProperty(value = "竣工日期")
|
||||
private LocalDate completionDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
@ExcelProperty(value = "年度")
|
||||
private Integer year;
|
||||
|
||||
/**
|
||||
* 月份
|
||||
*/
|
||||
@ExcelProperty(value = "月份")
|
||||
private Integer month;
|
||||
|
||||
/**
|
||||
* 统计周期
|
||||
*/
|
||||
@ExcelProperty(value = "统计周期")
|
||||
private String statCycle;
|
||||
|
||||
/**
|
||||
* 来源单据类型
|
||||
*/
|
||||
@ExcelProperty(value = "来源单据类型")
|
||||
private String sourceDocType;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 启用按科目属性分页签编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
@ExcelProperty(value = "启用按科目属性分页签编制模式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0==未启用,1=启用")
|
||||
private Long enableAccountAttrTab;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
private List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiao;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,247 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本附视图对象 xzd_cbys_zjhcb_fubiao
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysZjhcbFubiao.class)
|
||||
public class XzdCbysZjhcbFubiaoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 关联主单据的ID(外键,指向对应主表,如预算/付款单据表等)
|
||||
*/
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 预算项编码(budgetCode)
|
||||
*/
|
||||
@ExcelProperty(value = "预算项编码", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "b=udgetCode")
|
||||
private String budgetCode;
|
||||
|
||||
/**
|
||||
* 预算项名称(budgetName)
|
||||
*/
|
||||
@ExcelProperty(value = "预算项名称", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "b=udgetName")
|
||||
private String budgetName;
|
||||
|
||||
/**
|
||||
* WBS编码(wbs)
|
||||
*/
|
||||
@ExcelProperty(value = "WBS编码", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "w=bs")
|
||||
private String wbs;
|
||||
|
||||
/**
|
||||
* CBS编码(cbs)
|
||||
*/
|
||||
@ExcelProperty(value = "CBS编码", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=bs")
|
||||
private String cbs;
|
||||
|
||||
/**
|
||||
* 单位(unit)
|
||||
*/
|
||||
@ExcelProperty(value = "单位", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "u=nit")
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 数量(quantity)
|
||||
*/
|
||||
@ExcelProperty(value = "数量", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "q=uantity")
|
||||
private BigDecimal quantity;
|
||||
|
||||
/**
|
||||
* 单价(unitPrice)
|
||||
*/
|
||||
@ExcelProperty(value = "单价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "u=nitPrice")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
/**
|
||||
* 含税单价(taxIncludedUnitPrice)
|
||||
*/
|
||||
@ExcelProperty(value = "含税单价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "t=axIncludedUnitPrice")
|
||||
private BigDecimal taxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 税率(taxRate,如13%表示为0.1300)
|
||||
*/
|
||||
@ExcelProperty(value = "税率", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "t=axRate,如13%表示为0.1300")
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 税额(taxAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "税额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "t=axAmount")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
/**
|
||||
* 不含税金额(taxExcludedAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "不含税金额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "t=axExcludedAmount")
|
||||
private BigDecimal taxExcludedAmount;
|
||||
|
||||
/**
|
||||
* 含税金额(taxIncludedAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "含税金额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "t=axIncludedAmount")
|
||||
private BigDecimal taxIncludedAmount;
|
||||
|
||||
/**
|
||||
* 变更数量(changeQuantity)
|
||||
*/
|
||||
@ExcelProperty(value = "变更数量", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=hangeQuantity")
|
||||
private BigDecimal changeQuantity;
|
||||
|
||||
/**
|
||||
* 变更单价(changeUnitPrice)
|
||||
*/
|
||||
@ExcelProperty(value = "变更单价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=hangeUnitPrice")
|
||||
private BigDecimal changeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价(changeTaxIncludedUnitPrice)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后含税单价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=hangeTaxIncludedUnitPrice")
|
||||
private BigDecimal changeTaxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更税率(changeTaxRate)
|
||||
*/
|
||||
@ExcelProperty(value = "变更税率", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=hangeTaxRate")
|
||||
private BigDecimal changeTaxRate;
|
||||
|
||||
/**
|
||||
* 变更税额(changeTaxAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "变更税额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=hangeTaxAmount")
|
||||
private BigDecimal changeTaxAmount;
|
||||
|
||||
/**
|
||||
* 变更后数量(afterChangeQuantity)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后数量", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeQuantity")
|
||||
private BigDecimal afterChangeQuantity;
|
||||
|
||||
/**
|
||||
* 变更后单价(afterChangeUnitPrice)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后单价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeUnitPrice")
|
||||
private BigDecimal afterChangeUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后含税单价(afterChangeTaxIncludedUnitPrice)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后含税单价", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxIncludedUnitPrice")
|
||||
private BigDecimal afterChangeTaxIncludedUnitPrice;
|
||||
|
||||
/**
|
||||
* 变更后税率(afterChangeTaxRate)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后税率", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxRate")
|
||||
private BigDecimal afterChangeTaxRate;
|
||||
|
||||
/**
|
||||
* 变更后税额(afterChangeTaxAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后税额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxAmount")
|
||||
private BigDecimal afterChangeTaxAmount;
|
||||
|
||||
/**
|
||||
* 变更后不含税金额(afterChangeTaxExcludedAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后不含税金额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxExcludedAmount")
|
||||
private BigDecimal afterChangeTaxExcludedAmount;
|
||||
|
||||
/**
|
||||
* 变更后含税金额(afterChangeTaxIncludedAmount)
|
||||
*/
|
||||
@ExcelProperty(value = "变更后含税金额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=fterChangeTaxIncludedAmount")
|
||||
private BigDecimal afterChangeTaxIncludedAmount;
|
||||
|
||||
/**
|
||||
* 备注(remarks)
|
||||
*/
|
||||
@ExcelProperty(value = "备注", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "r=emarks")
|
||||
private String remarks;
|
||||
|
||||
/**
|
||||
* 合同模式(contractMode)
|
||||
*/
|
||||
@ExcelProperty(value = "合同模式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "c=ontractMode")
|
||||
private String contractMode;
|
||||
|
||||
/**
|
||||
* 中标预算收入(bidBudgetIncome)
|
||||
*/
|
||||
@ExcelProperty(value = "中标预算收入", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "b=idBudgetIncome")
|
||||
private BigDecimal bidBudgetIncome;
|
||||
|
||||
/**
|
||||
* 利润率(profitRate,如20%表示为20.00)
|
||||
*/
|
||||
@ExcelProperty(value = "利润率", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "p=rofitRate,如20%表示为20.00")
|
||||
private BigDecimal profitRate;
|
||||
|
||||
/**
|
||||
* 附件(attachment,存储附件路径或关联ID)
|
||||
*/
|
||||
@ExcelProperty(value = "附件", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "a=ttachment,存储附件路径或关联ID")
|
||||
private String attachment;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,205 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本视图对象 xzd_cbys_zjhcb
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysZjhcb.class)
|
||||
public class XzdCbysZjhcbVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 单据编码(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "单据编码", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "单据标题", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
@ExcelProperty(value = "单据日期")
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "工程项目", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private Long projectId;
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 预算分类(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "预算分类", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private String budgetCategory;
|
||||
|
||||
/**
|
||||
* 总不含税金额
|
||||
*/
|
||||
@ExcelProperty(value = "总不含税金额")
|
||||
private BigDecimal totalTaxExclAmount;
|
||||
|
||||
/**
|
||||
* 总税额
|
||||
*/
|
||||
@ExcelProperty(value = "总税额")
|
||||
private BigDecimal totalTaxAmount;
|
||||
|
||||
/**
|
||||
* 总含税金额
|
||||
*/
|
||||
@ExcelProperty(value = "总含税金额")
|
||||
private BigDecimal totalTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
@ExcelProperty(value = "项目责任人")
|
||||
private Long projectLeader;
|
||||
private String projectLeaderName;
|
||||
|
||||
/**
|
||||
* 执行项目经理
|
||||
*/
|
||||
@ExcelProperty(value = "执行项目经理")
|
||||
private Long execProjectManager;
|
||||
private String execProjectManagerName;
|
||||
|
||||
/**
|
||||
* 承包合同金额(带*,必填)
|
||||
*/
|
||||
@ExcelProperty(value = "承包合同金额", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "带=*,必填")
|
||||
private BigDecimal contractAmount;
|
||||
|
||||
/**
|
||||
* 税务成本
|
||||
*/
|
||||
@ExcelProperty(value = "税务成本")
|
||||
private BigDecimal taxCost;
|
||||
|
||||
/**
|
||||
* 利润率
|
||||
*/
|
||||
@ExcelProperty(value = "利润率")
|
||||
private BigDecimal profitRate;
|
||||
|
||||
/**
|
||||
* 利润金额
|
||||
*/
|
||||
@ExcelProperty(value = "利润金额")
|
||||
private BigDecimal profitAmount;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 启用成本预控模式(0=未启用,1=启用)
|
||||
*/
|
||||
@ExcelProperty(value = "启用成本预控模式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0==未启用,1=启用")
|
||||
private Long enableCostPrecontrol;
|
||||
|
||||
/**
|
||||
* 成本控制模式(如WBS+CBS)
|
||||
*/
|
||||
@ExcelProperty(value = "成本控制模式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "如=WBS+CBS")
|
||||
private String costControlMode;
|
||||
|
||||
/**
|
||||
* 外币含税类型
|
||||
*/
|
||||
@ExcelProperty(value = "外币含税类型")
|
||||
private String foreignCurrencyTaxType;
|
||||
|
||||
/**
|
||||
* 禁止标识
|
||||
*/
|
||||
@ExcelProperty(value = "禁止标识")
|
||||
private String forbidFlag;
|
||||
|
||||
/**
|
||||
* 启用按科目属性分页签编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
@ExcelProperty(value = "启用按科目属性分页签编制模式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0==未启用,1=启用")
|
||||
private Long enableAccountAttrTab;
|
||||
|
||||
/**
|
||||
* 启用物料组编制模式(0=未启用,1=启用)
|
||||
*/
|
||||
@ExcelProperty(value = "启用物料组编制模式", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0==未启用,1=启用")
|
||||
private Long enableMaterialGroup;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
|
||||
/**
|
||||
* 变更记录
|
||||
*/
|
||||
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjl;
|
||||
|
||||
/**
|
||||
* 成本明细
|
||||
*/
|
||||
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiao;
|
||||
|
||||
/**
|
||||
* 税收成本
|
||||
*/
|
||||
List<XzdCbysSscb> xzdCbysSscb;
|
||||
}
|
||||
@ -0,0 +1,121 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录视图对象 xzd_cbys_ztjhcb_bgjl
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = XzdCbysZtjhcbBgjl.class)
|
||||
public class XzdCbysZtjhcbBgjlVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
private Long mainDocumentId;
|
||||
|
||||
/**
|
||||
* 附件(关联附件表可按需调整为外键)
|
||||
*/
|
||||
@ExcelProperty(value = "附件", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "关=联附件表可按需调整为外键")
|
||||
private String attachment;
|
||||
|
||||
/**
|
||||
* 单据编码
|
||||
*/
|
||||
@ExcelProperty(value = "单据编码")
|
||||
private String docCode;
|
||||
|
||||
/**
|
||||
* 单据标题
|
||||
*/
|
||||
@ExcelProperty(value = "单据标题")
|
||||
private String docTitle;
|
||||
|
||||
/**
|
||||
* 单据日期
|
||||
*/
|
||||
@ExcelProperty(value = "单据日期")
|
||||
private LocalDate docDate;
|
||||
|
||||
/**
|
||||
* 工程项目
|
||||
*/
|
||||
@ExcelProperty(value = "工程项目")
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 变更根源
|
||||
*/
|
||||
@ExcelProperty(value = "变更根源")
|
||||
private String changeSource;
|
||||
|
||||
/**
|
||||
* 变更不含税金额
|
||||
*/
|
||||
@ExcelProperty(value = "变更不含税金额")
|
||||
private BigDecimal changeTaxExclAmount;
|
||||
|
||||
/**
|
||||
* 变更含税金额
|
||||
*/
|
||||
@ExcelProperty(value = "变更含税金额")
|
||||
private BigDecimal changeTaxInclAmount;
|
||||
|
||||
/**
|
||||
* 核准人
|
||||
*/
|
||||
@ExcelProperty(value = "核准人")
|
||||
private String approver;
|
||||
|
||||
/**
|
||||
* 项目责任人
|
||||
*/
|
||||
@ExcelProperty(value = "项目责任人")
|
||||
private String projectLeader;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 单据引用
|
||||
*/
|
||||
@ExcelProperty(value = "单据引用")
|
||||
private String documentReference;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysJdcbfjFubiaoMapper extends BaseMapperPlus<XzdCbysJdcbfjFubiao, XzdCbysJdcbfjFubiaoVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysJdcbfjMapper extends BaseMapperPlus<XzdCbysJdcbfj, XzdCbysJdcbfjVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 税收项明细Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysSscbMapper extends BaseMapperPlus<XzdCbysSscb, XzdCbysSscbVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbFubiaoVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysWgcbtbFubiaoMapper extends BaseMapperPlus<XzdCbysWgcbtbFubiao, XzdCbysWgcbtbFubiaoVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtb;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysWgcbtbMapper extends BaseMapperPlus<XzdCbysWgcbtb, XzdCbysWgcbtbVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbFubiaoVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本附Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysZjhcbFubiaoMapper extends BaseMapperPlus<XzdCbysZjhcbFubiao, XzdCbysZjhcbFubiaoVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysZjhcbMapper extends BaseMapperPlus<XzdCbysZjhcb, XzdCbysZjhcbVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface XzdCbysZtjhcbBgjlMapper extends BaseMapperPlus<XzdCbysZtjhcbBgjl, XzdCbysZtjhcbBgjlVo> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysJdcbfjFubiaoService extends IService<XzdCbysJdcbfjFubiao>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-阶段成本分解附
|
||||
*/
|
||||
XzdCbysJdcbfjFubiaoVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-阶段成本分解附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-阶段成本分解附分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysJdcbfjFubiaoVo> queryPageList(XzdCbysJdcbfjFubiaoBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-阶段成本分解附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-阶段成本分解附列表
|
||||
*/
|
||||
List<XzdCbysJdcbfjFubiaoVo> queryList(XzdCbysJdcbfjFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解附
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysJdcbfjFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解附
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysJdcbfjFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-阶段成本分解附信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfj;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysJdcbfjService extends IService<XzdCbysJdcbfj>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-阶段成本分解
|
||||
*/
|
||||
XzdCbysJdcbfjVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-阶段成本分解列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-阶段成本分解分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysJdcbfjVo> queryPageList(XzdCbysJdcbfjBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-阶段成本分解列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-阶段成本分解列表
|
||||
*/
|
||||
List<XzdCbysJdcbfjVo> queryList(XzdCbysJdcbfjBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysJdcbfjBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysJdcbfjBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-阶段成本分解信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysSscbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 税收项明细Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysSscbService extends IService<XzdCbysSscb>{
|
||||
|
||||
/**
|
||||
* 查询税收项明细
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 税收项明细
|
||||
*/
|
||||
XzdCbysSscbVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询税收项明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 税收项明细分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysSscbVo> queryPageList(XzdCbysSscbBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的税收项明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 税收项明细列表
|
||||
*/
|
||||
List<XzdCbysSscbVo> queryList(XzdCbysSscbBo bo);
|
||||
|
||||
/**
|
||||
* 新增税收项明细
|
||||
*
|
||||
* @param bo 税收项明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysSscbBo bo);
|
||||
|
||||
/**
|
||||
* 修改税收项明细
|
||||
*
|
||||
* @param bo 税收项明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysSscbBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除税收项明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysWgcbtbFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysWgcbtbFubiaoService extends IService<XzdCbysWgcbtbFubiao>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-附
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-附
|
||||
*/
|
||||
XzdCbysWgcbtbFubiaoVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-附分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysWgcbtbFubiaoVo> queryPageList(XzdCbysWgcbtbFubiaoBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-附列表
|
||||
*/
|
||||
List<XzdCbysWgcbtbFubiaoVo> queryList(XzdCbysWgcbtbFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-附
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysWgcbtbFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-附
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysWgcbtbFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-附信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysWgcbtbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtb;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysWgcbtbService extends IService<XzdCbysWgcbtb>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-完工成本填报
|
||||
*/
|
||||
XzdCbysWgcbtbVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-完工成本填报列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-完工成本填报分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysWgcbtbVo> queryPageList(XzdCbysWgcbtbBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-完工成本填报列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-完工成本填报列表
|
||||
*/
|
||||
List<XzdCbysWgcbtbVo> queryList(XzdCbysWgcbtbBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-完工成本填报
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysWgcbtbBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-完工成本填报
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysWgcbtbBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-完工成本填报信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本附Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysZjhcbFubiaoService extends IService<XzdCbysZjhcbFubiao>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本附
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-总体计划成本附
|
||||
*/
|
||||
XzdCbysZjhcbFubiaoVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-总体计划成本附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-总体计划成本附分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysZjhcbFubiaoVo> queryPageList(XzdCbysZjhcbFubiaoBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-总体计划成本附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-总体计划成本附列表
|
||||
*/
|
||||
List<XzdCbysZjhcbFubiaoVo> queryList(XzdCbysZjhcbFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-总体计划成本附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本附
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysZjhcbFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-总体计划成本附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本附
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysZjhcbFubiaoBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-总体计划成本附信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,72 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcb;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysZjhcbService extends IService<XzdCbysZjhcb>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-总体计划成本
|
||||
*/
|
||||
XzdCbysZjhcbVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-总体计划成本列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-总体计划成本分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysZjhcbVo> queryPageList(XzdCbysZjhcbBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-总体计划成本列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-总体计划成本列表
|
||||
*/
|
||||
List<XzdCbysZjhcbVo> queryList(XzdCbysZjhcbBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysZjhcbBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysZjhcbBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-总体计划成本信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
String queryNameById(Long id);
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service;
|
||||
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZtjhcbBgjlBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface IXzdCbysZtjhcbBgjlService extends IService<XzdCbysZtjhcbBgjl>{
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-变更记录
|
||||
*/
|
||||
XzdCbysZtjhcbBgjlVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-变更记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-变更记录分页列表
|
||||
*/
|
||||
TableDataInfo<XzdCbysZtjhcbBgjlVo> queryPageList(XzdCbysZtjhcbBgjlBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-变更记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-变更记录列表
|
||||
*/
|
||||
List<XzdCbysZtjhcbBgjlVo> queryList(XzdCbysZtjhcbBgjlBo bo);
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-变更记录
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(XzdCbysZtjhcbBgjlBo bo);
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-变更记录
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(XzdCbysZtjhcbBgjlBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-变更记录信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,147 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysJdcbfjFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjFubiaoMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解附Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysJdcbfjFubiaoServiceImpl extends ServiceImpl<XzdCbysJdcbfjFubiaoMapper, XzdCbysJdcbfjFubiao> implements IXzdCbysJdcbfjFubiaoService {
|
||||
|
||||
private final XzdCbysJdcbfjFubiaoMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-阶段成本分解附
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysJdcbfjFubiaoVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-阶段成本分解附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-阶段成本分解附分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysJdcbfjFubiaoVo> queryPageList(XzdCbysJdcbfjFubiaoBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysJdcbfjFubiao> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysJdcbfjFubiaoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-阶段成本分解附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-阶段成本分解附列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysJdcbfjFubiaoVo> queryList(XzdCbysJdcbfjFubiaoBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysJdcbfjFubiao> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysJdcbfjFubiao> buildQueryWrapper(XzdCbysJdcbfjFubiaoBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysJdcbfjFubiao> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysJdcbfjFubiao::getId);
|
||||
lqw.eq(bo.getMainTableId() != null, XzdCbysJdcbfjFubiao::getMainTableId, bo.getMainTableId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetItemCode()), XzdCbysJdcbfjFubiao::getBudgetItemCode, bo.getBudgetItemCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getBudgetItemName()), XzdCbysJdcbfjFubiao::getBudgetItemName, bo.getBudgetItemName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBoq()), XzdCbysJdcbfjFubiao::getBoq, bo.getBoq());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdCbysJdcbfjFubiao::getWbs, bo.getWbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdCbysJdcbfjFubiao::getCbs, bo.getCbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdCbysJdcbfjFubiao::getUnit, bo.getUnit());
|
||||
lqw.eq(bo.getQuantity() != null, XzdCbysJdcbfjFubiao::getQuantity, bo.getQuantity());
|
||||
lqw.eq(bo.getUnitPrice() != null, XzdCbysJdcbfjFubiao::getUnitPrice, bo.getUnitPrice());
|
||||
lqw.eq(bo.getAmount() != null, XzdCbysJdcbfjFubiao::getAmount, bo.getAmount());
|
||||
lqw.eq(bo.getChangeQuantity() != null, XzdCbysJdcbfjFubiao::getChangeQuantity, bo.getChangeQuantity());
|
||||
lqw.eq(bo.getChangeAmount() != null, XzdCbysJdcbfjFubiao::getChangeAmount, bo.getChangeAmount());
|
||||
lqw.eq(bo.getAfterChangeQuantity() != null, XzdCbysJdcbfjFubiao::getAfterChangeQuantity, bo.getAfterChangeQuantity());
|
||||
lqw.eq(bo.getAfterChangeUnitPrice() != null, XzdCbysJdcbfjFubiao::getAfterChangeUnitPrice, bo.getAfterChangeUnitPrice());
|
||||
lqw.eq(bo.getAfterChangeAmount() != null, XzdCbysJdcbfjFubiao::getAfterChangeAmount, bo.getAfterChangeAmount());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysJdcbfjFubiao::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysJdcbfjFubiao::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解附
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysJdcbfjFubiaoBo bo) {
|
||||
XzdCbysJdcbfjFubiao add = MapstructUtils.convert(bo, XzdCbysJdcbfjFubiao.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解附
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysJdcbfjFubiaoBo bo) {
|
||||
XzdCbysJdcbfjFubiao update = MapstructUtils.convert(bo, XzdCbysJdcbfjFubiao.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysJdcbfjFubiao entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-阶段成本分解附信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,240 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.utils.BatchNumberGenerator;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.dromara.system.service.impl.SysOssServiceImpl;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjFubiaoService;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbService;
|
||||
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysJdcbfjBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysJdcbfjVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysJdcbfjMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysJdcbfjService;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-阶段成本分解Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysJdcbfjServiceImpl extends ServiceImpl<XzdCbysJdcbfjMapper, XzdCbysJdcbfj> implements IXzdCbysJdcbfjService {
|
||||
|
||||
private final XzdCbysJdcbfjMapper baseMapper;
|
||||
@Autowired
|
||||
private IXzdCbysJdcbfjFubiaoService xzdCbysJdcbfjFubiaoService;
|
||||
|
||||
@Autowired
|
||||
private SysOssServiceImpl sysOssService;
|
||||
@Autowired
|
||||
private XzdProjectServiceImpl xzdProjectService;
|
||||
@Autowired
|
||||
private ISysUserService sysUserService;
|
||||
@Autowired
|
||||
private IXzdCbysZjhcbService xzdCbysZjhcbService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-阶段成本分解
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysJdcbfjVo queryById(Long id){
|
||||
XzdCbysJdcbfjVo vo = baseMapper.selectVoById(id);
|
||||
getName(vo);
|
||||
getHttk(vo);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-阶段成本分解列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-阶段成本分解分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysJdcbfjVo> queryPageList(XzdCbysJdcbfjBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysJdcbfj> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysJdcbfjVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
result.getRecords().forEach(this::getName);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-阶段成本分解列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-阶段成本分解列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysJdcbfjVo> queryList(XzdCbysJdcbfjBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysJdcbfj> lqw = buildQueryWrapper(bo);
|
||||
List<XzdCbysJdcbfjVo> vos = baseMapper.selectVoList(lqw);
|
||||
vos.forEach(this::getName);
|
||||
return vos;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysJdcbfj> buildQueryWrapper(XzdCbysJdcbfjBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysJdcbfj> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysJdcbfj::getId);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysJdcbfj::getDocCode, bo.getDocCode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysJdcbfj::getDocTitle, bo.getDocTitle());
|
||||
lqw.eq(bo.getDocDate() != null, XzdCbysJdcbfj::getDocDate, bo.getDocDate());
|
||||
lqw.eq(bo.getProjectId() != null, XzdCbysJdcbfj::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCategory()), XzdCbysJdcbfj::getBudgetCategory, bo.getBudgetCategory());
|
||||
lqw.eq(bo.getTotalPlanCost() != null, XzdCbysJdcbfj::getTotalPlanCost, bo.getTotalPlanCost());
|
||||
lqw.eq(bo.getProjectLeader() != null, XzdCbysJdcbfj::getProjectLeader, bo.getProjectLeader());
|
||||
lqw.eq(bo.getStartDate() != null, XzdCbysJdcbfj::getStartDate, bo.getStartDate());
|
||||
lqw.eq(bo.getCompletionDate() != null, XzdCbysJdcbfj::getCompletionDate, bo.getCompletionDate());
|
||||
lqw.eq(bo.getYear() != null, XzdCbysJdcbfj::getYear, bo.getYear());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCurrency()), XzdCbysJdcbfj::getCurrency, bo.getCurrency());
|
||||
lqw.eq(bo.getExchangeRate() != null, XzdCbysJdcbfj::getExchangeRate, bo.getExchangeRate());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysJdcbfj::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysJdcbfj::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysJdcbfjBo bo) {
|
||||
XzdCbysJdcbfj add = MapstructUtils.convert(bo, XzdCbysJdcbfj.class);
|
||||
validEntityBeforeSave(add);
|
||||
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBJDCBFJ-");
|
||||
add.setDocCode(banBen);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
|
||||
bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
|
||||
String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
|
||||
item.setBudgetItemCode(code);
|
||||
item.setMainTableId(add.getId());
|
||||
});
|
||||
xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-阶段成本分解
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-阶段成本分解
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysJdcbfjBo bo) {
|
||||
XzdCbysJdcbfj update = MapstructUtils.convert(bo, XzdCbysJdcbfj.class);
|
||||
validEntityBeforeSave(update);
|
||||
xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, bo.getId()));
|
||||
if (bo.getXzdCbysJdcbfjFubiao() != null && !bo.getXzdCbysJdcbfjFubiao().isEmpty()) {
|
||||
bo.getXzdCbysJdcbfjFubiao().forEach(item -> {
|
||||
String code = BatchNumberGenerator.generateBatchNumber("LXCBYSBM-");
|
||||
item.setBudgetItemCode(code);
|
||||
item.setMainTableId(bo.getId());
|
||||
});
|
||||
xzdCbysJdcbfjFubiaoService.saveBatch(bo.getXzdCbysJdcbfjFubiao());
|
||||
}
|
||||
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysJdcbfj entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-阶段成本分解信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
List<Long> deleteIds = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
XzdCbysJdcbfjVo vo = baseMapper.selectVoById(id);
|
||||
if (vo != null){
|
||||
//删除附件
|
||||
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
|
||||
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
|
||||
deleteIds.addAll(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!deleteIds.isEmpty()) {
|
||||
sysOssService.deleteWithValidByIds(deleteIds, false);
|
||||
}
|
||||
xzdCbysJdcbfjFubiaoService.remove(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().in(XzdCbysJdcbfjFubiao::getMainTableId,ids));
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取部分字段名称
|
||||
* @param item
|
||||
*/
|
||||
private void getName(XzdCbysJdcbfjVo item) {
|
||||
//项目名称
|
||||
if (item.getProjectId() != null){
|
||||
String projectName = xzdProjectService.queryNameById(item.getProjectId());
|
||||
if (projectName != null){
|
||||
item.setProjectName(projectName);
|
||||
}
|
||||
}
|
||||
if (item.getProjectLeader() != null){
|
||||
String name = sysUserService.queryNameById(item.getProjectLeader());
|
||||
if (name != null){
|
||||
item.setProjectLeaderName(name);
|
||||
}
|
||||
}
|
||||
if (item.getTotalPlanCost() != null){
|
||||
String name = xzdCbysZjhcbService.queryNameById(item.getTotalPlanCost());
|
||||
if (name != null){
|
||||
item.setTotalPlanCostName(name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取扣款与奖励项
|
||||
* @param vo
|
||||
*/
|
||||
private void getHttk(XzdCbysJdcbfjVo vo) {
|
||||
List<XzdCbysJdcbfjFubiao> xzdCbysZtjhcbBgjls = xzdCbysJdcbfjFubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysJdcbfjFubiao>().eq(XzdCbysJdcbfjFubiao::getMainTableId, vo.getId()));
|
||||
vo.setXzdCbysJdcbfjFubiao(xzdCbysZtjhcbBgjls);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,139 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysSscbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysSscbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysSscbMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysSscbService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 税收项明细Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysSscbServiceImpl extends ServiceImpl<XzdCbysSscbMapper, XzdCbysSscb> implements IXzdCbysSscbService {
|
||||
|
||||
private final XzdCbysSscbMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询税收项明细
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 税收项明细
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysSscbVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询税收项明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 税收项明细分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysSscbVo> queryPageList(XzdCbysSscbBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysSscb> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysSscbVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的税收项明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 税收项明细列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysSscbVo> queryList(XzdCbysSscbBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysSscb> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysSscb> buildQueryWrapper(XzdCbysSscbBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysSscb> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysSscb::getId);
|
||||
lqw.eq(bo.getMainDocumentId() != null, XzdCbysSscb::getMainDocumentId, bo.getMainDocumentId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getTaxItem()), XzdCbysSscb::getTaxItem, bo.getTaxItem());
|
||||
lqw.eq(bo.getTaxableAmount() != null, XzdCbysSscb::getTaxableAmount, bo.getTaxableAmount());
|
||||
lqw.eq(bo.getTaxRate() != null, XzdCbysSscb::getTaxRate, bo.getTaxRate());
|
||||
lqw.eq(bo.getTaxPayable() != null, XzdCbysSscb::getTaxPayable, bo.getTaxPayable());
|
||||
lqw.eq(bo.getTaxDeductible() != null, XzdCbysSscb::getTaxDeductible, bo.getTaxDeductible());
|
||||
lqw.eq(bo.getTaxDue() != null, XzdCbysSscb::getTaxDue, bo.getTaxDue());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysSscb::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysSscb::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增税收项明细
|
||||
*
|
||||
* @param bo 税收项明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysSscbBo bo) {
|
||||
XzdCbysSscb add = MapstructUtils.convert(bo, XzdCbysSscb.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改税收项明细
|
||||
*
|
||||
* @param bo 税收项明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysSscbBo bo) {
|
||||
XzdCbysSscb update = MapstructUtils.convert(bo, XzdCbysSscb.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysSscb entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除税收项明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,148 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysWgcbtbFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysWgcbtbFubiaoMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbFubiaoService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-附Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysWgcbtbFubiaoServiceImpl extends ServiceImpl<XzdCbysWgcbtbFubiaoMapper, XzdCbysWgcbtbFubiao> implements IXzdCbysWgcbtbFubiaoService {
|
||||
|
||||
private final XzdCbysWgcbtbFubiaoMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-附
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-附
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysWgcbtbFubiaoVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-附分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysWgcbtbFubiaoVo> queryPageList(XzdCbysWgcbtbFubiaoBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysWgcbtbFubiao> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysWgcbtbFubiaoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-附列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysWgcbtbFubiaoVo> queryList(XzdCbysWgcbtbFubiaoBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysWgcbtbFubiao> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysWgcbtbFubiao> buildQueryWrapper(XzdCbysWgcbtbFubiaoBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysWgcbtbFubiao> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysWgcbtbFubiao::getId);
|
||||
lqw.eq(bo.getMainDocId() != null, XzdCbysWgcbtbFubiao::getMainDocId, bo.getMainDocId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetItemCode()), XzdCbysWgcbtbFubiao::getBudgetItemCode, bo.getBudgetItemCode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetItemTitle()), XzdCbysWgcbtbFubiao::getBudgetItemTitle, bo.getBudgetItemTitle());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBoq()), XzdCbysWgcbtbFubiao::getBoq, bo.getBoq());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdCbysWgcbtbFubiao::getWbs, bo.getWbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdCbysWgcbtbFubiao::getCbs, bo.getCbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdCbysWgcbtbFubiao::getUnit, bo.getUnit());
|
||||
lqw.eq(bo.getUnitPrice() != null, XzdCbysWgcbtbFubiao::getUnitPrice, bo.getUnitPrice());
|
||||
lqw.eq(bo.getPlanQuantity() != null, XzdCbysWgcbtbFubiao::getPlanQuantity, bo.getPlanQuantity());
|
||||
lqw.eq(bo.getCumulativePlanQuantity() != null, XzdCbysWgcbtbFubiao::getCumulativePlanQuantity, bo.getCumulativePlanQuantity());
|
||||
lqw.eq(bo.getPlanAmount() != null, XzdCbysWgcbtbFubiao::getPlanAmount, bo.getPlanAmount());
|
||||
lqw.eq(bo.getCumulativePlanAmount() != null, XzdCbysWgcbtbFubiao::getCumulativePlanAmount, bo.getCumulativePlanAmount());
|
||||
lqw.eq(bo.getCompletedQuantity() != null, XzdCbysWgcbtbFubiao::getCompletedQuantity, bo.getCompletedQuantity());
|
||||
lqw.eq(bo.getCumulativeCompletedQuantity() != null, XzdCbysWgcbtbFubiao::getCumulativeCompletedQuantity, bo.getCumulativeCompletedQuantity());
|
||||
lqw.eq(bo.getCompletedAmount() != null, XzdCbysWgcbtbFubiao::getCompletedAmount, bo.getCompletedAmount());
|
||||
lqw.eq(bo.getCumulativeCompletedAmount() != null, XzdCbysWgcbtbFubiao::getCumulativeCompletedAmount, bo.getCumulativeCompletedAmount());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysWgcbtbFubiao::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysWgcbtbFubiao::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-附
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysWgcbtbFubiaoBo bo) {
|
||||
XzdCbysWgcbtbFubiao add = MapstructUtils.convert(bo, XzdCbysWgcbtbFubiao.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-附
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysWgcbtbFubiaoBo bo) {
|
||||
XzdCbysWgcbtbFubiao update = MapstructUtils.convert(bo, XzdCbysWgcbtbFubiao.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysWgcbtbFubiao entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-附信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,213 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.utils.BatchNumberGenerator;
|
||||
import org.dromara.system.service.impl.SysOssServiceImpl;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbFubiaoService;
|
||||
import org.dromara.xzd.domain.XzdContractDetails;
|
||||
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.TaxInfo;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.AppreciationInvoiceVo;
|
||||
import org.dromara.xzd.service.IXzdProjectService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysWgcbtbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysWgcbtbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtb;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysWgcbtbMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbService;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-完工成本填报Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysWgcbtbServiceImpl extends ServiceImpl<XzdCbysWgcbtbMapper, XzdCbysWgcbtb> implements IXzdCbysWgcbtbService {
|
||||
|
||||
private final XzdCbysWgcbtbMapper baseMapper;
|
||||
|
||||
@Autowired
|
||||
private IXzdCbysWgcbtbFubiaoService fubiaoService;
|
||||
|
||||
|
||||
private final IXzdProjectService xzdProjectService;
|
||||
|
||||
@Autowired
|
||||
private SysOssServiceImpl sysOssService;
|
||||
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-完工成本填报
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysWgcbtbVo queryById(Long id){
|
||||
XzdCbysWgcbtbVo xzdCbysWgcbtbVo = baseMapper.selectVoById(id);
|
||||
List<XzdCbysWgcbtbVo> vo = List.of(xzdCbysWgcbtbVo);
|
||||
saveValu(vo);
|
||||
return vo.getFirst();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-完工成本填报列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-完工成本填报分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysWgcbtbVo> queryPageList(XzdCbysWgcbtbBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysWgcbtb> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysWgcbtbVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
saveValu(result.getRecords());
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
private void saveValu(List<XzdCbysWgcbtbVo> records) {
|
||||
for (XzdCbysWgcbtbVo item : records) {
|
||||
//项目名称
|
||||
if (item.getProjectId() != null){
|
||||
String projectName = xzdProjectService.queryNameById(item.getProjectId());
|
||||
if (projectName != null){
|
||||
item.setProjectName(projectName);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-完工成本填报列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-完工成本填报列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysWgcbtbVo> queryList(XzdCbysWgcbtbBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysWgcbtb> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysWgcbtb> buildQueryWrapper(XzdCbysWgcbtbBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysWgcbtb> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysWgcbtb::getId);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysWgcbtb::getDocCode, bo.getDocCode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysWgcbtb::getDocTitle, bo.getDocTitle());
|
||||
lqw.eq(bo.getDocDate() != null, XzdCbysWgcbtb::getDocDate, bo.getDocDate());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCategory()), XzdCbysWgcbtb::getBudgetCategory, bo.getBudgetCategory());
|
||||
lqw.eq(bo.getProjectId() != null, XzdCbysWgcbtb::getProjectId, bo.getProjectId());
|
||||
lqw.eq(bo.getProjectLeader() != null, XzdCbysWgcbtb::getProjectLeader, bo.getProjectLeader());
|
||||
lqw.eq(bo.getStartDate() != null, XzdCbysWgcbtb::getStartDate, bo.getStartDate());
|
||||
lqw.eq(bo.getCompletionDate() != null, XzdCbysWgcbtb::getCompletionDate, bo.getCompletionDate());
|
||||
lqw.eq(bo.getYear() != null, XzdCbysWgcbtb::getYear, bo.getYear());
|
||||
lqw.eq(bo.getMonth() != null, XzdCbysWgcbtb::getMonth, bo.getMonth());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getStatCycle()), XzdCbysWgcbtb::getStatCycle, bo.getStatCycle());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSourceDocType()), XzdCbysWgcbtb::getSourceDocType, bo.getSourceDocType());
|
||||
lqw.eq(bo.getEnableAccountAttrTab() != null, XzdCbysWgcbtb::getEnableAccountAttrTab, bo.getEnableAccountAttrTab());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysWgcbtb::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysWgcbtb::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-完工成本填报
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysWgcbtbBo bo) {
|
||||
XzdCbysWgcbtb add = MapstructUtils.convert(bo, XzdCbysWgcbtb.class);
|
||||
validEntityBeforeSave(add);
|
||||
String banBen = BatchNumberGenerator.generateBatchNumber("CBTB");
|
||||
add.setDocCode(banBen);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
|
||||
throw new ServiceException("成本明细不能为空");
|
||||
}
|
||||
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(add.getId());});
|
||||
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-完工成本填报
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-完工成本填报
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysWgcbtbBo bo) {
|
||||
XzdCbysWgcbtb update = MapstructUtils.convert(bo, XzdCbysWgcbtb.class);
|
||||
validEntityBeforeSave(update);
|
||||
|
||||
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
|
||||
throw new ServiceException("成本明细不能为空");
|
||||
}
|
||||
HashMap<String, Object> hashMap = new HashMap<>();
|
||||
hashMap.put("main_doc_id", update.getId());
|
||||
fubiaoService.getBaseMapper().deleteByMap(hashMap);
|
||||
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(update.getId());});
|
||||
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
|
||||
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysWgcbtb entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-完工成本填报信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
for (Long id : ids) {
|
||||
XzdCbysWgcbtbVo vo = baseMapper.selectVoById(id);
|
||||
// 删除附件
|
||||
if (!StringUtils.isEmpty(vo.getFileId())){
|
||||
List<Long> collect = Arrays.stream(vo.getFileId().split(",")).map(item -> {
|
||||
return Long.parseLong(item);
|
||||
}).collect(Collectors.toList());
|
||||
sysOssService.deleteWithValidByIds(collect, false);
|
||||
}
|
||||
}
|
||||
fubiaoService.getBaseMapper().delete(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().in(XzdCbysWgcbtbFubiao::getMainDocId, ids));
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,159 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbFubiaoBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbFubiaoVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbFubiao;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbFubiaoMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbFubiaoService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本附Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysZjhcbFubiaoServiceImpl extends ServiceImpl<XzdCbysZjhcbFubiaoMapper, XzdCbysZjhcbFubiao> implements IXzdCbysZjhcbFubiaoService {
|
||||
|
||||
private final XzdCbysZjhcbFubiaoMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本附
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-总体计划成本附
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysZjhcbFubiaoVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-总体计划成本附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-总体计划成本附分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysZjhcbFubiaoVo> queryPageList(XzdCbysZjhcbFubiaoBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysZjhcbFubiao> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysZjhcbFubiaoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-总体计划成本附列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-总体计划成本附列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysZjhcbFubiaoVo> queryList(XzdCbysZjhcbFubiaoBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysZjhcbFubiao> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysZjhcbFubiao> buildQueryWrapper(XzdCbysZjhcbFubiaoBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysZjhcbFubiao> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysZjhcbFubiao::getId);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCode()), XzdCbysZjhcbFubiao::getBudgetCode, bo.getBudgetCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getBudgetName()), XzdCbysZjhcbFubiao::getBudgetName, bo.getBudgetName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdCbysZjhcbFubiao::getWbs, bo.getWbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdCbysZjhcbFubiao::getCbs, bo.getCbs());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdCbysZjhcbFubiao::getUnit, bo.getUnit());
|
||||
lqw.eq(bo.getQuantity() != null, XzdCbysZjhcbFubiao::getQuantity, bo.getQuantity());
|
||||
lqw.eq(bo.getUnitPrice() != null, XzdCbysZjhcbFubiao::getUnitPrice, bo.getUnitPrice());
|
||||
lqw.eq(bo.getTaxIncludedUnitPrice() != null, XzdCbysZjhcbFubiao::getTaxIncludedUnitPrice, bo.getTaxIncludedUnitPrice());
|
||||
lqw.eq(bo.getTaxRate() != null, XzdCbysZjhcbFubiao::getTaxRate, bo.getTaxRate());
|
||||
lqw.eq(bo.getTaxAmount() != null, XzdCbysZjhcbFubiao::getTaxAmount, bo.getTaxAmount());
|
||||
lqw.eq(bo.getTaxExcludedAmount() != null, XzdCbysZjhcbFubiao::getTaxExcludedAmount, bo.getTaxExcludedAmount());
|
||||
lqw.eq(bo.getTaxIncludedAmount() != null, XzdCbysZjhcbFubiao::getTaxIncludedAmount, bo.getTaxIncludedAmount());
|
||||
lqw.eq(bo.getChangeQuantity() != null, XzdCbysZjhcbFubiao::getChangeQuantity, bo.getChangeQuantity());
|
||||
lqw.eq(bo.getChangeUnitPrice() != null, XzdCbysZjhcbFubiao::getChangeUnitPrice, bo.getChangeUnitPrice());
|
||||
lqw.eq(bo.getChangeTaxIncludedUnitPrice() != null, XzdCbysZjhcbFubiao::getChangeTaxIncludedUnitPrice, bo.getChangeTaxIncludedUnitPrice());
|
||||
lqw.eq(bo.getChangeTaxRate() != null, XzdCbysZjhcbFubiao::getChangeTaxRate, bo.getChangeTaxRate());
|
||||
lqw.eq(bo.getChangeTaxAmount() != null, XzdCbysZjhcbFubiao::getChangeTaxAmount, bo.getChangeTaxAmount());
|
||||
lqw.eq(bo.getAfterChangeQuantity() != null, XzdCbysZjhcbFubiao::getAfterChangeQuantity, bo.getAfterChangeQuantity());
|
||||
lqw.eq(bo.getAfterChangeUnitPrice() != null, XzdCbysZjhcbFubiao::getAfterChangeUnitPrice, bo.getAfterChangeUnitPrice());
|
||||
lqw.eq(bo.getAfterChangeTaxIncludedUnitPrice() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxIncludedUnitPrice, bo.getAfterChangeTaxIncludedUnitPrice());
|
||||
lqw.eq(bo.getAfterChangeTaxRate() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxRate, bo.getAfterChangeTaxRate());
|
||||
lqw.eq(bo.getAfterChangeTaxAmount() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxAmount, bo.getAfterChangeTaxAmount());
|
||||
lqw.eq(bo.getAfterChangeTaxExcludedAmount() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxExcludedAmount, bo.getAfterChangeTaxExcludedAmount());
|
||||
lqw.eq(bo.getAfterChangeTaxIncludedAmount() != null, XzdCbysZjhcbFubiao::getAfterChangeTaxIncludedAmount, bo.getAfterChangeTaxIncludedAmount());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdCbysZjhcbFubiao::getRemarks, bo.getRemarks());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getContractMode()), XzdCbysZjhcbFubiao::getContractMode, bo.getContractMode());
|
||||
lqw.eq(bo.getBidBudgetIncome() != null, XzdCbysZjhcbFubiao::getBidBudgetIncome, bo.getBidBudgetIncome());
|
||||
lqw.eq(bo.getProfitRate() != null, XzdCbysZjhcbFubiao::getProfitRate, bo.getProfitRate());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getAttachment()), XzdCbysZjhcbFubiao::getAttachment, bo.getAttachment());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-总体计划成本附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本附
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysZjhcbFubiaoBo bo) {
|
||||
XzdCbysZjhcbFubiao add = MapstructUtils.convert(bo, XzdCbysZjhcbFubiao.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-总体计划成本附
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本附
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysZjhcbFubiaoBo bo) {
|
||||
XzdCbysZjhcbFubiao update = MapstructUtils.convert(bo, XzdCbysZjhcbFubiao.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysZjhcbFubiao entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-总体计划成本附信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,279 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.utils.BatchNumberGenerator;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.dromara.system.service.impl.SysOssServiceImpl;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.*;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.*;
|
||||
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
|
||||
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
|
||||
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbMapper;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-总体计划成本Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysZjhcbServiceImpl extends ServiceImpl<XzdCbysZjhcbMapper, XzdCbysZjhcb> implements IXzdCbysZjhcbService {
|
||||
|
||||
private final XzdCbysZjhcbMapper baseMapper;
|
||||
|
||||
@Autowired
|
||||
private IXzdCbysZtjhcbBgjlService xzdCbysZtjhcbBgjlService;
|
||||
@Autowired
|
||||
private IXzdCbysSscbService xzdCbysSscbService;
|
||||
@Autowired
|
||||
private IXzdCbysZjhcbFubiaoService fubiaoService;
|
||||
@Autowired
|
||||
private SysOssServiceImpl sysOssService;
|
||||
@Autowired
|
||||
private XzdProjectServiceImpl xzdProjectService;
|
||||
@Autowired
|
||||
private ISysUserService sysUserService;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-总体计划成本
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysZjhcbVo queryById(Long id){
|
||||
XzdCbysZjhcbVo vo = baseMapper.selectVoById(id);
|
||||
getName(vo);
|
||||
getHttk(vo);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-总体计划成本列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-总体计划成本分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysZjhcbVo> queryPageList(XzdCbysZjhcbBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysZjhcb> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysZjhcbVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
result.getRecords().forEach(this::getName);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-总体计划成本列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-总体计划成本列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysZjhcbVo> queryList(XzdCbysZjhcbBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysZjhcb> lqw = buildQueryWrapper(bo);
|
||||
List<XzdCbysZjhcbVo> vos = baseMapper.selectVoList(lqw);
|
||||
vos.forEach(this::getName);
|
||||
return vos;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysZjhcb> buildQueryWrapper(XzdCbysZjhcbBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysZjhcb> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysZjhcb::getId);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysZjhcb::getDocCode, bo.getDocCode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysZjhcb::getDocTitle, bo.getDocTitle());
|
||||
lqw.eq(bo.getDocDate() != null, XzdCbysZjhcb::getDocDate, bo.getDocDate());
|
||||
lqw.eq(bo.getProjectId() != null, XzdCbysZjhcb::getProjectId, bo.getProjectId());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCategory()), XzdCbysZjhcb::getBudgetCategory, bo.getBudgetCategory());
|
||||
lqw.eq(bo.getTotalTaxExclAmount() != null, XzdCbysZjhcb::getTotalTaxExclAmount, bo.getTotalTaxExclAmount());
|
||||
lqw.eq(bo.getTotalTaxAmount() != null, XzdCbysZjhcb::getTotalTaxAmount, bo.getTotalTaxAmount());
|
||||
lqw.eq(bo.getTotalTaxInclAmount() != null, XzdCbysZjhcb::getTotalTaxInclAmount, bo.getTotalTaxInclAmount());
|
||||
lqw.eq(bo.getProjectLeader() != null, XzdCbysZjhcb::getProjectLeader, bo.getProjectLeader());
|
||||
lqw.eq(bo.getExecProjectManager() != null, XzdCbysZjhcb::getExecProjectManager, bo.getExecProjectManager());
|
||||
lqw.eq(bo.getContractAmount() != null, XzdCbysZjhcb::getContractAmount, bo.getContractAmount());
|
||||
lqw.eq(bo.getTaxCost() != null, XzdCbysZjhcb::getTaxCost, bo.getTaxCost());
|
||||
lqw.eq(bo.getProfitRate() != null, XzdCbysZjhcb::getProfitRate, bo.getProfitRate());
|
||||
lqw.eq(bo.getProfitAmount() != null, XzdCbysZjhcb::getProfitAmount, bo.getProfitAmount());
|
||||
lqw.eq(bo.getEnableCostPrecontrol() != null, XzdCbysZjhcb::getEnableCostPrecontrol, bo.getEnableCostPrecontrol());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getCostControlMode()), XzdCbysZjhcb::getCostControlMode, bo.getCostControlMode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getForeignCurrencyTaxType()), XzdCbysZjhcb::getForeignCurrencyTaxType, bo.getForeignCurrencyTaxType());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getForbidFlag()), XzdCbysZjhcb::getForbidFlag, bo.getForbidFlag());
|
||||
lqw.eq(bo.getEnableAccountAttrTab() != null, XzdCbysZjhcb::getEnableAccountAttrTab, bo.getEnableAccountAttrTab());
|
||||
lqw.eq(bo.getEnableMaterialGroup() != null, XzdCbysZjhcb::getEnableMaterialGroup, bo.getEnableMaterialGroup());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysZjhcb::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysZjhcb::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertByBo(XzdCbysZjhcbBo bo) {
|
||||
XzdCbysZjhcb add = MapstructUtils.convert(bo, XzdCbysZjhcb.class);
|
||||
validEntityBeforeSave(add);
|
||||
String banBen = BatchNumberGenerator.generateBatchNumber("LXCBZTJHCB-");
|
||||
add.setDocCode(banBen);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
|
||||
throw new ServiceException("税收成本不能为空");
|
||||
}
|
||||
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
|
||||
throw new ServiceException("变更记录不能为空");
|
||||
}
|
||||
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
|
||||
throw new ServiceException("成本明细不能为空");
|
||||
}
|
||||
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());});
|
||||
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
|
||||
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());});
|
||||
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
|
||||
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(add.getId());});
|
||||
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-总体计划成本
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-总体计划成本
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean updateByBo(XzdCbysZjhcbBo bo) {
|
||||
XzdCbysZjhcb update = MapstructUtils.convert(bo, XzdCbysZjhcb.class);
|
||||
validEntityBeforeSave(update);
|
||||
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
|
||||
throw new ServiceException("税收成本不能为空");
|
||||
}
|
||||
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
|
||||
throw new ServiceException("变更记录不能为空");
|
||||
}
|
||||
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
|
||||
throw new ServiceException("成本明细不能为空");
|
||||
}
|
||||
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId()));
|
||||
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId()));
|
||||
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, bo.getId()));
|
||||
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());});
|
||||
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
|
||||
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(bo.getId());});
|
||||
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
|
||||
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocumentId(bo.getId());});
|
||||
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysZjhcb entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-总体计划成本信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
List<Long> deleteIds = new ArrayList<>();
|
||||
for (Long id : ids) {
|
||||
XzdCbysZjhcbVo vo = baseMapper.selectVoById(id);
|
||||
if (vo != null){
|
||||
//删除附件
|
||||
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
|
||||
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
|
||||
deleteIds.addAll(list);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!deleteIds.isEmpty()) {
|
||||
sysOssService.deleteWithValidByIds(deleteIds, false);
|
||||
}
|
||||
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().in(XzdCbysZtjhcbBgjl::getMainDocumentId, ids));
|
||||
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().in(XzdCbysSscb::getMainDocumentId, ids));
|
||||
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().in(XzdCbysZjhcbFubiao::getMainDocumentId, ids));
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String queryNameById(Long id) {
|
||||
return baseMapper.selectVoById(id).getDocTitle();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取部分字段名称
|
||||
* @param item
|
||||
*/
|
||||
private void getName(XzdCbysZjhcbVo item) {
|
||||
//项目名称
|
||||
if (item.getProjectId() != null){
|
||||
String projectName = xzdProjectService.queryNameById(item.getProjectId());
|
||||
if (projectName != null){
|
||||
item.setProjectName(projectName);
|
||||
}
|
||||
}
|
||||
if (item.getProjectLeader() != null){
|
||||
String name = sysUserService.queryNameById(item.getProjectLeader());
|
||||
if (name != null){
|
||||
item.setProjectLeaderName(name);
|
||||
}
|
||||
}
|
||||
if (item.getExecProjectManager() != null){
|
||||
String name = sysUserService.queryNameById(item.getExecProjectManager());
|
||||
if (name != null){
|
||||
item.setExecProjectManagerName(name);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取扣款与奖励项
|
||||
* @param vo
|
||||
*/
|
||||
private void getHttk(XzdCbysZjhcbVo vo) {
|
||||
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjls = xzdCbysZtjhcbBgjlService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, vo.getId()));
|
||||
vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls);
|
||||
List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId()));
|
||||
vo.setXzdCbysSscb(xzdCbysSscbs);
|
||||
List<XzdCbysZjhcbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZjhcbFubiao>().eq(XzdCbysZjhcbFubiao::getMainDocumentId, vo.getId()));
|
||||
vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,141 @@
|
||||
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZtjhcbBgjlBo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZtjhcbBgjlVo;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZtjhcbBgjlMapper;
|
||||
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZtjhcbBgjlService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 立项及成本-成本预算-变更记录Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class XzdCbysZtjhcbBgjlServiceImpl extends ServiceImpl<XzdCbysZtjhcbBgjlMapper, XzdCbysZtjhcbBgjl> implements IXzdCbysZtjhcbBgjlService {
|
||||
|
||||
private final XzdCbysZtjhcbBgjlMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 立项及成本-成本预算-变更记录
|
||||
*/
|
||||
@Override
|
||||
public XzdCbysZtjhcbBgjlVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询立项及成本-成本预算-变更记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 立项及成本-成本预算-变更记录分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<XzdCbysZtjhcbBgjlVo> queryPageList(XzdCbysZtjhcbBgjlBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<XzdCbysZtjhcbBgjl> lqw = buildQueryWrapper(bo);
|
||||
Page<XzdCbysZtjhcbBgjlVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的立项及成本-成本预算-变更记录列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 立项及成本-成本预算-变更记录列表
|
||||
*/
|
||||
@Override
|
||||
public List<XzdCbysZtjhcbBgjlVo> queryList(XzdCbysZtjhcbBgjlBo bo) {
|
||||
LambdaQueryWrapper<XzdCbysZtjhcbBgjl> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<XzdCbysZtjhcbBgjl> buildQueryWrapper(XzdCbysZtjhcbBgjlBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<XzdCbysZtjhcbBgjl> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByDesc(XzdCbysZtjhcbBgjl::getId);
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysZtjhcbBgjl::getDocCode, bo.getDocCode());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysZtjhcbBgjl::getDocTitle, bo.getDocTitle());
|
||||
lqw.eq(bo.getDocDate() != null, XzdCbysZtjhcbBgjl::getDocDate, bo.getDocDate());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdCbysZtjhcbBgjl::getProjectName, bo.getProjectName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getChangeSource()), XzdCbysZtjhcbBgjl::getChangeSource, bo.getChangeSource());
|
||||
lqw.eq(bo.getChangeTaxExclAmount() != null, XzdCbysZtjhcbBgjl::getChangeTaxExclAmount, bo.getChangeTaxExclAmount());
|
||||
lqw.eq(bo.getChangeTaxInclAmount() != null, XzdCbysZtjhcbBgjl::getChangeTaxInclAmount, bo.getChangeTaxInclAmount());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getApprover()), XzdCbysZtjhcbBgjl::getApprover, bo.getApprover());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getProjectLeader()), XzdCbysZtjhcbBgjl::getProjectLeader, bo.getProjectLeader());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysZtjhcbBgjl::getDocumentReference, bo.getDocumentReference());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysZtjhcbBgjl::getFileId, bo.getFileId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-变更记录
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(XzdCbysZtjhcbBgjlBo bo) {
|
||||
XzdCbysZtjhcbBgjl add = MapstructUtils.convert(bo, XzdCbysZtjhcbBgjl.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改立项及成本-成本预算-变更记录
|
||||
*
|
||||
* @param bo 立项及成本-成本预算-变更记录
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(XzdCbysZtjhcbBgjlBo bo) {
|
||||
XzdCbysZtjhcbBgjl update = MapstructUtils.convert(bo, XzdCbysZtjhcbBgjl.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(XzdCbysZtjhcbBgjl entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除立项及成本-成本预算-变更记录信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.AppreciationInvoiceVo;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo.AppreciationInvoiceBo;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.service.IAppreciationInvoiceService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 增值税发票
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/zengzhishui/invoice")
|
||||
public class AppreciationInvoiceController extends BaseController {
|
||||
|
||||
private final IAppreciationInvoiceService appreciationInvoiceService;
|
||||
|
||||
/**
|
||||
* 查询增值税发票列表
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:invoice:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<AppreciationInvoiceVo> list(AppreciationInvoiceBo bo, PageQuery pageQuery) {
|
||||
return appreciationInvoiceService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出增值税发票列表
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:invoice:export")
|
||||
@Log(title = "增值税发票", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(AppreciationInvoiceBo bo, HttpServletResponse response) {
|
||||
List<AppreciationInvoiceVo> list = appreciationInvoiceService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "增值税发票", AppreciationInvoiceVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取增值税发票详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:invoice:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<AppreciationInvoiceVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(appreciationInvoiceService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增增值税发票
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:invoice:add")
|
||||
@Log(title = "增值税发票", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody AppreciationInvoiceBo bo) {
|
||||
return toAjax(appreciationInvoiceService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改增值税发票
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:invoice:edit")
|
||||
@Log(title = "增值税发票", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody AppreciationInvoiceBo bo) {
|
||||
return toAjax(appreciationInvoiceService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除增值税发票
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:invoice:remove")
|
||||
@Log(title = "增值税发票", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(appreciationInvoiceService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,105 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.TaxInfoVo;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo.TaxInfoBo;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.service.ITaxInfoService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/zengzhishui/info")
|
||||
public class TaxInfoController extends BaseController {
|
||||
|
||||
private final ITaxInfoService taxInfoService;
|
||||
|
||||
/**
|
||||
* 查询征税项目列表
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:info:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<TaxInfoVo> list(TaxInfoBo bo, PageQuery pageQuery) {
|
||||
return taxInfoService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出征税项目列表
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:info:export")
|
||||
@Log(title = "征税项目", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(TaxInfoBo bo, HttpServletResponse response) {
|
||||
List<TaxInfoVo> list = taxInfoService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "征税项目", TaxInfoVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取征税项目详细信息
|
||||
*
|
||||
* @param levyCode 主键
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:info:query")
|
||||
@GetMapping("/{levyCode}")
|
||||
public R<TaxInfoVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable String levyCode) {
|
||||
return R.ok(taxInfoService.queryById(levyCode));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增征税项目
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:info:add")
|
||||
@Log(title = "征税项目", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody TaxInfoBo bo) {
|
||||
return toAjax(taxInfoService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改征税项目
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:info:edit")
|
||||
@Log(title = "征税项目", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TaxInfoBo bo) {
|
||||
return toAjax(taxInfoService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除征税项目
|
||||
*
|
||||
* @param levyCodes 主键串
|
||||
*/
|
||||
@SaCheckPermission("zengzhishui:info:remove")
|
||||
@Log(title = "征税项目", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{levyCodes}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable String[] levyCodes) {
|
||||
return toAjax(taxInfoService.deleteWithValidByIds(List.of(levyCodes), true));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,210 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 增值税发票对象 appreciation_invoice
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("appreciation_invoice")
|
||||
public class AppreciationInvoice extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 发票类型
|
||||
*/
|
||||
private String invoiceType;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
private Long project;
|
||||
|
||||
/**
|
||||
* 合同号 承包合同
|
||||
*/
|
||||
private Long contractNo;
|
||||
|
||||
/**
|
||||
* 录入日期
|
||||
*/
|
||||
private LocalDate entryDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
private Long year;
|
||||
|
||||
/**
|
||||
* 会计期
|
||||
*/
|
||||
private Long accountingPeriod;
|
||||
|
||||
/**
|
||||
* 销项类型
|
||||
*/
|
||||
private String taxType;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*/
|
||||
private Long taxItem;
|
||||
|
||||
/**
|
||||
* 所属组织
|
||||
*/
|
||||
private Long organization;
|
||||
|
||||
/**
|
||||
* 经办人
|
||||
*/
|
||||
private Long handler;
|
||||
|
||||
/**
|
||||
* 发票用途
|
||||
*/
|
||||
private String invoicePurpose;
|
||||
|
||||
/**
|
||||
* 发票代码
|
||||
*/
|
||||
private String invoiceCode;
|
||||
|
||||
/**
|
||||
* 发票号码
|
||||
*/
|
||||
private String invoiceNo;
|
||||
|
||||
/**
|
||||
* 开票日期
|
||||
*/
|
||||
private LocalDate invoiceDate;
|
||||
|
||||
/**
|
||||
* 公司税号
|
||||
*/
|
||||
private String companyTaxNo;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 税额
|
||||
*/
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 价税合计
|
||||
*/
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 购方税号
|
||||
*/
|
||||
private String buyerTaxNo;
|
||||
|
||||
/**
|
||||
* 购方名称
|
||||
*/
|
||||
private Long buyerName;
|
||||
|
||||
/**
|
||||
* 购方纳税人名称
|
||||
*/
|
||||
private String buyerTaxpayerName;
|
||||
|
||||
/**
|
||||
* 跨区涉税报告
|
||||
*/
|
||||
private String crossTaxReport;
|
||||
|
||||
/**
|
||||
* 3%征收率减按2%征收标识(0为否,1为是)
|
||||
*/
|
||||
private Long percentageCharges;
|
||||
|
||||
/**
|
||||
* 减征额
|
||||
*/
|
||||
private BigDecimal deductionAmount;
|
||||
|
||||
/**
|
||||
* 拆分标志
|
||||
*/
|
||||
private String splitFlag;
|
||||
|
||||
/**
|
||||
* 校验码
|
||||
*/
|
||||
private String checkCode;
|
||||
|
||||
/**
|
||||
* 机器编码
|
||||
*/
|
||||
private String machineCode;
|
||||
|
||||
/**
|
||||
* 备注信息1
|
||||
*/
|
||||
private String remark1;
|
||||
|
||||
/**
|
||||
* 备注信息2
|
||||
*/
|
||||
private String remark2;
|
||||
|
||||
/**
|
||||
* 数电票号码
|
||||
*/
|
||||
private String electronicInvoiceNo;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 征税项目对象 tax_info
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@TableName("tax_info")
|
||||
public class TaxInfo {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 征收编码
|
||||
*/
|
||||
private String levyCode;
|
||||
|
||||
/**
|
||||
* 征收方式
|
||||
*/
|
||||
private String levyMethod;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*/
|
||||
private String taxItem;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private String taxRate;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,209 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo;
|
||||
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.AppreciationInvoice;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 增值税发票业务对象 appreciation_invoice
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = AppreciationInvoice.class, reverseConvertGenerate = false)
|
||||
public class AppreciationInvoiceBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 发票类型
|
||||
*/
|
||||
private String invoiceType;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
private Long project;
|
||||
|
||||
/**
|
||||
* 合同号 承包合同
|
||||
*/
|
||||
private Long contractNo;
|
||||
|
||||
/**
|
||||
* 录入日期
|
||||
*/
|
||||
private LocalDate entryDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
private Long year;
|
||||
|
||||
/**
|
||||
* 会计期
|
||||
*/
|
||||
private Long accountingPeriod;
|
||||
|
||||
/**
|
||||
* 销项类型
|
||||
*/
|
||||
private String taxType;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*/
|
||||
private Long taxItem;
|
||||
|
||||
/**
|
||||
* 所属组织
|
||||
*/
|
||||
private Long organization;
|
||||
|
||||
/**
|
||||
* 经办人
|
||||
*/
|
||||
private Long handler;
|
||||
|
||||
/**
|
||||
* 发票用途
|
||||
*/
|
||||
private String invoicePurpose;
|
||||
|
||||
/**
|
||||
* 发票代码
|
||||
*/
|
||||
private String invoiceCode;
|
||||
|
||||
/**
|
||||
* 发票号码
|
||||
*/
|
||||
private String invoiceNo;
|
||||
|
||||
/**
|
||||
* 开票日期
|
||||
*/
|
||||
private LocalDate invoiceDate;
|
||||
|
||||
/**
|
||||
* 公司税号
|
||||
*/
|
||||
private String companyTaxNo;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 税额
|
||||
*/
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 价税合计
|
||||
*/
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 购方税号
|
||||
*/
|
||||
private String buyerTaxNo;
|
||||
|
||||
/**
|
||||
* 购方名称
|
||||
*/
|
||||
private Long buyerName;
|
||||
|
||||
/**
|
||||
* 购方纳税人名称
|
||||
*/
|
||||
private String buyerTaxpayerName;
|
||||
|
||||
/**
|
||||
* 跨区涉税报告
|
||||
*/
|
||||
private String crossTaxReport;
|
||||
|
||||
/**
|
||||
* 3%征收率减按2%征收标识(0为否,1为是)
|
||||
*/
|
||||
private Long percentageCharges;
|
||||
|
||||
/**
|
||||
* 减征额
|
||||
*/
|
||||
private BigDecimal deductionAmount;
|
||||
|
||||
/**
|
||||
* 拆分标志
|
||||
*/
|
||||
private String splitFlag;
|
||||
|
||||
/**
|
||||
* 校验码
|
||||
*/
|
||||
private String checkCode;
|
||||
|
||||
/**
|
||||
* 机器编码
|
||||
*/
|
||||
private String machineCode;
|
||||
|
||||
/**
|
||||
* 备注信息1
|
||||
*/
|
||||
private String remark1;
|
||||
|
||||
/**
|
||||
* 备注信息2
|
||||
*/
|
||||
private String remark2;
|
||||
|
||||
/**
|
||||
* 数电票号码
|
||||
*/
|
||||
private String electronicInvoiceNo;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
private String auditStatus;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.bo;
|
||||
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.TaxInfo;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
/**
|
||||
* 征税项目业务对象 tax_info
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@AutoMapper(target = TaxInfo.class, reverseConvertGenerate = false)
|
||||
public class TaxInfoBo {
|
||||
|
||||
/**
|
||||
* 征收编码
|
||||
*/
|
||||
private String levyCode;
|
||||
|
||||
/**
|
||||
* 征收方式
|
||||
*/
|
||||
private String levyMethod;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*/
|
||||
private String taxItem;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
private String taxRate;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,295 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.dromara.common.translation.annotation.Translation;
|
||||
import org.dromara.common.translation.constant.TransConstant;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.AppreciationInvoice;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 增值税发票视图对象 appreciation_invoice
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = AppreciationInvoice.class)
|
||||
public class AppreciationInvoiceVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 发票类型
|
||||
*/
|
||||
@ExcelProperty(value = "发票类型")
|
||||
private String invoiceType;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*/
|
||||
@ExcelProperty(value = "项目")
|
||||
private Long project;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
@ExcelProperty(value = "项目名称")
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 合同号 承包合同
|
||||
*/
|
||||
@ExcelProperty(value = "合同号 承包合同")
|
||||
private Long contractNo;
|
||||
|
||||
|
||||
/**
|
||||
* 合同号 承包合同编码
|
||||
*/
|
||||
@ExcelProperty(value = "合同号 承包合同编码")
|
||||
private String contractNoName;
|
||||
|
||||
/**
|
||||
* 录入日期
|
||||
*/
|
||||
@ExcelProperty(value = "录入日期")
|
||||
private LocalDate entryDate;
|
||||
|
||||
/**
|
||||
* 年度
|
||||
*/
|
||||
@ExcelProperty(value = "年度")
|
||||
private Long year;
|
||||
|
||||
/**
|
||||
* 会计期
|
||||
*/
|
||||
@ExcelProperty(value = "会计期")
|
||||
private Long accountingPeriod;
|
||||
|
||||
/**
|
||||
* 销项类型
|
||||
*/
|
||||
@ExcelProperty(value = "销项类型")
|
||||
private String taxType;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*/
|
||||
@ExcelProperty(value = "征税项目")
|
||||
private Long taxItem;
|
||||
|
||||
/**
|
||||
* 征税项目名称
|
||||
*/
|
||||
@ExcelProperty(value = "征税项目名称")
|
||||
private String taxItemName;
|
||||
|
||||
/**
|
||||
* 所属组织
|
||||
*/
|
||||
@ExcelProperty(value = "所属组织")
|
||||
private Long organization;
|
||||
|
||||
/**
|
||||
* 所属组织名称
|
||||
*/
|
||||
@ExcelProperty(value = "所属组织名称")
|
||||
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "organization")
|
||||
private String organizationName;
|
||||
|
||||
/**
|
||||
* 经办人
|
||||
*/
|
||||
@ExcelProperty(value = "经办人")
|
||||
private Long handler;
|
||||
|
||||
/**
|
||||
* 经办人名称
|
||||
*/
|
||||
@ExcelProperty(value = "经办人名称")
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "handler")
|
||||
private String handlerNme;
|
||||
|
||||
/**
|
||||
* 发票用途
|
||||
*/
|
||||
@ExcelProperty(value = "发票用途")
|
||||
private String invoicePurpose;
|
||||
|
||||
/**
|
||||
* 发票代码
|
||||
*/
|
||||
@ExcelProperty(value = "发票代码")
|
||||
private String invoiceCode;
|
||||
|
||||
/**
|
||||
* 发票号码
|
||||
*/
|
||||
@ExcelProperty(value = "发票号码")
|
||||
private String invoiceNo;
|
||||
|
||||
/**
|
||||
* 开票日期
|
||||
*/
|
||||
@ExcelProperty(value = "开票日期")
|
||||
private LocalDate invoiceDate;
|
||||
|
||||
/**
|
||||
* 公司税号
|
||||
*/
|
||||
@ExcelProperty(value = "公司税号")
|
||||
private String companyTaxNo;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
@ExcelProperty(value = "公司名称")
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 金额
|
||||
*/
|
||||
@ExcelProperty(value = "金额")
|
||||
private BigDecimal amount;
|
||||
|
||||
/**
|
||||
* 税额
|
||||
*/
|
||||
@ExcelProperty(value = "税额")
|
||||
private BigDecimal taxAmount;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
@ExcelProperty(value = "税率")
|
||||
private BigDecimal taxRate;
|
||||
|
||||
/**
|
||||
* 价税合计
|
||||
*/
|
||||
@ExcelProperty(value = "价税合计")
|
||||
private BigDecimal totalAmount;
|
||||
|
||||
/**
|
||||
* 购方税号
|
||||
*/
|
||||
@ExcelProperty(value = "购方税号")
|
||||
private String buyerTaxNo;
|
||||
|
||||
/**
|
||||
* 购方名称(客户id)
|
||||
*/
|
||||
@ExcelProperty(value = "购方名称 id")
|
||||
private Long buyerName;
|
||||
|
||||
/**
|
||||
* 购方名称
|
||||
*/
|
||||
@ExcelProperty(value = "购方名称")
|
||||
private String buyerNameS;
|
||||
|
||||
|
||||
/**
|
||||
* 购方纳税人名称
|
||||
*/
|
||||
@ExcelProperty(value = "购方纳税人名称")
|
||||
private String buyerTaxpayerName;
|
||||
|
||||
/**
|
||||
* 跨区涉税报告
|
||||
*/
|
||||
@ExcelProperty(value = "跨区涉税报告")
|
||||
private String crossTaxReport;
|
||||
|
||||
/**
|
||||
* 3%征收率减按2%征收标识(0为否,1为是)
|
||||
*/
|
||||
@ExcelProperty(value = "3%征收率减按2%征收标识", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0=为否,1为是")
|
||||
private Long percentageCharges;
|
||||
|
||||
/**
|
||||
* 减征额
|
||||
*/
|
||||
@ExcelProperty(value = "减征额")
|
||||
private BigDecimal deductionAmount;
|
||||
|
||||
/**
|
||||
* 拆分标志
|
||||
*/
|
||||
@ExcelProperty(value = "拆分标志")
|
||||
private String splitFlag;
|
||||
|
||||
/**
|
||||
* 校验码
|
||||
*/
|
||||
@ExcelProperty(value = "校验码")
|
||||
private String checkCode;
|
||||
|
||||
/**
|
||||
* 机器编码
|
||||
*/
|
||||
@ExcelProperty(value = "机器编码")
|
||||
private String machineCode;
|
||||
|
||||
/**
|
||||
* 备注信息1
|
||||
*/
|
||||
@ExcelProperty(value = "备注信息1")
|
||||
private String remark1;
|
||||
|
||||
/**
|
||||
* 备注信息2
|
||||
*/
|
||||
@ExcelProperty(value = "备注信息2")
|
||||
private String remark2;
|
||||
|
||||
/**
|
||||
* 数电票号码
|
||||
*/
|
||||
@ExcelProperty(value = "数电票号码")
|
||||
private String electronicInvoiceNo;
|
||||
|
||||
/**
|
||||
* 文件ID
|
||||
*/
|
||||
@ExcelProperty(value = "文件ID")
|
||||
private String fileId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ExcelProperty(value = "审核状态")
|
||||
private String auditStatus;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo;
|
||||
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.TaxInfo;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 征税项目视图对象 tax_info
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = TaxInfo.class)
|
||||
public class TaxInfoVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 征收编码
|
||||
*/
|
||||
@ExcelProperty(value = "征收编码")
|
||||
private String levyCode;
|
||||
|
||||
/**
|
||||
* 征收方式
|
||||
*/
|
||||
@ExcelProperty(value = "征收方式")
|
||||
private String levyMethod;
|
||||
|
||||
/**
|
||||
* 征税项目
|
||||
*/
|
||||
@ExcelProperty(value = "征税项目")
|
||||
private String taxItem;
|
||||
|
||||
/**
|
||||
* 税率
|
||||
*/
|
||||
@ExcelProperty(value = "税率")
|
||||
private String taxRate;
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,15 @@
|
||||
package org.dromara.xzd.fapiaotaizhang.zengzhishui.mapper;
|
||||
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.AppreciationInvoice;
|
||||
import org.dromara.xzd.fapiaotaizhang.zengzhishui.domain.vo.AppreciationInvoiceVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 增值税发票Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2025-10-17
|
||||
*/
|
||||
public interface AppreciationInvoiceMapper extends BaseMapperPlus<AppreciationInvoice, AppreciationInvoiceVo> {
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user