diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/XzdBxBxsq.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/XzdBxBxsq.java index a5b5a5dc..f26f5419 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/XzdBxBxsq.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/XzdBxBxsq.java @@ -68,7 +68,16 @@ public class XzdBxBxsq extends BaseEntity { /** * 开户银行 */ - private Long khyh; +// private Long khyh; + /** + * 开户银行 + */ + private String openBank; + + /** + * 支行名称 + */ + private String branchName; /** * 开户银行账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/bo/XzdBxBxsqBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/bo/XzdBxBxsqBo.java index 44bd73d1..b0a1ae4f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/bo/XzdBxBxsqBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/bo/XzdBxBxsqBo.java @@ -61,7 +61,17 @@ public class XzdBxBxsqBo extends BaseEntity { /** * 开户银行 */ - private Long khyh; +// private Long khyh; + + /** + * 开户银行 + */ + private String openBank; + + /** + * 支行名称 + */ + private String branchName; /** * 开户银行账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/vo/XzdBxBxsqVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/vo/XzdBxBxsqVo.java index ca224e74..7010d60d 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/vo/XzdBxBxsqVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/bx/bxsq/domain/vo/XzdBxBxsqVo.java @@ -102,13 +102,23 @@ public class XzdBxBxsqVo implements Serializable { /** * 开户银行 */ - private Long khyh; +// private Long khyh; /** - * 开户银行名称 + * 开户银行 */ - @Translation(type = TransConstant.XZD_SUPPLIER_OPEN_BANK_ID_TO_NAME, mapper = "khyh") - private String khyhmc; + private String openBank; + + /** + * 支行名称 + */ + private String branchName; + +// /** +// * 开户银行名称 +// */ +// @Translation(type = TransConstant.XZD_SUPPLIER_OPEN_BANK_ID_TO_NAME, mapper = "khyh") +// private String khyhmc; /** * 开户银行账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractChangeController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractChangeController.java new file mode 100644 index 00000000..7515e513 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractChangeController.java @@ -0,0 +1,153 @@ +package org.dromara.xzd.comprehensive.controller; + +import java.util.List; + +import cn.dev33.satoken.annotation.SaMode; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo; +import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo; +import org.dromara.xzd.comprehensive.service.IXzdCsContractInformationService; +import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService; +import org.dromara.xzd.domain.bo.XzdBusinessSealBo; +import org.dromara.xzd.domain.vo.XzdBusinessSealVo; +import org.dromara.xzd.service.IXzdBusinessSealService; +import org.springframework.context.annotation.Lazy; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractChangeVo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractChangeBo; +import org.dromara.xzd.comprehensive.service.IXzdSjContractChangeService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 设计合同变更 + * + * @author Lion Li + * @date 2025-11-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/comprehensive/sjContractChange") +public class XzdSjContractChangeController extends BaseController { + + private final IXzdSjContractChangeService xzdSjContractChangeService; + + private final IXzdBusinessSealService xzdBusinessSealService; + + @Lazy + private final IXzdSjContractInfoService xzdSjContractInfoService; + + + /** + * 查询综合服务合同信息列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractChange:add","comprehensive:sjContractChange:edit","comprehensive:sjContractChange:list"},mode = SaMode.OR) + @GetMapping("/getList") + public TableDataInfo getList(XzdSjContractInfoBo bo, PageQuery pageQuery) { + return xzdSjContractInfoService.queryPageList(bo, pageQuery); + } + + /** + * 查询印章帮助列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractChange:add","comprehensive:sjContractChange:edit","comprehensive:sjContractChange:list"},mode = SaMode.OR) + @GetMapping("/businessSealList") + public TableDataInfo list(XzdBusinessSealBo bo, PageQuery pageQuery) { + return xzdBusinessSealService.queryPageList(bo, pageQuery); + } + + + /** + * 获取综合服务合同信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission(value = {"comprehensive:sjContractChange:add","comprehensive:sjContractChange:edit"},mode = SaMode.OR) + @GetMapping("/get/{id}") + public R getCsContractInformationInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractInfoService.queryById(id)); + } + + /** + * 查询设计合同变更列表 + */ + @SaCheckPermission("comprehensive:sjContractChange:list") + @GetMapping("/list") + public TableDataInfo list(XzdSjContractChangeBo bo, PageQuery pageQuery) { + return xzdSjContractChangeService.queryPageList(bo, pageQuery); + } + + /** + * 导出设计合同变更列表 + */ + @SaCheckPermission("comprehensive:sjContractChange:export") + @Log(title = "设计合同变更", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdSjContractChangeBo bo, HttpServletResponse response) { + List list = xzdSjContractChangeService.queryList(bo); + ExcelUtil.exportExcel(list, "设计合同变更", XzdSjContractChangeVo.class, response); + } + + /** + * 获取设计合同变更详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("comprehensive:sjContractChange:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractChangeService.queryById(id)); + } + + /** + * 新增设计合同变更 + */ + @SaCheckPermission("comprehensive:sjContractChange:add") + @Log(title = "设计合同变更", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdSjContractChangeBo bo) { + return toAjax(xzdSjContractChangeService.insertByBo(bo)); + } + + /** + * 修改设计合同变更 + */ + @SaCheckPermission("comprehensive:sjContractChange:edit") + @Log(title = "设计合同变更", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdSjContractChangeBo bo) { + return toAjax(xzdSjContractChangeService.updateByBo(bo)); + } + + /** + * 删除设计合同变更 + * + * @param ids 主键串 + */ + @SaCheckPermission("comprehensive:sjContractChange:remove") + @Log(title = "设计合同变更", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSjContractChangeService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractInfoController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractInfoController.java new file mode 100644 index 00000000..e4dc6952 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractInfoController.java @@ -0,0 +1,190 @@ +package org.dromara.xzd.comprehensive.controller; + +import java.util.List; + +import cn.dev33.satoken.annotation.SaMode; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.xzd.comprehensive.domain.bo.*; +import org.dromara.xzd.comprehensive.domain.vo.*; +import org.dromara.xzd.comprehensive.service.*; +import org.dromara.xzd.domain.bo.XzdBusinessSealBo; +import org.dromara.xzd.domain.vo.XzdBusinessSealVo; +import org.dromara.xzd.domain.vo.XzdProjectVo; +import org.dromara.xzd.service.IXzdBusinessSealService; +import org.dromara.xzd.service.IXzdProjectService; +import org.springframework.context.annotation.Lazy; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 设计合同信息 + * + * @author Lion Li + * @date 2025-11-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/comprehensive/sjContractInfo") +public class XzdSjContractInfoController extends BaseController { + + private final IXzdSjContractInfoService xzdSjContractInfoService; + + + private final IXzdBusinessSealService xzdBusinessSealService; + + @Lazy + private final IXzdSjContractSuspendService xzdSjContractSuspendService; + + @Lazy + private final IXzdSjContractChangeService xzdSjContractChangeService; + + @Lazy + private final IXzdProjectService xzdProjectService; + + + + /** + * 获取项目信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR) + @GetMapping("/getProject/{id}") + public R getProjectInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdProjectService.queryById(id)); + } + + + /** + * 查询综合服务合同变更列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR) + @GetMapping("/getChangList") + public TableDataInfo getChangList(XzdSjContractChangeBo bo, PageQuery pageQuery) { + return xzdSjContractChangeService.queryPageList(bo, pageQuery); + } + + /** + * 获取综合服务合同变更详细信息 + * + * @param id 主键 + */ + @SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR) + @GetMapping("/getChang/{id}") + public R getChangInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractChangeService.queryById(id)); + } + + /** + * 查询综合服务合同终止列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR) + @GetMapping("/getSuspendList") + public TableDataInfo getSuspendList(XzdSjContractSuspendBo bo, PageQuery pageQuery) { + return xzdSjContractSuspendService.queryPageList(bo, pageQuery); + } + + /** + * 获取综合服务合同终止详细信息 + * + * @param id 主键 + */ + @SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR) + @GetMapping("/getSuspend/{id}") + public R getSuspendInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractSuspendService.queryById(id)); + } + + /** + * 查询印章帮助列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractInfo:add","comprehensive:sjContractInfo:edit","comprehensive:sjContractInfo:list"},mode = SaMode.OR) + @GetMapping("/businessSealList") + public TableDataInfo list(XzdBusinessSealBo bo, PageQuery pageQuery) { + return xzdBusinessSealService.queryPageList(bo, pageQuery); + } + + /** + * 查询设计合同信息列表 + */ + @SaCheckPermission("comprehensive:sjContractInfo:list") + @GetMapping("/list") + public TableDataInfo list(XzdSjContractInfoBo bo, PageQuery pageQuery) { + return xzdSjContractInfoService.queryPageList(bo, pageQuery); + } + + /** + * 导出设计合同信息列表 + */ + @SaCheckPermission("comprehensive:sjContractInfo:export") + @Log(title = "设计合同信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdSjContractInfoBo bo, HttpServletResponse response) { + List list = xzdSjContractInfoService.queryList(bo); + ExcelUtil.exportExcel(list, "设计合同信息", XzdSjContractInfoVo.class, response); + } + + /** + * 获取设计合同信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("comprehensive:sjContractInfo:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractInfoService.queryById(id)); + } + + /** + * 新增设计合同信息 + */ + @SaCheckPermission("comprehensive:sjContractInfo:add") + @Log(title = "设计合同信息", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdSjContractInfoBo bo) { + return toAjax(xzdSjContractInfoService.insertByBo(bo)); + } + + /** + * 修改设计合同信息 + */ + @SaCheckPermission("comprehensive:sjContractInfo:edit") + @Log(title = "设计合同信息", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdSjContractInfoBo bo) { + return toAjax(xzdSjContractInfoService.updateByBo(bo)); + } + + /** + * 删除设计合同信息 + * + * @param ids 主键串 + */ + @SaCheckPermission("comprehensive:sjContractInfo:remove") + @Log(title = "设计合同信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSjContractInfoService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractSuspendController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractSuspendController.java new file mode 100644 index 00000000..c4db3610 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/controller/XzdSjContractSuspendController.java @@ -0,0 +1,154 @@ +package org.dromara.xzd.comprehensive.controller; + +import java.util.List; + +import cn.dev33.satoken.annotation.SaMode; +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.dromara.xzd.comprehensive.domain.bo.XzdCsContractInformationBo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo; +import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo; +import org.dromara.xzd.comprehensive.service.IXzdCsContractInformationService; +import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService; +import org.dromara.xzd.domain.bo.XzdBusinessSealBo; +import org.dromara.xzd.domain.vo.XzdBusinessSealVo; +import org.dromara.xzd.service.IXzdBusinessSealService; +import org.springframework.context.annotation.Lazy; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractSuspendVo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractSuspendBo; +import org.dromara.xzd.comprehensive.service.IXzdSjContractSuspendService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 设计合同终止 + * + * @author Lion Li + * @date 2025-11-19 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/xzd/comprehensive/sjContractSuspend") +public class XzdSjContractSuspendController extends BaseController { + + private final IXzdSjContractSuspendService xzdSjContractSuspendService; + + private final IXzdBusinessSealService xzdBusinessSealService; + + + @Lazy + private final IXzdSjContractInfoService xzdSjContractInfoService; + + /** + * 查询综合服务合同信息列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractSuspend:add","comprehensive:sjContractSuspend:edit","comprehensive:sjContractSuspend:list"},mode = SaMode.OR) + @GetMapping("/getList") + public TableDataInfo getList(XzdSjContractInfoBo bo, PageQuery pageQuery) { + return xzdSjContractInfoService.queryPageList(bo, pageQuery); + } + + /** + * 查询印章帮助列表 + */ + @SaCheckPermission(value = {"comprehensive:sjContractSuspend:add","comprehensive:sjContractSuspend:edit","comprehensive:sjContractSuspend:list"},mode = SaMode.OR) + @GetMapping("/businessSealList") + public TableDataInfo list(XzdBusinessSealBo bo, PageQuery pageQuery) { + return xzdBusinessSealService.queryPageList(bo, pageQuery); + } + + + + /** + * 获取综合服务合同信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission(value = {"comprehensive:csContractChange:add","comprehensive:csContractChange:edit"},mode = SaMode.OR) + @GetMapping("/get/{id}") + public R getCsContractInformationInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractInfoService.queryById(id)); + } + + /** + * 查询设计合同终止列表 + */ + @SaCheckPermission("comprehensive:sjContractSuspend:list") + @GetMapping("/list") + public TableDataInfo list(XzdSjContractSuspendBo bo, PageQuery pageQuery) { + return xzdSjContractSuspendService.queryPageList(bo, pageQuery); + } + + /** + * 导出设计合同终止列表 + */ + @SaCheckPermission("comprehensive:sjContractSuspend:export") + @Log(title = "设计合同终止", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(XzdSjContractSuspendBo bo, HttpServletResponse response) { + List list = xzdSjContractSuspendService.queryList(bo); + ExcelUtil.exportExcel(list, "设计合同终止", XzdSjContractSuspendVo.class, response); + } + + /** + * 获取设计合同终止详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("comprehensive:sjContractSuspend:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(xzdSjContractSuspendService.queryById(id)); + } + + /** + * 新增设计合同终止 + */ + @SaCheckPermission("comprehensive:sjContractSuspend:add") + @Log(title = "设计合同终止", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody XzdSjContractSuspendBo bo) { + return toAjax(xzdSjContractSuspendService.insertByBo(bo)); + } + + /** + * 修改设计合同终止 + */ + @SaCheckPermission("comprehensive:sjContractSuspend:edit") + @Log(title = "设计合同终止", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody XzdSjContractSuspendBo bo) { + return toAjax(xzdSjContractSuspendService.updateByBo(bo)); + } + + /** + * 删除设计合同终止 + * + * @param ids 主键串 + */ + @SaCheckPermission("comprehensive:sjContractSuspend:remove") + @Log(title = "设计合同终止", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(xzdSjContractSuspendService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractChange.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractChange.java new file mode 100644 index 00000000..a1ca9397 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractChange.java @@ -0,0 +1,218 @@ +package org.dromara.xzd.comprehensive.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; +import java.time.LocalDate; + +/** + * 设计合同变更对象 xzd_sj_contract_change + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_sj_contract_change") +public class XzdSjContractChange extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 单据编码 + */ + private String docCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate docDate; + + /** + * 合同编码(关联合同表) + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同类型 + */ + private String contractType; + + /** + * 变更类型 + */ + private Long changeType; + + /** + * 项目 + */ + private Long project; + + /** + * 经营模式 + */ + private String businessMode; + + /** + * 组织 + */ + private Long organization; + + /** + * 甲方单位 + */ + private Long partyA; + + /** + * 乙方单位 + */ + private Long partyB; + + /** + * 原合同造价 + */ + private BigDecimal originalContractAmount; + + /** + * 变更价税合计 + */ + private BigDecimal changeTaxIncludedAmount; + + /** + * 变更后价税合计 + */ + private BigDecimal afterChangeTaxIncludedAmount; + + /** + * 累计变更金额 + */ + private BigDecimal cumulativeChangeAmount; + + /** + * 警示 + */ + private String warning; + + /** + * 备注 + */ + private String remark; + + /** + * 支付条款 + */ + private String paymentTerms; + + /** + * 是否用印(0:否,1:是) + */ + private Long isSealed; + + /** + * 变更后项目经理 + */ + private Long afterChangeProjectManager; + + /** + * 变更后项目责任人 + */ + private Long afterChangeProjectLeader; + + /** + * 变更后现场经理 + */ + private Long afterChangeSiteManager; + + /** + * 变更后合同备注 + */ + private String afterChangeContractRemark; + + /** + * 项目大类 + */ + private String projectCategory; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 付款额不能超合同额(0:否,1:是) + */ + private Long paymentNotExceedContract; + + /** + * 付款额不超合同额支付比例(%) + */ + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算不能超合同额(0:否,1:是) + */ + private Long budgetNotExceedContract; + + /** + * 预结算/结算不超合同额比例(%) + */ + private BigDecimal budgetNotExceedRatio; + + /** + * 实时刷新(0:否,1:是) + */ + private Long realTimeUpdate; + + /** + * 合同累计变更金额 + */ + private BigDecimal contractCumulativeChangeAmount; + + /** + * 合同文本 + */ + private String contractText; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 文件id + */ + private String fileId; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractInfo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractInfo.java new file mode 100644 index 00000000..87befa1a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractInfo.java @@ -0,0 +1,343 @@ +package org.dromara.xzd.comprehensive.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; +import java.time.LocalDate; + +/** + * 设计合同信息对象 xzd_sj_contract_info + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_sj_contract_info") +public class XzdSjContractInfo extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 合同状态 + */ + private String htzt; + + /** + * 合同编码 + */ + private String contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同类型(如:租车合同) + */ + private String contractType; + + /** + * 项目ID(关联项目表) + */ + private Long projectId; + + /** + * 签订日期 + */ + private LocalDate signDate; + + /** + * 甲方单位 + */ + private Long partyA; + + /** + * 含税合同金额 + */ + private BigDecimal taxIncludedAmount; + + /** + * 合同状态(如:新增、生效) + */ + private String contractStatus; + + /** + * 乙方单位 + */ + private Long partyB; + + /** + * 累计变更金额 + */ + private BigDecimal cumulativeChangeAmount; + + /** + * 部门ID(关联部门表) + */ + private Long departmentId; + + /** + * 归档日期 + */ + private LocalDate archivalDate; + + /** + * 是否研发类(0:否,1:是) + */ + private Long isRD; + + /** + * 开票单位 + */ + private Long invoiceIssuer; + + /** + * 收票单位 + */ + private Long invoiceReceiver; + + /** + * 有效期开始日期 + */ + private LocalDate validStartDate; + + /** + * 有效期结束日期 + */ + private LocalDate validEndDate; + + /** + * 是否用印(0:否,1:是) + */ + private Long isSealed; + + /** + * 大写合同价税合计 + */ + private String taxIncludedAmountUpper; + + /** + * 警示 + */ + private String warning; + + /** + * 支付条款 + */ + private String paymentTerms; + + /** + * 备注 + */ + private String remark; + + /** + * 签约组织 + */ + private Long signOrganization; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 项目大类 + */ + private String projectCategory; + + /** + * 项目责任人 + */ + private Long projectOwner; + + /** + * WBS编码 + */ + private String wbs; + + /** + * 备案状态(如:未备案、已备案) + */ + private String filingStatus; + + /** + * 备案时间 + */ + private LocalDate filingTime; + + /** + * 是否需备案(0:否,1:是) + */ + private Long needFiling; + + /** + * 预算分类 + */ + private Long budgetCategory; + + /** + * 是否固定单价合同(0:否,1:是) + */ + private Long isFixedUnitPrice; + + /** + * 是否总价包干合同(0:否,1:是) + */ + private Long isLumpSum; + + /** + * 付款额不能超合同额(0:否,1:是) + */ + private Long paymentNotExceedContract; + + /** + * 付款额不超合同额比例(%) + */ + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算不能超合同额(0:否,1:是) + */ + private Long budgetNotExceedContract; + + /** + * 预结算/结算不超合同额比例(%) + */ + private BigDecimal budgetNotExceedRatio; + + /** + * 合同文本 + */ + private String contractText; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件id + */ + private String fileId; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 固定单价下的含税暂定总价(小写) + */ + private BigDecimal provisionalTotalTaxIncluded; + + /** + * 固定单价下的含税暂定总价(大写) + */ + private String provisionalTotalTaxIncludedUpper; + + /** + * 固定单价下的增值税金额(小写) + */ + private BigDecimal provisionalVatAmount; + + /** + * 固定单价下的增值税金额(大写) + */ + private String provisionalVatAmountUpper; + + /** + * 固定单价下的增值税税率(%) + */ + private BigDecimal provisionalVatRate; + + /** + * 固定单价下的增值税发票类型(如“专用发票”) + */ + private String provisionalVatInvoiceType; + + /** + * 固定单价下的不含税暂定总价(小写) + */ + private BigDecimal provisionalTotalTaxExcluded; + + /** + * 固定单价下的不含税暂定总价(大写) + */ + private String provisionalTotalTaxExcludedUpper; + + /** + * 固定总价下的含税总价(小写) + */ + private BigDecimal fixedTotalTaxIncluded; + + /** + * 固定总价下的含税总价(大写) + */ + private String fixedTotalTaxIncludedUpper; + + /** + * 固定总价下的增值税金额(小写) + */ + private BigDecimal fixedVatAmount; + + /** + * 固定总价下的增值税金额(大写) + */ + private String fixedVatAmountUpper; + + /** + * 固定总价下的增值税税率(%) + */ + private BigDecimal fixedVatRate; + + /** + * 固定总价下的增值税发票类型(如“专用发票”) + */ + private String fixedVatInvoiceType; + + /** + * 固定总价下的不含税总价(小写) + */ + private BigDecimal fixedTotalTaxExcluded; + + /** + * 固定总价下的不含税总价(大写) + */ + private String fixedTotalTaxExcludedUpper; + + /** + * 固定总价是否可调整(0:否,1:是) + */ + private Long fixedTotalAdjustable; + + /** + * 固定总价调整说明(如“合同执行中金额不予调整,另有约定除外”) + */ + private String fixedTotalAdjustNote; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractSuspend.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractSuspend.java new file mode 100644 index 00000000..5c4150af --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjContractSuspend.java @@ -0,0 +1,123 @@ +package org.dromara.xzd.comprehensive.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; +import java.time.LocalDate; + +/** + * 设计合同终止对象 xzd_sj_contract_suspend + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_sj_contract_suspend") +public class XzdSjContractSuspend extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @TableId(value = "id") + private Long id; + + /** + * 采购合同信息ID(合同编码) + */ + private Long contractInformationId; + + /** + * 单据编码 + */ + private String receiptsCode; + + /** + * 标题 + */ + private String title; + + /** + * 单据日期 + */ + private LocalDate documentDate; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 终止日期 + */ + private LocalDate terminationDate; + + /** + * 工程项目 + */ + private String project; + + /** + * 乙方单位 + */ + private Long artyBUnit; + + /** + * 甲方单位 + */ + private Long partyAUnit; + + /** + * 终止原因 + */ + private String terminationCause; + + /** + * 项目大类 + */ + private String projectCategory; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 累计结算金额 + */ + private Long cumulativeSettlementAmount; + + /** + * 部门id + */ + private Long deptId; + + /** + * 累计付款金额 + */ + private BigDecimal cumulativePaymentAmount; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjhtZfjd.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjhtZfjd.java new file mode 100644 index 00000000..ab89608d --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/XzdSjhtZfjd.java @@ -0,0 +1,62 @@ +package org.dromara.xzd.comprehensive.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.math.BigDecimal; + +import java.io.Serial; + +/** + * 设计合同付款节点信息对象 xzd_sjht_zfjd + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("xzd_sjht_zfjd") +public class XzdSjhtZfjd extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 自增主键 + */ + @TableId(value = "id") + private Long id; + + /** + * 关联设计合同id + */ + private Long mainId; + + /** + * 付款阶段名称(如“合同签订后付款”) + */ + private String paymentStage; + + /** + * 阶段具体描述(对应合同条款原文) + */ + private String stageDesc; + + /** + * 付款比例(%,如30.00表示30%) + */ + private BigDecimal paymentRatio; + + /** + * 付款触发条件(前置条件) + */ + private String triggerConditions; + + /** + * 时间要求(工作日) + */ + private Integer timeLimit; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractChangeBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractChangeBo.java new file mode 100644 index 00000000..6e0cf2e4 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractChangeBo.java @@ -0,0 +1,252 @@ +package org.dromara.xzd.comprehensive.domain.bo; + +import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; +import org.dromara.xzd.comprehensive.domain.XzdSjContractChange; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.xzd.domain.XzdBusinessChange; +import org.dromara.xzd.domain.XzdContractClause; +import org.dromara.xzd.domain.XzdDeductionItems; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * 设计合同变更业务对象 xzd_sj_contract_change + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSjContractChange.class, reverseConvertGenerate = false) +public class XzdSjContractChangeBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空", groups = { EditGroup.class }) + private String docCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate docDate; + + /** + * 合同编码(关联合同表) + */ + private Long contractCode; + + /** + * 合同名称 + */ + private String contractName; + + /** + * 合同类型 + */ + private String contractType; + + /** + * 变更类型 + */ + private Long changeType; + + /** + * 项目 + */ + private Long project; + + /** + * 经营模式 + */ + private String businessMode; + + /** + * 组织 + */ + private Long organization; + + /** + * 甲方单位 + */ + private Long partyA; + + /** + * 乙方单位 + */ + private Long partyB; + + /** + * 原合同造价 + */ + private BigDecimal originalContractAmount; + + /** + * 变更价税合计 + */ + private BigDecimal changeTaxIncludedAmount; + + /** + * 变更后价税合计 + */ + private BigDecimal afterChangeTaxIncludedAmount; + + /** + * 累计变更金额 + */ + private BigDecimal cumulativeChangeAmount; + + /** + * 警示 + */ + private String warning; + + /** + * 备注 + */ + private String remark; + + /** + * 支付条款 + */ + private String paymentTerms; + + /** + * 是否用印(0:否,1:是) + */ + private Long isSealed; + + /** + * 变更后项目经理 + */ + private Long afterChangeProjectManager; + + /** + * 变更后项目责任人 + */ + private Long afterChangeProjectLeader; + + /** + * 变更后现场经理 + */ + private Long afterChangeSiteManager; + + /** + * 变更后合同备注 + */ + private String afterChangeContractRemark; + + /** + * 项目大类 + */ + private String projectCategory; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 付款额不能超合同额(0:否,1:是) + */ + private Long paymentNotExceedContract; + + /** + * 付款额不超合同额支付比例(%) + */ + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算不能超合同额(0:否,1:是) + */ + private Long budgetNotExceedContract; + + /** + * 预结算/结算不超合同额比例(%) + */ + private BigDecimal budgetNotExceedRatio; + + /** + * 实时刷新(0:否,1:是) + */ + private Long realTimeUpdate; + + /** + * 合同累计变更金额 + */ + private BigDecimal contractCumulativeChangeAmount; + + /** + * 合同文本 + */ + private String contractText; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 文件id + */ + private String fileId; + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + /** + * 支付节点 + */ + private List zftk; + + /** + * 合同变更清单 + */ + private List htbgqds; + + /** + * 印章信息 + */ + private List sealInfo; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractInfoBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractInfoBo.java new file mode 100644 index 00000000..17a23a1c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractInfoBo.java @@ -0,0 +1,388 @@ +package org.dromara.xzd.comprehensive.domain.bo; + +import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx; +import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; +import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.xzd.domain.XzdBusinessChange; +import org.dromara.xzd.domain.XzdContractClause; +import org.dromara.xzd.domain.XzdDeductionItems; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * 设计合同信息业务对象 xzd_sj_contract_info + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSjContractInfo.class, reverseConvertGenerate = false) +public class XzdSjContractInfoBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 合同状态 + */ + private String htzt; + + /** + * 合同编码 + */ + @NotBlank(message = "合同编码不能为空", groups = { EditGroup.class }) + private String contractCode; + + /** + * 合同名称 + */ + @NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractName; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate documentDate; + + /** + * 合同类型(如:租车合同) + */ + @NotBlank(message = "合同类型(如:租车合同)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractType; + + /** + * 项目ID(关联项目表) + */ + @NotNull(message = "项目ID(关联项目表)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 签订日期 + */ + private LocalDate signDate; + + /** + * 甲方单位 + */ + @NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long partyA; + + /** + * 含税合同金额 + */ + private BigDecimal taxIncludedAmount; + + /** + * 合同状态(如:新增、生效) + */ + private String contractStatus; + + /** + * 乙方单位 + */ + @NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long partyB; + + /** + * 累计变更金额 + */ + private BigDecimal cumulativeChangeAmount; + + /** + * 部门ID(关联部门表) + */ + private Long departmentId; + + /** + * 归档日期 + */ + private LocalDate archivalDate; + + /** + * 是否研发类(0:否,1:是) + */ + @NotNull(message = "是否研发类(0:否,1:是)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long isRD; + + /** + * 开票单位 + */ + @NotNull(message = "开票单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long invoiceIssuer; + + /** + * 收票单位 + */ + @NotNull(message = "收票单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long invoiceReceiver; + + /** + * 有效期开始日期 + */ + private LocalDate validStartDate; + + /** + * 有效期结束日期 + */ + private LocalDate validEndDate; + + /** + * 是否用印(0:否,1:是) + */ + private Long isSealed; + + /** + * 大写合同价税合计 + */ + private String taxIncludedAmountUpper; + + /** + * 警示 + */ + private String warning; + + /** + * 支付条款 + */ + private String paymentTerms; + + /** + * 备注 + */ + private String remark; + + /** + * 签约组织 + */ + @NotNull(message = "签约组织不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long signOrganization; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 项目大类 + */ + private String projectCategory; + + /** + * 项目责任人 + */ + private Long projectOwner; + + /** + * WBS编码 + */ + private String wbs; + + /** + * 备案状态(如:未备案、已备案) + */ + private String filingStatus; + + /** + * 备案时间 + */ + private LocalDate filingTime; + + /** + * 是否需备案(0:否,1:是) + */ + private Long needFiling; + + /** + * 预算分类 + */ + @NotNull(message = "预算分类不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long budgetCategory; + + /** + * 是否固定单价合同(0:否,1:是) + */ + private Long isFixedUnitPrice; + + /** + * 是否总价包干合同(0:否,1:是) + */ + private Long isLumpSum; + + /** + * 付款额不能超合同额(0:否,1:是) + */ + private Long paymentNotExceedContract; + + /** + * 付款额不超合同额比例(%) + */ + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算不能超合同额(0:否,1:是) + */ + private Long budgetNotExceedContract; + + /** + * 预结算/结算不超合同额比例(%) + */ + private BigDecimal budgetNotExceedRatio; + + /** + * 合同文本 + */ + private String contractText; + + /** + * 部门id + */ + private Long deptId; + + /** + * 单据引用 + */ + private String documentReference; + + /** + * 文件id + */ + private String fileId; + + /** + * 审核状态 + */ + private String auditStatus; + + /** + * 固定单价下的含税暂定总价(小写) + */ + private BigDecimal provisionalTotalTaxIncluded; + + /** + * 固定单价下的含税暂定总价(大写) + */ + private String provisionalTotalTaxIncludedUpper; + + /** + * 固定单价下的增值税金额(小写) + */ + private BigDecimal provisionalVatAmount; + + /** + * 固定单价下的增值税金额(大写) + */ + private String provisionalVatAmountUpper; + + /** + * 固定单价下的增值税税率(%) + */ + private BigDecimal provisionalVatRate; + + /** + * 固定单价下的增值税发票类型(如“专用发票”) + */ + private String provisionalVatInvoiceType; + + /** + * 固定单价下的不含税暂定总价(小写) + */ + private BigDecimal provisionalTotalTaxExcluded; + + /** + * 固定单价下的不含税暂定总价(大写) + */ + private String provisionalTotalTaxExcludedUpper; + + /** + * 固定总价下的含税总价(小写) + */ + private BigDecimal fixedTotalTaxIncluded; + + /** + * 固定总价下的含税总价(大写) + */ + private String fixedTotalTaxIncludedUpper; + + /** + * 固定总价下的增值税金额(小写) + */ + private BigDecimal fixedVatAmount; + + /** + * 固定总价下的增值税金额(大写) + */ + private String fixedVatAmountUpper; + + /** + * 固定总价下的增值税税率(%) + */ + private BigDecimal fixedVatRate; + + /** + * 固定总价下的增值税发票类型(如“专用发票”) + */ + private String fixedVatInvoiceType; + + /** + * 固定总价下的不含税总价(小写) + */ + private BigDecimal fixedTotalTaxExcluded; + + /** + * 固定总价下的不含税总价(大写) + */ + private String fixedTotalTaxExcludedUpper; + + /** + * 固定总价是否可调整(0:否,1:是) + */ + private Long fixedTotalAdjustable; + + /** + * 固定总价调整说明(如“合同执行中金额不予调整,另有约定除外”) + */ + private String fixedTotalAdjustNote; + + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + /** + * 支付节点 + */ + private List zftk; + + /** + * 合同变更清单 + */ + private List htbgqds; + + /** + * 印章信息 + */ + private List sealInfo; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractSuspendBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractSuspendBo.java new file mode 100644 index 00000000..0e5192bf --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjContractSuspendBo.java @@ -0,0 +1,132 @@ +package org.dromara.xzd.comprehensive.domain.bo; + +import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 设计合同终止业务对象 xzd_sj_contract_suspend + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSjContractSuspend.class, reverseConvertGenerate = false) +public class XzdSjContractSuspendBo extends BaseEntity { + + /** + * 主键ID + */ + @NotNull(message = "主键ID不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 采购合同信息ID(合同编码) + */ + @NotNull(message = "采购合同信息ID(合同编码)不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long contractInformationId; + + /** + * 单据编码 + */ + @NotBlank(message = "单据编码不能为空", groups = { EditGroup.class }) + private String receiptsCode; + + /** + * 标题 + */ + @NotBlank(message = "标题不能为空", groups = { AddGroup.class, EditGroup.class }) + private String title; + + /** + * 单据日期 + */ + @NotNull(message = "单据日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate documentDate; + + /** + * 合同名称 + */ + @NotBlank(message = "合同名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String contractName; + + /** + * 终止日期 + */ + @NotNull(message = "终止日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private LocalDate terminationDate; + + /** + * 工程项目 + */ + @NotBlank(message = "工程项目不能为空", groups = { AddGroup.class, EditGroup.class }) + private String project; + + /** + * 乙方单位 + */ + @NotNull(message = "乙方单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long artyBUnit; + + /** + * 甲方单位 + */ + @NotNull(message = "甲方单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long partyAUnit; + + /** + * 终止原因 + */ + @NotBlank(message = "终止原因不能为空", groups = { AddGroup.class, EditGroup.class }) + private String terminationCause; + + /** + * 项目大类 + */ + private String projectCategory; + + /** + * 项目类型 + */ + private String projectType; + + /** + * 累计结算金额 + */ + private Long cumulativeSettlementAmount; + + /** + * 部门id + */ + private Long deptId; + + /** + * 累计付款金额 + */ + private BigDecimal cumulativePaymentAmount; + + /** + * 文件ID + */ + private String fileId; + + /** + * 备注 + */ + private String remark; + + /** + * 审核状态 + */ + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjhtZfjdBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjhtZfjdBo.java new file mode 100644 index 00000000..a032d64f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/bo/XzdSjhtZfjdBo.java @@ -0,0 +1,61 @@ +package org.dromara.xzd.comprehensive.domain.bo; + +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +/** + * 设计合同付款节点信息业务对象 xzd_sjht_zfjd + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = XzdSjhtZfjd.class, reverseConvertGenerate = false) +public class XzdSjhtZfjdBo extends BaseEntity { + + /** + * 自增主键 + */ + @NotNull(message = "自增主键不能为空", groups = { EditGroup.class }) + private Long id; + + /** + * 关联设计合同id + */ + private Long mainId; + + /** + * 付款阶段名称(如“合同签订后付款”) + */ + private String paymentStage; + + /** + * 阶段具体描述(对应合同条款原文) + */ + private String stageDesc; + + /** + * 付款比例(%,如30.00表示30%) + */ + private BigDecimal paymentRatio; + + /** + * 付款触发条件(前置条件) + */ + private String triggerConditions; + + /** + * 时间要求(工作日) + */ + private Integer timeLimit; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractChangeVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractChangeVo.java new file mode 100644 index 00000000..6b34e92c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractChangeVo.java @@ -0,0 +1,316 @@ +package org.dromara.xzd.comprehensive.domain.vo; + +import java.math.BigDecimal; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; +import org.dromara.xzd.comprehensive.domain.XzdSjContractChange; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.xzd.domain.XzdBusinessChange; +import org.dromara.xzd.domain.XzdContractClause; +import org.dromara.xzd.domain.XzdDeductionItems; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + + +/** + * 设计合同变更视图对象 xzd_sj_contract_change + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSjContractChange.class) +public class XzdSjContractChangeVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String docCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate docDate; + + /** + * 合同编码(关联合同表) + */ + @ExcelProperty(value = "合同编码", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联合同表") + private Long contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 合同类型 + */ + @ExcelProperty(value = "合同类型") + private String contractType; + + /** + * 变更类型 + */ + @ExcelProperty(value = "变更类型") + private Long changeType; + + /** + * 项目 + */ + @ExcelProperty(value = "项目") + private Long project; + @Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project") + private String projectName; + + /** + * 经营模式 + */ + @ExcelProperty(value = "经营模式") + private String businessMode; + + /** + * 组织 + */ + @ExcelProperty(value = "组织") + private Long organization; + @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "organization") + private String organizationName; + + /** + * 甲方单位 + */ + @ExcelProperty(value = "甲方单位") + private Long partyA; + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyA") + private String partyAName; + + /** + * 乙方单位 + */ + @ExcelProperty(value = "乙方单位") + private Long partyB; + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyB") + private String partyBName; + + /** + * 原合同造价 + */ + @ExcelProperty(value = "原合同造价") + private BigDecimal originalContractAmount; + + /** + * 变更价税合计 + */ + @ExcelProperty(value = "变更价税合计") + private BigDecimal changeTaxIncludedAmount; + + /** + * 变更后价税合计 + */ + @ExcelProperty(value = "变更后价税合计") + private BigDecimal afterChangeTaxIncludedAmount; + + /** + * 累计变更金额 + */ + @ExcelProperty(value = "累计变更金额") + private BigDecimal cumulativeChangeAmount; + + /** + * 警示 + */ + @ExcelProperty(value = "警示") + private String warning; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private String paymentTerms; + + /** + * 是否用印(0:否,1:是) + */ + @ExcelProperty(value = "是否用印", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long isSealed; + + /** + * 变更后项目经理 + */ + @ExcelProperty(value = "变更后项目经理") + private Long afterChangeProjectManager; + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "afterChangeProjectManager") + private String afterChangeProjectManagerName; + + /** + * 变更后项目责任人 + */ + @ExcelProperty(value = "变更后项目责任人") + private Long afterChangeProjectLeader; + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "afterChangeProjectLeader") + private String afterChangeProjectLeaderName; + + /** + * 变更后现场经理 + */ + @ExcelProperty(value = "变更后现场经理") + private Long afterChangeSiteManager; + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "afterChangeSiteManager") + private String afterChangeSiteManagerName; + + /** + * 变更后合同备注 + */ + @ExcelProperty(value = "变更后合同备注") + private String afterChangeContractRemark; + + /** + * 项目大类 + */ + @ExcelProperty(value = "项目大类") + private String projectCategory; + + /** + * 项目类型 + */ + @ExcelProperty(value = "项目类型") + private String projectType; + + /** + * 付款额不能超合同额(0:否,1:是) + */ + @ExcelProperty(value = "付款额不能超合同额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long paymentNotExceedContract; + + /** + * 付款额不超合同额支付比例(%) + */ + @ExcelProperty(value = "付款额不超合同额支付比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算不能超合同额(0:否,1:是) + */ + @ExcelProperty(value = "预结算/结算不能超合同额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long budgetNotExceedContract; + + /** + * 预结算/结算不超合同额比例(%) + */ + @ExcelProperty(value = "预结算/结算不超合同额比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private BigDecimal budgetNotExceedRatio; + + /** + * 实时刷新(0:否,1:是) + */ + @ExcelProperty(value = "实时刷新", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long realTimeUpdate; + + /** + * 合同累计变更金额 + */ + @ExcelProperty(value = "合同累计变更金额") + private BigDecimal contractCumulativeChangeAmount; + + /** + * 合同文本 + */ + @ExcelProperty(value = "合同文本") + private String contractText; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 单据引用 + */ + @ExcelProperty(value = "单据引用") + private String documentReference; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + /** + * 文件id + */ + @ExcelProperty(value = "文件id") + private String fileId; + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + /** + * 支付条款 + */ + private List zftk; + + /** + * 合同变更清单 + */ + private List htbgqds; + + /** + * 印章信息 + */ + private List sealInfo; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractInfoVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractInfoVo.java new file mode 100644 index 00000000..eb114c72 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractInfoVo.java @@ -0,0 +1,502 @@ +package org.dromara.xzd.comprehensive.domain.vo; + +import java.math.BigDecimal; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspendZfkx; +import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd; +import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.xzd.domain.XzdBusinessChange; +import org.dromara.xzd.domain.XzdContractClause; +import org.dromara.xzd.domain.XzdDeductionItems; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; +import java.util.Date; +import java.util.List; + + +/** + * 设计合同信息视图对象 xzd_sj_contract_info + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSjContractInfo.class) +public class XzdSjContractInfoVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 合同状态 + */ + @ExcelProperty(value = "合同状态") + private String htzt; + + /** + * 合同编码 + */ + @ExcelProperty(value = "合同编码") + private String contractCode; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同类型(如:租车合同) + */ + @ExcelProperty(value = "合同类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=:租车合同") + private String contractType; + + /** + * 项目ID(关联项目表) + */ + @ExcelProperty(value = "项目ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联项目表") + private Long projectId; + @Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "projectId") + private String projectName; + + /** + * 签订日期 + */ + @ExcelProperty(value = "签订日期") + private LocalDate signDate; + + /** + * 甲方单位 + */ + @ExcelProperty(value = "甲方单位") + private Long partyA; + + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyA") + private String partyAName; + + /** + * 含税合同金额 + */ + @ExcelProperty(value = "含税合同金额") + private BigDecimal taxIncludedAmount; + + /** + * 合同状态(如:新增、生效) + */ + @ExcelProperty(value = "合同状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=:新增、生效") + private String contractStatus; + + /** + * 乙方单位 + */ + @ExcelProperty(value = "乙方单位") + private Long partyB; + + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyB") + private String partyBName; + + /** + * 累计变更金额 + */ + @ExcelProperty(value = "累计变更金额") + private BigDecimal cumulativeChangeAmount; + + /** + * 部门ID(关联部门表) + */ + @ExcelProperty(value = "部门ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "关=联部门表") + private Long departmentId; + + @Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "departmentId") + private String departmentName; + + /** + * 归档日期 + */ + @ExcelProperty(value = "归档日期") + private LocalDate archivalDate; + + /** + * 是否研发类(0:否,1:是) + */ + @ExcelProperty(value = "是否研发类", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long isRD; + + /** + * 开票单位 + */ + @ExcelProperty(value = "开票单位") + private Long invoiceIssuer; + + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoiceIssuer") + private String invoiceIssuerName; + + /** + * 收票单位 + */ + @ExcelProperty(value = "收票单位") + private Long invoiceReceiver; + + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "invoiceReceiver") + private String invoiceReceiverName; + + /** + * 有效期开始日期 + */ + @ExcelProperty(value = "有效期开始日期") + private LocalDate validStartDate; + + /** + * 有效期结束日期 + */ + @ExcelProperty(value = "有效期结束日期") + private LocalDate validEndDate; + + /** + * 是否用印(0:否,1:是) + */ + @ExcelProperty(value = "是否用印", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long isSealed; + + /** + * 大写合同价税合计 + */ + @ExcelProperty(value = "大写合同价税合计") + private String taxIncludedAmountUpper; + + /** + * 警示 + */ + @ExcelProperty(value = "警示") + private String warning; + + /** + * 支付条款 + */ + @ExcelProperty(value = "支付条款") + private String paymentTerms; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 签约组织 + */ + @ExcelProperty(value = "签约组织") + private Long signOrganization; + + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "signOrganization") + private String signOrganizationName; + + /** + * 项目类型 + */ + @ExcelProperty(value = "项目类型") + private String projectType; + + /** + * 项目大类 + */ + @ExcelProperty(value = "项目大类") + private String projectCategory; + + /** + * 项目责任人 + */ + @ExcelProperty(value = "项目责任人") + private Long projectOwner; + @Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "projectOwner") + private String projectOwnerName; + + /** + * WBS编码 + */ + @ExcelProperty(value = "WBS编码") + private String wbs; + + /** + * 备案状态(如:未备案、已备案) + */ + @ExcelProperty(value = "备案状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=:未备案、已备案") + private String filingStatus; + + /** + * 备案时间 + */ + @ExcelProperty(value = "备案时间") + private LocalDate filingTime; + + /** + * 是否需备案(0:否,1:是) + */ + @ExcelProperty(value = "是否需备案", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long needFiling; + + /** + * 预算分类 + */ + @ExcelProperty(value = "预算分类") + private Long budgetCategory; + + /** + * 是否固定单价合同(0:否,1:是) + */ + @ExcelProperty(value = "是否固定单价合同", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long isFixedUnitPrice; + + /** + * 是否总价包干合同(0:否,1:是) + */ + @ExcelProperty(value = "是否总价包干合同", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long isLumpSum; + + /** + * 付款额不能超合同额(0:否,1:是) + */ + @ExcelProperty(value = "付款额不能超合同额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long paymentNotExceedContract; + + /** + * 付款额不超合同额比例(%) + */ + @ExcelProperty(value = "付款额不超合同额比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private BigDecimal paymentNotExceedRatio; + + /** + * 预结算/结算不能超合同额(0:否,1:是) + */ + @ExcelProperty(value = "预结算/结算不能超合同额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long budgetNotExceedContract; + + /** + * 预结算/结算不超合同额比例(%) + */ + @ExcelProperty(value = "预结算/结算不超合同额比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private BigDecimal budgetNotExceedRatio; + + /** + * 合同文本 + */ + @ExcelProperty(value = "合同文本") + private String contractText; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 单据引用 + */ + @ExcelProperty(value = "单据引用") + private String documentReference; + + /** + * 文件id + */ + @ExcelProperty(value = "文件id") + private String fileId; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + /** + * 固定单价下的含税暂定总价(小写) + */ + @ExcelProperty(value = "固定单价下的含税暂定总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=写") + private BigDecimal provisionalTotalTaxIncluded; + + /** + * 固定单价下的含税暂定总价(大写) + */ + @ExcelProperty(value = "固定单价下的含税暂定总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "大=写") + private String provisionalTotalTaxIncludedUpper; + + /** + * 固定单价下的增值税金额(小写) + */ + @ExcelProperty(value = "固定单价下的增值税金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=写") + private BigDecimal provisionalVatAmount; + + /** + * 固定单价下的增值税金额(大写) + */ + @ExcelProperty(value = "固定单价下的增值税金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "大=写") + private String provisionalVatAmountUpper; + + /** + * 固定单价下的增值税税率(%) + */ + @ExcelProperty(value = "固定单价下的增值税税率", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private BigDecimal provisionalVatRate; + + /** + * 固定单价下的增值税发票类型(如“专用发票”) + */ + @ExcelProperty(value = "固定单价下的增值税发票类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=“专用发票”") + private String provisionalVatInvoiceType; + + /** + * 固定单价下的不含税暂定总价(小写) + */ + @ExcelProperty(value = "固定单价下的不含税暂定总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=写") + private BigDecimal provisionalTotalTaxExcluded; + + /** + * 固定单价下的不含税暂定总价(大写) + */ + @ExcelProperty(value = "固定单价下的不含税暂定总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "大=写") + private String provisionalTotalTaxExcludedUpper; + + /** + * 固定总价下的含税总价(小写) + */ + @ExcelProperty(value = "固定总价下的含税总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=写") + private BigDecimal fixedTotalTaxIncluded; + + /** + * 固定总价下的含税总价(大写) + */ + @ExcelProperty(value = "固定总价下的含税总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "大=写") + private String fixedTotalTaxIncludedUpper; + + /** + * 固定总价下的增值税金额(小写) + */ + @ExcelProperty(value = "固定总价下的增值税金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=写") + private BigDecimal fixedVatAmount; + + /** + * 固定总价下的增值税金额(大写) + */ + @ExcelProperty(value = "固定总价下的增值税金额", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "大=写") + private String fixedVatAmountUpper; + + /** + * 固定总价下的增值税税率(%) + */ + @ExcelProperty(value = "固定总价下的增值税税率", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=") + private BigDecimal fixedVatRate; + + /** + * 固定总价下的增值税发票类型(如“专用发票”) + */ + @ExcelProperty(value = "固定总价下的增值税发票类型", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=“专用发票”") + private String fixedVatInvoiceType; + + /** + * 固定总价下的不含税总价(小写) + */ + @ExcelProperty(value = "固定总价下的不含税总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "小=写") + private BigDecimal fixedTotalTaxExcluded; + + /** + * 固定总价下的不含税总价(大写) + */ + @ExcelProperty(value = "固定总价下的不含税总价", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "大=写") + private String fixedTotalTaxExcludedUpper; + + /** + * 固定总价是否可调整(0:否,1:是) + */ + @ExcelProperty(value = "固定总价是否可调整", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=:否,1:是") + private Long fixedTotalAdjustable; + + /** + * 固定总价调整说明(如“合同执行中金额不予调整,另有约定除外”) + */ + @ExcelProperty(value = "固定总价调整说明", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=“合同执行中金额不予调整,另有约定除外”") + private String fixedTotalAdjustNote; + + + + /** + * 扣款与奖励项 + */ + private List kkyjlx; + + /** + * 合同条款 + */ + private List httk; + + /** + * 支付条款 + */ + private List zftk; + + /** + * 合同变更清单 + */ + private List htbgqds; + + /** + * 印章信息 + */ + private List sealInfo; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractSuspendVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractSuspendVo.java new file mode 100644 index 00000000..16aa2cf9 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjContractSuspendVo.java @@ -0,0 +1,156 @@ +package org.dromara.xzd.comprehensive.domain.vo; + +import java.math.BigDecimal; + +import org.dromara.common.translation.annotation.Translation; +import org.dromara.common.translation.constant.TransConstant; +import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.time.LocalDate; + + +/** + * 设计合同终止视图对象 xzd_sj_contract_suspend + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSjContractSuspend.class) +public class XzdSjContractSuspendVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键ID + */ + @ExcelProperty(value = "主键ID") + private Long id; + + /** + * 采购合同信息ID(合同编码) + */ + @ExcelProperty(value = "采购合同信息ID", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "合=同编码") + private Long contractInformationId; + + /** + * 单据编码 + */ + @ExcelProperty(value = "单据编码") + private String receiptsCode; + + /** + * 标题 + */ + @ExcelProperty(value = "标题") + private String title; + + /** + * 单据日期 + */ + @ExcelProperty(value = "单据日期") + private LocalDate documentDate; + + /** + * 合同名称 + */ + @ExcelProperty(value = "合同名称") + private String contractName; + + /** + * 终止日期 + */ + @ExcelProperty(value = "终止日期") + private LocalDate terminationDate; + + /** + * 工程项目 + */ + @ExcelProperty(value = "工程项目") + private String project; + @Translation(type = TransConstant.XZD_PROJECT_ID_TO_NAME, mapper = "project") + private String projectName; + + /** + * 乙方单位 + */ + @ExcelProperty(value = "乙方单位") + private Long artyBUnit; + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "artyBUnit") + private String artyBUnitName; + + /** + * 甲方单位 + */ + @ExcelProperty(value = "甲方单位") + private Long partyAUnit; + @Translation(type = TransConstant.XZD_KHXX_ID_TO_NAME, mapper = "partyAUnit") + private String partyAUnitNamme; + + /** + * 终止原因 + */ + @ExcelProperty(value = "终止原因") + private String terminationCause; + + /** + * 项目大类 + */ + @ExcelProperty(value = "项目大类") + private String projectCategory; + + /** + * 项目类型 + */ + @ExcelProperty(value = "项目类型") + private String projectType; + + /** + * 累计结算金额 + */ + @ExcelProperty(value = "累计结算金额") + private Long cumulativeSettlementAmount; + + /** + * 部门id + */ + @ExcelProperty(value = "部门id") + private Long deptId; + + /** + * 累计付款金额 + */ + @ExcelProperty(value = "累计付款金额") + private BigDecimal cumulativePaymentAmount; + + /** + * 文件ID + */ + @ExcelProperty(value = "文件ID") + private String fileId; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + /** + * 审核状态 + */ + @ExcelProperty(value = "审核状态") + private String auditStatus; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjhtZfjdVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjhtZfjdVo.java new file mode 100644 index 00000000..db50ad60 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/domain/vo/XzdSjhtZfjdVo.java @@ -0,0 +1,80 @@ +package org.dromara.xzd.comprehensive.domain.vo; + +import java.math.BigDecimal; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 设计合同付款节点信息视图对象 xzd_sjht_zfjd + * + * @author Lion Li + * @date 2025-11-19 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = XzdSjhtZfjd.class) +public class XzdSjhtZfjdVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 自增主键 + */ + @ExcelProperty(value = "自增主键") + private Long id; + + /** + * 关联设计合同id + */ + @ExcelProperty(value = "关联设计合同id") + private Long mainId; + + /** + * 付款阶段名称(如“合同签订后付款”) + */ + @ExcelProperty(value = "付款阶段名称", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "如=“合同签订后付款”") + private String paymentStage; + + /** + * 阶段具体描述(对应合同条款原文) + */ + @ExcelProperty(value = "阶段具体描述", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "对=应合同条款原文") + private String stageDesc; + + /** + * 付款比例(%,如30.00表示30%) + */ + @ExcelProperty(value = "付款比例", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "%=,如30.00表示30%") + private BigDecimal paymentRatio; + + /** + * 付款触发条件(前置条件) + */ + @ExcelProperty(value = "付款触发条件", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "前=置条件") + private String triggerConditions; + + /** + * 时间要求(工作日) + */ + @ExcelProperty(value = "时间要求", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "工=作日") + private Integer timeLimit; + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractChangeMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractChangeMapper.java new file mode 100644 index 00000000..1f6ceb24 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractChangeMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.comprehensive.mapper; + +import org.dromara.xzd.comprehensive.domain.XzdSjContractChange; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractChangeVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 设计合同变更Mapper接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface XzdSjContractChangeMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractInfoMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractInfoMapper.java new file mode 100644 index 00000000..3a3e286e --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractInfoMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.comprehensive.mapper; + +import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 设计合同信息Mapper接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface XzdSjContractInfoMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractSuspendMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractSuspendMapper.java new file mode 100644 index 00000000..e09d8619 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjContractSuspendMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.comprehensive.mapper; + +import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractSuspendVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 设计合同终止Mapper接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface XzdSjContractSuspendMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjhtZfjdMapper.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjhtZfjdMapper.java new file mode 100644 index 00000000..b2538941 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/mapper/XzdSjhtZfjdMapper.java @@ -0,0 +1,15 @@ +package org.dromara.xzd.comprehensive.mapper; + +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjhtZfjdVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 设计合同付款节点信息Mapper接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface XzdSjhtZfjdMapper extends BaseMapperPlus { + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractChangeService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractChangeService.java new file mode 100644 index 00000000..cadab922 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractChangeService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.comprehensive.service; + +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractChangeVo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractChangeBo; +import org.dromara.xzd.comprehensive.domain.XzdSjContractChange; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 设计合同变更Service接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface IXzdSjContractChangeService extends IService{ + + /** + * 查询设计合同变更 + * + * @param id 主键 + * @return 设计合同变更 + */ + XzdSjContractChangeVo queryById(Long id); + + /** + * 分页查询设计合同变更列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同变更分页列表 + */ + TableDataInfo queryPageList(XzdSjContractChangeBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设计合同变更列表 + * + * @param bo 查询条件 + * @return 设计合同变更列表 + */ + List queryList(XzdSjContractChangeBo bo); + + /** + * 新增设计合同变更 + * + * @param bo 设计合同变更 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSjContractChangeBo bo); + + /** + * 修改设计合同变更 + * + * @param bo 设计合同变更 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSjContractChangeBo bo); + + /** + * 校验并批量删除设计合同变更信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractInfoService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractInfoService.java new file mode 100644 index 00000000..a772044b --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractInfoService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.comprehensive.service; + +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo; +import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 设计合同信息Service接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface IXzdSjContractInfoService extends IService{ + + /** + * 查询设计合同信息 + * + * @param id 主键 + * @return 设计合同信息 + */ + XzdSjContractInfoVo queryById(Long id); + + /** + * 分页查询设计合同信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同信息分页列表 + */ + TableDataInfo queryPageList(XzdSjContractInfoBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设计合同信息列表 + * + * @param bo 查询条件 + * @return 设计合同信息列表 + */ + List queryList(XzdSjContractInfoBo bo); + + /** + * 新增设计合同信息 + * + * @param bo 设计合同信息 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSjContractInfoBo bo); + + /** + * 修改设计合同信息 + * + * @param bo 设计合同信息 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSjContractInfoBo bo); + + /** + * 校验并批量删除设计合同信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractSuspendService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractSuspendService.java new file mode 100644 index 00000000..76757ca0 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjContractSuspendService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.comprehensive.service; + +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractSuspendVo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractSuspendBo; +import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 设计合同终止Service接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface IXzdSjContractSuspendService extends IService{ + + /** + * 查询设计合同终止 + * + * @param id 主键 + * @return 设计合同终止 + */ + XzdSjContractSuspendVo queryById(Long id); + + /** + * 分页查询设计合同终止列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同终止分页列表 + */ + TableDataInfo queryPageList(XzdSjContractSuspendBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设计合同终止列表 + * + * @param bo 查询条件 + * @return 设计合同终止列表 + */ + List queryList(XzdSjContractSuspendBo bo); + + /** + * 新增设计合同终止 + * + * @param bo 设计合同终止 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSjContractSuspendBo bo); + + /** + * 修改设计合同终止 + * + * @param bo 设计合同终止 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSjContractSuspendBo bo); + + /** + * 校验并批量删除设计合同终止信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjhtZfjdService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjhtZfjdService.java new file mode 100644 index 00000000..9d90bc70 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/IXzdSjhtZfjdService.java @@ -0,0 +1,70 @@ +package org.dromara.xzd.comprehensive.service; + +import org.dromara.xzd.comprehensive.domain.vo.XzdSjhtZfjdVo; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjhtZfjdBo; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; + +import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Collection; +import java.util.List; + +/** + * 设计合同付款节点信息Service接口 + * + * @author Lion Li + * @date 2025-11-19 + */ +public interface IXzdSjhtZfjdService extends IService{ + + /** + * 查询设计合同付款节点信息 + * + * @param id 主键 + * @return 设计合同付款节点信息 + */ + XzdSjhtZfjdVo queryById(Long id); + + /** + * 分页查询设计合同付款节点信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同付款节点信息分页列表 + */ + TableDataInfo queryPageList(XzdSjhtZfjdBo bo, PageQuery pageQuery); + + /** + * 查询符合条件的设计合同付款节点信息列表 + * + * @param bo 查询条件 + * @return 设计合同付款节点信息列表 + */ + List queryList(XzdSjhtZfjdBo bo); + + /** + * 新增设计合同付款节点信息 + * + * @param bo 设计合同付款节点信息 + * @return 是否新增成功 + */ + Boolean insertByBo(XzdSjhtZfjdBo bo); + + /** + * 修改设计合同付款节点信息 + * + * @param bo 设计合同付款节点信息 + * @return 是否修改成功 + */ + Boolean updateByBo(XzdSjhtZfjdBo bo); + + /** + * 校验并批量删除设计合同付款节点信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdCsContractSuspendServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdCsContractSuspendServiceImpl.java index 019afa5d..f9eda56b 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdCsContractSuspendServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdCsContractSuspendServiceImpl.java @@ -115,6 +115,7 @@ public class XzdCsContractSuspendServiceImpl extends ServiceImpl implements IXzdSjContractChangeService { + + private final XzdSjContractChangeMapper baseMapper; + + @Autowired + private XzdDeductionItemsServiceImpl xzdDeductionItemsService; + @Autowired + private XzdContractClauseServiceImpl xzdContractClauseService; + @Autowired + private IXzdSjhtZfjdService xzdSjhtZfjdService; + @Autowired + private SysOssServiceImpl sysOssService; + + @Autowired + private IXzdHtglHtbgqdService xzdHtglHtbgqdService; + @Autowired + private IXzdSjContractInfoService xzdSjContractInfoService; + @Autowired + private XzdBusinessChangeServiceImpl xzdBusinessChangeService; + @Autowired + private XzdBusinessSealServiceImpl xzdBusinessSealService; + + /** + * 查询设计合同变更 + * + * @param id 主键 + * @return 设计合同变更 + */ + @Override + public XzdSjContractChangeVo queryById(Long id){ + XzdSjContractChangeVo vo = baseMapper.selectVoById(id); + getHttk(vo); + return vo; + } + + /** + * 分页查询设计合同变更列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同变更分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSjContractChangeBo 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(XzdSjContractChangeBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSjContractChangeBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSjContractChange::getId); + lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdSjContractChange::getDocCode, bo.getDocCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSjContractChange::getTitle, bo.getTitle()); + lqw.eq(bo.getDocDate() != null, XzdSjContractChange::getDocDate, bo.getDocDate()); + lqw.eq(bo.getContractCode() != null, XzdSjContractChange::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSjContractChange::getContractName, bo.getContractName()); + lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdSjContractChange::getContractType, bo.getContractType()); + lqw.eq(bo.getChangeType() != null, XzdSjContractChange::getChangeType, bo.getChangeType()); + lqw.eq(bo.getProject() != null, XzdSjContractChange::getProject, bo.getProject()); + lqw.eq(StringUtils.isNotBlank(bo.getBusinessMode()), XzdSjContractChange::getBusinessMode, bo.getBusinessMode()); + lqw.eq(bo.getOrganization() != null, XzdSjContractChange::getOrganization, bo.getOrganization()); + lqw.eq(bo.getPartyA() != null, XzdSjContractChange::getPartyA, bo.getPartyA()); + lqw.eq(bo.getPartyB() != null, XzdSjContractChange::getPartyB, bo.getPartyB()); + lqw.eq(bo.getOriginalContractAmount() != null, XzdSjContractChange::getOriginalContractAmount, bo.getOriginalContractAmount()); + lqw.eq(bo.getChangeTaxIncludedAmount() != null, XzdSjContractChange::getChangeTaxIncludedAmount, bo.getChangeTaxIncludedAmount()); + lqw.eq(bo.getAfterChangeTaxIncludedAmount() != null, XzdSjContractChange::getAfterChangeTaxIncludedAmount, bo.getAfterChangeTaxIncludedAmount()); + lqw.eq(bo.getCumulativeChangeAmount() != null, XzdSjContractChange::getCumulativeChangeAmount, bo.getCumulativeChangeAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdSjContractChange::getWarning, bo.getWarning()); + lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdSjContractChange::getPaymentTerms, bo.getPaymentTerms()); + lqw.eq(bo.getIsSealed() != null, XzdSjContractChange::getIsSealed, bo.getIsSealed()); + lqw.eq(bo.getAfterChangeProjectManager() != null, XzdSjContractChange::getAfterChangeProjectManager, bo.getAfterChangeProjectManager()); + lqw.eq(bo.getAfterChangeProjectLeader() != null, XzdSjContractChange::getAfterChangeProjectLeader, bo.getAfterChangeProjectLeader()); + lqw.eq(bo.getAfterChangeSiteManager() != null, XzdSjContractChange::getAfterChangeSiteManager, bo.getAfterChangeSiteManager()); + lqw.eq(StringUtils.isNotBlank(bo.getAfterChangeContractRemark()), XzdSjContractChange::getAfterChangeContractRemark, bo.getAfterChangeContractRemark()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSjContractChange::getProjectCategory, bo.getProjectCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSjContractChange::getProjectType, bo.getProjectType()); + lqw.eq(bo.getPaymentNotExceedContract() != null, XzdSjContractChange::getPaymentNotExceedContract, bo.getPaymentNotExceedContract()); + lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdSjContractChange::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio()); + lqw.eq(bo.getBudgetNotExceedContract() != null, XzdSjContractChange::getBudgetNotExceedContract, bo.getBudgetNotExceedContract()); + lqw.eq(bo.getBudgetNotExceedRatio() != null, XzdSjContractChange::getBudgetNotExceedRatio, bo.getBudgetNotExceedRatio()); + lqw.eq(bo.getRealTimeUpdate() != null, XzdSjContractChange::getRealTimeUpdate, bo.getRealTimeUpdate()); + lqw.eq(bo.getContractCumulativeChangeAmount() != null, XzdSjContractChange::getContractCumulativeChangeAmount, bo.getContractCumulativeChangeAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getContractText()), XzdSjContractChange::getContractText, bo.getContractText()); + lqw.eq(bo.getDeptId() != null, XzdSjContractChange::getDeptId, bo.getDeptId()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdSjContractChange::getDocumentReference, bo.getDocumentReference()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdSjContractChange::getAuditStatus, bo.getAuditStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSjContractChange::getFileId, bo.getFileId()); + return lqw; + } + + /** + * 新增设计合同变更 + * + * @param bo 设计合同变更 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(XzdSjContractChangeBo bo) { + XzdSjContractChange add = MapstructUtils.convert(bo, XzdSjContractChange.class); + String banBen = BatchNumberGenerator.generateBatchNumber("SJHTBG-"); + add.setDocCode(banBen); + validEntityBeforeSave(add); + + XzdSjContractInfo byId = xzdSjContractInfoService.getById(bo.getContractCode()); + if (byId != null){ + if (byId.getHtzt().equals("已终止")){ + throw new RuntimeException("该合同已终止"); + } + byId.setHtzt(ZxdEnum.HETONGZTBG.getTypeValue()); + xzdSjContractInfoService.updateById(byId); + } + + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + String tableName = XzdClassEnum.CS_CONTRACT_CHANGE.getClassName(); + if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) { + throw new ServiceException("扣款与奖励项不能为空"); + } + //合同条款-扣款与奖励项 + for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) { + kkyjlx.setTableName(tableName); + kkyjlx.setContractDetailsId(add.getId()); + } + xzdDeductionItemsService.saveBatch(bo.getKkyjlx()); + if (bo.getHttk() == null || bo.getHttk().isEmpty()) { + throw new ServiceException("合同条款不能为空"); + } + //合同条款-合同条款 + for (XzdContractClause clause : bo.getHttk()) { + clause.setTableName(tableName); + clause.setContractDetailsId(add.getId()); + } + xzdContractClauseService.saveBatch(bo.getHttk()); + if (bo.getZftk() == null || bo.getZftk().isEmpty()) { + throw new ServiceException("支付条款不能为空"); + } + //支付条款 + for (XzdSjhtZfjd clause : bo.getZftk()) { + clause.setMainId(add.getId()); + } + xzdSjhtZfjdService.saveBatch(bo.getZftk()); + + //合同变更清单 + if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { + bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());}); + xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds()); + } + + //印章信息 + if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){ + for (XzdBusinessChange sealInfo : bo.getSealInfo()) { + sealInfo.setContractChangeId(add.getId()); + sealInfo.setType("16"); + } + xzdBusinessChangeService.saveBatch(bo.getSealInfo()); + } + return flag; + } + + /** + * 修改设计合同变更 + * + * @param bo 设计合同变更 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(XzdSjContractChangeBo bo) { + XzdSjContractChange update = MapstructUtils.convert(bo, XzdSjContractChange.class); + validEntityBeforeSave(update); + XzdSjContractChange old = baseMapper.selectById(update.getId()); + if (old == null){ + throw new ServiceException("找不到要修改数据!!!"); + } + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, old.getId()); + xzdContractClauseService.remove(lambdaQueryWrapper2); + + + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, old.getId()); + xzdSjhtZfjdService.remove(lambdaQueryWrapper3); + + + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper4 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper4.eq(XzdDeductionItems::getContractDetailsId, old.getId()); + xzdDeductionItemsService.remove(lambdaQueryWrapper4); + + xzdBusinessChangeService.remove(new LambdaQueryWrapper().eq(XzdBusinessChange::getContractChangeId, old.getId())); + + String tableName = XzdClassEnum.CS_CONTRACT_CHANGE.getClassName(); + if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) { + throw new ServiceException("扣款与奖励项不能为空"); + } + //合同条款-扣款与奖励项 + for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) { + kkyjlx.setTableName(tableName); + kkyjlx.setContractDetailsId(update.getId()); + } + xzdDeductionItemsService.saveBatch(bo.getKkyjlx()); + if (bo.getHttk() == null || bo.getHttk().isEmpty()) { + throw new ServiceException("合同条款不能为空"); + } + //合同条款-合同条款 + for (XzdContractClause clause : bo.getHttk()) { + clause.setTableName(tableName); + clause.setContractDetailsId(update.getId()); + } + xzdContractClauseService.saveBatch(bo.getHttk()); + if (bo.getZftk() == null || bo.getZftk().isEmpty()) { + throw new ServiceException("支付条款不能为空"); + } + //支付条款 + for (XzdSjhtZfjd clause : bo.getZftk()) { + clause.setMainId(update.getId()); + } + xzdSjhtZfjdService.saveBatch(bo.getZftk()); + + if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()) { + for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) { + xzdBusinessChange.setContractChangeId(update.getId()); + xzdBusinessChange.setType("16"); + } + xzdBusinessChangeService.saveBatch(bo.getSealInfo()); + } + + //合同变更清单 + xzdHtglHtbgqdService.remove(new LambdaQueryWrapper().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId())); + if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { + bo.getHtbgqds().forEach(item->{item.setMainDocumentId(bo.getId());}); + xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds()); + } + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSjContractChange entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设计合同变更信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + List deleteIds = new ArrayList<>(); + for (Long id : ids) { + XzdSjContractChangeVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + deleteIds.addAll(list); + } + } + } + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids); + xzdDeductionItemsService.remove(lambdaQueryWrapper1); + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids); + xzdContractClauseService.remove(lambdaQueryWrapper2); + + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.in(XzdSjhtZfjd::getMainId, ids); + xzdSjhtZfjdService.remove(lambdaQueryWrapper3); + + //印章信息 + xzdBusinessChangeService.remove(new LambdaQueryWrapper().in(XzdBusinessChange::getContractChangeId, ids)); + + //合同变更清单 + xzdHtglHtbgqdService.remove(new LambdaQueryWrapper().in(XzdHtglHtbgqd::getMainDocumentId,ids)); + return baseMapper.deleteByIds(ids) > 0; + } + + + /** + * 获取合同条款内容 + * @param vo + */ + private void getHttk(XzdSjContractChangeVo vo) { + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, vo.getId()); + List list = xzdDeductionItemsService.list(lambdaQueryWrapper1); + vo.setKkyjlx(list); + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, vo.getId()); + List list1 = xzdContractClauseService.list(lambdaQueryWrapper2); + vo.setHttk(list1); + + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, vo.getId()); + List list2 = xzdSjhtZfjdService.list(lambdaQueryWrapper3); + vo.setZftk(list2); + + //合同变更清单 + List list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId())); + vo.setHtbgqds(list4); + + //印章信息 + LambdaQueryWrapper lambdaQueryWrapper4 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper4.eq(XzdBusinessChange::getContractChangeId, vo.getId()); + lambdaQueryWrapper4.eq(XzdBusinessChange::getType, "16"); + List list3 = xzdBusinessChangeService.list(lambdaQueryWrapper4); + if (list3 != null && !list3.isEmpty()){ + for (XzdBusinessChange businessChange : list3) { + XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId()); + if (sealVo != null){ + businessChange.setSealName(sealVo.getYzName()); + } + } + vo.setSealInfo(list3); + } + } + + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * 正常使用只需#processEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdSjContractChange')") + public void processPlansHandlErequipmentList(ProcessEvent processEvent) { + log.info("综合服务合同变更审核任务执行了{}", processEvent.toString()); + String id = processEvent.getBusinessId(); + XzdSjContractChange xzdCsContractChange = baseMapper.selectById(Long.valueOf(id)); + if (xzdCsContractChange == null){return;} + xzdCsContractChange.setAuditStatus(processEvent.getStatus()); + baseMapper.updateById(xzdCsContractChange); + } + + /** + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdSjContractChange')") + public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) { + log.info("综合服务合同变更审核任务创建了{}", processTaskEvent.toString()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdSjContractChange')") + public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) { + log.info("综合服务合同变更计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString()); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjContractInfoServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjContractInfoServiceImpl.java new file mode 100644 index 00000000..f4a8162c --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjContractInfoServiceImpl.java @@ -0,0 +1,474 @@ +package org.dromara.xzd.comprehensive.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessDeleteEvent; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.common.utils.BatchNumberGenerator; +import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.comprehensive.domain.*; +import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo; +import org.dromara.xzd.comprehensive.service.IXzdCsContractSuspendZfkxService; +import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService; +import org.dromara.xzd.comprehensive.service.IXzdSjhtZfjdService; +import org.dromara.xzd.domain.XzdBusinessChange; +import org.dromara.xzd.domain.XzdContractClause; +import org.dromara.xzd.domain.XzdDeductionItems; +import org.dromara.xzd.domain.vo.XzdBusinessSealVo; +import org.dromara.xzd.enums.XzdClassEnum; +import org.dromara.xzd.enums.ZxdEnum; +import org.dromara.xzd.service.impl.XzdBusinessChangeServiceImpl; +import org.dromara.xzd.service.impl.XzdBusinessSealServiceImpl; +import org.dromara.xzd.service.impl.XzdContractClauseServiceImpl; +import org.dromara.xzd.service.impl.XzdDeductionItemsServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractInfoBo; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractInfoVo; +import org.dromara.xzd.comprehensive.mapper.XzdSjContractInfoMapper; +import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * 设计合同信息Service业务层处理 + * + * @author Lion Li + * @date 2025-11-19 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XzdSjContractInfoServiceImpl extends ServiceImpl implements IXzdSjContractInfoService { + + private final XzdSjContractInfoMapper baseMapper; + + @Autowired + private XzdDeductionItemsServiceImpl xzdDeductionItemsService; + @Autowired + private XzdContractClauseServiceImpl xzdContractClauseService; + @Autowired + private IXzdSjhtZfjdService xzdSjhtZfjdService; + @Autowired + private SysOssServiceImpl sysOssService; + + @Autowired + private IXzdHtglHtbgqdService xzdHtglHtbgqdService; + + @Autowired + private XzdBusinessChangeServiceImpl xzdBusinessChangeService; + @Autowired + private XzdBusinessSealServiceImpl xzdBusinessSealService; + + /** + * 查询设计合同信息 + * + * @param id 主键 + * @return 设计合同信息 + */ + @Override + public XzdSjContractInfoVo queryById(Long id){ + XzdSjContractInfoVo vo = baseMapper.selectVoById(id); + if (vo != null){ + getHttk(vo); + } + return vo; + } + + /** + * 分页查询设计合同信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同信息分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSjContractInfoBo 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(XzdSjContractInfoBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSjContractInfoBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSjContractInfo::getId); + lqw.eq(StringUtils.isNotBlank(bo.getHtzt()), XzdSjContractInfo::getHtzt, bo.getHtzt()); + lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), XzdSjContractInfo::getContractCode, bo.getContractCode()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSjContractInfo::getContractName, bo.getContractName()); + lqw.eq(bo.getDocumentDate() != null, XzdSjContractInfo::getDocumentDate, bo.getDocumentDate()); + lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdSjContractInfo::getContractType, bo.getContractType()); + lqw.eq(bo.getProjectId() != null, XzdSjContractInfo::getProjectId, bo.getProjectId()); + lqw.eq(bo.getSignDate() != null, XzdSjContractInfo::getSignDate, bo.getSignDate()); + lqw.eq(bo.getPartyA() != null, XzdSjContractInfo::getPartyA, bo.getPartyA()); + lqw.eq(bo.getTaxIncludedAmount() != null, XzdSjContractInfo::getTaxIncludedAmount, bo.getTaxIncludedAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getContractStatus()), XzdSjContractInfo::getContractStatus, bo.getContractStatus()); + lqw.eq(bo.getPartyB() != null, XzdSjContractInfo::getPartyB, bo.getPartyB()); + lqw.eq(bo.getCumulativeChangeAmount() != null, XzdSjContractInfo::getCumulativeChangeAmount, bo.getCumulativeChangeAmount()); + lqw.eq(bo.getDepartmentId() != null, XzdSjContractInfo::getDepartmentId, bo.getDepartmentId()); + lqw.eq(bo.getArchivalDate() != null, XzdSjContractInfo::getArchivalDate, bo.getArchivalDate()); + lqw.eq(bo.getIsRD() != null, XzdSjContractInfo::getIsRD, bo.getIsRD()); + lqw.eq(bo.getInvoiceIssuer() != null, XzdSjContractInfo::getInvoiceIssuer, bo.getInvoiceIssuer()); + lqw.eq(bo.getInvoiceReceiver() != null, XzdSjContractInfo::getInvoiceReceiver, bo.getInvoiceReceiver()); + lqw.eq(bo.getValidStartDate() != null, XzdSjContractInfo::getValidStartDate, bo.getValidStartDate()); + lqw.eq(bo.getValidEndDate() != null, XzdSjContractInfo::getValidEndDate, bo.getValidEndDate()); + lqw.eq(bo.getIsSealed() != null, XzdSjContractInfo::getIsSealed, bo.getIsSealed()); + lqw.eq(StringUtils.isNotBlank(bo.getTaxIncludedAmountUpper()), XzdSjContractInfo::getTaxIncludedAmountUpper, bo.getTaxIncludedAmountUpper()); + lqw.eq(StringUtils.isNotBlank(bo.getWarning()), XzdSjContractInfo::getWarning, bo.getWarning()); + lqw.eq(StringUtils.isNotBlank(bo.getPaymentTerms()), XzdSjContractInfo::getPaymentTerms, bo.getPaymentTerms()); + lqw.eq(bo.getSignOrganization() != null, XzdSjContractInfo::getSignOrganization, bo.getSignOrganization()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSjContractInfo::getProjectType, bo.getProjectType()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSjContractInfo::getProjectCategory, bo.getProjectCategory()); + lqw.eq(bo.getProjectOwner() != null, XzdSjContractInfo::getProjectOwner, bo.getProjectOwner()); + lqw.eq(StringUtils.isNotBlank(bo.getWbs()), XzdSjContractInfo::getWbs, bo.getWbs()); + lqw.eq(StringUtils.isNotBlank(bo.getFilingStatus()), XzdSjContractInfo::getFilingStatus, bo.getFilingStatus()); + lqw.eq(bo.getFilingTime() != null, XzdSjContractInfo::getFilingTime, bo.getFilingTime()); + lqw.eq(bo.getNeedFiling() != null, XzdSjContractInfo::getNeedFiling, bo.getNeedFiling()); + lqw.eq(bo.getBudgetCategory() != null, XzdSjContractInfo::getBudgetCategory, bo.getBudgetCategory()); + lqw.eq(bo.getIsFixedUnitPrice() != null, XzdSjContractInfo::getIsFixedUnitPrice, bo.getIsFixedUnitPrice()); + lqw.eq(bo.getIsLumpSum() != null, XzdSjContractInfo::getIsLumpSum, bo.getIsLumpSum()); + lqw.eq(bo.getPaymentNotExceedContract() != null, XzdSjContractInfo::getPaymentNotExceedContract, bo.getPaymentNotExceedContract()); + lqw.eq(bo.getPaymentNotExceedRatio() != null, XzdSjContractInfo::getPaymentNotExceedRatio, bo.getPaymentNotExceedRatio()); + lqw.eq(bo.getBudgetNotExceedContract() != null, XzdSjContractInfo::getBudgetNotExceedContract, bo.getBudgetNotExceedContract()); + lqw.eq(bo.getBudgetNotExceedRatio() != null, XzdSjContractInfo::getBudgetNotExceedRatio, bo.getBudgetNotExceedRatio()); + lqw.eq(StringUtils.isNotBlank(bo.getContractText()), XzdSjContractInfo::getContractText, bo.getContractText()); + lqw.eq(bo.getDeptId() != null, XzdSjContractInfo::getDeptId, bo.getDeptId()); + lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdSjContractInfo::getDocumentReference, bo.getDocumentReference()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSjContractInfo::getFileId, bo.getFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdSjContractInfo::getAuditStatus, bo.getAuditStatus()); + lqw.eq(bo.getProvisionalTotalTaxIncluded() != null, XzdSjContractInfo::getProvisionalTotalTaxIncluded, bo.getProvisionalTotalTaxIncluded()); + lqw.eq(StringUtils.isNotBlank(bo.getProvisionalTotalTaxIncludedUpper()), XzdSjContractInfo::getProvisionalTotalTaxIncludedUpper, bo.getProvisionalTotalTaxIncludedUpper()); + lqw.eq(bo.getProvisionalVatAmount() != null, XzdSjContractInfo::getProvisionalVatAmount, bo.getProvisionalVatAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getProvisionalVatAmountUpper()), XzdSjContractInfo::getProvisionalVatAmountUpper, bo.getProvisionalVatAmountUpper()); + lqw.eq(bo.getProvisionalVatRate() != null, XzdSjContractInfo::getProvisionalVatRate, bo.getProvisionalVatRate()); + lqw.eq(StringUtils.isNotBlank(bo.getProvisionalVatInvoiceType()), XzdSjContractInfo::getProvisionalVatInvoiceType, bo.getProvisionalVatInvoiceType()); + lqw.eq(bo.getProvisionalTotalTaxExcluded() != null, XzdSjContractInfo::getProvisionalTotalTaxExcluded, bo.getProvisionalTotalTaxExcluded()); + lqw.eq(StringUtils.isNotBlank(bo.getProvisionalTotalTaxExcludedUpper()), XzdSjContractInfo::getProvisionalTotalTaxExcludedUpper, bo.getProvisionalTotalTaxExcludedUpper()); + lqw.eq(bo.getFixedTotalTaxIncluded() != null, XzdSjContractInfo::getFixedTotalTaxIncluded, bo.getFixedTotalTaxIncluded()); + lqw.eq(StringUtils.isNotBlank(bo.getFixedTotalTaxIncludedUpper()), XzdSjContractInfo::getFixedTotalTaxIncludedUpper, bo.getFixedTotalTaxIncludedUpper()); + lqw.eq(bo.getFixedVatAmount() != null, XzdSjContractInfo::getFixedVatAmount, bo.getFixedVatAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getFixedVatAmountUpper()), XzdSjContractInfo::getFixedVatAmountUpper, bo.getFixedVatAmountUpper()); + lqw.eq(bo.getFixedVatRate() != null, XzdSjContractInfo::getFixedVatRate, bo.getFixedVatRate()); + lqw.eq(StringUtils.isNotBlank(bo.getFixedVatInvoiceType()), XzdSjContractInfo::getFixedVatInvoiceType, bo.getFixedVatInvoiceType()); + lqw.eq(bo.getFixedTotalTaxExcluded() != null, XzdSjContractInfo::getFixedTotalTaxExcluded, bo.getFixedTotalTaxExcluded()); + lqw.eq(StringUtils.isNotBlank(bo.getFixedTotalTaxExcludedUpper()), XzdSjContractInfo::getFixedTotalTaxExcludedUpper, bo.getFixedTotalTaxExcludedUpper()); + lqw.eq(bo.getFixedTotalAdjustable() != null, XzdSjContractInfo::getFixedTotalAdjustable, bo.getFixedTotalAdjustable()); + lqw.eq(StringUtils.isNotBlank(bo.getFixedTotalAdjustNote()), XzdSjContractInfo::getFixedTotalAdjustNote, bo.getFixedTotalAdjustNote()); + return lqw; + } + + /** + * 新增设计合同信息 + * + * @param bo 设计合同信息 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(XzdSjContractInfoBo bo) { + XzdSjContractInfo add = MapstructUtils.convert(bo, XzdSjContractInfo.class); + validEntityBeforeSave(add); + String banBen = BatchNumberGenerator.generateBatchNumber("SJHT-"); + add.setContractCode(banBen); + add.setHtzt(ZxdEnum.HETONGZTYS.getTypeValue()); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + String tableName = XzdClassEnum.SJ_CONTRACT_INFO.getClassName(); + if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) { + throw new ServiceException("扣款与奖励项不能为空"); + } + //合同条款-扣款与奖励项 + for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) { + kkyjlx.setTableName(tableName); + kkyjlx.setContractDetailsId(add.getId()); + } + xzdDeductionItemsService.saveBatch(bo.getKkyjlx()); + if (bo.getHttk() == null || bo.getHttk().isEmpty()) { + throw new ServiceException("合同条款不能为空"); + } + //合同条款-合同条款 + for (XzdContractClause clause : bo.getHttk()) { + clause.setTableName(tableName); + clause.setContractDetailsId(add.getId()); + } + xzdContractClauseService.saveBatch(bo.getHttk()); + //支付条款 + if (bo.getZftk() != null && !bo.getZftk().isEmpty()) { + for (XzdSjhtZfjd clause : bo.getZftk()) { + clause.setMainId(add.getId()); + } + xzdSjhtZfjdService.saveBatch(bo.getZftk()); + } + + //合同变更清单 + if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { + bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());}); + xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds()); + } + + //印章信息 + if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()){ + for (XzdBusinessChange sealInfo : bo.getSealInfo()) { + sealInfo.setContractChangeId(add.getId()); + sealInfo.setType("15"); + } + xzdBusinessChangeService.saveBatch(bo.getSealInfo()); + } + return flag; + } + + /** + * 修改设计合同信息 + * + * @param bo 设计合同信息 + * @return 是否修改成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean updateByBo(XzdSjContractInfoBo bo) { + XzdSjContractInfo update = MapstructUtils.convert(bo, XzdSjContractInfo.class); + validEntityBeforeSave(update); + + XzdSjContractInfo old = baseMapper.selectById(update.getId()); + if (old == null){ + throw new ServiceException("找不到要修改数据!!!"); + } + + if (old.getHtzt().equals(ZxdEnum.HETONGZTZZ.getTypeValue())){ + throw new RuntimeException("该合同已被终止"); + } + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, old.getId()); + xzdContractClauseService.remove(lambdaQueryWrapper2); + + + //支付节点 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, old.getId()); + xzdSjhtZfjdService.remove(lambdaQueryWrapper3); + + + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper4 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper4.eq(XzdDeductionItems::getContractDetailsId, old.getId()); + xzdDeductionItemsService.remove(lambdaQueryWrapper4); + //印章信息 + xzdBusinessChangeService.remove(new LambdaQueryWrapper().eq(XzdBusinessChange::getContractChangeId, old.getId())); + + + String tableName = XzdClassEnum.CS_CONTRACT_INFORMATION.getClassName(); + if (bo.getKkyjlx() == null || bo.getKkyjlx().isEmpty()) { + throw new ServiceException("扣款与奖励项不能为空"); + } + //合同条款-扣款与奖励项 + for (XzdDeductionItems kkyjlx : bo.getKkyjlx()) { + kkyjlx.setTableName(tableName); + kkyjlx.setContractDetailsId(update.getId()); + } + xzdDeductionItemsService.saveBatch(bo.getKkyjlx()); + if (bo.getHttk() == null || bo.getHttk().isEmpty()) { + throw new ServiceException("合同条款不能为空"); + } + //合同条款-合同条款 + for (XzdContractClause clause : bo.getHttk()) { + clause.setTableName(tableName); + clause.setContractDetailsId(update.getId()); + } + xzdContractClauseService.saveBatch(bo.getHttk()); + //支付节点 + if (bo.getZftk() != null && !bo.getZftk().isEmpty()) { + for (XzdSjhtZfjd clause : bo.getZftk()) { + clause.setMainId(update.getId()); + } + xzdSjhtZfjdService.saveBatch(bo.getZftk()); + } + //合同变更清单 + xzdHtglHtbgqdService.remove(new LambdaQueryWrapper().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId())); + if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) { + bo.getHtbgqds().forEach(item->{item.setMainDocumentId(bo.getId());}); + xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds()); + } + + //印章信息 + if (bo.getSealInfo() != null && !bo.getSealInfo().isEmpty()) { + for (XzdBusinessChange xzdBusinessChange : bo.getSealInfo()) { + xzdBusinessChange.setContractChangeId(update.getId()); + xzdBusinessChange.setType("15"); + } + xzdBusinessChangeService.saveBatch(bo.getSealInfo()); + } + + + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSjContractInfo entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设计合同信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + List deleteIds = new ArrayList<>(); + for (Long id : ids) { + XzdSjContractInfoVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + deleteIds.addAll(list); + } + } + } + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.in(XzdDeductionItems::getContractDetailsId, ids); + xzdDeductionItemsService.remove(lambdaQueryWrapper1); + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.in(XzdContractClause::getContractDetailsId, ids); + xzdContractClauseService.remove(lambdaQueryWrapper2); + + //支付节点 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.in(XzdSjhtZfjd::getMainId, ids); + xzdSjhtZfjdService.remove(lambdaQueryWrapper3); + xzdHtglHtbgqdService.remove(new LambdaQueryWrapper().in(XzdHtglHtbgqd::getMainDocumentId,ids)); + //印章信息 + xzdBusinessChangeService.remove(new LambdaQueryWrapper().in(XzdBusinessChange::getContractChangeId, ids)); + return baseMapper.deleteByIds(ids) > 0; + } + + + /** + * 获取合同条款内容 + * @param vo + */ + private void getHttk(XzdSjContractInfoVo vo) { + //合同条款-扣款与奖励项 + LambdaQueryWrapper lambdaQueryWrapper1 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper1.eq(XzdDeductionItems::getContractDetailsId, vo.getId()); + List list = xzdDeductionItemsService.list(lambdaQueryWrapper1); + vo.setKkyjlx(list); + + //合同条款-合同条款 + LambdaQueryWrapper lambdaQueryWrapper2 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper2.eq(XzdContractClause::getContractDetailsId, vo.getId()); + List list1 = xzdContractClauseService.list(lambdaQueryWrapper2); + vo.setHttk(list1); + + //支付条款 + LambdaQueryWrapper lambdaQueryWrapper3 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper3.eq(XzdSjhtZfjd::getMainId, vo.getId()); + List list2 = xzdSjhtZfjdService.list(lambdaQueryWrapper3); + vo.setZftk(list2); + //合同变更清单 + List list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId())); + vo.setHtbgqds(list4); + + //印章信息 + LambdaQueryWrapper lambdaQueryWrapper4 = new LambdaQueryWrapper<>(); + lambdaQueryWrapper4.eq(XzdBusinessChange::getContractChangeId, vo.getId()); + lambdaQueryWrapper4.eq(XzdBusinessChange::getType, "15"); + List list3 = xzdBusinessChangeService.list(lambdaQueryWrapper4); + if (list3 != null && !list3.isEmpty()){ + for (XzdBusinessChange businessChange : list3) { + XzdBusinessSealVo sealVo = xzdBusinessSealService.queryById(businessChange.getBusinessId()); + if (sealVo != null){ + businessChange.setSealName(sealVo.getYzName()); + } + } + vo.setSealInfo(list3); + } + } + + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * 正常使用只需#processEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdSjContractInfo')") + public void processPlansHandlErequipmentList(ProcessEvent processEvent) { + log.info("设计合同信息审核任务执行了{}", processEvent.toString()); + String id = processEvent.getBusinessId(); + XzdSjContractInfo xzdCsContractInformation = baseMapper.selectById(Long.valueOf(id)); + if (xzdCsContractInformation == null){return;} + xzdCsContractInformation.setAuditStatus(processEvent.getStatus()); + baseMapper.updateById(xzdCsContractInformation); + } + + /** + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdSjContractInfo')") + public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) { + log.info("设计合同信息审核任务创建了{}", processTaskEvent.toString()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdSjContractInfo')") + public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) { + log.info("设计合同信息计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString()); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjContractSuspendServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjContractSuspendServiceImpl.java new file mode 100644 index 00000000..1df46cab --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjContractSuspendServiceImpl.java @@ -0,0 +1,239 @@ +package org.dromara.xzd.comprehensive.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessDeleteEvent; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.dromara.common.utils.BatchNumberGenerator; +import org.dromara.system.service.impl.SysOssServiceImpl; +import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation; +import org.dromara.xzd.comprehensive.domain.XzdCsContractSuspend; +import org.dromara.xzd.comprehensive.domain.XzdSjContractInfo; +import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractSuspendVo; +import org.dromara.xzd.comprehensive.service.IXzdSjContractInfoService; +import org.dromara.xzd.enums.ZxdEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjContractSuspendBo; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjContractSuspendVo; +import org.dromara.xzd.comprehensive.domain.XzdSjContractSuspend; +import org.dromara.xzd.comprehensive.mapper.XzdSjContractSuspendMapper; +import org.dromara.xzd.comprehensive.service.IXzdSjContractSuspendService; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +/** + * 设计合同终止Service业务层处理 + * + * @author Lion Li + * @date 2025-11-19 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class XzdSjContractSuspendServiceImpl extends ServiceImpl implements IXzdSjContractSuspendService { + + private final XzdSjContractSuspendMapper baseMapper; + @Autowired + private SysOssServiceImpl sysOssService; + @Autowired + private IXzdSjContractInfoService xzdSjContractInfoService; + + /** + * 查询设计合同终止 + * + * @param id 主键 + * @return 设计合同终止 + */ + @Override + public XzdSjContractSuspendVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询设计合同终止列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同终止分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSjContractSuspendBo 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(XzdSjContractSuspendBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSjContractSuspendBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSjContractSuspend::getId); + lqw.eq(bo.getContractInformationId() != null, XzdSjContractSuspend::getContractInformationId, bo.getContractInformationId()); + lqw.eq(StringUtils.isNotBlank(bo.getReceiptsCode()), XzdSjContractSuspend::getReceiptsCode, bo.getReceiptsCode()); + lqw.eq(StringUtils.isNotBlank(bo.getTitle()), XzdSjContractSuspend::getTitle, bo.getTitle()); + lqw.eq(bo.getDocumentDate() != null, XzdSjContractSuspend::getDocumentDate, bo.getDocumentDate()); + lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSjContractSuspend::getContractName, bo.getContractName()); + lqw.eq(bo.getTerminationDate() != null, XzdSjContractSuspend::getTerminationDate, bo.getTerminationDate()); + lqw.eq(StringUtils.isNotBlank(bo.getProject()), XzdSjContractSuspend::getProject, bo.getProject()); + lqw.eq(bo.getArtyBUnit() != null, XzdSjContractSuspend::getArtyBUnit, bo.getArtyBUnit()); + lqw.eq(bo.getPartyAUnit() != null, XzdSjContractSuspend::getPartyAUnit, bo.getPartyAUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getTerminationCause()), XzdSjContractSuspend::getTerminationCause, bo.getTerminationCause()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSjContractSuspend::getProjectCategory, bo.getProjectCategory()); + lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSjContractSuspend::getProjectType, bo.getProjectType()); + lqw.eq(bo.getCumulativeSettlementAmount() != null, XzdSjContractSuspend::getCumulativeSettlementAmount, bo.getCumulativeSettlementAmount()); + lqw.eq(bo.getDeptId() != null, XzdSjContractSuspend::getDeptId, bo.getDeptId()); + lqw.eq(bo.getCumulativePaymentAmount() != null, XzdSjContractSuspend::getCumulativePaymentAmount, bo.getCumulativePaymentAmount()); + lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdSjContractSuspend::getFileId, bo.getFileId()); + lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), XzdSjContractSuspend::getAuditStatus, bo.getAuditStatus()); + return lqw; + } + + /** + * 新增设计合同终止 + * + * @param bo 设计合同终止 + * @return 是否新增成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean insertByBo(XzdSjContractSuspendBo bo) { + XzdSjContractSuspend add = MapstructUtils.convert(bo, XzdSjContractSuspend.class); + String banBen = BatchNumberGenerator.generateBatchNumber("SJHTZZ-"); + add.setReceiptsCode(banBen); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(XzdSjContractSuspend::getContractInformationId, bo.getContractInformationId()); + if (baseMapper.selectCount(lambdaQueryWrapper) > 1){ + throw new RuntimeException("该合同已终止"); + } + + XzdSjContractInfo byId = xzdSjContractInfoService.getById(bo.getContractInformationId()); + if (byId != null){ + byId.setHtzt(ZxdEnum.HETONGZTZZ.getTypeValue()); + xzdSjContractInfoService.updateById(byId); + } + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改设计合同终止 + * + * @param bo 设计合同终止 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdSjContractSuspendBo bo) { + XzdSjContractSuspend update = MapstructUtils.convert(bo, XzdSjContractSuspend.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSjContractSuspend entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设计合同终止信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + List deleteIds = new ArrayList<>(); + for (Long id : ids) { + XzdSjContractSuspendVo vo = baseMapper.selectVoById(id); + if (vo != null){ + //删除附件 + if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){ + List list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList(); + deleteIds.addAll(list); + } + } + } + if (!deleteIds.isEmpty()) { + sysOssService.deleteWithValidByIds(deleteIds, false); + } + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 总体流程监听(例如: 草稿,撤销,退回,作废,终止,已完成,单任务完成等) + * 正常使用只需#processEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processEvent.flowCode.endsWith('xzdSjContractSuspend')") + public void processPlansHandlErequipmentList(ProcessEvent processEvent) { + log.info("综合服务合同终止审核任务执行了{}", processEvent.toString()); + String id = processEvent.getBusinessId(); + XzdSjContractSuspend xzdCsContractSuspend = baseMapper.selectById(Long.valueOf(id)); + if (xzdCsContractSuspend == null){return;} + xzdCsContractSuspend.setAuditStatus(processEvent.getStatus()); + baseMapper.updateById(xzdCsContractSuspend); + } + + /** + * 执行任务创建监听 + * 示例:也可通过 @EventListener(condition = "#processTaskEvent.flowCode=='leave1'")进行判断 + * 在方法中判断流程节点key + * if ("xxx".equals(processTaskEvent.getNodeCode())) { + * //执行业务逻辑 + * } + * + * @param processTaskEvent 参数 + */ + @org.springframework.context.event.EventListener(condition = "#processTaskEvent.flowCode.endsWith('xzdSjContractSuspend')") + public void processTaskPlansHandlerEquipmentList(ProcessTaskEvent processTaskEvent) { + log.info("综合服务合同终止审核任务创建了{}", processTaskEvent.toString()); + } + + /** + * 监听删除流程事件 + * 正常使用只需#processDeleteEvent.flowCode=='leave1' + * 示例为了方便则使用startsWith匹配了全部示例key + * + * @param processDeleteEvent 参数 + */ + @EventListener(condition = "#processDeleteEvent.flowCode.endsWith('xzdSjContractSuspend')") + public void processDeletePlansHandlerEquipmentList(ProcessDeleteEvent processDeleteEvent) { + log.info("综合服务合同终止计划删除流程事件,技术标准文件审核任务执行了{}", processDeleteEvent.toString()); + } +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjhtZfjdServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjhtZfjdServiceImpl.java new file mode 100644 index 00000000..8051e26a --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/comprehensive/service/impl/XzdSjhtZfjdServiceImpl.java @@ -0,0 +1,136 @@ +package org.dromara.xzd.comprehensive.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.dromara.xzd.comprehensive.domain.bo.XzdSjhtZfjdBo; +import org.dromara.xzd.comprehensive.domain.vo.XzdSjhtZfjdVo; +import org.dromara.xzd.comprehensive.domain.XzdSjhtZfjd; +import org.dromara.xzd.comprehensive.mapper.XzdSjhtZfjdMapper; +import org.dromara.xzd.comprehensive.service.IXzdSjhtZfjdService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 设计合同付款节点信息Service业务层处理 + * + * @author Lion Li + * @date 2025-11-19 + */ +@RequiredArgsConstructor +@Service +public class XzdSjhtZfjdServiceImpl extends ServiceImpl implements IXzdSjhtZfjdService { + + private final XzdSjhtZfjdMapper baseMapper; + + /** + * 查询设计合同付款节点信息 + * + * @param id 主键 + * @return 设计合同付款节点信息 + */ + @Override + public XzdSjhtZfjdVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询设计合同付款节点信息列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 设计合同付款节点信息分页列表 + */ + @Override + public TableDataInfo queryPageList(XzdSjhtZfjdBo 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(XzdSjhtZfjdBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(XzdSjhtZfjdBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByDesc(XzdSjhtZfjd::getId); + lqw.eq(bo.getMainId() != null, XzdSjhtZfjd::getMainId, bo.getMainId()); + lqw.eq(StringUtils.isNotBlank(bo.getPaymentStage()), XzdSjhtZfjd::getPaymentStage, bo.getPaymentStage()); + lqw.eq(StringUtils.isNotBlank(bo.getStageDesc()), XzdSjhtZfjd::getStageDesc, bo.getStageDesc()); + lqw.eq(bo.getPaymentRatio() != null, XzdSjhtZfjd::getPaymentRatio, bo.getPaymentRatio()); + lqw.eq(StringUtils.isNotBlank(bo.getTriggerConditions()), XzdSjhtZfjd::getTriggerConditions, bo.getTriggerConditions()); + lqw.eq(bo.getTimeLimit() != null, XzdSjhtZfjd::getTimeLimit, bo.getTimeLimit()); + return lqw; + } + + /** + * 新增设计合同付款节点信息 + * + * @param bo 设计合同付款节点信息 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(XzdSjhtZfjdBo bo) { + XzdSjhtZfjd add = MapstructUtils.convert(bo, XzdSjhtZfjd.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改设计合同付款节点信息 + * + * @param bo 设计合同付款节点信息 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(XzdSjhtZfjdBo bo) { + XzdSjhtZfjd update = MapstructUtils.convert(bo, XzdSjhtZfjd.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(XzdSjhtZfjd entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除设计合同付款节点信息信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection 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/controller/XzdSupplierOpenBankController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdSupplierOpenBankController.java index d27f88db..b87e5436 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdSupplierOpenBankController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdSupplierOpenBankController.java @@ -17,8 +17,11 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.xzd.domain.XzdSupplierOpenBank; import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo; +import org.dromara.xzd.domain.vo.XzdPoiAreaVo; import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo; +import org.dromara.xzd.service.IXzdCorrespondentList; import org.dromara.xzd.service.IXzdSupplierOpenBankService; +import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -38,6 +41,16 @@ public class XzdSupplierOpenBankController extends BaseController { private final IXzdSupplierOpenBankService xzdSupplierOpenBankService; + + /** + * 查询区域列表 + */ + @SaCheckPermission("xzd:supplierOpenBank:list") + @GetMapping("/getPoiAreaList") + public R> getPoiAreaList() { + return R.ok(xzdSupplierOpenBankService.getPoiAreaList()); + } + /** * 查询供应商信息-开户银行列表 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdYhxxController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdYhxxController.java index 15eeacb9..b1e53130 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdYhxxController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/controller/XzdYhxxController.java @@ -18,6 +18,7 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo; import org.dromara.xzd.domain.bo.XzdYhxxBo; +import org.dromara.xzd.domain.vo.XzdPoiAreaVo; import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo; import org.dromara.xzd.domain.vo.XzdYhxxVo; import org.dromara.xzd.service.IXzdSupplierOpenBankService; @@ -48,8 +49,17 @@ public class XzdYhxxController extends BaseController { */ @SaCheckPermission(value = {"yhzjb:yhxxzjb:add","yhzjb:yhxxzjb:edit","yhzjb:yhxxzjb:list"},mode = SaMode.OR) @GetMapping("/getOpenBankList") - public TableDataInfo getOpenBankList(XzdSupplierOpenBankBo bo, PageQuery pageQuery) { - return xzdSupplierOpenBankService.queryPageList(bo, pageQuery); + public R> getOpenBankList(XzdSupplierOpenBankBo bo) { + return R.ok(xzdSupplierOpenBankService.getOpenBankList(bo)); + } + + /** + * 查询区域列表 + */ + @SaCheckPermission(value = {"yhzjb:yhxxzjb:add","yhzjb:yhxxzjb:edit","yhzjb:yhxxzjb:list"},mode = SaMode.OR) + @GetMapping("/getPoiAreaList") + public R> getPoiAreaList() { + return R.ok(xzdSupplierOpenBankService.getPoiAreaList()); } /** diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdBusinessChange.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdBusinessChange.java index 037d4e99..f2b22896 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdBusinessChange.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdBusinessChange.java @@ -54,7 +54,7 @@ public class XzdBusinessChange extends BaseEntity { private String remark; /** - * 类型(4、分包合同信息,5、分包合同变更,7、采购合同信息,8、采购合同变更,10、综合服务合同信息,11、综合服务合同变更) + * 类型(4、分包合同信息,5、分包合同变更,7、采购合同信息,8、采购合同变更,10、综合服务合同信息,11、综合服务合同变更,15、设计合同信息,16设计合同变更) */ private String type; diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdSupplierOpenBank.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdSupplierOpenBank.java index b2327667..9461d82e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdSupplierOpenBank.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdSupplierOpenBank.java @@ -38,6 +38,11 @@ public class XzdSupplierOpenBank extends BaseEntity { */ private String openBank; + /** + * 支行名称 + */ + private String branchName; + /** * 开户账号 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdYhxx.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdYhxx.java index 85839513..80bdf98c 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdYhxx.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/XzdYhxx.java @@ -34,9 +34,14 @@ public class XzdYhxx extends BaseEntity { private Long mainId; /** - * 银行id + * 开户银行 */ - private Long yhId; + private String openBank; + + /** + * 支行名称 + */ + private String branchName; /** * 开户账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdSupplierOpenBankBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdSupplierOpenBankBo.java index 32883b0d..d87d0fb5 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdSupplierOpenBankBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdSupplierOpenBankBo.java @@ -35,6 +35,10 @@ public class XzdSupplierOpenBankBo extends BaseEntity { */ @NotBlank(message = "开户银行不能为空", groups = { AddGroup.class, EditGroup.class }) private String openBank; + /** + * 支行名称 + */ + private String branchName; /** * 开户账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdYhxxBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdYhxxBo.java index 1f48b2d7..6fc56d13 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdYhxxBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/bo/XzdYhxxBo.java @@ -28,9 +28,14 @@ public class XzdYhxxBo extends BaseEntity { private Long mainId; /** - * 银行id + * 开户银行 */ - private Long yhId; + private String openBank; + + /** + * 支行名称 + */ + private String branchName; /** * 开户账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdPoiAreaVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdPoiAreaVo.java index a3a4cd5d..67eacf0f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdPoiAreaVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdPoiAreaVo.java @@ -10,6 +10,7 @@ import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -71,7 +72,7 @@ public class XzdPoiAreaVo implements Serializable { private String islast; - private List children; + private List children = new ArrayList<>(); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdSupplierOpenBankVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdSupplierOpenBankVo.java index d747dd86..c789da09 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdSupplierOpenBankVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdSupplierOpenBankVo.java @@ -41,6 +41,11 @@ public class XzdSupplierOpenBankVo implements Serializable { @ExcelProperty(value = "开户银行") private String openBank; + /** + * 支行名称 + */ + private String branchName; + /** * 开户账号 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdYhxxVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdYhxxVo.java index a4d2fc4a..f8c337f7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdYhxxVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/domain/vo/XzdYhxxVo.java @@ -41,12 +41,14 @@ public class XzdYhxxVo implements Serializable { private String mainName; /** - * 银行id + * 开户银行 */ - @ExcelProperty(value = "银行id") - private Long yhId; - @Translation(type = TransConstant.XZD_SUPPLIER_OPEN_BANK_ID_TO_NAME, mapper = "yhId") - private String yhName; + private String openBank; + + /** + * 支行名称 + */ + private String branchName; /** * 开户账号 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java index 8a0e1211..efb6c500 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/enums/XzdClassEnum.java @@ -9,6 +9,8 @@ public enum XzdClassEnum { CS_CONTRACT_INFORMATION("xzd_cs_contract_information"), //综合服务合同信息 CS_CONTRACT_CHANGE("xzd_cs_contract_change"), //综合服务合同变更 + SJ_CONTRACT_INFO("xzd_sj_contract_info"), //设计合同信息 + SJ_CONTRACT_CHANGE("xzd_sj_contract_change"), //设计合同变更 JS_ZHFW_JINDU("xzd_js_zhfw_jindu"), //综合服务合同进度结算 JS_CG_JUNGON("xzd_js_cg_jungon"), //采购合同竣工结算 XZD_JS_CG_JUNGON_EDIT("xzd_js_cg_jungon_edit"), //采购合同竣工结算 diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdPoiAreaService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdPoiAreaService.java index 5db372fb..2f594be6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdPoiAreaService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdPoiAreaService.java @@ -9,6 +9,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; import java.util.Collection; import java.util.List; +import java.util.Set; /** * 区域Service接口 @@ -67,4 +68,6 @@ public interface IXzdPoiAreaService extends IService{ * @return 是否删除成功 */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + List getAreaListByName(Set areaName); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierOpenBankService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierOpenBankService.java index eed8a167..41935b79 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierOpenBankService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/IXzdSupplierOpenBankService.java @@ -6,6 +6,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.xzd.domain.XzdSupplierOpenBank; import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo; +import org.dromara.xzd.domain.vo.XzdPoiAreaVo; import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo; import java.util.Collection; @@ -71,4 +72,7 @@ public interface IXzdSupplierOpenBankService extends IService getPoiAreaList(); + + List getOpenBankList(XzdSupplierOpenBankBo bo); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java index 07572ff5..115ca123 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdContractDetailsServiceImpl.java @@ -485,7 +485,8 @@ public class XzdContractDetailsServiceImpl extends ServiceImpl xzdSupplierOpenBanks = new ArrayList<>(); for (XzdYhxx xzdYhxx : xzdYhxxList) { - XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getById(xzdYhxx.getYhId()); + XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper() + .eq(XzdSupplierOpenBank::getOpenBank, xzdYhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,xzdYhxx.getBranchName())); if (byId != null){ byId.setAccount(xzdYhxx.getAccount()); xzdSupplierOpenBanks.add(byId); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdCorrespondentListImp.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdCorrespondentListImp.java index 3a153465..e9405396 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdCorrespondentListImp.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdCorrespondentListImp.java @@ -265,7 +265,8 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList { ArrayList xzdYhxxes = new ArrayList<>(); for (XzdSupplierOpenBank bank : xzdSettlementInfo.getOpenBanks()) { XzdYhxx xzdYhxxBo = new XzdYhxx(); - xzdYhxxBo.setYhId(bank.getId()); + xzdYhxxBo.setOpenBank(bank.getOpenBank()); + xzdYhxxBo.setBranchName(bank.getBranchName()); xzdYhxxBo.setMainId(id); xzdYhxxBo.setSfmr(bank.getIsDefault()); xzdYhxxBo.setAccount(bank.getAccount()); @@ -493,7 +494,8 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList { ArrayList xzdYhxxes = new ArrayList<>(); for (XzdSupplierOpenBank bank : xzdSettlementInfo.getOpenBanks()) { XzdYhxx xzdYhxxBo = new XzdYhxx(); - xzdYhxxBo.setYhId(bank.getId()); + xzdYhxxBo.setOpenBank(bank.getOpenBank()); + xzdYhxxBo.setBranchName(bank.getBranchName()); xzdYhxxBo.setMainId(dto.getXzdCustomerinformation().getId()); xzdYhxxBo.setSfmr(bank.getIsDefault()); xzdYhxxBo.setAccount(bank.getAccount()); @@ -607,7 +609,8 @@ public class XzdCorrespondentListImp implements IXzdCorrespondentList { if (xzdYhxxList!= null && !xzdYhxxList.isEmpty()) { List openBanks = new ArrayList<>(); for (XzdYhxx yhxx : xzdYhxxList) { - XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getById(yhxx.getYhId()); + XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper() + .eq(XzdSupplierOpenBank::getOpenBank, yhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,yhxx.getBranchName())); if (byId != null){ byId.setAccount(yhxx.getAccount()); byId.setIsDefault(yhxx.getSfmr()); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdPoiAreaServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdPoiAreaServiceImpl.java index e559ebe3..b83843e9 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdPoiAreaServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdPoiAreaServiceImpl.java @@ -16,9 +16,8 @@ import org.dromara.xzd.domain.XzdPoiArea; import org.dromara.xzd.mapper.XzdPoiAreaMapper; import org.dromara.xzd.service.IXzdPoiAreaService; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; +import java.util.stream.Collectors; /** * 区域Service业务层处理 @@ -133,4 +132,96 @@ public class XzdPoiAreaServiceImpl extends ServiceImpl 0; } + + @Override + public List getAreaListByName(Set areaName) { + return buildAreaTreeByProvinceSet(areaName); + } + + + /** + * 构建区域树形结构(顶层parentid=0) + */ + public List buildAreaTree() { + // 1. 查询所有区域数据 + List allAreas = baseMapper.selectVoList();// 从数据库查询全量数据 + + // 2. 按parentid分组:key=parentid,value=该父节点下的所有子区域 + Map> parentMap = allAreas.stream() + .collect(Collectors.groupingBy(XzdPoiAreaVo::getParentid)); + + // 3. 从顶层节点(parentid=0)开始构建树形结构 + List rootTrees = new ArrayList<>(); + // 获取parentid=0的所有顶层区域 + List rootAreas = parentMap.getOrDefault(0, Collections.emptyList()); + + for (XzdPoiAreaVo rootArea : rootAreas) { + // 递归为当前节点挂载子节点 + buildChildren(rootArea, parentMap); + rootTrees.add(rootArea); + } + + return rootTrees; + } + + /** + * 递归为当前节点挂载子节点 + * @param currentTree 当前节点 + * @param parentMap 按parentid分组的全量数据 + */ + private void buildChildren(XzdPoiAreaVo currentTree, Map> parentMap) { + // 当前节点的adcode(子节点的parentid应等于此值) + Long currentAdcode = currentTree.getAdcode(); + // 获取当前节点的所有子区域(parentid=currentAdcode) + List childAreas = parentMap.getOrDefault(currentAdcode, Collections.emptyList()); + + for (XzdPoiAreaVo childArea : childAreas) { + // 递归为子节点挂载它的子节点(深度优先) + buildChildren(childArea, parentMap); + // 将子节点添加到当前节点的children列表 + currentTree.getChildren().add(childArea); + } + } + + /** + * 按省份名称集合过滤,返回所有匹配省份及其下属区域的树形结构 + * @param provinceNames 省份名称集合(如 {"江苏省", "广东省"}) + * @return 多个省份的子树列表(无匹配时返回空列表) + */ + public List buildAreaTreeByProvinceSet(Set provinceNames) { + // 1. 边界处理:集合为空时直接返回空 + if (provinceNames == null || provinceNames.isEmpty()) { + return Collections.emptyList(); + } + + // 2. 查询所有区域数据 + List allAreas = baseMapper.selectVoList();// 从数据库查询全量数据 + if (allAreas.isEmpty()) { + return Collections.emptyList(); + } + + // 3. 按parentid分组(便于快速查找子节点) + Map> parentMap = allAreas.stream() + .collect(Collectors.groupingBy(XzdPoiAreaVo::getParentid)); + + // 4. 匹配集合中所有符合条件的省份节点(名称在集合中 + 层级为“省”) + List targetProvinces = allAreas.stream() + .filter(area -> provinceNames.contains(area.getName()) // 名称在集合中 + && "province".equals(area.getLevel())) // 层级为省份(需按实际数据调整) + .toList(); + + // 5. 若无匹配的省份,返回空列表 + if (targetProvinces.isEmpty()) { + return Collections.emptyList(); + } + + // 6. 为每个匹配的省份构建子树,并汇总结果 + List resultTrees = new ArrayList<>(); + for (XzdPoiAreaVo province : targetProvinces) { + buildChildren(province, parentMap); // 递归挂载下属区域 + resultTrees.add(province); + } + + return resultTrees; + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java index a41ea94e..33d97622 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierInfoServiceImpl.java @@ -288,7 +288,8 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl() + .eq(XzdSupplierOpenBank::getOpenBank, xzdYhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,xzdYhxx.getBranchName())); if (openBank != null) { vo.setKhyh(openBank.getOpenBank()); vo.setKhhzh(xzdYhxx.getAccount()); @@ -946,7 +949,8 @@ public class XzdSupplierInfoServiceImpl extends ServiceImpl openBanks = new ArrayList<>(); for (XzdYhxx yhxx : xzdYhxxList) { - XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getById(yhxx.getYhId()); + XzdSupplierOpenBank byId = xzdSupplierOpenBankService.getBaseMapper().selectOne(new LambdaQueryWrapper() + .eq(XzdSupplierOpenBank::getOpenBank, xzdYhxx.getOpenBank()).eq(XzdSupplierOpenBank::getBranchName,xzdYhxx.getBranchName())); if (byId != null){ byId.setAccount(yhxx.getAccount()); byId.setIsDefault(yhxx.getSfmr()); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierOpenBankServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierOpenBankServiceImpl.java index 75d195a1..c1d0cb45 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierOpenBankServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdSupplierOpenBankServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.xzd.service.impl; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.service.XzdSupplierOpenBankService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.SpringUtils; @@ -16,15 +18,17 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.xzd.domain.XzdSupplierOpenBank; import org.dromara.xzd.domain.bo.XzdSupplierOpenBankBo; +import org.dromara.xzd.domain.vo.XzdPoiAreaVo; import org.dromara.xzd.domain.vo.XzdSupplierOpenBankVo; import org.dromara.xzd.mapper.XzdSupplierOpenBankMapper; +import org.dromara.xzd.service.IXzdCorrespondentList; +import org.dromara.xzd.service.IXzdPoiAreaService; import org.dromara.xzd.service.IXzdSupplierOpenBankService; +import org.dromara.xzd.utilS.AreaUtil; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 供应商信息-开户银行Service业务层处理 @@ -38,6 +42,9 @@ public class XzdSupplierOpenBankServiceImpl extends ServiceImpl() + .eq(XzdSupplierOpenBank::getOpenBank, entity.getOpenBank()) + .eq(XzdSupplierOpenBank::getBranchName, entity.getBranchName()) + .ne(entity.getId() != null,XzdSupplierOpenBank::getId, entity.getId())); + if (count > 0){ + throw new ServiceException("该银行的支行名称已存在"); + } } /** @@ -167,6 +182,39 @@ public class XzdSupplierOpenBankServiceImpl extends ServiceImpl getPoiAreaList() { + Set areaName = new HashSet<>(); + List xzdSupplierOpenBanks = baseMapper.selectList(); + if (CollectionUtil.isEmpty(xzdSupplierOpenBanks)) { + return null; + } + xzdSupplierOpenBanks.stream().forEach(xzdSupplierOpenBank -> {areaName.add(xzdSupplierOpenBank.getBankSf());}); + return xzdPoiAreaService.getAreaListByName(areaName); + } + + @Override + public List getOpenBankList(XzdSupplierOpenBankBo bo) { + List vos = baseMapper.selectVoList(new LambdaQueryWrapper() + .select(StringUtils.isBlank(bo.getOpenBank()) ? XzdSupplierOpenBank::getOpenBank:XzdSupplierOpenBank::getBranchName) + .eq(StringUtils.isNotBlank(bo.getBankSf()), XzdSupplierOpenBank::getBankSf, bo.getBankSf()) + .eq(StringUtils.isNotBlank(bo.getBankCs()), XzdSupplierOpenBank::getBankCs, bo.getBankCs()) + .eq(StringUtils.isNotBlank(bo.getBankQx()), XzdSupplierOpenBank::getBankQx, bo.getBankQx()) + .eq(StringUtils.isNotBlank(bo.getOpenBank()), XzdSupplierOpenBank::getOpenBank, bo.getOpenBank()) + .groupBy(StringUtils.isBlank(bo.getOpenBank()) ? XzdSupplierOpenBank::getOpenBank:XzdSupplierOpenBank::getBranchName)); + List names = new ArrayList<>(); + if (StringUtils.isNotBlank(bo.getOpenBank())) { + for (XzdSupplierOpenBankVo vo : vos) { + names.add(vo.getBranchName()); + } + }else { + for (XzdSupplierOpenBankVo vo : vos) { + names.add(vo.getOpenBank()); + } + } + return names; + } + @Override public String selectNameByIds(String ids) { List list = new ArrayList<>(); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdYhxxServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdYhxxServiceImpl.java index 489a4389..03799146 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdYhxxServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/xzd/service/impl/XzdYhxxServiceImpl.java @@ -106,8 +106,9 @@ public class XzdYhxxServiceImpl extends ServiceImpl impl LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByDesc(XzdYhxx::getId); lqw.eq(bo.getMainId() != null, XzdYhxx::getMainId, bo.getMainId()); - lqw.eq(bo.getYhId() != null, XzdYhxx::getYhId, bo.getYhId()); lqw.eq(StringUtils.isNotBlank(bo.getSfmr()), XzdYhxx::getSfmr, bo.getSfmr()); + lqw.eq(StringUtils.isNotBlank(bo.getOpenBank()), XzdYhxx::getOpenBank, bo.getOpenBank()); + lqw.eq(StringUtils.isNotBlank(bo.getBranchName()), XzdYhxx::getBranchName, bo.getBranchName()); lqw.like(StringUtils.isNotBlank(bo.getAccount()), XzdYhxx::getAccount, bo.getAccount()); lqw.like(StringUtils.isNotBlank(bo.getKhhm()), XzdYhxx::getKhhm, bo.getKhhm()); lqw.eq(StringUtils.isNotBlank(bo.getType()), XzdYhxx::getType, bo.getType()); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractChangeMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractChangeMapper.xml new file mode 100644 index 00000000..aa1058db --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractChangeMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractInfoMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractInfoMapper.xml new file mode 100644 index 00000000..27fc1ea2 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractInfoMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractSuspendMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractSuspendMapper.xml new file mode 100644 index 00000000..04ad021f --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjContractSuspendMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjhtZfjdMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjhtZfjdMapper.xml new file mode 100644 index 00000000..48023e58 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/xzd/comprehensive/XzdSjhtZfjdMapper.xml @@ -0,0 +1,7 @@ + + + + +