🆕 扫码盘点待完善
This commit is contained in:
parent
9844c1ec3a
commit
a471e9807f
@ -13,17 +13,12 @@ import org.springframework.web.bind.annotation.*;
|
||||
import tech.riemann.ims.dto.request.ApplyInfo;
|
||||
import tech.riemann.ims.dto.request.AuditApplyInfo;
|
||||
import tech.riemann.ims.dto.response.ApplyDTO;
|
||||
import tech.riemann.ims.entity.material.ApplyDetail;
|
||||
import tech.riemann.ims.entity.material.ApplyForm;
|
||||
import tech.riemann.ims.entity.material.Material;
|
||||
import tech.riemann.ims.entity.material.MaterialStockDetail;
|
||||
import tech.riemann.ims.entity.material.*;
|
||||
import tech.riemann.ims.enums.*;
|
||||
import tech.riemann.ims.service.material.IApplyDetailService;
|
||||
import tech.riemann.ims.service.material.IApplyFormService;
|
||||
import tech.riemann.ims.service.material.IMaterialService;
|
||||
import tech.riemann.ims.service.material.IMaterialStockDetailService;
|
||||
import tech.riemann.ims.service.material.*;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@ -41,6 +36,9 @@ public class ApplyFormController {
|
||||
private final IApplyDetailService applyDetailService;
|
||||
private final IMaterialStockDetailService materialStockDetailService;
|
||||
private final IMaterialService materialService;
|
||||
private final IStocktakingScanDetailService stocktakingScanDetailService;
|
||||
private final IStocktakingScanExceptionalDataService stocktakingScanExceptionalDataService;
|
||||
|
||||
|
||||
@GetMapping("applies")
|
||||
@Operation(summary = "分页查询申请列表")
|
||||
@ -62,13 +60,13 @@ public class ApplyFormController {
|
||||
@Parameter(description = "盘点类型") @RequestParam(name = "auditType", required = false) AuditTypeEnum auditType,
|
||||
@Parameter(description = "盘点人") @RequestParam(name = "taker", required = false) String taker,
|
||||
@Parameter(description = "创建日期") @RequestParam(name = "createDate", required = false) LocalDateTime createDate,
|
||||
@Parameter(description = "审核状态") @RequestParam(name = "reviewResult", required = false) ReviewResultEnum reviewResult) {
|
||||
@Parameter(description = "审核状态") @RequestParam(name = "reviewResults", required = false) List<ReviewResultEnum> reviewResults) {
|
||||
return applyFormService.page(Page.of(page, size), Wrappers.<ApplyForm>lambdaQuery()
|
||||
.eq(auditType != null, ApplyForm::getAuditType, auditType)
|
||||
.eq(ApplyForm::getType, ApplyTypeEnum.AUDIT)
|
||||
.eq(taker != null, ApplyForm::getTaker, taker)
|
||||
.eq(createDate != null, ApplyForm::getCreatedTime, createDate)
|
||||
.eq(reviewResult != null, ApplyForm::getReviewResult, reviewResult)
|
||||
.in(reviewResults != null && !reviewResults.isEmpty(), ApplyForm::getReviewResult, reviewResults)
|
||||
.orderByDesc(ApplyForm::getCreatedTime)
|
||||
);
|
||||
}
|
||||
@ -168,6 +166,7 @@ public class ApplyFormController {
|
||||
ApplyForm applyForm = applyInfo.to();
|
||||
applyForm.setType(ApplyTypeEnum.AUDIT);
|
||||
applyFormService.save(applyForm);
|
||||
|
||||
List<Material> materials = materialService.listByIds(applyInfo.getIds());
|
||||
|
||||
materials.forEach(material -> applyDetailService.save(ApplyDetail.builder()
|
||||
@ -176,4 +175,81 @@ public class ApplyFormController {
|
||||
.quantity(material.getStock())
|
||||
.build()));
|
||||
}
|
||||
@PostMapping("scan-data/{applyId}")
|
||||
@Operation(summary = "提交盘点扫码数据")
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveScanData(@Parameter(description = "扫码数据列表") @RequestBody List<StocktakingScanDetail> scanData,
|
||||
@Parameter(description = "申请单ID") @PathVariable(name = "applyId") Long applyId){
|
||||
//保存扫码数据
|
||||
stocktakingScanDetailService.saveBatch(scanData);
|
||||
//修改状态
|
||||
applyFormService.update(Wrappers.<ApplyForm>lambdaUpdate()
|
||||
.set(ApplyForm::getReviewResult, ReviewResultEnum.WAIT_REVIEW)
|
||||
.eq(ApplyForm::getId, applyId));
|
||||
new Thread(() -> {
|
||||
comparisonData(scanData, applyId);
|
||||
}).start();
|
||||
}
|
||||
|
||||
// 比较数据 生成差异数据
|
||||
public void comparisonData(List<StocktakingScanDetail> scanData, Long applyId){
|
||||
//生成map比较
|
||||
Map<Long, List<String>> scanMap = scanData.stream().collect(Collectors.groupingBy(StocktakingScanDetail::getMaterialId,
|
||||
Collectors.mapping(StocktakingScanDetail::getBarcode, Collectors.toList())));
|
||||
Map<Long, List<MaterialStockDetail>> stockMap = getStockMap(applyId);
|
||||
// 比较两个map,以库存为准,生成差异数据
|
||||
List<StocktakingScanExceptionalData> exceptionalDataList = new ArrayList<>();
|
||||
scanMap.forEach((k, v) -> {
|
||||
List<MaterialStockDetail> stockList = stockMap.get(k);
|
||||
List<String> scanList = scanMap.get(k);
|
||||
// 比较两个list,找出库存存在但扫码不存在的条形码 或者 库存不存在但扫码存在的条形码
|
||||
stockList.forEach(detail -> {
|
||||
if (scanList.contains(detail.getBarcode()) && detail.getStatus() != StockStatusEnum.IN) {
|
||||
// 扫码和库存都存在,但是库存的状态不对
|
||||
exceptionalDataList.add(StocktakingScanExceptionalData.builder()
|
||||
.barcode(detail.getBarcode())
|
||||
.materialId(detail.getMaterialId())
|
||||
.exceptionReason(StocktakingExceptonalStatusEnum.SOCK_OUT_BUT_SCAN_EXIST)
|
||||
.build());
|
||||
}
|
||||
if(!scanList.contains(detail.getBarcode()) && detail.getStatus() == StockStatusEnum.IN){
|
||||
//库房存在,但扫码不存在
|
||||
exceptionalDataList.add(StocktakingScanExceptionalData.builder()
|
||||
.barcode(detail.getBarcode())
|
||||
.materialId(detail.getMaterialId())
|
||||
.exceptionReason(StocktakingExceptonalStatusEnum.SOCK_IN_BUT_SCAN_NOT_EXIST)
|
||||
.build());
|
||||
}
|
||||
});
|
||||
// 找出扫码存在但库存不存在的条形码
|
||||
scanList.forEach(barcode -> {
|
||||
if (stockList.stream().noneMatch(detail -> detail.getBarcode().equals(barcode))) {
|
||||
// 扫码存在,但库存不存在
|
||||
exceptionalDataList.add(StocktakingScanExceptionalData.builder()
|
||||
.barcode(barcode)
|
||||
.materialId(k)
|
||||
.exceptionReason(StocktakingExceptonalStatusEnum.SOCK_NOT_EXIST_BUT_SCAN_EXIST)
|
||||
.build());
|
||||
}
|
||||
});
|
||||
});
|
||||
// 保存差异数据
|
||||
stocktakingScanExceptionalDataService.saveBatch(exceptionalDataList);
|
||||
}
|
||||
// 盘点物料库存实际数据
|
||||
private Map<Long, List<MaterialStockDetail>> getStockMap(Long applyId) {
|
||||
ApplyForm applyForm = applyFormService.getById(applyId);
|
||||
List<Long> materialIds = new ArrayList<>();
|
||||
if(applyForm.getAuditType() == AuditTypeEnum.PARTIAL){
|
||||
// 部分盘点
|
||||
List<ApplyDetail> applyDetails = applyDetailService.list(Wrappers.<ApplyDetail>lambdaQuery().eq(ApplyDetail::getApplyId, applyId));
|
||||
materialIds = applyDetails.stream().map(ApplyDetail::getMaterialId).toList();
|
||||
}
|
||||
//查询所有盘点物料数量
|
||||
List<MaterialStockDetail> stockDetails = materialStockDetailService.list(Wrappers.<MaterialStockDetail>lambdaQuery()
|
||||
.in(!materialIds.isEmpty(), MaterialStockDetail::getMaterialId, materialIds));
|
||||
|
||||
// 返回map结构 key 为物料id,value 该物料的所有条形码结合
|
||||
return stockDetails.stream().collect(Collectors.groupingBy(MaterialStockDetail::getMaterialId));
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ import org.nutz.dao.entity.annotation.*;
|
||||
import tech.riemann.ims.entity.IdBaseEntity;
|
||||
import tech.riemann.ims.enums.ApplyTypeEnum;
|
||||
import tech.riemann.ims.enums.AuditTypeEnum;
|
||||
import tech.riemann.ims.enums.HandleEnum;
|
||||
import tech.riemann.ims.enums.ReviewResultEnum;
|
||||
|
||||
import java.io.Serial;
|
||||
@ -104,17 +103,17 @@ public class ApplyForm extends IdBaseEntity {
|
||||
@ColDefine(type = ColType.VARCHAR, notNull = false, width = 512, precision = 0)
|
||||
private String exception;
|
||||
|
||||
@Schema(description = "处理方式(1-无需处理 2-忽略并修改库存 3-补充库存 4-其他)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Schema(description = "处理摘要", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@TableField("af_exception_handle")
|
||||
@Column("af_exception_handle")
|
||||
@Comment("处理方式(处理方式(1-无需处理 2-忽略并修改库存 3-补充库存 4-其他))")
|
||||
@Comment("处理摘要")
|
||||
@ColDefine(type = ColType.VARCHAR, notNull = false, width = 128, precision = 0)
|
||||
private HandleEnum handle;
|
||||
private String handle;
|
||||
|
||||
@Schema(description = "审核结果(1-通过 2-不通过 3-待审核 4-退回重新盘点 5-待盘点)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@Schema(description = "审核结果(1-待扫码 2-待提交 3-待审核 4-审核通过 5退回)", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
|
||||
@TableField("af_review_result")
|
||||
@Column("af_review_result")
|
||||
@Comment("审核结果(1-通过 2-不通过 3-待审核 4-退回重新盘点)")
|
||||
@Comment("审核结果(1-待扫码 2-待提交 3-待审核 4-审核通过 5退回)")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private ReviewResultEnum reviewResult;
|
||||
|
||||
|
@ -1,56 +0,0 @@
|
||||
package tech.riemann.ims.entity.material;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import org.nutz.dao.entity.annotation.ColDefine;
|
||||
import org.nutz.dao.entity.annotation.Column;
|
||||
import org.nutz.dao.entity.annotation.Comment;
|
||||
import tech.riemann.ims.entity.IdBaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 盘点审核表
|
||||
*
|
||||
* @author mayong)
|
||||
*
|
||||
* @since 2024-12-06 10:32:29
|
||||
*/
|
||||
//@Data
|
||||
//@SuperBuilder
|
||||
//@NoArgsConstructor
|
||||
//@AllArgsConstructor
|
||||
//@FieldNameConstants
|
||||
//@EqualsAndHashCode(callSuper = true)
|
||||
//@Accessors(chain = true)
|
||||
//@TableName("t_stocktaking_audit")
|
||||
//@Table("t_stocktaking_audit")
|
||||
//@Comment("盘点审核表")
|
||||
//@Schema(name = "StocktakingAudit", description = "盘点审核表")
|
||||
public class StocktakingAudit extends IdBaseEntity{
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "申请单id", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_apply_id")
|
||||
@Column("s_apply_id")
|
||||
@Comment("申请单id")
|
||||
@ColDefine(notNull = false, width = 10, precision = 0)
|
||||
private Integer applyId;
|
||||
|
||||
@Schema(description = "盘点审核人", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_reviewer")
|
||||
@Column("s_reviewer")
|
||||
@Comment("盘点审核人")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private String reviewer;
|
||||
|
||||
@Schema(description = "盘点审核结果(0-通过 1-不通过 2-待审核 3-退回重新盘点)", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_review_result")
|
||||
@Column("s_review_result")
|
||||
@Comment("盘点审核结果(0-通过 1-不通过 2-待审核 3-退回重新盘点)")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private String reviewResult;
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package tech.riemann.ims.entity.material;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import org.nutz.dao.entity.annotation.ColDefine;
|
||||
import org.nutz.dao.entity.annotation.Column;
|
||||
import org.nutz.dao.entity.annotation.Comment;
|
||||
import org.nutz.dao.entity.annotation.Table;
|
||||
import tech.riemann.ims.entity.IdBaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 盘点审核表
|
||||
*
|
||||
* @author mayong)
|
||||
*
|
||||
* @since 2024-12-06 10:32:29
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@FieldNameConstants
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stocktaking_scan_detail")
|
||||
@Table("t_stocktaking_scan_detail")
|
||||
@Comment("扫码盘点明细表")
|
||||
@Schema(name = "StocktakingScanDetail", description = "扫码盘点明细表(记录历次盘点扫码的数据)")
|
||||
public class StocktakingScanDetail extends IdBaseEntity{
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "申请单id", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_apply_id")
|
||||
@Column("s_apply_id")
|
||||
@Comment("申请单id")
|
||||
@ColDefine(notNull = false, width = 10, precision = 0)
|
||||
private Integer applyId;
|
||||
|
||||
@Schema(description = "物料ID", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("msd_material_id")
|
||||
@Column("msd_material_id")
|
||||
@Comment("物料ID")
|
||||
@ColDefine(notNull = false)
|
||||
private Long materialId;
|
||||
|
||||
@Schema(description = "条码", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("msd_barcode")
|
||||
@Column("msd_barcode")
|
||||
@Comment("条码")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private String barcode;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
package tech.riemann.ims.entity.material;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.media.Schema.RequiredMode;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import org.nutz.dao.entity.annotation.ColDefine;
|
||||
import org.nutz.dao.entity.annotation.Column;
|
||||
import org.nutz.dao.entity.annotation.Comment;
|
||||
import org.nutz.dao.entity.annotation.Table;
|
||||
import tech.riemann.ims.entity.IdBaseEntity;
|
||||
import tech.riemann.ims.enums.HandleEnum;
|
||||
import tech.riemann.ims.enums.StocktakingExceptonalStatusEnum;
|
||||
|
||||
/**
|
||||
* 扫码盘点异常数据表
|
||||
*
|
||||
* @author mayong)
|
||||
*
|
||||
* @since 2024-12-08 11:49:52
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@FieldNameConstants
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Accessors(chain = true)
|
||||
@TableName("t_stocktaking_scan_exceptional_data")
|
||||
@Table("t_stocktaking_scan_exceptional_data")
|
||||
@Comment("扫码盘点异常数据表")
|
||||
@Schema(name = "StocktakingScanExceptionalData", description = "扫码盘点异常数据表")
|
||||
public class StocktakingScanExceptionalData extends IdBaseEntity{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "申请单id", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_apply_id")
|
||||
@Column("s_apply_id")
|
||||
@Comment("申请单id")
|
||||
@ColDefine(notNull = false, width = 19, precision = 0)
|
||||
private Long applyId;
|
||||
|
||||
@Schema(description = "物料ID", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_material_id")
|
||||
@Column("s_material_id")
|
||||
@Comment("物料ID")
|
||||
@ColDefine(notNull = false, width = 10, precision = 0)
|
||||
private Long materialId;
|
||||
|
||||
@Schema(description = "条码", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_barcode")
|
||||
@Column("s_barcode")
|
||||
@Comment("条码")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private String barcode;
|
||||
|
||||
@Schema(description = "异常类型", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_exception_reason")
|
||||
@Column("s_exception_reason")
|
||||
@Comment("异常类型")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private StocktakingExceptonalStatusEnum exceptionReason;
|
||||
|
||||
@Schema(description = "异常处理", requiredMode = RequiredMode.NOT_REQUIRED)
|
||||
@TableField("s_exception_handle")
|
||||
@Column("s_exception_handle")
|
||||
@Comment("异常处理")
|
||||
@ColDefine(notNull = false, width = 128, precision = 0)
|
||||
private HandleEnum exceptionHandle;
|
||||
}
|
@ -13,10 +13,9 @@ import lombok.Getter;
|
||||
@AllArgsConstructor
|
||||
public enum HandleEnum implements ICodeBook {
|
||||
|
||||
NO_ACTION("1", "无需处理"),
|
||||
IGNORE_AND_SAVE("2", "忽略并保存"),
|
||||
REPLENISH("3", "补货"),
|
||||
OTHER("4", "其他")
|
||||
INBOUND("1", "入库+1"),
|
||||
OUTBOUND("2", "不入库-1"),
|
||||
DISCARD("3", "丢弃-1"),
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
|
@ -13,11 +13,11 @@ import lombok.Getter;
|
||||
@AllArgsConstructor
|
||||
public enum ReviewResultEnum implements ICodeBook {
|
||||
|
||||
PASS("1", "通过"),
|
||||
UN_PASS("2", "未通过"),
|
||||
WAIT_AUDIT("3", "等待审核"),
|
||||
REJECT("4", "退回"),
|
||||
WAIT_CHECK("5", "待盘点")
|
||||
WAIT_SCAN("1", "待扫码"),
|
||||
WAIT_SUBMIT("2", "待提交"),
|
||||
WAIT_REVIEW("3", "待审核"),
|
||||
PASS("4", "审核通过"),
|
||||
REJECT("5", "退回")
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
|
@ -14,11 +14,9 @@ import lombok.Getter;
|
||||
public enum StockStatusEnum implements ICodeBook {
|
||||
|
||||
IN("0", "在库"),
|
||||
|
||||
|
||||
OUT("1", "外借"),
|
||||
|
||||
OFF("2", "下架"),
|
||||
LOST("3", "丢失"),
|
||||
|
||||
;
|
||||
|
||||
|
@ -0,0 +1,25 @@
|
||||
package tech.riemann.ims.enums;
|
||||
|
||||
import club.zhcs.lina.utils.enums.ICodeBook;
|
||||
import com.baomidou.mybatisplus.annotation.EnumValue;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author mayong
|
||||
* @since 2024/12/8 11:18
|
||||
*/
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum StocktakingExceptonalStatusEnum implements ICodeBook {
|
||||
|
||||
SOCK_IN_BUT_SCAN_NOT_EXIST("1", "库房在库状态但是扫码不存在"),
|
||||
SOCK_OUT_BUT_SCAN_EXIST("2", "库房不是在库状态但是扫码存在"),
|
||||
SOCK_NOT_EXIST_BUT_SCAN_EXIST("3", "库房不存在该条码但是扫码存在"),
|
||||
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
final String code;
|
||||
final String description;
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package tech.riemann.ims.mapper.material;
|
||||
|
||||
import tech.riemann.ims.entity.material.StocktakingAudit;
|
||||
import tech.riemann.ims.entity.material.StocktakingScanDetail;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
@ -10,6 +10,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
*
|
||||
* @since 2024-12-06 10:32:29
|
||||
*/
|
||||
public interface StocktakingAuditMapper extends BaseMapper<StocktakingAudit> {
|
||||
public interface StocktakingScanDetailMapper extends BaseMapper<StocktakingScanDetail> {
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package tech.riemann.ims.mapper.material;
|
||||
|
||||
import tech.riemann.ims.entity.material.StocktakingScanExceptionalData;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* 扫码盘点异常数据表 Mapper 接口
|
||||
*
|
||||
* @author mayong)
|
||||
*
|
||||
* @since 2024-12-08 11:49:52
|
||||
*/
|
||||
public interface StocktakingScanExceptionalDataMapper extends BaseMapper<StocktakingScanExceptionalData> {
|
||||
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package tech.riemann.ims.service.material;
|
||||
|
||||
import tech.riemann.ims.entity.material.StocktakingAudit;
|
||||
import tech.riemann.ims.entity.material.StocktakingScanDetail;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nutz.spring.boot.service.interfaces.IdNameEntityService;
|
||||
|
||||
@ -13,6 +13,6 @@ import org.nutz.spring.boot.service.interfaces.IdNameEntityService;
|
||||
*
|
||||
* @since 2024-12-06 10:32:29
|
||||
*/
|
||||
public interface IStocktakingAuditService extends IService<StocktakingAudit>, IdNameEntityService<StocktakingAudit> {
|
||||
public interface IStocktakingScanDetailService extends IService<StocktakingScanDetail>, IdNameEntityService<StocktakingScanDetail> {
|
||||
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package tech.riemann.ims.service.material;
|
||||
|
||||
import tech.riemann.ims.entity.material.StocktakingScanExceptionalData;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nutz.spring.boot.service.interfaces.IdNameEntityService;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 扫码盘点异常数据表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author mayong)
|
||||
*
|
||||
* @since 2024-12-08 11:49:52
|
||||
*/
|
||||
public interface IStocktakingScanExceptionalDataService extends IService<StocktakingScanExceptionalData>, IdNameEntityService<StocktakingScanExceptionalData> {
|
||||
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
package tech.riemann.ims.service.material.impl;
|
||||
|
||||
import tech.riemann.ims.entity.material.StocktakingAudit;
|
||||
import tech.riemann.ims.mapper.material.StocktakingAuditMapper;
|
||||
import tech.riemann.ims.service.material.IStocktakingAuditService;
|
||||
import tech.riemann.ims.entity.material.StocktakingScanDetail;
|
||||
import tech.riemann.ims.mapper.material.StocktakingScanDetailMapper;
|
||||
import tech.riemann.ims.service.material.IStocktakingScanDetailService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -21,7 +21,7 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class StocktakingAuditServiceImpl extends ServiceImpl<StocktakingAuditMapper, StocktakingAudit> implements IStocktakingAuditService {
|
||||
public class StocktakingScanDetailServiceImpl extends ServiceImpl<StocktakingScanDetailMapper, StocktakingScanDetail> implements IStocktakingScanDetailService {
|
||||
|
||||
private final Dao dao;
|
||||
|
||||
@ -39,7 +39,7 @@ public class StocktakingAuditServiceImpl extends ServiceImpl<StocktakingAuditMap
|
||||
* @see org.nutz.spring.boot.service.interfaces.EntityService#getEntityType()
|
||||
*/
|
||||
@Override
|
||||
public Class<StocktakingAudit> getEntityType() {
|
||||
return StocktakingAudit.class;
|
||||
public Class<StocktakingScanDetail> getEntityType() {
|
||||
return StocktakingScanDetail.class;
|
||||
}
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package tech.riemann.ims.service.material.impl;
|
||||
|
||||
import tech.riemann.ims.entity.material.StocktakingScanExceptionalData;
|
||||
import tech.riemann.ims.mapper.material.StocktakingScanExceptionalDataMapper;
|
||||
import tech.riemann.ims.service.material.IStocktakingScanExceptionalDataService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import org.nutz.dao.Dao;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 扫码盘点异常数据表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author mayong)
|
||||
*
|
||||
* @since 2024-12-08 11:49:52
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class StocktakingScanExceptionalDataServiceImpl extends ServiceImpl<StocktakingScanExceptionalDataMapper, StocktakingScanExceptionalData> implements IStocktakingScanExceptionalDataService {
|
||||
|
||||
private final Dao dao;
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @see org.nutz.spring.boot.service.ExtService#dao()
|
||||
*/
|
||||
@Override
|
||||
public Dao dao() {
|
||||
return dao;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* @see org.nutz.spring.boot.service.interfaces.EntityService#getEntityType()
|
||||
*/
|
||||
@Override
|
||||
public Class<StocktakingScanExceptionalData> getEntityType() {
|
||||
return StocktakingScanExceptionalData.class;
|
||||
}
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
<?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="tech.riemann.ims.mapper.material.StocktakingAuditMapper">
|
||||
<mapper namespace="tech.riemann.ims.mapper.material.StocktakingScanDetailMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="tech.riemann.ims.entity.material.StocktakingAudit">
|
||||
<resultMap id="BaseResultMap" type="tech.riemann.ims.entity.material.StocktakingScanDetail">
|
||||
<result column="id" property="id" />
|
||||
<result column="created_time" property="createdTime" />
|
||||
<result column="updated_time" property="updatedTime" />
|
@ -0,0 +1,27 @@
|
||||
<?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="tech.riemann.ims.mapper.material.StocktakingScanExceptionalDataMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="tech.riemann.ims.entity.material.StocktakingScanExceptionalData">
|
||||
<result column="id" property="id" />
|
||||
<result column="created_time" property="createdTime" />
|
||||
<result column="updated_time" property="updatedTime" />
|
||||
<result column="created_by" property="createdBy" />
|
||||
<result column="updated_by" property="updatedBy" />
|
||||
<result column="s_apply_id" property="applyId" />
|
||||
<result column="s_material_id" property="id" />
|
||||
<result column="s_barcode" property="barcode" />
|
||||
<result column="s_exception_reason" property="exceptionReason" />
|
||||
<result column="s_exception_handle" property="exceptionHandle" />
|
||||
</resultMap>
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
id,
|
||||
created_time,
|
||||
updated_time,
|
||||
created_by,
|
||||
updated_by,
|
||||
s_apply_id, s_material_id, s_barcode, s_exception_reason, s_exception_handle
|
||||
</sql>
|
||||
</mapper>
|
@ -68,7 +68,7 @@ public class MysqlGenerator {
|
||||
List<String> relationTables = Lang.list();
|
||||
|
||||
NutMap.NEW()
|
||||
.addv("material", Lang.array("t_material_barcode_config", "t_material_stock_detail", "t_stocktaking_audit"))
|
||||
.addv("material", Lang.array("t_stocktaking_scan_exceptional_data"))
|
||||
.entrySet()
|
||||
.stream()
|
||||
.forEach(e -> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user