diff --git a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java index ef18aab..484d8d7 100644 --- a/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java +++ b/hangtag-module-oms/hangtag-module-oms-api/src/main/java/cn/hangtag/module/oms/enums/ErrorCodeConstants.java @@ -12,6 +12,8 @@ public interface ErrorCodeConstants extends cn.hangtag.module.system.enums.Erro ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(3600, "OMS销售订单主表不存在"); ErrorCode SALE_ORDER_ENTRY_NOT_EXISTS = new ErrorCode(3700, "OMS销售订单明细不存在"); ErrorCode CUSTOMER_BRAND_NOT_EXISTS = new ErrorCode(3800, "客户和品牌关联不存在"); - ErrorCode PRODUCT_CARE_ITEM_NOT_EXISTS = new ErrorCode(3800, "产品保养项 不存在"); + ErrorCode PRODUCT_CARE_ITEM_NOT_EXISTS = new ErrorCode(3900, "产品保养项 不存在"); + ErrorCode PRODUCE_ORDER_NOT_EXISTS = new ErrorCode(4000, "生产制单不存在"); + } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppBrandController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppBrandController.java index 16c83c6..8af9e53 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppBrandController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppBrandController.java @@ -9,7 +9,11 @@ import cn.hangtag.framework.security.core.util.SecurityFrameworkUtils; import cn.hangtag.module.oms.controller.admin.brand.vo.BrandListReqVO; import cn.hangtag.module.oms.controller.admin.brand.vo.BrandSimpleRespVO; import cn.hangtag.module.oms.dal.dataobject.brand.BrandDO; +import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; +import cn.hangtag.module.oms.dal.dataobject.customerbrand.CustomerBrandDO; import cn.hangtag.module.oms.service.brand.BrandService; +import cn.hangtag.module.oms.service.customer.CustomerService; +import cn.hangtag.module.oms.service.customerbrand.CustomerBrandService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; @@ -18,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import static cn.hangtag.framework.common.pojo.CommonResult.success; @@ -31,14 +36,28 @@ public class AppBrandController { @Resource private BrandService brandService; + @Resource + private CustomerService customerService; + + @Resource + private CustomerBrandService customerBrandService; + + + @GetMapping({"/list-all-simple", "simple-list"}) @Operation(summary = "获取品牌精简信息列表", description = "只包含被开启的菜单,用于【客户分配品牌】功能的选项。" + "在多租户的场景下,会只返回租户所在套餐有的菜单") public CommonResult> getSimpleBrandList() { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); + List listByCustomerId = customerBrandService.getListByCustomerId(customer.getId()); + List brandIds = new ArrayList<>(); + for (CustomerBrandDO customerBrandDO : listByCustomerId) { + brandIds.add(customerBrandDO.getBrandId()); + } List list = brandService.getBrandList( - new BrandListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus())); + new BrandListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()).setIds(brandIds)); return success(BeanUtils.toBean(list, BrandSimpleRespVO.class)); } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java index 340f236..9ce63ef 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/app/AppCustomerController.java @@ -4,6 +4,8 @@ import cn.hangtag.framework.common.pojo.CommonResult; import cn.hangtag.framework.common.pojo.PageResult; import cn.hangtag.framework.common.util.object.BeanUtils; import cn.hangtag.framework.ip.core.utils.AreaUtils; +import cn.hangtag.framework.security.core.LoginUser; +import cn.hangtag.framework.security.core.util.SecurityFrameworkUtils; import cn.hangtag.module.oms.controller.admin.customer.vo.CustomerPageReqVO; import cn.hangtag.module.oms.controller.admin.customer.vo.CustomerRespVO; import cn.hangtag.module.oms.dal.dataobject.customer.CustomerDO; @@ -45,10 +47,9 @@ public class AppCustomerController { @GetMapping("/get") @Operation(summary = "获得客户") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('oms:customer:query')") - public CommonResult getCustomer(@RequestParam("id") Long id) { - CustomerDO customer = customerService.getCustomer(id); + public CommonResult getCustomer() { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + CustomerDO customer = customerService.getCustomerByUserId(loginUser.getId()); return success(buildClueDetail(customer)); } diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/brand/vo/BrandListReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/brand/vo/BrandListReqVO.java index 62dd839..4e9b3f7 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/brand/vo/BrandListReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/brand/vo/BrandListReqVO.java @@ -3,11 +3,16 @@ package cn.hangtag.module.oms.controller.admin.brand.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -@Schema(description = "管理后台 - 菜单列表 Request VO") +import java.util.List; + +@Schema(description = "管理后台 - 品牌列表 Request VO") @Data public class BrandListReqVO { - @Schema(description = "菜单名称,模糊匹配", example = "芋道") + @Schema(description = "品牌ID,模糊匹配", example = "芋道") + private List ids; + + @Schema(description = "品牌名称,模糊匹配", example = "芋道") private String name; @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1") diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java index 76b9534..a75ab06 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerRespVO.java @@ -38,6 +38,14 @@ public class CustomerRespVO { @ExcelProperty("联系人手机号") private String phone; + @Schema(description = "跟单员") + @ExcelProperty("跟单员") + private String gdperson; + + @Schema(description = "销售员") + @ExcelProperty("销售员") + private String saleperson; + @Schema(description = "所属地区", example = "1024") @ExcelProperty("所属地区") private Integer areaId; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java index 41c03ba..710aa5b 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/customer/vo/CustomerSaveReqVO.java @@ -30,6 +30,12 @@ public class CustomerSaveReqVO { @Schema(description = "联系人手机号") private String phone; + @Schema(description = "跟单员") + private String gdperson; + + @Schema(description = "销售员") + private String saleperson; + @Schema(description = "所属地区") private Integer areaId; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java new file mode 100644 index 0000000..1c69cb2 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/ProduceOrderController.java @@ -0,0 +1,95 @@ +package cn.hangtag.module.oms.controller.admin.produceorder; + +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 cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.CommonResult; +import cn.hangtag.framework.common.util.object.BeanUtils; +import static cn.hangtag.framework.common.pojo.CommonResult.success; + +import cn.hangtag.framework.excel.core.util.ExcelUtils; + +import cn.hangtag.framework.apilog.core.annotation.ApiAccessLog; +import static cn.hangtag.framework.apilog.core.enums.OperateTypeEnum.*; + +import cn.hangtag.module.oms.controller.admin.produceorder.vo.*; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; +import cn.hangtag.module.oms.service.produceorder.ProduceOrderService; + +@Tag(name = "管理后台 - 生产制单") +@RestController +@RequestMapping("/oms/produce-order") +@Validated +public class ProduceOrderController { + + @Resource + private ProduceOrderService produceOrderService; + + @PostMapping("/create") + @Operation(summary = "创建生产制单") + @PreAuthorize("@ss.hasPermission('oms:produce-order:create')") + public CommonResult createProduceOrder(@Valid @RequestBody ProduceOrderSaveReqVO createReqVO) { + return success(produceOrderService.createProduceOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新生产制单") + @PreAuthorize("@ss.hasPermission('oms:produce-order:update')") + public CommonResult updateProduceOrder(@Valid @RequestBody ProduceOrderSaveReqVO updateReqVO) { + produceOrderService.updateProduceOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除生产制单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('oms:produce-order:delete')") + public CommonResult deleteProduceOrder(@RequestParam("id") Long id) { + produceOrderService.deleteProduceOrder(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得生产制单") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('oms:produce-order:query')") + public CommonResult getProduceOrder(@RequestParam("id") Long id) { + ProduceOrderDO produceOrder = produceOrderService.getProduceOrder(id); + return success(BeanUtils.toBean(produceOrder, ProduceOrderRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得生产制单分页") + @PreAuthorize("@ss.hasPermission('oms:produce-order:query')") + public CommonResult> getProduceOrderPage(@Valid ProduceOrderPageReqVO pageReqVO) { + PageResult pageResult = produceOrderService.getProduceOrderPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, ProduceOrderRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出生产制单 Excel") + @PreAuthorize("@ss.hasPermission('oms:produce-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportProduceOrderExcel(@Valid ProduceOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = produceOrderService.getProduceOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "生产制单.xls", "数据", ProduceOrderRespVO.class, + BeanUtils.toBean(list, ProduceOrderRespVO.class)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java new file mode 100644 index 0000000..9d126f7 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderPageReqVO.java @@ -0,0 +1,52 @@ +package cn.hangtag.module.oms.controller.admin.produceorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.hangtag.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.hangtag.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 ProduceOrderPageReqVO extends PageParam { + + @Schema(description = "单据编号") + private String billno; + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "客户编号") + private String customerCode; + + @Schema(description = "合约号") + private Integer saleContractNo; + + @Schema(description = "报告日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] reportDate; + + @Schema(description = "生产日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] produceDate; + + @Schema(description = "生产线") + private String produceLine; + + @Schema(description = "交货方式") + private String deliveryMethod; + + @Schema(description = "验货日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] inspectionDate; + + @Schema(description = "交货日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] deliverydate; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java new file mode 100644 index 0000000..44aecc8 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderRespVO.java @@ -0,0 +1,91 @@ +package cn.hangtag.module.oms.controller.admin.produceorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 生产制单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class ProduceOrderRespVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3271") + @ExcelProperty("ID") + private Long id; + + @Schema(description = "单据编号") + @ExcelProperty("单据编号") + private String billno; + + @Schema(description = "订单号") + @ExcelProperty("订单号") + private String orderNo; + + @Schema(description = "客户编号") + @ExcelProperty("客户编号") + private String customerCode; + + @Schema(description = "产品名称", example = "王五") + @ExcelProperty("产品名称") + private String productName; + + @Schema(description = "合约号") + @ExcelProperty("合约号") + private Integer saleContractNo; + + @Schema(description = "合约日期") + @ExcelProperty("合约日期") + private LocalDateTime contractDate; + + @Schema(description = "合约数量") + @ExcelProperty("合约数量") + private Long contractQty; + + @Schema(description = "生产数量") + @ExcelProperty("生产数量") + private Long produceQty; + + @Schema(description = "交货地点") + @ExcelProperty("交货地点") + private String deliveryPlace; + + @Schema(description = "职员") + @ExcelProperty("职员") + private String clerk; + + @Schema(description = "报告日期") + @ExcelProperty("报告日期") + private LocalDateTime reportDate; + + @Schema(description = "生产日期") + @ExcelProperty("生产日期") + private LocalDateTime produceDate; + + @Schema(description = "天数") + @ExcelProperty("天数") + private Long days; + + @Schema(description = "生产线") + @ExcelProperty("生产线") + private String produceLine; + + @Schema(description = "交货方式") + @ExcelProperty("交货方式") + private String deliveryMethod; + + @Schema(description = "验货日期") + @ExcelProperty("验货日期") + private LocalDateTime inspectionDate; + + @Schema(description = "交货日期") + @ExcelProperty("交货日期") + private LocalDateTime deliverydate; + + @Schema(description = "交货数量") + @ExcelProperty("交货数量") + private Integer deliveryQty; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java new file mode 100644 index 0000000..3406805 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/produceorder/vo/ProduceOrderSaveReqVO.java @@ -0,0 +1,77 @@ +package cn.hangtag.module.oms.controller.admin.produceorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 生产制单新增/修改 Request VO") +@Data +public class ProduceOrderSaveReqVO { + + @Schema(description = "ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3271") + private Long id; + + @Schema(description = "单据编号") + private String billno; + + @Schema(description = "订单号") + private String orderNo; + + @Schema(description = "客户编号") + private String customerCode; + + @Schema(description = "产品id", example = "29732") + private Integer productId; + + @Schema(description = "产品编号") + private String productCode; + + @Schema(description = "产品名称", example = "王五") + private String productName; + + @Schema(description = "合约号") + private Integer saleContractNo; + + @Schema(description = "合约日期") + private LocalDateTime contractDate; + + @Schema(description = "合约数量") + private Long contractQty; + + @Schema(description = "生产数量") + private Long produceQty; + + @Schema(description = "交货地点") + private String deliveryPlace; + + @Schema(description = "职员") + private String clerk; + + @Schema(description = "报告日期") + private LocalDateTime reportDate; + + @Schema(description = "生产日期") + private LocalDateTime produceDate; + + @Schema(description = "天数") + private Long days; + + @Schema(description = "生产线") + private String produceLine; + + @Schema(description = "交货方式") + private String deliveryMethod; + + @Schema(description = "验货日期") + private LocalDateTime inspectionDate; + + @Schema(description = "交货日期") + private LocalDateTime deliverydate; + + @Schema(description = "交货数量") + private Integer deliveryQty; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java index 4933eac..2e886ee 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/customer/CustomerDO.java @@ -51,6 +51,14 @@ public class CustomerDO extends BaseDO { * 联系人手机号 */ private String phone; + /** + * 跟单员 + */ + private String gdperson; + /** + * 销售员 + */ + private String saleperson; /** * 所属地区 */ diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java new file mode 100644 index 0000000..303ba09 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/dataobject/produceorder/ProduceOrderDO.java @@ -0,0 +1,120 @@ +package cn.hangtag.module.oms.dal.dataobject.produceorder; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.hangtag.framework.mybatis.core.dataobject.BaseDO; + +/** + * 生产制单 DO + * + * @author wwb + */ +@TableName("oms_produce_order") +@KeySequence("oms_produce_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProduceOrderDO extends BaseDO { + + /** + * ID + */ + @TableId + private Long id; + /** + * 单据编号 + */ + private String billno; + /** + * 客户ID + */ + private Integer customerId; + /** + * 订单号 + */ + private String orderNo; + /** + * 客户编号 + */ + private String customerCode; + /** + * 产品id + */ + private Integer productId; + /** + * 产品编号 + */ + private String productCode; + /** + * 产品名称 + */ + private String productName; + /** + * 合约号 + */ + private Integer saleContractNo; + /** + * 合约日期 + */ + private LocalDateTime contractDate; + /** + * 合约数量 + */ + private Long contractQty; + /** + * 生产数量 + */ + private Long produceQty; + /** + * 交货地点 + */ + private String deliveryPlace; + /** + * 职员 + */ + private String clerk; + /** + * 报告日期 + */ + private LocalDateTime reportDate; + /** + * 生产日期 + */ + private LocalDateTime produceDate; + /** + * 天数 + */ + private Long days; + /** + * 生产线 + */ + private String produceLine; + /** + * 交货方式 + */ + private String deliveryMethod; + /** + * 验货日期 + */ + private LocalDateTime inspectionDate; + /** + * 交货日期 + */ + private LocalDateTime deliverydate; + /** + * 交货数量 + */ + private Integer deliveryQty; + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java index cb8aa9d..9ddcb34 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/brand/BrandMapper.java @@ -31,6 +31,7 @@ public interface BrandMapper extends BaseMapperX { default List selectList(BrandListReqVO reqVO){ return selectList(new LambdaQueryWrapperX() + .in(BrandDO::getId, reqVO.getIds()) .likeIfPresent(BrandDO::getName, reqVO.getName())); } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java new file mode 100644 index 0000000..e7f68ca --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/dal/mysql/produceorder/ProduceOrderMapper.java @@ -0,0 +1,35 @@ +package cn.hangtag.module.oms.dal.mysql.produceorder; + +import java.util.*; + +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.hangtag.framework.mybatis.core.mapper.BaseMapperX; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; +import org.apache.ibatis.annotations.Mapper; +import cn.hangtag.module.oms.controller.admin.produceorder.vo.*; + +/** + * 生产制单 Mapper + * + * @author wwb + */ +@Mapper +public interface ProduceOrderMapper extends BaseMapperX { + + default PageResult selectPage(ProduceOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(ProduceOrderDO::getBillno, reqVO.getBillno()) + .eqIfPresent(ProduceOrderDO::getOrderNo, reqVO.getOrderNo()) + .eqIfPresent(ProduceOrderDO::getCustomerCode, reqVO.getCustomerCode()) + .eqIfPresent(ProduceOrderDO::getSaleContractNo, reqVO.getSaleContractNo()) + .betweenIfPresent(ProduceOrderDO::getReportDate, reqVO.getReportDate()) + .betweenIfPresent(ProduceOrderDO::getProduceDate, reqVO.getProduceDate()) + .eqIfPresent(ProduceOrderDO::getProduceLine, reqVO.getProduceLine()) + .eqIfPresent(ProduceOrderDO::getDeliveryMethod, reqVO.getDeliveryMethod()) + .betweenIfPresent(ProduceOrderDO::getInspectionDate, reqVO.getInspectionDate()) + .betweenIfPresent(ProduceOrderDO::getDeliverydate, reqVO.getDeliverydate()) + .orderByDesc(ProduceOrderDO::getId)); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java index 5374810..514a0f3 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerService.java @@ -63,4 +63,6 @@ public interface CustomerService { */ List getCustomerAddressListByCustomerId(Long customerId); + CustomerDO getCustomerByUserId(Long userId); + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java index 6abc9b8..969aac3 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customer/CustomerServiceImpl.java @@ -112,6 +112,12 @@ public class CustomerServiceImpl implements CustomerService { return customerAddressMapper.selectListByCustomerId(customerId); } + @Override + public CustomerDO getCustomerByUserId(Long userId) { + CustomerDO customerDO = customerMapper.selectOne(CustomerDO::getUserId, userId); + return customerDO; + } + private void createCustomerAddressList(Long customerId, List list) { list.forEach(o -> o.setCustomerId(customerId)); customerAddressMapper.insertBatch(list); diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandService.java index 6b8dcc7..e59c5de 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandService.java @@ -53,4 +53,6 @@ public interface CustomerBrandService { PageResult getCustomerBrandPage(CustomerBrandPageReqVO pageReqVO); void assignCustomerBrand(Long customerId, Set brandIds); + + List getListByCustomerId(Long customerId); } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandServiceImpl.java index 49b6e8f..f85ab0a 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/customerbrand/CustomerBrandServiceImpl.java @@ -104,4 +104,9 @@ public class CustomerBrandServiceImpl implements CustomerBrandService { } } + @Override + public List getListByCustomerId(Long customerId) { + return customerBrandMapper.selectListByCustomerId(customerId); + } + } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderService.java new file mode 100644 index 0000000..f8871bf --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderService.java @@ -0,0 +1,55 @@ +package cn.hangtag.module.oms.service.produceorder; + +import java.util.*; +import javax.validation.*; +import cn.hangtag.module.oms.controller.admin.produceorder.vo.*; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; + +/** + * 生产制单 Service 接口 + * + * @author wwb + */ +public interface ProduceOrderService { + + /** + * 创建生产制单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createProduceOrder(@Valid ProduceOrderSaveReqVO createReqVO); + + /** + * 更新生产制单 + * + * @param updateReqVO 更新信息 + */ + void updateProduceOrder(@Valid ProduceOrderSaveReqVO updateReqVO); + + /** + * 删除生产制单 + * + * @param id 编号 + */ + void deleteProduceOrder(Long id); + + /** + * 获得生产制单 + * + * @param id 编号 + * @return 生产制单 + */ + ProduceOrderDO getProduceOrder(Long id); + + /** + * 获得生产制单分页 + * + * @param pageReqVO 分页查询 + * @return 生产制单分页 + */ + PageResult getProduceOrderPage(ProduceOrderPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java new file mode 100644 index 0000000..b75e6ce --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImpl.java @@ -0,0 +1,74 @@ +package cn.hangtag.module.oms.service.produceorder; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import cn.hangtag.module.oms.controller.admin.produceorder.vo.*; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; +import cn.hangtag.framework.common.pojo.PageResult; +import cn.hangtag.framework.common.pojo.PageParam; +import cn.hangtag.framework.common.util.object.BeanUtils; + +import cn.hangtag.module.oms.dal.mysql.produceorder.ProduceOrderMapper; + +import static cn.hangtag.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.hangtag.module.oms.enums.ErrorCodeConstants.*; + +/** + * 生产制单 Service 实现类 + * + * @author wwb + */ +@Service +@Validated +public class ProduceOrderServiceImpl implements ProduceOrderService { + + @Resource + private ProduceOrderMapper produceOrderMapper; + + @Override + public Long createProduceOrder(ProduceOrderSaveReqVO createReqVO) { + // 插入 + ProduceOrderDO produceOrder = BeanUtils.toBean(createReqVO, ProduceOrderDO.class); + produceOrderMapper.insert(produceOrder); + // 返回 + return produceOrder.getId(); + } + + @Override + public void updateProduceOrder(ProduceOrderSaveReqVO updateReqVO) { + // 校验存在 + validateProduceOrderExists(updateReqVO.getId()); + // 更新 + ProduceOrderDO updateObj = BeanUtils.toBean(updateReqVO, ProduceOrderDO.class); + produceOrderMapper.updateById(updateObj); + } + + @Override + public void deleteProduceOrder(Long id) { + // 校验存在 + validateProduceOrderExists(id); + // 删除 + produceOrderMapper.deleteById(id); + } + + private void validateProduceOrderExists(Long id) { + if (produceOrderMapper.selectById(id) == null) { + throw exception(PRODUCE_ORDER_NOT_EXISTS); + } + } + + @Override + public ProduceOrderDO getProduceOrder(Long id) { + return produceOrderMapper.selectById(id); + } + + @Override + public PageResult getProduceOrderPage(ProduceOrderPageReqVO pageReqVO) { + return produceOrderMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/produceorder/ProduceOrderMapper.xml b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/produceorder/ProduceOrderMapper.xml new file mode 100644 index 0000000..5a649fd --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/resources/mapper/produceorder/ProduceOrderMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImplTest.java b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImplTest.java new file mode 100644 index 0000000..f78aaf1 --- /dev/null +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/test/java/cn/hangtag/module/oms/service/produceorder/ProduceOrderServiceImplTest.java @@ -0,0 +1,166 @@ +package cn.hangtag.module.oms.service.produceorder; + +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 cn.hangtag.framework.test.core.ut.BaseDbUnitTest; + +import cn.hangtag.module.oms.controller.admin.produceorder.vo.*; +import cn.hangtag.module.oms.dal.dataobject.produceorder.ProduceOrderDO; +import cn.hangtag.module.oms.dal.mysql.produceorder.ProduceOrderMapper; +import cn.hangtag.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 cn.hangtag.module.oms.enums.ErrorCodeConstants.*; +import static cn.hangtag.framework.test.core.util.AssertUtils.*; +import static cn.hangtag.framework.test.core.util.RandomUtils.*; +import static cn.hangtag.framework.common.util.date.LocalDateTimeUtils.*; +import static cn.hangtag.framework.common.util.object.ObjectUtils.*; +import static cn.hangtag.framework.common.util.date.DateUtils.*; +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.*; + +/** + * {@link ProduceOrderServiceImpl} 的单元测试类 + * + * @author wwb + */ +@Import(ProduceOrderServiceImpl.class) +public class ProduceOrderServiceImplTest extends BaseDbUnitTest { + + @Resource + private ProduceOrderServiceImpl produceOrderService; + + @Resource + private ProduceOrderMapper produceOrderMapper; + + @Test + public void testCreateProduceOrder_success() { + // 准备参数 + ProduceOrderSaveReqVO createReqVO = randomPojo(ProduceOrderSaveReqVO.class).setId(null); + + // 调用 + Long produceOrderId = produceOrderService.createProduceOrder(createReqVO); + // 断言 + assertNotNull(produceOrderId); + // 校验记录的属性是否正确 + ProduceOrderDO produceOrder = produceOrderMapper.selectById(produceOrderId); + assertPojoEquals(createReqVO, produceOrder, "id"); + } + + @Test + public void testUpdateProduceOrder_success() { + // mock 数据 + ProduceOrderDO dbProduceOrder = randomPojo(ProduceOrderDO.class); + produceOrderMapper.insert(dbProduceOrder);// @Sql: 先插入出一条存在的数据 + // 准备参数 + ProduceOrderSaveReqVO updateReqVO = randomPojo(ProduceOrderSaveReqVO.class, o -> { + o.setId(dbProduceOrder.getId()); // 设置更新的 ID + }); + + // 调用 + produceOrderService.updateProduceOrder(updateReqVO); + // 校验是否更新正确 + ProduceOrderDO produceOrder = produceOrderMapper.selectById(updateReqVO.getId()); // 获取最新的 + assertPojoEquals(updateReqVO, produceOrder); + } + + @Test + public void testUpdateProduceOrder_notExists() { + // 准备参数 + ProduceOrderSaveReqVO updateReqVO = randomPojo(ProduceOrderSaveReqVO.class); + + // 调用, 并断言异常 + assertServiceException(() -> produceOrderService.updateProduceOrder(updateReqVO), PRODUCE_ORDER_NOT_EXISTS); + } + + @Test + public void testDeleteProduceOrder_success() { + // mock 数据 + ProduceOrderDO dbProduceOrder = randomPojo(ProduceOrderDO.class); + produceOrderMapper.insert(dbProduceOrder);// @Sql: 先插入出一条存在的数据 + // 准备参数 + Long id = dbProduceOrder.getId(); + + // 调用 + produceOrderService.deleteProduceOrder(id); + // 校验数据不存在了 + assertNull(produceOrderMapper.selectById(id)); + } + + @Test + public void testDeleteProduceOrder_notExists() { + // 准备参数 + Long id = randomLongId(); + + // 调用, 并断言异常 + assertServiceException(() -> produceOrderService.deleteProduceOrder(id), PRODUCE_ORDER_NOT_EXISTS); + } + + @Test + @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解 + public void testGetProduceOrderPage() { + // mock 数据 + ProduceOrderDO dbProduceOrder = randomPojo(ProduceOrderDO.class, o -> { // 等会查询到 + o.setBillno(null); + o.setOrderNo(null); + o.setCustomerCode(null); + o.setSaleContractNo(null); + o.setReportDate(null); + o.setProduceDate(null); + o.setProduceLine(null); + o.setDeliveryMethod(null); + o.setInspectionDate(null); + o.setDeliverydate(null); + }); + produceOrderMapper.insert(dbProduceOrder); + // 测试 billno 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setBillno(null))); + // 测试 orderNo 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setOrderNo(null))); + // 测试 customerCode 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setCustomerCode(null))); + // 测试 saleContractNo 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setSaleContractNo(null))); + // 测试 reportDate 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setReportDate(null))); + // 测试 produceDate 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setProduceDate(null))); + // 测试 produceLine 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setProduceLine(null))); + // 测试 deliveryMethod 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setDeliveryMethod(null))); + // 测试 inspectionDate 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setInspectionDate(null))); + // 测试 deliverydate 不匹配 + produceOrderMapper.insert(cloneIgnoreId(dbProduceOrder, o -> o.setDeliverydate(null))); + // 准备参数 + ProduceOrderPageReqVO reqVO = new ProduceOrderPageReqVO(); + reqVO.setBillno(null); + reqVO.setOrderNo(null); + reqVO.setCustomerCode(null); + reqVO.setSaleContractNo(null); + reqVO.setReportDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setProduceDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setProduceLine(null); + reqVO.setDeliveryMethod(null); + reqVO.setInspectionDate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + reqVO.setDeliverydate(buildBetweenTime(2023, 2, 1, 2023, 2, 28)); + + // 调用 + PageResult pageResult = produceOrderService.getProduceOrderPage(reqVO); + // 断言 + assertEquals(1, pageResult.getTotal()); + assertEquals(1, pageResult.getList().size()); + assertPojoEquals(dbProduceOrder, pageResult.getList().get(0)); + } + +} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/.env.dev b/hangtag-ui/hangtag-ui-admin/.env.dev index 232f1c6..99722b7 100644 --- a/hangtag-ui/hangtag-ui-admin/.env.dev +++ b/hangtag-ui/hangtag-ui-admin/.env.dev @@ -4,12 +4,12 @@ NODE_ENV=production VITE_DEV=true # 请求路径 -VITE_BASE_URL='http://api-dashboard.yudao.iocoder.cn' +VITE_BASE_URL='http://localhost:8080' # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 VITE_UPLOAD_TYPE=server # 上传路径 -VITE_UPLOAD_URL='http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload' +VITE_UPLOAD_URL='http://localhost:8080/admin-api/infra/file/upload' # 接口地址 VITE_API_URL=/admin-api @@ -33,4 +33,4 @@ VITE_OUT_DIR=dist VITE_MALL_H5_DOMAIN='http://mall.yudao.iocoder.cn' # 验证码的开关 -VITE_APP_CAPTCHA_ENABLE=true +VITE_APP_CAPTCHA_ENABLE=false diff --git a/hangtag-ui/hangtag-ui-admin/.env.prod b/hangtag-ui/hangtag-ui-admin/.env.prod index 842ba61..2f36c03 100644 --- a/hangtag-ui/hangtag-ui-admin/.env.prod +++ b/hangtag-ui/hangtag-ui-admin/.env.prod @@ -4,7 +4,7 @@ NODE_ENV=production VITE_DEV=false # 请求路径 -VITE_BASE_URL='http://localhost:48080' +VITE_BASE_URL='http://202.74.40.60:8080' # 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持S3服务 VITE_UPLOAD_TYPE=server diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts index 6dbac2b..9f3c1f4 100644 --- a/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/customer/index.ts @@ -6,6 +6,8 @@ export interface CustomerVO { company: string // 公司 email: string // 邮箱 contacts: string // 联系人 + gdperson: string // 跟单员 + saleperson: string // 销售员 phone: string // 联系人手机号 areaId: number // 所在地 areaName?: string // 所在地名称 diff --git a/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts b/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts new file mode 100644 index 0000000..c3099f5 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/api/oms/produceorder/index.ts @@ -0,0 +1,59 @@ +import request from '@/config/axios' + +// 生产制单 VO +export interface ProduceOrderVO { + id: number // ID + billno: string // 单据编号 + orderNo: string // 订单号 + customerCode: string // 客户编号 + productId: number // 产品id + productCode: string // 产品编号 + productName: string // 产品名称 + saleContractNo: number // 合约号 + contractDate: Date // 合约日期 + contractQty: number // 合约数量 + produceQty: number // 生产数量 + deliveryPlace: string // 交货地点 + clerk: string // 职员 + reportDate: Date // 报告日期 + produceDate: Date // 生产日期 + days: number // 天数 + produceLine: string // 生产线 + deliveryMethod: string // 交货方式 + inspectionDate: Date // 验货日期 + deliverydate: Date // 交货日期 + deliveryQty: number // 交货数量 +} + +// 生产制单 API +export const ProduceOrderApi = { + // 查询生产制单分页 + getProduceOrderPage: async (params: any) => { + return await request.get({ url: `/oms/produce-order/page`, params }) + }, + + // 查询生产制单详情 + getProduceOrder: async (id: number) => { + return await request.get({ url: `/oms/produce-order/get?id=` + id }) + }, + + // 新增生产制单 + createProduceOrder: async (data: ProduceOrderVO) => { + return await request.post({ url: `/oms/produce-order/create`, data }) + }, + + // 修改生产制单 + updateProduceOrder: async (data: ProduceOrderVO) => { + return await request.put({ url: `/oms/produce-order/update`, data }) + }, + + // 删除生产制单 + deleteProduceOrder: async (id: number) => { + return await request.delete({ url: `/oms/produce-order/delete?id=` + id }) + }, + + // 导出生产制单 Excel + exportProduceOrder: async (params) => { + return await request.download({ url: `/oms/produce-order/export-excel`, params }) + }, +} \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue index da4f9d8..3e80b2e 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/CustomerForm.vue @@ -22,6 +22,12 @@ + + + + + + - + @@ -85,6 +91,8 @@ const formData = ref({ email: undefined, contacts: undefined, phone: undefined, + gdperson: undefined, + saleperson: undefined, areaId: undefined, status: undefined, type: undefined, diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue index ada0836..bd67686 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/customer/index.vue @@ -35,7 +35,7 @@ class="!w-240px" /> - + - + \ No newline at end of file diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue new file mode 100644 index 0000000..3352596 --- /dev/null +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/produceorder/index.vue @@ -0,0 +1,318 @@ + + + diff --git a/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue b/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue index 0dfe32b..bf8c6ea 100644 --- a/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue +++ b/hangtag-ui/hangtag-ui-admin/src/views/oms/saleorder/index.vue @@ -2,7 +2,7 @@ - + 搜索 重置 + + + + + + 生产中 + - 新增 + 已完成 导出 - - + + + + + - - + + + + + - - - + +