10-17-收票与开票-开票申请

This commit is contained in:
2025-10-17 11:24:46 +08:00
parent d6a378f711
commit 9561ee9323
13 changed files with 2538 additions and 0 deletions

View File

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

View File

@ -0,0 +1,432 @@
package org.dromara.xzd.spykp.kpsq.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_spykp_kpsq
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_spykp_kpsq")
public class XzdSpykpKpsq extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 类型
*/
private String type;
/**
* 部门id
*/
private Long deptId;
/**
* 单据编码
*/
private String djbm;
/**
* 申请日期
*/
private Date sqrq;
/**
* 申请人
*/
private String sqr;
/**
* 申请部门(仅部门)
*/
private Long sqbm;
/**
* 部门名称
*/
private String sqbmmc;
/**
* 发票类型(字典)
*/
private String fplx;
/**
* 申请总额
*/
private Long sqze;
/**
* 所属组织
*/
private String sszz;
/**
* 项目id
*/
private Long projectId;
/**
* 项目
*/
private String projectName;
/**
* 计征方式
*/
private String jzfs;
/**
* 项目金额
*/
private Long xmje;
/**
* 合同id
*/
private Long contractId;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同金额
*/
private Long htje;
/**
* 跨区涉税证号
*/
private String kqsszh;
/**
* 开票状态
*/
private String kpzt;
/**
* 差票开额0否1是
*/
private String cekp;
/**
* 差额扣除
*/
private Long cekc;
/**
* 是否预收款0否1是
*/
private String ysk;
/**
* 数据来源
*/
private String sjly;
/**
* 本次结算金额
*/
private Long bcjsje;
/**
* 开票说明
*/
private String kpje;
/**
* 开票分机号
*/
private String kpfjh;
/**
* 终止状态
*/
private String zzzt;
/**
* 扣押金比例
*/
private Long kyjbl;
/**
* 扣押金额度
*/
private Long kyjed;
/**
* 实时刷新0否1是
*/
private String sssx;
/**
* 项目累计申请总额
*/
private Long xmljsqze;
/**
* 项目累计开票总额
*/
private Long xmljkpze;
/**
* 合同累计申请总额
*/
private Long htljsqze;
/**
* 合同累计开票总额
*/
private Long htljkpze;
/**
* 累计结算金额
*/
private Long ljjsje;
/**
* 红蓝类型
*/
private String hllx;
/**
* 蓝字发票代码
*/
private String lzfpdm;
/**
* 蓝字发票号码
*/
private String lzfphm;
/**
* 红字信息编号
*/
private String hzxxbh;
/**
* 通知单编号
*/
private String tzdbh;
/**
* 拆分类型
*/
private String cflx;
/**
* 销项类型(字典)
*/
private String xxlx;
/**
* 复核人
*/
private Long fhr;
/**
* 复核人姓名
*/
private String fhrxm;
/**
* 收款人
*/
private Long skr;
/**
* 收款人姓名
*/
private String skrxm;
/**
* 开票人
*/
private Long kpr;
/**
* 开票人姓名
*/
private String kprxm;
/**
* 备注
*/
private String remark;
/**
* 特定业务
*/
private String tdyw;
/**
* 土地增值税项目编号
*/
private String tdzzsxmbh;
/**
* 不动产权证号
*/
private String bdcqzh;
/**
* 租赁开始日期
*/
private Date zlksrq;
/**
* 租赁结束日期
*/
private Date zljsrq;
/**
* 红冲原因
*/
private String hcyy;
/**
* 销方id(供应商)
*/
private Long xfId;
/**
* 销方税号(社会信用代码)
*/
private String xfsh;
/**
* 销方地址
*/
private String xfdz;
/**
* 销方电话
*/
private String xfdh;
/**
* 销方银行id
*/
private Long xfyhId;
/**
* 销方银行行号
*/
private String xfyhhh;
/**
* 销方银行
*/
private String xfyh;
/**
* 显示销方开户行及账号0否1是
*/
private String xsxfkhhjzh;
/**
* 购方id(客户)
*/
private Long gfId;
/**
* 购方名称
*/
private String gfmc;
/**
* 购方税号(社会信用代码)
*/
private String gfsh;
/**
* 购方地址
*/
private String gfdz;
/**
* 购方电话
*/
private String gfdh;
/**
* 购方银行id
*/
private Long gfyhId;
/**
* 购方银行行号
*/
private String gfyhhh;
/**
* 购方银行
*/
private String gfyh;
/**
* 购方银行账号
*/
private String gfyhzh;
/**
* 购方邮箱
*/
private String gfyx;
/**
* 购方手机
*/
private String gfsj;
/**
* 显示购方开户行及账号0否1是
*/
private String xsgfkhhjzh;
/**
* 购方经办人姓名
*/
private String gfjbrxm;
/**
* 证件类型
*/
private String zjlx;
/**
* 证件号码
*/
private String zjhm;
/**
* 场景模板
*/
private String cjmb;
/**
* 附件(逗号分隔)
*/
private String fileId;
}

View File

@ -0,0 +1,136 @@
package org.dromara.xzd.spykp.kpsq.domain;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 收票与开票-开票申请-发票明细对象 xzd_spykp_kpsq_kpmx
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_spykp_kpsq_kpmx")
public class XzdSpykpKpsqKpmx extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id")
private Long id;
/**
* 关联id
*/
private Long mainId;
/**
* 发票序号
*/
private Long fpxh;
/**
* 商品名称
*/
private String spmc;
/**
* 规格型号
*/
private String spxh;
/**
* 税收分类编码
*/
private String ssflbm;
/**
* 税收分类名称
*/
private String ssflmc;
/**
* 征税项目
*/
private String zsxm;
/**
* 数量
*/
private Long sl;
/**
* 单位(字典)
*/
private String dw;
/**
* 含税单价
*/
private Long hsdj;
/**
* 价税合计
*/
private Long jshj;
/**
* 税率(%)
*/
private Long shuilv;
/**
* 金额
*/
private Long je;
/**
* 税额
*/
private Long se;
/**
* 享受优惠政策0否1是
*/
private String xsyhzc;
/**
* 优惠政策类型(字典)
*/
private String yhzclx;
/**
* 备注
*/
private String remark;
/**
* 编码
*/
private String bm;
/**
* 资源/合同清单名称
*/
private String zyhtqdmc;
/**
* 即征即退类型(字典)
*/
private String jzjtlx;
/**
*
*/
private Long updateBby;
}

View File

@ -0,0 +1,439 @@
package org.dromara.xzd.spykp.kpsq.domain.bo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsq;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
import java.util.Date;
import java.util.List;
/**
* 收票与开票-开票申请业务对象 xzd_spykp_kpsq
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSpykpKpsq.class, reverseConvertGenerate = false)
public class XzdSpykpKpsqBo extends BaseEntity {
/**
* id
*/
private Long id;
/**
* 类型
*/
private String type;
/**
* 部门id
*/
private Long deptId;
/**
* 单据编码
*/
private String djbm;
/**
* 申请日期
*/
private Date sqrq;
/**
* 申请人
*/
private String sqr;
/**
* 申请部门(仅部门)
*/
private Long sqbm;
/**
* 部门名称
*/
private String sqbmmc;
/**
* 发票类型(字典)
*/
private String fplx;
/**
* 申请总额
*/
private Long sqze;
/**
* 所属组织
*/
private String sszz;
/**
* 项目id
*/
private Long projectId;
/**
* 项目
*/
private String projectName;
/**
* 计征方式
*/
private String jzfs;
/**
* 项目金额
*/
private Long xmje;
/**
* 合同id
*/
@NotNull(message = "合同id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long contractId;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String contractCode;
/**
* 合同金额
*/
private Long htje;
/**
* 跨区涉税证号
*/
private String kqsszh;
/**
* 开票状态
*/
private String kpzt;
/**
* 差票开额0否1是
*/
private String cekp;
/**
* 差额扣除
*/
private Long cekc;
/**
* 是否预收款0否1是
*/
private String ysk;
/**
* 数据来源
*/
private String sjly;
/**
* 本次结算金额
*/
private Long bcjsje;
/**
* 开票说明
*/
private String kpje;
/**
* 开票分机号
*/
private String kpfjh;
/**
* 终止状态
*/
private String zzzt;
/**
* 扣押金比例
*/
private Long kyjbl;
/**
* 扣押金额度
*/
private Long kyjed;
/**
* 实时刷新0否1是
*/
private String sssx;
/**
* 项目累计申请总额
*/
private Long xmljsqze;
/**
* 项目累计开票总额
*/
private Long xmljkpze;
/**
* 合同累计申请总额
*/
private Long htljsqze;
/**
* 合同累计开票总额
*/
private Long htljkpze;
/**
* 累计结算金额
*/
private Long ljjsje;
/**
* 红蓝类型
*/
private String hllx;
/**
* 蓝字发票代码
*/
private String lzfpdm;
/**
* 蓝字发票号码
*/
private String lzfphm;
/**
* 红字信息编号
*/
private String hzxxbh;
/**
* 通知单编号
*/
private String tzdbh;
/**
* 拆分类型
*/
private String cflx;
/**
* 销项类型(字典)
*/
private String xxlx;
/**
* 复核人
*/
private Long fhr;
/**
* 复核人姓名
*/
private String fhrxm;
/**
* 收款人
*/
private Long skr;
/**
* 收款人姓名
*/
private String skrxm;
/**
* 开票人
*/
private Long kpr;
/**
* 开票人姓名
*/
private String kprxm;
/**
* 备注
*/
private String remark;
/**
* 特定业务
*/
private String tdyw;
/**
* 土地增值税项目编号
*/
private String tdzzsxmbh;
/**
* 不动产权证号
*/
private String bdcqzh;
/**
* 租赁开始日期
*/
private Date zlksrq;
/**
* 租赁结束日期
*/
private Date zljsrq;
/**
* 红冲原因
*/
private String hcyy;
/**
* 销方id(供应商)
*/
private Long xfId;
/**
* 销方税号(社会信用代码)
*/
private String xfsh;
/**
* 销方地址
*/
private String xfdz;
/**
* 销方电话
*/
private String xfdh;
/**
* 销方银行id
*/
private Long xfyhId;
/**
* 销方银行行号
*/
private String xfyhhh;
/**
* 销方银行
*/
private String xfyh;
/**
* 显示销方开户行及账号0否1是
*/
private String xsxfkhhjzh;
/**
* 购方id(客户)
*/
private Long gfId;
/**
* 购方名称
*/
private String gfmc;
/**
* 购方税号(社会信用代码)
*/
private String gfsh;
/**
* 购方地址
*/
private String gfdz;
/**
* 购方电话
*/
private String gfdh;
/**
* 购方银行id
*/
private Long gfyhId;
/**
* 购方银行行号
*/
private String gfyhhh;
/**
* 购方银行
*/
private String gfyh;
/**
* 购方银行账号
*/
private String gfyhzh;
/**
* 购方邮箱
*/
private String gfyx;
/**
* 购方手机
*/
private String gfsj;
/**
* 显示购方开户行及账号0否1是
*/
private String xsgfkhhjzh;
/**
* 购方经办人姓名
*/
private String gfjbrxm;
/**
* 证件类型
*/
private String zjlx;
/**
* 证件号码
*/
private String zjhm;
/**
* 场景模板
*/
private String cjmb;
/**
* 附件(逗号分隔)
*/
private String fileId;
/**
* 开票明细
*/
List<XzdSpykpKpsqKpmx> kpmx;
}

View File

@ -0,0 +1,134 @@
package org.dromara.xzd.spykp.kpsq.domain.bo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
/**
* 收票与开票-开票申请-发票明细业务对象 xzd_spykp_kpsq_kpmx
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdSpykpKpsqKpmx.class, reverseConvertGenerate = false)
public class XzdSpykpKpsqKpmxBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 关联id
*/
private Long mainId;
/**
* 发票序号
*/
private Long fpxh;
/**
* 商品名称
*/
private String spmc;
/**
* 规格型号
*/
private String spxh;
/**
* 税收分类编码
*/
private String ssflbm;
/**
* 税收分类名称
*/
private String ssflmc;
/**
* 征税项目
*/
private String zsxm;
/**
* 数量
*/
private Long sl;
/**
* 单位(字典)
*/
private String dw;
/**
* 含税单价
*/
private Long hsdj;
/**
* 价税合计
*/
private Long jshj;
/**
* 税率(%)
*/
private Long shuilv;
/**
* 金额
*/
private Long je;
/**
* 税额
*/
private Long se;
/**
* 享受优惠政策0否1是
*/
private String xsyhzc;
/**
* 优惠政策类型(字典)
*/
private String yhzclx;
/**
* 备注
*/
private String remark;
/**
* 编码
*/
private String bm;
/**
* 资源/合同清单名称
*/
private String zyhtqdmc;
/**
* 即征即退类型(字典)
*/
private String jzjtlx;
/**
*
*/
private Long updateBby;
}

View File

@ -0,0 +1,160 @@
package org.dromara.xzd.spykp.kpsq.domain.vo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
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_spykp_kpsq_kpmx
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSpykpKpsqKpmx.class)
public class XzdSpykpKpsqKpmxVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 关联id
*/
@ExcelProperty(value = "关联id")
private Long mainId;
/**
* 发票序号
*/
@ExcelProperty(value = "发票序号")
private Long fpxh;
/**
* 商品名称
*/
@ExcelProperty(value = "商品名称")
private String spmc;
/**
* 规格型号
*/
@ExcelProperty(value = "规格型号")
private String spxh;
/**
* 税收分类编码
*/
@ExcelProperty(value = "税收分类编码")
private String ssflbm;
/**
* 税收分类名称
*/
@ExcelProperty(value = "税收分类名称")
private String ssflmc;
/**
* 征税项目
*/
@ExcelProperty(value = "征税项目")
private String zsxm;
/**
* 数量
*/
@ExcelProperty(value = "数量")
private Long sl;
/**
* 单位(字典)
*/
@ExcelProperty(value = "单位(字典)")
private String dw;
/**
* 含税单价
*/
@ExcelProperty(value = "含税单价")
private Long hsdj;
/**
* 价税合计
*/
@ExcelProperty(value = "价税合计")
private Long jshj;
/**
* 税率(%)
*/
@ExcelProperty(value = "税率(%)")
private Long shuilv;
/**
* 金额
*/
@ExcelProperty(value = "金额")
private Long je;
/**
* 税额
*/
@ExcelProperty(value = "税额")
private Long se;
/**
* 享受优惠政策0否1是
*/
@ExcelProperty(value = "享受优惠政策0否1是")
private String xsyhzc;
/**
* 优惠政策类型(字典)
*/
@ExcelProperty(value = "优惠政策类型(字典)")
private String yhzclx;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 编码
*/
@ExcelProperty(value = "编码")
private String bm;
/**
* 资源/合同清单名称
*/
@ExcelProperty(value = "资源/合同清单名称")
private String zyhtqdmc;
/**
* 即征即退类型(字典)
*/
@ExcelProperty(value = "即征即退类型(字典)")
private String jzjtlx;
/**
*
*/
@ExcelProperty(value = "")
private Long updateBby;
}

View File

@ -0,0 +1,522 @@
package org.dromara.xzd.spykp.kpsq.domain.vo;
import java.util.Date;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsq;
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.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 收票与开票-开票申请视图对象 xzd_spykp_kpsq
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdSpykpKpsq.class)
public class XzdSpykpKpsqVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@ExcelProperty(value = "id")
private Long id;
/**
* 类型
*/
@ExcelProperty(value = "类型")
private String type;
/**
* 部门id
*/
@ExcelProperty(value = "部门id")
private Long deptId;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String djbm;
/**
* 申请日期
*/
@ExcelProperty(value = "申请日期")
private Date sqrq;
/**
* 申请人
*/
@ExcelProperty(value = "申请人")
private String sqr;
/**
* 申请部门(仅部门)
*/
@ExcelProperty(value = "申请部门(仅部门)")
private Long sqbm;
/**
* 部门名称
*/
@ExcelProperty(value = "部门名称")
private String sqbmmc;
/**
* 发票类型(字典)
*/
@ExcelProperty(value = "发票类型(字典)")
private String fplx;
/**
* 申请总额
*/
@ExcelProperty(value = "申请总额")
private Long sqze;
/**
* 所属组织
*/
@ExcelProperty(value = "所属组织")
private String sszz;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 项目
*/
@ExcelProperty(value = "项目")
private String projectName;
/**
* 计征方式
*/
@ExcelProperty(value = "计征方式")
private String jzfs;
/**
* 项目金额
*/
@ExcelProperty(value = "项目金额")
private Long xmje;
/**
* 合同id
*/
@ExcelProperty(value = "合同id")
private Long contractId;
/**
* 合同编码
*/
@ExcelProperty(value = "合同编码")
private String contractCode;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额")
private Long htje;
/**
* 跨区涉税证号
*/
@ExcelProperty(value = "跨区涉税证号")
private String kqsszh;
/**
* 开票状态
*/
@ExcelProperty(value = "开票状态")
private String kpzt;
/**
* 差票开额0否1是
*/
@ExcelProperty(value = "差票开额0否1是")
private String cekp;
/**
* 差额扣除
*/
@ExcelProperty(value = "差额扣除")
private Long cekc;
/**
* 是否预收款0否1是
*/
@ExcelProperty(value = "是否预收款0否1是")
private String ysk;
/**
* 数据来源
*/
@ExcelProperty(value = "数据来源")
private String sjly;
/**
* 本次结算金额
*/
@ExcelProperty(value = "本次结算金额")
private Long bcjsje;
/**
* 开票说明
*/
@ExcelProperty(value = "开票说明")
private String kpje;
/**
* 开票分机号
*/
@ExcelProperty(value = "开票分机号")
private String kpfjh;
/**
* 终止状态
*/
@ExcelProperty(value = "终止状态")
private String zzzt;
/**
* 扣押金比例
*/
@ExcelProperty(value = "扣押金比例")
private Long kyjbl;
/**
* 扣押金额度
*/
@ExcelProperty(value = "扣押金额度")
private Long kyjed;
/**
* 实时刷新0否1是
*/
@ExcelProperty(value = "实时刷新0否1是")
private String sssx;
/**
* 项目累计申请总额
*/
@ExcelProperty(value = "项目累计申请总额")
private Long xmljsqze;
/**
* 项目累计开票总额
*/
@ExcelProperty(value = "项目累计开票总额")
private Long xmljkpze;
/**
* 合同累计申请总额
*/
@ExcelProperty(value = "合同累计申请总额")
private Long htljsqze;
/**
* 合同累计开票总额
*/
@ExcelProperty(value = "合同累计开票总额")
private Long htljkpze;
/**
* 累计结算金额
*/
@ExcelProperty(value = "累计结算金额")
private Long ljjsje;
/**
* 红蓝类型
*/
@ExcelProperty(value = "红蓝类型")
private String hllx;
/**
* 蓝字发票代码
*/
@ExcelProperty(value = "蓝字发票代码")
private String lzfpdm;
/**
* 蓝字发票号码
*/
@ExcelProperty(value = "蓝字发票号码")
private String lzfphm;
/**
* 红字信息编号
*/
@ExcelProperty(value = "红字信息编号")
private String hzxxbh;
/**
* 通知单编号
*/
@ExcelProperty(value = "通知单编号")
private String tzdbh;
/**
* 拆分类型
*/
@ExcelProperty(value = "拆分类型")
private String cflx;
/**
* 销项类型(字典)
*/
@ExcelProperty(value = "销项类型(字典)")
private String xxlx;
/**
* 复核人
*/
@ExcelProperty(value = "复核人")
private Long fhr;
/**
* 复核人姓名
*/
@ExcelProperty(value = "复核人姓名")
private String fhrxm;
/**
* 收款人
*/
@ExcelProperty(value = "收款人")
private Long skr;
/**
* 收款人姓名
*/
@ExcelProperty(value = "收款人姓名")
private String skrxm;
/**
* 开票人
*/
@ExcelProperty(value = "开票人")
private Long kpr;
/**
* 开票人姓名
*/
@ExcelProperty(value = "开票人姓名")
private String kprxm;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 特定业务
*/
@ExcelProperty(value = "特定业务")
private String tdyw;
/**
* 土地增值税项目编号
*/
@ExcelProperty(value = "土地增值税项目编号")
private String tdzzsxmbh;
/**
* 不动产权证号
*/
@ExcelProperty(value = "不动产权证号")
private String bdcqzh;
/**
* 租赁开始日期
*/
@ExcelProperty(value = "租赁开始日期")
private Date zlksrq;
/**
* 租赁结束日期
*/
@ExcelProperty(value = "租赁结束日期")
private Date zljsrq;
/**
* 红冲原因
*/
@ExcelProperty(value = "红冲原因")
private String hcyy;
/**
* 销方id(供应商)
*/
@ExcelProperty(value = "销方id(供应商)")
private Long xfId;
/**
* 销方税号(社会信用代码)
*/
@ExcelProperty(value = "销方税号(社会信用代码)")
private String xfsh;
/**
* 销方地址
*/
@ExcelProperty(value = "销方地址")
private String xfdz;
/**
* 销方电话
*/
@ExcelProperty(value = "销方电话")
private String xfdh;
/**
* 销方银行id
*/
@ExcelProperty(value = "销方银行id")
private Long xfyhId;
/**
* 销方银行行号
*/
@ExcelProperty(value = "销方银行行号")
private String xfyhhh;
/**
* 销方银行
*/
@ExcelProperty(value = "销方银行")
private String xfyh;
/**
* 显示销方开户行及账号0否1是
*/
@ExcelProperty(value = "显示销方开户行及账号0否1是")
private String xsxfkhhjzh;
/**
* 购方id(客户)
*/
@ExcelProperty(value = "购方id(客户)")
private Long gfId;
/**
* 购方名称
*/
@ExcelProperty(value = "购方名称")
private String gfmc;
/**
* 购方税号(社会信用代码)
*/
@ExcelProperty(value = "购方税号(社会信用代码)")
private String gfsh;
/**
* 购方地址
*/
@ExcelProperty(value = "购方地址")
private String gfdz;
/**
* 购方电话
*/
@ExcelProperty(value = "购方电话")
private String gfdh;
/**
* 购方银行id
*/
@ExcelProperty(value = "购方银行id")
private Long gfyhId;
/**
* 购方银行行号
*/
@ExcelProperty(value = "购方银行行号")
private String gfyhhh;
/**
* 购方银行
*/
@ExcelProperty(value = "购方银行")
private String gfyh;
/**
* 购方银行账号
*/
@ExcelProperty(value = "购方银行账号")
private String gfyhzh;
/**
* 购方邮箱
*/
@ExcelProperty(value = "购方邮箱")
private String gfyx;
/**
* 购方手机
*/
@ExcelProperty(value = "购方手机")
private String gfsj;
/**
* 显示购方开户行及账号0否1是
*/
@ExcelProperty(value = "显示购方开户行及账号0否1是")
private String xsgfkhhjzh;
/**
* 购方经办人姓名
*/
@ExcelProperty(value = "购方经办人姓名")
private String gfjbrxm;
/**
* 证件类型
*/
@ExcelProperty(value = "证件类型")
private String zjlx;
/**
* 证件号码
*/
@ExcelProperty(value = "证件号码")
private String zjhm;
/**
* 场景模板
*/
@ExcelProperty(value = "场景模板")
private String cjmb;
/**
* 附件(逗号分隔)
*/
@ExcelProperty(value = "附件(逗号分隔)")
private String fileId;
/**
* 开票明细
*/
List<XzdSpykpKpsqKpmx> kpmx;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.spykp.kpsq.mapper;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
import org.dromara.xzd.spykp.kpsq.domain.vo.XzdSpykpKpsqKpmxVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 收票与开票-开票申请-发票明细Mapper接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface XzdSpykpKpsqKpmxMapper extends BaseMapperPlus<XzdSpykpKpsqKpmx, XzdSpykpKpsqKpmxVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.spykp.kpsq.mapper;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsq;
import org.dromara.xzd.spykp.kpsq.domain.vo.XzdSpykpKpsqVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 收票与开票-开票申请Mapper接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface XzdSpykpKpsqMapper extends BaseMapperPlus<XzdSpykpKpsq, XzdSpykpKpsqVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.spykp.kpsq.service;
import org.dromara.xzd.spykp.kpsq.domain.vo.XzdSpykpKpsqKpmxVo;
import org.dromara.xzd.spykp.kpsq.domain.bo.XzdSpykpKpsqKpmxBo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
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-17
*/
public interface IXzdSpykpKpsqKpmxService extends IService<XzdSpykpKpsqKpmx>{
/**
* 查询收票与开票-开票申请-发票明细
*
* @param id 主键
* @return 收票与开票-开票申请-发票明细
*/
XzdSpykpKpsqKpmxVo queryById(Long id);
/**
* 分页查询收票与开票-开票申请-发票明细列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 收票与开票-开票申请-发票明细分页列表
*/
TableDataInfo<XzdSpykpKpsqKpmxVo> queryPageList(XzdSpykpKpsqKpmxBo bo, PageQuery pageQuery);
/**
* 查询符合条件的收票与开票-开票申请-发票明细列表
*
* @param bo 查询条件
* @return 收票与开票-开票申请-发票明细列表
*/
List<XzdSpykpKpsqKpmxVo> queryList(XzdSpykpKpsqKpmxBo bo);
/**
* 新增收票与开票-开票申请-发票明细
*
* @param bo 收票与开票-开票申请-发票明细
* @return 是否新增成功
*/
Boolean insertByBo(XzdSpykpKpsqKpmxBo bo);
/**
* 修改收票与开票-开票申请-发票明细
*
* @param bo 收票与开票-开票申请-发票明细
* @return 是否修改成功
*/
Boolean updateByBo(XzdSpykpKpsqKpmxBo bo);
/**
* 校验并批量删除收票与开票-开票申请-发票明细信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

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

View File

@ -0,0 +1,150 @@
package org.dromara.xzd.spykp.kpsq.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.spykp.kpsq.domain.bo.XzdSpykpKpsqKpmxBo;
import org.dromara.xzd.spykp.kpsq.domain.vo.XzdSpykpKpsqKpmxVo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
import org.dromara.xzd.spykp.kpsq.mapper.XzdSpykpKpsqKpmxMapper;
import org.dromara.xzd.spykp.kpsq.service.IXzdSpykpKpsqKpmxService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 收票与开票-开票申请-发票明细Service业务层处理
*
* @author Lion Li
* @date 2025-10-17
*/
@RequiredArgsConstructor
@Service
public class XzdSpykpKpsqKpmxServiceImpl extends ServiceImpl<XzdSpykpKpsqKpmxMapper, XzdSpykpKpsqKpmx> implements IXzdSpykpKpsqKpmxService {
private final XzdSpykpKpsqKpmxMapper baseMapper;
/**
* 查询收票与开票-开票申请-发票明细
*
* @param id 主键
* @return 收票与开票-开票申请-发票明细
*/
@Override
public XzdSpykpKpsqKpmxVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询收票与开票-开票申请-发票明细列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 收票与开票-开票申请-发票明细分页列表
*/
@Override
public TableDataInfo<XzdSpykpKpsqKpmxVo> queryPageList(XzdSpykpKpsqKpmxBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSpykpKpsqKpmx> lqw = buildQueryWrapper(bo);
Page<XzdSpykpKpsqKpmxVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的收票与开票-开票申请-发票明细列表
*
* @param bo 查询条件
* @return 收票与开票-开票申请-发票明细列表
*/
@Override
public List<XzdSpykpKpsqKpmxVo> queryList(XzdSpykpKpsqKpmxBo bo) {
LambdaQueryWrapper<XzdSpykpKpsqKpmx> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdSpykpKpsqKpmx> buildQueryWrapper(XzdSpykpKpsqKpmxBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdSpykpKpsqKpmx> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdSpykpKpsqKpmx::getId);
lqw.eq(bo.getMainId() != null, XzdSpykpKpsqKpmx::getMainId, bo.getMainId());
lqw.eq(bo.getFpxh() != null, XzdSpykpKpsqKpmx::getFpxh, bo.getFpxh());
lqw.eq(StringUtils.isNotBlank(bo.getSpmc()), XzdSpykpKpsqKpmx::getSpmc, bo.getSpmc());
lqw.eq(StringUtils.isNotBlank(bo.getSpxh()), XzdSpykpKpsqKpmx::getSpxh, bo.getSpxh());
lqw.eq(StringUtils.isNotBlank(bo.getSsflbm()), XzdSpykpKpsqKpmx::getSsflbm, bo.getSsflbm());
lqw.eq(StringUtils.isNotBlank(bo.getSsflmc()), XzdSpykpKpsqKpmx::getSsflmc, bo.getSsflmc());
lqw.eq(StringUtils.isNotBlank(bo.getZsxm()), XzdSpykpKpsqKpmx::getZsxm, bo.getZsxm());
lqw.eq(bo.getSl() != null, XzdSpykpKpsqKpmx::getSl, bo.getSl());
lqw.eq(StringUtils.isNotBlank(bo.getDw()), XzdSpykpKpsqKpmx::getDw, bo.getDw());
lqw.eq(bo.getHsdj() != null, XzdSpykpKpsqKpmx::getHsdj, bo.getHsdj());
lqw.eq(bo.getJshj() != null, XzdSpykpKpsqKpmx::getJshj, bo.getJshj());
lqw.eq(bo.getShuilv() != null, XzdSpykpKpsqKpmx::getShuilv, bo.getShuilv());
lqw.eq(bo.getJe() != null, XzdSpykpKpsqKpmx::getJe, bo.getJe());
lqw.eq(bo.getSe() != null, XzdSpykpKpsqKpmx::getSe, bo.getSe());
lqw.eq(StringUtils.isNotBlank(bo.getXsyhzc()), XzdSpykpKpsqKpmx::getXsyhzc, bo.getXsyhzc());
lqw.eq(StringUtils.isNotBlank(bo.getYhzclx()), XzdSpykpKpsqKpmx::getYhzclx, bo.getYhzclx());
lqw.eq(StringUtils.isNotBlank(bo.getBm()), XzdSpykpKpsqKpmx::getBm, bo.getBm());
lqw.eq(StringUtils.isNotBlank(bo.getZyhtqdmc()), XzdSpykpKpsqKpmx::getZyhtqdmc, bo.getZyhtqdmc());
lqw.eq(StringUtils.isNotBlank(bo.getJzjtlx()), XzdSpykpKpsqKpmx::getJzjtlx, bo.getJzjtlx());
lqw.eq(bo.getUpdateBby() != null, XzdSpykpKpsqKpmx::getUpdateBby, bo.getUpdateBby());
return lqw;
}
/**
* 新增收票与开票-开票申请-发票明细
*
* @param bo 收票与开票-开票申请-发票明细
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdSpykpKpsqKpmxBo bo) {
XzdSpykpKpsqKpmx add = MapstructUtils.convert(bo, XzdSpykpKpsqKpmx.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改收票与开票-开票申请-发票明细
*
* @param bo 收票与开票-开票申请-发票明细
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdSpykpKpsqKpmxBo bo) {
XzdSpykpKpsqKpmx update = MapstructUtils.convert(bo, XzdSpykpKpsqKpmx.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdSpykpKpsqKpmx entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除收票与开票-开票申请-发票明细信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,290 @@
package org.dromara.xzd.spykp.kpsq.service.impl;
import cn.hutool.core.util.IdUtil;
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.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.domain.XzdContractSkxx;
import org.dromara.xzd.paymentsReceipts.domain.bo.XzdSfkFapiaoBo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsqKpmx;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.spykp.kpsq.domain.bo.XzdSpykpKpsqBo;
import org.dromara.xzd.spykp.kpsq.domain.vo.XzdSpykpKpsqVo;
import org.dromara.xzd.spykp.kpsq.domain.XzdSpykpKpsq;
import org.dromara.xzd.spykp.kpsq.mapper.XzdSpykpKpsqMapper;
import org.dromara.xzd.spykp.kpsq.service.IXzdSpykpKpsqService;
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-17
*/
@RequiredArgsConstructor
@Service
public class XzdSpykpKpsqServiceImpl extends ServiceImpl<XzdSpykpKpsqMapper, XzdSpykpKpsq> implements IXzdSpykpKpsqService {
private final XzdSpykpKpsqMapper baseMapper;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdSpykpKpsqKpmxServiceImpl xzdSpykpKpsqKpmxService;
/**
* 查询收票与开票-开票申请
*
* @param id 主键
* @return 收票与开票-开票申请
*/
@Override
public XzdSpykpKpsqVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询收票与开票-开票申请列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 收票与开票-开票申请分页列表
*/
@Override
public TableDataInfo<XzdSpykpKpsqVo> queryPageList(XzdSpykpKpsqBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSpykpKpsq> lqw = buildQueryWrapper(bo);
Page<XzdSpykpKpsqVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的收票与开票-开票申请列表
*
* @param bo 查询条件
* @return 收票与开票-开票申请列表
*/
@Override
public List<XzdSpykpKpsqVo> queryList(XzdSpykpKpsqBo bo) {
LambdaQueryWrapper<XzdSpykpKpsq> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdSpykpKpsq> buildQueryWrapper(XzdSpykpKpsqBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdSpykpKpsq> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdSpykpKpsq::getId);
lqw.eq(StringUtils.isNotBlank(bo.getType()), XzdSpykpKpsq::getType, bo.getType());
lqw.eq(bo.getDeptId() != null, XzdSpykpKpsq::getDeptId, bo.getDeptId());
lqw.eq(StringUtils.isNotBlank(bo.getDjbm()), XzdSpykpKpsq::getDjbm, bo.getDjbm());
lqw.eq(bo.getSqrq() != null, XzdSpykpKpsq::getSqrq, bo.getSqrq());
lqw.eq(StringUtils.isNotBlank(bo.getSqr()), XzdSpykpKpsq::getSqr, bo.getSqr());
lqw.eq(bo.getSqbm() != null, XzdSpykpKpsq::getSqbm, bo.getSqbm());
lqw.eq(StringUtils.isNotBlank(bo.getSqbmmc()), XzdSpykpKpsq::getSqbmmc, bo.getSqbmmc());
lqw.eq(StringUtils.isNotBlank(bo.getFplx()), XzdSpykpKpsq::getFplx, bo.getFplx());
lqw.eq(bo.getSqze() != null, XzdSpykpKpsq::getSqze, bo.getSqze());
lqw.eq(StringUtils.isNotBlank(bo.getSszz()), XzdSpykpKpsq::getSszz, bo.getSszz());
lqw.eq(bo.getProjectId() != null, XzdSpykpKpsq::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), XzdSpykpKpsq::getProjectName, bo.getProjectName());
lqw.eq(StringUtils.isNotBlank(bo.getJzfs()), XzdSpykpKpsq::getJzfs, bo.getJzfs());
lqw.eq(bo.getXmje() != null, XzdSpykpKpsq::getXmje, bo.getXmje());
lqw.eq(bo.getContractId() != null, XzdSpykpKpsq::getContractId, bo.getContractId());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdSpykpKpsq::getContractCode, bo.getContractCode());
lqw.eq(bo.getHtje() != null, XzdSpykpKpsq::getHtje, bo.getHtje());
lqw.eq(StringUtils.isNotBlank(bo.getKqsszh()), XzdSpykpKpsq::getKqsszh, bo.getKqsszh());
lqw.eq(StringUtils.isNotBlank(bo.getKpzt()), XzdSpykpKpsq::getKpzt, bo.getKpzt());
lqw.eq(StringUtils.isNotBlank(bo.getCekp()), XzdSpykpKpsq::getCekp, bo.getCekp());
lqw.eq(bo.getCekc() != null, XzdSpykpKpsq::getCekc, bo.getCekc());
lqw.eq(StringUtils.isNotBlank(bo.getYsk()), XzdSpykpKpsq::getYsk, bo.getYsk());
lqw.eq(StringUtils.isNotBlank(bo.getSjly()), XzdSpykpKpsq::getSjly, bo.getSjly());
lqw.eq(bo.getBcjsje() != null, XzdSpykpKpsq::getBcjsje, bo.getBcjsje());
lqw.eq(StringUtils.isNotBlank(bo.getKpje()), XzdSpykpKpsq::getKpje, bo.getKpje());
lqw.eq(StringUtils.isNotBlank(bo.getKpfjh()), XzdSpykpKpsq::getKpfjh, bo.getKpfjh());
lqw.eq(StringUtils.isNotBlank(bo.getZzzt()), XzdSpykpKpsq::getZzzt, bo.getZzzt());
lqw.eq(bo.getKyjbl() != null, XzdSpykpKpsq::getKyjbl, bo.getKyjbl());
lqw.eq(bo.getKyjed() != null, XzdSpykpKpsq::getKyjed, bo.getKyjed());
lqw.eq(StringUtils.isNotBlank(bo.getSssx()), XzdSpykpKpsq::getSssx, bo.getSssx());
lqw.eq(bo.getXmljsqze() != null, XzdSpykpKpsq::getXmljsqze, bo.getXmljsqze());
lqw.eq(bo.getXmljkpze() != null, XzdSpykpKpsq::getXmljkpze, bo.getXmljkpze());
lqw.eq(bo.getHtljsqze() != null, XzdSpykpKpsq::getHtljsqze, bo.getHtljsqze());
lqw.eq(bo.getHtljkpze() != null, XzdSpykpKpsq::getHtljkpze, bo.getHtljkpze());
lqw.eq(bo.getLjjsje() != null, XzdSpykpKpsq::getLjjsje, bo.getLjjsje());
lqw.eq(StringUtils.isNotBlank(bo.getHllx()), XzdSpykpKpsq::getHllx, bo.getHllx());
lqw.eq(StringUtils.isNotBlank(bo.getLzfpdm()), XzdSpykpKpsq::getLzfpdm, bo.getLzfpdm());
lqw.eq(StringUtils.isNotBlank(bo.getLzfphm()), XzdSpykpKpsq::getLzfphm, bo.getLzfphm());
lqw.eq(StringUtils.isNotBlank(bo.getHzxxbh()), XzdSpykpKpsq::getHzxxbh, bo.getHzxxbh());
lqw.eq(StringUtils.isNotBlank(bo.getTzdbh()), XzdSpykpKpsq::getTzdbh, bo.getTzdbh());
lqw.eq(StringUtils.isNotBlank(bo.getCflx()), XzdSpykpKpsq::getCflx, bo.getCflx());
lqw.eq(StringUtils.isNotBlank(bo.getXxlx()), XzdSpykpKpsq::getXxlx, bo.getXxlx());
lqw.eq(bo.getFhr() != null, XzdSpykpKpsq::getFhr, bo.getFhr());
lqw.eq(StringUtils.isNotBlank(bo.getFhrxm()), XzdSpykpKpsq::getFhrxm, bo.getFhrxm());
lqw.eq(bo.getSkr() != null, XzdSpykpKpsq::getSkr, bo.getSkr());
lqw.eq(StringUtils.isNotBlank(bo.getSkrxm()), XzdSpykpKpsq::getSkrxm, bo.getSkrxm());
lqw.eq(bo.getKpr() != null, XzdSpykpKpsq::getKpr, bo.getKpr());
lqw.eq(StringUtils.isNotBlank(bo.getKprxm()), XzdSpykpKpsq::getKprxm, bo.getKprxm());
lqw.eq(StringUtils.isNotBlank(bo.getTdyw()), XzdSpykpKpsq::getTdyw, bo.getTdyw());
lqw.eq(StringUtils.isNotBlank(bo.getTdzzsxmbh()), XzdSpykpKpsq::getTdzzsxmbh, bo.getTdzzsxmbh());
lqw.eq(StringUtils.isNotBlank(bo.getBdcqzh()), XzdSpykpKpsq::getBdcqzh, bo.getBdcqzh());
lqw.eq(bo.getZlksrq() != null, XzdSpykpKpsq::getZlksrq, bo.getZlksrq());
lqw.eq(bo.getZljsrq() != null, XzdSpykpKpsq::getZljsrq, bo.getZljsrq());
lqw.eq(StringUtils.isNotBlank(bo.getHcyy()), XzdSpykpKpsq::getHcyy, bo.getHcyy());
lqw.eq(bo.getXfId() != null, XzdSpykpKpsq::getXfId, bo.getXfId());
lqw.eq(StringUtils.isNotBlank(bo.getXfsh()), XzdSpykpKpsq::getXfsh, bo.getXfsh());
lqw.eq(StringUtils.isNotBlank(bo.getXfdz()), XzdSpykpKpsq::getXfdz, bo.getXfdz());
lqw.eq(StringUtils.isNotBlank(bo.getXfdh()), XzdSpykpKpsq::getXfdh, bo.getXfdh());
lqw.eq(bo.getXfyhId() != null, XzdSpykpKpsq::getXfyhId, bo.getXfyhId());
lqw.eq(StringUtils.isNotBlank(bo.getXfyhhh()), XzdSpykpKpsq::getXfyhhh, bo.getXfyhhh());
lqw.eq(StringUtils.isNotBlank(bo.getXfyh()), XzdSpykpKpsq::getXfyh, bo.getXfyh());
lqw.eq(StringUtils.isNotBlank(bo.getXsxfkhhjzh()), XzdSpykpKpsq::getXsxfkhhjzh, bo.getXsxfkhhjzh());
lqw.eq(bo.getGfId() != null, XzdSpykpKpsq::getGfId, bo.getGfId());
lqw.eq(StringUtils.isNotBlank(bo.getGfmc()), XzdSpykpKpsq::getGfmc, bo.getGfmc());
lqw.eq(StringUtils.isNotBlank(bo.getGfsh()), XzdSpykpKpsq::getGfsh, bo.getGfsh());
lqw.eq(StringUtils.isNotBlank(bo.getGfdz()), XzdSpykpKpsq::getGfdz, bo.getGfdz());
lqw.eq(StringUtils.isNotBlank(bo.getGfdh()), XzdSpykpKpsq::getGfdh, bo.getGfdh());
lqw.eq(bo.getGfyhId() != null, XzdSpykpKpsq::getGfyhId, bo.getGfyhId());
lqw.eq(StringUtils.isNotBlank(bo.getGfyhhh()), XzdSpykpKpsq::getGfyhhh, bo.getGfyhhh());
lqw.eq(StringUtils.isNotBlank(bo.getGfyh()), XzdSpykpKpsq::getGfyh, bo.getGfyh());
lqw.eq(StringUtils.isNotBlank(bo.getGfyhzh()), XzdSpykpKpsq::getGfyhzh, bo.getGfyhzh());
lqw.eq(StringUtils.isNotBlank(bo.getGfyx()), XzdSpykpKpsq::getGfyx, bo.getGfyx());
lqw.eq(StringUtils.isNotBlank(bo.getGfsj()), XzdSpykpKpsq::getGfsj, bo.getGfsj());
lqw.eq(StringUtils.isNotBlank(bo.getXsgfkhhjzh()), XzdSpykpKpsq::getXsgfkhhjzh, bo.getXsgfkhhjzh());
lqw.eq(StringUtils.isNotBlank(bo.getGfjbrxm()), XzdSpykpKpsq::getGfjbrxm, bo.getGfjbrxm());
lqw.eq(StringUtils.isNotBlank(bo.getZjlx()), XzdSpykpKpsq::getZjlx, bo.getZjlx());
lqw.eq(StringUtils.isNotBlank(bo.getZjhm()), XzdSpykpKpsq::getZjhm, bo.getZjhm());
lqw.eq(StringUtils.isNotBlank(bo.getCjmb()), XzdSpykpKpsq::getCjmb, bo.getCjmb());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSpykpKpsq::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增收票与开票-开票申请
*
* @param bo 收票与开票-开票申请
* @return 是否新增成功
*/
@Transactional
@Override
public Boolean insertByBo(XzdSpykpKpsqBo bo) {
XzdSpykpKpsq add = MapstructUtils.convert(bo, XzdSpykpKpsq.class);
validEntityBeforeSave(add);
add.setDjbm(IdUtil.getSnowflakeNextIdStr());
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
if (bo.getKpmx() != null && !bo.getKpmx().isEmpty()){
for (XzdSpykpKpsqKpmx kpmx : bo.getKpmx()) {
kpmx.setMainId(add.getId());
}
xzdSpykpKpsqKpmxService.saveBatch(bo.getKpmx());
}
return flag;
}
/**
* 修改收票与开票-开票申请
*
* @param bo 收票与开票-开票申请
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdSpykpKpsqBo bo) {
XzdSpykpKpsq update = MapstructUtils.convert(bo, XzdSpykpKpsq.class);
validEntityBeforeSave(update);
XzdSpykpKpsqVo old = queryById(update.getId());
//更新文件
if (bo.getFileId() != null && !bo.getFileId().isEmpty()){
if (old.getFileId() != null && !old.getFileId().isEmpty()) {
List<Long> oldFileId = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList();
List<Long> 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<Long> deleteIds = Arrays.stream(old.getFileId().split(",")).map(Long::valueOf).toList();
sysOssService.deleteWithValidByIds(deleteIds, false);
}
}
if (bo.getKpmx() != null && !bo.getKpmx().isEmpty()){
if (old.getKpmx() != null && !old.getKpmx().isEmpty()){
xzdSpykpKpsqKpmxService.removeByIds(old.getKpmx());
}
for (XzdSpykpKpsqKpmx skxx : bo.getKpmx()) {
skxx.setMainId(update.getId());
}
xzdSpykpKpsqKpmxService.saveBatch(bo.getKpmx());
}else {
if (old.getKpmx() != null && !old.getKpmx().isEmpty()){
xzdSpykpKpsqKpmxService.removeByIds(old.getKpmx());
}
}
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdSpykpKpsq entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除收票与开票-开票申请信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
for (Long id : ids) {
XzdSpykpKpsqVo vo = queryById(id);
LambdaQueryWrapper<XzdSpykpKpsqKpmx> lqw1 = new LambdaQueryWrapper<>();
lqw1.eq(XzdSpykpKpsqKpmx::getMainId, id);
xzdSpykpKpsqKpmxService.remove(lqw1);
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> 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<XzdSpykpKpsqVo> vos){
for (XzdSpykpKpsqVo vo : vos) {
}
}
}