he2802 2 years ago
parent
commit
78555ae0f2
15 changed files with 571 additions and 6 deletions
  1. 8 1
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopCostInstTpController.java
  2. 3 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpAddBo.java
  3. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpEditBo.java
  4. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpItemAddBo.java
  5. 61 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpItemEditBo.java
  6. 64 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpItemQueryBo.java
  7. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpQueryBo.java
  8. 51 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/domain/TopCostInstTpItem.java
  9. 14 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopCostInstTpItemMapper.java
  10. 53 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopCostInstTpItemService.java
  11. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopCostInstTpService.java
  12. 106 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopCostInstTpItemServiceImpl.java
  13. 66 4
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopCostInstTpServiceImpl.java
  14. 60 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCostInstTpItemVo.java
  15. 22 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopCostInstTpItemMapper.xml

+ 8 - 1
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopCostInstTpController.java

@@ -6,6 +6,7 @@ import java.util.Arrays;
 import com.zhongzheng.modules.top.financial.bo.TopCostInstTpAddBo;
 import com.zhongzheng.modules.top.financial.bo.TopCostInstTpEditBo;
 import com.zhongzheng.modules.top.financial.bo.TopCostInstTpQueryBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpQueryBo;
 import com.zhongzheng.modules.top.financial.service.ITopCostInstTpService;
 import com.zhongzheng.modules.top.financial.vo.TopCostInstTpVo;
 import lombok.RequiredArgsConstructor;
@@ -87,5 +88,11 @@ public class TopCostInstTpController extends BaseController {
         return toAjax(iTopCostInstTpService.updateByEditBo(bo) ? 1 : 0);
     }
 
-
+    @ApiOperation("供应商成本模板批量删除")
+    @PreAuthorize("@ss.hasPermi('system:tp:edit')")
+    @Log(title = "供应商成本模板批量删除", businessType = BusinessType.UPDATE)
+    @PostMapping("/deleteBatch")
+    public AjaxResult<Void> deleteBatch(@RequestBody TopCostInstTpQueryBo bo) {
+        return toAjax(iTopCostInstTpService.deleteBatch(bo) ? 1 : 0);
+    }
 }

+ 3 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpAddBo.java

@@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -36,4 +36,6 @@ public class TopCostInstTpAddBo {
     /** 供应商ID */
     @ApiModelProperty("供应商ID")
     private Long instId;
+    @ApiModelProperty("子项数组")
+    private List<TopCostInstTpItemAddBo> itemList;
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpEditBo.java

@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import java.util.Date;
+import java.util.List;
 
 
 /**
@@ -41,4 +42,7 @@ public class TopCostInstTpEditBo {
     @ApiModelProperty("供应商ID")
     private Long instId;
 
+    @ApiModelProperty("子项数组")
+    private List<TopCostInstTpItemAddBo> itemList;
+
 }

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpItemAddBo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.top.financial.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+
+import java.math.BigDecimal;
+
+/**
+ * 供应商成本模板子项添加对象 top_cost_inst_tp_item
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+@Data
+@ApiModel("供应商成本模板子项添加对象")
+public class TopCostInstTpItemAddBo {
+
+    /** 模板ID */
+    @ApiModelProperty("模板ID")
+    private Long tpId;
+    /** 供应商成本分类id */
+    @ApiModelProperty("供应商成本分类id")
+    private Long costCatId;
+    /** 业务层ID */
+    @ApiModelProperty("业务层ID")
+    private Long businessId;
+    /** 成本类型 1百分比 2固定成本 */
+    @ApiModelProperty("成本类型 1百分比 2固定成本")
+    private Integer itemType;
+    /** 百分比值为 0到 100 */
+    @ApiModelProperty("百分比值为 0到 100")
+    private BigDecimal typeValue;
+    /** 0 禁用 1启用 */
+    @ApiModelProperty("0 禁用 1启用")
+    private Integer status;
+    /** 添加时间 */
+    @ApiModelProperty("添加时间")
+    private Long createTime;
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+    /** 教育类型id(-1不限制) */
+    @ApiModelProperty("教育类型id(-1不限制)")
+    private Long educationTypeId;
+    /** 项目ID */
+    @ApiModelProperty("项目ID")
+    private Long projectId;
+}

+ 61 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpItemEditBo.java

@@ -0,0 +1,61 @@
+package com.zhongzheng.modules.top.financial.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import java.util.Date;
+
+import java.math.BigDecimal;
+
+/**
+ * 供应商成本模板子项编辑对象 top_cost_inst_tp_item
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+@Data
+@ApiModel("供应商成本模板子项编辑对象")
+public class TopCostInstTpItemEditBo {
+
+    /** $column.columnComment */
+    @ApiModelProperty("$column.columnComment")
+    private Long id;
+
+    /** 模板ID */
+    @ApiModelProperty("模板ID")
+    private Long tpId;
+
+    /** 供应商成本分类id */
+    @ApiModelProperty("供应商成本分类id")
+    private Long costCatId;
+
+    /** 业务层ID */
+    @ApiModelProperty("业务层ID")
+    private Long businessId;
+
+    /** 成本类型 1百分比 2固定成本 */
+    @ApiModelProperty("成本类型 1百分比 2固定成本")
+    private Integer itemType;
+
+    /** 百分比值为 0到 100 */
+    @ApiModelProperty("百分比值为 0到 100")
+    private BigDecimal typeValue;
+
+    /** 0 禁用 1启用 */
+    @ApiModelProperty("0 禁用 1启用")
+    private Integer status;
+
+    /** 修改时间 */
+    @ApiModelProperty("修改时间")
+    private Long updateTime;
+
+    /** 教育类型id(-1不限制) */
+    @ApiModelProperty("教育类型id(-1不限制)")
+    private Long educationTypeId;
+
+    /** 项目ID */
+    @ApiModelProperty("项目ID")
+    private Long projectId;
+
+}

+ 64 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpItemQueryBo.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.modules.top.financial.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.Map;
+import java.util.HashMap;
+
+import java.math.BigDecimal;
+import com.zhongzheng.common.core.domain.BaseEntity;
+
+/**
+ * 供应商成本模板子项分页查询对象 top_cost_inst_tp_item
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("供应商成本模板子项分页查询对象")
+public class TopCostInstTpItemQueryBo extends BaseEntity {
+
+	/** 分页大小 */
+	@ApiModelProperty("分页大小")
+	private Integer pageSize;
+	/** 当前页数 */
+	@ApiModelProperty("当前页数")
+	private Integer pageNum;
+	/** 排序列 */
+	@ApiModelProperty("排序列")
+	private String orderByColumn;
+	/** 排序的方向desc或者asc */
+	@ApiModelProperty(value = "排序的方向", example = "asc,desc")
+	private String isAsc;
+
+
+	/** 模板ID */
+	@ApiModelProperty("模板ID")
+	private Long tpId;
+	/** 供应商成本分类id */
+	@ApiModelProperty("供应商成本分类id")
+	private Long costCatId;
+	/** 业务层ID */
+	@ApiModelProperty("业务层ID")
+	private Long businessId;
+	/** 成本类型 1百分比 2固定成本 */
+	@ApiModelProperty("成本类型 1百分比 2固定成本")
+	private Integer itemType;
+	/** 百分比值为 0到 100 */
+	@ApiModelProperty("百分比值为 0到 100")
+	private BigDecimal typeValue;
+	/** 0 禁用 1启用 */
+	@ApiModelProperty("0 禁用 1启用")
+	private Integer status;
+	/** 教育类型id(-1不限制) */
+	@ApiModelProperty("教育类型id(-1不限制)")
+	private Long educationTypeId;
+	/** 项目ID */
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+}

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopCostInstTpQueryBo.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.util.Date;
+import java.util.List;
 import java.util.Map;
 import java.util.HashMap;
 
@@ -48,4 +49,7 @@ public class TopCostInstTpQueryBo extends BaseEntity {
 	/** 供应商ID */
 	@ApiModelProperty("供应商ID")
 	private Long instId;
+
+	@ApiModelProperty("id数组")
+	private List<Long> ids;
 }

+ 51 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/domain/TopCostInstTpItem.java

@@ -0,0 +1,51 @@
+package com.zhongzheng.modules.top.financial.domain;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+import java.io.Serializable;
+import java.util.Date;
+import java.math.BigDecimal;
+import com.zhongzheng.common.annotation.Excel;
+
+/**
+ * 供应商成本模板子项对象 top_cost_inst_tp_item
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_cost_inst_tp_item")
+public class TopCostInstTpItem implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 模板ID */
+    private Long tpId;
+    /** 供应商成本分类id */
+    private Long costCatId;
+    /** 业务层ID */
+    private Long businessId;
+    /** 成本类型 1百分比 2固定成本 */
+    private Integer itemType;
+    /** 百分比值为 0到 100 */
+    private BigDecimal typeValue;
+    /** 0 禁用 1启用 */
+    private Integer status;
+    /** 添加时间 */
+    @TableField(fill = FieldFill.INSERT)
+    private Long createTime;
+    /** 修改时间 */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Long updateTime;
+    /** 教育类型id(-1不限制) */
+    private Long educationTypeId;
+    /** 项目ID */
+    private Long projectId;
+}

+ 14 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopCostInstTpItemMapper.java

@@ -0,0 +1,14 @@
+package com.zhongzheng.modules.top.financial.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.financial.domain.TopCostInstTpItem;
+
+/**
+ * 供应商成本模板子项Mapper接口
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+public interface TopCostInstTpItemMapper extends BaseMapper<TopCostInstTpItem> {
+
+}

+ 53 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopCostInstTpItemService.java

@@ -0,0 +1,53 @@
+package com.zhongzheng.modules.top.financial.service;
+
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.financial.bo.TopCostInstTpItemAddBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostInstTpItemEditBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostInstTpItemQueryBo;
+import com.zhongzheng.modules.top.financial.domain.TopCostInstTpItem;
+import com.zhongzheng.modules.top.financial.vo.TopCostInstTpItemVo;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 供应商成本模板子项Service接口
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+public interface ITopCostInstTpItemService extends IService<TopCostInstTpItem> {
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	TopCostInstTpItemVo queryById(Long id);
+
+	/**
+	 * 查询列表
+	 */
+	List<TopCostInstTpItemVo> queryList(TopCostInstTpItemQueryBo bo);
+
+	/**
+	 * 根据新增业务对象插入供应商成本模板子项
+	 * @param bo 供应商成本模板子项新增业务对象
+	 * @return
+	 */
+	Boolean insertByAddBo(TopCostInstTpItemAddBo bo);
+
+	/**
+	 * 根据编辑业务对象修改供应商成本模板子项
+	 * @param bo 供应商成本模板子项编辑业务对象
+	 * @return
+	 */
+	Boolean updateByEditBo(TopCostInstTpItemEditBo bo);
+
+	/**
+	 * 校验并删除数据
+	 * @param ids 主键集合
+	 * @param isValid 是否校验,true-删除前校验,false-不校验
+	 * @return
+	 */
+	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopCostInstTpService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhongzheng.modules.top.financial.bo.TopCostInstTpAddBo;
 import com.zhongzheng.modules.top.financial.bo.TopCostInstTpEditBo;
 import com.zhongzheng.modules.top.financial.bo.TopCostInstTpQueryBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostTpQueryBo;
 import com.zhongzheng.modules.top.financial.domain.TopCostInstTp;
 import com.zhongzheng.modules.top.financial.vo.TopCostInstTpVo;
 
@@ -50,4 +51,6 @@ public interface ITopCostInstTpService extends IService<TopCostInstTp> {
 	 * @return
 	 */
 	Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+	Boolean deleteBatch(TopCostInstTpQueryBo queryBo);
 }

+ 106 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopCostInstTpItemServiceImpl.java

@@ -0,0 +1,106 @@
+package com.zhongzheng.modules.top.financial.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.StrUtil;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.top.financial.bo.TopCostInstTpItemAddBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostInstTpItemEditBo;
+import com.zhongzheng.modules.top.financial.bo.TopCostInstTpItemQueryBo;
+import com.zhongzheng.modules.top.financial.domain.TopCostInstTpItem;
+import com.zhongzheng.modules.top.financial.mapper.TopCostInstTpItemMapper;
+import com.zhongzheng.modules.top.financial.service.ITopCostInstTpItemService;
+import com.zhongzheng.modules.top.financial.vo.TopCostInstTpItemVo;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.pagehelper.Page;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 供应商成本模板子项Service业务层处理
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+@Service
+public class TopCostInstTpItemServiceImpl extends ServiceImpl<TopCostInstTpItemMapper, TopCostInstTpItem> implements ITopCostInstTpItemService {
+
+    @Override
+    public TopCostInstTpItemVo queryById(Long id){
+        TopCostInstTpItem db = this.baseMapper.selectById(id);
+        return BeanUtil.toBean(db, TopCostInstTpItemVo.class);
+    }
+
+    @Override
+    public List<TopCostInstTpItemVo> queryList(TopCostInstTpItemQueryBo bo) {
+        LambdaQueryWrapper<TopCostInstTpItem> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getTpId() != null, TopCostInstTpItem::getTpId, bo.getTpId());
+        lqw.eq(bo.getCostCatId() != null, TopCostInstTpItem::getCostCatId, bo.getCostCatId());
+        lqw.eq(bo.getBusinessId() != null, TopCostInstTpItem::getBusinessId, bo.getBusinessId());
+        lqw.eq(bo.getItemType() != null, TopCostInstTpItem::getItemType, bo.getItemType());
+        lqw.eq(bo.getTypeValue() != null, TopCostInstTpItem::getTypeValue, bo.getTypeValue());
+        lqw.eq(bo.getStatus() != null, TopCostInstTpItem::getStatus, bo.getStatus());
+        lqw.eq(bo.getEducationTypeId() != null, TopCostInstTpItem::getEducationTypeId, bo.getEducationTypeId());
+        lqw.eq(bo.getProjectId() != null, TopCostInstTpItem::getProjectId, bo.getProjectId());
+        return entity2Vo(this.list(lqw));
+    }
+
+    /**
+    * 实体类转化成视图对象
+    *
+    * @param collection 实体类集合
+    * @return
+    */
+    private List<TopCostInstTpItemVo> entity2Vo(Collection<TopCostInstTpItem> collection) {
+        List<TopCostInstTpItemVo> voList = collection.stream()
+                .map(any -> BeanUtil.toBean(any, TopCostInstTpItemVo.class))
+                .collect(Collectors.toList());
+        if (collection instanceof Page) {
+            Page<TopCostInstTpItem> page = (Page<TopCostInstTpItem>)collection;
+            Page<TopCostInstTpItemVo> pageVo = new Page<>();
+            BeanUtil.copyProperties(page,pageVo);
+            pageVo.addAll(voList);
+            voList = pageVo;
+        }
+        return voList;
+    }
+
+    @Override
+    public Boolean insertByAddBo(TopCostInstTpItemAddBo bo) {
+        TopCostInstTpItem add = BeanUtil.toBean(bo, TopCostInstTpItem.class);
+        validEntityBeforeSave(add);
+        add.setCreateTime(DateUtils.getNowTime());
+        add.setUpdateTime(DateUtils.getNowTime());
+        return this.save(add);
+    }
+
+    @Override
+    public Boolean updateByEditBo(TopCostInstTpItemEditBo bo) {
+        TopCostInstTpItem update = BeanUtil.toBean(bo, TopCostInstTpItem.class);
+        validEntityBeforeSave(update);
+        update.setUpdateTime(DateUtils.getNowTime());
+        return this.updateById(update);
+    }
+
+    /**
+     * 保存前的数据校验
+     *
+     * @param entity 实体类数据
+     */
+    private void validEntityBeforeSave(TopCostInstTpItem entity){
+        //TODO 做一些数据校验,如唯一约束
+    }
+
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 做一些业务上的校验,判断是否需要校验
+        }
+        return this.removeByIds(ids);
+    }
+}

+ 66 - 4
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopCostInstTpServiceImpl.java

@@ -1,15 +1,22 @@
 package com.zhongzheng.modules.top.financial.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.lang.Validator;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
-import com.zhongzheng.modules.top.financial.bo.TopCostInstTpAddBo;
-import com.zhongzheng.modules.top.financial.bo.TopCostInstTpEditBo;
-import com.zhongzheng.modules.top.financial.bo.TopCostInstTpQueryBo;
+import com.zhongzheng.modules.top.financial.bo.*;
 import com.zhongzheng.modules.top.financial.domain.TopCostInstTp;
+import com.zhongzheng.modules.top.financial.domain.TopCostInstTpItem;
+import com.zhongzheng.modules.top.financial.domain.TopCostTp;
+import com.zhongzheng.modules.top.financial.domain.TopCostTpItem;
 import com.zhongzheng.modules.top.financial.mapper.TopCostInstTpMapper;
+import com.zhongzheng.modules.top.financial.service.ITopCostInstTpItemService;
 import com.zhongzheng.modules.top.financial.service.ITopCostInstTpService;
+import com.zhongzheng.modules.top.financial.service.ITopCostTpItemService;
 import com.zhongzheng.modules.top.financial.vo.TopCostInstTpVo;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -31,6 +38,10 @@ import java.util.stream.Collectors;
 @Service
 public class TopCostInstTpServiceImpl extends ServiceImpl<TopCostInstTpMapper, TopCostInstTp> implements ITopCostInstTpService {
 
+    @Autowired
+    private ITopCostInstTpItemService iTopCostInstTpItemService;
+
+
     @Override
     public TopCostInstTpVo queryById(Long tpId){
         TopCostInstTp db = this.baseMapper.selectById(tpId);
@@ -69,11 +80,37 @@ public class TopCostInstTpServiceImpl extends ServiceImpl<TopCostInstTpMapper, T
 
     @Override
     public Boolean insertByAddBo(TopCostInstTpAddBo bo) {
+        if(Validator.isEmpty(bo.getTpName())){
+            throw new CustomException("参数缺少");
+        }
+        if(Validator.isEmpty(bo.getInstId())){
+            throw new CustomException("缺少供应商ID");
+        }
+        TopCostInstTp mplatformLog = getOne(new LambdaQueryWrapper<TopCostInstTp>()
+                .eq(TopCostInstTp::getTpName,bo.getTpName()).ne(TopCostInstTp::getStatus,-1).last("limit 1"));
+        if(Validator.isNotEmpty(mplatformLog)){
+            throw new CustomException("该模板名称已存在");
+        }
         TopCostInstTp add = BeanUtil.toBean(bo, TopCostInstTp.class);
         validEntityBeforeSave(add);
         add.setCreateTime(DateUtils.getNowTime());
         add.setUpdateTime(DateUtils.getNowTime());
-        return this.save(add);
+        if(this.save(add)){
+            if(add.getDefaultStatus()==1){
+                LambdaUpdateWrapper<TopCostInstTp> objectLambdaUpdateWrapper = Wrappers.lambdaUpdate();
+                objectLambdaUpdateWrapper.ne(TopCostInstTp::getTpId, add.getTpId());
+                objectLambdaUpdateWrapper.eq(TopCostInstTp::getInstId, bo.getInstId());
+                objectLambdaUpdateWrapper.set(TopCostInstTp::getDefaultStatus, 0);
+                objectLambdaUpdateWrapper.set(TopCostInstTp::getUpdateTime, DateUtils.getNowTime());
+                update(null, objectLambdaUpdateWrapper);
+            }
+            for(TopCostInstTpItemAddBo itemBo : bo.getItemList()){
+                itemBo.setTpId(add.getTpId());
+                iTopCostInstTpItemService.insertByAddBo(itemBo);
+            }
+
+        }
+        return true;
     }
 
     @Override
@@ -81,6 +118,20 @@ public class TopCostInstTpServiceImpl extends ServiceImpl<TopCostInstTpMapper, T
         TopCostInstTp update = BeanUtil.toBean(bo, TopCostInstTp.class);
         validEntityBeforeSave(update);
         update.setUpdateTime(DateUtils.getNowTime());
+        if(Validator.isNotEmpty(bo.getTpName())){
+            TopCostInstTp mplatformLog = getOne(new LambdaQueryWrapper<TopCostInstTp>()
+                    .eq(TopCostInstTp::getTpName,bo.getTpName()).ne(TopCostInstTp::getStatus,-1).ne(TopCostInstTp::getTpId,bo.getTpId()).last("limit 1"));
+            if(Validator.isNotEmpty(mplatformLog)){
+                throw new CustomException("该模板名称已存在");
+            }
+        }
+        if(Validator.isNotEmpty(bo.getItemList())){
+            iTopCostInstTpItemService.remove(new LambdaQueryWrapper<TopCostInstTpItem>().eq(TopCostInstTpItem::getTpId, bo.getTpId()));
+            for(TopCostInstTpItemAddBo itemBo : bo.getItemList()){
+                itemBo.setTpId(bo.getTpId());
+                iTopCostInstTpItemService.insertByAddBo(itemBo);
+            }
+        }
         return this.updateById(update);
     }
 
@@ -100,4 +151,15 @@ public class TopCostInstTpServiceImpl extends ServiceImpl<TopCostInstTpMapper, T
         }
         return this.removeByIds(ids);
     }
+
+    @Override
+    public Boolean deleteBatch(TopCostInstTpQueryBo queryBo) {
+        for(Long id : queryBo.getIds()){
+            TopCostInstTp update = new TopCostInstTp();
+            update.setTpId(id);
+            update.setStatus(-1);
+            this.updateById(update);
+        }
+        return true;
+    }
 }

+ 60 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCostInstTpItemVo.java

@@ -0,0 +1,60 @@
+package com.zhongzheng.modules.top.financial.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.math.BigDecimal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+
+
+/**
+ * 供应商成本模板子项视图对象 mall_package
+ *
+ * @author hjl
+ * @date 2023-07-24
+ */
+@Data
+@ApiModel("供应商成本模板子项视图对象")
+public class TopCostInstTpItemVo {
+	private static final long serialVersionUID = 1L;
+
+	/** $pkColumn.columnComment */
+	@ApiModelProperty("$pkColumn.columnComment")
+	private Long id;
+
+	/** 模板ID */
+	@Excel(name = "模板ID")
+	@ApiModelProperty("模板ID")
+	private Long tpId;
+	/** 供应商成本分类id */
+	@Excel(name = "供应商成本分类id")
+	@ApiModelProperty("供应商成本分类id")
+	private Long costCatId;
+	/** 业务层ID */
+	@Excel(name = "业务层ID")
+	@ApiModelProperty("业务层ID")
+	private Long businessId;
+	/** 成本类型 1百分比 2固定成本 */
+	@Excel(name = "成本类型 1百分比 2固定成本")
+	@ApiModelProperty("成本类型 1百分比 2固定成本")
+	private Integer itemType;
+	/** 百分比值为 0到 100 */
+	@Excel(name = "百分比值为 0到 100")
+	@ApiModelProperty("百分比值为 0到 100")
+	private BigDecimal typeValue;
+	/** 0 禁用 1启用 */
+	@Excel(name = "0 禁用 1启用")
+	@ApiModelProperty("0 禁用 1启用")
+	private Integer status;
+	/** 教育类型id(-1不限制) */
+	@Excel(name = "教育类型id(-1不限制)")
+	@ApiModelProperty("教育类型id(-1不限制)")
+	private Long educationTypeId;
+	/** 项目ID */
+	@Excel(name = "项目ID")
+	@ApiModelProperty("项目ID")
+	private Long projectId;
+}

+ 22 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopCostInstTpItemMapper.xml

@@ -0,0 +1,22 @@
+<?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="com.zhongzheng.modules.top.financial.mapper.TopCostInstTpItemMapper">
+
+    <resultMap type="com.zhongzheng.modules.top.financial.domain.TopCostInstTpItem" id="TopCostInstTpItemResult">
+        <result property="id" column="id"/>
+        <result property="tpId" column="tp_id"/>
+        <result property="costCatId" column="cost_cat_id"/>
+        <result property="businessId" column="business_id"/>
+        <result property="itemType" column="item_type"/>
+        <result property="typeValue" column="type_value"/>
+        <result property="status" column="status"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="educationTypeId" column="education_type_id"/>
+        <result property="projectId" column="project_id"/>
+    </resultMap>
+
+
+</mapper>