diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractSkxx.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractSkxx.java new file mode 100644 index 00000000..ec873e2a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdContractSkxx.java @@ -0,0 +1,102 @@ +package org.dromara.xzd.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; + +import java.io.Serial; + +/** + * 收款信息对象 xzd_contract_skxx + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_contract_skxx") +public class XzdContractSkxx extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 关联id + */ + private Long mainId; + + /** + * 类型 + */ + private String type; + + /** + * 方向 + */ + private String fx; + + /** + * 款项类别 + */ + private String kxlb; + + /** + * 款项属性 + */ + private String kxsx; + + /** + * 本期申请金额 + */ + private Long bqsqje; + + /** + * 本期审批金额 + */ + private Long bqspje; + + /** + * 收款账龄 + */ + private Long skzl; + + /** + * 归还日期 + */ + private Date ghrq; + + /** + * 应收日期 + */ + private Date ysrq; + + /** + * 累计审批金额 + */ + private Long ljspje; + + /** + * 数据来源 + */ + private String sjly; + + /** + * 备注 + */ + private String remark; + + /** + * 支付条款 + */ + private Long zftkId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractSkxxBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractSkxxBo.java new file mode 100644 index 00000000..a5f056b0 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdContractSkxxBo.java @@ -0,0 +1,111 @@ +package org.dromara.xzd.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.XzdContractSkxx; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 收款信息业务对象 xzd_contract_skxx + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdContractSkxx.class, reverseConvertGenerate = false) +public class XzdContractSkxxBo extends BaseEntity { + + /** + * id + */ + private Long id; + + /** + * 关联id + */ + private Long mainId; + + /** + * 类型 + */ + @NotBlank(message = "类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String type; + + /** + * 方向 + */ + private String fx; + + /** + * 款项类别 + */ + private String kxlb; + + /** + * 款项属性 + */ + @NotBlank(message = "款项属性不能为空", groups = { AddGroup.class, EditGroup.class }) + private String kxsx; + + /** + * 本期申请金额 + */ + private BigDecimal bqsqje; + + /** + * 本期审批金额 + */ + @NotNull(message = "本期审批金额不能为空", groups = { AddGroup.class, EditGroup.class }) + private BigDecimal bqspje; + + /** + * 收款账龄 + */ + private Long skzl; + + /** + * 归还日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date ghrq; + + /** + * 应收日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date ysrq; + + /** + * 累计审批金额 + */ + private BigDecimal ljspje; + + /** + * 数据来源 + */ + private String sjly; + + /** + * 备注 + */ + private String remark; + + /** + * 支付条款 + */ + private Long zftkId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractDetailsVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractDetailsVo.java index b5822e61..7dba343d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractDetailsVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractDetailsVo.java @@ -123,6 +123,11 @@ public class XzdContractDetailsVo implements Serializable { */ private String partyBUnitName; + /** + * 乙方单位开户行 + */ + private List partyBUnitOpeningBank; + /** * 合同金额 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractSkxxVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractSkxxVo.java new file mode 100644 index 00000000..d0bdfb15 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdContractSkxxVo.java @@ -0,0 +1,122 @@ +package org.dromara.xzd.domain.vo; + +import java.util.Date; + +import org.dromara.xzd.domain.XzdContractSkxx; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 收款信息视图对象 xzd_contract_skxx + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdContractSkxx.class) +public class XzdContractSkxxVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 关联id + */ + private Long mainId; + + /** + * 类型 + */ + @ExcelProperty(value = "类型") + private String type; + + /** + * 方向 + */ + @ExcelProperty(value = "方向") + private String fx; + + /** + * 款项类别 + */ + @ExcelProperty(value = "款项类别") + private String kxlb; + + /** + * 款项属性 + */ + @ExcelProperty(value = "款项属性") + private String kxsx; + + /** + * 本期申请金额 + */ + @ExcelProperty(value = "本期申请金额") + private Long bqsqje; + + /** + * 本期审批金额 + */ + @ExcelProperty(value = "本期审批金额") + private Long bqspje; + + /** + * 收款账龄 + */ + @ExcelProperty(value = "收款账龄") + private Long skzl; + + /** + * 归还日期 + */ + @ExcelProperty(value = "归还日期") + private Date ghrq; + + /** + * 应收日期 + */ + @ExcelProperty(value = "应收日期") + private Date ysrq; + + /** + * 累计审批金额 + */ + @ExcelProperty(value = "累计审批金额") + private Long ljspje; + + /** + * 数据来源 + */ + @ExcelProperty(value = "数据来源") + private String sjly; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private Long zftkId; + + /** + * 支付条款类别 + */ + private String zftkLb; +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractSkxxMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractSkxxMapper.java new file mode 100644 index 00000000..f1909b17 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/mapper/XzdContractSkxxMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.mapper; + +import org.dromara.xzd.domain.XzdContractSkxx; +import org.dromara.xzd.domain.vo.XzdContractSkxxVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 收款信息Mapper接口 + * + * @author Lion Li + * @date 2025-10-16 + */ +public interface XzdContractSkxxMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractSkxxService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractSkxxService.java new file mode 100644 index 00000000..95742818 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdContractSkxxService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.service; + +import org.dromara.xzd.domain.vo.XzdContractSkxxVo; +import org.dromara.xzd.domain.bo.XzdContractSkxxBo; +import org.dromara.xzd.domain.XzdContractSkxx; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 收款信息Service接口 + * + * @author Lion Li + * @date 2025-10-16 + */ +public interface IXzdContractSkxxService extends IService{ + + /** + * 查询收款信息 + * + * @param id 主键 + * @return 收款信息 + */ + XzdContractSkxxVo queryById(Long id); + + /** + * 分页查询收款信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 收款信息分页列表 + */ + TableDataInfo queryPageList(XzdContractSkxxBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的收款信息列表 + * + * @param bo 查询条件 + * @return 收款信息列表 + */ + List queryList(XzdContractSkxxBo bo); + + /** + * 新增收款信息 + * + * @param bo 收款信息 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdContractSkxxBo bo); + + /** + * 修改收款信息 + * + * @param bo 收款信息 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdContractSkxxBo 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/XzdContractDetailsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java index e02ca871..1fc7b9d1 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java @@ -74,6 +74,8 @@ public class XzdContractDetailsServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(XzdSupplierOpenBank::getSupplierId, info.getPartyBUnit()); + List xzdSupplierOpenBanks = xzdSupplierOpenBankService.list(lambdaQueryWrapper); + if (!xzdSupplierOpenBanks.isEmpty()) { + info.setPartyBUnitOpeningBank(xzdSupplierOpenBanks); + } } } //开票单位名称(供应商名称) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractSkxxServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractSkxxServiceImpl.java new file mode 100644 index 00000000..65838be7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractSkxxServiceImpl.java @@ -0,0 +1,142 @@ +package org.dromara.xzd.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.domain.bo.XzdContractSkxxBo; +import org.dromara.xzd.domain.vo.XzdContractSkxxVo; +import org.dromara.xzd.domain.XzdContractSkxx; +import org.dromara.xzd.mapper.XzdContractSkxxMapper; +import org.dromara.xzd.service.IXzdContractSkxxService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 收款信息Service业务层处理 + * + * @author Lion Li + * @date 2025-10-16 + */ +@RequiredArgsConstructor +@Service +public class XzdContractSkxxServiceImpl extends ServiceImpl implements IXzdContractSkxxService { + + private final XzdContractSkxxMapper baseMapper; + + /** + * 查询收款信息 + * + * @param id 主键 + * @return 收款信息 + */ + @Override + public XzdContractSkxxVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询收款信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 收款信息分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdContractSkxxBo 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(XzdContractSkxxBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdContractSkxxBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdContractSkxx::getId); + lqw.eq(StringUtils.isNotBlank(bo.getType()), XzdContractSkxx::getType, bo.getType()); + lqw.eq(StringUtils.isNotBlank(bo.getFx()), XzdContractSkxx::getFx, bo.getFx()); + lqw.eq(StringUtils.isNotBlank(bo.getKxlb()), XzdContractSkxx::getKxlb, bo.getKxlb()); + lqw.eq(StringUtils.isNotBlank(bo.getKxsx()), XzdContractSkxx::getKxsx, bo.getKxsx()); + lqw.eq(bo.getBqsqje() != null, XzdContractSkxx::getBqsqje, bo.getBqsqje()); + lqw.eq(bo.getBqspje() != null, XzdContractSkxx::getBqspje, bo.getBqspje()); + lqw.eq(bo.getSkzl() != null, XzdContractSkxx::getSkzl, bo.getSkzl()); + lqw.eq(bo.getGhrq() != null, XzdContractSkxx::getGhrq, bo.getGhrq()); + lqw.eq(bo.getYsrq() != null, XzdContractSkxx::getYsrq, bo.getYsrq()); + lqw.eq(bo.getLjspje() != null, XzdContractSkxx::getLjspje, bo.getLjspje()); + lqw.eq(StringUtils.isNotBlank(bo.getSjly()), XzdContractSkxx::getSjly, bo.getSjly()); + lqw.eq(bo.getZftkId() != null, XzdContractSkxx::getZftkId, bo.getZftkId()); + return lqw; + } + + /** + * 新增收款信息 + * + * @param bo 收款信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdContractSkxxBo bo) { + XzdContractSkxx add = MapstructUtils.convert(bo, XzdContractSkxx.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改收款信息 + * + * @param bo 收款信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdContractSkxxBo bo) { + XzdContractSkxx update = MapstructUtils.convert(bo, XzdContractSkxx.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdContractSkxx entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除收款信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/controller/XzdContractPaymentController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/controller/XzdContractPaymentController.java new file mode 100644 index 00000000..eafa6237 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/controller/XzdContractPaymentController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.skyfk.cbhtsc.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.skyfk.cbhtsc.domain.vo.XzdContractPaymentVo; +import org.dromara.xzd.skyfk.cbhtsc.domain.bo.XzdContractPaymentBo; +import org.dromara.xzd.skyfk.cbhtsc.service.IXzdContractPaymentService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 承包合同收款 + * + * @author Lion Li + * @date 2025-10-16 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/skyfk/contractPayment") +public class XzdContractPaymentController extends BaseController { + + private final IXzdContractPaymentService xzdContractPaymentService; + + /** + * 查询承包合同收款列表 + */ + @SaCheckPermission("skyfk:contractPayment:list") + @GetMapping("/list") + public TableDataInfo list(XzdContractPaymentBo bo, PageQuery pageQuery) { + return xzdContractPaymentService.queryPageList(bo, pageQuery); + } + + /** + * 导出承包合同收款列表 + */ + @SaCheckPermission("skyfk:contractPayment:export") + @Log(title = "承包合同收款", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdContractPaymentBo bo, HttpServletResponse response) { + List list = xzdContractPaymentService.queryList(bo); + ExcelUtil.exportExcel(list, "承包合同收款", XzdContractPaymentVo.class, response); + } + + /** + * 获取承包合同收款详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("skyfk:contractPayment:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdContractPaymentService.queryById(id)); + } + + /** + * 新增承包合同收款 + */ + @SaCheckPermission("skyfk:contractPayment:add") + @Log(title = "承包合同收款", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdContractPaymentBo bo) { + return toAjax(xzdContractPaymentService.insertByBo(bo)); + } + + /** + * 修改承包合同收款 + */ + @SaCheckPermission("skyfk:contractPayment:edit") + @Log(title = "承包合同收款", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdContractPaymentBo bo) { + return toAjax(xzdContractPaymentService.updateByBo(bo)); + } + + /** + * 删除承包合同收款 + * + * @param ids 主键串 + */ + @SaCheckPermission("skyfk:contractPayment:remove") + @Log(title = "承包合同收款", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdContractPaymentService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/XzdContractPayment.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/XzdContractPayment.java new file mode 100644 index 00000000..139f111c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/XzdContractPayment.java @@ -0,0 +1,174 @@ +package org.dromara.xzd.skyfk.cbhtsc.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; + +import java.io.Serial; + +/** + * 承包合同收款对象 xzd_contract_payment + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_contract_payment") +public class XzdContractPayment extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String titile; + + /** + * 单据日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date documentDate; + + /** + * 合同id + */ + private Long contractId; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 收款性质 + */ + private String collectionNature; + + /** + * 实际收款日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date paymentDate; + + /** + * 项目id + */ + private Long projectId; + + /** + * 付款单位(客户)id + */ + private Long payer; + + /** + * 收款银行 + */ + private Long beneficiaryBank; + + /** + * 收款银行账号 + */ + private String bankAccount; + + /** + * 本期审批收款金额 + */ + private BigDecimal paymentAmount; + + /** + * 预收款剩余未抵扣金额 + */ + private BigDecimal undischargedPayment; + + /** + * 税率 + */ + private String taxRate; + + /** + * 累计审定产值金额 + */ + private BigDecimal outputAmount; + + /** + * 累计收款金额(不含本期) + */ + private BigDecimal ljskjeElse; + + /** + * 累计收款金额(含本期) + */ + private BigDecimal ljskjeAll; + + /** + * 已收款比例(不含本期) + */ + private BigDecimal yskblElse; + + /** + * 本次收款比例 + */ + private BigDecimal bcskbl; + + /** + * 截止本期收款比例 + */ + private BigDecimal jzbqskbl; + + /** + * 备注 + */ + private String remark; + + /** + * 0否1是 + */ + private String sssx; + + /** + * 合同含税金额 + */ + private BigDecimal hthsje; + + /** + * 合同累计实际收款金额 + */ + private BigDecimal htljsjskje; + + /** + * 累计结算金额 + */ + private BigDecimal ljjsje; + + /** + * 文件id + */ + private String fileId; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/bo/XzdContractPaymentBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/bo/XzdContractPaymentBo.java new file mode 100644 index 00000000..a0d12e4f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/bo/XzdContractPaymentBo.java @@ -0,0 +1,193 @@ +package org.dromara.xzd.skyfk.cbhtsc.domain.bo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.bo.XzdContractSkxxBo; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFapiaoBo; +import org.dromara.xzd.skyfk.cbhtsc.domain.XzdContractPayment; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 承包合同收款业务对象 xzd_contract_payment + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdContractPayment.class, reverseConvertGenerate = false) +public class XzdContractPaymentBo extends BaseEntity { + + /** + * id + */ + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String titile; + + /** + * 单据日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date documentDate; + + /** + * 合同id + */ + @NotNull(message = "合同id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long contractId; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractCode; + + /** + * 收款性质 + */ + @NotBlank(message = "收款性质不能为空", groups = { AddGroup.class, EditGroup.class }) + private String collectionNature; + + /** + * 实际收款日期 + */ + @NotNull(message = "实际收款日期不能为空", groups = { AddGroup.class, EditGroup.class }) + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date paymentDate; + + /** + * 项目id + */ + private Long projectId; + + /** + * 付款单位(客户)id + */ + @NotNull(message = "付款单位(客户)id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long payer; + + /** + * 收款银行 + */ + private Long beneficiaryBank; + + /** + * 收款银行账号 + */ + private String bankAccount; + + /** + * 本期审批收款金额 + */ + private BigDecimal paymentAmount; + + /** + * 预收款剩余未抵扣金额 + */ + private BigDecimal undischargedPayment; + + /** + * 税率 + */ + @NotBlank(message = "税率不能为空", groups = { AddGroup.class, EditGroup.class }) + private String taxRate; + + /** + * 累计审定产值金额 + */ + private BigDecimal outputAmount; + + /** + * 累计收款金额(不含本期) + */ + private BigDecimal ljskjeElse; + + /** + * 累计收款金额(含本期) + */ + private BigDecimal ljskjeAll; + + /** + * 已收款比例(不含本期) + */ + private BigDecimal yskblElse; + + /** + * 本次收款比例 + */ + private BigDecimal bcskbl; + + /** + * 截止本期收款比例 + */ + private BigDecimal jzbqskbl; + + /** + * 备注 + */ + private String remark; + + /** + * 实时刷新0否1是 + */ + private String sssx; + + /** + * 合同含税金额 + */ + private BigDecimal hthsje; + + /** + * 合同累计实际收款金额 + */ + private BigDecimal htljsjskje; + + /** + * 累计结算金额 + */ + private BigDecimal ljjsje; + + /** + * 文件id + */ + private String fileId; + + /** + * 发票信息 + */ + List fpxx; + + /** + * 收款信息 + */ + List skxx; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/vo/XzdContractPaymentVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/vo/XzdContractPaymentVo.java new file mode 100644 index 00000000..e6827e23 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/domain/vo/XzdContractPaymentVo.java @@ -0,0 +1,233 @@ +package org.dromara.xzd.skyfk.cbhtsc.domain.vo; + +import java.math.BigDecimal; +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; +import org.dromara.xzd.domain.vo.XzdContractDetailsVo; +import org.dromara.xzd.domain.vo.XzdContractSkxxVo; +import org.dromara.xzd.paymentsReceipts.domain.vo.XzdSfkFapiaoVo; +import org.dromara.xzd.skyfk.cbhtsc.domain.XzdContractPayment; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + +/** + * 承包合同收款视图对象 xzd_contract_payment + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdContractPayment.class) +public class XzdContractPaymentVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String titile; + + /** + * 单据日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + @ExcelProperty(value = "单据日期") + private Date documentDate; + + /** + * 合同id + */ + @ExcelProperty(value = "合同id") + private Long contractId; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractCode; + + /** + * 收款性质 + */ + @ExcelProperty(value = "收款性质") + private String collectionNature; + + /** + * 实际收款日期 + */ + @ExcelProperty(value = "实际收款日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date paymentDate; + + /** + * 项目id + */ + @ExcelProperty(value = "项目id") + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 付款单位(客户)id + */ + @ExcelProperty(value = "付款单位(客户)id") + private Long payer; + + /** + * 付款单位(客户)名称 + */ + private String payerName; + + /** + * 收款银行 + */ + @ExcelProperty(value = "收款银行") + private Long beneficiaryBank; + + /** + * 收款银行名称 + */ + private String beneficiaryBankName; + + /** + * 收款银行账号 + */ + @ExcelProperty(value = "收款银行账号") + private String bankAccount; + + /** + * 本期审批收款金额 + */ + @ExcelProperty(value = "本期审批收款金额") + private BigDecimal paymentAmount; + + /** + * 预收款剩余未抵扣金额 + */ + @ExcelProperty(value = "预收款剩余未抵扣金额") + private BigDecimal undischargedPayment; + + /** + * 税率 + */ + @ExcelProperty(value = "税率") + private String taxRate; + + /** + * 累计审定产值金额 + */ + @ExcelProperty(value = "累计审定产值金额") + private BigDecimal outputAmount; + + /** + * 累计收款金额(不含本期) + */ + @ExcelProperty(value = "累计收款金额(不含本期)") + private BigDecimal ljskjeElse; + + /** + * 累计收款金额(含本期) + */ + @ExcelProperty(value = "累计收款金额(含本期)") + private BigDecimal ljskjeAll; + + /** + * 已收款比例(不含本期) + */ + @ExcelProperty(value = "已收款比例(不含本期)") + private BigDecimal yskblElse; + + /** + * 本次收款比例 + */ + @ExcelProperty(value = "本次收款比例") + private BigDecimal bcskbl; + + /** + * 截止本期收款比例 + */ + @ExcelProperty(value = "截止本期收款比例") + private BigDecimal jzbqskbl; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 0否1是 + */ + @ExcelProperty(value = "0否1是") + private String sssx; + + /** + * 合同含税金额 + */ + @ExcelProperty(value = "合同含税金额") + private BigDecimal hthsje; + + /** + * 合同累计实际收款金额 + */ + @ExcelProperty(value = "合同累计实际收款金额") + private BigDecimal htljsjskje; + + /** + * 累计结算金额 + */ + @ExcelProperty(value = "累计结算金额") + private BigDecimal ljjsje; + + /** + * 文件id + */ + private String fileId; + + /** + * 发票信息 + */ + List fpxx; + + /** + * 收款信息 + */ + List skxx; + + private XzdContractDetailsVo contract; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/mapper/XzdContractPaymentMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/mapper/XzdContractPaymentMapper.java new file mode 100644 index 00000000..cca2cbb9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/mapper/XzdContractPaymentMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.skyfk.cbhtsc.mapper; + +import org.dromara.xzd.skyfk.cbhtsc.domain.XzdContractPayment; +import org.dromara.xzd.skyfk.cbhtsc.domain.vo.XzdContractPaymentVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 承包合同收款Mapper接口 + * + * @author Lion Li + * @date 2025-10-16 + */ +public interface XzdContractPaymentMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/service/IXzdContractPaymentService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/service/IXzdContractPaymentService.java similarity index 87% rename from xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/service/IXzdContractPaymentService.java rename to xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/service/IXzdContractPaymentService.java index 8c762edb..55524f43 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/service/IXzdContractPaymentService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/service/IXzdContractPaymentService.java @@ -1,8 +1,8 @@ -package org.dromara.xzd.skyfk.service; +package org.dromara.xzd.skyfk.cbhtsc.service; -import org.dromara.xzd.skyfk.domain.vo.XzdContractPaymentVo; -import org.dromara.xzd.skyfk.domain.bo.XzdContractPaymentBo; -import org.dromara.xzd.skyfk.domain.XzdContractPayment; +import org.dromara.xzd.skyfk.cbhtsc.domain.vo.XzdContractPaymentVo; +import org.dromara.xzd.skyfk.cbhtsc.domain.bo.XzdContractPaymentBo; +import org.dromara.xzd.skyfk.cbhtsc.domain.XzdContractPayment; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/service/impl/XzdContractPaymentServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/service/impl/XzdContractPaymentServiceImpl.java new file mode 100644 index 00000000..4a7f34d6 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/cbhtsc/service/impl/XzdContractPaymentServiceImpl.java @@ -0,0 +1,343 @@ +package org.dromara.xzd.skyfk.cbhtsc.service.impl; + +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.ctr.domain.vo.ContractPaymentClauseVo; +import org.dromara.ctr.service.impl.ContractPaymentClauseServiceImpl; +import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.domain.XzdContractSkxx; +import org.dromara.xzd.domain.bo.XzdContractSkxxBo; +import org.dromara.xzd.domain.dto.QuerCorrespondentDto; +import org.dromara.xzd.domain.vo.XzdContractDetailsVo; +import org.dromara.xzd.domain.vo.XzdContractSkxxVo; +import org.dromara.xzd.domain.vo.XzdProjectVo; +import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo; +import org.dromara.xzd.paymentsReceipts.domain.XzdSfkFapiao; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFapiaoBo; +import org.dromara.xzd.paymentsReceipts.service.impl.XzdSfkFapiaoServiceImpl; +import org.dromara.xzd.service.IXzdCorrespondentList; +import org.dromara.xzd.service.impl.XzdContractDetailsServiceImpl; +import org.dromara.xzd.service.impl.XzdContractSkxxServiceImpl; +import org.dromara.xzd.service.impl.XzdProjectServiceImpl; +import org.dromara.xzd.service.impl.XzdSupplierOpenBankServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.skyfk.cbhtsc.domain.bo.XzdContractPaymentBo; +import org.dromara.xzd.skyfk.cbhtsc.domain.vo.XzdContractPaymentVo; +import org.dromara.xzd.skyfk.cbhtsc.domain.XzdContractPayment; +import org.dromara.xzd.skyfk.cbhtsc.mapper.XzdContractPaymentMapper; +import org.dromara.xzd.skyfk.cbhtsc.service.IXzdContractPaymentService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 承包合同收款Service业务层处理 + * + * @author Lion Li + * @date 2025-10-16 + */ +@RequiredArgsConstructor +@Service +public class XzdContractPaymentServiceImpl extends ServiceImpl implements IXzdContractPaymentService { + + private final XzdContractPaymentMapper baseMapper; + + @Autowired + private XzdSfkFapiaoServiceImpl sfkFapiaoService; + @Autowired + private XzdContractSkxxServiceImpl xzdContractSkxxService; + @Autowired + private SysOssServiceImpl sysOssService; + @Autowired + private XzdContractDetailsServiceImpl xzdContractDetailsService; + @Autowired + private XzdSupplierOpenBankServiceImpl xzdSupplierOpenBankService; + @Autowired + private XzdProjectServiceImpl xzdProjectService; + @Autowired + private ContractPaymentClauseServiceImpl contractPaymentClauseService; + @Autowired + private IXzdCorrespondentList iXzdCorrespondentList; + + /** + * 查询承包合同收款 + * + * @param id 主键 + * @return 承包合同收款 + */ + @Override + public XzdContractPaymentVo queryById(Long id){ + XzdContractPaymentVo paymentVo = baseMapper.selectVoById(id); + List paymentVo1 = List.of(paymentVo); + setValue(paymentVo1); + return paymentVo1.getFirst(); + } + + /** + * 分页查询承包合同收款列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 承包合同收款分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdContractPaymentBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + setValue(result.getRecords()); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的承包合同收款列表 + * + * @param bo 查询条件 + * @return 承包合同收款列表 + */ + @Override + public List queryList(XzdContractPaymentBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdContractPaymentBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdContractPayment::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdContractPayment::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitile()), XzdContractPayment::getTitile, bo.getTitile()); + lqw.eq(bo.getDocumentDate() != null, XzdContractPayment::getDocumentDate, bo.getDocumentDate()); + lqw.eq(bo.getContractId() != null, XzdContractPayment::getContractId, bo.getContractId()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdContractPayment::getContractCode, bo.getContractCode()); + lqw.eq(StringUtils.isNotBlank(bo.getCollectionNature()), XzdContractPayment::getCollectionNature, bo.getCollectionNature()); + lqw.eq(bo.getPaymentDate() != null, XzdContractPayment::getPaymentDate, bo.getPaymentDate()); + lqw.eq(bo.getProjectId() != null, XzdContractPayment::getProjectId, bo.getProjectId()); + lqw.eq(bo.getPayer() != null, XzdContractPayment::getPayer, bo.getPayer()); + lqw.eq(bo.getBeneficiaryBank() != null, XzdContractPayment::getBeneficiaryBank, bo.getBeneficiaryBank()); + lqw.eq(StringUtils.isNotBlank(bo.getBankAccount()), XzdContractPayment::getBankAccount, bo.getBankAccount()); + lqw.eq(bo.getPaymentAmount() != null, XzdContractPayment::getPaymentAmount, bo.getPaymentAmount()); + lqw.eq(bo.getUndischargedPayment() != null, XzdContractPayment::getUndischargedPayment, bo.getUndischargedPayment()); + lqw.eq(StringUtils.isNotBlank(bo.getTaxRate()), XzdContractPayment::getTaxRate, bo.getTaxRate()); + lqw.eq(bo.getOutputAmount() != null, XzdContractPayment::getOutputAmount, bo.getOutputAmount()); + lqw.eq(bo.getLjskjeElse() != null, XzdContractPayment::getLjskjeElse, bo.getLjskjeElse()); + lqw.eq(bo.getLjskjeAll() != null, XzdContractPayment::getLjskjeAll, bo.getLjskjeAll()); + lqw.eq(bo.getYskblElse() != null, XzdContractPayment::getYskblElse, bo.getYskblElse()); + lqw.eq(bo.getBcskbl() != null, XzdContractPayment::getBcskbl, bo.getBcskbl()); + lqw.eq(bo.getJzbqskbl() != null, XzdContractPayment::getJzbqskbl, bo.getJzbqskbl()); + lqw.eq(StringUtils.isNotBlank(bo.getSssx()), XzdContractPayment::getSssx, bo.getSssx()); + lqw.eq(bo.getHthsje() != null, XzdContractPayment::getHthsje, bo.getHthsje()); + lqw.eq(bo.getHtljsjskje() != null, XzdContractPayment::getHtljsjskje, bo.getHtljsjskje()); + lqw.eq(bo.getLjjsje() != null, XzdContractPayment::getLjjsje, bo.getLjjsje()); + return lqw; + } + + /** + * 新增承包合同收款 + * + * @param bo 承包合同收款 + * @return 是否新增成功 + */ + @Transactional + @Override + public Boolean insertByBo(XzdContractPaymentBo bo) { + XzdContractPayment add = MapstructUtils.convert(bo, XzdContractPayment.class); + validEntityBeforeSave(add); + add.setDocumentCode(IdUtil.getSnowflakeNextIdStr()); + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + + //收款信息 + if (bo.getSkxx() != null && !bo.getSkxx().isEmpty()){ + for (XzdContractSkxxBo skxx : bo.getSkxx()) { + skxx.setMainId(add.getId()); + xzdContractSkxxService.insertByBo(skxx); + } + } + + //发票信息 + if (bo.getFpxx() != null && !bo.getFpxx().isEmpty()){ + for (XzdSfkFapiaoBo fpxx : bo.getFpxx()) { + fpxx.setMainDocumentId(add.getId()); + sfkFapiaoService.insertByBo(fpxx); + } + } + + return flag; + } + + /** + * 修改承包合同收款 + * + * @param bo 承包合同收款 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdContractPaymentBo bo) { + XzdContractPayment update = MapstructUtils.convert(bo, XzdContractPayment.class); + validEntityBeforeSave(update); + + XzdContractPaymentVo old = queryById(update.getId()); + if (bo.getSkxx() != null && !bo.getSkxx().isEmpty()){ + if (old.getSkxx() != null && !old.getSkxx().isEmpty()){ + xzdContractSkxxService.removeByIds(old.getSkxx()); + } + for (XzdContractSkxxBo skxx : bo.getSkxx()) { + skxx.setMainId(update.getId()); + xzdContractSkxxService.insertByBo(skxx); + } + }else { + if (old.getSkxx() != null && !old.getSkxx().isEmpty()){ + xzdContractSkxxService.removeByIds(old.getSkxx()); + } + } + + if (bo.getFpxx() != null && !bo.getFpxx().isEmpty()){ + if (old.getFpxx() != null && !old.getFpxx().isEmpty()){ + sfkFapiaoService.removeByIds(old.getFpxx()); + } + for (XzdSfkFapiaoBo skxx : bo.getFpxx()) { + skxx.setMainDocumentId(update.getId()); + sfkFapiaoService.insertByBo(skxx); + } + }else { + if (old.getFpxx() != null && !old.getFpxx().isEmpty()){ + sfkFapiaoService.removeByIds(old.getFpxx()); + } + } + + //更新文件 + if (bo.getFileId() != null && !bo.getFileId().isEmpty()){ + if (old.getFileId() != null && !old.getFileId().isEmpty()) { + List oldFileId = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList(); + List nowFileId = Arrays.stream(bo.getFileId().split(",")).map(Long::valueOf).toList(); + for (Long l : oldFileId) { + if (!nowFileId.contains(l)) { + sysOssService.deleteWithValidByIds(List.of(l), false); + } + } + } + }else { + if (old.getFileId()!= null && !old.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList(); + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdContractPayment entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除承包合同收款信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + + for (Long id : ids) { + XzdContractPaymentVo vo = queryById(id); + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(XzdSfkFapiao::getMainDocumentId, id); + sfkFapiaoService.remove(lqw); + + LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); + lqw1.eq(XzdContractSkxx::getMainId, id); + xzdContractSkxxService.remove(lqw1); + + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + + return baseMapper.deleteByIds(ids) > 0; + } + + public void setValue(List vos){ + for (XzdContractPaymentVo vo : vos) { + if (vo.getContractId() != null){ + XzdContractDetailsVo xzdContractDetailsVo = xzdContractDetailsService.queryById(vo.getContractId()); + if (xzdContractDetailsVo != null){ + vo.setContract(xzdContractDetailsVo); + List xzdContractDetailsVo1 = List.of(xzdContractDetailsVo); + xzdContractDetailsService.setValue(xzdContractDetailsVo1); + xzdContractDetailsVo = xzdContractDetailsVo1.getFirst(); + //合同编码 + vo.setContractCode(xzdContractDetailsVo.getContractCode()); + } + } + //收款银行名称 + XzdSupplierOpenBankVo bankVo = xzdSupplierOpenBankService.queryById(vo.getBeneficiaryBank()); + if (bankVo != null){ + vo.setBeneficiaryBankName(bankVo.getOpenBank()); + } + //项目名称 + if (vo.getProjectId() != null){ + XzdProjectVo projectVo = xzdProjectService.queryById(vo.getProjectId()); + if (projectVo != null){ + vo.setProjectName(projectVo.getProjectName()); + } + } + //收款信息 + XzdContractSkxxBo bo = new XzdContractSkxxBo(); + bo.setMainId(vo.getId()); + List skxxVos = xzdContractSkxxService.queryList(bo); + if (skxxVos != null && !skxxVos.isEmpty()){ + for (XzdContractSkxxVo skxxVo : skxxVos) { + if (skxxVo.getZftkId() != null){ + ContractPaymentClauseVo clauseVo = contractPaymentClauseService.queryById(skxxVo.getZftkId()); + if (clauseVo != null){ + skxxVo.setZftkLb(clauseVo.getClauseType()); + } + } + } + } + vo.setSkxx(skxxVos); + //发票信息 + XzdSfkFapiaoBo fapiaoBo = new XzdSfkFapiaoBo(); + fapiaoBo.setMainDocumentId(vo.getId()); + vo.setFpxx(sfkFapiaoService.queryList(fapiaoBo)); + //付款单位 + if (vo.getPayer() != null){ + R byid = iXzdCorrespondentList.getCustomerByid(vo.getPayer()); + if (byid != null) { + if (byid.getData().getXzdCustomerinformation() != null) { + vo.setPayerName(byid.getData().getXzdCustomerinformation().getUnitName()); + } + } + } + } + } + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/controller/XzdSkyfkFbhtfkController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/controller/XzdSkyfkFbhtfkController.java new file mode 100644 index 00000000..68f4e45d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/controller/XzdSkyfkFbhtfkController.java @@ -0,0 +1,105 @@ +package org.dromara.xzd.skyfk.fbhtfk.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.skyfk.fbhtfk.domain.vo.XzdSkyfkFbhtfkVo; +import org.dromara.xzd.skyfk.fbhtfk.domain.bo.XzdSkyfkFbhtfkBo; +import org.dromara.xzd.skyfk.fbhtfk.service.IXzdSkyfkFbhtfkService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 收款与付款-分包合同付款 + * + * @author Lion Li + * @date 2025-10-16 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/fbhtfk/skyfkFbhtfk") +public class XzdSkyfkFbhtfkController extends BaseController { + + private final IXzdSkyfkFbhtfkService xzdSkyfkFbhtfkService; + + /** + * 查询收款与付款-分包合同付款列表 + */ + @SaCheckPermission("fbhtfk:skyfkFbhtfk:list") + @GetMapping("/list") + public TableDataInfo list(XzdSkyfkFbhtfkBo bo, PageQuery pageQuery) { + return xzdSkyfkFbhtfkService.queryPageList(bo, pageQuery); + } + + /** + * 导出收款与付款-分包合同付款列表 + */ + @SaCheckPermission("fbhtfk:skyfkFbhtfk:export") + @Log(title = "收款与付款-分包合同付款", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdSkyfkFbhtfkBo bo, HttpServletResponse response) { + List list = xzdSkyfkFbhtfkService.queryList(bo); + ExcelUtil.exportExcel(list, "收款与付款-分包合同付款", XzdSkyfkFbhtfkVo.class, response); + } + + /** + * 获取收款与付款-分包合同付款详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("fbhtfk:skyfkFbhtfk:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSkyfkFbhtfkService.queryById(id)); + } + + /** + * 新增收款与付款-分包合同付款 + */ + @SaCheckPermission("fbhtfk:skyfkFbhtfk:add") + @Log(title = "收款与付款-分包合同付款", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdSkyfkFbhtfkBo bo) { + return toAjax(xzdSkyfkFbhtfkService.insertByBo(bo)); + } + + /** + * 修改收款与付款-分包合同付款 + */ + @SaCheckPermission("fbhtfk:skyfkFbhtfk:edit") + @Log(title = "收款与付款-分包合同付款", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdSkyfkFbhtfkBo bo) { + return toAjax(xzdSkyfkFbhtfkService.updateByBo(bo)); + } + + /** + * 删除收款与付款-分包合同付款 + * + * @param ids 主键串 + */ + @SaCheckPermission("fbhtfk:skyfkFbhtfk:remove") + @Log(title = "收款与付款-分包合同付款", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSkyfkFbhtfkService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/XzdSkyfkFbhtfk.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/XzdSkyfkFbhtfk.java new file mode 100644 index 00000000..08148693 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/XzdSkyfkFbhtfk.java @@ -0,0 +1,267 @@ +package org.dromara.xzd.skyfk.fbhtfk.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; + +import java.io.Serial; + +/** + * 收款与付款-分包合同付款对象 xzd_skyfk_fbhtfk + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_skyfk_fbhtfk") +public class XzdSkyfkFbhtfk extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @TableId(value = "id") + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + private String titile; + + /** + * 单据日期 + */ + private Date documentDate; + + /** + * 合同id + */ + private Long contractId; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 付款性质 + */ + private String fkxz; + + /** + * 支出合同金额 + */ + private Long zchtje; + + /** + * 本期审批金额 + */ + private Long bqspje; + + /** + * 项目id + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 付款单位id(客户) + */ + private Long fkdwId; + + /** + * 付款单位 + */ + private String fkdw; + + /** + * 收款单位id(供应商) + */ + private Long skdwId; + + /** + * 收款单位 + */ + private String skdw; + + /** + * 收款单位银行id + */ + private Long skdwYhId; + + /** + * 收款单位银行 + */ + private String skdwYh; + + /** + * 收款单位银行账号 + */ + private String skdwYhZh; + + /** + * 统计周期 + */ + private String tjzq; + + /** + * 项目类型id + */ + private Long xmlxId; + + /** + * 项目类型 + */ + private String xmlx; + + /** + * 项目大类 + */ + private String xmdl; + + /** + * 税率 + */ + private String sl; + + /** + * 分包类型 + */ + private String fblx; + + /** + * 合同类型 + */ + private String htlx; + + /** + * 支付条款 + */ + private String zftk; + + /** + * 备注 + */ + private String remark; + + /** + * 本期进度金额 + */ + private Long bqjdje; + + /** + * 累计进度金额 + */ + private Long ljjdje; + + /** + * 预付款金额 + */ + private Long yfkje; + + /** + * 累计支付金额 + */ + private Long ljzfje; + + /** + * 本期进度应付金额 + */ + private Long bqjdyfje; + + /** + * 累计进度应付金额 + */ + private Long ljjdyfje; + + /** + * 预付款扣回金额 + */ + private Long yfkkhje; + + /** + * 累计进度结算占合同比例 + */ + private Long ljjdjszhtbl; + + /** + * 本期进度支付占本期进度应付比例 + */ + private Long bqjdzfzbqjdyfbl; + + /** + * 累计进度支付占累计进度应付比例 + */ + private Long ljjdzfzljjdyfbl; + + /** + * 预付款剩余未抵扣金额 + */ + private Long yfksywdkje; + + /** + * 累计支付占合同比例 + */ + private Long ljzfzhtbl; + + /** + * 剩余进度应付未付金额 + */ + private Long syjdyfwfje; + + /** + * 累计进度结算金额 + */ + private Long ljjdjsje; + + /** + * 实时刷新0否1是 + */ + private String sssx; + + /** + * 合同含税金额 + */ + private Long hthsje; + + /** + * 合同累计实际付款金额 + */ + private Long htljsjfkje; + + /** + * 累计结算金额 + */ + private Long ljjsje; + + /** + * 多文件逗号分隔 + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/bo/XzdSkyfkFbhtfkBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/bo/XzdSkyfkFbhtfkBo.java new file mode 100644 index 00000000..4ce4f70e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/bo/XzdSkyfkFbhtfkBo.java @@ -0,0 +1,292 @@ +package org.dromara.xzd.skyfk.fbhtfk.domain.bo; + +import org.dromara.xzd.paymentsReceipts.domain.XzdSfkFapiao; +import org.dromara.xzd.paymentsReceipts.domain.XzdSfkFukuan; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFapiaoBo; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFukuanBo; +import org.dromara.xzd.skyfk.fbhtfk.domain.XzdSkyfkFbhtfk; +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.util.Date; +import java.util.List; + +/** + * 收款与付款-分包合同付款业务对象 xzd_skyfk_fbhtfk + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSkyfkFbhtfk.class, reverseConvertGenerate = false) +public class XzdSkyfkFbhtfkBo extends BaseEntity { + + /** + * id + */ + @NotNull(message = "id不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据编码 + */ + private String documentCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String titile; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date documentDate; + + /** + * 合同id + */ + @NotNull(message = "合同id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long contractId; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 付款性质 + */ + @NotBlank(message = "付款性质不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fkxz; + + /** + * 支出合同金额 + */ + private Long zchtje; + + /** + * 本期审批金额 + */ + private Long bqspje; + + /** + * 项目id + */ + private Long projectId; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 付款单位id(客户) + */ + private Long fkdwId; + + /** + * 付款单位 + */ + private String fkdw; + + /** + * 收款单位id(供应商) + */ + @NotNull(message = "收款单位id(供应商)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long skdwId; + + /** + * 收款单位 + */ + @NotBlank(message = "收款单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private String skdw; + + /** + * 收款单位银行id + */ + @NotNull(message = "收款单位银行id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long skdwYhId; + + /** + * 收款单位银行 + */ + @NotBlank(message = "收款单位银行不能为空", groups = { AddGroup.class, EditGroup.class }) + private String skdwYh; + + /** + * 收款单位银行账号 + */ + @NotBlank(message = "收款单位银行账号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String skdwYhZh; + + /** + * 统计周期 + */ + private String tjzq; + + /** + * 项目类型id + */ + private Long xmlxId; + + /** + * 项目类型 + */ + private String xmlx; + + /** + * 项目大类 + */ + private String xmdl; + + /** + * 税率 + */ + @NotBlank(message = "税率不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sl; + + /** + * 分包类型 + */ + @NotBlank(message = "分包类型不能为空", groups = { AddGroup.class, EditGroup.class }) + private String fblx; + + /** + * 合同类型 + */ + private String htlx; + + /** + * 支付条款 + */ + private String zftk; + + /** + * 备注 + */ + private String remark; + + /** + * 本期进度金额 + */ + private Long bqjdje; + + /** + * 累计进度金额 + */ + private Long ljjdje; + + /** + * 预付款金额 + */ + private Long yfkje; + + /** + * 累计支付金额 + */ + private Long ljzfje; + + /** + * 本期进度应付金额 + */ + private Long bqjdyfje; + + /** + * 累计进度应付金额 + */ + private Long ljjdyfje; + + /** + * 预付款扣回金额 + */ + private Long yfkkhje; + + /** + * 累计进度结算占合同比例 + */ + private Long ljjdjszhtbl; + + /** + * 本期进度支付占本期进度应付比例 + */ + private Long bqjdzfzbqjdyfbl; + + /** + * 累计进度支付占累计进度应付比例 + */ + private Long ljjdzfzljjdyfbl; + + /** + * 预付款剩余未抵扣金额 + */ + private Long yfksywdkje; + + /** + * 累计支付占合同比例 + */ + private Long ljzfzhtbl; + + /** + * 剩余进度应付未付金额 + */ + private Long syjdyfwfje; + + /** + * 累计进度结算金额 + */ + private Long ljjdjsje; + + /** + * 实时刷新0否1是 + */ + private String sssx; + + /** + * 合同含税金额 + */ + private Long hthsje; + + /** + * 合同累计实际付款金额 + */ + private Long htljsjfkje; + + /** + * 累计结算金额 + */ + private Long ljjsje; + + /** + * 多文件逗号分隔 + */ + private String fileId; + + /** + * 发票信息 + */ + private List fpxx; + + /** + * 付款信息 + */ + List fkxx; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/vo/XzdSkyfkFbhtfkVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/vo/XzdSkyfkFbhtfkVo.java new file mode 100644 index 00000000..06a30dd4 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/domain/vo/XzdSkyfkFbhtfkVo.java @@ -0,0 +1,339 @@ +package org.dromara.xzd.skyfk.fbhtfk.domain.vo; + +import java.util.Date; + +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; +import org.dromara.xzd.domain.vo.XzdContractDetailsVo; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFapiaoBo; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFukuanBo; +import org.dromara.xzd.paymentsReceipts.domain.vo.XzdSfkFapiaoVo; +import org.dromara.xzd.paymentsReceipts.domain.vo.XzdSfkFukuanVo; +import org.dromara.xzd.skyfk.fbhtfk.domain.XzdSkyfkFbhtfk; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + + +/** + * 收款与付款-分包合同付款视图对象 xzd_skyfk_fbhtfk + * + * @author Lion Li + * @date 2025-10-16 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSkyfkFbhtfk.class) +public class XzdSkyfkFbhtfkVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * id + */ + @ExcelProperty(value = "id") + private Long id; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String documentCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String titile; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private Date documentDate; + + /** + * 合同id + */ + @ExcelProperty(value = "合同id") + private Long contractId; + + /** + * 合同对象 + */ + private XzdSubcontractVo contract; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 付款性质 + */ + @ExcelProperty(value = "付款性质") + private String fkxz; + + /** + * 支出合同金额 + */ + @ExcelProperty(value = "支出合同金额") + private Long zchtje; + + /** + * 本期审批金额 + */ + @ExcelProperty(value = "本期审批金额") + private Long bqspje; + + /** + * 项目id + */ + @ExcelProperty(value = "项目id") + private Long projectId; + + /** + * 项目名称 + */ + @ExcelProperty(value = "项目名称") + private String projectName; + + /** + * 付款单位id(客户) + */ + @ExcelProperty(value = "付款单位id(客户)") + private Long fkdwId; + + /** + * 付款单位 + */ + @ExcelProperty(value = "付款单位") + private String fkdw; + + /** + * 收款单位id(供应商) + */ + @ExcelProperty(value = "收款单位id(供应商)") + private Long skdwId; + + /** + * 收款单位 + */ + @ExcelProperty(value = "收款单位") + private String skdw; + + /** + * 收款单位银行id + */ + @ExcelProperty(value = "收款单位银行id") + private Long skdwYhId; + + /** + * 收款单位银行 + */ + @ExcelProperty(value = "收款单位银行") + private String skdwYh; + + /** + * 收款单位银行账号 + */ + @ExcelProperty(value = "收款单位银行账号") + private String skdwYhZh; + + /** + * 统计周期 + */ + @ExcelProperty(value = "统计周期") + private String tjzq; + + /** + * 项目类型id + */ + @ExcelProperty(value = "项目类型id") + private Long xmlxId; + + /** + * 项目类型 + */ + @ExcelProperty(value = "项目类型") + private String xmlx; + + /** + * 项目大类 + */ + @ExcelProperty(value = "项目大类") + private String xmdl; + + /** + * 税率 + */ + @ExcelProperty(value = "税率") + private String sl; + + /** + * 分包类型 + */ + @ExcelProperty(value = "分包类型") + private String fblx; + + /** + * 合同类型 + */ + @ExcelProperty(value = "合同类型") + private String htlx; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private String zftk; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 本期进度金额 + */ + @ExcelProperty(value = "本期进度金额") + private Long bqjdje; + + /** + * 累计进度金额 + */ + @ExcelProperty(value = "累计进度金额") + private Long ljjdje; + + /** + * 预付款金额 + */ + @ExcelProperty(value = "预付款金额") + private Long yfkje; + + /** + * 累计支付金额 + */ + @ExcelProperty(value = "累计支付金额") + private Long ljzfje; + + /** + * 本期进度应付金额 + */ + @ExcelProperty(value = "本期进度应付金额") + private Long bqjdyfje; + + /** + * 累计进度应付金额 + */ + @ExcelProperty(value = "累计进度应付金额") + private Long ljjdyfje; + + /** + * 预付款扣回金额 + */ + @ExcelProperty(value = "预付款扣回金额") + private Long yfkkhje; + + /** + * 累计进度结算占合同比例 + */ + @ExcelProperty(value = "累计进度结算占合同比例") + private Long ljjdjszhtbl; + + /** + * 本期进度支付占本期进度应付比例 + */ + @ExcelProperty(value = "本期进度支付占本期进度应付比例") + private Long bqjdzfzbqjdyfbl; + + /** + * 累计进度支付占累计进度应付比例 + */ + @ExcelProperty(value = "累计进度支付占累计进度应付比例") + private Long ljjdzfzljjdyfbl; + + /** + * 预付款剩余未抵扣金额 + */ + @ExcelProperty(value = "预付款剩余未抵扣金额") + private Long yfksywdkje; + + /** + * 累计支付占合同比例 + */ + @ExcelProperty(value = "累计支付占合同比例") + private Long ljzfzhtbl; + + /** + * 剩余进度应付未付金额 + */ + @ExcelProperty(value = "剩余进度应付未付金额") + private Long syjdyfwfje; + + /** + * 累计进度结算金额 + */ + @ExcelProperty(value = "累计进度结算金额") + private Long ljjdjsje; + + /** + * 实时刷新0否1是 + */ + @ExcelProperty(value = "实时刷新0否1是") + private String sssx; + + /** + * 合同含税金额 + */ + @ExcelProperty(value = "合同含税金额") + private Long hthsje; + + /** + * 合同累计实际付款金额 + */ + @ExcelProperty(value = "合同累计实际付款金额") + private Long htljsjfkje; + + /** + * 累计结算金额 + */ + @ExcelProperty(value = "累计结算金额") + private Long ljjsje; + + /** + * 多文件逗号分隔 + */ + @ExcelProperty(value = "多文件逗号分隔") + private String fileId; + + /** + * 发票信息 + */ + private List fpxx; + + /** + * 付款信息 + */ + List fkxx; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/mapper/XzdSkyfkFbhtfkMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/mapper/XzdSkyfkFbhtfkMapper.java new file mode 100644 index 00000000..5cfb5e3d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/mapper/XzdSkyfkFbhtfkMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.skyfk.fbhtfk.mapper; + +import org.dromara.xzd.skyfk.fbhtfk.domain.XzdSkyfkFbhtfk; +import org.dromara.xzd.skyfk.fbhtfk.domain.vo.XzdSkyfkFbhtfkVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 收款与付款-分包合同付款Mapper接口 + * + * @author Lion Li + * @date 2025-10-16 + */ +public interface XzdSkyfkFbhtfkMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/service/IXzdSkyfkFbhtfkService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/service/IXzdSkyfkFbhtfkService.java new file mode 100644 index 00000000..9fc89240 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/service/IXzdSkyfkFbhtfkService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.skyfk.fbhtfk.service; + +import org.dromara.xzd.skyfk.fbhtfk.domain.vo.XzdSkyfkFbhtfkVo; +import org.dromara.xzd.skyfk.fbhtfk.domain.bo.XzdSkyfkFbhtfkBo; +import org.dromara.xzd.skyfk.fbhtfk.domain.XzdSkyfkFbhtfk; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 收款与付款-分包合同付款Service接口 + * + * @author Lion Li + * @date 2025-10-16 + */ +public interface IXzdSkyfkFbhtfkService extends IService{ + + /** + * 查询收款与付款-分包合同付款 + * + * @param id 主键 + * @return 收款与付款-分包合同付款 + */ + XzdSkyfkFbhtfkVo queryById(Long id); + + /** + * 分页查询收款与付款-分包合同付款列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 收款与付款-分包合同付款分页列表 + */ + TableDataInfo queryPageList(XzdSkyfkFbhtfkBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的收款与付款-分包合同付款列表 + * + * @param bo 查询条件 + * @return 收款与付款-分包合同付款列表 + */ + List queryList(XzdSkyfkFbhtfkBo bo); + + /** + * 新增收款与付款-分包合同付款 + * + * @param bo 收款与付款-分包合同付款 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSkyfkFbhtfkBo bo); + + /** + * 修改收款与付款-分包合同付款 + * + * @param bo 收款与付款-分包合同付款 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSkyfkFbhtfkBo 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/skyfk/fbhtfk/service/impl/XzdSkyfkFbhtfkServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/service/impl/XzdSkyfkFbhtfkServiceImpl.java new file mode 100644 index 00000000..fef0dd9c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/skyfk/fbhtfk/service/impl/XzdSkyfkFbhtfkServiceImpl.java @@ -0,0 +1,362 @@ +package org.dromara.xzd.skyfk.fbhtfk.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.checkerframework.checker.units.qual.A; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.system.domain.SysOss; +import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo; +import org.dromara.xzd.contractManagement.fenbaohetongxinxi.service.impl.XzdSubcontractServiceImpl; +import org.dromara.xzd.domain.XzdContractClause; +import org.dromara.xzd.domain.vo.*; +import org.dromara.xzd.paymentsReceipts.domain.XzdSfkFapiao; +import org.dromara.xzd.paymentsReceipts.domain.XzdSfkFukuan; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFapiaoBo; +import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFukuanBo; +import org.dromara.xzd.paymentsReceipts.domain.vo.XzdSfkFapiaoVo; +import org.dromara.xzd.paymentsReceipts.service.impl.XzdSfkFapiaoServiceImpl; +import org.dromara.xzd.paymentsReceipts.service.impl.XzdSfkFukuanServiceImpl; +import org.dromara.xzd.service.impl.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.dromara.xzd.skyfk.fbhtfk.domain.bo.XzdSkyfkFbhtfkBo; +import org.dromara.xzd.skyfk.fbhtfk.domain.vo.XzdSkyfkFbhtfkVo; +import org.dromara.xzd.skyfk.fbhtfk.domain.XzdSkyfkFbhtfk; +import org.dromara.xzd.skyfk.fbhtfk.mapper.XzdSkyfkFbhtfkMapper; +import org.dromara.xzd.skyfk.fbhtfk.service.IXzdSkyfkFbhtfkService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 收款与付款-分包合同付款Service业务层处理 + * + * @author Lion Li + * @date 2025-10-16 + */ +@RequiredArgsConstructor +@Service +public class XzdSkyfkFbhtfkServiceImpl extends ServiceImpl implements IXzdSkyfkFbhtfkService { + + private final XzdSkyfkFbhtfkMapper baseMapper; + @Autowired + private SysOssServiceImpl sysOssService; + @Autowired + private XzdSfkFapiaoServiceImpl xzdSfkFapiaoService; + @Autowired + private XzdSfkFukuanServiceImpl xzdSfkFukuanService; + @Autowired + private XzdSubcontractServiceImpl xzdSubcontract; +// @Autowired +// private XzdContractDetailsServiceImpl xzdContractDetailsService; + @Autowired + private XzdSupplierInfoServiceImpl xzdSupplierInfoService; + @Autowired + private XzdSupplierOpenBankServiceImpl xzdSupplierOpenBankService; + @Autowired + private XzdProjectTypeServiceImpl xzdProjectTypeService; + + /** + * 查询收款与付款-分包合同付款 + * + * @param id 主键 + * @return 收款与付款-分包合同付款 + */ + @Override + public XzdSkyfkFbhtfkVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询收款与付款-分包合同付款列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 收款与付款-分包合同付款分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSkyfkFbhtfkBo 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(XzdSkyfkFbhtfkBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSkyfkFbhtfkBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSkyfkFbhtfk::getId); + lqw.eq(bo.getDeptId() != null, XzdSkyfkFbhtfk::getDeptId, bo.getDeptId()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentCode()), XzdSkyfkFbhtfk::getDocumentCode, bo.getDocumentCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitile()), XzdSkyfkFbhtfk::getTitile, bo.getTitile()); + lqw.eq(bo.getDocumentDate() != null, XzdSkyfkFbhtfk::getDocumentDate, bo.getDocumentDate()); + lqw.eq(bo.getContractId() != null, XzdSkyfkFbhtfk::getContractId, bo.getContractId()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdSkyfkFbhtfk::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSkyfkFbhtfk::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getFkxz()), XzdSkyfkFbhtfk::getFkxz, bo.getFkxz()); + lqw.eq(bo.getZchtje() != null, XzdSkyfkFbhtfk::getZchtje, bo.getZchtje()); + lqw.eq(bo.getBqspje() != null, XzdSkyfkFbhtfk::getBqspje, bo.getBqspje()); + lqw.eq(bo.getProjectId() != null, XzdSkyfkFbhtfk::getProjectId, bo.getProjectId()); + lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdSkyfkFbhtfk::getProjectName, bo.getProjectName()); + lqw.eq(bo.getFkdwId() != null, XzdSkyfkFbhtfk::getFkdwId, bo.getFkdwId()); + lqw.eq(StringUtils.isNotBlank(bo.getFkdw()), XzdSkyfkFbhtfk::getFkdw, bo.getFkdw()); + lqw.eq(bo.getSkdwId() != null, XzdSkyfkFbhtfk::getSkdwId, bo.getSkdwId()); + lqw.eq(StringUtils.isNotBlank(bo.getSkdw()), XzdSkyfkFbhtfk::getSkdw, bo.getSkdw()); + lqw.eq(bo.getSkdwYhId() != null, XzdSkyfkFbhtfk::getSkdwYhId, bo.getSkdwYhId()); + lqw.eq(StringUtils.isNotBlank(bo.getSkdwYh()), XzdSkyfkFbhtfk::getSkdwYh, bo.getSkdwYh()); + lqw.eq(StringUtils.isNotBlank(bo.getSkdwYhZh()), XzdSkyfkFbhtfk::getSkdwYhZh, bo.getSkdwYhZh()); + lqw.eq(StringUtils.isNotBlank(bo.getTjzq()), XzdSkyfkFbhtfk::getTjzq, bo.getTjzq()); + lqw.eq(bo.getXmlxId() != null, XzdSkyfkFbhtfk::getXmlxId, bo.getXmlxId()); + lqw.eq(StringUtils.isNotBlank(bo.getXmlx()), XzdSkyfkFbhtfk::getXmlx, bo.getXmlx()); + lqw.eq(StringUtils.isNotBlank(bo.getXmdl()), XzdSkyfkFbhtfk::getXmdl, bo.getXmdl()); + lqw.eq(StringUtils.isNotBlank(bo.getSl()), XzdSkyfkFbhtfk::getSl, bo.getSl()); + lqw.eq(StringUtils.isNotBlank(bo.getFblx()), XzdSkyfkFbhtfk::getFblx, bo.getFblx()); + lqw.eq(StringUtils.isNotBlank(bo.getHtlx()), XzdSkyfkFbhtfk::getHtlx, bo.getHtlx()); + lqw.eq(StringUtils.isNotBlank(bo.getZftk()), XzdSkyfkFbhtfk::getZftk, bo.getZftk()); + lqw.eq(bo.getBqjdje() != null, XzdSkyfkFbhtfk::getBqjdje, bo.getBqjdje()); + lqw.eq(bo.getLjjdje() != null, XzdSkyfkFbhtfk::getLjjdje, bo.getLjjdje()); + lqw.eq(bo.getYfkje() != null, XzdSkyfkFbhtfk::getYfkje, bo.getYfkje()); + lqw.eq(bo.getLjzfje() != null, XzdSkyfkFbhtfk::getLjzfje, bo.getLjzfje()); + lqw.eq(bo.getBqjdyfje() != null, XzdSkyfkFbhtfk::getBqjdyfje, bo.getBqjdyfje()); + lqw.eq(bo.getLjjdyfje() != null, XzdSkyfkFbhtfk::getLjjdyfje, bo.getLjjdyfje()); + lqw.eq(bo.getYfkkhje() != null, XzdSkyfkFbhtfk::getYfkkhje, bo.getYfkkhje()); + lqw.eq(bo.getLjjdjszhtbl() != null, XzdSkyfkFbhtfk::getLjjdjszhtbl, bo.getLjjdjszhtbl()); + lqw.eq(bo.getBqjdzfzbqjdyfbl() != null, XzdSkyfkFbhtfk::getBqjdzfzbqjdyfbl, bo.getBqjdzfzbqjdyfbl()); + lqw.eq(bo.getLjjdzfzljjdyfbl() != null, XzdSkyfkFbhtfk::getLjjdzfzljjdyfbl, bo.getLjjdzfzljjdyfbl()); + lqw.eq(bo.getYfksywdkje() != null, XzdSkyfkFbhtfk::getYfksywdkje, bo.getYfksywdkje()); + lqw.eq(bo.getLjzfzhtbl() != null, XzdSkyfkFbhtfk::getLjzfzhtbl, bo.getLjzfzhtbl()); + lqw.eq(bo.getSyjdyfwfje() != null, XzdSkyfkFbhtfk::getSyjdyfwfje, bo.getSyjdyfwfje()); + lqw.eq(bo.getLjjdjsje() != null, XzdSkyfkFbhtfk::getLjjdjsje, bo.getLjjdjsje()); + lqw.eq(StringUtils.isNotBlank(bo.getSssx()), XzdSkyfkFbhtfk::getSssx, bo.getSssx()); + lqw.eq(bo.getHthsje() != null, XzdSkyfkFbhtfk::getHthsje, bo.getHthsje()); + lqw.eq(bo.getHtljsjfkje() != null, XzdSkyfkFbhtfk::getHtljsjfkje, bo.getHtljsjfkje()); + lqw.eq(bo.getLjjsje() != null, XzdSkyfkFbhtfk::getLjjsje, bo.getLjjsje()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSkyfkFbhtfk::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增收款与付款-分包合同付款 + * + * @param bo 收款与付款-分包合同付款 + * @return 是否新增成功 + */ + @Transactional + @Override + public Boolean insertByBo(XzdSkyfkFbhtfkBo bo) { + XzdSkyfkFbhtfk add = MapstructUtils.convert(bo, XzdSkyfkFbhtfk.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + +// /** +// * 发票信息 +// */ +// private List fpxx; +// +// /** +// * 付款信息 +// */ +// List fkxx; + + if (bo.getFkxx() != null && !bo.getFkxx().isEmpty()){ + for (XzdSfkFukuan fkxx : bo.getFkxx()) { + fkxx.setMainDocumentId(add.getId()); + } + xzdSfkFukuanService.saveBatch(bo.getFkxx()); + } + + if (bo.getFpxx() != null && !bo.getFpxx().isEmpty()){ + for (XzdSfkFapiao fpxx : bo.getFpxx()) { + fpxx.setMainDocumentId(add.getId()); + } + xzdSfkFapiaoService.saveBatch(bo.getFpxx()); + } + + + return flag; + } + + /** + * 修改收款与付款-分包合同付款 + * + * @param bo 收款与付款-分包合同付款 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdSkyfkFbhtfkBo bo) { + XzdSkyfkFbhtfk update = MapstructUtils.convert(bo, XzdSkyfkFbhtfk.class); + validEntityBeforeSave(update); + + XzdSkyfkFbhtfkVo old = queryById(update.getId()); + + //更新文件 + if (bo.getFileId() != null && !bo.getFileId().isEmpty()){ + if (old.getFileId() != null && !old.getFileId().isEmpty()) { + List oldFileId = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList(); + List nowFileId = Arrays.stream(bo.getFileId().split(",")).map(Long::valueOf).toList(); + for (Long l : oldFileId) { + if (!nowFileId.contains(l)) { + sysOssService.deleteWithValidByIds(List.of(l), false); + } + } + } + }else { + if (old.getFileId()!= null && !old.getFileId().isEmpty()){ + List deleteIds = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList(); + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + //发票信息 + if (bo.getFpxx() != null && !bo.getFpxx().isEmpty()){ + if (old.getFpxx() != null && !old.getFpxx().isEmpty()){ + xzdSfkFapiaoService.removeByIds(old.getFpxx()); + } + for (XzdSfkFapiao businessChange : bo.getFpxx()) { + businessChange.setMainDocumentId(update.getId()); + } + xzdSfkFapiaoService.saveBatch(bo.getFpxx()); + }else { + if (old.getFpxx() != null && !old.getFpxx().isEmpty()){ + xzdSfkFapiaoService.removeByIds(old.getFpxx()); + } + } + //付款 信息 + if (bo.getFkxx() != null && !bo.getFkxx().isEmpty()){ + if (old.getFkxx() != null && !old.getFkxx().isEmpty()){ + xzdSfkFukuanService.removeByIds(old.getFkxx()); + } + for (XzdSfkFukuan businessChange : bo.getFkxx()) { + businessChange.setMainDocumentId(update.getId()); + } + xzdSfkFukuanService.saveBatch(bo.getFkxx()); + }else { + if (old.getFkxx() != null && !old.getFkxx().isEmpty()){ + xzdSfkFukuanService.removeByIds(old.getFkxx()); + } + } + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSkyfkFbhtfk entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除收款与付款-分包合同付款信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + + for (Long id : ids) { + XzdSkyfkFbhtfkVo vo = baseMapper.selectVoById(id); + if (vo != null) { + //删除附件 + if (vo.getFileId() != null && !vo.getFileId().isEmpty()) { + List deleteIds = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + } + } + + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(XzdSfkFukuan::getMainDocumentId, id); + xzdSfkFukuanService.remove(lqw); + + LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); + lqw1.eq(XzdSfkFapiao::getMainDocumentId, id); + xzdSfkFapiaoService.remove(lqw1); + + } + + return baseMapper.deleteByIds(ids) > 0; + } + + public void setValue(List vos){ + for (XzdSkyfkFbhtfkVo vo : vos) { + if (vo.getContractId() != null){ + XzdSubcontractVo xzdSubcontractVo = xzdSubcontract.queryById(vo.getContractId()); + if (xzdSubcontractVo != null){ + List subcontractVo = List.of(xzdSubcontractVo); +// xzdContractDetailsService.setValue(xzdContractDetailsVo1); + xzdSubcontractVo = subcontractVo.getFirst(); + //合同对象 + vo.setContract(xzdSubcontractVo); + //合同编码 + vo.setContractCode(xzdSubcontractVo.getContractCode()); + //合同名称 + vo.setContractName(xzdSubcontractVo.getContractName()); + //项目id + vo.setProjectId(xzdSubcontractVo.getProject()); + //项目名称 + vo.setProjectName(xzdSubcontractVo.getProjectName()); + //甲方单位id + vo.setFkdwId(xzdSubcontractVo.getPartyAUnit()); + //甲方单位名称 + vo.setFkdw(xzdSubcontractVo.getPartyAUnitName()); + } + } + //收款单位 + if (vo.getSkdwId() != null){ + XzdSupplierInfoVo xzdSupplierInfoVo = xzdSupplierInfoService.queryById(vo.getSkdwId()); + if (xzdSupplierInfoVo != null){ + vo.setSkdw(xzdSupplierInfoVo.getUnitName()); + } + } + //收款单位银行 + if (vo.getSkdwYhId() != null){ + XzdSupplierOpenBankVo xzdSupplierOpenBankVo = xzdSupplierOpenBankService.queryById(vo.getSkdwYhId()); + if (xzdSupplierOpenBankVo != null){ + vo.setSkdwYh(xzdSupplierOpenBankVo.getOpenBank()); + } + } + //项目类型 + if (vo.getXmlxId() != null){ + XzdProjectTypeVo projectTypeVo = xzdProjectTypeService.queryById(vo.getXmlxId()); + if (projectTypeVo != null){ + vo.setXmlx(projectTypeVo.getTypeName()); + } + //项目大类 + XzdProjectTypeVo bigType = xzdProjectTypeService.getBigType(projectTypeVo.getId()); + if (bigType != null){ + vo.setXmdl(bigType.getTypeName()); + } + } + } + } + +}