仓储动态表单;

This commit is contained in:
王奎兴
2026-03-31 09:31:22 +08:00
parent 49d7c303a5
commit 2af85ee22e
9 changed files with 729 additions and 0 deletions
@@ -0,0 +1,63 @@
package com.mhd.wms.domain.sysTableConfig.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author: brb
* @description:
* @create: 2026-03-04 14:30
*/
@Data
@TableName("sys_table_config")
public class SysTableConfig extends BaseVOEntity {
@TableId(type = IdType.AUTO)
private Long id;
/*
* 仓库id
* */
@ApiModelProperty("仓库ID")
@Excel(name = "仓库ID")
private Long warehouseId;
/**组织ID*/
@ApiModelProperty(value = "组织ID")
@Excel(name = "组织ID", width = 15)
private Long organizationId;
/**一级组织ID*/
@ApiModelProperty(value = "一级组织ID")
@Excel(name = "一级组织ID", width = 15)
private Long topOrganizationId;
/**组织名称*/
@ApiModelProperty(value = "组织名称")
@Excel(name = "组织名称", width = 15)
private String organizationName;
/**键*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String key;
/**值*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String value;
/**备注说明*/
@ApiModelProperty(value = "备注说明")
@Excel(name = "备注说明", width = 15)
private String remark;
/**明细值*/
@ApiModelProperty(value = "明细值")
@Excel(name = "明细值", width = 15)
private String detailValue;
/**物料添加方式*/
@ApiModelProperty(value = "物料添加方式")
@Excel(name = "物料添加方式", width = 15)
private String materialAddType;
}
@@ -0,0 +1,57 @@
package com.mhd.wms.domain.sysTableConfig.repository.facade;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mhd.wms.domain.sysTableConfig.entity.SysTableConfig;
import com.mhd.wms.domain.sysTableConfig.repository.todo.SysTableConfigDTO;
import com.mhd.wms.domain.sysTableConfig.repository.vo.SysTableConfigVO;
import java.util.List;
public interface ISysTableConfigService extends IService<SysTableConfig> {
/**
* 分页查询配置列表
* @param page 分页对象
* @param sysTableConfigDTO 查询条件
* @return 配置列表
*/
Page<SysTableConfigVO> queryList(Page<SysTableConfigVO> page, SysTableConfigDTO sysTableConfigDTO);
/**
* 根据组织 ID 和键查询配置
* @param organizationId 组织 ID
* @param key 配置键
* @return 配置信息
*/
SysTableConfig getByOrgIdAndKey(Long organizationId, String key);
/**
* 根据组织 ID 查询所有配置
* @param organizationId 组织 ID
* @return 配置列表
*/
List<SysTableConfig> listByOrgId(Long organizationId);
/**
* 保存或更新配置(根据组织 ID 和键判断是新增还是更新)
* @param sysTableConfigDTO 配置信息
* @return 是否成功
*/
boolean saveOrUpdateConfig(SysTableConfigDTO sysTableConfigDTO);
/**
* 删除配置
* @param ids 主键 ID 列表
* @return 是否成功
*/
int delete(List<String> ids);
/**
* 根据组织 ID 删除所有配置
* @param organizationId 组织 ID
* @return 是否成功
*/
int deleteByOrgId(Long organizationId);
}
@@ -0,0 +1,47 @@
package com.mhd.wms.domain.sysTableConfig.repository.mapper;
import java.util.List;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mhd.wms.domain.sysTableConfig.entity.SysTableConfig;
import com.mhd.wms.domain.sysTableConfig.repository.vo.SysTableConfigVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* @Description: 系统表配置(全局表内容展示顺序)
* @Author: Assistant
* @Date: 2026-03-04
* @Version: V1.0
*/
public interface SysTableConfigMapper extends BaseMapper<SysTableConfig> {
/**
* 根据组织 ID 和键查询配置
* @param organizationId 组织 ID
* @param key 配置键
* @return 配置信息
*/
@Select("SELECT * FROM sys_table_config WHERE organization_id = #{organizationId} AND key = #{key}")
SysTableConfig getByOrgIdAndKey(@Param("organizationId") Long organizationId, @Param("key") String key);
/**
* 根据组织 ID 查询所有配置
* @param organizationId 组织 ID
* @return 配置列表
*/
@Select("SELECT * FROM sys_table_config WHERE organization_id = #{organizationId} ORDER BY create_time DESC")
List<SysTableConfig> listByOrgId(@Param("organizationId") Long organizationId);
/**
* 分页查询配置列表
* @param page 分页对象
* @param organizationId 组织 ID
* @param key 配置键(可选)
* @return 配置列表
*/
List<SysTableConfigVO> queryList(Page<SysTableConfigVO> page,
@Param("organizationId") Long organizationId,
@Param("key") String key);
}
@@ -0,0 +1,140 @@
package com.mhd.wms.domain.sysTableConfig.repository.persistence;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.utils.StringUtils;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.domain.WlhyLoginUser;
import com.mhd.wms.domain.sysTableConfig.entity.SysTableConfig;
import com.mhd.wms.domain.sysTableConfig.repository.facade.ISysTableConfigService;
import com.mhd.wms.domain.sysTableConfig.repository.mapper.SysTableConfigMapper;
import com.mhd.wms.domain.sysTableConfig.repository.todo.SysTableConfigDTO;
import com.mhd.wms.domain.sysTableConfig.repository.vo.SysTableConfigVO;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service
public class SysTableConfigServiceImpl extends ServiceImpl<SysTableConfigMapper, SysTableConfig> implements ISysTableConfigService {
@Resource
private SysTableConfigMapper sysTableConfigMapper;
@Override
public Page<SysTableConfigVO> queryList(Page<SysTableConfigVO> page, SysTableConfigDTO sysTableConfigDTO) {
// 获取登录人信息(可选,用于自动填充组织 ID)
try {
WlhyLoginUser loginUser = SecurityUtils.getLoginUser().getWlhyLoginUser();
if (loginUser != null && sysTableConfigDTO.getOrganizationId() == null) {
// 如果没有传入组织 ID,可以选择不设置或者设置默认值
// 这里保持传入参数不变,由 Mapper 层处理 null 值
}
} catch (Exception e) {
e.printStackTrace();
}
List<SysTableConfigVO> list = sysTableConfigMapper.queryList(page,
sysTableConfigDTO.getOrganizationId() != null ? sysTableConfigDTO.getOrganizationId().longValue() : null,
sysTableConfigDTO.getKey());
return page.setRecords(list);
}
@Override
public SysTableConfig getByOrgIdAndKey(Long organizationId, String key) {
if (organizationId == null || StringUtils.isBlank(key)) {
throw new ServiceException("组织 ID 和键不能为空");
}
return sysTableConfigMapper.getByOrgIdAndKey(organizationId, key);
}
@Override
public List<SysTableConfig> listByOrgId(Long organizationId) {
if (organizationId == null) {
throw new ServiceException("组织 ID 不能为空");
}
return sysTableConfigMapper.listByOrgId(organizationId);
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveOrUpdateConfig(SysTableConfigDTO sysTableConfigDTO) {
if (sysTableConfigDTO.getOrganizationId() == null) {
throw new ServiceException("组织 ID 不能为空");
}
if (StringUtils.isBlank(sysTableConfigDTO.getKey())) {
throw new ServiceException("配置键不能为空");
}
if (StringUtils.isBlank(sysTableConfigDTO.getValue())) {
throw new ServiceException("配置值不能为空");
}
// 获取登录人信息
WlhyLoginUser loginUser = SecurityUtils.getLoginUser().getWlhyLoginUser();
String username = loginUser != null ? loginUser.getUsername() : "system";
// 判断是新增还是更新
SysTableConfig existingConfig = sysTableConfigMapper.getByOrgIdAndKey(
sysTableConfigDTO.getOrganizationId().longValue(),
sysTableConfigDTO.getKey());
if (existingConfig != null) {
// 更新
existingConfig.setValue(sysTableConfigDTO.getValue());
//existingConfig.setUpdateBy(username);
existingConfig.setUpdateTime(new Date());
existingConfig.setDetailValue(sysTableConfigDTO.getDetailValue());
existingConfig.setMaterialAddType(sysTableConfigDTO.getMaterialAddType());
if (StringUtils.isNotBlank(sysTableConfigDTO.getRemark())) {
existingConfig.setRemark(sysTableConfigDTO.getRemark());
}
return this.updateById(existingConfig);
} else {
// 新增
SysTableConfig newConfig = new SysTableConfig();
BeanUtils.copyProperties(sysTableConfigDTO, newConfig);
//newConfig.setCreateBy(username);
newConfig.setCreateTime(new Date());
//newConfig.setUpdateBy(username);
newConfig.setUpdateTime(new Date());
return this.save(newConfig);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public int delete(List<String> ids) {
if (ids == null || ids.isEmpty()) {
throw new ServiceException("删除的 ID 不能为空");
}
// 简单的日志记录,不做复杂的权限验证
try {
WlhyLoginUser loginUser = SecurityUtils.getLoginUser().getWlhyLoginUser();
if (loginUser != null) {
}
} catch (Exception e) {
e.printStackTrace();
}
return this.removeByIds(ids) ? ids.size() : 0;
}
@Override
@Transactional(rollbackFor = Exception.class)
public int deleteByOrgId(Long organizationId) {
if (organizationId == null) {
throw new ServiceException("组织 ID 不能为空");
}
LambdaQueryWrapper<SysTableConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(SysTableConfig::getOrganizationId, organizationId);
return this.remove(queryWrapper) ? 1 : 0;
}
}
@@ -0,0 +1,61 @@
package com.mhd.wms.domain.sysTableConfig.repository.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author: brb
* @description:
* @create: 2026-03-04 14:30
*/
@Data
public class SysTableConfigPO extends BaseVOEntity {
@TableId(type = IdType.AUTO)
private Long id;
/*
* 仓库id
* */
@ApiModelProperty("仓库ID")
@Excel(name = "仓库ID")
private Long warehouseId;
/**组织ID*/
@ApiModelProperty(value = "组织ID")
@Excel(name = "组织ID", width = 15)
private Long organizationId;
/**键*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String key;
/**值*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String value;
/**备注说明*/
@ApiModelProperty(value = "备注说明")
@Excel(name = "备注说明", width = 15)
private String remark;
/**明细值*/
@ApiModelProperty(value = "明细值")
@Excel(name = "明细值", width = 15)
private String detailValue;
/**物料添加方式*/
@ApiModelProperty(value = "物料添加方式")
@Excel(name = "物料添加方式", width = 15)
private String materialAddType;
/**一级组织ID*/
@ApiModelProperty(value = "一级组织ID")
@Excel(name = "一级组织ID", width = 15)
private Long topOrganizationId;
/**组织名称*/
@ApiModelProperty(value = "组织名称")
@Excel(name = "组织名称", width = 15)
private String organizationName;
}
@@ -0,0 +1,62 @@
package com.mhd.wms.domain.sysTableConfig.repository.todo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author: brb
* @description:
* @create: 2026-03-04 14:30
*/
@Data
@TableName("sys_table_config")
public class SysTableConfigDTO extends BaseVOEntity {
@TableId(type = IdType.AUTO)
private Long id;
/*
* 仓库id
* */
@ApiModelProperty("仓库ID")
@Excel(name = "仓库ID")
private Long warehouseId;
/**组织ID*/
@ApiModelProperty(value = "组织ID")
@Excel(name = "组织ID", width = 15)
private Long organizationId;
/**键*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String key;
/**值*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String value;
/**备注说明*/
@ApiModelProperty(value = "备注说明")
@Excel(name = "备注说明", width = 15)
private String remark;
/**明细值*/
@ApiModelProperty(value = "明细值")
@Excel(name = "明细值", width = 15)
private String detailValue;
/**物料添加方式*/
@ApiModelProperty(value = "物料添加方式")
@Excel(name = "物料添加方式", width = 15)
private String materialAddType;
/**一级组织ID*/
@ApiModelProperty(value = "一级组织ID")
@Excel(name = "一级组织ID", width = 15)
private Long topOrganizationId;
/**组织名称*/
@ApiModelProperty(value = "组织名称")
@Excel(name = "组织名称", width = 15)
private String organizationName;
}
@@ -0,0 +1,62 @@
package com.mhd.wms.domain.sysTableConfig.repository.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author: brb
* @description:
* @create: 2026-03-04 14:30
*/
@Data
@TableName("sys_table_config")
public class SysTableConfigVO extends BaseVOEntity {
@TableId(type = IdType.AUTO)
private Long id;
/*
* 仓库id
* */
@ApiModelProperty("仓库ID")
@Excel(name = "仓库ID")
private Long warehouseId;
/**组织ID*/
@ApiModelProperty(value = "组织ID")
@Excel(name = "组织ID", width = 15)
private Long organizationId;
/**键*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String key;
/**值*/
@ApiModelProperty(value = "")
@Excel(name = "", width = 15)
private String value;
/**备注说明*/
@ApiModelProperty(value = "备注说明")
@Excel(name = "备注说明", width = 15)
private String remark;
/**明细值*/
@ApiModelProperty(value = "明细值")
@Excel(name = "明细值", width = 15)
private String detailValue;
/**物料添加方式*/
@ApiModelProperty(value = "物料添加方式")
@Excel(name = "物料添加方式", width = 15)
private String materialAddType;
/**一级组织ID*/
@ApiModelProperty(value = "一级组织ID")
@Excel(name = "一级组织ID", width = 15)
private Long topOrganizationId;
/**组织名称*/
@ApiModelProperty(value = "组织名称")
@Excel(name = "组织名称", width = 15)
private String organizationName;
}