diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/controller/XzdSpykpKpsqController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/controller/XzdSpykpKpsqController.java new file mode 100644 index 00000000..f102fb3f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/controller/XzdSpykpKpsqController.java @@ -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 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 list = xzdSpykpKpsqService.queryList(bo); + ExcelUtil.exportExcel(list, "收票与开票-开票申请", XzdSpykpKpsqVo.class, response); + } + + /** + * 获取收票与开票-开票申请详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("kpsq:kpsq:query") + @GetMapping("/{id}") + public R 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 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 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 remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSpykpKpsqService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/XzdSpykpKpsq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/XzdSpykpKpsq.java new file mode 100644 index 00000000..9297b7c0 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/XzdSpykpKpsq.java @@ -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; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/XzdSpykpKpsqKpmx.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/XzdSpykpKpsqKpmx.java new file mode 100644 index 00000000..6f08b9f2 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/XzdSpykpKpsqKpmx.java @@ -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; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/bo/XzdSpykpKpsqBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/bo/XzdSpykpKpsqBo.java new file mode 100644 index 00000000..c96c56ae --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/bo/XzdSpykpKpsqBo.java @@ -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 kpmx; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/bo/XzdSpykpKpsqKpmxBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/bo/XzdSpykpKpsqKpmxBo.java new file mode 100644 index 00000000..c31dd7e9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/bo/XzdSpykpKpsqKpmxBo.java @@ -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; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/vo/XzdSpykpKpsqKpmxVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/vo/XzdSpykpKpsqKpmxVo.java new file mode 100644 index 00000000..8b787500 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/vo/XzdSpykpKpsqKpmxVo.java @@ -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; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/vo/XzdSpykpKpsqVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/vo/XzdSpykpKpsqVo.java new file mode 100644 index 00000000..9ade0544 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/domain/vo/XzdSpykpKpsqVo.java @@ -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 kpmx; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/mapper/XzdSpykpKpsqKpmxMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/mapper/XzdSpykpKpsqKpmxMapper.java new file mode 100644 index 00000000..82a03c49 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/mapper/XzdSpykpKpsqKpmxMapper.java @@ -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 { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/mapper/XzdSpykpKpsqMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/mapper/XzdSpykpKpsqMapper.java new file mode 100644 index 00000000..c52d487e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/mapper/XzdSpykpKpsqMapper.java @@ -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 { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/IXzdSpykpKpsqKpmxService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/IXzdSpykpKpsqKpmxService.java new file mode 100644 index 00000000..45d63d83 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/IXzdSpykpKpsqKpmxService.java @@ -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{ + + /** + * 查询收票与开票-开票申请-发票明细 + * + * @param id 主键 + * @return 收票与开票-开票申请-发票明细 + */ + XzdSpykpKpsqKpmxVo queryById(Long id); + + /** + * 分页查询收票与开票-开票申请-发票明细列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 收票与开票-开票申请-发票明细分页列表 + */ + TableDataInfo queryPageList(XzdSpykpKpsqKpmxBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的收票与开票-开票申请-发票明细列表 + * + * @param bo 查询条件 + * @return 收票与开票-开票申请-发票明细列表 + */ + List 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 ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/IXzdSpykpKpsqService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/IXzdSpykpKpsqService.java new file mode 100644 index 00000000..7b6e03fd --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/IXzdSpykpKpsqService.java @@ -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{ + + /** + * 查询收票与开票-开票申请 + * + * @param id 主键 + * @return 收票与开票-开票申请 + */ + XzdSpykpKpsqVo queryById(Long id); + + /** + * 分页查询收票与开票-开票申请列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 收票与开票-开票申请分页列表 + */ + TableDataInfo queryPageList(XzdSpykpKpsqBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的收票与开票-开票申请列表 + * + * @param bo 查询条件 + * @return 收票与开票-开票申请列表 + */ + List 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 ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/impl/XzdSpykpKpsqKpmxServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/impl/XzdSpykpKpsqKpmxServiceImpl.java new file mode 100644 index 00000000..7c695446 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/impl/XzdSpykpKpsqKpmxServiceImpl.java @@ -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 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 queryPageList(XzdSpykpKpsqKpmxBo 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(XzdSpykpKpsqKpmxBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSpykpKpsqKpmxBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 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/spykp/kpsq/service/impl/XzdSpykpKpsqServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/impl/XzdSpykpKpsqServiceImpl.java new file mode 100644 index 00000000..86ce8a05 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/spykp/kpsq/service/impl/XzdSpykpKpsqServiceImpl.java @@ -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 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 queryPageList(XzdSpykpKpsqBo 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(XzdSpykpKpsqBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSpykpKpsqBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper 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 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.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 ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + + for (Long id : ids) { + XzdSpykpKpsqVo vo = queryById(id); + + LambdaQueryWrapper lqw1 = new LambdaQueryWrapper<>(); + lqw1.eq(XzdSpykpKpsqKpmx::getMainId, id); + xzdSpykpKpsqKpmxService.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 (XzdSpykpKpsqVo vo : vos) { + + } + } + +}