diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdWorkcontractCompletionAdjustController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdWorkcontractCompletionAdjustController.java new file mode 100644 index 00000000..96db551a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdWorkcontractCompletionAdjustController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.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.domain.vo.XzdWorkcontractCompletionAdjustVo; +import org.dromara.xzd.domain.bo.XzdWorkcontractCompletionAdjustBo; +import org.dromara.xzd.service.IXzdWorkcontractCompletionAdjustService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 承包合同竣工结算调整 + * + * @author Lion Li + * @date 2025-10-15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/workcontractCompletionAdjust") +public class XzdWorkcontractCompletionAdjustController extends BaseController { + + private final IXzdWorkcontractCompletionAdjustService xzdWorkcontractCompletionAdjustService; + + /** + * 查询承包合同竣工结算调整列表 + */ + @SaCheckPermission("xzd:workcontractCompletionAdjust:list") + @GetMapping("/list") + public TableDataInfo list(XzdWorkcontractCompletionAdjustBo bo, PageQuery pageQuery) { + return xzdWorkcontractCompletionAdjustService.queryPageList(bo, pageQuery); + } + + /** + * 导出承包合同竣工结算调整列表 + */ + @SaCheckPermission("xzd:workcontractCompletionAdjust:export") + @Log(title = "承包合同竣工结算调整", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdWorkcontractCompletionAdjustBo bo, HttpServletResponse response) { + List list = xzdWorkcontractCompletionAdjustService.queryList(bo); + ExcelUtil.exportExcel(list, "承包合同竣工结算调整", XzdWorkcontractCompletionAdjustVo.class, response); + } + + /** + * 获取承包合同竣工结算调整详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("xzd:workcontractCompletionAdjust:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdWorkcontractCompletionAdjustService.queryById(id)); + } + + /** + * 新增承包合同竣工结算调整 + */ + @SaCheckPermission("xzd:workcontractCompletionAdjust:add") + @Log(title = "承包合同竣工结算调整", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdWorkcontractCompletionAdjustBo bo) { + return toAjax(xzdWorkcontractCompletionAdjustService.insertByBo(bo)); + } + + /** + * 修改承包合同竣工结算调整 + */ + @SaCheckPermission("xzd:workcontractCompletionAdjust:edit") + @Log(title = "承包合同竣工结算调整", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdWorkcontractCompletionAdjustBo bo) { + return toAjax(xzdWorkcontractCompletionAdjustService.updateByBo(bo)); + } + + /** + * 删除承包合同竣工结算调整 + * + * @param ids 主键串 + */ + @SaCheckPermission("xzd:workcontractCompletionAdjust:remove") + @Log(title = "承包合同竣工结算调整", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdWorkcontractCompletionAdjustService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdWorkcontractCompletionAdjust.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdWorkcontractCompletionAdjust.java new file mode 100644 index 00000000..8f1b83fc --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdWorkcontractCompletionAdjust.java @@ -0,0 +1,117 @@ +package org.dromara.xzd.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +import java.io.Serial; + +/** + * 承包合同竣工结算调整对象 xzd_workcontract_completion_adjust + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_workcontract_completion_adjust") +public class XzdWorkcontractCompletionAdjust extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编号 + */ + private String documentNumber; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date documentDate; + + /** + * 决算单id + */ + private String finalAccountId; + /** + * 决算单编号 + */ + private String finalAccountNumber; + + /** + * 合同id + */ + private String contractId; + + /** + * 合同名称 + */ +// private String contractName; + + /** + * 合同编号 + */ + private String contractNumber; + + /** + * 调整后决算金额 + */ + private BigDecimal adjustedFinalAccountAmount; + + /** + * 项目id + */ + private Long projectId; + + /** + * 工程项目 + */ +// private String engineeringProject; + + /** + * 调整说明 + */ + private String adjustmentExplanation; + + /** + * 备注 + */ + private String remarks; + + /** + * 文件id (多个文件逗号分隔) + */ + private String fileId; + + /** + * 单据引用ID + */ + private Long danjuId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java index 31e23f28..a83b8aef 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java @@ -1,5 +1,6 @@ package org.dromara.xzd.domain.bo; +import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonFormat; import org.dromara.xzd.domain.XzdContractAccount; import org.dromara.common.mybatis.core.domain.BaseEntity; @@ -28,6 +29,7 @@ public class XzdContractAccountBo extends BaseEntity { /** * id */ + @TableId(value = "id") private Long id; /** @@ -38,34 +40,38 @@ public class XzdContractAccountBo extends BaseEntity { /** * 标题 */ - @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "标题不能为空", groups = {AddGroup.class, EditGroup.class}) private String title; /** * 单据日期 */ - @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "单据日期不能为空", groups = {AddGroup.class, EditGroup.class}) @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") private Date documentDate; /** - * 合同编号id + * 合同id */ - @NotNull(message = "合同编号id不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "合同编号id不能为空", groups = {AddGroup.class, EditGroup.class}) private Long contractId; - /** - * 部门id - */ - @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class }) - private Long deptId; - /** * 合同名称 */ private String contractName; + /** + * 合同编码 + */ + private String contractCode; + + /** + * 部门id + */ + private Long deptId; + /** * 送审造价 */ @@ -83,16 +89,31 @@ public class XzdContractAccountBo extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd") private Date approvedDate; + /** + * 项目id + */ + private Long projectId; + /** * 工程项目 */ private String projectName; + /** + * 甲方id + */ + private Long firstPartyId; + /** * 甲方单位(客户) */ private String firstParty; + /** + * 乙方id + */ + private Long secondPartyId; + /** * 乙方单位(供应商) */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdWorkcontractCompletionAdjustBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdWorkcontractCompletionAdjustBo.java new file mode 100644 index 00000000..1bac10f9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdWorkcontractCompletionAdjustBo.java @@ -0,0 +1,120 @@ +package org.dromara.xzd.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.XzdWorkcontractCompletionAdjust; +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.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 承包合同竣工结算调整业务对象 xzd_workcontract_completion_adjust + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdWorkcontractCompletionAdjust.class, reverseConvertGenerate = false) +public class XzdWorkcontractCompletionAdjustBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编号 + */ + private String documentNumber; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 单据日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date documentDate; + + /** + * 决算单id + */ + @NotNull(message = "决算单id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long finalAccountId; + + /** + * 决算单编号 + */ + private String finalAccountNumber; + + /** + * 合同id + */ + private Long contractId; + + /** + * 合同名称 + */ +// private String contractName; + + /** + * 合同编号 + */ + private String contractNumber; + + /** + * 调整后决算金额 + */ + private BigDecimal adjustedFinalAccountAmount; + + /** + * 项目id + */ + private Long projectId; + + /** + * 工程项目 + */ +// private String engineeringProject; + + /** + * 调整说明 + */ + private String adjustmentExplanation; + + /** + * 备注 + */ + private String remarks; + + /** + * 文件id (多个文件逗号分隔) + */ + private String fileId; + + /** + * 单据引用ID + */ + private Long danjuId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java index 6d5b14d1..65840d34 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java @@ -72,6 +72,11 @@ public class XzdContractAccountVo implements Serializable { */ private String contractCode; + /** + * 合同金额 + */ + private BigDecimal contractAmount; + /** * 部门id */ @@ -109,12 +114,22 @@ public class XzdContractAccountVo implements Serializable { @ExcelProperty(value = "工程项目") private String projectName; + /** + * 甲方单位id + */ + private Long firstPartyId; + /** * 甲方单位(客户) */ @ExcelProperty(value = "甲方单位(客户)") private String firstParty; + /** + * 乙方单位id + */ + private Long secondPartyId; + /** * 乙方单位(供应商) */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdWorkcontractCompletionAdjustVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdWorkcontractCompletionAdjustVo.java new file mode 100644 index 00000000..e765d037 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdWorkcontractCompletionAdjustVo.java @@ -0,0 +1,144 @@ +package org.dromara.xzd.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.XzdContractAccount; +import org.dromara.xzd.domain.XzdWorkcontractCompletionAdjust; +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.springframework.format.annotation.DateTimeFormat; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 承包合同竣工结算调整视图对象 xzd_workcontract_completion_adjust + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdWorkcontractCompletionAdjust.class) +public class XzdWorkcontractCompletionAdjustVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + private Long deptId; + + /** + * 决算单标题 + */ + private String finalAccountTitle; + + /** + * 单据编号 + */ + @ExcelProperty(value = "单据编号") + private String documentNumber; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date documentDate; + + /** + * 决算单id + */ + private Long finalAccountId; + + /** + * 决算单编号 + */ + @ExcelProperty(value = "决算单编号") + private String finalAccountNumber; + + /** + * 决算单对象 + */ + private XzdContractAccountVo contractAccount; + + /** + * 合同id + */ + private Long contractId; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 合同编号 + */ + @ExcelProperty(value = "合同编号") + private String contractNumber; + + /** + * 调整后决算金额 + */ + @ExcelProperty(value = "调整后决算金额") + private BigDecimal adjustedFinalAccountAmount; + + /** + * 项目id + */ + private Long projectId; + + /** + * 工程项目 + */ + @ExcelProperty(value = "工程项目") + private String engineeringProject; + + /** + * 调整说明 + */ + @ExcelProperty(value = "调整说明") + private String adjustmentExplanation; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remarks; + + /** + * 文件id (多个文件逗号分隔) + */ + @ExcelProperty(value = "文件id ", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "多=个文件逗号分隔") + private String fileId; + + /** + * 单据引用ID + */ + @ExcelProperty(value = "单据引用ID") + private Long danjuId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdWorkcontractCompletionAdjustMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdWorkcontractCompletionAdjustMapper.java new file mode 100644 index 00000000..83366f38 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdWorkcontractCompletionAdjustMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.mapper; + +import org.dromara.xzd.domain.XzdWorkcontractCompletionAdjust; +import org.dromara.xzd.domain.vo.XzdWorkcontractCompletionAdjustVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 承包合同竣工结算调整Mapper接口 + * + * @author Lion Li + * @date 2025-10-15 + */ +public interface XzdWorkcontractCompletionAdjustMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdWorkcontractCompletionAdjustService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdWorkcontractCompletionAdjustService.java new file mode 100644 index 00000000..8aeb97fa --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdWorkcontractCompletionAdjustService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.service; + +import org.dromara.xzd.domain.vo.XzdWorkcontractCompletionAdjustVo; +import org.dromara.xzd.domain.bo.XzdWorkcontractCompletionAdjustBo; +import org.dromara.xzd.domain.XzdWorkcontractCompletionAdjust; +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-15 + */ +public interface IXzdWorkcontractCompletionAdjustService extends IService{ + + /** + * 查询承包合同竣工结算调整 + * + * @param id 主键 + * @return 承包合同竣工结算调整 + */ + XzdWorkcontractCompletionAdjustVo queryById(Long id); + + /** + * 分页查询承包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同竣工结算调整分页列表 + */ + TableDataInfo queryPageList(XzdWorkcontractCompletionAdjustBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的承包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @return 承包合同竣工结算调整列表 + */ + List queryList(XzdWorkcontractCompletionAdjustBo bo); + + /** + * 新增承包合同竣工结算调整 + * + * @param bo 承包合同竣工结算调整 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdWorkcontractCompletionAdjustBo bo); + + /** + * 修改承包合同竣工结算调整 + * + * @param bo 承包合同竣工结算调整 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdWorkcontractCompletionAdjustBo bo); + + /** + * 校验并批量删除承包合同竣工结算调整信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java index 93e56bd7..de78ffff 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java @@ -59,7 +59,10 @@ public class XzdContractAccountServiceImpl extends ServiceImpl xzdContractAccountVo1 = List.of(xzdContractAccountVo); + setValue(xzdContractAccountVo1); + return xzdContractAccountVo1.getFirst(); } /** @@ -98,6 +101,10 @@ public class XzdContractAccountServiceImpl extends ServiceImpl implements IXzdWorkcontractCompletionAdjustService { + + private final XzdWorkcontractCompletionAdjustMapper baseMapper; + @Autowired + private SysOssServiceImpl sysOssService; + @Autowired + private XzdContractAccountServiceImpl xzdContractAccountService; + @Autowired + private XzdContractDetailsServiceImpl xzdContractDetailsService; + @Autowired + private XzdProjectServiceImpl xzdProjectService; + + /** + * 查询承包合同竣工结算调整 + * + * @param id 主键 + * @return 承包合同竣工结算调整 + */ + @Override + public XzdWorkcontractCompletionAdjustVo queryById(Long id){ + XzdWorkcontractCompletionAdjustVo adjustVo = baseMapper.selectVoById(id); + List adjustVo1 = List.of(adjustVo); + setValue(adjustVo1); + return adjustVo1.getFirst(); + } + + /** + * 分页查询承包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同竣工结算调整分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdWorkcontractCompletionAdjustBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + setValue(result.getRecords()); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的承包合同竣工结算调整列表 + * + * @param bo 查询条件 + * @return 承包合同竣工结算调整列表 + */ + @Override + public List queryList(XzdWorkcontractCompletionAdjustBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdWorkcontractCompletionAdjustBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdWorkcontractCompletionAdjust::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentNumber()), XzdWorkcontractCompletionAdjust::getDocumentNumber, bo.getDocumentNumber()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdWorkcontractCompletionAdjust::getTitle, bo.getTitle()); + lqw.between(params.get("beginDocumentDate") != null && params.get("endDocumentDate") != null, + XzdWorkcontractCompletionAdjust::getDocumentDate ,params.get("beginDocumentDate"), params.get("endDocumentDate")); + lqw.eq(bo.getFinalAccountId() != null, XzdWorkcontractCompletionAdjust::getFinalAccountId, bo.getFinalAccountId()); +// lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdWorkcontractCompletionAdjust::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractNumber()), XzdWorkcontractCompletionAdjust::getContractNumber, bo.getContractNumber()); + lqw.eq(bo.getAdjustedFinalAccountAmount() != null, XzdWorkcontractCompletionAdjust::getAdjustedFinalAccountAmount, bo.getAdjustedFinalAccountAmount()); +// lqw.eq(StringUtils.isNotBlank(bo.getEngineeringProject()), XzdWorkcontractCompletionAdjust::getEngineeringProject, bo.getEngineeringProject()); + lqw.eq(StringUtils.isNotBlank(bo.getAdjustmentExplanation()), XzdWorkcontractCompletionAdjust::getAdjustmentExplanation, bo.getAdjustmentExplanation()); + lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdWorkcontractCompletionAdjust::getRemarks, bo.getRemarks()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdWorkcontractCompletionAdjust::getFileId, bo.getFileId()); + lqw.eq(bo.getProjectId() != null, XzdWorkcontractCompletionAdjust::getProjectId, bo.getProjectId()); + lqw.eq(bo.getContractId() != null, XzdWorkcontractCompletionAdjust::getContractId, bo.getContractId()); + lqw.eq(bo.getFinalAccountNumber() != null, XzdWorkcontractCompletionAdjust::getFinalAccountNumber, bo.getFinalAccountNumber()); + lqw.eq(bo.getDanjuId() != null, XzdWorkcontractCompletionAdjust::getDanjuId, bo.getDanjuId()); + return lqw; + } + + /** + * 新增承包合同竣工结算调整 + * + * @param bo 承包合同竣工结算调整 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdWorkcontractCompletionAdjustBo bo) { + XzdWorkcontractCompletionAdjust add = MapstructUtils.convert(bo, XzdWorkcontractCompletionAdjust.class); + validEntityBeforeSave(add); + add.setDocumentNumber(IdUtil.getSnowflakeNextIdStr()); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改承包合同竣工结算调整 + * + * @param bo 承包合同竣工结算调整 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdWorkcontractCompletionAdjustBo bo) { + XzdWorkcontractCompletionAdjust update = MapstructUtils.convert(bo, XzdWorkcontractCompletionAdjust.class); + validEntityBeforeSave(update); + + XzdWorkcontractCompletionAdjustVo old = queryById(update.getId()); + + //更新文件 + if (bo.getFileId() != null && !bo.getFileId().isEmpty()){ + if (old.getFileId() != null && !old.getFileId().isEmpty()) { + List oldFileId = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList(); + List nowFileId = Arrays.stream(bo.getFileId().split(",")).map(Long::valueOf).toList(); + for (Long l : oldFileId) { + if (!nowFileId.contains(l)) { + sysOssService.deleteWithValidByIds(List.of(l), false); + } + } + } + }else { + if (old.getFileId()!= null && !old.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList(); + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdWorkcontractCompletionAdjust entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除承包合同竣工结算调整信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + for (Long id : ids) { + XzdWorkcontractCompletionAdjustVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + } + return baseMapper.deleteByIds(ids) > 0; + } + + public void setValue(List vos){ + for (XzdWorkcontractCompletionAdjustVo vo : vos) { + if (vo.getFinalAccountNumber() != null){ + //获取竣工决算对象 + XzdContractAccountVo xzdContractAccountVo = xzdContractAccountService.queryById(vo.getFinalAccountId()); + if (xzdContractAccountVo != null){ + List accountVo = List.of(xzdContractAccountVo); + xzdContractAccountService.setValue(accountVo); + xzdContractAccountVo = accountVo.getFirst(); + //竣工决算 + vo.setContractAccount(xzdContractAccountVo); + //决算标题 + vo.setFinalAccountTitle(xzdContractAccountVo.getTitle()); + //从竣工获取合同 + if (vo.getContractId() != null){ + //合同 + XzdContractDetailsVo xzdContractVo = xzdContractDetailsService.queryById(vo.getContractId()); + if (xzdContractVo != null){ + //合同名称 + vo.setContractName(xzdContractVo.getContractName()); + //合同编码 + vo.setContractNumber(xzdContractVo.getContractCode()); + //从合同中获取项目 + if (vo.getProjectId() != null) { + XzdProjectVo projectVo = xzdProjectService.queryById(vo.getProjectId()); + if (projectVo != null) { + vo.setEngineeringProject(projectVo.getProjectName()); + } + } + } + } + } + } + } + } + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/service/IXzdContractPaymentService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/service/IXzdContractPaymentService.java new file mode 100644 index 00000000..8c762edb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/service/IXzdContractPaymentService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.skyfk.service; + +import org.dromara.xzd.skyfk.domain.vo.XzdContractPaymentVo; +import org.dromara.xzd.skyfk.domain.bo.XzdContractPaymentBo; +import org.dromara.xzd.skyfk.domain.XzdContractPayment; +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-16 + */ +public interface IXzdContractPaymentService extends IService{ + + /** + * 查询承包合同收款 + * + * @param id 主键 + * @return 承包合同收款 + */ + XzdContractPaymentVo queryById(Long id); + + /** + * 分页查询承包合同收款列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同收款分页列表 + */ + TableDataInfo queryPageList(XzdContractPaymentBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的承包合同收款列表 + * + * @param bo 查询条件 + * @return 承包合同收款列表 + */ + List queryList(XzdContractPaymentBo bo); + + /** + * 新增承包合同收款 + * + * @param bo 承包合同收款 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdContractPaymentBo bo); + + /** + * 修改承包合同收款 + * + * @param bo 承包合同收款 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdContractPaymentBo bo); + + /** + * 校验并批量删除承包合同收款信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +}