Browse Source

feat(baseInformation): 添加SRM零件SKU管理功能

- 新增SrmPartSku实体类,包含站点、SKU编码、备注、激活状态等字段
- 实现SrmPartSkuController控制器,提供分页查询、保存、更新、删除接口
- 创建SrmPartSkuMapper数据访问层,实现数据库CRUD操作
- 配置SrmPartSkuMapper.xml映射文件,定义SQL查询语句
- 实现SrmPartSkuService业务接口及具体服务类
- 添加参数校验、重复检查、数据标准化等业务逻辑
- 支持按站点、SKU编码、激活状态进行条件查询和分页显示
master
qiankanghui 4 days ago
parent
commit
45cdcc302b
  1. 47
      src/main/java/com/xujie/modules/baseInformation/controller/SrmPartSkuController.java
  2. 27
      src/main/java/com/xujie/modules/baseInformation/entity/SrmPartSku.java
  3. 34
      src/main/java/com/xujie/modules/baseInformation/mapper/SrmPartSkuMapper.java
  4. 16
      src/main/java/com/xujie/modules/baseInformation/service/SrmPartSkuService.java
  5. 119
      src/main/java/com/xujie/modules/baseInformation/service/impl/SrmPartSkuServiceImpl.java
  6. 88
      src/main/resources/mapper/baseInformation/SrmPartSkuMapper.xml

47
src/main/java/com/xujie/modules/baseInformation/controller/SrmPartSkuController.java

@ -0,0 +1,47 @@
package com.xujie.modules.baseInformation.controller;
import com.xujie.common.utils.PageUtils;
import com.xujie.common.utils.R;
import com.xujie.modules.baseInformation.entity.SrmPartFamily;
import com.xujie.modules.baseInformation.entity.SrmPartSku;
import com.xujie.modules.baseInformation.service.impl.SrmPartSkuServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/srmPartSku")
public class SrmPartSkuController {
@Autowired
private SrmPartSkuServiceImpl srmPartSkuService;
/**
* part_sku 分页查询
*/
@RequestMapping("/getPartSkuListPaging")
public R getPartSkuListPaging(@RequestBody SrmPartSku partSku) {
PageUtils page = srmPartSkuService.getPartFamilyListPaging(partSku);
return R.ok().put("data", page);
}
@PostMapping("/savePartSku")
public R savePartSku(@RequestBody SrmPartSku partSku) {
return srmPartSkuService.savePartSku(partSku);
}
@PostMapping("/updatePartSku")
public R updatePartSku(@RequestBody SrmPartSku partSku) {
return srmPartSkuService.updatePartSku(partSku);
}
@PostMapping("/deletePartSku")
public R deletePartSku(@RequestBody SrmPartSku partSku) {
return srmPartSkuService.deletePartSku(partSku.getSku(), partSku.getSite());
}
}

27
src/main/java/com/xujie/modules/baseInformation/entity/SrmPartSku.java

@ -0,0 +1,27 @@
package com.xujie.modules.baseInformation.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xujie.common.utils.QueryPage;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class SrmPartSku extends QueryPage {
private String site;
private String sku;
private String remark;
private String active;
private String createBy;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createDate;
}

34
src/main/java/com/xujie/modules/baseInformation/mapper/SrmPartSkuMapper.java

@ -0,0 +1,34 @@
package com.xujie.modules.baseInformation.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xujie.modules.baseInformation.entity.SrmPartFamily;
import com.xujie.modules.baseInformation.entity.SrmPartSku;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface SrmPartSkuMapper {
IPage<SrmPartSku> selectPartSkuListWithPaging(@Param("page") Page<SrmPartSku> page, @Param("partSku") SrmPartSku partSku);
/**
* 根据sku和site查询记录
*/
SrmPartSku selectPartSkuByCode(@Param("sku") String sku,
@Param("site") String site);
/**
* 插入SKU记录
*/
int insertPartSku(SrmPartSku partSku);
/**
* 更新SKU记录
*/
int updatePartSku(SrmPartSku partSku);
/**
* 删除SKU记录
*/
int deletePartSku(@Param("sku") String sku, @Param("site") String site);
}

16
src/main/java/com/xujie/modules/baseInformation/service/SrmPartSkuService.java

@ -0,0 +1,16 @@
package com.xujie.modules.baseInformation.service;
import com.xujie.common.utils.PageUtils;
import com.xujie.common.utils.R;
import com.xujie.modules.baseInformation.entity.SrmPartSku;
public interface SrmPartSkuService {
PageUtils getPartFamilyListPaging(SrmPartSku partSku);
R savePartSku(SrmPartSku partSku);
R updatePartSku(SrmPartSku partSku);
R deletePartSku(String sku, String site);
}

119
src/main/java/com/xujie/modules/baseInformation/service/impl/SrmPartSkuServiceImpl.java

@ -0,0 +1,119 @@
package com.xujie.modules.baseInformation.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xujie.common.utils.PageUtils;
import com.xujie.common.utils.R;
import com.xujie.modules.baseInformation.entity.SrmPartFamily;
import com.xujie.modules.baseInformation.entity.SrmPartSku;
import com.xujie.modules.baseInformation.mapper.SrmPartSkuMapper;
import com.xujie.modules.baseInformation.service.SrmPartSkuService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class SrmPartSkuServiceImpl implements SrmPartSkuService {
@Autowired
private SrmPartSkuMapper srmPartSkuMapper;
@Override
public PageUtils getPartFamilyListPaging(SrmPartSku partSku) {
Page<SrmPartSku> page = new Page<>(partSku.getPage(), partSku.getLimit());
IPage<SrmPartSku> iPage = this.srmPartSkuMapper.selectPartSkuListWithPaging(page, partSku);
return new PageUtils(iPage);
}
@Override
public R savePartSku(SrmPartSku partSku) {
// 1. 参数校验
if (partSku == null) {
return R.error("参数不能为空");
}
if (StringUtils.isBlank(partSku.getSku())) {
return R.error("SKU 不能为空");
}
if (StringUtils.isBlank(partSku.getActive())) {
partSku.setActive("Y"); // 默认启用
}
SrmPartSku existing = srmPartSkuMapper.selectPartSkuByCode(partSku.getSku(), partSku.getSite());
if (existing != null) {
return R.error("SKU 已存在");
}
int result = srmPartSkuMapper.insertPartSku(partSku);
return result > 0 ? R.ok().put("msg", "新增成功") : R.error("新增失败");
}
@Override
public R updatePartSku(SrmPartSku partSku) {
// 1. 参数校验
if (partSku == null) {
return R.error("参数不能为空");
}
// 2. 去除空格
normalizeInput(partSku);
// 3. 必填字段校验
if (StringUtils.isBlank(partSku.getSite())) {
return R.error("site 不能为空");
}
if (StringUtils.isBlank(partSku.getSku())) {
return R.error("SKU 不能为空");
}
if (StringUtils.isBlank(partSku.getActive())) {
return R.error("是否在用不能为空");
}
// 4. 检查记录是否存在
SrmPartSku existing = srmPartSkuMapper.selectPartSkuByCode(partSku.getSku(), partSku.getSite());
if (existing == null) {
return R.error("记录不存在");
}
// 5. 执行更新
int result = srmPartSkuMapper.updatePartSku(partSku);
return result > 0 ? R.ok().put("msg", "更新成功") : R.error("更新失败");
}
@Override
public R deletePartSku(String sku, String site) {
// 1. 参数校验
sku = StringUtils.trimToEmpty(sku);
site = StringUtils.trimToEmpty(site);
if (StringUtils.isBlank(site)) {
return R.error("site 不能为空");
}
if (StringUtils.isBlank(sku)) {
return R.error("SKU 不能为空");
}
// 2. 检查记录是否存在
SrmPartSku existing = srmPartSkuMapper.selectPartSkuByCode(sku, site);
if (existing == null) {
return R.error("记录不存在");
}
// 3. 执行删除
int result = srmPartSkuMapper.deletePartSku(sku, site);
return result > 0 ? R.ok().put("msg", "删除成功") : R.error("删除失败");
}
/**
* 标准化输入数据去除前后空格
*/
private void normalizeInput(SrmPartSku partSku) {
if (partSku == null) {
return;
}
partSku.setSite(StringUtils.trimToEmpty(partSku.getSite()));
partSku.setSku(StringUtils.trimToEmpty(partSku.getSku()));
partSku.setRemark(StringUtils.trimToEmpty(partSku.getRemark()));
partSku.setActive(StringUtils.trimToEmpty(partSku.getActive()));
partSku.setCreateBy(StringUtils.trimToEmpty(partSku.getCreateBy()));
}
}

88
src/main/resources/mapper/baseInformation/SrmPartSkuMapper.xml

@ -0,0 +1,88 @@
<?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.xujie.modules.baseInformation.mapper.SrmPartSkuMapper">
<resultMap id="PartSkuResultMap" type="com.xujie.modules.baseInformation.entity.SrmPartSku">
<result property="site" column="site"/>
<result property="sku" column="sku"/>
<result property="remark" column="remark"/>
<result property="active" column="active"/>
<result property="createDate" column="create_date"/>
<result property="createBy" column="create_by"/>
</resultMap>
<sql id="PartSkuColumnList">
site,
sku,
remark,
active,
create_date,
create_by
</sql>
<select id="selectPartSkuListWithPaging"
resultType="com.xujie.modules.baseInformation.entity.SrmPartSku">
select
<include refid="PartSkuColumnList"/>
from part_sku
where
<if test="partSku.site != null and partSku.site != ''">
site = #{partSku.site}
</if>
<if test="partSku.sku != null and partSku.sku != ''">
and sku = #{partSku.sku}
</if>
<if test="partSku.active != null and partSku.active != ''">
and active = #{partSku.active}
</if>
order by sku
</select>
<!-- 根据sku和site查询记录 -->
<select id="selectPartSkuByCode" resultType="com.xujie.modules.baseInformation.entity.SrmPartSku">
SELECT
<include refid="PartSkuColumnList"/>
FROM part_sku
WHERE site = #{site}
AND sku = #{sku}
</select>
<!-- 插入SKU记录 -->
<insert id="insertPartSku">
INSERT INTO part_sku (
site,
sku,
remark,
active,
create_date,
create_by
) VALUES (
#{site},
#{sku},
#{remark},
#{active},
GETDATE(),
#{createBy}
)
</insert>
<!-- 更新SKU记录 -->
<update id="updatePartSku">
UPDATE part_sku
<set>
remark = #{remark},
active = #{active},
create_by = #{createBy}
</set>
WHERE site = #{site}
AND sku = #{sku}
</update>
<!-- 删除SKU记录 -->
<delete id="deletePartSku">
DELETE FROM part_sku
WHERE site = #{site}
AND sku = #{sku}
</delete>
</mapper>
Loading…
Cancel
Save