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