🆕 扫码盘点待完善

This commit is contained in:
my_ong 2024-12-08 18:23:43 +08:00
parent 9844c1ec3a
commit a471e9807f
18 changed files with 388 additions and 97 deletions

View File

@ -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 为物料idvalue 该物料的所有条形码结合
return stockDetails.stream().collect(Collectors.groupingBy(MaterialStockDetail::getMaterialId));
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -14,11 +14,9 @@ import lombok.Getter;
public enum StockStatusEnum implements ICodeBook {
IN("0", "在库"),
OUT("1", "外借"),
OFF("2", "下架"),
LOST("3", "丢失"),
;

View File

@ -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;
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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> {
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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" />

View File

@ -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>

View File

@ -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 -> {