diff --git a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java index 7b82fcee..a831b190 100644 --- a/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java +++ b/blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java @@ -12,9 +12,9 @@ public interface LauncherConstant { /** * nacos 命名空间 */ -// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e"; + String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e"; // 生产环境 - String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; +// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401"; // 测试环境 // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8"; @@ -31,8 +31,8 @@ public interface LauncherConstant { /** * nacos dev 地址 */ - String NACOS_DEV_ADDR = "192.168.249.27:8848"; -// String NACOS_DEV_ADDR = "127.0.0.1:8848"; +// String NACOS_DEV_ADDR = "192.168.249.27:8848"; + String NACOS_DEV_ADDR = "127.0.0.1:8848"; /**R * nacos prod 地址 diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCloseProdPlanProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCloseProdPlanProcessor.java index f60c3327..e608d57f 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCloseProdPlanProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCloseProdPlanProcessor.java @@ -2,7 +2,6 @@ package org.springblade.job.processor.erp; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springblade.desk.order.feign.IApsOrderClient; import org.springblade.erpdata.feign.IErpMesRbWoClient; import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.TaskContext; @@ -16,15 +15,18 @@ public class SynCloseProdPlanProcessor implements BasicProcessor { private final IErpMesRbWoClient mesRbWoClient; - //private final IApsOrderClient orderClient; - - @Override public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步关闭生产计划定时任务开始"); - CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synCloseProdPlan()); - log.info("同步关闭生产计划定时任务结束"); + CompletableFuture runFuture = CompletableFuture.runAsync(() -> mesRbWoClient.synCloseProdPlan()); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步关闭生产计划定时任务失败", exception); + } else { + log.info("同步关闭生产计划定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCraftProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCraftProcessor.java index 89bab0db..c8892abd 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCraftProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCraftProcessor.java @@ -21,7 +21,13 @@ public class SynCraftProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步正式工艺订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synCraft()); - log.info("同步正式工艺订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步正式工艺订单定时任务失败", exception); + } else { + log.info("同步正式工艺订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynGlassCakeProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynGlassCakeProcessor.java index e547d355..5ff307ee 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynGlassCakeProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynGlassCakeProcessor.java @@ -22,7 +22,13 @@ public class SynGlassCakeProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步玻璃饼订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> orderClient.synGlassCake()); - log.info("同步玻璃饼订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步玻璃饼订单定时任务失败", exception); + } else { + log.info("同步玻璃饼订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynMesRbWoProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynMesRbWoProcessor.java index e874e7bc..d9933473 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynMesRbWoProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynMesRbWoProcessor.java @@ -19,9 +19,15 @@ public class SynMesRbWoProcessor implements BasicProcessor { @Override public ProcessResult process(TaskContext taskContext) throws Exception { - log.info("同步生产订单定时任务开始"); + log.info("同步生产计划定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synMesRbWo()); - log.info("同步生产订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步生产计划定时任务失败", exception); + } else { + log.info("同步生产计划定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynOutsourcingProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynOutsourcingProcessor.java index f624389d..e2a6231c 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynOutsourcingProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynOutsourcingProcessor.java @@ -21,7 +21,13 @@ public class SynOutsourcingProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步外协订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synOutsourcing()); - log.info("同步外协订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步外协订单定时任务失败", exception); + } else { + log.info("同步外协订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseLOTTJProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseLOTTJProcessor.java index 0a30c4bc..f84d4c73 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseLOTTJProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseLOTTJProcessor.java @@ -21,7 +21,13 @@ public class SynPurchaseLOTTJProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步采购LOTTJ订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synPurchaseLOTTJ()); - log.info("同步采购LOTTJ订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步采购LOTTJ订单定时任务失败", exception); + } else { + log.info("同步采购LOTTJ订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseProcessor.java index a9707cbf..41b2c195 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseProcessor.java @@ -19,9 +19,15 @@ public class SynPurchaseProcessor implements BasicProcessor { @Override public ProcessResult process(TaskContext taskContext) throws Exception { - log.info("同步采购订单定时任务开始"); + log.info("同步物资转车间协作加工订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synPurchase()); - log.info("同步采购订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步物资转车间协作加工订单定时任务失败", exception); + } else { + log.info("同步物资转车间协作加工订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSinterProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSinterProcessor.java index 453a08b3..1afda091 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSinterProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSinterProcessor.java @@ -21,7 +21,13 @@ public class SynSinterProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步烧结订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synSinter()); - log.info("同步烧结订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步烧结订单定时任务失败", exception); + } else { + log.info("同步烧结订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSupportingFacilitiesProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSupportingFacilitiesProcessor.java index 6f597370..b98ac197 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSupportingFacilitiesProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSupportingFacilitiesProcessor.java @@ -21,7 +21,13 @@ public class SynSupportingFacilitiesProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步配套订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synSupportingFacilities()); - log.info("同步配套订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步配套订单定时任务失败", exception); + } else { + log.info("同步配套订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynTemporaryProcessor.java b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynTemporaryProcessor.java index 8be3f8b1..aa43fb0c 100644 --- a/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynTemporaryProcessor.java +++ b/blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynTemporaryProcessor.java @@ -21,7 +21,13 @@ public class SynTemporaryProcessor implements BasicProcessor { public ProcessResult process(TaskContext taskContext) throws Exception { log.info("同步临时订单定时任务开始"); CompletableFuture runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synTemporary()); - log.info("同步临时订单定时任务结束"); + runFuture.whenComplete((result, exception) -> { + if (exception != null) { + log.error("同步临时订单定时任务失败", exception); + } else { + log.info("同步临时订单定时任务结束"); + } + }); return new ProcessResult(true); } } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/DsCraftEnum.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/DsCraftEnum.java index 4b06736f..0ef2ab27 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/DsCraftEnum.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/DsCraftEnum.java @@ -30,10 +30,11 @@ public enum DsCraftEnum { /** * 工艺级别; 11001、一级,11002:二级,11003、三级 + * 工艺级别 与 工艺对应 20260327 */ - RANK_ONE("一级", 11001), - RANK_TWO("二级", 11002), - RANK_THREE("三级", 11003), + RANK_ONE("一级", 1), + RANK_TWO("二级", 2), + RANK_THREE("三级", 3), /** * 优先级 diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/LocationVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/LocationVO.java new file mode 100644 index 00000000..cb9394fc --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/LocationVO.java @@ -0,0 +1,12 @@ +package org.springblade.desk.logistics.pojo.vo; + +import lombok.Data; +import org.springblade.desk.logistics.pojo.entity.Location; + +/** + * @author: liweidong + * @create: 2026-03-27 + */ +@Data +public class LocationVO extends Location { +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationVO.java new file mode 100644 index 00000000..4700d718 --- /dev/null +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationVO.java @@ -0,0 +1,20 @@ +package org.springblade.desk.logistics.pojo.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springblade.desk.logistics.pojo.entity.Station; + +/** + * @author: liweidong + * @create: 2026-03-27 + */ +@Data +public class StationVO extends Station { + + /** + * 作业中心名称 + */ + @Schema(description = "作业中心名称") + private String wcName; + +} diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IApsOrderClient.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IApsOrderClient.java index c92b8b04..1d4788e3 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IApsOrderClient.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IApsOrderClient.java @@ -29,6 +29,7 @@ public interface IApsOrderClient { String GET_CRAFT_LIST = API_PREFIX + "/getDsCraftList"; String GET_PLAN_LIST = API_PREFIX + "/getPlanList"; String GET_PART_LIST = API_PREFIX + "/getPartList"; + String GET_PART_LIST_BY_PARAM = API_PREFIX + "/getPartListByParam"; String UPDATE_BY_ID = API_PREFIX + "/updateById"; String CLOSE_PLAN_LIST = API_PREFIX + "/getClosePlanList"; String MAX_CARD_NO = API_PREFIX + "/getMaxCardNo"; @@ -37,6 +38,8 @@ public interface IApsOrderClient { String GET_SELECT_TIME = API_PREFIX + "/getSelectTime"; String GET_CRAFT_CODE = API_PREFIX + "/getDsCraftListByCode"; String SAVE_ORDER_LIST = API_PREFIX + "/saveOrderList"; + String SAVE_ORDER = API_PREFIX + "/saveOrder"; + String GET_PART_BY_CODE = API_PREFIX + "/getPartByCode"; String UP_DATE_MAX = API_PREFIX + "/upByDateMax"; @PostMapping(SYNC_PLAN_FROM_SAVE) @@ -45,8 +48,11 @@ public interface IApsOrderClient { List getDsCraftList(); @GetMapping(GET_PLAN_LIST) List getPlanList(); + + @GetMapping(GET_PART_LIST_BY_PARAM) + List getPartListByParam(List partCodeList); @GetMapping(GET_PART_LIST) - List getPartList(List partCodeList); + List getPartList(); @GetMapping(UPDATE_BY_ID) void updateById(YieldPlan yieldPlan); @GetMapping(CLOSE_PLAN_LIST) @@ -65,4 +71,16 @@ public interface IApsOrderClient { void saveOrderList(List yieldOrderList); @GetMapping (UP_DATE_MAX) void upByDateMax(@RequestParam("max") String max,@RequestParam("code") String code); + + // Long getCount(@RequestParam("yoCode") String yoCode,@RequestParam("cardNo") String cardNo,@RequestParam("batchNo") String batchNo,@RequestParam("roamNo") String roamNo); + @GetMapping(GET_PART_BY_CODE) + DsPartEntity getPartByCode(String code); + + /** + * 生产订单通用保存方法 + * + * @param yieldOrderList + */ + @PostMapping(SAVE_ORDER) + void saveOrder(List yieldOrderList); } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java index 4c8b6e2e..c859233b 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java @@ -4,12 +4,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.wms.pojo.entity.StGoods; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springblade.wms.pojo.vo.StGoodStatisVO; import org.springblade.wms.pojo.vo.StRealtimeStockVO; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; /** * 仓库实时结余远程调用 @@ -27,6 +32,12 @@ public interface StRealtimeStockClient { String MEASURING_Id = API_PREFIX + "/getById"; + String GET_REALTIME_STOCK_BY_GOOD = API_PREFIX + "/getRealtimeStockByGood"; + + String COUNT_QUANTITY_AND_OCCUPY_QUANTITY = API_PREFIX + "/countQuantityAndOccupyQuantity"; + + String SAVE_OR_UPDATE_BATCH = API_PREFIX + "/saveOrUpdateBatch"; + /** * 量具库存 */ @@ -36,4 +47,24 @@ public interface StRealtimeStockClient { @PostMapping(MEASURING_Id) R getById(@RequestBody StGoods stGoods); + /** + * 查询指定物料的可用库存记录 + * + * @param goodCode + * @return + */ + @GetMapping(GET_REALTIME_STOCK_BY_GOOD) + List getRealtimeStockByGood(@RequestParam("goodCode") String goodCode); + + /** + * 汇总指定物料的总库存、总已占用库存 + * + * @param goodCode + * @return + */ + @GetMapping(COUNT_QUANTITY_AND_OCCUPY_QUANTITY) + StGoodStatisVO countQuantityAndOccupyQuantity(@RequestParam("goodCode") String goodCode); + + @PostMapping(SAVE_OR_UPDATE_BATCH) + R saveOrUpdateBatch(List stockList); } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java index 9edfa5da..5b332f09 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java @@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.wms.pojo.entity.StGoods; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springblade.wms.pojo.vo.StGoodStatisVO; import org.springblade.wms.pojo.vo.StRealtimeStockVO; import org.springframework.stereotype.Component; +import java.util.List; + /** * Feign失败配置 * @@ -25,5 +29,20 @@ public class StRealtimeStockClientFallback implements StRealtimeStockClient { return null; } + @Override + public List getRealtimeStockByGood(String goodCode) { + return List.of(); + } + + @Override + public StGoodStatisVO countQuantityAndOccupyQuantity(String goodCode) { + return null; + } + + @Override + public R saveOrUpdateBatch(List stockList) { + return R.fail("更新失败"); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/LocationController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/LocationController.java new file mode 100644 index 00000000..a4cde858 --- /dev/null +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/LocationController.java @@ -0,0 +1,48 @@ +package org.springblade.desk.logistics.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.AllArgsConstructor; +import org.checkerframework.checker.units.qual.A; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; +import org.springblade.core.tool.api.R; +import org.springblade.desk.logistics.pojo.vo.LocationVO; +import org.springblade.desk.logistics.pojo.vo.StationVO; +import org.springblade.desk.logistics.service.ILocationService; +import org.springblade.desk.logistics.service.IOrderBoxService; +import org.springblade.desk.logistics.service.IStationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@AllArgsConstructor +@RequestMapping("/location") +@Tag(name = "库位", description = "库位相关接口") +public class LocationController { + + + @Autowired + ILocationService locationService; + + /** + * 获取库位列表 + */ + @GetMapping("/getLocationList") + @ApiOperationSupport(order = 1) + @Operation(summary = "分页", description = "获取站点列表") + public R> getLocationList(LocationVO locationVO, Query query) { + + IPage pages = locationService.getLocationList(Condition.getPage(query), locationVO); + + return R.data(pages); + } + + + +} diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/StationController.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/StationController.java index 0134f747..6d17e1f3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/StationController.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/StationController.java @@ -1,16 +1,25 @@ package org.springblade.desk.logistics.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; +import oracle.jdbc.proxy.annotation.Post; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; +import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO; +import org.springblade.desk.logistics.pojo.entity.Station; +import org.springblade.desk.logistics.pojo.vo.StationVO; import org.springblade.desk.logistics.service.IOrderBoxService; import org.springblade.desk.logistics.service.IStationService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springblade.desk.order.pojo.entity.YieldOrder; +import org.springblade.desk.order.pojo.vo.YieldOrderVo; +import org.springblade.desk.order.wrapper.YieldOrderWrapper; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; @RestController @AllArgsConstructor @@ -37,4 +46,21 @@ public class StationController { public R getStationNameBoxBarcode(@RequestParam String stationCode) { return iOrderBoxService.getStationNameBoxBarcode(stationCode); } + + + /** + * 获取站点列表 + */ + @GetMapping("/getStationList") + @ApiOperationSupport(order = 1) + @Operation(summary = "分页", description = "获取站点列表") + public R> getStationList(StationVO station, Query query) { + + IPage pages = stationService.getStationList(Condition.getPage(query), station); + + return R.data(pages); + } + + + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java index 34abb32b..156ca58d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java @@ -1,9 +1,11 @@ package org.springblade.desk.logistics.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import org.springblade.desk.logistics.pojo.entity.Location; import org.springblade.desk.logistics.pojo.entity.OrderBind; +import org.springblade.desk.logistics.pojo.vo.LocationVO; import java.util.List; @@ -15,4 +17,6 @@ public interface LocationMapper extends BaseMapper { List selectByStatus(@Param("status") Integer status); Location selectByLocationCode(@Param("locationCode") String locationCode, @Param("status")int status); + + List selectLocationList(IPage page,@Param("location") LocationVO locationVO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml index 9ce902e7..93e13098 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml @@ -17,4 +17,14 @@ select id, location_name, location_code, location_status, status, create_user, create_time, create_dept, update_user, update_time, is_deleted, remark from LM_LOCATION where IS_DELETED = 0 and status = #{status} and LOCATION_CODE = #{locationCode}; + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.java index 77fbe263..5a4b1432 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.java @@ -1,9 +1,12 @@ package org.springblade.desk.logistics.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; +import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO; import org.springblade.desk.logistics.pojo.entity.OrderBind; import org.springblade.desk.logistics.pojo.entity.Station; +import org.springblade.desk.logistics.pojo.vo.StationVO; import java.util.List; @@ -12,4 +15,6 @@ public interface StationMapper extends BaseMapper { List selectByWcId(@Param("wcId") Long wcId); Station selectByStationCode(@Param("StationCode") String StationCode); + + List selectStationList(IPage page, @Param("station") Station station); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.xml index ed95183e..f5ed7cf3 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.xml @@ -14,4 +14,24 @@ select id, station_name, station_code, station_status, status, create_user, create_time, create_dept, update_user, update_time, is_deleted, remark, station_position, wc_id from LM_STATION where IS_DELETED = 0 and STATION_CODE = #{StationCode} + + diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java index 174c0cdf..7c537292 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java @@ -25,9 +25,11 @@ */ package org.springblade.desk.logistics.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.desk.logistics.pojo.entity.Location; import org.springblade.desk.logistics.pojo.entity.WeighData; +import org.springblade.desk.logistics.pojo.vo.LocationVO; import java.math.BigDecimal; import java.util.List; @@ -60,4 +62,12 @@ public interface ILocationService extends BaseService { * @return */ Location selectByLocationCode(String locationCode, int status); + + /** + * 获取库位 + * @param page + * @param locationVO + * @return + */ + IPage getLocationList(IPage page, LocationVO locationVO); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IStationService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IStationService.java index e0fa4623..db2eb03b 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IStationService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IStationService.java @@ -25,10 +25,13 @@ */ package org.springblade.desk.logistics.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.core.mp.base.BaseService; import org.springblade.core.tool.api.R; +import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO; import org.springblade.desk.logistics.pojo.entity.Location; import org.springblade.desk.logistics.pojo.entity.Station; +import org.springblade.desk.logistics.pojo.vo.StationVO; import java.util.List; @@ -56,5 +59,11 @@ public interface IStationService extends BaseService { R getStationName(String stationCode); - + /** + * 站点列表 + * @param page + * @param station + * @return + */ + IPage getStationList(IPage page, Station station); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/LocationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/LocationServiceImpl.java index 3fe24e0f..ab3e7ee9 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/LocationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/LocationServiceImpl.java @@ -25,11 +25,14 @@ */ package org.springblade.desk.logistics.service.impl; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.extern.slf4j.Slf4j; import org.checkerframework.checker.units.qual.A; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.desk.logistics.mapper.LocationMapper; import org.springblade.desk.logistics.pojo.entity.Location; +import org.springblade.desk.logistics.pojo.vo.LocationVO; +import org.springblade.desk.logistics.pojo.vo.StationVO; import org.springblade.desk.logistics.service.ILocationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -64,4 +67,11 @@ public class LocationServiceImpl extends BaseServiceImpl getLocationList(IPage page, LocationVO locationVO) { + List locationList = baseMapper.selectLocationList(page, locationVO); + + return page.setRecords(locationList); + } } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StationServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StationServiceImpl.java index baa82018..e5cf9c64 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StationServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StationServiceImpl.java @@ -26,14 +26,21 @@ package org.springblade.desk.logistics.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import lombok.extern.slf4j.Slf4j; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; +import org.springblade.desk.basic.pojo.entity.WorkCenter; +import org.springblade.desk.basic.service.IWorkCenterService; +import org.springblade.desk.dashboard.pojo.vo.DsTaskingVO; import org.springblade.desk.logistics.mapper.StationMapper; import org.springblade.desk.logistics.pojo.entity.Station; +import org.springblade.desk.logistics.pojo.vo.StationVO; import org.springblade.desk.logistics.service.IStationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; import java.util.List; @@ -48,6 +55,8 @@ import java.util.List; public class StationServiceImpl extends BaseServiceImpl implements IStationService { + @Autowired + IWorkCenterService workCenterService; @Override public List selectByWcId(Long wcId) { @@ -70,4 +79,26 @@ public class StationServiceImpl extends BaseServiceImpl } return R.data(list.get(0)); } + + @Override + public IPage getStationList(IPage page, Station station) { + + List stationList = baseMapper.selectStationList(page, station); + if(CollectionUtils.isEmpty(stationList)){ + return page.setRecords(stationList); + } + + for (StationVO stationVO : stationList) { + if(null != stationVO && null != stationVO.getWcId()){ + WorkCenter workCenter = workCenterService.getById(stationVO.getWcId()); + if(null != workCenter && !StringUtils.isEmpty(workCenter.getWcName())){ + stationVO.setWcName(workCenter.getWcName()); + } + } + + } + + return page.setRecords(stationList); + } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java index a9e2c632..08331967 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java @@ -1,5 +1,7 @@ package org.springblade.desk.order.feign; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.v3.oas.annotations.Hidden; import lombok.RequiredArgsConstructor; @@ -57,7 +59,12 @@ public class ApsOrderClient implements IApsOrderClient { } @Override - public List getPartList(List partCodeList) { + public List getPartList() { + return dsPartService.list(); + } + + @Override + public List getPartListByParam(List partCodeList) { return dsPartService.list(new QueryWrapper().lambda() .in(DsPartEntity::getPartCode, partCodeList) .like(DsPartEntity::getPartName, "玻璃")); @@ -124,4 +131,21 @@ public class ApsOrderClient implements IApsOrderClient { public void upByDateMax(String max, String code) { yieldPlanService.updateByNewlevdateMax(max,code); } + + @Override + public DsPartEntity getPartByCode(String code) { + return dsPartService.getOne(new LambdaQueryWrapper() + .eq(DsPartEntity::getPartCode, code)); + } + + @Override + public void saveOrder(List yieldOrderList) { + yieldOrderService.saveOrder(yieldOrderList); + } + +// @Override +// public Long getCount(String yoCode, String cardNo, String batchNo, String roamNo) { +// return yieldOrderService.getCount(yoCode,cardNo,batchNo,roamNo); +// } + } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java index 41c27231..d09b3b90 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java @@ -258,4 +258,23 @@ public interface IYieldOrderService extends BaseService { * @param dsPartSub */ void saveGlassCake(String yoCode, String cardNo, String batchNo, YieldPlan po, DsPartEntity dsPartSub); + + /** + * 根据下列参数查询生产订单数量 + * + * @param yoCode + * @param cardNo + * @param batchNo + * @param roamNo + * @return + */ + Long getCount(String yoCode, String cardNo, String batchNo, String roamNo); + + + /** + * 生产订单通用保存方法 + * + * @param yieldOrderList + */ + void saveOrder(List yieldOrderList); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java index 6a6236a4..1d071754 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java @@ -5,9 +5,11 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import jakarta.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -35,10 +37,12 @@ import org.springblade.desk.dashboard.service.IDsPartService; import org.springblade.desk.dashboard.service.IDsProcessService; import org.springblade.desk.order.constant.YieldOrderConst; import org.springblade.desk.order.mapper.YieldOrderMapper; +import org.springblade.desk.order.mapper.YieldPlanMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrderCraft; import org.springblade.desk.order.pojo.entity.YieldPlan; import org.springblade.desk.order.pojo.enums.YieldOrderEnum; +import org.springblade.desk.order.pojo.vo.LineMemoVo; import org.springblade.desk.order.service.IYieldOrderCraftService; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.produce.mapper.WorkOrderMapper; @@ -69,6 +73,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpllambdaQuery().eq(YieldOrder::getYoCode, yoCode) + .eq(YieldOrder::getCardNo, cardNo) + .eq(YieldOrder::getBatchNo, batchNo) + .eq(YieldOrder::getRoamNo, roamNo)); + } + @Override public R getCardNo(String cardNo) { if (cardNo.isEmpty()) { @@ -828,6 +842,68 @@ public class YieldOrderServiceImpl extends BaseServiceImpl yieldOrderList) { + yieldOrderList.forEach(order -> { + Long vCount = 0L; + //1.从生产订单表中查询订单 + vCount = this.getCount(order.getYoCode(), order.getCardNo(), order.getBatchNo(), order.getRoamNo()); + if (vCount > 0) { + //2.判断是否查询到订单,若查询到,直接退出 + log.error(String.format("零件号【%s】,批号【%s】工单已转交,请勿重复转交!", order.getPartCode(), order.getBatchNo())); + } + //3.按零级号查询零件信息,零件信息处理 + order.setYpArea((double) 0); + List dsPartList = dsPartService.list(new QueryWrapper().lambda() + .eq(DsPartEntity::getPartCode, order.getPartCode())); + if (dsPartList != null && dsPartList.size() > 0) { + DsPartEntity dsPartEntity = dsPartList.get(0); + order.setProductType(dsPartEntity.getProductType()); + order.setPartName(dsPartEntity.getPartName()); + if (dsPartEntity.getArea() != null) { + order.setYpArea(dsPartEntity.getArea()); + } + order.setPrimaryCraft(dsPartEntity.getCraftWay()); + order.setPlate(dsPartEntity.getPlate()); + } + //4.查询是否为会议急件 + Long vPriority = yieldPlanMapper.getMaxPriority(order.getYpCode()); + order.setPriorityErp(vPriority.intValue()); + //5. 厂内生产急件标识赋值 + Long count = yieldPlanMapper.getCount(order.getYpCode(), order.getPartCode(), order.getBatchNo()); + if (count > 0) { + order.setSiteWork(true); + order.setPriorityErp(5); + } + //6.对优先级字段进行转换,新旧mes中订单优先级的值不一致 + vPriority += 14000; + order.setPriorityErp(Integer.parseInt(vPriority.toString())); + //7.烧结订单处理, -- 默认厂内加工 + if ("2".equals(order.getYieldType()) || "3".equals(order.getYieldType())) { + order.setSiteWork(true); + } + //8.玻璃饼订单自动入库, 更新接收状态 + order.setReceiveStatus(11000); + if ("3".equals(order.getYieldType())) { + order.setStatus(11001); + //对接受人赋值 + Long receiveUser = yieldPlanMapper.getReceiveUser(); + order.setReceiveUser(receiveUser); + //对接收时间进行赋值 + order.setReceiveTime(new Date()); + } + //9.从生产计划中查询产品系列和订单备注 + LineMemoVo lineMemoVo = yieldPlanMapper.getLineMemo(order.getYpCode()); + if (lineMemoVo != null && lineMemoVo.getSum() == 0) { + order.setMemo(""); + order.setYpProductLine(""); + } else { + order.setMemo(lineMemoVo.getMemo()); + order.setYpProductLine(lineMemoVo.getProdLine()); + } + }); + this.saveBatch(yieldOrderList); + } /** * 验证零件子件信息 * diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java index 311a5a5d..87c27e02 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java @@ -1,13 +1,13 @@ package org.springblade.desk.order.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.apache.commons.lang3.StringUtils; -import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.ResultCode; @@ -20,17 +20,25 @@ import org.springblade.desk.order.mapper.YieldPlanMapper; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldPlan; import org.springblade.desk.order.pojo.enums.YieldPlanEnum; -import org.springblade.desk.order.pojo.vo.LineMemoVo; import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.order.service.IYieldPlanService; import org.springblade.erpdata.feign.IErpPartoplinkFirseqClient; import org.springblade.erpdata.pojo.dto.PartoplinkFirseqDTO; +import org.springblade.system.cache.UserCache; +import org.springblade.system.pojo.vo.RegionVO; +import org.springblade.wms.feign.StRealtimeStockClient; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springblade.wms.pojo.vo.StGoodStatisVO; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -46,7 +54,7 @@ public class YieldPlanServiceImpl extends BaseServiceImpl selectPageElectroplate(IPage page, YieldPlan entity) { @@ -159,109 +167,109 @@ public class YieldPlanServiceImpl extends BaseServiceImpl yieldPlanList=baseMapper.selectList(new QueryWrapper().lambda() .eq(YieldPlan::getIsDeleted, 0).eq(YieldPlan::getPlanType, 12002) .eq(YieldPlan::getGenerateGlassCake, 0));; List partCodeList=yieldPlanList.stream().map(x->x.getPartCode()).toList(); - //b1. 查询该计划的零件是否是玻璃相关的零件列表(sub_cursor) + //查询该计划的零件是否是玻璃相关的零件列表(sub_cursor) List dsPartList=dsPartService.list(new QueryWrapper().lambda() .in(DsPartEntity::getPartCode, partCodeList) .like(DsPartEntity::getPartName, "玻璃"));// 获取零件信息 - List partList=dsPartList.stream().map(x->x.getPartCode()).toList(); + Map> partMap = dsPartList.stream() + .collect(Collectors.groupingBy(DsPartEntity::getPartCode)); + List yieldOrderList = new ArrayList<>(); + List realtimeStocks = new ArrayList<>(); + // 初始化序号 + String maxCardNo = yieldOrderService.getMaxCardNo(); + Long startNum = 1L; + if (StringUtils.hasText(maxCardNo)) { + startNum = Long.valueOf(maxCardNo.replace("RB" + new SimpleDateFormat("yyMMdd").format(new Date()), "")) + 1; + } + AtomicLong counter = new AtomicLong(startNum); + String dateStr = new SimpleDateFormat("yyMMdd").format(new Date()); + + //遍历烧结主制计划列表 yieldPlanList.forEach(yieldPlan -> { - if(!partList.contains(yieldPlan.getPartCode())){ + //若不含玻璃相关的零件,表示不需要生成 + if (!partMap.containsKey(yieldPlan.getPartCode())) { yieldPlan.setGenerateGlassCake(1); yieldPlan.setId(yieldPlan.getId()); baseMapper.updateById(yieldPlan); + return; } - //b3.1 生成流程卡号、批次号 - //查询RB相关的流程卡号 - String cardNo=yieldOrderService.getMaxCardNo();; - Long num; - if(StringUtils.isEmpty(cardNo)){ - num=1L; - }else { - num=Long.valueOf(cardNo.replace("RB"+new SimpleDateFormat("yyMMdd").format(new Date()), ""))+1; - } - cardNo="RB"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num); - String bathNo="Y"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num); - //调用公共保存方法 todo - //查询order订单 - for (int i = 0; i < dsPartList.size(); i++) { - DsPartEntity dsPart = dsPartList.get(i); - List yieldOrderList=yieldOrderService.list(new QueryWrapper() - .lambda().eq(YieldOrder::getYpCode, yieldPlan.getYpCode()) - .eq(YieldOrder::getCardNo, cardNo) - .eq(YieldOrder::getBatchNo, bathNo) - .eq(YieldOrder::getRoamNo, yieldPlan.getRoamNo())); - if(yieldOrderList.size()>0){ - new ServiceException("'零件号【' "+dsPart.getPartCode()+" '】,批号【'\n" + - " "+bathNo+" '】工单已转交,请勿重复转交!!'"); - } - DsPartEntity zPartEntity = dsPartService.getOne(new QueryWrapper().lambda() - .eq(DsPartEntity::getPartCode, yieldPlan.getPartCode()).last("limit 1")); - if(zPartEntity.getArea()==null){ - yieldPlan.setYpArea(0.0); - } - Long vPriority=baseMapper.getMaxPriority(yieldPlan.getYpCode()); - //7. 厂内生产急件标识赋值 - Long vCount=baseMapper.getCount(yieldPlan.getYpCode(),yieldPlan.getPartCode(),bathNo); - YieldOrder yieldOrder=new YieldOrder(); - vPriority=vPriority+14000; - yieldOrder.setPriorityErp(Integer.parseInt(vPriority.toString())); - if(vCount>0){ - yieldOrder.setSiteWork(true); - yieldOrder.setPriorityErp(5); + //遍历零件列表 + List dsPartEntities = partMap.get(yieldPlan.getPartCode()); + dsPartEntities.forEach(dsPartEntity -> { + //生成流程卡号、批次号 + // 生成序号,全局自增,而不是每个外层循环重新开始 + long num = counter.getAndIncrement(); + String cardNo = "RB" + dateStr + String.format("%05d", num); + String bathNo = "Y" + dateStr + String.format("%05d", num); + //创建生产订单并赋值 + YieldOrder yieldOrder = new YieldOrder(); + yieldOrder.setRoamNo(""); + String yoCode = "WO-B" + new SimpleDateFormat("yyMMdd").format(new Date()) + String.format("%05d", num); + yieldOrder.setRoamNoNext(""); + yieldOrder.setYoCode(yoCode); + yieldOrder.setYpCode(""); + yieldOrder.setPartCode(dsPartEntity.getPartCode()); + yieldOrder.setPartName(dsPartEntity.getPartName()); + yieldOrder.setProductIdent(yieldPlan.getProductIdent()); + yieldOrder.setUseDept("热表分厂"); + yieldOrder.setDemandDate(yieldPlan.getDemandDate()); + if (null != UserCache.getUser(yieldPlan.getPlanUser())) { + yieldOrder.setPlanUser(UserCache.getUser(yieldPlan.getPlanUser()).getRealName()); } - if("2".equals(yieldOrder.getYieldType())||"3".equals(yieldOrder.getYieldType())){ - yieldOrder.setSiteWork( true); - yieldOrder.setReceiveStatus(11000); - } - if("3".equals(yieldOrder.getYieldType())){ - yieldOrder.setStatus(11001); - } - //对接受人赋值 - Long receiveUser=baseMapper.getReceiveUser(); - yieldOrder.setReceiveUser(receiveUser); - //对接收时间进行赋值 - yieldOrder.setReceiveTime(new Date()); + yieldOrder.setReleaseDate(new Date()); + yieldOrder.setMemo(yieldPlan.getMemo()); + yieldOrder.setCardNo(cardNo); + yieldOrder.setBatchNo(bathNo); + yieldOrder.setYpQty(yieldPlan.getYpQty().doubleValue()); + yieldOrder.setYieldType(3); + yieldOrder.setEntrustDept("热表分厂"); + yieldOrder.setUseDeptCode("3400"); + yieldOrderList.add(yieldOrder); - LineMemoVo lineMemoVo = baseMapper.getLineMemo(yieldPlan.getYpCode()); - if(lineMemoVo!=null&&lineMemoVo.getSum()==0){ - yieldOrder.setMemo(""); - yieldOrder.setYpProductLine(""); - }else { - yieldOrder.setMemo(lineMemoVo.getMemo()); - yieldOrder.setYpProductLine(lineMemoVo.getProdLine()); + //玻璃饼预占用 + //从仓库相关表中查询指定物料的可用库存记录 + List stRealtimeStockList = stRealtimeStockClient.getRealtimeStockByGood(dsPartEntity.getPartCode()); + //汇总指定物料的总库存、总已占用库存 + StGoodStatisVO stGoodStatisVO = stRealtimeStockClient.countQuantityAndOccupyQuantity(dsPartEntity.getPartCode()); + //计算子件需要占用的总数量 + AtomicReference subPorqty = new AtomicReference<>(yieldPlan.getYpQty().doubleValue()); + //判断库存是否满足需求并逐行占用 + if (null == stGoodStatisVO || CollUtil.isEmpty(stRealtimeStockList)) { + return; } - //保存订单 - yieldOrderService.saveOrUpdate(yieldOrder); - - } -// dsPartList.forEach(dsPart -> { -// List stockList=stRealtimeStockService.getGoodsByPartCode(dsPart.getPartCode()); -// StGoodStatisVO statisVO=stRealtimeStockService.getGoodsByCode(dsPart.getPartCode()); -// Double subPorqty=dsPart.getQuota()*yieldPlan.getDeliveryQty() ; -// if(statisVO.getTotalQuantity()-statisVO.getZyQuantity()>=subPorqty){ -// stockList.forEach(stock -> { -// if(stock.getQuantity()-stock.getOccupyQuantity()>=subPorqty){ -// StRealtimeStock rs=new StRealtimeStock(); -// rs.setId(stock.getId()); -// rs.setOccupyQuantity(rs.getOccupyQuantity()+subPorqty); -// stRealtimeStockService.updateById(rs); -// }else { -// StRealtimeStock rs=new StRealtimeStock(); -// rs.setId(stock.getId()); -// rs.setOccupyQuantity(rs.getQuantity()); -// stRealtimeStockService.updateById(rs); -// } -// }); -// } -// }); + if (stGoodStatisVO.getTotalQuantity() - stGoodStatisVO.getZyQuantity() >= subPorqty.get()) { + stRealtimeStockList.forEach(stRealtimeStock -> { + StRealtimeStock rs = new StRealtimeStock(); + if (stRealtimeStock.getQuantity() - stRealtimeStock.getOccupyQuantity() >= subPorqty.get()) { + //当前库存记录的可用库存 ≥ 剩余需要占用的数量 + //只占用当前记录的部分库存:已占用数量 += 剩余需要占用的数量 + rs.setId(stRealtimeStock.getId()); + rs.setOccupyQuantity(stRealtimeStock.getOccupyQuantity() + subPorqty.get()); + realtimeStocks.add(rs); + } else { + //当前库存记录的可用库存 < 剩余需要占用的数量 + //剩余需要占用的数量 = 剩余数量 - 当前记录的可用库存 + subPorqty.set(dsPartEntity.getQuota() - (stRealtimeStock.getQuantity() - stRealtimeStock.getOccupyQuantity())); + rs.setId(stRealtimeStock.getId()); + rs.setOccupyQuantity(stRealtimeStock.getQuantity()); + realtimeStocks.add(rs); + } + }); + } + }); + //调用生成订单的通用存储方法,保存玻璃饼生产订单 + yieldOrderService.saveOrder(yieldOrderList); + //更新库存记录 + stRealtimeStockClient.saveOrUpdateBatch(realtimeStocks); //更新状态标记为已读`update MES_YIELD_PLAN set GENERATE_GLASS_CAKE = 1 where id = ?` yieldPlan.setGenerateGlassCake(1); - yieldPlan.setId(yieldPlan.getId()); baseMapper.updateById(yieldPlan); }); } diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java index a5005c32..85549a51 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java @@ -1543,16 +1543,22 @@ public class WorkOrderServiceImpl extends BaseServiceImpl pa = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT).eq(PlateAround::getWpId, workPlan.getId())); - if (CollectionUtils.isEmpty(pa)) { - if ("1".equals(frontWorkPlan.getOem())) { - //上序外协,本序如果可以接收,验证镀前出库记录 - throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); - } else if (!frontWorkPlan.getMakeTeam().equals(workPlan.getMakeTeam())) { - //加工班组不同,验证镀前出库记录 - throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); + List pa = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAT_IN).eq(PlateAround::getWpId, frontWorkPlan.getId())); + if (CollectionUtils.isNotEmpty(pa)) { + List pa2 = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT).eq(PlateAround::getWpId, frontWorkPlan.getId())); + if (CollectionUtils.isEmpty(pa2)) { + throw new ServiceException("上序未查询到镀前出库记录,无法接收!"); } } +// if (CollectionUtils.isEmpty(pa)) { +// if ("1".equals(frontWorkPlan.getOem())) { +// //上序外协,本序如果可以接收,验证镀前出库记录 +// throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); +// } else if (!frontWorkPlan.getMakeTeam().equals(workPlan.getMakeTeam())) { +// //加工班组不同,验证镀前出库记录 +// throw new ServiceException("工序加工单位不同,未找到镀前出库记录,无法接收!"); +// } +// } } private void workPlanStart(WorkPlan workPlan, Date startDate, Long userId, WorkOrder workOrder) { diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java index 1a43be8b..5f99b575 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java @@ -17,5 +17,7 @@ public interface ErpMesRbWoMapper extends Mapper { * * @return */ - List getYieldPlanErpList(); + List getYieldPlanErpList(String newlevdateMax); + + String getNewlevdateMax(String selectTime); } diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml index 9078f1b2..c38990d3 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml @@ -21,8 +21,21 @@ a.kdofplat, a.processlinedesc, a.prodline - FROM dba_mgr.v_mes_rb_wo + FROM dba_mgr.v_mes_rb_wo a + + a.wopordat = ]]> to_date(#{newlevdateMax},'YYYY-MM-DD HH24:MI:SS') + WHERE rownum 2000 + diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java index 01189b6b..68bb9871 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java @@ -10,17 +10,22 @@ import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.order.feign.IApsOrderClient; import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldPlan; +import org.springblade.desk.order.pojo.enums.YieldOrderEnum; import org.springblade.desk.order.pojo.enums.YieldPlanEnum; import org.springblade.erpdata.mapper.ErpMesRbWoMapper; import org.springblade.erpdata.pojo.dto.table.Rrbwoerptomes; import org.springblade.erpdata.pojo.dto.table.Wo; import org.springblade.erpdata.pojo.dto.view.*; import org.springblade.erpdata.service.*; +import org.springblade.system.cache.DictCache; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author lqk @@ -58,12 +63,18 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { @Override public List getList(MesRbWo entity) { - return mesRbWoMapper.getYieldPlanErpList(); + return mesRbWoMapper.getYieldPlanErpList(entity.getWoreqdat()); } @Override + @Transactional(rollbackFor = Exception.class) public void synMesRbWo() { - List mesRbWoList=mesRbWoMapper.getYieldPlanErpList(); + //用字典的code查更新日期 + String selectTime = apsOrderClient.getSelectTime("SYCN_MESRBWO_TIME"); + //从ERP视图查询最大日期 + String newlevdateMax = mesRbWoMapper.getNewlevdateMax(selectTime); + apsOrderClient.upByDateMax(newlevdateMax, "SYCN_MESRBWO_TIME"); + List mesRbWoList = mesRbWoMapper.getYieldPlanErpList(newlevdateMax); /** * 有多个实体类 * b1. 根据零件号从`DS_PART`表中查询零件信息 @@ -73,26 +84,18 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * INTO v_product_type, v_part_name, v_po_area, v_craft_way, v_config_no * FROM ds_part a WHERE a.part_code = v_prtno; */ - List dsPartList=new ArrayList<>();//todo 获取零件信息 - List partCodeList=dsPartList.stream().map(x->x.getPartCode()).toList(); + List dsPartList = apsOrderClient.getPartList(); + Map partMap = dsPartList.stream().collect(Collectors.toMap(DsPartEntity::getPartCode, v -> v)); List yieldPlanList=new ArrayList<>(); //若零件不为空, 验证零件是否存在二级零件工艺 List dsCraftList= apsOrderClient.getDsCraftList(); - List partIdList=dsCraftList.stream().map(x->x.getPartId()).toList(); + List partIdList = dsCraftList.stream().map(x -> x.getPartId()).toList(); final Long[] partId = {0L}; List rbwoerptomesList=new ArrayList<>(); mesRbWoList.forEach(mesRbWo -> { YieldPlan yieldPlan=new YieldPlan(); //b1. 根据零件号从`DS_PART`表中查询零件信息 - dsPartList.forEach(dsPart -> { - if(dsPartList!=null&&dsPart.getPartCode().equals(mesRbWo.getPrtno())){ - yieldPlan.setProductType(dsPart.getProductType()); - yieldPlan.setPartName(dsPart.getPartName()); - yieldPlan.setYpArea(dsPart.getArea()); - yieldPlan.setPrimaryCraft(dsPart.getCraftWay()); - partId[0] =dsPart.getId(); - } - }); + DsPartEntity dsPart = partMap.get(mesRbWo.getPrtno()); yieldPlan.setPlanType(12001L);//赋值默认值12001 if(mesRbWo.getProcesslinedesc().contains("封接") ||"LX08-05-028,LX08-05-030,LX08-05-031".contains(mesRbWo.getProcessline())){ @@ -103,11 +106,16 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldPlan.setStatus(YieldPlanEnum.STATUS_DISPATCHED.getCode()); yieldPlan.setRoamNo(""); //1. 若零件为空 - if(!partCodeList.contains(mesRbWo.getPrtno())){ + if (null == dsPart) { yieldPlan.setStatus(YieldPlanEnum.STATUS_NO_CRAFT.getCode()); yieldPlan.setRoamNo("无零件信息!!"); - }else {//2. 若零件不为空, 验证零件是否存在二级零件工艺 - if(partId==null||partId[0]==null||(partId!=null&&partId[0]!=null&&!partIdList.contains(partId[0]))){ + } else { + yieldPlan.setProductType(dsPart.getProductType()); + yieldPlan.setPartName(dsPart.getPartName()); + yieldPlan.setYpArea(dsPart.getArea()); + yieldPlan.setPrimaryCraft(dsPart.getCraftWay()); + //2. 若零件不为空, 验证零件是否存在二级零件工艺 + if (!partIdList.contains(dsPart.getId())) { yieldPlan.setStatus(YieldPlanEnum.STATUS_NO_CRAFT.getCode()); yieldPlan.setRoamNo("无二级工艺信息!!"); } @@ -128,7 +136,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { rbwoerptomesList.add(rbwoerptomes); }); apsOrderClient.saveList(yieldPlanList); - rbwoerptomesService.saveOrUpdateBatch(rbwoerptomesList); +// rbwoerptomesService.saveOrUpdateBatch(rbwoerptomesList); } @Override @@ -164,6 +172,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * 同步关闭计划 */ @Override + @Transactional(rollbackFor = Exception.class) public void synCloseProdPlan() { List yieldPlanList=apsOrderClient.getClosePlanList(); yieldPlanList.forEach(yieldPlan -> { @@ -187,11 +196,14 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { return R.data(wo); } /** - * 同步采购工单 + * 同步物资转车间协作加工 */ @Override + @Transactional(rollbackFor = Exception.class) public void synPurchase() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERCG_TIME1"); + //从ERP视图查询最大日期 String newlevdateMax=mesRbPurtosoService.getNewlevdateMax(selectTime); apsOrderClient.upByDateMax(newlevdateMax, "SYCN_TRANSFERCG_TIME1"); List purtosoList=mesRbPurtosoService.getMesRbPurtosoList(newlevdateMax); @@ -217,9 +229,10 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldOrder.setPkUsername(mesRbPurtoso.getNewlevname()); yieldOrder.setPkDate(mesRbPurtoso.getNewlevdate()); List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbPurtoso.getPrtno()); - yieldOrder.setYieldType(12001); - if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ - yieldOrder.setYieldType(12002); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode()); + //若零件不为空,查询零件的工艺路线 + if (dsPartList != null && dsPartList.get(0).getCraftWay().contains("封接")) { + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode()); } yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNoNext("");//下级b号 @@ -238,8 +251,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * 同步临时工单 */ @Override + @Transactional(rollbackFor = Exception.class) public void synTemporary() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_PACTURNRECORD_TIME"); + //从ERP视图查询最大日期 String newlevdateMax=mesRbPacturnrecordService.getNewlevdateMax(selectTime); apsOrderClient.upByDateMax(newlevdateMax, "SYCN_PACTURNRECORD_TIME"); List pacturnrecordList=mesRbPacturnrecordService.getMesRbPacturnrecordList(newlevdateMax); @@ -273,6 +289,8 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPacturnrecord.getPrtno(),mesRbPacturnrecord.getFirseq()); yieldOrder.setRoamNoNext(roamNoNext);//下级b号 } + //委托车间 + yieldOrder.setEntrustDept(mesRbPacturnrecord.getDeptno()); yieldOrderList.add(yieldOrder); }); this.saveOrder(yieldOrderList); @@ -281,8 +299,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * 同步烧结数据 */ @Override + @Transactional(rollbackFor = Exception.class) public void synSinter() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERSJ_TIME"); + //从ERP视图查询最大日期 String newlevdateMax=mesRbSjsoService.getNewlevdateMax(selectTime); apsOrderClient.upByDateMax(newlevdateMax, "SYCN_TRANSFERSJ_TIME"); List rbtosoList=mesRbSjsoService.getMesRbSjsoList(newlevdateMax); @@ -305,7 +326,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldOrder.setUseDeptCode(mesRbtoso.getPrtudeptcode()); yieldOrder.setPkUsername(mesRbtoso.getNewlevname()); yieldOrder.setPkDate(mesRbtoso.getNewlevdate()); - yieldOrder.setYieldType(12002); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode()); yieldOrder.setRoamNoNext( ""); if(StringUtils.isNotEmpty(mesRbtoso.getFirseq())){ String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbtoso.getPrtno(),mesRbtoso.getFirseq()); @@ -319,8 +340,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * 同步采购LOTTJ */ @Override + @Transactional(rollbackFor = Exception.class) public void synPurchaseLOTTJ() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_BUYTRANSFER_TIME"); + //从ERP视图查询最大日期 String dateMax=mesRbWxpromotionService.getNewlevdateMax(selectTime); apsOrderClient.upByDateMax(dateMax,"SYCN_BUYTRANSFER_TIME"); List wxpromotionList=mesRbWxpromotionService.getMesRbWxpromotionList(dateMax); @@ -345,9 +369,9 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldOrder.setPkUsername(mesRbWxpromotion.getNewlevname()); yieldOrder.setPkDate(mesRbWxpromotion.getNewlevdate()); List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbWxpromotion.getPrtno()); - yieldOrder.setYieldType(12001); - if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ - yieldOrder.setYieldType(12002); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode()); + if (dsPartList != null && dsPartList.get(0).getCraftWay().contains("封接")) { + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode()); } yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNoNext("");//下级b号 @@ -366,8 +390,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * 同步外协工单 */ @Override + @Transactional(rollbackFor = Exception.class) public void synOutsourcing() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERWX_TIME"); + //从ERP视图查询最大日期 String dateMax=erpMesRbSodelrecwxService.getNewlevdateMax(selectTime); apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERWX_TIME"); List mesRbSodelrecwxList=erpMesRbSodelrecwxService.getMesRbSodelrecwxList(dateMax); @@ -391,9 +418,9 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldOrder.setPkUsername(mesRbSodelrecwx.getNewlevname()); yieldOrder.setPkDate(mesRbSodelrecwx.getNewlevdate()); List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelrecwx.getPrtno()); - yieldOrder.setYieldType(12001); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode()); if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ - yieldOrder.setYieldType(12002); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode()); } yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNoNext("");//下级b号 @@ -412,13 +439,18 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { * 同步工艺工单 */ @Override + @Transactional(rollbackFor = Exception.class) public void synCraft() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERZG_TIME1"); + //从ERP视图查询最大日期 String dateMax=erpMesRbSodelreczgService.getNewlevdateMax(selectTime); + //更新配置表的基准时间 apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERZG_TIME1"); List mesRbSodelreczgList=erpMesRbSodelreczgService.getMesRbSodelreczgList(dateMax); List yieldOrderList=new ArrayList<>(); mesRbSodelreczgList.forEach(mesRbSodelreczg -> { + //将查询出的数据放到单个的变量中 YieldOrder yieldOrder=new YieldOrder(); yieldOrder.setYpMemo("正式工艺转工"); yieldOrder.setManualIncrease(false); @@ -437,30 +469,39 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldOrder.setUseDeptCode(mesRbSodelreczg.getPrtudeptcode()); yieldOrder.setPkUsername(mesRbSodelreczg.getNewlevname()); yieldOrder.setPkDate(mesRbSodelreczg.getNewlevdate()); + //从零件表中查询零件信息 List dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelreczg.getPrtno()); - yieldOrder.setYieldType(12001); - if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ - yieldOrder.setYieldType(12002); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode()); + //若零件不为空,查询零件的工艺路线 + if (dsPartList != null && dsPartList.get(0).getCraftWay().contains("封接")) { + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode()); } yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNoNext("");//下级b号 + //根据零件号和上级b号查询视图 Long vCount=mesRbPartoplinkService.getVcount(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq()); if(vCount>0){ + //从ERP视图中查询当前B号 String roamNo=mesRbPartoplinkService.getRoamNo(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq()); yieldOrder.setRoamNo(roamNo);//当前b号 + //从ERP视图中查询下级B号 String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq()); yieldOrder.setRoamNoNext(roamNoNext);//下级b号 } yieldOrderList.add(yieldOrder); }); + //调用通用保存方法,保存生产订单 this.saveOrder(yieldOrderList); } /** * 同步配套工单 */ @Override + @Transactional(rollbackFor = Exception.class) public void synSupportingFacilities() { + //用字典的code查更新日期 String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERPK_TIME"); + //从ERP视图查询最大日期 String dateMax=erpMesRbPkService.getNewlevdateMax(selectTime); apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERPK_TIME"); List mesRbPkList=erpMesRbPkService.getMesRbPkList(dateMax); @@ -485,7 +526,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { yieldOrder.setUseDeptCode(mesRbPk.getPrtudeptcode()); yieldOrder.setPkUsername(mesRbPk.getNewlevname()); yieldOrder.setPkDate(mesRbPk.getNewlevdate()); - yieldOrder.setYieldType(12001); + yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode()); yieldOrder.setRoamNoNext( ""); if(StringUtils.isNotEmpty(mesRbPk.getFirseq())){ String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPk.getPrtno(),mesRbPk.getFirseq()); @@ -495,21 +536,14 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService { }); this.saveOrder(yieldOrderList); } - private void saveOrder(List yieldOrderList){ - yieldOrderList.forEach(order -> { - Long vCount=0L;//apsOrderClient.getCount(transfer.getYoCode(),transfer.getCardNo(),transfer.getBatchNo(),transfer.getWorkRoam()); - if(vCount>0) { - /* - v_excnote := '零件号【' || v_part_code || '】,批号【' || v_batch_no || '】工单已转交,请勿重复转交!!'; - v_excflag := '0'; - RETURN; - */ - } - List dsPartList=apsOrderClient.getDsCraftListByCode(order.getPartCode()); - if(dsPartList!=null&&dsPartList.size()>0){ - } - }); - apsOrderClient.saveOrderList(yieldOrderList); + /** + * 生产订单通用保存方法 + * + * @param yieldOrderList + */ + private void saveOrder(List yieldOrderList) { + apsOrderClient.saveOrder(yieldOrderList); +// apsOrderClient.saveOrderList(yieldOrderList); } } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java index 853e3ca8..68220b10 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java @@ -12,12 +12,15 @@ import org.springblade.core.mp.support.Query; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springblade.wms.pojo.entity.StGoods; +import org.springblade.wms.pojo.entity.StRealtimeStock; +import org.springblade.wms.pojo.vo.StGoodStatisVO; import org.springblade.wms.pojo.vo.StRealtimeStockVO; import org.springblade.wms.service.IStGoodsNewService; import org.springblade.wms.service.IStRealtimeStockService; import org.springframework.web.bind.annotation.RestController; import java.util.Date; +import java.util.List; /** @@ -71,4 +74,19 @@ public class StRealtimeStockClientImpl implements StRealtimeStockClient { return R.data(detail); } + @Override + public List getRealtimeStockByGood(String goodCode) { + return stRealtimeStockService.getGoodsByPartCode(goodCode); + } + + @Override + public StGoodStatisVO countQuantityAndOccupyQuantity(String goodCode) { + return stRealtimeStockService.getGoodsByCode(goodCode); + } + + @Override + public R saveOrUpdateBatch(List stockList) { + return this.saveOrUpdateBatch(stockList); + } + } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java index 5403c78e..3e18e768 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java @@ -99,12 +99,14 @@ public interface IStRealtimeStockService extends BaseService { * @param partCode * @return */ -// List getGoodsByPartCode(String partCode); -// /** -// * 根据物料编码统计信息 -// * @param partCode -// * @return -// */ -// StGoodStatisVO getGoodsByCode(String partCode); + List getGoodsByPartCode(String partCode); + + /** + * 根据物料编码统计信息 + * + * @param partCode + * @return + */ + StGoodStatisVO getGoodsByCode(String partCode); } diff --git a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StRealtimeStockServiceImpl.java b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StRealtimeStockServiceImpl.java index b1437a19..40678aa5 100644 --- a/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StRealtimeStockServiceImpl.java +++ b/blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StRealtimeStockServiceImpl.java @@ -912,6 +912,16 @@ public class StRealtimeStockServiceImpl extends BaseServiceImpl getGoodsByPartCode(String partCode) { + return baseMapper.getGoodsByPartCode(partCode); + } + + @Override + public StGoodStatisVO getGoodsByCode(String partCode) { + return baseMapper.getGoodsByCode(partCode); + } + private String generateBarcodeAsBase64(String content, int width, int height) { try { // 1. 创建条形码(Code128 类型)