From f317b2e8f9b2d916899d2df2425f49c87e4b9c1b Mon Sep 17 00:00:00 2001 From: chenshuichuan <1154693969@qq.com> Date: Fri, 31 May 2024 17:15:31 +0800 Subject: [PATCH] fix task --- .../admin/product/ErpProductController.java | 19 +- .../erp/framework/bean/ProductTypeEnum.java | 5 +- .../module/mes/enums/ErrorCodeConstants.java | 3 + .../admin/saleorder/SaleOrderController.java | 139 ++++++++++++++ .../saleorder/vo/SaleOrderItemsRespVO.java | 68 +++++++ .../saleorder/vo/SaleOrderPageReqVO.java | 48 +++++ .../admin/saleorder/vo/SaleOrderRespVO.java | 62 +++++++ .../saleorder/vo/SaleOrderSaveReqVO.java | 50 +++++ .../admin/task/vo/TaskDetailRespVO.java | 42 +++++ .../admin/task/vo/TaskPageReqVO.java | 4 +- .../controller/admin/task/vo/TaskRespVO.java | 4 +- .../dal/dataobject/saleorder/SaleOrderDO.java | 111 +++++++++++ .../saleorder/SaleOrderItemsDO.java | 82 ++++++++ .../mes/dal/dataobject/task/TaskDetailDO.java | 26 +++ .../saleorder/SaleOrderItemsMapper2.java | 28 +++ .../dal/mysql/saleorder/SaleOrderMapper2.java | 32 ++++ .../service/saleorder/SaleOrderService2.java | 97 ++++++++++ .../saleorder/SaleOrderServiceImpl.java | 175 ++++++++++++++++++ .../mes/service/task/TaskServiceImpl.java | 4 +- .../mapper/saleorder/SaleOrderMapper.xml | 12 ++ 20 files changed, 1002 insertions(+), 9 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/SaleOrderController.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderItemsRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderPageReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderRespVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderItemsDO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderItemsMapper2.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderMapper2.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderService2.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderServiceImpl.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java index 876755eaf4..b1cd3cdb87 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductController.java @@ -24,6 +24,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; @@ -99,7 +101,22 @@ public class ErpProductController { .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()).setMinPrice(product.getMinPrice()))); } - + @GetMapping("/simple-list-order") + @Operation(summary = "获得采购商品精简列表", description = "不包含产品,主要用于前端的下拉选项") + public CommonResult> getOrderSimpleList() { + List list1 = productService.getProductVOListByCategory(ProductTypeEnum.ITEM.getTypeId()); + List list2 = productService.getProductVOListByCategory(ProductTypeEnum.TOOL.getTypeId()); + List list3 = productService.getProductVOListByCategory(ProductTypeEnum.HAOCAI.getTypeId()); + List list = new ArrayList<>(); + list.addAll(list3); + list.addAll(list1); + list.addAll(list2); + return success(convertList(list, product -> new ErpProductRespVO().setId(product.getId()) + .setName(product.getName()).setBarCode(product.getBarCode()) + .setCategoryId(product.getCategoryId()).setCategoryName(product.getCategoryName()) + .setUnitId(product.getUnitId()).setUnitName(product.getUnitName()) + .setPurchasePrice(product.getPurchasePrice()).setSalePrice(product.getSalePrice()).setMinPrice(product.getMinPrice()))); + } @GetMapping("/export-excel") @Operation(summary = "导出产品 Excel") @PreAuthorize("@ss.hasPermission('erp:product:export')") diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/bean/ProductTypeEnum.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/bean/ProductTypeEnum.java index 5817c42602..c18b2fd878 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/bean/ProductTypeEnum.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/framework/bean/ProductTypeEnum.java @@ -12,8 +12,9 @@ import java.util.Arrays; public enum ProductTypeEnum implements IntArrayValuable { ITEM(1, "原料"), - PRODUCT(2, "产品"); - + PRODUCT(2, "产品"), + TOOL(3, "工具"), + HAOCAI(4, "耗材"); public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(ProductTypeEnum::getTypeId).toArray(); /** diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index e7d4021083..689384c0d5 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -44,4 +44,7 @@ public interface ErrorCodeConstants { ErrorCode MACHINE_COMPONENT_PARENT_NOT_EXITS = new ErrorCode(5_008, "生产报工单不存在"); ErrorCode MACHINE_COMPONENT_PARENT_IS_CHILD = new ErrorCode(5_0081, "生产报工明细不存在"); ErrorCode MACHINE_COMPONENT_NAME_DUPLICATE = new ErrorCode(5_0081, "生产报工明细不存在"); + ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在"); + ErrorCode SALE_ORDER_ITEMS_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在"); + } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/SaleOrderController.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/SaleOrderController.java new file mode 100644 index 0000000000..4871b50373 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/SaleOrderController.java @@ -0,0 +1,139 @@ +package cn.iocoder.yudao.module.mes.controller.admin.saleorder; + +import org.springframework.web.bind.annotation.*; +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 java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; + +import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; +import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderItemsDO; +import cn.iocoder.yudao.module.mes.service.saleorder.SaleOrderService2; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; + +@Tag(name = "管理后台 - 销售订单") +@RestController +@RequestMapping("/mes/sale-order") +@Validated +public class SaleOrderController { + + @Resource + private SaleOrderService2 saleOrderService; + + @PostMapping("/create") + @Operation(summary = "创建销售订单") + @PreAuthorize("@ss.hasPermission('mes:sale-order:create')") + public CommonResult createSaleOrder(@Valid @RequestBody SaleOrderSaveReqVO createReqVO) { + return success(saleOrderService.createSaleOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新销售订单") + @PreAuthorize("@ss.hasPermission('mes:sale-order:update')") + public CommonResult updateSaleOrder(@Valid @RequestBody SaleOrderSaveReqVO updateReqVO) { + saleOrderService.updateSaleOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除销售订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:sale-order:delete')") + public CommonResult deleteSaleOrder(@RequestParam("id") Long id) { + saleOrderService.deleteSaleOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得销售订单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('mes:sale-order:query')") + public CommonResult getSaleOrder(@RequestParam("id") Long id) { + SaleOrderDO saleOrder = saleOrderService.getSaleOrder(id); + return success(BeanUtils.toBean(saleOrder, SaleOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得销售订单分页") + @PreAuthorize("@ss.hasPermission('mes:sale-order:query')") + public CommonResult> getSaleOrderPage(@Valid SaleOrderPageReqVO pageReqVO) { + PageResult pageResult = saleOrderService.getSaleOrderPage(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出销售订单 Excel") + @PreAuthorize("@ss.hasPermission('mes:sale-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportSaleOrderExcel(@Valid SaleOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = saleOrderService.getSaleOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "销售订单.xls", "数据", SaleOrderRespVO.class, + list); + } + + // ==================== 子表(销售订单项) ==================== + + @GetMapping("/sale-order-items/page") + @Operation(summary = "获得销售订单项分页") + @Parameter(name = "orderId", description = "销售订单编号") + @PreAuthorize("@ss.hasPermission('mes:sale-order:query')") + public CommonResult> getSaleOrderItemsPage(PageParam pageReqVO, + @RequestParam("orderId") Long orderId) { + return success(saleOrderService.getSaleOrderItemsPage(pageReqVO, orderId)); + } + + @PostMapping("/sale-order-items/create") + @Operation(summary = "创建销售订单项") + @PreAuthorize("@ss.hasPermission('mes:sale-order:create')") + public CommonResult createSaleOrderItems(@Valid @RequestBody SaleOrderItemsDO saleOrderItems) { + return success(saleOrderService.createSaleOrderItems(saleOrderItems)); + } + + @PutMapping("/sale-order-items/update") + @Operation(summary = "更新销售订单项") + @PreAuthorize("@ss.hasPermission('mes:sale-order:update')") + public CommonResult updateSaleOrderItems(@Valid @RequestBody SaleOrderItemsDO saleOrderItems) { + saleOrderService.updateSaleOrderItems(saleOrderItems); + return success(true); + } + + @DeleteMapping("/sale-order-items/delete") + @Parameter(name = "id", description = "编号", required = true) + @Operation(summary = "删除销售订单项") + @PreAuthorize("@ss.hasPermission('mes:sale-order:delete')") + public CommonResult deleteSaleOrderItems(@RequestParam("id") Long id) { + saleOrderService.deleteSaleOrderItems(id); + return success(true); + } + + @GetMapping("/sale-order-items/get") + @Operation(summary = "获得销售订单项") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('mes:sale-order:query')") + public CommonResult getSaleOrderItems(@RequestParam("id") Long id) { + return success(saleOrderService.getSaleOrderItems(id)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderItemsRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderItemsRespVO.java new file mode 100644 index 0000000000..2ff25e9493 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderItemsRespVO.java @@ -0,0 +1,68 @@ +package cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - ERP 销售订单项 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SaleOrderItemsRespVO { + + @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2352") + @ExcelProperty("编号") + private Long id; + + @Schema(description = "销售订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "5688") + @ExcelProperty("销售订单编号") + private Long orderId; + + @Schema(description = "产品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "10536") + @ExcelProperty("产品编号") + private Long productId; + @Schema(description = "产品", requiredMode = Schema.RequiredMode.REQUIRED, example = "10536") + @ExcelProperty("产品") + private String productName; + + @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "30567") + @ExcelProperty("单位") + private String unitName; + + @Schema(description = "产品单位单位", requiredMode = Schema.RequiredMode.REQUIRED, example = "30567") + @ExcelProperty("产品单位单位") + private Long productUnitId; + + @Schema(description = "产品单价", example = "10149") + @ExcelProperty("产品单价") + private BigDecimal productPrice; + + @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "17020") + @ExcelProperty("数量") + private BigDecimal count; + + @Schema(description = "总价", example = "10151") + @ExcelProperty("总价") + private BigDecimal totalPrice; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "销售出库数量", example = "20176") + @ExcelProperty("销售出库数量") + private BigDecimal outCount; + + @Schema(description = "销售退货数量", example = "25560") + @ExcelProperty("销售退货数量") + private BigDecimal returnCount; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderPageReqVO.java new file mode 100644 index 0000000000..b3ccff77e2 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderPageReqVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.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 SaleOrderPageReqVO extends PageParam { + + @Schema(description = "销售单编号") + private String no; + + @Schema(description = "销售状态", example = "1") + private Integer status; + + @Schema(description = "客户编号", example = "21463") + private Long customerId; + + @Schema(description = "下单时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] orderTime; + + @Schema(description = "合计数量", example = "15252") + private BigDecimal totalCount; + + @Schema(description = "合计价格,单位:元", example = "12141") + private BigDecimal totalPrice; + + @Schema(description = "合计产品价格,单位:元", example = "14588") + private BigDecimal totalProductPrice; + + @Schema(description = "备注", example = "随便") + private String remark; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderRespVO.java new file mode 100644 index 0000000000..cbbc750cd9 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderRespVO.java @@ -0,0 +1,62 @@ +package cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 销售订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SaleOrderRespVO { + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14570") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "销售单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("销售单编号") + private String no; + + @Schema(description = "销售状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty(value = "销售状态", converter = DictConvert.class) + @DictFormat("erp_audit_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private Integer status; + + @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21463") + @ExcelProperty("客户编号") + private Long customerId; + @Schema(description = "客户", requiredMode = Schema.RequiredMode.REQUIRED, example = "21463") + @ExcelProperty("客户编号") + private String customerName; + + @Schema(description = "下单时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("下单时间") + private LocalDateTime orderTime; + + @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15252") + @ExcelProperty("合计数量") + private BigDecimal totalCount; + + @Schema(description = "合计价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "12141") + @ExcelProperty("合计价格,单位:元") + private BigDecimal totalPrice; + + @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "14588") + @ExcelProperty("合计产品价格,单位:元") + private BigDecimal totalProductPrice; + + @Schema(description = "备注", example = "随便") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java new file mode 100644 index 0000000000..b4ad6b22f2 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/saleorder/vo/SaleOrderSaveReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderItemsDO; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Schema(description = "管理后台 - 销售订单新增/修改 Request VO") +@Data +public class SaleOrderSaveReqVO { + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14570") + private Long id; + + @Schema(description = "销售单编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "销售单编号不能为空") + private String no; + + @Schema(description = "销售状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "销售状态不能为空") + private Integer status; + + @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "21463") + @NotNull(message = "客户编号不能为空") + private Long customerId; + + @Schema(description = "下单时间", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "下单时间不能为空") + private LocalDateTime orderTime; + + @Schema(description = "合计数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "15252") + @NotNull(message = "合计数量不能为空") + private BigDecimal totalCount; + + @Schema(description = "合计价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "12141") + @NotNull(message = "合计价格,单位:元不能为空") + private BigDecimal totalPrice; + + @Schema(description = "合计产品价格,单位:元", requiredMode = Schema.RequiredMode.REQUIRED, example = "14588") + @NotNull(message = "合计产品价格,单位:元不能为空") + private BigDecimal totalProductPrice; + + @Schema(description = "备注", example = "随便") + private String remark; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskDetailRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskDetailRespVO.java index 32d9fe0343..81b00cbdc0 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskDetailRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskDetailRespVO.java @@ -59,4 +59,46 @@ public class TaskDetailRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + /** + * 打包数量/包 + */ + @Schema(description = "打包数量", example = "赵六") + @ExcelProperty("打包数量") + private Long packageNumber; + /** + * 条码 + */ + @Schema(description = "条码", example = "你猜") + @ExcelProperty("条码") + private String barCode; + /** + * 附件 + */ + @Schema(description = "附件", example = "你猜") + @ExcelProperty("附件") + private String attachment; + /** + * 工厂完成 + */ + @Schema(description = "工厂完成", example = "赵六") + @ExcelProperty("工厂完成") + private LocalDateTime finishDate; + /** + * 装柜时间 + */ + @Schema(description = "装柜时间", example = "赵六") + @ExcelProperty("装柜时间") + private LocalDateTime boxingDate; + /** + * 达到时间 + */ + @Schema(description = "达到时间", example = "赵六") + @ExcelProperty("达到时间") + private LocalDateTime arriveDate; + /** + * 订单单号 + */ + @Schema(description = "订单单号", example = "你猜") + @ExcelProperty("订单单号") + private String saleOrderCode; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java index 0a284fe961..f15483738f 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskPageReqVO.java @@ -23,11 +23,11 @@ public class TaskPageReqVO extends PageParam { @Schema(description = "下达日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) - private LocalDate[] orderDate; + private LocalDateTime[] orderDate; @Schema(description = "交货日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) - private LocalDate[] deliveryDate; + private LocalDateTime[] deliveryDate; @Schema(description = "状态", example = "2") private Integer status; diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java index f95dcc6cf4..4f3c648056 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/task/vo/TaskRespVO.java @@ -27,11 +27,11 @@ public class TaskRespVO { @Schema(description = "下达日期") @ExcelProperty("下达日期") - private LocalDate orderDate; + private LocalDateTime orderDate; @Schema(description = "交货日期", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("交货日期") - private LocalDate deliveryDate; + private LocalDateTime deliveryDate; @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") @ExcelProperty(value = "状态", converter = DictConvert.class) diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderDO.java new file mode 100644 index 0000000000..9ab64d7424 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderDO.java @@ -0,0 +1,111 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.saleorder; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 销售订单 DO + * + * @author 内蒙必硕 + */ +@TableName("erp_sale_order") +@KeySequence("erp_sale_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaleOrderDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 销售单编号 + */ + private String no; + /** + * 销售状态 + * + * 枚举 {@link TODO erp_audit_status 对应的类} + */ + private Integer status; + /** + * 客户编号 + */ + private Long customerId; + /** + * 结算账户编号 + */ + private Long accountId; + /** + * 销售用户编号 + */ + private Long saleUserId; + /** + * 下单时间 + */ + private LocalDateTime orderTime; + /** + * 合计数量 + */ + private BigDecimal totalCount; + /** + * 合计价格,单位:元 + */ + private BigDecimal totalPrice; + /** + * 合计产品价格,单位:元 + */ + private BigDecimal totalProductPrice; + /** + * 合计税额,单位:元 + */ + private BigDecimal totalTaxPrice; + /** + * 优惠率,百分比 + */ + private BigDecimal discountPercent; + /** + * 优惠金额,单位:元 + */ + private BigDecimal discountPrice; + /** + * 定金金额,单位:元 + */ + private BigDecimal depositPrice; + /** + * 附件地址 + */ + private String fileUrl; + /** + * 备注 + */ + private String remark; + /** + * 销售出库数量 + */ + private BigDecimal outCount; + /** + * 销售退货数量 + */ + private BigDecimal returnCount; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderItemsDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderItemsDO.java new file mode 100644 index 0000000000..1d46d294cb --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/saleorder/SaleOrderItemsDO.java @@ -0,0 +1,82 @@ +package cn.iocoder.yudao.module.mes.dal.dataobject.saleorder; + +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 销售订单项 DO + * + * @author 内蒙必硕 + */ +@TableName("erp_sale_order_items") +@KeySequence("erp_sale_order_items_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SaleOrderItemsDO extends BaseDO { + + /** + * 编号 + */ + @TableId + private Long id; + /** + * 销售订单编号 + */ + private Long orderId; + /** + * 产品编号 + */ + private Long productId; + /** + * 产品单位单位 + */ + private Long productUnitId; + /** + * 产品单价 + */ + private BigDecimal productPrice; + /** + * 数量 + */ + private BigDecimal count; + /** + * 总价 + */ + private BigDecimal totalPrice; + /** + * 税率,百分比 + */ + private BigDecimal taxPercent; + /** + * 税额,单位:元 + */ + private BigDecimal taxPrice; + /** + * 备注 + */ + private String remark; + /** + * 销售出库数量 + */ + private BigDecimal outCount; + /** + * 销售退货数量 + */ + private BigDecimal returnCount; + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDetailDO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDetailDO.java index 11b14735f8..2c4f4e3abd 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDetailDO.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/task/TaskDetailDO.java @@ -64,4 +64,30 @@ public class TaskDetailDO extends BaseDO { */ private Boolean isEnable; + /** + * 打包数量/包 + */ + private Long packageNumber; + /** + * 条码 + */ + private String barCode; + /** + * 附件 + */ + private String attachment; + /** + * 工厂完成 + */ + private LocalDateTime finishDate; + /** + * 装柜时间 + */ + private LocalDateTime boxingDate; + /** + * 达到时间 + */ + private LocalDateTime arriveDate; + //订单单号 + private String saleOrderCode; } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderItemsMapper2.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderItemsMapper2.java new file mode 100644 index 0000000000..7ef095a119 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderItemsMapper2.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.saleorder; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderItemsDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 销售订单项 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface SaleOrderItemsMapper2 extends BaseMapperX { + + default PageResult selectPage(PageParam reqVO, Long orderId) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eq(SaleOrderItemsDO::getOrderId, orderId) + .orderByDesc(SaleOrderItemsDO::getId)); + } + + default int deleteByOrderId(Long orderId) { + return delete(SaleOrderItemsDO::getOrderId, orderId); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderMapper2.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderMapper2.java new file mode 100644 index 0000000000..a1072e7252 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/saleorder/SaleOrderMapper2.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.mes.dal.mysql.saleorder; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo.*; + +/** + * 销售订单 Mapper + * + * @author 内蒙必硕 + */ +@Mapper +public interface SaleOrderMapper2 extends BaseMapperX { + + default PageResult selectPage(SaleOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SaleOrderDO::getNo, reqVO.getNo()) + .eqIfPresent(SaleOrderDO::getStatus, reqVO.getStatus()) + .eqIfPresent(SaleOrderDO::getCustomerId, reqVO.getCustomerId()) + .betweenIfPresent(SaleOrderDO::getOrderTime, reqVO.getOrderTime()) + .eqIfPresent(SaleOrderDO::getTotalCount, reqVO.getTotalCount()) + .eqIfPresent(SaleOrderDO::getTotalPrice, reqVO.getTotalPrice()) + .eqIfPresent(SaleOrderDO::getTotalProductPrice, reqVO.getTotalProductPrice()) + .eqIfPresent(SaleOrderDO::getRemark, reqVO.getRemark()) + .betweenIfPresent(SaleOrderDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SaleOrderDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderService2.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderService2.java new file mode 100644 index 0000000000..42280b7e04 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderService2.java @@ -0,0 +1,97 @@ +package cn.iocoder.yudao.module.mes.service.saleorder; + +import cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderItemsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +import javax.validation.Valid; + +/** + * 销售订单 Service 接口 + * + * @author 内蒙必硕 + */ +public interface SaleOrderService2 { + + /** + * 创建销售订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createSaleOrder(@Valid SaleOrderSaveReqVO createReqVO); + + /** + * 更新销售订单 + * + * @param updateReqVO 更新信息 + */ + void updateSaleOrder(@Valid SaleOrderSaveReqVO updateReqVO); + + /** + * 删除销售订单 + * + * @param id 编号 + */ + void deleteSaleOrder(Long id); + + /** + * 获得销售订单 + * + * @param id 编号 + * @return 销售订单 + */ + SaleOrderDO getSaleOrder(Long id); + + /** + * 获得销售订单分页 + * + * @param pageReqVO 分页查询 + * @return 销售订单分页 + */ + PageResult getSaleOrderPage(SaleOrderPageReqVO pageReqVO); + + // ==================== 子表(销售订单项) ==================== + + /** + * 获得销售订单项分页 + * + * @param pageReqVO 分页查询 + * @param orderId 销售订单编号 + * @return 销售订单项分页 + */ + PageResult getSaleOrderItemsPage(PageParam pageReqVO, Long orderId); + + /** + * 创建销售订单项 + * + * @param saleOrderItems 创建信息 + * @return 编号 + */ + Long createSaleOrderItems(@Valid SaleOrderItemsDO saleOrderItems); + + /** + * 更新销售订单项 + * + * @param saleOrderItems 更新信息 + */ + void updateSaleOrderItems(@Valid SaleOrderItemsDO saleOrderItems); + + /** + * 删除销售订单项 + * + * @param id 编号 + */ + void deleteSaleOrderItems(Long id); + + /** + * 获得销售订单项 + * + * @param id 编号 + * @return 销售订单项 + */ + SaleOrderItemsDO getSaleOrderItems(Long id); + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderServiceImpl.java new file mode 100644 index 0000000000..37ddad24fc --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/saleorder/SaleOrderServiceImpl.java @@ -0,0 +1,175 @@ +package cn.iocoder.yudao.module.mes.service.saleorder; + +import cn.hutool.core.collection.CollUtil; +import cn.iocoder.yudao.framework.common.util.collection.MapUtils; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; +import cn.iocoder.yudao.module.erp.dal.dataobject.sale.ErpCustomerDO; +import cn.iocoder.yudao.module.erp.service.product.ErpProductService; +import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; +import cn.iocoder.yudao.module.erp.service.sale.ErpCustomerService; +import cn.iocoder.yudao.module.mes.controller.admin.task.vo.TaskDetailRespVO; +import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDetailDO; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import cn.iocoder.yudao.module.mes.controller.admin.saleorder.vo.*; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.saleorder.SaleOrderItemsDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; + +import cn.iocoder.yudao.module.mes.dal.mysql.saleorder.SaleOrderMapper2; +import cn.iocoder.yudao.module.mes.dal.mysql.saleorder.SaleOrderItemsMapper2; + +import javax.annotation.Resource; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; +import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*; + +/** + * 销售订单 Service 实现类 + * + * @author 内蒙必硕 + */ +@Service +@Validated +public class SaleOrderServiceImpl implements SaleOrderService2 { + + @Resource + private SaleOrderMapper2 saleOrderMapper; + @Resource + private SaleOrderItemsMapper2 saleOrderItemsMapper; + + @Override + public Long createSaleOrder(SaleOrderSaveReqVO createReqVO) { + // 插入 + SaleOrderDO saleOrder = BeanUtils.toBean(createReqVO, SaleOrderDO.class); + saleOrderMapper.insert(saleOrder); + // 返回 + return saleOrder.getId(); + } + + @Override + public void updateSaleOrder(SaleOrderSaveReqVO updateReqVO) { + // 校验存在 + validateSaleOrderExists(updateReqVO.getId()); + // 更新 + SaleOrderDO updateObj = BeanUtils.toBean(updateReqVO, SaleOrderDO.class); + saleOrderMapper.updateById(updateObj); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSaleOrder(Long id) { + // 校验存在 + validateSaleOrderExists(id); + // 删除 + saleOrderMapper.deleteById(id); + + // 删除子表 + deleteSaleOrderItemsByOrderId(id); + } + + private void validateSaleOrderExists(Long id) { + if (saleOrderMapper.selectById(id) == null) { + throw exception(SALE_ORDER_NOT_EXISTS); + } + } + + @Override + public SaleOrderDO getSaleOrder(Long id) { + return saleOrderMapper.selectById(id); + } + + @Override + public PageResult getSaleOrderPage(SaleOrderPageReqVO pageReqVO) { + PageResult pageResult = saleOrderMapper.selectPage(pageReqVO); + return new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal()); + } + private List buildVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map map = customerService.getCustomerMap( + convertSet(list, SaleOrderDO::getCustomerId)); + + return BeanUtils.toBean(list, SaleOrderRespVO.class, item -> { + MapUtils.findAndThen(map, item.getCustomerId(), + doEntity -> item.setCustomerName(doEntity.getName())); + }); + } + + @Resource + private ErpCustomerService customerService; + // ==================== 子表(销售订单项) ==================== + @Resource + private ErpProductService productService; + @Resource + private ErpProductUnitService productUnitService; + @Override + public PageResult getSaleOrderItemsPage(PageParam pageReqVO, Long orderId) { + PageResult pageResult = saleOrderItemsMapper.selectPage(pageReqVO, orderId); + return new PageResult<>(buildDetailVOList(pageResult.getList()), pageResult.getTotal()); + } + private List buildDetailVOList(List list) { + if (CollUtil.isEmpty(list)) { + return Collections.emptyList(); + } + Map map = productService.getProductMap( + convertSet(list, SaleOrderItemsDO::getProductId)); + Map unitMap = productUnitService.getProductUnitMap( + convertSet(list, SaleOrderItemsDO::getProductUnitId)); + + return BeanUtils.toBean(list, SaleOrderItemsRespVO.class, item -> { + MapUtils.findAndThen(map, item.getProductId(), + product -> item.setProductName(product.getName())); + MapUtils.findAndThen(unitMap, item.getProductUnitId(), + unit -> item.setUnitName(unit.getName())); + }); + } + @Override + public Long createSaleOrderItems(SaleOrderItemsDO saleOrderItems) { + saleOrderItemsMapper.insert(saleOrderItems); + return saleOrderItems.getId(); + } + + @Override + public void updateSaleOrderItems(SaleOrderItemsDO saleOrderItems) { + // 校验存在 + validateSaleOrderItemsExists(saleOrderItems.getId()); + // 更新 + saleOrderItemsMapper.updateById(saleOrderItems); + } + + @Override + public void deleteSaleOrderItems(Long id) { + // 校验存在 + validateSaleOrderItemsExists(id); + // 删除 + saleOrderItemsMapper.deleteById(id); + } + + @Override + public SaleOrderItemsDO getSaleOrderItems(Long id) { + return saleOrderItemsMapper.selectById(id); + } + + private void validateSaleOrderItemsExists(Long id) { + if (saleOrderItemsMapper.selectById(id) == null) { + throw exception(SALE_ORDER_ITEMS_NOT_EXISTS); + } + } + + private void deleteSaleOrderItemsByOrderId(Long orderId) { + saleOrderItemsMapper.deleteByOrderId(orderId); + } + +} \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java index 1f23803af8..4084787921 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java @@ -51,7 +51,7 @@ public class TaskServiceImpl implements TaskService { taskMapper.insert(task); // 插入子表 - createTaskDetailList(task.getId(), createReqVO.getTaskDetails()); + // createTaskDetailList(task.getId(), createReqVO.getTaskDetails()); // 返回 return task.getId(); } @@ -66,7 +66,7 @@ public class TaskServiceImpl implements TaskService { taskMapper.updateById(updateObj); // 更新子表 - updateTaskDetailList(updateReqVO.getId(), updateReqVO.getTaskDetails()); + //updateTaskDetailList(updateReqVO.getId(), updateReqVO.getTaskDetails()); } @Override diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml new file mode 100644 index 0000000000..a6f4855313 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/resources/mapper/saleorder/SaleOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file