feat:新增出库单新增功能
This commit is contained in:
@@ -14,7 +14,8 @@
|
|||||||
VALUES (#{ruleId}, #{resetKey}, #{startAt} + #{step} - 1, #{maxValue})
|
VALUES (#{ruleId}, #{resetKey}, #{startAt} + #{step} - 1, #{maxValue})
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
current_value = current_value + #{step},
|
current_value = current_value + #{step},
|
||||||
max_value = #{maxValue}
|
max_value = #{maxValue},
|
||||||
|
deleted = 0
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class IostorInvController {
|
|||||||
@PostMapping("/createOutbound")
|
@PostMapping("/createOutbound")
|
||||||
@Operation(summary = "创建出库单及明细")
|
@Operation(summary = "创建出库单及明细")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostor-inv:create')")
|
@PreAuthorize("@ss.hasPermission('wms:iostor-inv:create')")
|
||||||
public CommonResult<String> createOutbound(@Valid @RequestBody IostorInvCreateReqVO reqVO) {
|
public CommonResult<Long> createOutbound(@Valid @RequestBody IostorInvCreateReqVO reqVO) {
|
||||||
return success(iostorInvService.createOutbound(reqVO));
|
return success(iostorInvService.createOutbound(reqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ public class IostorInvController {
|
|||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建出入库单主表")
|
@Operation(summary = "创建出入库单主表")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostor-inv:create')")
|
@PreAuthorize("@ss.hasPermission('wms:iostor-inv:create')")
|
||||||
public CommonResult<String> createIostorInv(@Valid @RequestBody IostorInvSaveReqVO createReqVO) {
|
public CommonResult<Long> createIostorInv(@Valid @RequestBody IostorInvSaveReqVO createReqVO) {
|
||||||
return success(iostorInvService.createIostorInv(createReqVO));
|
return success(iostorInvService.createIostorInv(createReqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.math.BigDecimal;
|
|||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
|
||||||
import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 出入库单主表分页 Request VO")
|
@Schema(description = "管理后台 - 出入库单主表分页 Request VO")
|
||||||
@@ -21,7 +22,7 @@ public class IostorInvPageReqVO extends PageParam {
|
|||||||
private String billType;
|
private String billType;
|
||||||
|
|
||||||
@Schema(description = "业务日期")
|
@Schema(description = "业务日期")
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
|
||||||
private LocalDateTime[] bizDate;
|
private LocalDateTime[] bizDate;
|
||||||
|
|
||||||
@Schema(description = "仓库标识", example = "12635")
|
@Schema(description = "仓库标识", example = "12635")
|
||||||
@@ -76,7 +77,7 @@ public class IostorInvPageReqVO extends PageParam {
|
|||||||
private String syscompanyid;
|
private String syscompanyid;
|
||||||
|
|
||||||
@Schema(description = "是否已上传")
|
@Schema(description = "是否已上传")
|
||||||
private String isUpload;
|
private Boolean isUpload;
|
||||||
|
|
||||||
@Schema(description = "回传人", example = "25284")
|
@Schema(description = "回传人", example = "25284")
|
||||||
private String uploadOptid;
|
private String uploadOptid;
|
||||||
|
|||||||
@@ -4,10 +4,13 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import cn.idev.excel.annotation.*;
|
import cn.idev.excel.annotation.*;
|
||||||
|
|
||||||
|
import static cn.code.nl.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - 出入库单主表 Response VO")
|
@Schema(description = "管理后台 - 出入库单主表 Response VO")
|
||||||
@Data
|
@Data
|
||||||
@ExcelIgnoreUnannotated
|
@ExcelIgnoreUnannotated
|
||||||
@@ -23,12 +26,17 @@ public class IostorInvRespVO {
|
|||||||
|
|
||||||
@Schema(description = "业务日期", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "业务日期", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@ExcelProperty("业务日期")
|
@ExcelProperty("业务日期")
|
||||||
|
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY)
|
||||||
private LocalDateTime bizDate;
|
private LocalDateTime bizDate;
|
||||||
|
|
||||||
@Schema(description = "仓库标识", example = "12635")
|
@Schema(description = "仓库标识", example = "12635")
|
||||||
@ExcelProperty("仓库标识")
|
@ExcelProperty("仓库标识")
|
||||||
private String storId;
|
private String storId;
|
||||||
|
|
||||||
|
@Schema(description = "仓库", example = "1号仓")
|
||||||
|
@ExcelProperty("仓库")
|
||||||
|
private String storName;
|
||||||
|
|
||||||
@Schema(description = "来源方标识", example = "21190")
|
@Schema(description = "来源方标识", example = "21190")
|
||||||
@ExcelProperty("来源方标识")
|
@ExcelProperty("来源方标识")
|
||||||
private String sourceId;
|
private String sourceId;
|
||||||
|
|||||||
@@ -1,104 +1,104 @@
|
|||||||
package cn.code.nl.module.wms.controller.admin.iostorinvdtl;
|
package cn.code.nl.module.wms.controller.admin.iostorinvdtl;
|
||||||
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
import jakarta.validation.*;
|
import jakarta.validation.*;
|
||||||
import jakarta.servlet.http.*;
|
import jakarta.servlet.http.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import cn.code.nl.framework.common.pojo.PageParam;
|
import cn.code.nl.framework.common.pojo.PageParam;
|
||||||
import cn.code.nl.framework.common.pojo.PageResult;
|
import cn.code.nl.framework.common.pojo.PageResult;
|
||||||
import cn.code.nl.framework.common.pojo.CommonResult;
|
import cn.code.nl.framework.common.pojo.CommonResult;
|
||||||
import cn.code.nl.framework.common.util.object.BeanUtils;
|
import cn.code.nl.framework.common.util.object.BeanUtils;
|
||||||
import static cn.code.nl.framework.common.pojo.CommonResult.success;
|
import static cn.code.nl.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
import cn.code.nl.framework.excel.core.util.ExcelUtils;
|
import cn.code.nl.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
import cn.code.nl.framework.apilog.core.annotation.ApiAccessLog;
|
import cn.code.nl.framework.apilog.core.annotation.ApiAccessLog;
|
||||||
import static cn.code.nl.framework.apilog.core.enums.OperateTypeEnum.*;
|
import static cn.code.nl.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
import cn.code.nl.module.wms.controller.admin.iostorinvdtl.vo.*;
|
import cn.code.nl.module.wms.controller.admin.iostorinvdtl.vo.*;
|
||||||
import cn.code.nl.module.wms.dal.dataobject.iostorinvdtl.IostorinvDtlDO;
|
import cn.code.nl.module.wms.dal.dataobject.iostorinvdtl.IostorinvDtlDO;
|
||||||
import cn.code.nl.module.wms.service.iostorinvdtl.IostorinvDtlService;
|
import cn.code.nl.module.wms.service.iostorinvdtl.IostorinvDtlService;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 出入库单明细")
|
@Tag(name = "管理后台 - 出入库单明细")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/wms/iostorinv-dtl")
|
@RequestMapping("/wms/iostorinv-dtl")
|
||||||
@Validated
|
@Validated
|
||||||
public class IostorinvDtlController {
|
public class IostorinvDtlController {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IostorinvDtlService iostorinvDtlService;
|
private IostorinvDtlService iostorinvDtlService;
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建出入库单明细")
|
@Operation(summary = "创建出入库单明细")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:create')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:create')")
|
||||||
public CommonResult<String> createIostorinvDtl(@Valid @RequestBody IostorinvDtlSaveReqVO createReqVO) {
|
public CommonResult<Long> createIostorinvDtl(@Valid @RequestBody IostorinvDtlSaveReqVO createReqVO) {
|
||||||
return success(iostorinvDtlService.createIostorinvDtl(createReqVO));
|
return success(iostorinvDtlService.createIostorinvDtl(createReqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
@Operation(summary = "更新出入库单明细")
|
@Operation(summary = "更新出入库单明细")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:update')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:update')")
|
||||||
public CommonResult<Boolean> updateIostorinvDtl(@Valid @RequestBody IostorinvDtlSaveReqVO updateReqVO) {
|
public CommonResult<Boolean> updateIostorinvDtl(@Valid @RequestBody IostorinvDtlSaveReqVO updateReqVO) {
|
||||||
iostorinvDtlService.updateIostorinvDtl(updateReqVO);
|
iostorinvDtlService.updateIostorinvDtl(updateReqVO);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/delete")
|
@DeleteMapping("/delete")
|
||||||
@Operation(summary = "删除出入库单明细")
|
@Operation(summary = "删除出入库单明细")
|
||||||
@Parameter(name = "id", description = "编号", required = true)
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:delete')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:delete')")
|
||||||
public CommonResult<Boolean> deleteIostorinvDtl(@RequestParam("id") String id) {
|
public CommonResult<Boolean> deleteIostorinvDtl(@RequestParam("id") String id) {
|
||||||
iostorinvDtlService.deleteIostorinvDtl(id);
|
iostorinvDtlService.deleteIostorinvDtl(id);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/delete-list")
|
@DeleteMapping("/delete-list")
|
||||||
@Parameter(name = "ids", description = "编号", required = true)
|
@Parameter(name = "ids", description = "编号", required = true)
|
||||||
@Operation(summary = "批量删除出入库单明细")
|
@Operation(summary = "批量删除出入库单明细")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:delete')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:delete')")
|
||||||
public CommonResult<Boolean> deleteIostorinvDtlList(@RequestParam("ids") List<String> ids) {
|
public CommonResult<Boolean> deleteIostorinvDtlList(@RequestParam("ids") List<String> ids) {
|
||||||
iostorinvDtlService.deleteIostorinvDtlListByIds(ids);
|
iostorinvDtlService.deleteIostorinvDtlListByIds(ids);
|
||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/get")
|
@GetMapping("/get")
|
||||||
@Operation(summary = "获得出入库单明细")
|
@Operation(summary = "获得出入库单明细")
|
||||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:query')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:query')")
|
||||||
public CommonResult<IostorinvDtlRespVO> getIostorinvDtl(@RequestParam("id") String id) {
|
public CommonResult<IostorinvDtlRespVO> getIostorinvDtl(@RequestParam("id") String id) {
|
||||||
IostorinvDtlDO iostorinvDtl = iostorinvDtlService.getIostorinvDtl(id);
|
IostorinvDtlDO iostorinvDtl = iostorinvDtlService.getIostorinvDtl(id);
|
||||||
return success(BeanUtils.toBean(iostorinvDtl, IostorinvDtlRespVO.class));
|
return success(BeanUtils.toBean(iostorinvDtl, IostorinvDtlRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/page")
|
@GetMapping("/page")
|
||||||
@Operation(summary = "获得出入库单明细分页")
|
@Operation(summary = "获得出入库单明细分页")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:query')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:query')")
|
||||||
public CommonResult<PageResult<IostorinvDtlRespVO>> getIostorinvDtlPage(@Valid IostorinvDtlPageReqVO pageReqVO) {
|
public CommonResult<PageResult<IostorinvDtlRespVO>> getIostorinvDtlPage(@Valid IostorinvDtlPageReqVO pageReqVO) {
|
||||||
PageResult<IostorinvDtlDO> pageResult = iostorinvDtlService.getIostorinvDtlPage(pageReqVO);
|
PageResult<IostorinvDtlDO> pageResult = iostorinvDtlService.getIostorinvDtlPage(pageReqVO);
|
||||||
return success(BeanUtils.toBean(pageResult, IostorinvDtlRespVO.class));
|
return success(BeanUtils.toBean(pageResult, IostorinvDtlRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/export-excel")
|
@GetMapping("/export-excel")
|
||||||
@Operation(summary = "导出出入库单明细 Excel")
|
@Operation(summary = "导出出入库单明细 Excel")
|
||||||
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:export')")
|
@PreAuthorize("@ss.hasPermission('wms:iostorinv-dtl:export')")
|
||||||
@ApiAccessLog(operateType = EXPORT)
|
@ApiAccessLog(operateType = EXPORT)
|
||||||
public void exportIostorinvDtlExcel(@Valid IostorinvDtlPageReqVO pageReqVO,
|
public void exportIostorinvDtlExcel(@Valid IostorinvDtlPageReqVO pageReqVO,
|
||||||
HttpServletResponse response) throws IOException {
|
HttpServletResponse response) throws IOException {
|
||||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||||
List<IostorinvDtlDO> list = iostorinvDtlService.getIostorinvDtlPage(pageReqVO).getList();
|
List<IostorinvDtlDO> list = iostorinvDtlService.getIostorinvDtlPage(pageReqVO).getList();
|
||||||
// 导出 Excel
|
// 导出 Excel
|
||||||
ExcelUtils.write(response, "出入库单明细.xls", "数据", IostorinvDtlRespVO.class,
|
ExcelUtils.write(response, "出入库单明细.xls", "数据", IostorinvDtlRespVO.class,
|
||||||
BeanUtils.toBean(list, IostorinvDtlRespVO.class));
|
BeanUtils.toBean(list, IostorinvDtlRespVO.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ public class IostorInvDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 出入单标识
|
* 出入单标识
|
||||||
*/
|
*/
|
||||||
@TableId(type = IdType.INPUT)
|
@TableId
|
||||||
private String iostorinvId;
|
private Long iostorinvId;
|
||||||
/**
|
/**
|
||||||
* 单据编号
|
* 单据编号
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,110 +1,106 @@
|
|||||||
package cn.code.nl.module.wms.dal.dataobject.iostorinvdtl;
|
package cn.code.nl.module.wms.dal.dataobject.iostorinvdtl;
|
||||||
|
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import cn.code.nl.framework.mybatis.core.dataobject.BaseDO;
|
import cn.code.nl.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出入库单明细 DO
|
* 出入库单明细 DO
|
||||||
*
|
*
|
||||||
* @author 诺力管理员
|
* @author 诺力管理员
|
||||||
*/
|
*/
|
||||||
@TableName("wms_iostorinvdtl")
|
@TableName("wms_iostorinvdtl")
|
||||||
@KeySequence("wms_iostorinvdtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
@KeySequence("wms_iostorinvdtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@Builder
|
||||||
@Builder
|
@NoArgsConstructor
|
||||||
@NoArgsConstructor
|
@AllArgsConstructor
|
||||||
@AllArgsConstructor
|
public class IostorinvDtlDO {
|
||||||
public class IostorinvDtlDO extends BaseDO {
|
|
||||||
|
/**
|
||||||
/**
|
* 出入单明细标识
|
||||||
* 出入单明细标识
|
*/
|
||||||
*/
|
@TableId
|
||||||
@TableId(type = IdType.INPUT)
|
private Long iostorinvdtlId;
|
||||||
private String iostorinvdtlId;
|
/**
|
||||||
/**
|
* 出入单标识
|
||||||
* 出入单标识
|
*/
|
||||||
*/
|
private Long iostorinvId;
|
||||||
private String iostorinvId;
|
/**
|
||||||
/**
|
* 明细序号
|
||||||
* 明细序号
|
*/
|
||||||
*/
|
private Integer seqNo;
|
||||||
private Integer seqNo;
|
/**
|
||||||
/**
|
* 批次
|
||||||
* 批次
|
*/
|
||||||
*/
|
private String pcsn;
|
||||||
private String pcsn;
|
/**
|
||||||
/**
|
* 单据明细状态
|
||||||
* 单据明细状态
|
*/
|
||||||
*/
|
private String billStatus;
|
||||||
private String billStatus;
|
/**
|
||||||
/**
|
* 数量计量单位标识
|
||||||
* 数量计量单位标识
|
*/
|
||||||
*/
|
private String qtyUnitId;
|
||||||
private String qtyUnitId;
|
|
||||||
/**
|
/**
|
||||||
* 数量计量单位名称
|
* 计划数量
|
||||||
*/
|
*/
|
||||||
private String qtyUnitName;
|
private BigDecimal planQty;
|
||||||
/**
|
/**
|
||||||
* 计划数量
|
* 实际数量
|
||||||
*/
|
*/
|
||||||
private BigDecimal planQty;
|
private BigDecimal realQty;
|
||||||
/**
|
/**
|
||||||
* 实际数量
|
* 来源单据明细标识
|
||||||
*/
|
*/
|
||||||
private BigDecimal realQty;
|
private String sourceBilldtlId;
|
||||||
/**
|
/**
|
||||||
* 来源单据明细标识
|
* 来源单据类型
|
||||||
*/
|
*/
|
||||||
private String sourceBilldtlId;
|
private String sourceBillType;
|
||||||
/**
|
/**
|
||||||
* 来源单据类型
|
* 来源单编号
|
||||||
*/
|
*/
|
||||||
private String sourceBillType;
|
private String sourceBillCode;
|
||||||
/**
|
/**
|
||||||
* 来源单编号
|
* 来源单表名
|
||||||
*/
|
*/
|
||||||
private String sourceBillCode;
|
private String sourceBillTable;
|
||||||
/**
|
/**
|
||||||
* 来源单表名
|
* 备注
|
||||||
*/
|
*/
|
||||||
private String sourceBillTable;
|
private String remark;
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 已分配数量
|
||||||
*/
|
*/
|
||||||
private String remark;
|
private BigDecimal assignQty;
|
||||||
/**
|
/**
|
||||||
* 已分配数量
|
* 未分配数量
|
||||||
*/
|
*/
|
||||||
private BigDecimal assignQty;
|
private BigDecimal unassignQty;
|
||||||
/**
|
/**
|
||||||
* 未分配数量
|
* 物料编号
|
||||||
*/
|
*/
|
||||||
private BigDecimal unassignQty;
|
private String materialCode;
|
||||||
/**
|
/**
|
||||||
* 物料编号
|
* 来源单指定上料口
|
||||||
*/
|
*/
|
||||||
private String materialCode;
|
private String sourceLoadPort;
|
||||||
/**
|
/**
|
||||||
* 来源单指定上料口
|
* 单据回传策略配置类名
|
||||||
*/
|
*/
|
||||||
private String sourceLoadPort;
|
private String callbackStrategy;
|
||||||
/**
|
/**
|
||||||
* 单据回传策略配置类名
|
* 物料标识
|
||||||
*/
|
*/
|
||||||
private String callbackStrategy;
|
private String materialId;
|
||||||
/**
|
|
||||||
* 物料标识
|
|
||||||
*/
|
}
|
||||||
private String materialId;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -54,7 +54,6 @@ public interface IostorinvDtlMapper extends BaseMapperX<IostorinvDtlDO> {
|
|||||||
.eqIfPresent(IostorinvDtlDO::getPcsn, reqVO.getPcsn())
|
.eqIfPresent(IostorinvDtlDO::getPcsn, reqVO.getPcsn())
|
||||||
.eqIfPresent(IostorinvDtlDO::getBillStatus, reqVO.getBillStatus())
|
.eqIfPresent(IostorinvDtlDO::getBillStatus, reqVO.getBillStatus())
|
||||||
.eqIfPresent(IostorinvDtlDO::getQtyUnitId, reqVO.getQtyUnitId())
|
.eqIfPresent(IostorinvDtlDO::getQtyUnitId, reqVO.getQtyUnitId())
|
||||||
.likeIfPresent(IostorinvDtlDO::getQtyUnitName, reqVO.getQtyUnitName())
|
|
||||||
.eqIfPresent(IostorinvDtlDO::getPlanQty, reqVO.getPlanQty())
|
.eqIfPresent(IostorinvDtlDO::getPlanQty, reqVO.getPlanQty())
|
||||||
.eqIfPresent(IostorinvDtlDO::getRealQty, reqVO.getRealQty())
|
.eqIfPresent(IostorinvDtlDO::getRealQty, reqVO.getRealQty())
|
||||||
.eqIfPresent(IostorinvDtlDO::getSourceBilldtlId, reqVO.getSourceBilldtlId())
|
.eqIfPresent(IostorinvDtlDO::getSourceBilldtlId, reqVO.getSourceBilldtlId())
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public interface IostorInvService {
|
|||||||
* @param reqVO 出库单创建信息
|
* @param reqVO 出库单创建信息
|
||||||
* @return 出库单编号
|
* @return 出库单编号
|
||||||
*/
|
*/
|
||||||
String createOutbound(@Valid IostorInvCreateReqVO reqVO);
|
Long createOutbound(@Valid IostorInvCreateReqVO reqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得指定仓库的可用库存分页。
|
* 获得指定仓库的可用库存分页。
|
||||||
@@ -44,7 +44,7 @@ public interface IostorInvService {
|
|||||||
* @param createReqVO 创建信息
|
* @param createReqVO 创建信息
|
||||||
* @return 编号
|
* @return 编号
|
||||||
*/
|
*/
|
||||||
String createIostorInv(@Valid IostorInvSaveReqVO createReqVO);
|
Long createIostorInv(@Valid IostorInvSaveReqVO createReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新出入库单主表
|
* 更新出入库单主表
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public class IostorInvServiceImpl implements IostorInvService {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public String createOutbound(IostorInvCreateReqVO reqVO) {
|
public Long createOutbound(IostorInvCreateReqVO reqVO) {
|
||||||
Map<Long, AvailableInventoryRespVO> inventorySnapshot = validateAndLockInventory(reqVO);
|
Map<Long, AvailableInventoryRespVO> inventorySnapshot = validateAndLockInventory(reqVO);
|
||||||
|
|
||||||
String ruleCode = "IO_CODE";
|
String ruleCode = "IO_CODE";
|
||||||
@@ -77,13 +77,12 @@ public class IostorInvServiceImpl implements IostorInvService {
|
|||||||
.map(IostorInvCreateReqVO.Detail::getPlanQty)
|
.map(IostorInvCreateReqVO.Detail::getPlanQty)
|
||||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
IostorInvDO iostorInv = new IostorInvDO();
|
IostorInvDO iostorInv = new IostorInvDO();
|
||||||
iostorInv.setIostorinvId(IdUtil.fastSimpleUUID());
|
|
||||||
iostorInv.setBillCode(codeResult.getData());
|
iostorInv.setBillCode(codeResult.getData());
|
||||||
iostorInv.setIoType("OUT");
|
iostorInv.setIoType("1");
|
||||||
iostorInv.setBillType(reqVO.getBillType());
|
iostorInv.setBillType(reqVO.getBillType());
|
||||||
iostorInv.setBizDate(reqVO.getBizDate());
|
iostorInv.setBizDate(reqVO.getBizDate());
|
||||||
iostorInv.setStorId(reqVO.getStorId());
|
iostorInv.setStorId(reqVO.getStorId());
|
||||||
iostorInv.setBillStatus("生成");
|
iostorInv.setBillStatus("10");
|
||||||
iostorInv.setRemark(reqVO.getRemark());
|
iostorInv.setRemark(reqVO.getRemark());
|
||||||
iostorInv.setDetailCount(reqVO.getDetails().size());
|
iostorInv.setDetailCount(reqVO.getDetails().size());
|
||||||
iostorInv.setTotalWeight(totalWeight);
|
iostorInv.setTotalWeight(totalWeight);
|
||||||
@@ -92,7 +91,6 @@ public class IostorInvServiceImpl implements IostorInvService {
|
|||||||
for (int index = 0; index < reqVO.getDetails().size(); index++) {
|
for (int index = 0; index < reqVO.getDetails().size(); index++) {
|
||||||
IostorInvCreateReqVO.Detail detail = reqVO.getDetails().get(index);
|
IostorInvCreateReqVO.Detail detail = reqVO.getDetails().get(index);
|
||||||
IostorinvDtlDO detailDO = new IostorinvDtlDO();
|
IostorinvDtlDO detailDO = new IostorinvDtlDO();
|
||||||
detailDO.setIostorinvdtlId(IdUtil.fastSimpleUUID());
|
|
||||||
detailDO.setIostorinvId(iostorInv.getIostorinvId());
|
detailDO.setIostorinvId(iostorInv.getIostorinvId());
|
||||||
detailDO.setSeqNo(index + 1);
|
detailDO.setSeqNo(index + 1);
|
||||||
AvailableInventoryRespVO inventory = inventorySnapshot.get(detail.getGroupId());
|
AvailableInventoryRespVO inventory = inventorySnapshot.get(detail.getGroupId());
|
||||||
@@ -102,8 +100,8 @@ public class IostorInvServiceImpl implements IostorInvService {
|
|||||||
detailDO.setPlanQty(detail.getPlanQty());
|
detailDO.setPlanQty(detail.getPlanQty());
|
||||||
detailDO.setUnassignQty(detail.getPlanQty());
|
detailDO.setUnassignQty(detail.getPlanQty());
|
||||||
detailDO.setAssignQty(BigDecimal.ZERO);
|
detailDO.setAssignQty(BigDecimal.ZERO);
|
||||||
|
detailDO.setBillStatus("10");
|
||||||
detailDO.setQtyUnitId(inventory == null ? detail.getQtyUnitId() : inventory.getQtyUnitId());
|
detailDO.setQtyUnitId(inventory == null ? detail.getQtyUnitId() : inventory.getQtyUnitId());
|
||||||
detailDO.setQtyUnitName(inventory == null ? detail.getQtyUnitName() : inventory.getQtyUnitName());
|
|
||||||
detailDO.setSourceBillCode(inventory == null ? detail.getSourceBillCode() : inventory.getExtCode());
|
detailDO.setSourceBillCode(inventory == null ? detail.getSourceBillCode() : inventory.getExtCode());
|
||||||
detailDO.setSourceBillType(inventory == null ? detail.getSourceBillType() : inventory.getExtType());
|
detailDO.setSourceBillType(inventory == null ? detail.getSourceBillType() : inventory.getExtType());
|
||||||
detailDO.setSourceBilldtlId(inventory == null ? detail.getSourceBilldtlId() : inventory.getExtDtlCode());
|
detailDO.setSourceBilldtlId(inventory == null ? detail.getSourceBilldtlId() : inventory.getExtDtlCode());
|
||||||
@@ -175,7 +173,7 @@ public class IostorInvServiceImpl implements IostorInvService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createIostorInv(IostorInvSaveReqVO createReqVO) {
|
public Long createIostorInv(IostorInvSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
IostorInvDO iostorInv = BeanUtils.toBean(createReqVO, IostorInvDO.class);
|
IostorInvDO iostorInv = BeanUtils.toBean(createReqVO, IostorInvDO.class);
|
||||||
iostorInvMapper.insert(iostorInv);
|
iostorInvMapper.insert(iostorInv);
|
||||||
|
|||||||
@@ -1,62 +1,62 @@
|
|||||||
package cn.code.nl.module.wms.service.iostorinvdtl;
|
package cn.code.nl.module.wms.service.iostorinvdtl;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import jakarta.validation.*;
|
import jakarta.validation.*;
|
||||||
import cn.code.nl.module.wms.controller.admin.iostorinvdtl.vo.*;
|
import cn.code.nl.module.wms.controller.admin.iostorinvdtl.vo.*;
|
||||||
import cn.code.nl.module.wms.dal.dataobject.iostorinvdtl.IostorinvDtlDO;
|
import cn.code.nl.module.wms.dal.dataobject.iostorinvdtl.IostorinvDtlDO;
|
||||||
import cn.code.nl.framework.common.pojo.PageResult;
|
import cn.code.nl.framework.common.pojo.PageResult;
|
||||||
import cn.code.nl.framework.common.pojo.PageParam;
|
import cn.code.nl.framework.common.pojo.PageParam;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 出入库单明细 Service 接口
|
* 出入库单明细 Service 接口
|
||||||
*
|
*
|
||||||
* @author 诺力管理员
|
* @author 诺力管理员
|
||||||
*/
|
*/
|
||||||
public interface IostorinvDtlService {
|
public interface IostorinvDtlService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建出入库单明细
|
* 创建出入库单明细
|
||||||
*
|
*
|
||||||
* @param createReqVO 创建信息
|
* @param createReqVO 创建信息
|
||||||
* @return 编号
|
* @return 编号
|
||||||
*/
|
*/
|
||||||
String createIostorinvDtl(@Valid IostorinvDtlSaveReqVO createReqVO);
|
Long createIostorinvDtl(@Valid IostorinvDtlSaveReqVO createReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新出入库单明细
|
* 更新出入库单明细
|
||||||
*
|
*
|
||||||
* @param updateReqVO 更新信息
|
* @param updateReqVO 更新信息
|
||||||
*/
|
*/
|
||||||
void updateIostorinvDtl(@Valid IostorinvDtlSaveReqVO updateReqVO);
|
void updateIostorinvDtl(@Valid IostorinvDtlSaveReqVO updateReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除出入库单明细
|
* 删除出入库单明细
|
||||||
*
|
*
|
||||||
* @param id 编号
|
* @param id 编号
|
||||||
*/
|
*/
|
||||||
void deleteIostorinvDtl(String id);
|
void deleteIostorinvDtl(String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除出入库单明细
|
* 批量删除出入库单明细
|
||||||
*
|
*
|
||||||
* @param ids 编号
|
* @param ids 编号
|
||||||
*/
|
*/
|
||||||
void deleteIostorinvDtlListByIds(List<String> ids);
|
void deleteIostorinvDtlListByIds(List<String> ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得出入库单明细
|
* 获得出入库单明细
|
||||||
*
|
*
|
||||||
* @param id 编号
|
* @param id 编号
|
||||||
* @return 出入库单明细
|
* @return 出入库单明细
|
||||||
*/
|
*/
|
||||||
IostorinvDtlDO getIostorinvDtl(String id);
|
IostorinvDtlDO getIostorinvDtl(String id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得出入库单明细分页
|
* 获得出入库单明细分页
|
||||||
*
|
*
|
||||||
* @param pageReqVO 分页查询
|
* @param pageReqVO 分页查询
|
||||||
* @return 出入库单明细分页
|
* @return 出入库单明细分页
|
||||||
*/
|
*/
|
||||||
PageResult<IostorinvDtlDO> getIostorinvDtlPage(IostorinvDtlPageReqVO pageReqVO);
|
PageResult<IostorinvDtlDO> getIostorinvDtlPage(IostorinvDtlPageReqVO pageReqVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public class IostorinvDtlServiceImpl implements IostorinvDtlService {
|
|||||||
private IostorinvDtlMapper iostorinvDtlMapper;
|
private IostorinvDtlMapper iostorinvDtlMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String createIostorinvDtl(IostorinvDtlSaveReqVO createReqVO) {
|
public Long createIostorinvDtl(IostorinvDtlSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
IostorinvDtlDO iostorinvDtl = BeanUtils.toBean(createReqVO, IostorinvDtlDO.class);
|
IostorinvDtlDO iostorinvDtl = BeanUtils.toBean(createReqVO, IostorinvDtlDO.class);
|
||||||
iostorinvDtlMapper.insert(iostorinvDtl);
|
iostorinvDtlMapper.insert(iostorinvDtl);
|
||||||
|
|||||||
@@ -65,10 +65,10 @@ mybatis-plus:
|
|||||||
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
|
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
|
||||||
global-config:
|
global-config:
|
||||||
db-config:
|
db-config:
|
||||||
id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
|
# id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
|
||||||
# id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
|
# id-type: AUTO # 自增 ID,适合 MySQL 等直接自增的数据库
|
||||||
# id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
|
# id-type: INPUT # 用户输入 ID,适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
|
||||||
# id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
|
id-type: ASSIGN_ID # 分配 ID,默认使用雪花算法。注意,Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解
|
||||||
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
|
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
|
||||||
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
|
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
|
||||||
banner: false # 关闭控制台的 Banner 打印
|
banner: false # 关闭控制台的 Banner 打印
|
||||||
|
|||||||
@@ -3,6 +3,16 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
|||||||
import type { WmsIostorInvApi } from '#/api/wms/iostorinv';
|
import type { WmsIostorInvApi } from '#/api/wms/iostorinv';
|
||||||
|
|
||||||
import { getRangePickerDefaultProps } from '#/utils';
|
import { getRangePickerDefaultProps } from '#/utils';
|
||||||
|
import { getBsrealStorAttrSimpleList } from '#/api/wms/bsrealstorattr';
|
||||||
|
import {getDictOptions} from "@vben/hooks";
|
||||||
|
import {DICT_TYPE} from "@vben/constants";
|
||||||
|
|
||||||
|
|
||||||
|
// ========== 启用的仓库下拉 ==========
|
||||||
|
async function loadWarehouseList() {
|
||||||
|
const data = await getBsrealStorAttrSimpleList();
|
||||||
|
return data || [];
|
||||||
|
}
|
||||||
|
|
||||||
/** 新增/修改的表单 */
|
/** 新增/修改的表单 */
|
||||||
export function useFormSchema(): VbenFormSchema[] {
|
export function useFormSchema(): VbenFormSchema[] {
|
||||||
@@ -260,7 +270,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Select',
|
component: 'Select',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
options: [],
|
options: getDictOptions(DICT_TYPE.WMS_OUT_BILL_TYPE),
|
||||||
placeholder: '请选择单据类型',
|
placeholder: '请选择单据类型',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -275,11 +285,14 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'storId',
|
fieldName: 'storId',
|
||||||
label: '仓库标识',
|
label: '仓库',
|
||||||
component: 'Input',
|
component: 'ApiSelect',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
|
api: loadWarehouseList,
|
||||||
|
labelField: 'storName',
|
||||||
|
valueField: 'storId',
|
||||||
|
placeholder: '请选择仓库',
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
placeholder: '请输入仓库标识',
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -288,7 +301,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
component: 'Select',
|
component: 'Select',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
options: [],
|
options: getDictOptions(DICT_TYPE.WMS_IO_BILL_STATUS),
|
||||||
placeholder: '请选择单据状态',
|
placeholder: '请选择单据状态',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -303,11 +316,12 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
fieldName: 'isUpload',
|
fieldName: 'isUpload',
|
||||||
label: '是否已回传',
|
label: '是否回传',
|
||||||
component: 'Input',
|
component: 'Select',
|
||||||
componentProps: {
|
componentProps: {
|
||||||
allowClear: true,
|
allowClear: true,
|
||||||
placeholder: '请输入是否已回传',
|
options: getDictOptions(DICT_TYPE.COMMON_TRUE_FALSE, 'boolean'),
|
||||||
|
placeholder: '请选择是否回传',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -331,11 +345,11 @@ export function useGridColumns(): VxeTableGridOptions<WmsIostorInvApi.IostorInv>
|
|||||||
field: 'bizDate',
|
field: 'bizDate',
|
||||||
title: '业务日期',
|
title: '业务日期',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
formatter: 'formatDateTime',
|
formatter: 'formatDate',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'storId',
|
field: 'storName',
|
||||||
title: '仓库标识',
|
title: '仓库',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -372,6 +386,10 @@ export function useGridColumns(): VxeTableGridOptions<WmsIostorInvApi.IostorInv>
|
|||||||
field: 'billStatus',
|
field: 'billStatus',
|
||||||
title: '单据状态',
|
title: '单据状态',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
|
cellRender: {
|
||||||
|
name: 'CellDict',
|
||||||
|
props: { type: DICT_TYPE.WMS_IO_BILL_STATUS },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'remark',
|
field: 'remark',
|
||||||
@@ -382,6 +400,10 @@ export function useGridColumns(): VxeTableGridOptions<WmsIostorInvApi.IostorInv>
|
|||||||
field: 'createMode',
|
field: 'createMode',
|
||||||
title: '生成方式',
|
title: '生成方式',
|
||||||
minWidth: 120,
|
minWidth: 120,
|
||||||
|
cellRender: {
|
||||||
|
name: 'CellDict',
|
||||||
|
props: { type: DICT_TYPE.WMS_CREATE_TYPE },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: 'createTime',
|
field: 'createTime',
|
||||||
@@ -444,4 +466,3 @@ export function useGridColumns(): VxeTableGridOptions<WmsIostorInvApi.IostorInv>
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -287,6 +287,9 @@ const WMS_DICT = {
|
|||||||
WMS_GROUP_PLATE_STATUS: 'wms_group_plate_status', // 组盘记录
|
WMS_GROUP_PLATE_STATUS: 'wms_group_plate_status', // 组盘记录
|
||||||
WMS_VEHICLE_TYPE: 'wms_vehicle_type', // 载具类型
|
WMS_VEHICLE_TYPE: 'wms_vehicle_type', // 载具类型
|
||||||
WMS_OVER_STRUCT_TYPE: 'wms_over_struct_type', // 是否超限
|
WMS_OVER_STRUCT_TYPE: 'wms_over_struct_type', // 是否超限
|
||||||
|
WMS_OUT_BILL_TYPE: 'wms_out_bill_type', // 出库单据类型
|
||||||
|
WMS_IO_BILL_STATUS: 'wms_io_bill_status', // 出入库单据状态
|
||||||
|
WMS_CREATE_TYPE: 'wms_create_type', // 生成方式
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
/** ========== TASK - 任务管理模块 ========== */
|
/** ========== TASK - 任务管理模块 ========== */
|
||||||
|
|||||||
Reference in New Issue
Block a user