pangyang 1 month ago
commit b35a769cc1
  1. 8
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 14
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCloseProdPlanProcessor.java
  3. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynCraftProcessor.java
  4. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynGlassCakeProcessor.java
  5. 10
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynMesRbWoProcessor.java
  6. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynOutsourcingProcessor.java
  7. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseLOTTJProcessor.java
  8. 10
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynPurchaseProcessor.java
  9. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSinterProcessor.java
  10. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynSupportingFacilitiesProcessor.java
  11. 8
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/erp/SynTemporaryProcessor.java
  12. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/pojo/enums/DsCraftEnum.java
  13. 12
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/LocationVO.java
  14. 20
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/StationVO.java
  15. 20
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/feign/IApsOrderClient.java
  16. 31
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClient.java
  17. 19
      blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/feign/StRealtimeStockClientFallback.java
  18. 48
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/LocationController.java
  19. 34
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/StationController.java
  20. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.java
  21. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/LocationMapper.xml
  22. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.java
  23. 20
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/mapper/StationMapper.xml
  24. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/ILocationService.java
  25. 11
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IStationService.java
  26. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/LocationServiceImpl.java
  27. 31
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/StationServiceImpl.java
  28. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/feign/ApsOrderClient.java
  29. 19
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  30. 76
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  31. 186
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldPlanServiceImpl.java
  32. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  33. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.java
  34. 15
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpMesRbWoMapper.xml
  35. 128
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpMesRbWoServiceImpl.java
  36. 18
      blade-service/blade-wms/src/main/java/org/springblade/wms/feign/StRealtimeStockClientImpl.java
  37. 16
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/IStRealtimeStockService.java
  38. 10
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StRealtimeStockServiceImpl.java

@ -12,9 +12,9 @@ public interface LauncherConstant {
/** /**
* nacos 命名空间 * 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"; // String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";
@ -31,8 +31,8 @@ public interface LauncherConstant {
/** /**
* nacos dev 地址 * nacos dev 地址
*/ */
String NACOS_DEV_ADDR = "192.168.249.27:8848"; // String NACOS_DEV_ADDR = "192.168.249.27:8848";
// String NACOS_DEV_ADDR = "127.0.0.1:8848"; String NACOS_DEV_ADDR = "127.0.0.1:8848";
/**R /**R
* nacos prod 地址 * nacos prod 地址

@ -2,7 +2,6 @@ package org.springblade.job.processor.erp;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.desk.order.feign.IApsOrderClient;
import org.springblade.erpdata.feign.IErpMesRbWoClient; import org.springblade.erpdata.feign.IErpMesRbWoClient;
import tech.powerjob.worker.core.processor.ProcessResult; import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.core.processor.TaskContext;
@ -16,15 +15,18 @@ public class SynCloseProdPlanProcessor implements BasicProcessor {
private final IErpMesRbWoClient mesRbWoClient; private final IErpMesRbWoClient mesRbWoClient;
//private final IApsOrderClient orderClient;
@Override @Override
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步关闭生产计划定时任务开始"); log.info("同步关闭生产计划定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synCloseProdPlan()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(() -> mesRbWoClient.synCloseProdPlan());
log.info("同步关闭生产计划定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步关闭生产计划定时任务失败", exception);
} else {
log.info("同步关闭生产计划定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -21,7 +21,13 @@ public class SynCraftProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步正式工艺订单定时任务开始"); log.info("同步正式工艺订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synCraft()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synCraft());
log.info("同步正式工艺订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步正式工艺订单定时任务失败", exception);
} else {
log.info("同步正式工艺订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -22,7 +22,13 @@ public class SynGlassCakeProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步玻璃饼订单定时任务开始"); log.info("同步玻璃饼订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> orderClient.synGlassCake()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> orderClient.synGlassCake());
log.info("同步玻璃饼订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步玻璃饼订单定时任务失败", exception);
} else {
log.info("同步玻璃饼订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -19,9 +19,15 @@ public class SynMesRbWoProcessor implements BasicProcessor {
@Override @Override
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步生产订单定时任务开始"); log.info("同步生产计划定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synMesRbWo()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synMesRbWo());
log.info("同步生产订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步生产计划定时任务失败", exception);
} else {
log.info("同步生产计划定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -21,7 +21,13 @@ public class SynOutsourcingProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步外协订单定时任务开始"); log.info("同步外协订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synOutsourcing()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synOutsourcing());
log.info("同步外协订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步外协订单定时任务失败", exception);
} else {
log.info("同步外协订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -21,7 +21,13 @@ public class SynPurchaseLOTTJProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步采购LOTTJ订单定时任务开始"); log.info("同步采购LOTTJ订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synPurchaseLOTTJ()); CompletableFuture<Void> 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); return new ProcessResult(true);
} }
} }

@ -19,9 +19,15 @@ public class SynPurchaseProcessor implements BasicProcessor {
@Override @Override
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步采购订单定时任务开始"); log.info("同步物资转车间协作加工订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synPurchase()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synPurchase());
log.info("同步采购订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步物资转车间协作加工订单定时任务失败", exception);
} else {
log.info("同步物资转车间协作加工订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -21,7 +21,13 @@ public class SynSinterProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步烧结订单定时任务开始"); log.info("同步烧结订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synSinter()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synSinter());
log.info("同步烧结订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步烧结订单定时任务失败", exception);
} else {
log.info("同步烧结订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -21,7 +21,13 @@ public class SynSupportingFacilitiesProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步配套订单定时任务开始"); log.info("同步配套订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synSupportingFacilities()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synSupportingFacilities());
log.info("同步配套订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步配套订单定时任务失败", exception);
} else {
log.info("同步配套订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -21,7 +21,13 @@ public class SynTemporaryProcessor implements BasicProcessor {
public ProcessResult process(TaskContext taskContext) throws Exception { public ProcessResult process(TaskContext taskContext) throws Exception {
log.info("同步临时订单定时任务开始"); log.info("同步临时订单定时任务开始");
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synTemporary()); CompletableFuture<Void> runFuture = CompletableFuture.runAsync(()-> mesRbWoClient.synTemporary());
log.info("同步临时订单定时任务结束"); runFuture.whenComplete((result, exception) -> {
if (exception != null) {
log.error("同步临时订单定时任务失败", exception);
} else {
log.info("同步临时订单定时任务结束");
}
});
return new ProcessResult(true); return new ProcessResult(true);
} }
} }

@ -30,10 +30,11 @@ public enum DsCraftEnum {
/** /**
* 工艺级别; 11001一级11002:二级11003三级 * 工艺级别; 11001一级11002:二级11003三级
* 工艺级别 工艺对应 20260327
*/ */
RANK_ONE("一级", 11001), RANK_ONE("一级", 1),
RANK_TWO("二级", 11002), RANK_TWO("二级", 2),
RANK_THREE("三级", 11003), RANK_THREE("三级", 3),
/** /**
* 优先级 * 优先级

@ -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 {
}

@ -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;
}

@ -29,6 +29,7 @@ public interface IApsOrderClient {
String GET_CRAFT_LIST = API_PREFIX + "/getDsCraftList"; String GET_CRAFT_LIST = API_PREFIX + "/getDsCraftList";
String GET_PLAN_LIST = API_PREFIX + "/getPlanList"; String GET_PLAN_LIST = API_PREFIX + "/getPlanList";
String GET_PART_LIST = API_PREFIX + "/getPartList"; String GET_PART_LIST = API_PREFIX + "/getPartList";
String GET_PART_LIST_BY_PARAM = API_PREFIX + "/getPartListByParam";
String UPDATE_BY_ID = API_PREFIX + "/updateById"; String UPDATE_BY_ID = API_PREFIX + "/updateById";
String CLOSE_PLAN_LIST = API_PREFIX + "/getClosePlanList"; String CLOSE_PLAN_LIST = API_PREFIX + "/getClosePlanList";
String MAX_CARD_NO = API_PREFIX + "/getMaxCardNo"; String MAX_CARD_NO = API_PREFIX + "/getMaxCardNo";
@ -37,6 +38,8 @@ public interface IApsOrderClient {
String GET_SELECT_TIME = API_PREFIX + "/getSelectTime"; String GET_SELECT_TIME = API_PREFIX + "/getSelectTime";
String GET_CRAFT_CODE = API_PREFIX + "/getDsCraftListByCode"; String GET_CRAFT_CODE = API_PREFIX + "/getDsCraftListByCode";
String SAVE_ORDER_LIST = API_PREFIX + "/saveOrderList"; 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"; String UP_DATE_MAX = API_PREFIX + "/upByDateMax";
@PostMapping(SYNC_PLAN_FROM_SAVE) @PostMapping(SYNC_PLAN_FROM_SAVE)
@ -45,8 +48,11 @@ public interface IApsOrderClient {
List<DsCraftEntity> getDsCraftList(); List<DsCraftEntity> getDsCraftList();
@GetMapping(GET_PLAN_LIST) @GetMapping(GET_PLAN_LIST)
List<YieldPlan> getPlanList(); List<YieldPlan> getPlanList();
@GetMapping(GET_PART_LIST_BY_PARAM)
List<DsPartEntity> getPartListByParam(List<String> partCodeList);
@GetMapping(GET_PART_LIST) @GetMapping(GET_PART_LIST)
List<DsPartEntity> getPartList(List<String> partCodeList); List<DsPartEntity> getPartList();
@GetMapping(UPDATE_BY_ID) @GetMapping(UPDATE_BY_ID)
void updateById(YieldPlan yieldPlan); void updateById(YieldPlan yieldPlan);
@GetMapping(CLOSE_PLAN_LIST) @GetMapping(CLOSE_PLAN_LIST)
@ -65,4 +71,16 @@ public interface IApsOrderClient {
void saveOrderList(List<YieldOrder> yieldOrderList); void saveOrderList(List<YieldOrder> yieldOrderList);
@GetMapping (UP_DATE_MAX) @GetMapping (UP_DATE_MAX)
void upByDateMax(@RequestParam("max") String max,@RequestParam("code") String code); 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<YieldOrder> yieldOrderList);
} }

@ -4,12 +4,17 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.entity.StGoods; 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.pojo.vo.StRealtimeStockVO;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap; import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; 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 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) @PostMapping(MEASURING_Id)
R<StGoods> getById(@RequestBody StGoods stGoods); R<StGoods> getById(@RequestBody StGoods stGoods);
/**
* 查询指定物料的可用库存记录
*
* @param goodCode
* @return
*/
@GetMapping(GET_REALTIME_STOCK_BY_GOOD)
List<StRealtimeStock> 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<StRealtimeStock> stockList);
} }

@ -4,9 +4,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.entity.StGoods; 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.pojo.vo.StRealtimeStockVO;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List;
/** /**
* Feign失败配置 * Feign失败配置
* *
@ -25,5 +29,20 @@ public class StRealtimeStockClientFallback implements StRealtimeStockClient {
return null; return null;
} }
@Override
public List<StRealtimeStock> getRealtimeStockByGood(String goodCode) {
return List.of();
}
@Override
public StGoodStatisVO countQuantityAndOccupyQuantity(String goodCode) {
return null;
}
@Override
public R saveOrUpdateBatch(List<StRealtimeStock> stockList) {
return R.fail("更新失败");
}
} }

@ -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<IPage<LocationVO>> getLocationList(LocationVO locationVO, Query query) {
IPage<LocationVO> pages = locationService.getLocationList(Condition.getPage(query), locationVO);
return R.data(pages);
}
}

@ -1,16 +1,25 @@
package org.springblade.desk.logistics.controller; package org.springblade.desk.logistics.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor; 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.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.IOrderBoxService;
import org.springblade.desk.logistics.service.IStationService; import org.springblade.desk.logistics.service.IStationService;
import org.springframework.web.bind.annotation.GetMapping; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springframework.web.bind.annotation.RequestMapping; import org.springblade.desk.order.pojo.vo.YieldOrderVo;
import org.springframework.web.bind.annotation.RequestParam; import org.springblade.desk.order.wrapper.YieldOrderWrapper;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
@RestController @RestController
@AllArgsConstructor @AllArgsConstructor
@ -37,4 +46,21 @@ public class StationController {
public R getStationNameBoxBarcode(@RequestParam String stationCode) { public R getStationNameBoxBarcode(@RequestParam String stationCode) {
return iOrderBoxService.getStationNameBoxBarcode(stationCode); return iOrderBoxService.getStationNameBoxBarcode(stationCode);
} }
/**
* 获取站点列表
*/
@GetMapping("/getStationList")
@ApiOperationSupport(order = 1)
@Operation(summary = "分页", description = "获取站点列表")
public R<IPage<StationVO>> getStationList(StationVO station, Query query) {
IPage<StationVO> pages = stationService.getStationList(Condition.getPage(query), station);
return R.data(pages);
}
} }

@ -1,9 +1,11 @@
package org.springblade.desk.logistics.mapper; package org.springblade.desk.logistics.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springblade.desk.logistics.pojo.entity.Location; import org.springblade.desk.logistics.pojo.entity.Location;
import org.springblade.desk.logistics.pojo.entity.OrderBind; import org.springblade.desk.logistics.pojo.entity.OrderBind;
import org.springblade.desk.logistics.pojo.vo.LocationVO;
import java.util.List; import java.util.List;
@ -15,4 +17,6 @@ public interface LocationMapper extends BaseMapper<Location> {
List<Location> selectByStatus(@Param("status") Integer status); List<Location> selectByStatus(@Param("status") Integer status);
Location selectByLocationCode(@Param("locationCode") String locationCode, @Param("status")int status); Location selectByLocationCode(@Param("locationCode") String locationCode, @Param("status")int status);
List<LocationVO> selectLocationList(IPage<LocationVO> page,@Param("location") LocationVO locationVO);
} }

@ -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 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}; from LM_LOCATION where IS_DELETED = 0 and status = #{status} and LOCATION_CODE = #{locationCode};
</select> </select>
<select id="selectLocationList" resultType="org.springblade.desk.logistics.pojo.vo.LocationVO">
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
<if test="location.locationCode != null and location.locationCode !=''">
and LOCATION_CODE = #{location.locationCode}
</if>
<if test="location.locationStatus != null and location.locationStatus !=''">
and LOCATION_STATUS = #{location.locationStatus}
</if>
</select>
</mapper> </mapper>

@ -1,9 +1,12 @@
package org.springblade.desk.logistics.mapper; package org.springblade.desk.logistics.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; 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.OrderBind;
import org.springblade.desk.logistics.pojo.entity.Station; import org.springblade.desk.logistics.pojo.entity.Station;
import org.springblade.desk.logistics.pojo.vo.StationVO;
import java.util.List; import java.util.List;
@ -12,4 +15,6 @@ public interface StationMapper extends BaseMapper<Station> {
List<Station> selectByWcId(@Param("wcId") Long wcId); List<Station> selectByWcId(@Param("wcId") Long wcId);
Station selectByStationCode(@Param("StationCode") String StationCode); Station selectByStationCode(@Param("StationCode") String StationCode);
List<StationVO> selectStationList(IPage<StationVO> page, @Param("station") Station station);
} }

@ -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 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} from LM_STATION where IS_DELETED = 0 and STATION_CODE = #{StationCode}
</select> </select>
<select id="selectStationList" resultType="org.springblade.desk.logistics.pojo.vo.StationVO">
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
<if test="station.stationName != null and station.stationName != ''">
and STATION_NAME = #{station.stationName}
</if>
<if test="station.stationCode != null and station.stationCode != ''">
and STATION_CODE = #{station.stationCode}
</if>
<if test="station.stationStatus != null and station.stationStatus != ''">
and STATION_STATUS = #{station.stationStatus}
</if>
<if test="station.stationPosition != null and station.stationPosition != ''">
and STATION_POSITION = #{station.stationPosition}
</if>
<if test="station.wcId != null and station.wcId != ''">
and WC_ID = #{station.wcId}
</if>
</select>
</mapper> </mapper>

@ -25,9 +25,11 @@
*/ */
package org.springblade.desk.logistics.service; package org.springblade.desk.logistics.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.logistics.pojo.entity.Location; import org.springblade.desk.logistics.pojo.entity.Location;
import org.springblade.desk.logistics.pojo.entity.WeighData; import org.springblade.desk.logistics.pojo.entity.WeighData;
import org.springblade.desk.logistics.pojo.vo.LocationVO;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
@ -60,4 +62,12 @@ public interface ILocationService extends BaseService<Location> {
* @return * @return
*/ */
Location selectByLocationCode(String locationCode, int status); Location selectByLocationCode(String locationCode, int status);
/**
* 获取库位
* @param page
* @param locationVO
* @return
*/
IPage<LocationVO> getLocationList(IPage<LocationVO> page, LocationVO locationVO);
} }

@ -25,10 +25,13 @@
*/ */
package org.springblade.desk.logistics.service; package org.springblade.desk.logistics.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.api.R; 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.Location;
import org.springblade.desk.logistics.pojo.entity.Station; import org.springblade.desk.logistics.pojo.entity.Station;
import org.springblade.desk.logistics.pojo.vo.StationVO;
import java.util.List; import java.util.List;
@ -56,5 +59,11 @@ public interface IStationService extends BaseService<Station> {
R getStationName(String stationCode); R getStationName(String stationCode);
/**
* 站点列表
* @param page
* @param station
* @return
*/
IPage<StationVO> getStationList(IPage<StationVO> page, Station station);
} }

@ -25,11 +25,14 @@
*/ */
package org.springblade.desk.logistics.service.impl; package org.springblade.desk.logistics.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A; import org.checkerframework.checker.units.qual.A;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.logistics.mapper.LocationMapper; import org.springblade.desk.logistics.mapper.LocationMapper;
import org.springblade.desk.logistics.pojo.entity.Location; 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.springblade.desk.logistics.service.ILocationService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -64,4 +67,11 @@ public class LocationServiceImpl extends BaseServiceImpl<LocationMapper, Locatio
public Location selectByLocationCode(String locationCode, int status) { public Location selectByLocationCode(String locationCode, int status) {
return baseMapper.selectByLocationCode(locationCode,status); return baseMapper.selectByLocationCode(locationCode,status);
} }
@Override
public IPage<LocationVO> getLocationList(IPage<LocationVO> page, LocationVO locationVO) {
List<LocationVO> locationList = baseMapper.selectLocationList(page, locationVO);
return page.setRecords(locationList);
}
} }

@ -26,14 +26,21 @@
package org.springblade.desk.logistics.service.impl; package org.springblade.desk.logistics.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; 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.mapper.StationMapper;
import org.springblade.desk.logistics.pojo.entity.Station; 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.springblade.desk.logistics.service.IStationService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
@ -48,6 +55,8 @@ import java.util.List;
public class StationServiceImpl extends BaseServiceImpl<StationMapper, Station> implements IStationService { public class StationServiceImpl extends BaseServiceImpl<StationMapper, Station> implements IStationService {
@Autowired
IWorkCenterService workCenterService;
@Override @Override
public List<Station> selectByWcId(Long wcId) { public List<Station> selectByWcId(Long wcId) {
@ -70,4 +79,26 @@ public class StationServiceImpl extends BaseServiceImpl<StationMapper, Station>
} }
return R.data(list.get(0)); return R.data(list.get(0));
} }
@Override
public IPage<StationVO> getStationList(IPage<StationVO> page, Station station) {
List<StationVO> 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);
}
} }

@ -1,5 +1,7 @@
package org.springblade.desk.order.feign; 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 com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.v3.oas.annotations.Hidden; import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -57,7 +59,12 @@ public class ApsOrderClient implements IApsOrderClient {
} }
@Override @Override
public List<DsPartEntity> getPartList(List<String> partCodeList) { public List<DsPartEntity> getPartList() {
return dsPartService.list();
}
@Override
public List<DsPartEntity> getPartListByParam(List<String> partCodeList) {
return dsPartService.list(new QueryWrapper<DsPartEntity>().lambda() return dsPartService.list(new QueryWrapper<DsPartEntity>().lambda()
.in(DsPartEntity::getPartCode, partCodeList) .in(DsPartEntity::getPartCode, partCodeList)
.like(DsPartEntity::getPartName, "玻璃")); .like(DsPartEntity::getPartName, "玻璃"));
@ -124,4 +131,21 @@ public class ApsOrderClient implements IApsOrderClient {
public void upByDateMax(String max, String code) { public void upByDateMax(String max, String code) {
yieldPlanService.updateByNewlevdateMax(max,code); yieldPlanService.updateByNewlevdateMax(max,code);
} }
@Override
public DsPartEntity getPartByCode(String code) {
return dsPartService.getOne(new LambdaQueryWrapper<DsPartEntity>()
.eq(DsPartEntity::getPartCode, code));
}
@Override
public void saveOrder(List<YieldOrder> yieldOrderList) {
yieldOrderService.saveOrder(yieldOrderList);
}
// @Override
// public Long getCount(String yoCode, String cardNo, String batchNo, String roamNo) {
// return yieldOrderService.getCount(yoCode,cardNo,batchNo,roamNo);
// }
} }

@ -258,4 +258,23 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
* @param dsPartSub * @param dsPartSub
*/ */
void saveGlassCake(String yoCode, String cardNo, String batchNo, YieldPlan po, DsPartEntity 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<YieldOrder> yieldOrderList);
} }

@ -5,9 +5,11 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; 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.dashboard.service.IDsProcessService;
import org.springblade.desk.order.constant.YieldOrderConst; import org.springblade.desk.order.constant.YieldOrderConst;
import org.springblade.desk.order.mapper.YieldOrderMapper; 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.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldOrderCraft; import org.springblade.desk.order.pojo.entity.YieldOrderCraft;
import org.springblade.desk.order.pojo.entity.YieldPlan; import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum; 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.IYieldOrderCraftService;
import org.springblade.desk.order.service.IYieldOrderService; import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.mapper.WorkOrderMapper;
@ -69,6 +73,8 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
private final IDsProcessService dsProcessService; private final IDsProcessService dsProcessService;
private final WorkOrderMapper workOrderMapper; private final WorkOrderMapper workOrderMapper;
private final YieldPlanMapper yieldPlanMapper;
private final IErpYieldOrderClient yieldOrderClient; private final IErpYieldOrderClient yieldOrderClient;
@Value("${business.oldMes.url}") @Value("${business.oldMes.url}")
@ -815,6 +821,14 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
po.getYpCode(), po.getYpQty(), dsPartSub.getPartCode(), dsPartSub.getQuota()); po.getYpCode(), po.getYpQty(), dsPartSub.getPartCode(), dsPartSub.getQuota());
} }
@Override
public Long getCount(String yoCode, String cardNo, String batchNo, String roamNo) {
return this.count(Wrappers.<YieldOrder>lambdaQuery().eq(YieldOrder::getYoCode, yoCode)
.eq(YieldOrder::getCardNo, cardNo)
.eq(YieldOrder::getBatchNo, batchNo)
.eq(YieldOrder::getRoamNo, roamNo));
}
@Override @Override
public R getCardNo(String cardNo) { public R getCardNo(String cardNo) {
if (cardNo.isEmpty()) { if (cardNo.isEmpty()) {
@ -828,6 +842,68 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return R.data(list.get(0)); return R.data(list.get(0));
} }
@Override
public void saveOrder(List<YieldOrder> 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<DsPartEntity> dsPartList = dsPartService.list(new QueryWrapper<DsPartEntity>().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);
}
/** /**
* 验证零件子件信息 * 验证零件子件信息
* *

@ -1,13 +1,13 @@
package org.springblade.desk.order.service.impl; package org.springblade.desk.order.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONObject; 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.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; 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.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.api.ResultCode; 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.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldPlan; import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.order.pojo.enums.YieldPlanEnum; 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.IYieldOrderService;
import org.springblade.desk.order.service.IYieldPlanService; import org.springblade.desk.order.service.IYieldPlanService;
import org.springblade.erpdata.feign.IErpPartoplinkFirseqClient; import org.springblade.erpdata.feign.IErpPartoplinkFirseqClient;
import org.springblade.erpdata.pojo.dto.PartoplinkFirseqDTO; 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; 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; import java.util.stream.Collectors;
/** /**
@ -46,7 +54,7 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
private final IDsPartService dsPartService; private final IDsPartService dsPartService;
//private final IStRealtimeStockService stRealtimeStockService; private final StRealtimeStockClient stRealtimeStockClient;
@Override @Override
public IPage<YieldPlan> selectPageElectroplate(IPage<YieldPlan> page, YieldPlan entity) { public IPage<YieldPlan> selectPageElectroplate(IPage<YieldPlan> page, YieldPlan entity) {
@ -159,109 +167,109 @@ public class YieldPlanServiceImpl extends BaseServiceImpl<YieldPlanMapper, Yield
* 同步玻璃饼 * 同步玻璃饼
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synGlassCake() { public void synGlassCake() {
//查询未生成玻璃饼订单的烧结主制计划列表
List<YieldPlan> yieldPlanList=baseMapper.selectList(new QueryWrapper<YieldPlan>().lambda() List<YieldPlan> yieldPlanList=baseMapper.selectList(new QueryWrapper<YieldPlan>().lambda()
.eq(YieldPlan::getIsDeleted, 0).eq(YieldPlan::getPlanType, 12002) .eq(YieldPlan::getIsDeleted, 0).eq(YieldPlan::getPlanType, 12002)
.eq(YieldPlan::getGenerateGlassCake, 0));; .eq(YieldPlan::getGenerateGlassCake, 0));;
List<String> partCodeList=yieldPlanList.stream().map(x->x.getPartCode()).toList(); List<String> partCodeList=yieldPlanList.stream().map(x->x.getPartCode()).toList();
//b1. 查询该计划的零件是否是玻璃相关的零件列表(sub_cursor) //查询该计划的零件是否是玻璃相关的零件列表(sub_cursor)
List<DsPartEntity> dsPartList=dsPartService.list(new QueryWrapper<DsPartEntity>().lambda() List<DsPartEntity> dsPartList=dsPartService.list(new QueryWrapper<DsPartEntity>().lambda()
.in(DsPartEntity::getPartCode, partCodeList) .in(DsPartEntity::getPartCode, partCodeList)
.like(DsPartEntity::getPartName, "玻璃"));// 获取零件信息 .like(DsPartEntity::getPartName, "玻璃"));// 获取零件信息
List<String> partList=dsPartList.stream().map(x->x.getPartCode()).toList(); Map<String, List<DsPartEntity>> partMap = dsPartList.stream()
.collect(Collectors.groupingBy(DsPartEntity::getPartCode));
List<YieldOrder> yieldOrderList = new ArrayList<>();
List<StRealtimeStock> 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 -> { yieldPlanList.forEach(yieldPlan -> {
if(!partList.contains(yieldPlan.getPartCode())){ //若不含玻璃相关的零件,表示不需要生成
if (!partMap.containsKey(yieldPlan.getPartCode())) {
yieldPlan.setGenerateGlassCake(1); yieldPlan.setGenerateGlassCake(1);
yieldPlan.setId(yieldPlan.getId()); yieldPlan.setId(yieldPlan.getId());
baseMapper.updateById(yieldPlan); baseMapper.updateById(yieldPlan);
return;
} }
//b3.1 生成流程卡号、批次号 //遍历零件列表
//查询RB相关的流程卡号 List<DsPartEntity> dsPartEntities = partMap.get(yieldPlan.getPartCode());
String cardNo=yieldOrderService.getMaxCardNo();; dsPartEntities.forEach(dsPartEntity -> {
Long num; //生成流程卡号、批次号
if(StringUtils.isEmpty(cardNo)){ // 生成序号,全局自增,而不是每个外层循环重新开始
num=1L; long num = counter.getAndIncrement();
}else { String cardNo = "RB" + dateStr + String.format("%05d", num);
num=Long.valueOf(cardNo.replace("RB"+new SimpleDateFormat("yyMMdd").format(new Date()), ""))+1; String bathNo = "Y" + dateStr + String.format("%05d", num);
} //创建生产订单并赋值
cardNo="RB"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num); YieldOrder yieldOrder = new YieldOrder();
String bathNo="Y"+new SimpleDateFormat("yyMMdd").format(new Date())+String.format("%05d", num); yieldOrder.setRoamNo("");
//调用公共保存方法 todo String yoCode = "WO-B" + new SimpleDateFormat("yyMMdd").format(new Date()) + String.format("%05d", num);
//查询order订单 yieldOrder.setRoamNoNext("");
for (int i = 0; i < dsPartList.size(); i++) { yieldOrder.setYoCode(yoCode);
DsPartEntity dsPart = dsPartList.get(i); yieldOrder.setYpCode("");
List<YieldOrder> yieldOrderList=yieldOrderService.list(new QueryWrapper<YieldOrder>() yieldOrder.setPartCode(dsPartEntity.getPartCode());
.lambda().eq(YieldOrder::getYpCode, yieldPlan.getYpCode()) yieldOrder.setPartName(dsPartEntity.getPartName());
.eq(YieldOrder::getCardNo, cardNo) yieldOrder.setProductIdent(yieldPlan.getProductIdent());
.eq(YieldOrder::getBatchNo, bathNo) yieldOrder.setUseDept("热表分厂");
.eq(YieldOrder::getRoamNo, yieldPlan.getRoamNo())); yieldOrder.setDemandDate(yieldPlan.getDemandDate());
if(yieldOrderList.size()>0){ if (null != UserCache.getUser(yieldPlan.getPlanUser())) {
new ServiceException("'零件号【' "+dsPart.getPartCode()+" '】,批号【'\n" + yieldOrder.setPlanUser(UserCache.getUser(yieldPlan.getPlanUser()).getRealName());
" "+bathNo+" '】工单已转交,请勿重复转交!!'");
}
DsPartEntity zPartEntity = dsPartService.getOne(new QueryWrapper<DsPartEntity>().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);
} }
if("2".equals(yieldOrder.getYieldType())||"3".equals(yieldOrder.getYieldType())){ yieldOrder.setReleaseDate(new Date());
yieldOrder.setSiteWork( true); yieldOrder.setMemo(yieldPlan.getMemo());
yieldOrder.setReceiveStatus(11000); yieldOrder.setCardNo(cardNo);
} yieldOrder.setBatchNo(bathNo);
if("3".equals(yieldOrder.getYieldType())){ yieldOrder.setYpQty(yieldPlan.getYpQty().doubleValue());
yieldOrder.setStatus(11001); yieldOrder.setYieldType(3);
} yieldOrder.setEntrustDept("热表分厂");
//对接受人赋值 yieldOrder.setUseDeptCode("3400");
Long receiveUser=baseMapper.getReceiveUser(); yieldOrderList.add(yieldOrder);
yieldOrder.setReceiveUser(receiveUser);
//对接收时间进行赋值
yieldOrder.setReceiveTime(new Date());
LineMemoVo lineMemoVo = baseMapper.getLineMemo(yieldPlan.getYpCode()); //玻璃饼预占用
if(lineMemoVo!=null&&lineMemoVo.getSum()==0){ //从仓库相关表中查询指定物料的可用库存记录
yieldOrder.setMemo(""); List<StRealtimeStock> stRealtimeStockList = stRealtimeStockClient.getRealtimeStockByGood(dsPartEntity.getPartCode());
yieldOrder.setYpProductLine(""); //汇总指定物料的总库存、总已占用库存
}else { StGoodStatisVO stGoodStatisVO = stRealtimeStockClient.countQuantityAndOccupyQuantity(dsPartEntity.getPartCode());
yieldOrder.setMemo(lineMemoVo.getMemo()); //计算子件需要占用的总数量
yieldOrder.setYpProductLine(lineMemoVo.getProdLine()); AtomicReference<Double> subPorqty = new AtomicReference<>(yieldPlan.getYpQty().doubleValue());
//判断库存是否满足需求并逐行占用
if (null == stGoodStatisVO || CollUtil.isEmpty(stRealtimeStockList)) {
return;
} }
//保存订单 if (stGoodStatisVO.getTotalQuantity() - stGoodStatisVO.getZyQuantity() >= subPorqty.get()) {
yieldOrderService.saveOrUpdate(yieldOrder); stRealtimeStockList.forEach(stRealtimeStock -> {
StRealtimeStock rs = new StRealtimeStock();
} if (stRealtimeStock.getQuantity() - stRealtimeStock.getOccupyQuantity() >= subPorqty.get()) {
// dsPartList.forEach(dsPart -> { //当前库存记录的可用库存 ≥ 剩余需要占用的数量
// List<StRealtimeStock> stockList=stRealtimeStockService.getGoodsByPartCode(dsPart.getPartCode()); //只占用当前记录的部分库存:已占用数量 += 剩余需要占用的数量
// StGoodStatisVO statisVO=stRealtimeStockService.getGoodsByCode(dsPart.getPartCode()); rs.setId(stRealtimeStock.getId());
// Double subPorqty=dsPart.getQuota()*yieldPlan.getDeliveryQty() ; rs.setOccupyQuantity(stRealtimeStock.getOccupyQuantity() + subPorqty.get());
// if(statisVO.getTotalQuantity()-statisVO.getZyQuantity()>=subPorqty){ realtimeStocks.add(rs);
// stockList.forEach(stock -> { } else {
// if(stock.getQuantity()-stock.getOccupyQuantity()>=subPorqty){ //当前库存记录的可用库存 < 剩余需要占用的数量
// StRealtimeStock rs=new StRealtimeStock(); //剩余需要占用的数量 = 剩余数量 - 当前记录的可用库存
// rs.setId(stock.getId()); subPorqty.set(dsPartEntity.getQuota() - (stRealtimeStock.getQuantity() - stRealtimeStock.getOccupyQuantity()));
// rs.setOccupyQuantity(rs.getOccupyQuantity()+subPorqty); rs.setId(stRealtimeStock.getId());
// stRealtimeStockService.updateById(rs); rs.setOccupyQuantity(stRealtimeStock.getQuantity());
// }else { realtimeStocks.add(rs);
// StRealtimeStock rs=new StRealtimeStock(); }
// rs.setId(stock.getId()); });
// rs.setOccupyQuantity(rs.getQuantity()); }
// stRealtimeStockService.updateById(rs); });
// } //调用生成订单的通用存储方法,保存玻璃饼生产订单
// }); yieldOrderService.saveOrder(yieldOrderList);
// } //更新库存记录
// }); stRealtimeStockClient.saveOrUpdateBatch(realtimeStocks);
//更新状态标记为已读`update MES_YIELD_PLAN set GENERATE_GLASS_CAKE = 1 where id = ?` //更新状态标记为已读`update MES_YIELD_PLAN set GENERATE_GLASS_CAKE = 1 where id = ?`
yieldPlan.setGenerateGlassCake(1); yieldPlan.setGenerateGlassCake(1);
yieldPlan.setId(yieldPlan.getId());
baseMapper.updateById(yieldPlan); baseMapper.updateById(yieldPlan);
}); });
} }

@ -1543,16 +1543,22 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
if ("1".equals(frontWorkPlan.getOem()) && "1".equals(workPlan.getOem())) { if ("1".equals(frontWorkPlan.getOem()) && "1".equals(workPlan.getOem())) {
return; return;
} }
List<PlateAround> pa = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAN_OUT).eq(PlateAround::getWpId, workPlan.getId())); List<PlateAround> pa = plateAroundMapper.selectList(Wrappers.lambdaQuery(PlateAround.class).eq(PlateAround::getPaType, PlateAround.BEFORE_PLAT_IN).eq(PlateAround::getWpId, frontWorkPlan.getId()));
if (CollectionUtils.isEmpty(pa)) { if (CollectionUtils.isNotEmpty(pa)) {
if ("1".equals(frontWorkPlan.getOem())) { List<PlateAround> 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("工序加工单位不同,未找到镀前出库记录,无法接收!"); throw new ServiceException("上序未查询到镀前出库记录,无法接收!");
} else if (!frontWorkPlan.getMakeTeam().equals(workPlan.getMakeTeam())) {
//加工班组不同,验证镀前出库记录
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) { private void workPlanStart(WorkPlan workPlan, Date startDate, Long userId, WorkOrder workOrder) {

@ -17,5 +17,7 @@ public interface ErpMesRbWoMapper extends Mapper {
* *
* @return * @return
*/ */
List<MesRbWo> getYieldPlanErpList(); List<MesRbWo> getYieldPlanErpList(String newlevdateMax);
String getNewlevdateMax(String selectTime);
} }

@ -21,8 +21,21 @@
a.kdofplat, a.kdofplat,
a.processlinedesc, a.processlinedesc,
a.prodline a.prodline
FROM dba_mgr.v_mes_rb_wo FROM dba_mgr.v_mes_rb_wo a
<where>
a.wopordat <![CDATA[ >= ]]> to_date(#{newlevdateMax},'YYYY-MM-DD HH24:MI:SS')
</where>
WHERE rownum <![CDATA[ <= ]]> 2000 WHERE rownum <![CDATA[ <= ]]> 2000
</select> </select>
<select id="getNewlevdateMax" resultType="java.lang.String">
SELECT nvl(max(a.wopordat), selectTime)
as newlevdateMax
FROM dba_mgr.v_mes_rb_wo a
<where>
a.is_deleted = 0
AND a.wopordat <![CDATA[ >= ]]> to_date(#{selectTime},'YYYY-MM-DD HH24:MI:SS')
</where>
ORDER BY a.wopordat DESC;
</select>
</mapper> </mapper>

@ -10,17 +10,22 @@ import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.order.feign.IApsOrderClient; import org.springblade.desk.order.feign.IApsOrderClient;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldPlan; 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.desk.order.pojo.enums.YieldPlanEnum;
import org.springblade.erpdata.mapper.ErpMesRbWoMapper; import org.springblade.erpdata.mapper.ErpMesRbWoMapper;
import org.springblade.erpdata.pojo.dto.table.Rrbwoerptomes; import org.springblade.erpdata.pojo.dto.table.Rrbwoerptomes;
import org.springblade.erpdata.pojo.dto.table.Wo; import org.springblade.erpdata.pojo.dto.table.Wo;
import org.springblade.erpdata.pojo.dto.view.*; import org.springblade.erpdata.pojo.dto.view.*;
import org.springblade.erpdata.service.*; import org.springblade.erpdata.service.*;
import org.springblade.system.cache.DictCache;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author lqk * @author lqk
@ -58,12 +63,18 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
@Override @Override
public List<MesRbWo> getList(MesRbWo entity) { public List<MesRbWo> getList(MesRbWo entity) {
return mesRbWoMapper.getYieldPlanErpList(); return mesRbWoMapper.getYieldPlanErpList(entity.getWoreqdat());
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synMesRbWo() { public void synMesRbWo() {
List<MesRbWo> mesRbWoList=mesRbWoMapper.getYieldPlanErpList(); //用字典的code查更新日期
String selectTime = apsOrderClient.getSelectTime("SYCN_MESRBWO_TIME");
//从ERP视图查询最大日期
String newlevdateMax = mesRbWoMapper.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(newlevdateMax, "SYCN_MESRBWO_TIME");
List<MesRbWo> mesRbWoList = mesRbWoMapper.getYieldPlanErpList(newlevdateMax);
/** /**
* 有多个实体类 * 有多个实体类
* b1. 根据零件号从`DS_PART`表中查询零件信息 * 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 * 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; * FROM ds_part a WHERE a.part_code = v_prtno;
*/ */
List<DsPartEntity> dsPartList=new ArrayList<>();//todo 获取零件信息 List<DsPartEntity> dsPartList = apsOrderClient.getPartList();
List<String> partCodeList=dsPartList.stream().map(x->x.getPartCode()).toList(); Map<String, DsPartEntity> partMap = dsPartList.stream().collect(Collectors.toMap(DsPartEntity::getPartCode, v -> v));
List<YieldPlan> yieldPlanList=new ArrayList<>(); List<YieldPlan> yieldPlanList=new ArrayList<>();
//若零件不为空, 验证零件是否存在二级零件工艺 //若零件不为空, 验证零件是否存在二级零件工艺
List<DsCraftEntity> dsCraftList= apsOrderClient.getDsCraftList(); List<DsCraftEntity> dsCraftList= apsOrderClient.getDsCraftList();
List<Long> partIdList=dsCraftList.stream().map(x->x.getPartId()).toList(); List<Long> partIdList = dsCraftList.stream().map(x -> x.getPartId()).toList();
final Long[] partId = {0L}; final Long[] partId = {0L};
List<Rrbwoerptomes> rbwoerptomesList=new ArrayList<>(); List<Rrbwoerptomes> rbwoerptomesList=new ArrayList<>();
mesRbWoList.forEach(mesRbWo -> { mesRbWoList.forEach(mesRbWo -> {
YieldPlan yieldPlan=new YieldPlan(); YieldPlan yieldPlan=new YieldPlan();
//b1. 根据零件号从`DS_PART`表中查询零件信息 //b1. 根据零件号从`DS_PART`表中查询零件信息
dsPartList.forEach(dsPart -> { DsPartEntity dsPart = partMap.get(mesRbWo.getPrtno());
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();
}
});
yieldPlan.setPlanType(12001L);//赋值默认值12001 yieldPlan.setPlanType(12001L);//赋值默认值12001
if(mesRbWo.getProcesslinedesc().contains("封接") if(mesRbWo.getProcesslinedesc().contains("封接")
||"LX08-05-028,LX08-05-030,LX08-05-031".contains(mesRbWo.getProcessline())){ ||"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.setStatus(YieldPlanEnum.STATUS_DISPATCHED.getCode());
yieldPlan.setRoamNo(""); yieldPlan.setRoamNo("");
//1. 若零件为空 //1. 若零件为空
if(!partCodeList.contains(mesRbWo.getPrtno())){ if (null == dsPart) {
yieldPlan.setStatus(YieldPlanEnum.STATUS_NO_CRAFT.getCode()); yieldPlan.setStatus(YieldPlanEnum.STATUS_NO_CRAFT.getCode());
yieldPlan.setRoamNo("无零件信息!!"); yieldPlan.setRoamNo("无零件信息!!");
}else {//2. 若零件不为空, 验证零件是否存在二级零件工艺 } else {
if(partId==null||partId[0]==null||(partId!=null&&partId[0]!=null&&!partIdList.contains(partId[0]))){ 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.setStatus(YieldPlanEnum.STATUS_NO_CRAFT.getCode());
yieldPlan.setRoamNo("无二级工艺信息!!"); yieldPlan.setRoamNo("无二级工艺信息!!");
} }
@ -128,7 +136,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
rbwoerptomesList.add(rbwoerptomes); rbwoerptomesList.add(rbwoerptomes);
}); });
apsOrderClient.saveList(yieldPlanList); apsOrderClient.saveList(yieldPlanList);
rbwoerptomesService.saveOrUpdateBatch(rbwoerptomesList); // rbwoerptomesService.saveOrUpdateBatch(rbwoerptomesList);
} }
@Override @Override
@ -164,6 +172,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
* 同步关闭计划 * 同步关闭计划
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synCloseProdPlan() { public void synCloseProdPlan() {
List<YieldPlan> yieldPlanList=apsOrderClient.getClosePlanList(); List<YieldPlan> yieldPlanList=apsOrderClient.getClosePlanList();
yieldPlanList.forEach(yieldPlan -> { yieldPlanList.forEach(yieldPlan -> {
@ -187,11 +196,14 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
return R.data(wo); return R.data(wo);
} }
/** /**
* 同步采购工单 * 同步物资转车间协作加工
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synPurchase() { public void synPurchase() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERCG_TIME1"); String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERCG_TIME1");
//从ERP视图查询最大日期
String newlevdateMax=mesRbPurtosoService.getNewlevdateMax(selectTime); String newlevdateMax=mesRbPurtosoService.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(newlevdateMax, "SYCN_TRANSFERCG_TIME1"); apsOrderClient.upByDateMax(newlevdateMax, "SYCN_TRANSFERCG_TIME1");
List<MesRbPurtoso> purtosoList=mesRbPurtosoService.getMesRbPurtosoList(newlevdateMax); List<MesRbPurtoso> purtosoList=mesRbPurtosoService.getMesRbPurtosoList(newlevdateMax);
@ -217,9 +229,10 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setPkUsername(mesRbPurtoso.getNewlevname()); yieldOrder.setPkUsername(mesRbPurtoso.getNewlevname());
yieldOrder.setPkDate(mesRbPurtoso.getNewlevdate()); yieldOrder.setPkDate(mesRbPurtoso.getNewlevdate());
List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbPurtoso.getPrtno()); List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbPurtoso.getPrtno());
yieldOrder.setYieldType(12001); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode());
if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ //若零件不为空,查询零件的工艺路线
yieldOrder.setYieldType(12002); if (dsPartList != null && dsPartList.get(0).getCraftWay().contains("封接")) {
yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode());
} }
yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNo("");//当前b号
yieldOrder.setRoamNoNext("");//下级b号 yieldOrder.setRoamNoNext("");//下级b号
@ -238,8 +251,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
* 同步临时工单 * 同步临时工单
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synTemporary() { public void synTemporary() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_PACTURNRECORD_TIME"); String selectTime=apsOrderClient.getSelectTime("SYCN_PACTURNRECORD_TIME");
//从ERP视图查询最大日期
String newlevdateMax=mesRbPacturnrecordService.getNewlevdateMax(selectTime); String newlevdateMax=mesRbPacturnrecordService.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(newlevdateMax, "SYCN_PACTURNRECORD_TIME"); apsOrderClient.upByDateMax(newlevdateMax, "SYCN_PACTURNRECORD_TIME");
List<MesRbPacturnrecord> pacturnrecordList=mesRbPacturnrecordService.getMesRbPacturnrecordList(newlevdateMax); List<MesRbPacturnrecord> pacturnrecordList=mesRbPacturnrecordService.getMesRbPacturnrecordList(newlevdateMax);
@ -273,6 +289,8 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPacturnrecord.getPrtno(),mesRbPacturnrecord.getFirseq()); String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPacturnrecord.getPrtno(),mesRbPacturnrecord.getFirseq());
yieldOrder.setRoamNoNext(roamNoNext);//下级b号 yieldOrder.setRoamNoNext(roamNoNext);//下级b号
} }
//委托车间
yieldOrder.setEntrustDept(mesRbPacturnrecord.getDeptno());
yieldOrderList.add(yieldOrder); yieldOrderList.add(yieldOrder);
}); });
this.saveOrder(yieldOrderList); this.saveOrder(yieldOrderList);
@ -281,8 +299,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
* 同步烧结数据 * 同步烧结数据
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synSinter() { public void synSinter() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERSJ_TIME"); String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERSJ_TIME");
//从ERP视图查询最大日期
String newlevdateMax=mesRbSjsoService.getNewlevdateMax(selectTime); String newlevdateMax=mesRbSjsoService.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(newlevdateMax, "SYCN_TRANSFERSJ_TIME"); apsOrderClient.upByDateMax(newlevdateMax, "SYCN_TRANSFERSJ_TIME");
List<MesRbSjso> rbtosoList=mesRbSjsoService.getMesRbSjsoList(newlevdateMax); List<MesRbSjso> rbtosoList=mesRbSjsoService.getMesRbSjsoList(newlevdateMax);
@ -305,7 +326,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setUseDeptCode(mesRbtoso.getPrtudeptcode()); yieldOrder.setUseDeptCode(mesRbtoso.getPrtudeptcode());
yieldOrder.setPkUsername(mesRbtoso.getNewlevname()); yieldOrder.setPkUsername(mesRbtoso.getNewlevname());
yieldOrder.setPkDate(mesRbtoso.getNewlevdate()); yieldOrder.setPkDate(mesRbtoso.getNewlevdate());
yieldOrder.setYieldType(12002); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode());
yieldOrder.setRoamNoNext( ""); yieldOrder.setRoamNoNext( "");
if(StringUtils.isNotEmpty(mesRbtoso.getFirseq())){ if(StringUtils.isNotEmpty(mesRbtoso.getFirseq())){
String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbtoso.getPrtno(),mesRbtoso.getFirseq()); String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbtoso.getPrtno(),mesRbtoso.getFirseq());
@ -319,8 +340,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
* 同步采购LOTTJ * 同步采购LOTTJ
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synPurchaseLOTTJ() { public void synPurchaseLOTTJ() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_BUYTRANSFER_TIME"); String selectTime=apsOrderClient.getSelectTime("SYCN_BUYTRANSFER_TIME");
//从ERP视图查询最大日期
String dateMax=mesRbWxpromotionService.getNewlevdateMax(selectTime); String dateMax=mesRbWxpromotionService.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(dateMax,"SYCN_BUYTRANSFER_TIME"); apsOrderClient.upByDateMax(dateMax,"SYCN_BUYTRANSFER_TIME");
List<MesRbWxpromotion> wxpromotionList=mesRbWxpromotionService.getMesRbWxpromotionList(dateMax); List<MesRbWxpromotion> wxpromotionList=mesRbWxpromotionService.getMesRbWxpromotionList(dateMax);
@ -345,9 +369,9 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setPkUsername(mesRbWxpromotion.getNewlevname()); yieldOrder.setPkUsername(mesRbWxpromotion.getNewlevname());
yieldOrder.setPkDate(mesRbWxpromotion.getNewlevdate()); yieldOrder.setPkDate(mesRbWxpromotion.getNewlevdate());
List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbWxpromotion.getPrtno()); List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbWxpromotion.getPrtno());
yieldOrder.setYieldType(12001); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode());
if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ if (dsPartList != null && dsPartList.get(0).getCraftWay().contains("封接")) {
yieldOrder.setYieldType(12002); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode());
} }
yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNo("");//当前b号
yieldOrder.setRoamNoNext("");//下级b号 yieldOrder.setRoamNoNext("");//下级b号
@ -366,8 +390,11 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
* 同步外协工单 * 同步外协工单
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synOutsourcing() { public void synOutsourcing() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERWX_TIME"); String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERWX_TIME");
//从ERP视图查询最大日期
String dateMax=erpMesRbSodelrecwxService.getNewlevdateMax(selectTime); String dateMax=erpMesRbSodelrecwxService.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERWX_TIME"); apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERWX_TIME");
List<MesRbSodelrecwx> mesRbSodelrecwxList=erpMesRbSodelrecwxService.getMesRbSodelrecwxList(dateMax); List<MesRbSodelrecwx> mesRbSodelrecwxList=erpMesRbSodelrecwxService.getMesRbSodelrecwxList(dateMax);
@ -391,9 +418,9 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setPkUsername(mesRbSodelrecwx.getNewlevname()); yieldOrder.setPkUsername(mesRbSodelrecwx.getNewlevname());
yieldOrder.setPkDate(mesRbSodelrecwx.getNewlevdate()); yieldOrder.setPkDate(mesRbSodelrecwx.getNewlevdate());
List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelrecwx.getPrtno()); List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelrecwx.getPrtno());
yieldOrder.setYieldType(12001); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode());
if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){
yieldOrder.setYieldType(12002); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode());
} }
yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNo("");//当前b号
yieldOrder.setRoamNoNext("");//下级b号 yieldOrder.setRoamNoNext("");//下级b号
@ -412,13 +439,18 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
* 同步工艺工单 * 同步工艺工单
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synCraft() { public void synCraft() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERZG_TIME1"); String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERZG_TIME1");
//从ERP视图查询最大日期
String dateMax=erpMesRbSodelreczgService.getNewlevdateMax(selectTime); String dateMax=erpMesRbSodelreczgService.getNewlevdateMax(selectTime);
//更新配置表的基准时间
apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERZG_TIME1"); apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERZG_TIME1");
List<MesRbSodelreczg> mesRbSodelreczgList=erpMesRbSodelreczgService.getMesRbSodelreczgList(dateMax); List<MesRbSodelreczg> mesRbSodelreczgList=erpMesRbSodelreczgService.getMesRbSodelreczgList(dateMax);
List<YieldOrder> yieldOrderList=new ArrayList<>(); List<YieldOrder> yieldOrderList=new ArrayList<>();
mesRbSodelreczgList.forEach(mesRbSodelreczg -> { mesRbSodelreczgList.forEach(mesRbSodelreczg -> {
//将查询出的数据放到单个的变量中
YieldOrder yieldOrder=new YieldOrder(); YieldOrder yieldOrder=new YieldOrder();
yieldOrder.setYpMemo("正式工艺转工"); yieldOrder.setYpMemo("正式工艺转工");
yieldOrder.setManualIncrease(false); yieldOrder.setManualIncrease(false);
@ -437,30 +469,39 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setUseDeptCode(mesRbSodelreczg.getPrtudeptcode()); yieldOrder.setUseDeptCode(mesRbSodelreczg.getPrtudeptcode());
yieldOrder.setPkUsername(mesRbSodelreczg.getNewlevname()); yieldOrder.setPkUsername(mesRbSodelreczg.getNewlevname());
yieldOrder.setPkDate(mesRbSodelreczg.getNewlevdate()); yieldOrder.setPkDate(mesRbSodelreczg.getNewlevdate());
//从零件表中查询零件信息
List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelreczg.getPrtno()); List<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(mesRbSodelreczg.getPrtno());
yieldOrder.setYieldType(12001); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode());
if(dsPartList!=null&&dsPartList.get(0).getCraftWay().contains("封接")){ //若零件不为空,查询零件的工艺路线
yieldOrder.setYieldType(12002); if (dsPartList != null && dsPartList.get(0).getCraftWay().contains("封接")) {
yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_2.getCode());
} }
yieldOrder.setRoamNo("");//当前b号 yieldOrder.setRoamNo("");//当前b号
yieldOrder.setRoamNoNext("");//下级b号 yieldOrder.setRoamNoNext("");//下级b号
//根据零件号和上级b号查询视图
Long vCount=mesRbPartoplinkService.getVcount(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq()); Long vCount=mesRbPartoplinkService.getVcount(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq());
if(vCount>0){ if(vCount>0){
//从ERP视图中查询当前B号
String roamNo=mesRbPartoplinkService.getRoamNo(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq()); String roamNo=mesRbPartoplinkService.getRoamNo(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq());
yieldOrder.setRoamNo(roamNo);//当前b号 yieldOrder.setRoamNo(roamNo);//当前b号
//从ERP视图中查询下级B号
String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq()); String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbSodelreczg.getPrtno(),mesRbSodelreczg.getFirseq());
yieldOrder.setRoamNoNext(roamNoNext);//下级b号 yieldOrder.setRoamNoNext(roamNoNext);//下级b号
} }
yieldOrderList.add(yieldOrder); yieldOrderList.add(yieldOrder);
}); });
//调用通用保存方法,保存生产订单
this.saveOrder(yieldOrderList); this.saveOrder(yieldOrderList);
} }
/** /**
* 同步配套工单 * 同步配套工单
*/ */
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void synSupportingFacilities() { public void synSupportingFacilities() {
//用字典的code查更新日期
String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERPK_TIME"); String selectTime=apsOrderClient.getSelectTime("SYCN_TRANSFERPK_TIME");
//从ERP视图查询最大日期
String dateMax=erpMesRbPkService.getNewlevdateMax(selectTime); String dateMax=erpMesRbPkService.getNewlevdateMax(selectTime);
apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERPK_TIME"); apsOrderClient.upByDateMax(dateMax,"SYCN_TRANSFERPK_TIME");
List<MesRbPk> mesRbPkList=erpMesRbPkService.getMesRbPkList(dateMax); List<MesRbPk> mesRbPkList=erpMesRbPkService.getMesRbPkList(dateMax);
@ -485,7 +526,7 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
yieldOrder.setUseDeptCode(mesRbPk.getPrtudeptcode()); yieldOrder.setUseDeptCode(mesRbPk.getPrtudeptcode());
yieldOrder.setPkUsername(mesRbPk.getNewlevname()); yieldOrder.setPkUsername(mesRbPk.getNewlevname());
yieldOrder.setPkDate(mesRbPk.getNewlevdate()); yieldOrder.setPkDate(mesRbPk.getNewlevdate());
yieldOrder.setYieldType(12001); yieldOrder.setYieldType(YieldOrderEnum.YIELD_TYPE_1.getCode());
yieldOrder.setRoamNoNext( ""); yieldOrder.setRoamNoNext( "");
if(StringUtils.isNotEmpty(mesRbPk.getFirseq())){ if(StringUtils.isNotEmpty(mesRbPk.getFirseq())){
String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPk.getPrtno(),mesRbPk.getFirseq()); String roamNoNext=mesRbPartoplinkService.getRoamNoNext(mesRbPk.getPrtno(),mesRbPk.getFirseq());
@ -495,21 +536,14 @@ public class ErpMesRbWoServiceImpl implements IErpMesRbWoService {
}); });
this.saveOrder(yieldOrderList); this.saveOrder(yieldOrderList);
} }
private void saveOrder(List<YieldOrder> 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<DsPartEntity> dsPartList=apsOrderClient.getDsCraftListByCode(order.getPartCode());
if(dsPartList!=null&&dsPartList.size()>0){
} /**
}); * 生产订单通用保存方法
apsOrderClient.saveOrderList(yieldOrderList); *
* @param yieldOrderList
*/
private void saveOrder(List<YieldOrder> yieldOrderList) {
apsOrderClient.saveOrder(yieldOrderList);
// apsOrderClient.saveOrderList(yieldOrderList);
} }
} }

@ -12,12 +12,15 @@ import org.springblade.core.mp.support.Query;
import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.wms.pojo.entity.StGoods; 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.pojo.vo.StRealtimeStockVO;
import org.springblade.wms.service.IStGoodsNewService; import org.springblade.wms.service.IStGoodsNewService;
import org.springblade.wms.service.IStRealtimeStockService; import org.springblade.wms.service.IStRealtimeStockService;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
@ -71,4 +74,19 @@ public class StRealtimeStockClientImpl implements StRealtimeStockClient {
return R.data(detail); return R.data(detail);
} }
@Override
public List<StRealtimeStock> getRealtimeStockByGood(String goodCode) {
return stRealtimeStockService.getGoodsByPartCode(goodCode);
}
@Override
public StGoodStatisVO countQuantityAndOccupyQuantity(String goodCode) {
return stRealtimeStockService.getGoodsByCode(goodCode);
}
@Override
public R saveOrUpdateBatch(List<StRealtimeStock> stockList) {
return this.saveOrUpdateBatch(stockList);
}
} }

@ -99,12 +99,14 @@ public interface IStRealtimeStockService extends BaseService<StRealtimeStock> {
* @param partCode * @param partCode
* @return * @return
*/ */
// List<StRealtimeStock> getGoodsByPartCode(String partCode); List<StRealtimeStock> getGoodsByPartCode(String partCode);
// /**
// * 根据物料编码统计信息 /**
// * @param partCode * 根据物料编码统计信息
// * @return *
// */ * @param partCode
// StGoodStatisVO getGoodsByCode(String partCode); * @return
*/
StGoodStatisVO getGoodsByCode(String partCode);
} }

@ -912,6 +912,16 @@ public class StRealtimeStockServiceImpl extends BaseServiceImpl<StRealtimeStockM
return resultMap; return resultMap;
} }
@Override
public List<StRealtimeStock> 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) { private String generateBarcodeAsBase64(String content, int width, int height) {
try { try {
// 1. 创建条形码(Code128 类型) // 1. 创建条形码(Code128 类型)

Loading…
Cancel
Save