From 0e8aae27274c1b1b7a283ba73963af78417202c3 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期六, 06 七月 2024 13:32:52 +0800
Subject: [PATCH] 冠鸿接口对接
---
src/main/java/com/zy/asrs/task/GhjtScheduler.java | 60 ++
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java | 139 ++++++
src/main/resources/mapper/LocMastMapper.xml | 12
src/main/java/com/zy/asrs/entity/param/ZwmsOutLocWorkDto.java | 28 +
src/main/java/com/zy/asrs/service/OpenService.java | 26 +
src/main/java/com/zy/asrs/entity/param/CrnExecuteParam.java | 14
src/main/java/com/zy/asrs/utils/Utils.java | 31 +
src/main/webapp/static/js/order/out.js | 2
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 59 ++
src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 9
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 32 +
src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java | 32 +
src/main/java/com/zy/asrs/controller/OutController.java | 222 +++++----
src/main/java/com/zy/common/service/CommonService.java | 102 ++++
src/main/java/com/zy/asrs/service/MobileService.java | 5
src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 17
src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 17
src/main/java/com/zy/asrs/controller/OpenController.java | 61 ++
src/main/java/com/zy/asrs/entity/WrkMast.java | 25
src/main/java/com/zy/asrs/task/WorkMastScheduler.java | 10
src/main/java/com/zy/asrs/controller/MobileController.java | 15
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 24
src/main/resources/mapper/OrderDetlMapper.xml | 2
src/main/java/com/zy/asrs/service/LocMastService.java | 10
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 394 ++++++++++++++++
src/main/java/com/zy/asrs/entity/param/GhjtApiParam.java | 20
26 files changed, 1,188 insertions(+), 180 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 9608121..0ce894b 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -2,8 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.annotations.AppAuth;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
@@ -20,9 +18,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletRequest;
import java.util.*;
-import java.util.List;
/**
* 绉诲姩绔帴鍙f帶鍒跺櫒
@@ -547,4 +543,15 @@
return R.ok("鍑哄簱鎴愬姛");
}
+ @PostMapping("/ckfh/auth")
+ @ManagerAuth(memo = "鍑哄簱澶嶆牳纭")
+ public synchronized R pakoutFhqr(@RequestBody GhjtApiParam param) {
+ // 鏍规嵁宸ヤ綔鍙风‘璁ゅ鏍�
+ if(Cools.isEmpty(param) || Cools.isEmpty(param.getWorkNo()) || Cools.isEmpty(param.getCheck())){
+ return R.parse(BaseRes.PARAM);
+ }
+ mobileService.pakoutFhqr(param.getWorkNo(), param.getCheck());
+ return R.ok("澶嶆牳纭鎴愬姛");
+ }
+
}
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 6897f42..752d5a2 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -2,11 +2,11 @@
import com.alibaba.fastjson.JSON;
import com.core.annotations.AppAuth;
-import com.core.common.*;
+import com.core.common.Cools;
+import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.service.OpenService;
-import com.zy.common.model.DetlDto;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -14,8 +14,6 @@
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
/**
* Created by vincent on 2022/4/8
@@ -149,6 +147,61 @@
}
}
+ @PostMapping("/scrk")
+ @AppAuth(memo = "GWMS璋冪敤鐢熸垚鍏ュ簱宸ヤ綔妗�")
+ public synchronized R gwmsGenerateInventory(@RequestHeader(required = false) String appkey,
+ @RequestBody GwmsGenerateInventoryDto param,
+ HttpServletRequest request) {
+ auth(appkey, param, request);
+ return R.ok(openService.gwmsGenerateInventory(param));
+ }
+
+ @PostMapping("/zxrk")
+ @AppAuth(memo = "GWCS鍒拌揪鍫嗗灈鏈哄叆搴撶珯鐐硅姹俍WCS鎵ц")
+ public synchronized R crnExecute(@RequestHeader(required = false) String appkey,
+ @RequestBody CrnExecuteParam param,
+ HttpServletRequest request) {
+ auth(appkey, param, request);
+ return R.ok(openService.crnExecute(param));
+ }
+
+ @PostMapping("/ckrw")
+ @AppAuth(memo = "ZWMS鎺ユ敹MES涓嬪彂鍑哄簱浠诲姟")
+ public synchronized R zwmsOutLocWork(@RequestHeader(required = false) String appkey,
+ @RequestBody ZwmsOutLocWorkDto param,
+ HttpServletRequest request) {
+ auth(appkey, param, request);
+ return R.ok(openService.zwmsOutLocWork(param));
+ }
+
+ @PostMapping("/ckjgsb")
+ @AppAuth(memo = "璐х墿鍒拌揪鍑哄簱鍙d互鍚庯紝涓婃姤鍑哄簱缁撴灉")
+ public synchronized R outLocResultReport(@RequestHeader(required = false) String appkey,
+ @RequestBody GhjtApiParam param,
+ HttpServletRequest request) {
+ auth(appkey, param, request);
+ return R.ok(openService.outLocResultReport(param));
+ }
+
+ @PostMapping("/cpjck")
+ @AppAuth(memo = "鎷嗙洏鏈哄嚭搴撴帴鍙�")
+ public synchronized R emptyOutLoc(@RequestHeader(required = false) String appkey,
+ @RequestBody GhjtApiParam param,
+ HttpServletRequest request) {
+ auth(appkey, param, request);
+ return R.ok(openService.emptyOutLoc(param));
+ }
+
+// @PostMapping("/cpjck")
+// @AppAuth(memo = "鐗╂枡淇℃伅鑾峰彇")
+// public synchronized R emptyOutLoc(@RequestHeader(required = false) String appkey,
+// @RequestBody GhjtApiParam param,
+// HttpServletRequest request) {
+// auth(appkey, param, request);
+// return R.ok(openService.emptyOutLoc(param));
+// }
+
+
/*public static void main(String[] args) {
// 1
System.out.println("======================================");
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 15419f1..eed2f39 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -1,14 +1,11 @@
package com.zy.asrs.controller;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
-import com.zy.asrs.service.impl.WorkServiceImpl;
-import com.zy.asrs.utils.OutboundAllocationUtil;
-import com.zy.common.model.DetlDto;
import com.zy.common.model.LocDto;
import com.zy.common.model.TaskDto;
import com.zy.common.web.BaseController;
@@ -65,46 +62,65 @@
}
List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
List<LocDto> locDtos = new ArrayList<>();
- for (OrderDetl orderDetl : orderDetls) {
- if (orderDetl.getAnfme()-orderDetl.getWorkQty()-orderDetl.getQty()==0.0){
- continue;
- }
- LocDto locDto = new LocDto(orderDetl.getManu(), orderDetl.getMatnr(), orderDetl.getMaktx(),orderDetl.getModel(),orderDetl.getSpecs(),
- orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getBarcode(), orderDetl.getOrderNo(),orderDetl.getAnfme());
- locDto.setOrderDetlId(orderDetl.getId());
- locDto.setTkType(orderDetl.getTkType());
- locDtos.add(locDto);
- }
-
-
-
-
-// Set<String> exist = new HashSet<>();
// for (OrderDetl orderDetl : orderDetls) {
-// double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
-// if (issued <= 0.0D) { continue; }
+// if (orderDetl.getAnfme()-orderDetl.getWorkQty()-orderDetl.getQty()==0.0){
+// continue;
+// }
+// LocDto locDto = new LocDto(orderDetl.getManu(), orderDetl.getMatnr(), orderDetl.getMaktx(),orderDetl.getModel(),orderDetl.getSpecs(),
+// orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getBarcode(), orderDetl.getOrderNo(),orderDetl.getAnfme());
+// locDto.setOrderDetlId(orderDetl.getId());
+// locDto.setTkType(orderDetl.getTkType());
+// locDtos.add(locDto);
+// }
+
+
+
+
+ Set<String> exist = new HashSet<>();
+
+ for (OrderDetl orderDetl : orderDetls) {
+ double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
+ if (issued <= 0.0D) { continue; }
// List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
-// for (LocDetl locDetl : locDetls) {
-// if (issued > 0) {
+ List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("batch",orderDetl.getBatch()).eq("model",orderDetl.getModel()));
+ for (LocDetl locDetl : locDetls) {
+ if (issued > 0) {
+ LocDto locDto = new LocDto(orderDetl.getManu(), orderDetl.getMatnr(), orderDetl.getMaktx(),orderDetl.getModel(),orderDetl.getSpecs(),
+ orderDetl.getBatch(),orderDetl.getBrand(),orderDetl.getBarcode(), orderDetl.getOrderNo(),orderDetl.getAnfme());
// LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
// issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
-// locDto.setStaNos(staNos);
-// locDtos.add(locDto);
-// exist.add(locDetl.getLocNo());
-// // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
-// issued = issued - locDetl.getAnfme();
-// } else {
-// break;
-// }
-// }
-// if (issued > 0) {
-// LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
-// locDto.setLack(Boolean.TRUE);
-// locDtos.add(locDto);
-// }
-// }
+ List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
+
+ locDto.setLocNo(locDetl.getLocNo());
+// wrkDetl.setMatnr(roll.getSpecs()); // 瑙勬牸
+// wrkDetl.setMaktx(roll.getSpecs()); //瑙勬牸
+ locDto.setBatch(locDetl.getBatch()); // 绠卞彿
+ locDto.setModel(locDetl.getModel()); // 鍗峰彿
+ locDto.setBrand(""); // 鏈ㄧ绫诲瀷
+ locDto.setOrigin(locDetl.getOrigin()); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ locDto.setWeight(locDetl.getWeight()); // 鍑�閲�
+ locDto.setVolume(locDetl.getVolume()); // 姣涢噸
+ locDto.setPrice(locDetl.getPrice());
+ locDto.setSpecs(locDetl.getSpecs());
+ locDto.setZpallet(locDetl.getZpallet());
+ locDto.setStaNos(staNos);
+ locDto.setOrderDetlId(orderDetl.getId());
+ locDtos.add(locDto);
+ exist.add(locDetl.getLocNo());
+ // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+ issued = issued - locDetl.getAnfme();
+ } else {
+ break;
+ }
+ }
+ if (issued > 0) {
+ LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+ locDto.setLack(Boolean.TRUE);
+ locDtos.add(locDto);
+ }
+ }
return R.ok().add(locDtos);
}
@@ -134,75 +150,75 @@
@PostMapping("/out/pakout/auth")
@ManagerAuth(memo = "璁㈠崟鍑哄簱")
public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
- StockOutParam param = new StockOutParam();
- ArrayList<StockOutParam.LocDetl> locDetls = new ArrayList<>();
- for (LocDto locDto:locDtos){
- StockOutParam.LocDetl locDetl = new StockOutParam.LocDetl();
- locDetl.setBrand(locDto.getBrand());
- locDetl.setLocNo(locDto.getLocNo());
- locDetl.setAnfme(locDto.getAnfme());
- locDetl.setMatnr(locDto.getMatnr());
- locDetl.setBatch(locDto.getBatch());
- locDetl.setModel(locDto.getModel());
- locDetl.setSpecs(locDto.getSpecs());
- locDetl.setZpallet(locDto.getZpallet());
-
- param.setOrderNo(locDto.getOrderNo());
-
- locDetls.add(locDetl);
- }
- param.setLocDetls(locDetls);
-
- List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param);
- for (StockOutParam stockOutParam : stockOutParams){
- workService.startupFullTakeStore(stockOutParam, getUserId());
- }
-
- for (LocDto locDto:locDtos){
- OrderDetl orderDetl = orderDetlService.selectById(locDto.getOrderDetlId());
- orderDetl.setWorkQty(locDto.getAnfme());
- orderDetlService.updateById(orderDetl);
- }
-
- Order order = orderService.selectByNo(param.getOrderNo());
- order.setSettle(2L);
- orderService.updateById(order);
-
-
-// if (Cools.isEmpty(locDtos)) {
-// return R.parse(BaseRes.PARAM);
+// StockOutParam param = new StockOutParam();
+// ArrayList<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+// for (LocDto locDto:locDtos){
+// StockOutParam.LocDetl locDetl = new StockOutParam.LocDetl();
+// locDetl.setBrand(locDto.getBrand());
+// locDetl.setLocNo(locDto.getLocNo());
+// locDetl.setAnfme(locDto.getAnfme());
+// locDetl.setMatnr(locDto.getMatnr());
+// locDetl.setBatch(locDto.getBatch());
+// locDetl.setModel(locDto.getModel());
+// locDetl.setSpecs(locDto.getSpecs());
+// locDetl.setZpallet(locDto.getZpallet());
+//
+// param.setOrderNo(locDto.getOrderNo());
+//
+// locDetls.add(locDetl);
// }
-// boolean lack = true;
-// for (LocDto locDto : locDtos) {
-// if (!locDto.isLack()) {
-// lack = false;
-// break;
-// }
-// }
-// if (lack) {
-// return R.error("搴撳瓨涓嶈冻");
+// param.setLocDetls(locDetls);
+//
+// List<StockOutParam> stockOutParams = OutboundAllocationUtil.OutboundClassification(param);
+// for (StockOutParam stockOutParam : stockOutParams){
+// workService.startupFullTakeStore(stockOutParam, getUserId());
// }
//
-// Thread.sleep(1000L);
+// for (LocDto locDto:locDtos){
+// OrderDetl orderDetl = orderDetlService.selectById(locDto.getOrderDetlId());
+// orderDetl.setWorkQty(locDto.getAnfme());
+// orderDetlService.updateById(orderDetl);
+// }
//
-// List<TaskDto> taskDtos = new ArrayList<>();
-// // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
-// for (LocDto locDto : locDtos) {
-// if (locDto.isLack()) { continue; }
-// TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
-// if (TaskDto.has(taskDtos, taskDto)) {
-// TaskDto dto = TaskDto.find(taskDtos, taskDto);
-// assert dto != null;
-// dto.getLocDtos().addAll(taskDto.getLocDtos());
-// } else {
-// taskDtos.add(taskDto);
-// }
-// }
-// // -----------------------------------------------------------------------------------------------
-// for (TaskDto taskDto : taskDtos) {
-// BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
-// workService.stockOut(staNo, taskDto, getUserId());
-// }
+// Order order = orderService.selectByNo(param.getOrderNo());
+// order.setSettle(2L);
+// orderService.updateById(order);
+
+
+ if (Cools.isEmpty(locDtos)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ boolean lack = true;
+ for (LocDto locDto : locDtos) {
+ if (!locDto.isLack()) {
+ lack = false;
+ break;
+ }
+ }
+ if (lack) {
+ return R.error("搴撳瓨涓嶈冻");
+ }
+
+ Thread.sleep(1000L);
+
+ List<TaskDto> taskDtos = new ArrayList<>();
+ // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔�
+ for (LocDto locDto : locDtos) {
+ if (locDto.isLack()) { continue; }
+ TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto);
+ if (TaskDto.has(taskDtos, taskDto)) {
+ TaskDto dto = TaskDto.find(taskDtos, taskDto);
+ assert dto != null;
+ dto.getLocDtos().addAll(taskDto.getLocDtos());
+ } else {
+ taskDtos.add(taskDto);
+ }
+ }
+ // -----------------------------------------------------------------------------------------------
+ for (TaskDto taskDto : taskDtos) {
+ BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+ workService.stockOut(staNo, taskDto, getUserId());
+ }
return R.ok();
}
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index e00a33a..b917411 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -378,21 +378,22 @@
}
public String getStaNo$(){
- BasDevpService service = SpringUtils.getBean(BasDevpService.class);
- BasDevp basDevp = service.selectById(this.staNo);
- if (!Cools.isEmpty(basDevp)){
- return String.valueOf(basDevp.getDevNo());
- }
- return null;
+// BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+// BasDevp basDevp = service.selectById(this.staNo);
+// if (!Cools.isEmpty(basDevp)){
+// return String.valueOf(basDevp.getDevNo());
+// }
+ return String.valueOf(this.staNo);
}
public String getSourceStaNo$(){
- BasDevpService service = SpringUtils.getBean(BasDevpService.class);
- BasDevp basDevp = service.selectById(this.sourceStaNo);
- if (!Cools.isEmpty(basDevp)){
- return String.valueOf(basDevp.getDevNo());
- }
- return null;
+
+// BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+// BasDevp basDevp = service.selectById(this.sourceStaNo);
+// if (!Cools.isEmpty(basDevp)){
+// return String.valueOf(basDevp.getDevNo());
+// }
+ return String.valueOf(this.sourceStaNo);
}
public String getSourceLocNo$(){
diff --git a/src/main/java/com/zy/asrs/entity/param/CrnExecuteParam.java b/src/main/java/com/zy/asrs/entity/param/CrnExecuteParam.java
new file mode 100644
index 0000000..05e6a0d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/CrnExecuteParam.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+/**
+ * @author pang.jiabao
+ * @description
+ * @createDate 2024/7/2 18:40
+ */
+@Data
+public class CrnExecuteParam {
+ private Integer workNo;
+ private Integer staNo;
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/GhjtApiParam.java b/src/main/java/com/zy/asrs/entity/param/GhjtApiParam.java
new file mode 100644
index 0000000..af7d2d6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GhjtApiParam.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+/**
+ * @author pang.jiabao
+ * @description 鍐犻缚姹熼摐鎺ュ彛浜や簰缁熶竴鍏ュ弬dto
+ * @createDate 2024/7/3 9:45
+ */
+@Data
+public class GhjtApiParam {
+
+ private Integer workNo; // 宸ヤ綔鍙�
+
+ private Integer outLocResult; // 鍑哄簱缁撴灉涓婃姤 1.瀹屾垚锛屽叾浠栧紓甯�
+
+ private Integer staNo;
+
+ private Integer check; // 澶嶆牳纭鏍囪瘑锛�1.纭锛屽叾浠栧紓甯�
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java b/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java
new file mode 100644
index 0000000..0f51b11
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java
@@ -0,0 +1,32 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+
+@Data
+public class GwmsGenerateInventoryDto {
+
+ private String barcode;// 鎵樼洏鐮�
+ private Integer palletizingNo;// 鐮佸灈浣嶇紪鍙�
+
+ private List<MatList> matList; // 鏈ㄧ闆嗗悎
+
+ @Data
+ public static class MatList{
+ private String boxPos; // 绠卞瓙浣嶇疆
+ private String packageGroupNo; // 鍖呰缁勫彿
+ private List<Rolls> rolls; // 鍗烽泦鍚�
+ }
+ @Data
+ public static class Rolls{
+ private String rollNo; // 鍗峰彿
+ private String boxNo; // 绠卞彿
+ private String specs; //瑙勬牸
+ private Double length; //闀垮害
+ private Integer splices; //鎺ュご 涓�
+ private Double netWeight; // 鍑�閲�
+ private Double grossWeight; // 姣涢噸
+ }
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/ZwmsOutLocWorkDto.java b/src/main/java/com/zy/asrs/entity/param/ZwmsOutLocWorkDto.java
new file mode 100644
index 0000000..659eb1f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/ZwmsOutLocWorkDto.java
@@ -0,0 +1,28 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鍑哄簱璁㈠崟
+ * @createDate 2024/7/2 19:17
+ */
+@Data
+public class ZwmsOutLocWorkDto {
+
+ private String orderNo; // 璁㈠崟鍙�
+
+ private String orderType; // 璁㈠崟绫诲瀷
+
+ private List<Rolls> matDetails;
+
+ @Data
+ public static class Rolls{
+ private String rollNo; // 鍗峰彿
+ private String boxNo; // 绠卞彿
+ private String specs; // 瑙勬牸
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
index 208fff4..2912a76 100644
--- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -12,6 +12,15 @@
@Mapper
@Repository
public interface LocMastMapper extends BaseMapper<LocMast> {
+ /**
+ * 鎼滅储鎸囧畾鍖哄煙鍙敤搴撲綅
+ */
+ List<LocMast> selectAreaEmpty(Short locType1);
+
+ /**
+ * 鏍规嵁搴撲綅鍙锋悳绱㈠簱浣�
+ */
+ LocMast selectByLoc(String locNo);
LocMast queryFreeLocMast(@Param("row") Integer row, @Param("locType1") Short locType1);
diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java
index 00b330b..6f5b7ca 100644
--- a/src/main/java/com/zy/asrs/service/LocMastService.java
+++ b/src/main/java/com/zy/asrs/service/LocMastService.java
@@ -7,6 +7,12 @@
import java.util.List;
public interface LocMastService extends IService<LocMast> {
+ LocMast selectByLoc(String locNo);
+
+ /**
+ * 鎼滅储鎸囧畾鍖哄煙鍙敤搴撲綅
+ */
+ List<LocMast> selectAreaEmpty(Short locType1);
/**
* 妫�绱㈠彲鐢ㄥ簱浣�
@@ -28,6 +34,10 @@
Boolean checkEmptyCount(LocMast locMast);
/**
+ * 鏌ヨ绌哄簱浣嶆暟閲�
+ */
+ Boolean checkEmptyCount(LocMast locMast, int quaOfBlank);
+ /**
* 褰撳墠搴撳瓨鏄庣粏鏄惁涓烘暣鎵�
*/
Boolean checkWhole(List<LocDetl> locDetls);
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 7621855..6174796 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -43,4 +43,9 @@
void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
Double curOutQty, Integer ioType, Long userId, Date now);
+
+ /**
+ * 鍑哄簱澶嶆牳纭
+ */
+ void pakoutFhqr(Integer workNo, Integer check);
}
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index c9e4899..937c482 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,5 +1,6 @@
package com.zy.asrs.service;
+import com.core.common.R;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.StockVo;
@@ -59,4 +60,29 @@
void cs2();
+ /**
+ * GWMS璇锋眰ZWMS鐢熸垚鍏ュ簱浠诲姟
+ * @return 鐩爣淇℃伅
+ */
+ R gwmsGenerateInventory(GwmsGenerateInventoryDto param);
+
+ /**
+ *GWMS鍒拌揪鐩爣绔欑偣璇锋眰ZWCS鎵ц鍏ュ簱
+ */
+ String crnExecute(CrnExecuteParam param);
+
+ /**
+ * ZWMS鎺ユ敹MES涓嬪彂鍑哄簱浠诲姟
+ */
+ String zwmsOutLocWork(ZwmsOutLocWorkDto param);
+
+ /**
+ * 璐х墿鍒拌揪鍑哄簱鍙d互鍚庯紝涓婃姤鍑哄簱缁撴灉
+ */
+ String outLocResultReport(GhjtApiParam param);
+
+ /**
+ * 鎷嗙洏鏈哄嚭搴撴帴鍙�(绌烘墭鐩樺嚭搴�)
+ */
+ String emptyOutLoc(GhjtApiParam param);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
index e6ce450..4f003ee 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -22,7 +22,14 @@
public LocMast queryFreeLocMast(Integer row, Short locType1) {
return this.baseMapper.queryFreeLocMast(row, locType1);
}
-
+ @Override
+ public List<LocMast> selectAreaEmpty(Short locType1) {
+ return this.baseMapper.selectAreaEmpty(locType1);
+ }
+ @Override
+ public LocMast selectByLoc(String locNo) {
+ return this.baseMapper.selectByLoc(locNo);
+ }
@Override
public List<String> queryGroupEmptyStock(String sourceLocNo) {
if (Cools.isEmpty(sourceLocNo)) {
@@ -44,6 +51,14 @@
}
@Override
+ public Boolean checkEmptyCount(LocMast locMast, int quaOfBlank) {
+ if (locMast == null) {
+ return false;
+ }
+ return this.baseMapper.selectEmptyLocCount(locMast.getLocType1(), locMast.getCrnNo()) > quaOfBlank;
+ }
+
+ @Override
public Boolean checkWhole(List<LocDetl> locDetls) {
return null;
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 22c5437..5880371 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -4,29 +4,26 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.baomidou.mybatisplus.plugins.Page;
-import com.core.common.*;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.mapper.ManLocDetlMapper;
import com.zy.asrs.service.*;
-import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.MatUtils;
-import com.zy.asrs.utils.PostMesDataUtils;
-import com.zy.common.CodeRes;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.MesCombParam;
import com.zy.common.model.StartupDto;
-import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -1167,6 +1164,27 @@
@Override
@Transactional
+ public void pakoutFhqr(Integer workNo, Integer check) {
+ // 鑾峰彇宸ヤ綔妗�
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo));
+ if (wrkMast == null) {
+ throw new CoolException("宸ヤ綔妗d笉瀛樺湪锛�" + workNo);
+ }
+
+ if (wrkMast.getWrkSts() != 20) {
+ throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佸紓甯革細" + workNo + ",鐘舵�侊細" + wrkMast.getWrkSts());
+ }
+
+ if (check == 1) {
+ // 澶嶆牳纭锛屾洿鏂扮姸鎬佷负15鍑哄簱瀹屾垚鏇存柊
+ wrkMast.setWrkSts(14L);
+ wrkMastService.updateById(wrkMast);
+ }
+
+ }
+
+ @Override
+ @Transactional
public List<Map<String, Object>> boxTypeComb() {
EntityWrapper<BasBoxType> wrapper = new EntityWrapper<>();
List<Map<String, Object>> result = new ArrayList<>();
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 181a918..f7a3c6b 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,7 +1,7 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
@@ -13,25 +13,21 @@
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
-import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.MatUtils;
-import com.zy.asrs.utils.PostMesDataUtils;
+import com.zy.common.constant.MesConstant;
import com.zy.common.model.DetlDto;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.StartupDto;
import com.zy.common.model.enums.WorkNoType;
import com.zy.common.service.CommonService;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.NodeUtils;
-import com.zy.common.web.WcsController;
-import com.zy.common.web.param.SearchLocParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.*;
/**
* Created by vincent on 2022/4/9
@@ -981,6 +977,388 @@
}
+ @Override
+ @Transactional
+ public R gwmsGenerateInventory(GwmsGenerateInventoryDto param) {
+
+ if (Cools.isEmpty(param)) {
+ throw new CoolException("璇锋眰鍙傛暟鏈夎锛�" + param);
+ }
+ int zpalletCount = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+ if (zpalletCount > 0) {
+ throw new CoolException("搴撳瓨鎵樼洏鐮佸凡瀛樺湪锛�" + param.getBarcode());
+ }
+
+ int barcodeCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", param.getBarcode()));
+ if (barcodeCount > 0) {
+ throw new CoolException("宸ヤ綔妗e凡瀛樺湪璇ユ墭鐩樼爜锛�" + param.getBarcode());
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short)1);
+
+ // 鏍规嵁婧愮珯鐐瑰鎵惧簱浣�
+// StartupDto dto = commonService.getLocNo(1, 1, param.getPalletizingNo(), null,null,null, locTypeDto);
+ StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto);
+
+ // 杩斿洖GWCS鐩爣淇℃伅
+ pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo());
+
+ int workNo = dto.getWorkNo();
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細璁惧涓婅蛋
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+ wrkMast.setIoPri(13D); // 浼樺厛绾�
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(param.getPalletizingNo());
+ wrkMast.setStaNo(dto.getStaNo());
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ List<GwmsGenerateInventoryDto.MatList> matList = param.getMatList();
+ for (GwmsGenerateInventoryDto.MatList obj :matList) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ obj.getRolls().forEach(roll -> {
+ Mat mat = matService.selectByMatnr(roll.getSpecs());
+ if (mat == null) {
+ mat = new Mat();
+ mat.setTagId(6L);
+ mat.setMatnr(roll.getSpecs());
+ mat.setMaktx(roll.getSpecs());
+ mat.setSpecs(roll.getSpecs());
+ mat.setStatus(1);
+ mat.setCreateTime(now);
+ mat.setUpdateTime(now);
+ if (!matService.insert(mat)) {
+ throw new CoolException("鐗╂枡瀵煎叆澶辫触锛�");
+ }
+ }
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setMatnr(roll.getSpecs()); // 瑙勬牸
+ wrkDetl.setMaktx(roll.getSpecs()); //瑙勬牸
+ wrkDetl.setBatch(roll.getBoxNo()); // 绠卞彿
+ wrkDetl.setModel(roll.getRollNo()); // 鍗峰彿
+ wrkDetl.setBrand(""); // 鏈ㄧ绫诲瀷
+ wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鍚�
+ wrkDetl.setOrigin(obj.getBoxPos()); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setWeight(roll.getNetWeight()); // 鍑�閲�
+ wrkDetl.setVolume(roll.getGrossWeight()); // 姣涢噸
+ wrkDetl.setPrice(roll.getLength());
+ wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
+ wrkDetl.setAnfme(1.0);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setModiTime(now);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+ }
+ });
+ }
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("O")){
+ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)){
+ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+ }
+ } else {
+ throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+ }
+ return null;
+ }
+
+ @Override
+ @Transactional
+ public String crnExecute(CrnExecuteParam param) {
+ if (Cools.isEmpty(param.getStaNo(),param.getWorkNo())){
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛�" + param);
+ }
+
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getWorkNo()));
+ if (wrkMast == null) {
+ throw new CoolException("涓嶅瓨鍦ㄨ宸ヤ綔鍙凤細" + param.getWorkNo());
+ }
+
+ wrkMast.setWrkSts(2L);
+ wrkMastService.updateById(wrkMast);
+
+ return "璇锋眰鎴愬姛";
+ }
+
+ @Override
+ @Transactional
+ public String zwmsOutLocWork(ZwmsOutLocWorkDto param) {
+
+ Order order = orderService.selectByNo(param.getOrderNo());
+ if (!Cools.isEmpty(order)) {
+ throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+ }
+
+ DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
+ Date now = new Date();
+ // 鍗曟嵁涓绘。
+ order = new Order(
+ String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ docType.getDocId(), // 鍗曟嵁绫诲瀷
+ null, // 椤圭洰缂栧彿
+ null, //
+ null, // 璋冩嫧椤圭洰缂栧彿
+ null, // 鍒濆绁ㄦ嵁鍙�
+ null, // 绁ㄦ嵁鍙�
+ null, // 瀹㈡埛缂栧彿
+ null, // 瀹㈡埛
+ null, // 鑱旂郴鏂瑰紡
+ null, // 鎿嶄綔浜哄憳
+ null, // 鍚堣閲戦
+ null, // 浼樻儬鐜�
+ null, // 浼樻儬閲戦
+ null, // 閿�鍞垨閲囪喘璐圭敤鍚堣
+ null, // 瀹炰粯閲戦
+ null, // 浠樻绫诲瀷
+ null, // 涓氬姟鍛�
+ null, // 缁撶畻澶╂暟
+ null, // 閭垂鏀粯绫诲瀷
+ null, // 閭垂
+ null, // 浠樻鏃堕棿
+ null, // 鍙戣揣鏃堕棿
+ null, // 鐗╂祦鍚嶇О
+ null, // 鐗╂祦鍗曞彿
+ 1L, // 璁㈠崟鐘舵��
+ 1, // 鐘舵��
+ 9527L, // 娣诲姞浜哄憳
+ now, // 娣诲姞鏃堕棿
+ 9527L, // 淇敼浜哄憳
+ now, // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ if (!orderService.insert(order)) {
+ throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ // 鍗曟嵁鏄庣粏妗�
+ List<DetlDto> list = new ArrayList<>();
+ List<ZwmsOutLocWorkDto.Rolls> orderDetails = param.getMatDetails();
+ for (ZwmsOutLocWorkDto.Rolls detail : orderDetails) {
+ DetlDto dto = new DetlDto(detail.getRollNo(), detail.getBoxNo(), 1.0);
+ dto.setOrderNo(detail.getSpecs());
+ if (DetlDto.has(list, dto)) {
+ DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
+ assert detlDto != null;
+ detlDto.setAnfme(detlDto.getAnfme() + 1);
+ } else {
+ list.add(dto);
+ }
+ }
+ for (DetlDto detlDto : list) {
+// Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ OrderDetl orderDetl = new OrderDetl();
+// if (Cools.isEmpty(mat)) {
+// throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+// } else {
+// orderDetl.sync(mat);
+// }
+
+ orderDetl.setBatch(detlDto.getBatch() == null ? "" : detlDto.getBatch());
+ orderDetl.setModel(detlDto.getMatnr());
+ orderDetl.setMatnr(detlDto.getOrderNo());
+ orderDetl.setMaktx(detlDto.getOrderNo());
+ orderDetl.setAnfme(detlDto.getAnfme());
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setCreateBy(9527L);
+ orderDetl.setCreateTime(now);
+ orderDetl.setUpdateBy(9527L);
+ orderDetl.setUpdateTime(now);
+ orderDetl.setStatus(1);
+ orderDetl.setQty(0.0D);
+ if (!orderDetlService.insert(orderDetl)) {
+ throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+
+ return null;
+ }
+
+ @Override
+ @Transactional
+ public String outLocResultReport(GhjtApiParam param) {
+
+ if (Cools.isEmpty(param.getOutLocResult(),param.getWorkNo())) {
+ throw new CoolException("鍏ュ弬涓嶈兘涓虹┖锛�" + param);
+ }
+
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", param.getWorkNo()));
+ if (wrkMast == null) {
+ throw new CoolException("璇ュ伐浣滄。涓嶅瓨鍦紝浠诲姟鍙凤細" + param.getWorkNo());
+ } else if(wrkMast.getWrkSts() != 2) {
+ throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉绗﹀悎锛屼换鍔″彿锛�" + param.getWorkNo() + "锛屽伐浣滄。鐘舵�侊細" + wrkMast.getWrkSts());
+ }
+
+ // 鍒拌揪鍑哄簱鍙g‘璁や负1锛屾洿鏂板伐浣滄。鐘舵�佷负57.鍑哄簱瀹屾垚
+ if (param.getOutLocResult() == 1) {
+ wrkMast.setWrkSts(20L);
+ // 绌烘墭鐩樺埌浣嶇洿鎺ユ洿鏂板伐浣滄。鐘舵�佷负14.宸插嚭搴撴湭纭锛岀┖鎵樻棤闇�澶嶆牳纭
+ if (wrkMast.getIoType() == 110) {
+ wrkMast.setWrkSts(14L);
+ }
+ wrkMastService.updateById(wrkMast);
+ }
+
+ return "鍑哄簱缁撴灉涓婃姤鎴愬姛";
+ }
+
+ @Override
+ @Transactional
+ public String emptyOutLoc(GhjtApiParam param) {
+// 3102/3009/3008/3006/3003/3002鈫�3047/3112
+ // 瀵绘壘绌烘墭鐩樺簱浣嶏紝鍏堟壘娴呭簱浣�
+ List<LocMast> locMasts;
+ locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","D")
+ .orderAsc(Arrays.asList("row1","lev1","bay1")).in("row1",3,4,6,7,10,11,14,15,18,19,22,23));
+ if (locMasts.isEmpty()) {
+ locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts","D")
+ .orderAsc(Arrays.asList("row1","lev1","bay1")).in("row1",1,4,5,8,9,12,13,16,17,20,21,24));
+ }
+
+ if (locMasts.isEmpty()) {
+ throw new CoolException("娌℃湁鎵惧埌绌烘墭鐩橈紝绔欑偣锛�" + param.getStaNo());
+ }
+
+ // 鍙栫涓�涓┖搴撲綅
+ LocMast locMast = locMasts.get(0);
+
+ // 鑾峰彇宸ヤ綔璺緞
+ StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("type_no", 110).eq("stn_no",
+ param.getStaNo()).eq("crn_no", locMast.getCrnNo()));
+
+ if (staDesc == null) {
+ throw new CoolException("璺緞涓嶅瓨鍦�");
+ }
+
+ //2.鐢熸垚绌烘墭鐩樺嚭搴撳伐浣滄。
+ Date now = new Date();
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(commonService.getWorkNo(WorkNoType.PAKOUT.type));
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
+ wrkMast.setIoPri(10D);
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setAppeUser(9999L);
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(9999L);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+
+ // 3.鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
+ if (locMast.getLocSts().equals("D")) {
+ locMast.setLocSts("R");
+ locMast.setModiUser(9999L);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
+
+ return "鍑哄簱鎴愬姛";
+ }
+
+ @Autowired
+ private ApiLogService apiLogService;
+
+ private void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
+ boolean success = false;
+ // 鑾峰彇璇锋眰澶�
+ Map<String, Object> headers = getHeaders();
+
+ // 鏋勯�犺姹備綋
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("workNo", workNo);
+ jsonObject.put("staNo", staNo);
+ jsonObject.put("sourceStaNo", palletizingNo);
+ String body = jsonObject.toJSONString();
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.URL)
+ .setPath(MesConstant.PAKIN_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ success = true;
+// // 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
+// if (!orderService.updateSettle(order.getId(), 6L, null)) {
+// throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+// }
+ } else {
+ log.error("zmws鎺ㄩ�佸叆搴撶爜澶寸珯鐐规帴鍙eけ璐ワ紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
+ throw new CoolException("涓婃姤mes绯荤粺澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("鍏ュ簱璇锋眰鎺ュ彛澶辫触锛歿}", e.getMessage());
+// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+// return FAIL.setMsg(e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍏ュ簱",
+ MesConstant.URL + MesConstant.PAKIN_URL,
+ null,
+ "127.0.0.1",
+ jsonObject.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+ }
+
+ Map<String, Object> getHeaders(){
+ Map<String,Object> headers = new HashMap<>();
+ headers.put("digi-type","sync ");
+ headers.put("digi-protocol","raw");
+ headers.put("digi-datakey"," XCommon.ImportData");
+
+ return headers;
+ }
+
+
private void descSta(Integer staNo,Integer crnNo){
// int[] typeNos =new int[]{1,10,53,101,103,110};
int[] typeNos =new int[]{10,110};
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index fe9aaf9..abea98b 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -13,7 +13,6 @@
import com.zy.asrs.entity.param.LocDetlAdjustParam;
import com.zy.asrs.entity.param.StockOutParam;
import com.zy.asrs.service.*;
-import com.zy.asrs.utils.OutboundAllocationUtil;
import com.zy.asrs.utils.Utils;
import com.zy.common.model.*;
import com.zy.common.model.enums.IoWorkType;
@@ -28,7 +27,6 @@
import java.util.*;
import java.util.concurrent.TimeUnit;
-import java.util.stream.Collectors;
/**
* Created by vincent on 2020/6/11
@@ -403,7 +401,48 @@
LocMast locMast = locMastService.selectById(taskDto.getLocNo());
// 鑾峰彇璺緞
int ioType = taskDto.isAll() ? 101 : 103;
- StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+// StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+ // 鏍规嵁搴撲綅鎺掑彿+鍑哄簱绔欑偣锛岃幏鍙栧嚭搴撴簮绔欑偣
+ int row = Integer.parseInt(locMast.getLocNo().substring(0, 2));
+ int souresStaNo = 0;
+ if (taskDto.getStaNo() < 3000) { // 浜屾ゼ
+ switch (row) {
+ case 1: case 2: case 3:
+ case 4: souresStaNo = 2062; break;
+ case 5: case 6: case 7:
+ case 8: souresStaNo = 2065; break;
+ case 9: case 10: case 11:
+ case 12: souresStaNo = 2068; break;
+ case 13: case 14: case 15:
+ case 16: souresStaNo = 2070; break;
+ case 17: case 18: case 19:
+ case 20: souresStaNo = 2073; break;
+ case 21: case 22: case 23:
+ case 24: souresStaNo = 2076; break;
+ default:
+ }
+ } else { // 涓�妤�
+ switch (row) {
+ case 1: case 2: case 3:
+ case 4: souresStaNo = 3002; break;
+ case 5: case 6: case 7:
+ case 8: souresStaNo = 3003; break;
+ case 9: case 10: case 11:
+ case 12: souresStaNo = 3006; break;
+ case 13: case 14: case 15:
+ case 16: souresStaNo = 3008; break;
+ case 17: case 18: case 19:
+ case 20: souresStaNo = 3009; break;
+ case 21: case 22: case 23:
+ case 24: souresStaNo = 3012; break;
+ default:
+ }
+ }
+
+ if (souresStaNo == 0) {
+ throw new CoolException("婧愮珯鐐硅浆鎹㈠紓甯革細" + row);
+ }
+
// 鐢熸垚宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
// 鐢熸垚宸ヤ綔妗�
@@ -414,8 +453,8 @@
wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
wrkMast.setIoPri(13D); // 浼樺厛绾э細13
wrkMast.setCrnNo(locMast.getCrnNo());
- wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
- wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceStaNo(souresStaNo); // 婧愮珯
+ wrkMast.setStaNo(taskDto.getStaNo()); // 鐩爣绔�
wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
wrkMast.setPicking("N"); // 鎷f枡
@@ -438,9 +477,17 @@
orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
}
WrkDetl wrkDetl = new WrkDetl();
- wrkDetl.sync(orderDetl);
+// wrkDetl.sync(orderDetl);
wrkDetl.setZpallet(wrkMast.getBarcode());
wrkDetl.setIoTime(now);
+ wrkDetl.setMatnr(locDto.getMatnr());
+ wrkDetl.setMaktx(locDto.getMaktx());
+ wrkDetl.setWeight(locDto.getWeight()); // 鍑�閲�
+ wrkDetl.setVolume(locDto.getVolume()); // 姣涢噸
+ wrkDetl.setOrigin(locDto.getOrigin()); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setPrice(locDto.getPrice());
+ wrkDetl.setSpecs(locDto.getSpecs());
+ wrkDetl.setModel(locDto.getModel());
wrkDetl.setWrkNo(workNo);
wrkDetl.setBatch(locDto.getBatch());
wrkDetl.setOrderNo(locDto.getOrderNo());
diff --git a/src/main/java/com/zy/asrs/task/GhjtScheduler.java b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
new file mode 100644
index 0000000..117f4f2
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/GhjtScheduler.java
@@ -0,0 +1,60 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.OrderMapper;
+import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.task.handler.GhjtHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @author pang.jiabao
+ * @description 鍐犻缚姹熼摐鐩稿叧瀹氭椂浠诲姟
+ * @createDate 2024/7/3 9:07
+ */
+@Slf4j
+@Component
+public class GhjtScheduler {
+
+ @Resource
+ private GhjtHandler ghjtHandler;
+
+ @Resource
+ private WrkMastMapper wrkMastMapper;
+
+ @Resource
+ private OrderMapper orderMapper;
+
+ // 涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)
+// @Scheduled(cron = "0/2 * * * * ? ")
+ public void ckrwPushGwcs() {
+ // 鏌ヨ鐘舵�佷负13鐨勫伐浣滄。
+ List<WrkMast> wrkMasts = wrkMastMapper.selectList(new EntityWrapper<WrkMast>().eq("io_type", 101).eq("wrk_sts", 13));
+ for (WrkMast wrkMast : wrkMasts) {
+ try {
+ ghjtHandler.startCkrwPushGwcs(wrkMast);
+ } catch (Exception e) {
+ log.error("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)澶辫触锛屽紓甯镐俊鎭細" + e);
+ }
+ }
+ }
+
+ // 鍑哄簱璁㈠崟瀹屾垚鍒欎笂鎶ES
+// @Scheduled(cron = "0/4 * * * * ? ")
+ public void OutBoundCompleteReport() {
+ // 鏌ヨ璁㈠崟鐘舵�佷负4.宸插畬鎴�
+ List<Order> orders = orderMapper.selectComplete();
+ for (Order order : orders) {
+ try {
+ ghjtHandler.OutBoundCompleteReport(order);
+ } catch (Exception e) {
+ log.error("鍑哄簱璁㈠崟瀹屾垚鍒欎笂鎶ES澶辫触锛屽紓甯镐俊鎭細" + e);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index f61788a..1fafebb 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -40,11 +40,11 @@
}
for (WrkMast wrkMast : wrkMasts) {
try{
- if (wrkMast.getIoType().equals(101)){
- if (Cools.isEmpty(wrkMast.getSheetNo()) || !wrkMast.getSheetNo().equals("3")){
- continue;
- }
- }
+// if (wrkMast.getIoType().equals(101)){
+// if (Cools.isEmpty(wrkMast.getSheetNo()) || !wrkMast.getSheetNo().equals("3")){
+// continue;
+// }
+// }
ReturnT<String> returnT = workMastHandler.start(wrkMast);
if (!returnT.isSuccess()) {
wrkMast.setUpdMk("X");
diff --git a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
new file mode 100644
index 0000000..4fff96c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -0,0 +1,139 @@
+package com.zy.asrs.task.handler;
+
+import com.alibaba.fastjson.JSONObject;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Order;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.common.constant.MesConstant;
+import com.zy.common.utils.HttpHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author pang.jiabao
+ * @description 鍐犻缚姹熼摐瀹氭椂浠诲姟瀹炵幇
+ * @createDate 2024/7/3 9:09
+ */
+@Slf4j
+@Service
+public class GhjtHandler {
+
+ @Autowired
+ private ApiLogService apiLogService;
+
+ @Resource
+ private WrkMastMapper wrkMastMapper;
+
+ @Transactional
+ public void startCkrwPushGwcs(WrkMast wrkMast) {
+
+ // 鑾峰彇璇锋眰澶�
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("digi-type", "sync ");
+ headers.put("digi-protocol", "raw");
+ headers.put("digi-datakey", " XCommon.ImportData");
+
+ // 鏋勯�犺姹備綋
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("workNo", wrkMast.getWrkNo());
+ jsonObject.put("staNo", wrkMast.getStaNo());
+ jsonObject.put("sourceStaNo", wrkMast.getSourceStaNo());
+ String body = jsonObject.toJSONString();
+
+ boolean success = false;
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.URL)
+ .setPath(MesConstant.PAKIN_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ wrkMast.setWrkSts(2L); // 鏇存柊涓鸿澶囦笂璧�
+ wrkMastMapper.updateById(wrkMast);
+ success = true;
+ } else {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
+ throw new CoolException("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)寮傚父锛屽伐浣滃彿锛歿}锛寋}", wrkMast.getWrkNo(), e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "浠庡嚭搴撶爜澶村埌鍑哄簱鍙�",
+ MesConstant.URL + MesConstant.PAKIN_URL,
+ null,
+ "127.0.0.1",
+ jsonObject.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鎺ュ彛鏃ュ織淇濆瓨寮傚父", e);
+ }
+ }
+ }
+
+ @Transactional
+ public void OutBoundCompleteReport(Order order) {
+
+ // 鑾峰彇璇锋眰澶�
+ Map<String, Object> headers = new HashMap<>();
+ headers.put("digi-type", "sync ");
+ headers.put("digi-protocol", "raw");
+
+ // 鏋勯�犺姹備綋
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("orderNo", order.getOrderNo());
+ jsonObject.put("complete", 1); // 璁㈠崟瀹屾垚涓�1锛屽叾浠�...
+ String body = jsonObject.toJSONString();
+
+ boolean success = false;
+ String response = "";
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(MesConstant.URL)
+ .setPath(MesConstant.PAKIN_URL)
+ .setHeaders(headers)
+ .setJson(body)
+ .build()
+ .doPost();
+ if (!Cools.isEmpty(response)) {
+ success = true;
+ } else {
+ log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
+ throw new CoolException("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)澶辫触");
+ }
+ } catch (Exception e) {
+ log.error("鍑哄簱璁㈠崟瀹屾垚涓婃姤MES寮傚父锛屽伐浣滃彿锛歿}锛寋}", order.getOrderNo(), e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍑哄簱璁㈠崟瀹屾垚涓婃姤MES",
+ MesConstant.URL + MesConstant.PAKIN_URL,
+ null,
+ "127.0.0.1",
+ jsonObject.toJSONString(),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鎺ュ彛鏃ュ織淇濆瓨寮傚父", e);
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index 3eabe70..4fa2fce 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -62,18 +62,18 @@
// 鍏ㄦ澘鍏ュ簱
if (wrkMast.getIoType() == 1) {
// 鍏ュ簱閫氱煡鍗�
- if (!Cools.isEmpty(wrkMast.getBarcode())) {
- // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
- if (!waitPakinLogService.save(wrkMast.getBarcode())) {
-// exceptionHandle("淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。[workNo={0}]澶辫触", wrkMast.getWrkNo());
- log.error("淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。[workNo={"+wrkMast.getWrkNo()+"}]澶辫触");
- }
- // 鍒犻櫎鍏ュ簱閫氱煡妗�
- if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
-// exceptionHandle("鍒犻櫎鍏ュ簱閫氱煡妗workNo={0}]澶辫触", wrkMast.getWrkNo());
- log.error("鍒犻櫎鍏ュ簱閫氱煡妗workNo={"+wrkMast.getWrkNo()+"}]澶辫触");
- }
- }
+// if (!Cools.isEmpty(wrkMast.getBarcode())) {
+// // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
+// if (!waitPakinLogService.save(wrkMast.getBarcode())) {
+//// exceptionHandle("淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。[workNo={0}]澶辫触", wrkMast.getWrkNo());
+// log.error("淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。[workNo={"+wrkMast.getWrkNo()+"}]澶辫触");
+// }
+// // 鍒犻櫎鍏ュ簱閫氱煡妗�
+// if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()))) {
+//// exceptionHandle("鍒犻櫎鍏ュ簱閫氱煡妗workNo={0}]澶辫触", wrkMast.getWrkNo());
+// log.error("鍒犻櫎鍏ュ簱閫氱煡妗workNo={"+wrkMast.getWrkNo()+"}]澶辫触");
+// }
+// }
// // 鎵嬪姩鍏ュ簱鐢熸垚鍗曟嵁 銆� 涓婃姤涓夋柟骞冲彴 銆�
// if (!Cools.isEmpty(wrkDetls)) {
// if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) {
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 386cd70..4ca6f44 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -355,13 +355,20 @@
}
for (WrkDetl wrkDetl : wrkDetls101) {
// 鏇存柊璁㈠崟瀹屾垚鏁伴噺
- OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
- if (orderDetl==null){
- orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
- }
+// OrderDetl orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch());
+// if (orderDetl==null){
+// orderDetl = orderDetlService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null);
+// }
+ // 绠卞彿+鍗峰彿
+ OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("batch",wrkDetl.getBatch())
+ .eq("model",wrkDetl.getModel()));
+
try {
if(!Cools.isEmpty(orderDetl)){
- if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(),
+ // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
+// orderDetlService.update(null,new EntityWrapper<OrderDetl>().eq("order_no",orderDetl.getOrderNo())
+// .eq("batch",orderDetl.getBatch()).eq("model", orderDetl.getModel()));
+ if(!orderDetlService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), orderDetl.getModel(),
orderDetl.getBatch(),wrkDetl.getAnfme())){
// exceptionHandle("鍏ㄦ澘鍑哄簱 ===>> 鏇存柊璁㈠崟瀹屾垚鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]",
// wrkMast.getWrkNo(), wrkMast.getLocNo());
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 1f40a61..2243f79 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -4,11 +4,12 @@
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocMast;
-import com.zy.common.model.LocDetlDto;
import com.zy.common.properties.SlaveProperties;
import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
/**
@@ -38,6 +39,34 @@
return msgBuilder.toString();
}
}
+ public static final List<Integer> FIRST_GROUP_ROW_LIST = new ArrayList<Integer>() {{
+ add(1);add(2);
+ }};
+ public static final List<Integer> SECOND_GROUP_ROW_LIST = new ArrayList<Integer>() {{
+ add(3);add(4);
+ }};
+ public static List<String> getGroupLocNo(String locNo, Boolean pakIn) {
+ int row = getRow(locNo);
+ List<String> result = new ArrayList<>();
+ if (FIRST_GROUP_ROW_LIST.contains(row)) {
+ for (Integer groupRow : FIRST_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(groupRow), 2) + locNo.substring(2));
+ }
+ } else if (SECOND_GROUP_ROW_LIST.contains(row)) {
+ List<Integer> clone = Arrays.asList(new Integer[SECOND_GROUP_ROW_LIST.size()]);
+ Collections.copy(clone, SECOND_GROUP_ROW_LIST);
+ Collections.reverse(clone);
+ for (Integer integer : clone) {
+ result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
+ }
+ }
+
+ if (!pakIn) {
+ //鍑哄簱锛屽弽杞暟鎹�
+ Collections.reverse(result);
+ }
+ return result;
+ }
/**
* 鍒ゆ柇鏄惁涓烘繁搴撲綅
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index db8c334..67550c8 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -3,16 +3,13 @@
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
-import com.core.common.Arith;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.result.KeyValueVo;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocTypeDto;
-import com.zy.common.model.Shelves;
import com.zy.common.model.StartupDto;
import com.zy.common.properties.SlaveProperties;
import lombok.extern.slf4j.Slf4j;
@@ -20,10 +17,6 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -123,10 +116,103 @@
}
/**
+ * 鍙屾繁鎵惧簱浣�
+ */
+ @Transactional
+ public StartupDto getLocNo(Integer staDescId, Integer sourceStaNo,LocTypeDto locTypeDto) {
+
+ // 鐩爣搴撲綅
+ LocMast locMast;
+
+// // 鎼滅储绌烘墭
+// locMast = getLocNoStep4(staDescId, sourceStaNo);
+// if (locMast != null) {
+// //鎵惧埌搴撲綅锛岃繑鍥瀌to
+// return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+// }
+
+ //鎼滅储鏁翠釜绌哄簱浣嶇粍
+ locMast = getLocNoStepSingle(locTypeDto);
+ if (locMast != null) {
+ //鎵惧埌搴撲綅锛岃繑鍥瀌to
+ return getLocNoStep6(staDescId, sourceStaNo, locMast);//杩斿洖dto
+ }
+
+ //鎵句笉鍒板簱浣嶏紝鎶涘嚭寮傚父
+ throw new CoolException("娌℃湁绌哄簱浣�");
+ }
+ // 鎼滅储鍗曞搧(鏁翠釜搴撲綅缁�)
+ private LocMast getLocNoStepSingle(LocTypeDto locTypeDto) {
+ LocMast locMast = null;
+ //鍗曞搧
+ List<LocMast> locMasts = locMastService.selectAreaEmpty(locTypeDto.getLocType1());//鎼滅储璐х墿
+
+ for (LocMast mast : locMasts) {
+ List<String> groupLoc = Utils.getGroupLocNo(mast.getLocNo(), true);
+// if (!locMastService.checkAllLocEmpty(groupLoc)) {
+// continue;
+// }
+
+ LocMast tmp = null;
+ for (String loc : groupLoc) {
+ LocMast locMast1 = locMastService.selectByLoc(loc);
+ if (locMast1 == null) {
+ continue;
+ }
+
+ if (!locMast1.getLocSts().equals("O")) {
+ continue;
+ }
+
+ tmp = locMast1;
+ break;
+ }
+
+ //棰勭暀绌哄簱浣�
+ if (tmp != null && locMastService.checkEmptyCount(mast, 10)) {
+ locMast = tmp;
+ break;
+ }
+ }
+
+ return locMast;
+ }
+
+ //杩斿洖dto
+ private StartupDto getLocNoStep6(Integer staDescId, Integer sourceStaNo, LocMast locMast) {
+ StartupDto startupDto = new StartupDto();
+ // 鑾峰彇鐩爣绔�
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no",locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ log.error("鍏ュ簱璺緞涓嶅瓨鍦�, staDescId={}, sourceStaNo={}", staDescId, sourceStaNo);
+ throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+ }
+
+ // 妫�娴嬬洰鏍囩珯
+ BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+ if (!staNo.getAutoing().equals("Y")) {
+ throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�");
+ }
+
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
+ // 杩斿洖dto
+ startupDto.setWorkNo(workNo);
+ startupDto.setSourceStaNo(sourceStaNo);
+ startupDto.setStaNo(staNo.getDevNo());
+ startupDto.setLocNo(locMast.getLocNo());
+ startupDto.setCrnNo(locMast.getCrnNo());
+ return startupDto;
+ }
+ /**
* 妫�绱㈠簱浣嶅彿
*
* @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
- * @param staDescId 璺緞ID
+ * @param staDescId 鍏ュ簱绫诲瀷
* @param sourceStaNo 婧愮珯
* @param matnr 鐗╂枡鍙烽泦鍚�
* @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml
index 2244412..2b6b9f0 100644
--- a/src/main/resources/mapper/LocMastMapper.xml
+++ b/src/main/resources/mapper/LocMastMapper.xml
@@ -36,7 +36,12 @@
<result column="ctn_no" property="ctnNo" />
</resultMap>
-
+ <select id="selectAreaEmpty" resultMap="BaseResultMap">
+ select * from asr_loc_mast
+ where loc_sts in ('O')
+ and loc_type1 = #{locType1}
+ ORDER BY lev1,bay1,row1
+ </select>
<select id="queryFreeLocMast" resultMap="BaseResultMap">
select top 1 *
from asr_loc_mast
@@ -47,7 +52,10 @@
</if>
order by loc_sts desc ,lev1 asc,bay1 asc
</select>
-
+ <select id="selectByLoc" resultMap="BaseResultMap">
+ select * from asr_loc_mast
+ where loc_no = #{locNo}
+ </select>
<select id="queryShallowLocFMast" resultMap="BaseResultMap">
select * from asr_loc_mast
where 1=1
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 3b102b7..a37ed6f 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -175,7 +175,7 @@
set qty = qty + #{qty}
where 1=1
and order_no = #{orderNo}
- and matnr = #{matnr}
+ and model = #{matnr}
<choose>
<when test="batch != null and batch != ''">
and batch = #{batch}
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index 1ec550c..0efe870 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -168,7 +168,7 @@
{field: 'anfme', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
{field: 'count', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
{field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
- // {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
+ {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
// {type: 'checkbox', merge: ['locNo']},
]],
done: function (res) {
--
Gitblit v1.9.1