feat(oa/erp): 初始化新增项目变更申请及预算变更明细功能
- 项目计划变更(erp_project_change、erp_project_change_budget、erp_project_change_progress) - 实现项目预算变更明细的增删改查接口与服务层逻辑 - 实现项目变更申请的完整流程控制接口,包括提交审批功能 - 完成项目变更模块的权限配置与基础数据校验规则dev
parent
9e39fa2e8a
commit
a5db8b62c7
@ -0,0 +1,93 @@
|
||||
package org.dromara.oa.crm.domain.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 报价单模板DTO
|
||||
* 用于Excel模板导出的字段映射
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-10-30
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class QuoteTemplateDto {
|
||||
|
||||
/**
|
||||
* 客户方联系人
|
||||
*/
|
||||
private String customerContactName;
|
||||
|
||||
/**
|
||||
* 标题(报价单名称)
|
||||
*/
|
||||
private String title;
|
||||
|
||||
/**
|
||||
* 报价日期
|
||||
*/
|
||||
private String quoteDate;
|
||||
|
||||
/**
|
||||
* 含税信息
|
||||
*/
|
||||
private String taxIncludedInfo;
|
||||
|
||||
/**
|
||||
* 付款方式
|
||||
*/
|
||||
private String paymentMethod;
|
||||
|
||||
/**
|
||||
* 交货期
|
||||
*/
|
||||
private String deliveryPeriod;
|
||||
|
||||
/**
|
||||
* 交货方式
|
||||
*/
|
||||
private String deliveryMethod;
|
||||
|
||||
/**
|
||||
* 报价有效期
|
||||
*/
|
||||
private String validDays;
|
||||
|
||||
/**
|
||||
* 未税总价
|
||||
*/
|
||||
private String totalBeforeTax;
|
||||
|
||||
/**
|
||||
* 税额
|
||||
*/
|
||||
private String totalTax;
|
||||
|
||||
/**
|
||||
* 含税总价
|
||||
*/
|
||||
private String totalIncludingTax;
|
||||
|
||||
/**
|
||||
* 总价大写
|
||||
*/
|
||||
private String totalInChinese;
|
||||
|
||||
/**
|
||||
* 供货方联系人
|
||||
*/
|
||||
private String supplierContactName;
|
||||
|
||||
/**
|
||||
* 供货方联系电话
|
||||
*/
|
||||
private String supplierContactPhone;
|
||||
|
||||
/**
|
||||
* 供货方电子邮箱
|
||||
*/
|
||||
private String supplierContactEmail;
|
||||
}
|
||||
@ -0,0 +1,51 @@
|
||||
package org.dromara.oa.crm.domain.dto;
|
||||
|
||||
import cn.idev.excel.annotation.ExcelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 报价单模板明细项 DTO
|
||||
* 用于 EasyExcel 模板填充
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-10-29
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class QuoteTemplateItemDto implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 序号 */
|
||||
private Long seq;
|
||||
|
||||
/** 产品名称 */
|
||||
private String productName;
|
||||
|
||||
/** 型号/说明 */
|
||||
private String modelDesc;
|
||||
|
||||
/** 数量 */
|
||||
private BigDecimal quantity;
|
||||
|
||||
/** 单位 */
|
||||
private String unit;
|
||||
|
||||
/** 单价(含税) */
|
||||
private BigDecimal price;
|
||||
|
||||
/** 小计(含税) */
|
||||
private BigDecimal subtotal;
|
||||
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
package org.dromara.oa.crm.domain.dto;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 报价单模板物料明细DTO
|
||||
* 用于Excel模板导出的物料明细字段映射
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-10-30
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class QuoteTemplateMaterialDto {
|
||||
|
||||
/**
|
||||
* 序号
|
||||
*/
|
||||
private String seq;
|
||||
|
||||
/**
|
||||
* 产品/服务名称
|
||||
*/
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 型号/说明
|
||||
*/
|
||||
private String modelDesc;
|
||||
|
||||
/**
|
||||
* 数量
|
||||
*/
|
||||
private String quantity;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unit;
|
||||
|
||||
/**
|
||||
* 单价
|
||||
*/
|
||||
private String price;
|
||||
|
||||
/**
|
||||
* 小计(含税)
|
||||
*/
|
||||
private String subtotal;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
}
|
||||
@ -0,0 +1,116 @@
|
||||
package org.dromara.oa.erp.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.oa.erp.domain.vo.ErpProjectChangeBudgetVo;
|
||||
import org.dromara.oa.erp.domain.bo.ErpProjectChangeBudgetBo;
|
||||
import org.dromara.oa.erp.service.IErpProjectChangeBudgetService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 项目预算变更明细
|
||||
* 前端访问路由地址为:/oa/erp/erpProjectChangeBudget
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-11-10
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/erpProjectChangeBudget")
|
||||
public class ErpProjectChangeBudgetController extends BaseController {
|
||||
|
||||
private final IErpProjectChangeBudgetService erpProjectChangeBudgetService;
|
||||
|
||||
/**
|
||||
* 查询项目预算变更明细列表
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeBudget:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<ErpProjectChangeBudgetVo> list(ErpProjectChangeBudgetBo bo, PageQuery pageQuery) {
|
||||
return erpProjectChangeBudgetService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出项目预算变更明细列表
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeBudget:export")
|
||||
@Log(title = "项目预算变更明细", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(ErpProjectChangeBudgetBo bo, HttpServletResponse response) {
|
||||
List<ErpProjectChangeBudgetVo> list = erpProjectChangeBudgetService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "项目预算变更明细", ErpProjectChangeBudgetVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目预算变更明细详细信息
|
||||
*
|
||||
* @param changeBudgetId 主键
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeBudget:query")
|
||||
@GetMapping("/{changeBudgetId}")
|
||||
public R<ErpProjectChangeBudgetVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("changeBudgetId") Long changeBudgetId) {
|
||||
return R.ok(erpProjectChangeBudgetService.queryById(changeBudgetId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目预算变更明细
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeBudget:add")
|
||||
@Log(title = "项目预算变更明细", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ErpProjectChangeBudgetBo bo) {
|
||||
return toAjax(erpProjectChangeBudgetService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目预算变更明细
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeBudget:edit")
|
||||
@Log(title = "项目预算变更明细", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ErpProjectChangeBudgetBo bo) {
|
||||
return toAjax(erpProjectChangeBudgetService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目预算变更明细
|
||||
*
|
||||
* @param changeBudgetIds 主键串
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeBudget:remove")
|
||||
@Log(title = "项目预算变更明细", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{changeBudgetIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("changeBudgetIds") Long[] changeBudgetIds) {
|
||||
return toAjax(erpProjectChangeBudgetService.deleteWithValidByIds(List.of(changeBudgetIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 下拉框查询项目预算变更明细列表
|
||||
*/
|
||||
@GetMapping("/getErpProjectChangeBudgetList")
|
||||
public R<List<ErpProjectChangeBudgetVo>> getErpProjectChangeBudgetList(ErpProjectChangeBudgetBo bo) {
|
||||
List<ErpProjectChangeBudgetVo> list = erpProjectChangeBudgetService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,116 @@
|
||||
package org.dromara.oa.erp.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.oa.erp.domain.vo.ErpProjectChangeProgressVo;
|
||||
import org.dromara.oa.erp.domain.bo.ErpProjectChangeProgressBo;
|
||||
import org.dromara.oa.erp.service.IErpProjectChangeProgressService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 项目进度变更明细
|
||||
* 前端访问路由地址为:/oa/erp/erpProjectChangeProgress
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-11-10
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/erpProjectChangeProgress")
|
||||
public class ErpProjectChangeProgressController extends BaseController {
|
||||
|
||||
private final IErpProjectChangeProgressService erpProjectChangeProgressService;
|
||||
|
||||
/**
|
||||
* 查询项目进度变更明细列表
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeProgress:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<ErpProjectChangeProgressVo> list(ErpProjectChangeProgressBo bo, PageQuery pageQuery) {
|
||||
return erpProjectChangeProgressService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出项目进度变更明细列表
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeProgress:export")
|
||||
@Log(title = "项目进度变更明细", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(ErpProjectChangeProgressBo bo, HttpServletResponse response) {
|
||||
List<ErpProjectChangeProgressVo> list = erpProjectChangeProgressService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "项目进度变更明细", ErpProjectChangeProgressVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目进度变更明细详细信息
|
||||
*
|
||||
* @param changeProgressId 主键
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeProgress:query")
|
||||
@GetMapping("/{changeProgressId}")
|
||||
public R<ErpProjectChangeProgressVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable("changeProgressId") Long changeProgressId) {
|
||||
return R.ok(erpProjectChangeProgressService.queryById(changeProgressId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目进度变更明细
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeProgress:add")
|
||||
@Log(title = "项目进度变更明细", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody ErpProjectChangeProgressBo bo) {
|
||||
return toAjax(erpProjectChangeProgressService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目进度变更明细
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeProgress:edit")
|
||||
@Log(title = "项目进度变更明细", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ErpProjectChangeProgressBo bo) {
|
||||
return toAjax(erpProjectChangeProgressService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目进度变更明细
|
||||
*
|
||||
* @param changeProgressIds 主键串
|
||||
*/
|
||||
@SaCheckPermission("oa/erp:erpProjectChangeProgress:remove")
|
||||
@Log(title = "项目进度变更明细", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{changeProgressIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable("changeProgressIds") Long[] changeProgressIds) {
|
||||
return toAjax(erpProjectChangeProgressService.deleteWithValidByIds(List.of(changeProgressIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 下拉框查询项目进度变更明细列表
|
||||
*/
|
||||
@GetMapping("/getErpProjectChangeProgressList")
|
||||
public R<List<ErpProjectChangeProgressVo>> getErpProjectChangeProgressList(ErpProjectChangeProgressBo bo) {
|
||||
List<ErpProjectChangeProgressVo> list = erpProjectChangeProgressService.queryList(bo);
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package org.dromara.oa.erp.service;
|
||||
|
||||
import org.dromara.oa.erp.domain.ErpProjectChangeBudget;
|
||||
import org.dromara.oa.erp.domain.vo.ErpProjectChangeBudgetVo;
|
||||
import org.dromara.oa.erp.domain.bo.ErpProjectChangeBudgetBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目预算变更明细Service接口
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-11-10
|
||||
*/
|
||||
public interface IErpProjectChangeBudgetService {
|
||||
|
||||
/**
|
||||
* 查询项目预算变更明细
|
||||
*
|
||||
* @param changeBudgetId 主键
|
||||
* @return 项目预算变更明细
|
||||
*/
|
||||
ErpProjectChangeBudgetVo queryById(Long changeBudgetId);
|
||||
|
||||
/**
|
||||
* 分页查询项目预算变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 项目预算变更明细分页列表
|
||||
*/
|
||||
TableDataInfo<ErpProjectChangeBudgetVo> queryPageList(ErpProjectChangeBudgetBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的项目预算变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 项目预算变更明细列表
|
||||
*/
|
||||
List<ErpProjectChangeBudgetVo> queryList(ErpProjectChangeBudgetBo bo);
|
||||
|
||||
/**
|
||||
* 新增项目预算变更明细
|
||||
*
|
||||
* @param bo 项目预算变更明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(ErpProjectChangeBudgetBo bo);
|
||||
|
||||
/**
|
||||
* 修改项目预算变更明细
|
||||
*
|
||||
* @param bo 项目预算变更明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(ErpProjectChangeBudgetBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目预算变更明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
package org.dromara.oa.erp.service;
|
||||
|
||||
import org.dromara.oa.erp.domain.ErpProjectChangeProgress;
|
||||
import org.dromara.oa.erp.domain.vo.ErpProjectChangeProgressVo;
|
||||
import org.dromara.oa.erp.domain.bo.ErpProjectChangeProgressBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目进度变更明细Service接口
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-11-10
|
||||
*/
|
||||
public interface IErpProjectChangeProgressService {
|
||||
|
||||
/**
|
||||
* 查询项目进度变更明细
|
||||
*
|
||||
* @param changeProgressId 主键
|
||||
* @return 项目进度变更明细
|
||||
*/
|
||||
ErpProjectChangeProgressVo queryById(Long changeProgressId);
|
||||
|
||||
/**
|
||||
* 分页查询项目进度变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 项目进度变更明细分页列表
|
||||
*/
|
||||
TableDataInfo<ErpProjectChangeProgressVo> queryPageList(ErpProjectChangeProgressBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的项目进度变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 项目进度变更明细列表
|
||||
*/
|
||||
List<ErpProjectChangeProgressVo> queryList(ErpProjectChangeProgressBo bo);
|
||||
|
||||
/**
|
||||
* 新增项目进度变更明细
|
||||
*
|
||||
* @param bo 项目进度变更明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(ErpProjectChangeProgressBo bo);
|
||||
|
||||
/**
|
||||
* 修改项目进度变更明细
|
||||
*
|
||||
* @param bo 项目进度变更明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(ErpProjectChangeProgressBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目进度变更明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
||||
@ -0,0 +1,139 @@
|
||||
package org.dromara.oa.erp.service.impl;
|
||||
|
||||
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.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.oa.erp.domain.bo.ErpProjectChangeBudgetBo;
|
||||
import org.dromara.oa.erp.domain.vo.ErpProjectChangeBudgetVo;
|
||||
import org.dromara.oa.erp.domain.ErpProjectChangeBudget;
|
||||
import org.dromara.oa.erp.mapper.ErpProjectChangeBudgetMapper;
|
||||
import org.dromara.oa.erp.service.IErpProjectChangeBudgetService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 项目预算变更明细Service业务层处理
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-11-10
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class ErpProjectChangeBudgetServiceImpl implements IErpProjectChangeBudgetService {
|
||||
|
||||
private final ErpProjectChangeBudgetMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询项目预算变更明细
|
||||
*
|
||||
* @param changeBudgetId 主键
|
||||
* @return 项目预算变更明细
|
||||
*/
|
||||
@Override
|
||||
public ErpProjectChangeBudgetVo queryById(Long changeBudgetId){
|
||||
return baseMapper.selectVoById(changeBudgetId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询项目预算变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 项目预算变更明细分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<ErpProjectChangeBudgetVo> queryPageList(ErpProjectChangeBudgetBo bo, PageQuery pageQuery) {
|
||||
MPJLambdaWrapper<ErpProjectChangeBudget> lqw = buildQueryWrapper(bo);
|
||||
Page<ErpProjectChangeBudgetVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的项目预算变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 项目预算变更明细列表
|
||||
*/
|
||||
@Override
|
||||
public List<ErpProjectChangeBudgetVo> queryList(ErpProjectChangeBudgetBo bo) {
|
||||
MPJLambdaWrapper<ErpProjectChangeBudget> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private MPJLambdaWrapper<ErpProjectChangeBudget> buildQueryWrapper(ErpProjectChangeBudgetBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<ErpProjectChangeBudget> lqw = JoinWrappers.lambda(ErpProjectChangeBudget.class)
|
||||
.selectAll(ErpProjectChangeBudget.class)
|
||||
.eq(ErpProjectChangeBudget::getDelFlag, "0")
|
||||
.eq(bo.getProjectChangeId() != null, ErpProjectChangeBudget::getProjectChangeId, bo.getProjectChangeId())
|
||||
.eq(bo.getBudgetDetailId() != null, ErpProjectChangeBudget::getBudgetDetailId, bo.getBudgetDetailId())
|
||||
.like(StringUtils.isNotBlank(bo.getSubjectName()), ErpProjectChangeBudget::getSubjectName, bo.getSubjectName())
|
||||
.eq(bo.getBudgetBefore() != null, ErpProjectChangeBudget::getBudgetBefore, bo.getBudgetBefore())
|
||||
.eq(bo.getBudgetAfter() != null, ErpProjectChangeBudget::getBudgetAfter, bo.getBudgetAfter())
|
||||
.eq(bo.getAmountUsed() != null, ErpProjectChangeBudget::getAmountUsed, bo.getAmountUsed())
|
||||
.eq(StringUtils.isNotBlank(bo.getAdjustmentReason()), ErpProjectChangeBudget::getAdjustmentReason, bo.getAdjustmentReason())
|
||||
.eq(bo.getSortOrder() != null, ErpProjectChangeBudget::getSortOrder, bo.getSortOrder());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目预算变更明细
|
||||
*
|
||||
* @param bo 项目预算变更明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(ErpProjectChangeBudgetBo bo) {
|
||||
ErpProjectChangeBudget add = MapstructUtils.convert(bo, ErpProjectChangeBudget.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setChangeBudgetId(add.getChangeBudgetId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目预算变更明细
|
||||
*
|
||||
* @param bo 项目预算变更明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(ErpProjectChangeBudgetBo bo) {
|
||||
ErpProjectChangeBudget update = MapstructUtils.convert(bo, ErpProjectChangeBudget.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(ErpProjectChangeBudget entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目预算变更明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,140 @@
|
||||
package org.dromara.oa.erp.service.impl;
|
||||
|
||||
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.github.yulichang.toolkit.JoinWrappers;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.oa.erp.domain.bo.ErpProjectChangeProgressBo;
|
||||
import org.dromara.oa.erp.domain.vo.ErpProjectChangeProgressVo;
|
||||
import org.dromara.oa.erp.domain.ErpProjectChangeProgress;
|
||||
import org.dromara.oa.erp.mapper.ErpProjectChangeProgressMapper;
|
||||
import org.dromara.oa.erp.service.IErpProjectChangeProgressService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 项目进度变更明细Service业务层处理
|
||||
*
|
||||
* @author Yinq
|
||||
* @date 2025-11-10
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class ErpProjectChangeProgressServiceImpl implements IErpProjectChangeProgressService {
|
||||
|
||||
private final ErpProjectChangeProgressMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询项目进度变更明细
|
||||
*
|
||||
* @param changeProgressId 主键
|
||||
* @return 项目进度变更明细
|
||||
*/
|
||||
@Override
|
||||
public ErpProjectChangeProgressVo queryById(Long changeProgressId){
|
||||
return baseMapper.selectVoById(changeProgressId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询项目进度变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 项目进度变更明细分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<ErpProjectChangeProgressVo> queryPageList(ErpProjectChangeProgressBo bo, PageQuery pageQuery) {
|
||||
MPJLambdaWrapper<ErpProjectChangeProgress> lqw = buildQueryWrapper(bo);
|
||||
Page<ErpProjectChangeProgressVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的项目进度变更明细列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 项目进度变更明细列表
|
||||
*/
|
||||
@Override
|
||||
public List<ErpProjectChangeProgressVo> queryList(ErpProjectChangeProgressBo bo) {
|
||||
MPJLambdaWrapper<ErpProjectChangeProgress> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private MPJLambdaWrapper<ErpProjectChangeProgress> buildQueryWrapper(ErpProjectChangeProgressBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
MPJLambdaWrapper<ErpProjectChangeProgress> lqw = JoinWrappers.lambda(ErpProjectChangeProgress.class)
|
||||
.selectAll(ErpProjectChangeProgress.class)
|
||||
.eq(ErpProjectChangeProgress::getDelFlag, "0")
|
||||
.eq(bo.getProjectChangeId() != null, ErpProjectChangeProgress::getProjectChangeId, bo.getProjectChangeId())
|
||||
.eq(bo.getPlanStageId() != null, ErpProjectChangeProgress::getPlanStageId, bo.getPlanStageId())
|
||||
.like(StringUtils.isNotBlank(bo.getMilestoneName()), ErpProjectChangeProgress::getMilestoneName, bo.getMilestoneName())
|
||||
.eq(bo.getOriginalStart() != null, ErpProjectChangeProgress::getOriginalStart, bo.getOriginalStart())
|
||||
.eq(bo.getOriginalEnd() != null, ErpProjectChangeProgress::getOriginalEnd, bo.getOriginalEnd())
|
||||
.eq(bo.getChangedStart() != null, ErpProjectChangeProgress::getChangedStart, bo.getChangedStart())
|
||||
.eq(bo.getChangedEnd() != null, ErpProjectChangeProgress::getChangedEnd, bo.getChangedEnd())
|
||||
.eq(bo.getCompletionDegree() != null, ErpProjectChangeProgress::getCompletionDegree, bo.getCompletionDegree())
|
||||
.eq(bo.getSortOrder() != null, ErpProjectChangeProgress::getSortOrder, bo.getSortOrder());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目进度变更明细
|
||||
*
|
||||
* @param bo 项目进度变更明细
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(ErpProjectChangeProgressBo bo) {
|
||||
ErpProjectChangeProgress add = MapstructUtils.convert(bo, ErpProjectChangeProgress.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setChangeProgressId(add.getChangeProgressId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目进度变更明细
|
||||
*
|
||||
* @param bo 项目进度变更明细
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(ErpProjectChangeProgressBo bo) {
|
||||
ErpProjectChangeProgress update = MapstructUtils.convert(bo, ErpProjectChangeProgress.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(ErpProjectChangeProgress entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目进度变更明细信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,192 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.oa.erp.mapper.ErpProjectChangeBudgetMapper">
|
||||
<resultMap type="org.dromara.oa.erp.domain.vo.ErpProjectChangeBudgetVo" id="ErpProjectChangeBudgetResult">
|
||||
</resultMap>
|
||||
|
||||
<select id="selectCustomErpProjectChangeBudgetVoList" resultMap="ErpProjectChangeBudgetResult">
|
||||
select change_budget_id, project_change_id, budget_detail_id, subject_name, budget_before, budget_after, amount_used, adjustment_reason, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_project_change_budget t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<!-- 根据ID查询详情 -->
|
||||
<select id="selectCustomErpProjectChangeBudgetVoById" resultMap="ErpProjectChangeBudgetResult">
|
||||
select change_budget_id, project_change_id, budget_detail_id, subject_name, budget_before, budget_after, amount_used, adjustment_reason, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time
|
||||
from erp_project_change_budget t
|
||||
where t.change_budget_id = #{changeBudgetId}
|
||||
</select>
|
||||
|
||||
<!-- 批量查询 - 根据ID列表 -->
|
||||
<select id="selectCustomErpProjectChangeBudgetVoByIds" resultMap="ErpProjectChangeBudgetResult">
|
||||
select change_budget_id, project_change_id, budget_detail_id, subject_name, budget_before, budget_after, amount_used, adjustment_reason, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time
|
||||
from erp_project_change_budget t
|
||||
where t.change_budget_id in
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<!-- 统计查询 -->
|
||||
<select id="countCustomErpProjectChangeBudget" resultType="java.lang.Long">
|
||||
select count(1) from erp_project_change_budget t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<!-- 分页查询(带自定义条件) -->
|
||||
<select id="selectCustomErpProjectChangeBudgetVoPage" resultMap="ErpProjectChangeBudgetResult">
|
||||
select change_budget_id, project_change_id, budget_detail_id, subject_name, budget_before, budget_after, amount_used, adjustment_reason, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time
|
||||
from erp_project_change_budget t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<!-- 批量插入 -->
|
||||
<insert id="batchInsertErpProjectChangeBudget">
|
||||
insert into erp_project_change_budget(
|
||||
project_change_id,
|
||||
|
||||
budget_detail_id,
|
||||
|
||||
subject_name,
|
||||
|
||||
budget_before,
|
||||
|
||||
budget_after,
|
||||
|
||||
amount_used,
|
||||
|
||||
adjustment_reason,
|
||||
|
||||
sort_order,
|
||||
|
||||
remark,
|
||||
|
||||
del_flag,
|
||||
|
||||
create_dept,
|
||||
|
||||
create_by,
|
||||
|
||||
create_time,
|
||||
|
||||
update_by,
|
||||
|
||||
update_time
|
||||
|
||||
)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.projectChangeId},
|
||||
|
||||
#{item.budgetDetailId},
|
||||
|
||||
#{item.subjectName},
|
||||
|
||||
#{item.budgetBefore},
|
||||
|
||||
#{item.budgetAfter},
|
||||
|
||||
#{item.amountUsed},
|
||||
|
||||
#{item.adjustmentReason},
|
||||
|
||||
#{item.sortOrder},
|
||||
|
||||
#{item.remark},
|
||||
|
||||
#{item.delFlag},
|
||||
|
||||
#{item.createDept},
|
||||
|
||||
#{item.createBy},
|
||||
|
||||
#{item.createTime},
|
||||
|
||||
#{item.updateBy},
|
||||
|
||||
#{item.updateTime}
|
||||
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<!-- 批量更新 -->
|
||||
<update id="batchUpdateErpProjectChangeBudget">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
update erp_project_change_budget
|
||||
<set>
|
||||
<if test="item.projectChangeId != null">
|
||||
project_change_id = #{item.projectChangeId},
|
||||
</if>
|
||||
<if test="item.budgetDetailId != null">
|
||||
budget_detail_id = #{item.budgetDetailId},
|
||||
</if>
|
||||
<if test="item.subjectName != null and item.subjectName != ''">
|
||||
subject_name = #{item.subjectName},
|
||||
</if>
|
||||
<if test="item.budgetBefore != null">
|
||||
budget_before = #{item.budgetBefore},
|
||||
</if>
|
||||
<if test="item.budgetAfter != null">
|
||||
budget_after = #{item.budgetAfter},
|
||||
</if>
|
||||
<if test="item.amountUsed != null">
|
||||
amount_used = #{item.amountUsed},
|
||||
</if>
|
||||
<if test="item.adjustmentReason != null and item.adjustmentReason != ''">
|
||||
adjustment_reason = #{item.adjustmentReason},
|
||||
</if>
|
||||
<if test="item.sortOrder != null">
|
||||
sort_order = #{item.sortOrder},
|
||||
</if>
|
||||
<if test="item.remark != null and item.remark != ''">
|
||||
remark = #{item.remark},
|
||||
</if>
|
||||
<if test="item.delFlag != null and item.delFlag != ''">
|
||||
del_flag = #{item.delFlag},
|
||||
</if>
|
||||
<if test="item.createDept != null">
|
||||
create_dept = #{item.createDept},
|
||||
</if>
|
||||
<if test="item.createBy != null">
|
||||
create_by = #{item.createBy},
|
||||
</if>
|
||||
<if test="item.createTime != null">
|
||||
create_time = #{item.createTime},
|
||||
</if>
|
||||
<if test="item.updateBy != null">
|
||||
update_by = #{item.updateBy},
|
||||
</if>
|
||||
<if test="item.updateTime != null">
|
||||
update_time = #{item.updateTime}
|
||||
</if>
|
||||
</set>
|
||||
where change_budget_id = #{item.changeBudgetId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<!-- 根据自定义条件删除 -->
|
||||
<delete id="deleteCustomErpProjectChangeBudget">
|
||||
delete from erp_project_change_budget
|
||||
${ew.getCustomSqlSegment}
|
||||
</delete>
|
||||
|
||||
<!-- 根据ID列表批量删除 -->
|
||||
<delete id="deleteCustomErpProjectChangeBudgetByIds">
|
||||
delete from erp_project_change_budget
|
||||
where change_budget_id in
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<!-- 检查是否存在 -->
|
||||
<select id="existsErpProjectChangeBudget" resultType="java.lang.Boolean">
|
||||
select count(1) > 0 from erp_project_change_budget t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@ -0,0 +1,199 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.dromara.oa.erp.mapper.ErpProjectChangeProgressMapper">
|
||||
<resultMap type="org.dromara.oa.erp.domain.vo.ErpProjectChangeProgressVo" id="ErpProjectChangeProgressResult">
|
||||
</resultMap>
|
||||
|
||||
<select id="selectCustomErpProjectChangeProgressVoList" resultMap="ErpProjectChangeProgressResult">
|
||||
select change_progress_id, project_change_id, plan_stage_id, milestone_name, original_start, original_end, changed_start, changed_end, completion_degree, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time from erp_project_change_progress t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<!-- 根据ID查询详情 -->
|
||||
<select id="selectCustomErpProjectChangeProgressVoById" resultMap="ErpProjectChangeProgressResult">
|
||||
select change_progress_id, project_change_id, plan_stage_id, milestone_name, original_start, original_end, changed_start, changed_end, completion_degree, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time
|
||||
from erp_project_change_progress t
|
||||
where t.change_progress_id = #{changeProgressId}
|
||||
</select>
|
||||
|
||||
<!-- 批量查询 - 根据ID列表 -->
|
||||
<select id="selectCustomErpProjectChangeProgressVoByIds" resultMap="ErpProjectChangeProgressResult">
|
||||
select change_progress_id, project_change_id, plan_stage_id, milestone_name, original_start, original_end, changed_start, changed_end, completion_degree, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time
|
||||
from erp_project_change_progress t
|
||||
where t.change_progress_id in
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<!-- 统计查询 -->
|
||||
<select id="countCustomErpProjectChangeProgress" resultType="java.lang.Long">
|
||||
select count(1) from erp_project_change_progress t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<!-- 分页查询(带自定义条件) -->
|
||||
<select id="selectCustomErpProjectChangeProgressVoPage" resultMap="ErpProjectChangeProgressResult">
|
||||
select change_progress_id, project_change_id, plan_stage_id, milestone_name, original_start, original_end, changed_start, changed_end, completion_degree, sort_order, remark, del_flag, create_dept, create_by, create_time, update_by, update_time
|
||||
from erp_project_change_progress t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<!-- 批量插入 -->
|
||||
<insert id="batchInsertErpProjectChangeProgress">
|
||||
insert into erp_project_change_progress(
|
||||
project_change_id,
|
||||
|
||||
plan_stage_id,
|
||||
|
||||
milestone_name,
|
||||
|
||||
original_start,
|
||||
|
||||
original_end,
|
||||
|
||||
changed_start,
|
||||
|
||||
changed_end,
|
||||
|
||||
completion_degree,
|
||||
|
||||
sort_order,
|
||||
|
||||
remark,
|
||||
|
||||
del_flag,
|
||||
|
||||
create_dept,
|
||||
|
||||
create_by,
|
||||
|
||||
create_time,
|
||||
|
||||
update_by,
|
||||
|
||||
update_time
|
||||
|
||||
)
|
||||
values
|
||||
<foreach collection="list" item="item" separator=",">
|
||||
(
|
||||
#{item.projectChangeId},
|
||||
|
||||
#{item.planStageId},
|
||||
|
||||
#{item.milestoneName},
|
||||
|
||||
#{item.originalStart},
|
||||
|
||||
#{item.originalEnd},
|
||||
|
||||
#{item.changedStart},
|
||||
|
||||
#{item.changedEnd},
|
||||
|
||||
#{item.completionDegree},
|
||||
|
||||
#{item.sortOrder},
|
||||
|
||||
#{item.remark},
|
||||
|
||||
#{item.delFlag},
|
||||
|
||||
#{item.createDept},
|
||||
|
||||
#{item.createBy},
|
||||
|
||||
#{item.createTime},
|
||||
|
||||
#{item.updateBy},
|
||||
|
||||
#{item.updateTime}
|
||||
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<!-- 批量更新 -->
|
||||
<update id="batchUpdateErpProjectChangeProgress">
|
||||
<foreach collection="list" item="item" separator=";">
|
||||
update erp_project_change_progress
|
||||
<set>
|
||||
<if test="item.projectChangeId != null">
|
||||
project_change_id = #{item.projectChangeId},
|
||||
</if>
|
||||
<if test="item.planStageId != null">
|
||||
plan_stage_id = #{item.planStageId},
|
||||
</if>
|
||||
<if test="item.milestoneName != null and item.milestoneName != ''">
|
||||
milestone_name = #{item.milestoneName},
|
||||
</if>
|
||||
<if test="item.originalStart != null">
|
||||
original_start = #{item.originalStart},
|
||||
</if>
|
||||
<if test="item.originalEnd != null">
|
||||
original_end = #{item.originalEnd},
|
||||
</if>
|
||||
<if test="item.changedStart != null">
|
||||
changed_start = #{item.changedStart},
|
||||
</if>
|
||||
<if test="item.changedEnd != null">
|
||||
changed_end = #{item.changedEnd},
|
||||
</if>
|
||||
<if test="item.completionDegree != null">
|
||||
completion_degree = #{item.completionDegree},
|
||||
</if>
|
||||
<if test="item.sortOrder != null">
|
||||
sort_order = #{item.sortOrder},
|
||||
</if>
|
||||
<if test="item.remark != null and item.remark != ''">
|
||||
remark = #{item.remark},
|
||||
</if>
|
||||
<if test="item.delFlag != null and item.delFlag != ''">
|
||||
del_flag = #{item.delFlag},
|
||||
</if>
|
||||
<if test="item.createDept != null">
|
||||
create_dept = #{item.createDept},
|
||||
</if>
|
||||
<if test="item.createBy != null">
|
||||
create_by = #{item.createBy},
|
||||
</if>
|
||||
<if test="item.createTime != null">
|
||||
create_time = #{item.createTime},
|
||||
</if>
|
||||
<if test="item.updateBy != null">
|
||||
update_by = #{item.updateBy},
|
||||
</if>
|
||||
<if test="item.updateTime != null">
|
||||
update_time = #{item.updateTime}
|
||||
</if>
|
||||
</set>
|
||||
where change_progress_id = #{item.changeProgressId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
<!-- 根据自定义条件删除 -->
|
||||
<delete id="deleteCustomErpProjectChangeProgress">
|
||||
delete from erp_project_change_progress
|
||||
${ew.getCustomSqlSegment}
|
||||
</delete>
|
||||
|
||||
<!-- 根据ID列表批量删除 -->
|
||||
<delete id="deleteCustomErpProjectChangeProgressByIds">
|
||||
delete from erp_project_change_progress
|
||||
where change_progress_id in
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<!-- 检查是否存在 -->
|
||||
<select id="existsErpProjectChangeProgress" resultType="java.lang.Boolean">
|
||||
select count(1) > 0 from erp_project_change_progress t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
Binary file not shown.
Loading…
Reference in New Issue