no message
							parent
							
								
									7156c8445c
								
							
						
					
					
						commit
						1f38a4a636
					
				| 
						 | 
				
			
			@ -6,7 +6,11 @@ import com.baomidou.mybatisplus.annotation.TableField;
 | 
			
		|||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 库区信息 实体类
 | 
			
		||||
| 
						 | 
				
			
			@ -17,6 +21,9 @@ import lombok.Data;
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@TableName("t_area")
 | 
			
		||||
public class AreaEntity {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,9 +9,9 @@ import lombok.Data;
 | 
			
		|||
/**
 | 
			
		||||
 * 库区信息 新建表单
 | 
			
		||||
 *
 | 
			
		||||
 * @Author hj
 | 
			
		||||
 * @Date 2025-03-11 11:12:36
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author hj
 | 
			
		||||
 * @since  2025-03-11 11:12:36
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,19 +8,23 @@ import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		|||
import java.math.BigDecimal;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 物料信息 实体类
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-25 17:08:18
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-25 17:08:18
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@TableName("t_item")
 | 
			
		||||
public class ItemEntity {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,21 +1,22 @@
 | 
			
		|||
package net.lab1024.sa.admin.module.business.base.item.domain.form;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.DecimalMin;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 物料信息 新建表单
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-25 17:08:18
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-25 17:08:18
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
| 
						 | 
				
			
			@ -33,8 +34,8 @@ public class ItemAddForm {
 | 
			
		|||
    @NotBlank(message = "单位 不能为空")
 | 
			
		||||
    private String unit;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "物料类型", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "物料类型 不能为空")
 | 
			
		||||
    @Schema(description = "物料类型")
 | 
			
		||||
    @NotBlank(message = "物料类型 不能为空 ")
 | 
			
		||||
    private String itemType;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "包装系数")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,19 +7,23 @@ import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		|||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 库位信息 实体类
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-18 14:17:31
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-18 14:17:31
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@TableName("t_location")
 | 
			
		||||
public class LocationEntity {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,12 +4,8 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 | 
			
		|||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import net.lab1024.sa.admin.constant.UsageStatusEnum;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum;
 | 
			
		||||
import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
 | 
			
		||||
import net.lab1024.sa.base.common.swagger.SchemaEnum;
 | 
			
		||||
import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
 | 
			
		||||
| 
						 | 
				
			
			@ -17,9 +13,9 @@ import net.lab1024.sa.base.common.validator.enumeration.CheckEnum;
 | 
			
		|||
/**
 | 
			
		||||
 * 库位信息 新建表单
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-18 14:17:31
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since 2024-11-18 14:17:31
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
| 
						 | 
				
			
			@ -29,14 +25,8 @@ public class LocationAddForm {
 | 
			
		|||
    @NotBlank(message = "库位编码 不能为空")
 | 
			
		||||
    private String locationCode;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "库位名称", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "库位名称 不能为空")
 | 
			
		||||
    private String locationName;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "库位类型")
 | 
			
		||||
    @NotBlank(message = "库位类型 不能为空 ")
 | 
			
		||||
    @JsonDeserialize(using = DictValueVoDeserializer.class)
 | 
			
		||||
    private String locationType;
 | 
			
		||||
 | 
			
		||||
    @SchemaEnum(UsageStatusEnum.class)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,12 +59,12 @@ public class LocationQueryService {
 | 
			
		|||
        List<LocationVO> list = locationDao.queryPage(page, queryForm);
 | 
			
		||||
 | 
			
		||||
        // 查询库区名称
 | 
			
		||||
        List<Long> categoryIdList = list.stream().map(LocationVO::getAreaId).distinct().collect(Collectors.toList());
 | 
			
		||||
        Map<Long, AreaEntity> areaMap = areaQueryService.queryAreaList(categoryIdList);
 | 
			
		||||
        list.forEach(area -> {
 | 
			
		||||
            AreaEntity areaEntity = areaMap.get(area.getAreaId());
 | 
			
		||||
            if (areaEntity != null) {
 | 
			
		||||
                area.setAreaName(areaEntity.getAreaName());
 | 
			
		||||
        List<Long> areaIdList = list.stream().map(LocationVO::getAreaId).distinct().collect(Collectors.toList());
 | 
			
		||||
        Map<Long, AreaEntity> areaMap = areaQueryService.queryAreaList(areaIdList);
 | 
			
		||||
        list.forEach(locationVO -> {
 | 
			
		||||
            AreaEntity area = areaMap.get(locationVO.getAreaId());
 | 
			
		||||
            if (area != null) {
 | 
			
		||||
                locationVO.setAreaName(area.getAreaName());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return SmartPageUtil.convert2PageResult(page, list);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -33,7 +33,7 @@ import org.springframework.web.multipart.MultipartFile;
 | 
			
		|||
 * 库位信息 Service
 | 
			
		||||
 *
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-18 14:17:31
 | 
			
		||||
 * @since 2024-11-18 14:17:31
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -219,9 +219,10 @@ public class LocationService {
 | 
			
		|||
 | 
			
		||||
    /**
 | 
			
		||||
     * 批量新增
 | 
			
		||||
     *
 | 
			
		||||
     * @param locationCodes 库位集合
 | 
			
		||||
     * @param areaId 库区
 | 
			
		||||
     * @param locationType 库位类型
 | 
			
		||||
     * @param areaId        库区
 | 
			
		||||
     * @param locationType  库位类型
 | 
			
		||||
     */
 | 
			
		||||
    public void multipleInsert(List<String> locationCodes, Long areaId, String locationType) {
 | 
			
		||||
        List<LocationEntity> insertToLocation = new ArrayList<>();
 | 
			
		||||
| 
						 | 
				
			
			@ -362,4 +363,21 @@ public class LocationService {
 | 
			
		|||
        return areaMap;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 更新库位状态
 | 
			
		||||
     *
 | 
			
		||||
     * @param locationId 库位id
 | 
			
		||||
     * @param status     状态
 | 
			
		||||
     */
 | 
			
		||||
    @Transactional(rollbackFor = Exception.class)
 | 
			
		||||
    public void updateLocationStatus(Long locationId, String status) {
 | 
			
		||||
        if (locationId != null) {
 | 
			
		||||
            LocationEntity location = locationDao.selectById(locationId);
 | 
			
		||||
            if (location != null) {
 | 
			
		||||
                location.setStatus(status);
 | 
			
		||||
                locationDao.updateById(location);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,8 +13,10 @@ import net.lab1024.sa.admin.module.business.base.stock.domain.vo.StockVO;
 | 
			
		|||
import net.lab1024.sa.admin.module.business.base.stock.domain.vo.StocksExcelVO;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.service.StockQueryService;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.service.StockService;
 | 
			
		||||
import net.lab1024.sa.base.common.domain.RequestUser;
 | 
			
		||||
import net.lab1024.sa.base.common.domain.ValidateList;
 | 
			
		||||
import net.lab1024.sa.base.common.util.SmartExcelUtil;
 | 
			
		||||
import net.lab1024.sa.base.common.util.SmartRequestUtil;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
import net.lab1024.sa.base.common.domain.ResponseDTO;
 | 
			
		||||
import net.lab1024.sa.base.common.domain.PageResult;
 | 
			
		||||
| 
						 | 
				
			
			@ -57,6 +59,9 @@ public class StockController {
 | 
			
		|||
    @PostMapping("/stock/add")
 | 
			
		||||
    @SaCheckPermission("stock:add")
 | 
			
		||||
    public ResponseDTO<String> add(@RequestBody @Valid StockAddForm addForm) {
 | 
			
		||||
        RequestUser requestUser = SmartRequestUtil.getRequestUser();
 | 
			
		||||
        addForm.setCreateUserId(requestUser.getUserId());
 | 
			
		||||
        addForm.setCreateUserName(requestUser.getUserName());
 | 
			
		||||
        return stockService.add(addForm);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -83,7 +88,7 @@ public class StockController {
 | 
			
		|||
 | 
			
		||||
    @Operation(summary = "容器下拉查询")
 | 
			
		||||
    @PostMapping("/stock/queryStock")
 | 
			
		||||
    public ResponseDTO<List<StockEntity>> queryItem(@RequestBody StockSelect stockSelect) {
 | 
			
		||||
    public ResponseDTO<List<StockEntity>> queryStock(@RequestBody StockSelect stockSelect) {
 | 
			
		||||
        return ResponseDTO.ok(stockQueryService.queryStock(stockSelect));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,19 +7,23 @@ import com.baomidou.mybatisplus.annotation.TableId;
 | 
			
		|||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
 | 
			
		||||
import lombok.AllArgsConstructor;
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.NoArgsConstructor;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 容器信息 实体类
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-26 11:37:48
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-26 11:37:48
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
@AllArgsConstructor
 | 
			
		||||
@NoArgsConstructor
 | 
			
		||||
@TableName("t_stock")
 | 
			
		||||
public class StockEntity {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -37,6 +41,7 @@ public class StockEntity {
 | 
			
		|||
    /**
 | 
			
		||||
     * 库位ID
 | 
			
		||||
     */
 | 
			
		||||
    @TableField(fill = FieldFill.INSERT_UPDATE)
 | 
			
		||||
    private Long locationId;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,25 +4,20 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 | 
			
		|||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import jakarta.validation.constraints.NotBlank;
 | 
			
		||||
import jakarta.validation.constraints.NotNull;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 容器信息 新建表单
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-26 11:37:48
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-26 11:37:48
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class StockAddForm {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器id", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotNull(message = "容器id 不能为空")
 | 
			
		||||
    private Long stockId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器编码", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "容器编码 不能为空")
 | 
			
		||||
    private String stockCode;
 | 
			
		||||
| 
						 | 
				
			
			@ -35,25 +30,19 @@ public class StockAddForm {
 | 
			
		|||
    @NotNull(message = "启用状态 不能为空")
 | 
			
		||||
    private Boolean disabledFlag;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器类型", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "容器类型 不能为空")
 | 
			
		||||
    @JsonDeserialize(using = DictValueVoDeserializer.class)
 | 
			
		||||
    @Schema(description = "容器类型")
 | 
			
		||||
    @NotBlank(message = "容器类型 不能为空 ")
 | 
			
		||||
    private String stockType;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "创建人ID", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotNull(message = "创建人ID 不能为空")
 | 
			
		||||
    @Schema(description = "库位")
 | 
			
		||||
    private Long locationId;
 | 
			
		||||
 | 
			
		||||
    @Schema(hidden = true)
 | 
			
		||||
    private Long createUserId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "创建人 不能为空")
 | 
			
		||||
    @Schema(hidden = true)
 | 
			
		||||
    private String createUserName;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotNull(message = "创建时间 不能为空")
 | 
			
		||||
    private LocalDateTime createTime;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotNull(message = "更新时间 不能为空")
 | 
			
		||||
    private LocalDateTime updateTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,16 +8,25 @@ import lombok.EqualsAndHashCode;
 | 
			
		|||
/**
 | 
			
		||||
 * 容器信息 分页查询表单
 | 
			
		||||
 *
 | 
			
		||||
 * @Author 霍锦
 | 
			
		||||
 * @Date 2024-11-26 11:37:48
 | 
			
		||||
 * @Copyright 友仓
 | 
			
		||||
 * @author 霍锦
 | 
			
		||||
 * @since  2024-11-26 11:37:48
 | 
			
		||||
 * copyright 友仓
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = false)
 | 
			
		||||
public class StockQueryForm extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器编码")
 | 
			
		||||
    private String stockCode;
 | 
			
		||||
    @Schema(description = "容器id")
 | 
			
		||||
    private Long stockId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "库位")
 | 
			
		||||
    private Long locationId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "状态")
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "是否启用")
 | 
			
		||||
    private String disabledFlag;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,27 +16,10 @@ import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer;
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class StockUpdateForm {
 | 
			
		||||
public class StockUpdateForm extends StockAddForm{
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器id", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotNull(message = "容器id 不能为空")
 | 
			
		||||
    private Long stockId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器编码", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "容器编码 不能为空")
 | 
			
		||||
    private String stockCode;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "状态 不能为空")
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "启用状态", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotNull(message = "启用状态 不能为空")
 | 
			
		||||
    private Boolean disabledFlag;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "容器类型", requiredMode = Schema.RequiredMode.REQUIRED)
 | 
			
		||||
    @NotBlank(message = "容器类型 不能为空")
 | 
			
		||||
    @JsonDeserialize(using = DictValueVoDeserializer.class)
 | 
			
		||||
    private String stockType;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
package net.lab1024.sa.admin.module.business.base.stock.domain.vo;
 | 
			
		||||
 | 
			
		||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Schema;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
| 
						 | 
				
			
			@ -23,9 +22,12 @@ public class StockVO {
 | 
			
		|||
    @Schema(description = "容器编码")
 | 
			
		||||
    private String stockCode;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "库位ID")
 | 
			
		||||
    @Schema(description = "库位id")
 | 
			
		||||
    private Long locationId;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "库位编码")
 | 
			
		||||
    private String locationCode;
 | 
			
		||||
 | 
			
		||||
    @Schema(description = "状态")
 | 
			
		||||
    private String status;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,7 +3,11 @@ package net.lab1024.sa.admin.module.business.base.stock.service;
 | 
			
		|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 | 
			
		||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 | 
			
		||||
import jakarta.annotation.Resource;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.area.domain.entity.AreaEntity;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.domain.entity.LocationEntity;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.domain.vo.LocationVO;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.manager.LocationManager;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.service.LocationQueryService;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.dao.StockDao;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.domain.entity.StockEntity;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.domain.form.StockQueryForm;
 | 
			
		||||
| 
						 | 
				
			
			@ -35,6 +39,9 @@ public class StockQueryService {
 | 
			
		|||
    @Resource
 | 
			
		||||
    private DictCacheService dictCacheService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private LocationQueryService locationQueryService;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 分页查询
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +51,16 @@ public class StockQueryService {
 | 
			
		|||
    public PageResult<StockVO> queryPage(StockQueryForm queryForm) {
 | 
			
		||||
        Page<?> page = SmartPageUtil.convert2PageQuery(queryForm);
 | 
			
		||||
        List<StockVO> list = stockDao.queryPage(page, queryForm);
 | 
			
		||||
 | 
			
		||||
        // 查询库位编码
 | 
			
		||||
        List<Long> locationIdList = list.stream().map(StockVO::getLocationId).distinct().collect(Collectors.toList());
 | 
			
		||||
        Map<Long, LocationEntity> locationMap = locationQueryService.queryLocationList(locationIdList);
 | 
			
		||||
        list.forEach(StockVO -> {
 | 
			
		||||
            LocationEntity location = locationMap.get(StockVO.getLocationId());
 | 
			
		||||
            if (location != null) {
 | 
			
		||||
                StockVO.setLocationCode(location.getLocationCode());
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return SmartPageUtil.convert2PageResult(page, list);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +123,18 @@ public class StockQueryService {
 | 
			
		|||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 根据库位id查询容器信息
 | 
			
		||||
     *
 | 
			
		||||
     * @param locationId 库位
 | 
			
		||||
     * @return StockEntity
 | 
			
		||||
     */
 | 
			
		||||
    public StockEntity queryStockByLocationId(Long locationId) {
 | 
			
		||||
        LambdaQueryWrapper<StockEntity> queryWrapper = new LambdaQueryWrapper<>();
 | 
			
		||||
        queryWrapper.eq(StockEntity::getLocationId, locationId);
 | 
			
		||||
        return stockDao.selectOne(queryWrapper);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 容器导出
 | 
			
		||||
     *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,10 @@ import cn.idev.excel.FastExcel;
 | 
			
		|||
import net.lab1024.sa.admin.constant.UsageStatusEnum;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.item.domain.entity.ItemEntity;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.item.domain.form.ItemsImportForm;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.dao.LocationDao;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.domain.entity.LocationEntity;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.service.LocationQueryService;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.location.service.LocationService;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.dao.StockDao;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.domain.entity.StockEntity;
 | 
			
		||||
import net.lab1024.sa.admin.module.business.base.stock.domain.form.StockAddForm;
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +24,7 @@ import net.lab1024.sa.admin.module.business.base.stock.manager.StockManager;
 | 
			
		|||
import net.lab1024.sa.admin.util.JoinerResult;
 | 
			
		||||
import net.lab1024.sa.admin.util.ResponseDTOUtils;
 | 
			
		||||
import net.lab1024.sa.admin.util.ValidateDictKey;
 | 
			
		||||
import net.lab1024.sa.base.common.code.SystemErrorCode;
 | 
			
		||||
import net.lab1024.sa.base.common.code.UserErrorCode;
 | 
			
		||||
import net.lab1024.sa.base.common.exception.BusinessException;
 | 
			
		||||
import net.lab1024.sa.base.common.util.SmartBeanUtil;
 | 
			
		||||
| 
						 | 
				
			
			@ -47,6 +52,9 @@ public class StockService {
 | 
			
		|||
    @Resource
 | 
			
		||||
    private StockDao stockDao;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private LocationDao locationDao;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private StockManager stockManager;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -56,6 +64,9 @@ public class StockService {
 | 
			
		|||
    @Resource
 | 
			
		||||
    private StockQueryService stockQueryService;
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private LocationService locationService;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 添加
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +100,23 @@ public class StockService {
 | 
			
		|||
        if (existingStock != null && !existingStock.getStockId().equals(updateForm.getStockId())) {
 | 
			
		||||
            return ResponseDTO.error(UserErrorCode.ALREADY_EXIST, UserErrorCode.ALREADY_EXIST.getMsg());
 | 
			
		||||
        }
 | 
			
		||||
        //当前更新的容器的库位
 | 
			
		||||
        if (existingStock != null && existingStock.getLocationId() != null) {
 | 
			
		||||
            //更新库位状态
 | 
			
		||||
            locationService.updateLocationStatus(existingStock.getLocationId(), UsageStatusEnum.FREE.getValue());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (updateForm.getLocationId() != null) {
 | 
			
		||||
            LocationEntity location = locationDao.selectById(updateForm.getLocationId());
 | 
			
		||||
            StockEntity curStock = stockQueryService.queryStockByLocationId(updateForm.getLocationId());
 | 
			
		||||
            if (curStock != null && existingStock != null) {
 | 
			
		||||
                if (!curStock.getStockId().equals(existingStock.getStockId())) {
 | 
			
		||||
                    return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, location.getLocationCode() + "库位绑定的当前容器为" + curStock.getStockCode());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            //更新库位状态
 | 
			
		||||
            locationService.updateLocationStatus(updateForm.getLocationId(), UsageStatusEnum.USED.getValue());
 | 
			
		||||
        }
 | 
			
		||||
        StockEntity stockEntity = SmartBeanUtil.copy(updateForm, StockEntity.class);
 | 
			
		||||
        stockDao.updateById(stockEntity);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,9 +23,21 @@
 | 
			
		|||
        <include refid="base_columns"/>
 | 
			
		||||
        FROM t_stock
 | 
			
		||||
        <where>
 | 
			
		||||
            <!--容器编码-->
 | 
			
		||||
            <if test="queryForm.stockCode != null and queryForm.stockCode != ''">
 | 
			
		||||
                        AND INSTR(t_stock.stock_code,#{queryForm.stockCode})
 | 
			
		||||
            <!--容器-->
 | 
			
		||||
            <if test="queryForm.stockId != null ">
 | 
			
		||||
                AND t_stock.stock_id=#{queryForm.stockId}
 | 
			
		||||
            </if>
 | 
			
		||||
            <!--库位-->
 | 
			
		||||
            <if test="queryForm.locationId != null">
 | 
			
		||||
                AND t_stock.location_id=#{queryForm.locationId}
 | 
			
		||||
            </if>
 | 
			
		||||
            <!--状态-->
 | 
			
		||||
            <if test="queryForm.status != null and queryForm.status != ''">
 | 
			
		||||
                AND t_stock.status=#{queryForm.status}
 | 
			
		||||
            </if>
 | 
			
		||||
            <!--是否启用-->
 | 
			
		||||
            <if test="queryForm.disabledFlag != null">
 | 
			
		||||
                AND t_stock.disabled_flag=#{queryForm.disabledFlag}
 | 
			
		||||
            </if>
 | 
			
		||||
        </where>
 | 
			
		||||
        ORDER BY t_stock.stock_code
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue