From 1b590bbcbd52b58025e969db637bf3e1f747ba2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E5=B1=95=E8=88=AA?= <2426745133@qq.com> Date: Wed, 15 Oct 2025 17:30:17 +0800 Subject: [PATCH] =?UTF-8?q?10-15-=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../XzdContractAccountController.java | 105 ++++++++++ .../xzd/domain/XzdContractAccount.java | 161 +++++++++++++++ .../xzd/domain/bo/XzdContractAccountBo.java | 143 +++++++++++++ .../xzd/domain/vo/XzdContractAccountVo.java | 180 +++++++++++++++++ .../xzd/mapper/XzdContractAccountMapper.java | 15 ++ .../service/IXzdContractAccountService.java | 70 +++++++ .../impl/XzdContractAccountServiceImpl.java | 189 ++++++++++++++++++ 7 files changed, 863 insertions(+) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdContractAccountController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractAccount.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractAccountMapper.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractAccountService.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdContractAccountController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdContractAccountController.java new file mode 100644 index 00000000..6e4cc3cb --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdContractAccountController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xzd.domain.vo.XzdContractAccountVo; +import org.dromara.xzd.domain.bo.XzdContractAccountBo; +import org.dromara.xzd.service.IXzdContractAccountService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 承包合同竣工结算 + * + * @author Lion Li + * @date 2025-10-15 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/contractAccount") +public class XzdContractAccountController extends BaseController { + + private final IXzdContractAccountService xzdContractAccountService; + + /** + * 查询承包合同竣工结算列表 + */ + @SaCheckPermission("xzd:contractAccount:list") + @GetMapping("/list") + public TableDataInfo list(XzdContractAccountBo bo, PageQuery pageQuery) { + return xzdContractAccountService.queryPageList(bo, pageQuery); + } + + /** + * 导出承包合同竣工结算列表 + */ + @SaCheckPermission("xzd:contractAccount:export") + @Log(title = "承包合同竣工结算", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdContractAccountBo bo, HttpServletResponse response) { + List list = xzdContractAccountService.queryList(bo); + ExcelUtil.exportExcel(list, "承包合同竣工结算", XzdContractAccountVo.class, response); + } + + /** + * 获取承包合同竣工结算详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("xzd:contractAccount:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdContractAccountService.queryById(id)); + } + + /** + * 新增承包合同竣工结算 + */ + @SaCheckPermission("xzd:contractAccount:add") + @Log(title = "承包合同竣工结算", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdContractAccountBo bo) { + return toAjax(xzdContractAccountService.insertByBo(bo)); + } + + /** + * 修改承包合同竣工结算 + */ + @SaCheckPermission("xzd:contractAccount:edit") + @Log(title = "承包合同竣工结算", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdContractAccountBo bo) { + return toAjax(xzdContractAccountService.updateByBo(bo)); + } + + /** + * 删除承包合同竣工结算 + * + * @param ids 主键串 + */ + @SaCheckPermission("xzd:contractAccount:remove") + @Log(title = "承包合同竣工结算", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdContractAccountService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractAccount.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractAccount.java new file mode 100644 index 00000000..211cbab3 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractAccount.java @@ -0,0 +1,161 @@ +package org.dromara.xzd.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +import java.io.Serial; + +/** + * 承包合同竣工结算对象 xzd_contract_account + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_contract_account") +public class XzdContractAccount extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date documentDate; + + /** + * 合同id + */ + private Long contractId; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 部门id + */ + private Long deptId; + + /** + * 送审造价 + */ + private Long submittedCost; + + /** + * 审定总价 + */ + private Long totalPrice; + + /** + * 审定日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date approvedDate; + + /** + * 项目id + */ + private Long projectId; + + /** + * 工程项目 + */ + private String projectName; + + /** + * 甲方id + */ + private Long firstPartyId; + + /** + * 甲方单位(客户) + */ + private String firstParty; + + /** + * 乙方id + */ + private Long secondPartyId; + + /** + * 乙方单位(供应商) + */ + private String secondParty; + + /** + * 支付条款id + */ + private Long terms; + + /** + * 本期应收金额 + */ + private Long amountReceivable; + + /** + * 竣工日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date completionDate; + + /** + * 备注 + */ + private String remark; + + /** + * 本期决算总额 + */ + private Long settlementAmount; + + /** + * 质保金金额(客户) + */ + private Long warrantyAmount; + + /** + * 业主单位(客户) + */ + private Long owner; + + /** + * 监理单位(客户) + */ + private Long supervision; + + /** + * 审核单位(客户) + */ + private Long review; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java new file mode 100644 index 00000000..b937f54c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractAccountBo.java @@ -0,0 +1,143 @@ +package org.dromara.xzd.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.XzdContractAccount; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 承包合同竣工结算业务对象 xzd_contract_account + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdContractAccount.class, reverseConvertGenerate = false) +public class XzdContractAccountBo extends BaseEntity { + + /** + * id + */ + private Long id; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date documentDate; + + /** + * 合同编号id + */ + @NotNull(message = "合同编号id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long contractId; + + /** + * 部门id + */ + @NotNull(message = "部门id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long deptId; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 送审造价 + */ + private Long submittedCost; + + /** + * 审定总价 + */ + private Long totalPrice; + + /** + * 审定日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date approvedDate; + + /** + * 工程项目 + */ + private String projectName; + + /** + * 甲方单位(客户) + */ + private String firstParty; + + /** + * 乙方单位(供应商) + */ + private String secondParty; + + /** + * 支付条款id + */ + private Long terms; + + /** + * 本期应收金额 + */ + private Long amountReceivable; + + /** + * 竣工日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date completionDate; + + /** + * 备注 + */ + private String remark; + + /** + * 本期决算总额 + */ + private Long settlementAmount; + + /** + * 质保金金额(客户) + */ + private Long warrantyAmount; + + /** + * 业主单位(客户) + */ + private Long owner; + + /** + * 监理单位(客户) + */ + private Long supervision; + + /** + * 审核单位(客户) + */ + private Long review; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java new file mode 100644 index 00000000..ac34e244 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractAccountVo.java @@ -0,0 +1,180 @@ +package org.dromara.xzd.domain.vo; + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.XzdContractAccount; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.xzd.domain.XzdSettlementRules; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 承包合同竣工结算视图对象 xzd_contract_account + * + * @author Lion Li + * @date 2025-10-15 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdContractAccount.class) +public class XzdContractAccountVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date documentDate; + + /** + * 合同编号id + */ + @ExcelProperty(value = "合同编号id") + private Long contractId; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 送审造价 + */ + @ExcelProperty(value = "送审造价") + private Long submittedCost; + + /** + * 审定总价 + */ + @ExcelProperty(value = "审定总价") + private Long totalPrice; + + /** + * 审定日期 + */ + @ExcelProperty(value = "审定日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date approvedDate; + + /** + * 项目ID + */ + private Long projectId; + + /** + * 工程项目 + */ + @ExcelProperty(value = "工程项目") + private String projectName; + + /** + * 甲方单位(客户) + */ + @ExcelProperty(value = "甲方单位(客户)") + private String firstParty; + + /** + * 乙方单位(供应商) + */ + @ExcelProperty(value = "乙方单位(供应商)") + private String secondParty; + + /** + * 支付条款id + */ + @ExcelProperty(value = "支付条款id") + private Long terms; + + /** + * 支付条款对象 + */ + private XzdSettlementRules settlementRules; + + /** + * 本期应收金额 + */ + @ExcelProperty(value = "本期应收金额") + private Long amountReceivable; + + /** + * 竣工日期 + */ + @ExcelProperty(value = "竣工日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date completionDate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 本期决算总额 + */ + @ExcelProperty(value = "本期决算总额") + private Long settlementAmount; + + /** + * 质保金金额(客户) + */ + @ExcelProperty(value = "质保金金额(客户)") + private Long warrantyAmount; + + /** + * 业主单位(客户) + */ + @ExcelProperty(value = "业主单位(客户)") + private Long owner; + + /** + * 监理单位(客户) + */ + @ExcelProperty(value = "监理单位(客户)") + private Long supervision; + + /** + * 审核单位(客户) + */ + @ExcelProperty(value = "审核单位(客户)") + private Long review; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractAccountMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractAccountMapper.java new file mode 100644 index 00000000..acf0be8d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractAccountMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.mapper; + +import org.dromara.xzd.domain.XzdContractAccount; +import org.dromara.xzd.domain.vo.XzdContractAccountVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 承包合同竣工结算Mapper接口 + * + * @author Lion Li + * @date 2025-10-15 + */ +public interface XzdContractAccountMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractAccountService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractAccountService.java new file mode 100644 index 00000000..89c3debf --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractAccountService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.service; + +import org.dromara.xzd.domain.vo.XzdContractAccountVo; +import org.dromara.xzd.domain.bo.XzdContractAccountBo; +import org.dromara.xzd.domain.XzdContractAccount; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 承包合同竣工结算Service接口 + * + * @author Lion Li + * @date 2025-10-15 + */ +public interface IXzdContractAccountService extends IService{ + + /** + * 查询承包合同竣工结算 + * + * @param id 主键 + * @return 承包合同竣工结算 + */ + XzdContractAccountVo queryById(Long id); + + /** + * 分页查询承包合同竣工结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同竣工结算分页列表 + */ + TableDataInfo queryPageList(XzdContractAccountBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的承包合同竣工结算列表 + * + * @param bo 查询条件 + * @return 承包合同竣工结算列表 + */ + List queryList(XzdContractAccountBo bo); + + /** + * 新增承包合同竣工结算 + * + * @param bo 承包合同竣工结算 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdContractAccountBo bo); + + /** + * 修改承包合同竣工结算 + * + * @param bo 承包合同竣工结算 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdContractAccountBo bo); + + /** + * 校验并批量删除承包合同竣工结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java new file mode 100644 index 00000000..9e74f61a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractAccountServiceImpl.java @@ -0,0 +1,189 @@ +package org.dromara.xzd.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ParameterUtils; +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.dromara.xzd.domain.XzdSettlementRules; +import org.dromara.xzd.domain.vo.XzdContractDetailsVo; +import org.dromara.xzd.domain.vo.XzdSettlementRulesVo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.domain.bo.XzdContractAccountBo; +import org.dromara.xzd.domain.vo.XzdContractAccountVo; +import org.dromara.xzd.domain.XzdContractAccount; +import org.dromara.xzd.mapper.XzdContractAccountMapper; +import org.dromara.xzd.service.IXzdContractAccountService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 承包合同竣工结算Service业务层处理 + * + * @author Lion Li + * @date 2025-10-15 + */ +@RequiredArgsConstructor +@Service +public class XzdContractAccountServiceImpl extends ServiceImpl implements IXzdContractAccountService { + + private final XzdContractAccountMapper baseMapper; + @Autowired + private XzdContractDetailsServiceImpl xzdContractDetailsService; + @Autowired + private XzdSettlementRulesServiceImpl xzdSettlementRulesService; + + /** + * 查询承包合同竣工结算 + * + * @param id 主键 + * @return 承包合同竣工结算 + */ + @Override + public XzdContractAccountVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询承包合同竣工结算列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同竣工结算分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdContractAccountBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的承包合同竣工结算列表 + * + * @param bo 查询条件 + * @return 承包合同竣工结算列表 + */ + @Override + public List queryList(XzdContractAccountBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdContractAccountBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdContractAccount::getId); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdContractAccount::getTitle, bo.getTitle()); + lqw.between(params.get("beginDocumentDate") != null && params.get("endDocumentDate") != null, + XzdContractAccount::getDocumentDate ,params.get("beginDocumentDate"), params.get("endDocumentDate")); + lqw.eq(bo.getContractId() != null, XzdContractAccount::getContractId, bo.getContractId()); + lqw.eq(bo.getDeptId() != null, XzdContractAccount::getDeptId, bo.getDeptId()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdContractAccount::getContractName, bo.getContractName()); + lqw.eq(bo.getSubmittedCost() != null, XzdContractAccount::getSubmittedCost, bo.getSubmittedCost()); + lqw.eq(bo.getTotalPrice() != null, XzdContractAccount::getTotalPrice, bo.getTotalPrice()); + lqw.eq(bo.getApprovedDate() != null, XzdContractAccount::getApprovedDate, bo.getApprovedDate()); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdContractAccount::getProjectName, bo.getProjectName()); + lqw.eq(StringUtils.isNotBlank(bo.getFirstParty()), XzdContractAccount::getFirstParty, bo.getFirstParty()); + lqw.eq(StringUtils.isNotBlank(bo.getSecondParty()), XzdContractAccount::getSecondParty, bo.getSecondParty()); + lqw.eq(bo.getTerms() != null, XzdContractAccount::getTerms, bo.getTerms()); + lqw.eq(bo.getAmountReceivable() != null, XzdContractAccount::getAmountReceivable, bo.getAmountReceivable()); + lqw.eq(bo.getCompletionDate() != null, XzdContractAccount::getCompletionDate, bo.getCompletionDate()); + lqw.eq(bo.getSettlementAmount() != null, XzdContractAccount::getSettlementAmount, bo.getSettlementAmount()); + lqw.eq(bo.getWarrantyAmount() != null, XzdContractAccount::getWarrantyAmount, bo.getWarrantyAmount()); + lqw.eq(bo.getOwner() != null, XzdContractAccount::getOwner, bo.getOwner()); + lqw.eq(bo.getSupervision() != null, XzdContractAccount::getSupervision, bo.getSupervision()); + lqw.eq(bo.getReview() != null, XzdContractAccount::getReview, bo.getReview()); + return lqw; + } + + /** + * 新增承包合同竣工结算 + * + * @param bo 承包合同竣工结算 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdContractAccountBo bo) { + XzdContractAccount add = MapstructUtils.convert(bo, XzdContractAccount.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改承包合同竣工结算 + * + * @param bo 承包合同竣工结算 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdContractAccountBo bo) { + XzdContractAccount update = MapstructUtils.convert(bo, XzdContractAccount.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdContractAccount entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除承包合同竣工结算信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } + + public void setValue(List vos){ + for (XzdContractAccountVo vo : vos) { + //获取合同对象 + XzdContractDetailsVo detailsVo = xzdContractDetailsService.queryById(vo.getContractId()); + if (detailsVo != null){ + List detailsVo1 = List.of(detailsVo); + xzdContractDetailsService.setValue(detailsVo1); + detailsVo = detailsVo1.getFirst(); + //合同名称 + vo.setContractName(detailsVo.getContractName()); + //合同编码 + vo.setContractCode(detailsVo.getContractCode()); + //项目名称 + vo.setProjectName(detailsVo.getProjectName()); + //甲方名称 + vo.setFirstParty(detailsVo.getPartyAUnitName()); + //乙方名称 + vo.setSecondParty(detailsVo.getPartyBUnitName()); + } + //支付条款对象 + if (vo.getTerms() != null){ + XzdSettlementRules settlementRulesVo = xzdSettlementRulesService.getById(vo.getTerms()); + if (settlementRulesVo != null) { + vo.setSettlementRules(settlementRulesVo); + } + } + } + } + +}