综合服务对应接口和结算采购合同对应接口

This commit is contained in:
2025-10-15 10:30:54 +08:00
parent 536b25d773
commit 9604cab4d6
68 changed files with 7534 additions and 2 deletions

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.comprehensive.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.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractChangeBo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractChangeService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 综合服务合同变更
*
* @author Lion Li
* @date 2025-10-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/comprehensive/csContractChange")
public class XzdCsContractChangeController extends BaseController {
private final IXzdCsContractChangeService xzdCsContractChangeService;
/**
* 查询综合服务合同变更列表
*/
@SaCheckPermission("comprehensive:csContractChange:list")
@GetMapping("/list")
public TableDataInfo<XzdCsContractChangeVo> list(XzdCsContractChangeBo bo, PageQuery pageQuery) {
return xzdCsContractChangeService.queryPageList(bo, pageQuery);
}
/**
* 导出综合服务合同变更列表
*/
@SaCheckPermission("comprehensive:csContractChange:export")
@Log(title = "综合服务合同变更", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdCsContractChangeBo bo, HttpServletResponse response) {
List<XzdCsContractChangeVo> list = xzdCsContractChangeService.queryList(bo);
ExcelUtil.exportExcel(list, "综合服务合同变更", XzdCsContractChangeVo.class, response);
}
/**
* 获取综合服务合同变更详细信息
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:csContractChange:query")
@GetMapping("/{id}")
public R<XzdCsContractChangeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdCsContractChangeService.queryById(id));
}
/**
* 新增综合服务合同变更
*/
@SaCheckPermission("comprehensive:csContractChange:add")
@Log(title = "综合服务合同变更", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCsContractChangeBo bo) {
return toAjax(xzdCsContractChangeService.insertByBo(bo));
}
/**
* 修改综合服务合同变更
*/
@SaCheckPermission("comprehensive:csContractChange:edit")
@Log(title = "综合服务合同变更", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCsContractChangeBo bo) {
return toAjax(xzdCsContractChangeService.updateByBo(bo));
}
/**
* 删除综合服务合同变更
*
* @param ids 主键串
*/
@SaCheckPermission("comprehensive:csContractChange:remove")
@Log(title = "综合服务合同变更", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdCsContractChangeService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,114 @@
package org.dromara.xzd.comprehensive.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.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractInformationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 综合服务合同信息
*
* @author Lion Li
* @date 2025-10-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/comprehensive/csContractInformation")
public class XzdCsContractInformationController extends BaseController {
private final IXzdCsContractInformationService xzdCsContractInformationService;
/**
* 查询综合服务合同信息列表
*/
@SaCheckPermission("comprehensive:csContractInformation:list")
@GetMapping("/list")
public TableDataInfo<XzdCsContractInformationVo> list(XzdCsContractInformationBo bo, PageQuery pageQuery) {
return xzdCsContractInformationService.queryPageList(bo, pageQuery);
}
/**
* 查询综合服务合同信息列表
*/
@SaCheckPermission("comprehensive:csContractInformation:getList")
@GetMapping("/getList")
public TableDataInfo<XzdCsContractInformationVo> getList(XzdCsContractInformationBo bo, PageQuery pageQuery) {
return xzdCsContractInformationService.queryPageList(bo, pageQuery);
}
/**
* 导出综合服务合同信息列表
*/
@SaCheckPermission("comprehensive:csContractInformation:export")
@Log(title = "综合服务合同信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdCsContractInformationBo bo, HttpServletResponse response) {
List<XzdCsContractInformationVo> list = xzdCsContractInformationService.queryList(bo);
ExcelUtil.exportExcel(list, "综合服务合同信息", XzdCsContractInformationVo.class, response);
}
/**
* 获取综合服务合同信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:csContractInformation:query")
@GetMapping("/{id}")
public R<XzdCsContractInformationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdCsContractInformationService.queryById(id));
}
/**
* 新增综合服务合同信息
*/
@SaCheckPermission("comprehensive:csContractInformation:add")
@Log(title = "综合服务合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCsContractInformationBo bo) {
return toAjax(xzdCsContractInformationService.insertByBo(bo));
}
/**
* 修改综合服务合同信息
*/
@SaCheckPermission("comprehensive:csContractInformation:edit")
@Log(title = "综合服务合同信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCsContractInformationBo bo) {
return toAjax(xzdCsContractInformationService.updateByBo(bo));
}
/**
* 删除综合服务合同信息
*
* @param ids 主键串
*/
@SaCheckPermission("comprehensive:csContractInformation:remove")
@Log(title = "综合服务合同信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdCsContractInformationService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.comprehensive.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.comprehensive.domain.vo.XzdCsContractSuspendVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractSuspendBo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 综合服务合同终止
*
* @author Lion Li
* @date 2025-10-13
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/comprehensive/csContractSuspend")
public class XzdCsContractSuspendController extends BaseController {
private final IXzdCsContractSuspendService xzdCsContractSuspendService;
/**
* 查询综合服务合同终止列表
*/
@SaCheckPermission("comprehensive:csContractSuspend:list")
@GetMapping("/list")
public TableDataInfo<XzdCsContractSuspendVo> list(XzdCsContractSuspendBo bo, PageQuery pageQuery) {
return xzdCsContractSuspendService.queryPageList(bo, pageQuery);
}
/**
* 导出综合服务合同终止列表
*/
@SaCheckPermission("comprehensive:csContractSuspend:export")
@Log(title = "综合服务合同终止", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdCsContractSuspendBo bo, HttpServletResponse response) {
List<XzdCsContractSuspendVo> list = xzdCsContractSuspendService.queryList(bo);
ExcelUtil.exportExcel(list, "综合服务合同终止", XzdCsContractSuspendVo.class, response);
}
/**
* 获取综合服务合同终止详细信息
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:csContractSuspend:query")
@GetMapping("/{id}")
public R<XzdCsContractSuspendVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdCsContractSuspendService.queryById(id));
}
/**
* 新增综合服务合同终止
*/
@SaCheckPermission("comprehensive:csContractSuspend:add")
@Log(title = "综合服务合同终止", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCsContractSuspendBo bo) {
return toAjax(xzdCsContractSuspendService.insertByBo(bo));
}
/**
* 修改综合服务合同终止
*/
@SaCheckPermission("comprehensive:csContractSuspend:edit")
@Log(title = "综合服务合同终止", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCsContractSuspendBo bo) {
return toAjax(xzdCsContractSuspendService.updateByBo(bo));
}
/**
* 删除综合服务合同终止
*
* @param ids 主键串
*/
@SaCheckPermission("comprehensive:csContractSuspend:remove")
@Log(title = "综合服务合同终止", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdCsContractSuspendService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,206 @@
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.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 综合服务合同变更对象 xzd_cs_contract_change
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cs_contract_change")
public class XzdCsContractChange extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 单据编码
*/
private String docCode;
/**
* 标题
*/
private String title;
/**
* 单据日期
*/
private LocalDate docDate;
/**
* 合同编码(关联合同表)
*/
private Long contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 合同类型
*/
private String contractType;
/**
* 变更类型
*/
private Long changeType;
/**
* 项目
*/
private Long project;
/**
* 经营模式
*/
private String businessMode;
/**
* 组织
*/
private Long organization;
/**
* 甲方单位
*/
private Long partyA;
/**
* 乙方单位
*/
private Long partyB;
/**
* 原合同造价
*/
private BigDecimal originalContractAmount;
/**
* 变更价税合计
*/
private BigDecimal changeTaxIncludedAmount;
/**
* 变更后价税合计
*/
private BigDecimal afterChangeTaxIncludedAmount;
/**
* 累计变更金额
*/
private BigDecimal cumulativeChangeAmount;
/**
* 警示
*/
private String warning;
/**
* 备注
*/
private String remark;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 是否用印01
*/
private Long isSealed;
/**
* 变更后项目经理
*/
private Long afterChangeProjectManager;
/**
* 变更后项目责任人
*/
private Long afterChangeProjectLeader;
/**
* 变更后现场经理
*/
private Long afterChangeSiteManager;
/**
* 变更后合同备注
*/
private String afterChangeContractRemark;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 付款额不能超合同额01
*/
private Long paymentNotExceedContract;
/**
* 付款额不超合同额支付比例(%
*/
private BigDecimal paymentNotExceedRatio;
/**
* 预结算/结算不能超合同额01
*/
private Long budgetNotExceedContract;
/**
* 预结算/结算不超合同额比例(%
*/
private BigDecimal budgetNotExceedRatio;
/**
* 实时刷新01
*/
private Long realTimeUpdate;
/**
* 合同累计变更金额
*/
private BigDecimal contractCumulativeChangeAmount;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件id
*/
private String fileId;
}

View File

@ -0,0 +1,241 @@
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.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 综合服务合同信息对象 xzd_cs_contract_information
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cs_contract_information")
public class XzdCsContractInformation extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同类型(如:租车合同)
*/
private String contractType;
/**
* 项目ID关联项目表
*/
private Long projectId;
/**
* 经营模式
*/
private String businessMode;
/**
* 签订日期
*/
private LocalDate signDate;
/**
* 甲方单位
*/
private Long partyA;
/**
* 含税合同金额
*/
private BigDecimal taxIncludedAmount;
/**
* 合同状态(如:新增、生效)
*/
private String contractStatus;
/**
* 乙方单位
*/
private Long partyB;
/**
* 累计变更金额
*/
private BigDecimal cumulativeChangeAmount;
/**
* 部门ID关联部门表
*/
private Long departmentId;
/**
* 归档日期
*/
private LocalDate archivalDate;
/**
* 是否研发类01
*/
private Long isRD;
/**
* 开票单位
*/
private Long invoiceIssuer;
/**
* 收票单位
*/
private Long invoiceReceiver;
/**
* 有效期开始日期
*/
private LocalDate validStartDate;
/**
* 有效期结束日期
*/
private LocalDate validEndDate;
/**
* 是否用印01
*/
private Long isSealed;
/**
* 大写合同价税合计
*/
private String taxIncludedAmountUpper;
/**
* 警示
*/
private String warning;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 备注
*/
private String remark;
/**
* 签约组织
*/
private Long signOrganization;
/**
* 项目类型
*/
private String projectType;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目责任人
*/
private Long projectOwner;
/**
* WBS编码
*/
private Long wbs;
/**
* 备案状态(如:未备案、已备案)
*/
private String filingStatus;
/**
* 备案时间
*/
private LocalDate filingTime;
/**
* 是否需备案01
*/
private Long needFiling;
/**
* 预算分类
*/
private Long budgetCategory;
/**
* 是否固定单价合同01
*/
private Long isFixedUnitPrice;
/**
* 是否总价包干合同01
*/
private Long isLumpSum;
/**
* 付款额不能超合同额01
*/
private Long paymentNotExceedContract;
/**
* 付款额不超合同额比例(%
*/
private BigDecimal paymentNotExceedRatio;
/**
* 预结算/结算不能超合同额01
*/
private Long budgetNotExceedContract;
/**
* 预结算/结算不超合同额比例(%
*/
private BigDecimal budgetNotExceedRatio;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件id
*/
private String fileId;
}

View File

@ -0,0 +1,122 @@
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.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial;
/**
* 综合服务合同终止对象 xzd_cs_contract_suspend
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cs_contract_suspend")
public class XzdCsContractSuspend extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 采购合同信息ID合同编码
*/
private Long contractInformationId;
/**
* 单据编码
*/
private String receiptsCode;
/**
* 标题
*/
private String title;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同名称
*/
private String contractName;
/**
* 终止日期
*/
private LocalDate terminationDate;
/**
* 工程项目
*/
private Long project;
/**
* 乙方单位
*/
private Long artyBUnit;
/**
* 甲方单位
*/
private Long partyAUnit;
/**
* 终止原因
*/
private String terminationCause;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 累计结算金额
*/
private BigDecimal cumulativeSettlementAmount;
/**
* 累计付款金额
*/
private BigDecimal cumulativePaymentAmount;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,229 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractChange;
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 java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
/**
* 综合服务合同变更业务对象 xzd_cs_contract_change
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCsContractChange.class, reverseConvertGenerate = false)
public class XzdCsContractChangeBo 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 title;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate docDate;
/**
* 合同编码(关联合同表)
*/
private Long contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 合同类型
*/
private String contractType;
/**
* 变更类型
*/
private Long changeType;
/**
* 项目
*/
private Long project;
/**
* 经营模式
*/
private String businessMode;
/**
* 组织
*/
private Long organization;
/**
* 甲方单位
*/
private Long partyA;
/**
* 乙方单位
*/
private Long partyB;
/**
* 原合同造价
*/
private BigDecimal originalContractAmount;
/**
* 变更价税合计
*/
private BigDecimal changeTaxIncludedAmount;
/**
* 变更后价税合计
*/
private BigDecimal afterChangeTaxIncludedAmount;
/**
* 累计变更金额
*/
private BigDecimal cumulativeChangeAmount;
/**
* 警示
*/
private String warning;
/**
* 备注
*/
private String remark;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 是否用印01
*/
private Long isSealed;
/**
* 变更后项目经理
*/
private Long afterChangeProjectManager;
/**
* 变更后项目责任人
*/
private Long afterChangeProjectLeader;
/**
* 变更后现场经理
*/
private Long afterChangeSiteManager;
/**
* 变更后合同备注
*/
private String afterChangeContractRemark;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 付款额不能超合同额01
*/
private Long paymentNotExceedContract;
/**
* 付款额不超合同额支付比例(%
*/
private BigDecimal paymentNotExceedRatio;
/**
* 预结算/结算不能超合同额01
*/
private Long budgetNotExceedContract;
/**
* 预结算/结算不超合同额比例(%
*/
private BigDecimal budgetNotExceedRatio;
/**
* 实时刷新01
*/
private Long realTimeUpdate;
/**
* 合同累计变更金额
*/
private BigDecimal contractCumulativeChangeAmount;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件id
*/
private String fileId;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付条款
*/
private List<XzdSettlementRules> zftk;
}

View File

@ -0,0 +1,272 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
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 java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
/**
* 综合服务合同信息业务对象 xzd_cs_contract_information
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCsContractInformation.class, reverseConvertGenerate = false)
public class XzdCsContractInformationBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空", groups = { EditGroup.class })
private String contractCode;
/**
* 合同名称
*/
@NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate documentDate;
/**
* 合同类型(如:租车合同)
*/
@NotBlank(message = "合同类型(如:租车合同)不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractType;
/**
* 项目ID关联项目表
*/
@NotNull(message = "项目ID关联项目表不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 经营模式
*/
private String businessMode;
/**
* 签订日期
*/
private LocalDate signDate;
/**
* 甲方单位
*/
@NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyA;
/**
* 含税合同金额
*/
private BigDecimal taxIncludedAmount;
/**
* 合同状态(如:新增、生效)
*/
private String contractStatus;
/**
* 乙方单位
*/
@NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyB;
/**
* 累计变更金额
*/
private BigDecimal cumulativeChangeAmount;
/**
* 部门ID关联部门表
*/
private Long departmentId;
/**
* 归档日期
*/
private LocalDate archivalDate;
/**
* 是否研发类01
*/
@NotNull(message = "是否研发类01不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isRD;
/**
* 开票单位
*/
@NotNull(message = "开票单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long invoiceIssuer;
/**
* 收票单位
*/
@NotNull(message = "收票单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long invoiceReceiver;
/**
* 有效期开始日期
*/
private LocalDate validStartDate;
/**
* 有效期结束日期
*/
private LocalDate validEndDate;
/**
* 是否用印01
*/
private Long isSealed;
/**
* 大写合同价税合计
*/
private String taxIncludedAmountUpper;
/**
* 警示
*/
private String warning;
/**
* 支付条款
*/
private String paymentTerms;
/**
* 备注
*/
private String remark;
/**
* 签约组织
*/
@NotNull(message = "签约组织不能为空", groups = { AddGroup.class, EditGroup.class })
private Long signOrganization;
/**
* 项目类型
*/
private String projectType;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目责任人
*/
private Long projectOwner;
/**
* WBS编码
*/
private Long wbs;
/**
* 备案状态(如:未备案、已备案)
*/
private String filingStatus;
/**
* 备案时间
*/
private LocalDate filingTime;
/**
* 是否需备案01
*/
private Long needFiling;
/**
* 预算分类
*/
@NotNull(message = "预算分类不能为空", groups = { AddGroup.class, EditGroup.class })
private Long budgetCategory;
/**
* 是否固定单价合同01
*/
private Long isFixedUnitPrice;
/**
* 是否总价包干合同01
*/
private Long isLumpSum;
/**
* 付款额不能超合同额01
*/
private Long paymentNotExceedContract;
/**
* 付款额不超合同额比例(%
*/
private BigDecimal paymentNotExceedRatio;
/**
* 预结算/结算不能超合同额01
*/
private Long budgetNotExceedContract;
/**
* 预结算/结算不超合同额比例(%
*/
private BigDecimal budgetNotExceedRatio;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件id
*/
private String fileId;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付条款
*/
private List<XzdSettlementRules> zftk;
}

View File

@ -0,0 +1,131 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend;
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;
/**
* 综合服务合同终止业务对象 xzd_cs_contract_suspend
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCsContractSuspend.class, reverseConvertGenerate = false)
public class XzdCsContractSuspendBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 采购合同信息ID合同编码
*/
@NotNull(message = "采购合同信息ID合同编码不能为空", groups = { AddGroup.class, EditGroup.class })
private Long contractInformationId;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String receiptsCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
private String title;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate documentDate;
/**
* 合同名称
*/
@NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractName;
/**
* 终止日期
*/
@NotNull(message = "终止日期不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate terminationDate;
/**
* 工程项目
*/
@NotNull(message = "工程项目不能为空", groups = { AddGroup.class, EditGroup.class })
private Long project;
/**
* 乙方单位
*/
@NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long artyBUnit;
/**
* 甲方单位
*/
@NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long partyAUnit;
/**
* 终止原因
*/
// @NotBlank(message = "终止原因不能为空", groups = { AddGroup.class, EditGroup.class })
private String terminationCause;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 累计结算金额
*/
private BigDecimal cumulativeSettlementAmount;
/**
* 累计付款金额
*/
private BigDecimal cumulativePaymentAmount;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,275 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractChange;
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.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 综合服务合同变更视图对象 xzd_cs_contract_change
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCsContractChange.class)
public class XzdCsContractChangeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String docCode;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate docDate;
/**
* 合同编码(关联合同表)
*/
@ExcelProperty(value = "合同编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "关=联合同表")
private Long contractCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 合同类型
*/
@ExcelProperty(value = "合同类型")
private String contractType;
/**
* 变更类型
*/
@ExcelProperty(value = "变更类型")
private Long changeType;
/**
* 项目
*/
@ExcelProperty(value = "项目")
private Long project;
private String projectName;
/**
* 经营模式
*/
@ExcelProperty(value = "经营模式")
private String businessMode;
/**
* 组织
*/
@ExcelProperty(value = "组织")
private Long organization;
private String organizationName;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyA;
private String partyAName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long partyB;
private String partyBName;
/**
* 原合同造价
*/
@ExcelProperty(value = "原合同造价")
private BigDecimal originalContractAmount;
/**
* 变更价税合计
*/
@ExcelProperty(value = "变更价税合计")
private BigDecimal changeTaxIncludedAmount;
/**
* 变更后价税合计
*/
@ExcelProperty(value = "变更后价税合计")
private BigDecimal afterChangeTaxIncludedAmount;
/**
* 累计变更金额
*/
@ExcelProperty(value = "累计变更金额")
private BigDecimal cumulativeChangeAmount;
/**
* 警示
*/
@ExcelProperty(value = "警示")
private String warning;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 支付条款
*/
@ExcelProperty(value = "支付条款")
private String paymentTerms;
/**
* 是否用印01
*/
@ExcelProperty(value = "是否用印", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long isSealed;
/**
* 变更后项目经理
*/
@ExcelProperty(value = "变更后项目经理")
private Long afterChangeProjectManager;
/**
* 变更后项目责任人
*/
@ExcelProperty(value = "变更后项目责任人")
private Long afterChangeProjectLeader;
/**
* 变更后现场经理
*/
@ExcelProperty(value = "变更后现场经理")
private Long afterChangeSiteManager;
/**
* 变更后合同备注
*/
@ExcelProperty(value = "变更后合同备注")
private String afterChangeContractRemark;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 付款额不能超合同额01
*/
@ExcelProperty(value = "付款额不能超合同额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long paymentNotExceedContract;
/**
* 付款额不超合同额支付比例(%
*/
@ExcelProperty(value = "付款额不超合同额支付比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private BigDecimal paymentNotExceedRatio;
/**
* 预结算/结算不能超合同额01
*/
@ExcelProperty(value = "预结算/结算不能超合同额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long budgetNotExceedContract;
/**
* 预结算/结算不超合同额比例(%
*/
@ExcelProperty(value = "预结算/结算不超合同额比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private BigDecimal budgetNotExceedRatio;
/**
* 实时刷新01
*/
@ExcelProperty(value = "实时刷新", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long realTimeUpdate;
/**
* 合同累计变更金额
*/
@ExcelProperty(value = "合同累计变更金额")
private BigDecimal contractCumulativeChangeAmount;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件id
*/
@ExcelProperty(value = "文件id")
private String fileId;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付条款
*/
private List<XzdSettlementRules> zftk;
}

View File

@ -0,0 +1,327 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
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.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 综合服务合同信息视图对象 xzd_cs_contract_information
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCsContractInformation.class)
public class XzdCsContractInformationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 合同编码
*/
@ExcelProperty(value = "合同编码")
private String contractCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate documentDate;
/**
* 合同类型(如:租车合同)
*/
@ExcelProperty(value = "合同类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=:租车合同")
private String contractType;
/**
* 项目ID关联项目表
*/
@ExcelProperty(value = "项目ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "关=联项目表")
private Long projectId;
private String projectName;
/**
* 经营模式
*/
@ExcelProperty(value = "经营模式")
private String businessMode;
/**
* 签订日期
*/
@ExcelProperty(value = "签订日期")
private LocalDate signDate;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyA;
private String partyAName;
/**
* 含税合同金额
*/
@ExcelProperty(value = "含税合同金额")
private BigDecimal taxIncludedAmount;
/**
* 合同状态(如:新增、生效)
*/
@ExcelProperty(value = "合同状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=:新增、生效")
private String contractStatus;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long partyB;
private String partyBName;
/**
* 累计变更金额
*/
@ExcelProperty(value = "累计变更金额")
private BigDecimal cumulativeChangeAmount;
/**
* 部门ID关联部门表
*/
@ExcelProperty(value = "部门ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "关=联部门表")
private Long departmentId;
private String departmentName;
/**
* 归档日期
*/
@ExcelProperty(value = "归档日期")
private LocalDate archivalDate;
/**
* 是否研发类01
*/
@ExcelProperty(value = "是否研发类", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long isRD;
/**
* 开票单位
*/
@ExcelProperty(value = "开票单位")
private Long invoiceIssuer;
private String invoiceIssuerName;
/**
* 收票单位
*/
@ExcelProperty(value = "收票单位")
private Long invoiceReceiver;
private String invoiceReceiverName;
/**
* 有效期开始日期
*/
@ExcelProperty(value = "有效期开始日期")
private LocalDate validStartDate;
/**
* 有效期结束日期
*/
@ExcelProperty(value = "有效期结束日期")
private LocalDate validEndDate;
/**
* 是否用印01
*/
@ExcelProperty(value = "是否用印", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long isSealed;
/**
* 大写合同价税合计
*/
@ExcelProperty(value = "大写合同价税合计")
private String taxIncludedAmountUpper;
/**
* 警示
*/
@ExcelProperty(value = "警示")
private String warning;
/**
* 支付条款
*/
@ExcelProperty(value = "支付条款")
private String paymentTerms;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 签约组织
*/
@ExcelProperty(value = "签约组织")
private Long signOrganization;
private String signOrganizationName;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目责任人
*/
@ExcelProperty(value = "项目责任人")
private Long projectOwner;
/**
* WBS编码
*/
@ExcelProperty(value = "WBS编码")
private Long wbs;
/**
* 备案状态(如:未备案、已备案)
*/
@ExcelProperty(value = "备案状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=:未备案、已备案")
private String filingStatus;
/**
* 备案时间
*/
@ExcelProperty(value = "备案时间")
private LocalDate filingTime;
/**
* 是否需备案01
*/
@ExcelProperty(value = "是否需备案", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long needFiling;
/**
* 预算分类
*/
@ExcelProperty(value = "预算分类")
private Long budgetCategory;
/**
* 是否固定单价合同01
*/
@ExcelProperty(value = "是否固定单价合同", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long isFixedUnitPrice;
/**
* 是否总价包干合同01
*/
@ExcelProperty(value = "是否总价包干合同", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long isLumpSum;
/**
* 付款额不能超合同额01
*/
@ExcelProperty(value = "付款额不能超合同额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long paymentNotExceedContract;
/**
* 付款额不超合同额比例(%
*/
@ExcelProperty(value = "付款额不超合同额比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private BigDecimal paymentNotExceedRatio;
/**
* 预结算/结算不能超合同额01
*/
@ExcelProperty(value = "预结算/结算不能超合同额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long budgetNotExceedContract;
/**
* 预结算/结算不超合同额比例(%
*/
@ExcelProperty(value = "预结算/结算不超合同额比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private BigDecimal budgetNotExceedRatio;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件id
*/
@ExcelProperty(value = "文件id")
private String fileId;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付条款
*/
private List<XzdSettlementRules> zftk;
}

View File

@ -0,0 +1,148 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend;
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_cs_contract_suspend
*
* @author Lion Li
* @date 2025-10-13
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCsContractSuspend.class)
public class XzdCsContractSuspendVo 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 contractInformationId;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String receiptsCode;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate documentDate;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 终止日期
*/
@ExcelProperty(value = "终止日期")
private LocalDate terminationDate;
/**
* 工程项目
*/
@ExcelProperty(value = "工程项目")
private Long project;
private String projectName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long artyBUnit;
private String artyBUnitName;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyAUnit;
private String partyAUnitNamme;
/**
* 终止原因
*/
@ExcelProperty(value = "终止原因")
private String terminationCause;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 累计结算金额
*/
@ExcelProperty(value = "累计结算金额")
private BigDecimal cumulativeSettlementAmount;
/**
* 累计付款金额
*/
@ExcelProperty(value = "累计付款金额")
private BigDecimal cumulativePaymentAmount;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdCsContractChange;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 综合服务合同变更Mapper接口
*
* @author Lion Li
* @date 2025-10-13
*/
public interface XzdCsContractChangeMapper extends BaseMapperPlus<XzdCsContractChange, XzdCsContractChangeVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 综合服务合同信息Mapper接口
*
* @author Lion Li
* @date 2025-10-13
*/
public interface XzdCsContractInformationMapper extends BaseMapperPlus<XzdCsContractInformation, XzdCsContractInformationVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 综合服务合同终止Mapper接口
*
* @author Lion Li
* @date 2025-10-13
*/
public interface XzdCsContractSuspendMapper extends BaseMapperPlus<XzdCsContractSuspend, XzdCsContractSuspendVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.comprehensive.service;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractChangeBo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractChange;
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-13
*/
public interface IXzdCsContractChangeService extends IService<XzdCsContractChange>{
/**
* 查询综合服务合同变更
*
* @param id 主键
* @return 综合服务合同变更
*/
XzdCsContractChangeVo queryById(Long id);
/**
* 分页查询综合服务合同变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同变更分页列表
*/
TableDataInfo<XzdCsContractChangeVo> queryPageList(XzdCsContractChangeBo bo, PageQuery pageQuery);
/**
* 查询符合条件的综合服务合同变更列表
*
* @param bo 查询条件
* @return 综合服务合同变更列表
*/
List<XzdCsContractChangeVo> queryList(XzdCsContractChangeBo bo);
/**
* 新增综合服务合同变更
*
* @param bo 综合服务合同变更
* @return 是否新增成功
*/
Boolean insertByBo(XzdCsContractChangeBo bo);
/**
* 修改综合服务合同变更
*
* @param bo 综合服务合同变更
* @return 是否修改成功
*/
Boolean updateByBo(XzdCsContractChangeBo bo);
/**
* 校验并批量删除综合服务合同变更信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.comprehensive.service;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
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-13
*/
public interface IXzdCsContractInformationService extends IService<XzdCsContractInformation>{
/**
* 查询综合服务合同信息
*
* @param id 主键
* @return 综合服务合同信息
*/
XzdCsContractInformationVo queryById(Long id);
/**
* 分页查询综合服务合同信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同信息分页列表
*/
TableDataInfo<XzdCsContractInformationVo> queryPageList(XzdCsContractInformationBo bo, PageQuery pageQuery);
/**
* 查询符合条件的综合服务合同信息列表
*
* @param bo 查询条件
* @return 综合服务合同信息列表
*/
List<XzdCsContractInformationVo> queryList(XzdCsContractInformationBo bo);
/**
* 新增综合服务合同信息
*
* @param bo 综合服务合同信息
* @return 是否新增成功
*/
Boolean insertByBo(XzdCsContractInformationBo bo);
/**
* 修改综合服务合同信息
*
* @param bo 综合服务合同信息
* @return 是否修改成功
*/
Boolean updateByBo(XzdCsContractInformationBo bo);
/**
* 校验并批量删除综合服务合同信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.comprehensive.service;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractSuspendBo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend;
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-13
*/
public interface IXzdCsContractSuspendService extends IService<XzdCsContractSuspend>{
/**
* 查询综合服务合同终止
*
* @param id 主键
* @return 综合服务合同终止
*/
XzdCsContractSuspendVo queryById(Long id);
/**
* 分页查询综合服务合同终止列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同终止分页列表
*/
TableDataInfo<XzdCsContractSuspendVo> queryPageList(XzdCsContractSuspendBo bo, PageQuery pageQuery);
/**
* 查询符合条件的综合服务合同终止列表
*
* @param bo 查询条件
* @return 综合服务合同终止列表
*/
List<XzdCsContractSuspendVo> queryList(XzdCsContractSuspendBo bo);
/**
* 新增综合服务合同终止
*
* @param bo 综合服务合同终止
* @return 是否新增成功
*/
Boolean insertByBo(XzdCsContractSuspendBo bo);
/**
* 修改综合服务合同终止
*
* @param bo 综合服务合同终止
* @return 是否修改成功
*/
Boolean updateByBo(XzdCsContractSuspendBo bo);
/**
* 校验并批量删除综合服务合同终止信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,371 @@
package org.dromara.xzd.comprehensive.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.system.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.domain.vo.XzdProjectVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.impl.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractChangeBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractChange;
import org.dromara.xzd.comprehensive.mapper.XzdCsContractChangeMapper;
import org.dromara.xzd.comprehensive.service.IXzdCsContractChangeService;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* 综合服务合同变更Service业务层处理
*
* @author Lion Li
* @date 2025-10-13
*/
@RequiredArgsConstructor
@Service
public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractChangeMapper, XzdCsContractChange> implements IXzdCsContractChangeService {
private final XzdCsContractChangeMapper baseMapper;
@Autowired
private XzdDeductionItemsServiceImpl xzdDeductionItemsService;
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
/**
* 查询综合服务合同变更
*
* @param id 主键
* @return 综合服务合同变更
*/
@Override
public XzdCsContractChangeVo queryById(Long id){
XzdCsContractChangeVo xzdCsContractChangeVo = baseMapper.selectVoById(id);
if (xzdCsContractChangeVo!=null){
getName(xzdCsContractChangeVo);
getHttk(xzdCsContractChangeVo);
}
return xzdCsContractChangeVo;
}
/**
* 分页查询综合服务合同变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同变更分页列表
*/
@Override
public TableDataInfo<XzdCsContractChangeVo> queryPageList(XzdCsContractChangeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCsContractChange> lqw = buildQueryWrapper(bo);
Page<XzdCsContractChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的综合服务合同变更列表
*
* @param bo 查询条件
* @return 综合服务合同变更列表
*/
@Override
public List<XzdCsContractChangeVo> queryList(XzdCsContractChangeBo bo) {
LambdaQueryWrapper<XzdCsContractChange> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdCsContractChange> buildQueryWrapper(XzdCsContractChangeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCsContractChange> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCsContractChange::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCsContractChange::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdCsContractChange::getTitle, bo.getTitle());
lqw.eq(bo.getDocDate() != null, XzdCsContractChange::getDocDate, bo.getDocDate());
lqw.eq(bo.getContractCode() != null, XzdCsContractChange::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdCsContractChange::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdCsContractChange::getContractType, bo.getContractType());
lqw.eq(bo.getChangeType() != null, XzdCsContractChange::getChangeType, bo.getChangeType());
lqw.eq(bo.getProject() != null, XzdCsContractChange::getProject, bo.getProject());
lqw.eq(StringUtils.isNotBlank(bo.getBusinessMode()), XzdCsContractChange::getBusinessMode, bo.getBusinessMode());
lqw.eq(bo.getOrganization() !=null, XzdCsContractChange::getOrganization, bo.getOrganization());
lqw.eq(bo.getPartyA() != null, XzdCsContractChange::getPartyA, bo.getPartyA());
lqw.eq(bo.getPartyB() != null, XzdCsContractChange::getPartyB, bo.getPartyB());
lqw.eq(bo.getOriginalContractAmount() != null, XzdCsContractChange::getOriginalContractAmount, bo.getOriginalContractAmount());
lqw.eq(bo.getChangeTaxIncludedAmount() != null, XzdCsContractChange::getChangeTaxIncludedAmount, bo.getChangeTaxIncludedAmount());
lqw.eq(bo.getAfterChangeTaxIncludedAmount() != null, XzdCsContractChange::getAfterChangeTaxIncludedAmount, bo.getAfterChangeTaxIncludedAmount());
lqw.eq(bo.getCumulativeChangeAmount() != null, XzdCsContractChange::getCumulativeChangeAmount, bo.getCumulativeChangeAmount());
lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdCsContractChange::getWarning, bo.getWarning());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdCsContractChange::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(bo.getIsSealed() != null, XzdCsContractChange::getIsSealed, bo.getIsSealed());
lqw.eq(bo.getAfterChangeProjectManager() != null, XzdCsContractChange::getAfterChangeProjectManager, bo.getAfterChangeProjectManager());
lqw.eq(bo.getAfterChangeProjectLeader() != null, XzdCsContractChange::getAfterChangeProjectLeader, bo.getAfterChangeProjectLeader());
lqw.eq(bo.getAfterChangeSiteManager() != null, XzdCsContractChange::getAfterChangeSiteManager, bo.getAfterChangeSiteManager());
lqw.eq(StringUtils.isNotBlank(bo.getAfterChangeContractRemark()), XzdCsContractChange::getAfterChangeContractRemark, bo.getAfterChangeContractRemark());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdCsContractChange::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdCsContractChange::getProjectType, bo.getProjectType());
lqw.eq(bo.getPaymentNotExceedContract() != null, XzdCsContractChange::getPaymentNotExceedContract, bo.getPaymentNotExceedContract());
lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdCsContractChange::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio());
lqw.eq(bo.getBudgetNotExceedContract() != null, XzdCsContractChange::getBudgetNotExceedContract, bo.getBudgetNotExceedContract());
lqw.eq(bo.getBudgetNotExceedRatio() != null, XzdCsContractChange::getBudgetNotExceedRatio, bo.getBudgetNotExceedRatio());
lqw.eq(bo.getRealTimeUpdate() != null, XzdCsContractChange::getRealTimeUpdate, bo.getRealTimeUpdate());
lqw.eq(bo.getContractCumulativeChangeAmount() != null, XzdCsContractChange::getContractCumulativeChangeAmount, bo.getContractCumulativeChangeAmount());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCsContractChange::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCsContractChange::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增综合服务合同变更
*
* @param bo 综合服务合同变更
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdCsContractChangeBo bo) {
XzdCsContractChange add = MapstructUtils.convert(bo, XzdCsContractChange.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
addzixiang(bo,add);
String tableName = XzdClassEnum.CS_CONTRACT_CHANGE.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setContractDetailsId(add.getId());
}
xzdDeductionItemsService.saveBatch(bo.getKkyjlx());
if (bo.getHttk() == null || bo.getHttk().isEmpty()) {
throw new ServiceException("合同条款不能为空");
}
//合同条款-合同条款
for (XzdContractClause clause : bo.getHttk()) {
clause.setTableName(tableName);
clause.setContractDetailsId(add.getId());
}
xzdContractClauseService.saveBatch(bo.getHttk());
if (bo.getZftk() == null || bo.getZftk().isEmpty()) {
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(add.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
return flag;
}
/**
* 修改综合服务合同变更
*
* @param bo 综合服务合同变更
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(XzdCsContractChangeBo bo) {
XzdCsContractChange update = MapstructUtils.convert(bo, XzdCsContractChange.class);
validEntityBeforeSave(update);
XzdCsContractChange old = baseMapper.selectById(update.getId());
if (old == null){
throw new ServiceException("找不到要修改数据!!!");
}
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, old.getId());
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, old.getId());
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(XzdDeductionItems::getContractDetailsId, old.getId());
xzdDeductionItemsService.remove(lambdaQueryWrapper4);
addzixiang(bo, update);
return baseMapper.updateById(update) > 0;
}
private void addzixiang(XzdCsContractChangeBo bo, XzdCsContractChange update) {
String tableName = XzdClassEnum.CS_CONTRACT_CHANGE.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setContractDetailsId(update.getId());
}
xzdDeductionItemsService.saveBatch(bo.getKkyjlx());
if (bo.getHttk() == null || bo.getHttk().isEmpty()) {
throw new ServiceException("合同条款不能为空");
}
//合同条款-合同条款
for (XzdContractClause clause : bo.getHttk()) {
clause.setTableName(tableName);
clause.setContractDetailsId(update.getId());
}
xzdContractClauseService.saveBatch(bo.getHttk());
if (bo.getZftk() == null || bo.getZftk().isEmpty()) {
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(update.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCsContractChange 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) {
XzdCsContractChangeVo 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);
}
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids);
xzdDeductionItemsService.remove(lambdaQueryWrapper1);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids);
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdCsContractChangeVo item) {
//项目名称
if (item.getProject() != null){
String projectName = xzdProjectService.queryNameById(item.getProject());
if (projectName != null){
item.setProjectName(projectName);
}
}
//签约组织(客户信息列表)
String dtoR = iXzdCorrespondentList.queryNameById(item.getOrganization());
if (dtoR!=null){
item.setOrganizationName(dtoR);
}
//甲方单位(客户信息列表)
String byid = iXzdCorrespondentList.queryNameById(item.getPartyA());
if (byid!=null){
item.setPartyAName(byid);
}
//乙方单位(供应商信息列表)
String xzdSupplierInfoVo = xzdSupplierInfoService.queryNameById(item.getPartyB());
if (xzdSupplierInfoVo != null){
item.setPartyBName(xzdSupplierInfoVo);
}
}
/**
* 获取合同条款内容
* @param vo
*/
private void getHttk(XzdCsContractChangeVo vo) {
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, vo.getId());
List<XzdDeductionItems> list = xzdDeductionItemsService.list(lambdaQueryWrapper1);
vo.setKkyjlx(list);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, vo.getId());
List<XzdContractClause> list1 = xzdContractClauseService.list(lambdaQueryWrapper2);
vo.setHttk(list1);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
}
}

View File

@ -0,0 +1,408 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.github.linpeilie.annotations.AutoMapper;
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.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.domain.vo.XzdContractDetailsVo;
import org.dromara.xzd.domain.vo.XzdProjectVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.impl.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
import org.dromara.xzd.comprehensive.mapper.XzdCsContractInformationMapper;
import org.dromara.xzd.comprehensive.service.IXzdCsContractInformationService;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* 综合服务合同信息Service业务层处理
*
* @author Lion Li
* @date 2025-10-13
*/
@RequiredArgsConstructor
@Service
public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContractInformationMapper, XzdCsContractInformation> implements IXzdCsContractInformationService {
private final XzdCsContractInformationMapper baseMapper;
@Autowired
private XzdDeductionItemsServiceImpl xzdDeductionItemsService;
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private SysDeptServiceImpl sysDeptService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
/**
* 查询综合服务合同信息
*
* @param id 主键
* @return 综合服务合同信息
*/
@Override
public XzdCsContractInformationVo queryById(Long id){
XzdCsContractInformationVo vo = baseMapper.selectVoById(id);
if (vo!=null){
getName(vo);
getHttk(vo);
}
return vo;
}
/**
* 获取合同条款内容
* @param vo
*/
private void getHttk(XzdCsContractInformationVo vo) {
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, vo.getId());
List<XzdDeductionItems> list = xzdDeductionItemsService.list(lambdaQueryWrapper1);
vo.setKkyjlx(list);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, vo.getId());
List<XzdContractClause> list1 = xzdContractClauseService.list(lambdaQueryWrapper2);
vo.setHttk(list1);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
}
/**
* 分页查询综合服务合同信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同信息分页列表
*/
@Override
public TableDataInfo<XzdCsContractInformationVo> queryPageList(XzdCsContractInformationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCsContractInformation> lqw = buildQueryWrapper(bo);
Page<XzdCsContractInformationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
for (XzdCsContractInformationVo item : result.getRecords()) {
getName(item);
}
return TableDataInfo.build(result);
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdCsContractInformationVo item) {
//部门名称
if (item.getDepartmentId() != null){
SysDeptVo sysDeptVo = sysDeptService.selectDeptById(item.getDepartmentId());
if (sysDeptVo != null){
item.setDepartmentName(sysDeptVo.getDeptName());
}
}
//项目名称
if (item.getProjectId() != null){
String projectName = xzdProjectService.queryNameById(item.getProjectId());
if (projectName != null){
item.setProjectName(projectName);
}
}
//签约组织(客户信息列表)
if (item.getSignOrganization() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getSignOrganization());
if (byid!=null){
item.setSignOrganizationName(byid);
}
}
//甲方单位(客户信息列表)
if (item.getPartyA() != null){
String byid = iXzdCorrespondentList.queryNameById(item.getPartyA());
if (byid!=null){
item.setPartyAName(byid);
}
}
//乙方单位(供应商信息列表)
if (item.getPartyB() != null){
String unitName = xzdSupplierInfoService.queryNameById(item.getPartyB());
if (unitName != null){
item.setPartyBName(unitName);
}
}
//开票单位名称(供应商名称)
if (item.getInvoiceIssuer() != null){
String unitName = xzdSupplierInfoService.queryNameById(item.getInvoiceIssuer());
if (unitName != null){
item.setInvoiceIssuerName(unitName);
}
}
//收票单位名称(客户名称)
if (item.getInvoiceReceiver()!= null){
String byid = iXzdCorrespondentList.queryNameById(item.getInvoiceReceiver());
if (byid!=null){
item.setInvoiceReceiverName(byid);
}
}
}
/**
* 查询符合条件的综合服务合同信息列表
*
* @param bo 查询条件
* @return 综合服务合同信息列表
*/
@Override
public List<XzdCsContractInformationVo> queryList(XzdCsContractInformationBo bo) {
LambdaQueryWrapper<XzdCsContractInformation> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdCsContractInformation> buildQueryWrapper(XzdCsContractInformationBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCsContractInformation> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCsContractInformation::getId);
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdCsContractInformation::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdCsContractInformation::getContractName, bo.getContractName());
lqw.eq(bo.getDocumentDate() != null, XzdCsContractInformation::getDocumentDate, bo.getDocumentDate());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdCsContractInformation::getContractType, bo.getContractType());
lqw.eq(bo.getProjectId() != null, XzdCsContractInformation::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getBusinessMode()), XzdCsContractInformation::getBusinessMode, bo.getBusinessMode());
lqw.eq(bo.getSignDate() != null, XzdCsContractInformation::getSignDate, bo.getSignDate());
lqw.eq(bo.getPartyA() != null, XzdCsContractInformation::getPartyA, bo.getPartyA());
lqw.eq(bo.getTaxIncludedAmount() != null, XzdCsContractInformation::getTaxIncludedAmount, bo.getTaxIncludedAmount());
lqw.eq(StringUtils.isNotBlank(bo.getContractStatus()), XzdCsContractInformation::getContractStatus, bo.getContractStatus());
lqw.eq(bo.getPartyB() != null, XzdCsContractInformation::getPartyB, bo.getPartyB());
lqw.eq(bo.getCumulativeChangeAmount() != null, XzdCsContractInformation::getCumulativeChangeAmount, bo.getCumulativeChangeAmount());
lqw.eq(bo.getDepartmentId() != null, XzdCsContractInformation::getDepartmentId, bo.getDepartmentId());
lqw.eq(bo.getArchivalDate() != null, XzdCsContractInformation::getArchivalDate, bo.getArchivalDate());
lqw.eq(bo.getIsRD() != null, XzdCsContractInformation::getIsRD, bo.getIsRD());
lqw.eq(bo.getInvoiceIssuer() != null, XzdCsContractInformation::getInvoiceIssuer, bo.getInvoiceIssuer());
lqw.eq(bo.getInvoiceReceiver() != null, XzdCsContractInformation::getInvoiceReceiver, bo.getInvoiceReceiver());
lqw.eq(bo.getValidStartDate() != null, XzdCsContractInformation::getValidStartDate, bo.getValidStartDate());
lqw.eq(bo.getValidEndDate() != null, XzdCsContractInformation::getValidEndDate, bo.getValidEndDate());
lqw.eq(bo.getIsSealed() != null, XzdCsContractInformation::getIsSealed, bo.getIsSealed());
lqw.eq(StringUtils.isNotBlank(bo.getTaxIncludedAmountUpper()), XzdCsContractInformation::getTaxIncludedAmountUpper, bo.getTaxIncludedAmountUpper());
lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdCsContractInformation::getWarning, bo.getWarning());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdCsContractInformation::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(bo.getSignOrganization() != null, XzdCsContractInformation::getSignOrganization, bo.getSignOrganization());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdCsContractInformation::getProjectType, bo.getProjectType());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdCsContractInformation::getProjectCategory, bo.getProjectCategory());
lqw.eq(bo.getProjectOwner() != null, XzdCsContractInformation::getProjectOwner, bo.getProjectOwner());
lqw.eq(bo.getWbs() != null, XzdCsContractInformation::getWbs, bo.getWbs());
lqw.eq(StringUtils.isNotBlank(bo.getFilingStatus()), XzdCsContractInformation::getFilingStatus, bo.getFilingStatus());
lqw.eq(bo.getFilingTime() != null, XzdCsContractInformation::getFilingTime, bo.getFilingTime());
lqw.eq(bo.getNeedFiling() != null, XzdCsContractInformation::getNeedFiling, bo.getNeedFiling());
lqw.eq(bo.getBudgetCategory() != null, XzdCsContractInformation::getBudgetCategory, bo.getBudgetCategory());
lqw.eq(bo.getIsFixedUnitPrice() != null, XzdCsContractInformation::getIsFixedUnitPrice, bo.getIsFixedUnitPrice());
lqw.eq(bo.getIsLumpSum() != null, XzdCsContractInformation::getIsLumpSum, bo.getIsLumpSum());
lqw.eq(bo.getPaymentNotExceedContract() != null, XzdCsContractInformation::getPaymentNotExceedContract, bo.getPaymentNotExceedContract());
lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdCsContractInformation::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio());
lqw.eq(bo.getBudgetNotExceedContract() != null, XzdCsContractInformation::getBudgetNotExceedContract, bo.getBudgetNotExceedContract());
lqw.eq(bo.getBudgetNotExceedRatio() != null, XzdCsContractInformation::getBudgetNotExceedRatio, bo.getBudgetNotExceedRatio());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCsContractInformation::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCsContractInformation::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增综合服务合同信息
*
* @param bo 综合服务合同信息
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdCsContractInformationBo bo) {
XzdCsContractInformation add = MapstructUtils.convert(bo, XzdCsContractInformation.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("ZHFWHT-");
add.setContractCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.CS_CONTRACT_INFORMATION.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setContractDetailsId(add.getId());
}
xzdDeductionItemsService.saveBatch(bo.getKkyjlx());
if (bo.getHttk() == null || bo.getHttk().isEmpty()) {
throw new ServiceException("合同条款不能为空");
}
//合同条款-合同条款
for (XzdContractClause clause : bo.getHttk()) {
clause.setTableName(tableName);
clause.setContractDetailsId(add.getId());
}
xzdContractClauseService.saveBatch(bo.getHttk());
if (bo.getZftk() == null || bo.getZftk().isEmpty()) {
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(add.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
return flag;
}
/**
* 修改综合服务合同信息
*
* @param bo 综合服务合同信息
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(XzdCsContractInformationBo bo) {
XzdCsContractInformation update = MapstructUtils.convert(bo, XzdCsContractInformation.class);
validEntityBeforeSave(update);
XzdCsContractInformation old = baseMapper.selectById(update.getId());
if (old == null){
throw new ServiceException("找不到要修改数据!!!");
}
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, old.getId());
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, old.getId());
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(XzdDeductionItems::getContractDetailsId, old.getId());
xzdDeductionItemsService.remove(lambdaQueryWrapper4);
String tableName = XzdClassEnum.CS_CONTRACT_INFORMATION.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setContractDetailsId(update.getId());
}
xzdDeductionItemsService.saveBatch(bo.getKkyjlx());
if (bo.getHttk() == null || bo.getHttk().isEmpty()) {
throw new ServiceException("合同条款不能为空");
}
//合同条款-合同条款
for (XzdContractClause clause : bo.getHttk()) {
clause.setTableName(tableName);
clause.setContractDetailsId(update.getId());
}
xzdContractClauseService.saveBatch(bo.getHttk());
if (bo.getZftk() == null || bo.getZftk().isEmpty()) {
throw new ServiceException("支付条款不能为空");
}
//支付条款
for (XzdSettlementRules clause : bo.getZftk()) {
clause.setContractDetailsId(update.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCsContractInformation 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) {
XzdCsContractInformationVo 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);
}
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids);
xzdDeductionItemsService.remove(lambdaQueryWrapper1);
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids);
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付条款
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,210 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.domain.R;
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.system.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.domain.vo.XzdProjectVo;
import org.dromara.xzd.domain.vo.XzdSupplierInfoVo;
import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.impl.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractSuspendBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendVo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend;
import org.dromara.xzd.comprehensive.mapper.XzdCsContractSuspendMapper;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendService;
import java.util.*;
/**
* 综合服务合同终止Service业务层处理
*
* @author Lion Li
* @date 2025-10-13
*/
@RequiredArgsConstructor
@Service
public class XzdCsContractSuspendServiceImpl extends ServiceImpl<XzdCsContractSuspendMapper, XzdCsContractSuspend> implements IXzdCsContractSuspendService {
private final XzdCsContractSuspendMapper baseMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
/**
* 查询综合服务合同终止
*
* @param id 主键
* @return 综合服务合同终止
*/
@Override
public XzdCsContractSuspendVo queryById(Long id){
XzdCsContractSuspendVo vo = baseMapper.selectVoById(id);
if (vo!=null){
getName(vo);
}
return vo;
}
/**
* 分页查询综合服务合同终止列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同终止分页列表
*/
@Override
public TableDataInfo<XzdCsContractSuspendVo> queryPageList(XzdCsContractSuspendBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCsContractSuspend> lqw = buildQueryWrapper(bo);
Page<XzdCsContractSuspendVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的综合服务合同终止列表
*
* @param bo 查询条件
* @return 综合服务合同终止列表
*/
@Override
public List<XzdCsContractSuspendVo> queryList(XzdCsContractSuspendBo bo) {
LambdaQueryWrapper<XzdCsContractSuspend> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdCsContractSuspend> buildQueryWrapper(XzdCsContractSuspendBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCsContractSuspend> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCsContractSuspend::getId);
lqw.eq(bo.getContractInformationId() != null, XzdCsContractSuspend::getContractInformationId, bo.getContractInformationId());
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdCsContractSuspend::getReceiptsCode, bo.getReceiptsCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdCsContractSuspend::getTitle, bo.getTitle());
lqw.eq(bo.getDocumentDate() != null, XzdCsContractSuspend::getDocumentDate, bo.getDocumentDate());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdCsContractSuspend::getContractName, bo.getContractName());
lqw.eq(bo.getTerminationDate() != null, XzdCsContractSuspend::getTerminationDate, bo.getTerminationDate());
lqw.eq(bo.getProject()!=null, XzdCsContractSuspend::getProject, bo.getProject());
lqw.eq(bo.getArtyBUnit() != null, XzdCsContractSuspend::getArtyBUnit, bo.getArtyBUnit());
lqw.eq(bo.getPartyAUnit() != null, XzdCsContractSuspend::getPartyAUnit, bo.getPartyAUnit());
lqw.eq(StringUtils.isNotBlank(bo.getTerminationCause()), XzdCsContractSuspend::getTerminationCause, bo.getTerminationCause());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdCsContractSuspend::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdCsContractSuspend::getProjectType, bo.getProjectType());
lqw.eq(bo.getCumulativeSettlementAmount() != null, XzdCsContractSuspend::getCumulativeSettlementAmount, bo.getCumulativeSettlementAmount());
lqw.eq(bo.getCumulativePaymentAmount() != null, XzdCsContractSuspend::getCumulativePaymentAmount, bo.getCumulativePaymentAmount());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCsContractSuspend::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdCsContractSuspend::getAuditStatus, bo.getAuditStatus());
return lqw;
}
/**
* 新增综合服务合同终止
*
* @param bo 综合服务合同终止
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdCsContractSuspendBo bo) {
XzdCsContractSuspend add = MapstructUtils.convert(bo, XzdCsContractSuspend.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改综合服务合同终止
*
* @param bo 综合服务合同终止
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdCsContractSuspendBo bo) {
XzdCsContractSuspend update = MapstructUtils.convert(bo, XzdCsContractSuspend.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCsContractSuspend 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) {
XzdCsContractSuspendVo 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);
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdCsContractSuspendVo item) {
//项目名称
if (item.getProject() != null){
String projectName = xzdProjectService.queryNameById(item.getProject());
if (projectName != null){
item.setProjectName(projectName);
}
}
//甲方单位(客户信息列表)
String byid = iXzdCorrespondentList.queryNameById(item.getPartyAUnit());
if (byid!=null){
item.setPartyAUnitNamme(byid);
}
//乙方单位(供应商信息列表)
String xzdSupplierInfoVo = xzdSupplierInfoService.queryNameById(item.getArtyBUnit());
if (xzdSupplierInfoVo != null){
item.setArtyBUnitName(xzdSupplierInfoVo);
}
}
}

View File

@ -22,7 +22,7 @@ public class XzdSettlementRules extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*
*/
@TableId(value = "id")
private Long id;

View File

@ -7,7 +7,11 @@ public enum XzdClassEnum {
XZD_CONTRACT_CHANGE("xzd_contract_change"),
CS_CONTRACT_INFORMATION("xzd_cs_contract_information"),
CS_CONTRACT_INFORMATION("xzd_cs_contract_information"), //综合服务合同信息
CS_CONTRACT_CHANGE("xzd_cs_contract_change"), //综合服务合同变更
JS_ZHFW_JINDU("xzd_js_zhfw_jindu"), //综合服务合同进度结算
JS_CG_JUNGON("xzd_js_cg_jungon"), //采购合同竣工结算
JS_CG_JINDU("xzd_js_cg_jindu"), //采购合同进度结算
// 分包合同
FENBAOHETONG_INFORMATION("xzd_subcontract"),
// 采购变更合同

View File

@ -24,4 +24,6 @@ public interface IXzdCorrespondentList {
R<String> putCorrespondent(AddCorrespondentDto dto);
R<QuerCorrespondentDto> getCustomerByid(Long id);
String queryNameById(Long partyAUnit);
}

View File

@ -504,6 +504,12 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList {
return R.ok(dto);
}
@Override
public String queryNameById(Long id) {
XzdCustomerinformation xzdCustomerinformation = xzdCustomerinformationMapper.selectById(id);
return xzdCustomerinformation != null ? xzdCustomerinformation.getUnitName():null;
}
public void delCorrespondentVoid(Long dto){
// 客户信息

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.settlement.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.settlement.domain.vo.XzdJsCgJinduVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJinduBo;
import org.dromara.xzd.settlement.service.IXzdJsCgJinduService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 采购合同进度结算
*
* @author Lion Li
* @date 2025-10-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/settlement/jsCgJindu")
public class XzdJsCgJinduController extends BaseController {
private final IXzdJsCgJinduService xzdJsCgJinduService;
/**
* 查询采购合同进度结算列表
*/
@SaCheckPermission("settlement:jsCgJindu:list")
@GetMapping("/list")
public TableDataInfo<XzdJsCgJinduVo> list(XzdJsCgJinduBo bo, PageQuery pageQuery) {
return xzdJsCgJinduService.queryPageList(bo, pageQuery);
}
/**
* 导出采购合同进度结算列表
*/
@SaCheckPermission("settlement:jsCgJindu:export")
@Log(title = "采购合同进度结算", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdJsCgJinduBo bo, HttpServletResponse response) {
List<XzdJsCgJinduVo> list = xzdJsCgJinduService.queryList(bo);
ExcelUtil.exportExcel(list, "采购合同进度结算", XzdJsCgJinduVo.class, response);
}
/**
* 获取采购合同进度结算详细信息
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsCgJindu:query")
@GetMapping("/{id}")
public R<XzdJsCgJinduVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdJsCgJinduService.queryById(id));
}
/**
* 新增采购合同进度结算
*/
@SaCheckPermission("settlement:jsCgJindu:add")
@Log(title = "采购合同进度结算", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdJsCgJinduBo bo) {
return toAjax(xzdJsCgJinduService.insertByBo(bo));
}
/**
* 修改采购合同进度结算
*/
@SaCheckPermission("settlement:jsCgJindu:edit")
@Log(title = "采购合同进度结算", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdJsCgJinduBo bo) {
return toAjax(xzdJsCgJinduService.updateByBo(bo));
}
/**
* 删除采购合同进度结算
*
* @param ids 主键串
*/
@SaCheckPermission("settlement:jsCgJindu:remove")
@Log(title = "采购合同进度结算", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdJsCgJinduService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.settlement.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.settlement.domain.vo.XzdJsCgJungonVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJungonBo;
import org.dromara.xzd.settlement.service.IXzdJsCgJungonService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 采购合同竣工结算
*
* @author Lion Li
* @date 2025-10-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/settlement/jsCgJungon")
public class XzdJsCgJungonController extends BaseController {
private final IXzdJsCgJungonService xzdJsCgJungonService;
/**
* 查询采购合同竣工结算列表
*/
@SaCheckPermission("settlement:jsCgJungon:list")
@GetMapping("/list")
public TableDataInfo<XzdJsCgJungonVo> list(XzdJsCgJungonBo bo, PageQuery pageQuery) {
return xzdJsCgJungonService.queryPageList(bo, pageQuery);
}
/**
* 导出采购合同竣工结算列表
*/
@SaCheckPermission("settlement:jsCgJungon:export")
@Log(title = "采购合同竣工结算", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdJsCgJungonBo bo, HttpServletResponse response) {
List<XzdJsCgJungonVo> list = xzdJsCgJungonService.queryList(bo);
ExcelUtil.exportExcel(list, "采购合同竣工结算", XzdJsCgJungonVo.class, response);
}
/**
* 获取采购合同竣工结算详细信息
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsCgJungon:query")
@GetMapping("/{id}")
public R<XzdJsCgJungonVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdJsCgJungonService.queryById(id));
}
/**
* 新增采购合同竣工结算
*/
@SaCheckPermission("settlement:jsCgJungon:add")
@Log(title = "采购合同竣工结算", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdJsCgJungonBo bo) {
return toAjax(xzdJsCgJungonService.insertByBo(bo));
}
/**
* 修改采购合同竣工结算
*/
@SaCheckPermission("settlement:jsCgJungon:edit")
@Log(title = "采购合同竣工结算", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdJsCgJungonBo bo) {
return toAjax(xzdJsCgJungonService.updateByBo(bo));
}
/**
* 删除采购合同竣工结算
*
* @param ids 主键串
*/
@SaCheckPermission("settlement:jsCgJungon:remove")
@Log(title = "采购合同竣工结算", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdJsCgJungonService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.settlement.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.settlement.domain.vo.XzdJsCgJungonEditVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJungonEditBo;
import org.dromara.xzd.settlement.service.IXzdJsCgJungonEditService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 采购合同竣工结算调整
*
* @author Lion Li
* @date 2025-10-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/settlement/jsCgJungonEdit")
public class XzdJsCgJungonEditController extends BaseController {
private final IXzdJsCgJungonEditService xzdJsCgJungonEditService;
/**
* 查询采购合同竣工结算调整列表
*/
@SaCheckPermission("settlement:jsCgJungonEdit:list")
@GetMapping("/list")
public TableDataInfo<XzdJsCgJungonEditVo> list(XzdJsCgJungonEditBo bo, PageQuery pageQuery) {
return xzdJsCgJungonEditService.queryPageList(bo, pageQuery);
}
/**
* 导出采购合同竣工结算调整列表
*/
@SaCheckPermission("settlement:jsCgJungonEdit:export")
@Log(title = "采购合同竣工结算调整", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdJsCgJungonEditBo bo, HttpServletResponse response) {
List<XzdJsCgJungonEditVo> list = xzdJsCgJungonEditService.queryList(bo);
ExcelUtil.exportExcel(list, "采购合同竣工结算调整", XzdJsCgJungonEditVo.class, response);
}
/**
* 获取采购合同竣工结算调整详细信息
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsCgJungonEdit:query")
@GetMapping("/{id}")
public R<XzdJsCgJungonEditVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdJsCgJungonEditService.queryById(id));
}
/**
* 新增采购合同竣工结算调整
*/
@SaCheckPermission("settlement:jsCgJungonEdit:add")
@Log(title = "采购合同竣工结算调整", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdJsCgJungonEditBo bo) {
return toAjax(xzdJsCgJungonEditService.insertByBo(bo));
}
/**
* 修改采购合同竣工结算调整
*/
@SaCheckPermission("settlement:jsCgJungonEdit:edit")
@Log(title = "采购合同竣工结算调整", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdJsCgJungonEditBo bo) {
return toAjax(xzdJsCgJungonEditService.updateByBo(bo));
}
/**
* 删除采购合同竣工结算调整
*
* @param ids 主键串
*/
@SaCheckPermission("settlement:jsCgJungonEdit:remove")
@Log(title = "采购合同竣工结算调整", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdJsCgJungonEditService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.settlement.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.settlement.domain.vo.XzdJsDeductionItemsVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo;
import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 结算-扣款与奖励项
*
* @author Lion Li
* @date 2025-10-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/settlement/jsDeductionItems")
public class XzdJsDeductionItemsController extends BaseController {
private final IXzdJsDeductionItemsService xzdJsDeductionItemsService;
/**
* 查询结算-扣款与奖励项列表
*/
@SaCheckPermission("settlement:jsDeductionItems:list")
@GetMapping("/list")
public TableDataInfo<XzdJsDeductionItemsVo> list(XzdJsDeductionItemsBo bo, PageQuery pageQuery) {
return xzdJsDeductionItemsService.queryPageList(bo, pageQuery);
}
/**
* 导出结算-扣款与奖励项列表
*/
@SaCheckPermission("settlement:jsDeductionItems:export")
@Log(title = "结算-扣款与奖励项", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdJsDeductionItemsBo bo, HttpServletResponse response) {
List<XzdJsDeductionItemsVo> list = xzdJsDeductionItemsService.queryList(bo);
ExcelUtil.exportExcel(list, "结算-扣款与奖励项", XzdJsDeductionItemsVo.class, response);
}
/**
* 获取结算-扣款与奖励项详细信息
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsDeductionItems:query")
@GetMapping("/{id}")
public R<XzdJsDeductionItemsVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdJsDeductionItemsService.queryById(id));
}
/**
* 新增结算-扣款与奖励项
*/
@SaCheckPermission("settlement:jsDeductionItems:add")
@Log(title = "结算-扣款与奖励项", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdJsDeductionItemsBo bo) {
return toAjax(xzdJsDeductionItemsService.insertByBo(bo));
}
/**
* 修改结算-扣款与奖励项
*/
@SaCheckPermission("settlement:jsDeductionItems:edit")
@Log(title = "结算-扣款与奖励项", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdJsDeductionItemsBo bo) {
return toAjax(xzdJsDeductionItemsService.updateByBo(bo));
}
/**
* 删除结算-扣款与奖励项
*
* @param ids 主键串
*/
@SaCheckPermission("settlement:jsDeductionItems:remove")
@Log(title = "结算-扣款与奖励项", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdJsDeductionItemsService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.settlement.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.settlement.domain.vo.XzdJsZhfwJinduVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsZhfwJinduBo;
import org.dromara.xzd.settlement.service.IXzdJsZhfwJinduService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 综合服务合同进度结算
*
* @author Lion Li
* @date 2025-10-14
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/settlement/jsZhfwJindu")
public class XzdJsZhfwJinduController extends BaseController {
private final IXzdJsZhfwJinduService xzdJsZhfwJinduService;
/**
* 查询综合服务合同进度结算列表
*/
@SaCheckPermission("settlement:jsZhfwJindu:list")
@GetMapping("/list")
public TableDataInfo<XzdJsZhfwJinduVo> list(XzdJsZhfwJinduBo bo, PageQuery pageQuery) {
return xzdJsZhfwJinduService.queryPageList(bo, pageQuery);
}
/**
* 导出综合服务合同进度结算列表
*/
@SaCheckPermission("settlement:jsZhfwJindu:export")
@Log(title = "综合服务合同进度结算", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdJsZhfwJinduBo bo, HttpServletResponse response) {
List<XzdJsZhfwJinduVo> list = xzdJsZhfwJinduService.queryList(bo);
ExcelUtil.exportExcel(list, "综合服务合同进度结算", XzdJsZhfwJinduVo.class, response);
}
/**
* 获取综合服务合同进度结算详细信息
*
* @param id 主键
*/
@SaCheckPermission("settlement:jsZhfwJindu:query")
@GetMapping("/{id}")
public R<XzdJsZhfwJinduVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdJsZhfwJinduService.queryById(id));
}
/**
* 新增综合服务合同进度结算
*/
@SaCheckPermission("settlement:jsZhfwJindu:add")
@Log(title = "综合服务合同进度结算", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdJsZhfwJinduBo bo) {
return toAjax(xzdJsZhfwJinduService.insertByBo(bo));
}
/**
* 修改综合服务合同进度结算
*/
@SaCheckPermission("settlement:jsZhfwJindu:edit")
@Log(title = "综合服务合同进度结算", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdJsZhfwJinduBo bo) {
return toAjax(xzdJsZhfwJinduService.updateByBo(bo));
}
/**
* 删除综合服务合同进度结算
*
* @param ids 主键串
*/
@SaCheckPermission("settlement:jsZhfwJindu:remove")
@Log(title = "综合服务合同进度结算", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdJsZhfwJinduService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,163 @@
package org.dromara.xzd.settlement.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_js_cg_jindu
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_js_cg_jindu")
public class XzdJsCgJindu extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID自增
*/
@TableId(value = "id")
private Long id;
/**
* 单据编码(带*,必填)
*/
private String docCode;
/**
* 标题(带*,必填)
*/
private String title;
/**
* 单据日期(带*,必填)
*/
private LocalDate docDate;
/**
* 合同编码(带查询,关联合同表)
*/
private Long contractCode;
/**
* 合同名称(关联合同后显示)
*/
private String contractName;
/**
* 统计周期(带*,必填,下拉选择)
*/
private String statCycle;
/**
* 计量开始(带*,必填)
*/
private LocalDate measureStart;
/**
* 项目(带*,必填)
*/
private Long project;
/**
* 审批金额默认0.00
*/
private BigDecimal approveAmount;
/**
* 计量结束(带*,必填)
*/
private LocalDate measureEnd;
/**
* 结算单位(带查询,关联单位表)
*/
private Long settlementUnit;
/**
* 合同金额默认0.00
*/
private BigDecimal contractAmount;
/**
* 累计结算金额(不含本期)默认0.00
*/
private BigDecimal totalSettlementExcludeCurrent;
/**
* 累计结算金额(含本期)默认0.00
*/
private BigDecimal totalSettlementIncludeCurrent;
/**
* 本次结算比例默认0.00%
*/
private BigDecimal currentSettlementRatio;
/**
* 已结算比例(不含本期)默认0.00%
*/
private BigDecimal settledRatioExcludeCurrent;
/**
* 截止本期结算比例默认0.00%
*/
private BigDecimal settlementRatioUntilCurrent;
/**
* 备注(长文本)
*/
private String remark;
/**
* 实时刷新复选框0=未勾选1=勾选)
*/
private Long realTimeRefresh;
/**
* 合同含税金额默认0.00
*/
private BigDecimal contractTaxInclAmount;
/**
* 合同不含税金额默认0.00
*/
private BigDecimal contractTaxExclAmount;
/**
* 累计结算金额默认0.00
*/
private BigDecimal totalSettledAmount;
/**
* 本期扣款金额默认0.00
*/
private BigDecimal currentDeductionAmount;
/**
* 本期奖励金额默认0.00
*/
private BigDecimal currentRewardAmount;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,143 @@
package org.dromara.xzd.settlement.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_js_cg_jungon
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_js_cg_jungon")
public class XzdJsCgJungon extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID自增
*/
@TableId(value = "id")
private Long id;
/**
* 单据编号(带*,必填)
*/
private String docCode;
/**
* 标题(带*,必填)
*/
private String title;
/**
* 单据日期(带*,必填)
*/
private LocalDate docDate;
/**
* 合同编号(带*,关联合同表)
*/
private Long contractCode;
/**
* 合同名称(关联合同后显示)
*/
private String contractName;
/**
* 决算金额
*/
private BigDecimal finalAmount;
/**
* 本期决算总额
*/
private BigDecimal currentPeriodTotal;
/**
* 本期扣款金额
*/
private BigDecimal currentDeduction;
/**
* 本期奖励金额
*/
private BigDecimal currentReward;
/**
* 审定日期
*/
private LocalDate approveDate;
/**
* 工程项目(带*,关联项目表)
*/
private Long projectId;
/**
* 统计周期下拉选择如“2025年10月”
*/
private String statCycle;
/**
* 甲方单位
*/
private Long partyA;
/**
* 乙方单位
*/
private Long partyB;
/**
* 备注
*/
private String remark;
/**
* 集采模式
*/
private Long procurementMode;
/**
* 业主单位(带查询,关联单位表)
*/
private Long ownerUnit;
/**
* 监理单位(带查询,关联单位表)
*/
private Long supervisionUnit;
/**
* 施工单位(带查询,关联单位表)
*/
private Long constructionUnit;
/**
* 审核单位(带查询,关联单位表)
*/
private Long auditUnit;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,93 @@
package org.dromara.xzd.settlement.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_js_cg_jungon_edit
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_js_cg_jungon_edit")
public class XzdJsCgJungonEdit extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID自增
*/
@TableId(value = "id")
private Long id;
/**
* 单据编号(带*,必填)
*/
private String docCode;
/**
* 标题(带*,必填)
*/
private String title;
/**
* 单据日期(带*,必填)
*/
private LocalDate docDate;
/**
* 决算单号(带*,必填)
*/
private String finalAccountCode;
/**
* 合同名称
*/
private String contractName;
/**
* 合同编号
*/
private String contractCode;
/**
* 调整后决算金额(带*,必填)
*/
private BigDecimal adjustedFinalAmount;
/**
* 工程项目(带*,必填)
*/
private Long projectId;
/**
* 默认财务组织
*/
private Long defaultFinanceOrg;
/**
* 调整说明
*/
private String adjustmentDescription;
/**
* 备注
*/
private String remark;
/**
* 集采模式
*/
private String procurementMode;
}

View File

@ -0,0 +1,100 @@
package org.dromara.xzd.settlement.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_js_deduction_items
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_js_deduction_items")
public class XzdJsDeductionItems extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 明细记录主键(自增)
*/
@TableId(value = "id")
private Long id;
/**
* 表名
*/
private String tableName;
/**
* 关联结算主表的ID外键指向结算单据表
*/
private Long mainDocId;
/**
* 明细类型1=扣款2=奖励
*/
private Long detailType;
/**
* 款项类别(带*,必填)
*/
private String itemCategory;
/**
* 本期金额(扣款/奖励金额)
*/
private BigDecimal currentPeriodAmount;
/**
* 本期不含税金额
*/
private BigDecimal currentTaxExclAmount;
/**
* 税率
*/
private BigDecimal taxRate;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 累计金额(累计扣款/累计奖励)
*/
private BigDecimal totalAmount;
/**
* 申请扣除仅“扣款”明细必填1=是0=否)
*/
private Long applyDeduction;
/**
* 款项属性(带*,必填)
*/
private String itemProperty;
/**
* WBS编码项目工作分解结构编码
*/
private String wbs;
/**
* CBS编码项目成本分解结构编码
*/
private String cbs;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,158 @@
package org.dromara.xzd.settlement.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_js_zhfw_jindu
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_js_zhfw_jindu")
public class XzdJsZhfwJindu extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID自增
*/
@TableId(value = "id")
private Long id;
/**
* 单据编码(带*,必填)
*/
private String docCode;
/**
* 标题(带*,必填)
*/
private String title;
/**
* 单据日期(带*,必填)
*/
private LocalDate docDate;
/**
* 合同编码
*/
private Long contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期(带*,必填)
*/
private String statCycle;
/**
* 计量开始
*/
private LocalDate measureStart;
/**
* 审批金额
*/
private BigDecimal approveAmount;
/**
* 项目
*/
private Long project;
/**
* 结算单位
*/
private Long settlementUnit;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 累计结算金额(不含本期)
*/
private BigDecimal totalSettlementExclCurrent;
/**
* 累计结算金额(含本期)
*/
private BigDecimal totalSettlementInclCurrent;
/**
* 本次结算比例
*/
private BigDecimal currentSettlementRatio;
/**
* 已结算比例(不含本期)
*/
private BigDecimal settledRatioExclCurrent;
/**
* 截止本期结算比例
*/
private BigDecimal settlementRatioUntilCurrent;
/**
* 备注
*/
private String remark;
/**
* 实时刷新0=未勾选1=勾选)
*/
private Long realTimeRefresh;
/**
* 累计结算金额(统计及控制信息)
*/
private BigDecimal totalSettledAmount;
/**
* 本期扣款金额
*/
private BigDecimal currentDeductionAmount;
/**
* 本期奖励金额
*/
private BigDecimal currentRewardAmount;
/**
* 合同含税金额
*/
private BigDecimal contractTaxInclAmount;
/**
* 合同不含税金额
*/
private BigDecimal contractTaxExclAmount;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,175 @@
package org.dromara.xzd.settlement.domain.bo;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.settlement.domain.XzdJsCgJindu;
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.settlement.domain.XzdJsDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 采购合同进度结算业务对象 xzd_js_cg_jindu
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdJsCgJindu.class, reverseConvertGenerate = false)
public class XzdJsCgJinduBo 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 title;
/**
* 单据日期(带*,必填)
*/
@NotNull(message = "单据日期(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate docDate;
/**
* 合同编码(带查询,关联合同表)
*/
private Long contractCode;
/**
* 合同名称(关联合同后显示)
*/
private String contractName;
/**
* 统计周期(带*,必填,下拉选择)
*/
@NotBlank(message = "统计周期(带*,必填,下拉选择)不能为空", groups = { AddGroup.class, EditGroup.class })
private String statCycle;
/**
* 计量开始(带*,必填)
*/
@NotNull(message = "计量开始(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate measureStart;
/**
* 项目(带*,必填)
*/
@NotBlank(message = "项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long project;
/**
* 审批金额默认0.00
*/
private BigDecimal approveAmount;
/**
* 计量结束(带*,必填)
*/
@NotNull(message = "计量结束(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate measureEnd;
/**
* 结算单位(带查询,关联单位表)
*/
private Long settlementUnit;
/**
* 合同金额默认0.00
*/
private BigDecimal contractAmount;
/**
* 累计结算金额(不含本期)默认0.00
*/
private BigDecimal totalSettlementExcludeCurrent;
/**
* 累计结算金额(含本期)默认0.00
*/
private BigDecimal totalSettlementIncludeCurrent;
/**
* 本次结算比例默认0.00%
*/
private BigDecimal currentSettlementRatio;
/**
* 已结算比例(不含本期)默认0.00%
*/
private BigDecimal settledRatioExcludeCurrent;
/**
* 截止本期结算比例默认0.00%
*/
private BigDecimal settlementRatioUntilCurrent;
/**
* 备注(长文本)
*/
private String remark;
/**
* 实时刷新复选框0=未勾选1=勾选)
*/
private Long realTimeRefresh;
/**
* 合同含税金额默认0.00
*/
private BigDecimal contractTaxInclAmount;
/**
* 合同不含税金额默认0.00
*/
private BigDecimal contractTaxExclAmount;
/**
* 累计结算金额默认0.00
*/
private BigDecimal totalSettledAmount;
/**
* 本期扣款金额默认0.00
*/
private BigDecimal currentDeductionAmount;
/**
* 本期奖励金额默认0.00
*/
private BigDecimal currentRewardAmount;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
List<XzdJsDeductionItems> kkyjlx;
}

View File

@ -0,0 +1,146 @@
package org.dromara.xzd.settlement.domain.bo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungon;
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_js_cg_jungon
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdJsCgJungon.class, reverseConvertGenerate = false)
public class XzdJsCgJungonBo 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 title;
/**
* 单据日期(带*,必填)
*/
@NotNull(message = "单据日期(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate docDate;
/**
* 合同编号(带*,关联合同表)
*/
private Long contractCode;
/**
* 合同名称(关联合同后显示)
*/
private String contractName;
/**
* 决算金额
*/
private BigDecimal finalAmount;
/**
* 本期决算总额
*/
private BigDecimal currentPeriodTotal;
/**
* 本期扣款金额
*/
private BigDecimal currentDeduction;
/**
* 本期奖励金额
*/
private BigDecimal currentReward;
/**
* 审定日期
*/
private LocalDate approveDate;
/**
* 工程项目(带*,关联项目表)
*/
@NotNull(message = "工程项目(带*,关联项目表)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 统计周期下拉选择如“2025年10月”
*/
private String statCycle;
/**
* 甲方单位
*/
private Long partyA;
/**
* 乙方单位
*/
private Long partyB;
/**
* 备注
*/
private String remark;
/**
* 集采模式
*/
private Long procurementMode;
/**
* 业主单位(带查询,关联单位表)
*/
private Long ownerUnit;
/**
* 监理单位(带查询,关联单位表)
*/
private Long supervisionUnit;
/**
* 施工单位(带查询,关联单位表)
*/
private Long constructionUnit;
/**
* 审核单位(带查询,关联单位表)
*/
private Long auditUnit;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,98 @@
package org.dromara.xzd.settlement.domain.bo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungonEdit;
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_js_cg_jungon_edit
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdJsCgJungonEdit.class, reverseConvertGenerate = false)
public class XzdJsCgJungonEditBo 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 title;
/**
* 单据日期(带*,必填)
*/
@NotNull(message = "单据日期(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate docDate;
/**
* 决算单号(带*,必填)
*/
@NotBlank(message = "决算单号(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String finalAccountCode;
/**
* 合同名称
*/
private String contractName;
/**
* 合同编号
*/
private String contractCode;
/**
* 调整后决算金额(带*,必填)
*/
@NotNull(message = "调整后决算金额(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal adjustedFinalAmount;
/**
* 工程项目(带*,必填)
*/
@NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 默认财务组织
*/
private Long defaultFinanceOrg;
/**
* 调整说明
*/
private String adjustmentDescription;
/**
* 备注
*/
private String remark;
/**
* 集采模式
*/
private String procurementMode;
}

View File

@ -0,0 +1,103 @@
package org.dromara.xzd.settlement.domain.bo;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
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_js_deduction_items
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdJsDeductionItems.class, reverseConvertGenerate = false)
public class XzdJsDeductionItemsBo extends BaseEntity {
/**
* 明细记录主键(自增)
*/
@NotNull(message = "明细记录主键(自增)不能为空", groups = { EditGroup.class })
private Long id;
/**
* 表名
*/
private String tableName;
/**
* 关联结算主表的ID外键指向结算单据表
*/
@NotNull(message = "关联结算主表的ID外键指向结算单据表不能为空", groups = { AddGroup.class, EditGroup.class })
private Long mainDocId;
/**
* 明细类型1=扣款2=奖励
*/
@NotNull(message = "明细类型1=扣款2=奖励不能为空", groups = { AddGroup.class, EditGroup.class })
private Long detailType;
/**
* 款项类别(带*,必填)
*/
@NotBlank(message = "款项类别(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String itemCategory;
/**
* 本期金额(扣款/奖励金额)
*/
private BigDecimal currentPeriodAmount;
/**
* 本期不含税金额
*/
private BigDecimal currentTaxExclAmount;
/**
* 税率
*/
private BigDecimal taxRate;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 累计金额(累计扣款/累计奖励)
*/
private BigDecimal totalAmount;
/**
* 申请扣除仅“扣款”明细必填1=是0=否)
*/
private Long applyDeduction;
/**
* 款项属性(带*,必填)
*/
@NotBlank(message = "款项属性(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String itemProperty;
/**
* WBS编码项目工作分解结构编码
*/
private String wbs;
/**
* CBS编码项目成本分解结构编码
*/
private String cbs;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,161 @@
package org.dromara.xzd.settlement.domain.bo;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
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_js_zhfw_jindu
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdJsZhfwJindu.class, reverseConvertGenerate = false)
public class XzdJsZhfwJinduBo 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 title;
/**
* 单据日期(带*,必填)
*/
@NotNull(message = "单据日期(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private LocalDate docDate;
/**
* 合同编码
*/
private Long contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期(带*,必填)
*/
@NotBlank(message = "统计周期(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String statCycle;
/**
* 计量开始
*/
private LocalDate measureStart;
/**
* 审批金额
*/
private BigDecimal approveAmount;
/**
* 项目
*/
private Long project;
/**
* 结算单位
*/
private Long settlementUnit;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 累计结算金额(不含本期)
*/
private BigDecimal totalSettlementExclCurrent;
/**
* 累计结算金额(含本期)
*/
private BigDecimal totalSettlementInclCurrent;
/**
* 本次结算比例
*/
private BigDecimal currentSettlementRatio;
/**
* 已结算比例(不含本期)
*/
private BigDecimal settledRatioExclCurrent;
/**
* 截止本期结算比例
*/
private BigDecimal settlementRatioUntilCurrent;
/**
* 备注
*/
private String remark;
/**
* 实时刷新0=未勾选1=勾选)
*/
private Long realTimeRefresh;
/**
* 累计结算金额(统计及控制信息)
*/
private BigDecimal totalSettledAmount;
/**
* 本期扣款金额
*/
private BigDecimal currentDeductionAmount;
/**
* 本期奖励金额
*/
private BigDecimal currentRewardAmount;
/**
* 合同含税金额
*/
private BigDecimal contractTaxInclAmount;
/**
* 合同不含税金额
*/
private BigDecimal contractTaxExclAmount;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,222 @@
package org.dromara.xzd.settlement.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.settlement.domain.XzdJsCgJindu;
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_js_cg_jindu
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdJsCgJindu.class)
public class XzdJsCgJinduVo 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 title;
/**
* 单据日期(带*,必填)
*/
@ExcelProperty(value = "单据日期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private LocalDate docDate;
/**
* 合同编码(带查询,关联合同表)
*/
@ExcelProperty(value = "合同编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联合同表")
private Long contractCode;
/**
* 合同名称(关联合同后显示)
*/
@ExcelProperty(value = "合同名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "关=联合同后显示")
private String contractName;
/**
* 统计周期(带*,必填,下拉选择)
*/
@ExcelProperty(value = "统计周期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填,下拉选择")
private String statCycle;
/**
* 计量开始(带*,必填)
*/
@ExcelProperty(value = "计量开始", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private LocalDate measureStart;
/**
* 项目(带*,必填)
*/
@ExcelProperty(value = "项目", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private Long project;
private String projectName;
/**
* 审批金额默认0.00
*/
@ExcelProperty(value = "审批金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal approveAmount;
/**
* 计量结束(带*,必填)
*/
@ExcelProperty(value = "计量结束", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private LocalDate measureEnd;
/**
* 结算单位(带查询,关联单位表)
*/
@ExcelProperty(value = "结算单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联单位表")
private Long settlementUnit;
private String settlementUnitName;
/**
* 合同金额默认0.00
*/
@ExcelProperty(value = "合同金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal contractAmount;
/**
* 累计结算金额(不含本期)默认0.00
*/
@ExcelProperty(value = "累计结算金额(不含本期)", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal totalSettlementExcludeCurrent;
/**
* 累计结算金额(含本期)默认0.00
*/
@ExcelProperty(value = "累计结算金额(含本期)", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal totalSettlementIncludeCurrent;
/**
* 本次结算比例默认0.00%
*/
@ExcelProperty(value = "本次结算比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00%")
private BigDecimal currentSettlementRatio;
/**
* 已结算比例(不含本期)默认0.00%
*/
@ExcelProperty(value = "已结算比例(不含本期)", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00%")
private BigDecimal settledRatioExcludeCurrent;
/**
* 截止本期结算比例默认0.00%
*/
@ExcelProperty(value = "截止本期结算比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00%")
private BigDecimal settlementRatioUntilCurrent;
/**
* 备注(长文本)
*/
@ExcelProperty(value = "备注", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "长=文本")
private String remark;
/**
* 实时刷新复选框0=未勾选1=勾选)
*/
@ExcelProperty(value = "实时刷新", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "复=选框0=未勾选1=勾选")
private Long realTimeRefresh;
/**
* 合同含税金额默认0.00
*/
@ExcelProperty(value = "合同含税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal contractTaxInclAmount;
/**
* 合同不含税金额默认0.00
*/
@ExcelProperty(value = "合同不含税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal contractTaxExclAmount;
/**
* 累计结算金额默认0.00
*/
@ExcelProperty(value = "累计结算金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal totalSettledAmount;
/**
* 本期扣款金额默认0.00
*/
@ExcelProperty(value = "本期扣款金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal currentDeductionAmount;
/**
* 本期奖励金额默认0.00
*/
@ExcelProperty(value = "本期奖励金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默=认0.00")
private BigDecimal currentRewardAmount;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
}

View File

@ -0,0 +1,118 @@
package org.dromara.xzd.settlement.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.settlement.domain.XzdJsCgJungonEdit;
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_js_cg_jungon_edit
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdJsCgJungonEdit.class)
public class XzdJsCgJungonEditVo 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 title;
/**
* 单据日期(带*,必填)
*/
@ExcelProperty(value = "单据日期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private LocalDate docDate;
/**
* 决算单号(带*,必填)
*/
@ExcelProperty(value = "决算单号", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String finalAccountCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 合同编号
*/
@ExcelProperty(value = "合同编号")
private String contractCode;
/**
* 调整后决算金额(带*,必填)
*/
@ExcelProperty(value = "调整后决算金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private BigDecimal adjustedFinalAmount;
/**
* 工程项目(带*,必填)
*/
@ExcelProperty(value = "工程项目", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private Long projectId;
/**
* 默认财务组织
*/
@ExcelProperty(value = "默认财务组织")
private Long defaultFinanceOrg;
/**
* 调整说明
*/
@ExcelProperty(value = "调整说明")
private String adjustmentDescription;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 集采模式
*/
@ExcelProperty(value = "集采模式")
private String procurementMode;
}

View File

@ -0,0 +1,190 @@
package org.dromara.xzd.settlement.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.settlement.domain.XzdJsCgJungon;
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_js_cg_jungon
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdJsCgJungon.class)
public class XzdJsCgJungonVo 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 title;
/**
* 单据日期(带*,必填)
*/
@ExcelProperty(value = "单据日期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private LocalDate docDate;
/**
* 合同编号(带*,关联合同表)
*/
@ExcelProperty(value = "合同编号", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,关联合同表")
private Long contractCode;
/**
* 合同名称(关联合同后显示)
*/
@ExcelProperty(value = "合同名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "关=联合同后显示")
private String contractName;
/**
* 决算金额
*/
@ExcelProperty(value = "决算金额")
private BigDecimal finalAmount;
/**
* 本期决算总额
*/
@ExcelProperty(value = "本期决算总额")
private BigDecimal currentPeriodTotal;
/**
* 本期扣款金额
*/
@ExcelProperty(value = "本期扣款金额")
private BigDecimal currentDeduction;
/**
* 本期奖励金额
*/
@ExcelProperty(value = "本期奖励金额")
private BigDecimal currentReward;
/**
* 审定日期
*/
@ExcelProperty(value = "审定日期")
private LocalDate approveDate;
/**
* 工程项目(带*,关联项目表)
*/
@ExcelProperty(value = "工程项目", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,关联项目表")
private Long projectId;
private String projectName;
/**
* 统计周期下拉选择如“2025年10月”
*/
@ExcelProperty(value = "统计周期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "下=拉选择如“2025年10月”")
private String statCycle;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyA;
private String partyAName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long partyB;
private String partyBName;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 集采模式
*/
@ExcelProperty(value = "集采模式")
private Long procurementMode;
/**
* 业主单位(带查询,关联单位表)
*/
@ExcelProperty(value = "业主单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联单位表")
private Long ownerUnit;
private String ownerUnitName;
/**
* 监理单位(带查询,关联单位表)
*/
@ExcelProperty(value = "监理单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联单位表")
private Long supervisionUnit;
private String supervisionUnitName;
/**
* 施工单位(带查询,关联单位表)
*/
@ExcelProperty(value = "施工单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联单位表")
private Long constructionUnit;
private String constructionUnitName;
/**
* 审核单位(带查询,关联单位表)
*/
@ExcelProperty(value = "审核单位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=查询,关联单位表")
private Long auditUnit;
private String auditUnitName;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
}

View File

@ -0,0 +1,126 @@
package org.dromara.xzd.settlement.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
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_js_deduction_items
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdJsDeductionItems.class)
public class XzdJsDeductionItemsVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 明细记录主键(自增)
*/
@ExcelProperty(value = "明细记录主键", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "自=增")
private Long id;
/**
* 表名
*/
private String tableName;
/**
* 关联结算主表的ID外键指向结算单据表
*/
@ExcelProperty(value = "关联结算主表的ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "外=键,指向结算单据表")
private Long mainDocId;
/**
* 明细类型1=扣款2=奖励
*/
@ExcelProperty(value = "明细类型1=扣款2=奖励")
private Long detailType;
/**
* 款项类别(带*,必填)
*/
@ExcelProperty(value = "款项类别", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String itemCategory;
/**
* 本期金额(扣款/奖励金额)
*/
@ExcelProperty(value = "本期金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "扣=款/奖励金额")
private BigDecimal currentPeriodAmount;
/**
* 本期不含税金额
*/
private BigDecimal currentTaxExclAmount;
/**
* 税率
*/
private BigDecimal taxRate;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 累计金额(累计扣款/累计奖励)
*/
@ExcelProperty(value = "累计金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "累=计扣款/累计奖励")
private BigDecimal totalAmount;
/**
* 申请扣除仅“扣款”明细必填1=是0=否)
*/
@ExcelProperty(value = "申请扣除", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "仅=“扣款”明细必填1=是0=否")
private Long applyDeduction;
/**
* 款项属性(带*,必填)
*/
@ExcelProperty(value = "款项属性", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String itemProperty;
/**
* WBS编码项目工作分解结构编码
*/
@ExcelProperty(value = "WBS编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "项=目工作分解结构编码")
private String wbs;
/**
* CBS编码项目成本分解结构编码
*/
@ExcelProperty(value = "CBS编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "项=目成本分解结构编码")
private String cbs;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,196 @@
package org.dromara.xzd.settlement.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
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_js_zhfw_jindu
*
* @author Lion Li
* @date 2025-10-14
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdJsZhfwJindu.class)
public class XzdJsZhfwJinduVo 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 title;
/**
* 单据日期(带*,必填)
*/
@ExcelProperty(value = "单据日期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private LocalDate docDate;
/**
* 合同编码
*/
@ExcelProperty(value = "合同编码")
private Long contractCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 统计周期(带*,必填)
*/
@ExcelProperty(value = "统计周期", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String statCycle;
/**
* 计量开始
*/
@ExcelProperty(value = "计量开始")
private LocalDate measureStart;
/**
* 审批金额
*/
@ExcelProperty(value = "审批金额")
private BigDecimal approveAmount;
/**
* 项目
*/
@ExcelProperty(value = "项目")
private Long project;
/**
* 结算单位
*/
@ExcelProperty(value = "结算单位")
private Long settlementUnit;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额")
private BigDecimal contractAmount;
/**
* 累计结算金额(不含本期)
*/
@ExcelProperty(value = "累计结算金额(不含本期)")
private BigDecimal totalSettlementExclCurrent;
/**
* 累计结算金额(含本期)
*/
@ExcelProperty(value = "累计结算金额(含本期)")
private BigDecimal totalSettlementInclCurrent;
/**
* 本次结算比例
*/
@ExcelProperty(value = "本次结算比例")
private BigDecimal currentSettlementRatio;
/**
* 已结算比例(不含本期)
*/
@ExcelProperty(value = "已结算比例(不含本期)")
private BigDecimal settledRatioExclCurrent;
/**
* 截止本期结算比例
*/
@ExcelProperty(value = "截止本期结算比例")
private BigDecimal settlementRatioUntilCurrent;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 实时刷新0=未勾选1=勾选)
*/
@ExcelProperty(value = "实时刷新", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==未勾选1=勾选")
private Long realTimeRefresh;
/**
* 累计结算金额(统计及控制信息)
*/
@ExcelProperty(value = "累计结算金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "统=计及控制信息")
private BigDecimal totalSettledAmount;
/**
* 本期扣款金额
*/
@ExcelProperty(value = "本期扣款金额")
private BigDecimal currentDeductionAmount;
/**
* 本期奖励金额
*/
@ExcelProperty(value = "本期奖励金额")
private BigDecimal currentRewardAmount;
/**
* 合同含税金额
*/
@ExcelProperty(value = "合同含税金额")
private BigDecimal contractTaxInclAmount;
/**
* 合同不含税金额
*/
@ExcelProperty(value = "合同不含税金额")
private BigDecimal contractTaxExclAmount;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.settlement.mapper;
import org.dromara.xzd.settlement.domain.XzdJsCgJindu;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJinduVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 采购合同进度结算Mapper接口
*
* @author Lion Li
* @date 2025-10-14
*/
public interface XzdJsCgJinduMapper extends BaseMapperPlus<XzdJsCgJindu, XzdJsCgJinduVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.settlement.mapper;
import org.dromara.xzd.settlement.domain.XzdJsCgJungonEdit;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonEditVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 采购合同竣工结算调整Mapper接口
*
* @author Lion Li
* @date 2025-10-14
*/
public interface XzdJsCgJungonEditMapper extends BaseMapperPlus<XzdJsCgJungonEdit, XzdJsCgJungonEditVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.settlement.mapper;
import org.dromara.xzd.settlement.domain.XzdJsCgJungon;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 采购合同竣工结算Mapper接口
*
* @author Lion Li
* @date 2025-10-14
*/
public interface XzdJsCgJungonMapper extends BaseMapperPlus<XzdJsCgJungon, XzdJsCgJungonVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.settlement.mapper;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 结算-扣款与奖励项Mapper接口
*
* @author Lion Li
* @date 2025-10-14
*/
public interface XzdJsDeductionItemsMapper extends BaseMapperPlus<XzdJsDeductionItems, XzdJsDeductionItemsVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.settlement.mapper;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
import org.dromara.xzd.settlement.domain.vo.XzdJsZhfwJinduVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 综合服务合同进度结算Mapper接口
*
* @author Lion Li
* @date 2025-10-14
*/
public interface XzdJsZhfwJinduMapper extends BaseMapperPlus<XzdJsZhfwJindu, XzdJsZhfwJinduVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.settlement.service;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJinduVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJinduBo;
import org.dromara.xzd.settlement.domain.XzdJsCgJindu;
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-14
*/
public interface IXzdJsCgJinduService extends IService<XzdJsCgJindu>{
/**
* 查询采购合同进度结算
*
* @param id 主键
* @return 采购合同进度结算
*/
XzdJsCgJinduVo queryById(Long id);
/**
* 分页查询采购合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 采购合同进度结算分页列表
*/
TableDataInfo<XzdJsCgJinduVo> queryPageList(XzdJsCgJinduBo bo, PageQuery pageQuery);
/**
* 查询符合条件的采购合同进度结算列表
*
* @param bo 查询条件
* @return 采购合同进度结算列表
*/
List<XzdJsCgJinduVo> queryList(XzdJsCgJinduBo bo);
/**
* 新增采购合同进度结算
*
* @param bo 采购合同进度结算
* @return 是否新增成功
*/
Boolean insertByBo(XzdJsCgJinduBo bo);
/**
* 修改采购合同进度结算
*
* @param bo 采购合同进度结算
* @return 是否修改成功
*/
Boolean updateByBo(XzdJsCgJinduBo bo);
/**
* 校验并批量删除采购合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.settlement.service;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonEditVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJungonEditBo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungonEdit;
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-14
*/
public interface IXzdJsCgJungonEditService extends IService<XzdJsCgJungonEdit>{
/**
* 查询采购合同竣工结算调整
*
* @param id 主键
* @return 采购合同竣工结算调整
*/
XzdJsCgJungonEditVo queryById(Long id);
/**
* 分页查询采购合同竣工结算调整列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 采购合同竣工结算调整分页列表
*/
TableDataInfo<XzdJsCgJungonEditVo> queryPageList(XzdJsCgJungonEditBo bo, PageQuery pageQuery);
/**
* 查询符合条件的采购合同竣工结算调整列表
*
* @param bo 查询条件
* @return 采购合同竣工结算调整列表
*/
List<XzdJsCgJungonEditVo> queryList(XzdJsCgJungonEditBo bo);
/**
* 新增采购合同竣工结算调整
*
* @param bo 采购合同竣工结算调整
* @return 是否新增成功
*/
Boolean insertByBo(XzdJsCgJungonEditBo bo);
/**
* 修改采购合同竣工结算调整
*
* @param bo 采购合同竣工结算调整
* @return 是否修改成功
*/
Boolean updateByBo(XzdJsCgJungonEditBo bo);
/**
* 校验并批量删除采购合同竣工结算调整信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.settlement.service;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJungonBo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungon;
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-14
*/
public interface IXzdJsCgJungonService extends IService<XzdJsCgJungon>{
/**
* 查询采购合同竣工结算
*
* @param id 主键
* @return 采购合同竣工结算
*/
XzdJsCgJungonVo queryById(Long id);
/**
* 分页查询采购合同竣工结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 采购合同竣工结算分页列表
*/
TableDataInfo<XzdJsCgJungonVo> queryPageList(XzdJsCgJungonBo bo, PageQuery pageQuery);
/**
* 查询符合条件的采购合同竣工结算列表
*
* @param bo 查询条件
* @return 采购合同竣工结算列表
*/
List<XzdJsCgJungonVo> queryList(XzdJsCgJungonBo bo);
/**
* 新增采购合同竣工结算
*
* @param bo 采购合同竣工结算
* @return 是否新增成功
*/
Boolean insertByBo(XzdJsCgJungonBo bo);
/**
* 修改采购合同竣工结算
*
* @param bo 采购合同竣工结算
* @return 是否修改成功
*/
Boolean updateByBo(XzdJsCgJungonBo bo);
/**
* 校验并批量删除采购合同竣工结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.settlement.service;
import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
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-14
*/
public interface IXzdJsDeductionItemsService extends IService<XzdJsDeductionItems>{
/**
* 查询结算-扣款与奖励项
*
* @param id 主键
* @return 结算-扣款与奖励项
*/
XzdJsDeductionItemsVo queryById(Long id);
/**
* 分页查询结算-扣款与奖励项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 结算-扣款与奖励项分页列表
*/
TableDataInfo<XzdJsDeductionItemsVo> queryPageList(XzdJsDeductionItemsBo bo, PageQuery pageQuery);
/**
* 查询符合条件的结算-扣款与奖励项列表
*
* @param bo 查询条件
* @return 结算-扣款与奖励项列表
*/
List<XzdJsDeductionItemsVo> queryList(XzdJsDeductionItemsBo bo);
/**
* 新增结算-扣款与奖励项
*
* @param bo 结算-扣款与奖励项
* @return 是否新增成功
*/
Boolean insertByBo(XzdJsDeductionItemsBo bo);
/**
* 修改结算-扣款与奖励项
*
* @param bo 结算-扣款与奖励项
* @return 是否修改成功
*/
Boolean updateByBo(XzdJsDeductionItemsBo bo);
/**
* 校验并批量删除结算-扣款与奖励项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.settlement.service;
import org.dromara.xzd.settlement.domain.vo.XzdJsZhfwJinduVo;
import org.dromara.xzd.settlement.domain.bo.XzdJsZhfwJinduBo;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
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-14
*/
public interface IXzdJsZhfwJinduService extends IService<XzdJsZhfwJindu>{
/**
* 查询综合服务合同进度结算
*
* @param id 主键
* @return 综合服务合同进度结算
*/
XzdJsZhfwJinduVo queryById(Long id);
/**
* 分页查询综合服务合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同进度结算分页列表
*/
TableDataInfo<XzdJsZhfwJinduVo> queryPageList(XzdJsZhfwJinduBo bo, PageQuery pageQuery);
/**
* 查询符合条件的综合服务合同进度结算列表
*
* @param bo 查询条件
* @return 综合服务合同进度结算列表
*/
List<XzdJsZhfwJinduVo> queryList(XzdJsZhfwJinduBo bo);
/**
* 新增综合服务合同进度结算
*
* @param bo 综合服务合同进度结算
* @return 是否新增成功
*/
Boolean insertByBo(XzdJsZhfwJinduBo bo);
/**
* 修改综合服务合同进度结算
*
* @param bo 综合服务合同进度结算
* @return 是否修改成功
*/
Boolean updateByBo(XzdJsZhfwJinduBo bo);
/**
* 校验并批量删除综合服务合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,218 @@
package org.dromara.xzd.settlement.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.xzd.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
import org.dromara.xzd.domain.dto.QuerCorrespondentDto;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
import org.dromara.xzd.service.impl.XzdSupplierInfoServiceImpl;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.domain.bo.XzdJsDeductionItemsBo;
import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.settlement.domain.bo.XzdJsCgJinduBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJinduVo;
import org.dromara.xzd.settlement.domain.XzdJsCgJindu;
import org.dromara.xzd.settlement.mapper.XzdJsCgJinduMapper;
import org.dromara.xzd.settlement.service.IXzdJsCgJinduService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 采购合同进度结算Service业务层处理
*
* @author Lion Li
* @date 2025-10-14
*/
@RequiredArgsConstructor
@Service
public class XzdJsCgJinduServiceImpl extends ServiceImpl<XzdJsCgJinduMapper, XzdJsCgJindu> implements IXzdJsCgJinduService {
private final XzdJsCgJinduMapper baseMapper;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private IXzdJsDeductionItemsService deductionItemsService;
/**
* 查询采购合同进度结算
*
* @param id 主键
* @return 采购合同进度结算
*/
@Override
public XzdJsCgJinduVo queryById(Long id){
XzdJsCgJinduVo xzdJsCgJinduVo = baseMapper.selectVoById(id);
getName(xzdJsCgJinduVo);
return xzdJsCgJinduVo;
}
/**
* 分页查询采购合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 采购合同进度结算分页列表
*/
@Override
public TableDataInfo<XzdJsCgJinduVo> queryPageList(XzdJsCgJinduBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsCgJindu> lqw = buildQueryWrapper(bo);
Page<XzdJsCgJinduVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的采购合同进度结算列表
*
* @param bo 查询条件
* @return 采购合同进度结算列表
*/
@Override
public List<XzdJsCgJinduVo> queryList(XzdJsCgJinduBo bo) {
LambdaQueryWrapper<XzdJsCgJindu> lqw = buildQueryWrapper(bo);
List<XzdJsCgJinduVo> xzdJsCgJinduVos = baseMapper.selectVoList(lqw);
xzdJsCgJinduVos.forEach(this::getName);
return xzdJsCgJinduVos;
}
private LambdaQueryWrapper<XzdJsCgJindu> buildQueryWrapper(XzdJsCgJinduBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdJsCgJindu> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdJsCgJindu::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdJsCgJindu::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdJsCgJindu::getTitle, bo.getTitle());
lqw.eq(bo.getDocDate() != null, XzdJsCgJindu::getDocDate, bo.getDocDate());
lqw.eq(bo.getContractCode() != null, XzdJsCgJindu::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdJsCgJindu::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getStatCycle()), XzdJsCgJindu::getStatCycle, bo.getStatCycle());
lqw.eq(bo.getMeasureStart() != null, XzdJsCgJindu::getMeasureStart, bo.getMeasureStart());
lqw.eq(bo.getProject() != null, XzdJsCgJindu::getProject, bo.getProject());
lqw.eq(bo.getApproveAmount() != null, XzdJsCgJindu::getApproveAmount, bo.getApproveAmount());
lqw.eq(bo.getMeasureEnd() != null, XzdJsCgJindu::getMeasureEnd, bo.getMeasureEnd());
lqw.eq(bo.getSettlementUnit() != null, XzdJsCgJindu::getSettlementUnit, bo.getSettlementUnit());
lqw.eq(bo.getContractAmount() != null, XzdJsCgJindu::getContractAmount, bo.getContractAmount());
lqw.eq(bo.getTotalSettlementExcludeCurrent() != null, XzdJsCgJindu::getTotalSettlementExcludeCurrent, bo.getTotalSettlementExcludeCurrent());
lqw.eq(bo.getTotalSettlementIncludeCurrent() != null, XzdJsCgJindu::getTotalSettlementIncludeCurrent, bo.getTotalSettlementIncludeCurrent());
lqw.eq(bo.getCurrentSettlementRatio() != null, XzdJsCgJindu::getCurrentSettlementRatio, bo.getCurrentSettlementRatio());
lqw.eq(bo.getSettledRatioExcludeCurrent() != null, XzdJsCgJindu::getSettledRatioExcludeCurrent, bo.getSettledRatioExcludeCurrent());
lqw.eq(bo.getSettlementRatioUntilCurrent() != null, XzdJsCgJindu::getSettlementRatioUntilCurrent, bo.getSettlementRatioUntilCurrent());
lqw.eq(bo.getRealTimeRefresh() != null, XzdJsCgJindu::getRealTimeRefresh, bo.getRealTimeRefresh());
lqw.eq(bo.getContractTaxInclAmount() != null, XzdJsCgJindu::getContractTaxInclAmount, bo.getContractTaxInclAmount());
lqw.eq(bo.getContractTaxExclAmount() != null, XzdJsCgJindu::getContractTaxExclAmount, bo.getContractTaxExclAmount());
lqw.eq(bo.getTotalSettledAmount() != null, XzdJsCgJindu::getTotalSettledAmount, bo.getTotalSettledAmount());
lqw.eq(bo.getCurrentDeductionAmount() != null, XzdJsCgJindu::getCurrentDeductionAmount, bo.getCurrentDeductionAmount());
lqw.eq(bo.getCurrentRewardAmount() != null, XzdJsCgJindu::getCurrentRewardAmount, bo.getCurrentRewardAmount());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdJsCgJindu::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdJsCgJindu::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增采购合同进度结算
*
* @param bo 采购合同进度结算
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdJsCgJinduBo bo) {
XzdJsCgJindu add = MapstructUtils.convert(bo, XzdJsCgJindu.class);
validEntityBeforeSave(add);
String code = BatchNumberGenerator.generateBatchNumber("ZHFWHT-");
add.setDocCode(code);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.JS_CG_JINDU.getClassName();
if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) {
throw new ServiceException("扣款与奖励项不能为空");
}
//合同条款-扣款与奖励项
for (XzdJsDeductionItems kkyjlx : bo.getKkyjlx()) {
kkyjlx.setTableName(tableName);
kkyjlx.setMainDocId(add.getId());
}
deductionItemsService.saveBatch(bo.getKkyjlx());
return flag;
}
/**
* 修改采购合同进度结算
*
* @param bo 采购合同进度结算
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdJsCgJinduBo bo) {
XzdJsCgJindu update = MapstructUtils.convert(bo, XzdJsCgJindu.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdJsCgJindu entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除采购合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdJsCgJinduVo item) {
//项目名称
if (item.getProject() != null){
String projectName = xzdProjectService.queryNameById(item.getProject());
if (projectName != null){
item.setProjectName(projectName);
}
}
//结算单位(客户信息列表)
R<QuerCorrespondentDto> dtoR = iXzdCorrespondentList.getCustomerByid(item.getSettlementUnit());
if (dtoR!=null){
if (dtoR.getData().getXzdCustomerinformation() != null){
item.setSettlementUnitName(dtoR.getData().getXzdCustomerinformation().getUnitName());
}
}
}
}

View File

@ -0,0 +1,141 @@
package org.dromara.xzd.settlement.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.settlement.domain.bo.XzdJsCgJungonEditBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonEditVo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungonEdit;
import org.dromara.xzd.settlement.mapper.XzdJsCgJungonEditMapper;
import org.dromara.xzd.settlement.service.IXzdJsCgJungonEditService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 采购合同竣工结算调整Service业务层处理
*
* @author Lion Li
* @date 2025-10-14
*/
@RequiredArgsConstructor
@Service
public class XzdJsCgJungonEditServiceImpl extends ServiceImpl<XzdJsCgJungonEditMapper, XzdJsCgJungonEdit> implements IXzdJsCgJungonEditService {
private final XzdJsCgJungonEditMapper baseMapper;
/**
* 查询采购合同竣工结算调整
*
* @param id 主键
* @return 采购合同竣工结算调整
*/
@Override
public XzdJsCgJungonEditVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询采购合同竣工结算调整列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 采购合同竣工结算调整分页列表
*/
@Override
public TableDataInfo<XzdJsCgJungonEditVo> queryPageList(XzdJsCgJungonEditBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsCgJungonEdit> lqw = buildQueryWrapper(bo);
Page<XzdJsCgJungonEditVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的采购合同竣工结算调整列表
*
* @param bo 查询条件
* @return 采购合同竣工结算调整列表
*/
@Override
public List<XzdJsCgJungonEditVo> queryList(XzdJsCgJungonEditBo bo) {
LambdaQueryWrapper<XzdJsCgJungonEdit> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdJsCgJungonEdit> buildQueryWrapper(XzdJsCgJungonEditBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdJsCgJungonEdit> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdJsCgJungonEdit::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdJsCgJungonEdit::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdJsCgJungonEdit::getTitle, bo.getTitle());
lqw.eq(bo.getDocDate() != null, XzdJsCgJungonEdit::getDocDate, bo.getDocDate());
lqw.eq(StringUtils.isNotBlank(bo.getFinalAccountCode()), XzdJsCgJungonEdit::getFinalAccountCode, bo.getFinalAccountCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdJsCgJungonEdit::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdJsCgJungonEdit::getContractCode, bo.getContractCode());
lqw.eq(bo.getAdjustedFinalAmount() != null, XzdJsCgJungonEdit::getAdjustedFinalAmount, bo.getAdjustedFinalAmount());
lqw.eq(bo.getProjectId() != null, XzdJsCgJungonEdit::getProjectId, bo.getProjectId());
lqw.eq(bo.getDefaultFinanceOrg() != null, XzdJsCgJungonEdit::getDefaultFinanceOrg, bo.getDefaultFinanceOrg());
lqw.eq(StringUtils.isNotBlank(bo.getAdjustmentDescription()), XzdJsCgJungonEdit::getAdjustmentDescription, bo.getAdjustmentDescription());
lqw.eq(StringUtils.isNotBlank(bo.getProcurementMode()), XzdJsCgJungonEdit::getProcurementMode, bo.getProcurementMode());
return lqw;
}
/**
* 新增采购合同竣工结算调整
*
* @param bo 采购合同竣工结算调整
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdJsCgJungonEditBo bo) {
XzdJsCgJungonEdit add = MapstructUtils.convert(bo, XzdJsCgJungonEdit.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改采购合同竣工结算调整
*
* @param bo 采购合同竣工结算调整
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdJsCgJungonEditBo bo) {
XzdJsCgJungonEdit update = MapstructUtils.convert(bo, XzdJsCgJungonEdit.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdJsCgJungonEdit entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除采购合同竣工结算调整信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,151 @@
package org.dromara.xzd.settlement.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.settlement.domain.bo.XzdJsCgJungonBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsCgJungonVo;
import org.dromara.xzd.settlement.domain.XzdJsCgJungon;
import org.dromara.xzd.settlement.mapper.XzdJsCgJungonMapper;
import org.dromara.xzd.settlement.service.IXzdJsCgJungonService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 采购合同竣工结算Service业务层处理
*
* @author Lion Li
* @date 2025-10-14
*/
@RequiredArgsConstructor
@Service
public class XzdJsCgJungonServiceImpl extends ServiceImpl<XzdJsCgJungonMapper, XzdJsCgJungon> implements IXzdJsCgJungonService {
private final XzdJsCgJungonMapper baseMapper;
/**
* 查询采购合同竣工结算
*
* @param id 主键
* @return 采购合同竣工结算
*/
@Override
public XzdJsCgJungonVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询采购合同竣工结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 采购合同竣工结算分页列表
*/
@Override
public TableDataInfo<XzdJsCgJungonVo> queryPageList(XzdJsCgJungonBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsCgJungon> lqw = buildQueryWrapper(bo);
Page<XzdJsCgJungonVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的采购合同竣工结算列表
*
* @param bo 查询条件
* @return 采购合同竣工结算列表
*/
@Override
public List<XzdJsCgJungonVo> queryList(XzdJsCgJungonBo bo) {
LambdaQueryWrapper<XzdJsCgJungon> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdJsCgJungon> buildQueryWrapper(XzdJsCgJungonBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdJsCgJungon> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdJsCgJungon::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdJsCgJungon::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdJsCgJungon::getTitle, bo.getTitle());
lqw.eq(bo.getDocDate() != null, XzdJsCgJungon::getDocDate, bo.getDocDate());
lqw.eq(bo.getContractCode() != null, XzdJsCgJungon::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdJsCgJungon::getContractName, bo.getContractName());
lqw.eq(bo.getFinalAmount() != null, XzdJsCgJungon::getFinalAmount, bo.getFinalAmount());
lqw.eq(bo.getCurrentPeriodTotal() != null, XzdJsCgJungon::getCurrentPeriodTotal, bo.getCurrentPeriodTotal());
lqw.eq(bo.getCurrentDeduction() != null, XzdJsCgJungon::getCurrentDeduction, bo.getCurrentDeduction());
lqw.eq(bo.getCurrentReward() != null, XzdJsCgJungon::getCurrentReward, bo.getCurrentReward());
lqw.eq(bo.getApproveDate() != null, XzdJsCgJungon::getApproveDate, bo.getApproveDate());
lqw.eq(bo.getProjectId() != null, XzdJsCgJungon::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getStatCycle()), XzdJsCgJungon::getStatCycle, bo.getStatCycle());
lqw.eq(bo.getPartyA() != null, XzdJsCgJungon::getPartyA, bo.getPartyA());
lqw.eq(bo.getPartyB() != null, XzdJsCgJungon::getPartyB, bo.getPartyB());
lqw.eq(bo.getProcurementMode() != null, XzdJsCgJungon::getProcurementMode, bo.getProcurementMode());
lqw.eq(bo.getOwnerUnit() != null, XzdJsCgJungon::getOwnerUnit, bo.getOwnerUnit());
lqw.eq(bo.getSupervisionUnit() != null, XzdJsCgJungon::getSupervisionUnit, bo.getSupervisionUnit());
lqw.eq(bo.getConstructionUnit() != null, XzdJsCgJungon::getConstructionUnit, bo.getConstructionUnit());
lqw.eq(bo.getAuditUnit() != null, XzdJsCgJungon::getAuditUnit, bo.getAuditUnit());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdJsCgJungon::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdJsCgJungon::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增采购合同竣工结算
*
* @param bo 采购合同竣工结算
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdJsCgJungonBo bo) {
XzdJsCgJungon add = MapstructUtils.convert(bo, XzdJsCgJungon.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改采购合同竣工结算
*
* @param bo 采购合同竣工结算
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdJsCgJungonBo bo) {
XzdJsCgJungon update = MapstructUtils.convert(bo, XzdJsCgJungon.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdJsCgJungon entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除采购合同竣工结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,139 @@
package org.dromara.xzd.settlement.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.settlement.domain.bo.XzdJsDeductionItemsBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsDeductionItemsVo;
import org.dromara.xzd.settlement.domain.XzdJsDeductionItems;
import org.dromara.xzd.settlement.mapper.XzdJsDeductionItemsMapper;
import org.dromara.xzd.settlement.service.IXzdJsDeductionItemsService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 结算-扣款与奖励项Service业务层处理
*
* @author Lion Li
* @date 2025-10-14
*/
@RequiredArgsConstructor
@Service
public class XzdJsDeductionItemsServiceImpl extends ServiceImpl<XzdJsDeductionItemsMapper, XzdJsDeductionItems> implements IXzdJsDeductionItemsService {
private final XzdJsDeductionItemsMapper baseMapper;
/**
* 查询结算-扣款与奖励项
*
* @param id 主键
* @return 结算-扣款与奖励项
*/
@Override
public XzdJsDeductionItemsVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询结算-扣款与奖励项列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 结算-扣款与奖励项分页列表
*/
@Override
public TableDataInfo<XzdJsDeductionItemsVo> queryPageList(XzdJsDeductionItemsBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsDeductionItems> lqw = buildQueryWrapper(bo);
Page<XzdJsDeductionItemsVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的结算-扣款与奖励项列表
*
* @param bo 查询条件
* @return 结算-扣款与奖励项列表
*/
@Override
public List<XzdJsDeductionItemsVo> queryList(XzdJsDeductionItemsBo bo) {
LambdaQueryWrapper<XzdJsDeductionItems> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdJsDeductionItems> buildQueryWrapper(XzdJsDeductionItemsBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdJsDeductionItems> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdJsDeductionItems::getId);
lqw.eq(bo.getMainDocId() != null, XzdJsDeductionItems::getMainDocId, bo.getMainDocId());
lqw.eq(bo.getDetailType() != null, XzdJsDeductionItems::getDetailType, bo.getDetailType());
lqw.eq(StringUtils.isNotBlank(bo.getItemCategory()), XzdJsDeductionItems::getItemCategory, bo.getItemCategory());
lqw.eq(bo.getCurrentPeriodAmount() != null, XzdJsDeductionItems::getCurrentPeriodAmount, bo.getCurrentPeriodAmount());
lqw.eq(bo.getTotalAmount() != null, XzdJsDeductionItems::getTotalAmount, bo.getTotalAmount());
lqw.eq(bo.getApplyDeduction() != null, XzdJsDeductionItems::getApplyDeduction, bo.getApplyDeduction());
lqw.eq(StringUtils.isNotBlank(bo.getItemProperty()), XzdJsDeductionItems::getItemProperty, bo.getItemProperty());
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdJsDeductionItems::getWbs, bo.getWbs());
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), XzdJsDeductionItems::getCbs, bo.getCbs());
return lqw;
}
/**
* 新增结算-扣款与奖励项
*
* @param bo 结算-扣款与奖励项
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdJsDeductionItemsBo bo) {
XzdJsDeductionItems add = MapstructUtils.convert(bo, XzdJsDeductionItems.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改结算-扣款与奖励项
*
* @param bo 结算-扣款与奖励项
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdJsDeductionItemsBo bo) {
XzdJsDeductionItems update = MapstructUtils.convert(bo, XzdJsDeductionItems.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdJsDeductionItems entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除结算-扣款与奖励项信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,154 @@
package org.dromara.xzd.settlement.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.settlement.domain.bo.XzdJsZhfwJinduBo;
import org.dromara.xzd.settlement.domain.vo.XzdJsZhfwJinduVo;
import org.dromara.xzd.settlement.domain.XzdJsZhfwJindu;
import org.dromara.xzd.settlement.mapper.XzdJsZhfwJinduMapper;
import org.dromara.xzd.settlement.service.IXzdJsZhfwJinduService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 综合服务合同进度结算Service业务层处理
*
* @author Lion Li
* @date 2025-10-14
*/
@RequiredArgsConstructor
@Service
public class XzdJsZhfwJinduServiceImpl extends ServiceImpl<XzdJsZhfwJinduMapper, XzdJsZhfwJindu> implements IXzdJsZhfwJinduService {
private final XzdJsZhfwJinduMapper baseMapper;
/**
* 查询综合服务合同进度结算
*
* @param id 主键
* @return 综合服务合同进度结算
*/
@Override
public XzdJsZhfwJinduVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询综合服务合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 综合服务合同进度结算分页列表
*/
@Override
public TableDataInfo<XzdJsZhfwJinduVo> queryPageList(XzdJsZhfwJinduBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdJsZhfwJindu> lqw = buildQueryWrapper(bo);
Page<XzdJsZhfwJinduVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的综合服务合同进度结算列表
*
* @param bo 查询条件
* @return 综合服务合同进度结算列表
*/
@Override
public List<XzdJsZhfwJinduVo> queryList(XzdJsZhfwJinduBo bo) {
LambdaQueryWrapper<XzdJsZhfwJindu> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdJsZhfwJindu> buildQueryWrapper(XzdJsZhfwJinduBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdJsZhfwJindu> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdJsZhfwJindu::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdJsZhfwJindu::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdJsZhfwJindu::getTitle, bo.getTitle());
lqw.eq(bo.getDocDate() != null, XzdJsZhfwJindu::getDocDate, bo.getDocDate());
lqw.eq(bo.getContractCode() != null, XzdJsZhfwJindu::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdJsZhfwJindu::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getStatCycle()), XzdJsZhfwJindu::getStatCycle, bo.getStatCycle());
lqw.eq(bo.getMeasureStart() != null, XzdJsZhfwJindu::getMeasureStart, bo.getMeasureStart());
lqw.eq(bo.getApproveAmount() != null, XzdJsZhfwJindu::getApproveAmount, bo.getApproveAmount());
lqw.eq(bo.getProject() != null, XzdJsZhfwJindu::getProject, bo.getProject());
lqw.eq(bo.getSettlementUnit() != null, XzdJsZhfwJindu::getSettlementUnit, bo.getSettlementUnit());
lqw.eq(bo.getContractAmount() != null, XzdJsZhfwJindu::getContractAmount, bo.getContractAmount());
lqw.eq(bo.getTotalSettlementExclCurrent() != null, XzdJsZhfwJindu::getTotalSettlementExclCurrent, bo.getTotalSettlementExclCurrent());
lqw.eq(bo.getTotalSettlementInclCurrent() != null, XzdJsZhfwJindu::getTotalSettlementInclCurrent, bo.getTotalSettlementInclCurrent());
lqw.eq(bo.getCurrentSettlementRatio() != null, XzdJsZhfwJindu::getCurrentSettlementRatio, bo.getCurrentSettlementRatio());
lqw.eq(bo.getSettledRatioExclCurrent() != null, XzdJsZhfwJindu::getSettledRatioExclCurrent, bo.getSettledRatioExclCurrent());
lqw.eq(bo.getSettlementRatioUntilCurrent() != null, XzdJsZhfwJindu::getSettlementRatioUntilCurrent, bo.getSettlementRatioUntilCurrent());
lqw.eq(bo.getRealTimeRefresh() != null, XzdJsZhfwJindu::getRealTimeRefresh, bo.getRealTimeRefresh());
lqw.eq(bo.getTotalSettledAmount() != null, XzdJsZhfwJindu::getTotalSettledAmount, bo.getTotalSettledAmount());
lqw.eq(bo.getCurrentDeductionAmount() != null, XzdJsZhfwJindu::getCurrentDeductionAmount, bo.getCurrentDeductionAmount());
lqw.eq(bo.getCurrentRewardAmount() != null, XzdJsZhfwJindu::getCurrentRewardAmount, bo.getCurrentRewardAmount());
lqw.eq(bo.getContractTaxInclAmount() != null, XzdJsZhfwJindu::getContractTaxInclAmount, bo.getContractTaxInclAmount());
lqw.eq(bo.getContractTaxExclAmount() != null, XzdJsZhfwJindu::getContractTaxExclAmount, bo.getContractTaxExclAmount());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdJsZhfwJindu::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdJsZhfwJindu::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增综合服务合同进度结算
*
* @param bo 综合服务合同进度结算
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdJsZhfwJinduBo bo) {
XzdJsZhfwJindu add = MapstructUtils.convert(bo, XzdJsZhfwJindu.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改综合服务合同进度结算
*
* @param bo 综合服务合同进度结算
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdJsZhfwJinduBo bo) {
XzdJsZhfwJindu update = MapstructUtils.convert(bo, XzdJsZhfwJindu.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdJsZhfwJindu entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除综合服务合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.comprehensive.mapper.XzdCsContractChangeMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.comprehensive.mapper.XzdCsContractInformationMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.comprehensive.mapper.XzdCsContractSuspendMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.settlement.mapper.XzdJsCgJinduMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.settlement.mapper.XzdJsCgJungonEditMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.settlement.mapper.XzdJsCgJungonMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.settlement.mapper.XzdJsDeductionItemsMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.xzd.settlement.mapper.XzdJsZhfwJinduMapper">
</mapper>