From 0d6f2b6dca13715b44db5e5b6befd9191d8d1443 Mon Sep 17 00:00:00 2001 From: qinyulong Date: Fri, 27 Feb 2026 17:29:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A4=96=E5=8D=8F=E7=AE=A1=E7=90=86=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2=E5=A4=96=E5=8D=8F=E5=8E=82=E5=95=86=202.=E5=A4=96?= =?UTF-8?q?=E5=8D=8F=E7=BB=93=E7=AE=97=E6=8A=A5=E4=BB=B7=E5=8D=95=E9=80=9A?= =?UTF-8?q?=E8=BF=87erp=E6=9F=A5=E8=AF=A2=203.=E8=B0=83=E7=94=A8erp?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E5=A4=96=E5=8D=8F=E8=AE=A2=E5=8D=95=204.?= =?UTF-8?q?=E5=A4=96=E5=8D=8F=E5=AE=A1=E6=89=B9=E9=80=9A=E8=BF=87=205.?= =?UTF-8?q?=E5=A4=96=E5=8D=8F=E5=B7=A5=E5=BA=8F=206.=E5=A4=96=E5=8D=8F?= =?UTF-8?q?=E9=A2=86=E6=96=99=E5=8D=95=E6=89=93=E5=8D=B0=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/oem/pojo/excel/OemProcessExcel.java | 14 +- .../desk/oem/pojo/excel/OemProcessImport.java | 31 +++ .../request/MaterialRequisitionQuery.java | 44 ++++ .../oem/pojo/request/PriceSheetQuery.java | 57 +++++ .../oem/pojo/vo/MaterialRequisitionVO.java | 67 ++++++ .../desk/oem/pojo/vo/OemProcessVO.java | 6 + .../desk/oem/pojo/vo/PriceSheetVO.java | 141 +++++++++++++ .../desk/order/pojo/entity/YieldOrder.java | 13 ++ .../system/pojo/enums/DictEnum.java | 4 + .../erpdata/feign/IErpDataOemClient.java | 48 +++++ .../feign/IErpDataOemClientFallback.java | 29 +++ .../oem/controller/OemOrderController.java | 106 ++++++++-- .../oem/controller/OemProcessController.java | 68 ++++-- .../desk/oem/mapper/OemAndAbilityMapper.xml | 2 +- .../desk/oem/mapper/OemMeritsMapper.xml | 10 +- .../desk/oem/mapper/OemProcessMapper.java | 4 +- .../desk/oem/mapper/OemProcessMapper.xml | 30 ++- .../desk/oem/mapper/OemSpecialProMapper.xml | 2 +- .../desk/oem/mapper/OemStatementMapper.xml | 8 +- .../desk/oem/mapper/OemTaskBillMapper.xml | 2 +- .../desk/oem/service/IOemProcessService.java | 9 + .../impl/OemAndAbilityServiceImpl.java | 12 +- .../service/impl/OemProcessServiceImpl.java | 63 +++++- .../produce/mapper/WorkOrderRunMapper.java | 11 + .../produce/mapper/WorkOrderRunMapper.xml | 53 ++++- .../produce/service/IPlateAroundService.java | 11 + .../produce/service/IWorkOrderRunService.java | 24 ++- .../produce/service/IWorkOrderService.java | 13 ++ .../service/impl/PlateAroundServiceImpl.java | 14 ++ .../service/impl/WorkOrderRunServiceImpl.java | 196 ++++++++++++------ .../service/impl/WorkOrderServiceImpl.java | 56 +++++ .../Excel/oem/外协工序模板.xls | Bin 0 -> 19968 bytes .../erpdata/feign/ErpDataOemClientImpl.java | 56 +++++ .../erpdata/mapper/ErpDataOemMapper.java | 29 +++ .../erpdata/mapper/ErpDataOemMapper.xml | 39 ++++ .../erpdata/service/IErpDataOemService.java | 32 +++ .../service/impl/ErpDataOemServiceImpl.java | 61 ++++++ 37 files changed, 1225 insertions(+), 140 deletions(-) create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/MaterialRequisitionQuery.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/MaterialRequisitionVO.java create mode 100644 blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java create mode 100644 blade-service/blade-desk/src/main/resources/Excel/oem/外协工序模板.xls create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataOemClientImpl.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessExcel.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessExcel.java index 8cc79263..ce963581 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessExcel.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessExcel.java @@ -33,19 +33,19 @@ public class OemProcessExcel implements Serializable { * 编码 */ @ColumnWidth(20) - @ExcelProperty("编码") + @ExcelProperty("工序编码") private String oemProcessCode; /** - * 工序ID + * 工序 */ @ColumnWidth(20) - @ExcelProperty("工序ID") - private BigDecimal processId; + @ExcelProperty("工序") + private String paName; /** - * 工艺IDS + * 工艺能力 */ @ColumnWidth(20) - @ExcelProperty("工艺IDS") - private String craftIds; + @ExcelProperty("工艺能力") + private String caNames; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java new file mode 100644 index 00000000..1b077ef6 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/excel/OemProcessImport.java @@ -0,0 +1,31 @@ +package org.springblade.desk.oem.pojo.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.core.mp.base.BaseEntity; + +/** + * 外协工序模板导入 + * + * @author qyl + * @since 2026年2月26日 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class OemProcessImport extends BaseEntity { + + /** + * 工序code + */ + @ExcelProperty(index = 0) + private String paCode; + /** + * 工艺能力codes + */ + @ExcelProperty(index = 1) + private String caCodes; + + private Long processId; + private String craftIds; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/MaterialRequisitionQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/MaterialRequisitionQuery.java new file mode 100644 index 00000000..a2a05d8c --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/MaterialRequisitionQuery.java @@ -0,0 +1,44 @@ +package org.springblade.desk.oem.pojo.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +/** + * 领料单打印检索条件 + */ +@Data +public class MaterialRequisitionQuery { + + /** + * 外协厂商ID + */ + @Schema(description = "外协厂商ID") + @NotNull(message = "外协厂商不能为空") + private Long ocId; + /** + * 外协单号 + */ + @Schema(description = "外协单号") + private String wxNo; + /** + * 分派日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "分派日期开始") + private LocalDate planIssuanceTimeStart; + /** + * 分派日期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "分派日期结束") + private LocalDate planIssuanceTimeEnd; + /** + * 勾选打印IDS + */ + @Schema(description = "勾选打印IDS,传字符串1,2,3") + private String wpIds; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java new file mode 100644 index 00000000..c2c09cd4 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/request/PriceSheetQuery.java @@ -0,0 +1,57 @@ +package org.springblade.desk.oem.pojo.request; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +/** + * 报价单检索条件 + */ +@Data +public class PriceSheetQuery { + + /** + * 外协厂商CODE + */ + @Schema(description = "外协厂商CODE") + private String ocCode; + /** + * 零件号 + */ + @Schema(description = "零件号") + private String partCode; + /** + * 工序CODE + */ + @Schema(description = "工序CODE") + private String ppsCode; + /** + * 生产标识 + */ + @Schema(description = "生产标识") + private String productIdent; + /** + * 镀种描述 + */ + @Schema(description = "镀种描述") + private String plate; + /** + * 有效期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "有效期开始") + private LocalDate inDateStart; + /** + * 有效期 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + @Schema(description = "有效期结束") + private LocalDate inDateEnd; + /** + * 备注 + */ + @Schema(description = "备注") + private String memo; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/MaterialRequisitionVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/MaterialRequisitionVO.java new file mode 100644 index 00000000..6ecac6bd --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/MaterialRequisitionVO.java @@ -0,0 +1,67 @@ +package org.springblade.desk.oem.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.produce.pojo.entity.WorkOrderRun; +import org.springblade.desk.produce.pojo.enums.WorkOrderRunStatusEnum; + +import java.io.Serial; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 领料单打印 + * + * @author qyl + * @since 2026年2月26日 + */ +@Data +@Schema(description = "领料单打印实体类") +public class MaterialRequisitionVO { + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "外协定单号") + private String wxNo; + + @Schema(description = "零件号") + private String partCode; + + @Schema(description = "批次号") + private String batchNo; + + @Schema(description = "生产标识") + private String productIdent; + + @Schema(description = "计划下达时间") + private Date planIssuanceTime; + + @Schema(description = "数量") + private Long makeQty; + + @Schema(description = "协作计划工序") + private String planningProcess; + + @Schema(description = "计划类型") + private String planningType; + + @Schema(description = "主工序代码") + private String mainProcessCode; + + @Schema(description = "单批次面积") + private String area; + + @Schema(description = "镀种信息") + private String plate; + + @Schema(description = "备注") + private String memo; + + @Schema(description = "外协厂家名称") + private String ocName; + + @Schema(description = "车间作业计划ID") + private String wpId; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java index 87c1b4b1..496eaecc 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/OemProcessVO.java @@ -1,5 +1,6 @@ package org.springblade.desk.oem.pojo.vo; +import io.swagger.v3.oas.annotations.media.Schema; import org.springblade.desk.oem.pojo.entity.OemProcessEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -18,4 +19,9 @@ public class OemProcessVO extends OemProcessEntity { @Serial private static final long serialVersionUID = 1L; + @Schema(description = "工序名称") + private String paName; + + @Schema(description = "工艺能力名称集合") + private String caNames; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java new file mode 100644 index 00000000..1053366e --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java @@ -0,0 +1,141 @@ +package org.springblade.desk.oem.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 报价单VO + */ +@Data +public class PriceSheetVO { + + /** + * 厂家代码 + */ + @Schema(description = "厂家代码") + private String splycode; + + /** + * 厂家名称 + */ + @Schema(description = "厂家名称") + private String splyname; + + /** + * 物料号 + */ + @Schema(description = "物料号") + private String prtno; + + /** + * 物料名称 + */ + @Schema(description = "物料名称") + private String prtdesc; + + /** + * 生产标识 + */ + @Schema(description = "生产标识") + private String prtlotno; + + /** + * 工序内容 + */ + @Schema(description = "工序内容") + private String gxinfo; + + /** + * 阶梯价标识 + */ + @Schema(description = "阶梯价标识") + private String stairflag; + + /** + * 阶梯上限 + */ + @Schema(description = "阶梯上限") + private String lower; + + /** + * 阶梯下限 + */ + @Schema(description = "阶梯下限") + private String upper; + + /** + * 不含税价格 + */ + @Schema(description = "不含税价格") + private String price; + + /** + * 计量单位 + */ + @Schema(description = "计量单位") + private String prtum; + + /** + * 工作订单号 + */ + @Schema(description = "工作订单号") + private String wono; + + /** + * 生效日期 + */ + @Schema(description = "生效日期") + private String startdat; + + /** + * 有效日期 + */ + @Schema(description = "有效日期") + private String validdat; + + /** + * 备注 + */ + @Schema(description = "备注") + private String remark; + + /** + * 报价单号 + */ + @Schema(description = "报价单号") + private String seqid; + + /** + * 制单人 + */ + @Schema(description = "制单人") + private String inputman; + + /** + * 制单时间 + */ + @Schema(description = "制单时间") + private String inputdat; + + /** + * 价格类型 + */ + @Schema(description = "价格类型") + private String pricetype; + + /** + * 报价单状态 + */ + @Schema(description = "报价单状态") + private String validflag; + /** + * 镀种描述 + */ + @Schema(description = "镀种描述") + private String coating_desc; + /** + * 阶梯价计量单位 + */ + @Schema(description = "阶梯价计量单位") + private String stairunit; +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java index c3624806..15aa7874 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrder.java @@ -52,6 +52,19 @@ public class YieldOrder extends BaseEntity { * 已关闭 */ public static Integer CUR_STATUS_VOIDED = 21; + + /** + * 热表 + */ + public static Integer BUSINESS_TYPE_RB = 1; + /** + * 外协 + */ + public static Integer BUSINESS_TYPE_WX = 2; + /** + * 烧结 + */ + public static Integer BUSINESS_TYPE_SJ = 3; /** * 热表订单 */ diff --git a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java index 457a0a45..4a149cfd 100644 --- a/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java +++ b/blade-service-api/blade-dict-api/src/main/java/org/springblade/system/pojo/enums/DictEnum.java @@ -105,6 +105,10 @@ public enum DictEnum { * 设备服役状态 */ EQUIPMENT_USED("equipment_used"), + /** + * 加工周期 + */ + PROCESS_CYCLE("process_cycle"), ; final String name; diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java new file mode 100644 index 00000000..84dca26e --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClient.java @@ -0,0 +1,48 @@ +package org.springblade.erpdata.feign; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springblade.common.constant.LauncherConstant; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.vo.PriceSheetVO; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * 外协相关erp操作Feign接口类 + * + * @author qyl + * @since 2026-02-27 + */ +@FeignClient( + value = LauncherConstant.APPLICATION_ERP_DATA_NAME, + fallback = IErpDataOemClientFallback.class +) +public interface IErpDataOemClient { + + String API_PREFIX = "/feign/erpdata/oem"; + String CLOSE_ERP_ORDER = API_PREFIX + "/closeErpOrder"; + String PRICE_SHEET_DATA = API_PREFIX + "/priceSheetData"; + + /** + * 关闭erp外协订单 + * + * @param woCode + * @param memo + */ + @GetMapping(CLOSE_ERP_ORDER) + void closeErpOrder(@RequestParam("woCode") String woCode, @RequestParam("memo") String memo); + + /** + * 报价单查询 + * + * @param query + */ + @GetMapping(PRICE_SHEET_DATA) + R> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query); + +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java new file mode 100644 index 00000000..658424e4 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataOemClientFallback.java @@ -0,0 +1,29 @@ +package org.springblade.erpdata.feign; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.vo.PriceSheetVO; +import org.springframework.stereotype.Component; + +/** + * Feign失败配置 + * + * @author qyl + * @since 2026-02-27 + */ +@Component +public class IErpDataOemClientFallback implements IErpDataOemClient { + + @Override + public void closeErpOrder(String woCode, String memo) { + R.fail("关闭erp外协订单 失败"); + } + + @Override + public R> priceSheetData(PriceSheetQuery priceSheetQuery, Query query) { + return R.fail("查询报价单 失败"); + } + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java index 8e6b261a..a7b63506 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemOrderController.java @@ -1,28 +1,29 @@ package org.springblade.desk.oem.controller; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.AllArgsConstructor; +import org.apache.commons.lang3.time.DateFormatUtils; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; -import org.springblade.desk.oem.pojo.entity.OemMeritsEntity; +import org.springblade.desk.basic.pojo.entity.Oem; +import org.springblade.desk.basic.service.IOemService; import org.springblade.desk.oem.pojo.excel.OemOrderExcel; -import org.springblade.desk.oem.pojo.request.OemApproval; -import org.springblade.desk.oem.pojo.request.OemApprovalQuery; -import org.springblade.desk.oem.pojo.request.OemOrderQuery; -import org.springblade.desk.oem.pojo.request.OemTakeBack; -import org.springblade.desk.oem.pojo.vo.OemApprovalVO; -import org.springblade.desk.oem.pojo.vo.OemMeritsVO; -import org.springblade.desk.oem.pojo.vo.OemOrderVO; -import org.springblade.desk.oem.wrapper.OemMeritsWrapper; +import org.springblade.desk.oem.pojo.request.*; +import org.springblade.desk.oem.pojo.vo.*; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.pojo.entity.WorkOrder; @@ -31,12 +32,14 @@ import org.springblade.desk.produce.pojo.vo.WorkOrderVO; import org.springblade.desk.produce.service.IWorkOrderRunService; import org.springblade.desk.produce.service.IWorkOrderService; import org.springblade.desk.produce.wrapper.WorkOrderWrapper; +import org.springblade.erpdata.feign.IErpDataOemClient; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.User; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.List; +import java.util.*; /** @@ -52,7 +55,7 @@ import java.util.List; public class OemOrderController extends BladeController { @Autowired - IWorkOrderRunService iWorkOrderRunService; + IWorkOrderRunService workOrderRunService; @Autowired IWorkOrderService workOrderService; @@ -60,6 +63,12 @@ public class OemOrderController extends BladeController { @Autowired IYieldOrderService yieldOrderService; + @Autowired + IOemService oemService; + + @Resource + private IErpDataOemClient erpDataOemClient; + /** * 加载外协订单 自定义分页 */ @@ -67,7 +76,7 @@ public class OemOrderController extends BladeController { @ApiOperationSupport(order = 1) @Operation(summary = "外协订单分页", description = "") public R> queryOemOrder(OemOrderQuery oemOrderQuery, Query query) { - IPage pages = iWorkOrderRunService.queryOemOrder(Condition.getPage(query), oemOrderQuery); + IPage pages = workOrderRunService.queryOemOrder(Condition.getPage(query), oemOrderQuery); return R.data(pages); } @@ -78,7 +87,7 @@ public class OemOrderController extends BladeController { @ApiOperationSupport(order = 2) @Operation(summary = "协订单收回", description = "") public R oemTakeBack(@Valid @RequestBody OemTakeBack oemTakeBack) { - return iWorkOrderRunService.oemTakeBack(oemTakeBack); + return workOrderRunService.oemTakeBack(oemTakeBack); } @@ -89,7 +98,7 @@ public class OemOrderController extends BladeController { @ApiOperationSupport(order = 3) @Operation(summary = "外协审批分页", description = "") public R> queryOemApproval(@Valid OemApprovalQuery approvalQuery, Query query) { - IPage pages = iWorkOrderRunService.queryOemApproval(Condition.getPage(query), approvalQuery); + IPage pages = workOrderRunService.queryOemApproval(Condition.getPage(query), approvalQuery); return R.data(pages); } @@ -100,7 +109,7 @@ public class OemOrderController extends BladeController { @ApiOperationSupport(order = 4) @Operation(summary = "审批", description = "") public R approval(@Valid @RequestBody OemApproval oemApproval) throws Exception { - return iWorkOrderRunService.approval(oemApproval); + return workOrderRunService.approval(oemApproval); } /** @@ -110,7 +119,7 @@ public class OemOrderController extends BladeController { @ApiOperationSupport(order = 5) @Operation(summary = "外协分批准备数据", description = "worId") public R detail(@PathVariable Long worId) { - WorkOrderRun oldWorkOrderRun = iWorkOrderRunService.getById(worId); + WorkOrderRun oldWorkOrderRun = workOrderRunService.getById(worId); WorkOrder oldWorkOrder = workOrderService.getById(oldWorkOrderRun.getWoId()); YieldOrder yieldOrder = yieldOrderService.getById(oldWorkOrder.getYoId()); // 创建新的分批订单对象 @@ -124,6 +133,35 @@ public class OemOrderController extends BladeController { return R.data(WorkOrderWrapper.build().entityVO(newWorkOrder)); } + /** + * 更改外协厂商 + */ + @PostMapping("/changeOemManufacturer") + @ApiOperationSupport(order = 6) + @Operation(summary = "更改外协厂商", description = "") + public R changeOemManufacturer(@Parameter(description = "车间运行订单ID", required = true) @RequestParam Long worId, + @Parameter(description = "外协厂商ID", required = true) @RequestParam Long ocId) { + return workOrderRunService.changeOemManufacturer(worId, ocId); + } + + /** + * 报价单 自定义分页 + */ + @GetMapping("/priceSheetData") + @ApiOperationSupport(order = 7) + @Operation(summary = "报价单分页", description = "传入mesOemStatement") + public R> priceSheetData(PriceSheetQuery priceSheetQuery, Query query) { + R> pageR = erpDataOemClient.priceSheetData(priceSheetQuery, query); + Page data = pageR.getData(); + Page pages = new Page<>(); + // 复制分页属性 + pages.setRecords(data.getRecords()); + pages.setTotal(data.getTotal()); + pages.setCurrent(data.getCurrent()); + pages.setSize(data.getSize()); + pages.setPages(data.getPages()); + return R.data(pages); + } /** * 外协订单导出数据 */ @@ -132,7 +170,7 @@ public class OemOrderController extends BladeController { @Operation(summary = "外协订单导出数据", description = "") public void exportPostHandle(OemOrderQuery oemOrderQuery, Query query, HttpServletResponse response) { query.setSize(99999); - IPage pages = iWorkOrderRunService.queryOemOrder(Condition.getPage(query), oemOrderQuery); + IPage pages = workOrderRunService.queryOemOrder(Condition.getPage(query), oemOrderQuery); List list = pages.getRecords(); List excels = new ArrayList<>(); for (OemOrderVO oemOrderVO : list) { @@ -143,5 +181,37 @@ public class OemOrderController extends BladeController { ExcelUtil.export(response, "外协订单" + DateUtil.time(), "外协订单", excels, OemOrderExcel.class); } + /** + * 领料单打印列表 自定义分页 + */ + @GetMapping("/oemMaterialRequisitionPage") + @ApiOperationSupport(order = 12) + @Operation(summary = "领料单打印列表", description = "") + public R> oemMaterialRequisitionPage(@Valid MaterialRequisitionQuery materialRequisitionQuery, Query query) { + IPage pages = workOrderRunService.exportOemMaterialRequisition(Condition.getPage(query), materialRequisitionQuery); + return R.data(pages); + } + /** + * 领料单打印 + */ + @PostMapping("/print-oemMaterialRequisition") + @ApiOperationSupport(order = 12) + @Operation(summary = "领料单打印", description = "") + public String printOemMaterialRequisition(@Valid @RequestBody MaterialRequisitionQuery materialRequisitionQuery, Query query) { + IPage pages = workOrderRunService.exportOemMaterialRequisition(Condition.getPage(query), materialRequisitionQuery); + Oem oem = oemService.getById(materialRequisitionQuery.getOcId()); + User user = UserCache.getUser(AuthUtil.getUser().getUserId()); + Map result = new HashMap<>(); + result.put("title", "外协计划明细"); + result.put("picture", ""); + result.put("printNo", ""); + result.put("printUser", user.getRealName()); + result.put("printDate", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); + result.put("oemName", oem.getAbbreviation()); + result.put("data", pages.getRecords()); + + //todo:qyl打印后需更改相关车间订单信息,后续确认具体方案 + return JSONObject.toJSONString(result); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java index 4526fc09..c7f8ec17 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/controller/OemProcessController.java @@ -13,7 +13,15 @@ import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; +import org.springblade.desk.basic.util.ExcelExtUtil; +import org.springblade.desk.oem.pojo.excel.OemAndAbilityImport; +import org.springblade.desk.oem.pojo.excel.OemMeritsExcel; import org.springblade.desk.oem.pojo.excel.OemProcessExcel; +import org.springblade.desk.oem.pojo.excel.OemProcessImport; +import org.springblade.desk.oem.pojo.vo.OemMeritsVO; +import org.springframework.beans.BeanUtils; +import org.springframework.core.io.Resource; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -26,10 +34,12 @@ import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.tool.constant.BladeConstant; +import java.util.ArrayList; import java.util.Map; import java.util.List; import jakarta.servlet.http.HttpServletResponse; +import org.springframework.web.multipart.MultipartFile; /** * 外协工序 控制器 @@ -56,17 +66,6 @@ public class OemProcessController extends BladeController { return R.data(OemProcessWrapper.build().entityVO(detail)); } - /** - * 外协工序 分页 - */ - @GetMapping("/list") - @ApiOperationSupport(order = 2) - @Operation(summary = "分页", description = "传入mesOemProcess") - public R> list(@Parameter(hidden = true) @RequestParam Map mesOemProcess, Query query) { - IPage pages = mesOemProcessService.page(Condition.getPage(query), Condition.getQueryWrapper(mesOemProcess, OemProcessEntity.class)); - return R.data(OemProcessWrapper.build().pageVO(pages)); - } - /** * 外协工序 自定义分页 */ @@ -125,14 +124,45 @@ public class OemProcessController extends BladeController { @GetMapping("/export-mesOemProcess") @ApiOperationSupport(order = 9) @Operation(summary = "导出数据", description = "传入mesOemProcess") - public void exportOemProcess(@Parameter(hidden = true) @RequestParam Map mesOemProcess, BladeUser bladeUser, HttpServletResponse response) { - QueryWrapper queryWrapper = Condition.getQueryWrapper(mesOemProcess, OemProcessEntity.class); - //if (!AuthUtil.isAdministrator()) { - // queryWrapper.lambda().eq(OemProcess::getTenantId, bladeUser.getTenantId()); - //} - //queryWrapper.lambda().eq(OemProcessEntity::getIsDeleted, BladeConstant.DB_NOT_DELETED); - List list = mesOemProcessService.exportOemProcess(queryWrapper); - ExcelUtil.export(response, "外协工序数据" + DateUtil.time(), "外协工序数据表", list, OemProcessExcel.class); + public void exportOemProcess(OemProcessVO mesOemProcess, Query query, BladeUser bladeUser, HttpServletResponse response) { + query.setSize(99999); + IPage pages = mesOemProcessService.selectOemProcessPage(Condition.getPage(query), mesOemProcess); + List list = pages.getRecords(); + List excels = new ArrayList<>(); + for (OemProcessVO oemProcessVO : list) { + OemProcessExcel excel = new OemProcessExcel(); + BeanUtils.copyProperties(oemProcessVO, excel); + excels.add(excel); + } + ExcelUtil.export(response, "外协工序数据" + DateUtil.time(), "外协工序数据表", excels, OemProcessExcel.class); } + /** + * 下载Excel模板 + */ + @GetMapping("/downloadExcelTemplate") + @ApiOperationSupport(order = 10) + @Operation(summary = "下载Excel模板", description = "") + public ResponseEntity downloadExcelTemplate() { + return ExcelExtUtil.downloadXlsTemplate( + "Excel/oem/外协工序模板.xls", + "外协工序维护模板.xls"); + } + + /** + * 导入Excel + */ + @PostMapping("/importExcel") + @ApiOperationSupport(order = 11) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + R checkR = ExcelExtUtil.importExcelCheck(file); + if (checkR != null) { + return checkR; + } + List importList = ExcelUtil.read( + file, 0, 1, OemProcessImport.class + ); + return mesOemProcessService.saveExcelData(importList); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemAndAbilityMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemAndAbilityMapper.xml index 89cf0ec9..bbef7423 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemAndAbilityMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemAndAbilityMapper.xml @@ -31,7 +31,7 @@ pa.code AS ca_code, pa.name AS ca_name from MES_OEM_AND_ABILITY oaa - LEFT JOIN BA_OEM oem ON oaa.oc_id = oem.id + LEFT JOIN BS_OEM oem ON oaa.oc_id = oem.id LEFT JOIN BA_PROCESS_ABILITY pa ON oaa.ca_id = pa.id where oaa.is_deleted = 0 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml index db719e76..bea568ad 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemMeritsMapper.xml @@ -71,17 +71,17 @@ om.*, oem.oc_name AS oem_name, oem.code AS oem_code, - pa.code AS ca_code, - pa.name AS ca_name + ca.code AS ca_code, + ca.name AS ca_name from MES_OEM_MERITS om - LEFT JOIN BA_OEM oem ON om.oc_id = oem.id - LEFT JOIN BA_PROCESS_ABILITY pa ON om.ca_id = pa.id + LEFT JOIN BS_OEM oem ON om.oc_id = oem.id + LEFT JOIN BS_CRAFT_ABILITY ca ON om.ca_id = ca.id where om.is_deleted = 0 AND oem.oc_name LIKE CONCAT('%', CONCAT(#{query.oemName}, '%')) - AND pa.id = #{query.caId} + AND ca.id = #{query.caId} AND om.OM_STATUS IN diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.java index 8eb43757..774ea12f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.java @@ -22,10 +22,10 @@ public interface OemProcessMapper extends BaseMapper { * 自定义分页 * * @param page 分页参数 - * @param mesOemProcess 查询参数 + * @param query 查询参数 * @return List */ - List selectOemProcessPage(IPage page, OemProcessVO mesOemProcess); + List selectOemProcessPage(IPage page, OemProcessVO query); /** diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml index 878b343a..25adf0ba 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemProcessMapper.xml @@ -3,7 +3,7 @@ - + @@ -16,13 +16,35 @@ + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemSpecialProMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemSpecialProMapper.xml index 0819cedd..1cf93a48 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemSpecialProMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemSpecialProMapper.xml @@ -34,7 +34,7 @@ oem.code AS oem_code, bu.REAL_NAME as pro_man_name -- 用户姓名 from MES_OEM_SPECIAL_PRO osp - LEFT JOIN BA_OEM oem ON osp.oc_id = oem.id + LEFT JOIN BS_OEM oem ON osp.oc_id = oem.id LEFT JOIN BLADE_USER bu ON osp.pro_man = bu.id where osp.is_deleted = 0 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml index 803ebd29..d27d7f48 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemStatementMapper.xml @@ -111,7 +111,7 @@ FROM MES_WORK_PLAN a INNER JOIN BS_PROCESS_SET b on a.PPS_ID = b.ID INNER JOIN MES_OEM_PROCESS g ON b.ID = g.PROCESS_ID - INNER JOIN BA_OEM c on a.OC_ID = c.ID + INNER JOIN BS_OEM c on a.OC_ID = c.ID INNER JOIN MES_WORK_ORDER d on a.WO_ID = d.ID INNER JOIN MES_YIELD_ORDER e on d.YO_ID = e.ID INNER JOIN MES_WORK_ORDER_RUN f on d.WOR_ID = f.ID @@ -119,9 +119,9 @@ LEFT JOIN MES_OEM_STATEMENT h ON h.WP_ID = a.ID INNER JOIN BS_CRAFT_ABILITY I on I.ID = a.CA_ID WHERE d.PUT_STORE_TIME is not null - and (g.craft_ids like '%'||i.ID||'%' or g.craft_ids is null) - -- and ((g.bop_name in ('浸保护剂','除镀层','清洗(返修)') and e.po_code not like 'W%') OR g.bop_name not in - ('浸保护剂','除镀层','清洗(返修)')) + AND (g.craft_ids like '%'||i.ID||'%' or g.craft_ids is null) + /*and ((g.bop_name in ('浸保护剂','除镀层','清洗(返修)') and e.po_code not like 'W%') OR g.bop_name not in + ('浸保护剂','除镀层','清洗(返修)'))*/ AND ((h.ROS_STATUS IS NOT NULL) OR ( a.ID NOT IN ( SELECT WP_ID FROM MES_OEM_STATEMENT))) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemTaskBillMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemTaskBillMapper.xml index 4ff9cdff..9f39b8c2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemTaskBillMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/mapper/OemTaskBillMapper.xml @@ -38,7 +38,7 @@ oem.code AS oem_code, bu.REAL_NAME as pro_man_name -- 用户姓名 from MES_OEM_TASK_BILL otb - LEFT JOIN BA_OEM oem ON otb.oc_id = oem.id + LEFT JOIN BS_OEM oem ON otb.oc_id = oem.id LEFT JOIN BLADE_USER bu ON otb.pro_man = bu.id where otb.is_deleted = 0 diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemProcessService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemProcessService.java index 4437da69..1a5d9bb0 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemProcessService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/IOemProcessService.java @@ -1,8 +1,10 @@ package org.springblade.desk.oem.service; import com.baomidou.mybatisplus.core.conditions.Wrapper; +import org.springblade.core.tool.api.R; import org.springblade.desk.oem.pojo.entity.OemProcessEntity; import org.springblade.desk.oem.pojo.excel.OemProcessExcel; +import org.springblade.desk.oem.pojo.excel.OemProcessImport; import org.springblade.desk.oem.pojo.vo.OemProcessVO; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; @@ -34,4 +36,11 @@ public interface IOemProcessService extends BaseService { */ List exportOemProcess(Wrapper queryWrapper); + /** + * 导入 + * + * @param importList + * @return + */ + R saveExcelData(List importList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java index 2ed59396..2952125f 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemAndAbilityServiceImpl.java @@ -4,6 +4,7 @@ import com.alibaba.nacos.common.utils.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.Resource; import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.mapper.CraftAbilityMapper; import org.springblade.desk.basic.mapper.OemMapper; import org.springblade.desk.basic.mapper.ProcessAbilityMapper; import org.springblade.desk.basic.pojo.entity.Oem; @@ -17,6 +18,7 @@ import org.springblade.desk.oem.pojo.vo.OemAndAbilityVO; import org.springblade.desk.oem.mapper.OemAndAbilityMapper; import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.oem.service.IOemAndAbilityService; +import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; @@ -37,7 +39,7 @@ import java.util.stream.Collectors; public class OemAndAbilityServiceImpl extends BaseServiceImpl implements IOemAndAbilityService { @Resource - private ProcessAbilityMapper processAbilityMapper; + private CraftAbilityMapper craftAbilityMapper; @Resource private OemMapper oemMapper; @@ -114,11 +116,11 @@ public class OemAndAbilityServiceImpl extends BaseServiceImpl entity.getCode(), entity -> entity.getId())); //根据工艺编码获取相关工艺 - LambdaQueryWrapper processAbilityLambdaQueryWrapper = new LambdaQueryWrapper<>(); - processAbilityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(caCodeSet), ProcessAbility::getCode, caCodeSet); // [8](@ref) - List processAbilities = processAbilityMapper.selectList(processAbilityLambdaQueryWrapper); + LambdaQueryWrapper processAbilityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + processAbilityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(caCodeSet), CraftAbilityEntity::getCaCode, caCodeSet); // [8](@ref) + List processAbilities = craftAbilityMapper.selectList(processAbilityLambdaQueryWrapper); Map processAbilitiyMap = processAbilities.stream().collect(Collectors.toMap( - entity -> entity.getCode(), + entity -> entity.getCaCode(), entity -> entity.getId())); //组装外协绩效模板 List validList = importList.stream() diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java index b461d840..5ed1f41d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemProcessServiceImpl.java @@ -1,16 +1,28 @@ package org.springblade.desk.oem.service.impl; +import com.alibaba.nacos.common.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import jakarta.annotation.Resource; +import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.desk.basic.mapper.CraftAbilityMapper; +import org.springblade.desk.dashboard.mapper.BsProcessSetMapper; +import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.oem.pojo.entity.OemProcessEntity; import org.springblade.desk.oem.pojo.excel.OemProcessExcel; +import org.springblade.desk.oem.pojo.excel.OemProcessImport; import org.springblade.desk.oem.pojo.vo.OemProcessVO; import org.springblade.desk.oem.mapper.OemProcessMapper; import org.springblade.desk.oem.service.IOemProcessService; +import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseServiceImpl; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * 外协工序 服务实现类 @@ -21,6 +33,12 @@ import java.util.List; @Service public class OemProcessServiceImpl extends BaseServiceImpl implements IOemProcessService { + @Resource + private CraftAbilityMapper craftAbilityMapper; + + @Resource + private BsProcessSetMapper processSetMapper; + @Override public IPage selectOemProcessPage(IPage page, OemProcessVO mesOemProcess) { return page.setRecords(baseMapper.selectOemProcessPage(page, mesOemProcess)); @@ -36,4 +54,47 @@ public class OemProcessServiceImpl extends BaseServiceImpl importList) { + //保存集合 + List saves = new ArrayList<>(); + //工序CODE + Set paCodeSet = importList.stream() + .map(OemProcessImport::getPaCode) + .filter(Objects::nonNull) // 过滤null值 + .collect(Collectors.toSet()); + + //根据工序CODE获取相关工序 + LambdaQueryWrapper processSetEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + processSetEntityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(paCodeSet), BsProcessSetEntity::getCode, paCodeSet); // [8](@ref) + List processSetEntities = processSetMapper.selectList(processSetEntityLambdaQueryWrapper); + Map processSetMap = processSetEntities.stream().collect(Collectors.toMap( + entity -> entity.getCode(), + entity -> entity.getId())); + + //根据工艺能力CODES获取相关工艺能力 + importList.forEach(oemProcessImport -> { + if (StringUtil.isNotBlank(oemProcessImport.getCaCodes())) { + LambdaQueryWrapper craftAbilityEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + Set caCodeSet = Arrays.stream(oemProcessImport.getCaCodes().split(",")) + .collect(Collectors.toCollection(HashSet::new)); + craftAbilityEntityLambdaQueryWrapper.in(CollectionUtils.isNotEmpty(caCodeSet), CraftAbilityEntity::getCaCode, caCodeSet); + List craftAbilityEntities = craftAbilityMapper.selectList(craftAbilityEntityLambdaQueryWrapper); + String caIds = craftAbilityEntities.stream() + .map(entity -> String.valueOf(entity.getId())) + .collect(Collectors.joining(",")); + if (processSetMap.containsKey(oemProcessImport.getPaCode())) { + oemProcessImport.setProcessId(processSetMap.get(oemProcessImport.getPaCode())); + oemProcessImport.setCraftIds(caIds); + OemProcessEntity oemProcessEntity = new OemProcessEntity(); + BeanUtils.copyProperties(oemProcessImport, oemProcessEntity); + oemProcessEntity.setOemProcessCode(oemProcessImport.getPaCode()); + saves.add(oemProcessEntity); + } + } + }); + baseMapper.insert(saves); + return R.success("操作成功"); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java index 86dc3ea1..83fc3530 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.java @@ -3,8 +3,10 @@ package org.springblade.desk.produce.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.oem.pojo.request.MaterialRequisitionQuery; import org.springblade.desk.oem.pojo.request.OemApprovalQuery; import org.springblade.desk.oem.pojo.request.OemOrderQuery; +import org.springblade.desk.oem.pojo.vo.MaterialRequisitionVO; import org.springblade.desk.oem.pojo.vo.OemApprovalVO; import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; @@ -27,6 +29,15 @@ public interface WorkOrderRunMapper extends BaseMapper { */ List selectOemOrderPage(IPage page, @Param("query") OemOrderQuery query); + /** + * 外协领料单打印 + * + * @param page + * @param query + * @return + */ + List selectOemMaterialRequisition(IPage page, @Param("query") MaterialRequisitionQuery query); + /** * 外协审批分页查询 * diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml index 0229d28d..ddbcb338 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkOrderRunMapper.xml @@ -116,7 +116,7 @@ -- 关联调度员 LEFT JOIN blade_user dispatcher_user ON two.dispatcher = dispatcher_user.id --关联外协厂商 - LEFT JOIN BA_OEM oem ON mwor.in_customer = oem.id + LEFT JOIN BS_OEM oem ON mwor.in_customer = oem.id where mwor.IS_DELETED = 0 @@ -225,7 +225,7 @@ - + @@ -273,7 +273,7 @@ -- 关联调度员 LEFT JOIN blade_user proposer_user ON mwor.create_user = proposer_user.id --关联外协厂商 - LEFT JOIN BA_OEM oem ON mwor.in_customer = oem.id + LEFT JOIN BS_OEM oem ON mwor.in_customer = oem.id where mwor.IS_DELETED = 0 @@ -319,4 +319,51 @@ ORDER BY mwor.create_time DESC + + + + + + + + + + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java index 45abe912..fe6bbec3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IPlateAroundService.java @@ -38,4 +38,15 @@ public interface IPlateAroundService extends BaseService { void savePlateFrontEnter(List plateArounds); DsPartEntity getByPartCode(String partCode); + + /** + * 创建镀前入库对象,班组和供应商为空 + * + * @param plateAround + * @param paType + * @param next + * @param aTure + */ + void createPlateAround(Long userId, PlateAround plateAround, Short paType, int next, Boolean aTure); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java index 191e38de..ce9d3162 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderRunService.java @@ -4,10 +4,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; import org.springblade.desk.device.pojo.entity.MeaToolEntity; -import org.springblade.desk.oem.pojo.request.OemApproval; -import org.springblade.desk.oem.pojo.request.OemApprovalQuery; -import org.springblade.desk.oem.pojo.request.OemOrderQuery; -import org.springblade.desk.oem.pojo.request.OemTakeBack; +import org.springblade.desk.oem.pojo.request.*; +import org.springblade.desk.oem.pojo.vo.MaterialRequisitionVO; import org.springblade.desk.oem.pojo.vo.OemApprovalVO; import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.produce.pojo.entity.WorkOrderRun; @@ -52,4 +50,22 @@ public interface IWorkOrderRunService extends BaseService { * @return */ R approval(OemApproval oemApproval) throws Exception; + + /** + * 转外协厂家 + * + * @param worId + * @param ocId + * @return + */ + R changeOemManufacturer(Long worId, Long ocId); + + /** + * 领料单打印 + * + * @param page + * @param materialRequisitionQuery + * @return + */ + IPage exportOemMaterialRequisition(IPage page, MaterialRequisitionQuery materialRequisitionQuery); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java index 78d213a5..72ba4658 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java @@ -118,4 +118,17 @@ public interface IWorkOrderService extends BaseService { * @date 2022-10-29 15:13 */ String nextCode(String code); + + /** + * 更改订单调度员和计划员 + * + * @param workOrder + * @param planner + * @param dispatcher + * @param workOrderRun + * @param oem + * @throws Exception + */ + void maintainOrder(WorkOrder workOrder, Long planner, Long dispatcher, WorkOrderRun workOrderRun, Boolean oem) throws Exception; + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java index ea00923d..52946fc7 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/PlateAroundServiceImpl.java @@ -210,6 +210,20 @@ public class PlateAroundServiceImpl extends BaseServiceImpllambdaQuery().eq(DsPartEntity::getPartCode, partCode)); } + @Override + public void createPlateAround(Long userId, PlateAround plateAround, Short paType, int next, Boolean aTure) { + plateAround.setPaType(paType); + plateAround.setCreateUser(userId); + plateAround.setCreateTime(new Date()); + if (aTure) { + plateAround.setPaCode(this.nextCode(paType, next)); + plateAround.setMakeTime(new Date()); + plateAround.setMakeMan(userId); + } + plateAround = this.updatePrPlateAround(plateAround); + this.save(plateAround); + } + private void savePlateAround(BladeUser user, PlateAround plateAround, Short paType, int next, Boolean aTure) { PlateAround newPa = null; PlateAround oldPa=null; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java index 547b86bd..9c93ce23 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderRunServiceImpl.java @@ -4,22 +4,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; +import org.apache.ibatis.executor.BatchResult; import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.desk.basic.mapper.OemCraftAbilityMapper; import org.springblade.desk.basic.mapper.OemMapper; import org.springblade.desk.basic.mapper.TeamSetMapper; import org.springblade.desk.basic.pojo.entity.Oem; +import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.desk.dashboard.mapper.BsProcessSetMapper; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; -import org.springblade.desk.dashboard.utils.DateUtils; -import org.springblade.desk.oem.pojo.request.OemApproval; -import org.springblade.desk.oem.pojo.request.OemApprovalQuery; -import org.springblade.desk.oem.pojo.request.OemOrderQuery; -import org.springblade.desk.oem.pojo.request.OemTakeBack; +import org.springblade.desk.oem.pojo.request.*; +import org.springblade.desk.oem.pojo.vo.MaterialRequisitionVO; import org.springblade.desk.oem.pojo.vo.OemApprovalVO; import org.springblade.desk.oem.pojo.vo.OemOrderVO; import org.springblade.desk.order.mapper.YieldOrderMapper; @@ -27,9 +28,12 @@ import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.produce.mapper.*; import org.springblade.desk.produce.pojo.entity.*; +import org.springblade.desk.produce.service.IPlateAroundService; import org.springblade.desk.produce.service.IWorkOrderRunService; -import org.springblade.scheduling.pojo.entity.YieldOrderEntity; -import org.springblade.system.cache.UserCache; +import org.springblade.desk.produce.service.IWorkOrderService; +import org.springblade.system.cache.DictCache; +import org.springblade.system.pojo.enums.DictEnum; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,7 +45,6 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.Date; import java.util.List; -import java.util.stream.Collectors; /** * 车间订单运行记录表 服务实现类 @@ -52,32 +55,41 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class WorkOrderRunServiceImpl extends BaseServiceImpl implements IWorkOrderRunService { - @Resource - private WorkOrderRunMapper workOrderRunMapper; + private final WorkOrderRunMapper workOrderRunMapper; - @Resource - private WorkOrderMapper workOrderMapper; + private final WorkOrderMapper workOrderMapper; - @Resource - private WorkPlanMapper workPlanMapper; + private final WorkPlanMapper workPlanMapper; - @Resource - private WorkPlanRunMapper workPlanRunMapper; + private final WorkPlanRunMapper workPlanRunMapper; - @Resource - private PlateAroundMapper plateAroundMapper; + private final PlateAroundMapper plateAroundMapper; - @Resource - private YieldOrderMapper yieldOrderMapper; + private final YieldOrderMapper yieldOrderMapper; - @Resource - private OemMapper oemMapper; + private final OemMapper oemMapper; + + private final BsProcessSetMapper processSetMapper; + + private final TeamSetMapper teamSetMapper; + + private final OemCraftAbilityMapper oemCraftAbilityMapper; + + private IPlateAroundService plateAroundService; + + private IWorkOrderService workOrderService; @Resource - private BsProcessSetMapper processSetMapper; + @Lazy + private void setPostHandleService(IPlateAroundService plateAroundService) { + this.plateAroundService = plateAroundService; + } @Resource - private TeamSetMapper teamSetMapper; + @Lazy + private void setWorkOrderService(IWorkOrderService workOrderService) { + this.workOrderService = workOrderService; + } @Transactional(rollbackFor = Exception.class) @Override @@ -113,7 +125,7 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl() + .eq(WorkPlan::getId, wp.getNextWpId())); + oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper().eq(OemCraftAbilityEntity::getOtherId, nextWp.getOcId()) + .eq(OemCraftAbilityEntity::getCraftAbilityId, nextWp.getCaId())); } else { - oa = bsOemAbilityService.findBsOemAbility(wo.getWorkPlan().getOemCustomer().getOcId(), - wo.getWorkPlan().getBsCraftAbility().getCaId()); + oa = oemCraftAbilityMapper.selectOne(new LambdaQueryWrapper().eq(OemCraftAbilityEntity::getOtherId, wp.getOcId()) + .eq(OemCraftAbilityEntity::getCraftAbilityId, wp.getCaId())); } - //todo 缺少业务配置表 - prWorkOrderService.maintainOrder(wo, oa.getPlanner(), oa.getDispatcher(), workOrderRun, true); + //更改订单调度员和计划员 + workOrderService.maintainOrder(wo, oa.getPlanner(), oa.getDispatcher(), workOrderRun, true); } Date date = DateUtil.plusDays(wo.getSendDownTime(), days); wo.setPlanEndDate(DateUtil.format(date,DateUtil.PATTERN_DATETIME)); //如果当前工序已经报工完成,运行记录的转出供应商取下道工序的加工外协商,反之取当前 if (wp.getStatus().equals(WorkPlan.STATUS_WORK_OK)) { - oemMapper.selectById(wp.getNextWpId()); WorkPlan nextWp = workPlanMapper.selectOne(new LambdaQueryWrapper() .eq(WorkPlan::getId, wp.getNextWpId())); workOrderRun.setInCustomer(nextWp.getOcId()); } else { workOrderRun.setInCustomer(wp.getOcId()); } - //todo 缺少外协工艺表 更新车间订单主责任单位 - prWorkOrderService.updateHostWorkUnit(wo.getId()); + //todo 更新车间订单主责任单位 +// prWorkOrderService.updateHostWorkUnit(wo.getId()); - //转厂内业务 } else { - + //转厂内业务 WorkPlan nextWorkPlan; TeamSet teamSet = null; for (WorkPlanRun wpr : wprList) { @@ -259,10 +275,10 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl workPlans = workPlanMapper.selectList(new LambdaQueryWrapper() @@ -344,23 +361,72 @@ public class WorkOrderRunServiceImpl extends BaseServiceImpl workPlans = workPlanMapper.selectList(new LambdaQueryWrapper() + .eq(WorkPlan::getWoId, workOrder.getId()) + .eq(WorkPlan::getOem, "1")); + + // 查找外协订单的第一道工序 + WorkPlan deliverablePlan = workPlans.stream() + .max(Comparator.comparing(WorkPlan::getOrders)) + .orElse(null); + if (deliverablePlan == null) { + return R.fail("未找到外协第一道工序!"); + } + if (deliverablePlan.getStatus() > WorkPlan.STATUS_NO_START) { + return R.fail("外协第一道工序已接收!"); + } + workOrder.setOcId(ocId); + workOrderMapper.updateById(workOrder); + workPlans.forEach(workPlan -> { + workPlan.setOcId(ocId); + }); + List batchResults = workPlanMapper.insertOrUpdate(workPlans); + // todo 2.在MES更改后同步给ERP + return null; } + @Override + public IPage exportOemMaterialRequisition(IPage page, MaterialRequisitionQuery materialRequisitionQuery) { + List oemMaterialRequisition = baseMapper.selectOemMaterialRequisition(page, materialRequisitionQuery); + return page.setRecords(oemMaterialRequisition); + } + @Override public IPage queryOemOrder(IPage page, OemOrderQuery oemOrderQuery) { List oemOrderVOS = baseMapper.selectOemOrderPage(page, oemOrderQuery); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index cae0208e..944033ec 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.sourceforge.barbecue.Barcode; @@ -16,11 +17,15 @@ import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; +import org.springblade.core.tool.utils.DateUtil; +import org.springblade.core.tool.utils.StringUtil; +import org.springblade.desk.basic.constant.FlowConst; import org.springblade.desk.basic.service.IProcessAbilityService; import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.service.IBsProcessSetService; import org.springblade.desk.dashboard.service.IDsPartService; +import org.springblade.desk.order.mapper.YieldOrderMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.service.IYieldOrderService; @@ -41,6 +46,7 @@ import org.springblade.desk.quality.service.IWorkPlanItemService; import org.springblade.scheduling.pojo.entity.WorkOrderEntity; import org.springblade.erpdata.feign.IErpDataProduceClient; import org.springblade.system.cache.DictCache; +import org.springblade.system.pojo.enums.DictEnum; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -93,6 +99,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl selectWorkOrderPage(IPage page, WorkOrderDTO workOrder) { return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder)); @@ -1014,6 +1022,54 @@ public class WorkOrderServiceImpl extends BaseServiceImplG-~#rxp&LmyLZW&_rCZ2dEYzxom=M2nVB;)XHL2I?v=|X z)$8_H)eu$+BwFN8i5}5mz{Ou{9pP9Y2YKs>L9hD0M6|o zqs?_83nA-4)`x5Wxfx_b$ju=eK?WBfCXh`bw}5O0xg}(C$gLn-K(>Tz1=$*MYshUN z+d#I3EP`wY*&cFR$mmD1{0~y$KU&mik_x{JuthjYfpa?f5-g#4GAG*dK9BK0B*Y^j z<0}%kMaeM^OFk)?5%z!@+?y*fM1EZ+P%Wr5kf%am^Br+a;@s#d+ffW)d zoggHGjD_ozCMY=pf8>jOS5yAjmn)?-QFassZ7d z|E&Q%p)uj<5Thdg4Gj5I%ztk*f}eQmMo=H{sBCbMa;aDUr_U&le8Pc_ib>rWiWu^( zc}yYG2L_x1z`Zg0I>%X7PSuBUb!S<93+yXMzxu!O{DFu1E|+kesrG)5Na%94XIp8x z^10CnV~HL)*`1J?ZuATT0DmL>3A)#(BA9YzU`wiJef#=dRFd&`i-e@3_UiFt z(b*rVdyI{dV@Ic_PE1YA5QR?}El#HRk&xyV$G*M73x@KXxq}tsA>99+q^|uaC;!I9 z8^vzc#!Hq%`(57c3TX2$U>jS70OVV&$NQh5Q z9xM6}r4UMncpkQ+9E{Zsu6STQKFl~RDal~uhq4ybaTkSmj5>A$8@|nco1K$p?coO) zXzL;TUP=q_yptMu04JPBf;jmS63B@!km^TO4@^5M{6tv~ z2)7YfK)-^>Vqaq4)}?J*4}Z9bb)_zC1Z{{8uAt;)!=l9r!XcnpWULutJS>pd0Dz zAL}H&j&-&X*n+-ct*R)cl%<3s0*%8`R*Hgr7&PD($+QC^A{LG^B`Km2*^O)KFCn>) zcTeySwh#Xk7k`J6sg} zIuQkn$|2;^__*uE1;^F10v-&TT{ONN&gzdilcezF`f;V?#F-@pXW`@Snle6ZcieH4 z@{JD`?UBo=0|AwSv)ZczQJo8pGgAs)XkxP5V7UPi(E7)nJQ|*uSY}&hO9Z}@oH!$< z;4C?DM$82_lfkc(k-?&12&l4t)RD$lk<*zIjys7IeYxIff56>ET22!aT25Mi+;Nb> z>2}fn28yELEcsRaN1b1Fru3kSPwPh&?yUwtPz_w>w^BKaO-#%U%)u^ne6WPEjz{e2 z?NewAk;Wz5S*76EKul7&6@?F0n`UAH`WF!$LyE7QPJk2+_|t@DWEyr1d4e@U*^ky) zLRXTd1V;outcJ{}ogy52s6h+{{^l@;;j31_jigVifbsN`Dxl&&sRB0WlPX|n_@oLL zGd`&T28~aufYIcWDqxuTqzV{+KB)o*rY0+NXZaFFAT9O2gcEBmB2L8RHOxX`o+%P# z3E4z2TxmcA-B3LdjBOeaLDy7I1OuT4M9^K;6Tzsd0TFaz^+YgaYCr_tT0IeruYXCT zGNNhgU@+EzNYmEAz@`C_rmcfvQUfAQTL+(DX+WfD>)<0W4Tv;toz_Z3;6^zP(|yOw zyJ_p-LpX&bYKb&$9ozxafJoEUvDJ)7)7BAbMx<%$*l9*Y**fe|5=QB!Lm|6DTcry4 z5Qa6ZvcsN(l9(zLgwg@JY5TYPcMxf>2@y$&E8^mVGbJLbTsr^~?dw#9c%ocE#`VlgCf9+iVXq?)5vU*b zbU94NG$)LLR8pO4xd35>5;d5cx&Bp!MJ&-_iyqcnIQzr)|B)Yj{yU8D(Q2;vV?4*+yPf16h3BCvZBl=B_$;)LIni{sR+e{$%I0fR3_M| zp@nC{RBhn_=(H_l4OJ3KwE}EpF)9Ezqwp#GsI+@*awIxOpKaW(x!|Em)|kXDbooPrn!mPLiw_U z%H$SGQn^yzvVVVPV23n6xqZ;@a!8J{P^xa!1-ClcK>BhvIlB2Y6T$`c8;j|Bk{+VMI2r_Avsl1ddH+q-wKN^E1oWR8z8 z;6f!?Y-7T*gifqcAQ*6YoCBCDZucf|16XuJ0GE6GQnZsuV3ejBtI8`>Ew3efOL$97 zpYXhh2fW%QBCe2wC#UC%V3TCAum@zQD@{CsjYJsR$ zXhO7Zhua^>$Ap`Y7Y84EPCj&Cr}$`#6F>ZNlbeqzHy>{fKJ7XAVCS+_}Te$C8^5m%nx7iyh&S|cAHjr>gne7Gib%n4+b|# z^7z(6V-4Mj=N_R42c866cA(F@&Kt!^QwNH4}zC@$ga5+|6b z@LmjGEJXj3S_e)%o;AFw_hPuLr)%Rv6ZS}u243SvinOPL+Hwe3m}N8`0V(}PoXV3M zO?d(&AkH~LsOGB7moEgzn6==~!jjRlipURRium2#uB z1whhq0dE901hHImbOB4m!qNp%5o;I(XV5%_t4G{W(slEePhBibRj$A{2eMd#bAO!A zpr&wbD{C<>_9?BQ)L4j{E40*#JE2mUp3>bCz7cT;CGg6V9*r3o6WTu@X|Zq;ONv&& zPf^a41-DXUvdG5?`(K;e({9n%MR@NNdJA-W95316DOn1jC=#b2z%AGcLx?Fb6WRObKb z{Xszda`Zs&tZ>QK1HHc*EKf=?D)jsn^l+eJ(`zTE$DBA3BJ1ob^a2$0 zaF}A#bC%O%PLQCD<%Cuqz?{?CGcLgJYeHCg)AoGeu|<$(08)_K;Oyw1AUh- z976IL914J$3H%1YST~9!6ES=(lmTC8;Z-E$1o%D(zaH`;{opDSz7@(~U_=0H3`qi* zC-m}>Jlq+a1^sUdZrc$Z5|bnrXLuF~El3fACp|jSJAWJC?eGnZGORZr)H?`%CwW51 z@Wo&SpL~FCmXJDT9ioj7_#X{lI6^2f&*n|h0~Nqn1|40NOl2rv<$lar6-}cxlUNPy z(AR0wtK2!_Rt1eQ5E76Z{4nE@ zYwzN{!NPV=bI<0VT|ce-hm{WI=YHI~dEooTh^hf0TSVr`F1NiK*Z4n7KW?jATCt*d zbMIZRLpnMHq5Z@2t{ zblZZBRe$*LFLcgqpYt)N`Nc{7?^-<1TjclfTWQ4f$)y`Xf7QHr@Z(6at zSzg@bF(OOX+A{w&d3ASg4oyCGFMn_TG@lWbeNRfvM!pGp(&AcW_ONWwhy%K9p~ zx%qK9=*b6cj<2o6rHhj%y1U_V=EBQgRCqL-^K#bl8CSFVS5;WF%XBX(2zB3(MQWU~ zlkBbUSUgDxc1WOggd&OJA4$9=iXd^%BA2`#qjes*ouw|8zmdN{-P(tWcVtNIuYbt%?0{6>7yZSKK_ zX)c?sxBS$z^=X&nnzJoypH8tjw|_y4`@Mdc*gvc7je=P_O7DqomUg^h_tNFwh{FzF zbeq>>@RMte&JV($cWkfE_v03x_vq1;C$Qh{W=Z!3hS+oyJW=erp?wzK@i9Kp>PfaJ zBlYIbZ`zJHWnK5jo;!)YdZQe}^Y@4KneW_R^z`1_o8#QI^*4sQYk&28os;p}Zf~lx zm#mG<4x3ZxvczX~)<~nVChte}zuzqA()<&4kES-pZECix(wrZx?pbZnuxjt>d!O$pT{5aj+o{6&P*$haRRwGJWLma%S#4wyo7nr= z*9CctG9z0X%vg{(X+eR(?a}OS>~)&36IIyn`_gFa8&ljXCp zYmbkKd8NUpqZYoLeza`xP*?kH_s1de|Q(z*kG|kc>LX;Z|>ZWD|=V7s%-j~k6ul8YB)7};n>~|U-fjm(qhf` zRS~hVfeH3I$9VSjnB+qAD&8chznYaG~Otthbi)rVOXlM3e^UcY9g zt;1HWfQQ9xCe#>~Yjs=RvgTF5ypK!f9bPas_toLl7dDrQ1xB@9dOE&2T-WZ@x_2vT zB5GD7gxO^+yexdR{Y96OzOk2+oDTgGGiyyu#>}n04x_tH&>t(#2#NXO!uLIlqw7!A z)>(FaPLtV)G}Qugm#%)Y7*-^Udw|Pte*by5bvIfliB+N2%meDAW;gsQB=#sS(j`<-{_huvRk5aqT|Z}PLr`$xt^%s-#A z(?5N6Rb6zwTjHU}8^5QWXmk8`|4jSoktKm<*WVv2-v0DgpS#)pmcE~|rd#_4QF3O< z!u22e7tW9zcS@bQEH&<%!Osl7-`<#g+U8E(p=&#=UpR}CH=55c?!E8vvMUqU+co>b zf8vi0H+U{l)tjd;j_2#PGDuD?sD9RG+v5JY6Mx)wORL^tS;_Mu>x=vNITpq5N?kDK z*Wc#%INfF6h+AXMhXgnb`tH@|`>f`8=XSWVy%W9Q5qnBu0_!tz>0LT=mW zL7Q!k>o0g-dt_hlt)WqK*3X|6z9FkI%O#~~-0oqwbe7%jebOuAs^RBTBb`2?EcFKiSZGFcsB7`<(7@cd2pg5Aq{Yh9Q> z+al%7aO0Uq%VKpC9)-5m?KOEx#HJY24*vBw=jLZj(9@4gn$@_|v#iUIVXwPvoLU&x zD(U;$2YRzj#~payHOFLWL-ghmVczQ-Z1$S&9r$ra=S|U>^{u|%H2a$gm9GWM+nhH4 zm7lWl*!s~sw^|Rn;Va}>%rrvM+PSe%}Z}2 zH1B+IO3dui#N``OUJh|sWj-Hh5PI#=iK?)l zKE%gMHkUiP2M7Go@O$Q^!cJRfW;YYeHoW>nU9S$eJvQmWw3K6DGrU^x?Ex6jtYO%5 zWDRWeXikk5jNwf>x<~4N?_oBxF?X^sHTBvN<3;W7&AqbYy4K8JIve@~IrOiqH{9tW zbej`@V&&MQ%U7RkG1}{A&!lZu!mdx3PAED#{!m?haI|^fyxaZ>yGQ2cr~1~n9J8p8 zQ)GLGXeT$%73s|#doL-z^38yEIXnF}EFAQU{f155e>i%jXXB)-wXat3rk!>;KFWCN z4Pv>hUy)?rM?b5)G48hJ!~g8xed6s|+D_}wR93fLwJkz$e%O&Cr|v_;=rNtgcZF9r z)J^vQjgdGefBpI>6JXDO6tz7-pN!cMyCQo&p{QsHW>OiT8R}LN;kPEQA0hO z2HOb~G+x8Jm?=#YF43=#Ha?DrNxe214y~`pr`co`tQJ-==G;&~<^ya#3x;n=)8CyM zD}8rrz&ArORDxYdk`HeNB*TM!LtKEte4h{N9V6=6gj#7B!%Y6e)>l=LqxuEKQSc5F z9QOhV$)zAU)NG%o*$#H<;NMGlUqi`BSP9VoRx*Rao=F|s19l>nYJ(gZ*G_UOPlB8o z*X!WDd_9l~Ka=KB6bSLA(zPJj8NON-wuem1z;z73g*TN30u3R_qSiKqRJRDGXyQH6 zFLw$CcP3Ohw2)V=-<__;$9J~r6&t+<6Y_BhhS$x}2!Lxu5QaBw80v}*gZ+3V*hg4( zVG5y+^c@fGklqP=?f~ad`0=Paq^P(7`YW5PD@fM%apsVN?T`!Ce)tuz%(2auDgi zJZZ!Ko}`k|)GmUU`UjX#`#%ytFazpYmNZcpelSo-`z4q(6!?#aFU+H0hvN%Psw?5( zSKu<`0G|2dA$rQ-A6EhDo_Ivzq1nlux3+rQ2ceVk-$P;%M>Afh@3_wT*UoJ=R z;f=Q%_taAqX@}VeK#by;oFF4K1~OI}1{rzJk=`Q=aeIXhqTnchpO~nA>8S~mMrVXf z8k?LjNSrPg8+kfF?jG(F-rdiqdzhcMcc;*h?tWfgT|z$#^ZE>cA)P$K0fmwe2M{lh z&R(vbUT&Ul9&Vn#o}CnXT!^JX;=#YWWtS7q?;f4t;^mC8u0%=e5$vZ literal 0 HcmV?d00001 diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataOemClientImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataOemClientImpl.java new file mode 100644 index 00000000..efa49dbc --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataOemClientImpl.java @@ -0,0 +1,56 @@ +package org.springblade.erpdata.feign; + + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.Hidden; +import lombok.AllArgsConstructor; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.core.tool.api.R; +import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.vo.PriceSheetVO; +import org.springblade.erpdata.service.IErpDataOemService; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * 外协相关erp操作Feign实现类 + * + * @author qyl + * @serial 2026年2月27日 + */ +@NonDS +@Hidden +@RestController +@AllArgsConstructor +public class ErpDataOemClientImpl implements IErpDataOemClient { + + private final IErpDataOemService erpDataOemService; + + @Override + @GetMapping(CLOSE_ERP_ORDER) + public void closeErpOrder(String woCode, String memo) { + erpDataOemService.closeErpOrder(woCode, memo); + } + + @Override + @GetMapping(PRICE_SHEET_DATA) + public R> priceSheetData(@SpringQueryMap PriceSheetQuery priceSheetQuery, @SpringQueryMap Query query) { + IPage iPages = erpDataOemService.priceSheetData(Condition.getPage(query), priceSheetQuery); + Page pages = new Page<>(); + + // 复制分页属性 + pages.setRecords(iPages.getRecords()); + pages.setTotal(iPages.getTotal()); + pages.setCurrent(iPages.getCurrent()); + pages.setSize(iPages.getSize()); + pages.setPages(iPages.getPages()); + + return R.data(pages); + } +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.java new file mode 100644 index 00000000..41a3bd12 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.java @@ -0,0 +1,29 @@ +package org.springblade.erpdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.Mapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.vo.PriceSheetVO; +import org.springblade.erpdata.pojo.dto.ReworkProcessDTO; +import org.springblade.erpdata.pojo.vo.QueryBatchVO; +import org.springblade.erpdata.pojo.vo.ReworkProcessVO; + +import java.util.List; +import java.util.Map; + +/** + * Mapper 接口 + * + * @author qyl + */ +public interface ErpDataOemMapper extends Mapper { + + /** + * 查询报价单 + * + * @param page + * @param query + * @return + */ + List priceSheetData(IPage page, PriceSheetQuery query); +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml new file mode 100644 index 00000000..2847aa5e --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml @@ -0,0 +1,39 @@ + + + + + + + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java new file mode 100644 index 00000000..035b8542 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataOemService.java @@ -0,0 +1,32 @@ +package org.springblade.erpdata.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.vo.PriceSheetVO; + +/** + * 外协相关erp操作service + * + * @author qyl + * @serial 2026年2月27日 + */ +public interface IErpDataOemService { + + /** + * 关闭erp外协订单 + * + * @param woCode + * @param memo + */ + void closeErpOrder(String woCode, String memo); + + /** + * 查询报价单 + * + * @param page + * @param priceSheetQuery + * @return + */ + IPage priceSheetData(IPage page, PriceSheetQuery priceSheetQuery); + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java new file mode 100644 index 00000000..8d347204 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataOemServiceImpl.java @@ -0,0 +1,61 @@ +package org.springblade.erpdata.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.oem.pojo.request.PriceSheetQuery; +import org.springblade.desk.oem.pojo.vo.PriceSheetVO; +import org.springblade.erpdata.mapper.ErpDataOemMapper; +import org.springblade.erpdata.mapper.ErpDataProduceMapper; +import org.springblade.erpdata.service.IErpDataOemService; +import org.springframework.stereotype.Service; + +import javax.sql.DataSource; +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.Timestamp; + + +/** + * 外协相关erp操作service实现类 + * + * @author qtl + * @serial 2026年2月27日 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class ErpDataOemServiceImpl implements IErpDataOemService { + + private final DataSource dataSource; + + private final ErpDataOemMapper erpDataOemMapper; + + @Override + public void closeErpOrder(String woCode, String memo) { + log.info("关闭erp外协订单 - 单号:{},备注:{}", woCode, memo); + + String sql = "{call pro_rbclswxdata(" + + ":v_wono, :v_rsn, :v_clsdat)}"; + + try (Connection conn = dataSource.getConnection(); + CallableStatement cs = conn.prepareCall(sql)) { + + cs.setString("v_wono", woCode); + cs.setString("v_rsn", memo); + cs.setTimestamp("v_clsdat", new Timestamp(System.currentTimeMillis())); + // 执行 + cs.execute(); + + log.info("关闭erp外协订单成功 - 单号:{},备注:{}", woCode, memo); + + } catch (Exception e) { + log.error("关闭erp外协订单失败 - 单号:{},备注:{}", woCode, memo, e); + } + } + + @Override + public IPage priceSheetData(IPage page, PriceSheetQuery priceSheetQuery) { + return page.setRecords(erpDataOemMapper.priceSheetData(page, priceSheetQuery)); + } +}