Browse Source

一级、二级分类新增/修改

dev_shibei_match
zhangyongzhangyong 5 years ago
parent
commit
87868161ca
  1. 47
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/FirstCategoryFormDTO.java
  2. 21
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/SecondCategoryFormDTO.java
  3. 50
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java
  4. 29
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java
  5. 42
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java
  6. 122
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java
  7. 27
      epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml

47
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/FirstCategoryFormDTO.java

@ -0,0 +1,47 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
/**
* @Description 一级分类 新增/修改
* @Auth zy
* @Date 2021-03-22 09:17
*/
@Data
public class FirstCategoryFormDTO implements Serializable {
private static final long serialVersionUID = 3188828578545996470L;
public interface AddCategoryInternalGroup {
}
/**
* 客户Id
**/
@NotBlank(message = "customerId不能为空", groups = AddCategoryInternalGroup.class)
private String customerId;
/**
* 分类Id
* issue_project_category_dict 表主键只有执行修改操作时才会传入
**/
private String categoryId;
/**
* 分类名称
**/
private String categoryName;
/**
* 排序
**/
private Integer sort;
/**
* 操作类型(add:新增 edit:编辑)
**/
@NotBlank(message = "操作类型不能为空", groups = AddCategoryInternalGroup.class)
private String type;
}

21
epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/SecondCategoryFormDTO.java

@ -0,0 +1,21 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 二级分类 新增/修改
* @ClassName CommonGridIdListFormDTO
* @Auth zy
* @Date 2021-03-22 09:17
*/
@Data
public class SecondCategoryFormDTO extends FirstCategoryFormDTO implements Serializable{
private static final long serialVersionUID = 3188828578545996470L;
/**
* 一级分类Id
**/
private String parentCategoryId;
}

50
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/controller/IssueProjectCategoryDictController.java

@ -18,6 +18,8 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.enums.CommonOperateTypeEnum;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
@ -31,11 +33,13 @@ import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.ProjectIssueCategoryResultDTO;
import com.epmet.entity.IssueProjectCategoryDictEntity;
import com.epmet.excel.IssueProjectCategoryDictExcel;
import com.epmet.project.dto.CustomerCategoryDTO;
import com.epmet.project.dto.result.ProjectCategoryDictResultDTO;
import com.epmet.service.IssueProjectCategoryDictService;
import com.epmet.utils.ModuleConstants;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -189,4 +193,50 @@ public class IssueProjectCategoryDictController {
return new Result<List<ProjectCategoryDictResultDTO>>().ok(issueProjectCategoryDictService.listCategoryDict(dto.getCustomerId(),
dto.getPid()));
}
/**
* 新增或修改一级分类信息分类名称在同一个客户下有效数据中不允许重复
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Author zhangyong
* @Date 10:27 2021-03-23
**/
@PostMapping("savefirstcategory")
public Result<String> saveFirstCategory(@RequestBody SecondCategoryFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getCustomerId())) {
throw new RenException("客户id 不能为空");
}
if (CommonOperateTypeEnum.ADD.getCode().equals(formDTO.getType())) {
return issueProjectCategoryDictService.saveFirstCategory(formDTO);
} else if (CommonOperateTypeEnum.EDIT.getCode().equals(formDTO.getType())){
return issueProjectCategoryDictService.editFirstCategory(formDTO);
}
throw new RenException("操作类型为空,或错误。type:" + formDTO.getType());
}
/**
* 新增或修改二级分类信息分类名称在同一个客户下同一 一级分类下有效数据中不允许重复
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String>
* @Author zhangyong
* @Date 10:27 2021-03-23
**/
@PostMapping("savesecondcategory")
public Result<String> saveSecondCategory(@RequestBody SecondCategoryFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getCustomerId())) {
throw new RenException("客户id 不能为空");
}
if (StringUtils.isBlank(formDTO.getParentCategoryId())) {
throw new RenException("一级分类Id 不能为空");
}
if (CommonOperateTypeEnum.ADD.getCode().equals(formDTO.getType())) {
return issueProjectCategoryDictService.saveSecondCategory(formDTO);
} else if (CommonOperateTypeEnum.EDIT.getCode().equals(formDTO.getType())){
return issueProjectCategoryDictService.editSecondCategory(formDTO);
}
throw new RenException("操作类型为空,或错误。type:" + formDTO.getType());
}
}

29
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/dao/IssueProjectCategoryDictDao.java

@ -113,4 +113,33 @@ public interface IssueProjectCategoryDictDao extends BaseDao<IssueProjectCategor
* @author sun
*/
int updateCustomerCategory(IsDisableCategoryFormDTO formDTO);
/**
* 获取客户下 最大的分类编码
*
* @param customerId
* @param parentCategoryCode
* = 0 查询一级分类的最大分类编码
* = 10xx 根据上级分类编码查询某个子级的最大分类编码
* @return java.lang.Integer
* @Author zhangyong
* @Date 13:35 2021-03-23
**/
Integer getMaxCategoryCode(@Param("customerId") String customerId, @Param("parentCategoryCode") String parentCategoryCode);
/**
* 判断同一个客户下有效数据中 分类名称是否重复
* > 0 则为重复
*
*
* @param customerId
* @param categoryName
* @param pid != null 表示 将查询范围限制在某一个一级分类 一级分类下的有效数据
* @param id 修改时不一定会修改分类名称所以需通过id 过滤自己
* @return java.lang.Boolean
* @Author zhangyong
* @Date 14:11 2021-03-23
**/
Integer isCategoryName(@Param("customerId") String customerId, @Param("categoryName") String categoryName,
@Param("pid") String pid, @Param("id") String id);
}

42
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/IssueProjectCategoryDictService.java

@ -19,12 +19,14 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IssueProjectCategoryDictDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CustomerCategoryListResultDTO;
import com.epmet.dto.result.ProjectIssueCategoryResultDTO;
import com.epmet.entity.IssueProjectCategoryDictEntity;
import com.epmet.project.dto.result.ProjectCategoryDictResultDTO;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.Map;
@ -154,4 +156,44 @@ public interface IssueProjectCategoryDictService extends BaseService<IssueProjec
* @Date 14:10 2021-03-22
**/
List<ProjectCategoryDictResultDTO> listCategoryDict(String customerId, String pid);
/**
* 新增一级分类信息分类名称在同一个客户下有效数据中不允许重复
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String> 新增后的主键
* @Author zhangyong
* @Date 10:27 2021-03-23
**/
Result<String> saveFirstCategory(SecondCategoryFormDTO formDTO);
/**
* 修改一级分类信息分类名称在同一个客户下有效数据中不允许重复
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String> 新增后的主键
* @Author zhangyong
* @Date 10:27 2021-03-23
**/
Result<String> editFirstCategory(SecondCategoryFormDTO formDTO);
/**
* 新增二级分类信息分类名称在同一个客户下同一 一级分类下有效数据中不允许重复
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String> 新增后的主键
* @Author zhangyong
* @Date 10:27 2021-03-23
**/
Result<String> saveSecondCategory(SecondCategoryFormDTO formDTO);
/**
* 修改二级分类信息分类名称在同一个客户下有效数据中不允许重复
*
* @param formDTO
* @return com.epmet.commons.tools.utils.Result<java.lang.String> 新增后的主键
* @Author zhangyong
* @Date 10:27 2021-03-23
**/
Result<String> editSecondCategory(SecondCategoryFormDTO formDTO);
}

122
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueProjectCategoryDictServiceImpl.java

@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.CommonOperateTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
@ -307,5 +308,126 @@ public class IssueProjectCategoryDictServiceImpl extends BaseServiceImpl<IssuePr
@Override
public List<ProjectCategoryDictResultDTO> listCategoryDict(String customerId, String pid) {
return baseDao.selectListCategoryDict(customerId, pid);
}
@Override
public Result<String> saveFirstCategory(SecondCategoryFormDTO formDTO) {
// 分类名称在同一个客户下有效数据中不允许重复
Integer numCategoryName = baseDao.isCategoryName(formDTO.getCustomerId(), formDTO.getCategoryName(), null,null);
if (NumConstant.ZERO < numCategoryName) {
throw new RenException("现添加的一级分类名称 重复");
}
IssueProjectCategoryDictEntity entity = this.packageFirstCategoryDictEntity(formDTO);
baseDao.insert(entity);
return new Result<String>().ok(entity.getId());
}
/**
* 一级分类 组装字段
*
* @param formDTO
* @return com.epmet.entity.IssueProjectCategoryDictEntity
* @Author zhangyong
* @Date 10:46 2021-03-23
**/
private IssueProjectCategoryDictEntity packageFirstCategoryDictEntity(SecondCategoryFormDTO formDTO) {
IssueProjectCategoryDictEntity entity = new IssueProjectCategoryDictEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setPid(NumConstant.ZERO_STR );
entity.setPids(NumConstant.ZERO_STR );
entity.setParentCategoryCode(NumConstant.ZERO_STR);
// 查询 当前客户下,+1 后最大的一级分类数。从1开始
Integer maxCategoryCode = baseDao.getMaxCategoryCode(formDTO.getCustomerId(), NumConstant.ZERO_STR);
if (NumConstant.ZERO == maxCategoryCode) {
maxCategoryCode = 1001;
} else {
maxCategoryCode++;
}
entity.setCategoryCode(String.valueOf(maxCategoryCode));
entity.setCategoryName(formDTO.getCategoryName());
entity.setCategoryType(NumConstant.ONE_STR);
entity.setSort(formDTO.getSort());
entity.setIsDisable("enable");
return entity;
}
@Override
public Result<String> editFirstCategory(SecondCategoryFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getCategoryId())) {
throw new RenException("分类Id 不能为空");
}
// 分类名称在同一个客户下有效数据中不允许重复
Integer numCategoryName = baseDao.isCategoryName(formDTO.getCustomerId(), formDTO.getCategoryName(), null, formDTO.getCategoryId());
if (NumConstant.ZERO < numCategoryName) {
throw new RenException("现添加的一级分类名称 重复");
}
IssueProjectCategoryDictEntity entity = new IssueProjectCategoryDictEntity();
entity.setCategoryName(formDTO.getCategoryName());
entity.setSort(formDTO.getSort());
entity.setId(formDTO.getCategoryId());
baseDao.updateById(entity);
return new Result<>();
}
@Override
public Result<String> saveSecondCategory(SecondCategoryFormDTO formDTO) {
// 分类名称在同一个客户下同一 一级分类下有效数据中不允许重复
Integer numCategoryName = baseDao.isCategoryName(formDTO.getCustomerId(), formDTO.getCategoryName(), formDTO.getParentCategoryId(), null);
if (NumConstant.ZERO < numCategoryName) {
throw new RenException("现添加的二级分类名称 重复");
}
IssueProjectCategoryDictEntity entity = this.packageSecondCategoryDictEntity(formDTO);
baseDao.insert(entity);
return new Result<String>().ok(entity.getId());
}
/**
* 二级分类 组装字段
*
* @param formDTO
* @return com.epmet.entity.IssueProjectCategoryDictEntity
* @Author zhangyong
* @Date 10:46 2021-03-23
**/
private IssueProjectCategoryDictEntity packageSecondCategoryDictEntity(SecondCategoryFormDTO formDTO) {
IssueProjectCategoryDictEntity entity = new IssueProjectCategoryDictEntity();
entity.setCustomerId(formDTO.getCustomerId());
entity.setPid(formDTO.getParentCategoryId());
entity.setPids(formDTO.getParentCategoryId());
IssueProjectCategoryDictEntity parentCategoryCode = baseDao.selectById(formDTO.getParentCategoryId());
entity.setParentCategoryCode(parentCategoryCode.getCategoryCode());
// 查询 当前客户下,+1 后最大的一级分类数
Integer maxCategoryCode = baseDao.getMaxCategoryCode(formDTO.getCustomerId(), parentCategoryCode.getCategoryCode());
if (NumConstant.ZERO == maxCategoryCode) {
maxCategoryCode = Integer.valueOf(parentCategoryCode.getCategoryCode() + "1001");
} else {
maxCategoryCode++;
}
entity.setCategoryCode(String.valueOf(maxCategoryCode));
entity.setCategoryName(formDTO.getCategoryName());
entity.setCategoryType(NumConstant.TWO_STR);
entity.setSort(formDTO.getSort());
entity.setIsDisable("enable");
return entity;
}
@Override
public Result<String> editSecondCategory(SecondCategoryFormDTO formDTO) {
if (StringUtils.isBlank(formDTO.getCategoryId())) {
throw new RenException("分类Id 不能为空");
}
// 分类名称在同一个客户下同一 一级分类下有效数据中不允许重复
Integer numCategoryName = baseDao.isCategoryName(formDTO.getCustomerId(), formDTO.getCategoryName(), formDTO.getParentCategoryId(), formDTO.getCategoryId());
if (NumConstant.ZERO < numCategoryName) {
throw new RenException("现添加的二级分类名称 重复");
}
IssueProjectCategoryDictEntity entity = new IssueProjectCategoryDictEntity();
entity.setCategoryName(formDTO.getCategoryName());
entity.setSort(formDTO.getSort());
entity.setId(formDTO.getCategoryId());
baseDao.updateById(entity);
return new Result<>();
}
}

27
epmet-module/gov-issue/gov-issue-server/src/main/resources/mapper/IssueProjectCategoryDictDao.xml

@ -161,4 +161,31 @@
</foreach>
</update>
<select id="getMaxCategoryCode" resultType="Integer">
SELECT
IFNULL( MAX(CATEGORY_CODE), 0)
FROM
`issue_project_category_dict`
WHERE
PARENT_CATEGORY_CODE = #{parentCategoryCode}
AND CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
</select>
<select id="isCategoryName" resultType="Integer">
SELECT
COUNT(1)
FROM
`issue_project_category_dict`
WHERE
CATEGORY_NAME = #{categoryName}
AND CUSTOMER_ID = #{customerId}
AND DEL_FLAG = '0'
<if test="pid != null and pid != '' ">
AND (ID = #{pid} OR PID = #{pid})
</if>
<if test="id != null">
AND id != #{id}
</if>
</select>
</mapper>

Loading…
Cancel
Save