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)); | ||||
|     } | ||||
|  | ||||
| @ -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); | ||||
|                 } | ||||
|                 if(!userIds.contains(correctorId)){ | ||||
|                     userIds.add(correctorId); | ||||
|                 } | ||||
|             if(userIds.isEmpty()){ | ||||
|                 continue; | ||||
|  | ||||
|             } | ||||
|             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 -> { | ||||
|         // 获取巡检情况 | ||||
|         List<QltQualityInspectionGis> list = qualityInspectionList.stream() | ||||
|             .filter(q -> "2".equals(q.getIsReply())) | ||||
|             .toList().stream().map(q -> { | ||||
|                 QltQualityInspectionGis gis = new QltQualityInspectionGis(); | ||||
|             BeanUtils.copyProperties(qualityInspection, gis); | ||||
|             String label = dictDataMap.get(qualityInspection.getInspectionType()); | ||||
|             if (label != null) { | ||||
|                 gis.setInspectionTypeLabel(label); | ||||
|             } | ||||
|                 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()); | ||||
|         // 获取整改情况 | ||||
|         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() | ||||
|             .filter(q -> "2".equals(q.getIsReply())) | ||||
|             .toList() | ||||
|             .size()); | ||||
|         gisVo.setCorrectSituation(passCount); | ||||
|         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,10 +1223,11 @@ 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); | ||||
|  | ||||
|         if(isSub){ | ||||
|             SubConstructionUser constructionUser = constructionUserService.lambdaQuery() | ||||
|                 .eq(SubConstructionUser::getSysUserId, userId) | ||||
|                 .one(); | ||||
| @ -1234,6 +1235,8 @@ public class SysUserServiceImpl implements ISysUserService, UserService { | ||||
|                 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