main
chenshuichuan 2 years ago
parent 7ad57f3084
commit f317b2e8f9

@ -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<List<ErpProductRespVO>> getOrderSimpleList() {
List<ErpProductRespVO> list1 = productService.getProductVOListByCategory(ProductTypeEnum.ITEM.getTypeId());
List<ErpProductRespVO> list2 = productService.getProductVOListByCategory(ProductTypeEnum.TOOL.getTypeId());
List<ErpProductRespVO> list3 = productService.getProductVOListByCategory(ProductTypeEnum.HAOCAI.getTypeId());
List<ErpProductRespVO> 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')")

@ -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();
/**

@ -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, "生产报工明细不存在");
}

@ -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<Long> createSaleOrder(@Valid @RequestBody SaleOrderSaveReqVO createReqVO) {
return success(saleOrderService.createSaleOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新销售订单")
@PreAuthorize("@ss.hasPermission('mes:sale-order:update')")
public CommonResult<Boolean> 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<Boolean> 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<SaleOrderRespVO> 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<PageResult<SaleOrderRespVO>> getSaleOrderPage(@Valid SaleOrderPageReqVO pageReqVO) {
PageResult<SaleOrderRespVO> 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<SaleOrderRespVO> 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<PageResult<SaleOrderItemsRespVO>> 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<Long> 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<Boolean> 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<Boolean> 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<SaleOrderItemsDO> getSaleOrderItems(@RequestParam("id") Long id) {
return success(saleOrderService.getSaleOrderItems(id));
}
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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;

@ -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)

@ -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;
}

@ -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;
}

@ -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;
}

@ -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<SaleOrderItemsDO> {
default PageResult<SaleOrderItemsDO> selectPage(PageParam reqVO, Long orderId) {
return selectPage(reqVO, new LambdaQueryWrapperX<SaleOrderItemsDO>()
.eq(SaleOrderItemsDO::getOrderId, orderId)
.orderByDesc(SaleOrderItemsDO::getId));
}
default int deleteByOrderId(Long orderId) {
return delete(SaleOrderItemsDO::getOrderId, orderId);
}
}

@ -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<SaleOrderDO> {
default PageResult<SaleOrderDO> selectPage(SaleOrderPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<SaleOrderDO>()
.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));
}
}

@ -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<SaleOrderRespVO> getSaleOrderPage(SaleOrderPageReqVO pageReqVO);
// ==================== 子表(销售订单项) ====================
/**
*
*
* @param pageReqVO
* @param orderId
* @return
*/
PageResult<SaleOrderItemsRespVO> 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);
}

@ -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<SaleOrderRespVO> getSaleOrderPage(SaleOrderPageReqVO pageReqVO) {
PageResult<SaleOrderDO> pageResult = saleOrderMapper.selectPage(pageReqVO);
return new PageResult<>(buildVOList(pageResult.getList()), pageResult.getTotal());
}
private List<SaleOrderRespVO> buildVOList(List<SaleOrderDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpCustomerDO> 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<SaleOrderItemsRespVO> getSaleOrderItemsPage(PageParam pageReqVO, Long orderId) {
PageResult<SaleOrderItemsDO> pageResult = saleOrderItemsMapper.selectPage(pageReqVO, orderId);
return new PageResult<>(buildDetailVOList(pageResult.getList()), pageResult.getTotal());
}
private List<SaleOrderItemsRespVO> buildDetailVOList(List<SaleOrderItemsDO> list) {
if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
Map<Long, ErpProductDO> map = productService.getProductMap(
convertSet(list, SaleOrderItemsDO::getProductId));
Map<Long, ErpProductUnitDO> 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);
}
}

@ -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

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.saleorder.SaleOrderMapper2">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>
Loading…
Cancel
Save