feat(biz): 更新成品入库出库日志功能并新增原材料入库出库日志模块
This commit is contained in:
parent
bd434cf25e
commit
1884ead27a
@ -0,0 +1,94 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog;
|
||||||
|
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.CommonResult;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageParam;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.excel.core.util.ExcelUtils;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogPageReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogRespVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogSaveReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog.RawStorageLogDO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.service.rawstoragelog.RawStorageLogService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static com.ningxia.yunxi.chemmes.framework.common.pojo.CommonResult.success;
|
||||||
|
import static com.ningxia.yunxi.chemmes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||||
|
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 入/出库日志")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/twm/raw-storage-log")
|
||||||
|
@Validated
|
||||||
|
public class RawStorageLogController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RawStorageLogService rawStorageLogService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建入/出库日志")
|
||||||
|
@PreAuthorize("@ss.hasPermission('twm:raw-storage-log:create')")
|
||||||
|
public CommonResult<Integer> createRawStorageLog(@Valid @RequestBody RawStorageLogSaveReqVO createReqVO) {
|
||||||
|
return success(rawStorageLogService.createRawStorageLog(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新入/出库日志")
|
||||||
|
@PreAuthorize("@ss.hasPermission('twm:raw-storage-log:update')")
|
||||||
|
public CommonResult<Boolean> updateRawStorageLog(@Valid @RequestBody RawStorageLogSaveReqVO updateReqVO) {
|
||||||
|
rawStorageLogService.updateRawStorageLog(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除入/出库日志")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('twm:raw-storage-log:delete')")
|
||||||
|
public CommonResult<Boolean> deleteRawStorageLog(@RequestParam("id") Integer id) {
|
||||||
|
rawStorageLogService.deleteRawStorageLog(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得入/出库日志")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('twm:raw-storage-log:query')")
|
||||||
|
public CommonResult<RawStorageLogRespVO> getRawStorageLog(@RequestParam("id") Integer id) {
|
||||||
|
RawStorageLogDO rawStorageLog = rawStorageLogService.getRawStorageLog(id);
|
||||||
|
return success(BeanUtils.toBean(rawStorageLog, RawStorageLogRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得入/出库日志分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('twm:raw-storage-log:query')")
|
||||||
|
public CommonResult<PageResult<RawStorageLogRespVO>> getRawStorageLogPage(@Valid RawStorageLogPageReqVO pageReqVO) {
|
||||||
|
PageResult<RawStorageLogDO> pageResult = rawStorageLogService.getRawStorageLogPage(pageReqVO);
|
||||||
|
return success(BeanUtils.toBean(pageResult, RawStorageLogRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出入/出库日志 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('twm:raw-storage-log:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportRawStorageLogExcel(@Valid RawStorageLogPageReqVO pageReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||||
|
List<RawStorageLogDO> list = rawStorageLogService.getRawStorageLogPage(pageReqVO).getList();
|
||||||
|
// 导出 Excel
|
||||||
|
ExcelUtils.write(response, "入/出库日志.xls", "数据", RawStorageLogRespVO.class,
|
||||||
|
BeanUtils.toBean(list, RawStorageLogRespVO.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,123 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo;
|
||||||
|
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageParam;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.ToString;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.ningxia.yunxi.chemmes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 入/出库日志分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class RawStorageLogPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "入/出库Id", example = "25543")
|
||||||
|
private Integer stockId;
|
||||||
|
|
||||||
|
@Schema(description = "备注", example = "随便")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
@Schema(description = "状态:1为保存;2为提交;3为作废", example = "1")
|
||||||
|
private Boolean status;
|
||||||
|
|
||||||
|
@Schema(description = "仓储id", example = "29167")
|
||||||
|
private Integer storeHouseId;
|
||||||
|
|
||||||
|
@Schema(description = "库区id", example = "22342")
|
||||||
|
private Integer storeAreaId;
|
||||||
|
|
||||||
|
@Schema(description = "仓储编码")
|
||||||
|
private String storeHouseCd;
|
||||||
|
|
||||||
|
@Schema(description = "仓储名称", example = "张三")
|
||||||
|
private String storeHouseName;
|
||||||
|
|
||||||
|
@Schema(description = "库区编码")
|
||||||
|
private String storeAreCd;
|
||||||
|
|
||||||
|
@Schema(description = "库区名称", example = "张三")
|
||||||
|
private String storeAreaName;
|
||||||
|
|
||||||
|
@Schema(description = "物料id", example = "1835")
|
||||||
|
private Integer materialId;
|
||||||
|
|
||||||
|
@Schema(description = "物料名称", example = "芋艿")
|
||||||
|
private String matName;
|
||||||
|
|
||||||
|
@Schema(description = "物料编码")
|
||||||
|
private String matCode;
|
||||||
|
|
||||||
|
@Schema(description = "规格型号")
|
||||||
|
private String spec;
|
||||||
|
|
||||||
|
@Schema(description = "单位")
|
||||||
|
private String unit;
|
||||||
|
|
||||||
|
@Schema(description = "批次号")
|
||||||
|
private String lotNo;
|
||||||
|
|
||||||
|
@Schema(description = "操作数量")
|
||||||
|
private BigDecimal operatorQty;
|
||||||
|
|
||||||
|
@Schema(description = "单据类型 1为入库,2为出库", example = "1")
|
||||||
|
private Boolean operatorType;
|
||||||
|
|
||||||
|
@Schema(description = "业务类型 (10 采购入库,11 盘盈入库,12 其它入库 21 生产领料 22 盘亏出库 23采购退料)", example = "1")
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
|
@Schema(description = "盘点数量")
|
||||||
|
private BigDecimal storageAft;
|
||||||
|
|
||||||
|
@Schema(description = "盘点前数量")
|
||||||
|
private BigDecimal storageBef;
|
||||||
|
|
||||||
|
@Schema(description = "入/出库子表Id", example = "21687")
|
||||||
|
private Integer stockItemId;
|
||||||
|
|
||||||
|
@Schema(description = "入出库单号")
|
||||||
|
private String dpstNo;
|
||||||
|
|
||||||
|
@Schema(description = "供应商编码")
|
||||||
|
private String supplierNo;
|
||||||
|
|
||||||
|
@Schema(description = "供应商名称", example = "李四")
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
@Schema(description = "供应商id", example = "31354")
|
||||||
|
private Integer supplierId;
|
||||||
|
|
||||||
|
@Schema(description = "采购数量")
|
||||||
|
private BigDecimal purQty;
|
||||||
|
|
||||||
|
@Schema(description = "业务日期")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDate[] billDate;
|
||||||
|
|
||||||
|
@Schema(description = "操作人id", example = "16781")
|
||||||
|
private Integer operatorId;
|
||||||
|
|
||||||
|
@Schema(description = "操作人", example = "芋艿")
|
||||||
|
private String operatorName;
|
||||||
|
|
||||||
|
@Schema(description = "关联单号")
|
||||||
|
private String relarionNo;
|
||||||
|
|
||||||
|
@Schema(description = "关联单号id", example = "21271")
|
||||||
|
private Integer relarionId;
|
||||||
|
|
||||||
|
@Schema(description = "关联子单号id", example = "25577")
|
||||||
|
private Integer relarionDetailId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,153 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 入/出库日志 Response VO")
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class RawStorageLogRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30554")
|
||||||
|
@ExcelProperty("主键id")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Schema(description = "入/出库Id", example = "25543")
|
||||||
|
@ExcelProperty("入/出库Id")
|
||||||
|
private Integer stockId;
|
||||||
|
|
||||||
|
@Schema(description = "备注", example = "随便")
|
||||||
|
@ExcelProperty("备注")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
@Schema(description = "状态:1为保存;2为提交;3为作废", example = "1")
|
||||||
|
@ExcelProperty("状态:1为保存;2为提交;3为作废")
|
||||||
|
private Boolean status;
|
||||||
|
|
||||||
|
@Schema(description = "仓储id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29167")
|
||||||
|
@ExcelProperty("仓储id")
|
||||||
|
private Integer storeHouseId;
|
||||||
|
|
||||||
|
@Schema(description = "库区id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22342")
|
||||||
|
@ExcelProperty("库区id")
|
||||||
|
private Integer storeAreaId;
|
||||||
|
|
||||||
|
@Schema(description = "仓储编码")
|
||||||
|
@ExcelProperty("仓储编码")
|
||||||
|
private String storeHouseCd;
|
||||||
|
|
||||||
|
@Schema(description = "仓储名称", example = "张三")
|
||||||
|
@ExcelProperty("仓储名称")
|
||||||
|
private String storeHouseName;
|
||||||
|
|
||||||
|
@Schema(description = "库区编码")
|
||||||
|
@ExcelProperty("库区编码")
|
||||||
|
private String storeAreCd;
|
||||||
|
|
||||||
|
@Schema(description = "库区名称", example = "张三")
|
||||||
|
@ExcelProperty("库区名称")
|
||||||
|
private String storeAreaName;
|
||||||
|
|
||||||
|
@Schema(description = "物料id", example = "1835")
|
||||||
|
@ExcelProperty("物料id")
|
||||||
|
private Integer materialId;
|
||||||
|
|
||||||
|
@Schema(description = "物料名称", example = "芋艿")
|
||||||
|
@ExcelProperty("物料名称")
|
||||||
|
private String matName;
|
||||||
|
|
||||||
|
@Schema(description = "物料编码")
|
||||||
|
@ExcelProperty("物料编码")
|
||||||
|
private String matCode;
|
||||||
|
|
||||||
|
@Schema(description = "规格型号")
|
||||||
|
@ExcelProperty("规格型号")
|
||||||
|
private String spec;
|
||||||
|
|
||||||
|
@Schema(description = "单位")
|
||||||
|
@ExcelProperty("单位")
|
||||||
|
private String unit;
|
||||||
|
|
||||||
|
@Schema(description = "批次号")
|
||||||
|
@ExcelProperty("批次号")
|
||||||
|
private String lotNo;
|
||||||
|
|
||||||
|
@Schema(description = "操作数量")
|
||||||
|
@ExcelProperty("操作数量")
|
||||||
|
private BigDecimal operatorQty;
|
||||||
|
|
||||||
|
@Schema(description = "单据类型 1为入库,2为出库", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@ExcelProperty("单据类型 1为入库,2为出库")
|
||||||
|
private Boolean operatorType;
|
||||||
|
|
||||||
|
@Schema(description = "业务类型 (10 采购入库,11 盘盈入库,12 其它入库 21 生产领料 22 盘亏出库 23采购退料)", example = "1")
|
||||||
|
@ExcelProperty("业务类型 (10 采购入库,11 盘盈入库,12 其它入库 21 生产领料 22 盘亏出库 23采购退料)")
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
|
@Schema(description = "盘点数量")
|
||||||
|
@ExcelProperty("盘点数量")
|
||||||
|
private BigDecimal storageAft;
|
||||||
|
|
||||||
|
@Schema(description = "盘点前数量")
|
||||||
|
@ExcelProperty("盘点前数量")
|
||||||
|
private BigDecimal storageBef;
|
||||||
|
|
||||||
|
@Schema(description = "入/出库子表Id", example = "21687")
|
||||||
|
@ExcelProperty("入/出库子表Id")
|
||||||
|
private Integer stockItemId;
|
||||||
|
|
||||||
|
@Schema(description = "入出库单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("入出库单号")
|
||||||
|
private String dpstNo;
|
||||||
|
|
||||||
|
@Schema(description = "供应商编码")
|
||||||
|
@ExcelProperty("供应商编码")
|
||||||
|
private String supplierNo;
|
||||||
|
|
||||||
|
@Schema(description = "供应商名称", example = "李四")
|
||||||
|
@ExcelProperty("供应商名称")
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
@Schema(description = "供应商id", example = "31354")
|
||||||
|
@ExcelProperty("供应商id")
|
||||||
|
private Integer supplierId;
|
||||||
|
|
||||||
|
@Schema(description = "采购数量")
|
||||||
|
@ExcelProperty("采购数量")
|
||||||
|
private BigDecimal purQty;
|
||||||
|
|
||||||
|
@Schema(description = "业务日期")
|
||||||
|
@ExcelProperty("业务日期")
|
||||||
|
private LocalDate billDate;
|
||||||
|
|
||||||
|
@Schema(description = "操作人id", example = "16781")
|
||||||
|
@ExcelProperty("操作人id")
|
||||||
|
private Integer operatorId;
|
||||||
|
|
||||||
|
@Schema(description = "操作人", example = "芋艿")
|
||||||
|
@ExcelProperty("操作人")
|
||||||
|
private String operatorName;
|
||||||
|
|
||||||
|
@Schema(description = "关联单号")
|
||||||
|
@ExcelProperty("关联单号")
|
||||||
|
private String relarionNo;
|
||||||
|
|
||||||
|
@Schema(description = "关联单号id", example = "21271")
|
||||||
|
@ExcelProperty("关联单号id")
|
||||||
|
private Integer relarionId;
|
||||||
|
|
||||||
|
@Schema(description = "关联子单号id", example = "25577")
|
||||||
|
@ExcelProperty("关联子单号id")
|
||||||
|
private Integer relarionDetailId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,118 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 入/出库日志新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class RawStorageLogSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "30554")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Schema(description = "入/出库Id", example = "25543")
|
||||||
|
private Integer stockId;
|
||||||
|
|
||||||
|
@Schema(description = "备注", example = "随便")
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
@Schema(description = "状态:1为保存;2为提交;3为作废", example = "1")
|
||||||
|
private Boolean status;
|
||||||
|
|
||||||
|
@Schema(description = "仓储id", requiredMode = Schema.RequiredMode.REQUIRED, example = "29167")
|
||||||
|
@NotNull(message = "仓储id不能为空")
|
||||||
|
private Integer storeHouseId;
|
||||||
|
|
||||||
|
@Schema(description = "库区id", requiredMode = Schema.RequiredMode.REQUIRED, example = "22342")
|
||||||
|
@NotNull(message = "库区id不能为空")
|
||||||
|
private Integer storeAreaId;
|
||||||
|
|
||||||
|
@Schema(description = "仓储编码")
|
||||||
|
private String storeHouseCd;
|
||||||
|
|
||||||
|
@Schema(description = "仓储名称", example = "张三")
|
||||||
|
private String storeHouseName;
|
||||||
|
|
||||||
|
@Schema(description = "库区编码")
|
||||||
|
private String storeAreCd;
|
||||||
|
|
||||||
|
@Schema(description = "库区名称", example = "张三")
|
||||||
|
private String storeAreaName;
|
||||||
|
|
||||||
|
@Schema(description = "物料id", example = "1835")
|
||||||
|
private Integer materialId;
|
||||||
|
|
||||||
|
@Schema(description = "物料名称", example = "芋艿")
|
||||||
|
private String matName;
|
||||||
|
|
||||||
|
@Schema(description = "物料编码")
|
||||||
|
private String matCode;
|
||||||
|
|
||||||
|
@Schema(description = "规格型号")
|
||||||
|
private String spec;
|
||||||
|
|
||||||
|
@Schema(description = "单位")
|
||||||
|
private String unit;
|
||||||
|
|
||||||
|
@Schema(description = "批次号")
|
||||||
|
private String lotNo;
|
||||||
|
|
||||||
|
@Schema(description = "操作数量")
|
||||||
|
private BigDecimal operatorQty;
|
||||||
|
|
||||||
|
@Schema(description = "单据类型 1为入库,2为出库", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@NotNull(message = "单据类型 1为入库,2为出库不能为空")
|
||||||
|
private Boolean operatorType;
|
||||||
|
|
||||||
|
@Schema(description = "业务类型 (10 采购入库,11 盘盈入库,12 其它入库 21 生产领料 22 盘亏出库 23采购退料)", example = "1")
|
||||||
|
private Integer businessType;
|
||||||
|
|
||||||
|
@Schema(description = "盘点数量")
|
||||||
|
private BigDecimal storageAft;
|
||||||
|
|
||||||
|
@Schema(description = "盘点前数量")
|
||||||
|
private BigDecimal storageBef;
|
||||||
|
|
||||||
|
@Schema(description = "入/出库子表Id", example = "21687")
|
||||||
|
private Integer stockItemId;
|
||||||
|
|
||||||
|
@Schema(description = "入出库单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@NotEmpty(message = "入出库单号不能为空")
|
||||||
|
private String dpstNo;
|
||||||
|
|
||||||
|
@Schema(description = "供应商编码")
|
||||||
|
private String supplierNo;
|
||||||
|
|
||||||
|
@Schema(description = "供应商名称", example = "李四")
|
||||||
|
private String supplierName;
|
||||||
|
|
||||||
|
@Schema(description = "供应商id", example = "31354")
|
||||||
|
private Integer supplierId;
|
||||||
|
|
||||||
|
@Schema(description = "采购数量")
|
||||||
|
private BigDecimal purQty;
|
||||||
|
|
||||||
|
@Schema(description = "业务日期")
|
||||||
|
private LocalDate billDate;
|
||||||
|
|
||||||
|
@Schema(description = "操作人id", example = "16781")
|
||||||
|
private Integer operatorId;
|
||||||
|
|
||||||
|
@Schema(description = "操作人", example = "芋艿")
|
||||||
|
private String operatorName;
|
||||||
|
|
||||||
|
@Schema(description = "关联单号")
|
||||||
|
private String relarionNo;
|
||||||
|
|
||||||
|
@Schema(description = "关联单号id", example = "21271")
|
||||||
|
private Integer relarionId;
|
||||||
|
|
||||||
|
@Schema(description = "关联子单号id", example = "25577")
|
||||||
|
private Integer relarionDetailId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,14 +1,13 @@
|
|||||||
package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragelog;
|
package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragelog;
|
||||||
|
|
||||||
import lombok.*;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import java.util.*;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import java.time.LocalDateTime;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO;
|
import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 成品入/出库日志 DO
|
* 成品入/出库日志 DO
|
||||||
@ -16,7 +15,7 @@ import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO;
|
|||||||
* @author 管理员
|
* @author 管理员
|
||||||
*/
|
*/
|
||||||
@TableName("twm_pro_storage_log")
|
@TableName("twm_pro_storage_log")
|
||||||
@KeySequence("twm_pro_storage_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
@KeySequence("twm_pro_storage_log_seq")
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
@ -41,7 +40,7 @@ public class ProStorageLogDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 状态:1为保存;2为提交;3为作废
|
* 状态:1为保存;2为提交;3为作废
|
||||||
*/
|
*/
|
||||||
private Boolean status;
|
private String status;
|
||||||
/**
|
/**
|
||||||
* 仓储id
|
* 仓储id
|
||||||
*/
|
*/
|
||||||
@ -97,11 +96,11 @@ public class ProStorageLogDO extends BaseDO {
|
|||||||
/**
|
/**
|
||||||
* 单据类型 1为入库,2为出库
|
* 单据类型 1为入库,2为出库
|
||||||
*/
|
*/
|
||||||
private Boolean inOutType;
|
private String operatorType;
|
||||||
/**
|
/**
|
||||||
* 单据类型 (10 生产入库,11 盘盈入库,12 其它入库 21 成品入库 22 盘亏出库 23生产退库)
|
* 单据类型 (10 成品入库,11 盘盈入库,12 其它入库 21 成品出库 22 盘亏出库 23生产退库)
|
||||||
*/
|
*/
|
||||||
private Integer billType;
|
private String businessType;
|
||||||
/**
|
/**
|
||||||
* 盘点数量
|
* 盘点数量
|
||||||
*/
|
*/
|
||||||
@ -114,5 +113,33 @@ public class ProStorageLogDO extends BaseDO {
|
|||||||
* 入/出库子表Id
|
* 入/出库子表Id
|
||||||
*/
|
*/
|
||||||
private Integer stockItemId;
|
private Integer stockItemId;
|
||||||
|
/**
|
||||||
|
* 业务日期
|
||||||
|
*/
|
||||||
|
private LocalDate billDate;
|
||||||
|
/**
|
||||||
|
* 操作人id
|
||||||
|
*/
|
||||||
|
private String operatorId;
|
||||||
|
/**
|
||||||
|
* 操作人
|
||||||
|
*/
|
||||||
|
private String operatorName;
|
||||||
|
/**
|
||||||
|
* 关联单号
|
||||||
|
*/
|
||||||
|
private String relarionNo;
|
||||||
|
/**
|
||||||
|
* 关联单号id
|
||||||
|
*/
|
||||||
|
private Integer relarionId;
|
||||||
|
/**
|
||||||
|
* 关联子单号id
|
||||||
|
*/
|
||||||
|
private Integer relarionDetailId;
|
||||||
|
/**
|
||||||
|
* 入出库单号
|
||||||
|
*/
|
||||||
|
private String dpstNo;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,161 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入/出库日志 DO
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
@TableName("twm_raw_storage_log")
|
||||||
|
@KeySequence("twm_raw_storage_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class RawStorageLogDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Integer id;
|
||||||
|
/**
|
||||||
|
* 入/出库Id
|
||||||
|
*/
|
||||||
|
private Integer stockId;
|
||||||
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
|
private String description;
|
||||||
|
/**
|
||||||
|
* 状态:1为保存;2为提交;3为作废
|
||||||
|
*/
|
||||||
|
private Boolean status;
|
||||||
|
/**
|
||||||
|
* 仓储id
|
||||||
|
*/
|
||||||
|
private Integer storeHouseId;
|
||||||
|
/**
|
||||||
|
* 库区id
|
||||||
|
*/
|
||||||
|
private Integer storeAreaId;
|
||||||
|
/**
|
||||||
|
* 仓储编码
|
||||||
|
*/
|
||||||
|
private String storeHouseCd;
|
||||||
|
/**
|
||||||
|
* 仓储名称
|
||||||
|
*/
|
||||||
|
private String storeHouseName;
|
||||||
|
/**
|
||||||
|
* 库区编码
|
||||||
|
*/
|
||||||
|
private String storeAreCd;
|
||||||
|
/**
|
||||||
|
* 库区名称
|
||||||
|
*/
|
||||||
|
private String storeAreaName;
|
||||||
|
/**
|
||||||
|
* 物料id
|
||||||
|
*/
|
||||||
|
private Integer materialId;
|
||||||
|
/**
|
||||||
|
* 物料名称
|
||||||
|
*/
|
||||||
|
private String matName;
|
||||||
|
/**
|
||||||
|
* 物料编码
|
||||||
|
*/
|
||||||
|
private String matCode;
|
||||||
|
/**
|
||||||
|
* 规格型号
|
||||||
|
*/
|
||||||
|
private String spec;
|
||||||
|
/**
|
||||||
|
* 单位
|
||||||
|
*/
|
||||||
|
private String unit;
|
||||||
|
/**
|
||||||
|
* 批次号
|
||||||
|
*/
|
||||||
|
private String lotNo;
|
||||||
|
/**
|
||||||
|
* 操作数量
|
||||||
|
*/
|
||||||
|
private BigDecimal operatorQty;
|
||||||
|
/**
|
||||||
|
* 单据类型 1为入库,2为出库
|
||||||
|
*/
|
||||||
|
private String operatorType;
|
||||||
|
/**
|
||||||
|
* 业务类型 (10 采购入库,11 盘盈入库,12 其它入库 21 生产领料 22 盘亏出库 23采购退料)
|
||||||
|
*/
|
||||||
|
private String businessType;
|
||||||
|
/**
|
||||||
|
* 盘点数量
|
||||||
|
*/
|
||||||
|
private BigDecimal storageAft;
|
||||||
|
/**
|
||||||
|
* 盘点前数量
|
||||||
|
*/
|
||||||
|
private BigDecimal storageBef;
|
||||||
|
/**
|
||||||
|
* 入/出库子表Id
|
||||||
|
*/
|
||||||
|
private Integer stockItemId;
|
||||||
|
/**
|
||||||
|
* 入出库单号
|
||||||
|
*/
|
||||||
|
private String dpstNo;
|
||||||
|
/**
|
||||||
|
* 供应商编码
|
||||||
|
*/
|
||||||
|
private String supplierNo;
|
||||||
|
/**
|
||||||
|
* 供应商名称
|
||||||
|
*/
|
||||||
|
private String supplierName;
|
||||||
|
/**
|
||||||
|
* 供应商id
|
||||||
|
*/
|
||||||
|
private Integer supplierId;
|
||||||
|
/**
|
||||||
|
* 采购数量
|
||||||
|
*/
|
||||||
|
private BigDecimal purQty;
|
||||||
|
/**
|
||||||
|
* 业务日期
|
||||||
|
*/
|
||||||
|
private LocalDate billDate;
|
||||||
|
/**
|
||||||
|
* 操作人id
|
||||||
|
*/
|
||||||
|
private Integer operatorId;
|
||||||
|
/**
|
||||||
|
* 操作人
|
||||||
|
*/
|
||||||
|
private String operatorName;
|
||||||
|
/**
|
||||||
|
* 关联单号
|
||||||
|
*/
|
||||||
|
private String relarionNo;
|
||||||
|
/**
|
||||||
|
* 关联单号id
|
||||||
|
*/
|
||||||
|
private Integer relarionId;
|
||||||
|
/**
|
||||||
|
* 关联子单号id
|
||||||
|
*/
|
||||||
|
private Integer relarionDetailId;
|
||||||
|
|
||||||
|
}
|
||||||
@ -34,12 +34,20 @@ public interface ProStorageLogMapper extends BaseMapperX<ProStorageLogDO> {
|
|||||||
.eqIfPresent(ProStorageLogDO::getUnit, reqVO.getUnit())
|
.eqIfPresent(ProStorageLogDO::getUnit, reqVO.getUnit())
|
||||||
.eqIfPresent(ProStorageLogDO::getLotNo, reqVO.getLotNo())
|
.eqIfPresent(ProStorageLogDO::getLotNo, reqVO.getLotNo())
|
||||||
.eqIfPresent(ProStorageLogDO::getOperatorQty, reqVO.getOperatorQty())
|
.eqIfPresent(ProStorageLogDO::getOperatorQty, reqVO.getOperatorQty())
|
||||||
.eqIfPresent(ProStorageLogDO::getInOutType, reqVO.getInOutType())
|
.eqIfPresent(ProStorageLogDO::getOperatorType, reqVO.getInOutType())
|
||||||
.eqIfPresent(ProStorageLogDO::getBillType, reqVO.getBillType())
|
.eqIfPresent(ProStorageLogDO::getBusinessType, reqVO.getBillType())
|
||||||
.eqIfPresent(ProStorageLogDO::getStorageAft, reqVO.getStorageAft())
|
.eqIfPresent(ProStorageLogDO::getStorageAft, reqVO.getStorageAft())
|
||||||
.eqIfPresent(ProStorageLogDO::getStorageBef, reqVO.getStorageBef())
|
.eqIfPresent(ProStorageLogDO::getStorageBef, reqVO.getStorageBef())
|
||||||
.eqIfPresent(ProStorageLogDO::getStockItemId, reqVO.getStockItemId())
|
.eqIfPresent(ProStorageLogDO::getStockItemId, reqVO.getStockItemId())
|
||||||
.orderByDesc(ProStorageLogDO::getId));
|
.orderByDesc(ProStorageLogDO::getId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default String selectMaxPurReceiptNo(String operatorType) {
|
||||||
|
ProStorageLogDO proStorageLog = selectOne(new LambdaQueryWrapperX<ProStorageLogDO>()
|
||||||
|
.eq(ProStorageLogDO::getOperatorType, operatorType)
|
||||||
|
.orderByDesc(ProStorageLogDO::getDpstNo)
|
||||||
|
.last("LIMIT 1"));
|
||||||
|
return proStorageLog != null ? proStorageLog.getDpstNo() : null;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,63 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.dal.mysql.rawstoragelog;
|
||||||
|
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogPageReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog.RawStorageLogDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入/出库日志 Mapper
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface RawStorageLogMapper extends BaseMapperX<RawStorageLogDO> {
|
||||||
|
|
||||||
|
default PageResult<RawStorageLogDO> selectPage(RawStorageLogPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<RawStorageLogDO>()
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStockId, reqVO.getStockId())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getDescription, reqVO.getDescription())
|
||||||
|
.betweenIfPresent(RawStorageLogDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStoreHouseId, reqVO.getStoreHouseId())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStoreAreaId, reqVO.getStoreAreaId())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStoreHouseCd, reqVO.getStoreHouseCd())
|
||||||
|
.likeIfPresent(RawStorageLogDO::getStoreHouseName, reqVO.getStoreHouseName())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStoreAreCd, reqVO.getStoreAreCd())
|
||||||
|
.likeIfPresent(RawStorageLogDO::getStoreAreaName, reqVO.getStoreAreaName())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getMaterialId, reqVO.getMaterialId())
|
||||||
|
.likeIfPresent(RawStorageLogDO::getMatName, reqVO.getMatName())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getMatCode, reqVO.getMatCode())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getSpec, reqVO.getSpec())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getUnit, reqVO.getUnit())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getLotNo, reqVO.getLotNo())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getOperatorQty, reqVO.getOperatorQty())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getOperatorType, reqVO.getOperatorType())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getBusinessType, reqVO.getBusinessType())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStorageAft, reqVO.getStorageAft())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStorageBef, reqVO.getStorageBef())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getStockItemId, reqVO.getStockItemId())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getDpstNo, reqVO.getDpstNo())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getSupplierNo, reqVO.getSupplierNo())
|
||||||
|
.likeIfPresent(RawStorageLogDO::getSupplierName, reqVO.getSupplierName())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getSupplierId, reqVO.getSupplierId())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getPurQty, reqVO.getPurQty())
|
||||||
|
// .betweenIfPresent(RawStorageLogDO::getBillDate, reqVO.getBillDate())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getOperatorId, reqVO.getOperatorId())
|
||||||
|
.likeIfPresent(RawStorageLogDO::getOperatorName, reqVO.getOperatorName())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getRelarionNo, reqVO.getRelarionNo())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getRelarionId, reqVO.getRelarionId())
|
||||||
|
.eqIfPresent(RawStorageLogDO::getRelarionDetailId, reqVO.getRelarionDetailId())
|
||||||
|
.orderByDesc(RawStorageLogDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default String selectMaxNo(String operatorType) {
|
||||||
|
RawStorageLogDO logDO = selectOne(new LambdaQueryWrapperX<RawStorageLogDO>()
|
||||||
|
.eq(RawStorageLogDO::getOperatorType, operatorType)
|
||||||
|
.orderByDesc(RawStorageLogDO::getDpstNo)
|
||||||
|
.last("LIMIT 1"));
|
||||||
|
return logDO != null ? logDO.getDpstNo() : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -52,4 +52,6 @@ public interface ProStorageLogService {
|
|||||||
*/
|
*/
|
||||||
PageResult<ProStorageLogDO> getProStorageLogPage(ProStorageLogPageReqVO pageReqVO);
|
PageResult<ProStorageLogDO> getProStorageLogPage(ProStorageLogPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
void saveProStorageLog(ProStorageLogDO saveReqVO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.ningxia.yunxi.chemmes.module.biz.service.prostoragelog;
|
package com.ningxia.yunxi.chemmes.module.biz.service.prostoragelog;
|
||||||
|
|
||||||
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.util.CodeGenerateUtils;
|
||||||
import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils;
|
import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostoragelog.vo.ProStorageLogPageReqVO;
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostoragelog.vo.ProStorageLogPageReqVO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostoragelog.vo.ProStorageLogSaveReqVO;
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.prostoragelog.vo.ProStorageLogSaveReqVO;
|
||||||
@ -67,4 +68,21 @@ public class ProStorageLogServiceImpl implements ProStorageLogService {
|
|||||||
return proStorageLogMapper.selectPage(pageReqVO);
|
return proStorageLogMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveProStorageLog(ProStorageLogDO saveReqVO) {
|
||||||
|
String orderNumber = generatePurReceiptNo(saveReqVO.getOperatorType());
|
||||||
|
saveReqVO.setDpstNo(orderNumber);
|
||||||
|
proStorageLogMapper.insert(saveReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private String generatePurReceiptNo(String operatorType) {
|
||||||
|
String prefix = "RK";
|
||||||
|
if ("2".equals(operatorType)) {
|
||||||
|
prefix = "CK";
|
||||||
|
}
|
||||||
|
String maxPurReceiptNo = proStorageLogMapper.selectMaxPurReceiptNo(operatorType);
|
||||||
|
return CodeGenerateUtils.generateCodeWithDateSequence(prefix, "yyyyMM", 3, maxPurReceiptNo);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,8 +9,10 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreceiptdetail.vo
|
|||||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreceiptdetail.vo.PurReceiptDetailSaveReqVO;
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.purreceiptdetail.vo.PurReceiptDetailSaveReqVO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreceipt.PurReceiptDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreceipt.PurReceiptDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreceiptdetail.PurReceiptDetailDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.purreceiptdetail.PurReceiptDetailDO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog.RawStorageLogDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreceipt.PurReceiptMapper;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreceipt.PurReceiptMapper;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreceiptdetail.PurReceiptDetailMapper;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.purreceiptdetail.PurReceiptDetailMapper;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.service.rawstoragelog.RawStorageLogService;
|
||||||
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.system.dal.mysql.user.AdminUserMapper;
|
import com.ningxia.yunxi.chemmes.module.system.dal.mysql.user.AdminUserMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -43,6 +45,9 @@ public class PurReceiptServiceImpl implements PurReceiptService {
|
|||||||
@Resource
|
@Resource
|
||||||
private AdminUserMapper adminUserMapper;
|
private AdminUserMapper adminUserMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RawStorageLogService rawStorageLogService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@ -70,7 +75,11 @@ public class PurReceiptServiceImpl implements PurReceiptService {
|
|||||||
// detail.setPurOrdDetailId(item.getPurOrdDetailId());
|
// detail.setPurOrdDetailId(item.getPurOrdDetailId());
|
||||||
detail.setOrdQty(item.getOrdQty());
|
detail.setOrdQty(item.getOrdQty());
|
||||||
detail.setReceiptQty(item.getReceiptQty());
|
detail.setReceiptQty(item.getReceiptQty());
|
||||||
|
detail.setId(null);
|
||||||
purReceiptDetailMapper.insert(detail);
|
purReceiptDetailMapper.insert(detail);
|
||||||
|
if ("2".equals(createReqVO.getPurStatus())) {
|
||||||
|
saveRwaStorageLog(purReceipt, detail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,10 +109,20 @@ public class PurReceiptServiceImpl implements PurReceiptService {
|
|||||||
detail.setOrdQty(item.getOrdQty());
|
detail.setOrdQty(item.getOrdQty());
|
||||||
detail.setReceiptQty(item.getReceiptQty());
|
detail.setReceiptQty(item.getReceiptQty());
|
||||||
purReceiptDetailMapper.insert(detail);
|
purReceiptDetailMapper.insert(detail);
|
||||||
|
if ("2".equals(updateReqVO.getPurStatus())) {
|
||||||
|
saveRwaStorageLog(updateObj, detail);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void saveRwaStorageLog(PurReceiptDO purReceipt, PurReceiptDetailDO item) {
|
||||||
|
RawStorageLogDO rawStorageLog = BeanUtils.toBean(item, RawStorageLogDO.class);
|
||||||
|
rawStorageLog.setRelarionId(purReceipt.getId());
|
||||||
|
rawStorageLog.setRelarionNo(purReceipt.getPurReceiptNo());
|
||||||
|
rawStorageLogService.saveRawStorageLog(rawStorageLog);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void deletePurReceipt(Integer id) {
|
public void deletePurReceipt(Integer id) {
|
||||||
|
|||||||
@ -0,0 +1,57 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.service.rawstoragelog;
|
||||||
|
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogPageReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogSaveReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog.RawStorageLogDO;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入/出库日志 Service 接口
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
public interface RawStorageLogService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建入/出库日志
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Integer createRawStorageLog(@Valid RawStorageLogSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新入/出库日志
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateRawStorageLog(@Valid RawStorageLogSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除入/出库日志
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteRawStorageLog(Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得入/出库日志
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 入/出库日志
|
||||||
|
*/
|
||||||
|
RawStorageLogDO getRawStorageLog(Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得入/出库日志分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 入/出库日志分页
|
||||||
|
*/
|
||||||
|
PageResult<RawStorageLogDO> getRawStorageLogPage(RawStorageLogPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
void saveRawStorageLog(RawStorageLogDO rawStorageLog);
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,88 @@
|
|||||||
|
package com.ningxia.yunxi.chemmes.module.biz.service.rawstoragelog;
|
||||||
|
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.pojo.PageResult;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.util.CodeGenerateUtils;
|
||||||
|
import com.ningxia.yunxi.chemmes.framework.common.util.object.BeanUtils;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogPageReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.rawstoragelog.vo.RawStorageLogSaveReqVO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.rawstoragelog.RawStorageLogDO;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.rawstoragelog.RawStorageLogMapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import static com.ningxia.yunxi.chemmes.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入/出库日志 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 管理员
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class RawStorageLogServiceImpl implements RawStorageLogService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RawStorageLogMapper rawStorageLogMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer createRawStorageLog(RawStorageLogSaveReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
RawStorageLogDO rawStorageLog = BeanUtils.toBean(createReqVO, RawStorageLogDO.class);
|
||||||
|
rawStorageLogMapper.insert(rawStorageLog);
|
||||||
|
// 返回
|
||||||
|
return rawStorageLog.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateRawStorageLog(RawStorageLogSaveReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateRawStorageLogExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
RawStorageLogDO updateObj = BeanUtils.toBean(updateReqVO, RawStorageLogDO.class);
|
||||||
|
rawStorageLogMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteRawStorageLog(Integer id) {
|
||||||
|
// 校验存在
|
||||||
|
validateRawStorageLogExists(id);
|
||||||
|
// 删除
|
||||||
|
rawStorageLogMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateRawStorageLogExists(Integer id) {
|
||||||
|
if (rawStorageLogMapper.selectById(id) == null) {
|
||||||
|
throw exception("入/出库日志不存在`");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RawStorageLogDO getRawStorageLog(Integer id) {
|
||||||
|
return rawStorageLogMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<RawStorageLogDO> getRawStorageLogPage(RawStorageLogPageReqVO pageReqVO) {
|
||||||
|
return rawStorageLogMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void saveRawStorageLog(RawStorageLogDO rawStorageLog) {
|
||||||
|
// 生成订单号
|
||||||
|
rawStorageLog.setDpstNo(generateOrderNo(rawStorageLog.getOperatorType()));
|
||||||
|
rawStorageLogMapper.insert(rawStorageLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String generateOrderNo(String operatorType) {
|
||||||
|
String prefix = "RK";
|
||||||
|
if ("2".equals(operatorType)) {
|
||||||
|
prefix = "CK";
|
||||||
|
}
|
||||||
|
String maxPurReceiptNo = rawStorageLogMapper.selectMaxNo(operatorType);
|
||||||
|
return CodeGenerateUtils.generateCodeWithDateSequence(prefix, "yyyyMM", 3, maxPurReceiptNo);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -7,9 +7,8 @@ import com.ningxia.yunxi.chemmes.module.biz.controller.admin.saledelivery.vo.Sal
|
|||||||
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.saledeliverydetail.vo.SaleDeliveryDetailSaveReqVO;
|
import com.ningxia.yunxi.chemmes.module.biz.controller.admin.saledeliverydetail.vo.SaleDeliveryDetailSaveReqVO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.order.OrderDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.order.OrderDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.orderitem.OrderItemDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.orderitem.OrderItemDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostorage.ProStorageDO;
|
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostorageinventory.ProStorageInventoryDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostorageinventory.ProStorageInventoryDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragemat.ProStorageMatDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.prostoragelog.ProStorageLogDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.saledelivery.SaleDeliveryDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.saledelivery.SaleDeliveryDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.saledeliverydetail.SaleDeliveryDetailDO;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.dataobject.saledeliverydetail.SaleDeliveryDetailDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.order.OrderMapper;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.order.OrderMapper;
|
||||||
@ -20,6 +19,7 @@ import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.prostoragemat.ProStorageMa
|
|||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.saledelivery.SaleDeliveryMapper;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.saledelivery.SaleDeliveryMapper;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.saledeliverydetail.SaleDeliveryDetailMapper;
|
import com.ningxia.yunxi.chemmes.module.biz.dal.mysql.saledeliverydetail.SaleDeliveryDetailMapper;
|
||||||
import com.ningxia.yunxi.chemmes.module.biz.service.prostorage.ProStorageService;
|
import com.ningxia.yunxi.chemmes.module.biz.service.prostorage.ProStorageService;
|
||||||
|
import com.ningxia.yunxi.chemmes.module.biz.service.prostoragelog.ProStorageLogService;
|
||||||
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
import com.ningxia.yunxi.chemmes.module.system.dal.dataobject.user.AdminUserDO;
|
||||||
import com.ningxia.yunxi.chemmes.module.system.dal.mysql.user.AdminUserMapper;
|
import com.ningxia.yunxi.chemmes.module.system.dal.mysql.user.AdminUserMapper;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -71,6 +71,9 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
|||||||
@Resource
|
@Resource
|
||||||
private ProStorageService proStorageService;
|
private ProStorageService proStorageService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private ProStorageLogService proStorageLogService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Integer createSaleDelivery(SaleDeliverySaveReqVO createReqVO) {
|
public Integer createSaleDelivery(SaleDeliverySaveReqVO createReqVO) {
|
||||||
@ -230,66 +233,99 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
|||||||
if (detailList == null || detailList.isEmpty()) {
|
if (detailList == null || detailList.isEmpty()) {
|
||||||
throw exception("出库单明细不能为空");
|
throw exception("出库单明细不能为空");
|
||||||
}
|
}
|
||||||
|
// 存入 proStorageLogService
|
||||||
|
for (SaleDeliveryDetailDO saleDeliveryDetailDO : detailList) {
|
||||||
|
|
||||||
ProStorageDO proStorage = ProStorageDO.builder()
|
ProStorageLogDO proStorageLogDO = ProStorageLogDO.builder()
|
||||||
.billNo(proStorageService.generateSaleDeliveryNo())
|
.stockId(saleDeliveryDetailDO.getId())
|
||||||
.operatorType(2)
|
.description("销售出库")
|
||||||
.businessType(21)
|
.status("2")
|
||||||
// .billType("0")
|
.storeHouseId(saleDeliveryDetailDO.getStoreHouseId())
|
||||||
.status(1)
|
.storeAreaId(saleDeliveryDetailDO.getStoreAreaId())
|
||||||
.billDate(LocalDate.now())
|
.storeHouseCd(saleDeliveryDetailDO.getStoreHouseCd())
|
||||||
.operatorId(saleDelivery.getDeliveryEmpId())
|
.storeHouseName(saleDeliveryDetailDO.getStoreHouseName())
|
||||||
.operatorName(saleDelivery.getDeliveryEmpName())
|
.storeAreCd(saleDeliveryDetailDO.getStoreAreCd())
|
||||||
.relarionNo(saleDelivery.getSaleDeliveryNo())
|
.storeAreaName(saleDeliveryDetailDO.getStoreAreaName())
|
||||||
.relarionId(saleDelivery.getId())
|
|
||||||
.sourceNo(saleDelivery.getSaleOrdNo())
|
|
||||||
.sourceId(saleDelivery.getSaleOrdId())
|
|
||||||
.build();
|
|
||||||
proStorageMapper.insert(proStorage);
|
|
||||||
|
|
||||||
for (SaleDeliveryDetailDO detail : detailList) {
|
|
||||||
ProStorageInventoryDO inventory = proStorageInventoryMapper.selectById(detail.getTwmStorageDetailId());
|
|
||||||
if (inventory == null) {
|
|
||||||
throw exception("库存不存在:仓库[" + detail.getStoreHouseName() + "] 批次[" + detail.getLotNo() + "]");
|
|
||||||
}
|
|
||||||
|
|
||||||
BigDecimal deliveriedQty = detail.getDeliveriedQty() != null ? detail.getDeliveriedQty() : BigDecimal.ZERO;
|
|
||||||
if (inventory.getUseQty().compareTo(deliveriedQty) < 0) {
|
|
||||||
throw exception("库存不足:当前可用数量[" + inventory.getUseQty() + "] < 发货数量[" + deliveriedQty + "]");
|
|
||||||
}
|
|
||||||
|
|
||||||
inventory.setUseQty(inventory.getUseQty().subtract(deliveriedQty));
|
|
||||||
inventory.setYardQty(inventory.getYardQty().subtract(deliveriedQty));
|
|
||||||
inventory.setPackQty(inventory.getPackQty() - (detail.getDeliveriedBagQty()));
|
|
||||||
proStorageInventoryMapper.updateById(inventory);
|
|
||||||
ProStorageMatDO storageMat = ProStorageMatDO.builder()
|
|
||||||
.stockId(proStorage.getId().longValue())
|
|
||||||
.storeHouseId(detail.getStoreHouseId())
|
|
||||||
.storeAreaId(detail.getStoreAreaId())
|
|
||||||
.storeHouseCd(detail.getStoreHouseCd())
|
|
||||||
.storeHouseName(detail.getStoreHouseName())
|
|
||||||
.storeAreCd(detail.getStoreAreCd())
|
|
||||||
.storeAreaName(detail.getStoreAreaName())
|
|
||||||
.materialId(saleDelivery.getMaterialId())
|
.materialId(saleDelivery.getMaterialId())
|
||||||
.matName(saleDelivery.getMaterialName())
|
.matName(saleDelivery.getMaterialName())
|
||||||
.matCode(saleDelivery.getMaterialCode())
|
.matCode(saleDelivery.getMaterialCode())
|
||||||
.spec(saleDelivery.getSpec())
|
.spec(saleDelivery.getSpec())
|
||||||
.unit(saleDelivery.getUnit())
|
.unit(saleDelivery.getUnit())
|
||||||
.lotNo(detail.getLotNo())
|
.lotNo(saleDeliveryDetailDO.getLotNo())
|
||||||
.operatorQty(detail.getDeliveriedQty())
|
.operatorQty(saleDeliveryDetailDO.getDeliveriedQty())
|
||||||
.bagSpec(detail.getBagSpec())
|
.operatorType("2")
|
||||||
.bagQty(detail.getDeliveriedBagQty())
|
.businessType("21")
|
||||||
|
.stockItemId(saleDeliveryDetailDO.getId())
|
||||||
.relarionId(detail.getSaleDeliveryId().longValue())
|
.billDate(LocalDate.now())
|
||||||
.planId(inventory.getPlanId())
|
.operatorId(saleDelivery.getDeliveryEmpId())
|
||||||
.proNo(inventory.getProNo())
|
.operatorName(saleDelivery.getDeliveryEmpName())
|
||||||
.sourceId(inventory.getId())
|
.relarionNo(saleDelivery.getSaleDeliveryNo())
|
||||||
.inventBillNo(inventory.getInventBillNo())
|
.relarionId(saleDelivery.getId())
|
||||||
|
.relarionDetailId(saleDeliveryDetailDO.getId())
|
||||||
.build();
|
.build();
|
||||||
proStorageMatMapper.insert(storageMat);
|
proStorageLogService.saveProStorageLog(proStorageLogDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ProStorageDO proStorage = ProStorageDO.builder()
|
||||||
|
// .billNo(proStorageService.generateSaleDeliveryNo())
|
||||||
|
// .operatorType(2)
|
||||||
|
// .businessType(21)
|
||||||
|
//// .billType("0")
|
||||||
|
// .status(1)
|
||||||
|
// .billDate(LocalDate.now())
|
||||||
|
// .operatorId(saleDelivery.getDeliveryEmpId())
|
||||||
|
// .operatorName(saleDelivery.getDeliveryEmpName())
|
||||||
|
// .relarionNo(saleDelivery.getSaleDeliveryNo())
|
||||||
|
// .relarionId(saleDelivery.getId())
|
||||||
|
// .sourceNo(saleDelivery.getSaleOrdNo())
|
||||||
|
// .sourceId(saleDelivery.getSaleOrdId())
|
||||||
|
// .build();
|
||||||
|
// proStorageMapper.insert(proStorage);
|
||||||
|
//
|
||||||
|
// for (SaleDeliveryDetailDO detail : detailList) {
|
||||||
|
// ProStorageInventoryDO inventory = proStorageInventoryMapper.selectById(detail.getTwmStorageDetailId());
|
||||||
|
// if (inventory == null) {
|
||||||
|
// throw exception("库存不存在:仓库[" + detail.getStoreHouseName() + "] 批次[" + detail.getLotNo() + "]");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// BigDecimal deliveriedQty = detail.getDeliveriedQty() != null ? detail.getDeliveriedQty() : BigDecimal.ZERO;
|
||||||
|
// if (inventory.getUseQty().compareTo(deliveriedQty) < 0) {
|
||||||
|
// throw exception("库存不足:当前可用数量[" + inventory.getUseQty() + "] < 发货数量[" + deliveriedQty + "]");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// inventory.setUseQty(inventory.getUseQty().subtract(deliveriedQty));
|
||||||
|
// inventory.setYardQty(inventory.getYardQty().subtract(deliveriedQty));
|
||||||
|
// inventory.setPackQty(inventory.getPackQty() - (detail.getDeliveriedBagQty()));
|
||||||
|
// proStorageInventoryMapper.updateById(inventory);
|
||||||
|
// ProStorageMatDO storageMat = ProStorageMatDO.builder()
|
||||||
|
// .stockId(proStorage.getId().longValue())
|
||||||
|
// .storeHouseId(detail.getStoreHouseId())
|
||||||
|
// .storeAreaId(detail.getStoreAreaId())
|
||||||
|
// .storeHouseCd(detail.getStoreHouseCd())
|
||||||
|
// .storeHouseName(detail.getStoreHouseName())
|
||||||
|
// .storeAreCd(detail.getStoreAreCd())
|
||||||
|
// .storeAreaName(detail.getStoreAreaName())
|
||||||
|
// .materialId(saleDelivery.getMaterialId())
|
||||||
|
// .matName(saleDelivery.getMaterialName())
|
||||||
|
// .matCode(saleDelivery.getMaterialCode())
|
||||||
|
// .spec(saleDelivery.getSpec())
|
||||||
|
// .unit(saleDelivery.getUnit())
|
||||||
|
// .lotNo(detail.getLotNo())
|
||||||
|
// .operatorQty(detail.getDeliveriedQty())
|
||||||
|
// .bagSpec(detail.getBagSpec())
|
||||||
|
// .bagQty(detail.getDeliveriedBagQty())
|
||||||
|
//
|
||||||
|
// .relarionId(detail.getSaleDeliveryId().longValue())
|
||||||
|
// .planId(inventory.getPlanId())
|
||||||
|
// .proNo(inventory.getProNo())
|
||||||
|
// .sourceId(inventory.getId())
|
||||||
|
// .inventBillNo(inventory.getInventBillNo())
|
||||||
|
// .build();
|
||||||
|
// proStorageMatMapper.insert(storageMat);
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
if (saleDelivery.getSaleOrdId() != null && saleDelivery.getSaleOrdDetailId() != null) {
|
if (saleDelivery.getSaleOrdId() != null && saleDelivery.getSaleOrdDetailId() != null) {
|
||||||
OrderItemDO currentOrderItem = orderItemMapper.selectById(saleDelivery.getSaleOrdDetailId());
|
OrderItemDO currentOrderItem = orderItemMapper.selectById(saleDelivery.getSaleOrdDetailId());
|
||||||
if (currentOrderItem == null) {
|
if (currentOrderItem == null) {
|
||||||
@ -332,7 +368,7 @@ public class SaleDeliveryServiceImpl implements SaleDeliveryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
saleDelivery.setDeliveryStatus("2");
|
saleDelivery.setDeliveryStatus("2");
|
||||||
saleDelivery.setTwmStorageId(proStorage.getId());
|
// saleDelivery.setTwmStorageId(proStorage.getId());
|
||||||
saleDeliveryMapper.updateById(saleDelivery);
|
saleDeliveryMapper.updateById(saleDelivery);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -32,27 +32,13 @@ declare module 'vue' {
|
|||||||
Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
|
Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
|
||||||
Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
|
Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
|
||||||
ElAlert: typeof import('element-plus/es')['ElAlert']
|
ElAlert: typeof import('element-plus/es')['ElAlert']
|
||||||
ElAside: typeof import('element-plus/es')['ElAside']
|
|
||||||
ElAutoResizer: typeof import('element-plus/es')['ElAutoResizer']
|
|
||||||
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
ElAvatar: typeof import('element-plus/es')['ElAvatar']
|
||||||
ElBadge: typeof import('element-plus/es')['ElBadge']
|
|
||||||
ElButton: typeof import('element-plus/es')['ElButton']
|
ElButton: typeof import('element-plus/es')['ElButton']
|
||||||
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
|
|
||||||
ElCard: typeof import('element-plus/es')['ElCard']
|
ElCard: typeof import('element-plus/es')['ElCard']
|
||||||
ElCarousel: typeof import('element-plus/es')['ElCarousel']
|
|
||||||
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
|
|
||||||
ElCascader: typeof import('element-plus/es')['ElCascader']
|
|
||||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||||
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||||
ElCol: typeof import('element-plus/es')['ElCol']
|
ElCol: typeof import('element-plus/es')['ElCol']
|
||||||
ElCollapse: typeof import('element-plus/es')['ElCollapse']
|
|
||||||
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
|
|
||||||
ElCollapseTransition: typeof import('element-plus/es')['ElCollapseTransition']
|
|
||||||
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
|
|
||||||
ElContainer: typeof import('element-plus/es')['ElContainer']
|
|
||||||
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
|
||||||
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
|
|
||||||
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
|
|
||||||
ElDialog: typeof import('element-plus/es')['ElDialog']
|
ElDialog: typeof import('element-plus/es')['ElDialog']
|
||||||
ElDivider: typeof import('element-plus/es')['ElDivider']
|
ElDivider: typeof import('element-plus/es')['ElDivider']
|
||||||
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
ElDrawer: typeof import('element-plus/es')['ElDrawer']
|
||||||
@ -68,41 +54,27 @@ declare module 'vue' {
|
|||||||
ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default']
|
ElementTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/ElementTask.vue')['default']
|
||||||
ElForm: typeof import('element-plus/es')['ElForm']
|
ElForm: typeof import('element-plus/es')['ElForm']
|
||||||
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
ElFormItem: typeof import('element-plus/es')['ElFormItem']
|
||||||
ElHeader: typeof import('element-plus/es')['ElHeader']
|
|
||||||
ElIcon: typeof import('element-plus/es')['ElIcon']
|
ElIcon: typeof import('element-plus/es')['ElIcon']
|
||||||
ElImage: typeof import('element-plus/es')['ElImage']
|
|
||||||
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
|
||||||
ElInput: typeof import('element-plus/es')['ElInput']
|
ElInput: typeof import('element-plus/es')['ElInput']
|
||||||
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
|
||||||
ElLink: typeof import('element-plus/es')['ElLink']
|
|
||||||
ElMain: typeof import('element-plus/es')['ElMain']
|
|
||||||
ElOption: typeof import('element-plus/es')['ElOption']
|
ElOption: typeof import('element-plus/es')['ElOption']
|
||||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||||
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
||||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||||
ElRate: typeof import('element-plus/es')['ElRate']
|
|
||||||
ElRow: typeof import('element-plus/es')['ElRow']
|
ElRow: typeof import('element-plus/es')['ElRow']
|
||||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||||
ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
|
ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
|
||||||
ElSlider: typeof import('element-plus/es')['ElSlider']
|
|
||||||
ElSpace: typeof import('element-plus/es')['ElSpace']
|
|
||||||
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
ElSwitch: typeof import('element-plus/es')['ElSwitch']
|
||||||
ElTable: typeof import('element-plus/es')['ElTable']
|
ElTable: typeof import('element-plus/es')['ElTable']
|
||||||
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
|
||||||
ElTableV2: typeof import('element-plus/es')['ElTableV2']
|
|
||||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||||
ElTag: typeof import('element-plus/es')['ElTag']
|
ElTag: typeof import('element-plus/es')['ElTag']
|
||||||
ElText: typeof import('element-plus/es')['ElText']
|
|
||||||
ElTimeline: typeof import('element-plus/es')['ElTimeline']
|
|
||||||
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
|
|
||||||
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
|
|
||||||
ElTimeSelect: typeof import('element-plus/es')['ElTimeSelect']
|
|
||||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||||
ElTransfer: typeof import('element-plus/es')['ElTransfer']
|
|
||||||
ElTree: typeof import('element-plus/es')['ElTree']
|
ElTree: typeof import('element-plus/es')['ElTree']
|
||||||
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||||
ElUpload: typeof import('element-plus/es')['ElUpload']
|
ElUpload: typeof import('element-plus/es')['ElUpload']
|
||||||
@ -118,11 +90,26 @@ declare module 'vue' {
|
|||||||
InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default']
|
InputPassword: typeof import('./../components/InputPassword/src/InputPassword.vue')['default']
|
||||||
InputWithColor: typeof import('./../components/InputWithColor/index.vue')['default']
|
InputWithColor: typeof import('./../components/InputWithColor/index.vue')['default']
|
||||||
MagicCubeEditor: typeof import('./../components/MagicCubeEditor/index.vue')['default']
|
MagicCubeEditor: typeof import('./../components/MagicCubeEditor/index.vue')['default']
|
||||||
|
Millexecute: typeof import('./../api/biz/millexecute/index.ts')['default']
|
||||||
|
Milloutput: typeof import('./../api/biz/milloutput/index.ts')['default']
|
||||||
Pagination: typeof import('./../components/Pagination/index.vue')['default']
|
Pagination: typeof import('./../components/Pagination/index.vue')['default']
|
||||||
ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default']
|
ProcessDesigner: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default']
|
||||||
ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default']
|
ProcessPalette: typeof import('./../components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default']
|
||||||
ProcessViewer: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default']
|
ProcessViewer: typeof import('./../components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default']
|
||||||
PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default']
|
PropertiesPanel: typeof import('./../components/bpmnProcessDesigner/package/penal/PropertiesPanel.vue')['default']
|
||||||
|
Purapply: typeof import('./../api/biz/purapply/index.ts')['default']
|
||||||
|
PurApplyForm: typeof import('./../views/biz/purapply/PurApplyForm.vue')['default']
|
||||||
|
Purapplyitem: typeof import('./../api/biz/purapplyitem/index.ts')['default']
|
||||||
|
PurApplyItemForm: typeof import('./../views/biz/purapplyitem/PurApplyItemForm.vue')['default']
|
||||||
|
PurOrderSelectDialog: typeof import('./../views/biz/purreceipt/PurOrderSelectDialog.vue')['default']
|
||||||
|
Purreceipt: typeof import('./../api/biz/purreceipt/index.ts')['default']
|
||||||
|
Purreceiptdetail: typeof import('./../api/biz/purreceiptdetail/index.ts')['default']
|
||||||
|
PurReceiptDetailForm: typeof import('./../views/biz/purreceiptdetail/PurReceiptDetailForm.vue')['default']
|
||||||
|
PurReceiptForm: typeof import('./../views/biz/purreceipt/PurReceiptForm.vue')['default']
|
||||||
|
Purreturn: typeof import('./../api/biz/purreturn/index.ts')['default']
|
||||||
|
Purreturndetail: typeof import('./../api/biz/purreturndetail/index.ts')['default']
|
||||||
|
PurReturnDetailForm: typeof import('./../views/biz/purreturndetail/PurReturnDetailForm.vue')['default']
|
||||||
|
PurReturnForm: typeof import('./../views/biz/purreturn/PurReturnForm.vue')['default']
|
||||||
Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default']
|
Qrcode: typeof import('./../components/Qrcode/src/Qrcode.vue')['default']
|
||||||
ReceiveTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue')['default']
|
ReceiveTask: typeof import('./../components/bpmnProcessDesigner/package/penal/task/task-components/ReceiveTask.vue')['default']
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
|
|||||||
@ -7,8 +7,6 @@ export {}
|
|||||||
declare global {
|
declare global {
|
||||||
const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
|
const DICT_TYPE: typeof import('@/utils/dict')['DICT_TYPE']
|
||||||
const EffectScope: typeof import('vue')['EffectScope']
|
const EffectScope: typeof import('vue')['EffectScope']
|
||||||
const ElMessage: typeof import('element-plus/es')['ElMessage']
|
|
||||||
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
|
|
||||||
const computed: typeof import('vue')['computed']
|
const computed: typeof import('vue')['computed']
|
||||||
const createApp: typeof import('vue')['createApp']
|
const createApp: typeof import('vue')['createApp']
|
||||||
const customRef: typeof import('vue')['customRef']
|
const customRef: typeof import('vue')['customRef']
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user