parent
844e30ef25
commit
19f36ef0f3
@ -0,0 +1,102 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehouseout;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.CommonResult;
|
||||||
|
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.warehouseout.WarehouseOutConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.service.warehouseout.WarehouseOutService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 领料单")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xxjj/warehouse-out")
|
||||||
|
@Validated
|
||||||
|
public class WarehouseOutController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseOutService warehouseOutService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建领料单")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:create')")
|
||||||
|
public CommonResult<Long> createWarehouseOut(@Valid @RequestBody WarehouseOutCreateReqVO createReqVO) {
|
||||||
|
return success(warehouseOutService.createWarehouseOut(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新领料单")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:update')")
|
||||||
|
public CommonResult<Boolean> updateWarehouseOut(@Valid @RequestBody WarehouseOutUpdateReqVO updateReqVO) {
|
||||||
|
warehouseOutService.updateWarehouseOut(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除领料单")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:delete')")
|
||||||
|
public CommonResult<Boolean> deleteWarehouseOut(@RequestParam("id") Long id) {
|
||||||
|
warehouseOutService.deleteWarehouseOut(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得领料单")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:query')")
|
||||||
|
public CommonResult<WarehouseOutRespVO> getWarehouseOut(@RequestParam("id") Long id) {
|
||||||
|
WarehouseOutDO warehouseOut = warehouseOutService.getWarehouseOut(id);
|
||||||
|
return success(WarehouseOutConvert.INSTANCE.convert(warehouseOut));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得领料单列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:query')")
|
||||||
|
public CommonResult<List<WarehouseOutRespVO>> getWarehouseOutList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<WarehouseOutDO> list = warehouseOutService.getWarehouseOutList(ids);
|
||||||
|
return success(WarehouseOutConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得领料单分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:query')")
|
||||||
|
public CommonResult<PageResult<WarehouseOutRespVO>> getWarehouseOutPage(@Valid WarehouseOutPageReqVO pageVO) {
|
||||||
|
PageResult<WarehouseOutDO> pageResult = warehouseOutService.getWarehouseOutPage(pageVO);
|
||||||
|
return success(WarehouseOutConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出领料单 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-out:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportWarehouseOutExcel(@Valid WarehouseOutExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<WarehouseOutDO> list = warehouseOutService.getWarehouseOutList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<WarehouseOutExcelVO> datas = WarehouseOutConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "领料单.xls", "数据", WarehouseOutExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 领料单创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WarehouseOutCreateReqVO extends WarehouseOutBaseVO {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
|
||||||
|
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单 Excel VO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class WarehouseOutExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("编号")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ExcelProperty("单据编号")
|
||||||
|
private String documentNo;
|
||||||
|
|
||||||
|
@ExcelProperty("领料仓库id")
|
||||||
|
private Long warehouseOut;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "单据状态", converter = DictConvert.class)
|
||||||
|
@DictFormat("warehouse_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@ExcelProperty("领料原因")
|
||||||
|
private String reason;
|
||||||
|
|
||||||
|
@ExcelProperty("领料数量")
|
||||||
|
private Integer outNum;
|
||||||
|
|
||||||
|
@ExcelProperty("领料时间")
|
||||||
|
private LocalDateTime outTime;
|
||||||
|
|
||||||
|
@ExcelProperty("完成时间")
|
||||||
|
private LocalDateTime finishTime;
|
||||||
|
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.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 WarehouseOutPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "单据编号")
|
||||||
|
private String documentNo;
|
||||||
|
|
||||||
|
@Schema(description = "领料仓库id")
|
||||||
|
private Long warehouseOut;
|
||||||
|
|
||||||
|
@Schema(description = "单据状态", example = "1")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "领料原因", example = "不香")
|
||||||
|
private String reason;
|
||||||
|
|
||||||
|
@Schema(description = "领料数量")
|
||||||
|
private Integer outNum;
|
||||||
|
|
||||||
|
@Schema(description = "领料时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] outTime;
|
||||||
|
|
||||||
|
@Schema(description = "完成时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] finishTime;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 领料单 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WarehouseOutRespVO extends WarehouseOutBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "16399")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 领料单更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WarehouseOutUpdateReqVO extends WarehouseOutBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "16399")
|
||||||
|
@NotNull(message = "编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt;
|
||||||
|
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import javax.servlet.http.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.CommonResult;
|
||||||
|
import static com.yunxi.scm.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.excel.core.util.ExcelUtils;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.operatelog.core.annotations.OperateLog;
|
||||||
|
import static com.yunxi.scm.framework.operatelog.core.enums.OperateTypeEnum.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceiptDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.warehousereceipt.WarehouseReceiptConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.service.warehousereceipt.WarehouseReceiptService;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 入库单")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/xxjj/warehouse-receipt")
|
||||||
|
@Validated
|
||||||
|
public class WarehouseReceiptController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseReceiptService warehouseReceiptService;
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建入库单")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:create')")
|
||||||
|
public CommonResult<Long> createWarehouseReceipt(@Valid @RequestBody WarehouseReceiptCreateReqVO createReqVO) {
|
||||||
|
return success(warehouseReceiptService.createWarehouseReceipt(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@PutMapping("/update")
|
||||||
|
@Operation(summary = "更新入库单")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:update')")
|
||||||
|
public CommonResult<Boolean> updateWarehouseReceipt(@Valid @RequestBody WarehouseReceiptUpdateReqVO updateReqVO) {
|
||||||
|
warehouseReceiptService.updateWarehouseReceipt(updateReqVO);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/delete")
|
||||||
|
@Operation(summary = "删除入库单")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true)
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:delete')")
|
||||||
|
public CommonResult<Boolean> deleteWarehouseReceipt(@RequestParam("id") Long id) {
|
||||||
|
warehouseReceiptService.deleteWarehouseReceipt(id);
|
||||||
|
return success(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/get")
|
||||||
|
@Operation(summary = "获得入库单")
|
||||||
|
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:query')")
|
||||||
|
public CommonResult<WarehouseReceiptRespVO> getWarehouseReceipt(@RequestParam("id") Long id) {
|
||||||
|
WarehouseReceiptDO warehouseReceipt = warehouseReceiptService.getWarehouseReceipt(id);
|
||||||
|
return success(WarehouseReceiptConvert.INSTANCE.convert(warehouseReceipt));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
@Operation(summary = "获得入库单列表")
|
||||||
|
@Parameter(name = "ids", description = "编号列表", required = true, example = "1024,2048")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:query')")
|
||||||
|
public CommonResult<List<WarehouseReceiptRespVO>> getWarehouseReceiptList(@RequestParam("ids") Collection<Long> ids) {
|
||||||
|
List<WarehouseReceiptDO> list = warehouseReceiptService.getWarehouseReceiptList(ids);
|
||||||
|
return success(WarehouseReceiptConvert.INSTANCE.convertList(list));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/page")
|
||||||
|
@Operation(summary = "获得入库单分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:query')")
|
||||||
|
public CommonResult<PageResult<WarehouseReceiptRespVO>> getWarehouseReceiptPage(@Valid WarehouseReceiptPageReqVO pageVO) {
|
||||||
|
PageResult<WarehouseReceiptDO> pageResult = warehouseReceiptService.getWarehouseReceiptPage(pageVO);
|
||||||
|
return success(WarehouseReceiptConvert.INSTANCE.convertPage(pageResult));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/export-excel")
|
||||||
|
@Operation(summary = "导出入库单 Excel")
|
||||||
|
@PreAuthorize("@ss.hasPermission('xxjj:warehouse-receipt:export')")
|
||||||
|
@OperateLog(type = EXPORT)
|
||||||
|
public void exportWarehouseReceiptExcel(@Valid WarehouseReceiptExportReqVO exportReqVO,
|
||||||
|
HttpServletResponse response) throws IOException {
|
||||||
|
List<WarehouseReceiptDO> list = warehouseReceiptService.getWarehouseReceiptList(exportReqVO);
|
||||||
|
// 导出 Excel
|
||||||
|
List<WarehouseReceiptExcelVO> datas = WarehouseReceiptConvert.INSTANCE.convertList02(list);
|
||||||
|
ExcelUtils.write(response, "入库单.xls", "数据", WarehouseReceiptExcelVO.class, datas);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 入库单创建 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WarehouseReceiptCreateReqVO extends WarehouseReceiptBaseVO {
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,49 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.yunxi.scm.framework.excel.core.annotations.DictFormat;
|
||||||
|
import com.yunxi.scm.framework.excel.core.convert.DictConvert;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单 Excel VO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class WarehouseReceiptExcelVO {
|
||||||
|
|
||||||
|
@ExcelProperty("编号")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@ExcelProperty("单据编号")
|
||||||
|
private String documentNo;
|
||||||
|
|
||||||
|
@ExcelProperty("入库仓库id")
|
||||||
|
private Long warehouseReceipt;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "单据状态", converter = DictConvert.class)
|
||||||
|
@DictFormat("warehouse_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@ExcelProperty(value = "单据类型", converter = DictConvert.class)
|
||||||
|
@DictFormat("business_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@ExcelProperty("入库数量")
|
||||||
|
private Integer receiptNum;
|
||||||
|
|
||||||
|
@ExcelProperty("入库时间")
|
||||||
|
private LocalDateTime receiptTime;
|
||||||
|
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.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 WarehouseReceiptPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "单据编号")
|
||||||
|
private String documentNo;
|
||||||
|
|
||||||
|
@Schema(description = "入库仓库id")
|
||||||
|
private Long warehouseReceipt;
|
||||||
|
|
||||||
|
@Schema(description = "单据状态", example = "2")
|
||||||
|
private String status;
|
||||||
|
|
||||||
|
@Schema(description = "单据类型", example = "2")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "入库数量")
|
||||||
|
private Integer receiptNum;
|
||||||
|
|
||||||
|
@Schema(description = "入库时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] receiptTime;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 入库单 Response VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WarehouseReceiptRespVO extends WarehouseReceiptBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24380")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 入库单更新 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WarehouseReceiptUpdateReqVO extends WarehouseReceiptBaseVO {
|
||||||
|
|
||||||
|
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "24380")
|
||||||
|
@NotNull(message = "编号不能为空")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.convert.warehouseout;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单 Convert
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarehouseOutConvert {
|
||||||
|
|
||||||
|
WarehouseOutConvert INSTANCE = Mappers.getMapper(WarehouseOutConvert.class);
|
||||||
|
|
||||||
|
WarehouseOutDO convert(WarehouseOutCreateReqVO bean);
|
||||||
|
|
||||||
|
WarehouseOutDO convert(WarehouseOutUpdateReqVO bean);
|
||||||
|
|
||||||
|
WarehouseOutRespVO convert(WarehouseOutDO bean);
|
||||||
|
|
||||||
|
List<WarehouseOutRespVO> convertList(List<WarehouseOutDO> list);
|
||||||
|
|
||||||
|
PageResult<WarehouseOutRespVO> convertPage(PageResult<WarehouseOutDO> page);
|
||||||
|
|
||||||
|
List<WarehouseOutExcelVO> convertList02(List<WarehouseOutDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.convert.warehousereceipt;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import org.mapstruct.Mapper;
|
||||||
|
import org.mapstruct.factory.Mappers;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceiptDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单 Convert
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarehouseReceiptConvert {
|
||||||
|
|
||||||
|
WarehouseReceiptConvert INSTANCE = Mappers.getMapper(WarehouseReceiptConvert.class);
|
||||||
|
|
||||||
|
WarehouseReceiptDO convert(WarehouseReceiptCreateReqVO bean);
|
||||||
|
|
||||||
|
WarehouseReceiptDO convert(WarehouseReceiptUpdateReqVO bean);
|
||||||
|
|
||||||
|
WarehouseReceiptRespVO convert(WarehouseReceiptDO bean);
|
||||||
|
|
||||||
|
List<WarehouseReceiptRespVO> convertList(List<WarehouseReceiptDO> list);
|
||||||
|
|
||||||
|
PageResult<WarehouseReceiptRespVO> convertPage(PageResult<WarehouseReceiptDO> page);
|
||||||
|
|
||||||
|
List<WarehouseReceiptExcelVO> convertList02(List<WarehouseReceiptDO> list);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,63 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单 DO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@TableName("xxjj_warehouse_out")
|
||||||
|
@KeySequence("xxjj_warehouse_out_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class WarehouseOutDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 单据编号
|
||||||
|
*/
|
||||||
|
private String documentNo;
|
||||||
|
/**
|
||||||
|
* 领料仓库id
|
||||||
|
*/
|
||||||
|
private Long warehouseOut;
|
||||||
|
/**
|
||||||
|
* 单据状态
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO warehouse_type 对应的类}
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 领料原因
|
||||||
|
*/
|
||||||
|
private String reason;
|
||||||
|
/**
|
||||||
|
* 领料数量
|
||||||
|
*/
|
||||||
|
private Integer outNum;
|
||||||
|
/**
|
||||||
|
* 领料时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime outTime;
|
||||||
|
/**
|
||||||
|
* 完成时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime finishTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单 DO
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@TableName("xxjj_warehouse_receipt")
|
||||||
|
@KeySequence("xxjj_warehouse_receipt_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class WarehouseReceiptDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 单据编号
|
||||||
|
*/
|
||||||
|
private String documentNo;
|
||||||
|
/**
|
||||||
|
* 入库仓库id
|
||||||
|
*/
|
||||||
|
private Long warehouseReceipt;
|
||||||
|
/**
|
||||||
|
* 单据状态
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO warehouse_type 对应的类}
|
||||||
|
*/
|
||||||
|
private String status;
|
||||||
|
/**
|
||||||
|
* 单据类型
|
||||||
|
*
|
||||||
|
* 枚举 {@link TODO business_type 对应的类}
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
|
/**
|
||||||
|
* 入库数量
|
||||||
|
*/
|
||||||
|
private Integer receiptNum;
|
||||||
|
/**
|
||||||
|
* 入库时间
|
||||||
|
*/
|
||||||
|
private LocalDateTime receiptTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.mysql.warehouseout;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单 Mapper
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarehouseOutMapper extends BaseMapperX<WarehouseOutDO> {
|
||||||
|
|
||||||
|
default PageResult<WarehouseOutDO> selectPage(WarehouseOutPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<WarehouseOutDO>()
|
||||||
|
.eqIfPresent(WarehouseOutDO::getDocumentNo, reqVO.getDocumentNo())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getWarehouseOut, reqVO.getWarehouseOut())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getReason, reqVO.getReason())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getOutNum, reqVO.getOutNum())
|
||||||
|
.betweenIfPresent(WarehouseOutDO::getOutTime, reqVO.getOutTime())
|
||||||
|
.betweenIfPresent(WarehouseOutDO::getFinishTime, reqVO.getFinishTime())
|
||||||
|
.betweenIfPresent(WarehouseOutDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(WarehouseOutDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<WarehouseOutDO> selectList(WarehouseOutExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<WarehouseOutDO>()
|
||||||
|
.eqIfPresent(WarehouseOutDO::getDocumentNo, reqVO.getDocumentNo())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getWarehouseOut, reqVO.getWarehouseOut())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getReason, reqVO.getReason())
|
||||||
|
.eqIfPresent(WarehouseOutDO::getOutNum, reqVO.getOutNum())
|
||||||
|
.betweenIfPresent(WarehouseOutDO::getOutTime, reqVO.getOutTime())
|
||||||
|
.betweenIfPresent(WarehouseOutDO::getFinishTime, reqVO.getFinishTime())
|
||||||
|
.betweenIfPresent(WarehouseOutDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(WarehouseOutDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.dal.mysql.warehousereceipt;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import com.yunxi.scm.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceiptDO;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单 Mapper
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WarehouseReceiptMapper extends BaseMapperX<WarehouseReceiptDO> {
|
||||||
|
|
||||||
|
default PageResult<WarehouseReceiptDO> selectPage(WarehouseReceiptPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<WarehouseReceiptDO>()
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getDocumentNo, reqVO.getDocumentNo())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getWarehouseReceipt, reqVO.getWarehouseReceipt())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getReceiptNum, reqVO.getReceiptNum())
|
||||||
|
.betweenIfPresent(WarehouseReceiptDO::getReceiptTime, reqVO.getReceiptTime())
|
||||||
|
.betweenIfPresent(WarehouseReceiptDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(WarehouseReceiptDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
default List<WarehouseReceiptDO> selectList(WarehouseReceiptExportReqVO reqVO) {
|
||||||
|
return selectList(new LambdaQueryWrapperX<WarehouseReceiptDO>()
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getDocumentNo, reqVO.getDocumentNo())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getWarehouseReceipt, reqVO.getWarehouseReceipt())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(WarehouseReceiptDO::getReceiptNum, reqVO.getReceiptNum())
|
||||||
|
.betweenIfPresent(WarehouseReceiptDO::getReceiptTime, reqVO.getReceiptTime())
|
||||||
|
.betweenIfPresent(WarehouseReceiptDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(WarehouseReceiptDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.warehouseout;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单 Service 接口
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
public interface WarehouseOutService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建领料单
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createWarehouseOut(@Valid WarehouseOutCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新领料单
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateWarehouseOut(@Valid WarehouseOutUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除领料单
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteWarehouseOut(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得领料单
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 领料单
|
||||||
|
*/
|
||||||
|
WarehouseOutDO getWarehouseOut(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得领料单列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 领料单列表
|
||||||
|
*/
|
||||||
|
List<WarehouseOutDO> getWarehouseOutList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得领料单分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 领料单分页
|
||||||
|
*/
|
||||||
|
PageResult<WarehouseOutDO> getWarehouseOutPage(WarehouseOutPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得领料单列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 领料单列表
|
||||||
|
*/
|
||||||
|
List<WarehouseOutDO> getWarehouseOutList(WarehouseOutExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.warehouseout;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.warehouseout.WarehouseOutConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.warehouseout.WarehouseOutMapper;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 领料单 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class WarehouseOutServiceImpl implements WarehouseOutService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseOutMapper warehouseOutMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createWarehouseOut(WarehouseOutCreateReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
WarehouseOutDO warehouseOut = WarehouseOutConvert.INSTANCE.convert(createReqVO);
|
||||||
|
warehouseOutMapper.insert(warehouseOut);
|
||||||
|
// 返回
|
||||||
|
return warehouseOut.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateWarehouseOut(WarehouseOutUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateWarehouseOutExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
WarehouseOutDO updateObj = WarehouseOutConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
warehouseOutMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteWarehouseOut(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateWarehouseOutExists(id);
|
||||||
|
// 删除
|
||||||
|
warehouseOutMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateWarehouseOutExists(Long id) {
|
||||||
|
if (warehouseOutMapper.selectById(id) == null) {
|
||||||
|
throw exception(WAREHOUSE_OUT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WarehouseOutDO getWarehouseOut(Long id) {
|
||||||
|
return warehouseOutMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WarehouseOutDO> getWarehouseOutList(Collection<Long> ids) {
|
||||||
|
return warehouseOutMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<WarehouseOutDO> getWarehouseOutPage(WarehouseOutPageReqVO pageReqVO) {
|
||||||
|
return warehouseOutMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WarehouseOutDO> getWarehouseOutList(WarehouseOutExportReqVO exportReqVO) {
|
||||||
|
return warehouseOutMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,70 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.warehousereceipt;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceiptDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单 Service 接口
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
public interface WarehouseReceiptService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建入库单
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createWarehouseReceipt(@Valid WarehouseReceiptCreateReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新入库单
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateWarehouseReceipt(@Valid WarehouseReceiptUpdateReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除入库单
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteWarehouseReceipt(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得入库单
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 入库单
|
||||||
|
*/
|
||||||
|
WarehouseReceiptDO getWarehouseReceipt(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得入库单列表
|
||||||
|
*
|
||||||
|
* @param ids 编号
|
||||||
|
* @return 入库单列表
|
||||||
|
*/
|
||||||
|
List<WarehouseReceiptDO> getWarehouseReceiptList(Collection<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得入库单分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 入库单分页
|
||||||
|
*/
|
||||||
|
PageResult<WarehouseReceiptDO> getWarehouseReceiptPage(WarehouseReceiptPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得入库单列表, 用于 Excel 导出
|
||||||
|
*
|
||||||
|
* @param exportReqVO 查询条件
|
||||||
|
* @return 入库单列表
|
||||||
|
*/
|
||||||
|
List<WarehouseReceiptDO> getWarehouseReceiptList(WarehouseReceiptExportReqVO exportReqVO);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.warehousereceipt;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceiptDO;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.convert.warehousereceipt.WarehouseReceiptConvert;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.warehousereceipt.WarehouseReceiptMapper;
|
||||||
|
|
||||||
|
import static com.yunxi.scm.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 入库单 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class WarehouseReceiptServiceImpl implements WarehouseReceiptService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseReceiptMapper warehouseReceiptMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createWarehouseReceipt(WarehouseReceiptCreateReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
WarehouseReceiptDO warehouseReceipt = WarehouseReceiptConvert.INSTANCE.convert(createReqVO);
|
||||||
|
warehouseReceiptMapper.insert(warehouseReceipt);
|
||||||
|
// 返回
|
||||||
|
return warehouseReceipt.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateWarehouseReceipt(WarehouseReceiptUpdateReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
validateWarehouseReceiptExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
WarehouseReceiptDO updateObj = WarehouseReceiptConvert.INSTANCE.convert(updateReqVO);
|
||||||
|
warehouseReceiptMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteWarehouseReceipt(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
validateWarehouseReceiptExists(id);
|
||||||
|
// 删除
|
||||||
|
warehouseReceiptMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validateWarehouseReceiptExists(Long id) {
|
||||||
|
if (warehouseReceiptMapper.selectById(id) == null) {
|
||||||
|
throw exception(WAREHOUSE_RECEIPT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WarehouseReceiptDO getWarehouseReceipt(Long id) {
|
||||||
|
return warehouseReceiptMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WarehouseReceiptDO> getWarehouseReceiptList(Collection<Long> ids) {
|
||||||
|
return warehouseReceiptMapper.selectBatchIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<WarehouseReceiptDO> getWarehouseReceiptPage(WarehouseReceiptPageReqVO pageReqVO) {
|
||||||
|
return warehouseReceiptMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WarehouseReceiptDO> getWarehouseReceiptList(WarehouseReceiptExportReqVO exportReqVO) {
|
||||||
|
return warehouseReceiptMapper.selectList(exportReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,207 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.warehouseout;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehouseout.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehouseout.WarehouseOutDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.warehouseout.WarehouseOutMapper;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link WarehouseOutServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Import(WarehouseOutServiceImpl.class)
|
||||||
|
public class WarehouseOutServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseOutServiceImpl warehouseOutService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseOutMapper warehouseOutMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateWarehouseOut_success() {
|
||||||
|
// 准备参数
|
||||||
|
WarehouseOutCreateReqVO reqVO = randomPojo(WarehouseOutCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long warehouseOutId = warehouseOutService.createWarehouseOut(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(warehouseOutId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
WarehouseOutDO warehouseOut = warehouseOutMapper.selectById(warehouseOutId);
|
||||||
|
assertPojoEquals(reqVO, warehouseOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateWarehouseOut_success() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseOutDO dbWarehouseOut = randomPojo(WarehouseOutDO.class);
|
||||||
|
warehouseOutMapper.insert(dbWarehouseOut);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
WarehouseOutUpdateReqVO reqVO = randomPojo(WarehouseOutUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbWarehouseOut.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
warehouseOutService.updateWarehouseOut(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
WarehouseOutDO warehouseOut = warehouseOutMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, warehouseOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateWarehouseOut_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
WarehouseOutUpdateReqVO reqVO = randomPojo(WarehouseOutUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> warehouseOutService.updateWarehouseOut(reqVO), WAREHOUSE_OUT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteWarehouseOut_success() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseOutDO dbWarehouseOut = randomPojo(WarehouseOutDO.class);
|
||||||
|
warehouseOutMapper.insert(dbWarehouseOut);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbWarehouseOut.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
warehouseOutService.deleteWarehouseOut(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(warehouseOutMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteWarehouseOut_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> warehouseOutService.deleteWarehouseOut(id), WAREHOUSE_OUT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetWarehouseOutPage() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseOutDO dbWarehouseOut = randomPojo(WarehouseOutDO.class, o -> { // 等会查询到
|
||||||
|
o.setDocumentNo(null);
|
||||||
|
o.setWarehouseOut(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setReason(null);
|
||||||
|
o.setOutNum(null);
|
||||||
|
o.setOutTime(null);
|
||||||
|
o.setFinishTime(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
warehouseOutMapper.insert(dbWarehouseOut);
|
||||||
|
// 测试 documentNo 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setDocumentNo(null)));
|
||||||
|
// 测试 warehouseOut 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setWarehouseOut(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setStatus(null)));
|
||||||
|
// 测试 reason 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setReason(null)));
|
||||||
|
// 测试 outNum 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setOutNum(null)));
|
||||||
|
// 测试 outTime 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setOutTime(null)));
|
||||||
|
// 测试 finishTime 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setFinishTime(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
WarehouseOutPageReqVO reqVO = new WarehouseOutPageReqVO();
|
||||||
|
reqVO.setDocumentNo(null);
|
||||||
|
reqVO.setWarehouseOut(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setReason(null);
|
||||||
|
reqVO.setOutNum(null);
|
||||||
|
reqVO.setOutTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setFinishTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<WarehouseOutDO> pageResult = warehouseOutService.getWarehouseOutPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbWarehouseOut, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetWarehouseOutList() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseOutDO dbWarehouseOut = randomPojo(WarehouseOutDO.class, o -> { // 等会查询到
|
||||||
|
o.setDocumentNo(null);
|
||||||
|
o.setWarehouseOut(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setReason(null);
|
||||||
|
o.setOutNum(null);
|
||||||
|
o.setOutTime(null);
|
||||||
|
o.setFinishTime(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
warehouseOutMapper.insert(dbWarehouseOut);
|
||||||
|
// 测试 documentNo 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setDocumentNo(null)));
|
||||||
|
// 测试 warehouseOut 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setWarehouseOut(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setStatus(null)));
|
||||||
|
// 测试 reason 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setReason(null)));
|
||||||
|
// 测试 outNum 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setOutNum(null)));
|
||||||
|
// 测试 outTime 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setOutTime(null)));
|
||||||
|
// 测试 finishTime 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setFinishTime(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
warehouseOutMapper.insert(cloneIgnoreId(dbWarehouseOut, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
WarehouseOutExportReqVO reqVO = new WarehouseOutExportReqVO();
|
||||||
|
reqVO.setDocumentNo(null);
|
||||||
|
reqVO.setWarehouseOut(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setReason(null);
|
||||||
|
reqVO.setOutNum(null);
|
||||||
|
reqVO.setOutTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setFinishTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<WarehouseOutDO> list = warehouseOutService.getWarehouseOutList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbWarehouseOut, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,199 @@
|
|||||||
|
package com.yunxi.scm.module.xxjj.service.warehousereceipt;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
|
import com.yunxi.scm.framework.test.core.ut.BaseDbUnitTest;
|
||||||
|
|
||||||
|
import com.yunxi.scm.module.xxjj.controller.admin.warehousereceipt.vo.*;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.dataobject.warehousereceipt.WarehouseReceiptDO;
|
||||||
|
import com.yunxi.scm.module.xxjj.dal.mysql.warehousereceipt.WarehouseReceiptMapper;
|
||||||
|
import com.yunxi.scm.framework.common.pojo.PageResult;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.hutool.core.util.RandomUtil.*;
|
||||||
|
import static com.yunxi.scm.module.xxjj.enums.ErrorCodeConstants.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.AssertUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.test.core.util.RandomUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.LocalDateTimeUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.object.ObjectUtils.*;
|
||||||
|
import static com.yunxi.scm.framework.common.util.date.DateUtils.*;
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
import static org.mockito.Mockito.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@link WarehouseReceiptServiceImpl} 的单元测试类
|
||||||
|
*
|
||||||
|
* @author 长江云息
|
||||||
|
*/
|
||||||
|
@Import(WarehouseReceiptServiceImpl.class)
|
||||||
|
public class WarehouseReceiptServiceImplTest extends BaseDbUnitTest {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseReceiptServiceImpl warehouseReceiptService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WarehouseReceiptMapper warehouseReceiptMapper;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateWarehouseReceipt_success() {
|
||||||
|
// 准备参数
|
||||||
|
WarehouseReceiptCreateReqVO reqVO = randomPojo(WarehouseReceiptCreateReqVO.class);
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
Long warehouseReceiptId = warehouseReceiptService.createWarehouseReceipt(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertNotNull(warehouseReceiptId);
|
||||||
|
// 校验记录的属性是否正确
|
||||||
|
WarehouseReceiptDO warehouseReceipt = warehouseReceiptMapper.selectById(warehouseReceiptId);
|
||||||
|
assertPojoEquals(reqVO, warehouseReceipt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateWarehouseReceipt_success() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseReceiptDO dbWarehouseReceipt = randomPojo(WarehouseReceiptDO.class);
|
||||||
|
warehouseReceiptMapper.insert(dbWarehouseReceipt);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
WarehouseReceiptUpdateReqVO reqVO = randomPojo(WarehouseReceiptUpdateReqVO.class, o -> {
|
||||||
|
o.setId(dbWarehouseReceipt.getId()); // 设置更新的 ID
|
||||||
|
});
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
warehouseReceiptService.updateWarehouseReceipt(reqVO);
|
||||||
|
// 校验是否更新正确
|
||||||
|
WarehouseReceiptDO warehouseReceipt = warehouseReceiptMapper.selectById(reqVO.getId()); // 获取最新的
|
||||||
|
assertPojoEquals(reqVO, warehouseReceipt);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateWarehouseReceipt_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
WarehouseReceiptUpdateReqVO reqVO = randomPojo(WarehouseReceiptUpdateReqVO.class);
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> warehouseReceiptService.updateWarehouseReceipt(reqVO), WAREHOUSE_RECEIPT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteWarehouseReceipt_success() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseReceiptDO dbWarehouseReceipt = randomPojo(WarehouseReceiptDO.class);
|
||||||
|
warehouseReceiptMapper.insert(dbWarehouseReceipt);// @Sql: 先插入出一条存在的数据
|
||||||
|
// 准备参数
|
||||||
|
Long id = dbWarehouseReceipt.getId();
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
warehouseReceiptService.deleteWarehouseReceipt(id);
|
||||||
|
// 校验数据不存在了
|
||||||
|
assertNull(warehouseReceiptMapper.selectById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteWarehouseReceipt_notExists() {
|
||||||
|
// 准备参数
|
||||||
|
Long id = randomLongId();
|
||||||
|
|
||||||
|
// 调用, 并断言异常
|
||||||
|
assertServiceException(() -> warehouseReceiptService.deleteWarehouseReceipt(id), WAREHOUSE_RECEIPT_NOT_EXISTS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetWarehouseReceiptPage() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseReceiptDO dbWarehouseReceipt = randomPojo(WarehouseReceiptDO.class, o -> { // 等会查询到
|
||||||
|
o.setDocumentNo(null);
|
||||||
|
o.setWarehouseReceipt(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setType(null);
|
||||||
|
o.setReceiptNum(null);
|
||||||
|
o.setReceiptTime(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
warehouseReceiptMapper.insert(dbWarehouseReceipt);
|
||||||
|
// 测试 documentNo 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setDocumentNo(null)));
|
||||||
|
// 测试 warehouseReceipt 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setWarehouseReceipt(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setStatus(null)));
|
||||||
|
// 测试 type 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setType(null)));
|
||||||
|
// 测试 receiptNum 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setReceiptNum(null)));
|
||||||
|
// 测试 receiptTime 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setReceiptTime(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
WarehouseReceiptPageReqVO reqVO = new WarehouseReceiptPageReqVO();
|
||||||
|
reqVO.setDocumentNo(null);
|
||||||
|
reqVO.setWarehouseReceipt(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setType(null);
|
||||||
|
reqVO.setReceiptNum(null);
|
||||||
|
reqVO.setReceiptTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
PageResult<WarehouseReceiptDO> pageResult = warehouseReceiptService.getWarehouseReceiptPage(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, pageResult.getTotal());
|
||||||
|
assertEquals(1, pageResult.getList().size());
|
||||||
|
assertPojoEquals(dbWarehouseReceipt, pageResult.getList().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
|
||||||
|
public void testGetWarehouseReceiptList() {
|
||||||
|
// mock 数据
|
||||||
|
WarehouseReceiptDO dbWarehouseReceipt = randomPojo(WarehouseReceiptDO.class, o -> { // 等会查询到
|
||||||
|
o.setDocumentNo(null);
|
||||||
|
o.setWarehouseReceipt(null);
|
||||||
|
o.setStatus(null);
|
||||||
|
o.setType(null);
|
||||||
|
o.setReceiptNum(null);
|
||||||
|
o.setReceiptTime(null);
|
||||||
|
o.setCreateTime(null);
|
||||||
|
});
|
||||||
|
warehouseReceiptMapper.insert(dbWarehouseReceipt);
|
||||||
|
// 测试 documentNo 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setDocumentNo(null)));
|
||||||
|
// 测试 warehouseReceipt 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setWarehouseReceipt(null)));
|
||||||
|
// 测试 status 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setStatus(null)));
|
||||||
|
// 测试 type 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setType(null)));
|
||||||
|
// 测试 receiptNum 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setReceiptNum(null)));
|
||||||
|
// 测试 receiptTime 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setReceiptTime(null)));
|
||||||
|
// 测试 createTime 不匹配
|
||||||
|
warehouseReceiptMapper.insert(cloneIgnoreId(dbWarehouseReceipt, o -> o.setCreateTime(null)));
|
||||||
|
// 准备参数
|
||||||
|
WarehouseReceiptExportReqVO reqVO = new WarehouseReceiptExportReqVO();
|
||||||
|
reqVO.setDocumentNo(null);
|
||||||
|
reqVO.setWarehouseReceipt(null);
|
||||||
|
reqVO.setStatus(null);
|
||||||
|
reqVO.setType(null);
|
||||||
|
reqVO.setReceiptNum(null);
|
||||||
|
reqVO.setReceiptTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
|
||||||
|
|
||||||
|
// 调用
|
||||||
|
List<WarehouseReceiptDO> list = warehouseReceiptService.getWarehouseReceiptList(reqVO);
|
||||||
|
// 断言
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
assertPojoEquals(dbWarehouseReceipt, list.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建领料单
|
||||||
|
export function createWarehouseOut(data) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-out/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新领料单
|
||||||
|
export function updateWarehouseOut(data) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-out/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除领料单
|
||||||
|
export function deleteWarehouseOut(id) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-out/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得领料单
|
||||||
|
export function getWarehouseOut(id) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-out/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得领料单分页
|
||||||
|
export function getWarehouseOutPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-out/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出领料单 Excel
|
||||||
|
export function exportWarehouseOutExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-out/export-excel',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 创建入库单
|
||||||
|
export function createWarehouseReceipt(data) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-receipt/create',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新入库单
|
||||||
|
export function updateWarehouseReceipt(data) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-receipt/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除入库单
|
||||||
|
export function deleteWarehouseReceipt(id) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-receipt/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得入库单
|
||||||
|
export function getWarehouseReceipt(id) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-receipt/get?id=' + id,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获得入库单分页
|
||||||
|
export function getWarehouseReceiptPage(query) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-receipt/page',
|
||||||
|
method: 'get',
|
||||||
|
params: query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出入库单 Excel
|
||||||
|
export function exportWarehouseReceiptExcel(query) {
|
||||||
|
return request({
|
||||||
|
url: '/xxjj/warehouse-receipt/export-excel',
|
||||||
|
method: 'get',
|
||||||
|
params: query,
|
||||||
|
responseType: 'blob'
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,457 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<el-form
|
||||||
|
:model="queryParams"
|
||||||
|
ref="queryForm"
|
||||||
|
size="small"
|
||||||
|
:inline="true"
|
||||||
|
v-show="showSearch"
|
||||||
|
label-width="68px"
|
||||||
|
>
|
||||||
|
<el-form-item label="单据编号" prop="documentNo">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.documentNo"
|
||||||
|
placeholder="请输入单据编号"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料仓库id" prop="warehouseOut">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.warehouseOut"
|
||||||
|
placeholder="请输入领料仓库id"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单据状态" prop="status">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.status"
|
||||||
|
placeholder="请选择单据状态"
|
||||||
|
clearable
|
||||||
|
size="small"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.label"
|
||||||
|
:value="dict.value"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料原因" prop="reason">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.reason"
|
||||||
|
placeholder="请输入领料原因"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料数量" prop="outNum">
|
||||||
|
<el-input
|
||||||
|
v-model="queryParams.outNum"
|
||||||
|
placeholder="请输入领料数量"
|
||||||
|
clearable
|
||||||
|
@keyup.enter.native="handleQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料时间" prop="outTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="queryParams.outTime"
|
||||||
|
style="width: 240px"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="完成时间" prop="finishTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="queryParams.finishTime"
|
||||||
|
style="width: 240px"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="创建时间" prop="createTime">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="queryParams.createTime"
|
||||||
|
style="width: 240px"
|
||||||
|
value-format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" @click="handleQuery"
|
||||||
|
>搜索</el-button
|
||||||
|
>
|
||||||
|
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 操作工具栏 -->
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
plain
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
@click="handleAdd"
|
||||||
|
v-hasPermi="['xxjj:warehouse-out:create']"
|
||||||
|
>新增</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
plain
|
||||||
|
icon="el-icon-download"
|
||||||
|
size="mini"
|
||||||
|
@click="handleExport"
|
||||||
|
:loading="exportLoading"
|
||||||
|
v-hasPermi="['xxjj:warehouse-out:export']"
|
||||||
|
>导出</el-button
|
||||||
|
>
|
||||||
|
</el-col>
|
||||||
|
<right-toolbar
|
||||||
|
:showSearch.sync="showSearch"
|
||||||
|
@queryTable="getList"
|
||||||
|
></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<el-table v-loading="loading" :data="list">
|
||||||
|
<el-table-column label="编号" align="center" prop="id" />
|
||||||
|
<el-table-column label="单据编号" align="center" prop="documentNo" />
|
||||||
|
<el-table-column label="领料仓库id" align="center" prop="warehouseOut" />
|
||||||
|
<el-table-column label="单据状态" align="center" prop="status">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<dict-tag
|
||||||
|
:type="DICT_TYPE.WAREHOUSE_TYPE"
|
||||||
|
:value="scope.row.status"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="领料原因" align="center" prop="reason" />
|
||||||
|
<el-table-column label="领料数量" align="center" prop="outNum" />
|
||||||
|
<el-table-column
|
||||||
|
label="领料时间"
|
||||||
|
align="center"
|
||||||
|
prop="outTime"
|
||||||
|
width="180"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<span>{{ parseTime(scope.row.outTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="完成时间"
|
||||||
|
align="center"
|
||||||
|
prop="finishTime"
|
||||||
|
width="180"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<span>{{ parseTime(scope.row.finishTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="创建时间"
|
||||||
|
align="center"
|
||||||
|
prop="createTime"
|
||||||
|
width="180"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="操作"
|
||||||
|
align="center"
|
||||||
|
class-name="small-padding fixed-width"
|
||||||
|
>
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-edit"
|
||||||
|
@click="handleUpdate(scope.row)"
|
||||||
|
v-hasPermi="['xxjj:warehouse-out:update']"
|
||||||
|
>修改</el-button
|
||||||
|
>
|
||||||
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="text"
|
||||||
|
icon="el-icon-delete"
|
||||||
|
@click="handleDelete(scope.row)"
|
||||||
|
v-hasPermi="['xxjj:warehouse-out:delete']"
|
||||||
|
>删除</el-button
|
||||||
|
>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination
|
||||||
|
v-show="total > 0"
|
||||||
|
:total="total"
|
||||||
|
:page.sync="queryParams.pageNo"
|
||||||
|
:limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<!-- 对话框(添加 / 修改) -->
|
||||||
|
<el-dialog
|
||||||
|
:title="title"
|
||||||
|
:visible.sync="open"
|
||||||
|
width="500px"
|
||||||
|
v-dialogDrag
|
||||||
|
append-to-body
|
||||||
|
>
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="单据编号" prop="documentNo">
|
||||||
|
<el-input v-model="form.documentNo" placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料仓库id" prop="warehouseOut">
|
||||||
|
<el-input
|
||||||
|
v-model="form.warehouseOut"
|
||||||
|
placeholder="请输入领料仓库id"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单据状态" prop="status">
|
||||||
|
<el-radio-group v-model="form.status">
|
||||||
|
<el-radio
|
||||||
|
v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||||
|
:key="dict.value"
|
||||||
|
:label="dict.value"
|
||||||
|
>{{ dict.label }}</el-radio
|
||||||
|
>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料原因" prop="reason">
|
||||||
|
<el-input v-model="form.reason" placeholder="请输入领料原因" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料数量" prop="outNum">
|
||||||
|
<el-input v-model="form.outNum" placeholder="请输入领料数量" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="领料时间" prop="outTime">
|
||||||
|
<el-date-picker
|
||||||
|
clearable
|
||||||
|
v-model="form.outTime"
|
||||||
|
type="date"
|
||||||
|
value-format="timestamp"
|
||||||
|
placeholder="选择领料时间"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="完成时间" prop="finishTime">
|
||||||
|
<el-date-picker
|
||||||
|
clearable
|
||||||
|
v-model="form.finishTime"
|
||||||
|
type="date"
|
||||||
|
value-format="timestamp"
|
||||||
|
placeholder="选择完成时间"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
createWarehouseOut,
|
||||||
|
updateWarehouseOut,
|
||||||
|
deleteWarehouseOut,
|
||||||
|
getWarehouseOut,
|
||||||
|
getWarehouseOutPage,
|
||||||
|
exportWarehouseOutExcel,
|
||||||
|
} from "@/api/xxjj/warehouseOut";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "WarehouseOut",
|
||||||
|
components: {},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 导出遮罩层
|
||||||
|
exportLoading: false,
|
||||||
|
// 显示搜索条件
|
||||||
|
showSearch: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 领料单列表
|
||||||
|
list: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: "",
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
documentNo: null,
|
||||||
|
warehouseOut: null,
|
||||||
|
status: null,
|
||||||
|
reason: null,
|
||||||
|
outNum: null,
|
||||||
|
outTime: [],
|
||||||
|
finishTime: [],
|
||||||
|
createTime: [],
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
documentNo: [
|
||||||
|
{ required: true, message: "单据编号不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
warehouseOut: [
|
||||||
|
{ required: true, message: "领料仓库id不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
status: [
|
||||||
|
{ required: true, message: "单据状态不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
outNum: [
|
||||||
|
{ required: true, message: "领料数量不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
outTime: [
|
||||||
|
{ required: true, message: "领料时间不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
finishTime: [
|
||||||
|
{ required: true, message: "完成时间不能为空", trigger: "blur" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true;
|
||||||
|
// 执行查询
|
||||||
|
getWarehouseOutPage(this.queryParams).then((response) => {
|
||||||
|
this.list = response.data.list;
|
||||||
|
this.total = response.data.total;
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 取消按钮 */
|
||||||
|
cancel() {
|
||||||
|
this.open = false;
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
/** 表单重置 */
|
||||||
|
reset() {
|
||||||
|
this.form = {
|
||||||
|
id: undefined,
|
||||||
|
documentNo: undefined,
|
||||||
|
warehouseOut: undefined,
|
||||||
|
status: undefined,
|
||||||
|
reason: undefined,
|
||||||
|
outNum: undefined,
|
||||||
|
outTime: undefined,
|
||||||
|
finishTime: undefined,
|
||||||
|
};
|
||||||
|
this.resetForm("form");
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNo = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm("queryForm");
|
||||||
|
this.handleQuery();
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.reset();
|
||||||
|
this.open = true;
|
||||||
|
this.title = "添加领料单";
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleUpdate(row) {
|
||||||
|
this.reset();
|
||||||
|
const id = row.id;
|
||||||
|
getWarehouseOut(id).then((response) => {
|
||||||
|
this.form = response.data;
|
||||||
|
this.open = true;
|
||||||
|
this.title = "修改领料单";
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm() {
|
||||||
|
this.$refs["form"].validate((valid) => {
|
||||||
|
if (!valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 修改的提交
|
||||||
|
if (this.form.id != null) {
|
||||||
|
updateWarehouseOut(this.form).then((response) => {
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.open = false;
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
createWarehouseOut(this.form).then((response) => {
|
||||||
|
this.$modal.msgSuccess("新增成功");
|
||||||
|
this.open = false;
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete(row) {
|
||||||
|
const id = row.id;
|
||||||
|
this.$modal
|
||||||
|
.confirm('是否确认删除领料单编号为"' + id + '"的数据项?')
|
||||||
|
.then(function () {
|
||||||
|
return deleteWarehouseOut(id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.getList();
|
||||||
|
this.$modal.msgSuccess("删除成功");
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport() {
|
||||||
|
// 处理查询参数
|
||||||
|
let params = { ...this.queryParams };
|
||||||
|
params.pageNo = undefined;
|
||||||
|
params.pageSize = undefined;
|
||||||
|
this.$modal
|
||||||
|
.confirm("是否确认导出所有领料单数据项?")
|
||||||
|
.then(() => {
|
||||||
|
this.exportLoading = true;
|
||||||
|
return exportWarehouseOutExcel(params);
|
||||||
|
})
|
||||||
|
.then((response) => {
|
||||||
|
this.$download.excel(response, "领料单.xls");
|
||||||
|
this.exportLoading = false;
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
@ -0,0 +1,284 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
|
||||||
|
<!-- 搜索工作栏 -->
|
||||||
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
|
<el-form-item label="单据编号" prop="documentNo">
|
||||||
|
<el-input v-model="queryParams.documentNo" placeholder="请输入单据编号" clearable @keyup.enter.native="handleQuery"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="入库仓库id" prop="warehouseReceipt">
|
||||||
|
<el-input v-model="queryParams.warehouseReceipt" placeholder="请输入入库仓库id" clearable @keyup.enter.native="handleQuery"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单据状态" prop="status">
|
||||||
|
<el-select v-model="queryParams.status" placeholder="请选择单据状态" clearable size="small">
|
||||||
|
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||||
|
:key="dict.value" :label="dict.label" :value="dict.value"/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单据类型" prop="type">
|
||||||
|
<el-select v-model="queryParams.type" placeholder="请选择单据类型" clearable size="small">
|
||||||
|
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BUSINESS_TYPE)"
|
||||||
|
:key="dict.value" :label="dict.label" :value="dict.value"/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="入库数量" prop="receiptNum">
|
||||||
|
<el-input v-model="queryParams.receiptNum" placeholder="请输入入库数量" clearable @keyup.enter.native="handleQuery"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="入库时间" prop="receiptTime">
|
||||||
|
<el-date-picker v-model="queryParams.receiptTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
|
||||||
|
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="创建时间" prop="createTime">
|
||||||
|
<el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
|
||||||
|
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
||||||
|
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
|
||||||
|
<!-- 操作工具栏 -->
|
||||||
|
<el-row :gutter="10" class="mb8">
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
||||||
|
v-hasPermi="['xxjj:warehouse-receipt:create']">新增</el-button>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
|
||||||
|
v-hasPermi="['xxjj:warehouse-receipt:export']">导出</el-button>
|
||||||
|
</el-col>
|
||||||
|
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
|
<!-- 列表 -->
|
||||||
|
<el-table v-loading="loading" :data="list">
|
||||||
|
<el-table-column label="编号" align="center" prop="id" />
|
||||||
|
<el-table-column label="单据编号" align="center" prop="documentNo" />
|
||||||
|
<el-table-column label="入库仓库id" align="center" prop="warehouseReceipt" />
|
||||||
|
<el-table-column label="单据状态" align="center" prop="status">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.WAREHOUSE_TYPE" :value="scope.row.status" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="单据类型" align="center" prop="type">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.BUSINESS_TYPE" :value="scope.row.type" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="入库数量" align="center" prop="receiptNum" />
|
||||||
|
<el-table-column label="入库时间" align="center" prop="receiptTime" width="180">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<span>{{ parseTime(scope.row.receiptTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
|
<template v-slot="scope">
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||||
|
v-hasPermi="['xxjj:warehouse-receipt:update']">修改</el-button>
|
||||||
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||||
|
v-hasPermi="['xxjj:warehouse-receipt:delete']">删除</el-button>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
||||||
|
@pagination="getList"/>
|
||||||
|
|
||||||
|
<!-- 对话框(添加 / 修改) -->
|
||||||
|
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
|
||||||
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||||||
|
<el-form-item label="单据编号" prop="documentNo">
|
||||||
|
<el-input v-model="form.documentNo" placeholder="请输入单据编号" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="入库仓库id" prop="warehouseReceipt">
|
||||||
|
<el-input v-model="form.warehouseReceipt" placeholder="请输入入库仓库id" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单据状态" prop="status">
|
||||||
|
<el-select v-model="form.status" placeholder="请选择单据状态">
|
||||||
|
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.WAREHOUSE_TYPE)"
|
||||||
|
:key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="单据类型" prop="type">
|
||||||
|
<el-select v-model="form.type" placeholder="请选择单据类型">
|
||||||
|
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BUSINESS_TYPE)"
|
||||||
|
:key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="入库数量" prop="receiptNum">
|
||||||
|
<el-input v-model="form.receiptNum" placeholder="请输入入库数量" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="入库时间" prop="receiptTime">
|
||||||
|
<el-date-picker clearable v-model="form.receiptTime" type="date" value-format="timestamp" placeholder="选择入库时间" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<div slot="footer" class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||||||
|
<el-button @click="cancel">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { createWarehouseReceipt, updateWarehouseReceipt, deleteWarehouseReceipt, getWarehouseReceipt, getWarehouseReceiptPage, exportWarehouseReceiptExcel } from "@/api/xxjj/warehouseReceipt";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "WarehouseReceipt",
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 遮罩层
|
||||||
|
loading: true,
|
||||||
|
// 导出遮罩层
|
||||||
|
exportLoading: false,
|
||||||
|
// 显示搜索条件
|
||||||
|
showSearch: true,
|
||||||
|
// 总条数
|
||||||
|
total: 0,
|
||||||
|
// 入库单列表
|
||||||
|
list: [],
|
||||||
|
// 弹出层标题
|
||||||
|
title: "",
|
||||||
|
// 是否显示弹出层
|
||||||
|
open: false,
|
||||||
|
// 查询参数
|
||||||
|
queryParams: {
|
||||||
|
pageNo: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
documentNo: null,
|
||||||
|
warehouseReceipt: null,
|
||||||
|
status: null,
|
||||||
|
type: null,
|
||||||
|
receiptNum: null,
|
||||||
|
receiptTime: [],
|
||||||
|
createTime: [],
|
||||||
|
},
|
||||||
|
// 表单参数
|
||||||
|
form: {},
|
||||||
|
// 表单校验
|
||||||
|
rules: {
|
||||||
|
documentNo: [{ required: true, message: "单据编号不能为空", trigger: "blur" }],
|
||||||
|
warehouseReceipt: [{ required: true, message: "入库仓库id不能为空", trigger: "blur" }],
|
||||||
|
status: [{ required: true, message: "单据状态不能为空", trigger: "change" }],
|
||||||
|
type: [{ required: true, message: "单据类型不能为空", trigger: "change" }],
|
||||||
|
receiptNum: [{ required: true, message: "入库数量不能为空", trigger: "blur" }],
|
||||||
|
receiptTime: [{ required: true, message: "入库时间不能为空", trigger: "blur" }],
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询列表 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true;
|
||||||
|
// 执行查询
|
||||||
|
getWarehouseReceiptPage(this.queryParams).then(response => {
|
||||||
|
this.list = response.data.list;
|
||||||
|
this.total = response.data.total;
|
||||||
|
this.loading = false;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 取消按钮 */
|
||||||
|
cancel() {
|
||||||
|
this.open = false;
|
||||||
|
this.reset();
|
||||||
|
},
|
||||||
|
/** 表单重置 */
|
||||||
|
reset() {
|
||||||
|
this.form = {
|
||||||
|
id: undefined,
|
||||||
|
documentNo: undefined,
|
||||||
|
warehouseReceipt: undefined,
|
||||||
|
status: undefined,
|
||||||
|
type: undefined,
|
||||||
|
receiptNum: undefined,
|
||||||
|
receiptTime: undefined,
|
||||||
|
};
|
||||||
|
this.resetForm("form");
|
||||||
|
},
|
||||||
|
/** 搜索按钮操作 */
|
||||||
|
handleQuery() {
|
||||||
|
this.queryParams.pageNo = 1;
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
|
/** 重置按钮操作 */
|
||||||
|
resetQuery() {
|
||||||
|
this.resetForm("queryForm");
|
||||||
|
this.handleQuery();
|
||||||
|
},
|
||||||
|
/** 新增按钮操作 */
|
||||||
|
handleAdd() {
|
||||||
|
this.reset();
|
||||||
|
this.open = true;
|
||||||
|
this.title = "添加入库单";
|
||||||
|
},
|
||||||
|
/** 修改按钮操作 */
|
||||||
|
handleUpdate(row) {
|
||||||
|
this.reset();
|
||||||
|
const id = row.id;
|
||||||
|
getWarehouseReceipt(id).then(response => {
|
||||||
|
this.form = response.data;
|
||||||
|
this.open = true;
|
||||||
|
this.title = "修改入库单";
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 提交按钮 */
|
||||||
|
submitForm() {
|
||||||
|
this.$refs["form"].validate(valid => {
|
||||||
|
if (!valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 修改的提交
|
||||||
|
if (this.form.id != null) {
|
||||||
|
updateWarehouseReceipt(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess("修改成功");
|
||||||
|
this.open = false;
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 添加的提交
|
||||||
|
createWarehouseReceipt(this.form).then(response => {
|
||||||
|
this.$modal.msgSuccess("新增成功");
|
||||||
|
this.open = false;
|
||||||
|
this.getList();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
handleDelete(row) {
|
||||||
|
const id = row.id;
|
||||||
|
this.$modal.confirm('是否确认删除入库单编号为"' + id + '"的数据项?').then(function() {
|
||||||
|
return deleteWarehouseReceipt(id);
|
||||||
|
}).then(() => {
|
||||||
|
this.getList();
|
||||||
|
this.$modal.msgSuccess("删除成功");
|
||||||
|
}).catch(() => {});
|
||||||
|
},
|
||||||
|
/** 导出按钮操作 */
|
||||||
|
handleExport() {
|
||||||
|
// 处理查询参数
|
||||||
|
let params = {...this.queryParams};
|
||||||
|
params.pageNo = undefined;
|
||||||
|
params.pageSize = undefined;
|
||||||
|
this.$modal.confirm('是否确认导出所有入库单数据项?').then(() => {
|
||||||
|
this.exportLoading = true;
|
||||||
|
return exportWarehouseReceiptExcel(params);
|
||||||
|
}).then(response => {
|
||||||
|
this.$download.excel(response, '入库单.xls');
|
||||||
|
this.exportLoading = false;
|
||||||
|
}).catch(() => {});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
Loading…
Reference in new issue