分公司管理

This commit is contained in:
cwchen 2025-04-17 17:37:02 +08:00
parent f08ec854e3
commit a04d624718
6 changed files with 532 additions and 0 deletions

View File

@ -0,0 +1,94 @@
package com.bonus.base.basic.controller;
import com.bonus.base.basic.domain.vo.BranchCompanyVo;
import com.bonus.base.basic.service.IBranchCompanyService;
import com.bonus.base.basic.service.IBranchCompanyService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo;
import com.bonus.common.log.annotation.SysLog;
import com.bonus.common.log.enums.OperaType;
import com.bonus.common.security.annotation.RequiresPermissions;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @className:BranchCompanyController
* @author:cwchen
* @date:2025-04-10-10:22
* @version:1.0
* @description:分公司管理-控制层
*/
@Api(tags = "分公司管理")
@RestController
@RequestMapping("/branchCompany/")
public class BranchCompanyController extends BaseController {
@Resource(name = "IBranchCompanyService")
private IBranchCompanyService service;
@ApiOperation(value = "查询分公司数据")
@RequiresPermissions("basic:branchCompany:list")
@SysLog(title = "分公司管理", businessType = OperaType.QUERY, logType = 1,module = "分公司管理->查询分公司数据")
@GetMapping("queryBranchCompanyList")
public TableDataInfo queryBranchCompanyList(BranchCompanyVo vo) {
startPage();
List<BranchCompanyVo> list = service.queryBranchCompanyList(vo);
return getDataTable(list);
}
@ApiOperation(value = "新增分公司")
// @PreventRepeatSubmit
@RequiresPermissions("basic:branchCompany:add")
@SysLog(title = "分公司管理", businessType = OperaType.INSERT, logType = 1,module = "分公司管理->新增分公司")
@PostMapping("addBranchCompany")
public AjaxResult addBranchCompany(@RequestBody BranchCompanyVo vo) {
return service.addBranchCompany(vo);
}
@ApiOperation(value = "分公司详情")
@GetMapping("detailBranchCompany")
public AjaxResult detailBranchCompany(BranchCompanyVo vo) {
return service.detailBranchCompany(vo);
}
@ApiOperation(value = "修改分公司")
// @PreventRepeatSubmit
@RequiresPermissions("basic:branchCompany:edit")
@SysLog(title = "分公司管理", businessType = OperaType.UPDATE, logType = 1,module = "分公司管理->修改分公司")
@PostMapping("editBranchCompany")
public AjaxResult editBranchCompany(@RequestBody BranchCompanyVo vo) {
return service.editBranchCompany(vo);
}
@ApiOperation(value = "删除分公司")
// @PreventRepeatSubmit
@RequiresPermissions("basic:branchCompany:del")
@SysLog(title = "分公司管理", businessType = OperaType.UPDATE, logType = 1,module = "分公司管理->删除分公司")
@PostMapping("delBranchCompany")
public AjaxResult delBranchCompany(@RequestBody BranchCompanyVo vo) {
return service.delBranchCompany(vo);
}
@ApiOperation(value = "修改分公司状态")
// @PreventRepeatSubmit
@RequiresPermissions("basic:branchCompany:editStatus")
@SysLog(title = "分公司管理", businessType = OperaType.UPDATE, logType = 1,module = "分公司管理->修改分公司状态")
@PostMapping("editBranchCompanyStatus")
public AjaxResult editBranchCompanyStatus(@RequestBody BranchCompanyVo vo) {
return service.editBranchCompanyStatus(vo);
}
@ApiOperation(value = "查询分公司数据")
@RequiresPermissions("basic:branchCompany:list")
@SysLog(title = "分公司管理", businessType = OperaType.QUERY, logType = 1,module = "分公司管理->查询分公司数据")
@GetMapping("queryBranchCompanyListAll")
public AjaxResult queryBranchCompanyListAll(BranchCompanyVo vo) {
List<BranchCompanyVo> list = service.queryBranchCompanyList(vo);
return success(list);
}
}

View File

@ -0,0 +1,94 @@
package com.bonus.base.basic.domain.vo;
import com.bonus.common.security.utils.SecurityUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.util.Date;
import java.util.Optional;
/**
* @className:SysUnitVo
* @author:cwchen
* @date:2025-04-10-9:44
* @version:1.0
* @description:分公司-VO
*/
@Data
public class BranchCompanyVo {
/**关键字*/
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String keyWord;
@NotNull(message = "id不能为空", groups = {Edit.class,Del.class,EditStatus.class})
private Long id;
/**
* 分公司名称
*/
@NotBlank(message = "分公司名称不能为空", groups = {Add.class, Edit.class})
@Length(max = 128, message = "分公司名称字符长度不能超过128", groups = {Add.class, Edit.class})
private String companyName;
/**
* 简称
*/
@NotBlank(message = "简称不能为空", groups = {Add.class, Edit.class})
@Length(max = 128, message = "简称字符长度不能超过128", groups = {Add.class, Edit.class})
private String abbrName;
/**
* 状态
*/
@NotBlank(message = "状态不能为空", groups = {Add.class, Edit.class,EditStatus.class})
@Pattern(regexp = "[01]", message = "只允许输入0或1",groups = {Add.class, Edit.class,EditStatus.class})
private String useStatus;
/**
* 备注
*/
@Length(max = 255, message = "备注字符长度不能超过255", groups = {Add.class, Edit.class})
private String remark;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private Long createUserId = Optional.ofNullable(SecurityUtils.getUserId()).orElse(0L);
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private Long updateUserId = Optional.ofNullable(SecurityUtils.getUserId()).orElse(0L);
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
/**
* 更新人
* */
private String updateUserName;
/**
* 新增条件限制
*/
public interface Add {
}
/**
* 修改条件限制
*/
public interface Edit {
}
/**
* 删除条件限制
*/
public interface Del {
}
/**
* 删除条件限制
*/
public interface EditStatus {
}
}

View File

@ -0,0 +1,57 @@
package com.bonus.base.basic.mapper;
import com.bonus.base.basic.domain.vo.BranchCompanyVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @className:BranchCompanyMapper
* @author:cwchen
* @date:2025-04-17-17:06
* @version:1.0
* @description:分公司管理-数据层
*/
@Repository(value = "BranchCompanyMapper")
public interface IBranchCompanyMapper {
/**
* 查询分公司数据
*
* @param vo
* @return List<BranchCompanyVo>
* @author cwchen
* @date 2025/4/10 10:55
*/
List<BranchCompanyVo> queryBranchCompanyList(BranchCompanyVo vo);
/**
* 查询字段是否重复
*
* @param vo
* @return int
* @author cwchen
* @date 2025/4/10 13:36
*/
int queryValueIsExist(@Param("params") BranchCompanyVo vo, @Param("value")String value, @Param("columnName") String columnName);
/**
* 1.新增/2.修改/3.删除/4.修改分公司状态 分公司
* @param vo
* @param type
* @return void
* @author cwchen
* @date 2025/4/10 13:53
*/
void addOrUpdateBranchCompany(@Param("params") BranchCompanyVo vo, @Param("type") int type);
/**
* 分公司详情
* @param vo
* @return BranchCompanyVo
* @author cwchen
* @date 2025/4/10 17:52
*/
BranchCompanyVo detailBranchCompany(BranchCompanyVo vo);
}

View File

@ -0,0 +1,70 @@
package com.bonus.base.basic.service;
import com.bonus.base.basic.domain.vo.BranchCompanyVo;
import com.bonus.common.core.web.domain.AjaxResult;
import java.util.List;
/**
* @className:BranchCompanyService
* @author:cwchen
* @date:2025-04-17-17:05
* @version:1.0
* @description:分公司管理-业务层
*/
public interface IBranchCompanyService {
/**
* 查询分公司数据
* @param vo
* @return List<BranchCompanyVo>
* @author cwchen
* @date 2025/4/10 10:52
*/
List<BranchCompanyVo> queryBranchCompanyList(BranchCompanyVo vo);
/**
* 新增分公司
* @param vo
* @return AjaxResult
* @author cwchen
* @date 2025/4/10 13:29
*/
AjaxResult addBranchCompany(BranchCompanyVo vo);
/**
* 修改分公司
* @param vo
* @return AjaxResult
* @author cwchen
* @date 2025/4/10 14:00
*/
AjaxResult editBranchCompany(BranchCompanyVo vo);
/**
* 删除分公司
* @param vo
* @return AjaxResult
* @author cwchen
* @date 2025/4/10 14:01
*/
AjaxResult delBranchCompany(BranchCompanyVo vo);
/**
* 分公司详情
* @param vo
* @return AjaxResult
* @author cwchen
* @date 2025/4/10 17:50
*/
AjaxResult detailBranchCompany(BranchCompanyVo vo);
/**
* 修改分公司状态
* @param vo
* @return AjaxResult
* @author cwchen
* @date 2025/4/17 17:34
*/
AjaxResult editBranchCompanyStatus(BranchCompanyVo vo);
}

View File

@ -0,0 +1,135 @@
package com.bonus.base.basic.service.impl;
import com.bonus.base.basic.domain.vo.BranchCompanyVo;
import com.bonus.base.basic.mapper.IBranchCompanyMapper;
import com.bonus.base.basic.service.IBranchCompanyService;
import com.bonus.common.core.utils.uuid.IdUtils;
import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.ValidatorsUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* @className:BranchCompanyServiceImpl
* @author:cwchen
* @date:2025-04-17-17:05
* @version:1.0
* @description:分公司管理-业务逻辑层
*/
@Service(value = "IBranchCompanyService")
@Slf4j
public class BranchCompanyServiceImpl implements IBranchCompanyService {
@Resource(name = "BranchCompanyMapper")
private IBranchCompanyMapper mapper;
@Resource(name = "ValidatorsUtils")
private ValidatorsUtils validatorsUtils;
@Override
public List<BranchCompanyVo> queryBranchCompanyList(BranchCompanyVo vo) {
try {
List<BranchCompanyVo> list = Optional.ofNullable(mapper.queryBranchCompanyList(vo)).orElseGet(ArrayList::new);
return list;
} catch (Exception e) {
log.error(e.toString(), e);
return new ArrayList<BranchCompanyVo>();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult addBranchCompany(BranchCompanyVo vo) {
try {
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BranchCompanyVo.Add.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
// 校验分公司名称是否重复
int flag = mapper.queryValueIsExist(vo,vo.getCompanyName(),"company_name");
if (flag > 0) return AjaxResult.error("分公司名称已存在");
mapper.addOrUpdateBranchCompany(vo,1);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult editBranchCompany(BranchCompanyVo vo) {
try {
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BranchCompanyVo.Edit.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
// 校验分公司名称是否重复
int flag = mapper.queryValueIsExist(vo,vo.getCompanyName(),"company_name");
if (flag > 0) return AjaxResult.error("分公司名称已存在");
mapper.addOrUpdateBranchCompany(vo,2);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public AjaxResult delBranchCompany(BranchCompanyVo vo) {
try {
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BranchCompanyVo.Del.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
mapper.addOrUpdateBranchCompany(vo,3);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
@Override
public AjaxResult editBranchCompanyStatus(BranchCompanyVo vo) {
try {
// 校验必填数据
String validResult = validatorsUtils.valid(vo, BranchCompanyVo.EditStatus.class);
if (StringUtils.isNotBlank(validResult)) {
return AjaxResult.error(validResult);
}
mapper.addOrUpdateBranchCompany(vo,4);
return AjaxResult.success();
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AjaxResult.error();
}
}
@Override
public AjaxResult detailBranchCompany(BranchCompanyVo vo) {
try {
BranchCompanyVo BranchCompanyVo = Optional.ofNullable(mapper.detailBranchCompany(vo)).orElseGet(BranchCompanyVo::new);
return AjaxResult.success(BranchCompanyVo);
} catch (Exception e) {
log.error(e.toString(), e);
return AjaxResult.error();
}
}
}

View File

@ -0,0 +1,82 @@
<?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.bonus.base.basic.mapper.IBranchCompanyMapper">
<!--1.新增/2.修改/3.删除分公司-->
<insert id="addOrUpdateBranchCompany">
<if test="type == 1">
INSERT INTO tb_branch_company
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="params.companyName != null and params.companyName != ''">company_name,</if>
<if test="params.abbrName != null and params.abbrName != ''">abbr_name,</if>
<if test="params.useStatus != null and params.useStatus != ''">use_status,</if>
<if test="params.remark != null and params.remark!=''">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="params.companyName != null and params.companyName != ''">#{params.companyName},</if>
<if test="params.abbrName != null and params.abbrName != ''">#{params.abbrName},</if>
<if test="params.useStatus != null and params.useStatus != ''">#{params.useStatus},</if>
<if test="params.remark != null and params.remark!=''">#{params.remark},</if>
</trim>
</if>
<if test="type == 2">
UPDATE tb_branch_company
<trim prefix="SET " suffixOverrides=",">
company_name = #{params.companyName},
abbr_name = #{params.abbrName},
use_status = #{params.useStatus},
remark = #{params.remark},
</trim>
WHERE id = #{params.id}
</if>
<if test="type == 3">
UPDATE tb_branch_company SET is_active = '0' WHERE id = #{params.id}
</if>
<if test="type == 3">
UPDATE tb_branch_company SET use_status = #{params.useStatus} WHERE id = #{params.id}
</if>
</insert>
<!--查询分公司数据-->
<select id="queryBranchCompanyList" resultType="com.bonus.base.basic.domain.vo.BranchCompanyVo">
SELECT tbc.id,
tbc.company_name AS companyName,
tbc.abbr_name AS abbrName,
tbc.use_status AS useStatus,
tbc.remark AS remark,
su.nick_name AS updateUserName,
tbc.update_time AS updateTime
FROM tb_branch_company tbc
LEFT JOIN sys_user su ON tbc.update_user_id = su.user_id
<where>
<if test="keyWord!=null and keyWord!=''">
AND INSTR(tbc.company_name,#{keyWord}) > 0
</if>
AND tbc.is_active = '1'
</where>
</select>
<!--查询字段是否重复-->
<select id="queryValueIsExist" resultType="java.lang.Integer">
<if test="params.id==null or params.id==''">
SELECT COUNT(1)
FROM tb_branch_company
WHERE ${columnName} = #{value} AND is_active = '1'
</if>
<if test="params.id!=null and params.id!=''">
SELECT COUNT(1)
FROM tb_branch_company
WHERE ${columnName} = #{value} AND id != #{params.id} AND is_active = '1'
</if>
</select>
<!--分公司详情-->
<select id="detailBranchCompany" resultType="com.bonus.base.basic.domain.vo.BranchCompanyVo">
SELECT id,
company_name AS companyName,
abbr_name AS abbrName,
use_status AS useStatus,
remark AS remark
FROM tb_branch_company
WHERE id = #{id}
</select>
</mapper>