From b3fb196506fcdcc8e13a19c909bf45c733e13ed4 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Tue, 28 Apr 2026 17:10:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8F=91=E9=80=81erp=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blade-service-api/blade-erpdata-api/pom.xml | 6 + .../erpdata/feign/IErpDataWmsClient.java | 53 +++++ .../feign/IErpDataWmsClientFallback.java | 36 +++ blade-service/blade-erpdata/pom.xml | 6 + .../erpdata/feign/ErpDataWmsClient.java | 51 +++++ .../erpdata/service/IErpDataWmsService.java | 26 +++ .../service/impl/ErpDataWmsServiceImpl.java | 211 ++++++++++++++++++ blade-service/blade-wms/pom.xml | 6 + .../controller/StMoldApplyForController.java | 2 +- .../wms/service/IStMoldApplyForService.java | 1 + .../impl/StExpireSubmissionServiceImpl.java | 12 +- .../impl/StMoldApplyForServiceImpl.java | 46 +++- .../service/impl/StWmsRequestServiceImpl.java | 16 +- 13 files changed, 459 insertions(+), 13 deletions(-) create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java diff --git a/blade-service-api/blade-erpdata-api/pom.xml b/blade-service-api/blade-erpdata-api/pom.xml index e3c498ed..0235a807 100644 --- a/blade-service-api/blade-erpdata-api/pom.xml +++ b/blade-service-api/blade-erpdata-api/pom.xml @@ -26,6 +26,12 @@ org.springblade blade-desk-api + + org.springblade + blade-wms-api + 4.6.0.RELEASE + compile + diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java new file mode 100644 index 00000000..7f6ce12c --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java @@ -0,0 +1,53 @@ +package org.springblade.erpdata.feign; + +import org.springblade.common.constant.LauncherConstant; +import org.springblade.common.exception.BusinessException; +import org.springblade.core.tool.api.R; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName IErpDataWmsClient + * @description: + * @autor: WuSiYu + * @create 2026-04-28 11:32 + **/ +@FeignClient( + value = LauncherConstant.APPLICATION_ERP_DATA_NAME +) +public interface IErpDataWmsClient { + + String API_PREFIX = "/feign/erpdata/wms"; + + String SEND_ST_SUBMISSION = API_PREFIX + "/sendStSubmission"; + + String SEND_ERP_BUY_REQUEST = API_PREFIX + "/sendErpBuyRequest"; + + String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan"; + + /** + * 到期送检发送erp + */ + @GetMapping(SEND_ST_SUBMISSION) + R sendStSubmission(@RequestParam("stRealtimeStock")StRealtimeStock stRealtimeStock, @RequestParam("goodsCode")String goodsCode, @RequestParam("userName")String userName) throws BusinessException; + + /** + * 仓库提请发送erp + */ + @GetMapping(SEND_ERP_BUY_REQUEST) + R sendErpBuyRequest(@RequestParam("extraBill")String extraBill, @RequestParam("qty")Double qty, @RequestParam("ldapName")String ldapName) throws BusinessException; + + /** + * 工装计划申报发送erp + */ + @GetMapping(CREATE_MOLD_PLAN) + R createMoldPlan(@RequestParam("partCode")String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity, + @RequestParam("needDate")Date needDate, @RequestParam("level")String level, @RequestParam("keeper")String keeper, @RequestParam("createMan")String createMan, + @RequestParam("memo")String memo, @RequestParam("urgentType")String urgentType, @RequestParam("erpWoCode")String erpWoCode) throws BusinessException; +} diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java new file mode 100644 index 00000000..44b7028e --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java @@ -0,0 +1,36 @@ +package org.springblade.erpdata.feign; + +import org.springblade.core.tool.api.R; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName IErpDataWmsClientFallback + * @description: + * @autor: WuSiYu + * @create 2026-04-28 14:18 + **/ +@Component +public class IErpDataWmsClientFallback implements IErpDataWmsClient{ + @Override + public R sendStSubmission(@RequestParam("stRealtimeStock") StRealtimeStock stRealtimeStock, @RequestParam("goodsCode")String goodsCode, @RequestParam("userName")String userName) { + return R.fail("获取数据失败"); + } + + @Override + public R sendErpBuyRequest(@RequestParam("extraBill")String extraBill, @RequestParam("qty")Double qty, @RequestParam("ldapName")String ldapName) { + return R.fail("获取数据失败"); + } + + @Override + public R createMoldPlan(@RequestParam("partCode")String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity, + @RequestParam("needDate") Date needDate, @RequestParam("level")String level, @RequestParam("keeper")String keeper, @RequestParam("createMan")String createMan, + @RequestParam("memo")String memo, @RequestParam("urgentType")String urgentType, @RequestParam("erpWoCode")String erpWoCode) { + return R.fail("获取数据失败"); + } +} diff --git a/blade-service/blade-erpdata/pom.xml b/blade-service/blade-erpdata/pom.xml index 7e6c5f8a..affd25c2 100644 --- a/blade-service/blade-erpdata/pom.xml +++ b/blade-service/blade-erpdata/pom.xml @@ -48,6 +48,12 @@ hutool-all 5.8.16 + + org.springblade + blade-wms-api + 4.6.0.RELEASE + compile + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java new file mode 100644 index 00000000..3524da9e --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java @@ -0,0 +1,51 @@ +package org.springblade.erpdata.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.AllArgsConstructor; +import org.springblade.common.exception.BusinessException; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.core.tool.api.R; +import org.springblade.erpdata.service.IErpDataWmsService; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName ErpDataWmsClient + * @description: + * @autor: WuSiYu + * @create 2026-04-28 11:30 + **/ +@NonDS +@Hidden +@RestController +@AllArgsConstructor +public class ErpDataWmsClient implements IErpDataWmsClient{ + + private final IErpDataWmsService erpDataWmsService; + @Override + public R sendStSubmission(StRealtimeStock stRealtimeStock, String goodsCode, String userName) throws BusinessException { + return R.data(erpDataWmsService.sendStSubmission(stRealtimeStock, goodsCode, userName)); + } + + @Override + public R sendErpBuyRequest(String extraBill, Double qty, String ldapName) throws BusinessException { + return R.data(erpDataWmsService.sendErpBuyRequest(extraBill, qty, ldapName)); + } + + @Override + public R createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level, + String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException { + return R.data(erpDataWmsService.createMoldPlan(partCode, moCode, plantype, quantity, needDate, level, + keeper, createMan, memo, urgentType, erpWoCode)); + } + +// @Override +// public R deleteMoldPlan(String erpWoCode) throws BusinessException{ +// erpDataWmsService.deleteMoldPlan(erpWoCode); +// return R.success("删除工装计划成功"); +// } +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java new file mode 100644 index 00000000..b8d0e740 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java @@ -0,0 +1,26 @@ +package org.springblade.erpdata.service; + +import org.springblade.common.exception.BusinessException; +import org.springblade.wms.pojo.entity.StRealtimeStock; + +import java.util.Date; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName IErpDataWmsService + * @description: + * @autor: WuSiYu + * @create 2026-04-28 11:24 + **/ + +public interface IErpDataWmsService { + + String sendStSubmission(StRealtimeStock stRealtimeStock, String goodsCode, String userName) throws BusinessException; + + String sendErpBuyRequest(String extraBill, Double qty, String ldapName) throws BusinessException; + + String createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level, String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException; + +// void deleteMoldPlan(String erpWoCode) throws BusinessException; +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java new file mode 100644 index 00000000..fae842e3 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java @@ -0,0 +1,211 @@ +package org.springblade.erpdata.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springblade.common.exception.BusinessException; +import org.springblade.erpdata.service.IErpDataWmsService; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.SqlOutParameter; +import org.springframework.jdbc.core.SqlParameter; +import org.springframework.jdbc.core.simple.SimpleJdbcCall; +import org.springframework.stereotype.Service; + +import java.sql.Types; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName ErpDataWmsServiceImpl + * @description: + * @autor: WuSiYu + * @create 2026-04-28 11:23 + **/ + +@Slf4j +@RequiredArgsConstructor +@Service +public class ErpDataWmsServiceImpl implements IErpDataWmsService { + + private final JdbcTemplate jdbcTemplate; + + @Override + public String sendStSubmission(StRealtimeStock stRealtimeStock, String goodsCode, String userName) throws BusinessException { + + // 1. 创建存储过程调用 + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 存储过程名 + DBLink + .withProcedureName("dba_mgr.pro_rbprtchk@erp_mes_link") + // 关闭元数据(DBLink必须加) + .withoutProcedureColumnMetaDataAccess() + // 声明参数:顺序必须和存储过程一致! + .declareParameters( + new SqlParameter("v_prtno", Types.VARCHAR), // IN 物料号 + new SqlParameter("v_prtlotno", Types.VARCHAR), // IN 生产标识 + new SqlParameter("v_barcode", Types.VARCHAR), // IN 库存条码值 + new SqlParameter("v_invqty", Types.DOUBLE), // IN 库存数量 + new SqlParameter("v_splycode", Types.VARCHAR), // IN 供方代码 + new SqlParameter("v_qutno", Types.VARCHAR), // IN 检验编号 + new SqlParameter("v_chkname", Types.VARCHAR), // IN 送检人员 + new SqlOutParameter("v_excnote", Types.VARCHAR), // OUT 错误信息 + new SqlOutParameter("v_excflag", Types.VARCHAR), // OUT 状态 + new SqlOutParameter("v_prtchno", Types.VARCHAR) // OUT 送检单号 + ); + + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_prtno", goodsCode); + inParams.put("v_prtlotno", stRealtimeStock.getQuantityLevel()); + inParams.put("v_barcode", stRealtimeStock.getBarCode()); + inParams.put("v_invqty", stRealtimeStock.getQuantity()); + inParams.put("v_splycode", StringUtils.isNotBlank(stRealtimeStock.getSplyCode()) ? stRealtimeStock.getSplyCode() : ""); + inParams.put("v_qutno", stRealtimeStock.getCheckCode()); + inParams.put("v_chkname", userName); + + // 3. 执行存储过程 + Map resultMap = jdbcCall.execute(inParams); + + // 4. 获取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + String wsCode = (String) resultMap.get("v_prtchno"); + + // 5. 业务判断 + if ("0".equals(excflag)) { + throw new BusinessException("到期送检发送失败,请联系信息部!!! " + excnote); + } + + return wsCode; + } + + @Override + public String sendErpBuyRequest(String extraBill, Double qty, String ldapName) throws BusinessException{ + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbinvdeptreqmtn@erp_mes_link") + // 关闭元数据访问(DBLink 必须加) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数(顺序必须和存储过程一致) + .declareParameters( + new SqlParameter("v_wono", Types.VARCHAR), // IN + new SqlParameter("v_applyqty", Types.DOUBLE), // IN + new SqlParameter("v_mtnman", Types.VARCHAR), // IN + new SqlOutParameter("v_excnote", Types.VARCHAR),// OUT + new SqlOutParameter("v_excflag", Types.VARCHAR) // OUT + ); + + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_wono", extraBill == null ? "" : extraBill); + inParams.put("v_applyqty", qty == null ? 0D : qty); + inParams.put("v_mtnman", ldapName == null ? "" : ldapName); + + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + + // 5. 业务判断 + if ("0".equals(excflag)) { + throw new BusinessException("申报信息发送erp失败!" + excnote); + } + + return excflag; + } + + @Override + public String createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level, + String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException{ + + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbtoolreqm@erp_mes_link") + // 关闭元数据访问(DBLink 必须加) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数(顺序必须和存储过程一致) + .declareParameters( + new SqlParameter("v_prtno", Types.VARCHAR), + new SqlParameter("v_toolcode", Types.VARCHAR), + new SqlParameter("v_plntype", Types.VARCHAR), + new SqlParameter("v_tlreqqty", Types.INTEGER), + new SqlParameter("v_tlreqdat", Types.DATE), + new SqlParameter("v_prtmdept", Types.VARCHAR), + new SqlParameter("v_prtlotno", Types.VARCHAR), + new SqlParameter("v_WARCTLR", Types.VARCHAR), + new SqlParameter("v_operator", Types.VARCHAR), + new SqlParameter("v_remark", Types.VARCHAR), + new SqlParameter("v_stat", Types.VARCHAR), + new SqlParameter("v_toolid1", Types.VARCHAR), + new SqlOutParameter("v_excnote", Types.VARCHAR), + new SqlOutParameter("v_excflag", Types.VARCHAR), + new SqlOutParameter("v_toolid", Types.VARCHAR) + ); + + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_prtno", partCode); + inParams.put("v_toolcode", moCode); + inParams.put("v_plntype", plantype); + inParams.put("v_tlreqqty", quantity); + inParams.put("v_tlreqdat", needDate); + inParams.put("v_prtmdept", "3600"); + inParams.put("v_prtlotno", level); + inParams.put("v_WARCTLR", keeper); + inParams.put("v_operator", createMan); + inParams.put("v_remark", StringUtils.isBlank(memo) ? "" : memo); + inParams.put("v_stat", urgentType); + inParams.put("v_toolid1", StringUtils.isNotBlank(erpWoCode) ? erpWoCode : ""); + + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + String wxno = (String) resultMap.get("v_toolid"); + + // 5. 业务判断 + if ("0".equals(excflag)) { + throw new BusinessException("模具计划发送erp" + excnote); + } + + return wxno; + } + +// @Override +// public void deleteMoldPlan(String erpWoCode) throws BusinessException { +// SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) +// // 指定存储过程名(包含 DB Link) +// .withProcedureName("dba_mgr.pro_rbtooldel@erp_mes_link") +// // 关闭元数据访问(DBLink 必须加) +// .withoutProcedureColumnMetaDataAccess() +// // 显式声明参数 +// .declareParameters( +// new SqlParameter("v_toolid", Types.VARCHAR), // IN +// new SqlOutParameter("v_excnote", Types.VARCHAR), // OUT +// new SqlOutParameter("v_excflag", Types.VARCHAR) // OUT +// ); +// // 2. 封装输入参数 +// Map inParams = new HashMap<>(); +// inParams.put("v_toolid", erpWoCode); +// +// // 3. 执行并获取结果 Map +// Map resultMap = jdbcCall.execute(inParams); +// +// // 4. 提取输出参数 +// String excflag = (String) resultMap.get("v_excflag"); +// String excnote = (String) resultMap.get("v_excnote"); +// +// // 5. 业务判断 +// if ("0".equals(excflag)) { +// throw new BusinessException("删除工装计划失败" + excnote); +// } +// } + +} diff --git a/blade-service/blade-wms/pom.xml b/blade-service/blade-wms/pom.xml index b0341293..55a80bd8 100644 --- a/blade-service/blade-wms/pom.xml +++ b/blade-service/blade-wms/pom.xml @@ -89,6 +89,12 @@ 1.5-beta1 compile + + org.springblade + blade-erpdata-api + 4.6.0.RELEASE + compile + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java index 77bfc466..fe6f5ed7 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StMoldApplyForController.java @@ -134,7 +134,7 @@ public class StMoldApplyForController extends BladeController { @ApiLog("工装计划申请表 删除") @Operation(summary = "逻辑删除", description = "传入ids") public R remove(@Parameter(description = "主键集合", required = true) @RequestParam String ids) { - return R.status(stMoldApplyForService.deleteLogic(Func.toLongList(ids))); + return R.status(stMoldApplyForService.delete(Func.toLongList(ids))); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStMoldApplyForService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStMoldApplyForService.java index 750beae4..69f656e0 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStMoldApplyForService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStMoldApplyForService.java @@ -40,5 +40,6 @@ public interface IStMoldApplyForService extends BaseService { void addOrEditProcess(List list, List deleteIds, BladeUser user); + boolean delete(List deleteIds); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StExpireSubmissionServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StExpireSubmissionServiceImpl.java index 1910bbfa..0ad5f1d3 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StExpireSubmissionServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StExpireSubmissionServiceImpl.java @@ -4,8 +4,10 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; +import org.springblade.common.exception.BusinessException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; +import org.springblade.erpdata.feign.IErpDataWmsClient; import org.springblade.wms.excel.StExpireSubmissionExcel; import org.springblade.wms.mapper.StExpireSubmissionMapper; import org.springblade.wms.pojo.entity.StExpireSubmission; @@ -37,6 +39,8 @@ public class StExpireSubmissionServiceImpl extends BaseServiceImpl implements IStMoldApplyForService { + @Resource + IUserClient userClient; + @Resource + IErpDataWmsClient erpDataWmsClient; @Override public IPage selectStMoldApplyForPage(IPage page, StMoldApplyForVO stMoldApplyFor) { @@ -45,13 +55,20 @@ public class StMoldApplyForServiceImpl extends BaseServiceImpl ruser = userClient.userInfoById(plan.getKeeper()); + User keeper = ruser.getData(); + String erpWoCode = null; // 1. 调 ERP - String erpWoCode = baseMapper.createMoldPlan( - plan.getPartCode(), plan.getMoCode(), plan.getPlanType(), - plan.getQuantity(), plan.getNeedDate(), plan.getQuaLevel(), - plan.getKeeper(), user.getUserId(), - StrUtil.blankToDefault(plan.getMemo(), ""), - plan.getUrgentType(), StrUtil.nullToEmpty(plan.getErpWoCode())); + try { + erpWoCode = erpDataWmsClient.createMoldPlan( + plan.getPartCode(), plan.getMoCode(), plan.getPlanType(), + plan.getQuantity(), plan.getNeedDate(), plan.getQuaLevel(), + keeper.getAccount(), user.getAccount(), + StrUtil.blankToDefault(plan.getMemo(), ""), + plan.getUrgentType(), StrUtil.nullToEmpty(plan.getErpWoCode())).getData(); + } catch (BusinessException e) { + throw new RuntimeException("创建模具计划失败:" + e.getMessage()); + } // 2. 本地落库 if (plan.getId() != null) { // 修改 @@ -80,6 +97,23 @@ public class StMoldApplyForServiceImpl extends BaseServiceImpl deleteIds){ + if (CollUtil.isNotEmpty(deleteIds)) { + for (Long id : deleteIds) { + StMoldApplyFor plan = this.getById(id); + if (plan == null) continue; + if (!StMoldApplyFor.MAF_STATUS_OK.equals(plan.getMafStatus())) { + baseMapper.deleteMoldPlan(plan.getErpWoCode()); + plan.setMafStatus(StMoldApplyFor.MAF_STATUS_ERP_DEL); + this.updateById(plan); + } + } + this.deleteLogic(deleteIds); + } + return true; + } @Override public List exportStMoldApplyFor(Wrapper queryWrapper) { diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java index aed75859..5f9aca29 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StWmsRequestServiceImpl.java @@ -5,12 +5,14 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import jakarta.annotation.Resource; +import org.springblade.common.exception.BusinessException; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; import org.springblade.core.tool.api.R; import org.springblade.desk.common.feign.IMesApprovalRecordClient; import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity; +import org.springblade.erpdata.feign.IErpDataWmsClient; import org.springblade.system.feign.ISysClient; import org.springblade.system.feign.IUserClient; import org.springblade.system.pojo.entity.User; @@ -46,6 +48,8 @@ public class StWmsRequestServiceImpl extends BaseServiceImpl selectStWmsRequestPage(IPage page, StWmsRequestVO stWmsRequest) { @@ -192,10 +196,14 @@ public class StWmsRequestServiceImpl extends BaseServiceImpl ruser = userClient.userInfoById(request.getCreateUser()); User user = ruser.getData(); - this.sendErpBuyRequest( - stBuyOrder.getExtraBill(), - request.getRequestQty(), - user.getAccount()); + try { + erpDataWmsClient.sendErpBuyRequest( + stBuyOrder.getExtraBill(), + request.getRequestQty(), + user.getAccount()); + } catch (BusinessException e) { + throw new RuntimeException("仓库提请发送ERP失败:" + e.getMessage()); + } } } From 11c9287583234783185ec2f7c13d21c90477eee9 Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Tue, 28 Apr 2026 17:29:07 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=BB=A9=E6=95=88=E5=A1=AB=E6=8A=A5?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BsEfficiencyTaskController.java | 10 ++++++++-- .../efficiency/mapper/EfficiencyTaskReportMapper.xml | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/controller/BsEfficiencyTaskController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/controller/BsEfficiencyTaskController.java index 7d3a9c03..04382f84 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/controller/BsEfficiencyTaskController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/controller/BsEfficiencyTaskController.java @@ -288,21 +288,27 @@ public class BsEfficiencyTaskController extends BladeController { tableColumnList.add(tableColumn); } List> tableDataList = new ArrayList<>(); + LinkedHashMap> tableMap = new LinkedHashMap<>(); if (!CollectionUtils.isEmpty(mapList)) { for (LinkedHashMap map : mapList) { LinkedHashMap tableData = new LinkedHashMap<>(); for (Map.Entry entry : headMap.entrySet()) { tableData.put(entry.getValue(), map.get(entry.getKey())); } - R userInfoResult = userClient.userInfoByCode((String) tableData.get("employeeCode")); + String empployeeCode = (String) tableData.get("employeeCode"); + R userInfoResult = userClient.userInfoByCode(empployeeCode); if (userInfoResult.getData() == null || userInfoResult.getData().getUser() == null || !tableData.get("employeeName").equals(userInfoResult.getData().getUser().getRealName())) { tableData.put("isSysUser", "0"); } else { tableData.put("isSysUser", "1"); } - tableDataList.add(tableData); + if(tableMap.containsKey(empployeeCode)){ + tableMap.remove(empployeeCode); + } + tableMap.put(empployeeCode, tableData); } } + tableDataList.addAll(tableMap.values()); resultMap.put("tableColumn", tableColumnList); resultMap.put("tableData", tableDataList); return R.data(resultMap); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/mapper/EfficiencyTaskReportMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/mapper/EfficiencyTaskReportMapper.xml index f0014099..b3a26e8b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/mapper/EfficiencyTaskReportMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/efficiency/mapper/EfficiencyTaskReportMapper.xml @@ -91,6 +91,7 @@ and t.YEAR_MONTH = #{yearMonth} + ORDER BY tr.EMPLOYEE_CODE ASC \ No newline at end of file From 0055e8caa0a78e4432927ef3a5ad580c3d580cfd Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Tue, 28 Apr 2026 18:04:01 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=8F=91=E9=80=81erp=E5=A2=9E=E5=8A=A0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erpdata/feign/IErpDataWmsClient.java | 9 +++ .../feign/IErpDataWmsClientFallback.java | 5 ++ .../erpdata/feign/ErpDataWmsClient.java | 9 ++- .../erpdata/service/IErpDataWmsService.java | 2 +- .../service/impl/ErpDataWmsServiceImpl.java | 65 ++++++++++--------- .../impl/StMoldApplyForServiceImpl.java | 16 +++-- 6 files changed, 64 insertions(+), 42 deletions(-) diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java index 7f6ce12c..57aecdf1 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClient.java @@ -31,6 +31,8 @@ public interface IErpDataWmsClient { String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan"; + String DELETE_MOLD_PLAN = API_PREFIX + "/deleteMoldPlan"; + /** * 到期送检发送erp */ @@ -50,4 +52,11 @@ public interface IErpDataWmsClient { R createMoldPlan(@RequestParam("partCode")String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity, @RequestParam("needDate")Date needDate, @RequestParam("level")String level, @RequestParam("keeper")String keeper, @RequestParam("createMan")String createMan, @RequestParam("memo")String memo, @RequestParam("urgentType")String urgentType, @RequestParam("erpWoCode")String erpWoCode) throws BusinessException; + + /** + * 工装计划申报删除发送erp + */ + @GetMapping(DELETE_MOLD_PLAN) + R deleteMoldPlan(@RequestParam("erpWoCode")String erpWoCode) throws BusinessException; + } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java index 44b7028e..ccdf1e55 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataWmsClientFallback.java @@ -33,4 +33,9 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{ @RequestParam("memo")String memo, @RequestParam("urgentType")String urgentType, @RequestParam("erpWoCode")String erpWoCode) { return R.fail("获取数据失败"); } + + @Override + public R deleteMoldPlan(@RequestParam("erpWoCode")String erpWoCode) { + return R.fail("获取数据失败"); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java index 3524da9e..4e1777b1 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataWmsClient.java @@ -43,9 +43,8 @@ public class ErpDataWmsClient implements IErpDataWmsClient{ keeper, createMan, memo, urgentType, erpWoCode)); } -// @Override -// public R deleteMoldPlan(String erpWoCode) throws BusinessException{ -// erpDataWmsService.deleteMoldPlan(erpWoCode); -// return R.success("删除工装计划成功"); -// } + @Override + public R deleteMoldPlan(String erpWoCode) throws BusinessException { + return R.data(erpDataWmsService.deleteMoldPlan(erpWoCode)); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java index b8d0e740..103a0d5f 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataWmsService.java @@ -22,5 +22,5 @@ public interface IErpDataWmsService { String createMoldPlan(String partCode, String moCode, String plantype, Double quantity, Date needDate, String level, String keeper, String createMan, String memo, String urgentType, String erpWoCode) throws BusinessException; -// void deleteMoldPlan(String erpWoCode) throws BusinessException; + String deleteMoldPlan(String erpWoCode) throws BusinessException; } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java index fae842e3..5e24db8f 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataWmsServiceImpl.java @@ -39,7 +39,7 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { // 1. 创建存储过程调用 SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) // 存储过程名 + DBLink - .withProcedureName("dba_mgr.pro_rbprtchk@erp_mes_link") + .withProcedureName("dba_mgr.pro_rbprtchk") // 关闭元数据(DBLink必须加) .withoutProcedureColumnMetaDataAccess() // 声明参数:顺序必须和存储过程一致! @@ -86,7 +86,7 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { public String sendErpBuyRequest(String extraBill, Double qty, String ldapName) throws BusinessException{ SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) // 指定存储过程名(包含 DB Link) - .withProcedureName("dba_mgr.pro_rbinvdeptreqmtn@erp_mes_link") + .withProcedureName("dba_mgr.pro_rbinvdeptreqmtn") // 关闭元数据访问(DBLink 必须加) .withoutProcedureColumnMetaDataAccess() // 显式声明参数(顺序必须和存储过程一致) @@ -125,7 +125,7 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) // 指定存储过程名(包含 DB Link) - .withProcedureName("dba_mgr.pro_rbtoolreqm@erp_mes_link") + .withProcedureName("dba_mgr.pro_rbtoolreqm") // 关闭元数据访问(DBLink 必须加) .withoutProcedureColumnMetaDataAccess() // 显式声明参数(顺序必须和存储过程一致) @@ -178,34 +178,35 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { return wxno; } -// @Override -// public void deleteMoldPlan(String erpWoCode) throws BusinessException { -// SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) -// // 指定存储过程名(包含 DB Link) -// .withProcedureName("dba_mgr.pro_rbtooldel@erp_mes_link") -// // 关闭元数据访问(DBLink 必须加) -// .withoutProcedureColumnMetaDataAccess() -// // 显式声明参数 -// .declareParameters( -// new SqlParameter("v_toolid", Types.VARCHAR), // IN -// new SqlOutParameter("v_excnote", Types.VARCHAR), // OUT -// new SqlOutParameter("v_excflag", Types.VARCHAR) // OUT -// ); -// // 2. 封装输入参数 -// Map inParams = new HashMap<>(); -// inParams.put("v_toolid", erpWoCode); -// -// // 3. 执行并获取结果 Map -// Map resultMap = jdbcCall.execute(inParams); -// -// // 4. 提取输出参数 -// String excflag = (String) resultMap.get("v_excflag"); -// String excnote = (String) resultMap.get("v_excnote"); -// -// // 5. 业务判断 -// if ("0".equals(excflag)) { -// throw new BusinessException("删除工装计划失败" + excnote); -// } -// } + @Override + public String deleteMoldPlan(String erpWoCode) throws BusinessException { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbtooldel") + // 关闭元数据访问(DBLink 必须加) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_toolid", Types.VARCHAR), // IN + new SqlOutParameter("v_excnote", Types.VARCHAR), // OUT + new SqlOutParameter("v_excflag", Types.VARCHAR) // OUT + ); + // 2. 封装输入参数 + Map inParams = new HashMap<>(); + inParams.put("v_toolid", erpWoCode); + + // 3. 执行并获取结果 Map + Map resultMap = jdbcCall.execute(inParams); + + // 4. 提取输出参数 + String excflag = (String) resultMap.get("v_excflag"); + String excnote = (String) resultMap.get("v_excnote"); + + // 5. 业务判断 + if ("0".equals(excflag)) { + throw new BusinessException("删除工装计划失败" + excnote); + } + return excflag; + } } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StMoldApplyForServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StMoldApplyForServiceImpl.java index a5fc48ef..d3e5f08a 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StMoldApplyForServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StMoldApplyForServiceImpl.java @@ -89,7 +89,11 @@ public class StMoldApplyForServiceImpl extends BaseServiceImpl