From abcbc1657792026dbb9db86689141544e8d86b77 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期四, 19 十月 2023 11:42:48 +0800
Subject: [PATCH] 补货单流程更新
---
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 270 ++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 251 insertions(+), 19 deletions(-)
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 58d6f25..bb12713 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -3,22 +3,28 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.*;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CombParam;
import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.NodePakoutParam;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.service.*;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.WorkLogHandler;
+import com.zy.asrs.utils.MatUtils;
+import com.zy.asrs.utils.SaasUtils;
+import com.zy.asrs.utils.Utils;
import com.zy.common.constant.MesConstant;
import com.zy.common.entity.Parameter;
import com.zy.common.model.DetlDto;
import com.zy.common.model.MesCombParam;
import com.zy.common.utils.HttpHandler;
+import com.zy.system.entity.User;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -56,6 +62,18 @@
private OpenService openService;
@Autowired
private SnowflakeIdWorker snowflakeIdWorker;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private WorkLogHandler workLogHandler;
+ @Autowired
+ private ManLocDetlService manLocDetlService;
+ @Autowired
+ private WaitPakinLogService waitPakinLogService;
+ @Autowired
+ private NodeService nodeService;
+ @Autowired
+ private ManPakOutService manPakOutService;
@Override
@Transactional
@@ -68,6 +86,16 @@
eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
}
+
+ // todo: 涓嶄笅绾块噸鏂板叆搴�
+ WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
+ if (wrkMast != null && wrkMast.getWrkSts() == 18) {
+ ReturnT<String> start = workLogHandler.start(wrkMast);
+ if (!start.isSuccess()) {
+ log.error("宸ヤ綔妗workNo={}]鍘嗗彶妗e鐞嗗け璐�", wrkMast.getWrkNo());
+ }
+ }
+
Date now = new Date();
// 鏃犲崟缁勬墭
@@ -76,9 +104,11 @@
// 鐢熸垚鍏ュ簱閫氱煡妗�
List<DetlDto> detlDtos = new ArrayList<>();
param.getCombMats().forEach(elem -> {
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq());
+ detlDto.setContainerCode(elem.getContainerCode());
+
if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
} else {
@@ -103,6 +133,10 @@
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
+
+ waitPakin.setThreeCode(detlDto.getCsocode());
+ waitPakin.setDeadTime(detlDto.getIsoseq());
+ waitPakin.setSuppCode(detlDto.getContainerCode());
if (!waitPakinService.insert(waitPakin)) {
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
@@ -127,9 +161,11 @@
throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
}
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq());
+ detlDto.setContainerCode(elem.getContainerCode());
+
if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
} else {
@@ -144,7 +180,7 @@
WaitPakin waitPakin = new WaitPakin();
waitPakin.sync(mat);
waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿
- waitPakin.setBatch(detlDto.getBatch()); // 鎵瑰彿
+ waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮�
waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
@@ -153,6 +189,11 @@
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
+
+ waitPakin.setThreeCode(detlDto.getCsocode());
+ waitPakin.setDeadTime(detlDto.getIsoseq());
+ waitPakin.setSuppCode(detlDto.getContainerCode());
+
if (!waitPakinService.insert(waitPakin)) {
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
@@ -196,7 +237,7 @@
// todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
// 淇敼鏄庣粏
if (!wrkDetlService.updateAnfme(wrkDetl1.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
- throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+ throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
}
}
iterator.remove();
@@ -209,7 +250,7 @@
for (WrkDetl wrkDetl : wrkDetls) {
// todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
if (!wrkDetlService.updateAnfme(-1.0D, wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) {
- throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
+ throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷换鍔℃槑缁嗗け璐�");
}
}
@@ -226,7 +267,7 @@
wrkDetl.setAppeTime(now);
wrkDetl.setAppeUser(userId);
if (!wrkDetlService.insert(wrkDetl)) {
- throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "鎵瑰彿浠诲姟鏄庣粏澶辫触");
+ throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷换鍔℃槑缁嗗け璐�");
}
}
@@ -271,9 +312,14 @@
throw new CoolException(elem.getMatnr() + "鏉$爜宸蹭笅绾匡紝璇锋鏌ワ紒");
}
}
- DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ Mat analyse = MatUtils.analyseMat(elem.getMatnr());
+ // 鏉$爜銆佺墿鏂欎唬鐮併�佸簭鍒楀彿銆佹暟閲�
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), analyse.getMatnr(), analyse.getBarcode(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq());
+// DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ detlDto.setContainerCode(elem.getContainerCode());
+
if (DetlDto.has(detlDtos, detlDto)) {
- DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
assert one != null;
one.setAnfme(one.getAnfme() + detlDto.getAnfme());
} else {
@@ -284,12 +330,16 @@
if (packDown) {
MesCombParam mesCombParam = new MesCombParam();
mesCombParam.setZpallet(param.getBarcode());
- mesCombParam.setCombTime(DateUtils.convert(now));
+ mesCombParam.setPakinTime(DateUtils.convert(now));
mesCombParam.setLgort("5008");
+ mesCombParam.setPlantCode("5000");
+ mesCombParam.setFromCode("5012-20");
+ mesCombParam.setStationCode("JJQ-PFZPDB-XX");
for (DetlDto detlDto : detlDtos) {
- mesCombParam.getList().add(new MesCombParam.Detl(detlDto.getMatnr(), detlDto.getAnfme()));
+ mesCombParam.getList().add(new MesCombParam.Detl(detlDto.getOrderNo(), detlDto.getAnfme()));
}
- String response;
+ String response = "";
+ boolean success = false;
try {
response = new HttpHandler.Builder()
.setUri(MesConstant.URL)
@@ -299,7 +349,7 @@
.doPost();
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.getInteger("code").equals(200)) {
- log.info("璇锋眰鎺ュ彛鎴愬姛锛侊紒锛�");
+ success = true;
} else if (jsonObject.getInteger("code").equals(500)) {
log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", MesConstant.URL+MesConstant.PACK_DOWN_URL, JSON.toJSONString(mesCombParam), response);
throw new CoolException(jsonObject.getString("msg"));
@@ -310,6 +360,19 @@
} catch (Exception e) {
log.error("fail", e);
throw new CoolException(e.getMessage());
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鎵撳寘涓嬬嚎甯墭涓婃姤",
+ MesConstant.URL + MesConstant.PACK_DOWN_URL,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(mesCombParam),
+ response,
+ success
+ );
+ } catch (Exception e) { log.error("", e); }
}
}
@@ -361,11 +424,15 @@
waitPakin.setAppeTime(now);
waitPakin.setModiUser(userId);
waitPakin.setModiTime(now);
+
+ waitPakin.setThreeCode(detlDto.getCsocode());
+ waitPakin.setDeadTime(detlDto.getIsoseq());
+ waitPakin.setSuppCode(detlDto.getContainerCode());
if (!waitPakinService.insert(waitPakin)) {
throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
}
// 淇敼鎵撳寘鏁版嵁鐘舵��
- Pack pack = packService.selectByBarcode(detlDto.getMatnr());
+ Pack pack = packService.selectByBarcode(detlDto.getOrderNo());
pack.setSettle(2L);
pack.setUpdateTime(now);
pack.setUpdateBy(userId);
@@ -377,4 +444,169 @@
}
}
+ @Transactional
+ public void nodePutway(String zpallet, String locNo, User user) {
+ Date now = new Date();
+
+ //澧炲姞骞冲簱搴撳瓨
+ List<WaitPakin> waitPakinList = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet));
+
+ if(Cools.isEmpty(waitPakinList)){
+ throw new CoolException("璇ユ墭鐩樼爜鏈粍鎵�");
+ }
+
+ waitPakinList.forEach(waitPakin -> {
+ //鏂欐兂鐮�
+ String containerCode = waitPakin.getSuppCode();
+ //濡傛灉褰撳墠鏂欐兂鐮佸凡瀛樺湪锛屽垯淇敼璇ユ枡鎯崇殑鐗╂枡鏁伴噺
+ ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("container_code", containerCode));
+ if(Cools.isEmpty(manLocDetl)){
+ saveManlocDetl(waitPakin,now,locNo);
+ }else{
+ if(Cools.eq(manLocDetl.getMatnr(),waitPakin.getMatnr())
+ && Cools.eq(manLocDetl.getCsocode(),waitPakin.getThreeCode())
+ && Cools.eq(manLocDetl.getIsoseq(),waitPakin.getDeadTime())){
+ manLocDetl.setAnfme(manLocDetl.getAnfme() + waitPakin.getAnfme());
+ manLocDetlService.update(manLocDetl,new EntityWrapper<ManLocDetl>()
+ .eq("loc_no",manLocDetl.getLocNo())
+ .eq("container_code",manLocDetl.getContainerCode()));
+ }else{
+ saveManlocDetl(waitPakin,now,locNo);
+ }
+ }
+ //鐢熸垚骞冲簱鍏ュ嚭搴撴棩蹇�
+ SaasUtils.insertLog(0,locNo,waitPakin.getMatnr(), waitPakin.getAnfme(),user.getUsername());
+
+ });
+ //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗�
+ waitPakinLogService.save(zpallet);
+ //鍒犻櫎鍏ュ簱閫氱煡妗�
+ waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet));
+
+ orderService.checkComplete(waitPakinList.get(0).getOrderNo());
+
+
+ }
+
+ @Transactional
+ public void nodePakout(NodePakoutParam param, User user) {
+ Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", param.getLocNo()));
+ Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", param.getOrderNo()));
+ if (Cools.isEmpty(node, order)) {
+ throw new CoolException("鍙傛暟涓虹┖");
+ }
+ //鏌ヨ褰撳墠鐗╂枡鐨勮鍗曡鎯�
+ Wrapper<OrderDetl> orderDetlWrapper = new EntityWrapper<OrderDetl>().eq("order_no", param.getOrderNo()).eq(false, "status", 1);
+ Utils.wapperSetCondition(orderDetlWrapper,"three_code",param.getCsocode());
+ Utils.wapperSetCondition(orderDetlWrapper,"dead_time",param.getIsoseq());
+ Utils.wapperSetCondition(orderDetlWrapper,"matnr",param.getMatnr());
+
+ //Utils.confirmOnlyMat(orderDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq());
+ OrderDetl orderDetl = orderDetlService.selectOne(orderDetlWrapper);
+ //鏌ヨ褰撳墠鎷h揣鍗曚俊鎭�
+ Wrapper<ManPakOut> manPakOutWrapper = new EntityWrapper<ManPakOut>().eq("wrk_no", param.getWrkNo());
+ ManPakOut manPakOut = manPakOutService.selectOne(manPakOutWrapper);
+ if(Cools.isEmpty(manPakOut) || manPakOut.getStatus() == 1){
+ throw new CoolException("褰撳墠鎷h揣鐮佸凡缁忓畬鎴愭嫞璐�");
+ }
+ //鏌ヨ搴撳瓨淇℃伅
+ Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", param.getLocNo());
+ Utils.confirmOnlyMat(manLocDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq());
+ ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper);
+
+ //鏍规嵁瀹為檯鍑哄簱鏁伴噺鎵e噺搴撳瓨
+ if(Double.doubleToLongBits(param.getAnfme()) != Double.doubleToLongBits(manPakOut.getAnfme())){
+ if(param.getAnfme() > manLocDetl.getAnfme() || (param.getAnfme() - manPakOut.getAnfme()) > (orderDetl.getAnfme() - orderDetl.getQty())){
+ throw new CoolException("鍑哄簱鏁伴噺涓嶅緱澶т簬璁㈠崟鏁伴噺鎴栬�呭簱瀛樻暟閲�");
+ }
+ //鏍规嵁瀹為檯鍑哄簱鏁伴噺鍥炲啓鎷h揣鍗�
+ manPakOut.setCount(param.getAnfme());
+ if(manPakOut.getCount() < manPakOut.getAnfme()){
+ manPakOut.setStatus(8);
+ }
+ //鏍规嵁瀹為檯鍑哄簱鏁伴噺鍥炲啓璁㈠崟璇︽儏
+ orderDetl.setQty(orderDetl.getQty() - (param.getAnfme()-manPakOut.getAnfme()));
+ orderDetlService.update(orderDetl,orderDetlWrapper);
+
+ }else {
+ manPakOut.setCount(param.getAnfme());
+ manPakOut.setStatus(1);
+ }
+
+ manPakOutService.update(manPakOut,manPakOutWrapper);
+ //妫�鏌ヨ璁㈠崟涓嬬殑鎷h揣鍗曟槸鍚﹀凡缁忓叏閮ㄥ嚭搴�
+ int status = checkManPakoutByOrder(param.getOrderNo());
+ manPakOutService.updateAllStatus(param.getOrderNo(),status);
+
+
+ //淇敼搴撳瓨
+ manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getCount());
+ if (manLocDetl.getAnfme() == 0 ){
+ manLocDetlService.delete(manLocDetlWrapper);
+ }else{
+ manLocDetl.setStatus(1);
+ manLocDetlService.update(manLocDetl,manLocDetlWrapper);
+ }
+ SaasUtils.insertLog(1,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),user.getUsername());
+ manLocDetl.setStatus(1);
+ manLocDetlService.update(manLocDetl,manLocDetlWrapper);
+
+ //妫�娴嬭鍗曟槸鍚﹀畬鎴�
+ orderService.checkComplete(param.getOrderNo());
+
+
+
+ }
+
+ private void saveManlocDetl(WaitPakin waitPakin, Date now, String locNo){
+
+ Node node = nodeService.selectOne(new EntityWrapper<Node>()
+ .eq("name", locNo));
+
+ ManLocDetl manLocDetl = new ManLocDetl();
+ BeanUtils.copyProperties(waitPakin,manLocDetl);
+ manLocDetl.setNodeId(node.getId());
+ manLocDetl.setContainerCode(waitPakin.getSuppCode());
+ manLocDetl.setCsocode(waitPakin.getThreeCode());
+ manLocDetl.setIsoseq(waitPakin.getDeadTime());
+ manLocDetl.setCreateTime(now);
+ manLocDetl.setModiTime(now);
+ manLocDetl.setLocNo(locNo);
+ manLocDetl.setStatus(1);
+ manLocDetlService.insert(manLocDetl);
+ }
+
+ private int checkManPakoutByOrder(String orderNo){
+ int status = 0;
+ List<ManPakOut> manPakOutList = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo));
+
+ for(int i=0; i<manPakOutList.size(); i++){
+ if(i == 0){
+ status = manPakOutList.get(i).getStatus();
+ }else {
+ if(manPakOutList.get(i).getStatus() != status){
+ status = 8;
+ }
+ }
+ }
+
+ return status;
+
+
+
+ }
+
+ public static void main(String[] args) {
+ ManPakOut m = new ManPakOut();
+ m.setAnfme(1.0);
+ NodePakoutParam n = new NodePakoutParam();
+ n.setAnfme(1.0);
+
+ double a = 1.0;
+ double b = 1.0;
+ System.out.println(m.getAnfme() == n.getAnfme());
+ System.out.println(a == b);
+ System.out.println(Double.doubleToLongBits(m.getAnfme()) == Double.doubleToLongBits(n.getAnfme()));
+ }
+
}
--
Gitblit v1.9.1