Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
zt
2025-10-18 20:03:14 +08:00
157 changed files with 10254 additions and 230 deletions

View File

@ -253,6 +253,8 @@ springdoc:
packages-to-scan: org.dromara.design
- group: 13.工作流模块
packages-to-scan: org.dromara.workflow
- group: 14.合同模块
packages-to-scan: org.dromara.ctr
- group: 15.无人机模块
packages-to-scan: org.dromara.drone
- group: 20.代码生成模块

View File

@ -77,7 +77,7 @@ public class RedisUtils {
public static <T> void publish(String channelKey, T msg, Consumer<T> consumer) {
RTopic topic = CLIENT.getTopic(channelKey);
topic.publish(msg);
System.out.println("发布通道消息---------"+msg.toString());
// System.out.println("发布通道消息---------"+msg.toString());
consumer.accept(msg);
}

View File

@ -69,8 +69,8 @@ public class WebSocketUtils {
broadcastMessage.setMessage(webSocketMessage.getMessage());
broadcastMessage.setSessionKeys(unsentSessionKeys);
RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> {
log.info(" WebSocket发送主题订阅消息topic:{} session keys:{} message:{}",
WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage());
// log.info(" WebSocket发送主题订阅消息topic:{} session keys:{} message:{}",
// WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage());
});
}
}
@ -84,7 +84,7 @@ public class WebSocketUtils {
WebSocketMessageDto broadcastMessage = new WebSocketMessageDto();
broadcastMessage.setMessage(message);
RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> {
log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message);
// log.info("WebSocket发送主题订阅消息topic:{} message:{}", WEB_SOCKET_TOPIC, message);
});
}

View File

@ -0,0 +1,107 @@
package org.dromara.ctr.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import org.dromara.ctr.service.ICtrContractProgressSettlementService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 承包合同进度结算
*
* @author lilemy
* @date 2025-10-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/ctr/contractProgressSettlement")
public class CtrContractProgressSettlementController extends BaseController {
private final ICtrContractProgressSettlementService ctrContractProgressSettlementService;
/**
* 查询承包合同进度结算列表
*/
@SaCheckPermission("ctr:contractProgressSettlement:list")
@GetMapping("/list")
public TableDataInfo<CtrContractProgressSettlementVo> list(CtrContractProgressSettlementBo bo, PageQuery pageQuery) {
return ctrContractProgressSettlementService.queryPageList(bo, pageQuery);
}
/**
* 导出承包合同进度结算列表
*/
@SaCheckPermission("ctr:contractProgressSettlement:export")
@Log(title = "承包合同进度结算", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(CtrContractProgressSettlementBo bo, HttpServletResponse response) {
List<CtrContractProgressSettlementVo> list = ctrContractProgressSettlementService.queryList(bo);
ExcelUtil.exportExcel(list, "承包合同进度结算", CtrContractProgressSettlementVo.class, response);
}
/**
* 获取承包合同进度结算详细信息
*
* @param id 主键
*/
@SaCheckPermission("ctr:contractProgressSettlement:query")
@GetMapping("/{id}")
public R<CtrContractProgressSettlementVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(ctrContractProgressSettlementService.queryById(id));
}
/**
* 新增承包合同进度结算
*/
@SaCheckPermission("ctr:contractProgressSettlement:add")
@Log(title = "承包合同进度结算", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated @RequestBody CtrContractProgressSettlementCreateReq req) {
return toAjax(ctrContractProgressSettlementService.insertByBo(req));
}
/**
* 修改承包合同进度结算
*/
@SaCheckPermission("ctr:contractProgressSettlement:edit")
@Log(title = "承包合同进度结算", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated @RequestBody CtrContractProgressSettlementUpdateReq req) {
return toAjax(ctrContractProgressSettlementService.updateByBo(req));
}
/**
* 删除承包合同进度结算
*
* @param ids 主键串
*/
@SaCheckPermission("ctr:contractProgressSettlement:remove")
@Log(title = "承包合同进度结算", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(ctrContractProgressSettlementService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.ctr.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementItemBo;
import org.dromara.ctr.service.ICtrContractProgressSettlementItemService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 承包合同进度结算清单
*
* @author lilemy
* @date 2025-10-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/ctr/contractProgressSettlementItem")
public class CtrContractProgressSettlementItemController extends BaseController {
private final ICtrContractProgressSettlementItemService ctrContractProgressSettlementItemService;
/**
* 查询承包合同进度结算清单列表
*/
@SaCheckPermission("ctr:contractProgressSettlementItem:list")
@GetMapping("/list")
public TableDataInfo<CtrContractProgressSettlementItemVo> list(CtrContractProgressSettlementItemBo bo, PageQuery pageQuery) {
return ctrContractProgressSettlementItemService.queryPageList(bo, pageQuery);
}
/**
* 导出承包合同进度结算清单列表
*/
@SaCheckPermission("ctr:contractProgressSettlementItem:export")
@Log(title = "承包合同进度结算清单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(CtrContractProgressSettlementItemBo bo, HttpServletResponse response) {
List<CtrContractProgressSettlementItemVo> list = ctrContractProgressSettlementItemService.queryList(bo);
ExcelUtil.exportExcel(list, "承包合同进度结算清单", CtrContractProgressSettlementItemVo.class, response);
}
/**
* 获取承包合同进度结算清单详细信息
*
* @param id 主键
*/
@SaCheckPermission("ctr:contractProgressSettlementItem:query")
@GetMapping("/{id}")
public R<CtrContractProgressSettlementItemVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(ctrContractProgressSettlementItemService.queryById(id));
}
/**
* 新增承包合同进度结算清单
*/
@SaCheckPermission("ctr:contractProgressSettlementItem:add")
@Log(title = "承包合同进度结算清单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody CtrContractProgressSettlementItemBo bo) {
return toAjax(ctrContractProgressSettlementItemService.insertByBo(bo));
}
/**
* 修改承包合同进度结算清单
*/
@SaCheckPermission("ctr:contractProgressSettlementItem:edit")
@Log(title = "承包合同进度结算清单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CtrContractProgressSettlementItemBo bo) {
return toAjax(ctrContractProgressSettlementItemService.updateByBo(bo));
}
/**
* 删除承包合同进度结算清单
*
* @param ids 主键串
*/
@SaCheckPermission("ctr:contractProgressSettlementItem:remove")
@Log(title = "承包合同进度结算清单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(ctrContractProgressSettlementItemService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,106 @@
package org.dromara.ctr.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo;
import org.dromara.ctr.service.ICtrSubcontractProgressSettlementService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 分包合同进度结算
*
* @author lilemy
* @date 2025-10-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/ctr/subcontractProgressSettlement")
public class CtrSubcontractProgressSettlementController extends BaseController {
private final ICtrSubcontractProgressSettlementService ctrSubcontractProgressSettlementService;
/**
* 查询分包合同进度结算列表
*/
@SaCheckPermission("ctr:subcontractProgressSettlement:list")
@GetMapping("/list")
public TableDataInfo<CtrSubcontractProgressSettlementVo> list(CtrSubcontractProgressSettlementBo bo, PageQuery pageQuery) {
return ctrSubcontractProgressSettlementService.queryPageList(bo, pageQuery);
}
/**
* 导出分包合同进度结算列表
*/
@SaCheckPermission("ctr:subcontractProgressSettlement:export")
@Log(title = "分包合同进度结算", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(CtrSubcontractProgressSettlementBo bo, HttpServletResponse response) {
List<CtrSubcontractProgressSettlementVo> list = ctrSubcontractProgressSettlementService.queryList(bo);
ExcelUtil.exportExcel(list, "分包合同进度结算", CtrSubcontractProgressSettlementVo.class, response);
}
/**
* 获取分包合同进度结算详细信息
*
* @param id 主键
*/
@SaCheckPermission("ctr:subcontractProgressSettlement:query")
@GetMapping("/{id}")
public R<CtrSubcontractProgressSettlementVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(ctrSubcontractProgressSettlementService.queryById(id));
}
/**
* 新增分包合同进度结算
*/
@SaCheckPermission("ctr:subcontractProgressSettlement:add")
@Log(title = "分包合同进度结算", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated @RequestBody CtrSubcontractProgressSettlementCreateReq req) {
return toAjax(ctrSubcontractProgressSettlementService.insertByBo(req));
}
/**
* 修改分包合同进度结算
*/
@SaCheckPermission("ctr:subcontractProgressSettlement:edit")
@Log(title = "分包合同进度结算", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated @RequestBody CtrSubcontractProgressSettlementUpdateReq req) {
return toAjax(ctrSubcontractProgressSettlementService.updateByBo(req));
}
/**
* 删除分包合同进度结算
*
* @param ids 主键串
*/
@SaCheckPermission("ctr:subcontractProgressSettlement:remove")
@Log(title = "分包合同进度结算", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(ctrSubcontractProgressSettlementService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,105 @@
package org.dromara.ctr.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo;
import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementItemBo;
import org.dromara.ctr.service.ICtrSubcontractProgressSettlementItemService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 分包合同进度结算清单
*
* @author lilemy
* @date 2025-10-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/ctr/subcontractProgressSettlementItem")
public class CtrSubcontractProgressSettlementItemController extends BaseController {
private final ICtrSubcontractProgressSettlementItemService ctrSubcontractProgressSettlementItemService;
/**
* 查询分包合同进度结算清单列表
*/
@SaCheckPermission("ctr:subcontractProgressSettlementItem:list")
@GetMapping("/list")
public TableDataInfo<CtrSubcontractProgressSettlementItemVo> list(CtrSubcontractProgressSettlementItemBo bo, PageQuery pageQuery) {
return ctrSubcontractProgressSettlementItemService.queryPageList(bo, pageQuery);
}
/**
* 导出分包合同进度结算清单列表
*/
@SaCheckPermission("ctr:subcontractProgressSettlementItem:export")
@Log(title = "分包合同进度结算清单", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(CtrSubcontractProgressSettlementItemBo bo, HttpServletResponse response) {
List<CtrSubcontractProgressSettlementItemVo> list = ctrSubcontractProgressSettlementItemService.queryList(bo);
ExcelUtil.exportExcel(list, "分包合同进度结算清单", CtrSubcontractProgressSettlementItemVo.class, response);
}
/**
* 获取分包合同进度结算清单详细信息
*
* @param id 主键
*/
@SaCheckPermission("ctr:subcontractProgressSettlementItem:query")
@GetMapping("/{id}")
public R<CtrSubcontractProgressSettlementItemVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(ctrSubcontractProgressSettlementItemService.queryById(id));
}
/**
* 新增分包合同进度结算清单
*/
@SaCheckPermission("ctr:subcontractProgressSettlementItem:add")
@Log(title = "分包合同进度结算清单", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody CtrSubcontractProgressSettlementItemBo bo) {
return toAjax(ctrSubcontractProgressSettlementItemService.insertByBo(bo));
}
/**
* 修改分包合同进度结算清单
*/
@SaCheckPermission("ctr:subcontractProgressSettlementItem:edit")
@Log(title = "分包合同进度结算清单", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody CtrSubcontractProgressSettlementItemBo bo) {
return toAjax(ctrSubcontractProgressSettlementItemService.updateByBo(bo));
}
/**
* 删除分包合同进度结算清单
*
* @param ids 主键串
*/
@SaCheckPermission("ctr:subcontractProgressSettlementItem:remove")
@Log(title = "分包合同进度结算清单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(ctrSubcontractProgressSettlementItemService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,139 @@
package org.dromara.ctr.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 承包合同进度结算对象 ctr_contract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ctr_contract_progress_settlement")
public class CtrContractProgressSettlement extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 所属部门
*/
private Long deptId;
/**
* 单据编码
*/
private String documentCode;
/**
* 标题
*/
private String title;
/**
* 结算日期
*/
private LocalDate settlementDate;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
private BigDecimal approvalAmount;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 结算单位(客户)
*/
private Long settlementUnit;
/**
* 本期结算金额
*/
private BigDecimal settlementMoney;
/**
* 本期扣款金额
*/
private BigDecimal deductionMoney;
/**
* 本期奖励金额
*/
private BigDecimal bonus;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal thisSettlementRatio;
/**
* 支付条款
*/
private Long paymentTerms;
/**
* 多文件逗号分隔
*/
private String fileId;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,107 @@
package org.dromara.ctr.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;
/**
* 承包合同进度结算清单对象 ctr_contract_progress_settlement_item
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ctr_contract_progress_settlement_item")
public class CtrContractProgressSettlementItem extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 结算单ID
*/
private Long settlementId;
/**
* 类型(1合同内清单 2变更增加清单 3合同外清单)
*/
private String type;
/**
* 编码
*/
private String code;
/**
* 合同清单名称
*/
private String name;
/**
* 计量单位
*/
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,118 @@
package org.dromara.ctr.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;
/**
* 分包合同进度结算对象 ctr_subcontract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("ctr_subcontract_progress_settlement")
public class CtrSubcontractProgressSettlement extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 单据编码
*/
private String documentCode;
/**
* 标题
*/
private String title;
/**
* 单据日期
*/
private LocalDate documentDate;
/**
* 合同编码
*/
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
private BigDecimal approvalAmount;
/**
* 结算单位
*/
private Long settlementUnit;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal currentSettlementRate;
/**
* 文件ID
*/
private String fileId;
/**
* 审核状态
*/
private String auditStatus;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,130 @@
package org.dromara.ctr.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 分包合同进度结算清单对象 ctr_subcontract_progress_settlement_item
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@TableName("ctr_subcontract_progress_settlement_item")
public class CtrSubcontractProgressSettlementItem implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 结算单ID
*/
private Long settlementId;
/**
* 类型(1合同内清单 2变更增加清单 3合同外清单)
*/
private String type;
/**
* 编码
*/
private String code;
/**
* 合同清单名称
*/
private String name;
/**
* 计量单位
*/
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 税额
*/
private String tax;
/**
* WBS工作分解结构
*/
private String wbs;
/**
* CBS成本分解结构
*/
private String cbs;
/**
* CBS预算总额
*/
private BigDecimal cbsBudgetTotal;
/**
* CBS余额
*/
private BigDecimal cbsBalance;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,145 @@
package org.dromara.ctr.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import java.math.BigDecimal;
import java.time.LocalDate;
/**
* 承包合同进度结算业务对象 ctr_contract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CtrContractProgressSettlement.class, reverseConvertGenerate = false)
public class CtrContractProgressSettlementBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = {EditGroup.class})
private Long id;
/**
* 所属部门
*/
@NotNull(message = "所属部门不能为空", groups = {AddGroup.class, EditGroup.class})
private Long deptId;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空", groups = {AddGroup.class, EditGroup.class})
private String documentCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空", groups = {AddGroup.class, EditGroup.class})
private String title;
/**
* 结算日期
*/
@NotNull(message = "结算日期不能为空", groups = {AddGroup.class, EditGroup.class})
private LocalDate settlementDate;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空", groups = {AddGroup.class, EditGroup.class})
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
@NotNull(message = "审批金额不能为空", groups = {AddGroup.class, EditGroup.class})
private BigDecimal approvalAmount;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 结算单位(客户)
*/
private Long settlementUnit;
/**
* 本期结算金额
*/
private BigDecimal settlementMoney;
/**
* 本期扣款金额
*/
private BigDecimal deductionMoney;
/**
* 本期奖励金额
*/
private BigDecimal bonus;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal thisSettlementRatio;
/**
* 支付条款
*/
private Long paymentTerms;
/**
* 多文件逗号分隔
*/
private String fileId;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,110 @@
package org.dromara.ctr.domain.bo;
import org.dromara.ctr.domain.CtrContractProgressSettlementItem;
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;
/**
* 承包合同进度结算清单业务对象 ctr_contract_progress_settlement_item
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CtrContractProgressSettlementItem.class, reverseConvertGenerate = false)
public class CtrContractProgressSettlementItemBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 结算单ID
*/
@NotNull(message = "结算单ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long settlementId;
/**
* 类型(1合同内清单 2变更增加清单 3合同外清单)
*/
@NotBlank(message = "类型(1合同内清单 2变更增加清单 3合同外清单)不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 编码
*/
@NotBlank(message = "编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String code;
/**
* 合同清单名称
*/
@NotBlank(message = "合同清单名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,122 @@
package org.dromara.ctr.domain.bo;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
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;
/**
* 分包合同进度结算业务对象 ctr_subcontract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CtrSubcontractProgressSettlement.class, reverseConvertGenerate = false)
public class CtrSubcontractProgressSettlementBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String documentCode;
/**
* 标题
*/
@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 contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
@NotNull(message = "审批金额不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal approvalAmount;
/**
* 结算单位
*/
private Long settlementUnit;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal currentSettlementRate;
/**
* 文件ID
*/
private String fileId;
/**
* 审核状态
*/
private String auditStatus;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,136 @@
package org.dromara.ctr.domain.bo;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
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;
/**
* 分包合同进度结算清单业务对象 ctr_subcontract_progress_settlement_item
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = CtrSubcontractProgressSettlementItem.class, reverseConvertGenerate = false)
public class CtrSubcontractProgressSettlementItemBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 结算单ID
*/
@NotNull(message = "结算单ID不能为空", groups = { AddGroup.class, EditGroup.class })
private Long settlementId;
/**
* 类型(1合同内清单 2变更增加清单 3合同外清单)
*/
@NotBlank(message = "类型(1合同内清单 2变更增加清单 3合同外清单)不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 编码
*/
@NotBlank(message = "编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String code;
/**
* 合同清单名称
*/
@NotBlank(message = "合同清单名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String name;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 税额
*/
private String tax;
/**
* WBS工作分解结构
*/
private String wbs;
/**
* CBS成本分解结构
*/
private String cbs;
/**
* CBS预算总额
*/
private BigDecimal cbsBudgetTotal;
/**
* CBS余额
*/
private BigDecimal cbsBalance;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,154 @@
package org.dromara.ctr.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 承包合同进度结算业务对象 ctr_contract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@AutoMapper(target = CtrContractProgressSettlement.class, reverseConvertGenerate = false)
public class CtrContractProgressSettlementCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7707258738219359278L;
/**
* 所属部门
*/
@NotNull(message = "所属部门不能为空")
private Long deptId;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空")
private String documentCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 结算日期
*/
@NotNull(message = "结算日期不能为空")
private LocalDate settlementDate;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空")
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
@NotNull(message = "审批金额不能为空")
private BigDecimal approvalAmount;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 结算单位(客户)
*/
private Long settlementUnit;
/**
* 本期结算金额
*/
private BigDecimal settlementMoney;
/**
* 本期扣款金额
*/
private BigDecimal deductionMoney;
/**
* 本期奖励金额
*/
private BigDecimal bonus;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal thisSettlementRatio;
/**
* 支付条款
*/
private Long paymentTerms;
/**
* 多文件逗号分隔
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 合同内清单
*/
private List<CtrContractProgressSettlementItemCreateReq> inInventory;
/**
* 变更增加清单
*/
private List<CtrContractProgressSettlementItemCreateReq> changeInventory;
/**
* 合同外清单
*/
private List<CtrContractProgressSettlementItemCreateReq> outInventory;
}

View File

@ -0,0 +1,86 @@
package org.dromara.ctr.domain.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-10-18 17:05
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CtrContractProgressSettlementItemCreateReq {
/**
* 编码
*/
@NotBlank(message = "编码不能为空")
private String code;
/**
* 合同清单名称
*/
@NotBlank(message = "合同清单名称不能为空")
private String name;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空")
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,91 @@
package org.dromara.ctr.domain.dto;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-10-18 17:39
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class CtrContractProgressSettlementItemUpdateReq {
/**
* 主键ID
*/
private Long id;
/**
* 编码
*/
@NotBlank(message = "编码不能为空")
private String code;
/**
* 合同清单名称
*/
@NotBlank(message = "合同清单名称不能为空")
private String name;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空")
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,157 @@
package org.dromara.ctr.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* @author lilemy
* @date 2025-10-18 17:30
*/
@Data
@AutoMapper(target = CtrContractProgressSettlement.class, reverseConvertGenerate = false)
public class CtrContractProgressSettlementUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = -105855005415297131L;
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空")
private Long id;
/**
* 所属部门
*/
@NotNull(message = "所属部门不能为空")
private Long deptId;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空")
private String documentCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 结算日期
*/
@NotNull(message = "结算日期不能为空")
private LocalDate settlementDate;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空")
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
@NotNull(message = "审批金额不能为空")
private BigDecimal approvalAmount;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 结算单位(客户)
*/
private Long settlementUnit;
/**
* 本期结算金额
*/
private BigDecimal settlementMoney;
/**
* 本期扣款金额
*/
private BigDecimal deductionMoney;
/**
* 本期奖励金额
*/
private BigDecimal bonus;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal thisSettlementRatio;
/**
* 支付条款
*/
private Long paymentTerms;
/**
* 多文件逗号分隔
*/
private String fileId;
/**
* 备注
*/
private String remark;
/**
* 合同内清单
*/
private List<CtrContractProgressSettlementItemUpdateReq> inInventory;
/**
* 变更增加清单
*/
private List<CtrContractProgressSettlementItemUpdateReq> changeInventory;
/**
* 合同外清单
*/
private List<CtrContractProgressSettlementItemUpdateReq> outInventory;
}

View File

@ -0,0 +1,130 @@
package org.dromara.ctr.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* @author lilemy
* @date 2025-10-18 19:14
*/
@Data
@AutoMapper(target = CtrSubcontractProgressSettlement.class, reverseConvertGenerate = false)
public class CtrSubcontractProgressSettlementCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = 770553999547826460L;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空")
private String documentCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空")
private LocalDate documentDate;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空")
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
@NotNull(message = "审批金额不能为空")
private BigDecimal approvalAmount;
/**
* 结算单位
*/
private Long settlementUnit;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal currentSettlementRate;
/**
* 文件ID
*/
private String fileId;
/**
* 审核状态
*/
private String auditStatus;
/**
* 备注
*/
private String remark;
/**
* 合同内清单
*/
private List<CtrSubcontractProgressSettlementItemCreateReq> inInventory;
/**
* 变更增加清单
*/
private List<CtrSubcontractProgressSettlementItemCreateReq> changeInventory;
/**
* 合同外清单
*/
private List<CtrSubcontractProgressSettlementItemCreateReq> outInventory;
}

View File

@ -0,0 +1,115 @@
package org.dromara.ctr.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-10-18 19:17
*/
@Data
@AutoMapper(target = CtrSubcontractProgressSettlementItem.class, reverseConvertGenerate = false)
public class CtrSubcontractProgressSettlementItemCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7720839036718185218L;
/**
* 编码
*/
@NotBlank(message = "编码不能为空")
private String code;
/**
* 合同清单名称
*/
@NotBlank(message = "合同清单名称不能为空")
private String name;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空")
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 税额
*/
private String tax;
/**
* WBS工作分解结构
*/
private String wbs;
/**
* CBS成本分解结构
*/
private String cbs;
/**
* CBS预算总额
*/
private BigDecimal cbsBudgetTotal;
/**
* CBS余额
*/
private BigDecimal cbsBalance;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,123 @@
package org.dromara.ctr.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-10-18 19:21
*/
@Data
@AutoMapper(target = CtrSubcontractProgressSettlementItem.class, reverseConvertGenerate = false)
public class CtrSubcontractProgressSettlementItemUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = 4319471696029509036L;
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空")
private Long id;
/**
* 编码
*/
@NotBlank(message = "编码不能为空")
private String code;
/**
* 合同清单名称
*/
@NotBlank(message = "合同清单名称不能为空")
private String name;
/**
* 计量单位
*/
@NotBlank(message = "计量单位不能为空")
private String unit;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 含税单价
*/
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
private BigDecimal currentRate;
/**
* 本期结算金额
*/
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
private String taxRate;
/**
* 税额
*/
private String tax;
/**
* WBS工作分解结构
*/
private String wbs;
/**
* CBS成本分解结构
*/
private String cbs;
/**
* CBS预算总额
*/
private BigDecimal cbsBudgetTotal;
/**
* CBS余额
*/
private BigDecimal cbsBalance;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,136 @@
package org.dromara.ctr.domain.dto;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* @author lilemy
* @date 2025-10-18 19:20
*/
@Data
@AutoMapper(target = CtrSubcontractProgressSettlement.class, reverseConvertGenerate = false)
public class CtrSubcontractProgressSettlementUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7099475527833822253L;
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空")
private Long id;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空")
private String documentCode;
/**
* 标题
*/
@NotBlank(message = "标题不能为空")
private String title;
/**
* 单据日期
*/
@NotNull(message = "单据日期不能为空")
private LocalDate documentDate;
/**
* 合同编码
*/
@NotBlank(message = "合同编码不能为空")
private String contractCode;
/**
* 合同名称
*/
private String contractName;
/**
* 统计周期
*/
private String contractProgress;
/**
* 计量开始日期
*/
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
private LocalDate measureDateEnd;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 审批金额
*/
@NotNull(message = "审批金额不能为空")
private BigDecimal approvalAmount;
/**
* 结算单位
*/
private Long settlementUnit;
/**
* 合同金额
*/
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
private BigDecimal currentSettlementRate;
/**
* 文件ID
*/
private String fileId;
/**
* 审核状态
*/
private String auditStatus;
/**
* 备注
*/
private String remark;
/**
* 合同内清单
*/
private List<CtrSubcontractProgressSettlementItemUpdateReq> inInventory;
/**
* 变更增加清单
*/
private List<CtrSubcontractProgressSettlementItemUpdateReq> changeInventory;
/**
* 合同外清单
*/
private List<CtrSubcontractProgressSettlementItemUpdateReq> outInventory;
}

View File

@ -0,0 +1,130 @@
package org.dromara.ctr.domain.vo;
import java.math.BigDecimal;
import org.dromara.ctr.domain.CtrContractProgressSettlementItem;
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;
/**
* 承包合同进度结算清单视图对象 ctr_contract_progress_settlement_item
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CtrContractProgressSettlementItem.class)
public class CtrContractProgressSettlementItemVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 结算单ID
*/
@ExcelProperty(value = "结算单ID")
private Long settlementId;
/**
* 类型(1合同内清单 2变更增加清单 3合同外清单)
*/
@ExcelProperty(value = "类型(1合同内清单 2变更增加清单 3合同外清单)")
private String type;
/**
* 编码
*/
@ExcelProperty(value = "编码")
private String code;
/**
* 合同清单名称
*/
@ExcelProperty(value = "合同清单名称")
private String name;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String unit;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private BigDecimal unitPrice;
/**
* 含税单价
*/
@ExcelProperty(value = "含税单价")
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
@ExcelProperty(value = "本期结算数量")
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
@ExcelProperty(value = "本期结算百分比")
private BigDecimal currentRate;
/**
* 本期结算金额
*/
@ExcelProperty(value = "本期结算金额")
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
@ExcelProperty(value = "本期结算不含税金额")
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
@ExcelProperty(value = "本期审批数量")
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
@ExcelProperty(value = "本期审批金额")
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
@ExcelProperty(value = "税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_tax_rate")
private String taxRate;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,180 @@
package org.dromara.ctr.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 承包合同进度结算视图对象 ctr_contract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CtrContractProgressSettlement.class)
public class CtrContractProgressSettlementVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 所属部门
*/
@ExcelProperty(value = "所属部门")
private Long deptId;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String documentCode;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 结算日期
*/
@ExcelProperty(value = "结算日期")
private LocalDate settlementDate;
/**
* 合同编码
*/
@ExcelProperty(value = "合同编码")
private String contractCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 统计周期
*/
@ExcelProperty(value = "统计周期")
private String contractProgress;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
@Translation(type = TransConstant.PROJECT_ID_TO_NAME, mapper = "projectId")
private String projectName;
/**
* 审批金额
*/
@ExcelProperty(value = "审批金额")
private BigDecimal approvalAmount;
/**
* 计量开始日期
*/
@ExcelProperty(value = "计量开始日期")
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
@ExcelProperty(value = "计量结束日期")
private LocalDate measureDateEnd;
/**
* 结算单位(客户)
*/
@ExcelProperty(value = "结算单位(客户)")
private Long settlementUnit;
/**
* 本期结算金额
*/
@ExcelProperty(value = "本期结算金额")
private BigDecimal settlementMoney;
/**
* 本期扣款金额
*/
@ExcelProperty(value = "本期扣款金额")
private BigDecimal deductionMoney;
/**
* 本期奖励金额
*/
@ExcelProperty(value = "本期奖励金额")
private BigDecimal bonus;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额")
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
@ExcelProperty(value = "本次结算比例")
private BigDecimal thisSettlementRatio;
/**
* 支付条款
*/
@ExcelProperty(value = "支付条款")
private Long paymentTerms;
/**
* 多文件逗号分隔
*/
@ExcelProperty(value = "多文件逗号分隔")
private String fileId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 合同内清单
*/
private List<CtrContractProgressSettlementItemVo> inInventory;
/**
* 变更增加清单
*/
private List<CtrContractProgressSettlementItemVo> changeInventory;
/**
* 合同外清单
*/
private List<CtrContractProgressSettlementItemVo> outInventory;
}

View File

@ -0,0 +1,160 @@
package org.dromara.ctr.domain.vo;
import java.math.BigDecimal;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
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;
/**
* 分包合同进度结算清单视图对象 ctr_subcontract_progress_settlement_item
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CtrSubcontractProgressSettlementItem.class)
public class CtrSubcontractProgressSettlementItemVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 结算单ID
*/
@ExcelProperty(value = "结算单ID")
private Long settlementId;
/**
* 类型(1合同内清单 2变更增加清单 3合同外清单)
*/
@ExcelProperty(value = "类型(1合同内清单 2变更增加清单 3合同外清单)")
private String type;
/**
* 编码
*/
@ExcelProperty(value = "编码")
private String code;
/**
* 合同清单名称
*/
@ExcelProperty(value = "合同清单名称")
private String name;
/**
* 计量单位
*/
@ExcelProperty(value = "计量单位")
private String unit;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private BigDecimal unitPrice;
/**
* 含税单价
*/
@ExcelProperty(value = "含税单价")
private BigDecimal taxUnitPrice;
/**
* 本期结算数量
*/
@ExcelProperty(value = "本期结算数量")
private BigDecimal currentQty;
/**
* 本期结算百分比
*/
@ExcelProperty(value = "本期结算百分比")
private BigDecimal currentRate;
/**
* 本期结算金额
*/
@ExcelProperty(value = "本期结算金额")
private BigDecimal currentAmount;
/**
* 本期结算不含税金额
*/
@ExcelProperty(value = "本期结算不含税金额")
private BigDecimal currentNoAmount;
/**
* 本期审批数量
*/
@ExcelProperty(value = "本期审批数量")
private BigDecimal currentApprovedQty;
/**
* 本期审批金额
*/
@ExcelProperty(value = "本期审批金额")
private BigDecimal currentApprovedAmount;
/**
* 税率(%
*/
@ExcelProperty(value = "税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "xzd_tax_rate")
private String taxRate;
/**
* 税额
*/
@ExcelProperty(value = "税额")
private String tax;
/**
* WBS工作分解结构
*/
@ExcelProperty(value = "WBS工作分解结构")
private String wbs;
/**
* CBS成本分解结构
*/
@ExcelProperty(value = "CBS成本分解结构")
private String cbs;
/**
* CBS预算总额
*/
@ExcelProperty(value = "CBS预算总额")
private BigDecimal cbsBudgetTotal;
/**
* CBS余额
*/
@ExcelProperty(value = "CBS余额")
private BigDecimal cbsBalance;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,153 @@
package org.dromara.ctr.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 分包合同进度结算视图对象 ctr_subcontract_progress_settlement
*
* @author lilemy
* @date 2025-10-18
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = CtrSubcontractProgressSettlement.class)
public class CtrSubcontractProgressSettlementVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 单据编码
*/
@ExcelProperty(value = "单据编码")
private String documentCode;
/**
* 标题
*/
@ExcelProperty(value = "标题")
private String title;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate documentDate;
/**
* 合同编码
*/
@ExcelProperty(value = "合同编码")
private String contractCode;
/**
* 合同名称
*/
@ExcelProperty(value = "合同名称")
private String contractName;
/**
* 统计周期
*/
@ExcelProperty(value = "统计周期")
private String contractProgress;
/**
* 计量开始日期
*/
@ExcelProperty(value = "计量开始日期")
private LocalDate measureDateBegin;
/**
* 计量结束日期
*/
@ExcelProperty(value = "计量结束日期")
private LocalDate measureDateEnd;
/**
* 项目ID
*/
@ExcelProperty(value = "项目ID")
private Long projectId;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称")
private String projectName;
/**
* 审批金额
*/
@ExcelProperty(value = "审批金额")
private BigDecimal approvalAmount;
/**
* 结算单位
*/
@ExcelProperty(value = "结算单位")
private Long settlementUnit;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额")
private BigDecimal contractAmount;
/**
* 本次结算比例
*/
@ExcelProperty(value = "本次结算比例")
private BigDecimal currentSettlementRate;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 审核状态
*/
@ExcelProperty(value = "审核状态")
private String auditStatus;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 合同内清单
*/
private List<CtrSubcontractProgressSettlementItemVo> inInventory;
/**
* 变更增加清单
*/
private List<CtrSubcontractProgressSettlementItemVo> changeInventory;
/**
* 合同外清单
*/
private List<CtrSubcontractProgressSettlementItemVo> outInventory;
}

View File

@ -0,0 +1,15 @@
package org.dromara.ctr.mapper;
import org.dromara.ctr.domain.CtrContractProgressSettlementItem;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 承包合同进度结算清单Mapper接口
*
* @author lilemy
* @date 2025-10-18
*/
public interface CtrContractProgressSettlementItemMapper extends BaseMapperPlus<CtrContractProgressSettlementItem, CtrContractProgressSettlementItemVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.ctr.mapper;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 承包合同进度结算Mapper接口
*
* @author lilemy
* @date 2025-10-18
*/
public interface CtrContractProgressSettlementMapper extends BaseMapperPlus<CtrContractProgressSettlement, CtrContractProgressSettlementVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.ctr.mapper;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 分包合同进度结算清单Mapper接口
*
* @author lilemy
* @date 2025-10-18
*/
public interface CtrSubcontractProgressSettlementItemMapper extends BaseMapperPlus<CtrSubcontractProgressSettlementItem, CtrSubcontractProgressSettlementItemVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.ctr.mapper;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 分包合同进度结算Mapper接口
*
* @author lilemy
* @date 2025-10-18
*/
public interface CtrSubcontractProgressSettlementMapper extends BaseMapperPlus<CtrSubcontractProgressSettlement, CtrSubcontractProgressSettlementVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.ctr.service;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementItemBo;
import org.dromara.ctr.domain.CtrContractProgressSettlementItem;
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 lilemy
* @date 2025-10-18
*/
public interface ICtrContractProgressSettlementItemService extends IService<CtrContractProgressSettlementItem>{
/**
* 查询承包合同进度结算清单
*
* @param id 主键
* @return 承包合同进度结算清单
*/
CtrContractProgressSettlementItemVo queryById(Long id);
/**
* 分页查询承包合同进度结算清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 承包合同进度结算清单分页列表
*/
TableDataInfo<CtrContractProgressSettlementItemVo> queryPageList(CtrContractProgressSettlementItemBo bo, PageQuery pageQuery);
/**
* 查询符合条件的承包合同进度结算清单列表
*
* @param bo 查询条件
* @return 承包合同进度结算清单列表
*/
List<CtrContractProgressSettlementItemVo> queryList(CtrContractProgressSettlementItemBo bo);
/**
* 新增承包合同进度结算清单
*
* @param bo 承包合同进度结算清单
* @return 是否新增成功
*/
Boolean insertByBo(CtrContractProgressSettlementItemBo bo);
/**
* 修改承包合同进度结算清单
*
* @param bo 承包合同进度结算清单
* @return 是否修改成功
*/
Boolean updateByBo(CtrContractProgressSettlementItemBo bo);
/**
* 校验并批量删除承包合同进度结算清单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,72 @@
package org.dromara.ctr.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import java.util.Collection;
import java.util.List;
/**
* 承包合同进度结算Service接口
*
* @author lilemy
* @date 2025-10-18
*/
public interface ICtrContractProgressSettlementService extends IService<CtrContractProgressSettlement> {
/**
* 查询承包合同进度结算
*
* @param id 主键
* @return 承包合同进度结算
*/
CtrContractProgressSettlementVo queryById(Long id);
/**
* 分页查询承包合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 承包合同进度结算分页列表
*/
TableDataInfo<CtrContractProgressSettlementVo> queryPageList(CtrContractProgressSettlementBo bo, PageQuery pageQuery);
/**
* 查询符合条件的承包合同进度结算列表
*
* @param bo 查询条件
* @return 承包合同进度结算列表
*/
List<CtrContractProgressSettlementVo> queryList(CtrContractProgressSettlementBo bo);
/**
* 新增承包合同进度结算
*
* @param req 承包合同进度结算
* @return 是否新增成功
*/
Boolean insertByBo(CtrContractProgressSettlementCreateReq req);
/**
* 修改承包合同进度结算
*
* @param req 承包合同进度结算
* @return 是否修改成功
*/
Boolean updateByBo(CtrContractProgressSettlementUpdateReq req);
/**
* 校验并批量删除承包合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,70 @@
package org.dromara.ctr.service;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo;
import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementItemBo;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
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 lilemy
* @date 2025-10-18
*/
public interface ICtrSubcontractProgressSettlementItemService extends IService<CtrSubcontractProgressSettlementItem>{
/**
* 查询分包合同进度结算清单
*
* @param id 主键
* @return 分包合同进度结算清单
*/
CtrSubcontractProgressSettlementItemVo queryById(Long id);
/**
* 分页查询分包合同进度结算清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 分包合同进度结算清单分页列表
*/
TableDataInfo<CtrSubcontractProgressSettlementItemVo> queryPageList(CtrSubcontractProgressSettlementItemBo bo, PageQuery pageQuery);
/**
* 查询符合条件的分包合同进度结算清单列表
*
* @param bo 查询条件
* @return 分包合同进度结算清单列表
*/
List<CtrSubcontractProgressSettlementItemVo> queryList(CtrSubcontractProgressSettlementItemBo bo);
/**
* 新增分包合同进度结算清单
*
* @param bo 分包合同进度结算清单
* @return 是否新增成功
*/
Boolean insertByBo(CtrSubcontractProgressSettlementItemBo bo);
/**
* 修改分包合同进度结算清单
*
* @param bo 分包合同进度结算清单
* @return 是否修改成功
*/
Boolean updateByBo(CtrSubcontractProgressSettlementItemBo bo);
/**
* 校验并批量删除分包合同进度结算清单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,72 @@
package org.dromara.ctr.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo;
import java.util.Collection;
import java.util.List;
/**
* 分包合同进度结算Service接口
*
* @author lilemy
* @date 2025-10-18
*/
public interface ICtrSubcontractProgressSettlementService extends IService<CtrSubcontractProgressSettlement> {
/**
* 查询分包合同进度结算
*
* @param id 主键
* @return 分包合同进度结算
*/
CtrSubcontractProgressSettlementVo queryById(Long id);
/**
* 分页查询分包合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 分包合同进度结算分页列表
*/
TableDataInfo<CtrSubcontractProgressSettlementVo> queryPageList(CtrSubcontractProgressSettlementBo bo, PageQuery pageQuery);
/**
* 查询符合条件的分包合同进度结算列表
*
* @param bo 查询条件
* @return 分包合同进度结算列表
*/
List<CtrSubcontractProgressSettlementVo> queryList(CtrSubcontractProgressSettlementBo bo);
/**
* 新增分包合同进度结算
*
* @param req 分包合同进度结算
* @return 是否新增成功
*/
Boolean insertByBo(CtrSubcontractProgressSettlementCreateReq req);
/**
* 修改分包合同进度结算
*
* @param req 分包合同进度结算
* @return 是否修改成功
*/
Boolean updateByBo(CtrSubcontractProgressSettlementUpdateReq req);
/**
* 校验并批量删除分包合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -0,0 +1,142 @@
package org.dromara.ctr.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.ctr.domain.bo.CtrContractProgressSettlementItemBo;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo;
import org.dromara.ctr.domain.CtrContractProgressSettlementItem;
import org.dromara.ctr.mapper.CtrContractProgressSettlementItemMapper;
import org.dromara.ctr.service.ICtrContractProgressSettlementItemService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 承包合同进度结算清单Service业务层处理
*
* @author lilemy
* @date 2025-10-18
*/
@RequiredArgsConstructor
@Service
public class CtrContractProgressSettlementItemServiceImpl extends ServiceImpl<CtrContractProgressSettlementItemMapper, CtrContractProgressSettlementItem> implements ICtrContractProgressSettlementItemService {
/**
* 查询承包合同进度结算清单
*
* @param id 主键
* @return 承包合同进度结算清单
*/
@Override
public CtrContractProgressSettlementItemVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询承包合同进度结算清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 承包合同进度结算清单分页列表
*/
@Override
public TableDataInfo<CtrContractProgressSettlementItemVo> queryPageList(CtrContractProgressSettlementItemBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CtrContractProgressSettlementItem> lqw = buildQueryWrapper(bo);
Page<CtrContractProgressSettlementItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的承包合同进度结算清单列表
*
* @param bo 查询条件
* @return 承包合同进度结算清单列表
*/
@Override
public List<CtrContractProgressSettlementItemVo> queryList(CtrContractProgressSettlementItemBo bo) {
LambdaQueryWrapper<CtrContractProgressSettlementItem> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<CtrContractProgressSettlementItem> buildQueryWrapper(CtrContractProgressSettlementItemBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CtrContractProgressSettlementItem> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(CtrContractProgressSettlementItem::getId);
lqw.eq(bo.getSettlementId() != null, CtrContractProgressSettlementItem::getSettlementId, bo.getSettlementId());
lqw.eq(StringUtils.isNotBlank(bo.getType()), CtrContractProgressSettlementItem::getType, bo.getType());
lqw.eq(StringUtils.isNotBlank(bo.getCode()), CtrContractProgressSettlementItem::getCode, bo.getCode());
lqw.like(StringUtils.isNotBlank(bo.getName()), CtrContractProgressSettlementItem::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CtrContractProgressSettlementItem::getUnit, bo.getUnit());
lqw.eq(bo.getUnitPrice() != null, CtrContractProgressSettlementItem::getUnitPrice, bo.getUnitPrice());
lqw.eq(bo.getTaxUnitPrice() != null, CtrContractProgressSettlementItem::getTaxUnitPrice, bo.getTaxUnitPrice());
lqw.eq(bo.getCurrentQty() != null, CtrContractProgressSettlementItem::getCurrentQty, bo.getCurrentQty());
lqw.eq(bo.getCurrentRate() != null, CtrContractProgressSettlementItem::getCurrentRate, bo.getCurrentRate());
lqw.eq(bo.getCurrentAmount() != null, CtrContractProgressSettlementItem::getCurrentAmount, bo.getCurrentAmount());
lqw.eq(bo.getCurrentNoAmount() != null, CtrContractProgressSettlementItem::getCurrentNoAmount, bo.getCurrentNoAmount());
lqw.eq(bo.getCurrentApprovedQty() != null, CtrContractProgressSettlementItem::getCurrentApprovedQty, bo.getCurrentApprovedQty());
lqw.eq(bo.getCurrentApprovedAmount() != null, CtrContractProgressSettlementItem::getCurrentApprovedAmount, bo.getCurrentApprovedAmount());
lqw.eq(StringUtils.isNotBlank(bo.getTaxRate()), CtrContractProgressSettlementItem::getTaxRate, bo.getTaxRate());
return lqw;
}
/**
* 新增承包合同进度结算清单
*
* @param bo 承包合同进度结算清单
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(CtrContractProgressSettlementItemBo bo) {
CtrContractProgressSettlementItem add = MapstructUtils.convert(bo, CtrContractProgressSettlementItem.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改承包合同进度结算清单
*
* @param bo 承包合同进度结算清单
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(CtrContractProgressSettlementItemBo bo) {
CtrContractProgressSettlementItem update = MapstructUtils.convert(bo, CtrContractProgressSettlementItem.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(CtrContractProgressSettlementItem entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除承包合同进度结算清单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,269 @@
package org.dromara.ctr.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
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.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.ctr.domain.CtrContractProgressSettlement;
import org.dromara.ctr.domain.CtrContractProgressSettlementItem;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemUpdateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import org.dromara.ctr.mapper.CtrContractProgressSettlementMapper;
import org.dromara.ctr.service.ICtrContractProgressSettlementItemService;
import org.dromara.ctr.service.ICtrContractProgressSettlementService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 承包合同进度结算Service业务层处理
*
* @author lilemy
* @date 2025-10-18
*/
@RequiredArgsConstructor
@Service
public class CtrContractProgressSettlementServiceImpl extends ServiceImpl<CtrContractProgressSettlementMapper, CtrContractProgressSettlement>
implements ICtrContractProgressSettlementService {
private final ICtrContractProgressSettlementItemService contractProgressSettlementItemService;
/**
* 查询承包合同进度结算
*
* @param id 主键
* @return 承包合同进度结算
*/
@Override
public CtrContractProgressSettlementVo queryById(Long id) {
CtrContractProgressSettlementVo vo = baseMapper.selectVoById(id);
List<CtrContractProgressSettlementItem> list = contractProgressSettlementItemService.lambdaQuery()
.eq(CtrContractProgressSettlementItem::getSettlementId, id)
.list();
if (CollUtil.isNotEmpty(list)) {
List<CtrContractProgressSettlementItemVo> listVo = list.stream().map(item ->
MapstructUtils.convert(item, CtrContractProgressSettlementItemVo.class))
.toList();
Map<String, List<CtrContractProgressSettlementItemVo>> map = listVo.stream()
.collect(Collectors.groupingBy(CtrContractProgressSettlementItemVo::getType));
vo.setInInventory(map.getOrDefault("1", new ArrayList<>()));
vo.setChangeInventory(map.getOrDefault("2", new ArrayList<>()));
vo.setOutInventory(map.getOrDefault("3", new ArrayList<>()));
}
return vo;
}
/**
* 分页查询承包合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 承包合同进度结算分页列表
*/
@Override
public TableDataInfo<CtrContractProgressSettlementVo> queryPageList(CtrContractProgressSettlementBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CtrContractProgressSettlement> lqw = buildQueryWrapper(bo);
Page<CtrContractProgressSettlementVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的承包合同进度结算列表
*
* @param bo 查询条件
* @return 承包合同进度结算列表
*/
@Override
public List<CtrContractProgressSettlementVo> queryList(CtrContractProgressSettlementBo bo) {
LambdaQueryWrapper<CtrContractProgressSettlement> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<CtrContractProgressSettlement> buildQueryWrapper(CtrContractProgressSettlementBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CtrContractProgressSettlement> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(CtrContractProgressSettlement::getId);
lqw.eq(bo.getDeptId() != null, CtrContractProgressSettlement::getDeptId, bo.getDeptId());
lqw.like(StringUtils.isNotBlank(bo.getDocumentCode()), CtrContractProgressSettlement::getDocumentCode, bo.getDocumentCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), CtrContractProgressSettlement::getTitle, bo.getTitle());
lqw.eq(bo.getSettlementDate() != null, CtrContractProgressSettlement::getSettlementDate, bo.getSettlementDate());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), CtrContractProgressSettlement::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), CtrContractProgressSettlement::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractProgress()), CtrContractProgressSettlement::getContractProgress, bo.getContractProgress());
lqw.eq(bo.getProjectId() != null, CtrContractProgressSettlement::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), CtrContractProgressSettlement::getProjectName, bo.getProjectName());
lqw.eq(bo.getApprovalAmount() != null, CtrContractProgressSettlement::getApprovalAmount, bo.getApprovalAmount());
lqw.eq(bo.getMeasureDateBegin() != null, CtrContractProgressSettlement::getMeasureDateBegin, bo.getMeasureDateBegin());
lqw.eq(bo.getMeasureDateEnd() != null, CtrContractProgressSettlement::getMeasureDateEnd, bo.getMeasureDateEnd());
lqw.eq(bo.getSettlementUnit() != null, CtrContractProgressSettlement::getSettlementUnit, bo.getSettlementUnit());
lqw.eq(bo.getSettlementMoney() != null, CtrContractProgressSettlement::getSettlementMoney, bo.getSettlementMoney());
lqw.eq(bo.getDeductionMoney() != null, CtrContractProgressSettlement::getDeductionMoney, bo.getDeductionMoney());
lqw.eq(bo.getBonus() != null, CtrContractProgressSettlement::getBonus, bo.getBonus());
lqw.eq(bo.getContractAmount() != null, CtrContractProgressSettlement::getContractAmount, bo.getContractAmount());
lqw.eq(bo.getThisSettlementRatio() != null, CtrContractProgressSettlement::getThisSettlementRatio, bo.getThisSettlementRatio());
lqw.eq(bo.getPaymentTerms() != null, CtrContractProgressSettlement::getPaymentTerms, bo.getPaymentTerms());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), CtrContractProgressSettlement::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增承包合同进度结算
*
* @param req 承包合同进度结算
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(CtrContractProgressSettlementCreateReq req) {
CtrContractProgressSettlement add = MapstructUtils.convert(req, CtrContractProgressSettlement.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
Long id = add.getId();
List<CtrContractProgressSettlementItemCreateReq> inInventory = req.getInInventory();
List<CtrContractProgressSettlementItemCreateReq> changeInventory = req.getChangeInventory();
List<CtrContractProgressSettlementItemCreateReq> outInventory = req.getOutInventory();
List<CtrContractProgressSettlementItem> itemList = new ArrayList<>();
itemList.addAll(inInventory.stream().map(r -> {
CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem();
item.setSettlementId(id);
item.setType("1");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(changeInventory.stream().map(r -> {
CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem();
item.setSettlementId(id);
item.setType("2");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(outInventory.stream().map(r -> {
CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem();
item.setSettlementId(id);
item.setType("3");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
if (CollUtil.isNotEmpty(itemList)) {
boolean saveBatch = contractProgressSettlementItemService.saveBatch(itemList);
if (!saveBatch) {
throw new ServiceException("保存承包合同进度结算明细失败");
}
}
}
return flag;
}
/**
* 修改承包合同进度结算
*
* @param req 承包合同进度结算
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(CtrContractProgressSettlementUpdateReq req) {
CtrContractProgressSettlement update = MapstructUtils.convert(req, CtrContractProgressSettlement.class);
validEntityBeforeSave(update);
Long id = req.getId();
// 删除旧数据
List<CtrContractProgressSettlementItem> oldList = contractProgressSettlementItemService.lambdaQuery()
.eq(CtrContractProgressSettlementItem::getSettlementId, id)
.list();
if (CollUtil.isNotEmpty(oldList)) {
boolean deleteBatch = contractProgressSettlementItemService.removeByIds(oldList);
if (!deleteBatch) {
throw new ServiceException("删除承包合同进度结算明细失败");
}
}
// 新增子数据
List<CtrContractProgressSettlementItemUpdateReq> inInventory = req.getInInventory();
List<CtrContractProgressSettlementItemUpdateReq> changeInventory = req.getChangeInventory();
List<CtrContractProgressSettlementItemUpdateReq> outInventory = req.getOutInventory();
List<CtrContractProgressSettlementItem> itemList = new ArrayList<>();
itemList.addAll(inInventory.stream().map(r -> {
CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem();
item.setSettlementId(id);
item.setType("1");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(changeInventory.stream().map(r -> {
CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem();
item.setSettlementId(id);
item.setType("2");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(outInventory.stream().map(r -> {
CtrContractProgressSettlementItem item = new CtrContractProgressSettlementItem();
item.setSettlementId(id);
item.setType("3");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
if (CollUtil.isNotEmpty(itemList)) {
boolean saveBatch = contractProgressSettlementItemService.saveBatch(itemList);
if (!saveBatch) {
throw new ServiceException("保存承包合同进度结算明细失败");
}
}
// 保存主数据
boolean b = baseMapper.updateById(update) > 0;
if (!b) {
throw new ServiceException("修改承包合同进度结算失败");
}
return true;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(CtrContractProgressSettlement entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除承包合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
// 删除关联数据
List<CtrContractProgressSettlementItem> list = contractProgressSettlementItemService.lambdaQuery()
.in(CtrContractProgressSettlementItem::getSettlementId, ids)
.list();
if (CollUtil.isNotEmpty(list)) {
boolean deleteBatch = contractProgressSettlementItemService.removeByIds(list);
if (!deleteBatch) {
throw new ServiceException("删除承包合同进度结算明细失败");
}
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,150 @@
package org.dromara.ctr.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementItemBo;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo;
import org.dromara.ctr.mapper.CtrSubcontractProgressSettlementItemMapper;
import org.dromara.ctr.service.ICtrSubcontractProgressSettlementItemService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* 分包合同进度结算清单Service业务层处理
*
* @author lilemy
* @date 2025-10-18
*/
@RequiredArgsConstructor
@Service
public class CtrSubcontractProgressSettlementItemServiceImpl extends ServiceImpl<CtrSubcontractProgressSettlementItemMapper, CtrSubcontractProgressSettlementItem>
implements ICtrSubcontractProgressSettlementItemService {
private final CtrSubcontractProgressSettlementItemMapper baseMapper;
/**
* 查询分包合同进度结算清单
*
* @param id 主键
* @return 分包合同进度结算清单
*/
@Override
public CtrSubcontractProgressSettlementItemVo queryById(Long id) {
return baseMapper.selectVoById(id);
}
/**
* 分页查询分包合同进度结算清单列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 分包合同进度结算清单分页列表
*/
@Override
public TableDataInfo<CtrSubcontractProgressSettlementItemVo> queryPageList(CtrSubcontractProgressSettlementItemBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CtrSubcontractProgressSettlementItem> lqw = buildQueryWrapper(bo);
Page<CtrSubcontractProgressSettlementItemVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的分包合同进度结算清单列表
*
* @param bo 查询条件
* @return 分包合同进度结算清单列表
*/
@Override
public List<CtrSubcontractProgressSettlementItemVo> queryList(CtrSubcontractProgressSettlementItemBo bo) {
LambdaQueryWrapper<CtrSubcontractProgressSettlementItem> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<CtrSubcontractProgressSettlementItem> buildQueryWrapper(CtrSubcontractProgressSettlementItemBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CtrSubcontractProgressSettlementItem> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(CtrSubcontractProgressSettlementItem::getId);
lqw.eq(bo.getSettlementId() != null, CtrSubcontractProgressSettlementItem::getSettlementId, bo.getSettlementId());
lqw.eq(StringUtils.isNotBlank(bo.getType()), CtrSubcontractProgressSettlementItem::getType, bo.getType());
lqw.eq(StringUtils.isNotBlank(bo.getCode()), CtrSubcontractProgressSettlementItem::getCode, bo.getCode());
lqw.like(StringUtils.isNotBlank(bo.getName()), CtrSubcontractProgressSettlementItem::getName, bo.getName());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), CtrSubcontractProgressSettlementItem::getUnit, bo.getUnit());
lqw.eq(bo.getUnitPrice() != null, CtrSubcontractProgressSettlementItem::getUnitPrice, bo.getUnitPrice());
lqw.eq(bo.getTaxUnitPrice() != null, CtrSubcontractProgressSettlementItem::getTaxUnitPrice, bo.getTaxUnitPrice());
lqw.eq(bo.getCurrentQty() != null, CtrSubcontractProgressSettlementItem::getCurrentQty, bo.getCurrentQty());
lqw.eq(bo.getCurrentRate() != null, CtrSubcontractProgressSettlementItem::getCurrentRate, bo.getCurrentRate());
lqw.eq(bo.getCurrentAmount() != null, CtrSubcontractProgressSettlementItem::getCurrentAmount, bo.getCurrentAmount());
lqw.eq(bo.getCurrentNoAmount() != null, CtrSubcontractProgressSettlementItem::getCurrentNoAmount, bo.getCurrentNoAmount());
lqw.eq(bo.getCurrentApprovedQty() != null, CtrSubcontractProgressSettlementItem::getCurrentApprovedQty, bo.getCurrentApprovedQty());
lqw.eq(bo.getCurrentApprovedAmount() != null, CtrSubcontractProgressSettlementItem::getCurrentApprovedAmount, bo.getCurrentApprovedAmount());
lqw.eq(StringUtils.isNotBlank(bo.getTaxRate()), CtrSubcontractProgressSettlementItem::getTaxRate, bo.getTaxRate());
lqw.eq(StringUtils.isNotBlank(bo.getTax()), CtrSubcontractProgressSettlementItem::getTax, bo.getTax());
lqw.eq(StringUtils.isNotBlank(bo.getWbs()), CtrSubcontractProgressSettlementItem::getWbs, bo.getWbs());
lqw.eq(StringUtils.isNotBlank(bo.getCbs()), CtrSubcontractProgressSettlementItem::getCbs, bo.getCbs());
lqw.eq(bo.getCbsBudgetTotal() != null, CtrSubcontractProgressSettlementItem::getCbsBudgetTotal, bo.getCbsBudgetTotal());
lqw.eq(bo.getCbsBalance() != null, CtrSubcontractProgressSettlementItem::getCbsBalance, bo.getCbsBalance());
return lqw;
}
/**
* 新增分包合同进度结算清单
*
* @param bo 分包合同进度结算清单
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(CtrSubcontractProgressSettlementItemBo bo) {
CtrSubcontractProgressSettlementItem add = MapstructUtils.convert(bo, CtrSubcontractProgressSettlementItem.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改分包合同进度结算清单
*
* @param bo 分包合同进度结算清单
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(CtrSubcontractProgressSettlementItemBo bo) {
CtrSubcontractProgressSettlementItem update = MapstructUtils.convert(bo, CtrSubcontractProgressSettlementItem.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(CtrSubcontractProgressSettlementItem entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除分包合同进度结算清单信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -0,0 +1,262 @@
package org.dromara.ctr.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
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.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlement;
import org.dromara.ctr.domain.CtrSubcontractProgressSettlementItem;
import org.dromara.ctr.domain.bo.CtrSubcontractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementItemCreateReq;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementItemUpdateReq;
import org.dromara.ctr.domain.dto.CtrSubcontractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementItemVo;
import org.dromara.ctr.domain.vo.CtrSubcontractProgressSettlementVo;
import org.dromara.ctr.mapper.CtrSubcontractProgressSettlementMapper;
import org.dromara.ctr.service.ICtrSubcontractProgressSettlementItemService;
import org.dromara.ctr.service.ICtrSubcontractProgressSettlementService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 分包合同进度结算Service业务层处理
*
* @author lilemy
* @date 2025-10-18
*/
@RequiredArgsConstructor
@Service
public class CtrSubcontractProgressSettlementServiceImpl extends ServiceImpl<CtrSubcontractProgressSettlementMapper, CtrSubcontractProgressSettlement>
implements ICtrSubcontractProgressSettlementService {
private final ICtrSubcontractProgressSettlementItemService subcontractProgressSettlementItemService;
/**
* 查询分包合同进度结算
*
* @param id 主键
* @return 分包合同进度结算
*/
@Override
public CtrSubcontractProgressSettlementVo queryById(Long id) {
CtrSubcontractProgressSettlementVo vo = baseMapper.selectVoById(id);
List<CtrSubcontractProgressSettlementItem> list = subcontractProgressSettlementItemService.lambdaQuery()
.eq(CtrSubcontractProgressSettlementItem::getSettlementId, id)
.list();
if (CollUtil.isNotEmpty(list)) {
List<CtrSubcontractProgressSettlementItemVo> listVo = list.stream().map(item ->
MapstructUtils.convert(item, CtrSubcontractProgressSettlementItemVo.class))
.toList();
Map<String, List<CtrSubcontractProgressSettlementItemVo>> map = listVo.stream()
.collect(Collectors.groupingBy(CtrSubcontractProgressSettlementItemVo::getType));
vo.setInInventory(map.getOrDefault("1", new ArrayList<>()));
vo.setChangeInventory(map.getOrDefault("2", new ArrayList<>()));
vo.setOutInventory(map.getOrDefault("3", new ArrayList<>()));
}
return vo;
}
/**
* 分页查询分包合同进度结算列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 分包合同进度结算分页列表
*/
@Override
public TableDataInfo<CtrSubcontractProgressSettlementVo> queryPageList(CtrSubcontractProgressSettlementBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CtrSubcontractProgressSettlement> lqw = buildQueryWrapper(bo);
Page<CtrSubcontractProgressSettlementVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的分包合同进度结算列表
*
* @param bo 查询条件
* @return 分包合同进度结算列表
*/
@Override
public List<CtrSubcontractProgressSettlementVo> queryList(CtrSubcontractProgressSettlementBo bo) {
LambdaQueryWrapper<CtrSubcontractProgressSettlement> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<CtrSubcontractProgressSettlement> buildQueryWrapper(CtrSubcontractProgressSettlementBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CtrSubcontractProgressSettlement> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(CtrSubcontractProgressSettlement::getId);
lqw.like(StringUtils.isNotBlank(bo.getDocumentCode()), CtrSubcontractProgressSettlement::getDocumentCode, bo.getDocumentCode());
lqw.eq(StringUtils.isNotBlank(bo.getTitle()), CtrSubcontractProgressSettlement::getTitle, bo.getTitle());
lqw.eq(bo.getDocumentDate() != null, CtrSubcontractProgressSettlement::getDocumentDate, bo.getDocumentDate());
lqw.eq(StringUtils.isNotBlank(bo.getContractCode()), CtrSubcontractProgressSettlement::getContractCode, bo.getContractCode());
lqw.like(StringUtils.isNotBlank(bo.getContractName()), CtrSubcontractProgressSettlement::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractProgress()), CtrSubcontractProgressSettlement::getContractProgress, bo.getContractProgress());
lqw.eq(bo.getMeasureDateBegin() != null, CtrSubcontractProgressSettlement::getMeasureDateBegin, bo.getMeasureDateBegin());
lqw.eq(bo.getMeasureDateEnd() != null, CtrSubcontractProgressSettlement::getMeasureDateEnd, bo.getMeasureDateEnd());
lqw.eq(bo.getProjectId() != null, CtrSubcontractProgressSettlement::getProjectId, bo.getProjectId());
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), CtrSubcontractProgressSettlement::getProjectName, bo.getProjectName());
lqw.eq(bo.getApprovalAmount() != null, CtrSubcontractProgressSettlement::getApprovalAmount, bo.getApprovalAmount());
lqw.eq(bo.getSettlementUnit() != null, CtrSubcontractProgressSettlement::getSettlementUnit, bo.getSettlementUnit());
lqw.eq(bo.getContractAmount() != null, CtrSubcontractProgressSettlement::getContractAmount, bo.getContractAmount());
lqw.eq(bo.getCurrentSettlementRate() != null, CtrSubcontractProgressSettlement::getCurrentSettlementRate, bo.getCurrentSettlementRate());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), CtrSubcontractProgressSettlement::getFileId, bo.getFileId());
lqw.eq(StringUtils.isNotBlank(bo.getAuditStatus()), CtrSubcontractProgressSettlement::getAuditStatus, bo.getAuditStatus());
return lqw;
}
/**
* 新增分包合同进度结算
*
* @param req 分包合同进度结算
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(CtrSubcontractProgressSettlementCreateReq req) {
CtrSubcontractProgressSettlement add = MapstructUtils.convert(req, CtrSubcontractProgressSettlement.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
Long id = add.getId();
List<CtrSubcontractProgressSettlementItemCreateReq> inInventory = req.getInInventory();
List<CtrSubcontractProgressSettlementItemCreateReq> changeInventory = req.getChangeInventory();
List<CtrSubcontractProgressSettlementItemCreateReq> outInventory = req.getOutInventory();
List<CtrSubcontractProgressSettlementItem> itemList = new ArrayList<>();
itemList.addAll(inInventory.stream().map(r -> {
CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem();
item.setSettlementId(id);
item.setType("1");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(changeInventory.stream().map(r -> {
CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem();
item.setSettlementId(id);
item.setType("2");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(outInventory.stream().map(r -> {
CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem();
item.setSettlementId(id);
item.setType("3");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
if (CollUtil.isNotEmpty(itemList)) {
boolean saveBatch = subcontractProgressSettlementItemService.saveBatch(itemList);
if (!saveBatch) {
throw new ServiceException("保存分包合同进度结算明细失败");
}
}
}
return flag;
}
/**
* 修改分包合同进度结算
*
* @param req 分包合同进度结算
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(CtrSubcontractProgressSettlementUpdateReq req) {
CtrSubcontractProgressSettlement update = MapstructUtils.convert(req, CtrSubcontractProgressSettlement.class);
validEntityBeforeSave(update);
Long id = req.getId();
// 删除旧数据
List<CtrSubcontractProgressSettlementItem> oldList = subcontractProgressSettlementItemService.lambdaQuery()
.eq(CtrSubcontractProgressSettlementItem::getSettlementId, id)
.list();
if (CollUtil.isNotEmpty(oldList)) {
boolean deleteBatch = subcontractProgressSettlementItemService.removeByIds(oldList);
if (!deleteBatch) {
throw new ServiceException("删除分包合同进度结算明细失败");
}
}
// 新增子数据
List<CtrSubcontractProgressSettlementItemUpdateReq> inInventory = req.getInInventory();
List<CtrSubcontractProgressSettlementItemUpdateReq> changeInventory = req.getChangeInventory();
List<CtrSubcontractProgressSettlementItemUpdateReq> outInventory = req.getOutInventory();
List<CtrSubcontractProgressSettlementItem> itemList = new ArrayList<>();
itemList.addAll(inInventory.stream().map(r -> {
CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem();
item.setSettlementId(id);
item.setType("1");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(changeInventory.stream().map(r -> {
CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem();
item.setSettlementId(id);
item.setType("2");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
itemList.addAll(outInventory.stream().map(r -> {
CtrSubcontractProgressSettlementItem item = new CtrSubcontractProgressSettlementItem();
item.setSettlementId(id);
item.setType("3");
BeanUtils.copyProperties(r, item);
return item;
}).toList());
if (CollUtil.isNotEmpty(itemList)) {
boolean saveBatch = subcontractProgressSettlementItemService.saveBatch(itemList);
if (!saveBatch) {
throw new ServiceException("保存承包合同进度结算明细失败");
}
}
// 保存主数据
boolean b = baseMapper.updateById(update) > 0;
if (!b) {
throw new ServiceException("修改分包合同进度结算失败");
}
return true;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(CtrSubcontractProgressSettlement entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除分包合同进度结算信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
// 删除关联数据
List<CtrSubcontractProgressSettlementItem> list = subcontractProgressSettlementItemService.lambdaQuery()
.in(CtrSubcontractProgressSettlementItem::getSettlementId, ids)
.list();
if (CollUtil.isNotEmpty(list)) {
boolean deleteBatch = subcontractProgressSettlementItemService.removeByIds(list);
if (!deleteBatch) {
throw new ServiceException("删除分包合同进度结算明细失败");
}
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -152,4 +152,9 @@ public class BusProjectUpdateReq implements Serializable {
*/
private String position;
/**
* 所属部门列表
*/
private List<Long> deptIds;
}

View File

@ -8,7 +8,6 @@ import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.project.domain.BusProject;
import org.dromara.project.domain.bo.Punchrange;
import org.dromara.system.domain.vo.SysDeptVo;
import java.io.Serial;
import java.io.Serializable;
@ -214,8 +213,8 @@ public class BusProjectVo implements Serializable {
private String position;
/**
* 所属部门
* 所属部门列表
*/
private List<SysDeptVo> deptList;
private List<Long> deptIds;
}

View File

@ -562,6 +562,43 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
throw new ServiceException("打卡范围增加失败", HttpStatus.ERROR);
}
}
List<Long> deptIds = req.getDeptIds();
// 根据项目查询部门
List<Long> oldDeptIds = projectDeptService.lambdaQuery()
.eq(BusProjectDept::getProjectId, project.getId())
.list()
.stream().map(BusProjectDept::getDeptId)
.toList();
if (CollUtil.isEmpty(deptIds) && CollUtil.isEmpty(oldDeptIds)) {
return true;
} else if (CollUtil.isEmpty(deptIds) && CollUtil.isNotEmpty(oldDeptIds)) {
//删除所有旧部门
boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class)
.eq(BusProjectDept::getProjectId, project.getId()));
if (!remove) {
throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
}
} else if (CollUtil.isNotEmpty(deptIds)) {
if (CollUtil.isNotEmpty(oldDeptIds)) {
//删除所有旧部门
boolean remove = projectDeptService.remove(Wrappers.lambdaQuery(BusProjectDept.class)
.eq(BusProjectDept::getProjectId, project.getId()));
if (!remove) {
throw new ServiceException("删除项目部门失败", HttpStatus.ERROR);
}
}
//新增部门
List<BusProjectDept> busProjectDepts = deptIds.stream().map(deptId -> {
BusProjectDept projectDept = new BusProjectDept();
projectDept.setDeptId(deptId);
projectDept.setProjectId(project.getId());
return projectDept;
}).toList();
boolean save = projectDeptService.saveBatch(busProjectDepts);
if (!save) {
throw new ServiceException("部门增加失败", HttpStatus.ERROR);
}
}
return true;
}
return false;
@ -691,6 +728,11 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
}).toList();
projectVo.setChildren(subProjectVoList);
}
// 关联所属部门
List<BusProjectDept> deptList = projectDeptService.lambdaQuery()
.eq(BusProjectDept::getProjectId, project.getId())
.list();
projectVo.setDeptIds(deptList.stream().map(BusProjectDept::getDeptId).toList());
return projectVo;
}
@ -1174,43 +1216,195 @@ public class BusProjectServiceImpl extends ServiceImpl<BusProjectMapper, BusProj
if (projectVos == null || projectVos.isEmpty()) {
return Collections.emptyMap();
}
projectVos.add(create("北京市", "北京", 39.9042, 116.4074, 1));
projectVos.add(create("天津市", "天津", 39.3434, 117.36162, 2));
projectVos.add(create("河北省", "石家庄", 38.0428, 114.5149, 3));
projectVos.add(create("山西省", "太原", 37.8706, 112.5493, 1));
projectVos.add(create("内蒙古自治区", "呼和浩特", 40.8426, 111.7492, 2));
projectVos.add(create("辽宁省", "沈阳", 41.8057, 123.4315, 2));
projectVos.add(create("吉林省", "长春", 43.8171, 125.3235, 3));
projectVos.add(create("黑龙江省", "哈尔滨", 45.8038, 126.5349, 1));
projectVos.add(create("上海市", "上海", 31.2304, 121.4737, 3));
projectVos.add(create("江苏省", "南京", 32.0603, 118.7969, 1));
projectVos.add(create("浙江省", "杭州", 30.2741, 120.1551, 1));
projectVos.add(create("安徽省", "合肥", 31.8206, 117.2272, 2));
projectVos.add(create("福建省", "福州", 26.0745, 119.2965, 2));
projectVos.add(create("江西省", "南昌", 28.6820, 115.8579, 2));
projectVos.add(create("山东省", "济南", 36.6512, 117.1201, 1));
projectVos.add(create("河南省", "郑州", 34.7473, 113.6249, 1));
projectVos.add(create("湖北省", "武汉", 30.5928, 114.3055, 1));
projectVos.add(create("湖南省", "长沙", 28.2278, 112.9389, 2));
projectVos.add(create("广东省", "广州", 23.1291, 113.2644, 3));
projectVos.add(create("广西壮族自治区", "南宁", 22.8170, 108.3669, 1));
projectVos.add(create("海南省", "海口", 20.0440, 110.1999, 1));
projectVos.add(create("四川省", "成都", 30.6595, 104.0657, 2));
projectVos.add(create("贵州省", "贵阳", 26.6470, 106.6302, 1));
projectVos.add(create("云南省", "昆明", 25.0406, 102.7123, 3));
projectVos.add(create("西藏自治区", "拉萨", 29.6469, 91.1172, 1));
projectVos.add(create("陕西省", "西安", 34.3416, 108.9398, 3));
projectVos.add(create("甘肃省", "兰州", 36.0614, 103.8343, 1));
projectVos.add(create("青海省", "西宁", 36.6232, 101.7782, 2));
projectVos.add(create("宁夏回族自治区", "银川", 38.4872, 106.2309, 2));
projectVos.add(create("新疆维吾尔自治区", "乌鲁木齐", 43.8266, 87.6168, 3));
projectVos.add(create("香港特别行政区", "香港", 22.3193, 114.1694, 1));
projectVos.add(create("澳门特别行政区", "澳门", 22.1987, 113.5439, 1));
projectVos.add(create("台湾省", "台北", 25.0330, 121.5654, 1));
// projectVos.add(create("北京市", "北京", 39.9042, 116.4074, 1));
// projectVos.add(create("天津市", "天津", 39.3434, 117.36162, 2));
// projectVos.add(create("河北省", "石家庄", 38.0428, 114.5149, 3));
// projectVos.add(create("山西省", "太原", 37.8706, 112.5493, 1));
// projectVos.add(create("内蒙古自治区", "呼和浩特", 40.8426, 111.7492, 2));
// projectVos.add(create("辽宁省", "沈阳", 41.8057, 123.4315, 2));
// projectVos.add(create("吉林省", "长春", 43.8171, 125.3235, 3));
// projectVos.add(create("黑龙江省", "哈尔滨", 45.8038, 126.5349, 1));
// projectVos.add(create("上海市", "上海", 31.2304, 121.4737, 3));
// projectVos.add(create("江苏省", "南京", 32.0603, 118.7969, 1));
// projectVos.add(create("浙江省", "杭州", 30.2741, 120.1551, 1));
// projectVos.add(create("安徽省", "合肥", 31.8206, 117.2272, 2));
// projectVos.add(create("福建省", "福州", 26.0745, 119.2965, 2));
// projectVos.add(create("江西省", "南昌", 28.6820, 115.8579, 2));
// projectVos.add(create("山东省", "济南", 36.6512, 117.1201, 1));
// projectVos.add(create("河南省", "郑州", 34.7473, 113.6249, 1));
// projectVos.add(create("湖北省", "武汉", 30.5928, 114.3055, 1));
// projectVos.add(create("湖南省", "长沙", 28.2278, 112.9389, 2));
// projectVos.add(create("广东省", "广州", 23.1291, 113.2644, 3));
// projectVos.add(create("广西壮族自治区", "南宁", 22.8170, 108.3669, 1));
// projectVos.add(create("海南省", "海口", 20.0440, 110.1999, 1));
// projectVos.add(create("四川省", "成都", 30.6595, 104.0657, 2));
// projectVos.add(create("贵州省", "贵阳", 26.6470, 106.6302, 1));
// projectVos.add(create("云南省", "昆明", 25.0406, 102.7123, 3));
// projectVos.add(create("西藏自治区", "拉萨", 29.6469, 91.1172, 1));
// projectVos.add(create("陕西省", "西安", 34.3416, 108.9398, 3));
// projectVos.add(create("甘肃省", "兰州", 36.0614, 103.8343, 1));
// projectVos.add(create("青海省", "西宁", 36.6232, 101.7782, 2));
// projectVos.add(create("宁夏回族自治区", "银川", 38.4872, 106.2309, 2));
// projectVos.add(create("新疆维吾尔自治区", "乌鲁木齐", 43.8266, 87.6168, 3));
// projectVos.add(create("香港特别行政区", "香港", 22.3193, 114.1694, 1));
// projectVos.add(create("澳门特别行政区", "澳门", 22.1987, 113.5439, 1));
// projectVos.add(create("台湾省", "台北", 25.0330, 121.5654, 1));
// 1号项目
projectVos.add(create("贵州省", "都匀市沙包堡匀东农业光伏电站项目", 26.2556, 107.5139, 1));
// 2号项目
projectVos.add(create("贵州省", "长顺县朝核农业光伏电站", 26.1833, 106.4522, 1));
// 3号项目
projectVos.add(create("重庆市", "重庆无水港绿色低碳能源项目", 29.533155, 106.504962, 1));
// 4号项目
projectVos.add(create("贵州省", "兴义市捧乍猪场坪农业光伏电站项目", 25.1467, 104.8925, 1));
// 5号项目
projectVos.add(create("贵州省", "华能盘州市羊场高光村、松林农业光伏发电项目", 25.7833, 104.6583, 1));
// 6号项目
projectVos.add(create("贵州省", "大唐(六盘水)新能源有限公司水城区化乐农业光伏电站项目", 26.5167, 104.8289, 1));
// 7号项目
projectVos.add(create("广西壮族自治区", "河池市宜州区北牙瑶族乡100MWp农光互补光伏发电项目", 24.6833, 108.6958, 1));
// 8号项目
projectVos.add(create("四川省", "凉山木里茶布朗光伏发电项目220kV升压站设计施工总承包项目", 27.9167, 100.3250, 1));
// 9号项目
projectVos.add(create("内蒙古自治区", "土默特右旗英能光伏电力开发有限公司100兆瓦光伏基地项目", 40.5333, 110.5489, 1));
// 10号项目
projectVos.add(create("云南省", "云南沾益农业光伏项目", 25.5000, 103.8194, 1));
// 11号项目
projectVos.add(create("贵州省", "威宁县盐仓老鸦营30MW农业光伏电站项目", 26.8833, 104.2250, 1));
// 12号项目
projectVos.add(create("云南省", "大黑土光伏电站总承包工程项目", 25.0406, 102.7142, 1));
// 13号项目
projectVos.add(create("贵州省", "晴隆县碧痕新坪村风光火储一体化农业光伏电站", 25.5333, 105.1250, 1));
// 15号项目
projectVos.add(create("河北省", "怀安县风光储一体化项目", 40.6667, 114.5417, 1));
// 16号项目
projectVos.add(create("云南省", "保山市隆阳区黑岩洼光伏发电项目", 25.1250, 99.1667, 1));
// 17号项目
projectVos.add(create("云南省", "白玉光伏发电项目", 25.1250, 99.1667, 1));
// 20号项目
projectVos.add(create("云南省", "云南省沾益区菱角农业光伏发电项目", 25.6000, 103.6833, 1));
// 21号项目
projectVos.add(create("云南省", "云南省文山州砚山县平远光伏发电项目", 23.7500, 104.3333, 1));
// 22号项目
projectVos.add(create("贵州省", "兴仁市大山能投农业光伏电站项目", 25.4000, 105.1833, 1));
// 23号项目
projectVos.add(create("贵州省", "兴仁市潘家庄能投农业光伏电站项目", 25.5333, 104.9833, 1));
// 47号项目
projectVos.add(create("重庆市", "丰都许明寺镇100MW农牧光互补复合项目", 29.9333, 107.7500, 1));
// 48号项目
projectVos.add(create("云南省", "文山市茂克光伏电站项目", 23.3667, 104.2000, 1));
// 50号项目
projectVos.add(create("云南省", "文山市清水井光伏电站项目", 23.4500, 104.3333, 1));
// 52号项目原序号1
projectVos.add(create("广西壮族自治区", "新铝电力新山站屋顶分布式光伏发电项目EPC总承包", 22.8241, 108.3178, 1));
// 53号项目原序号2
projectVos.add(create("江西省", "江西省高速公路服务区分布式光伏项目EPC", 28.6764, 115.8922, 1));
// 54号项目原序号3
projectVos.add(create("河南省", "龙佰集团股份有限公司7MWp分布式光伏发电项目EPC总承包", 34.7573, 113.6145, 1));
// 55号项目原序号4
projectVos.add(create("吉林省", "吉林热电检修安装工程有限公司吉林省南湖宾馆光储充一体化项目EPC总承包", 43.8868, 125.3245, 1));
// 56号项目原序号5
projectVos.add(create("吉林省", "集安市瀚能风电场相关装备有限公司益盛汉参集团分布式光伏发电项目EPC", 41.1333, 126.1650, 1));
// 57号项目原序号6
projectVos.add(create("重庆市", "重庆潼南综合智慧零碳电厂耀辉环保单元项目", 30.1550, 106.2289, 1));
// 58号项目原序号7
projectVos.add(create("重庆市", "汇智能源公司重庆永川综合智慧零碳电厂", 29.4167, 105.7833, 1));
// 59号项目原序号8
projectVos.add(create("广西壮族自治区", "德保县乡村振兴光伏发电项目第二批EPC 总承包", 23.7167, 106.6833, 1));
// 60号项目原序号9
projectVos.add(create("重庆市", "汇智能源公司重庆永川综合智慧零碳电厂升科精锻单元项目工程EPC总承包工程一期", 29.4167, 105.7833, 1));
// 62号项目原序号11
projectVos.add(create("贵州省", "新铝电力莲塘、马隘变电站屋顶分布式光伏发电项目EPC工程总承包项目", 23.7833, 106.9500, 1));
// 63号项目原序号12
projectVos.add(create("广西壮族自治区", "广西德保县乡村振兴光伏发电项目第三批EPC总承包", 23.7167, 106.6833, 1));
// 64号项目原序号13
projectVos.add(create("内蒙古自治区", "内蒙古自治区蒙西户用分布式200MW光伏发电项目EPC总承包四期", 40.6667, 109.8333, 1));
// 65号项目原序号14
projectVos.add(create("广东省", "惠来县50MWp居民屋顶分布式光伏项目", 23.0333, 116.2833, 1));
// 66号项目原序号15
projectVos.add(create("广西壮族自治区", "田东县乡村振兴分布式光伏发电项目二期EPC总承包", 23.6167, 106.9167, 1));
// 67号项目原序号16
projectVos.add(create("广西壮族自治区", "田东县乡村振兴分布式光伏发电项目一期EPC总承包", 23.6167, 106.9167, 1));
// 68号项目原序号17
projectVos.add(create("重庆市", "华能重庆华通电脑有限公司屋顶分布式光伏EPC项目合同", 29.533155, 106.504962, 1));
// 69号项目原序号18
projectVos.add(create("广东省", "大埔峡能白罗20MW、长兴20MW、洋门10MW、群丰10MW农光互补光伏发电项目", 24.3667, 116.7000, 1));
// 70号项目原序号19
projectVos.add(create("广东省", "化州区域分布式光伏项目", 21.7000, 110.6333, 1));
// 71号项目原序号20
projectVos.add(create("河北省", "兴隆县10MW分布式光伏项目", 40.4167, 117.4833, 1));
// 75号项目原序号24
projectVos.add(create("重庆市", "石柱发电公司厂区分布式光伏施工项目", 29.9333, 108.1333, 1));
// 76号项目原序号25
projectVos.add(create("陕西省", "靖边燃气发电厂3.0MW光伏发电工程", 37.6167, 108.7833, 1));
// 77号项目原序号26
projectVos.add(create("河北省", "河北兴隆 10MW分布式光伏项目", 40.4167, 117.4833, 1));
// 79号项目原序号28
projectVos.add(create("广东省", "茂名分公司化工区物资仓库屋顶光伏发电合同能源管理项目", 21.6833, 110.8667, 1));
// 88号项目原序号37
projectVos.add(create("河北省", "怀安县风光储一体化项目", 40.6667, 114.5417, 1));
// 91号项目原序号2
projectVos.add(create("辽宁省", "鑫泰新能源大石桥市200MW风电场新建工程项目", 40.6333, 122.5333, 2));
// 92号项目原序号3
projectVos.add(create("辽宁省", "大石桥市冠程新能源550MW风电场工程项目", 40.6333, 122.5333, 2));
// 96号项目原序号7
projectVos.add(create("四川省", "阿坝公司运检大楼“风光油储型”微电网试点项目", 31.9500, 102.2167, 2));
// 老挝 - 万象
projectVos.add(create("老挝", "万象", 17.9757, 102.6331, 1));
projectVos.add(create("老挝", "巴塞", 15.110507, 15.110507, 1));
// 老挝 - 琅勃拉邦
projectVos.add(create("老挝", "琅勃拉邦", 19.8856, 102.1350, 2));
projectVos.add(create("老挝", "波利坎塞", 18.39639, 103.65583, 1));
Map<String, Map<String, Map<String, String>>> map = new HashMap<>();
for (SysDictDataVo projectType : projectTypes) {
Map<String, Map<String, String>> map1 = new HashMap<>();

View File

@ -1,9 +1,12 @@
package org.dromara.safety.domain.vo.safetyinspection;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @author lilemy
@ -26,9 +29,10 @@ public class HseSafetyInspectionGis implements Serializable {
private String checkType;
/**
* 违章类型
* 巡检类型名称
*/
private String violationType;
@Translation(type = TransConstant.DICT_TYPE_TO_LABEL, mapper = "checkType", other = "safety_inspection_check_type")
private String inspectionTypeLabel;
/**
* 巡检结果
@ -40,4 +44,9 @@ public class HseSafetyInspectionGis implements Serializable {
*/
private String status;
/**
* 创建时间
*/
private Date createTime;
}

View File

@ -217,50 +217,33 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
} else {
gisVo.setTeamMeetingList(new ArrayList<>());
}
gisVo.setTeamMeetingCount((long) teamMeetings.size());
// 获取整改情况
List<HseSafetyInspection> safetyInspectionList = this.lambdaQuery()
.select(HseSafetyInspection::getId, HseSafetyInspection::getStatus, HseSafetyInspection::getIsReply)
.eq(HseSafetyInspection::getProjectId, projectId)
.list();
long passCount = 0L;
for (HseSafetyInspection safetyInspection : safetyInspectionList) {
if ("1".equals(safetyInspection.getIsReply())) {
if (!safetyInspection.getStatus().equals(HseSafetyInspectionStatusEnum.INFORM.getValue())) {
passCount++;
}
}
}
List<HseSafetyInspection> passList = safetyInspectionList.stream()
.filter(q -> "1".equals(q.getIsReply()))
.filter(q -> !q.getStatus().equals(HseSafetyInspectionStatusEnum.INFORM.getValue()))
.toList();
List<HseSafetyInspectionGis> pass = passList.stream().map(p -> {
HseSafetyInspectionGis gis = new HseSafetyInspectionGis();
gis.setId(p.getId());
gis.setCheckType(p.getCheckType());
gis.setViolationType(p.getViolationType());
gis.setInspectionResult(p.getInspectionResult());
gis.setStatus(p.getStatus());
BeanUtils.copyProperties(p, gis);
return gis;
}).toList();
gisVo.setTeamMeetingCount((long) teamMeetings.size());
List<HseSafetyInspectionGis> inspections = safetyInspectionList.stream()
.filter(q -> "2".equals(q.getIsReply()))
.toList()
.stream().map(p -> {
HseSafetyInspectionGis gis = new HseSafetyInspectionGis();
gis.setId(p.getId());
gis.setCheckType(p.getCheckType());
gis.setViolationType(p.getViolationType());
gis.setInspectionResult(p.getInspectionResult());
gis.setStatus(p.getStatus());
BeanUtils.copyProperties(p, gis);
return gis;
}).toList();
gisVo.setSafetyInspectionCount((long) inspections.size());
gisVo.setSafetyInspectionList(inspections);
gisVo.setCorrectSituationCount(passCount);
gisVo.setCorrectSituationCount((long) pass.size());
gisVo.setCorrectSituationList(pass);
gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / safetyInspectionList.size()));
// gisVo.setCorrectSituation(String.format("%.2f", (long) pass.size() * 100.0 / safetyInspectionList.size()));
return gisVo;
}

View File

@ -148,4 +148,13 @@ public class SysDeptController extends BaseController {
return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds)));
}
/**
* 查询部门
*/
@GetMapping("/listTopDept")
public R<List<SysDeptVo>> list() {
List<SysDeptVo> list = deptService.querListDept();
return R.ok(list);
}
}

View File

@ -7,6 +7,7 @@ import org.dromara.common.mybatis.core.page.PageQuery;
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.biddingManagement.biaoqianlixiang.domain.XzdBqlxProjectInfo;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.bo.XzdBqlxProjectInfoBo;
@ -146,15 +147,13 @@ public class XzdBidPreProjectServiceImpl extends ServiceImpl<XzdBidPreProjectMap
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(BiddingManagementDto bo) {
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBidPreProject>().gt(XzdBidPreProject::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
String banBen = BatchNumberGenerator.generateBatchNumber("BQLX-");
// 标前立项
XzdBidPreProjectBo xzdBidPreProjectBo = bo.getXzdBidPreProjectBo();
XzdBidPreProject xzdBidPreProject = new XzdBidPreProject();
if (xzdBidPreProjectBo != null) {
BeanUtil.copyProperties(xzdBidPreProjectBo, xzdBidPreProject);
xzdBidPreProject.setProjectNumber(s+"-"+(l+1));
xzdBidPreProject.setProjectNumber(banBen);
baseMapper.insert(xzdBidPreProject);
}

View File

@ -9,6 +9,7 @@ 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.biddingManagement.biaoqianlixiang.domain.XzdProjectRiskAssessment;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.bo.XzdProjectRiskAssessmentBo;
@ -140,9 +141,8 @@ public class XzdProjectRiskAssessmentServiceImpl extends ServiceImpl<XzdProjectR
XzdProjectRiskAssessment add = MapstructUtils.convert(bo, XzdProjectRiskAssessment.class);
validEntityBeforeSave(add);
if(add != null){
String s = areaUtil.generateDateBasedNumber();
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdProjectRiskAssessment>().gt(XzdProjectRiskAssessment::getCreateTime, LocalDate.now()));
add.setDocumentNumber(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("XMFXPGYJB-");
add.setDocumentNumber(banBen);
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -9,6 +9,7 @@ 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.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.utilS.AreaUtil;
@ -119,11 +120,9 @@ public class XzdBiddingFileEstimateServiceImpl extends ServiceImpl<XzdBiddingFil
XzdBiddingFileEstimate add = MapstructUtils.convert(bo, XzdBiddingFileEstimate.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBiddingFileEstimate>().gt(XzdBiddingFileEstimate::getCreateTime, LocalDate.now()));
String banBen = BatchNumberGenerator.generateBatchNumber("ZBWJPG-");
String s = areaUtil.generateDateBasedNumber();
add.setDocumentCode(s+"-"+(l+1));
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -9,6 +9,7 @@ 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.xzd.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biddingDocumentList.domain.XzdBiddingDocument;
import org.dromara.xzd.biddingManagement.biddingDocumentList.domain.XzdTbwjBusinessBid;
@ -135,14 +136,12 @@ public class XzdBiddingDocumentServiceImpl extends ServiceImpl<XzdBiddingDocumen
if (xzdBiddingDocumentbo == null) {
return false;
}
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBiddingDocument>().gt(XzdBiddingDocument::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
XzdBiddingDocument xzdBiddingDocument = new XzdBiddingDocument();
BeanUtils.copyProperties(xzdBiddingDocumentbo, xzdBiddingDocument);
// 单据编号
xzdBiddingDocument.setDocumentNumber(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("TBWJ-");
xzdBiddingDocument.setDocumentNumber(banBen);
this.save(xzdBiddingDocument);
// 投标文件-技术标

View File

@ -9,6 +9,7 @@ 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.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.QuerListXzdBidPreVo;
@ -134,9 +135,8 @@ public class XzdBidDepositPaymentServiceImpl extends ServiceImpl<XzdBidDepositPa
public Boolean insertByBo(XzdBidDepositPaymentBo bo) {
XzdBidDepositPayment add = MapstructUtils.convert(bo, XzdBidDepositPayment.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBidDepositPayment>().gt(XzdBidDepositPayment::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentCode(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("TBBZJJN-");
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -9,6 +9,7 @@ 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.biddingManagement.earnestMoney.domain.vo.XzdBidDepositPaymentByBqlx;
import org.dromara.xzd.biddingManagement.earnestMoney.service.IXzdBidDepositPaymentService;
@ -142,10 +143,8 @@ public class XzdBidDepositRecoveryServiceImpl extends ServiceImpl<XzdBidDepositR
public Boolean insertByBo(XzdBidDepositRecoveryBo bo) {
XzdBidDepositRecovery add = MapstructUtils.convert(bo, XzdBidDepositRecovery.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBidDepositRecovery>().gt(XzdBidDepositRecovery::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentCode(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("TBBZJSH-");
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -9,6 +9,7 @@ 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.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.utilS.AreaUtil;
@ -115,12 +116,8 @@ public class XzdBiddingAgencyFeePaymentServiceImpl extends ServiceImpl<XzdBiddin
public Boolean insertByBo(XzdBiddingAgencyFeePaymentBo bo) {
XzdBiddingAgencyFeePayment add = MapstructUtils.convert(bo, XzdBiddingAgencyFeePayment.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdBiddingAgencyFeePayment>().gt(XzdBiddingAgencyFeePayment::getCreateTime, LocalDate .now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentCode(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("ZBDLZFSQ-");
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -61,7 +61,7 @@ public class XzdCsContractChangeController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:csContractChange:query")
// @SaCheckPermission("comprehensive:csContractChange:query")
@GetMapping("/{id}")
public R<XzdCsContractChangeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -70,7 +70,7 @@ public class XzdCsContractInformationController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:csContractInformation:query")
// @SaCheckPermission("comprehensive:csContractInformation:query")
@GetMapping("/{id}")
public R<XzdCsContractInformationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -61,7 +61,7 @@ public class XzdCsContractSuspendController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("comprehensive:csContractSuspend:query")
// @SaCheckPermission("comprehensive:csContractSuspend:query")
@GetMapping("/{id}")
public R<XzdCsContractSuspendVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -32,6 +32,12 @@ public class XzdHtglHtbgqd extends BaseEntity {
* 立项1、承包合同信息2、承包合同变更3分包合同信息4、分包合同变更5、采购合同信息6、采购合同变更7、综合服务信息8、综合服务变更
*/
private Long type;
/**
* 关联主表id
*/
private Long mainDocumentId;
/**
* 附件(路径/关联ID
@ -42,6 +48,10 @@ public class XzdHtglHtbgqd extends BaseEntity {
* 编码
*/
private String code;
/**
* 项目
*/
private String project;
/**
* 合同名称(带*,必填)
@ -58,6 +68,11 @@ public class XzdHtglHtbgqd extends BaseEntity {
*/
private String calculateUnit;
/**
* 规格型号
*/
private String specificationModel;
/**
* 原数值
*/
@ -72,6 +87,10 @@ public class XzdHtglHtbgqd extends BaseEntity {
* 原含税单价
*/
private BigDecimal originalTaxInclUnitPrice;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 变更后含税单价
@ -88,6 +107,17 @@ public class XzdHtglHtbgqd extends BaseEntity {
*/
private BigDecimal afterChangeTaxInclAmount;
/**
* 原不含税金额
*/
private BigDecimal noOriginalTaxInclAmount;
/**
* 变更后含不税金额
*/
private BigDecimal noAfterChangeTaxInclAmount;
/**
* 原税率
*/
@ -128,6 +158,12 @@ public class XzdHtglHtbgqd extends BaseEntity {
*/
private String costBudgetSource;
/**
* 换算比例
*/
private String conversionRatio;
/**
* 备注
*/
@ -138,5 +174,23 @@ public class XzdHtglHtbgqd extends BaseEntity {
*/
private Long settledPriceTotal;
/**
* 金额
*/
private BigDecimal amount;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 成本预算余额
*/
private BigDecimal costBudgetBalance;
/**
* 合同累计签订成本预算
*/
private BigDecimal totalSignedCostBudget;
}

View File

@ -0,0 +1,92 @@
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_htgl_hthzsj
*
* @author Lion Li
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_htgl_hthzsj")
public class XzdHtglHthzsj extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 主表id
*/
private Long mainDocumentId;
/**
* 资源编码
*/
private String resourceCode;
/**
* 资源名称
*/
private String resourceName;
/**
* 规格型号
*/
private String specModel;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private BigDecimal quantity;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 税率(如 13% 存储为 0.1300
*/
private BigDecimal taxRate;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 含税单价
*/
private BigDecimal taxInclUnitPrice;
/**
* 不含税金额
*/
private BigDecimal taxExclAmount;
/**
* 含税金额
*/
private BigDecimal taxInclAmount;
}

View File

@ -15,6 +15,7 @@ import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
@ -225,5 +226,10 @@ public class XzdCsContractChangeBo extends BaseEntity {
*/
private List<XzdSettlementRules> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -15,6 +15,7 @@ import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
@ -268,5 +269,10 @@ public class XzdCsContractInformationBo extends BaseEntity {
*/
private List<XzdSettlementRules> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -33,6 +33,11 @@ public class XzdHtglHtbgqdBo extends BaseEntity {
@NotNull(message = "立项1、承包合同信息2、承包合同变更3分包合同信息4、分包合同变更5、采购合同信息6、采购合同变更7、综合服务信息8、综合服务变更不能为空", groups = { AddGroup.class, EditGroup.class })
private Long type;
/**
* 关联主表id
*/
private Long mainDocumentId;
/**
* 附件(路径/关联ID
*/
@ -60,6 +65,11 @@ public class XzdHtglHtbgqdBo extends BaseEntity {
@NotBlank(message = "计算单位(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String calculateUnit;
/**
* 规格型号
*/
private String specificationModel;
/**
* 原数值
*/
@ -75,6 +85,11 @@ public class XzdHtglHtbgqdBo extends BaseEntity {
*/
private BigDecimal originalTaxInclUnitPrice;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 变更后含税单价
*/
@ -90,6 +105,16 @@ public class XzdHtglHtbgqdBo extends BaseEntity {
*/
private BigDecimal afterChangeTaxInclAmount;
/**
* 原不含税金额
*/
private BigDecimal noOriginalTaxInclAmount;
/**
* 变更后含不税金额
*/
private BigDecimal noAfterChangeTaxInclAmount;
/**
* 原税率
*/
@ -130,6 +155,11 @@ public class XzdHtglHtbgqdBo extends BaseEntity {
*/
private String costBudgetSource;
/**
* 换算比例
*/
private String conversionRatio;
/**
* 备注
*/
@ -141,4 +171,22 @@ public class XzdHtglHtbgqdBo extends BaseEntity {
private Long settledPriceTotal;
/**
* 金额
*/
private BigDecimal amount;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 成本预算余额
*/
private BigDecimal costBudgetBalance;
/**
* 合同累计签订成本预算
*/
private BigDecimal totalSignedCostBudget;
}

View File

@ -0,0 +1,91 @@
package org.dromara.xzd.comprehensive.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
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_htgl_hthzsj
*
* @author Lion Li
* @date 2025-10-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdHtglHthzsj.class, reverseConvertGenerate = false)
public class XzdHtglHthzsjBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 主表id
*/
private Long mainDocumentId;
/**
* 资源编码
*/
private String resourceCode;
/**
* 资源名称
*/
private String resourceName;
/**
* 规格型号
*/
private String specModel;
/**
* 单位
*/
private String unit;
/**
* 数量
*/
private BigDecimal quantity;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 税率(如 13% 存储为 0.1300
*/
private BigDecimal taxRate;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 含税单价
*/
private BigDecimal taxInclUnitPrice;
/**
* 不含税金额
*/
private BigDecimal taxExclAmount;
/**
* 含税金额
*/
private BigDecimal taxInclAmount;
}

View File

@ -11,6 +11,7 @@ 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.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
@ -274,5 +275,10 @@ public class XzdCsContractChangeVo implements Serializable {
*/
private List<XzdSettlementRules> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -11,6 +11,7 @@ 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.XzdHtglHtbgqd;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
@ -323,5 +324,10 @@ public class XzdCsContractInformationVo implements Serializable {
*/
private List<XzdSettlementRules> zftk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -42,6 +42,11 @@ public class XzdHtglHtbgqdVo implements Serializable {
@ExcelDictFormat(readConverterExp = "1=、承包合同信息2、承包合同变更3分包合同信息4、分包合同变更5、采购合同信息6、采购合同变更7、综合服务信息8、综合服务变更")
private Long type;
/**
* 关联主表id
*/
private Long mainDocumentId;
/**
* 附件(路径/关联ID
*/
@ -75,6 +80,11 @@ public class XzdHtglHtbgqdVo implements Serializable {
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String calculateUnit;
/**
* 规格型号
*/
private String specificationModel;
/**
* 原数值
*/
@ -92,6 +102,10 @@ public class XzdHtglHtbgqdVo implements Serializable {
*/
@ExcelProperty(value = "原含税单价")
private BigDecimal originalTaxInclUnitPrice;
/**
* 单价
*/
private BigDecimal unitPrice;
/**
* 变更后含税单价
@ -111,6 +125,17 @@ public class XzdHtglHtbgqdVo implements Serializable {
@ExcelProperty(value = "变更后含税金额")
private BigDecimal afterChangeTaxInclAmount;
/**
* 原不含税金额
*/
private BigDecimal noOriginalTaxInclAmount;
/**
* 变更后含不税金额
*/
private BigDecimal noAfterChangeTaxInclAmount;
/**
* 原税率
*/
@ -159,6 +184,11 @@ public class XzdHtglHtbgqdVo implements Serializable {
@ExcelProperty(value = "成本预算来源")
private String costBudgetSource;
/**
* 换算比例
*/
private String conversionRatio;
/**
* 备注
*/
@ -172,4 +202,22 @@ public class XzdHtglHtbgqdVo implements Serializable {
private Long settledPriceTotal;
/**
* 金额
*/
private BigDecimal amount;
/**
* 税额
*/
private BigDecimal taxAmount;
/**
* 成本预算余额
*/
private BigDecimal costBudgetBalance;
/**
* 合同累计签订成本预算
*/
private BigDecimal totalSignedCostBudget;
}

View File

@ -0,0 +1,112 @@
package org.dromara.xzd.comprehensive.domain.vo;
import java.math.BigDecimal;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
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_htgl_hthzsj
*
* @author Lion Li
* @date 2025-10-18
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdHtglHthzsj.class)
public class XzdHtglHthzsjVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 主表id
*/
@ExcelProperty(value = "主表id")
private Long mainDocumentId;
/**
* 资源编码
*/
@ExcelProperty(value = "资源编码")
private String resourceCode;
/**
* 资源名称
*/
@ExcelProperty(value = "资源名称")
private String resourceName;
/**
* 规格型号
*/
@ExcelProperty(value = "规格型号")
private String specModel;
/**
* 单位
*/
@ExcelProperty(value = "单位")
private String unit;
/**
* 数量
*/
@ExcelProperty(value = "数量")
private BigDecimal quantity;
/**
* 单价
*/
@ExcelProperty(value = "单价")
private BigDecimal unitPrice;
/**
* 税率(如 13% 存储为 0.1300
*/
@ExcelProperty(value = "税率", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=,1=3%,存=储为,0=.1300")
private BigDecimal taxRate;
/**
* 税额
*/
@ExcelProperty(value = "税额")
private BigDecimal taxAmount;
/**
* 含税单价
*/
@ExcelProperty(value = "含税单价")
private BigDecimal taxInclUnitPrice;
/**
* 不含税金额
*/
@ExcelProperty(value = "不含税金额")
private BigDecimal taxExclAmount;
/**
* 含税金额
*/
@ExcelProperty(value = "含税金额")
private BigDecimal taxInclAmount;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.comprehensive.mapper;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.comprehensive.domain.vo.XzdHtglHthzsjVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 合同管理-合同汇总数据Mapper接口
*
* @author Lion Li
* @date 2025-10-18
*/
public interface XzdHtglHthzsjMapper extends BaseMapperPlus<XzdHtglHthzsj, XzdHtglHthzsjVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.comprehensive.service;
import org.dromara.xzd.comprehensive.domain.vo.XzdHtglHthzsjVo;
import org.dromara.xzd.comprehensive.domain.bo.XzdHtglHthzsjBo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 合同管理-合同汇总数据Service接口
*
* @author Lion Li
* @date 2025-10-18
*/
public interface IXzdHtglHthzsjService extends IService<XzdHtglHthzsj>{
/**
* 查询合同管理-合同汇总数据
*
* @param id 主键
* @return 合同管理-合同汇总数据
*/
XzdHtglHthzsjVo queryById(Long id);
/**
* 分页查询合同管理-合同汇总数据列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同管理-合同汇总数据分页列表
*/
TableDataInfo<XzdHtglHthzsjVo> queryPageList(XzdHtglHthzsjBo bo, PageQuery pageQuery);
/**
* 查询符合条件的合同管理-合同汇总数据列表
*
* @param bo 查询条件
* @return 合同管理-合同汇总数据列表
*/
List<XzdHtglHthzsjVo> queryList(XzdHtglHthzsjBo bo);
/**
* 新增合同管理-合同汇总数据
*
* @param bo 合同管理-合同汇总数据
* @return 是否新增成功
*/
Boolean insertByBo(XzdHtglHthzsjBo bo);
/**
* 修改合同管理-合同汇总数据
*
* @param bo 合同管理-合同汇总数据
* @return 是否修改成功
*/
Boolean updateByBo(XzdHtglHthzsjBo bo);
/**
* 校验并批量删除合同管理-合同汇总数据信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -16,7 +16,9 @@ import org.dromara.system.service.ISysUserService;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdCsContractInformation;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.vo.XzdCsContractInformationVo;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
import org.dromara.xzd.domain.XzdSettlementRules;
@ -68,6 +70,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
/**
* 查询综合服务合同变更
@ -195,6 +200,11 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
return flag;
}
@ -258,6 +268,13 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
clause.setContractDetailsId(update.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().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;
}
@ -310,6 +327,8 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
@ -378,5 +397,9 @@ public class XzdCsContractChangeServiceImpl extends ServiceImpl<XzdCsContractCha
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
//合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId()));
vo.setHtbgqds(list4);
}
}

View File

@ -17,6 +17,8 @@ import org.dromara.common.utils.BatchNumberGenerator;
import org.dromara.system.domain.vo.SysDeptVo;
import org.dromara.system.service.impl.SysDeptServiceImpl;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.domain.XzdContractAdvanceInfo;
import org.dromara.xzd.domain.XzdContractClause;
import org.dromara.xzd.domain.XzdDeductionItems;
@ -70,6 +72,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
/**
* 查询综合服务合同信息
*
@ -108,6 +113,9 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
lambdaQueryWrapper3.eq(XzdSettlementRules::getContractDetailsId, vo.getId());
List<XzdSettlementRules> list2 = xzdSettlementRulesService.list(lambdaQueryWrapper3);
vo.setZftk(list2);
//合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, vo.getId()));
vo.setHtbgqds(list4);
}
/**
@ -288,6 +296,12 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
clause.setContractDetailsId(add.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
return flag;
}
@ -351,6 +365,12 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
clause.setContractDetailsId(update.getId());
}
xzdSettlementRulesService.saveBatch(bo.getZftk());
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().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;
}
@ -403,6 +423,7 @@ public class XzdCsContractInformationServiceImpl extends ServiceImpl<XzdCsContra
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
}

View File

@ -0,0 +1,142 @@
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.XzdHtglHthzsjBo;
import org.dromara.xzd.comprehensive.domain.vo.XzdHtglHthzsjVo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.comprehensive.mapper.XzdHtglHthzsjMapper;
import org.dromara.xzd.comprehensive.service.IXzdHtglHthzsjService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
/**
* 合同管理-合同汇总数据Service业务层处理
*
* @author Lion Li
* @date 2025-10-18
*/
@RequiredArgsConstructor
@Service
public class XzdHtglHthzsjServiceImpl extends ServiceImpl<XzdHtglHthzsjMapper, XzdHtglHthzsj> implements IXzdHtglHthzsjService {
private final XzdHtglHthzsjMapper baseMapper;
/**
* 查询合同管理-合同汇总数据
*
* @param id 主键
* @return 合同管理-合同汇总数据
*/
@Override
public XzdHtglHthzsjVo queryById(Long id){
return baseMapper.selectVoById(id);
}
/**
* 分页查询合同管理-合同汇总数据列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 合同管理-合同汇总数据分页列表
*/
@Override
public TableDataInfo<XzdHtglHthzsjVo> queryPageList(XzdHtglHthzsjBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdHtglHthzsj> lqw = buildQueryWrapper(bo);
Page<XzdHtglHthzsjVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的合同管理-合同汇总数据列表
*
* @param bo 查询条件
* @return 合同管理-合同汇总数据列表
*/
@Override
public List<XzdHtglHthzsjVo> queryList(XzdHtglHthzsjBo bo) {
LambdaQueryWrapper<XzdHtglHthzsj> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<XzdHtglHthzsj> buildQueryWrapper(XzdHtglHthzsjBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdHtglHthzsj> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdHtglHthzsj::getId);
lqw.eq(bo.getMainDocumentId() != null, XzdHtglHthzsj::getMainDocumentId, bo.getMainDocumentId());
lqw.eq(StringUtils.isNotBlank(bo.getResourceCode()), XzdHtglHthzsj::getResourceCode, bo.getResourceCode());
lqw.like(StringUtils.isNotBlank(bo.getResourceName()), XzdHtglHthzsj::getResourceName, bo.getResourceName());
lqw.eq(StringUtils.isNotBlank(bo.getSpecModel()), XzdHtglHthzsj::getSpecModel, bo.getSpecModel());
lqw.eq(StringUtils.isNotBlank(bo.getUnit()), XzdHtglHthzsj::getUnit, bo.getUnit());
lqw.eq(bo.getQuantity() != null, XzdHtglHthzsj::getQuantity, bo.getQuantity());
lqw.eq(bo.getUnitPrice() != null, XzdHtglHthzsj::getUnitPrice, bo.getUnitPrice());
lqw.eq(bo.getTaxRate() != null, XzdHtglHthzsj::getTaxRate, bo.getTaxRate());
lqw.eq(bo.getTaxAmount() != null, XzdHtglHthzsj::getTaxAmount, bo.getTaxAmount());
lqw.eq(bo.getTaxInclUnitPrice() != null, XzdHtglHthzsj::getTaxInclUnitPrice, bo.getTaxInclUnitPrice());
lqw.eq(bo.getTaxExclAmount() != null, XzdHtglHthzsj::getTaxExclAmount, bo.getTaxExclAmount());
lqw.eq(bo.getTaxInclAmount() != null, XzdHtglHthzsj::getTaxInclAmount, bo.getTaxInclAmount());
return lqw;
}
/**
* 新增合同管理-合同汇总数据
*
* @param bo 合同管理-合同汇总数据
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdHtglHthzsjBo bo) {
XzdHtglHthzsj add = MapstructUtils.convert(bo, XzdHtglHthzsj.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改合同管理-合同汇总数据
*
* @param bo 合同管理-合同汇总数据
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdHtglHthzsjBo bo) {
XzdHtglHthzsj update = MapstructUtils.convert(bo, XzdHtglHthzsj.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdHtglHthzsj entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除合同管理-合同汇总数据信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -10,6 +10,7 @@ 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.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
@ -177,10 +178,9 @@ public class XzdPurchaseContractSuspendServiceImpl extends ServiceImpl<XzdPurcha
public Boolean insertByBo(XzdPurchaseContractSuspendBo bo) {
XzdPurchaseContractSuspend add = MapstructUtils.convert(bo, XzdPurchaseContractSuspend.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("CGHTZZ-");
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdPurchaseContractSuspend>().gt(XzdPurchaseContractSuspend::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setReceiptsCode(s+"-"+(l+1));
add.setReceiptsCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -1,5 +1,7 @@
package org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.XzdPurchaseContractAlteration;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -236,4 +238,14 @@ public class XzdPurchaseContractAlterationBo extends BaseEntity {
private List<XzdContractClause> httk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 汇总数据
*/
private List<XzdHtglHthzsj> htghthzsjs;
}

View File

@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
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.XzdHtglHthzsj;
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.XzdPurchaseContractAlteration;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -309,5 +311,15 @@ public class XzdPurchaseContractAlterationVo implements Serializable {
// private XzdPurchaseContractInformationVo xzdPurchaseContractInformationVo;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 汇总数据
*/
private List<XzdHtglHthzsj> htghthzsjs;
}

View File

@ -10,7 +10,12 @@ 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.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHthzsjService;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
import org.dromara.xzd.contractManagement.purchaseManagement.service.IXzdPurchaseContractInformationService;
import org.dromara.xzd.domain.*;
@ -69,6 +74,10 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
private IXzdCorrespondentList iXzdCorrespondentList;
@Autowired
private XzdSupplierInfoServiceImpl xzdSupplierInfoService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
@Autowired
private IXzdHtglHthzsjService xzdHtglHthzsjService;
/**
* 查询采购合同变更
@ -118,6 +127,10 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
XzdContractDepositInfo list3 = xzdContractDepositInfoService.getOne(lambdaQueryWrapper4);
item.setHtzytkyd(list3);
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, item.getId()));
item.setHtbgqds(list4);
List<XzdHtglHthzsj> xzdHtglHthzsjs = xzdHtglHthzsjService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHthzsj>().eq(XzdHtglHthzsj::getMainDocumentId, item.getId()));
item.setHtghthzsjs(xzdHtglHthzsjs);
}
@ -206,6 +219,9 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
XzdPurchaseContractAlteration add = MapstructUtils.convert(bo, XzdPurchaseContractAlteration.class);
validEntityBeforeSave(add);
String tableName = XzdClassEnum.CAIGOUHETONG_INFORMATION.getClassName();
String banBen = BatchNumberGenerator.generateBatchNumber("CGHTBG-");
add.setReceiptsCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
/**
@ -238,6 +254,16 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
if (flag) {
bo.setId(add.getId());
}
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//汇总数据
if (bo.getHtghthzsjs() != null && !bo.getHtghthzsjs().isEmpty()) {
bo.getHtghthzsjs().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHthzsjService.saveBatch(bo.getHtghthzsjs());
}
return flag;
}
@ -290,6 +316,18 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
});
iXzdContractClauseService.saveBatch(httk);
}
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//汇总数据
xzdHtglHthzsjService.remove(new LambdaQueryWrapper<XzdHtglHthzsj>().eq(XzdHtglHthzsj::getMainDocumentId,bo.getId()));
if (bo.getHtghthzsjs() != null && !bo.getHtghthzsjs().isEmpty()) {
bo.getHtghthzsjs().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHthzsjService.saveBatch(bo.getHtghthzsjs());
}
return baseMapper.updateById(add) > 0;
}
@ -337,6 +375,9 @@ public class XzdPurchaseContractAlterationServiceImpl extends ServiceImpl<XzdPur
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
xzdHtglHthzsjService.remove(new LambdaQueryWrapper<XzdHtglHthzsj>().in(XzdHtglHthzsj::getMainDocumentId,ids));
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}

View File

@ -67,7 +67,7 @@ public class XzdSubcontractChange extends BaseEntity {
/**
* 项目
*/
private String project;
private String projectName;
/**
* 经营模式
@ -77,17 +77,17 @@ public class XzdSubcontractChange extends BaseEntity {
/**
* 组织
*/
private String organization;
private String organizationName;
/**
* 甲方单位
*/
private String partyAUnit;
private String partyAUnitName;
/**
* 乙方单位
*/
private String partyBUnit;
private String partyBUnitName;
/**
* 原合同造价

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -30,13 +31,11 @@ public class XzdSubcontractChangeBo extends BaseEntity {
/**
*
*/
@NotNull(message = "不能为空", groups = { EditGroup.class })
private Long id;
/**
* 单据编码
*/
@NotBlank(message = "单据编码不能为空", groups = { AddGroup.class, EditGroup.class })
private String documentCode;
/**
@ -72,7 +71,7 @@ public class XzdSubcontractChangeBo extends BaseEntity {
/**
* 项目
*/
private String project;
private String projectName;
/**
* 经营模式
@ -82,17 +81,17 @@ public class XzdSubcontractChangeBo extends BaseEntity {
/**
* 组织
*/
private String organization;
private String organizationName;
/**
* 甲方单位
*/
private String partyAUnit;
private String partyAUnitName;
/**
* 乙方单位
*/
private String partyBUnit;
private String partyBUnitName;
/**
* 原合同造价
@ -239,6 +238,11 @@ public class XzdSubcontractChangeBo extends BaseEntity {
*/
private List<XzdContractClause> httk;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
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.contractManagement.fenbaohetongbiangg.domain.XzdSubcontractChange;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -69,6 +70,12 @@ public class XzdSubcontractChangeVo implements Serializable {
@ExcelProperty(value = "合同编码")
private Long contractCode;
/**
* 合同编码名称
*/
@ExcelProperty(value = "合同编码名称")
private String contractCodeName;
/**
* 合同名称
*/
@ -93,7 +100,7 @@ public class XzdSubcontractChangeVo implements Serializable {
* 项目
*/
@ExcelProperty(value = "项目")
private String project;
private String projectName;
/**
* 经营模式
@ -105,19 +112,19 @@ public class XzdSubcontractChangeVo implements Serializable {
* 组织
*/
@ExcelProperty(value = "组织")
private String organization;
private String organizationName;
/**
* 甲方单位
*/
@ExcelProperty(value = "甲方单位")
private String partyAUnit;
private String partyAUnitName;
/**
* 乙方单位
*/
@ExcelProperty(value = "乙方单位")
private String partyBUnit;
private String partyBUnitName;
/**
* 原合同造价
@ -191,18 +198,39 @@ public class XzdSubcontractChangeVo implements Serializable {
@ExcelProperty(value = "变更后项目经理")
private Long postChangeProjectManager;
/**
* 变更后项目经理名称
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "postChangeProjectManager")
@ExcelProperty(value = "变更后项目经理名称")
private String postChangeProjectManagerName;
/**
* 变更后项目责任人
*/
@ExcelProperty(value = "变更后项目责任人")
private Long postChangeProjectOwner;
/**
* 变更后项目责任人名成
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "postChangeProjectOwner")
@ExcelProperty(value = "变更后项目责任人")
private String postChangeProjectOwnerName;
/**
* 变更后现场经理
*/
@ExcelProperty(value = "变更后现场经理")
private Long postChangeSiteManager;
/**
* 变更后现场经理
*/
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "postChangeSiteManager")
@ExcelProperty(value = "变更后现场经理")
private Long postChangeSiteManagerName;
/**
* 变更后合同备注
*/
@ -318,6 +346,10 @@ public class XzdSubcontractChangeVo implements Serializable {
*/
private XzdContractDepositInfo htzytkyd;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;

View File

@ -1,5 +1,6 @@
package org.dromara.xzd.contractManagement.fenbaohetongbiangg.service.impl;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
@ -10,7 +11,10 @@ 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.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.contractManagement.caigouhetongbiangeng.domain.vo.XzdPurchaseContractAlterationVo;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.service.IXzdSubcontractService;
@ -65,6 +69,9 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
@Autowired
private XzdSettlementRulesServiceImpl xzdSettlementRulesService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
/**
* 查询分包合同变更
@ -84,6 +91,13 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
private void setValue(List<XzdSubcontractChangeVo> lists) {
for (XzdSubcontractChangeVo item : lists) {
// 合同编号名称
XzdSubcontractVo xzdSubcontractVo = iXzdSubcontractService.queryById(item.getContractCode());
if (xzdSubcontractVo != null) {
item.setContractCodeName(xzdSubcontractVo.getContractCode());
}
//合同文本-预收款项
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(XzdContractAdvanceInfo::getContractDetailsId, item.getId());
@ -115,6 +129,10 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
// item.setHtzytkyd(list3);
//合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, item.getId()));
item.setHtbgqds(list4);
}
}
@ -129,6 +147,7 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
public TableDataInfo<XzdSubcontractChangeVo> queryPageList(XzdSubcontractChangeBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSubcontractChange> lqw = buildQueryWrapper(bo);
Page<XzdSubcontractChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
setValue(result.getRecords());
return TableDataInfo.build(result);
}
@ -160,11 +179,7 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
lqw.like(StringUtils.isNotBlank(bo.getContractName()), XzdSubcontractChange::getContractName, bo.getContractName());
lqw.eq(StringUtils.isNotBlank(bo.getContractType()), XzdSubcontractChange::getContractType, bo.getContractType());
lqw.eq(StringUtils.isNotBlank(bo.getChangeType()), XzdSubcontractChange::getChangeType, bo.getChangeType());
lqw.eq(StringUtils.isNotBlank(bo.getProject()), XzdSubcontractChange::getProject, bo.getProject());
lqw.eq(StringUtils.isNotBlank(bo.getBusinessModel()), XzdSubcontractChange::getBusinessModel, bo.getBusinessModel());
lqw.eq(StringUtils.isNotBlank(bo.getOrganization()), XzdSubcontractChange::getOrganization, bo.getOrganization());
lqw.eq(StringUtils.isNotBlank(bo.getPartyAUnit()), XzdSubcontractChange::getPartyAUnit, bo.getPartyAUnit());
lqw.eq(StringUtils.isNotBlank(bo.getPartyBUnit()), XzdSubcontractChange::getPartyBUnit, bo.getPartyBUnit());
lqw.eq(bo.getOriginalContractCost() != null, XzdSubcontractChange::getOriginalContractCost, bo.getOriginalContractCost());
lqw.eq(bo.getChangeTaxInclusiveTotal() != null, XzdSubcontractChange::getChangeTaxInclusiveTotal, bo.getChangeTaxInclusiveTotal());
lqw.eq(bo.getPostChangeTotalCost() != null, XzdSubcontractChange::getPostChangeTotalCost, bo.getPostChangeTotalCost());
@ -203,6 +218,8 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
public Boolean insertByBo(XzdSubcontractChangeBo bo) {
XzdSubcontractChange add = MapstructUtils.convert(bo, XzdSubcontractChange.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("FBHTBG-");
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
String tableName = XzdClassEnum.CAIGOUHETONG_INFORMATION.getClassName();
@ -235,6 +252,12 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
item.setContractDetailsId(add.getId());
});
iXzdContractClauseService.saveBatch(httk);
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
if (flag) {
bo.setId(add.getId());
}
@ -293,7 +316,12 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
});
iXzdContractClauseService.saveBatch(httk);
}
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(bo.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
@ -349,7 +377,7 @@ public class XzdSubcontractChangeServiceImpl extends ServiceImpl<XzdSubcontractC
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -61,7 +61,7 @@ public class XzdSubcontractController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("fenbaohetongxinxi:subcontract:query")
// @SaCheckPermission("fenbaohetongxinxi:subcontract:query")
@GetMapping("/{id}")
public R<XzdSubcontractVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -161,7 +161,7 @@ public class XzdSubcontract extends BaseEntity {
/**
* 项目类型(字典)
*/
private String projectType;
private Long projectType;
/**
* 项目大类(字典)

View File

@ -1,5 +1,7 @@
package org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.bo;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.XzdSubcontract;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
@ -164,7 +166,7 @@ public class XzdSubcontractBo extends BaseEntity {
/**
* 项目类型(字典)
*/
private String projectType;
private Long projectType;
/**
* 项目大类(字典)
@ -286,5 +288,10 @@ public class XzdSubcontractBo extends BaseEntity {
*/
private XzdContractDepositInfo htzytkyd;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
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.XzdHtglHthzsj;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.XzdSubcontract;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
@ -249,6 +251,7 @@ public class XzdSubcontractVo implements Serializable {
/**
* 签约组织名称
*/
@Translation(type = TransConstant.DEPT_ID_TO_NAME, mapper = "signingOrganization")
@ExcelProperty(value = "签约组织名称")
private String signingOrganizationName;
@ -257,7 +260,7 @@ public class XzdSubcontractVo implements Serializable {
*/
@ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "字=典")
private String projectType;
private Long projectType;
/**
* 项目大类(字典)
@ -438,5 +441,9 @@ public class XzdSubcontractVo implements Serializable {
private XzdContractDepositInfo htzytkyd;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
}

View File

@ -10,7 +10,10 @@ 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.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
import org.dromara.xzd.domain.*;
@ -74,6 +77,9 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
private final AreaUtil areaUtil;
/**
@ -132,7 +138,6 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
}
//管理组织(供应商)
String unitName = xzdSupplierInfoService.queryNameById(item.getPartyBUnit());
if (unitName != null){
item.setManagementOrganizationName(unitName);
}
@ -141,19 +146,13 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
if (unitName1 != null){
item.setInvoicingUnitName(unitName1);
}
//收票单位名称(客户名称)
R<QuerCorrespondentDto> byid2 = iXzdCorrespondentList.getCustomerByid(item.getTicketReceivingUnit());
if (byid2!=null){
if (byid2.getData().getXzdCustomerinformation() != null){
item.setTicketReceivingUnitName(byid2.getData().getXzdCustomerinformation().getUnitName());
}
//收票单位名称(供应商名称)
String unitName2 = xzdSupplierInfoService.queryNameById(item.getTicketReceivingUnit());
if (unitName2 != null){
item.setTicketReceivingUnitName(unitName2);
}
//签约组织(供应商)
String unitName2 = xzdSupplierInfoService.queryNameById(item.getSigningOrganization());
if (unitName2!= null){
item.setSigningOrganizationName(unitName2);
}
//合同文本-预收款项
// //合同文本-预收款项
LambdaQueryWrapper<XzdContractAdvanceInfo> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(XzdContractAdvanceInfo::getContractDetailsId, item.getId());
List<XzdContractAdvanceInfo> advanceInfos = xzdContractAdvanceInfoService.list(lambdaQueryWrapper);
@ -183,6 +182,10 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
XzdContractDepositInfo list3 = xzdContractDepositInfoService.getOne(lambdaQueryWrapper4);
item.setHtzytkyd(list3);
//合同变更清单
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, item.getId()));
item.setHtbgqds(list4);
}
@ -234,7 +237,7 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
lqw.eq(StringUtils.isNotBlank(bo.getRemarks()), XzdSubcontract::getRemarks, bo.getRemarks());
lqw.eq(StringUtils.isNotBlank(bo.getCapitalizedTaxInclusiveTotal()), XzdSubcontract::getCapitalizedTaxInclusiveTotal, bo.getCapitalizedTaxInclusiveTotal());
lqw.eq(bo.getSigningOrganization() != null, XzdSubcontract::getSigningOrganization, bo.getSigningOrganization());
lqw.eq(StringUtils.isNotBlank(bo.getProjectType()), XzdSubcontract::getProjectType, bo.getProjectType());
lqw.eq(bo.getProjectType() != null, XzdSubcontract::getProjectType, bo.getProjectType());
lqw.eq(StringUtils.isNotBlank(bo.getProjectCategory()), XzdSubcontract::getProjectCategory, bo.getProjectCategory());
lqw.eq(StringUtils.isNotBlank(bo.getAssociatedMainContract()), XzdSubcontract::getAssociatedMainContract, bo.getAssociatedMainContract());
lqw.eq(bo.getIsSubContract() != null, XzdSubcontract::getIsSubContract, bo.getIsSubContract());
@ -266,10 +269,10 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
public Boolean insertByBo(XzdSubcontractBo bo) {
XzdSubcontract add = MapstructUtils.convert(bo, XzdSubcontract.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdSubcontract>().gt(XzdSubcontract::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumberByY();
String banBen = BatchNumberGenerator.generateBatchNumber("FBHTXX-");
add.setContractCode(ZxdEnum.FENBAOHETONG_PREFIX.getTypeValue()+"-"+s+"-"+(l+1));
add.setContractCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
// 表名
String tableName = XzdClassEnum.FENBAOHETONG_INFORMATION.getClassName();
@ -306,7 +309,11 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
bo.getHtzytkyd().setContractDetailsId(add.getId());
xzdContractDepositInfoService.save(bo.getHtzytkyd());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
if (flag) {
bo.setId(add.getId());
@ -379,6 +386,11 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
bo.getHtzytkyd().setTableName(XzdClassEnum.PURCHASE_CONTRACT_INFORMATION.getClassName());
xzdContractDepositInfoService.saveOrUpdate(bo.getHtzytkyd());
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().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;
}
@ -435,6 +447,8 @@ public class XzdSubcontractServiceImpl extends ServiceImpl<XzdSubcontractMapper,
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -9,9 +9,12 @@ 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.contractManagement.caigoucontractTermination.domain.XzdPurchaseContractSuspend;
import org.dromara.xzd.contractManagement.caigoucontractTermination.domain.vo.XzdPurchaseContractSuspendVo;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.domain.vo.XzdSubcontractVo;
import org.dromara.xzd.contractManagement.fenbaohetongxinxi.service.IXzdSubcontractService;
import org.dromara.xzd.utilS.AreaUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -40,6 +43,7 @@ public class XzdSubcontractTerminationServiceImpl extends ServiceImpl<XzdSubcont
private final XzdSubcontractTerminationMapper baseMapper;
private final AreaUtil areaUtil;
private final IXzdSubcontractService iXzdSubcontractService;
@Autowired
private SysOssServiceImpl sysOssService;
@ -53,8 +57,20 @@ public class XzdSubcontractTerminationServiceImpl extends ServiceImpl<XzdSubcont
@Override
public XzdSubcontractTerminationVo queryById(Long id){
XzdSubcontractTerminationVo vo = baseMapper.selectVoById(id);
List.of(vo);
return baseMapper.selectVoById(id);
List<XzdSubcontractTerminationVo> res = List.of(vo);
saveValue(res);
return res.getFirst();
}
private void saveValue(List<XzdSubcontractTerminationVo> res) {
for (XzdSubcontractTerminationVo vo : res) {
XzdSubcontractVo xzdSubcontractVo = iXzdSubcontractService.queryById(vo.getContractNumber());
if (xzdSubcontractVo != null) {
vo.setContractNumberName(xzdSubcontractVo.getContractCode());
}
}
}
/**
@ -68,6 +84,7 @@ public class XzdSubcontractTerminationServiceImpl extends ServiceImpl<XzdSubcont
public TableDataInfo<XzdSubcontractTerminationVo> queryPageList(XzdSubcontractTerminationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdSubcontractTermination> lqw = buildQueryWrapper(bo);
Page<XzdSubcontractTerminationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
saveValue(result.getRecords());
return TableDataInfo.build(result);
}
@ -117,10 +134,8 @@ public class XzdSubcontractTerminationServiceImpl extends ServiceImpl<XzdSubcont
public Boolean insertByBo(XzdSubcontractTerminationBo bo) {
XzdSubcontractTermination add = MapstructUtils.convert(bo, XzdSubcontractTermination.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdSubcontractTermination>().gt(XzdSubcontractTermination::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentCode(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("FBHTZZ-");
add.setDocumentCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -14,6 +14,8 @@ import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.domain.*;
@ -310,4 +312,14 @@ public class XzdPurchaseContractInformationBo extends BaseEntity {
private XzdContractDepositInfo htzytkyd;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 汇总数据
*/
private List<XzdHtglHthzsj> htghthzsjs;
}

View File

@ -15,6 +15,8 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
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.XzdHtglHthzsj;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.domain.*;
@ -465,6 +467,16 @@ public class XzdPurchaseContractInformationVo implements Serializable {
private XzdContractDepositInfo htzytkyd;
/**
* 合同变更清单
*/
private List<XzdHtglHtbgqd> htbgqds;
/**
* 汇总数据
*/
private List<XzdHtglHthzsj> htghthzsjs;
}

View File

@ -12,8 +12,13 @@ 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.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.comprehensive.domain.XzdHtglHtbgqd;
import org.dromara.xzd.comprehensive.domain.XzdHtglHthzsj;
import org.dromara.xzd.comprehensive.service.IXzdHtglHtbgqdService;
import org.dromara.xzd.comprehensive.service.IXzdHtglHthzsjService;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.XzdPurchaseContractInformation;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.bo.XzdPurchaseContractInformationBo;
import org.dromara.xzd.contractManagement.purchaseManagement.domain.vo.XzdPurchaseContractInformationVo;
@ -74,6 +79,10 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
private XzdBusinessSealServiceImpl xzdBusinessSealService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private IXzdHtglHtbgqdService xzdHtglHtbgqdService;
@Autowired
private IXzdHtglHthzsjService xzdHtglHthzsjService;
private final AreaUtil areaUtil;
@ -200,9 +209,8 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
public Boolean insertByBo(XzdPurchaseContractInformationBo bo) {
XzdPurchaseContractInformation add = MapstructUtils.convert(bo, XzdPurchaseContractInformation.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdPurchaseContractInformation>().gt(XzdPurchaseContractInformation::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumberByY();
add.setContractCode(ZxdEnum.PURCHASE_PREFIX.getTypeValue()+"-"+s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("CGHTXX-");
add.setContractCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
String tableName = XzdClassEnum.PURCHASE_CONTRACT_INFORMATION.getClassName();
//合同文本-预收款项
@ -237,10 +245,18 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
bo.getHtzytkyd().setContractDetailsId(add.getId());
xzdContractDepositInfoService.save(bo.getHtzytkyd());
//合同变更清单
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//汇总数据
if (bo.getHtghthzsjs() != null && !bo.getHtghthzsjs().isEmpty()) {
bo.getHtghthzsjs().forEach(item->{item.setMainDocumentId(add.getId());});
xzdHtglHthzsjService.saveBatch(bo.getHtghthzsjs());
}
return flag;
}
/**
* 修改采购合同信息
*
@ -299,12 +315,21 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
item.setContractDetailsId(bo.getId()));
}
xzdSettlementRulesService.saveOrUpdateBatch(bo.getZftk());
bo.getHtzytkyd().setTableName(XzdClassEnum.PURCHASE_CONTRACT_INFORMATION.getClassName());
xzdContractDepositInfoService.saveOrUpdate(bo.getHtzytkyd());
//合同变更清单
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId,bo.getId()));
if (bo.getHtbgqds() != null && !bo.getHtbgqds().isEmpty()) {
bo.getHtbgqds().forEach(item->{item.setMainDocumentId(bo.getId());});
xzdHtglHtbgqdService.saveBatch(bo.getHtbgqds());
}
//汇总数据
xzdHtglHthzsjService.remove(new LambdaQueryWrapper<XzdHtglHthzsj>().eq(XzdHtglHthzsj::getMainDocumentId,bo.getId()));
if (bo.getHtghthzsjs() != null && !bo.getHtghthzsjs().isEmpty()) {
bo.getHtghthzsjs().forEach(item->{item.setMainDocumentId(bo.getId());});
xzdHtglHthzsjService.saveBatch(bo.getHtghthzsjs());
}
return baseMapper.updateById(update) > 0;
}
@ -315,7 +340,6 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
private void validEntityBeforeSave(XzdPurchaseContractInformation entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除采购合同信息信息
*
@ -359,6 +383,10 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
LambdaQueryWrapper<XzdSettlementRules> lambdaQueryWrapper3 = new LambdaQueryWrapper<>();
lambdaQueryWrapper3.in(XzdSettlementRules::getContractDetailsId, ids);
xzdSettlementRulesService.remove(lambdaQueryWrapper3);
xzdHtglHtbgqdService.remove(new LambdaQueryWrapper<XzdHtglHtbgqd>().in(XzdHtglHtbgqd::getMainDocumentId,ids));
xzdHtglHthzsjService.remove(new LambdaQueryWrapper<XzdHtglHthzsj>().in(XzdHtglHthzsj::getMainDocumentId,ids));
return baseMapper.deleteByIds(ids) > 0;
}
@ -379,6 +407,13 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
item.setProjectName(projectName);
}
}
//其他收入合同项目名称
if (item.getOtherIncomeContractProject() != null){
String projectName = xzdProjectService.queryNameById(item.getOtherIncomeContractProject());
if (projectName != null){
item.setOtherIncomeContractProjectName(projectName);
}
}
//甲方单位(客户信息列表)
R<QuerCorrespondentDto> byid = iXzdCorrespondentList.getCustomerByid(item.getPartyAUnit());
if (byid!=null){
@ -452,6 +487,10 @@ public class XzdPurchaseContractInformationServiceImpl extends ServiceImpl<XzdPu
XzdContractDepositInfo list3 = xzdContractDepositInfoService.getOne(lambdaQueryWrapper4);
item.setHtzytkyd(list3);
List<XzdHtglHtbgqd> list4 = xzdHtglHtbgqdService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHtbgqd>().eq(XzdHtglHtbgqd::getMainDocumentId, item.getId()));
item.setHtbgqds(list4);
List<XzdHtglHthzsj> xzdHtglHthzsjs = xzdHtglHthzsjService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdHtglHthzsj>().eq(XzdHtglHthzsj::getMainDocumentId, item.getId()));
item.setHtghthzsjs(xzdHtglHthzsjs);
}

View File

@ -61,7 +61,7 @@ public class XzdContractChangeController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("xzd:contractChange:query")
// @SaCheckPermission("xzd:contractChange:query")
@GetMapping("/{id}")
public R<XzdContractChangeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {

View File

@ -0,0 +1,105 @@
package org.dromara.xzd.costProjectApproval.costBudget.controller;
import java.util.List;
import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.web.core.BaseController;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbAlterationVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbAlterationBo;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbAlterationService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 立项及成本-成本预算-总体计划成本变更
*
* @author Lion Li
* @date 2025-10-17
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/costBudget/cbysZjhcbAlteration")
public class XzdCbysZjhcbAlterationController extends BaseController {
private final IXzdCbysZjhcbAlterationService xzdCbysZjhcbAlterationService;
/**
* 查询立项及成本-成本预算-总体计划成本变更列表
*/
@SaCheckPermission("costBudget:cbysZjhcbAlteration:list")
@GetMapping("/list")
public TableDataInfo<XzdCbysZjhcbAlterationVo> list(XzdCbysZjhcbAlterationBo bo, PageQuery pageQuery) {
return xzdCbysZjhcbAlterationService.queryPageList(bo, pageQuery);
}
/**
* 导出立项及成本-成本预算-总体计划成本变更列表
*/
@SaCheckPermission("costBudget:cbysZjhcbAlteration:export")
@Log(title = "立项及成本-成本预算-总体计划成本变更", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(XzdCbysZjhcbAlterationBo bo, HttpServletResponse response) {
List<XzdCbysZjhcbAlterationVo> list = xzdCbysZjhcbAlterationService.queryList(bo);
ExcelUtil.exportExcel(list, "立项及成本-成本预算-总体计划成本变更", XzdCbysZjhcbAlterationVo.class, response);
}
/**
* 获取立项及成本-成本预算-总体计划成本变更详细信息
*
* @param id 主键
*/
@SaCheckPermission("costBudget:cbysZjhcbAlteration:query")
@GetMapping("/{id}")
public R<XzdCbysZjhcbAlterationVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(xzdCbysZjhcbAlterationService.queryById(id));
}
/**
* 新增立项及成本-成本预算-总体计划成本变更
*/
@SaCheckPermission("costBudget:cbysZjhcbAlteration:add")
@Log(title = "立项及成本-成本预算-总体计划成本变更", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody XzdCbysZjhcbAlterationBo bo) {
return toAjax(xzdCbysZjhcbAlterationService.insertByBo(bo));
}
/**
* 修改立项及成本-成本预算-总体计划成本变更
*/
@SaCheckPermission("costBudget:cbysZjhcbAlteration:edit")
@Log(title = "立项及成本-成本预算-总体计划成本变更", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody XzdCbysZjhcbAlterationBo bo) {
return toAjax(xzdCbysZjhcbAlterationService.updateByBo(bo));
}
/**
* 删除立项及成本-成本预算-总体计划成本变更
*
* @param ids 主键串
*/
@SaCheckPermission("costBudget:cbysZjhcbAlteration:remove")
@Log(title = "立项及成本-成本预算-总体计划成本变更", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(xzdCbysZjhcbAlterationService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,153 @@
package org.dromara.xzd.costProjectApproval.costBudget.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_cbys_zjhcb_alteration
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("xzd_cbys_zjhcb_alteration")
public class XzdCbysZjhcbAlteration extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 单据编码(带*,必填)
*/
private String docCode;
/**
* 单据标题(带*,必填)
*/
private String docTitle;
/**
* 单据日期
*/
private LocalDate docDate;
/**
* 工程项目(带*,必填)
*/
private Long projectId;
/**
* 预算分类(带*,必填)
*/
private String budgetCategory;
/**
* 总不含税金额
*/
private BigDecimal totalTaxExclAmount;
/**
* 总税额
*/
private BigDecimal totalTaxAmount;
/**
* 总含税金额
*/
private BigDecimal totalTaxInclAmount;
/**
* 项目责任人
*/
private Long projectLeader;
/**
* 执行项目经理
*/
private Long execProjectManager;
/**
* 承包合同金额(带*,必填)
*/
private BigDecimal contractAmount;
/**
* 税务成本
*/
private BigDecimal taxCost;
/**
* 利润率
*/
private BigDecimal profitRate;
/**
* 利润金额
*/
private BigDecimal profitAmount;
/**
* 变更理由
*/
private String alterationReason;
/**
* 备注
*/
private String remark;
/**
* 启用成本预控模式0=未启用1=启用)
*/
private Long enableCostPrecontrol;
/**
* 成本控制模式如WBS+CBS
*/
private String costControlMode;
/**
* 外币含税类型
*/
private String foreignCurrencyTaxType;
/**
* 禁止标识
*/
private String forbidFlag;
/**
* 启用按科目属性分页签编制模式0=未启用1=启用)
*/
private Long enableAccountAttrTab;
/**
* 启用物料组编制模式0=未启用1=启用)
*/
private Long enableMaterialGroup;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
}

View File

@ -0,0 +1,175 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.bo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbAlteration;
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.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
/**
* 立项及成本-成本预算-总体计划成本变更业务对象 xzd_cbys_zjhcb_alteration
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = XzdCbysZjhcbAlteration.class, reverseConvertGenerate = false)
public class XzdCbysZjhcbAlterationBo extends BaseEntity {
/**
* 主键ID
*/
private Long id;
/**
* 单据编码(带*,必填)
*/
private String docCode;
/**
* 单据标题(带*,必填)
*/
@NotBlank(message = "单据标题(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String docTitle;
/**
* 单据日期
*/
private LocalDate docDate;
/**
* 工程项目(带*,必填)
*/
@NotNull(message = "工程项目(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long projectId;
/**
* 预算分类(带*,必填)
*/
@NotBlank(message = "预算分类(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private String budgetCategory;
/**
* 总不含税金额
*/
private BigDecimal totalTaxExclAmount;
/**
* 总税额
*/
private BigDecimal totalTaxAmount;
/**
* 总含税金额
*/
private BigDecimal totalTaxInclAmount;
/**
* 项目责任人
*/
private Long projectLeader;
/**
* 执行项目经理
*/
private Long execProjectManager;
/**
* 承包合同金额(带*,必填)
*/
@NotNull(message = "承包合同金额(带*,必填)不能为空", groups = { AddGroup.class, EditGroup.class })
private BigDecimal contractAmount;
/**
* 税务成本
*/
private BigDecimal taxCost;
/**
* 利润率
*/
private BigDecimal profitRate;
/**
* 利润金额
*/
private BigDecimal profitAmount;
/**
* 变更理由
*/
private String alterationReason;
/**
* 备注
*/
private String remark;
/**
* 启用成本预控模式0=未启用1=启用)
*/
private Long enableCostPrecontrol;
/**
* 成本控制模式如WBS+CBS
*/
private String costControlMode;
/**
* 外币含税类型
*/
private String foreignCurrencyTaxType;
/**
* 禁止标识
*/
private String forbidFlag;
/**
* 启用按科目属性分页签编制模式0=未启用1=启用)
*/
private Long enableAccountAttrTab;
/**
* 启用物料组编制模式0=未启用1=启用)
*/
private Long enableMaterialGroup;
/**
* 单据引用
*/
private String documentReference;
/**
* 文件ID
*/
private String fileId;
/**
* 变更记录
*/
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjl;
/**
* 成本明细
*/
List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiao;
/**
* 税收成本
*/
List<XzdCbysSscb> xzdCbysSscb;
}

View File

@ -27,13 +27,11 @@ public class XzdCbysZjhcbBo extends BaseEntity {
/**
* 主键ID
*/
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
private Long id;
/**
* 单据编码(带*,必填)
*/
@NotBlank(message = "单据编码(带*,必填)不能为空", groups = { EditGroup.class })
private String docCode;
/**

View File

@ -0,0 +1,235 @@
package org.dromara.xzd.costProjectApproval.costBudget.domain.vo;
import java.math.BigDecimal;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbAlteration;
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.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;
/**
* 立项及成本-成本预算-总体计划成本变更视图对象 xzd_cbys_zjhcb_alteration
*
* @author Lion Li
* @date 2025-10-17
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = XzdCbysZjhcbAlteration.class)
public class XzdCbysZjhcbAlterationVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@ExcelProperty(value = "主键ID")
private Long id;
/**
* 单据编码(带*,必填)
*/
@ExcelProperty(value = "单据编码", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String docCode;
/**
* 单据标题(带*,必填)
*/
@ExcelProperty(value = "单据标题", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String docTitle;
/**
* 单据日期
*/
@ExcelProperty(value = "单据日期")
private LocalDate docDate;
/**
* 工程项目(带*,必填)
*/
@ExcelProperty(value = "工程项目", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private Long projectId;
/**
* 工程项目名称
*/
private String projectName;
/**
* 预算分类(带*,必填)
*/
@ExcelProperty(value = "预算分类", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private String budgetCategory;
/**
* 总不含税金额
*/
@ExcelProperty(value = "总不含税金额")
private BigDecimal totalTaxExclAmount;
/**
* 总税额
*/
@ExcelProperty(value = "总税额")
private BigDecimal totalTaxAmount;
/**
* 总含税金额
*/
@ExcelProperty(value = "总含税金额")
private BigDecimal totalTaxInclAmount;
/**
* 项目责任人
*/
@ExcelProperty(value = "项目责任人")
private Long projectLeader;
/**
* 项目责任人名称
*/
@ExcelProperty(value = "项目责任人名称")
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "projectLeader")
private String projectLeaderName;
/**
* 执行项目经理
*/
@ExcelProperty(value = "执行项目经理")
private Long execProjectManager;
/**
* 执行项目经理名称
*/
@ExcelProperty(value = "执行项目经理名称")
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "execProjectManager")
private String execProjectManagerName;
/**
* 承包合同金额(带*,必填)
*/
@ExcelProperty(value = "承包合同金额", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "带=*,必填")
private BigDecimal contractAmount;
/**
* 税务成本
*/
@ExcelProperty(value = "税务成本")
private BigDecimal taxCost;
/**
* 利润率
*/
@ExcelProperty(value = "利润率")
private BigDecimal profitRate;
/**
* 利润金额
*/
@ExcelProperty(value = "利润金额")
private BigDecimal profitAmount;
/**
* 变更理由
*/
@ExcelProperty(value = "变更理由")
private String alterationReason;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* 启用成本预控模式0=未启用1=启用)
*/
@ExcelProperty(value = "启用成本预控模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==未启用1=启用")
private Long enableCostPrecontrol;
/**
* 成本控制模式如WBS+CBS
*/
@ExcelProperty(value = "成本控制模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "如=WBS+CBS")
private String costControlMode;
/**
* 外币含税类型
*/
@ExcelProperty(value = "外币含税类型")
private String foreignCurrencyTaxType;
/**
* 禁止标识
*/
@ExcelProperty(value = "禁止标识")
private String forbidFlag;
/**
* 启用按科目属性分页签编制模式0=未启用1=启用)
*/
@ExcelProperty(value = "启用按科目属性分页签编制模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==未启用1=启用")
private Long enableAccountAttrTab;
/**
* 启用物料组编制模式0=未启用1=启用)
*/
@ExcelProperty(value = "启用物料组编制模式", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0==未启用1=启用")
private Long enableMaterialGroup;
/**
* 单据引用
*/
@ExcelProperty(value = "单据引用")
private String documentReference;
/**
* 文件ID
*/
@ExcelProperty(value = "文件ID")
private String fileId;
/**
* 变更记录
*/
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjl;
/**
* 成本明细
*/
List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiao;
/**
* 税收成本
*/
List<XzdCbysSscb> xzdCbysSscb;
}

View File

@ -0,0 +1,15 @@
package org.dromara.xzd.costProjectApproval.costBudget.mapper;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbAlteration;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbAlterationVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 立项及成本-成本预算-总体计划成本变更Mapper接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface XzdCbysZjhcbAlterationMapper extends BaseMapperPlus<XzdCbysZjhcbAlteration, XzdCbysZjhcbAlterationVo> {
}

View File

@ -0,0 +1,70 @@
package org.dromara.xzd.costProjectApproval.costBudget.service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbAlterationVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbAlterationBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbAlteration;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Collection;
import java.util.List;
/**
* 立项及成本-成本预算-总体计划成本变更Service接口
*
* @author Lion Li
* @date 2025-10-17
*/
public interface IXzdCbysZjhcbAlterationService extends IService<XzdCbysZjhcbAlteration>{
/**
* 查询立项及成本-成本预算-总体计划成本变更
*
* @param id 主键
* @return 立项及成本-成本预算-总体计划成本变更
*/
XzdCbysZjhcbAlterationVo queryById(Long id);
/**
* 分页查询立项及成本-成本预算-总体计划成本变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-总体计划成本变更分页列表
*/
TableDataInfo<XzdCbysZjhcbAlterationVo> queryPageList(XzdCbysZjhcbAlterationBo bo, PageQuery pageQuery);
/**
* 查询符合条件的立项及成本-成本预算-总体计划成本变更列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-总体计划成本变更列表
*/
List<XzdCbysZjhcbAlterationVo> queryList(XzdCbysZjhcbAlterationBo bo);
/**
* 新增立项及成本-成本预算-总体计划成本变更
*
* @param bo 立项及成本-成本预算-总体计划成本变更
* @return 是否新增成功
*/
Boolean insertByBo(XzdCbysZjhcbAlterationBo bo);
/**
* 修改立项及成本-成本预算-总体计划成本变更
*
* @param bo 立项及成本-成本预算-总体计划成本变更
* @return 是否修改成功
*/
Boolean updateByBo(XzdCbysZjhcbAlterationBo bo);
/**
* 校验并批量删除立项及成本-成本预算-总体计划成本变更信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@ -91,6 +91,10 @@ public class XzdCbysWgcbtbServiceImpl extends ServiceImpl<XzdCbysWgcbtbMapper, X
item.setProjectName(projectName);
}
}
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("main_doc_id", item.getId());
List<XzdCbysWgcbtbFubiao> list = fubiaoService.getBaseMapper().selectByMap(hashMap);
item.setXzdCbysWgcbtbFubiao(list);
}
@ -141,7 +145,7 @@ public class XzdCbysWgcbtbServiceImpl extends ServiceImpl<XzdCbysWgcbtbMapper, X
public Boolean insertByBo(XzdCbysWgcbtbBo bo) {
XzdCbysWgcbtb add = MapstructUtils.convert(bo, XzdCbysWgcbtb.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("CBTB");
String banBen = BatchNumberGenerator.generateBatchNumber("WGCBTB");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -0,0 +1,258 @@
package org.dromara.xzd.costProjectApproval.costBudget.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.ISysUserService;
import org.dromara.system.service.impl.SysOssServiceImpl;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysSscb;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysWgcbtbFubiao;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZtjhcbBgjl;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbVo;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysSscbService;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysWgcbtbFubiaoService;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZtjhcbBgjlService;
import org.dromara.xzd.service.impl.XzdProjectServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.dromara.xzd.costProjectApproval.costBudget.domain.bo.XzdCbysZjhcbAlterationBo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.vo.XzdCbysZjhcbAlterationVo;
import org.dromara.xzd.costProjectApproval.costBudget.domain.XzdCbysZjhcbAlteration;
import org.dromara.xzd.costProjectApproval.costBudget.mapper.XzdCbysZjhcbAlterationMapper;
import org.dromara.xzd.costProjectApproval.costBudget.service.IXzdCbysZjhcbAlterationService;
import java.util.*;
/**
* 立项及成本-成本预算-总体计划成本变更Service业务层处理
*
* @author Lion Li
* @date 2025-10-17
*/
@RequiredArgsConstructor
@Service
public class XzdCbysZjhcbAlterationServiceImpl extends ServiceImpl<XzdCbysZjhcbAlterationMapper, XzdCbysZjhcbAlteration> implements IXzdCbysZjhcbAlterationService {
private final XzdCbysZjhcbAlterationMapper baseMapper;
@Autowired
private IXzdCbysZtjhcbBgjlService xzdCbysZtjhcbBgjlService;
@Autowired
private IXzdCbysSscbService xzdCbysSscbService;
@Autowired
private IXzdCbysWgcbtbFubiaoService fubiaoService;
@Autowired
private SysOssServiceImpl sysOssService;
@Autowired
private XzdProjectServiceImpl xzdProjectService;
@Autowired
private ISysUserService sysUserService;
/**
* 查询立项及成本-成本预算-总体计划成本变更
*
* @param id 主键
* @return 立项及成本-成本预算-总体计划成本变更
*/
@Override
public XzdCbysZjhcbAlterationVo queryById(Long id){
XzdCbysZjhcbAlterationVo vo = baseMapper.selectVoById(id);
getName(vo);
getHttk(vo);
return vo;
}
/**
* 分页查询立项及成本-成本预算-总体计划成本变更列表
*
* @param bo 查询条件
* @param pageQuery 分页参数
* @return 立项及成本-成本预算-总体计划成本变更分页列表
*/
@Override
public TableDataInfo<XzdCbysZjhcbAlterationVo> queryPageList(XzdCbysZjhcbAlterationBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<XzdCbysZjhcbAlteration> lqw = buildQueryWrapper(bo);
Page<XzdCbysZjhcbAlterationVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().forEach(this::getName);
return TableDataInfo.build(result);
}
/**
* 查询符合条件的立项及成本-成本预算-总体计划成本变更列表
*
* @param bo 查询条件
* @return 立项及成本-成本预算-总体计划成本变更列表
*/
@Override
public List<XzdCbysZjhcbAlterationVo> queryList(XzdCbysZjhcbAlterationBo bo) {
LambdaQueryWrapper<XzdCbysZjhcbAlteration> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
/**
* 获取部分字段名称
* @param item
*/
private void getName(XzdCbysZjhcbAlterationVo item) {
//项目名称
if (item.getProjectId() != null){
String projectName = xzdProjectService.queryNameById(item.getProjectId());
if (projectName != null){
item.setProjectName(projectName);
}
}
}
// 回填数据
private void getHttk(XzdCbysZjhcbAlterationVo vo) {
List<XzdCbysZtjhcbBgjl> xzdCbysZtjhcbBgjls = xzdCbysZtjhcbBgjlService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, vo.getId()));
vo.setXzdCbysZtjhcbBgjl(xzdCbysZtjhcbBgjls);
List<XzdCbysSscb> xzdCbysSscbs = xzdCbysSscbService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, vo.getId()));
vo.setXzdCbysSscb(xzdCbysSscbs);
List<XzdCbysWgcbtbFubiao> xzdCbysWgcbtbFubiaos = fubiaoService.getBaseMapper().selectList(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().eq(XzdCbysWgcbtbFubiao::getMainDocId, vo.getId()));
vo.setXzdCbysWgcbtbFubiao(xzdCbysWgcbtbFubiaos);
}
private LambdaQueryWrapper<XzdCbysZjhcbAlteration> buildQueryWrapper(XzdCbysZjhcbAlterationBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<XzdCbysZjhcbAlteration> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(XzdCbysZjhcbAlteration::getId);
lqw.eq(StringUtils.isNotBlank(bo.getDocCode()), XzdCbysZjhcbAlteration::getDocCode, bo.getDocCode());
lqw.eq(StringUtils.isNotBlank(bo.getDocTitle()), XzdCbysZjhcbAlteration::getDocTitle, bo.getDocTitle());
lqw.eq(bo.getDocDate() != null, XzdCbysZjhcbAlteration::getDocDate, bo.getDocDate());
lqw.eq(bo.getProjectId() != null, XzdCbysZjhcbAlteration::getProjectId, bo.getProjectId());
lqw.eq(StringUtils.isNotBlank(bo.getBudgetCategory()), XzdCbysZjhcbAlteration::getBudgetCategory, bo.getBudgetCategory());
lqw.eq(bo.getTotalTaxExclAmount() != null, XzdCbysZjhcbAlteration::getTotalTaxExclAmount, bo.getTotalTaxExclAmount());
lqw.eq(bo.getTotalTaxAmount() != null, XzdCbysZjhcbAlteration::getTotalTaxAmount, bo.getTotalTaxAmount());
lqw.eq(bo.getTotalTaxInclAmount() != null, XzdCbysZjhcbAlteration::getTotalTaxInclAmount, bo.getTotalTaxInclAmount());
lqw.eq(bo.getProjectLeader() != null, XzdCbysZjhcbAlteration::getProjectLeader, bo.getProjectLeader());
lqw.eq(bo.getExecProjectManager() != null, XzdCbysZjhcbAlteration::getExecProjectManager, bo.getExecProjectManager());
lqw.eq(bo.getContractAmount() != null, XzdCbysZjhcbAlteration::getContractAmount, bo.getContractAmount());
lqw.eq(bo.getTaxCost() != null, XzdCbysZjhcbAlteration::getTaxCost, bo.getTaxCost());
lqw.eq(bo.getProfitRate() != null, XzdCbysZjhcbAlteration::getProfitRate, bo.getProfitRate());
lqw.eq(bo.getProfitAmount() != null, XzdCbysZjhcbAlteration::getProfitAmount, bo.getProfitAmount());
lqw.eq(StringUtils.isNotBlank(bo.getAlterationReason()), XzdCbysZjhcbAlteration::getAlterationReason, bo.getAlterationReason());
lqw.eq(bo.getEnableCostPrecontrol() != null, XzdCbysZjhcbAlteration::getEnableCostPrecontrol, bo.getEnableCostPrecontrol());
lqw.eq(StringUtils.isNotBlank(bo.getCostControlMode()), XzdCbysZjhcbAlteration::getCostControlMode, bo.getCostControlMode());
lqw.eq(StringUtils.isNotBlank(bo.getForeignCurrencyTaxType()), XzdCbysZjhcbAlteration::getForeignCurrencyTaxType, bo.getForeignCurrencyTaxType());
lqw.eq(StringUtils.isNotBlank(bo.getForbidFlag()), XzdCbysZjhcbAlteration::getForbidFlag, bo.getForbidFlag());
lqw.eq(bo.getEnableAccountAttrTab() != null, XzdCbysZjhcbAlteration::getEnableAccountAttrTab, bo.getEnableAccountAttrTab());
lqw.eq(bo.getEnableMaterialGroup() != null, XzdCbysZjhcbAlteration::getEnableMaterialGroup, bo.getEnableMaterialGroup());
lqw.eq(StringUtils.isNotBlank(bo.getDocumentReference()), XzdCbysZjhcbAlteration::getDocumentReference, bo.getDocumentReference());
lqw.eq(StringUtils.isNotBlank(bo.getFileId()), XzdCbysZjhcbAlteration::getFileId, bo.getFileId());
return lqw;
}
/**
* 新增立项及成本-成本预算-总体计划成本变更
*
* @param bo 立项及成本-成本预算-总体计划成本变更
* @return 是否新增成功
*/
@Override
public Boolean insertByBo(XzdCbysZjhcbAlterationBo bo) {
XzdCbysZjhcbAlteration add = MapstructUtils.convert(bo, XzdCbysZjhcbAlteration.class);
validEntityBeforeSave(add);
String banBen = BatchNumberGenerator.generateBatchNumber("WGCBTB-");
add.setDocCode(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
throw new ServiceException("税收成本不能为空");
}
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
throw new ServiceException("变更记录不能为空");
}
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
throw new ServiceException("成本明细不能为空");
}
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(add.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(add.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
if (flag) {
bo.setId(add.getId());
}
return flag;
}
/**
* 修改立项及成本-成本预算-总体计划成本变更
*
* @param bo 立项及成本-成本预算-总体计划成本变更
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(XzdCbysZjhcbAlterationBo bo) {
XzdCbysZjhcbAlteration update = MapstructUtils.convert(bo, XzdCbysZjhcbAlteration.class);
validEntityBeforeSave(update);
if (bo.getXzdCbysSscb() == null || bo.getXzdCbysSscb().isEmpty()) {
throw new ServiceException("税收成本不能为空");
}
if (bo.getXzdCbysZtjhcbBgjl() == null || bo.getXzdCbysZtjhcbBgjl().isEmpty()) {
throw new ServiceException("变更记录不能为空");
}
if (bo.getXzdCbysWgcbtbFubiao() == null || bo.getXzdCbysWgcbtbFubiao().isEmpty()) {
throw new ServiceException("成本明细不能为空");
}
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().eq(XzdCbysZtjhcbBgjl::getMainDocumentId, bo.getId()));
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().eq(XzdCbysSscb::getMainDocumentId, bo.getId()));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().eq(XzdCbysWgcbtbFubiao::getMainDocId, bo.getId()));
bo.getXzdCbysSscb().forEach(item -> {item.setMainDocumentId(bo.getId());});
xzdCbysSscbService.saveBatch(bo.getXzdCbysSscb());
bo.getXzdCbysZtjhcbBgjl().forEach(item -> {item.setMainDocumentId(bo.getId());});
xzdCbysZtjhcbBgjlService.saveBatch(bo.getXzdCbysZtjhcbBgjl());
bo.getXzdCbysWgcbtbFubiao().forEach(item -> {item.setMainDocId(bo.getId());});
fubiaoService.saveBatch(bo.getXzdCbysWgcbtbFubiao());
return baseMapper.updateById(update) > 0;
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(XzdCbysZjhcbAlteration entity){
//TODO 做一些数据校验,如唯一约束
}
/**
* 校验并批量删除立项及成本-成本预算-总体计划成本变更信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
}
List<Long> deleteIds = new ArrayList<>();
for (Long id : ids) {
XzdCbysZjhcbAlterationVo vo = baseMapper.selectVoById(id);
if (vo != null){
//删除附件
if (vo.getFileId()!= null && !vo.getFileId().isEmpty()){
List<Long> list = Arrays.stream(vo.getFileId().split(",")).map(Long::valueOf).toList();
deleteIds.addAll(list);
}
}
}
if (!deleteIds.isEmpty()) {
sysOssService.deleteWithValidByIds(deleteIds, false);
}
xzdCbysZtjhcbBgjlService.remove(new LambdaQueryWrapper<XzdCbysZtjhcbBgjl>().in(XzdCbysZtjhcbBgjl::getMainDocumentId, ids));
xzdCbysSscbService.remove(new LambdaQueryWrapper<XzdCbysSscb>().in(XzdCbysSscb::getMainDocumentId, ids));
fubiaoService.remove(new LambdaQueryWrapper<XzdCbysWgcbtbFubiao>().in(XzdCbysWgcbtbFubiao::getMainDocId, ids));
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@ -9,6 +9,7 @@ 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.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.earnestMoneyWithdraw.domain.vo.XzdBidDepositRecoveryVo;
@ -151,11 +152,8 @@ public class XzdGuaranteeChangeInfoServiceImpl extends ServiceImpl<XzdGuaranteeC
public Boolean insertByBo(XzdGuaranteeChangeInfoBo bo) {
XzdGuaranteeChangeInfo add = MapstructUtils.convert(bo, XzdGuaranteeChangeInfo.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdGuaranteeChangeInfo>().gt(XzdGuaranteeChangeInfo::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentNumber(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("JBHTBHBG-");
add.setDocumentNumber(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -11,6 +11,7 @@ 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.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
@ -187,11 +188,8 @@ public class XzdGuaranteeInfoServiceImpl extends ServiceImpl<XzdGuaranteeInfoMap
public Boolean insertByBo(XzdGuaranteeInfoBo bo) {
XzdGuaranteeInfo add = MapstructUtils.convert(bo, XzdGuaranteeInfo.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdGuaranteeInfo>().gt(XzdGuaranteeInfo::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentNumber(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("CBHTBH-");
add.setDocumentNumber(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {

View File

@ -9,6 +9,7 @@ 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.biddingManagement.biaoqianlixiang.domain.XzdBidPreProject;
import org.dromara.xzd.biddingManagement.biaoqianlixiang.domain.vo.XzdBidPreProjectVo;
@ -115,10 +116,8 @@ public class XzdDepositApplicationServiceImpl extends ServiceImpl<XzdDepositAppl
public Boolean insertByBo(XzdDepositApplicationBo bo) {
XzdDepositApplication add = MapstructUtils.convert(bo, XzdDepositApplication.class);
validEntityBeforeSave(add);
Long l = baseMapper.selectCount(new LambdaQueryWrapper<XzdDepositApplication>().gt(XzdDepositApplication::getCreateTime, LocalDate.now()));
String s = areaUtil.generateDateBasedNumber();
add.setDocumentSerialNumber(s+"-"+(l+1));
String banBen = BatchNumberGenerator.generateBatchNumber("BZJJNSPB-");
add.setDocumentSerialNumber(banBen);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());

Some files were not shown because too many files have changed in this diff Show More