From ab14726215678ac69adfeafbd845ebc5b0776ea2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期二, 14 一月 2025 14:56:41 +0800
Subject: [PATCH] 优化订单同步逻辑及库位查找
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 689 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 665 insertions(+), 24 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 3d9a670..6044ed0 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,30 +1,33 @@
package com.zy.asrs.service.impl;
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.core.exception.CoolException;
import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.OpenOrderCompleteParam;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
-import com.zy.asrs.entity.param.OpenOrderPakoutParam;
-import com.zy.asrs.entity.param.PackParam;
+import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.StockVo;
+import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
import com.zy.common.model.DetlDto;
import com.zy.common.utils.NodeUtils;
+import lombok.Synchronized;
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;
+import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.stream.Collectors;
/**
* Created by vincent on 2022/4/9
@@ -51,6 +54,18 @@
private TagService tagService;
@Autowired
private TagMapper tagMapper;
+ @Autowired
+ private ApiLogService apiLogService;
+ @Autowired
+ private WaitPakinService waitPakinService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private ReportQueryMapper reportQueryMapper;
+ @Autowired
+ private AgvLocMastService agvLocMastService;
+ @Autowired
+ private AgvLocDetlService agvLocDetlService;
@Override
@Transactional
@@ -62,8 +77,7 @@
DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
Date now = new Date();
// 鍗曟嵁涓绘。
- order = new Order(
- String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ order = new Order(String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
param.getOrderNo(), // 璁㈠崟缂栧彿
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
@@ -107,7 +121,7 @@
for (DetlDto detail : orderDetails) {
DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
if (DetlDto.has(list, dto)) {
- DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
+ DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(), dto.getCsocode(), dto.getIsoseq(), null);
assert detlDto != null;
detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
} else {
@@ -121,10 +135,14 @@
}
OrderDetl orderDetl = new OrderDetl();
orderDetl.sync(mat);
+ if (!Cools.isEmpty(detlDto.getCFree1())) {
+ orderDetl.setSpecs(detlDto.getCFree1());
+ }
orderDetl.setBatch(detlDto.getBatch());
orderDetl.setAnfme(detlDto.getAnfme());
orderDetl.setOrderId(order.getId());
orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setSource(docType.getDocId().intValue());
orderDetl.setCreateBy(9527L);
orderDetl.setCreateTime(now);
orderDetl.setUpdateBy(9527L);
@@ -135,6 +153,83 @@
throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
}
}
+// 鐢熸垚璋冩嫧鍗�
+ if (docType.getDocId().intValue() == 32) {
+ order = new Order(String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ "DB" + param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ 33L, // 鍗曟嵁绫诲瀷
+ 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> dbList = new ArrayList<>();
+ List<DetlDto> dbOrderDetails = param.getOrderDetails();
+ // 鍗曟嵁鏄庣粏妗�
+ for (DetlDto detail : orderDetails) {
+ DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
+ if (DetlDto.has(dbList, dto)) {
+ DetlDto detlDto = DetlDto.find(dbList, dto.getMatnr(), dto.getBatch(), dto.getCsocode(), dto.getIsoseq(), null);
+ assert detlDto != null;
+ detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+ } else {
+ dbList.add(dto);
+ }
+ }
+ for (DetlDto detlDto : dbList) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetl orderDetl = new OrderDetl();
+ orderDetl.sync(mat);
+ orderDetl.setBatch(detlDto.getBatch());
+ orderDetl.setAnfme(detlDto.getAnfme());
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setSource(docType.getDocId().intValue());
+ 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("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟鏄庣粏妗eけ璐ワ紝璇疯仈绯荤鐞嗗憳");
+ }
+ }
+ }
+
}
@Override
@@ -152,7 +247,7 @@
result.setOrderType(order.getDocType$());
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
for (OrderDetl orderDetl : orderDetls) {
- result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
+ //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
}
if (order.getSettle() == 4L) {
// 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
@@ -172,7 +267,7 @@
result.setOrderType(order.getDocType$());
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
for (OrderDetl orderDetl : orderDetls) {
- result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
+ //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
}
// 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
if (!orderService.updateSettle(order.getId(), 6L, null)) {
@@ -187,14 +282,17 @@
@Transactional
public void pakoutOrderCreate(OpenOrderPakoutParam param) {
Order order = orderService.selectByNo(param.getOrderNo());
+ // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
if (!Cools.isEmpty(order)) {
- throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+ if (order.getSettle() > 1L) {
+ throw new CoolException(param.getOrderNo() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+ }
+ orderService.remove(order.getId());
}
DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
Date now = new Date();
// 鍗曟嵁涓绘。
- order = new Order(
- String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ order = new Order(String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
param.getOrderNo(), // 璁㈠崟缂栧彿
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
@@ -238,7 +336,7 @@
for (DetlDto detail : orderDetails) {
DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
if (DetlDto.has(list, dto)) {
- DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
+ DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(), dto.getCsocode(), dto.getIsoseq(), null);
assert detlDto != null;
detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
} else {
@@ -256,6 +354,7 @@
orderDetl.setAnfme(detlDto.getAnfme());
orderDetl.setOrderId(order.getId());
orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setSource(docType.getDocId().intValue());
orderDetl.setCreateBy(9527L);
orderDetl.setCreateTime(now);
orderDetl.setUpdateBy(9527L);
@@ -264,6 +363,81 @@
orderDetl.setQty(0.0D);
if (!orderDetlService.insert(orderDetl)) {
throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+ }
+ }
+ if (docType.getDocId().intValue() == 32) {
+ order = new Order(String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+ "DB" + param.getOrderNo(), // 璁㈠崟缂栧彿
+ DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
+ 33L, // 鍗曟嵁绫诲瀷
+ 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> dbList = new ArrayList<>();
+ List<DetlDto> dbOrderDetails = param.getOrderDetails();
+ // 鍗曟嵁鏄庣粏妗�
+ for (DetlDto detail : orderDetails) {
+ DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
+ if (DetlDto.has(dbList, dto)) {
+ DetlDto detlDto = DetlDto.find(dbList, dto.getMatnr(), dto.getBatch(), dto.getCsocode(), dto.getIsoseq(), null);
+ assert detlDto != null;
+ detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+ } else {
+ dbList.add(dto);
+ }
+ }
+ for (DetlDto detlDto : dbList) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧");
+ }
+ OrderDetl orderDetl = new OrderDetl();
+ orderDetl.sync(mat);
+ orderDetl.setBatch(detlDto.getBatch());
+ orderDetl.setAnfme(detlDto.getAnfme());
+ orderDetl.setOrderId(order.getId());
+ orderDetl.setOrderNo(order.getOrderNo());
+ orderDetl.setSource(docType.getDocId().intValue());
+ 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("鐢熸垚鍗婃垚鍝佽皟鎷ㄥ崟鏄庣粏妗eけ璐ワ紝璇疯仈绯荤鐞嗗憳");
+ }
}
}
}
@@ -282,7 +456,7 @@
result.setOrderType(order.getDocType$());
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
for (OrderDetl orderDetl : orderDetls) {
- result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
+ //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
}
if (order.getSettle() == 4L) {
// 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
@@ -302,7 +476,7 @@
result.setOrderType(order.getDocType$());
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
for (OrderDetl orderDetl : orderDetls) {
- result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
+ //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
}
// 淇敼璁㈠崟鐘舵�� 4.瀹屾垚 ===>> 6.宸蹭笂鎶�
if (!orderService.updateSettle(order.getId(), 6L, null)) {
@@ -331,10 +505,9 @@
throw new CoolException(param.getBarcode() + "閲嶅鎻愪氦");
}
Date now = new Date();
- pack = new Pack(
- param.getBarcode(), // 鏉$爜[闈炵┖]
- analyse.getMatnr(), // 鍟嗗搧缂栧彿
- analyse.getBarcode(), // 鎵瑰彿
+ pack = new Pack(param.getBarcode(), // 鏉$爜[闈炵┖]
+ analyse.getMatnr(), // 鐗╂枡鍙�
+ analyse.getBarcode(), // 搴忓垪鐮�
1L, // 璁㈠崟鐘舵��
1, // 鐘舵��
now, // 娣诲姞鏃堕棿
@@ -359,8 +532,7 @@
Tag top = tagService.getTop();
NodeUtils nodeUtils = new NodeUtils();
nodeUtils.executePath(top.getId());
- priTag = new Tag(
- null, // 缂栧彿
+ priTag = new Tag(null, // 缂栧彿
param.getGroupCode(), // 鍚嶇О
top.getId(), // 鐖剁骇
top.getName(), // 鐖剁骇鍚嶇О
@@ -389,8 +561,7 @@
if (secTag == null) {
NodeUtils nodeUtils = new NodeUtils();
nodeUtils.executePath(priTag.getId());
- secTag = new Tag(
- null, // 缂栧彿
+ secTag = new Tag(null, // 缂栧彿
param.getGroupName(), // 鍚嶇О
priTag.getId(), // 鐖剁骇
priTag.getName(), // 鐖剁骇鍚嶇О
@@ -429,9 +600,479 @@
if (!matService.insert(mat)) {
throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
} else {
- log.info("鎵撳寘涓婄嚎娣诲姞鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+ log.info("鎵撳寘涓婄嚎娣诲姞鏂扮墿鏂橻鐗╂枡鍙凤細{}]", mat.getMatnr());
}
}
}
+ @Override
+ @Transactional
+ public Mat syncMat(MatSyncParam param) {
+ if (Cools.isEmpty(param.getCInvCode())) {
+ throw new CoolException("鍟嗗搧鏁版嵁涓虹┖");
+ }
+ Tag tag = tagService.selectByName("鍏ㄩ儴", 1);
+
+ Mat mat = matService.selectByMatnr(param.getCInvCode());
+ if (Cools.isEmpty(mat)) {
+ mat = new Mat();
+ mat.setTagId(tag.getId());
+ syncMat(mat, param);
+ if (matService.insert(mat)) {
+ callApiLogSave(mat, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅鎴愬姛锛佹坊鍔犲晢鍝佷俊鎭垚鍔燂紒", true);
+ } else {
+ callApiLogSave(mat, "/open/asrs/mat/v1", "娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佺姸鎬佸紓甯革紒锛侊紒", false);
+ mat.setMemo("娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛�");
+ }
+
+ } else {
+ mat.setTagId(tag.getId());
+ syncMat(mat, param);
+ System.out.println(mat.getMaktx().length());
+ if (matService.updateById(mat)) {
+ callApiLogSave(mat, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅鎴愬姛锛佹坊鍔犲晢鍝佷俊鎭垚鍔燂紒", true);
+ } else {
+ callApiLogSave(mat, "/open/asrs/mat/v1", "娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佺姸鎬佸紓甯革紒锛侊紒", false);
+ mat.setMemo("娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛�");
+ }
+ }
+ return mat;
+ }
+
+ private void syncMat(Mat mat, MatSyncParam param) {
+ Date date = new Date();
+ mat.setMatnr(param.getCInvCode());//鐗╂枡缂栫爜
+ mat.setMaktx(param.getCInvName());//鐗╂枡鍚嶇О
+ mat.setSpecs(param.getCInvStd());//瑙勬牸
+ mat.setUnit(param.getCComUnitName());
+ mat.setBeBatch(Cools.eq("true", param.getBInvBatch()) ? 1 : 0);
+ mat.setStatus(param.getStates());
+
+ mat.setModel(param.getIGroupType());//0:鏃犳崲绠� 1锛氬浐瀹氭崲绠� 2锛氭诞鍔ㄦ崲绠� 涓嶆槸0鐨勯兘寰椾紶 榛樿涓�0
+ mat.setCreateBy(9999L);//9999琛ㄧずerp涓嬪彂
+ mat.setCreateTime(date);
+ mat.setUpdateBy(9999L);//9999琛ㄧずerp涓嬪彂
+ mat.setUpdateTime(date);
+
+
+ }
+
+ public void callApiLogSave(Mat mat, String tableName, String response, Boolean bool) {
+ apiLogService.save("ERP涓嬪彂鍟嗗搧淇℃伅", tableName, "null", "10.10.10.1", "鐗╂枡缂栫爜锛�" + mat.getMatnr() + "銆佺墿鏂欏悕绉帮細" + mat.getMaktx() + "銆佽鏍硷細" + mat.getSpecs() + "銆佸娉細" + mat.getMemo(), response, bool);
+ }
+
+
+ @Override
+ @Transactional
+ public void combMes(CombParam param) {
+ Long userId = 9999l;
+ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
+ callApiLogSaveMES(null, null, BaseRes.PARAM, false);
+ throw new CoolException(BaseRes.PARAM);
+ }
+ if (param.getBarcode().length() != 8) {
+ callApiLogSaveMES(param, null, param.getBarcode() + "锛氭潯鐮侀暱搴︿笉鏄�8浣�", false);
+ throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
+ }
+ // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
+ if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
+ callApiLogSaveMES(param, null, param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱", false);
+ throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
+ }
+
+ int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBarcode()));
+ int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarcode()));
+ if (countLoc > 0) {
+ callApiLogSaveMES(param, null, param.getBarcode() + "锛氬簱瀛樻潯鐮佹暟鎹凡瀛樺湪", false);
+ throw new CoolException("搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
+ } else if (countWrk > 0) {
+ callApiLogSaveMES(param, null, param.getBarcode() + "锛氬伐浣滄槑缁嗘。宸插瓨鍦ㄦ鏁版嵁", false);
+ throw new CoolException("宸ヤ綔鏄庣粏妗e凡瀛樺湪姝ゆ暟鎹�===>>" + param.getBarcode());
+ }
+
+ Date now = new Date();
+ try {
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+ 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.getCsocode(), detlDto.getIsoseq(), detlDto.getContainerCode());
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+
+ for (DetlDto detlDto : detlDtos) {
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ if (Cools.isEmpty(mat)) {
+ callApiLogSaveMES(param, null, mat.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�", false);
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setBatch(detlDto.getBatch());
+ waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!waitPakinService.insert(waitPakin)) {
+ callApiLogSaveMES(param, null, mat.getMatnr() + "淇濆瓨鍏ュ簱閫氱煡妗eけ璐�", false);
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ }
+ } catch (Exception e) {
+ callApiLogSaveMES(null, null, "" + e, false);
+ }
+ callApiLogSaveMES(param, param.getCombMats().get(0), "缁勬墭鎴愬姛", true);
+ }
+
+ public void callApiLogSaveMES(CombParam combParam, CombParam.CombMat combMat, String response, Boolean bool) {
+ if (Cools.isEmpty(combParam)) {
+ apiLogService.save("MES涓嬪彂鍏ュ簱閫氱煡鍗�", "/open/asrs/comb/v1", "null", "10.10.10.1", "", response, bool);
+ } else if (Cools.isEmpty(combMat)) {
+ apiLogService.save("MES涓嬪彂鍏ュ簱閫氱煡鍗�", "/open/asrs/comb/v1", "null", "10.10.10.1", "鎵樼洏鐮侊細" + combParam.getBarcode(), response, bool);
+ } else {
+ apiLogService.save("MES涓嬪彂鍏ュ簱閫氱煡鍗�", "/open/asrs/comb/v1", "null", "10.10.10.1", "鎵樼洏鐮侊細" + combParam.getBarcode() + "銆佺墿鏂欑紪鍙凤細" + combMat.getMatnr() + "銆佹暟閲忥細" + combMat.getAnfme(), response, bool);
+ }
+ }
+
+ /**
+ * 鍏ュ簱璁板綍鑾峰彇
+ */
+ @Override
+ @Transactional
+ public List<ViewWorkInBean> inlogERP() {
+ List<ViewWorkInBean> viewWorkInERP = reportQueryMapper.getViewWorkInERP();
+ ArrayList<ViewWorkInBean> viewWorkInBeans = new ArrayList<>();
+ for (ViewWorkInBean viewWorkInBean : viewWorkInERP) {
+ viewWorkInBean.sype();
+ viewWorkInBeans.add(viewWorkInBean);
+ }
+ return viewWorkInBeans;
+ }
+
+ /**
+ * 鍑哄簱璁板綍鑾峰彇
+ */
+ @Override
+ @Transactional
+ public List<ViewWorkInBean> outlogERP() {
+ List<ViewWorkInBean> viewWorkInERP = reportQueryMapper.getViewWorkOutERP();
+ ArrayList<ViewWorkInBean> viewWorkInBeans = new ArrayList<>();
+ for (ViewWorkInBean viewWorkInBean : viewWorkInERP) {
+ viewWorkInBean.sype();
+ viewWorkInBeans.add(viewWorkInBean);
+ }
+ return viewWorkInBeans;
+ }
+
+ @Transactional
+ public boolean syncMat(MatInfoParam param) {
+ Date now = new Date();
+ Mat mat = matService.selectByMatnr(param.getCinvcode());
+ boolean update = true;
+ if (Cools.isEmpty(matService.selectByMatnr(param.getCinvcode()))) {
+ //鐗╂枡鍙�
+ mat = new Mat();
+ mat.setMatnr(param.getCinvcode());
+ mat.setCreateTime(now);
+ mat.setCreateBy(9999L);
+ update = false;
+// callApiLogSave(param, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佸晢鍝佸凡瀛樺湪锛侊紒锛�", false);
+// param.setType(false);
+// param.setMemo("鍟嗗搧宸插瓨鍦紒");
+// return false;
+ }
+ //Mat mat = new Mat();
+ //鐗╂枡鍙�
+ //mat.setMatnr(param.getCinvcode());
+ //鐗╂枡鍚嶇О
+ mat.setMaktx(param.getCinvname());
+ //瑙勬牸鍨嬪彿
+ mat.setSpecs(param.getCInvStd());
+ //瀛樿揣鍒嗙被缂栫爜
+ mat.setBrand(param.getCinvccode());
+ //瀛樿揣鍒嗙被鍚嶇О
+ mat.setColor(param.getCInvCName());
+ //璁¢噺鍗曚綅
+ mat.setUnit(param.getCComUnitName());
+ //杩涢」绋�
+ mat.setPrice(param.getIImpTaxRate());
+ //閿�椤圭◣
+ mat.setUnits(param.getITaxRate());
+ //鍚敤鏃ユ湡
+ mat.setDsDate(param.getDSDate());
+ //寤烘。浜�
+ mat.setSupp(param.getCCreatePerson());
+ //寤烘。鏃ユ湡
+ mat.setDInvCreateDatetime(param.getDInvCreateDatetime());
+ //閫氱敤鍨嬪彿
+ mat.setModel(param.getCinvdefine4());
+
+ //9999琛ㄧずerp涓嬪彂
+
+ mat.setUpdateBy(9999L);
+ mat.setTagId(1L);
+
+ mat.setUpdateTime(now);
+
+ if (update) {
+ if (matService.updateById(mat)) {
+ callApiLogSave(param, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅鎴愬姛锛佹坊鍔犲晢鍝佷俊鎭垚鍔燂紒", true);
+ param.setUpdate(true);
+ } else {
+ callApiLogSave(param, "/open/asrs/mat/v1", "娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佺姸鎬佸紓甯革紒锛侊紒", false);
+ param.setError(true);
+ param.setMemo("娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛�");
+ }
+ } else {
+ if (matService.insert(mat)) {
+ callApiLogSave(param, "/open/asrs/mat/v1", "鎺ユ敹ERP涓嬪彂鍟嗗搧淇℃伅鎴愬姛锛佹坊鍔犲晢鍝佷俊鎭垚鍔燂紒", true);
+ param.setInsert(true);
+ } else {
+ callApiLogSave(param, "/open/asrs/mat/v1", "娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛侊紒锛佺姸鎬佸紓甯革紒锛侊紒", false);
+ param.setError(true);
+ param.setMemo("娣诲姞ERP涓嬪彂鍟嗗搧淇℃伅澶辫触锛�");
+ }
+ }
+
+
+ return true;
+ }
+
+ @Transactional
+ public boolean syncOrder(OrderSyncParam param, boolean pakin, String docName) {
+ if (Cools.isEmpty(param) || Cools.isEmpty(param.getChildren())) {
+ callApiLogSave(param, "/order/pakout/default/v1", "鎺ュ彈鍗曟嵁澶辫触锛屽崟鎹弬鏁颁负绌烘垨鑰呭崟鎹鎯呬负绌猴紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅", false);
+ throw new CoolException("鍗曟嵁鍙傛暟涓虹┖鎴栬�呭崟鎹鎯呬负绌猴紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅");
+ }
+
+ Order orderOld = null;
+
+ if (!Cools.isEmpty(orderService.selectByNo(param.getCPOID()))) {
+
+ orderOld = orderService.selectByNo(param.getCPOID());
+ if (orderOld.getSettle() > 1) {
+ throw new CoolException("璇ュ崟鎹凡鍦ㄤ綔涓氫腑锛屾棤娉曟洿鏀瑰崟鎹俊鎭�");
+ }
+
+// String orderNo = param.getCPOID();
+// if (orderNo.contains("-")){
+// int index = Integer.parseInt(orderNo.split("-")[1]) + 1;
+// orderNo = orderNo.split("-")[0] + "-" + index;
+// param.setcPOID(orderNo);
+// }else {
+// orderNo = orderNo + "-1";
+// param.setcPOID(orderNo);
+// }
+//
+// syncOrder(param,pakin,docName);
+
+ //callApiLogSave(param, "/order/pakout/default/v1", "鎺ュ彈鍗曟嵁澶辫触锛岃鍗曟嵁宸插瓨鍦紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅", false);
+ //throw new CoolException("璇ュ崟鎹凡瀛樺湪锛屾棤娉曠敓鎴愬崟鎹俊鎭�");
+ }
+ List<OrderSyncParam.OrderDetl> collect = param.getChildren().stream().distinct().collect(Collectors.toList());
+ if (collect.size() != param.getChildren().size()) {
+ callApiLogSave(param, "/order/pakout/default/v1", "鎺ュ彈鍗曟嵁澶辫触锛屽崟鎹槑缁嗛噸澶嶏紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅", false);
+ throw new CoolException("鎺ュ彈鍗曟嵁澶辫触锛屽崟鎹槑缁嗛噸澶嶏紝鏃犳硶鐢熸垚鍗曟嵁淇℃伅");
+ }
+ Date now = new Date();
+ Order order = orderMapping(param, now, pakin, docName);
+ StringBuffer tel = new StringBuffer();
+ for (OrderSyncParam.OrderDetl child : param.getChildren()) {
+ tel.append(child.getCDefine22()).append(";");
+ }
+ order.setTel(tel.toString());
+ orderService.insert(order);
+ param.getChildren().forEach(od -> {
+ OrderDetl orderDetl = orderDetlMapping(order, od, now);
+ orderDetlService.insert(orderDetl);
+ });
+
+ if (!Cools.isEmpty(orderOld)) {
+ //鍒犻櫎鍘熸湁鍗曟嵁淇℃伅
+ orderService.delete(new EntityWrapper<Order>().eq("id", orderOld.getId()));
+ orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", orderOld.getId()));
+ }
+
+ callApiLogSave(param, "/order/pakout/default/v1", "鎺ュ彈鍗曟嵁鎴愬姛", true);
+
+ return true;
+ }
+
+ @Transactional
+ public boolean orderDelete(String orderNo) {
+ Order order = orderService.selectByNo(orderNo);
+ if (Cools.isEmpty(order)) {
+ throw new CoolException("鍗曟嵁涓嶅瓨鍦紝鏃犳硶鍒犻櫎鍗曟嵁");
+ }
+
+ if (order.getSettle() != 1) {
+ return false;
+ }
+
+ orderService.deleteById(order);
+ orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id", order.getId()));
+
+ return true;
+ }
+
+ @Override
+ @Transactional
+ @Synchronized
+ public boolean checkAndAdjustLocDetl(CheckParam params) {
+
+ //鍒ゆ柇搴撲綅鏄惁瀛樺湪
+ AgvLocMast agvLocMast = agvLocMastService.selectById(params.getLocNo());
+ if (Cools.isEmpty(agvLocMast)) {
+ throw new CoolException("搴撲綅鍙蜂笉瀛樺湪");
+ }
+
+ if (!Cools.eq("O", agvLocMast.getLocSts()) && !Cools.eq("F", agvLocMast.getLocSts())) {
+ throw new CoolException("褰撳墠搴撲綅姝e湪浣滀笟涓紝鏃犳硶鐩樼偣璋冩暣");
+ }
+
+ if (Cools.isEmpty(params.getLocDetls())) {
+ agvLocMast.setLocSts("O");
+ } else {
+ agvLocMast.setLocSts("F");
+ }
+
+ agvLocMastService.updateById(agvLocMast);
+
+ //鍒犻櫎鏃у簱瀛�
+ agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", params.getLocNo()));
+
+ //鏂板鐩樼偣搴撳瓨
+ for (DetlDto detlDto : params.getLocDetls()) {
+ AgvLocDetl agvLocDetl = new AgvLocDetl();
+ Mat mat = matService.selectByMatnr(detlDto.getMatnr());
+ BeanUtils.copyProperties(mat, agvLocDetl);
+ agvLocDetl.setLocNo(params.getLocNo());
+ agvLocDetl.setSuppCode(params.getContainerCode());
+ agvLocDetl.setAnfme(detlDto.getAnfme());
+ agvLocDetl.setBatch(detlDto.getBatch());
+ agvLocDetl.setThreeCode(detlDto.getCsocode());
+ agvLocDetl.setDeadTime(detlDto.getIsoseq());
+ agvLocDetlService.insert(agvLocDetl);
+ }
+
+ return true;
+ }
+
+ private Order orderMapping(OrderSyncParam param, Date now, boolean pakin, String docName) {
+ Order order = new Order();
+ //uuid
+ order.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+ //鍗曟嵁鍞竴琛ㄧず
+ order.setOrderNo(param.getCPOID());
+ //鍗曟嵁绫诲瀷
+ DocType docType = docTypeService.selectOrAdd(docName, pakin);
+ order.setDocType(docType.getDocId());
+ //鍗曟嵁鏃ユ湡
+ order.setOrderTime(param.getDdate());
+
+ //渚涘簲鍟嗙紪鐮�
+ order.setSalesman(param.getCVenCode());
+
+ order.setMemo(param.getCMemo());
+ //鍒跺崟浜�
+ order.setShipCode(param.getCPersonCode());
+
+ order.setDefNumber(param.get鎿嶄綔绯荤粺鍙�());
+
+ order.setCreateBy(9999L);
+ order.setCreateTime(now);
+ order.setUpdateBy(9999L);
+ order.setUpdateTime(now);
+ order.setUpstreamcode(param.getUpstreamcode());
+ //璁㈠崟鐘舵��
+ order.setSettle(1L);
+ //鐘舵��
+ order.setStatus(1);
+ return order;
+ }
+
+ private OrderDetl orderDetlMapping(Order order, OrderSyncParam.OrderDetl odParam, Date now) {
+
+ Mat mat = matService.selectByMatnr(odParam.getCInvCode());
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException("瀛樿揣缂栫爜锛�" + odParam.getCInvCode() + "涓嶅瓨鍦紝璇峰厛鍚屾瀛樿揣妗f");
+ }
+
+ OrderDetl od = new OrderDetl();
+ od.setOrderId(order.getId());
+ od.setOrderNo(order.getOrderNo());
+ //閲囪喘璁㈠崟琛屽彿
+ od.setItemNum(odParam.getIvouchrowno());
+ //瀛樿揣缂栫爜
+ od.setMatnr(mat.getMatnr());
+ //瀛樿揣鍚嶇О
+ od.setMaktx(mat.getMaktx());
+ //瑙勬牸鍨嬪彿
+ //od.setSpecs(odParam.get("cInvStd").toString());
+ od.setSpecs(mat.getSpecs());
+ //璁¢噺鍗曚綅
+ //od.setUnit(odParam.get("cComUnitName").toString());
+ od.setUnit(mat.getUnit());
+ //鏁伴噺
+ od.setAnfme(odParam.getIQuantity());
+ //閿�鍞鍗曞彿
+ od.setThreeCode(odParam.getCDefine22());
+ //鑷敱椤�
+ if (!Cools.isEmpty(odParam.getBatch()) || !Cools.isEmpty(odParam.getBFree1())) {
+ od.setBatch((Cools.isEmpty(odParam.getBatch()) ? "" : odParam.getBatch()) + "__" + (Cools.isEmpty(odParam.getBFree1()) ? "" : odParam.getBFree1()));
+ }
+ od.setWeight(odParam.getINum());
+ od.setVolume(odParam.getIinvexchrate());
+ //IDs
+ od.setSku(odParam.getId());
+
+ od.setLength(odParam.getINum());
+
+ od.setSource(order.getDocType().intValue());
+ od.setStatus(1);
+ od.setQty(0.0D);
+ od.setReportQty(0.0D);
+ od.setCreateBy(9999L);
+ od.setCreateTime(now);
+ od.setUpdateBy(9999L);
+ od.setUpdateTime(now);
+
+ return od;
+ }
+
+ private String toString(Object o) {
+ if (StringUtils.isEmpty(o)) {
+ return null;
+ } else {
+ return o.toString();
+ }
+ }
+
+
+ public void callApiLogSave(MatInfoParam matParam, String tableName, String response, Boolean bool) {
+ apiLogService.save("ERP涓嬪彂鍟嗗搧淇℃伅", tableName, "null", "10.10.10.1", "鐗╂枡缂栫爜锛�" + matParam.getCinvcode() + "銆佺墿鏂欏悕绉帮細" + matParam.getCinvname() + "銆佽鏍硷細" + matParam.getCInvStd() + "銆佸娉細" + matParam.getMemo(), response, bool);
+ }
+
+ public void callApiLogSave(OrderSyncParam param, String tableName, String response, Boolean bool) {
+ apiLogService.save("ERP璁㈠崟鍚屾", tableName, "null", "10.10.10.1", param.toString(), response, bool);
+ }
+
+ public static void main(String[] args) {
+ Object s = null;
+ if (StringUtils.isEmpty(s)) {
+ System.out.println("null");
+ } else {
+ System.out.println(s.toString());
+ }
+ }
}
--
Gitblit v1.9.1