From 0f55c3628ce9d747953c2afe1fdd945baa357e65 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期二, 09 七月 2024 10:18:12 +0800
Subject: [PATCH] erp上报功能
---
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 182 +++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 175 insertions(+), 7 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 a262d23..62d7e0c 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -1,5 +1,8 @@
package com.zy.asrs.service.impl;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
@@ -14,15 +17,19 @@
import com.zy.asrs.mapper.TagMapper;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.MatUtils;
+import com.zy.asrs.utils.Utils;
import com.zy.common.model.DetlDto;
+import com.zy.common.utils.HttpHandler;
import com.zy.common.utils.NodeUtils;
import com.zy.system.entity.User;
import com.zy.system.service.UserService;
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;
+import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -31,8 +38,15 @@
* Created by vincent on 2022/4/9
*/
@Slf4j
-@Service
+@Service("OpenService")
public class OpenServiceImpl implements OpenService {
+
+ @Value("${u8.url}")
+ private String url;
+
+ @Value("${u8.path}")
+ private String orderReportPath;
+
@Autowired
private OrderService orderService;
@@ -66,6 +80,10 @@
private ReportQueryMapper reportQueryMapper;
@Autowired
private UserService userService;
+ @Autowired
+ private PlaService plaService;
+ @Autowired
+ private ApiLogService apiLogService;
@Override
@Transactional
@@ -207,13 +225,13 @@
param.getCCode(), // 璁㈠崟缂栧彿
DateUtils.convert(now), // 鍗曟嵁鏃ユ湡
docType.getDocId(), // 鍗曟嵁绫诲瀷
- null, // 椤圭洰缂栧彿
+ 1L, // 椤圭洰缂栧彿
null, //
null, // 璋冩嫧椤圭洰缂栧彿
null, // 鍒濆绁ㄦ嵁鍙�
- null, // 绁ㄦ嵁鍙�
+ param.getCAccount(), // 涓讳綋
null, // 瀹㈡埛缂栧彿
- param.getCAccount(), // 瀹㈡埛
+ param.getCCusName(), // 瀹㈡埛
null, // 鑱旂郴鏂瑰紡
param.getCMaker(), // 鎿嶄綔浜哄憳
null, // 鍚堣閲戦
@@ -390,8 +408,18 @@
@Override
@Transactional
public void syncMat(MatSyncParam param) {
+
if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <= 0) {
throw new CoolException("鍟嗗搧鏁版嵁涓虹┖");
+ }
+
+ //鍒犻櫎瀛樿揣妗f
+ if(param.deleteFlag == 1){
+ for (MatSyncParam.MatParam matParam : param.getMatDetails()){
+ matService.deleteById(matParam.getMatnr());
+ }
+
+ return;
}
for (MatSyncParam.MatParam matParam : param.getMatDetails()) {
@@ -486,14 +514,15 @@
}
if (!matService.insert(mat)) {
throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
- } else {
- log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
}
+ log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
} else {
- mat.sync(param);
+ //mat.sync(param);
+ mat.setMaktx(matParam.getMaktx());
if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
}
+ log.info("鍚屾鏇存柊鐗╂枡[鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
}
}
@@ -538,4 +567,143 @@
return digitalTwin;
}
+ @Override
+ public int pakinReportErp(JSONObject json) throws ParseException {
+ JSONArray jsonArray = JSONArray.parseArray(json.getJSONArray("pla").toJSONString());
+
+ List<OpenOrderPakoutParam> list = new ArrayList<>();
+
+ for (Object o : jsonArray){
+ JSONObject jsonObject = (JSONObject)o;
+ String brand = jsonObject.get("brand").toString();
+ String batch = jsonObject.get("batch").toString();
+ Integer packageNo = Integer.parseInt(jsonObject.get("packageNo").toString());
+
+ Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo, brand);
+ Mat mat = matService.selectByMaktx(pla.getBrand());
+ //褰撶敓浜у崟鍙蜂笉涓�鑷存椂锛岄渶瑕佹柊寤轰竴涓猵aram
+ if(list.size() == 0 || checkOrder(list,pla.getProOrderNo()) == null){
+ OpenOrderPakoutParam param = new OpenOrderPakoutParam();
+ param.setcMaker(json.get("user").toString());
+ String type = Cools.isEmpty(pla.getProOrderNo()) ? "璋冩嫧鍏ュ簱鍗�" : "浜ф垚鍝佸叆搴�";
+ param.setcCode(Cools.isEmpty(pla.getProOrderNo()) ? (new Date().getTime()) + "" : pla.getProOrderNo());
+ param.setcAccount(pla.getWorkshop());
+ param.setdDate(Utils.getDateStr(new Date()));
+ param.setType(type);
+
+ List<OpenOrderPakoutParam.Body> bodyList = new ArrayList<>();
+ OpenOrderPakoutParam.Body body = new OpenOrderPakoutParam.Body();
+ body.setcInvCode(mat.getMatnr());
+ body.setiQuantity(pla.getWeightAnfme());
+ body.setcBatch("");
+ body.setCbMemo(pla.getMemo());
+ bodyList.add(body);
+
+ param.setaDDBody(bodyList);
+
+ list.add(param);
+ }else {
+ OpenOrderPakoutParam param = checkOrder(list, pla.getProOrderNo());
+ List<OpenOrderPakoutParam.Body> bodyList = param.getADDBody();
+ OpenOrderPakoutParam.Body body = checkOrderDetl(bodyList, mat.getMatnr());
+ //鏈夋柊鐨勭墝鍙峰垯娣诲姞鏂扮殑orderDetl锛屽惁鍒欑疮鍔�
+ if(body == null){
+ body = new OpenOrderPakoutParam.Body();
+ body.setcInvCode(mat.getMatnr());
+ body.setiQuantity(pla.getWeightAnfme());
+ body.setCbMemo(pla.getMemo());
+ bodyList.add(body);
+ }else {
+ body.setiQuantity(body.getIQuantity() + pla.getWeightAnfme());
+ }
+ }
+ }
+
+ for (OpenOrderPakoutParam param : list){
+ doHttpRequest(param, "鍏ュ簱鍗曚笂鎶�", url, orderReportPath, null, "127.0.0.1");
+
+ }
+
+ return 200;
+
+ //return doHttpRequest(list, "鍏ュ簱鍗曚笂鎶�", url, orderReportPath, null, "127.0.0.1");
+
+ }
+
+ private OpenOrderPakoutParam checkOrder(List<OpenOrderPakoutParam> list, String orderNo){
+
+ for (OpenOrderPakoutParam param : list){
+
+ if(Cools.eq("璋冩嫧鍏ュ簱鍗�",param.getType()) && Cools.isEmpty(orderNo)){
+ return param;
+ }
+
+ //鍒ゆ柇鏄惁鍖呭惈閲嶅鐨勮鍗曞彿
+ if(Cools.eq(param.getCCode(),orderNo)){
+ return param;
+ }
+ }
+
+ return null;
+
+ }
+
+ private OpenOrderPakoutParam.Body checkOrderDetl(List<OpenOrderPakoutParam.Body> bodyList, String matnr){
+
+ for (OpenOrderPakoutParam.Body param : bodyList){
+ //鍒ゆ柇鏄惁鍖呭惈閲嶅鐨勮鍗曞彿
+ if(Cools.eq(param.getCInvCode(),matnr)){
+ return param;
+ }
+ }
+
+ return null;
+
+ }
+
+ private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){
+ String response = "";
+ boolean success = false;
+
+ try {
+ response = new HttpHandler.Builder()
+ .setUri(url)
+ .setPath(path)
+ .setJson(JSONObject.toJSONString(requestParam))
+ .build()
+ .doPost();
+
+ response = response.replace("\\", "");
+ response = response.substring(1,response.length()-1);
+
+ JSONObject jsonObject = JSON.parseObject(response);
+ JSONArray jsonArray = (JSONArray)jsonObject.get("");
+ JSONObject jsonResult = (JSONObject) jsonArray.get(0);
+ if(Cools.isEmpty(jsonResult.get("ErrorCode"))){
+ throw new CoolException(jsonResult.get("errorMsg").toString());
+ }
+
+ int code = Integer.parseInt(jsonResult.get("ErrorCode").toString());
+ if(code != 1){
+ throw new CoolException(jsonResult.get("errorMsg").toString());
+ }
+ success = true;
+ return code;
+ }catch (Exception e){
+ log.error(e.getMessage());
+ throw new CoolException(e.getMessage());
+ }finally {
+ apiLogService.save(
+ namespace,
+ url + path,
+ appkey,
+ ip,
+ JSON.toJSONString(JSONObject.toJSONString(requestParam)),
+ response,
+ success
+ );
+ }
+
+ }
+
}
--
Gitblit v1.9.1