feat(wms): 物料信息中添加是否高价值物料和质检要求字段,新增物料类型、物料大类和计量单位信息相关功能,修改物料信息与之关联

- 新增物料类型信息相关实体、控制器、服务、Mapper等
- 新增计量单位信息相关实体、控制器、服务、Mapper等
- 在基础物料信息中添加是否高价值物料和质检要求字段
master
zangch@mesnac.com 3 days ago
parent 3c097a77ce
commit 375b2956a1

@ -0,0 +1,116 @@
package org.dromara.wms.controller;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.wms.domain.bo.BaseMaterialTypeBo;
import org.dromara.wms.domain.vo.BaseMaterialTypeVo;
import org.dromara.wms.service.IBaseMaterialTypeService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/mes/baseMaterialType
*
* @author zangch
* @date 2025-01-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseMaterialType")
public class BaseMaterialTypeController extends BaseController {
private final IBaseMaterialTypeService baseMaterialTypeService;
/**
*
*/
//@SaCheckPermission("mes:baseMaterialType:list")
@GetMapping("/list")
public R<List<BaseMaterialTypeVo>> list(BaseMaterialTypeBo bo) {
List<BaseMaterialTypeVo> list = baseMaterialTypeService.queryList(bo);
return R.ok(list);
}
/**
*
*/
//@SaCheckPermission("mes:baseMaterialType:export")
@Log(title = "物料类型信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BaseMaterialTypeBo bo, HttpServletResponse response) {
List<BaseMaterialTypeVo> list = baseMaterialTypeService.queryList(bo);
ExcelUtil.exportExcel(list, "物料类型信息", BaseMaterialTypeVo.class, response);
}
/**
*
*
* @param matrialTypeId
*/
//@SaCheckPermission("mes:baseMaterialType:query")
@GetMapping("/{matrialTypeId}")
public R<BaseMaterialTypeVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long matrialTypeId) {
return R.ok(baseMaterialTypeService.queryById(matrialTypeId));
}
/**
*
*/
//@SaCheckPermission("mes:baseMaterialType:add")
@Log(title = "物料类型信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BaseMaterialTypeBo bo) {
return toAjax(baseMaterialTypeService.insertByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseMaterialType:edit")
@Log(title = "物料类型信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BaseMaterialTypeBo bo) {
return toAjax(baseMaterialTypeService.updateByBo(bo));
}
/**
*
*
* @param matrialTypeIds
*/
//@SaCheckPermission("mes:baseMaterialType:remove")
@Log(title = "物料类型信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{matrialTypeIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] matrialTypeIds) {
return toAjax(baseMaterialTypeService.deleteWithValidByIds(List.of(matrialTypeIds), true));
}
/**
*
*/
@GetMapping("getBaseMaterialTypeList")
public R<List<BaseMaterialTypeVo>> getBaseMaterialTypelist(BaseMaterialTypeBo bo) {
List<BaseMaterialTypeVo> list = baseMaterialTypeService.queryList(bo);
return R.ok(list);
}
}

@ -0,0 +1,117 @@
package org.dromara.wms.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.wms.domain.bo.BaseMeasurementUnitInfoBo;
import org.dromara.wms.domain.vo.BaseMeasurementUnitInfoVo;
import org.dromara.wms.service.IBaseMeasurementUnitInfoService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
* 访:/mes/baseMeasurementUnitInfo
*
* @author zangch
* @date 2025-01-08
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/baseMeasurementUnitInfo")
public class BaseMeasurementUnitInfoController extends BaseController {
private final IBaseMeasurementUnitInfoService baseMeasurementUnitInfoService;
/**
*
*/
//@SaCheckPermission("mes:baseMeasurementUnitInfo:list")
@GetMapping("/list")
public R<List<BaseMeasurementUnitInfoVo>> list(BaseMeasurementUnitInfoBo bo) {
List<BaseMeasurementUnitInfoVo> list = baseMeasurementUnitInfoService.queryList(bo);
return R.ok(list);
}
/**
*
*/
//@SaCheckPermission("mes:baseMeasurementUnitInfo:export")
@Log(title = "计量单位信息", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(BaseMeasurementUnitInfoBo bo, HttpServletResponse response) {
List<BaseMeasurementUnitInfoVo> list = baseMeasurementUnitInfoService.queryList(bo);
ExcelUtil.exportExcel(list, "计量单位信息", BaseMeasurementUnitInfoVo.class, response);
}
/**
*
*
* @param unitId
*/
//@SaCheckPermission("mes:baseMeasurementUnitInfo:query")
@GetMapping("/{unitId}")
public R<BaseMeasurementUnitInfoVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long unitId) {
return R.ok(baseMeasurementUnitInfoService.queryById(unitId));
}
/**
*
*/
//@SaCheckPermission("mes:baseMeasurementUnitInfo:add")
@Log(title = "计量单位信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody BaseMeasurementUnitInfoBo bo) {
return toAjax(baseMeasurementUnitInfoService.insertByBo(bo));
}
/**
*
*/
//@SaCheckPermission("mes:baseMeasurementUnitInfo:edit")
@Log(title = "计量单位信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody BaseMeasurementUnitInfoBo bo) {
return toAjax(baseMeasurementUnitInfoService.updateByBo(bo));
}
/**
*
*
* @param unitIds
*/
//@SaCheckPermission("mes:baseMeasurementUnitInfo:remove")
@Log(title = "计量单位信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{unitIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] unitIds) {
return toAjax(baseMeasurementUnitInfoService.deleteWithValidByIds(List.of(unitIds), true));
}
/**
*
*/
@GetMapping("getBaseMeasurementUnitInfoList")
public R<List<BaseMeasurementUnitInfoVo>> getBaseMeasurementUnitInfolist(BaseMeasurementUnitInfoBo bo) {
List<BaseMeasurementUnitInfoVo> list = baseMeasurementUnitInfoService.queryList(bo);
return R.ok(list);
}
}

@ -265,10 +265,33 @@ public class BaseMaterialInfo extends TenantEntity {
*/
private String remark;
/**
* (0,1)
*/
private String isHighValue;
/**
* (0,1)
*/
private String inspectionRequest;
/**
*
*/
@TableField(exist = false)
private String materialCategoryName;//join
/**
*
*/
@TableField(exist = false)
private String matrialTypeName;//JOIN
/**
*
*/
@TableField(exist = false)
private String unitName;//JOIN
}

@ -0,0 +1,100 @@
package org.dromara.wms.domain;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.tenant.core.TenantEntity;
import java.io.Serial;
/**
* base_material_type
*
* @author zangch
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_material_type")
public class BaseMaterialType extends TenantEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(value = "matrial_type_id", type = IdType.AUTO)
private Long matrialTypeId;
/**
*
*/
private Long parentId;
/**
*
*/
private String matrialTypeCode;
/**
*
*/
private String matrialTypeName;
/**
*
*/
private String ancestors;
/**
* ID
*/
// private String materialCategories;
private Long materialCategoryId;
/**
*
*/
private String materialSubclass;
/**
* ID
*/
private Long processId;
/**
* 1 0
*/
private String activeFlag;
/**
*
*/
private String remark;
/**
* 0 2
*/
@TableLogic
private String delFlag;
/**
*
*/
@TableField(exist = false)
private String processName;//映射字段
/**
*
*/
/* @TableField(exist = false)
private String materialCategoryCode;//映射字段*/
/**
*
*/
@TableField(exist = false)
private String materialCategoryName;//映射字段
}

@ -0,0 +1,78 @@
package org.dromara.wms.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import java.io.Serial;
/**
* base_measurement_unit_info
*
* @author zangch
* @date 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("base_measurement_unit_info")
public class BaseMeasurementUnitInfo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "unit_id", type = IdType.AUTO)
private Long unitId;
/**
*
*/
private Long parentId;
/**
*
*/
private String unitCode;
/**
*
*/
private String unitName;
/**
* 1
*/
private Long unitConversion;
/**
*
*/
private String ancestors;
/**
* 1 2 3 4 5
*/
private String unitType;
/**
*
*/
private String remark;
/**
* (1 0)
*/
private String activeFlag;
/**
* 0 2
*/
@TableLogic
private String delFlag;
}

@ -267,5 +267,14 @@ public class BaseMaterialInfoBo extends BaseEntity {
*/
private String remark;
/**
* (0,1)
*/
private String isHighValue;
/**
* (0,1)
*/
private String inspectionRequest;
}

@ -0,0 +1,79 @@
package org.dromara.wms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.wms.domain.BaseMaterialType;
/**
* base_material_type
*
* @author zangch
* @date 2025-01-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BaseMaterialType.class, reverseConvertGenerate = false)
public class BaseMaterialTypeBo extends BaseEntity {
/**
* ID
*/
private Long matrialTypeId;
/**
*
*/
@NotNull(message = "父级标识不能为空", groups = { AddGroup.class, EditGroup.class })
private Long parentId;
/**
*
*/
@NotBlank(message = "物料类型编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String matrialTypeCode;
/**
*
*/
@NotBlank(message = "物料类型名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String matrialTypeName;
/**
*
*/
private String ancestors;
/**
* ID
*/
// private String materialCategories;
private Long materialCategoryId;
/**
*
*/
private String materialSubclass;
/**
* ID
*/
private Long processId;
/**
* 1 0
*/
private String activeFlag;
/**
*
*/
private String remark;
}

@ -0,0 +1,71 @@
package org.dromara.wms.domain.bo;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.wms.domain.BaseMeasurementUnitInfo;
/**
* base_measurement_unit_info
*
* @author zangch
* @date 2025-01-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BaseMeasurementUnitInfo.class, reverseConvertGenerate = false)
public class BaseMeasurementUnitInfoBo extends BaseEntity {
/**
*
*/
private Long unitId;
/**
*
*/
private Long parentId;
/**
*
*/
@NotBlank(message = "计量单位编号不能为空", groups = { AddGroup.class, EditGroup.class })
private String unitCode;
/**
*
*/
@NotBlank(message = "计量单位名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String unitName;
/**
* 1
*/
private Long unitConversion;
/**
*
*/
private String ancestors;
/**
* 1 2 3 4 5
*/
private String unitType;
/**
*
*/
private String remark;
/**
* (1 0)
*/
private String activeFlag;
}

@ -372,4 +372,24 @@ public class BaseMaterialInfoVo implements Serializable {
*/
private String materialCategoryName;//join
/**
*
*/
private String matrialTypeName;//JOIN
/**
*
*/
private String unitName;//JOIN
/**
* (0,1)
*/
private String isHighValue;
/**
* (0,1)
*/
private String inspectionRequest;
}

@ -0,0 +1,141 @@
package org.dromara.wms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.wms.domain.BaseMaterialType;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* base_material_type
*
* @author zangch
* @date 2025-01-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseMaterialType.class)
public class BaseMaterialTypeVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* ID
*/
@ExcelProperty(value = "物料类型ID")
private Long matrialTypeId;
/**
*
*/
@ExcelProperty(value = "租户编号")
private String tenantId;
/**
*
*/
@ExcelProperty(value = "父级标识")
private Long parentId;
/**
*
*/
@ExcelProperty(value = "物料类型编号")
private String matrialTypeCode;
/**
*
*/
@ExcelProperty(value = "物料类型名称")
private String matrialTypeName;
/**
*
*/
@ExcelProperty(value = "祖级列表")
private String ancestors;
/**
* ID
*/
// @ExcelProperty(value = "物料大类(1原材料 2半成品 3成品)", converter = ExcelDictConvert.class)
// @ExcelDictFormat(dictType = "mes_material_categories")
private Long materialCategoryId;
// private String materialCategories;
/**
*
*/
@ExcelProperty(value = "物料小类")
private String materialSubclass;
/**
* ID
*/
@ExcelProperty(value = "工序ID")
private Long processId;
/**
* 1 0
*/
@ExcelProperty(value = "激活标识", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "active_flag")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
/**
*
*/
// @ExcelProperty(value = "工序名称")
// private String processName;//工序名称
/**
*
*/
@ExcelProperty(value = "工序名称")
private String materialCategoryName;//映射字段
}

@ -0,0 +1,117 @@
package org.dromara.wms.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.wms.domain.BaseMeasurementUnitInfo;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* base_measurement_unit_info
*
* @author zangch
* @date 2025-01-08
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BaseMeasurementUnitInfo.class)
public class BaseMeasurementUnitInfoVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
*
*/
@ExcelProperty(value = "主键标识")
private Long unitId;
/**
*
*/
@ExcelProperty(value = "父级标识")
private Long parentId;
/**
*
*/
@ExcelProperty(value = "计量单位编号")
private String unitCode;
/**
*
*/
@ExcelProperty(value = "计量单位名称")
private String unitName;
/**
* 1
*/
@ExcelProperty(value = "计量单位转换", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "与=最顶级转换关系最顶级是1")
private Long unitConversion;
/**
*
*/
@ExcelProperty(value = "祖级列表")
private String ancestors;
/**
* 1 2 3 4 5
*/
@ExcelProperty(value = "单位类型", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "unit_type")
private String unitType;
/**
*
*/
@ExcelProperty(value = "备注")
private String remark;
/**
* (1 0)
*/
@ExcelProperty(value = "激活标识(1是 0否)")
private String activeFlag;
/**
*
*/
@ExcelProperty(value = "创建部门")
private Long createDept;
/**
*
*/
@ExcelProperty(value = "创建人")
private Long createBy;
/**
*
*/
@ExcelProperty(value = "创建时间")
private Date createTime;
/**
*
*/
@ExcelProperty(value = "更新人")
private Long updateBy;
/**
*
*/
@ExcelProperty(value = "更新时间")
private Date updateTime;
}

@ -0,0 +1,15 @@
package org.dromara.wms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.wms.domain.BaseMaterialType;
import org.dromara.wms.domain.vo.BaseMaterialTypeVo;
/**
* Mapper
*
* @author zangch
* @date 2025-01-07
*/
public interface BaseMaterialTypeMapper extends BaseMapperPlus<BaseMaterialType, BaseMaterialTypeVo> {
}

@ -0,0 +1,15 @@
package org.dromara.wms.mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.wms.domain.BaseMeasurementUnitInfo;
import org.dromara.wms.domain.vo.BaseMeasurementUnitInfoVo;
/**
* Mapper
*
* @author zangch
* @date 2025-01-08
*/
public interface BaseMeasurementUnitInfoMapper extends BaseMapperPlus<BaseMeasurementUnitInfo, BaseMeasurementUnitInfoVo> {
}

@ -0,0 +1,58 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.bo.BaseMaterialTypeBo;
import org.dromara.wms.domain.vo.BaseMaterialTypeVo;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author zangch
* @date 2025-01-07
*/
public interface IBaseMaterialTypeService {
/**
*
*
* @param matrialTypeId
* @return
*/
BaseMaterialTypeVo queryById(Long matrialTypeId);
/**
*
*
* @param bo
* @return
*/
List<BaseMaterialTypeVo> queryList(BaseMaterialTypeBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(BaseMaterialTypeBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(BaseMaterialTypeBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -0,0 +1,58 @@
package org.dromara.wms.service;
import org.dromara.wms.domain.bo.BaseMeasurementUnitInfoBo;
import org.dromara.wms.domain.vo.BaseMeasurementUnitInfoVo;
import java.util.Collection;
import java.util.List;
/**
* Service
*
* @author zangch
* @date 2025-01-08
*/
public interface IBaseMeasurementUnitInfoService {
/**
*
*
* @param unitId
* @return
*/
BaseMeasurementUnitInfoVo queryById(Long unitId);
/**
*
*
* @param bo
* @return
*/
List<BaseMeasurementUnitInfoVo> queryList(BaseMeasurementUnitInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean insertByBo(BaseMeasurementUnitInfoBo bo);
/**
*
*
* @param bo
* @return
*/
Boolean updateByBo(BaseMeasurementUnitInfoBo bo);
/**
*
*
* @param ids
* @param isValid
* @return
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

@ -12,6 +12,8 @@ import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.wms.domain.BaseMaterialCategory;
import org.dromara.wms.domain.BaseMaterialInfo;
import org.dromara.wms.domain.BaseMaterialType;
import org.dromara.wms.domain.BaseMeasurementUnitInfo;
import org.dromara.wms.domain.bo.BaseMaterialInfoBo;
import org.dromara.wms.domain.vo.BaseMaterialInfoVo;
import org.dromara.wms.mapper.BaseMaterialInfoMapper;
@ -82,14 +84,14 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService {
// .select(ProdBaseFactoryInfo::getFactoryName)
// .leftJoin(ProdBaseFactoryInfo.class, ProdBaseFactoryInfo::getFactoryId, BaseMaterialInfo::getFactoryId)
//
// //关联查询物料类型名称
// .select(BaseMaterialType::getMatrialTypeName)
// //注意"e":BaseMaterialType实体类中为matrialTypeIdBaseMaterialInfo实体类中为materialTypeId
// .leftJoin(BaseMaterialType.class, BaseMaterialType::getMatrialTypeId, BaseMaterialInfo::getMaterialTypeId)
//关联查询物料类型名称
.select(BaseMaterialType::getMatrialTypeName)
//注意"e":BaseMaterialType实体类中为matrialTypeIdBaseMaterialInfo实体类中为materialTypeId
.leftJoin(BaseMaterialType.class, BaseMaterialType::getMatrialTypeId, BaseMaterialInfo::getMaterialTypeId)
/* //关联计量单位信息
//关联计量单位信息
.select(BaseMeasurementUnitInfo::getUnitName)
.leftJoin(BaseMeasurementUnitInfo.class, BaseMeasurementUnitInfo::getUnitId, BaseMaterialInfo::getMaterialUnitId)*/
.leftJoin(BaseMeasurementUnitInfo.class, BaseMeasurementUnitInfo::getUnitId, BaseMaterialInfo::getMaterialUnitId)
//关联物料大类信息(物料大类从字典改为了数据库表)
.select(BaseMaterialCategory::getMaterialCategoryName)
@ -100,6 +102,8 @@ public class BaseMaterialInfoServiceImpl implements IBaseMaterialInfoService {
.between(params.get("beginApproveDate") != null && params.get("endApproveDate") != null,
BaseMaterialInfo::getApproveDate ,params.get("beginApproveDate"), params.get("endApproveDate"))
.eq(StringUtils.isNotBlank(bo.getIsHighValue()), BaseMaterialInfo::getIsHighValue, bo.getIsHighValue())
.eq(StringUtils.isNotBlank(bo.getInspectionRequest()), BaseMaterialInfo::getInspectionRequest, bo.getInspectionRequest())
.eq(bo.getMaterialId() != null, BaseMaterialInfo::getMaterialId, bo.getMaterialId())
.eq(StringUtils.isNotBlank(bo.getErpId()), BaseMaterialInfo::getErpId, bo.getErpId())
.like(StringUtils.isNotBlank(bo.getMaterialCode()), BaseMaterialInfo::getMaterialCode, bo.getMaterialCode())

@ -0,0 +1,180 @@
package org.dromara.wms.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.wms.domain.BaseMaterialCategory;
import org.dromara.wms.domain.BaseMaterialType;
import org.dromara.wms.domain.bo.BaseMaterialTypeBo;
import org.dromara.wms.domain.vo.BaseMaterialTypeVo;
import org.dromara.wms.mapper.BaseMaterialTypeMapper;
import org.dromara.wms.service.IBaseMaterialTypeService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author zangch
* @date 2025-01-07
*/
@RequiredArgsConstructor
@Service
public class BaseMaterialTypeServiceImpl implements IBaseMaterialTypeService {
private final BaseMaterialTypeMapper baseMapper;
/**
*
*
* @param matrialTypeId
* @return
*/
@Override
public BaseMaterialTypeVo queryById(Long matrialTypeId){
return baseMapper.selectVoById(matrialTypeId);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<BaseMaterialTypeVo> queryList(BaseMaterialTypeBo bo) {
MPJLambdaWrapper<BaseMaterialType> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<BaseMaterialType> buildQueryWrapper(BaseMaterialTypeBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseMaterialType> lqw = JoinWrappers.lambda(BaseMaterialType.class)
// 关联查询工序名称
// .select(ProdBaseProcessInfo::getProcessName)
// .leftJoin(ProdBaseProcessInfo.class, ProdBaseProcessInfo::getProcessId, BaseMaterialType::getProcessId)
// 关联查询物料大类名称
.select(BaseMaterialCategory::getMaterialCategoryName)
.leftJoin(BaseMaterialCategory.class, BaseMaterialCategory::getMaterialCategoryId, BaseMaterialType::getMaterialCategoryId)
.selectAll(BaseMaterialType.class)
.eq(bo.getMatrialTypeId() != null, BaseMaterialType::getMatrialTypeId, bo.getMatrialTypeId())
.eq(bo.getParentId() != null, BaseMaterialType::getParentId, bo.getParentId())
.eq(StringUtils.isNotBlank(bo.getMatrialTypeCode()), BaseMaterialType::getMatrialTypeCode, bo.getMatrialTypeCode())
.like(StringUtils.isNotBlank(bo.getMatrialTypeName()), BaseMaterialType::getMatrialTypeName, bo.getMatrialTypeName())
.eq(StringUtils.isNotBlank(bo.getAncestors()), BaseMaterialType::getAncestors, bo.getAncestors())
.eq(bo.getMaterialCategoryId()!=null, BaseMaterialType::getMaterialCategoryId, bo.getMaterialCategoryId())
.eq(StringUtils.isNotBlank(bo.getMaterialSubclass()), BaseMaterialType::getMaterialSubclass, bo.getMaterialSubclass())
.eq(bo.getProcessId() != null, BaseMaterialType::getProcessId, bo.getProcessId())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMaterialType::getActiveFlag, bo.getActiveFlag())
.orderByAsc(BaseMaterialType::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(BaseMaterialTypeBo bo) {
BaseMaterialType add = MapstructUtils.convert(bo, BaseMaterialType.class);
validEntityBeforeSave(add);
//获取父节点信息
BaseMaterialTypeVo query = baseMapper.selectVoById(bo.getParentId());
if (ObjectUtils.isNotEmpty(query)) {
//若父节点不为空则将父节点的ancestors拼接父节点id拼接成ancestors
add.setAncestors(query.getAncestors() + "," + bo.getParentId());
}else{
//若父节点为空则ancestors仅有父节点id
add.setAncestors(bo.getParentId().toString());
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setMatrialTypeId(add.getMatrialTypeId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(BaseMaterialTypeBo bo) {
BaseMaterialType update = MapstructUtils.convert(bo, BaseMaterialType.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BaseMaterialType entity){
//TODO 做一些数据校验,如唯一约束
//编号校验
if (StringUtils.isNotBlank(entity.getMatrialTypeCode())) {
BaseMaterialTypeBo query = new BaseMaterialTypeBo();
query.setMatrialTypeCode(entity.getMatrialTypeCode());
MPJLambdaWrapper<BaseMaterialType> lqw = buildQueryWrapper(query);
BaseMaterialType baseMaterialType = baseMapper.selectOne(lqw);
if (baseMaterialType != null && !baseMaterialType.getMatrialTypeId().equals(entity.getMatrialTypeId())) {
throw new ServiceException("编码已存在");
}
}
if (StringUtils.isNotBlank(entity.getMatrialTypeName())) {
BaseMaterialTypeBo query = new BaseMaterialTypeBo();
query.setMatrialTypeName(entity.getMatrialTypeName());
MPJLambdaWrapper<BaseMaterialType> lqw = JoinWrappers.lambda(BaseMaterialType.class)
.selectAll(BaseMaterialType.class)
.eq(StringUtils.isNotBlank(query.getMatrialTypeName()),BaseMaterialType::getMatrialTypeName, query.getMatrialTypeName());
BaseMaterialType baseMaterialType = baseMapper.selectOne(lqw);
if (baseMaterialType != null
&& !baseMaterialType.getMatrialTypeId().equals(entity.getMatrialTypeId())) {
throw new ServiceException("名称已存在");
}
}
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
for (Long id : ids) {
//监测删除的节点是否有子节点
BaseMaterialType query = new BaseMaterialType();
query.setParentId(id);
if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
throw new ServiceException("存在子节点,不允许删除");
}
}
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,154 @@
package org.dromara.wms.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.wms.domain.BaseMeasurementUnitInfo;
import org.dromara.wms.domain.bo.BaseMeasurementUnitInfoBo;
import org.dromara.wms.domain.vo.BaseMeasurementUnitInfoVo;
import org.dromara.wms.mapper.BaseMeasurementUnitInfoMapper;
import org.dromara.wms.service.IBaseMeasurementUnitInfoService;
import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.List;
import java.util.Map;
/**
* Service
*
* @author zangch
* @date 2025-01-08
*/
@RequiredArgsConstructor
@Service
public class BaseMeasurementUnitInfoServiceImpl implements IBaseMeasurementUnitInfoService {
private final BaseMeasurementUnitInfoMapper baseMapper;
/**
*
*
* @param unitId
* @return
*/
@Override
public BaseMeasurementUnitInfoVo queryById(Long unitId){
return baseMapper.selectVoById(unitId);
}
/**
*
*
* @param bo
* @return
*/
@Override
public List<BaseMeasurementUnitInfoVo> queryList(BaseMeasurementUnitInfoBo bo) {
MPJLambdaWrapper<BaseMeasurementUnitInfo> lqw = buildQueryWrapper(bo);
return baseMapper.selectVoList(lqw);
}
private MPJLambdaWrapper<BaseMeasurementUnitInfo> buildQueryWrapper(BaseMeasurementUnitInfoBo bo) {
Map<String, Object> params = bo.getParams();
MPJLambdaWrapper<BaseMeasurementUnitInfo> lqw = JoinWrappers.lambda(BaseMeasurementUnitInfo.class)
.selectAll(BaseMeasurementUnitInfo.class)
.eq(bo.getUnitId() != null, BaseMeasurementUnitInfo::getUnitId, bo.getUnitId())
.eq(bo.getParentId() != null, BaseMeasurementUnitInfo::getParentId, bo.getParentId())
.eq(StringUtils.isNotBlank(bo.getUnitCode()), BaseMeasurementUnitInfo::getUnitCode, bo.getUnitCode())
.like(StringUtils.isNotBlank(bo.getUnitName()), BaseMeasurementUnitInfo::getUnitName, bo.getUnitName())
.eq(bo.getUnitConversion() != null, BaseMeasurementUnitInfo::getUnitConversion, bo.getUnitConversion())
.eq(StringUtils.isNotBlank(bo.getAncestors()), BaseMeasurementUnitInfo::getAncestors, bo.getAncestors())
.eq(StringUtils.isNotBlank(bo.getUnitType()), BaseMeasurementUnitInfo::getUnitType, bo.getUnitType())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), BaseMeasurementUnitInfo::getActiveFlag, bo.getActiveFlag())
.orderByDesc(BaseMeasurementUnitInfo::getCreateTime);
return lqw;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean insertByBo(BaseMeasurementUnitInfoBo bo) {
BaseMeasurementUnitInfo add = MapstructUtils.convert(bo, BaseMeasurementUnitInfo.class);
validEntityBeforeSave(add);
// 获取父节点信息
BaseMeasurementUnitInfoVo query = baseMapper.selectVoById(bo.getParentId());
if (ObjectUtils.isNotEmpty(query)) {
//若父节点不为空则将父节点的ancestors拼接父节点id拼接成ancestors
add.setAncestors(query.getAncestors() + "," + bo.getParentId());
}else{
//若父节点为空则ancestors仅有父节点id
add.setAncestors(bo.getParentId().toString());
}
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setUnitId(add.getUnitId());
}
return flag;
}
/**
*
*
* @param bo
* @return
*/
@Override
public Boolean updateByBo(BaseMeasurementUnitInfoBo bo) {
BaseMeasurementUnitInfo update = MapstructUtils.convert(bo, BaseMeasurementUnitInfo.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(BaseMeasurementUnitInfo entity){
//TODO 做一些数据校验,如唯一约束
// 校验编码是否重复
if (StringUtils.isNotBlank(entity.getUnitCode())) {
BaseMeasurementUnitInfoBo query = new BaseMeasurementUnitInfoBo();
query.setUnitCode(entity.getUnitCode());
MPJLambdaWrapper<BaseMeasurementUnitInfo> lqw = buildQueryWrapper(query);
BaseMeasurementUnitInfo baseMeasurementUnitInfo = baseMapper.selectOne(lqw);
if (baseMeasurementUnitInfo != null && !baseMeasurementUnitInfo.getUnitId().equals(entity.getUnitId())) {
throw new ServiceException("编码已存在");
}
}
}
/**
*
*
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
for (Long id : ids) {
// 判断是否存在子节点
BaseMeasurementUnitInfo query = new BaseMeasurementUnitInfo();
query.setParentId(id);
if (baseMapper.selectCount(Wrappers.lambdaQuery(query)) > 0) {
throw new ServiceException("存在子节点,不允许删除");
}
}
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -0,0 +1,7 @@
<?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="org.dromara.wms.mapper.BaseMaterialTypeMapper">
</mapper>

@ -0,0 +1,7 @@
<?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="org.dromara.wms.mapper.BaseMeasurementUnitInfoMapper">
</mapper>
Loading…
Cancel
Save