新中大修改人员银行绑定逻辑,修改承包合同、供应商等涉及到银行的地方,添加设计合同的信息、变更、终止的crud

This commit is contained in:
2025-11-19 22:23:06 +08:00
parent 8a928e852d
commit e17ab16821
54 changed files with 5070 additions and 35 deletions

View File

@ -68,7 +68,16 @@ public class XzdBxBxsq extends BaseEntity {
/**
* 开户银行
*/
private Long khyh;
// private Long khyh;
/**
* 开户银行
*/
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户银行账号

View File

@ -61,7 +61,17 @@ public class XzdBxBxsqBo extends BaseEntity {
/**
* 开户银行
*/
private Long khyh;
// private Long khyh;
/**
* 开户银行
*/
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户银行账号

View File

@ -102,13 +102,23 @@ public class XzdBxBxsqVo implements Serializable {
/**
* 开户银行
*/
private Long khyh;
// private Long khyh;
/**
* 开户银行名称
* 开户银行
*/
@Translation(type = TransConstant.XZD_SUPPLIER_OPEN_BANK_ID_TO_NAME, mapper = "khyh")
private String khyhmc;
private String openBank;
/**
* 支行名称
*/
private String branchName;
// /**
// * 开户银行名称
// */
// @Translation(type = TransConstant.XZD_SUPPLIER_OPEN_BANK_ID_TO_NAME, mapper = "khyh")
// private String khyhmc;
/**
* 开户银行账号

View File

@ -0,0 +1,153 @@
package org.dromara.xzd.comprehensive.controller;
import java.util.List;
import cn.dev33.satoken.annotation.SaMode;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractInformationService;
import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService;
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.service.IXzdBusinessSealService;
import org.springframework.context.annotation.Lazy;
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.XzdSjContractChangeVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractChangeBo;
import org.dromara.xzd.comprehensive.service.IXzdSjContractChangeService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 设计合同变更
*
* @author Lion Li
* @date 2025-11-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/comprehensive/sjContractChange")
public class XzdSjContractChangeController extends BaseController {
private final IXzdSjContractChangeService xzdSjContractChangeService;
private final IXzdBusinessSealService xzdBusinessSealService;
@Lazy
private final IXzdSjContractInfoService xzdSjContractInfoService;
/**
* 查询综合服务合同信息列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractChange:add","comprehensive:sjContractChange:edit","comprehensive:sjContractChange:list"},mode = SaMode.OR)
@GetMapping("/getList")
public TableDataInfo<XzdSjContractInfoVo> getList(XzdSjContractInfoBo bo, PageQuery pageQuery) {
return xzdSjContractInfoService.queryPageList(bo, pageQuery);
}
/**
* 查询印章帮助列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractChange:add","comprehensive:sjContractChange:edit","comprehensive:sjContractChange:list"},mode = SaMode.OR)
@GetMapping("/businessSealList")
public TableDataInfo<XzdBusinessSealVo> list(XzdBusinessSealBo bo, PageQuery pageQuery) {
return xzdBusinessSealService.queryPageList(bo, pageQuery);
}
/**
* 获取综合服务合同信息详细信息
*
* @param id 主键
*/
@SaCheckPermission(value = {"comprehensive:sjContractChange:add","comprehensive:sjContractChange:edit"},mode = SaMode.OR)
@GetMapping("/get/{id}")
public R<XzdSjContractInfoVo> getCsContractInformationInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractInfoService.queryById(id));
}
/**
* 查询设计合同变更列表
*/
@SaCheckPermission("comprehensive:sjContractChange:list")
@GetMapping("/list")
public TableDataInfo<XzdSjContractChangeVo> list(XzdSjContractChangeBo bo, PageQuery pageQuery) {
return xzdSjContractChangeService.queryPageList(bo, pageQuery);
}
/**
* 导出设计合同变更列表
*/
@SaCheckPermission("comprehensive:sjContractChange:export")
@Log(title = "设计合同变更", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdSjContractChangeBo bo, HttpServletResponse response) {
List<XzdSjContractChangeVo> list = xzdSjContractChangeService.queryList(bo);
ExcelUtil.exportExcel(list, "设计合同变更", XzdSjContractChangeVo.class, response);
}
/**
* 获取设计合同变更详细信息
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:sjContractChange:query")
@GetMapping("/{id}")
public R<XzdSjContractChangeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractChangeService.queryById(id));
}
/**
* 新增设计合同变更
*/
@SaCheckPermission("comprehensive:sjContractChange:add")
@Log(title = "设计合同变更", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdSjContractChangeBo bo) {
return toAjax(xzdSjContractChangeService.insertByBo(bo));
}
/**
* 修改设计合同变更
*/
@SaCheckPermission("comprehensive:sjContractChange:edit")
@Log(title = "设计合同变更", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdSjContractChangeBo bo) {
return toAjax(xzdSjContractChangeService.updateByBo(bo));
}
/**
* 删除设计合同变更
*
* @param ids 主键串
*/
@SaCheckPermission("comprehensive:sjContractChange:remove")
@Log(title = "设计合同变更", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdSjContractChangeService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,190 @@
package org.dromara.xzd.comprehensive.controller;
import java.util.List;
import cn.dev33.satoken.annotation.SaMode;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.xzd.comprehensive.domain.bo.*;
import org.dromara.xzd.comprehensive.domain.vo.*;
import org.dromara.xzd.comprehensive.service.*;
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.domain.vo.XzdProjectVo;
import org.dromara.xzd.service.IXzdBusinessSealService;
import org.dromara.xzd.service.IXzdProjectService;
import org.springframework.context.annotation.Lazy;
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.common.mybatis.core.page.TableDataInfo;
/**
* 设计合同信息
*
* @author Lion Li
* @date 2025-11-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/comprehensive/sjContractInfo")
public class XzdSjContractInfoController extends BaseController {
private final IXzdSjContractInfoService xzdSjContractInfoService;
private final IXzdBusinessSealService xzdBusinessSealService;
@Lazy
private final IXzdSjContractSuspendService xzdSjContractSuspendService;
@Lazy
private final IXzdSjContractChangeService xzdSjContractChangeService;
@Lazy
private final IXzdProjectService xzdProjectService;
/**
* 获取项目信息详细信息
*
* @param id 主键
*/
@SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR)
@GetMapping("/getProject/{id}")
public R<XzdProjectVo> getProjectInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdProjectService.queryById(id));
}
/**
* 查询综合服务合同变更列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR)
@GetMapping("/getChangList")
public TableDataInfo<XzdSjContractChangeVo> getChangList(XzdSjContractChangeBo bo, PageQuery pageQuery) {
return xzdSjContractChangeService.queryPageList(bo, pageQuery);
}
/**
* 获取综合服务合同变更详细信息
*
* @param id 主键
*/
@SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR)
@GetMapping("/getChang/{id}")
public R<XzdSjContractChangeVo> getChangInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractChangeService.queryById(id));
}
/**
* 查询综合服务合同终止列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR)
@GetMapping("/getSuspendList")
public TableDataInfo<XzdSjContractSuspendVo> getSuspendList(XzdSjContractSuspendBo bo, PageQuery pageQuery) {
return xzdSjContractSuspendService.queryPageList(bo, pageQuery);
}
/**
* 获取综合服务合同终止详细信息
*
* @param id 主键
*/
@SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR)
@GetMapping("/getSuspend/{id}")
public R<XzdSjContractSuspendVo> getSuspendInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractSuspendService.queryById(id));
}
/**
* 查询印章帮助列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR)
@GetMapping("/businessSealList")
public TableDataInfo<XzdBusinessSealVo> list(XzdBusinessSealBo bo, PageQuery pageQuery) {
return xzdBusinessSealService.queryPageList(bo, pageQuery);
}
/**
* 查询设计合同信息列表
*/
@SaCheckPermission("comprehensive:sjContractInfo:list")
@GetMapping("/list")
public TableDataInfo<XzdSjContractInfoVo> list(XzdSjContractInfoBo bo, PageQuery pageQuery) {
return xzdSjContractInfoService.queryPageList(bo, pageQuery);
}
/**
* 导出设计合同信息列表
*/
@SaCheckPermission("comprehensive:sjContractInfo:export")
@Log(title = "设计合同信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdSjContractInfoBo bo, HttpServletResponse response) {
List<XzdSjContractInfoVo> list = xzdSjContractInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "设计合同信息", XzdSjContractInfoVo.class, response);
}
/**
* 获取设计合同信息详细信息
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:sjContractInfo:query")
@GetMapping("/{id}")
public R<XzdSjContractInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractInfoService.queryById(id));
}
/**
* 新增设计合同信息
*/
@SaCheckPermission("comprehensive:sjContractInfo:add")
@Log(title = "设计合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdSjContractInfoBo bo) {
return toAjax(xzdSjContractInfoService.insertByBo(bo));
}
/**
* 修改设计合同信息
*/
@SaCheckPermission("comprehensive:sjContractInfo:edit")
@Log(title = "设计合同信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdSjContractInfoBo bo) {
return toAjax(xzdSjContractInfoService.updateByBo(bo));
}
/**
* 删除设计合同信息
*
* @param ids 主键串
*/
@SaCheckPermission("comprehensive:sjContractInfo:remove")
@Log(title = "设计合同信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdSjContractInfoService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,154 @@
package org.dromara.xzd.comprehensive.controller;
import java.util.List;
import cn.dev33.satoken.annotation.SaMode;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractInformationService;
import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService;
import org.dromara.xzd.domain.bo.XzdBusinessSealBo;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.service.IXzdBusinessSealService;
import org.springframework.context.annotation.Lazy;
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.XzdSjContractSuspendVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractSuspendBo;
import org.dromara.xzd.comprehensive.service.IXzdSjContractSuspendService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 设计合同终止
*
* @author Lion Li
* @date 2025-11-19
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/xzd/comprehensive/sjContractSuspend")
public class XzdSjContractSuspendController extends BaseController {
private final IXzdSjContractSuspendService xzdSjContractSuspendService;
private final IXzdBusinessSealService xzdBusinessSealService;
@Lazy
private final IXzdSjContractInfoService xzdSjContractInfoService;
/**
* 查询综合服务合同信息列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractSuspend:add","comprehensive:sjContractSuspend:edit","comprehensive:sjContractSuspend:list"},mode = SaMode.OR)
@GetMapping("/getList")
public TableDataInfo<XzdSjContractInfoVo> getList(XzdSjContractInfoBo bo, PageQuery pageQuery) {
return xzdSjContractInfoService.queryPageList(bo, pageQuery);
}
/**
* 查询印章帮助列表
*/
@SaCheckPermission(value = {"comprehensive:sjContractSuspend:add","comprehensive:sjContractSuspend:edit","comprehensive:sjContractSuspend:list"},mode = SaMode.OR)
@GetMapping("/businessSealList")
public TableDataInfo<XzdBusinessSealVo> list(XzdBusinessSealBo bo, PageQuery pageQuery) {
return xzdBusinessSealService.queryPageList(bo, pageQuery);
}
/**
* 获取综合服务合同信息详细信息
*
* @param id 主键
*/
@SaCheckPermission(value = {"comprehensive:csContractChange:add","comprehensive:csContractChange:edit"},mode = SaMode.OR)
@GetMapping("/get/{id}")
public R<XzdSjContractInfoVo> getCsContractInformationInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractInfoService.queryById(id));
}
/**
* 查询设计合同终止列表
*/
@SaCheckPermission("comprehensive:sjContractSuspend:list")
@GetMapping("/list")
public TableDataInfo<XzdSjContractSuspendVo> list(XzdSjContractSuspendBo bo, PageQuery pageQuery) {
return xzdSjContractSuspendService.queryPageList(bo, pageQuery);
}
/**
* 导出设计合同终止列表
*/
@SaCheckPermission("comprehensive:sjContractSuspend:export")
@Log(title = "设计合同终止", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdSjContractSuspendBo bo, HttpServletResponse response) {
List<XzdSjContractSuspendVo> list = xzdSjContractSuspendService.queryList(bo);
ExcelUtil.exportExcel(list, "设计合同终止", XzdSjContractSuspendVo.class, response);
}
/**
* 获取设计合同终止详细信息
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:sjContractSuspend:query")
@GetMapping("/{id}")
public R<XzdSjContractSuspendVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdSjContractSuspendService.queryById(id));
}
/**
* 新增设计合同终止
*/
@SaCheckPermission("comprehensive:sjContractSuspend:add")
@Log(title = "设计合同终止", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdSjContractSuspendBo bo) {
return toAjax(xzdSjContractSuspendService.insertByBo(bo));
}
/**
* 修改设计合同终止
*/
@SaCheckPermission("comprehensive:sjContractSuspend:edit")
@Log(title = "设计合同终止", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdSjContractSuspendBo bo) {
return toAjax(xzdSjContractSuspendService.updateByBo(bo));
}
/**
* 删除设计合同终止
*
* @param ids 主键串
*/
@SaCheckPermission("comprehensive:sjContractSuspend:remove")
@Log(title = "设计合同终止", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdSjContractSuspendService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,218 @@
package org.dromara.xzd.comprehensive.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
import java.time.LocalDate;
/**
* 设计合同变更对象 xzd_sj_contract_change
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_sj_contract_change")
public class XzdSjContractChange 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 contractText;
/**
* 部门id
*/
private Long deptId;
/**
* 单据引用
*/
private String documentReference;
/**
* 审核状态
*/
private String auditStatus;
/**
* 文件id
*/
private String fileId;
}

View File

@ -0,0 +1,343 @@
package org.dromara.xzd.comprehensive.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
import java.time.LocalDate;
/**
* 设计合同信息对象 xzd_sj_contract_info
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_sj_contract_info")
public class XzdSjContractInfo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 合同状态
*/
private String htzt;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同类型(如:租车合同)
*/
private String contractType;
/**
* 项目ID关联项目表
*/
private Long projectId;
/**
* 签订日期
*/
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 String 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 contractText;
/**
* 部门id
*/
private Long deptId;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件id
*/
private String fileId;
/**
* 审核状态
*/
private String auditStatus;
/**
* 固定单价下的含税暂定总价(小写)
*/
private BigDecimal provisionalTotalTaxIncluded;
/**
* 固定单价下的含税暂定总价(大写)
*/
private String provisionalTotalTaxIncludedUpper;
/**
* 固定单价下的增值税金额(小写)
*/
private BigDecimal provisionalVatAmount;
/**
* 固定单价下的增值税金额(大写)
*/
private String provisionalVatAmountUpper;
/**
* 固定单价下的增值税税率(%
*/
private BigDecimal provisionalVatRate;
/**
* 固定单价下的增值税发票类型(如“专用发票”)
*/
private String provisionalVatInvoiceType;
/**
* 固定单价下的不含税暂定总价(小写)
*/
private BigDecimal provisionalTotalTaxExcluded;
/**
* 固定单价下的不含税暂定总价(大写)
*/
private String provisionalTotalTaxExcludedUpper;
/**
* 固定总价下的含税总价(小写)
*/
private BigDecimal fixedTotalTaxIncluded;
/**
* 固定总价下的含税总价(大写)
*/
private String fixedTotalTaxIncludedUpper;
/**
* 固定总价下的增值税金额(小写)
*/
private BigDecimal fixedVatAmount;
/**
* 固定总价下的增值税金额(大写)
*/
private String fixedVatAmountUpper;
/**
* 固定总价下的增值税税率(%
*/
private BigDecimal fixedVatRate;
/**
* 固定总价下的增值税发票类型(如“专用发票”)
*/
private String fixedVatInvoiceType;
/**
* 固定总价下的不含税总价(小写)
*/
private BigDecimal fixedTotalTaxExcluded;
/**
* 固定总价下的不含税总价(大写)
*/
private String fixedTotalTaxExcludedUpper;
/**
* 固定总价是否可调整01
*/
private Long fixedTotalAdjustable;
/**
* 固定总价调整说明(如“合同执行中金额不予调整,另有约定除外”)
*/
private String fixedTotalAdjustNote;
}

View File

@ -0,0 +1,123 @@
package org.dromara.xzd.comprehensive.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
import java.time.LocalDate;
/**
* 设计合同终止对象 xzd_sj_contract_suspend
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_sj_contract_suspend")
public class XzdSjContractSuspend 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 String project;
/**
* 乙方单位
*/
private Long artyBUnit;
/**
* 甲方单位
*/
private Long partyAUnit;
/**
* 终止原因
*/
private String terminationCause;
/**
* 项目大类
*/
private String projectCategory;
/**
* 项目类型
*/
private String projectType;
/**
* 累计结算金额
*/
private Long cumulativeSettlementAmount;
/**
* 部门id
*/
private Long deptId;
/**
* 累计付款金额
*/
private BigDecimal cumulativePaymentAmount;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,62 @@
package org.dromara.xzd.comprehensive.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.io.Serial;
/**
* 设计合同付款节点信息对象 xzd_sjht_zfjd
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_sjht_zfjd")
public class XzdSjhtZfjd extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 自增主键
*/
@TableId(value = "id")
private Long id;
/**
* 关联设计合同id
*/
private Long mainId;
/**
* 付款阶段名称(如“合同签订后付款”)
*/
private String paymentStage;
/**
* 阶段具体描述(对应合同条款原文)
*/
private String stageDesc;
/**
* 付款比例(%如30.00表示30%
*/
private BigDecimal paymentRatio;
/**
* 付款触发条件(前置条件)
*/
private String triggerConditions;
/**
* 时间要求(工作日)
*/
private Integer timeLimit;
}

View File

@ -0,0 +1,252 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdSjContractChange;
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.comprehensive.domain.XzdSjhtZfjd;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 设计合同变更业务对象 xzd_sj_contract_change
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSjContractChange.class, reverseConvertGenerate = false)
public class XzdSjContractChangeBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空", groups = { EditGroup.class })
private String docCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class })
private String 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 contractText;
/**
* 部门id
*/
private Long deptId;
/**
* 单据引用
*/
private String documentReference;
/**
* 审核状态
*/
private String auditStatus;
/**
* 文件id
*/
private String fileId;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付节点
*/
private List<XzdSjhtZfjd> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
}

View File

@ -0,0 +1,388 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo;
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.comprehensive.domain.XzdSjhtZfjd;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 设计合同信息业务对象 xzd_sj_contract_info
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSjContractInfo.class, reverseConvertGenerate = false)
public class XzdSjContractInfoBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 合同状态
*/
private String htzt;
/**
* 合同编码
*/
@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 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 String 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 contractText;
/**
* 部门id
*/
private Long deptId;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件id
*/
private String fileId;
/**
* 审核状态
*/
private String auditStatus;
/**
* 固定单价下的含税暂定总价(小写)
*/
private BigDecimal provisionalTotalTaxIncluded;
/**
* 固定单价下的含税暂定总价(大写)
*/
private String provisionalTotalTaxIncludedUpper;
/**
* 固定单价下的增值税金额(小写)
*/
private BigDecimal provisionalVatAmount;
/**
* 固定单价下的增值税金额(大写)
*/
private String provisionalVatAmountUpper;
/**
* 固定单价下的增值税税率(%
*/
private BigDecimal provisionalVatRate;
/**
* 固定单价下的增值税发票类型(如“专用发票”)
*/
private String provisionalVatInvoiceType;
/**
* 固定单价下的不含税暂定总价(小写)
*/
private BigDecimal provisionalTotalTaxExcluded;
/**
* 固定单价下的不含税暂定总价(大写)
*/
private String provisionalTotalTaxExcludedUpper;
/**
* 固定总价下的含税总价(小写)
*/
private BigDecimal fixedTotalTaxIncluded;
/**
* 固定总价下的含税总价(大写)
*/
private String fixedTotalTaxIncludedUpper;
/**
* 固定总价下的增值税金额(小写)
*/
private BigDecimal fixedVatAmount;
/**
* 固定总价下的增值税金额(大写)
*/
private String fixedVatAmountUpper;
/**
* 固定总价下的增值税税率(%
*/
private BigDecimal fixedVatRate;
/**
* 固定总价下的增值税发票类型(如“专用发票”)
*/
private String fixedVatInvoiceType;
/**
* 固定总价下的不含税总价(小写)
*/
private BigDecimal fixedTotalTaxExcluded;
/**
* 固定总价下的不含税总价(大写)
*/
private String fixedTotalTaxExcludedUpper;
/**
* 固定总价是否可调整01
*/
private Long fixedTotalAdjustable;
/**
* 固定总价调整说明(如“合同执行中金额不予调整,另有约定除外”)
*/
private String fixedTotalAdjustNote;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付节点
*/
private List<XzdSjhtZfjd> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
}

View File

@ -0,0 +1,132 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend;
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_sj_contract_suspend
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSjContractSuspend.class, reverseConvertGenerate = false)
public class XzdSjContractSuspendBo 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 = { 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;
/**
* 工程项目
*/
@NotBlank(message = "工程项目不能为空", groups = { AddGroup.class, EditGroup.class })
private String 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 Long cumulativeSettlementAmount;
/**
* 部门id
*/
private Long deptId;
/**
* 累计付款金额
*/
private BigDecimal cumulativePaymentAmount;
/**
* 文件ID
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 审核状态
*/
private String auditStatus;
}

View File

@ -0,0 +1,61 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd;
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_sjht_zfjd
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSjhtZfjd.class, reverseConvertGenerate = false)
public class XzdSjhtZfjdBo extends BaseEntity {
/**
* 自增主键
*/
@NotNull(message = "自增主键不能为空", groups = { EditGroup.class })
private Long id;
/**
* 关联设计合同id
*/
private Long mainId;
/**
* 付款阶段名称(如“合同签订后付款”)
*/
private String paymentStage;
/**
* 阶段具体描述(对应合同条款原文)
*/
private String stageDesc;
/**
* 付款比例(%如30.00表示30%
*/
private BigDecimal paymentRatio;
/**
* 付款触发条件(前置条件)
*/
private String triggerConditions;
/**
* 时间要求(工作日)
*/
private Integer timeLimit;
}

View File

@ -0,0 +1,316 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdSjContractChange;
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.comprehensive.domain.XzdSjhtZfjd;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
* 设计合同变更视图对象 xzd_sj_contract_change
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSjContractChange.class)
public class XzdSjContractChangeVo 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;
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project")
private String projectName;
/**
* 经营模式
*/
@ExcelProperty(value = "经营模式")
private String businessMode;
/**
* 组织
*/
@ExcelProperty(value = "组织")
private Long organization;
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "organization")
private String organizationName;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyA;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyA")
private String partyAName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long partyB;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "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;
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "afterChangeProjectManager")
private String afterChangeProjectManagerName;
/**
* 变更后项目责任人
*/
@ExcelProperty(value = "变更后项目责任人")
private Long afterChangeProjectLeader;
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "afterChangeProjectLeader")
private String afterChangeProjectLeaderName;
/**
* 变更后现场经理
*/
@ExcelProperty(value = "变更后现场经理")
private Long afterChangeSiteManager;
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "afterChangeSiteManager")
private String afterChangeSiteManagerName;
/**
* 变更后合同备注
*/
@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 contractText;
/**
* 部门id
*/
@ExcelProperty(value = "部门id")
private Long deptId;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 文件id
*/
@ExcelProperty(value = "文件id")
private String fileId;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付条款
*/
private List<XzdSjhtZfjd> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
}

View File

@ -0,0 +1,502 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo;
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.comprehensive.domain.XzdSjhtZfjd;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
/**
* 设计合同信息视图对象 xzd_sj_contract_info
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSjContractInfo.class)
public class XzdSjContractInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 合同状态
*/
@ExcelProperty(value = "合同状态")
private String htzt;
/**
* 合同编码
*/
@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;
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "projectId")
private String projectName;
/**
* 签订日期
*/
@ExcelProperty(value = "签订日期")
private LocalDate signDate;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyA;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyA")
private String partyAName;
/**
* 含税合同金额
*/
@ExcelProperty(value = "含税合同金额")
private BigDecimal taxIncludedAmount;
/**
* 合同状态(如:新增、生效)
*/
@ExcelProperty(value = "合同状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=:新增、生效")
private String contractStatus;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long partyB;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyB")
private String partyBName;
/**
* 累计变更金额
*/
@ExcelProperty(value = "累计变更金额")
private BigDecimal cumulativeChangeAmount;
/**
* 部门ID关联部门表
*/
@ExcelProperty(value = "部门ID", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "关=联部门表")
private Long departmentId;
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "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;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoiceIssuer")
private String invoiceIssuerName;
/**
* 收票单位
*/
@ExcelProperty(value = "收票单位")
private Long invoiceReceiver;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "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;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "signOrganization")
private String signOrganizationName;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目责任人
*/
@ExcelProperty(value = "项目责任人")
private Long projectOwner;
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "projectOwner")
private String projectOwnerName;
/**
* WBS编码
*/
@ExcelProperty(value = "WBS编码")
private String 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 contractText;
/**
* 部门id
*/
@ExcelProperty(value = "部门id")
private Long deptId;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件id
*/
@ExcelProperty(value = "文件id")
private String fileId;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 固定单价下的含税暂定总价(小写)
*/
@ExcelProperty(value = "固定单价下的含税暂定总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "小=写")
private BigDecimal provisionalTotalTaxIncluded;
/**
* 固定单价下的含税暂定总价(大写)
*/
@ExcelProperty(value = "固定单价下的含税暂定总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "大=写")
private String provisionalTotalTaxIncludedUpper;
/**
* 固定单价下的增值税金额(小写)
*/
@ExcelProperty(value = "固定单价下的增值税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "小=写")
private BigDecimal provisionalVatAmount;
/**
* 固定单价下的增值税金额(大写)
*/
@ExcelProperty(value = "固定单价下的增值税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "大=写")
private String provisionalVatAmountUpper;
/**
* 固定单价下的增值税税率(%
*/
@ExcelProperty(value = "固定单价下的增值税税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private BigDecimal provisionalVatRate;
/**
* 固定单价下的增值税发票类型(如“专用发票”)
*/
@ExcelProperty(value = "固定单价下的增值税发票类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=“专用发票”")
private String provisionalVatInvoiceType;
/**
* 固定单价下的不含税暂定总价(小写)
*/
@ExcelProperty(value = "固定单价下的不含税暂定总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "小=写")
private BigDecimal provisionalTotalTaxExcluded;
/**
* 固定单价下的不含税暂定总价(大写)
*/
@ExcelProperty(value = "固定单价下的不含税暂定总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "大=写")
private String provisionalTotalTaxExcludedUpper;
/**
* 固定总价下的含税总价(小写)
*/
@ExcelProperty(value = "固定总价下的含税总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "小=写")
private BigDecimal fixedTotalTaxIncluded;
/**
* 固定总价下的含税总价(大写)
*/
@ExcelProperty(value = "固定总价下的含税总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "大=写")
private String fixedTotalTaxIncludedUpper;
/**
* 固定总价下的增值税金额(小写)
*/
@ExcelProperty(value = "固定总价下的增值税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "小=写")
private BigDecimal fixedVatAmount;
/**
* 固定总价下的增值税金额(大写)
*/
@ExcelProperty(value = "固定总价下的增值税金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "大=写")
private String fixedVatAmountUpper;
/**
* 固定总价下的增值税税率(%
*/
@ExcelProperty(value = "固定总价下的增值税税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=")
private BigDecimal fixedVatRate;
/**
* 固定总价下的增值税发票类型(如“专用发票”)
*/
@ExcelProperty(value = "固定总价下的增值税发票类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=“专用发票”")
private String fixedVatInvoiceType;
/**
* 固定总价下的不含税总价(小写)
*/
@ExcelProperty(value = "固定总价下的不含税总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "小=写")
private BigDecimal fixedTotalTaxExcluded;
/**
* 固定总价下的不含税总价(大写)
*/
@ExcelProperty(value = "固定总价下的不含税总价", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "大=写")
private String fixedTotalTaxExcludedUpper;
/**
* 固定总价是否可调整01
*/
@ExcelProperty(value = "固定总价是否可调整", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=1")
private Long fixedTotalAdjustable;
/**
* 固定总价调整说明(如“合同执行中金额不予调整,另有约定除外”)
*/
@ExcelProperty(value = "固定总价调整说明", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=“合同执行中金额不予调整,另有约定除外”")
private String fixedTotalAdjustNote;
/**
* 扣款与奖励项
*/
private List<XzdDeductionItems> kkyjlx;
/**
* 合同条款
*/
private List<XzdContractClause> httk;
/**
* 支付条款
*/
private List<XzdSjhtZfjd> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 印章信息
*/
private List<XzdBusinessChange> sealInfo;
}

View File

@ -0,0 +1,156 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend;
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;
/**
* 设计合同终止视图对象 xzd_sj_contract_suspend
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSjContractSuspend.class)
public class XzdSjContractSuspendVo 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 String project;
@Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project")
private String projectName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private Long artyBUnit;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit")
private String artyBUnitName;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private Long partyAUnit;
@Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit")
private String partyAUnitNamme;
/**
* 终止原因
*/
@ExcelProperty(value = "终止原因")
private String terminationCause;
/**
* 项目大类
*/
@ExcelProperty(value = "项目大类")
private String projectCategory;
/**
* 项目类型
*/
@ExcelProperty(value = "项目类型")
private String projectType;
/**
* 累计结算金额
*/
@ExcelProperty(value = "累计结算金额")
private Long cumulativeSettlementAmount;
/**
* 部门id
*/
@ExcelProperty(value = "部门id")
private Long deptId;
/**
* 累计付款金额
*/
@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,80 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd;
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_sjht_zfjd
*
* @author Lion Li
* @date 2025-11-19
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSjhtZfjd.class)
public class XzdSjhtZfjdVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 自增主键
*/
@ExcelProperty(value = "自增主键")
private Long id;
/**
* 关联设计合同id
*/
@ExcelProperty(value = "关联设计合同id")
private Long mainId;
/**
* 付款阶段名称(如“合同签订后付款”)
*/
@ExcelProperty(value = "付款阶段名称", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=“合同签订后付款”")
private String paymentStage;
/**
* 阶段具体描述(对应合同条款原文)
*/
@ExcelProperty(value = "阶段具体描述", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "对=应合同条款原文")
private String stageDesc;
/**
* 付款比例(%如30.00表示30%
*/
@ExcelProperty(value = "付款比例", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "%=如30.00表示30%")
private BigDecimal paymentRatio;
/**
* 付款触发条件(前置条件)
*/
@ExcelProperty(value = "付款触发条件", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "前=置条件")
private String triggerConditions;
/**
* 时间要求(工作日)
*/
@ExcelProperty(value = "时间要求", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "工=作日")
private Integer timeLimit;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdSjContractChange;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractChangeVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 设计合同变更Mapper接口
*
* @author Lion Li
* @date 2025-11-19
*/
public interface XzdSjContractChangeMapper extends BaseMapperPlus<XzdSjContractChange, XzdSjContractChangeVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 设计合同信息Mapper接口
*
* @author Lion Li
* @date 2025-11-19
*/
public interface XzdSjContractInfoMapper extends BaseMapperPlus<XzdSjContractInfo, XzdSjContractInfoVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractSuspendVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 设计合同终止Mapper接口
*
* @author Lion Li
* @date 2025-11-19
*/
public interface XzdSjContractSuspendMapper extends BaseMapperPlus<XzdSjContractSuspend, XzdSjContractSuspendVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjhtZfjdVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 设计合同付款节点信息Mapper接口
*
* @author Lion Li
* @date 2025-11-19
*/
public interface XzdSjhtZfjdMapper extends BaseMapperPlus<XzdSjhtZfjd, XzdSjhtZfjdVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.comprehensive.service;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractChangeVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractChangeBo;
import org.dromara.xzd.comprehensive.domain.XzdSjContractChange;
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-11-19
*/
public interface IXzdSjContractChangeService extends IService<XzdSjContractChange>{
/**
* 查询设计合同变更
*
* @param id 主键
* @return 设计合同变更
*/
XzdSjContractChangeVo queryById(Long id);
/**
* 分页查询设计合同变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同变更分页列表
*/
TableDataInfo<XzdSjContractChangeVo> queryPageList(XzdSjContractChangeBo bo, PageQuery pageQuery);
/**
* 查询符合条件的设计合同变更列表
*
* @param bo 查询条件
* @return 设计合同变更列表
*/
List<XzdSjContractChangeVo> queryList(XzdSjContractChangeBo bo);
/**
* 新增设计合同变更
*
* @param bo 设计合同变更
* @return 是否新增成功
*/
Boolean insertByBo(XzdSjContractChangeBo bo);
/**
* 修改设计合同变更
*
* @param bo 设计合同变更
* @return 是否修改成功
*/
Boolean updateByBo(XzdSjContractChangeBo 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.XzdSjContractInfoVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo;
import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo;
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-11-19
*/
public interface IXzdSjContractInfoService extends IService<XzdSjContractInfo>{
/**
* 查询设计合同信息
*
* @param id 主键
* @return 设计合同信息
*/
XzdSjContractInfoVo queryById(Long id);
/**
* 分页查询设计合同信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同信息分页列表
*/
TableDataInfo<XzdSjContractInfoVo> queryPageList(XzdSjContractInfoBo bo, PageQuery pageQuery);
/**
* 查询符合条件的设计合同信息列表
*
* @param bo 查询条件
* @return 设计合同信息列表
*/
List<XzdSjContractInfoVo> queryList(XzdSjContractInfoBo bo);
/**
* 新增设计合同信息
*
* @param bo 设计合同信息
* @return 是否新增成功
*/
Boolean insertByBo(XzdSjContractInfoBo bo);
/**
* 修改设计合同信息
*
* @param bo 设计合同信息
* @return 是否修改成功
*/
Boolean updateByBo(XzdSjContractInfoBo 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.XzdSjContractSuspendVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractSuspendBo;
import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend;
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-11-19
*/
public interface IXzdSjContractSuspendService extends IService<XzdSjContractSuspend>{
/**
* 查询设计合同终止
*
* @param id 主键
* @return 设计合同终止
*/
XzdSjContractSuspendVo queryById(Long id);
/**
* 分页查询设计合同终止列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同终止分页列表
*/
TableDataInfo<XzdSjContractSuspendVo> queryPageList(XzdSjContractSuspendBo bo, PageQuery pageQuery);
/**
* 查询符合条件的设计合同终止列表
*
* @param bo 查询条件
* @return 设计合同终止列表
*/
List<XzdSjContractSuspendVo> queryList(XzdSjContractSuspendBo bo);
/**
* 新增设计合同终止
*
* @param bo 设计合同终止
* @return 是否新增成功
*/
Boolean insertByBo(XzdSjContractSuspendBo bo);
/**
* 修改设计合同终止
*
* @param bo 设计合同终止
* @return 是否修改成功
*/
Boolean updateByBo(XzdSjContractSuspendBo 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.XzdSjhtZfjdVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjhtZfjdBo;
import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd;
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-11-19
*/
public interface IXzdSjhtZfjdService extends IService<XzdSjhtZfjd>{
/**
* 查询设计合同付款节点信息
*
* @param id 主键
* @return 设计合同付款节点信息
*/
XzdSjhtZfjdVo queryById(Long id);
/**
* 分页查询设计合同付款节点信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同付款节点信息分页列表
*/
TableDataInfo<XzdSjhtZfjdVo> queryPageList(XzdSjhtZfjdBo bo, PageQuery pageQuery);
/**
* 查询符合条件的设计合同付款节点信息列表
*
* @param bo 查询条件
* @return 设计合同付款节点信息列表
*/
List<XzdSjhtZfjdVo> queryList(XzdSjhtZfjdBo bo);
/**
* 新增设计合同付款节点信息
*
* @param bo 设计合同付款节点信息
* @return 是否新增成功
*/
Boolean insertByBo(XzdSjhtZfjdBo bo);
/**
* 修改设计合同付款节点信息
*
* @param bo 设计合同付款节点信息
* @return 是否修改成功
*/
Boolean updateByBo(XzdSjhtZfjdBo bo);
/**
* 校验并批量删除设计合同付款节点信息信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -115,6 +115,7 @@ public class XzdCsContractSuspendServiceImpl extends ServiceImpl<XzdCsContractSu
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdCsContractSuspendBo bo) {
XzdCsContractSuspend add = MapstructUtils.convert(bo, XzdCsContractSuspend.class);
String banBen = BatchNumberGenerator.generateBatchNumber("ZHFWHTZZ-");

View File

@ -0,0 +1,451 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.*;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractChangeVo;
import org.dromara.xzd.comprehensive.service.*;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.enums.ZxdEnum;
import org.dromara.xzd.service.impl.XzdBusinessChangeServiceImpl;
import org.dromara.xzd.service.impl.XzdBusinessSealServiceImpl;
import org.dromara.xzd.service.impl.XzdContractClauseServiceImpl;
import org.dromara.xzd.service.impl.XzdDeductionItemsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractChangeBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractChangeVo;
import org.dromara.xzd.comprehensive.mapper.XzdSjContractChangeMapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* 设计合同变更Service业务层处理
*
* @author Lion Li
* @date 2025-11-19
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class XzdSjContractChangeServiceImpl extends ServiceImpl<XzdSjContractChangeMapper, XzdSjContractChange> implements IXzdSjContractChangeService {
private final XzdSjContractChangeMapper baseMapper;
@Autowired
private XzdDeductionItemsServiceImpl xzdDeductionItemsService;
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private IXzdSjhtZfjdService xzdSjhtZfjdService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
@Autowired
private IXzdSjContractInfoService xzdSjContractInfoService;
@Autowired
private XzdBusinessChangeServiceImpl xzdBusinessChangeService;
@Autowired
private XzdBusinessSealServiceImpl xzdBusinessSealService;
/**
* 查询设计合同变更
*
* @param id 主键
* @return 设计合同变更
*/
@Override
public XzdSjContractChangeVo queryById(Long id){
XzdSjContractChangeVo vo = baseMapper.selectVoById(id);
getHttk(vo);
return vo;
}
/**
* 分页查询设计合同变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同变更分页列表
*/
@Override
public TableDataInfo<XzdSjContractChangeVo> queryPageList(XzdSjContractChangeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSjContractChange> lqw = buildQueryWrapper(bo);
Page<XzdSjContractChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的设计合同变更列表
*
* @param bo 查询条件
* @return 设计合同变更列表
*/
@Override
public List<XzdSjContractChangeVo> queryList(XzdSjContractChangeBo bo) {
LambdaQueryWrapper<XzdSjContractChange> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdSjContractChange> buildQueryWrapper(XzdSjContractChangeBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdSjContractChange> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdSjContractChange::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdSjContractChange::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSjContractChange::getTitle, bo.getTitle());
lqw.eq(bo.getDocDate() != null, XzdSjContractChange::getDocDate, bo.getDocDate());
lqw.eq(bo.getContractCode() != null, XzdSjContractChange::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSjContractChange::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdSjContractChange::getContractType, bo.getContractType());
lqw.eq(bo.getChangeType() != null, XzdSjContractChange::getChangeType, bo.getChangeType());
lqw.eq(bo.getProject() != null, XzdSjContractChange::getProject, bo.getProject());
lqw.eq(StringUtils.isNotBlank(bo.getBusinessMode()), XzdSjContractChange::getBusinessMode, bo.getBusinessMode());
lqw.eq(bo.getOrganization() != null, XzdSjContractChange::getOrganization, bo.getOrganization());
lqw.eq(bo.getPartyA() != null, XzdSjContractChange::getPartyA, bo.getPartyA());
lqw.eq(bo.getPartyB() != null, XzdSjContractChange::getPartyB, bo.getPartyB());
lqw.eq(bo.getOriginalContractAmount() != null, XzdSjContractChange::getOriginalContractAmount, bo.getOriginalContractAmount());
lqw.eq(bo.getChangeTaxIncludedAmount() != null, XzdSjContractChange::getChangeTaxIncludedAmount, bo.getChangeTaxIncludedAmount());
lqw.eq(bo.getAfterChangeTaxIncludedAmount() != null, XzdSjContractChange::getAfterChangeTaxIncludedAmount, bo.getAfterChangeTaxIncludedAmount());
lqw.eq(bo.getCumulativeChangeAmount() != null, XzdSjContractChange::getCumulativeChangeAmount, bo.getCumulativeChangeAmount());
lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdSjContractChange::getWarning, bo.getWarning());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdSjContractChange::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(bo.getIsSealed() != null, XzdSjContractChange::getIsSealed, bo.getIsSealed());
lqw.eq(bo.getAfterChangeProjectManager() != null, XzdSjContractChange::getAfterChangeProjectManager, bo.getAfterChangeProjectManager());
lqw.eq(bo.getAfterChangeProjectLeader() != null, XzdSjContractChange::getAfterChangeProjectLeader, bo.getAfterChangeProjectLeader());
lqw.eq(bo.getAfterChangeSiteManager() != null, XzdSjContractChange::getAfterChangeSiteManager, bo.getAfterChangeSiteManager());
lqw.eq(StringUtils.isNotBlank(bo.getAfterChangeContractRemark()), XzdSjContractChange::getAfterChangeContractRemark, bo.getAfterChangeContractRemark());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSjContractChange::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSjContractChange::getProjectType, bo.getProjectType());
lqw.eq(bo.getPaymentNotExceedContract() != null, XzdSjContractChange::getPaymentNotExceedContract, bo.getPaymentNotExceedContract());
lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdSjContractChange::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio());
lqw.eq(bo.getBudgetNotExceedContract() != null, XzdSjContractChange::getBudgetNotExceedContract, bo.getBudgetNotExceedContract());
lqw.eq(bo.getBudgetNotExceedRatio() != null, XzdSjContractChange::getBudgetNotExceedRatio, bo.getBudgetNotExceedRatio());
lqw.eq(bo.getRealTimeUpdate() != null, XzdSjContractChange::getRealTimeUpdate, bo.getRealTimeUpdate());
lqw.eq(bo.getContractCumulativeChangeAmount() != null, XzdSjContractChange::getContractCumulativeChangeAmount, bo.getContractCumulativeChangeAmount());
lqw.eq(StringUtils.isNotBlank(bo.getContractText()), XzdSjContractChange::getContractText, bo.getContractText());
lqw.eq(bo.getDeptId() != null, XzdSjContractChange::getDeptId, bo.getDeptId());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdSjContractChange::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdSjContractChange::getAuditStatus, bo.getAuditStatus());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSjContractChange::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增设计合同变更
*
* @param bo 设计合同变更
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdSjContractChangeBo bo) {
XzdSjContractChange add = MapstructUtils.convert(bo, XzdSjContractChange.class);
String banBen = BatchNumberGenerator.generateBatchNumber("SJHTBG-");
add.setDocCode(banBen);
validEntityBeforeSave(add);
XzdSjContractInfo byId = xzdSjContractInfoService.getById(bo.getContractCode());
if (byId != null){
if (byId.getHtzt().equals("已终止")){
throw new RuntimeException("该合同已终止");
}
byId.setHtzt(ZxdEnum.HETONGZTBG.getTypeValue());
xzdSjContractInfoService.updateById(byId);
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
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 (XzdSjhtZfjd clause : bo.getZftk()) {
clause.setMainId(add.getId());
}
xzdSjhtZfjdService.saveBatch(bo.getZftk());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){
for (XzdBusinessChange sealInfo : bo.getSealInfo()) {
sealInfo.setContractChangeId(add.getId());
sealInfo.setType("16");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
return flag;
}
/**
* 修改设计合同变更
*
* @param bo 设计合同变更
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(XzdSjContractChangeBo bo) {
XzdSjContractChange update = MapstructUtils.convert(bo, XzdSjContractChange.class);
validEntityBeforeSave(update);
XzdSjContractChange 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<XzdSjhtZfjd> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, old.getId());
xzdSjhtZfjdService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(XzdDeductionItems::getContractDetailsId, old.getId());
xzdDeductionItemsService.remove(lambdaQueryWrapper4);
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().eq(XzdBusinessChange::getContractChangeId, old.getId()));
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 (XzdSjhtZfjd clause : bo.getZftk()) {
clause.setMainId(update.getId());
}
xzdSjhtZfjdService.saveBatch(bo.getZftk());
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()) {
for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) {
xzdBusinessChange.setContractChangeId(update.getId());
xzdBusinessChange.setType("16");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(bo.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdSjContractChange 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) {
XzdSjContractChangeVo 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<XzdSjhtZfjd> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSjhtZfjd::getMainId, ids);
xzdSjhtZfjdService.remove(lambdaQueryWrapper3);
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().in(XzdBusinessChange::getContractChangeId, ids));
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取合同条款内容
* @param vo
*/
private void getHttk(XzdSjContractChangeVo 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<XzdSjhtZfjd> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, vo.getId());
List<XzdSjhtZfjd> list2 = xzdSjhtZfjdService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
//合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId()));
vo.setHtbgqds(list4);
//印章信息
LambdaQueryWrapper<XzdBusinessChange> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(XzdBusinessChange::getContractChangeId, vo.getId());
lambdaQueryWrapper4.eq(XzdBusinessChange::getType, "16");
List<XzdBusinessChange> list3 = xzdBusinessChangeService.list(lambdaQueryWrapper4);
if (list3 != null && !list3.isEmpty()){
for (XzdBusinessChange businessChange : list3) {
XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId());
if (sealVo != null){
businessChange.setSealName(sealVo.getYzName());
}
}
vo.setSealInfo(list3);
}
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdSjContractChange')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("综合服务合同变更审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdSjContractChange xzdCsContractChange = baseMapper.selectById(Long.valueOf(id));
if (xzdCsContractChange == null){return;}
xzdCsContractChange.setAuditStatus(processEvent.getStatus());
baseMapper.updateById(xzdCsContractChange);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdSjContractChange')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("综合服务合同变更审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdSjContractChange')")
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
log.info("综合服务合同变更计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -0,0 +1,474 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.*;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendZfkxService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.comprehensive.service.IXzdSjhtZfjdService;
import org.dromara.xzd.domain.XzdBusinessChange;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.vo.XzdBusinessSealVo;
import org.dromara.xzd.enums.XzdClassEnum;
import org.dromara.xzd.enums.ZxdEnum;
import org.dromara.xzd.service.impl.XzdBusinessChangeServiceImpl;
import org.dromara.xzd.service.impl.XzdBusinessSealServiceImpl;
import org.dromara.xzd.service.impl.XzdContractClauseServiceImpl;
import org.dromara.xzd.service.impl.XzdDeductionItemsServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo;
import org.dromara.xzd.comprehensive.mapper.XzdSjContractInfoMapper;
import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* 设计合同信息Service业务层处理
*
* @author Lion Li
* @date 2025-11-19
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class XzdSjContractInfoServiceImpl extends ServiceImpl<XzdSjContractInfoMapper, XzdSjContractInfo> implements IXzdSjContractInfoService {
private final XzdSjContractInfoMapper baseMapper;
@Autowired
private XzdDeductionItemsServiceImpl xzdDeductionItemsService;
@Autowired
private XzdContractClauseServiceImpl xzdContractClauseService;
@Autowired
private IXzdSjhtZfjdService xzdSjhtZfjdService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
@Autowired
private XzdBusinessChangeServiceImpl xzdBusinessChangeService;
@Autowired
private XzdBusinessSealServiceImpl xzdBusinessSealService;
/**
* 查询设计合同信息
*
* @param id 主键
* @return 设计合同信息
*/
@Override
public XzdSjContractInfoVo queryById(Long id){
XzdSjContractInfoVo vo = baseMapper.selectVoById(id);
if (vo != null){
getHttk(vo);
}
return vo;
}
/**
* 分页查询设计合同信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同信息分页列表
*/
@Override
public TableDataInfo<XzdSjContractInfoVo> queryPageList(XzdSjContractInfoBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSjContractInfo> lqw = buildQueryWrapper(bo);
Page<XzdSjContractInfoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的设计合同信息列表
*
* @param bo 查询条件
* @return 设计合同信息列表
*/
@Override
public List<XzdSjContractInfoVo> queryList(XzdSjContractInfoBo bo) {
LambdaQueryWrapper<XzdSjContractInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdSjContractInfo> buildQueryWrapper(XzdSjContractInfoBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdSjContractInfo> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdSjContractInfo::getId);
lqw.eq(StringUtils.isNotBlank(bo.getHtzt()), XzdSjContractInfo::getHtzt, bo.getHtzt());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdSjContractInfo::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSjContractInfo::getContractName, bo.getContractName());
lqw.eq(bo.getDocumentDate() != null, XzdSjContractInfo::getDocumentDate, bo.getDocumentDate());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdSjContractInfo::getContractType, bo.getContractType());
lqw.eq(bo.getProjectId() != null, XzdSjContractInfo::getProjectId, bo.getProjectId());
lqw.eq(bo.getSignDate() != null, XzdSjContractInfo::getSignDate, bo.getSignDate());
lqw.eq(bo.getPartyA() != null, XzdSjContractInfo::getPartyA, bo.getPartyA());
lqw.eq(bo.getTaxIncludedAmount() != null, XzdSjContractInfo::getTaxIncludedAmount, bo.getTaxIncludedAmount());
lqw.eq(StringUtils.isNotBlank(bo.getContractStatus()), XzdSjContractInfo::getContractStatus, bo.getContractStatus());
lqw.eq(bo.getPartyB() != null, XzdSjContractInfo::getPartyB, bo.getPartyB());
lqw.eq(bo.getCumulativeChangeAmount() != null, XzdSjContractInfo::getCumulativeChangeAmount, bo.getCumulativeChangeAmount());
lqw.eq(bo.getDepartmentId() != null, XzdSjContractInfo::getDepartmentId, bo.getDepartmentId());
lqw.eq(bo.getArchivalDate() != null, XzdSjContractInfo::getArchivalDate, bo.getArchivalDate());
lqw.eq(bo.getIsRD() != null, XzdSjContractInfo::getIsRD, bo.getIsRD());
lqw.eq(bo.getInvoiceIssuer() != null, XzdSjContractInfo::getInvoiceIssuer, bo.getInvoiceIssuer());
lqw.eq(bo.getInvoiceReceiver() != null, XzdSjContractInfo::getInvoiceReceiver, bo.getInvoiceReceiver());
lqw.eq(bo.getValidStartDate() != null, XzdSjContractInfo::getValidStartDate, bo.getValidStartDate());
lqw.eq(bo.getValidEndDate() != null, XzdSjContractInfo::getValidEndDate, bo.getValidEndDate());
lqw.eq(bo.getIsSealed() != null, XzdSjContractInfo::getIsSealed, bo.getIsSealed());
lqw.eq(StringUtils.isNotBlank(bo.getTaxIncludedAmountUpper()), XzdSjContractInfo::getTaxIncludedAmountUpper, bo.getTaxIncludedAmountUpper());
lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdSjContractInfo::getWarning, bo.getWarning());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdSjContractInfo::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(bo.getSignOrganization() != null, XzdSjContractInfo::getSignOrganization, bo.getSignOrganization());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSjContractInfo::getProjectType, bo.getProjectType());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSjContractInfo::getProjectCategory, bo.getProjectCategory());
lqw.eq(bo.getProjectOwner() != null, XzdSjContractInfo::getProjectOwner, bo.getProjectOwner());
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdSjContractInfo::getWbs, bo.getWbs());
lqw.eq(StringUtils.isNotBlank(bo.getFilingStatus()), XzdSjContractInfo::getFilingStatus, bo.getFilingStatus());
lqw.eq(bo.getFilingTime() != null, XzdSjContractInfo::getFilingTime, bo.getFilingTime());
lqw.eq(bo.getNeedFiling() != null, XzdSjContractInfo::getNeedFiling, bo.getNeedFiling());
lqw.eq(bo.getBudgetCategory() != null, XzdSjContractInfo::getBudgetCategory, bo.getBudgetCategory());
lqw.eq(bo.getIsFixedUnitPrice() != null, XzdSjContractInfo::getIsFixedUnitPrice, bo.getIsFixedUnitPrice());
lqw.eq(bo.getIsLumpSum() != null, XzdSjContractInfo::getIsLumpSum, bo.getIsLumpSum());
lqw.eq(bo.getPaymentNotExceedContract() != null, XzdSjContractInfo::getPaymentNotExceedContract, bo.getPaymentNotExceedContract());
lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdSjContractInfo::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio());
lqw.eq(bo.getBudgetNotExceedContract() != null, XzdSjContractInfo::getBudgetNotExceedContract, bo.getBudgetNotExceedContract());
lqw.eq(bo.getBudgetNotExceedRatio() != null, XzdSjContractInfo::getBudgetNotExceedRatio, bo.getBudgetNotExceedRatio());
lqw.eq(StringUtils.isNotBlank(bo.getContractText()), XzdSjContractInfo::getContractText, bo.getContractText());
lqw.eq(bo.getDeptId() != null, XzdSjContractInfo::getDeptId, bo.getDeptId());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdSjContractInfo::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSjContractInfo::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdSjContractInfo::getAuditStatus, bo.getAuditStatus());
lqw.eq(bo.getProvisionalTotalTaxIncluded() != null, XzdSjContractInfo::getProvisionalTotalTaxIncluded, bo.getProvisionalTotalTaxIncluded());
lqw.eq(StringUtils.isNotBlank(bo.getProvisionalTotalTaxIncludedUpper()), XzdSjContractInfo::getProvisionalTotalTaxIncludedUpper, bo.getProvisionalTotalTaxIncludedUpper());
lqw.eq(bo.getProvisionalVatAmount() != null, XzdSjContractInfo::getProvisionalVatAmount, bo.getProvisionalVatAmount());
lqw.eq(StringUtils.isNotBlank(bo.getProvisionalVatAmountUpper()), XzdSjContractInfo::getProvisionalVatAmountUpper, bo.getProvisionalVatAmountUpper());
lqw.eq(bo.getProvisionalVatRate() != null, XzdSjContractInfo::getProvisionalVatRate, bo.getProvisionalVatRate());
lqw.eq(StringUtils.isNotBlank(bo.getProvisionalVatInvoiceType()), XzdSjContractInfo::getProvisionalVatInvoiceType, bo.getProvisionalVatInvoiceType());
lqw.eq(bo.getProvisionalTotalTaxExcluded() != null, XzdSjContractInfo::getProvisionalTotalTaxExcluded, bo.getProvisionalTotalTaxExcluded());
lqw.eq(StringUtils.isNotBlank(bo.getProvisionalTotalTaxExcludedUpper()), XzdSjContractInfo::getProvisionalTotalTaxExcludedUpper, bo.getProvisionalTotalTaxExcludedUpper());
lqw.eq(bo.getFixedTotalTaxIncluded() != null, XzdSjContractInfo::getFixedTotalTaxIncluded, bo.getFixedTotalTaxIncluded());
lqw.eq(StringUtils.isNotBlank(bo.getFixedTotalTaxIncludedUpper()), XzdSjContractInfo::getFixedTotalTaxIncludedUpper, bo.getFixedTotalTaxIncludedUpper());
lqw.eq(bo.getFixedVatAmount() != null, XzdSjContractInfo::getFixedVatAmount, bo.getFixedVatAmount());
lqw.eq(StringUtils.isNotBlank(bo.getFixedVatAmountUpper()), XzdSjContractInfo::getFixedVatAmountUpper, bo.getFixedVatAmountUpper());
lqw.eq(bo.getFixedVatRate() != null, XzdSjContractInfo::getFixedVatRate, bo.getFixedVatRate());
lqw.eq(StringUtils.isNotBlank(bo.getFixedVatInvoiceType()), XzdSjContractInfo::getFixedVatInvoiceType, bo.getFixedVatInvoiceType());
lqw.eq(bo.getFixedTotalTaxExcluded() != null, XzdSjContractInfo::getFixedTotalTaxExcluded, bo.getFixedTotalTaxExcluded());
lqw.eq(StringUtils.isNotBlank(bo.getFixedTotalTaxExcludedUpper()), XzdSjContractInfo::getFixedTotalTaxExcludedUpper, bo.getFixedTotalTaxExcludedUpper());
lqw.eq(bo.getFixedTotalAdjustable() != null, XzdSjContractInfo::getFixedTotalAdjustable, bo.getFixedTotalAdjustable());
lqw.eq(StringUtils.isNotBlank(bo.getFixedTotalAdjustNote()), XzdSjContractInfo::getFixedTotalAdjustNote, bo.getFixedTotalAdjustNote());
return lqw;
}
/**
* 新增设计合同信息
*
* @param bo 设计合同信息
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdSjContractInfoBo bo) {
XzdSjContractInfo add = MapstructUtils.convert(bo, XzdSjContractInfo.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("SJHT-");
add.setContractCode(banBen);
add.setHtzt(ZxdEnum.HETONGZTYS.getTypeValue());
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
String tableName = XzdClassEnum.SJ_CONTRACT_INFO.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()) {
for (XzdSjhtZfjd clause : bo.getZftk()) {
clause.setMainId(add.getId());
}
xzdSjhtZfjdService.saveBatch(bo.getZftk());
}
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){
for (XzdBusinessChange sealInfo : bo.getSealInfo()) {
sealInfo.setContractChangeId(add.getId());
sealInfo.setType("15");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
return flag;
}
/**
* 修改设计合同信息
*
* @param bo 设计合同信息
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(XzdSjContractInfoBo bo) {
XzdSjContractInfo update = MapstructUtils.convert(bo, XzdSjContractInfo.class);
validEntityBeforeSave(update);
XzdSjContractInfo old = baseMapper.selectById(update.getId());
if (old == null){
throw new ServiceException("找不到要修改数据!!!");
}
if (old.getHtzt().equals(ZxdEnum.HETONGZTZZ.getTypeValue())){
throw new RuntimeException("该合同已被终止");
}
//合同条款-合同条款
LambdaQueryWrapper<XzdContractClause> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, old.getId());
xzdContractClauseService.remove(lambdaQueryWrapper2);
//支付节点
LambdaQueryWrapper<XzdSjhtZfjd> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, old.getId());
xzdSjhtZfjdService.remove(lambdaQueryWrapper3);
//合同条款-扣款与奖励项
LambdaQueryWrapper<XzdDeductionItems> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(XzdDeductionItems::getContractDetailsId, old.getId());
xzdDeductionItemsService.remove(lambdaQueryWrapper4);
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().eq(XzdBusinessChange::getContractChangeId, old.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(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()) {
for (XzdSjhtZfjd clause : bo.getZftk()) {
clause.setMainId(update.getId());
}
xzdSjhtZfjdService.saveBatch(bo.getZftk());
}
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(bo.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//印章信息
if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()) {
for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) {
xzdBusinessChange.setContractChangeId(update.getId());
xzdBusinessChange.setType("15");
}
xzdBusinessChangeService.saveBatch(bo.getSealInfo());
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdSjContractInfo 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) {
XzdSjContractInfoVo 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<XzdSjhtZfjd> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSjhtZfjd::getMainId, ids);
xzdSjhtZfjdService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
//印章信息
xzdBusinessChangeService.remove(new LambdaQueryWrapper<XzdBusinessChange>().in(XzdBusinessChange::getContractChangeId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取合同条款内容
* @param vo
*/
private void getHttk(XzdSjContractInfoVo 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<XzdSjhtZfjd> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, vo.getId());
List<XzdSjhtZfjd> list2 = xzdSjhtZfjdService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
//合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId()));
vo.setHtbgqds(list4);
//印章信息
LambdaQueryWrapper<XzdBusinessChange> lambdaQueryWrapper4 = new LambdaQueryWrapper<>();
lambdaQueryWrapper4.eq(XzdBusinessChange::getContractChangeId, vo.getId());
lambdaQueryWrapper4.eq(XzdBusinessChange::getType, "15");
List<XzdBusinessChange> list3 = xzdBusinessChangeService.list(lambdaQueryWrapper4);
if (list3 != null && !list3.isEmpty()){
for (XzdBusinessChange businessChange : list3) {
XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId());
if (sealVo != null){
businessChange.setSealName(sealVo.getYzName());
}
}
vo.setSealInfo(list3);
}
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdSjContractInfo')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("设计合同信息审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdSjContractInfo xzdCsContractInformation = baseMapper.selectById(Long.valueOf(id));
if (xzdCsContractInformation == null){return;}
xzdCsContractInformation.setAuditStatus(processEvent.getStatus());
baseMapper.updateById(xzdCsContractInformation);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdSjContractInfo')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("设计合同信息审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdSjContractInfo')")
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
log.info("设计合同信息计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -0,0 +1,239 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.event.ProcessDeleteEvent;
import org.dromara.common.core.domain.event.ProcessEvent;
import org.dromara.common.core.domain.event.ProcessTaskEvent;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend;
import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendVo;
import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService;
import org.dromara.xzd.enums.ZxdEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractSuspendBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractSuspendVo;
import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend;
import org.dromara.xzd.comprehensive.mapper.XzdSjContractSuspendMapper;
import org.dromara.xzd.comprehensive.service.IXzdSjContractSuspendService;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* 设计合同终止Service业务层处理
*
* @author Lion Li
* @date 2025-11-19
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class XzdSjContractSuspendServiceImpl extends ServiceImpl<XzdSjContractSuspendMapper, XzdSjContractSuspend> implements IXzdSjContractSuspendService {
private final XzdSjContractSuspendMapper baseMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdSjContractInfoService xzdSjContractInfoService;
/**
* 查询设计合同终止
*
* @param id 主键
* @return 设计合同终止
*/
@Override
public XzdSjContractSuspendVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询设计合同终止列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同终止分页列表
*/
@Override
public TableDataInfo<XzdSjContractSuspendVo> queryPageList(XzdSjContractSuspendBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSjContractSuspend> lqw = buildQueryWrapper(bo);
Page<XzdSjContractSuspendVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的设计合同终止列表
*
* @param bo 查询条件
* @return 设计合同终止列表
*/
@Override
public List<XzdSjContractSuspendVo> queryList(XzdSjContractSuspendBo bo) {
LambdaQueryWrapper<XzdSjContractSuspend> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdSjContractSuspend> buildQueryWrapper(XzdSjContractSuspendBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdSjContractSuspend> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdSjContractSuspend::getId);
lqw.eq(bo.getContractInformationId() != null, XzdSjContractSuspend::getContractInformationId, bo.getContractInformationId());
lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdSjContractSuspend::getReceiptsCode, bo.getReceiptsCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSjContractSuspend::getTitle, bo.getTitle());
lqw.eq(bo.getDocumentDate() != null, XzdSjContractSuspend::getDocumentDate, bo.getDocumentDate());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSjContractSuspend::getContractName, bo.getContractName());
lqw.eq(bo.getTerminationDate() != null, XzdSjContractSuspend::getTerminationDate, bo.getTerminationDate());
lqw.eq(StringUtils.isNotBlank(bo.getProject()), XzdSjContractSuspend::getProject, bo.getProject());
lqw.eq(bo.getArtyBUnit() != null, XzdSjContractSuspend::getArtyBUnit, bo.getArtyBUnit());
lqw.eq(bo.getPartyAUnit() != null, XzdSjContractSuspend::getPartyAUnit, bo.getPartyAUnit());
lqw.eq(StringUtils.isNotBlank(bo.getTerminationCause()), XzdSjContractSuspend::getTerminationCause, bo.getTerminationCause());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSjContractSuspend::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSjContractSuspend::getProjectType, bo.getProjectType());
lqw.eq(bo.getCumulativeSettlementAmount() != null, XzdSjContractSuspend::getCumulativeSettlementAmount, bo.getCumulativeSettlementAmount());
lqw.eq(bo.getDeptId() != null, XzdSjContractSuspend::getDeptId, bo.getDeptId());
lqw.eq(bo.getCumulativePaymentAmount() != null, XzdSjContractSuspend::getCumulativePaymentAmount, bo.getCumulativePaymentAmount());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSjContractSuspend::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdSjContractSuspend::getAuditStatus, bo.getAuditStatus());
return lqw;
}
/**
* 新增设计合同终止
*
* @param bo 设计合同终止
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(XzdSjContractSuspendBo bo) {
XzdSjContractSuspend add = MapstructUtils.convert(bo, XzdSjContractSuspend.class);
String banBen = BatchNumberGenerator.generateBatchNumber("SJHTZZ-");
add.setReceiptsCode(banBen);
LambdaQueryWrapper<XzdSjContractSuspend> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(XzdSjContractSuspend::getContractInformationId, bo.getContractInformationId());
if (baseMapper.selectCount(lambdaQueryWrapper) > 1){
throw new RuntimeException("该合同已终止");
}
XzdSjContractInfo byId = xzdSjContractInfoService.getById(bo.getContractInformationId());
if (byId != null){
byId.setHtzt(ZxdEnum.HETONGZTZZ.getTypeValue());
xzdSjContractInfoService.updateById(byId);
}
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改设计合同终止
*
* @param bo 设计合同终止
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdSjContractSuspendBo bo) {
XzdSjContractSuspend update = MapstructUtils.convert(bo, XzdSjContractSuspend.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdSjContractSuspend 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) {
XzdSjContractSuspendVo 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;
}
/**
* 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等)
* 正常使用只需#processEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdSjContractSuspend')")
public void processPlansHandlErequipmentList(ProcessEvent processEvent) {
log.info("综合服务合同终止审核任务执行了{}", processEvent.toString());
String id = processEvent.getBusinessId();
XzdSjContractSuspend xzdCsContractSuspend = baseMapper.selectById(Long.valueOf(id));
if (xzdCsContractSuspend == null){return;}
xzdCsContractSuspend.setAuditStatus(processEvent.getStatus());
baseMapper.updateById(xzdCsContractSuspend);
}
/**
* 执行任务创建监听
* 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断
* 在方法中判断流程节点key
* if ("xxx".equals(processTaskEvent.getNodeCode())) {
* //执行业务逻辑
* }
*
* @param processTaskEvent 参数
*/
@org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdSjContractSuspend')")
public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) {
log.info("综合服务合同终止审核任务创建了{}", processTaskEvent.toString());
}
/**
* 监听删除流程事件
* 正常使用只需#processDeleteEvent.flowCode=='leave1'
* 示例为了方便则使用startsWith匹配了全部示例key
*
* @param processDeleteEvent 参数
*/
@EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdSjContractSuspend')")
public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) {
log.info("综合服务合同终止计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString());
}
}

View File

@ -0,0 +1,136 @@
package org.dromara.xzd.comprehensive.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.dromara.xzd.comprehensive.domain.bo.XzdSjhtZfjdBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdSjhtZfjdVo;
import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd;
import org.dromara.xzd.comprehensive.mapper.XzdSjhtZfjdMapper;
import org.dromara.xzd.comprehensive.service.IXzdSjhtZfjdService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 设计合同付款节点信息Service业务层处理
*
* @author Lion Li
* @date 2025-11-19
*/
@RequiredArgsConstructor
@Service
public class XzdSjhtZfjdServiceImpl extends ServiceImpl<XzdSjhtZfjdMapper, XzdSjhtZfjd> implements IXzdSjhtZfjdService {
private final XzdSjhtZfjdMapper baseMapper;
/**
* 查询设计合同付款节点信息
*
* @param id 主键
* @return 设计合同付款节点信息
*/
@Override
public XzdSjhtZfjdVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询设计合同付款节点信息列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 设计合同付款节点信息分页列表
*/
@Override
public TableDataInfo<XzdSjhtZfjdVo> queryPageList(XzdSjhtZfjdBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSjhtZfjd> lqw = buildQueryWrapper(bo);
Page<XzdSjhtZfjdVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的设计合同付款节点信息列表
*
* @param bo 查询条件
* @return 设计合同付款节点信息列表
*/
@Override
public List<XzdSjhtZfjdVo> queryList(XzdSjhtZfjdBo bo) {
LambdaQueryWrapper<XzdSjhtZfjd> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdSjhtZfjd> buildQueryWrapper(XzdSjhtZfjdBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdSjhtZfjd> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdSjhtZfjd::getId);
lqw.eq(bo.getMainId() != null, XzdSjhtZfjd::getMainId, bo.getMainId());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentStage()), XzdSjhtZfjd::getPaymentStage, bo.getPaymentStage());
lqw.eq(StringUtils.isNotBlank(bo.getStageDesc()), XzdSjhtZfjd::getStageDesc, bo.getStageDesc());
lqw.eq(bo.getPaymentRatio() != null, XzdSjhtZfjd::getPaymentRatio, bo.getPaymentRatio());
lqw.eq(StringUtils.isNotBlank(bo.getTriggerConditions()), XzdSjhtZfjd::getTriggerConditions, bo.getTriggerConditions());
lqw.eq(bo.getTimeLimit() != null, XzdSjhtZfjd::getTimeLimit, bo.getTimeLimit());
return lqw;
}
/**
* 新增设计合同付款节点信息
*
* @param bo 设计合同付款节点信息
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdSjhtZfjdBo bo) {
XzdSjhtZfjd add = MapstructUtils.convert(bo, XzdSjhtZfjd.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改设计合同付款节点信息
*
* @param bo 设计合同付款节点信息
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdSjhtZfjdBo bo) {
XzdSjhtZfjd update = MapstructUtils.convert(bo, XzdSjhtZfjd.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdSjhtZfjd 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

@ -17,8 +17,11 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.xzd.domain.XzdSupplierOpenBank;
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
import org.dromara.xzd.domain.vo.XzdPoiAreaVo;
import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo;
import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.IXzdSupplierOpenBankService;
import org.springframework.context.annotation.Lazy;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -38,6 +41,16 @@ public class XzdSupplierOpenBankController extends BaseController {
private final IXzdSupplierOpenBankService xzdSupplierOpenBankService;
/**
* 查询区域列表
*/
@SaCheckPermission("xzd:supplierOpenBank:list")
@GetMapping("/getPoiAreaList")
public R<List<XzdPoiAreaVo>> getPoiAreaList() {
return R.ok(xzdSupplierOpenBankService.getPoiAreaList());
}
/**
* 查询供应商信息-开户银行列表
*/

View File

@ -18,6 +18,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
import org.dromara.xzd.domain.bo.XzdYhxxBo;
import org.dromara.xzd.domain.vo.XzdPoiAreaVo;
import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo;
import org.dromara.xzd.domain.vo.XzdYhxxVo;
import org.dromara.xzd.service.IXzdSupplierOpenBankService;
@ -48,8 +49,17 @@ public class XzdYhxxController extends BaseController {
*/
@SaCheckPermission(value = {"yhzjb:yhxxzjb:add","yhzjb:yhxxzjb:edit","yhzjb:yhxxzjb:list"},mode = SaMode.OR)
@GetMapping("/getOpenBankList")
public TableDataInfo<XzdSupplierOpenBankVo> getOpenBankList(XzdSupplierOpenBankBo bo, PageQuery pageQuery) {
return xzdSupplierOpenBankService.queryPageList(bo, pageQuery);
public R<List<String>> getOpenBankList(XzdSupplierOpenBankBo bo) {
return R.ok(xzdSupplierOpenBankService.getOpenBankList(bo));
}
/**
* 查询区域列表
*/
@SaCheckPermission(value = {"yhzjb:yhxxzjb:add","yhzjb:yhxxzjb:edit","yhzjb:yhxxzjb:list"},mode = SaMode.OR)
@GetMapping("/getPoiAreaList")
public R<List<XzdPoiAreaVo>> getPoiAreaList() {
return R.ok(xzdSupplierOpenBankService.getPoiAreaList());
}
/**

View File

@ -54,7 +54,7 @@ public class XzdBusinessChange extends BaseEntity {
private String remark;
/**
* 类型4、分包合同信息,5、分包合同变更7、采购合同信息8、采购合同变更10、综合服务合同信息11、综合服务合同变更
* 类型4、分包合同信息,5、分包合同变更7、采购合同信息8、采购合同变更10、综合服务合同信息11、综合服务合同变更,15、设计合同信息16设计合同变更
*/
private String type;

View File

@ -38,6 +38,11 @@ public class XzdSupplierOpenBank extends BaseEntity {
*/
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户账号
*/

View File

@ -34,9 +34,14 @@ public class XzdYhxx extends BaseEntity {
private Long mainId;
/**
* 银行id
* 开户银行
*/
private Long yhId;
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户账号

View File

@ -35,6 +35,10 @@ public class XzdSupplierOpenBankBo extends BaseEntity {
*/
@NotBlank(message = "开户银行不能为空", groups = { AddGroup.class, EditGroup.class })
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户账号

View File

@ -28,9 +28,14 @@ public class XzdYhxxBo extends BaseEntity {
private Long mainId;
/**
* 银行id
* 开户银行
*/
private Long yhId;
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户账号

View File

@ -10,6 +10,7 @@ import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -71,7 +72,7 @@ public class XzdPoiAreaVo implements Serializable {
private String islast;
private List<XzdPoiAreaVo> children;
private List<XzdPoiAreaVo> children = new ArrayList<>();
}

View File

@ -41,6 +41,11 @@ public class XzdSupplierOpenBankVo implements Serializable {
@ExcelProperty(value = "开户银行")
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户账号
*/

View File

@ -41,12 +41,14 @@ public class XzdYhxxVo implements Serializable {
private String mainName;
/**
* 银行id
* 开户银行
*/
@ExcelProperty(value = "银行id")
private Long yhId;
@Translation(type = TransConstant.XZD_SUPPLIER_OPEN_BANK_ID_TO_NAME, mapper = "yhId")
private String yhName;
private String openBank;
/**
* 支行名称
*/
private String branchName;
/**
* 开户账号

View File

@ -9,6 +9,8 @@ public enum XzdClassEnum {
CS_CONTRACT_INFORMATION("xzd_cs_contract_information"), //综合服务合同信息
CS_CONTRACT_CHANGE("xzd_cs_contract_change"), //综合服务合同变更
SJ_CONTRACT_INFO("xzd_sj_contract_info"), //设计合同信息
SJ_CONTRACT_CHANGE("xzd_sj_contract_change"), //设计合同变更
JS_ZHFW_JINDU("xzd_js_zhfw_jindu"), //综合服务合同进度结算
JS_CG_JUNGON("xzd_js_cg_jungon"), //采购合同竣工结算
XZD_JS_CG_JUNGON_EDIT("xzd_js_cg_jungon_edit"), //采购合同竣工结算

View File

@ -9,6 +9,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
import java.util.Set;
/**
* 区域Service接口
@ -67,4 +68,6 @@ public interface IXzdPoiAreaService extends IService<XzdPoiArea>{
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
List<XzdPoiAreaVo> getAreaListByName(Set<String> areaName);
}

View File

@ -6,6 +6,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.xzd.domain.XzdSupplierOpenBank;
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
import org.dromara.xzd.domain.vo.XzdPoiAreaVo;
import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo;
import java.util.Collection;
@ -71,4 +72,7 @@ public interface IXzdSupplierOpenBankService extends IService<XzdSupplierOpenBan
String queryNameById(Long id);
List<XzdPoiAreaVo> getPoiAreaList();
List<String> getOpenBankList(XzdSupplierOpenBankBo bo);
}

View File

@ -485,7 +485,8 @@ public class XzdContractDetailsServiceImpl extends ServiceImpl<XzdContractDetail
List<XzdSupplierOpenBank> xzdSupplierOpenBanks = new ArrayList<>();
for (XzdYhxx xzdYhxx : xzdYhxxList) {
XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getById(xzdYhxx.getYhId());
XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper<XzdSupplierOpenBank>()
.eq(XzdSupplierOpenBank::getOpenBank, xzdYhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,xzdYhxx.getBranchName()));
if (byId != null){
byId.setAccount(xzdYhxx.getAccount());
xzdSupplierOpenBanks.add(byId);

View File

@ -265,7 +265,8 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList {
ArrayList<XzdYhxx> xzdYhxxes = new ArrayList<>();
for (XzdSupplierOpenBank bank : xzdSettlementInfo.getOpenBanks()) {
XzdYhxx xzdYhxxBo = new XzdYhxx();
xzdYhxxBo.setYhId(bank.getId());
xzdYhxxBo.setOpenBank(bank.getOpenBank());
xzdYhxxBo.setBranchName(bank.getBranchName());
xzdYhxxBo.setMainId(id);
xzdYhxxBo.setSfmr(bank.getIsDefault());
xzdYhxxBo.setAccount(bank.getAccount());
@ -493,7 +494,8 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList {
ArrayList<XzdYhxx> xzdYhxxes = new ArrayList<>();
for (XzdSupplierOpenBank bank : xzdSettlementInfo.getOpenBanks()) {
XzdYhxx xzdYhxxBo = new XzdYhxx();
xzdYhxxBo.setYhId(bank.getId());
xzdYhxxBo.setOpenBank(bank.getOpenBank());
xzdYhxxBo.setBranchName(bank.getBranchName());
xzdYhxxBo.setMainId(dto.getXzdCustomerinformation().getId());
xzdYhxxBo.setSfmr(bank.getIsDefault());
xzdYhxxBo.setAccount(bank.getAccount());
@ -607,7 +609,8 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList {
if (xzdYhxxList!= null && !xzdYhxxList.isEmpty()) {
List<XzdSupplierOpenBank> openBanks = new ArrayList<>();
for (XzdYhxx yhxx : xzdYhxxList) {
XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getById(yhxx.getYhId());
XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper<XzdSupplierOpenBank>()
.eq(XzdSupplierOpenBank::getOpenBank, yhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,yhxx.getBranchName()));
if (byId != null){
byId.setAccount(yhxx.getAccount());
byId.setIsDefault(yhxx.getSfmr());

View File

@ -16,9 +16,8 @@ import org.dromara.xzd.domain.XzdPoiArea;
import org.dromara.xzd.mapper.XzdPoiAreaMapper;
import org.dromara.xzd.service.IXzdPoiAreaService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.*;
import java.util.stream.Collectors;
/**
* 区域Service业务层处理
@ -133,4 +132,96 @@ public class XzdPoiAreaServiceImpl extends ServiceImpl<XzdPoiAreaMapper, XzdPoiA
}
return baseMapper.deleteByIds(ids) > 0;
}
@Override
public List<XzdPoiAreaVo> getAreaListByName(Set<String> areaName) {
return buildAreaTreeByProvinceSet(areaName);
}
/**
* 构建区域树形结构顶层parentid=0
*/
public List<XzdPoiAreaVo> buildAreaTree() {
// 1. 查询所有区域数据
List<XzdPoiAreaVo> allAreas = baseMapper.selectVoList();// 从数据库查询全量数据
// 2. 按parentid分组key=parentidvalue=该父节点下的所有子区域
Map<Long, List<XzdPoiAreaVo>> parentMap = allAreas.stream()
.collect(Collectors.groupingBy(XzdPoiAreaVo::getParentid));
// 3. 从顶层节点parentid=0开始构建树形结构
List<XzdPoiAreaVo> rootTrees = new ArrayList<>();
// 获取parentid=0的所有顶层区域
List<XzdPoiAreaVo> rootAreas = parentMap.getOrDefault(0, Collections.emptyList());
for (XzdPoiAreaVo rootArea : rootAreas) {
// 递归为当前节点挂载子节点
buildChildren(rootArea, parentMap);
rootTrees.add(rootArea);
}
return rootTrees;
}
/**
* 递归为当前节点挂载子节点
* @param currentTree 当前节点
* @param parentMap 按parentid分组的全量数据
*/
private void buildChildren(XzdPoiAreaVo currentTree, Map<Long, List<XzdPoiAreaVo>> parentMap) {
// 当前节点的adcode子节点的parentid应等于此值
Long currentAdcode = currentTree.getAdcode();
// 获取当前节点的所有子区域parentid=currentAdcode
List<XzdPoiAreaVo> childAreas = parentMap.getOrDefault(currentAdcode, Collections.emptyList());
for (XzdPoiAreaVo childArea : childAreas) {
// 递归为子节点挂载它的子节点(深度优先)
buildChildren(childArea, parentMap);
// 将子节点添加到当前节点的children列表
currentTree.getChildren().add(childArea);
}
}
/**
* 按省份名称集合过滤,返回所有匹配省份及其下属区域的树形结构
* @param provinceNames 省份名称集合(如 {"江苏省", "广东省"}
* @return 多个省份的子树列表(无匹配时返回空列表)
*/
public List<XzdPoiAreaVo> buildAreaTreeByProvinceSet(Set<String> provinceNames) {
// 1. 边界处理:集合为空时直接返回空
if (provinceNames == null || provinceNames.isEmpty()) {
return Collections.emptyList();
}
// 2. 查询所有区域数据
List<XzdPoiAreaVo> allAreas = baseMapper.selectVoList();// 从数据库查询全量数据
if (allAreas.isEmpty()) {
return Collections.emptyList();
}
// 3. 按parentid分组便于快速查找子节点
Map<Long, List<XzdPoiAreaVo>> parentMap = allAreas.stream()
.collect(Collectors.groupingBy(XzdPoiAreaVo::getParentid));
// 4. 匹配集合中所有符合条件的省份节点(名称在集合中 + 层级为“省”)
List<XzdPoiAreaVo> targetProvinces = allAreas.stream()
.filter(area -> provinceNames.contains(area.getName()) // 名称在集合中
&& "province".equals(area.getLevel())) // 层级为省份(需按实际数据调整)
.toList();
// 5. 若无匹配的省份,返回空列表
if (targetProvinces.isEmpty()) {
return Collections.emptyList();
}
// 6. 为每个匹配的省份构建子树,并汇总结果
List<XzdPoiAreaVo> resultTrees = new ArrayList<>();
for (XzdPoiAreaVo province : targetProvinces) {
buildChildren(province, parentMap); // 递归挂载下属区域
resultTrees.add(province);
}
return resultTrees;
}
}

View File

@ -288,7 +288,8 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
if(bo.getSettlement().getOpenBanks() != null && !bo.getSettlement().getOpenBanks().isEmpty()){
for (XzdSupplierOpenBank bank : bo.getSettlement().getOpenBanks()) {
XzdYhxxBo xzdYhxxBo = new XzdYhxxBo();
xzdYhxxBo.setYhId(bank.getId());
xzdYhxxBo.setOpenBank(bank.getOpenBank());
xzdYhxxBo.setBranchName(bank.getBranchName());
xzdYhxxBo.setMainId(add.getId());
xzdYhxxBo.setSfmr(bank.getIsDefault());
xzdYhxxBo.setAccount(bank.getAccount());
@ -491,7 +492,8 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
//保存此次的
for (XzdSupplierOpenBank bank : bo.getSettlement().getOpenBanks()) {
XzdYhxxBo xzdYhxxBo = new XzdYhxxBo();
xzdYhxxBo.setYhId(bank.getId());
xzdYhxxBo.setOpenBank(bank.getOpenBank());
xzdYhxxBo.setBranchName(bank.getBranchName());
xzdYhxxBo.setMainId(update.getId());
xzdYhxxBo.setSfmr(bank.getIsDefault());
xzdYhxxBo.setAccount(bank.getAccount());
@ -932,7 +934,8 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
bankLambdaQueryWrapper.eq(XzdYhxx::getSfmr,"1");
XzdYhxx xzdYhxx = xzdYhxxService.getOne(bankLambdaQueryWrapper);
if (xzdYhxx!= null) {
XzdSupplierOpenBank openBank = xzdSupplierOpenBankService.getById(xzdYhxx.getYhId());
XzdSupplierOpenBank openBank = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper<XzdSupplierOpenBank>()
.eq(XzdSupplierOpenBank::getOpenBank, xzdYhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,xzdYhxx.getBranchName()));
if (openBank != null) {
vo.setKhyh(openBank.getOpenBank());
vo.setKhhzh(xzdYhxx.getAccount());
@ -946,7 +949,8 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl<XzdSupplierInfoMappe
if (xzdYhxxList!= null && !xzdYhxxList.isEmpty()) {
List<XzdSupplierOpenBank> openBanks = new ArrayList<>();
for (XzdYhxx yhxx : xzdYhxxList) {
XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getById(yhxx.getYhId());
XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper<XzdSupplierOpenBank>()
.eq(XzdSupplierOpenBank::getOpenBank, xzdYhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,xzdYhxx.getBranchName()));
if (byId != null){
byId.setAccount(yhxx.getAccount());
byId.setIsDefault(yhxx.getSfmr());

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.service.XzdSupplierOpenBankService;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.SpringUtils;
@ -16,15 +18,17 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.xzd.domain.XzdSupplierOpenBank;
import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo;
import org.dromara.xzd.domain.vo.XzdPoiAreaVo;
import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo;
import org.dromara.xzd.mapper.XzdSupplierOpenBankMapper;
import org.dromara.xzd.service.IXzdCorrespondentList;
import org.dromara.xzd.service.IXzdPoiAreaService;
import org.dromara.xzd.service.IXzdSupplierOpenBankService;
import org.dromara.xzd.utilS.AreaUtil;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 供应商信息-开户银行Service业务层处理
@ -38,6 +42,9 @@ public class XzdSupplierOpenBankServiceImpl extends ServiceImpl<XzdSupplierOpenB
private final XzdSupplierOpenBankMapper baseMapper;
@Lazy
private final IXzdPoiAreaService xzdPoiAreaService;
/**
* 查询供应商信息-开户银行
*
@ -82,6 +89,7 @@ public class XzdSupplierOpenBankServiceImpl extends ServiceImpl<XzdSupplierOpenB
lqw.eq(StringUtils.isNotBlank(bo.getOpenBank()), XzdSupplierOpenBank::getOpenBank, bo.getOpenBank());
lqw.eq(StringUtils.isNotBlank(bo.getAccount()), XzdSupplierOpenBank::getAccount, bo.getAccount());
lqw.like(StringUtils.isNotBlank(bo.getPersonName()), XzdSupplierOpenBank::getPersonName, bo.getPersonName());
lqw.like(StringUtils.isNotBlank(bo.getBranchName()), XzdSupplierOpenBank::getBranchName, bo.getBranchName());
lqw.eq(StringUtils.isNotBlank(bo.getBankSf()), XzdSupplierOpenBank::getBankSf, bo.getBankSf());
lqw.eq(StringUtils.isNotBlank(bo.getBankCs()), XzdSupplierOpenBank::getBankCs, bo.getBankCs());
lqw.eq(StringUtils.isNotBlank(bo.getBankQx()), XzdSupplierOpenBank::getBankQx, bo.getBankQx());
@ -145,6 +153,13 @@ public class XzdSupplierOpenBankServiceImpl extends ServiceImpl<XzdSupplierOpenB
*/
private void validEntityBeforeSave(XzdSupplierOpenBank entity){
//TODO 做一些数据校验,如唯一约束
Long count = baseMapper.selectCount(new LambdaQueryWrapper<XzdSupplierOpenBank>()
.eq(XzdSupplierOpenBank::getOpenBank, entity.getOpenBank())
.eq(XzdSupplierOpenBank::getBranchName, entity.getBranchName())
.ne(entity.getId() != null,XzdSupplierOpenBank::getId, entity.getId()));
if (count > 0){
throw new ServiceException("该银行的支行名称已存在");
}
}
/**
@ -167,6 +182,39 @@ public class XzdSupplierOpenBankServiceImpl extends ServiceImpl<XzdSupplierOpenB
return baseMapper.selectVoById(id).getOpenBank();
}
@Override
public List<XzdPoiAreaVo> getPoiAreaList() {
Set<String> areaName = new HashSet<>();
List<XzdSupplierOpenBank> xzdSupplierOpenBanks = baseMapper.selectList();
if (CollectionUtil.isEmpty(xzdSupplierOpenBanks)) {
return null;
}
xzdSupplierOpenBanks.stream().forEach(xzdSupplierOpenBank -> {areaName.add(xzdSupplierOpenBank.getBankSf());});
return xzdPoiAreaService.getAreaListByName(areaName);
}
@Override
public List<String> getOpenBankList(XzdSupplierOpenBankBo bo) {
List<XzdSupplierOpenBankVo> vos = baseMapper.selectVoList(new LambdaQueryWrapper<XzdSupplierOpenBank>()
.select(StringUtils.isBlank(bo.getOpenBank()) ? XzdSupplierOpenBank::getOpenBank:XzdSupplierOpenBank::getBranchName)
.eq(StringUtils.isNotBlank(bo.getBankSf()), XzdSupplierOpenBank::getBankSf, bo.getBankSf())
.eq(StringUtils.isNotBlank(bo.getBankCs()), XzdSupplierOpenBank::getBankCs, bo.getBankCs())
.eq(StringUtils.isNotBlank(bo.getBankQx()), XzdSupplierOpenBank::getBankQx, bo.getBankQx())
.eq(StringUtils.isNotBlank(bo.getOpenBank()), XzdSupplierOpenBank::getOpenBank, bo.getOpenBank())
.groupBy(StringUtils.isBlank(bo.getOpenBank()) ? XzdSupplierOpenBank::getOpenBank:XzdSupplierOpenBank::getBranchName));
List<String> names = new ArrayList<>();
if (StringUtils.isNotBlank(bo.getOpenBank())) {
for (XzdSupplierOpenBankVo vo : vos) {
names.add(vo.getBranchName());
}
}else {
for (XzdSupplierOpenBankVo vo : vos) {
names.add(vo.getOpenBank());
}
}
return names;
}
@Override
public String selectNameByIds(String ids) {
List<String> list = new ArrayList<>();

View File

@ -106,8 +106,9 @@ public class XzdYhxxServiceImpl extends ServiceImpl<XzdYhxxMapper, XzdYhxx> impl
LambdaQueryWrapper<XzdYhxx> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdYhxx::getId);
lqw.eq(bo.getMainId() != null, XzdYhxx::getMainId, bo.getMainId());
lqw.eq(bo.getYhId() != null, XzdYhxx::getYhId, bo.getYhId());
lqw.eq(StringUtils.isNotBlank(bo.getSfmr()), XzdYhxx::getSfmr, bo.getSfmr());
lqw.eq(StringUtils.isNotBlank(bo.getOpenBank()), XzdYhxx::getOpenBank, bo.getOpenBank());
lqw.eq(StringUtils.isNotBlank(bo.getBranchName()), XzdYhxx::getBranchName, bo.getBranchName());
lqw.like(StringUtils.isNotBlank(bo.getAccount()), XzdYhxx::getAccount, bo.getAccount());
lqw.like(StringUtils.isNotBlank(bo.getKhhm()), XzdYhxx::getKhhm, bo.getKhhm());
lqw.eq(StringUtils.isNotBlank(bo.getType()), XzdYhxx::getType, bo.getType());

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.XzdSjContractChangeMapper">
</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.XzdSjContractInfoMapper">
</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.XzdSjContractSuspendMapper">
</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.XzdSjhtZfjdMapper">
</mapper>