From 3f34143c246030d2a2a6f82bbe36a0b7181b2e53 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期日, 18 八月 2024 17:19:55 +0800
Subject: [PATCH] 出库优化
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 243 ++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 222 insertions(+), 21 deletions(-)
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 15077f6..ac070a3 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -14,6 +14,7 @@
import com.zy.asrs.entity.result.StockVo;
import com.zy.asrs.entity.result.ZphjcdgzVo;
import com.zy.asrs.entity.result.ZphjcdwcVo;
+import com.zy.asrs.mapper.MatMapper;
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
@@ -30,6 +31,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -39,6 +41,12 @@
@Slf4j
@Service
public class OpenServiceImpl implements OpenService {
+
+ // 浜屾ゼ鍫嗗灈鏈哄搴斿叆搴撶珯鐐�
+ private static final int[] secondFloorIn = new int[]{0,2061,2064,2067,2070,2073,2076};
+ // 鍫嗗灈鏈哄搴斾竴妤煎嚭搴撶珯鐐�
+ private static final int[] secondFloorOut = new int[]{0,3002,3003,3006,3008,3009,3012};
+
@Autowired
private OrderService orderService;
@@ -84,6 +92,9 @@
private LocMastService locMastService;
@Autowired
private ApiLogService apiLogService;
+
+ @Resource
+ private MatMapper matMapper;
@Override
@Transactional
@@ -998,6 +1009,182 @@
@Override
@Transactional
+ public void prodCheck(List<ProdCheckParam> param) {
+ if (param.isEmpty()) {
+ throw new CoolException("璇锋眰鍙傛暟涓嶈兘涓虹┖");
+ }
+ for (ProdCheckParam checkParam : param) {
+ // 鏇存柊搴撳瓨鏄庣粏鏄惁鍚堟牸
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("brand", checkParam.getPackageGroupNo())
+ .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()));
+ // 鏇存柊鍟嗗搧琛ㄦ槸鍚﹀悎鏍�
+ Mat mat = matService.selectOne(new EntityWrapper<Mat>().eq("brand", checkParam.getPackageGroupNo())
+ .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()));
+ if (locDetl == null || mat == null) {
+ throw new CoolException("鏇存柊鏄惁鍚堟牸鐗╂枡涓嶅瓨鍦細" + checkParam);
+ }
+
+ locDetl.setThreeCode(checkParam.getQualified());
+ mat.setThreeCode(checkParam.getQualified());
+
+ locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("brand", checkParam.getPackageGroupNo())
+ .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo()));
+ matService.update(mat,(new EntityWrapper<Mat>().eq("brand", checkParam.getPackageGroupNo())
+ .eq("unit", checkParam.getBoxNo()).eq("model", checkParam.getRollNo())));
+ }
+ }
+
+ @Override
+ @Transactional
+ public String fxprk(FxprkParam param) {
+
+ // 鏍规嵁鍖呰缁勫彿鑾峰彇鍒版湪绠卞嵎淇℃伅
+ List<Mat> list = matService.selectList(new EntityWrapper<Mat>().in("brand", param.getBoxList().stream().map(FxprkParam.Box::getPackageGroupNo).collect(Collectors.toList())));
+ if (list.isEmpty()) {
+ throw new CoolException("娌℃湁鏌ヨ鍒拌鍖呰缁勫彿淇℃伅锛�" + param.getBoxList().toString());
+ }
+
+ LocTypeDto locTypeDto = new LocTypeDto();
+ locTypeDto.setLocType1((short) 1);
+ StartupDto dto = commonService.getLocNo(1, param.getPalletizingNo(), locTypeDto, 0);
+
+ // 杩斿洖GWCS鐩爣淇℃伅
+ boolean result = pushStaNoToGwcs(param.getPalletizingNo(), dto.getStaNo(), dto.getWorkNo(), param.getBarcode());
+// if (!result) {
+// throw new CoolException("鍏ュ簱鍥炴帹鍏ュ簱鐮佸ご缁橤WCS澶辫触");
+// }
+
+ 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け璐�");
+ }
+
+ for (Mat obj : list) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(wrkMast.getWrkNo());
+ wrkDetl.setAnfme(1.0);
+ // 閲嶆柊瀹氫綅鏈ㄧ浣嶇疆
+ for (FxprkParam.Box box :param.getBoxList()) {
+ if (box.getPackageGroupNo().equals(obj.getBrand())) {
+ if (!box.getBoxPos().equals(obj.getOrigin())) {
+ wrkDetl.setOrigin(box.getBoxPos());
+ wrkDetl.setZpallet(param.getBarcode());
+ wrkDetl.setBarcode(param.getBarcode());
+ matMapper.updateBoxPos(box.getPackageGroupNo(), box.getBoxPos(),param.getBarcode());
+ }
+ break;
+ }
+ }
+ wrkDetl.sync(obj);
+ 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 "鍏ュ簱鎴愬姛";
+ }
+
+ @Override
+ @Transactional
+ public R kthl(KthlParam param) {
+
+ // 鑾峰彇妯″紡涓虹數鑴戞ā寮忥紝鏃犱换鍔$殑鍫嗗灈鏈哄垪琛�:闃叉鍒嗛厤鍒板爢鍨涙満涓嶅彲鐢�
+ List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3)
+ .eq("wrk_no",0).eq("in_enable","Y").eq("out_enable","Y"));
+ if (basCrnps.isEmpty()) {
+ // 閮芥湁浠诲姟鍒欒幏鍙栫數鑴戞ā寮忕殑鍫嗗灈鏈哄垪琛�
+ basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts",3).eq("in_enable","Y")
+ .eq("out_enable","Y"));
+ }
+ if (basCrnps.isEmpty()) {
+ throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�,鍫嗗灈鏈哄仠姝㈡垨寮傚父鎴栫鐢�");
+ }
+ // 鍙敤鍫嗗灈鏈哄垪琛�
+ List<Integer> crnNoList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+ Integer crnNo = crnNoList.get(0);
+
+ int workNo = commonService.getWorkNo(5);
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ wrkMast.setWrkSts(1L); //
+ wrkMast.setIoType(3); // 绔欏埌绔�
+ wrkMast.setIoPri(14D); // 浼樺厛绾�
+ wrkMast.setCrnNo(crnNo);
+ wrkMast.setSourceStaNo(secondFloorIn[crnNo]);
+ wrkMast.setStaNo(secondFloorOut[crnNo]);
+ wrkMast.setLocNo("");
+ wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+ wrkMast.setFullPlt("N"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("Y"); // 绌烘澘
+ wrkMast.setLinkMis("Y");
+ wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷
+ // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiTime(now);
+ boolean res = wrkMastService.insert(wrkMast);
+ if (!res) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+ }
+ // 杩斿洖GWCS鐩爣淇℃伅
+ pushStaNoToGwcs(param.getPalletizingNo(),wrkMast.getSourceStaNo(),workNo,param.getBarcode());
+
+ return R.ok("绌烘墭鍥炴祦璇锋眰鎴愬姛");
+ }
+
+ @Override
+ public R tb(TbParam param) {
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("barcode", param.getBarcode()));
+ if (wrkDetls.isEmpty()) {
+ return R.parse("鏃犵墿鏂欐槑缁嗕俊鎭�");
+ }
+ List<String> collect = wrkDetls.stream().map(WrkDetl::getUnit).distinct().collect(Collectors.toList());
+ return R.ok(collect);
+ }
+
+ @Override
+ @Transactional
public R gwmsGenerateInventory(GwmsGenerateInventoryDto param) {
if (Cools.isEmpty(param)) {
@@ -1025,7 +1212,7 @@
StartupDto dto = commonService.getLocNo(iotype, param.getPalletizingNo(), locTypeDto,0);
// 杩斿洖GWCS鐩爣淇℃伅
- pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo());
+ pushStaNoToGwcs(param.getPalletizingNo(),dto.getStaNo(),dto.getWorkNo(),param.getBarcode());
int workNo = dto.getWorkNo();
@@ -1062,39 +1249,43 @@
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.setUnit(roll.getBoxNo()); // 绠卞彿
wrkDetl.setModel(roll.getRollNo()); // 鍗峰彿
wrkDetl.setBrand(obj.getPackageGroupNo()); // 鍖呰缁勫彿
- wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鍚�
+ wrkDetl.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ wrkDetl.setBarcode(param.getBarcode());
wrkDetl.setOrigin(obj.getBoxPos()); // 鏈ㄧ鍦ㄦ墭鐩樹綅缃�
+ wrkDetl.setColor(obj.getBoxType()); // 鏈ㄧ绫诲瀷
+ wrkDetl.setManu(obj.getRollType()); // 绠¤姱绫诲瀷
+ wrkDetl.setSku(obj.getWideInWidth()); // 瀹炴祴瀹藉箙
+ wrkDetl.setItemNum(obj.getThickness()); // 鐢熺當鍘氬害
+ wrkDetl.setManuDate(roll.getFqTime()); // 鍒嗗垏涓嬫枡鏃堕棿
wrkDetl.setWeight(roll.getNetWeight()); // 鍑�閲�
wrkDetl.setVolume(roll.getGrossWeight()); // 姣涢噸
- wrkDetl.setPrice(roll.getLength());
- wrkDetl.setSpecs(String.valueOf(roll.getSplices()));
+ wrkDetl.setLength(roll.getLength()); // 闀垮害
+ wrkDetl.setSpecs(String.valueOf(roll.getSplices())); // 鎺ュご
wrkDetl.setAnfme(1.0);
+// wrkDetl.setThreeCode(null); // 閫氳繃mes鎴杄xcel瀵煎叆妫�娴嬫槸鍚﹀悎鏍� 0涓嶅悎鏍硷紝1 鍚堟牸
wrkDetl.setIoTime(now);
wrkDetl.setAppeTime(now);
wrkDetl.setModiTime(now);
if (!wrkDetlService.insert(wrkDetl)) {
throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
}
+
+ // 鐗╂枡琛ㄥ浠戒竴浠�
+ Mat mat = new Mat();
+ mat.sync(wrkDetl);
+ mat.setTagId(6L);
+ mat.setCreateTime(now);
+ mat.setUpdateTime(now);
+ if (!matService.insert(mat)) {
+ throw new CoolException("澶囦唤鐗╂枡琛ㄥけ璐�");
+ }
+
});
}
}
@@ -1246,11 +1437,19 @@
throw new CoolException("宸ヤ綔妗e綋鍓嶇姸鎬佷笉绗﹀悎锛屼换鍔″彿锛�" + param.getWorkNo() + "锛屽伐浣滄。鐘舵�侊細" + wrkMast.getWrkSts());
}
+ List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", param.getWorkNo()));
+
+ // 鏄惁闇�瑕佸鏍�(鍑哄簱鍗曢渶澶嶆牳)
+ boolean flag = false;
+ if (!wrkDetls.isEmpty()) {
+ flag = wrkDetls.stream().anyMatch(wrkDetl -> wrkDetl.getOrderNo() != null);
+ }
+
// 鍒拌揪鍑哄簱鍙g‘璁や负1锛屾洿鏂板伐浣滄。鐘舵�佷负57.鍑哄簱瀹屾垚
if (param.getOutLocResult() == 1) {
wrkMast.setWrkSts(20L);
// 绌烘墭鐩樺埌浣嶇洿鎺ユ洿鏂板伐浣滄。鐘舵�佷负14.宸插嚭搴撴湭纭锛岀┖鎵樻棤闇�澶嶆牳纭
- if (wrkMast.getIoType() == 110) {
+ if (!flag || wrkMast.getIoType() == 110) {
wrkMast.setWrkSts(14L);
}
wrkMastService.updateById(wrkMast);
@@ -1465,7 +1664,7 @@
return wrkDetls.size() > 1 ? 0 : 1; // 涓�鏉¤褰曞氨鏄竴鍗�
}
- public void pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo) {
+ public boolean pushStaNoToGwcs(Integer palletizingNo, Integer staNo, Integer workNo,String barcode) {
boolean success = false;
// 鑾峰彇璇锋眰澶�
Map<String, Object> headers = getHeaders();
@@ -1475,6 +1674,7 @@
jsonObject.put("workNo", workNo);
jsonObject.put("staNo", staNo);
jsonObject.put("sourceStaNo", palletizingNo);
+ jsonObject.put("barcode", barcode);
String body = jsonObject.toJSONString();
String response = "";
try {
@@ -1515,6 +1715,7 @@
log.error("", e);
}
}
+ return success;
}
Map<String, Object> getHeaders(){
--
Gitblit v1.9.1