From 1a29662a48818e3658b3e76ec5d35a2249099512 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Thu, 30 Apr 2026 10:01:38 +0800 Subject: [PATCH 01/21] =?UTF-8?q?=E6=A8=A1=E5=85=B7=E7=94=B3=E6=8A=A5?= =?UTF-8?q?=E4=B8=8B=E5=8F=91erp-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/order/pojo/entity/MoldApply.java | 2 + .../erpdata/feign/IErpDataProduceClient.java | 17 ++++-- .../feign/IErpDataProduceClientFallback.java | 6 ++- .../service/impl/MoldApplyServiceImpl.java | 24 +++++++++ .../erpdata/feign/ErpDataProduceClient.java | 8 ++- .../service/IErpDataProduceService.java | 4 +- .../impl/ErpDataProduceServiceImpl.java | 54 +++++++++++++++++++ 7 files changed, 108 insertions(+), 7 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/MoldApply.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/MoldApply.java index 5d8b2d730..809214d3a 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/MoldApply.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/MoldApply.java @@ -104,4 +104,6 @@ public class MoldApply extends BaseEntity { */ @TableField(value = "MEMO") private String memo; + + private Long parentId; } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java index 5ed2b1638..0cfa3bd54 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java @@ -1,19 +1,18 @@ package org.springblade.erpdata.feign; -import com.alibaba.excel.annotation.format.DateTimeFormat; import org.springblade.common.constant.LauncherConstant; import org.springblade.core.tool.api.R; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.erpdata.pojo.vo.*; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import java.util.Date; import java.util.List; -import java.util.Locale; import java.util.Map; /** @@ -26,7 +25,7 @@ import java.util.Map; ) public interface IErpDataProduceClient { - String API_PREFIX = "/feign/erpdata/produce"; + String API_PREFIX = "/feign/client/erpdata/produce"; String QUERY_BATCH = API_PREFIX + "/queryBatch"; String REWORK_ORDER = API_PREFIX + "/loadReworkOrder"; String REWORK_ORDER_SIZE = API_PREFIX + "/loadReworkOrderSize"; @@ -47,6 +46,7 @@ public interface IErpDataProduceClient { String CHECK_COMPLETE = API_PREFIX + "/checkComplete"; String PRO_RBINVIOGEN = API_PREFIX + "/proRbinviogen"; String PRO_RBTRANSFERLEV = API_PREFIX + "/proRbtransferlev"; + String CREATE_MOLD_PLAN = API_PREFIX + "/createMoldPlan"; /** @@ -215,4 +215,15 @@ public interface IErpDataProduceClient { @RequestParam(value = "recDept", required = false) String recDept, @RequestParam(value = "roamNo", required = false) String roamNo, @RequestParam(value = "deliverKey", required = false) String deliverKey, @RequestParam(value = "testQty") Integer testQty, @RequestParam(value = "lossQty") Integer lossQty, @RequestParam(value = "scrapQty") Integer scrapQty); + + @GetMapping(CREATE_MOLD_PLAN) + R createMoldPlan(@RequestParam(value = "partCode", required = false)String partCode, + @RequestParam(value = "moCode", required = false)String moCode, + @RequestParam(value = "plantype", required = false)String plantype, + @RequestParam(value = "quantity", required = false)Integer quantity, + @RequestParam(value = "needDate", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date needDate, + @RequestParam(value = "level", required = false)String level, + @RequestParam(value = "keeper", required = false)String keeper, + @RequestParam(value = "createMan", required = false)String createMan, + @RequestParam(value = "memo", required = false)String memo); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java index da685eba8..825824b60 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java @@ -2,7 +2,6 @@ package org.springblade.erpdata.feign; import org.springblade.core.tool.api.R; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; -import org.springblade.desk.produce.pojo.entity.OrderDeclare; import org.springblade.erpdata.pojo.vo.*; import org.springframework.stereotype.Component; @@ -119,4 +118,9 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient { return R.fail("获取数据失败"); } + @Override + public R createMoldPlan(String partCode, String moCode, String plantype, Integer quantity, Date needDate, String level, String keeper, String createMan, String memo) { + return R.fail("获取数据失败"); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java index bbab09536..4ac111a08 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/MoldApplyServiceImpl.java @@ -1,14 +1,20 @@ package org.springblade.desk.order.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.desk.order.mapper.MoldApplyMapper; +import org.springblade.desk.order.mapper.MoldDemandMapper; import org.springblade.desk.order.pojo.entity.MoldApply; +import org.springblade.desk.order.pojo.entity.MoldDemand; import org.springblade.desk.order.pojo.enums.MoldApplyEnum; import org.springblade.desk.order.service.IMoldApplyService; +import org.springblade.erpdata.feign.IErpDataProduceClient; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.entity.User; import org.springframework.stereotype.Service; import java.util.Date; @@ -23,6 +29,11 @@ import java.util.List; @Service public class MoldApplyServiceImpl extends BaseServiceImpl implements IMoldApplyService { + private final MoldDemandMapper moldDemandMapper; + + @Resource + private IErpDataProduceClient erpDataProduceClient; + @Override public IPage selectPage(IPage page, MoldApply entity) { List dataList = baseMapper.selectPage(page, entity); @@ -46,8 +57,21 @@ public class MoldApplyServiceImpl extends BaseServiceImpl applyList) { + User createMan = UserCache.getUser(AuthUtil.getUserId()); for (MoldApply moldApply : applyList) { + MoldDemand moldDemand = moldDemandMapper.selectById(moldApply.getId()); + moldApply.setId(null); moldApply.setStatus(MoldApplyEnum.STATUS_CREATE.getCode()); + User keeper = UserCache.getUser(moldApply.getKeeper()); + String erpWoCode = erpDataProduceClient.createMoldPlan(moldApply.getPartCode(),moldApply.getToolCode(), + moldApply.getPlanTypeCode(),moldApply.getApplyNum().intValue(), + moldApply.getNeedDate(),moldApply.getQuaLevel(), + keeper.getRealName(),createMan.getRealName(),moldApply.getMemo()).getData(); + moldDemand.setMafStatus(11002); + moldDemand.setErpWoCode(erpWoCode); + moldDemand.setKeeper(moldApply.getKeeper()); + moldDemand.setReleaser(moldApply.getReleaser()); + moldDemandMapper.updateById(moldDemand); } return saveBatch(applyList); diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java index e2e2b484b..4536af50e 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java @@ -5,10 +5,8 @@ import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; -import org.springblade.desk.produce.pojo.entity.OrderDeclare; import org.springblade.erpdata.pojo.vo.*; import org.springblade.erpdata.service.IErpDataProduceService; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; @@ -129,4 +127,10 @@ public class ErpDataProduceClient implements IErpDataProduceClient { return R.data(erpDataProduceService.proRbtransferlev(hrCode, ypCode, woCode, cardNo, partCode, batchNo, createMan, createTime, handoverUnit, handoverQty, recDept, roamNo, deliverKey, testQty, lossQty, scrapQty)); } + @Override + public R createMoldPlan(String partCode, String moCode, String plantype, Integer quantity, Date needDate, String level, String keeper, String createMan, String memo) { + return R.data(erpDataProduceService.createMoldPlan(partCode, moCode, plantype, quantity, needDate, level, keeper, createMan, memo)); + } + + } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java index ca301d583..f22f8f110 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java @@ -3,7 +3,6 @@ package org.springblade.erpdata.service; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.erpdata.pojo.vo.*; -import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Map; @@ -60,4 +59,7 @@ public interface IErpDataProduceService { ErpReturnDataVO proRbinviogen(String hrCode, String partCode, Integer handoverQty, String prodIdent, String batchNo, String ypCode, String woCode, String handoverUnit, String createMan, String recDept, String memo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty); ErpReturnDataVO proRbtransferlev(String hrCode, String ypCode, String woCode, String cardNo, String partCode, String batchNo, String createMan, String createTime, String handoverUnit, Integer handoverQty, String recDept, String roamNo, String deliverKey, Integer testQty, Integer lossQty, Integer scrapQty); + + String createMoldPlan(String partCode, String moCode, String plantype, Integer quantity, Date needDate, String level, + String keeper, String createMan, String memo); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java index 664917a4a..324936647 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java @@ -3,6 +3,7 @@ package org.springblade.erpdata.service.impl; import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.log.exception.ServiceException; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.erpdata.mapper.ErpDataProduceMapper; @@ -465,4 +466,57 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService { erpReturnDataVO.setExcnote((String) resultMap.get("v_excnote")); return erpReturnDataVO; } + + + @Override + public String createMoldPlan(String partCode, String moCode, String plantype, Integer quantity, Date needDate, String level, + String keeper, String createMan, String memo) { + SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate) + // 指定存储过程名(包含 DB Link) + .withProcedureName("dba_mgr.pro_rbtoolreqm") + // 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题) + .withoutProcedureColumnMetaDataAccess() + // 显式声明参数 + .declareParameters( + new SqlParameter("v_prtno", Types.VARCHAR), // IN + new SqlParameter("v_toolcode", Types.VARCHAR), // IN + new SqlParameter("v_plntype", Types.VARCHAR), // IN + new SqlParameter("v_tlreqqty", Types.INTEGER), // IN + new SqlParameter("v_tlreqdat", Types.DATE), // IN + new SqlParameter("v_prtmdept", Types.VARCHAR), // IN + new SqlParameter("v_prtlotno", Types.VARCHAR), // IN + new SqlParameter("v_WARCTLR", Types.VARCHAR), // IN + new SqlParameter("v_operator", Types.VARCHAR), // IN + new SqlParameter("v_remark", Types.VARCHAR), // IN + new SqlParameter("v_stat", Types.VARCHAR), // IN + new SqlParameter("v_toolid1", Types.VARCHAR), // IN + new SqlOutParameter("v_excnote", Types.VARCHAR),// OUT + new SqlOutParameter("v_excflag", Types.VARCHAR), // OUT + new SqlOutParameter("v_toolid", Types.VARCHAR) // OUT + ); + // 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", "0"); + inParams.put("v_toolid1", ""); + + + // 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"); + return wxno; + } } From 1808fc8e1cad8ebf746b9c5385efad62801da069 Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Thu, 30 Apr 2026 10:55:51 +0800 Subject: [PATCH 02/21] =?UTF-8?q?=E5=90=88=E8=A7=84=E6=80=A7=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/DataVerifyProcessor.java | 33 +++++++++++++++++++ .../desk/order/feign/IOrderClient.java | 10 ++++++ .../desk/order/feign/OrderClient.java | 16 +++++++++ .../scheduling/mapper/WorkOrderMapper.xml | 2 +- 4 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/DataVerifyProcessor.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/DataVerifyProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/DataVerifyProcessor.java new file mode 100644 index 000000000..6d2de4353 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/dashboard/DataVerifyProcessor.java @@ -0,0 +1,33 @@ +package org.springblade.job.processor.dashboard; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.desk.order.feign.IOrderClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +import java.util.concurrent.CompletableFuture; + +/** + * 工艺模块-返工任务 + * @author liweidong + */ +@Component +@Data +@Slf4j +public class DataVerifyProcessor implements BasicProcessor { + + @Resource + private IOrderClient client; + + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("订单合规性校验任务开始"); + CompletableFuture runFuture = CompletableFuture.runAsync(()->client.dataVerify()); + log.info("订单合规性校验任务结束"); + return new ProcessResult(true); + } +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java index 440d8c5e7..efc24be84 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IOrderClient.java @@ -20,6 +20,7 @@ public interface IOrderClient { String SAVE_GLASS_CAKE = API_PREFIX + "/saveGlassCake"; String CALCULATE_COATING_MATERIAL = API_PREFIX + "/calculateCoatingMaterial"; String INIT_YIELD_ORDER_DAILY_ASSIGN = API_PREFIX + "/initYieldOrderDailyAssign"; + String DATA_VERIFY = API_PREFIX + "/dataVerify"; /** @@ -42,4 +43,13 @@ public interface IOrderClient { @GetMapping(INIT_YIELD_ORDER_DAILY_ASSIGN) void initYieldOrderDailyAssign() throws Exception; + + /** + * 合规性校验 + * + * @return + */ + @GetMapping(DATA_VERIFY) + void dataVerify(); + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java index 810281a18..5bb271be2 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/OrderClient.java @@ -25,15 +25,22 @@ */ package org.springblade.desk.order.feign; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import io.swagger.v3.oas.annotations.Hidden; import lombok.RequiredArgsConstructor; +import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldPlan; import org.springblade.desk.order.service.IYieldOrderDailyAssignService; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.order.service.IYieldPlanService; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.stream.Collectors; + /** * Feign 排产相关定时任务接口 * @@ -64,4 +71,13 @@ public class OrderClient implements IOrderClient { public void initYieldOrderDailyAssign() throws Exception { yieldOrderDailyAssignService.init(); } + + @Override + public void dataVerify() { + List list = orderService.list(Wrappers.lambdaQuery().in(YieldOrder::getValidationResult,16001,16003)); + if(CollectionUtils.isNotEmpty(list)){ + List idList = list.stream().map(BaseEntity::getId).collect(Collectors.toList()); + orderService.dataVerify(idList); + } + } } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml index cb4e168de..d35f6121d 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/mapper/WorkOrderMapper.xml @@ -120,7 +120,7 @@ LEFT JOIN MES_YIELD_ORDER g on g.id = a.yo_id a.is_deleted = 0 and b.is_deleted = 0 and a.status in (1,2,3,5) - and b.plan_start_time is not null and b.plan_end_time is not null and g.work_center_id in (81,122,162) + and b.plan_start_time is not null and b.plan_end_time is not null and to_char(b.plan_start_time,'YYYY-MM-DD') = ]]> #{startTime} From b09758e64cd624b28de31e223ca66d0056943925 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Thu, 30 Apr 2026 12:20:41 +0800 Subject: [PATCH 03/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/ExecuteStGoodsExtUpdateProcessor.java | 39 ++++++++++++++ .../erpdata/feign/IErpDataWmsClient.java | 10 ++++ .../feign/IErpDataWmsClientFallback.java | 8 +++ .../springblade/wms/feign/WmsTaskClient.java | 29 +++++++++++ .../erpdata/feign/ErpDataWmsClient.java | 7 +++ .../erpdata/mapper/ErpDataWmsMapper.java | 21 ++++++++ .../erpdata/mapper/ErpDataWmsMapper.xml | 51 +++++++++++++++++++ .../erpdata/service/IErpDataWmsService.java | 4 ++ .../service/impl/ErpDataWmsServiceImpl.java | 12 +++++ .../wms/feign/WmsTaskClientImpl.java | 32 ++++++++++++ .../wms/mapper/StExpireSubmissionMapper.xml | 2 +- .../wms/service/IStGoodsExtService.java | 2 + .../impl/StExpireSubmissionServiceImpl.java | 2 + .../service/impl/StGoodsExtServiceImpl.java | 35 ++++++++++++- 14 files changed, 252 insertions(+), 2 deletions(-) create mode 100644 blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/ExecuteStGoodsExtUpdateProcessor.java create mode 100644 blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java create mode 100644 blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml create mode 100644 blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/ExecuteStGoodsExtUpdateProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/ExecuteStGoodsExtUpdateProcessor.java new file mode 100644 index 000000000..ab05f1570 --- /dev/null +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/wms/ExecuteStGoodsExtUpdateProcessor.java @@ -0,0 +1,39 @@ +package org.springblade.job.processor.wms; + +import jakarta.annotation.Resource; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springblade.wms.feign.WmsTaskClient; +import org.springframework.stereotype.Component; +import tech.powerjob.worker.core.processor.ProcessResult; +import tech.powerjob.worker.core.processor.TaskContext; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName ExecuteStGoodsExtUpdateProcessor + * @description: + * @autor: WuSiYu + * @create 2026-04-30 10:08 + **/ +@Component +@Data +@Slf4j +public class ExecuteStGoodsExtUpdateProcessor implements BasicProcessor { + + @Resource + WmsTaskClient wmsTaskClient; + @Override + public ProcessResult process(TaskContext context) throws Exception { + log.info("开始执行物料状态同步erp"); + try { + boolean result = wmsTaskClient.executeGoodsStatusUpdate(); + log.info("===== 物料状态定时更新完成 ====="); + return new ProcessResult(result); + } catch (Exception e) { + log.error("===== 物料状态定时更新异常 =====", e); + return new ProcessResult(false, e.getMessage()); + } + } +} 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 8ed4f502e..e97ee8e28 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 @@ -3,6 +3,7 @@ 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.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -10,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.Date; +import java.util.List; /** * @version 1.0 @@ -34,6 +36,8 @@ public interface IErpDataWmsClient { String DELETE_MOLD_PLAN = API_PREFIX + "/deleteMoldPlan"; + String GET_GOODS_EXT_STATUS = API_PREFIX + "/getGoodsExtStatus"; + /** * 到期送检发送erp */ @@ -60,4 +64,10 @@ public interface IErpDataWmsClient { @PostMapping(DELETE_MOLD_PLAN) R deleteMoldPlan(@RequestParam("erpWoCode")String erpWoCode) throws BusinessException; + /** + * 物料状态监控同步 + */ + @PostMapping(GET_GOODS_EXT_STATUS) + R> getGoodsExtStatus(); + } 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 0c1237c50..e6eddd5dd 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 @@ -1,12 +1,14 @@ package org.springblade.erpdata.feign; import org.springblade.core.tool.api.R; +import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.Date; +import java.util.List; /** * @version 1.0 @@ -39,4 +41,10 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{ public R deleteMoldPlan(@RequestParam("erpWoCode")String erpWoCode) { return R.fail("获取数据失败"); } + + @Override + public R> getGoodsExtStatus() { + return R.fail("获取数据失败"); + } + } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java new file mode 100644 index 000000000..632ec574b --- /dev/null +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/WmsTaskClient.java @@ -0,0 +1,29 @@ +package org.springblade.wms.feign; + +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName WmsTaskClient + * @description: + * @autor: WuSiYu + * @create 2026-04-30 10:21 + **/ +@FeignClient( + value = "blade-wms" +) +public interface WmsTaskClient { + + String API_PREFIX = "/feign/client/wms"; + + String EXECUTE_GOODS_STATUS_UPDATE = API_PREFIX + "/executeGoodsStatusUpdate"; + + /** + * 物料状态监控同步erp + */ + @PostMapping(EXECUTE_GOODS_STATUS_UPDATE) + boolean executeGoodsStatusUpdate(); + +} 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 4e1777b1c..f9da46813 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 @@ -5,11 +5,13 @@ 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.pojo.vo.StGoodsExtStatusVO; import org.springblade.erpdata.service.IErpDataWmsService; import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.web.bind.annotation.RestController; import java.util.Date; +import java.util.List; /** * @version 1.0 @@ -47,4 +49,9 @@ public class ErpDataWmsClient implements IErpDataWmsClient{ public R deleteMoldPlan(String erpWoCode) throws BusinessException { return R.data(erpDataWmsService.deleteMoldPlan(erpWoCode)); } + + @Override + public R> getGoodsExtStatus() { + return R.data(erpDataWmsService.getGoodsExtStatus()); + } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java new file mode 100644 index 000000000..4572ef417 --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java @@ -0,0 +1,21 @@ +package org.springblade.erpdata.mapper; + +import com.baomidou.mybatisplus.core.mapper.Mapper; +import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; + +import java.util.List; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName ErpDataWmsMapper + * @description: + * @autor: WuSiYu + * @create 2026-04-29 16:52 + **/ + +public interface ErpDataWmsMapper extends Mapper { + + List getGoodsExtStatus(); + +} diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml new file mode 100644 index 000000000..a8895582f --- /dev/null +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml @@ -0,0 +1,51 @@ + + + + + + + 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 103a0d5fe..dd8077336 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 @@ -1,9 +1,11 @@ package org.springblade.erpdata.service; import org.springblade.common.exception.BusinessException; +import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; import java.util.Date; +import java.util.List; /** * @version 1.0 @@ -23,4 +25,6 @@ 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; String deleteMoldPlan(String erpWoCode) throws BusinessException; + + List getGoodsExtStatus(); } 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 5e24db8f8..cd305e465 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 @@ -1,9 +1,12 @@ package org.springblade.erpdata.service.impl; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.common.exception.BusinessException; +import org.springblade.erpdata.mapper.ErpDataWmsMapper; +import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.erpdata.service.IErpDataWmsService; import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.jdbc.core.JdbcTemplate; @@ -15,6 +18,7 @@ import org.springframework.stereotype.Service; import java.sql.Types; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -31,6 +35,9 @@ import java.util.Map; @Service public class ErpDataWmsServiceImpl implements IErpDataWmsService { + @Resource + private final ErpDataWmsMapper erpDataWmsMapper; + private final JdbcTemplate jdbcTemplate; @Override @@ -209,4 +216,9 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { return excflag; } + @Override + public List getGoodsExtStatus(){ + return erpDataWmsMapper.getGoodsExtStatus(); + } + } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java new file mode 100644 index 000000000..a5596d9af --- /dev/null +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/WmsTaskClientImpl.java @@ -0,0 +1,32 @@ +package org.springblade.wms.feign; + +import io.swagger.v3.oas.annotations.Hidden; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.wms.service.IStGoodsExtService; +import org.springframework.web.bind.annotation.RestController; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName WmsTaskClient + * @description: + * @autor: WuSiYu + * @create 2026-04-30 10:20 + **/ +@NonDS +@Hidden +@RestController +@AllArgsConstructor +@Slf4j +public class WmsTaskClientImpl implements WmsTaskClient{ + + private final IStGoodsExtService stGoodsExtService; + + @Override + public boolean executeGoodsStatusUpdate() { + stGoodsExtService.executeGoodsStatusUpdate(); + return true; + } +} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StExpireSubmissionMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StExpireSubmissionMapper.xml index 670f06084..6307e8c5f 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StExpireSubmissionMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StExpireSubmissionMapper.xml @@ -32,7 +32,7 @@ se.es_time AS esTime, se.es_man AS esMan, se.submit_status AS submitStatus, - NVL(se.es_qty, 0), + se.es_qty, -- 物料表:物料编码、物料名称 g.goods_code AS goodsCode, g.goods_name AS goodsName, diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsExtService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsExtService.java index b3734138e..f8146cab1 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsExtService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStGoodsExtService.java @@ -41,5 +41,7 @@ public interface IStGoodsExtService extends BaseService { IPage selectGoodsExtPage(IPage page, Map stGoodsExt); Boolean getSpecial(Long goodsId); + + void executeGoodsStatusUpdate(); } 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 0ad5f1d39..0f7908a7a 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 @@ -71,6 +71,8 @@ public class StExpireSubmissionServiceImpl extends BaseServiceImpl implements IStGoodsExtService { + @Resource + private IErpDataWmsClient erpDataWmsClient; + @Override public IPage selectStGoodsExtPage(IPage page, StGoodsExtVO stGoodsExt) { return page.setRecords(baseMapper.selectStGoodsExtPage(page, stGoodsExt)); @@ -58,6 +65,32 @@ public class StGoodsExtServiceImpl extends BaseServiceImpl statusList = erpDataWmsClient.getGoodsExtStatus().getData(); + + // 2. 遍历结果,更新到 st_goods_ext 表 + for (StGoodsExtStatusVO vo : statusList) { + StGoodsExt ext = baseMapper.selectById(vo.getId()); + ext.setGoodsId(vo.getGoodsId()); + ext.setFirstStore(vo.getInvqty1j()); + ext.setLastStore(vo.getLastQty()); + ext.setPlanQty(vo.getPlanqty()); + ext.setGoodsStatus(vo.getGoodsStatus()); +// ext.setUpdateTime(new Date()); +// ext.setUpdateUser(AuthUtil.getUserId()); + + this.updateById(ext); + } + + log.info("===== 物料状态定时更新完成 =====", statusList.size()); + } catch (Exception e) { + log.info("===== 物料状态定时更新异常 =====", e); + } + } @Override public List exportStGoodsExt(Wrapper queryWrapper) { From c1509e030b526ab7bc5b9eab972a4911d82cd5d4 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Thu, 30 Apr 2026 12:24:21 +0800 Subject: [PATCH 04/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erpdata/pojo/vo/StGoodsExtStatusVO.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java new file mode 100644 index 000000000..0f846c905 --- /dev/null +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java @@ -0,0 +1,26 @@ +package org.springblade.erpdata.pojo.vo; + +import lombok.Data; + +/** + * @version 1.0 + * @program: jonhon-mes-svr + * @ClassName StGoodsExtStatusVO + * @description: + * @autor: WuSiYu + * @create 2026-04-29 17:04 + **/ + +@Data +public class StGoodsExtStatusVO { + + private Long id; + private String goodsCode; + private Long goodsId; + private Long useAverage; + private Double invqty1j; + private Double planqty; + private Double lastQty; + private Long goodsStatus; + +} From 29f4c741713241057f5992da30fe44d0e5bc3477 Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Thu, 30 Apr 2026 14:34:41 +0800 Subject: [PATCH 05/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=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 | 3 +- .../feign/IErpDataWmsClientFallback.java | 3 +- .../erpdata/pojo/vo/StGoodsExtStatusVO.java | 7 +-- .../erpdata/feign/ErpDataWmsClient.java | 5 +-- .../erpdata/mapper/ErpDataWmsMapper.java | 4 +- .../erpdata/mapper/ErpDataWmsMapper.xml | 43 ++----------------- .../erpdata/service/IErpDataWmsService.java | 3 +- .../service/impl/ErpDataWmsServiceImpl.java | 5 +-- .../wms/mapper/StGoodsExtMapper.java | 2 + .../wms/mapper/StGoodsExtMapper.xml | 27 ++++++++++++ .../service/impl/StGoodsExtServiceImpl.java | 35 +++++++++++---- 11 files changed, 69 insertions(+), 68 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 e97ee8e28..2635c5bdf 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 @@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.Date; -import java.util.List; /** * @version 1.0 @@ -68,6 +67,6 @@ public interface IErpDataWmsClient { * 物料状态监控同步 */ @PostMapping(GET_GOODS_EXT_STATUS) - R> getGoodsExtStatus(); + R getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode); } 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 e6eddd5dd..bd99171ac 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 @@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import java.util.Date; -import java.util.List; /** * @version 1.0 @@ -43,7 +42,7 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{ } @Override - public R> getGoodsExtStatus() { + public R getGoodsExtStatus(@RequestParam("goodsCode")String goodsCode) { return R.fail("获取数据失败"); } diff --git a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java index 0f846c905..a833008c7 100644 --- a/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java +++ b/blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/pojo/vo/StGoodsExtStatusVO.java @@ -14,13 +14,8 @@ import lombok.Data; @Data public class StGoodsExtStatusVO { - private Long id; - private String goodsCode; - private Long goodsId; - private Long useAverage; + private String prtno; private Double invqty1j; private Double planqty; - private Double lastQty; - private Long goodsStatus; } 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 f9da46813..ea60dbc7c 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 @@ -11,7 +11,6 @@ import org.springblade.wms.pojo.entity.StRealtimeStock; import org.springframework.web.bind.annotation.RestController; import java.util.Date; -import java.util.List; /** * @version 1.0 @@ -51,7 +50,7 @@ public class ErpDataWmsClient implements IErpDataWmsClient{ } @Override - public R> getGoodsExtStatus() { - return R.data(erpDataWmsService.getGoodsExtStatus()); + public R getGoodsExtStatus(String goodsCode) { + return R.data(erpDataWmsService.getGoodsExtStatus(goodsCode)); } } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java index 4572ef417..1597fbb5c 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.java @@ -3,8 +3,6 @@ package org.springblade.erpdata.mapper; import com.baomidou.mybatisplus.core.mapper.Mapper; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; -import java.util.List; - /** * @version 1.0 * @program: jonhon-mes-svr @@ -16,6 +14,6 @@ import java.util.List; public interface ErpDataWmsMapper extends Mapper { - List getGoodsExtStatus(); + StGoodsExtStatusVO getGoodsExtStatus(String goodsCode); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml index a8895582f..3dc786813 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml @@ -4,48 +4,13 @@ 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 dd8077336..81fc1509f 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 @@ -5,7 +5,6 @@ import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.pojo.entity.StRealtimeStock; import java.util.Date; -import java.util.List; /** * @version 1.0 @@ -26,5 +25,5 @@ public interface IErpDataWmsService { String deleteMoldPlan(String erpWoCode) throws BusinessException; - List getGoodsExtStatus(); + StGoodsExtStatusVO getGoodsExtStatus(String goodsCode); } 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 cd305e465..6bba80b45 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 @@ -18,7 +18,6 @@ import org.springframework.stereotype.Service; import java.sql.Types; import java.util.Date; import java.util.HashMap; -import java.util.List; import java.util.Map; /** @@ -217,8 +216,8 @@ public class ErpDataWmsServiceImpl implements IErpDataWmsService { } @Override - public List getGoodsExtStatus(){ - return erpDataWmsMapper.getGoodsExtStatus(); + public StGoodsExtStatusVO getGoodsExtStatus(String goodsCode){ + return erpDataWmsMapper.getGoodsExtStatus(goodsCode); } } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java index 2435a78cb..b7768eb0b 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.java @@ -41,5 +41,7 @@ public interface StGoodsExtMapper extends BaseMapper { List exportStGoodsExt(@Param("ew") Wrapper queryWrapper); IPage selectGoodsExtWithGoods(IPage page, @Param("ew") QueryWrapper queryWrapper); + + StGoodsExt getGoodsExt(Double invqty1j, Double planqty, Long goodsId); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml index 4b369cea0..fdcb4ce54 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml @@ -87,6 +87,33 @@ ORDER BY se.create_time DESC + + diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsExtServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsExtServiceImpl.java index e2ec99eaa..1aad63d15 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsExtServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGoodsExtServiceImpl.java @@ -11,6 +11,8 @@ import org.springblade.erpdata.feign.IErpDataWmsClient; import org.springblade.erpdata.pojo.vo.StGoodsExtStatusVO; import org.springblade.wms.excel.StGoodsExtExcel; import org.springblade.wms.mapper.StGoodsExtMapper; +import org.springblade.wms.mapper.StGoodsMapper; +import org.springblade.wms.pojo.entity.StGoods; import org.springblade.wms.pojo.entity.StGoodsExt; import org.springblade.wms.pojo.vo.StGoodsExtVO; import org.springblade.wms.service.IStGoodsExtService; @@ -18,6 +20,8 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; /** * @version 1.0 @@ -31,6 +35,8 @@ import java.util.Map; @Service public class StGoodsExtServiceImpl extends BaseServiceImpl implements IStGoodsExtService { + @Resource + private StGoodsMapper stGoodsMapper; @Resource private IErpDataWmsClient erpDataWmsClient; @@ -70,23 +76,36 @@ public class StGoodsExtServiceImpl extends BaseServiceImpl statusList = erpDataWmsClient.getGoodsExtStatus().getData(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("is_deleted", 0); + List list = baseMapper.selectList(queryWrapper); + + List goodsIds = list.stream() + .map(StGoodsExt::getGoodsId) + .filter(Objects::nonNull) + .toList(); + + Map goodsIdToCodeMap = stGoodsMapper.selectBatchIds(goodsIds) + .stream() + .collect(Collectors.toMap(StGoods::getId, StGoods::getGoodsCode)); + + for (StGoodsExt ext : list) { + Long goodsId = ext.getGoodsId(); + String goodsCode = goodsIdToCodeMap.get(goodsId); - // 2. 遍历结果,更新到 st_goods_ext 表 - for (StGoodsExtStatusVO vo : statusList) { - StGoodsExt ext = baseMapper.selectById(vo.getId()); - ext.setGoodsId(vo.getGoodsId()); + StGoodsExtStatusVO vo = erpDataWmsClient.getGoodsExtStatus(goodsCode).getData(); + StGoodsExt goodsExt = baseMapper.getGoodsExt(vo.getInvqty1j(),vo.getPlanqty(),goodsId); ext.setFirstStore(vo.getInvqty1j()); - ext.setLastStore(vo.getLastQty()); + ext.setLastStore(goodsExt.getLastStore()); ext.setPlanQty(vo.getPlanqty()); - ext.setGoodsStatus(vo.getGoodsStatus()); + ext.setGoodsStatus(goodsExt.getGoodsStatus()); // ext.setUpdateTime(new Date()); // ext.setUpdateUser(AuthUtil.getUserId()); this.updateById(ext); } - log.info("===== 物料状态定时更新完成 =====", statusList.size()); + log.info("===== 物料状态定时更新完成 =====", list.size()); } catch (Exception e) { log.info("===== 物料状态定时更新异常 =====", e); } From a7b70df43d9d88492cf2e64ea33690fae16b730a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 30 Apr 2026 10:03:48 +0800 Subject: [PATCH 06/21] =?UTF-8?q?=E4=B8=BE=E6=89=8B=E5=85=8D=E8=B4=A3?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/springblade/desk/quality/pojo/entity/RaiseHand.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java index 3aa6f174b..6bba23283 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/RaiseHand.java @@ -85,5 +85,6 @@ public class RaiseHand extends BaseEntity { @Schema(description = "文件路径") private String fileUrl; - + @Schema(description = "文件名称") + private String fileName; } From b11d6f94b4031884ea5c8a5db8e46af82cc1e225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 30 Apr 2026 16:41:17 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E7=82=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BsEpciuInspectionPointController.java | 36 +++++++++++++++++++ .../BsSafeInspectionPointController.java | 36 +++++++++++++++++++ .../IBsEpciuInspectionPointService.java | 8 +++++ .../IBsSafeInspectionPointService.java | 8 +++++ .../BsEpciuInspectionPointServiceImpl.java | 13 +++++++ .../BsSafeInspectionPointServiceImpl.java | 16 +++++++++ 6 files changed, 117 insertions(+) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEpciuInspectionPointController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEpciuInspectionPointController.java index 47ca9440d..83671f989 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEpciuInspectionPointController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsEpciuInspectionPointController.java @@ -117,6 +117,12 @@ public class BsEpciuInspectionPointController extends BladeController { @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入bsEpciuInspectionPoint") public R save(@Valid @RequestBody BsEpciuInspectionPointEntity bsEpciuInspectionPoint) { + // 校验巡检点编号是否重复 + if (bsEpciuInspectionPoint.getInsNum() != null) { + if (bsEpciuInspectionPointService.checkDuplicate(bsEpciuInspectionPoint.getInsNum(), null)) { + throw new RuntimeException("巡检点编号【" + bsEpciuInspectionPoint.getInsNum() + "】已存在,不能重复添加"); + } + } return R.status(bsEpciuInspectionPointService.save(bsEpciuInspectionPoint)); } @@ -127,6 +133,12 @@ public class BsEpciuInspectionPointController extends BladeController { @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入bsEpciuInspectionPoint") public R update(@Valid @RequestBody BsEpciuInspectionPointEntity bsEpciuInspectionPoint) { + // 校验巡检点编号是否重复(排除当前记录) + if (bsEpciuInspectionPoint.getInsNum() != null) { + if (bsEpciuInspectionPointService.checkDuplicate(bsEpciuInspectionPoint.getInsNum(), bsEpciuInspectionPoint.getId())) { + return R.fail("巡检点编号【" + bsEpciuInspectionPoint.getInsNum() + "】已存在,不能重复"); + } + } return R.status(bsEpciuInspectionPointService.updateById(bsEpciuInspectionPoint)); } @@ -137,6 +149,12 @@ public class BsEpciuInspectionPointController extends BladeController { @ApiOperationSupport(order = 6) @Operation(summary = "新增或修改", description = "传入bsEpciuInspectionPoint") public R submit(@Valid @RequestBody BsEpciuInspectionPointEntity bsEpciuInspectionPoint) { + // 校验巡检点编号是否重复 + if (bsEpciuInspectionPoint.getInsNum() != null) { + if (bsEpciuInspectionPointService.checkDuplicate(bsEpciuInspectionPoint.getInsNum(), bsEpciuInspectionPoint.getId())) { + return R.fail("巡检点编号【" + bsEpciuInspectionPoint.getInsNum() + "】已存在,不能重复"); + } + } return R.status(bsEpciuInspectionPointService.saveOrUpdate(bsEpciuInspectionPoint)); } @@ -207,6 +225,15 @@ public class BsEpciuInspectionPointController extends BladeController { noticeList.add(notice); }); + // 校验导入数据中是否有重复的巡检点编号 + for (BsEpciuInspectionPointEntity entity : noticeList) { + if (entity.getInsNum() != null) { + if (bsEpciuInspectionPointService.checkDuplicate(entity.getInsNum(), null)) { + return R.fail("巡检点编号【" + entity.getInsNum() + "】已存在,不能重复导入"); + } + } + } + // R checkR = ExcelExtUtil.importExcelCheck(file); // if (checkR != null) { // return checkR; @@ -223,6 +250,15 @@ public class BsEpciuInspectionPointController extends BladeController { @ApiOperationSupport(order = 12) @Operation(summary = "批量新增", description = "传入bsEpciuInspectionPointList") public R saveList(@Valid @RequestBody List bsEpciuInspectionPointList) { + // 校验批量数据中是否有重复的巡检点编号 + for (BsEpciuInspectionPointEntity entity : bsEpciuInspectionPointList) { + if (entity.getInsNum() != null) { + if (bsEpciuInspectionPointService.checkDuplicate(entity.getInsNum(), entity.getId())) { + return R.fail("巡检点编号【" + entity.getInsNum() + "】已存在,不能重复添加"); + } + } + } + return R.status(bsEpciuInspectionPointService.saveOrUpdateBatch(bsEpciuInspectionPointList)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsSafeInspectionPointController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsSafeInspectionPointController.java index fd8de4d81..7891f8497 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsSafeInspectionPointController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/controller/BsSafeInspectionPointController.java @@ -118,6 +118,12 @@ public class BsSafeInspectionPointController { @ApiOperationSupport(order = 4) @Operation(summary = "新增", description = "传入bsSafeInspectionPoint") public R save(@Valid @RequestBody BsSafeInspectionPointEntity bsSafeInspectionPoint) { + // 校验巡检点编号是否重复 + if (bsSafeInspectionPoint.getInsNum() != null) { + if (bsSafeInspectionPointService.checkDuplicate(bsSafeInspectionPoint.getInsNum(), null)) { + throw new RuntimeException("巡检点编号【" + bsSafeInspectionPoint.getInsNum() + "】已存在,不能重复添加"); + } + } return R.status(bsSafeInspectionPointService.save(bsSafeInspectionPoint)); } @@ -128,6 +134,12 @@ public class BsSafeInspectionPointController { @ApiOperationSupport(order = 5) @Operation(summary = "修改", description = "传入bsSafeInspectionPoint") public R update(@Valid @RequestBody BsSafeInspectionPointEntity bsSafeInspectionPoint) { + // 校验巡检点编号是否重复(排除当前记录) + if (bsSafeInspectionPoint.getInsNum() != null) { + if (bsSafeInspectionPointService.checkDuplicate(bsSafeInspectionPoint.getInsNum(), bsSafeInspectionPoint.getId())) { + return R.fail("巡检点编号【" + bsSafeInspectionPoint.getInsNum() + "】已存在,不能重复"); + } + } return R.status(bsSafeInspectionPointService.updateById(bsSafeInspectionPoint)); } @@ -138,6 +150,12 @@ public class BsSafeInspectionPointController { @ApiOperationSupport(order = 6) @Operation(summary = "新增或修改", description = "传入bsSafeInspectionPoint") public R submit(@Valid @RequestBody BsSafeInspectionPointEntity bsSafeInspectionPoint) { + // 校验巡检点编号是否重复 + if (bsSafeInspectionPoint.getInsNum() != null) { + if (bsSafeInspectionPointService.checkDuplicate(bsSafeInspectionPoint.getInsNum(), bsSafeInspectionPoint.getId())) { + return R.fail("巡检点编号【" + bsSafeInspectionPoint.getInsNum() + "】已存在,不能重复"); + } + } return R.status(bsSafeInspectionPointService.saveOrUpdate(bsSafeInspectionPoint)); } @@ -212,6 +230,15 @@ public class BsSafeInspectionPointController { && !item.getInsNum().contains("注")) .toList(); + // 校验导入数据中是否有重复的巡检点编号 + for (BsSafeInspectionPointEntity entity : importList) { + if (entity.getInsNum() != null) { + if (bsSafeInspectionPointService.checkDuplicate(entity.getInsNum(), null)) { + return R.fail("巡检点编号【" + entity.getInsNum() + "】已存在,不能重复导入"); + } + } + } + return R.status(bsSafeInspectionPointService.saveBatch(importList)); } /** @@ -221,6 +248,15 @@ public class BsSafeInspectionPointController { @ApiOperationSupport(order = 12) @Operation(summary = "批量新增", description = "传入bsSafeInspectionPointList") public R saveList(@Valid @RequestBody List bsSafeInspectionPointList) { + // 校验批量数据中是否有重复的巡检点编号 + for (BsSafeInspectionPointEntity entity : bsSafeInspectionPointList) { + if (entity.getInsNum() != null) { + if (bsSafeInspectionPointService.checkDuplicate(entity.getInsNum(), entity.getId())) { + return R.fail("巡检点编号【" + entity.getInsNum() + "】已存在,不能重复添加"); + } + } + } + return R.status(bsSafeInspectionPointService.saveOrUpdateBatch(bsSafeInspectionPointList)); } @PostMapping(value = "/print") diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEpciuInspectionPointService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEpciuInspectionPointService.java index 62dd3dece..af3701883 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEpciuInspectionPointService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsEpciuInspectionPointService.java @@ -62,4 +62,12 @@ public interface IBsEpciuInspectionPointService extends BaseService getByCode(String code); List listByCode(String code); + + /** + * 校验巡检点是否重复(根据巡检点编号) + * @param insNum 巡检点编号 + * @param excludeId 排除的ID(修改时使用,新增时传null) + * @return 是否存在重复 + */ + boolean checkDuplicate(String insNum, Long excludeId); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsSafeInspectionPointService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsSafeInspectionPointService.java index c65e04ba4..8fd8720a3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsSafeInspectionPointService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/IBsSafeInspectionPointService.java @@ -64,6 +64,14 @@ public interface IBsSafeInspectionPointService extends BaseService 0; + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsSafeInspectionPointServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsSafeInspectionPointServiceImpl.java index 456ad308d..168183b32 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsSafeInspectionPointServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsSafeInspectionPointServiceImpl.java @@ -26,6 +26,7 @@ package org.springblade.desk.energy.service.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -178,4 +179,19 @@ public class BsSafeInspectionPointServiceImpl extends BaseServiceImpl 0; + } } From a13a3fb8bff8f142eb47e37d63d04677bb136065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 30 Apr 2026 16:42:08 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E5=B7=A1=E6=A3=80=E7=82=B9=E4=B8=8A?= =?UTF-8?q?=E6=AC=A1=E5=B7=A1=E6=A3=80=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/BsEpciuPatrolInspectionServiceImpl.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEpciuPatrolInspectionServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEpciuPatrolInspectionServiceImpl.java index aa474b5fd..93691aa8c 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEpciuPatrolInspectionServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/energy/service/impl/BsEpciuPatrolInspectionServiceImpl.java @@ -134,7 +134,7 @@ public class BsEpciuPatrolInspectionServiceImpl extends BaseServiceImpl safeInspectionPointList = bsEpciuInspectionPointService.listByCode(bsEpciuPatrolInspection.getInsNum()); + if (CollUtil.isEmpty(safeInspectionPointList)){ + return; + } Set pointIds = safeInspectionPointList.stream().map(BsEpciuInspectionPointEntity::getId).collect(Collectors.toSet()); update(Wrappers.lambdaUpdate(BsEpciuPatrolInspectionEntity.class) .in(BsEpciuPatrolInspectionEntity::getEpcId, pointIds) From 158d351236f9ea10a9ea7164a763ebbfcf9e365c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 30 Apr 2026 16:42:53 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=20-?= =?UTF-8?q?=20=E8=B4=A8=E9=87=8F=E7=AD=89=E7=BA=A7=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/entity/QualityGradeEntity.java | 24 +++- .../controller/QualityGradeController.java | 123 +++++++++++++++++- 2 files changed, 136 insertions(+), 11 deletions(-) diff --git a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/QualityGradeEntity.java b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/QualityGradeEntity.java index 47081f5f6..6e15f98d6 100644 --- a/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/QualityGradeEntity.java +++ b/blade-service-api/blade-scheduling-api/src/main/java/org/springblade/scheduling/pojo/entity/QualityGradeEntity.java @@ -36,6 +36,7 @@ import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.tenant.mp.TenantEntity; import java.io.Serial; import java.util.List; +import java.util.Map; /** * 质量等级表 实体类 @@ -63,6 +64,11 @@ public class QualityGradeEntity extends BaseEntity { @Schema(description = "类型 1-军品 2-商飞 3-宇航") private String type; + @Schema(description = "是否局部镀 0-否 1-是") + private String isLocal; + @Schema(description = "是否厚金区固定厚度 0-否 1-是") + private String isThickness; + private String typeNames; // @TableField(exist = false) @@ -71,9 +77,19 @@ public class QualityGradeEntity extends BaseEntity { private String types; - @Schema(description = "是否局部镀 0-否 1-是") - private String isLocal; - @Schema(description = "是否厚金区固定厚度 0-否 1-是") - private String isThickness; + public final static Map typeMap = Map.of( + "1", "军品", + "2", "商飞", + "3", "宇航" + ); + + public final static Map isLocalMap = Map.of( + "0", "否", + "1", "是" + ); + public final static Map isThicknessMap = Map.of( + "0", "否", + "1", "是" + ); } diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/QualityGradeController.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/QualityGradeController.java index a4d415c2f..d1703293e 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/QualityGradeController.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/controller/QualityGradeController.java @@ -25,6 +25,8 @@ */ package org.springblade.scheduling.scheduling.controller; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; @@ -34,6 +36,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.mp.support.Condition; @@ -43,20 +46,25 @@ import org.springblade.core.secure.annotation.IsAdmin; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; -import org.springblade.desk.basic.pojo.entity.OemCraftAbilityEntity; -import org.springblade.desk.basic.pojo.entity.WorkCenter; -import org.springblade.scheduling.pojo.entity.CraftAbilityEntity; +import org.springblade.desk.basic.constant.ExcelConst; import org.springblade.scheduling.pojo.entity.QualityGradeEntity; import org.springblade.scheduling.scheduling.excel.QualityGradeExcel; import org.springblade.scheduling.scheduling.service.IQualityGradeService; import org.springblade.scheduling.scheduling.vo.QualityGradeVO; import org.springblade.scheduling.scheduling.wrapper.QualityGradeWrapper; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.*; import java.util.stream.Collectors; /** @@ -292,4 +300,105 @@ public class QualityGradeController extends BladeController { return R.data(list); } + @PostMapping("/importExcel") + @ApiOperationSupport(order = 72) + @Operation(summary = "导入Excel", description = "MultipartFile") + public R importExcel(@RequestParam("file") MultipartFile file) { + importExcelCheck(file); + + List list = ExcelUtil.read(file, QualityGradeEntity.class); + if (CollUtil.isEmpty(list)){ + return R.fail("导入数据为空"); + } + list.forEach(s -> { + String type = s.getType(); + if (StrUtil.isNotEmpty(type)) { + List typeCodes = new ArrayList<>(); + List typeNames = new ArrayList<>(); + for (Map.Entry entry : QualityGradeEntity.typeMap.entrySet()) { + if (type.contains(entry.getValue())) { + typeCodes.add(entry.getKey()); + typeNames.add(entry.getValue()); + } + } + if (!typeCodes.isEmpty()) { + s.setType(String.join(",", typeCodes)); + s.setTypeNames(String.join(",", typeNames)); + } + } + + // isLocal + String isLocal = s.getIsLocal(); + if (StrUtil.isNotEmpty(isLocal)) { + for (Map.Entry entry : QualityGradeEntity.isLocalMap.entrySet()) { + if (entry.getValue().equals(isLocal)) { + s.setIsLocal(entry.getKey()); + break; + } + } + } + + // isThickness + String isThickness = s.getIsThickness(); + if (StrUtil.isNotEmpty(isThickness)) { + for (Map.Entry entry : QualityGradeEntity.isThicknessMap.entrySet()) { + if (entry.getValue().equals(isThickness)) { + s.setIsThickness(entry.getKey()); + break; + } + } + } + }); + + return R.data(qualityGradeService.saveBatch(list)); + } + public static R importExcelCheck(MultipartFile file) { + if (file.isEmpty()) { + return R.fail("请上传文件"); + } + String fileName = file.getOriginalFilename(); + if (StringUtils.isBlank(fileName)) { + return R.fail("文件名为空"); + } + if (!StringUtils.endsWith(fileName, ExcelConst.EXT_XLS) && + !StringUtils.endsWith(fileName, ExcelConst.EXT_XLSX)) { + return R.fail("格式不正确"); + } + return null; + } + /** + * 下载模板 + */ + @IsAdmin + @GetMapping("/downloadTemplate") + @ApiOperationSupport(order = 9) + @Operation(summary = "导出模板", description = "导出模板") + public ResponseEntity exportQualityGrade(HttpServletResponse response) { + return downloadXlsTemplate( + "Excel/质量等级表数据导入模板.xlsx", + "导入模版-质量等级表数据.xlsx"); + } + + public static ResponseEntity downloadXlsTemplate(String path, String downloadFileName) { + if (StringUtils.isAnyBlank(path, downloadFileName)) { + throw new IllegalArgumentException("path or downloadFileName is null"); + } + // 读取resource下的Excel文件,路径从resource根目录开始。 + org.springframework.core.io.Resource resource = new ClassPathResource(path); + // 检查文件是否存在。 + if (!resource.exists()) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + // 构建响应头。 + HttpHeaders headers = new HttpHeaders(); + // 文件名编码,解决中文乱码问题。 + String encodedFileName = URLEncoder.encode(downloadFileName, StandardCharsets.UTF_8) + .replaceAll("\\+", "%20"); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + encodedFileName + "\""); + // 返回文件流 + return ResponseEntity.ok() + .headers(headers) + .contentType(MediaType.parseMediaType(ExcelConst.CONTENT_TYPE_XLSX)) + .body(resource); + } } From de1362e70caee3ea81d316949ee372e52039b9c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E4=B9=BE=E7=BF=94?= Date: Thu, 30 Apr 2026 16:43:40 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=95=B0=E6=8D=AE=20-?= =?UTF-8?q?=20=E8=B4=A8=E9=87=8F=E7=AD=89=E7=BA=A7=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../excel/质量等级表数据导入模板.xlsx | Bin 0 -> 9890 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 blade-service/blade-scheduling/src/main/resources/excel/质量等级表数据导入模板.xlsx diff --git a/blade-service/blade-scheduling/src/main/resources/excel/质量等级表数据导入模板.xlsx b/blade-service/blade-scheduling/src/main/resources/excel/质量等级表数据导入模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..697183e9dfc01745528fa4be5b1e08b5d29c5c21 GIT binary patch literal 9890 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 T|I=Bq9@?7_ALxQ89&!H<)Kwm- literal 0 HcmV?d00001 From 48d0744b2118875b9dd435980cb1fa4a1620385e Mon Sep 17 00:00:00 2001 From: sunjianxi <839419401@qq.com> Date: Thu, 30 Apr 2026 17:31:25 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../desk/order/pojo/entity/AssayContent.java | 4 ++-- .../desk/cost/mapper/CostStatisticsMapper.xml | 24 +++++++++++++++++-- .../controller/YieldOrderController.java | 4 ++-- .../desk/order/mapper/YieldOrderMapper.java | 5 ++-- .../desk/order/mapper/YieldOrderMapper.xml | 16 ++++--------- .../order/service/IYieldOrderService.java | 3 +-- .../impl/PlateGoodsRecordServiceImpl.java | 1 + .../service/impl/YieldOrderServiceImpl.java | 4 ++-- 8 files changed, 36 insertions(+), 25 deletions(-) diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java index 374d79be8..14f719d61 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/AssayContent.java @@ -37,10 +37,10 @@ public class AssayContent extends BaseEntity { * 化验时间 */ @DateTimeFormat( - pattern = "yyyy-MM-dd" + pattern = "yyyy-MM-dd HH:mm:ss" ) @JsonFormat( - pattern = "yyyy-MM-dd" + pattern = "yyyy-MM-dd HH:mm:ss" ) @TableField(value = "ASSAY_TIME") private Date assayTime; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml index 8c358308d..c47575138 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/cost/mapper/CostStatisticsMapper.xml @@ -127,11 +127,31 @@ a.quantity, a.SIR_MONEY, a.BUY_CODE, - a.CHECK_NO, + a.CHECK_NO, a.QUANTITY_LEVEL, a.SCRAP_CYCLE, a.STOVE_PI_NO, - a.IN_OUT_REASON, + CASE + a.IN_OUT_REASON + WHEN N'0' THEN + N'报废出库' + WHEN N'1' THEN + N'料头出库' + WHEN N'2' THEN + N'超额出库' + WHEN N'3' THEN + N'复检出库' + WHEN N'4' THEN + N'领用出库' + WHEN N'5' THEN + N'库转译' + WHEN N'6' THEN + N'退货出库' + WHEN N'7' THEN + N'物料出库' + WHEN N'8' THEN + N'班组提请' ELSE N'' + END as "inOutReason", a.IN_OUT_DATE, c.real_name as "userName", a.SIR_CODE diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java index f5e876c1a..3bf20dad5 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/controller/YieldOrderController.java @@ -124,11 +124,11 @@ public class YieldOrderController extends BladeController { @Parameter(name = "overHalfMon", description = "使用半月以上的数据,0:否,1:是, 以生产订单的下达时间算", in = ParameterIn.QUERY, schema = @Schema(type = "string")) }) @Operation(summary = "分页-物料需求申报", description = "") - public R> pageMaterialApply(Long wcId, Integer materialType, Integer overHalfMon, Query query) { + public R> pageMaterialApply(Long wcId, String plateGoodsCode, Integer overHalfMon, Query query) { IPage page = Condition.getPage(query); page.setRecords(new ArrayList<>()); - page = yieldOrderService.pageMaterialApply(Condition.getPage(query), wcId, materialType, overHalfMon); + page = yieldOrderService.pageMaterialApply(Condition.getPage(query), wcId, plateGoodsCode, overHalfMon); return R.data(YieldOrderWrapper.build().pageVO(page)); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java index 520ea692e..1a176d36d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java @@ -6,7 +6,6 @@ import org.apache.ibatis.annotations.Param; import org.springblade.desk.order.pojo.dto.YieldOrderDto; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; -import org.springblade.desk.order.pojo.vo.YieldOrderVo; import java.util.List; @@ -33,13 +32,13 @@ public interface YieldOrderMapper extends BaseMapper { * * @param page * @param wcId 作业中心 - * @param materialType 物料类型,1:金钾,2:银钾 + * @param plateGoodsCode 金钾:04-05-023 银钾:04-05-024 * @param overHalfMon 使用半月以上的数据,0:否,1:是 * @param yieldTypeList 订单类型 * @param yieldStatusList 订单状态 * @return */ - List pageMaterialApply(IPage page, Long wcId, Integer materialType, Integer overHalfMon, + List pageMaterialApply(IPage page, Long wcId, String plateGoodsCode, Integer overHalfMon, List yieldTypeList, List yieldStatusList); Long getWcId(Long orderId); diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml index f42469157..822a45c2a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml @@ -84,22 +84,14 @@ + SELECT + t.ID, + t.CODE, + t.NAME, + t.MEMO, + t.SORT, + t.TEAM_MEMBER, + t.TEAM_MEMBER_ID, + t.STATUS, + t.CREATE_USER, + t.CREATE_TIME, + t.CREATE_DEPT, + t.UPDATE_USER, + t.UPDATE_TIME, + t.IS_DELETED + FROM BS_PLATING_ASSORTMENT t + WHERE t.IS_DELETED = 0 + + AND t.CODE LIKE '%' || #{platingAssortment.code} || '%' + + + AND t.NAME LIKE '%' || #{platingAssortment.name} || '%' + + + AND t.STATUS = #{platingAssortment.status} + + ORDER BY t.SORT ASC, t.CREATE_TIME DESC + + + + + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IPlatingAssortmentService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IPlatingAssortmentService.java new file mode 100644 index 000000000..29db92fa9 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IPlatingAssortmentService.java @@ -0,0 +1,51 @@ +package org.springblade.desk.basic.service; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springblade.core.mp.base.BaseService; +import org.springblade.desk.basic.excel.PlatingAssortmentExcel; +import org.springblade.desk.basic.pojo.entity.PlatingAssortment; +import org.springblade.desk.basic.pojo.vo.PlatingAssortmentVO; + +import java.util.List; + +/** + * [镀种分类] 服务类 + * + * @author BladeX + * @since 2026-04-29 + */ +public interface IPlatingAssortmentService extends BaseService { + + /** + * 自定义分页 + * + * @param page 分页参数 + * @param platingAssortment 查询参数 + * @return IPage + */ + IPage selectPlatingAssortmentPage(IPage page, PlatingAssortmentVO platingAssortment); + + /** + * 导出数据 + * + * @param queryWrapper 查询条件 + * @return List + */ + List exportPlatingAssortment(Wrapper queryWrapper); + + /** + * 设置VO值(填充用户名称等) + * + * @param vo VO对象 + */ + void setVOValue(PlatingAssortmentVO vo); + + /** + * 更新班组成员 + * + * @param platingAssortment 包含userIds的实体 + * @return 是否成功 + */ + boolean updateTeamMembers(PlatingAssortment platingAssortment); +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlatingAssortmentServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlatingAssortmentServiceImpl.java new file mode 100644 index 000000000..9047eeaa5 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/PlatingAssortmentServiceImpl.java @@ -0,0 +1,119 @@ +package org.springblade.desk.basic.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springblade.common.constant.CommonConstant; +import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.desk.basic.mapper.PlatingAssortmentMapper; +import org.springblade.desk.basic.pojo.entity.PlatingAssortment; +import org.springblade.desk.basic.pojo.vo.PlatingAssortmentVO; +import org.springblade.desk.basic.service.IPlatingAssortmentService; +import org.springblade.desk.basic.excel.PlatingAssortmentExcel; +import org.springblade.system.feign.IUserClient; +import org.springblade.system.pojo.entity.User; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * [镀种分类] 服务实现类 + * + * @author BladeX + * @since 2026-04-29 + */ +@Slf4j +@Service +public class PlatingAssortmentServiceImpl extends BaseServiceImpl implements IPlatingAssortmentService { + + @Resource + private IUserClient userClient; + + @Override + public IPage selectPlatingAssortmentPage(IPage page, PlatingAssortmentVO platingAssortment) { + return page.setRecords(baseMapper.selectPlatingAssortmentPage(page, platingAssortment)); + } + + @Override + public List exportPlatingAssortment(Wrapper queryWrapper) { + return baseMapper.exportPlatingAssortment(queryWrapper); + } + + @Override + public void setVOValue(PlatingAssortmentVO vo) { + if (vo == null) { + return; + } + + // 设置创建人名称 + if (vo.getCreateUser() != null && vo.getCreateUser() > 0) { + try { + User createUser = userClient.userInfoById(vo.getCreateUser()).getData(); + if (createUser != null) { + vo.setCreateUserRealName(createUser.getRealName()); + } + } catch (Exception e) { + log.warn("获取创建人信息失败: userId={}", vo.getCreateUser(), e); + } + } + + // 设置更新人名称 + if (vo.getUpdateUser() != null && vo.getUpdateUser() > 0) { + try { + User updateUser = userClient.userInfoById(vo.getUpdateUser()).getData(); + if (updateUser != null) { + vo.setUpdateUserRealName(updateUser.getRealName()); + } + } catch (Exception e) { + log.warn("获取更新人信息失败: userId={}", vo.getUpdateUser(), e); + } + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean updateTeamMembers(PlatingAssortment platingAssortment) { + if (platingAssortment.getId() == null) { + throw new IllegalArgumentException("ID不能为空"); + } + + PlatingAssortment existing = getById(platingAssortment.getId()); + if (existing == null) { + throw new IllegalArgumentException("记录不存在"); + } + + List userIds = platingAssortment.getUserIds(); + String teamMemberIds = null; + String teamMemberNames = null; + + if (userIds != null && !userIds.isEmpty()) { + // 转换为逗号分隔的ID字符串 + teamMemberIds = userIds.stream() + .map(Object::toString) + .collect(Collectors.joining(",")); + + // 查询用户信息获取真实姓名 + try { + List users = userClient.userListByIds(teamMemberIds); + if (users != null && !users.isEmpty()) { + teamMemberNames = users.stream() + .map(User::getRealName) + .collect(Collectors.joining(",")); + } + } catch (Exception e) { + log.error("获取用户信息失败", e); + throw new RuntimeException("获取用户信息失败"); + } + } + + existing.setTeamMemberId(teamMemberIds); + existing.setTeamMember(teamMemberNames); + + return updateById(existing); + } +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/PlatingAssortmentWrapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/PlatingAssortmentWrapper.java new file mode 100644 index 000000000..8e8b0d8a0 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/basic/wrapper/PlatingAssortmentWrapper.java @@ -0,0 +1,43 @@ +package org.springblade.desk.basic.wrapper; + +import org.springblade.core.mp.support.BaseEntityWrapper; +import org.springblade.desk.basic.pojo.entity.PlatingAssortment; +import org.springblade.desk.basic.pojo.vo.PlatingAssortmentVO; + +import java.util.Objects; + +/** + * [镀种分类] Wrapper类 + * + * @author BladeX + * @since 2026-04-29 + */ +public class PlatingAssortmentWrapper extends BaseEntityWrapper { + + public static PlatingAssortmentWrapper build() { + return new PlatingAssortmentWrapper(); + } + + @Override + public PlatingAssortmentVO entityVO(PlatingAssortment platingAssortment) { + if (Objects.isNull(platingAssortment)) { + return null; + } + PlatingAssortmentVO platingAssortmentVO = Objects.requireNonNull(new PlatingAssortmentVO()); + platingAssortmentVO.setId(platingAssortment.getId()); + platingAssortmentVO.setCode(platingAssortment.getCode()); + platingAssortmentVO.setName(platingAssortment.getName()); + platingAssortmentVO.setMemo(platingAssortment.getMemo()); + platingAssortmentVO.setSort(platingAssortment.getSort()); + platingAssortmentVO.setTeamMember(platingAssortment.getTeamMember()); + platingAssortmentVO.setTeamMemberId(platingAssortment.getTeamMemberId()); + platingAssortmentVO.setStatus(platingAssortment.getStatus()); + platingAssortmentVO.setCreateUser(platingAssortment.getCreateUser()); + platingAssortmentVO.setCreateDept(platingAssortment.getCreateDept()); + platingAssortmentVO.setCreateTime(platingAssortment.getCreateTime()); + platingAssortmentVO.setUpdateUser(platingAssortment.getUpdateUser()); + platingAssortmentVO.setUpdateTime(platingAssortment.getUpdateTime()); + platingAssortmentVO.setIsDeleted(platingAssortment.getIsDeleted()); + return platingAssortmentVO; + } +} diff --git a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java index bf169fcfa..d60f952b9 100644 --- a/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java +++ b/blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java @@ -41,6 +41,7 @@ import org.springblade.core.tool.utils.StringPool; import org.springblade.core.tool.utils.StringUtil; import org.springblade.desk.basic.feign.IWorkCenterClient; import org.springblade.desk.basic.pojo.entity.BasicClazz; +import org.springblade.desk.basic.pojo.entity.PlatingAssortment; import org.springblade.desk.basic.pojo.entity.TeamSet; import org.springblade.system.cache.SysCache; import org.springblade.system.mapper.DeptMapper; @@ -190,7 +191,8 @@ public class DeptServiceImpl extends ServiceImpl implements ID // List list = userExtService.listAllByRoleIds("2032373544077012993,2032373858255548418"); // List userIds = list.stream().map(User::getId).collect(Collectors.toList()); - BasicClazz detail = workCenterClient.getClazzById(clazzId).getData(); + //BasicClazz detail = workCenterClient.getClazzById(clazzId).getData(); + PlatingAssortment detail = workCenterClient.platingAssortmentByid(clazzId).getData(); if(detail != null){ String teamId = detail.getTeamMemberId(); if(null != teamId && !"".equals(teamId)){ From 4a11bcdefd5384009da9f39902532b6dc96755ca Mon Sep 17 00:00:00 2001 From: maxiangong <298222784@qq.com> Date: Wed, 6 May 2026 10:40:03 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E5=A4=96=E5=8D=8F=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/Excel/oem/标准工序代码.xls | Bin 0 -> 20480 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 blade-service/blade-desk/src/main/resources/Excel/oem/标准工序代码.xls diff --git a/blade-service/blade-desk/src/main/resources/Excel/oem/标准工序代码.xls b/blade-service/blade-desk/src/main/resources/Excel/oem/标准工序代码.xls new file mode 100644 index 0000000000000000000000000000000000000000..b0b07edbed7975a5925c27b1d9381f651655717f GIT binary patch literal 20480 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 Date: Thu, 7 May 2026 09:44:24 +0800 Subject: [PATCH 16/21] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9-sjx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WorkOrderServiceImpl.java | 71 ++++++++++--------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java index 2b4a64929..62fc4577a 100644 --- a/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-scheduling/src/main/java/org/springblade/scheduling/scheduling/service/impl/WorkOrderServiceImpl.java @@ -635,6 +635,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl resourceList = entry1.getValue(); for (EquipResourceEntity equipResource : resourceList) { + if(equipResource.getStartTime().compareTo(prevProcessEnd) <0){ + continue; + } //烧结订单需判断零件类型 if(order.getYieldType() != YieldOrderEnum.YIELD_TYPE_1.getCode()){ //玻璃饼订单查询玻璃饼直径,壳体查询最大外径 @@ -664,11 +667,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl personAbilityList = personAbilityService.list(Wrappers.lambdaQuery() .eq(PersonAbilityEntity::getWorkCenterId,craft.getWorkCenterId()) @@ -1953,7 +1956,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl voList = JsonUtil.readValue(personAbility.getStandardTime(), new TypeReference>() {}); for(PersonAbilityVO vo : voList){ if(part.getExternalDiameter() != null && part.getExternalDiameter() > vo.getStartNum() && part.getExternalDiameter() <= vo.getEndNum()){ - personTime = Double.parseDouble(vo.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + personTime = Double.parseDouble(vo.getStandardTime()) * qty + personAbility.getPrepareTime().doubleValue(); break; } } @@ -1966,7 +1969,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl voList = JsonUtil.readValue(personAbility.getStandardTime(), new TypeReference>() {}); for(PersonAbilityVO vo : voList){ if(part.getBlbDiameter() != null && part.getBlbDiameter() >vo.getStartNum() && part.getBlbDiameter() <= vo.getEndNum()){ - personTime = Double.parseDouble(vo.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + personTime = Double.parseDouble(vo.getStandardTime()) * qty + personAbility.getPrepareTime().doubleValue(); break; } } @@ -1990,7 +1993,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl voList = JsonUtil.readValue(personAbility.getStandardTime(), new TypeReference>() {}); for(PersonAbilityVO vo : voList){ if(quota > vo.getStartNum() && quota <= vo.getEndNum()){ - personTime = Double.parseDouble(vo.getStandardTime()) * order.getYpQty() + personAbility.getPrepareTime().doubleValue(); + personTime = Double.parseDouble(vo.getStandardTime()) * qty + personAbility.getPrepareTime().doubleValue(); break; } } @@ -2003,7 +2006,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); @@ -2106,11 +2109,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); @@ -2220,11 +2223,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); @@ -2297,7 +2300,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 80) { result = 15.6 + 1.5 * sumOfQuota; } - result = result * order.getYpQty() + 7; + result = result * qty + 7; } else { if (n <= 15) { result = 6.6 + 3.5 * sumOfQuota; @@ -2314,13 +2317,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl 80) { result = 15.6 + 3.5 * sumOfQuota; } - result = result * order.getYpQty() + 10; + result = result * qty + 10; } } return Math.ceil(result); } //单侧折针、双侧折针 - public Double calPersonHoursByZz(YieldOrderEntity order,PartEntity part,String processName){ + public Double calPersonHoursByZz(Integer qty,PartEntity part,String processName){ Double result = 0.0; if (part != null && part.getId() != null) { List partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); @@ -2340,11 +2343,11 @@ public class WorkOrderServiceImpl extends BaseServiceImpl partRelationList = partRelationService.list(Wrappers.lambdaQuery().eq(PartRelationEntity::getPartId,part.getId())); @@ -2357,7 +2360,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl mergeYieldOrderList(List originalList) { From 7a0cab5efa033f62a897cdc253954c1cfc160ffd Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Thu, 7 May 2026 09:45:49 +0800 Subject: [PATCH 17/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/pojo/entity/StBuyOrder.java | 2 +- .../wms/pojo/entity/StOtherOutRecord.java | 5 +++ .../wms/controller/StBuyOrderController.java | 3 +- .../wms/mapper/StAllotRecordMapper.xml | 3 +- .../service/impl/StBuyOrderServiceImpl.java | 12 ++++--- .../impl/StOtherOutRecordServiceImpl.java | 7 ++++ .../impl/StRealtimeStockServiceImpl.java | 33 +++++++++++++++---- 7 files changed, 50 insertions(+), 15 deletions(-) diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java index 2db711a84..f5e837889 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StBuyOrder.java @@ -138,7 +138,7 @@ public class StBuyOrder extends TenantEntity { * 检查人 */ @Schema(description = "检查人") - private String checkMan; + private Long checkMan; /** * 检查时间 */ diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StOtherOutRecord.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StOtherOutRecord.java index 90412d78e..48fcdbfb9 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StOtherOutRecord.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StOtherOutRecord.java @@ -115,6 +115,11 @@ public class StOtherOutRecord extends TenantEntity { */ @Schema(description = "领料人ID") private Long picker; + /** + * 借用报废记录ID + */ + @Schema(description = "借用报废记录ID") + private Long rrId; /*0:报废出库,1:料头出库,2.超额出库,3复检出库,4领用出库,5库转移,6退货出库,11不合格退库*/ public static final Short OUT_TYPE_SCRAP = 0; diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java index eae94eec8..dc98c5ccc 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java @@ -105,9 +105,8 @@ public class StBuyOrderController extends BladeController { stBuyOrder.setApprovalStatus(StBuyOrder.APPROVAL_STATUS_CHECKING); } - /* 2. 默认排序:boCode 升序(*/ if (StrUtil.isBlank(query.getAscs()) && StrUtil.isBlank(query.getDescs())) { - query.setAscs("bo_code"); + query.setDescs("create_time"); } IPage pages = stBuyOrderService.selectStBuyOrderPage(Condition.getPage(query), stBuyOrder); diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StAllotRecordMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StAllotRecordMapper.xml index 1de33df73..b3e050bb2 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StAllotRecordMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StAllotRecordMapper.xml @@ -51,7 +51,7 @@ AND g.goods_code LIKE CONCAT('%', #{ew.entity.goodsCode}, '%') - + ORDER BY a.create_time DESC diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java index 543e02495..6eea0c3cc 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java @@ -226,7 +226,7 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl ruser = userClient.userInfoById(bo.getDeclareMan()); + User declareMan = ruser.getData(); + dto.setReqctlr(declareMan.getAccount()); // 当前登录人 dto.setCheckdate(bo.getCheckDate() == null ? "" : DateUtil.format(bo.getCheckDate(), "yyyy-MM-dd")); - dto.setCheckman(bo.getCheckMan() == null ? "" : bo.getCheckMan()); + R userR = userClient.userInfoById(bo.getCheckMan()); + User checkMan = userR.getData(); + dto.setCheckman(checkMan.getAccount() == null ? "" : checkMan.getAccount()); pdList.add(dto); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java index d58191541..8d72a25cf 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StOtherOutRecordServiceImpl.java @@ -73,6 +73,7 @@ public class StOtherOutRecordServiceImpl extends BaseServiceImpl rlsIdList = new ArrayList<>(); - + List warnMsgList = new ArrayList<>(); // 遍历出入库记录列表,批量执行核心业务逻辑 for (int i = 0; i < inoutList.size(); i++) { // 3.1 获取当前索引对应的单个对象 @@ -357,9 +360,14 @@ public class StRealtimeStockServiceImpl extends BaseServiceImpl Date: Thu, 7 May 2026 14:41:03 +0800 Subject: [PATCH 18/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml | 2 +- .../org/springblade/wms/controller/StBuyOrderController.java | 4 ---- .../main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml | 2 +- .../springblade/wms/service/impl/StBuyOrderServiceImpl.java | 4 ++-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml index 3dc786813..1b3093a92 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataWmsMapper.xml @@ -10,7 +10,7 @@ NVL(erp.planqty, 0) AS planqty FROM dba_mgr.v_mes_rb_prtstuff erp - ON erp.prtno = #{goodsCode} + WHERE erp.prtno = #{goodsCode} diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java index dc98c5ccc..abcd7b3c0 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/controller/StBuyOrderController.java @@ -105,10 +105,6 @@ public class StBuyOrderController extends BladeController { stBuyOrder.setApprovalStatus(StBuyOrder.APPROVAL_STATUS_CHECKING); } - if (StrUtil.isBlank(query.getAscs()) && StrUtil.isBlank(query.getDescs())) { - query.setDescs("create_time"); - } - IPage pages = stBuyOrderService.selectStBuyOrderPage(Condition.getPage(query), stBuyOrder); return R.data(pages); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml index fdcb4ce54..caa143372 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml @@ -104,7 +104,7 @@ FROM st_goods_ext ge INNER JOIN st_goods g ON g.id = ge.goods_id - AND g.id = #{goodsId} + WHERE g.id = #{goodsId} LEFT JOIN ( SELECT b.goods_code, SUM(a.quantity - a.occupy_quantity) AS last_qty diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java index 6eea0c3cc..b4c370ec7 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StBuyOrderServiceImpl.java @@ -10,7 +10,6 @@ import lombok.extern.slf4j.Slf4j; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.secure.BladeUser; -import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.desk.common.feign.IMesApprovalRecordClient; import org.springblade.desk.common.pojo.entity.MesApprovalRecordEntity; @@ -277,7 +276,8 @@ public class StBuyOrderServiceImpl extends BaseServiceImpl Date: Thu, 7 May 2026 15:00:33 +0800 Subject: [PATCH 19/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/springblade/erpdata/feign/IErpDataWmsClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2635c5bdf..9f26efaf4 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 @@ -53,7 +53,7 @@ public interface IErpDataWmsClient { * 工装计划申报发送erp */ @PostMapping(CREATE_MOLD_PLAN) - R createMoldPlan(@RequestParam("partCode")String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity, + R createMoldPlan(@RequestParam(value = "partCode", required = false)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; From 2843e15c183f386b5318e86f6c048ceea5bd932e Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Thu, 7 May 2026 15:56:35 +0800 Subject: [PATCH 20/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springblade/erpdata/feign/IErpDataWmsClientFallback.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 bd99171ac..b9e0f49ce 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 @@ -30,7 +30,7 @@ public class IErpDataWmsClientFallback implements IErpDataWmsClient{ } @Override - public R createMoldPlan(@RequestParam("partCode")String partCode, @RequestParam("moCode")String moCode, @RequestParam("plantype")String plantype, @RequestParam("quantity")Double quantity, + public R createMoldPlan(@RequestParam(value = "partCode", required = false)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("获取数据失败"); From 1033d9fd0ae0d062d96a941faf922e9e7636406a Mon Sep 17 00:00:00 2001 From: wusiyu <2015098864@qq.com> Date: Thu, 7 May 2026 16:46:05 +0800 Subject: [PATCH 21/21] =?UTF-8?q?=E4=BB=93=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml | 2 +- .../springblade/wms/service/impl/StGoodsExtServiceImpl.java | 4 ++++ .../wms/service/impl/StRealtimeStockServiceImpl.java | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml index caa143372..e4e87a68c 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGoodsExtMapper.xml @@ -104,7 +104,6 @@ FROM st_goods_ext ge INNER JOIN st_goods g ON g.id = ge.goods_id - WHERE g.id = #{goodsId} LEFT JOIN ( SELECT b.goods_code, SUM(a.quantity - a.occupy_quantity) AS last_qty @@ -112,6 +111,7 @@ INNER JOIN st_goods b ON a.goods_id = b.id GROUP BY b.goods_code ) mes ON g.goods_code = mes.goods_code + WHERE g.id = #{goodsId}