From ffe47d904591be8cae513a75ac899dbf720a6e71 Mon Sep 17 00:00:00 2001 From: zwl <zwl123> Date: 星期六, 07 十月 2023 15:25:17 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/handler/MesPakoutHandler.java | 194 +++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 190 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zy/asrs/task/handler/MesPakoutHandler.java b/src/main/java/com/zy/asrs/task/handler/MesPakoutHandler.java index 96b0484..0d63af0 100644 --- a/src/main/java/com/zy/asrs/task/handler/MesPakoutHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/MesPakoutHandler.java @@ -1,37 +1,223 @@ package com.zy.asrs.task.handler; +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.SnowflakeIdWorker; +import com.core.exception.CoolException; +import com.zy.asrs.entity.DiaphragmInfo; +import com.zy.asrs.entity.DocType; +import com.zy.asrs.entity.Order; +import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.DocTypeService; import com.zy.asrs.service.OrderDetlService; import com.zy.asrs.service.OrderService; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.utils.MesSyncUtil; +import com.zy.common.utils.HttpHandler; 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.io.IOException; +import java.util.Date; +import java.util.List; +import java.util.Map; @Slf4j @Service public class MesPakoutHandler extends AbstractHandler<String> { - @Value("${mes.pakin.url}") - private String url; + @Value("${mes.pakout.url}") + private String uri; - @Value("${mes.pakin.path}") + @Value("${mes.pakout.path}") private String path; @Autowired private DocTypeService docTypeService; @Autowired + private SnowflakeIdWorker snowflakeIdWorker; + + @Autowired private OrderService orderService; + + @Autowired + private ApiLogService apiLogService; @Autowired private OrderDetlService orderDetlService; - public ReturnT<String> start() throws IOException { + @Transactional + public ReturnT<String> start() { + boolean success = true; + log.info("url:" + uri + path); + JSONObject jsonObject = null; + try { + jsonObject = doPostJsonData(); + } catch (IOException e) { + success = false; + e.printStackTrace(); + } + int code = jsonObject.getInteger("code"); + + if(code == 200){ + if(!Cools.isEmpty(jsonObject.getString("data")) && jsonObject.getString("data").length()>2){ + + JSONArray jsonArray = jsonObject.getJSONArray("data"); + List<JSONObject> jsonDataList = jsonArray.toJavaList(JSONObject.class); + + jsonDataList.forEach(data -> { + String orderNo = data.getString("orderNo"); + Order o = insertOrder(data,orderNo); + insertOrUpdateOrderDetl(data, o); + }); + } + + }else { + success = false; + log.error("璇锋眰mes鎺ュ彛鍝嶅簲閿欒锛屽搷搴旂爜涓�: " + code); + } + saveApiLog(jsonObject.toJSONString(),success); return SUCCESS; } + + /* + 淇濆瓨鏃ュ織 + */ + private void saveApiLog(String response, boolean success){ + apiLogService.save( + "鐢熸垚鍑哄簱鍗曟嵁", + uri + path, + null, + "127.0.0.1", + null, + response, + success + ); + } + + /* + 鍙戣捣涓�涓姹傛潵鑾峰彇鏈幏鍙栬繃鐨勫崟鎹俊鎭� + */ + private JSONObject doPostJsonData() throws IOException { + + Map<String, Object> requestParamMap = MesSyncUtil.getRequestParamMap(); + //鑾峰彇鏈幏鍙栬繃鐨勬墍鏈夊崟鎹� + requestParamMap.put("type",0); + + return JSON.parseObject( new HttpHandler.Builder() + .setUri(uri) + .setPath(path) + .setParams(requestParamMap) + .build() + .doPostWithParam()); + } + + /* + 鏂板order淇℃伅 + */ + private Order insertOrder(JSONObject jsonData, String orderNo){ + Order o = orderService.selectByNo(orderNo); + if (!Cools.isEmpty(o)) { + throw new CoolException(jsonData.getString("orderNo") + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦"); + } + + o = orderMapping(jsonData); + if (!orderService.insert(o)) { + throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + return o; + } + + /* + 鏍规嵁orderNo銆乵atnr銆乥atch锛屾柊澧炴垨鑰呮洿鏀筼rderDetl淇℃伅 + */ + private void insertOrUpdateOrderDetl(JSONObject jsonData, Order o){ + List<DiaphragmInfo> diaphragmInfoList = JSONObject.parseArray(jsonData.getString("orderDetails"),DiaphragmInfo.class); + + diaphragmInfoList.forEach(d -> { + EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>(); + wrapper.eq("order_no",o.getOrderNo()).eq("matnr",d.getItemCode()).eq("batch",d.getBatchNo()); + OrderDetl od = orderDetlService.selectOne(wrapper); + if(od == null){ + od = new OrderDetl(); + od.setOrderNo(o.getOrderNo()); + od.setOrderId(o.getId()); + orderDetlMapping(d,od); + orderDetlService.insert(od); + }else { + od.setQty(od.getQty() + d.getQuantity().doubleValue()); + od.setAnfme(od.getAnfme() + d.getAssQuantity().doubleValue()); + od.setUpdateTime(new Date()); + orderDetlService.updateById(od); + } + }); + } + + /* + 鏄犲皠Order绫诲拰jsonData鐨勫瓧娈� + */ + private Order orderMapping(JSONObject jsonData){ + Order o = new Order(); + o.setStatus(1); + //璁剧疆璁㈠崟鐘舵�� --- 鍒濆鍖栫姸鎬� + o.setSettle(0L); + //uuid + o.setUuid(String.valueOf(snowflakeIdWorker.nextId())); + //鍗曟嵁缂栧彿 + o.setOrderNo(jsonData.getString("orderNo")); + //鍗曟嵁鏃堕棿 + o.setOrderTime(jsonData.getString("orderTime")); + //鍗曟嵁绫诲瀷 + DocType docType = docTypeService.selectOrAdd(jsonData.getString("orderType"), Boolean.TRUE); + //鐗╂祦鍚嶇О -- 鍏ュ簱搴撴埧鍚嶇О(绔嬩綋搴撳悕绉�) + o.setShipName(jsonData.getString("storage")); + o.setDocType(docType.getDocId()); + o.setCreateTime(new Date()); + o.setUpdateTime(new Date()); + return o; + } + + /* + 鏄犲皠OrderDetl涓庨殧鑶滀俊鎭被鐨勫瓧娈靛叧绯� + */ + private void orderDetlMapping(DiaphragmInfo d, OrderDetl od){ + //鎵瑰彿 -- 鐢熶骇鎵瑰彿 + od.setBatch(d.getBatchNo()); + //鍟嗗搧缂栫爜 -- 鐗╂枡缂栫爜 + od.setMatnr(d.getItemCode()); + //鍟嗗搧鍚嶇О -- 鐗╂枡鍚嶇О + od.setMaktx(d.getItemName()); + //鏁伴噺 -- 鏁伴噺 + od.setAnfme(d.getQuantity() == null ? null : d.getQuantity().doubleValue()); + //瀹屾垚鏁伴噺 -- 杈呮暟閲� + od.setQty(d.getAssQuantity() == null ? null : d.getAssQuantity().doubleValue()); + //瑙勬牸 -- 瑙勬牸/鍨嬪彿 + od.setSpecs(d.getStd()); + //澶囨敞 -- 澶囨敞 + od.setMemo(d.getNote()); + //鏉″舰鐮� -- 鏉″舰鐮� + od.setQrCode(d.getBarCode()); + //棰滆壊 -- 澶у嵎浣嶇疆 + od.setColor(d.getPosition()); + //鍨嬪彿 -- 灏忓嵎浣嶇疆 + od.setModel(d.getPosition2()); + //鍝佺墝 -- 绛夌骇 + od.setBrand(d.getGrade()); + //鏀跺嵎寮�濮嬫棩鏈� + od.setStartDate(d.getStartDate()); + //鏀跺嵎缁撴潫鏃ユ湡 + od.setEndDate(d.getEndDate()); + + od.setCreateTime(new Date()); + od.setUpdateTime(new Date()); + } } -- Gitblit v1.9.1