From ed8bd2cd2634798298e90cf075a67173b154f0fa Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期一, 18 八月 2025 14:19:05 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/task/handler/GhjtHandler.java | 535 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 481 insertions(+), 54 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
index 278e8c1..102a14e 100644
--- a/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/GhjtHandler.java
@@ -1,23 +1,31 @@
package com.zy.asrs.task.handler;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
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.OrderMapper;
-import com.zy.asrs.mapper.WrkMastMapper;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.mapper.*;
import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.WorkService;
+import com.zy.asrs.service.WrkDetlService;
+import com.zy.asrs.utils.Utils;
import com.zy.common.constant.MesConstant;
+import com.zy.common.model.StartupDto;
+import com.zy.common.properties.SlaveProperties;
+import com.zy.common.service.CommonService;
import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.Config;
+import com.zy.system.mapper.ConfigMapper;
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;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
/**
* @author pang.jiabao
@@ -26,6 +34,7 @@
*/
@Slf4j
@Service
+@Transactional
public class GhjtHandler {
@Resource
@@ -37,32 +46,78 @@
@Resource
private WrkMastMapper wrkMastMapper;
- @Transactional
+ @Resource
+ private WrkDetlService wrkDetlService;
+
+ @Resource
+ private OrderDetlMapper orderDetlMapper;
+
+ @Resource
+ private LocDetlMapper locDetlMapper;
+
+ @Resource
+ private LocMastMapper locMastMapper;
+
+ @Resource
+ private WorkService workService;
+
+ @Resource
+ private ConfigMapper configMapper;
+
+ @Autowired
+ private SlaveProperties slaveProperties;
+
+ @Resource
+ private CommonService commonService;
+
+ // 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐�
+ private static final int[] oneFloorOutSite = new int[]{0,3002,3003,3006,3008,3009,3012};
+
+ // 鍫嗗灈鏈哄搴斾竴妤煎叆搴撶珯鐐�
+ private static final int[] oneFloorInSite = new int[]{0,3001,3004,3005,3007,3010,3011};
+
public void startCkrwPushGwcs(WrkMast wrkMast) {
// 鑾峰彇璇锋眰澶�
Map<String, Object> headers = new HashMap<>();
headers.put("Content-Type", "application/json;charset=UTF-8");
+ // 涓嬪彂缁檊wcs瑕佽蛋鐨勮矾寰勬爣璇�
+ int descFlag = getDescToGwcs(wrkMast);
+
// 鏋勯�犺姹備綋
JSONObject jsonObject = new JSONObject();
jsonObject.put("workNo", wrkMast.getWrkNo());
- jsonObject.put("staNo", wrkMast.getStaNo());
- jsonObject.put("sourceStaNo", wrkMast.getSourceStaNo());
+ jsonObject.put("staNo", wrkMast.getIoType() == 3 ? 3013 :wrkMast.getStaNo());
+ jsonObject.put("barcode", wrkMast.getBarcode());
+ jsonObject.put("sourceStaNo", wrkMast.getIoType() == 3 ? wrkMast.getStaNo() : wrkMast.getSourceStaNo());
+ jsonObject.put("descFlag", descFlag); // 101鍑哄簱鏃剁敤锛�0鍙湁涓�鏉¤矾寰勶紝1鐞嗚揣璐存爣璺緞锛�2璐存爣鎵撳甫璺緞
String body = jsonObject.toJSONString();
boolean success = false;
String response = "";
try {
response = new HttpHandler.Builder()
- .setUri(MesConstant.URL)
- .setPath(MesConstant.PAKIN_URL)
+ .setUri(MesConstant.GWCS_IP_PORT)
+ .setPath(MesConstant.GWCS_DCKK_URL)
.setHeaders(headers)
.setJson(body)
+ .setTimeout(30, TimeUnit.SECONDS) // 璁剧疆杩炴帴 + 璇诲彇瓒呮椂涓�30绉�
.build()
.doPost();
if (!Cools.isEmpty(response)) {
wrkMast.setWrkSts(2L); // 鏇存柊涓鸿澶囦笂璧�
+ if (wrkMast.getIoType() == 110) { // 绌烘墭鐩樺嚭搴撶洿鎺ュ畬鎴愪换鍔�
+ wrkMast.setWrkSts(14L);
+ } else if (wrkMast.getIoType() == 3) {
+ // 淇敼宸ヤ綔涓绘。鐘舵��
+ wrkMast.setWrkSts(15L);
+ wrkMast.setModiTime(new Date());
+ } else if(wrkMast.getIoType() == 12) { // 璺ㄥ贩閬撹浆绉�
+ wrkMast.setWrkSts(1L); // 鐘舵�佹敼涓�1.鐢熸垚鍏ュ簱id
+ wrkMast.setCrnNo(Arrays.binarySearch(oneFloorInSite,wrkMast.getStaNo()));// 鍫嗗灈鏈鸿浆鎹负鍏ュ簱鐨勫爢鍨涙満
+ wrkMast.setModiTime(new Date());
+ }
wrkMastMapper.updateById(wrkMast);
success = true;
} else {
@@ -89,54 +144,426 @@
}
}
- @Transactional
- public void OutBoundCompleteReport(Order order) {
+ /**
+ * 鍏ㄦ澘鍑哄簱鍒�3077鎴�3106鐨勪换鍔★紝鍒ゆ柇鍑哄簱瑕佽蛋鐨勮矾寰�
+ * @param wrkMast 宸ヤ綔涓绘。
+ * @return 1.鐩存帴鍑哄簱,鍙湁涓�鏉¤矾寰� 2.鐞嗚揣璐存爣鍑哄簱 3.璐存爣鎵撳甫鍑哄簱 4.璐存爣鍑哄簱
+ */
+ private int getDescToGwcs(WrkMast wrkMast) {
+ // todo 涓ゆ潯璺嚎鎬庝箞閫�
+ int flag = 1;
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+ List<String> collect = wrkDetls.stream().map(WrkDetl::getBrand).distinct().collect(Collectors.toList());
- // 鑾峰彇璇锋眰澶�
- Map<String, Object> headers = new HashMap<>();
- headers.put("Content-Type", "application/json;charset=UTF-8");
+ if (wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) {
+ // 鏈夊嚑涓湪绠�
+ if (collect.size() == 1) { // 涓�绠�
+ if (wrkDetls.size() == 1) { // 涓�鍗峰幓璐存爣
+ flag = 4;
+ } else { // 澶氬嵎鐩存帴鍑�
- // 鏋勯�犺姹備綋
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("orderNo", order.getOrderNo());
- jsonObject.put("complete", 1); // 璁㈠崟瀹屾垚涓�1锛屽叾浠�...
- String body = jsonObject.toJSONString();
+ }
+ } else if(collect.size() == 2) { // 涓ょ鍘昏创鏍囨墦甯�
- 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)) {
- order.setSettle(6L);
- orderMapper.updateById(order);
- success = true;
- } else {
- log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL + MesConstant.PAKIN_URL, body, response);
- throw new CoolException("涓嬪彂鍑哄簱浠诲姟缁橤WCS(浠庡嚭搴撶爜澶村埌鍑哄簱鍙�)澶辫触");
+ // 涓ょ鑲畾閮芥槸鍗曞嵎鎯呭喌 鍚屽瀷鍙�(鏈ㄧ鍨嬪彿-绠¤姱绫诲瀷-瀹炴祴瀹藉箙-鐢熺當鍘氬害-鍒嗗垏涓嬫枡鏃堕棿)鍘昏创鏍囷紝鎵撳甫锛屼笉鍚屽瀷鍙疯创鏍囧嚭搴�
+ WrkDetl wrkDetl1 = wrkDetls.get(0);
+ WrkDetl wrkDetl2 = wrkDetls.get(1);
+ if (wrkDetl1.getColor().equals(wrkDetl2.getColor())&&
+ wrkDetl1.getSku().equals(wrkDetl2.getSku())&&
+ wrkDetl1.getManu().equals(wrkDetl2.getManu())&&
+ wrkDetl1.getItemNum().equals(wrkDetl2.getItemNum())) {
+ flag = 3;
+ } else {
+ flag = 4;
+ }
}
- } 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);
+ } else if (wrkMast.getIoType() == 103 && (wrkMast.getStaNo() == 3077 || wrkMast.getStaNo() == 3106)) { // 涓ょ鍑轰竴绠憋紝闇�妗佹灦鐞嗚揣
+ // 閮借鍏堝幓鐞嗚揣
+ flag = 2;
+ }
+ return flag;
+ }
+
+ /**
+ * 鑷姩澶囪揣澶勭悊
+ */
+ public void autoStockUpHandler(List<String> list,int columnNum) {
+
+ // 鏍规嵁鍖呰缁勫彿鑾峰彇鎵�鍦ㄥ簱浣�
+ List<LocDetl> locDetls = locDetlMapper.selectLocNoByGroupNo(list);
+ if (locDetls.isEmpty()) {
+ return;
+ }
+ // 鐩稿悓鍒欏悎骞讹紝涓�涓簱浣嶄袱涓寘瑁呯粍鍙�
+ Map<String,List<String>> map = new HashMap<>();
+ for(LocDetl locDetl : locDetls) {
+ List<String> brand = map.get(locDetl.getLocNo());
+ if (brand == null) {
+ map.put(locDetl.getLocNo(),new ArrayList<String>(){{add(locDetl.getBrand());}});
+ } else {
+ brand.add(locDetl.getBrand());
+ map.put(locDetl.getLocNo(),brand);
}
}
+
+ // 閬嶅巻鍫嗗灈鏈哄苟涓斿垽鏂槸鍚﹀瓨鍦ㄤ换鍔�
+ for (int i = 1; i <= 6; i++) {
+ // 瑕佸璐х殑搴撲綅
+ String sourceLocNo = null;
+ // 澶囪揣鐩爣搴撲綅
+ String staLocNo = null;
+ Integer wrkCount = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().eq("crn_no", i));
+ if(wrkCount > 0) {
+// log.warn("{}鍙峰爢鍨涙満宸插瓨鍦ㄤ换鍔�",i);
+ continue;
+ }
+ // 鏍规嵁鍫嗗灈鏈哄彿鏌ヨ鍒板搴旂殑娣卞簱浣嶅拰娴呭簱浣� 娣卞簱浣�4*n-3鍜�4*n 娴呭簱浣�4*n-2鍜�4*n-1
+ int s1 = 4*i-3;
+ int s2 = 4*i;
+ int q1 = 4 * i - 2;
+ int q2 = 4 * i -1;
+
+ // 鏍规嵁鍫嗗灈鏈哄彿鑾峰彇涓�涓祬搴撲綅
+ for(String key : map.keySet()) {
+ int row = Integer.parseInt(key.substring(0, 2));
+ if (row == q1 || row == q2) {
+ sourceLocNo = key;
+ break;
+ }
+ }
+ // 娴呭簱浣嶆病鏈夊垯鎵句竴涓繁搴撲綅
+ if (sourceLocNo == null) {
+ for(String key : map.keySet()) {
+ int row = Integer.parseInt(key.substring(0, 2));
+ if (row == s1 || row == s2) {
+ sourceLocNo = key;
+ break;
+ }
+ }
+ }
+ // 娌℃湁鎵惧埌婧愬簱浣�
+ if (sourceLocNo == null) {
+// log.warn("娌℃湁鎵惧埌婧愬簱浣�,鍫嗗灈鏈猴細{}",i);
+ continue;
+ }
+ // 瀵绘壘涓�涓璐х殑鐩爣搴撲綅锛屽厛娣卞悗娴�
+ List<LocMast> locMasts1 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", s1, s2)
+ .le("bay1", columnNum).orderBy("lev1,bay1,row1"));
+ if (locMasts1.isEmpty()) {
+ // 娣卞簱浣嶄负绌轰簡锛屽彇娴呭簱浣�
+ List<LocMast> locMasts2 = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "O").eq("crn_no", i).in("row1", q1, q2)
+ .le("bay1", columnNum).orderBy("lev1,bay1,row1"));
+ if (!locMasts2.isEmpty()) {
+ staLocNo = locMasts2.get(0).getLocNo();
+ }
+ } else {
+ staLocNo = locMasts1.get(0).getLocNo();
+ }
+
+ if(staLocNo == null) {
+ log.warn("{}鍙峰爢鍨涙満澶囪揣鍖烘弧浜�",i);
+ continue;
+ }
+
+ // 澶囪揣鐨勬簮搴撲綅锛岀洰鏍囧簱浣嶉兘鑾峰彇鍒颁簡,鐢熸垚绉诲簱浠诲姟
+ workService.locMove(sourceLocNo,staLocNo,29L);
+
+ // 璁㈠崟鏄庣粏鏀规垚澶囪揣涓紝鍦ㄤ换鍔″畬鎴愭椂鍊欐敼鎴愬璐у畬鎴愶紝骞跺垽鏂暣涓鍗曟槸鍚﹀畬鎴�
+ orderDetlMapper.updateOrderDetlStatusByPackageNo(map.get(sourceLocNo), 1);
+
+ // 绉婚櫎宸茬敓鎴愬璐у簱浣�
+ map.remove(sourceLocNo);
+ }
+
}
+
+ public void autoMoveLoc(List<OrderDetl> orderDetlList) {
+
+ // 鍒ゆ柇鏄惁宸茬粡鏈夋墽琛岀殑绉诲簱浠诲姟
+ Integer count = wrkMastMapper.selectCount(new EntityWrapper<WrkMast>().in("io_type", 11, 12));
+ if (count > 0) {
+ return;
+ }
+
+ OrderDetl detl = null; // 瑕佺Щ搴撶殑鏄庣粏
+ String staLoc = null; // 绉诲簱鐩爣搴撲綅
+
+ // 浠庡緟绉诲簱浣嶅垪琛ㄤ腑鍏堟祬鍚庢繁鑾峰彇涓�涓緟绉诲簱浣�
+ Optional<OrderDetl> any = orderDetlList.stream().filter(orderDetl -> Utils.isShallowLoc(slaveProperties,orderDetl.getSpecs())).findAny();
+
+ if (any.isPresent()){
+ detl = any.get();
+ }
+ // 鍓╀笅鐨勫簲璇ラ兘鏄繁搴撲綅锛岃幏鍙栫涓�涓�
+ if (detl == null) {
+ detl = orderDetlList.get(0);
+ // 瀵瑰簲娴呭簱浣嶆湁璐э紝鍦ㄥ爢鍨涙満鍑哄簱鐨勬椂鍊欎細妫�娴嬪埌锛屽湪閭i噷鐢熸垚绉诲簱浠诲姟
+ }
+
+ // 鑾峰彇澶囪揣鍖洪厤缃�
+ Config config = configMapper.selectConfigByCode("auto_stock_up");
+ if (config == null) {
+ return;
+ }
+ // 澶囪揣鍙栨槸鍓嶅嚑鍒�
+ int bay1 = Integer.parseInt(config.getValue());
+ // 鎸囧畾鐨勭洰鏍囧簱浣�
+ String model = detl.getModel();
+
+ // 鎸囧畾鐩爣搴撲綅
+ if (!Cools.isEmpty(model)) {
+ // 鐩爣搴撲綅鏄繁搴撲綅
+ if (Utils.isDeepLoc(slaveProperties,model)) {
+ // 鐩爣搴撲綅
+ LocMast locMast2 = locMastMapper.selectById(model);
+ if (locMast2 == null || !locMast2.getLocSts().equals("O")) {
+ log.error("鎸囧畾鐨勭洰鏍囧簱浣嶃�恵}銆戠姸涓嶄负绌�", model);
+ return;
+ }
+ // 鑾峰彇鍒板搴旀祬搴撲綅
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, model);
+ LocMast locMast = locMastMapper.selectById(shallowLoc);
+ // 娴呭簱浣嶆湁璐�
+ if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
+ log.error("閫夋嫨鐨勬繁搴撲綅銆恵}銆戯紝浣嗘槸娴呭簱浣嶃�恵}銆戞湁璐�", model, locMast.getLocNo());
+ return;
+ }
+ // 閬垮紑澶囪揣鍖�
+ if (Utils.getBay(model) <= bay1) {
+ log.error("鎸囧畾鐨勭洰鏍囧簱浣嶃�恵}銆戝湪澶囪揣鍖猴紝涓嶈兘杞Щ", model);
+ return;
+ }
+ }
+ // 娣卞簱浣嶆娴嬮�氳繃锛屾垨鑰呮槸娴呭簱浣�
+ staLoc = model;
+ } else if ( detl.getBeBatch() != null) { // 鎸囧畾鐩爣宸烽亾
+ // 鐩爣宸烽亾
+ Integer beBatch = detl.getBeBatch();
+ // 浠庡贩閬撻噷闈㈠厛娣卞悗娴呭彇涓�涓┖搴撲綅锛屼笉瑕佸崰鐢ㄥ璐у尯
+ List<LocMast> locMasts = locMastMapper.selectList(new EntityWrapper<LocMast>().eq("crn_no", beBatch).eq("loc_sts", "O").gt("bay1", bay1));
+ if (locMasts.isEmpty()) {
+ log.error("鎸囧畾宸烽亾銆恵}銆戞病鏈夎兘绉诲簱鐨勭┖搴撲綅浜�",beBatch);
+ return;
+ }
+ // 鍏堣繃婊ゅ嚭娣卞簱浣�
+ Optional<LocMast> a = locMasts.stream().filter(locMast -> Utils.isDeepLoc(slaveProperties,locMast.getLocNo())).findAny();
+ if (a.isPresent()){
+ staLoc = a.get().getLocNo();
+ // 鑾峰彇鍒板搴旀祬搴撲綅
+ String shallowLoc = Utils.getShallowLoc(slaveProperties, staLoc);
+ LocMast locMast = locMastMapper.selectById(shallowLoc);
+ // 娴呭簱浣嶆湁璐�
+ if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) {
+ log.error("鎸囧畾鐨勭洰鏍囧贩閬撴繁搴撲綅銆恵}銆戯紝浣嗘槸娴呭簱浣嶃�恵}銆戞湁璐�",staLoc,locMast.getLocNo());
+ return;
+ }
+ }
+ // 娣卞簱浣嶆病鏈夊垯鍙栨祬搴撲綅
+ if (staLoc == null) {
+ staLoc = locMasts.get(0).getLocNo();
+ }
+ } else {
+ log.error("鐩爣搴撲綅鎴栫洰鏍囧贩閬撴湁璇細{}",detl);
+ return;
+ }
+
+ // 鐢熸垚璺ㄥ贩閬撶Щ搴撲换鍔�
+ workService.autoLocMove(detl.getOrderNo(),detl.getSpecs(),staLoc,29L);
+
+ // 鏇存柊鍗曟嵁鏄庣粏绉诲簱鐘舵�佷负绉诲簱涓�
+ detl.setDanger(1);
+ if (detl.getBeBatch() != null) {
+ detl.setModel(staLoc); // 琛ュ厖鐩爣搴撲綅
+ }
+ orderDetlMapper.updateById(detl);
+ // 鏇存柊鍗曟嵁鐘舵�佷负2澶勭悊涓�
+ orderMapper.updatePendingSettleByOrderNo(detl.getOrderNo(),2L);
+ }
+
+ /**
+ * 缁欐寚瀹氭鏋剁敓鎴愮悊璐т换鍔�,鎸夎鍒欏鎵惧埌鑳界悊璐х殑涓や釜搴撲綅
+ * 1.鑳界悊璐х殑閮芥槸涓�绠变竴鍗风殑
+ * 2.瑙勫垯锛氭湪绠卞瀷鍙风浉鍚�-绠¤姱绫诲瀷鐩稿悓-瀹炴祴瀹藉箙鐩稿悓-鐢熺當鍘氬害鐩稿悓-鍒嗗垏涓嬫枡鏃堕棿鐩歌繎
+ */
+ public void autoTallyGoods(int flag) {
+
+ // 鑾峰彇澶囪揣鍖洪厤缃�
+ Config config = configMapper.selectConfigByCode("auto_stock_up");
+ if (config == null) {
+ throw new CoolException("鐞嗚揣鑾峰彇澶囪揣鍖洪厤缃敊璇紒锛侊紒");
+ }
+ // 鍓嶅嚑鍒楁槸澶囪揣鍖�
+ int columnNum = Integer.parseInt(config.getValue());
+
+ // 瀵绘壘涓�绠变竴鍗风殑锛屾病鏈夌悊璐х殑锛屼笉鍦ㄥ璐у尯鐨勭墿鏂欐槑缁�
+ List<LocDetl> tallyGoosList = locDetlMapper.selectTallyGoosList(columnNum);
+
+ // 杩囨护鎺夋湪绠辫鏍煎搴﹀ぇ浜�600鐨�(澶т簬600涓�涓墭鐩樺彧鑳芥斁涓�绠�)
+ tallyGoosList = tallyGoosList.stream().filter(locDetl -> {
+ String[] split = locDetl.getColor().split("\\*");
+ if (split.length == 3) { // 楂樺害涔熻浣庝簬614鎵嶈兘鐞嗚揣
+ return Integer.parseInt(split[1]) <= 600 && Integer.parseInt(split[2]) <= 614;
+ } else {
+ return false;
+ }
+ }).collect(Collectors.toList());
+
+ // 瀵绘壘婊¤冻鐞嗚揣鏉′欢鐨勪袱涓湪绠�
+ LocDetl leftLocDetl = null;
+ LocDetl rightLocDetl = null;
+ for (int i = 0; i < tallyGoosList.size(); i++) {
+ leftLocDetl = tallyGoosList.get(i);
+ for (int j = i + 1; j < tallyGoosList.size(); j++) {
+ LocDetl tempLocDetl = tallyGoosList.get(j);
+ if (leftLocDetl.getColor().equals(tempLocDetl.getColor()) && leftLocDetl.getManu().equals(tempLocDetl.getManu()) &&
+ leftLocDetl.getSku().equals(tempLocDetl.getSku()) && leftLocDetl.getItemNum().equals(tempLocDetl.getItemNum())) {
+ rightLocDetl = tempLocDetl;
+ break;
+ }
+ }
+ if (rightLocDetl != null) {
+ break;
+ }
+ }
+
+ if (leftLocDetl == null || rightLocDetl == null) {
+// log.warn("娌℃湁鎵惧埌涓や釜鑳界悊璐х殑鏈ㄧ");
+ return;
+ }
+
+ // 鎵惧埌鐨勪袱涓湪绠卞垰濂藉湪涓�涓墭鐩樹笂锛岀洿鎺ユ洿鏀圭悊璐х姸鎬佷负2
+ if (leftLocDetl.getLocNo().equals(rightLocDetl.getLocNo())) {
+ locDetlMapper.updateLhStsByLocNo(leftLocDetl.getLocNo(), 2);
+ } else {
+
+ // 鍒ゆ柇鏄幓鍝妗佹灦鐨勫摢涓珯鐐� t0缁勭洏鐐�,t1宸︽崲鐩樼偣,t2鍙虫崲鐩樼偣
+ int t0 = 3046, t1 = 3045, t2 = 3044;
+ if (flag == 2) {
+ t0 = 3042;
+ t1 = 3041;
+ t2 = 3040;
+ }
+
+ // 鐢熸垚绌洪棽鐞嗚揣浠诲姟
+ WrkDetl wrkDetl1 = tallyGoodsGenerate(t1, leftLocDetl);
+ WrkDetl wrkDetl2 = tallyGoodsGenerate(t2, rightLocDetl);
+
+ Date now = new Date();
+
+ // 瀵绘壘涓�涓┖搴撲綅
+ StartupDto dto = commonService.getLocNo(1, t0, null, 0);
+ // 鐢熸垚缁勭洏鍏ュ簱浠诲姟
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(dto.getWorkNo());
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵��
+ wrkMast.setIoType(1); // 鍏ュ嚭搴撶被鍨�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(dto.getCrnNo());
+ wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯
+ wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(""); // 婧愬簱浣�
+ wrkMast.setLocNo(dto.getLocNo());
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setBarcode(""); // zwcs鎵ц鍏ュ簱鏃舵洿鏂版墭鐩樼爜
+ wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(29L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.insert(wrkMast) != 1) {
+ throw new CoolException("绌洪棽鐞嗚揣缁勭洏淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast);
+ }
+
+ // 鐢熸垚宸ヤ綔鏄庣粏
+ wrkDetl1.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl1.setOrigin("宸�"); // 鍥哄畾鎷嗗埌宸﹁竟
+ wrkDetl1.setDeadWarn(2); // 宸茬悊璐ф爣璇�
+ wrkDetl2.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl2.setOrigin("鍙�");
+ wrkDetl2.setDeadWarn(2);
+ wrkDetlService.insert(wrkDetl1); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜
+ wrkDetlService.insert(wrkDetl2);
+
+ // 鏇存柊鐩爣搴撲綅鐘舵��
+ LocMast locMast = locMastMapper.selectById(dto.getLocNo());
+ locMast.setLocSts("S");
+ locMastMapper.updateById(locMast); // 鍏ュ簱瀹屾垚鏃舵洿鏂版墭鐩樼爜
+ }
+ }
+
+ /**
+ * 鐢熸垚绌洪棽鐞嗚揣鍒版崲鐩樻鏋剁殑浠诲姟
+ *
+ * @param site 鎹㈢洏鐐�
+ * @param locDetl 搴撳瓨鏄庣粏
+ */
+ private WrkDetl tallyGoodsGenerate(int site, LocDetl locDetl) {
+
+ // 鍒ゆ柇搴撲綅鐘舵��
+ LocMast locMast = locMastMapper.selectById(locDetl.getLocNo());
+ if (!locMast.getLocSts().equals("F")) {
+ throw new CoolException("鐞嗚揣搴撲綅鐘舵�佹湁璇紝涓嶄负F锛屽簱浣嶅彿锛�" + locMast.getLocNo());
+ }
+
+ Date now = new Date();
+
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ // 鑾峰彇宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(5);
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(109); // 鍏ュ嚭搴撶姸鎬� 109.绌洪棽鐞嗚揣
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(oneFloorOutSite[locMast.getCrnNo()]); // 婧愮珯
+ wrkMast.setStaNo(site); // 鐩爣绔�
+ wrkMast.setSourceLocNo(locDetl.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setSheetNo("0");
+ wrkMast.setBarcode(locDetl.getZpallet());
+ wrkMast.setAppeUser(29L); // 鎿嶄綔浜哄憳 root
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(29L);
+ wrkMast.setModiTime(now);
+ if (wrkMastMapper.insert(wrkMast) != 1) {
+ throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗eけ璐ワ紝璇︽儏锛�" + wrkMast);
+ }
+
+ // 鐢熸垚宸ヤ綔鏄庣粏
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(29L);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(29L);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("绌洪棽鐞嗚揣淇濆瓨宸ヤ綔妗f槑缁嗗け璐�,璇︽儏锛�" + wrkDetl);
+ }
+
+ // 淇敼鍑哄簱鐘舵��
+ locMast.setLocSts("R");
+ locMast.setModiUser(29L);
+ locMast.setModiTime(now);
+ if (locMastMapper.updateById(locMast) != 1) {
+ throw new CoolException("绌洪棽鐞嗚揣棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + locMast.getLocNo());
+ }
+
+ // 鏇存柊搴撳瓨鏄庣粏涓虹悊璐т腑
+ locDetlMapper.updateLhStsByLocNo(locDetl.getLocNo(), 1);
+
+ return wrkDetl;
+ }
+
}
--
Gitblit v1.9.1