Selaa lähdekoodia

物资新增规格属性

车车 9 kuukautta sitten
vanhempi
sitoutus
6243370284
24 muutettua tiedostoa jossa 630 lisäystä ja 5 poistoa
  1. 2 2
      ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsController.java
  2. 101 0
      ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsPropertyController.java
  3. 106 0
      ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsPropertyValueController.java
  4. 4 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterials.java
  5. 47 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterialsProperty.java
  6. 48 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterialsPropertyValue.java
  7. 3 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterialsType.java
  8. 6 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/materials/MaterialsPageDTO.java
  9. 2 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/materialsType/MaterialsTypePageDTO.java
  10. 6 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materials/MaterialsPageVO.java
  11. 31 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materials/PropertyVO.java
  12. 3 0
      ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materialsType/MaterialsTypePageVO.java
  13. 18 0
      ktg-iscs/src/main/java/com/ktg/iscs/mapper/IsMaterialsPropertyMapper.java
  14. 20 0
      ktg-iscs/src/main/java/com/ktg/iscs/mapper/IsMaterialsPropertyValueMapper.java
  15. 23 0
      ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsPropertyService.java
  16. 21 0
      ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsPropertyValueService.java
  17. 2 1
      ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsService.java
  18. 74 0
      ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsPropertyServiceImpl.java
  19. 51 0
      ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsPropertyValueServiceImpl.java
  20. 26 2
      ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsServiceImpl.java
  21. 6 0
      ktg-iscs/src/main/resources/mapper/IsMaterialsMapper.xml
  22. 7 0
      ktg-iscs/src/main/resources/mapper/IsMaterialsPropertyMapper.xml
  23. 19 0
      ktg-iscs/src/main/resources/mapper/IsMaterialsPropertyValueMapper.xml
  24. 4 0
      ktg-iscs/src/main/resources/mapper/IsMaterialsTypeMapper.xml

+ 2 - 2
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsController.java

@@ -1,6 +1,7 @@
 package com.ktg.iscs.controller;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.ktg.common.annotation.Log;
 import com.ktg.common.core.controller.BaseController;
 import com.ktg.common.core.domain.AjaxResult;
@@ -50,8 +51,7 @@ public class IsMaterialsController extends BaseController
     })
     @PreAuthorize("@ss.hasPermi('iscs:materials:list')")
     @GetMapping("/getIsMaterialsPage")
-    public CommonResult<Page<MaterialsPageVO>> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto)
-    {
+    public CommonResult<Page<MaterialsPageVO>> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto) throws JsonProcessingException {
         Page<MaterialsPageVO> result = isMaterialsService.getIsMaterialsPage(page, dto);
         return CommonResult.success(result);
     }

+ 101 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsPropertyController.java

@@ -0,0 +1,101 @@
+package com.ktg.iscs.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ktg.common.annotation.Log;
+import com.ktg.common.core.controller.BaseController;
+import com.ktg.common.enums.BusinessType;
+import com.ktg.common.pojo.CommonResult;
+import com.ktg.common.utils.poi.ExcelUtil;
+import com.ktg.iscs.domain.IsMaterialsProperty;
+import com.ktg.iscs.service.IIsMaterialsPropertyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 物资属性项Controller
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@Api(tags = "物资属性项")
+@RestController
+@RequestMapping("/iscs/property")
+public class IsMaterialsPropertyController extends BaseController
+{
+    @Autowired
+    private IIsMaterialsPropertyService isMaterialsPropertyService;
+
+    @ApiOperation("查询物资属性项-分页")
+    @Parameters({
+            @Parameter(name = "page", description = "Page"),
+            @Parameter(name = "isMaterialsProperty", description = "实体参数")
+    })
+    @PreAuthorize("@ss.hasPermi('iscs:property:list')")
+    @GetMapping("/getIsMaterialsPropertyPage")
+    public CommonResult<Page<IsMaterialsProperty>> getIsMaterialsPropertyPage(Page<IsMaterialsProperty> page, IsMaterialsProperty isMaterialsProperty)
+    {
+        Page<IsMaterialsProperty> result = isMaterialsPropertyService.getIsMaterialsPropertyPage(page, isMaterialsProperty);
+        return CommonResult.success(result);
+    }
+
+    @ApiOperation("导出物资属性项列表")
+    @Parameter(name = "isMaterialsProperty", description = "实体参数")
+    @PreAuthorize("@ss.hasPermi('iscs:property:export')")
+    @Log(title = "物资属性项", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportIsMaterialsProperty")
+    public void exportIsMaterialsProperty(HttpServletResponse response, IsMaterialsProperty isMaterialsProperty)
+    {
+        Page<IsMaterialsProperty> page = new Page<>();
+        page.setSize(-1);
+        page.setCurrent(1);
+        List<IsMaterialsProperty> list = isMaterialsPropertyService.page(page, Wrappers.<IsMaterialsProperty>lambdaQuery()
+                .orderByDesc(IsMaterialsProperty::getPropertyId)).getRecords();
+        ExcelUtil<IsMaterialsProperty> util = new ExcelUtil<IsMaterialsProperty>(IsMaterialsProperty.class);
+        util.exportExcel(response, list, "物资属性项数据");
+    }
+
+    @ApiOperation("获取物资属性项详细信息")
+    @Parameter(name = "propertyId", description = "propertyId")
+    @PreAuthorize("@ss.hasPermi('iscs:property:query')")
+    @GetMapping(value = "/selectIsMaterialsPropertyById")
+    public CommonResult<IsMaterialsProperty> selectIsMaterialsPropertyById(Long propertyId)
+    {
+        return CommonResult.success(isMaterialsPropertyService.getById(propertyId));
+    }
+
+    @ApiOperation("新增物资属性项")
+    @PreAuthorize("@ss.hasPermi('iscs:property:add')")
+    @Log(title = "物资属性项", businessType = BusinessType.INSERT)
+    @PostMapping("/insertIsMaterialsProperty")
+    public CommonResult<Boolean> insertIsMaterialsProperty(@RequestBody @Parameter(name = "isMaterialsProperty", description = "新增数据类,放到body") IsMaterialsProperty isMaterialsProperty)
+    {
+        return CommonResult.success(isMaterialsPropertyService.insertIsMaterialsProperty(isMaterialsProperty));
+    }
+
+    @ApiOperation("修改物资属性项")
+    @PreAuthorize("@ss.hasPermi('iscs:property:edit')")
+    @Log(title = "物资属性项", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateIsMaterialsProperty")
+    public CommonResult<Boolean> updateIsMaterialsProperty(@RequestBody @Parameter(name = "isMaterialsProperty", description = "修改数据类,放到body") IsMaterialsProperty isMaterialsProperty)
+    {
+        return CommonResult.success(isMaterialsPropertyService.updateIsMaterialsProperty(isMaterialsProperty));
+    }
+
+    @ApiOperation("删除物资属性项")
+    @PreAuthorize("@ss.hasPermi('iscs:property:remove')")
+    @Log(title = "物资属性项", businessType = BusinessType.DELETE)
+	@PostMapping("/deleteIsMaterialsPropertyByPropertyIds")
+    public CommonResult<Boolean> deleteIsMaterialsPropertyByPropertyIds(String propertyIds)
+    {
+        return CommonResult.success(isMaterialsPropertyService.deleteIsMaterialsPropertyByPropertyIds(propertyIds));
+    }
+}

+ 106 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsPropertyValueController.java

@@ -0,0 +1,106 @@
+package com.ktg.iscs.controller;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ktg.common.annotation.Log;
+import com.ktg.common.core.controller.BaseController;
+import com.ktg.common.enums.BusinessType;
+import com.ktg.common.pojo.CommonResult;
+import com.ktg.common.utils.poi.ExcelUtil;
+import com.ktg.iscs.domain.IsMaterialsPropertyValue;
+import com.ktg.iscs.service.IIsMaterialsPropertyValueService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 物资属性值Controller
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@Api(tags = "物资属性值")
+@RestController
+@RequestMapping("/iscs/propvalue")
+public class IsMaterialsPropertyValueController extends BaseController
+{
+    @Autowired
+    private IIsMaterialsPropertyValueService isMaterialsPropertyValueService;
+
+    @ApiOperation("查询物资属性值-分页")
+    @Parameters({
+            @Parameter(name = "page", description = "Page"),
+            @Parameter(name = "isMaterialsPropertyValue", description = "实体参数")
+    })
+    @PreAuthorize("@ss.hasPermi('iscs:propvalue:list')")
+    @GetMapping("/getIsMaterialsPropertyValuePage")
+    public CommonResult<Page<IsMaterialsPropertyValue>> getIsMaterialsPropertyValuePage(Page<IsMaterialsPropertyValue> page, IsMaterialsPropertyValue isMaterialsPropertyValue)
+    {
+        Page<IsMaterialsPropertyValue> result = isMaterialsPropertyValueService.getIsMaterialsPropertyValuePage(page, isMaterialsPropertyValue);
+        return CommonResult.success(result);
+    }
+
+    @ApiOperation("导出物资属性值列表")
+    @Parameter(name = "isMaterialsPropertyValue", description = "实体参数")
+    @PreAuthorize("@ss.hasPermi('iscs:propvalue:export')")
+    @Log(title = "物资属性值", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportIsMaterialsPropertyValue")
+    public void exportIsMaterialsPropertyValue(HttpServletResponse response, IsMaterialsPropertyValue isMaterialsPropertyValue)
+    {
+        Page<IsMaterialsPropertyValue> page = new Page<>();
+        page.setSize(-1);
+        page.setCurrent(1);
+        List<IsMaterialsPropertyValue> list = isMaterialsPropertyValueService.page(page, Wrappers.<IsMaterialsPropertyValue>lambdaQuery()
+                .orderByDesc(IsMaterialsPropertyValue::getRecordId)).getRecords();
+        ExcelUtil<IsMaterialsPropertyValue> util = new ExcelUtil<IsMaterialsPropertyValue>(IsMaterialsPropertyValue.class);
+        util.exportExcel(response, list, "物资属性值数据");
+    }
+
+    @ApiOperation("获取物资属性值详细信息")
+    @Parameter(name = "recordId", description = "recordId")
+    @PreAuthorize("@ss.hasPermi('iscs:propvalue:query')")
+    @GetMapping(value = "/selectIsMaterialsPropertyValueById")
+    public CommonResult<IsMaterialsPropertyValue> selectIsMaterialsPropertyValueById(Long recordId)
+    {
+        return CommonResult.success(isMaterialsPropertyValueService.getById(recordId));
+    }
+
+    @ApiOperation("新增物资属性值")
+    @PreAuthorize("@ss.hasPermi('iscs:propvalue:add')")
+    @Log(title = "物资属性值", businessType = BusinessType.INSERT)
+    @PostMapping("/insertIsMaterialsPropertyValue")
+    public CommonResult<Boolean> insertIsMaterialsPropertyValue(@RequestBody @Parameter(name = "isMaterialsPropertyValue", description = "新增数据类,放到body") IsMaterialsPropertyValue isMaterialsPropertyValue)
+    {
+        return CommonResult.success(isMaterialsPropertyValueService.insertIsMaterialsPropertyValue(isMaterialsPropertyValue));
+    }
+
+    @ApiOperation("修改物资属性值")
+    @PreAuthorize("@ss.hasPermi('iscs:propvalue:edit')")
+    @Log(title = "物资属性值", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateIsMaterialsPropertyValue")
+    public CommonResult<Boolean> updateIsMaterialsPropertyValue(@RequestBody @Parameter(name = "isMaterialsPropertyValue", description = "修改数据类,放到body") IsMaterialsPropertyValue isMaterialsPropertyValue)
+    {
+        return CommonResult.success(isMaterialsPropertyValueService.updateById(isMaterialsPropertyValue));
+    }
+
+    @ApiOperation("删除物资属性值")
+    @PreAuthorize("@ss.hasPermi('iscs:propvalue:remove')")
+    @Log(title = "物资属性值", businessType = BusinessType.DELETE)
+	@PostMapping("/deleteIsMaterialsPropertyValueByRecordIds")
+    public CommonResult<Boolean> deleteIsMaterialsPropertyValueByRecordIds(String recordIds)
+    {
+        Assert.notBlank(recordIds, "请选择需要删除的数据!");
+        Long[] longIds = Convert.toLongArray(recordIds);
+        return CommonResult.success(isMaterialsPropertyValueService.removeBatchByIds(Arrays.asList(longIds)));
+    }
+}

+ 4 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterials.java

@@ -99,4 +99,8 @@ public class IsMaterials extends BaseBean
     @TableField(exist = false)
     private String materialsTypePicture;
 
+    @ApiModelProperty(value = "物资规格属性项")
+    @TableField(exist = false)
+    private String propertyIds;
+
 }

+ 47 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterialsProperty.java

@@ -0,0 +1,47 @@
+package com.ktg.iscs.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.ktg.common.annotation.Excel;
+import com.ktg.common.core.domain.model.BaseBean;
+
+/**
+ * 物资属性项对象 is_materials_property
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class IsMaterialsProperty extends BaseBean
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "编号")
+    @TableId(type = IdType.AUTO)
+    private Long propertyId;
+
+    @ApiModelProperty(value = "属性项名称")
+    @Excel(name = "属性项名称")
+    private String propertyName;
+
+    @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @ApiModelProperty(value = "物资状态(0-正常 1-异常 2-被更换)")
+    @Excel(name = "物资状态(0-正常 1-异常 2-被更换)")
+    private String status;
+
+    @ApiModelProperty(value = "开始时间")
+    @TableField(exist = false)
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(exist = false)
+    private String endTime;
+
+}

+ 48 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterialsPropertyValue.java

@@ -0,0 +1,48 @@
+package com.ktg.iscs.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.ktg.common.annotation.Excel;
+import com.ktg.common.core.domain.model.BaseBean;
+
+/**
+ * 物资属性值对象 is_materials_property_value
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class IsMaterialsPropertyValue extends BaseBean
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "编号")
+    @TableId(type = IdType.AUTO)
+    private Long recordId;
+
+    @ApiModelProperty(value = "属性项的编号")
+    @Excel(name = "属性项的编号")
+    private Long propertyId;
+
+    @ApiModelProperty(value = "属性项的编号")
+    @TableField(exist = false)
+    private String propertyName;
+
+    @ApiModelProperty(value = "属性值名称")
+    @Excel(name = "属性值名称")
+    private String valueName;
+
+    @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @ApiModelProperty(value = "物资状态(0-正常 1-异常 2-被更换)")
+    @Excel(name = "物资状态(0-正常 1-异常 2-被更换)")
+    private String status;
+
+
+}

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterialsType.java

@@ -75,4 +75,7 @@ public class IsMaterialsType extends BaseBean
     @ApiModelProperty(value = "物资检查标准")
     private String checkStandard;
 
+    @ApiModelProperty(value = "物资规格属性项")
+    private String propertyIds;
+
 }

+ 6 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/materials/MaterialsPageDTO.java

@@ -55,4 +55,10 @@ public class MaterialsPageDTO
     @Excel(name = "物资RFID")
     private String materialsRfid;
 
+    @ApiModelProperty(value = "规格项")
+    private String propertyId;
+
+    @ApiModelProperty(value = "规格值")
+    private String recordId;
+
 }

+ 2 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/materialsType/MaterialsTypePageDTO.java

@@ -96,5 +96,7 @@ public class MaterialsTypePageDTO extends BaseBean
     @ApiModelProperty(value = "物资检查标准")
     private String checkStandard;
 
+    @ApiModelProperty(value = "物资规格属性项")
+    private String propertyIds;
 
 }

+ 6 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materials/MaterialsPageVO.java

@@ -97,4 +97,10 @@ public class MaterialsPageVO extends BaseBean
     @ApiModelProperty(value = "物资类型缩略图")
     private String materialsTypePicture;
 
+    @ApiModelProperty(value = "属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]")
+    private String properties;
+
+    @ApiModelProperty(value = "属性数组,JSON 格式 [{propertId: , valueId: }, {propertId: , valueId: }]")
+    private String propertiesValue;
+
 }

+ 31 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materials/PropertyVO.java

@@ -0,0 +1,31 @@
+package com.ktg.iscs.domain.vo.materials;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 物资对象 is_materials
+ *
+ * @author cgj
+ * @date 2024-11-08
+ */
+@Data
+public class PropertyVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+
+    @ApiModelProperty(value = "propertyId")
+    private String propertyId;
+
+    @ApiModelProperty(value = "propertyName")
+    private String propertyName;
+
+    @ApiModelProperty(value = "recordId")
+    private String recordId;
+
+    @ApiModelProperty(value = "valueName")
+    private String valueName;
+
+}

+ 3 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materialsType/MaterialsTypePageVO.java

@@ -96,4 +96,7 @@ public class MaterialsTypePageVO extends BaseBean
     @ApiModelProperty(value = "物资检查标准")
     private String checkStandard;
 
+    @ApiModelProperty(value = "物资规格属性项")
+    private String propertyIds;
+
 }

+ 18 - 0
ktg-iscs/src/main/java/com/ktg/iscs/mapper/IsMaterialsPropertyMapper.java

@@ -0,0 +1,18 @@
+package com.ktg.iscs.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+import com.ktg.common.mapper.BaseMapperX;
+import com.ktg.iscs.domain.IsMaterialsProperty;
+
+/**
+ * 物资属性项Mapper接口
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@Mapper
+public interface IsMaterialsPropertyMapper extends BaseMapperX<IsMaterialsProperty> {
+
+}

+ 20 - 0
ktg-iscs/src/main/java/com/ktg/iscs/mapper/IsMaterialsPropertyValueMapper.java

@@ -0,0 +1,20 @@
+package com.ktg.iscs.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ktg.common.mapper.BaseMapperX;
+import com.ktg.iscs.domain.IsMaterialsPropertyValue;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 物资属性值Mapper接口
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@Mapper
+public interface IsMaterialsPropertyValueMapper extends BaseMapperX<IsMaterialsPropertyValue> {
+
+    Page<IsMaterialsPropertyValue> getIsMaterialsPropertyValuePage(Page<IsMaterialsPropertyValue> page, @Param(value = "isMaterialsPropertyValue") IsMaterialsPropertyValue isMaterialsPropertyValue);
+
+}

+ 23 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsPropertyService.java

@@ -0,0 +1,23 @@
+package com.ktg.iscs.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ktg.iscs.domain.IsMaterialsProperty;
+
+/**
+ * 物资属性项Service接口
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+public interface IIsMaterialsPropertyService extends IService<IsMaterialsProperty> {
+
+    Page<IsMaterialsProperty> getIsMaterialsPropertyPage(Page<IsMaterialsProperty> page, IsMaterialsProperty isMaterialsProperty);
+
+    Boolean deleteIsMaterialsPropertyByPropertyIds(String propertyIds);
+
+    Boolean insertIsMaterialsProperty(IsMaterialsProperty isMaterialsProperty);
+
+    Boolean updateIsMaterialsProperty(IsMaterialsProperty isMaterialsProperty);
+
+}

+ 21 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsPropertyValueService.java

@@ -0,0 +1,21 @@
+package com.ktg.iscs.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ktg.iscs.domain.IsMaterialsPropertyValue;
+
+/**
+ * 物资属性值Service接口
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+public interface IIsMaterialsPropertyValueService extends IService<IsMaterialsPropertyValue> {
+
+    Page<IsMaterialsPropertyValue> getIsMaterialsPropertyValuePage(Page<IsMaterialsPropertyValue> page, IsMaterialsPropertyValue isMaterialsPropertyValue);
+
+    Boolean insertIsMaterialsPropertyValue(IsMaterialsPropertyValue isMaterialsPropertyValue);
+
+    Boolean updateIsMaterialsPropertyValue(IsMaterialsPropertyValue isMaterialsPropertyValue);
+
+}

+ 2 - 1
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsService.java

@@ -2,6 +2,7 @@ package com.ktg.iscs.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.ktg.iscs.domain.IsMaterials;
 import com.ktg.iscs.domain.dto.materials.LoanMaterialDTO;
 import com.ktg.iscs.domain.dto.materials.MaterialBindingDTO;
@@ -71,7 +72,7 @@ public interface IIsMaterialsService extends IService<IsMaterials>
      * 分页
      * @return
      */
-    Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto);
+    Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto) throws JsonProcessingException;
 
     Boolean updateIsMaterialById(LoanMaterialDTO dto);
 

+ 74 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsPropertyServiceImpl.java

@@ -0,0 +1,74 @@
+package com.ktg.iscs.service.impl;
+
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ktg.common.utils.StringUtils;
+import com.ktg.iscs.domain.IsMaterialsProperty;
+import com.ktg.iscs.domain.IsMaterialsPropertyValue;
+import com.ktg.iscs.mapper.IsMaterialsPropertyMapper;
+import com.ktg.iscs.service.IIsMaterialsPropertyService;
+import com.ktg.iscs.service.IIsMaterialsPropertyValueService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * 物资属性项Service业务层处理
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@Service
+public class IsMaterialsPropertyServiceImpl extends ServiceImpl<IsMaterialsPropertyMapper, IsMaterialsProperty> implements IIsMaterialsPropertyService {
+
+    @Autowired
+    private IsMaterialsPropertyMapper isMaterialsPropertyMapper;
+    @Autowired
+    private IIsMaterialsPropertyValueService iIsMaterialsPropertyValueService;
+
+    @Override
+    public Page<IsMaterialsProperty> getIsMaterialsPropertyPage(Page<IsMaterialsProperty> page, IsMaterialsProperty isMaterialsProperty) {
+        Page<IsMaterialsProperty> result = page(page, Wrappers.<IsMaterialsProperty>lambdaQuery()
+                .like(StringUtils.isNotBlank(isMaterialsProperty.getPropertyName()), IsMaterialsProperty::getPropertyName, isMaterialsProperty.getPropertyName())
+                .eq(isMaterialsProperty.getPropertyId() != null, IsMaterialsProperty::getPropertyId, isMaterialsProperty.getPropertyId())
+                .le(StringUtils.isNotBlank(isMaterialsProperty.getStartTime()), IsMaterialsProperty::getCreateTime, isMaterialsProperty.getStartTime())
+                .ge(StringUtils.isNotBlank(isMaterialsProperty.getEndTime()), IsMaterialsProperty::getCreateTime, isMaterialsProperty.getEndTime())
+                .orderByDesc(IsMaterialsProperty::getPropertyId));
+        return result;
+    }
+
+    @Override
+    public Boolean deleteIsMaterialsPropertyByPropertyIds(String propertyIds) {
+        Assert.notBlank(propertyIds, "请选择需要删除的数据!");
+        Long[] longIds = Convert.toLongArray(propertyIds);
+        // 检查下面有没有属性值,有的话先删属性值
+        List<IsMaterialsPropertyValue> list = iIsMaterialsPropertyValueService.list(Wrappers.<IsMaterialsPropertyValue>lambdaQuery()
+                .in(IsMaterialsPropertyValue::getPropertyId, longIds));
+        Assert.isTrue(list.isEmpty(), "删除属性项下存在属性值,请先删除属性值!");
+        removeBatchByIds(Arrays.asList(longIds));
+        return true;
+    }
+
+    @Override
+    public Boolean insertIsMaterialsProperty(IsMaterialsProperty isMaterialsProperty) {
+        List<IsMaterialsProperty> list = list(Wrappers.<IsMaterialsProperty>lambdaQuery()
+                .eq(IsMaterialsProperty::getPropertyName, isMaterialsProperty.getPropertyName()));
+        Assert.isTrue(list.isEmpty(), "该名称已被使用!");
+        return save(isMaterialsProperty);
+    }
+
+    @Override
+    public Boolean updateIsMaterialsProperty(IsMaterialsProperty isMaterialsProperty) {
+        List<IsMaterialsProperty> list = list(Wrappers.<IsMaterialsProperty>lambdaQuery()
+                .eq(IsMaterialsProperty::getPropertyName, isMaterialsProperty.getPropertyName())
+                .ne(IsMaterialsProperty::getPropertyId, isMaterialsProperty.getPropertyId()));
+        Assert.isTrue(list.isEmpty(), "该名称已被使用!");
+        return updateById(isMaterialsProperty);
+    }
+
+}

+ 51 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsPropertyValueServiceImpl.java

@@ -0,0 +1,51 @@
+package com.ktg.iscs.service.impl;
+
+import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ktg.iscs.domain.IsMaterialsPropertyValue;
+import com.ktg.iscs.mapper.IsMaterialsPropertyValueMapper;
+import com.ktg.iscs.service.IIsMaterialsPropertyValueService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 物资属性值Service业务层处理
+ *
+ * @author cgj
+ * @date 2025-02-05
+ */
+@Service
+public class IsMaterialsPropertyValueServiceImpl extends ServiceImpl<IsMaterialsPropertyValueMapper, IsMaterialsPropertyValue> implements IIsMaterialsPropertyValueService {
+
+    @Autowired
+    private IsMaterialsPropertyValueMapper isMaterialsPropertyValueMapper;
+
+    @Override
+    public Page<IsMaterialsPropertyValue> getIsMaterialsPropertyValuePage(Page<IsMaterialsPropertyValue> page, IsMaterialsPropertyValue isMaterialsPropertyValue) {
+        Page<IsMaterialsPropertyValue> result = isMaterialsPropertyValueMapper.getIsMaterialsPropertyValuePage(page, isMaterialsPropertyValue);
+        return result;
+    }
+
+    @Override
+    public Boolean insertIsMaterialsPropertyValue(IsMaterialsPropertyValue isMaterialsPropertyValue) {
+        List<IsMaterialsPropertyValue> list = list(Wrappers.<IsMaterialsPropertyValue>lambdaQuery()
+                .eq(IsMaterialsPropertyValue::getValueName, isMaterialsPropertyValue.getValueName()));
+        Assert.isTrue(list.isEmpty(), "该名称已被使用!");
+        return save(isMaterialsPropertyValue);
+    }
+
+    @Override
+    public Boolean updateIsMaterialsPropertyValue(IsMaterialsPropertyValue isMaterialsPropertyValue) {
+        List<IsMaterialsPropertyValue> list = list(Wrappers.<IsMaterialsPropertyValue>lambdaQuery()
+                .eq(IsMaterialsPropertyValue::getValueName, isMaterialsPropertyValue.getValueName())
+                .ne(IsMaterialsPropertyValue::getRecordId, isMaterialsPropertyValue.getRecordId()));
+        Assert.isTrue(list.isEmpty(), "该名称已被使用!");
+        return updateById(isMaterialsPropertyValue);
+    }
+
+
+}

+ 26 - 2
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsServiceImpl.java

@@ -4,6 +4,9 @@ import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.ktg.common.core.text.Convert;
 import com.ktg.common.exception.ServiceException;
 import com.ktg.common.utils.DateUtils;
@@ -17,6 +20,7 @@ import com.ktg.iscs.domain.dto.materialsLoan.AddLoanDTO;
 import com.ktg.iscs.domain.dto.materialsLoan.ReturnLoanDTO;
 import com.ktg.iscs.domain.vo.materials.ImportMaterialsVO;
 import com.ktg.iscs.domain.vo.materials.MaterialsPageVO;
+import com.ktg.iscs.domain.vo.materials.PropertyVO;
 import com.ktg.iscs.mapper.IsMaterialsMapper;
 import com.ktg.iscs.service.IIsMaterialsLoanService;
 import com.ktg.iscs.service.IIsMaterialsService;
@@ -28,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 物资Service业务层处理
@@ -58,6 +63,7 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
             if (materialsType != null) {
                 materials.setMaterialsTypeIcon(materialsType.getMaterialsTypeIcon());
                 materials.setMaterialsTypePicture(materialsType.getMaterialsTypePicture());
+                materials.setPropertyIds(materialsType.getPropertyIds());
             }
         }
         return materials;
@@ -129,8 +135,26 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
     }
 
     @Override
-    public Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto) {
-        return isMaterialsMapper.getIsMaterialsPage(page, dto);
+    public Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto) throws JsonProcessingException {
+        if (StringUtils.isNotBlank(dto.getPropertyId())) {
+            dto.setPropertyId('"' + "propertyId" + '"' + ":" + '"' + dto.getPropertyId() + '"');
+        }
+        if (StringUtils.isNotBlank(dto.getRecordId())) {
+            dto.setRecordId('"' + "recordId" + '"' + ":" + '"' + dto.getRecordId() + '"');
+        }
+        Page<MaterialsPageVO> isMaterialsPage = isMaterialsMapper.getIsMaterialsPage(page, dto);
+        // 解析规格属性
+        if (!isMaterialsPage.getRecords().isEmpty()) {
+            ObjectMapper objectMapper = new ObjectMapper();
+            for (MaterialsPageVO record : isMaterialsPage.getRecords()) {
+                if (StringUtils.isNotBlank(record.getProperties())) {
+                    List<PropertyVO> propertyVOS = objectMapper.readValue(record.getProperties(), new TypeReference<List<PropertyVO>>() {});
+                    String collect = propertyVOS.stream().map(PropertyVO::getValueName).collect(Collectors.joining(","));
+                    record.setPropertiesValue(collect);
+                }
+            }
+        }
+        return isMaterialsPage;
     }
 
     @Transactional

+ 6 - 0
ktg-iscs/src/main/resources/mapper/IsMaterialsMapper.xml

@@ -191,6 +191,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="dto.materialsRfid != null and dto.materialsRfid.trim != ''">
                 and m.materials_rfid like concat('%',#{dto.materialsRfid},'%')
             </if>
+            <if test="dto.propertyId != null and dto.propertyId.trim != ''">
+                and m.properties like concat('%',#{dto.propertyId},'%')
+            </if>
+            <if test="dto.recordId != null and dto.recordId.trim != ''">
+                and m.properties like concat('%',#{dto.recordId},'%')
+            </if>
         </where>
         ORDER BY m.materials_id DESC
     </select>

+ 7 - 0
ktg-iscs/src/main/resources/mapper/IsMaterialsPropertyMapper.xml

@@ -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="com.ktg.iscs.mapper.IsMaterialsPropertyMapper">
+
+</mapper>

+ 19 - 0
ktg-iscs/src/main/resources/mapper/IsMaterialsPropertyValueMapper.xml

@@ -0,0 +1,19 @@
+<?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.ktg.iscs.mapper.IsMaterialsPropertyValueMapper">
+
+    <select id="getIsMaterialsPropertyValuePage" resultType="com.ktg.iscs.domain.IsMaterialsPropertyValue">
+        select v.*, p.property_name from is_materials_property_value v
+        left join is_materials_property p on v.property_id = p.property_id
+        <where>
+            <if test="isMaterialsPropertyValue.valueName != null and isMaterialsPropertyValue.valueName.trim != ''">
+                and v.value_name = #{isMaterialsPropertyValue.valueName}
+            </if>
+            <if test="isMaterialsPropertyValue.propertyId != null">
+                and v.property_id = #{isMaterialsPropertyValue.propertyId}
+            </if>
+        </where>
+    </select>
+</mapper>

+ 4 - 0
ktg-iscs/src/main/resources/mapper/IsMaterialsTypeMapper.xml

@@ -24,6 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="status"    column="status"    />
         <result property="materialsTypeIcon"    column="materials_type_icon"    />
         <result property="materialsTypePicture"    column="materials_type_picture"    />
+        <result property="propertyIds"    column="property_ids"    />
     </resultMap>
 
     <sql id="selectIsMaterialsTypeVo">
@@ -68,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="materialsTypeIcon != null and materialsTypeIcon != ''">materials_type_icon,</if>
             <if test="materialsTypePicture != null and materialsTypePicture != ''">materials_type_picture,</if>
             <if test="checkStandard != null and checkStandard != ''">check_standard,</if>
+            <if test="propertyIds != null and propertyIds != ''">property_ids,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="materialsTypeCode != null and materialsTypeCode != ''">#{materialsTypeCode},</if>
@@ -89,6 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="materialsTypeIcon != null and materialsTypeIcon != ''">#{materialsTypeIcon},</if>
             <if test="materialsTypePicture != null and materialsTypePicture != ''">#{materialsTypePicture},</if>
             <if test="checkStandard != null and checkStandard != ''">#{checkStandard},</if>
+            <if test="propertyIds != null and propertyIds != ''">#{propertyIds},</if>
          </trim>
     </insert>
 
@@ -114,6 +117,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="materialsTypeIcon != null and materialsTypeIcon != ''">materials_type_icon = #{materialsTypeIcon},</if>
             <if test="materialsTypePicture != null and materialsTypePicture != ''">materials_type_picture = #{materialsTypePicture},</if>
             <if test="checkStandard != null and checkStandard != ''">check_standard = #{checkStandard},</if>
+            <if test="propertyIds != null and propertyIds != ''">property_ids = #{propertyIds},</if>
         </trim>
         where materials_type_id = #{materialsTypeId}
     </update>