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