From eddd13490f2d17c70841d468cf5cac3779f9886b Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期三, 24 四月 2024 15:02:42 +0800 Subject: [PATCH] 添加图号 --- src/main/java/com/zy/asrs/controller/OrderController.java | 358 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 347 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java index d79943c..3cb5159 100644 --- a/src/main/java/com/zy/asrs/controller/OrderController.java +++ b/src/main/java/com/zy/asrs/controller/OrderController.java @@ -1,5 +1,7 @@ package com.zy.asrs.controller; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; @@ -7,21 +9,26 @@ import com.core.annotations.ManagerAuth; import com.core.common.*; import com.core.exception.CoolException; -import com.zy.asrs.entity.DocType; -import com.zy.asrs.entity.Order; -import com.zy.asrs.entity.OrderDetl; +import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.InFormIdParam; import com.zy.asrs.entity.param.OrderDomainParam; -import com.zy.asrs.service.DocTypeService; -import com.zy.asrs.service.OrderDetlService; -import com.zy.asrs.service.OrderService; +import com.zy.asrs.service.*; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler; import com.zy.common.model.DetlDto; +import com.zy.common.utils.HttpHandler; import com.zy.common.web.BaseController; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; - +@Slf4j @RestController public class OrderController extends BaseController { @@ -33,6 +40,32 @@ private SnowflakeIdWorker snowflakeIdWorker; @Autowired private DocTypeService docTypeService; + @Autowired + private WrkDetlService wrkDetlService; + @Autowired + private WaitPakinService waitPakinService; + @Autowired + private LocDetlService locDetlService; + @Value("${erp.address.URL}") + //绔彛 + private String URL; + + @Value("${erp.address.inaddress}") + //鍗曟嵁锛屽晢鍝佹。妗堝湴鍧� + private String inaddress; + + @Autowired + private ApiLogService apiLogService; + + @Autowired + private LoginAuthenticationHandler loginAuthenticationHandler; + + @Autowired + private MatService matService; + + @Autowired + private TagService tagService; + @RequestMapping(value = "/order/nav/list/auth") @ManagerAuth @@ -89,6 +122,14 @@ @ManagerAuth(memo = "鎵嬪姩娣诲姞璁㈠崟") @Transactional public R formAdd(@RequestBody OrderDomainParam param){ + if(Cools.isEmpty(param.getOrderNo())){ + String prefix = ""; + DocType docType = docTypeService.selectById(param.getDocType()); + if(!Cools.isEmpty(docType)){ + prefix = docType.getPakin() == 1 ? "RK" : "CK"; + } + param.setOrderNo(prefix + snowflakeIdWorker.nextId()); + } Order order = orderService.selectByNo(param.getOrderNo()); if (order != null) { return R.error("鍗曟嵁缂栧彿宸插瓨鍦�"); @@ -214,10 +255,6 @@ } - - - - // ------------------------------------------------------------------------------------------------ @RequestMapping(value = "/order/{id}/auth") @@ -259,6 +296,16 @@ if (Cools.isEmpty(order) || null == order.getId()){ return R.error(); } + + //璁㈠崟瀹岀粨鍓嶏紝鍒ゆ柇鏄惁瀛樺湪浣滀笟涓暟鎹紝瀛樺湪鍒欎笉鑳藉畬缁� + if(order.getSettle() == 4){ + int wrkCount = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no",order.getOrderNo())); + int pakinCount = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no",order.getOrderNo())); + if (wrkCount > 0 || pakinCount > 0) { + throw new CoolException("瀛樺湪浣滀笟涓暟鎹紝涓嶈兘瀹岀粨銆傝妫�鏌ュ叆搴撻�氱煡妗e拰宸ヤ綔妗�"); + } + } + order.setUpdateBy(getUserId()); order.setUpdateTime(new Date()); if (!orderService.updateById(order)) { @@ -320,4 +367,293 @@ return R.ok(); } + + @RequestMapping(value = "/order/form/add/authtest") + @ManagerAuth(memo = "鎵嬪姩娣诲姞璁㈠崟") + @Transactional + public R formAddTest(@RequestBody OrderDomainParam param){ + if(Cools.isEmpty(param.getOrderNo())){ + String prefix = ""; + DocType docType = docTypeService.selectById(param.getDocType()); + if(!Cools.isEmpty(docType)){ + prefix = docType.getPakin() == 1 ? "RK" : "CK"; + } + param.setOrderNo(prefix + snowflakeIdWorker.nextId()); + } + Order order = orderService.selectByNo(param.getOrderNo()); + if (order != null) { + return R.error("鍗曟嵁缂栧彿宸插瓨鍦�"); + } + Date now = new Date(); + order = new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + param.getOrderNo(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + param.getDocType(), // 鍗曟嵁绫诲瀷 + 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, // 鐘舵�� + getUserId(), // 娣诲姞浜哄憳 + now, // 娣诲姞鏃堕棿 + getUserId(), // 淇敼浜哄憳 + now, // 淇敼鏃堕棿 + null // 澶囨敞 + ); + if (!orderService.insert(order)) { + throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触"); + } + List<DetlDto> list = new ArrayList<>(); + for (OrderDetl orderDetl : param.getOrderDetlList()) { + DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch()); + if (DetlDto.has(list, dto)) { + OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch()); + item.setAnfme(item.getAnfme() + orderDetl.getAnfme()); + if (!orderDetlService.updateById(item)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } + } else { + list.add(dto); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(getUserId()); + orderDetl.setCreateTime(now); + orderDetl.setUpdateBy(getUserId()); + orderDetl.setUpdateTime(now); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + + //缁欐坊鍔犲瓙璁㈠崟 + Set<String> exist = new HashSet<>(); + List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); + + + if (!orderDetlService.insert(orderDetl)) { + throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�"); + } + } + } + return R.ok("璁㈠崟娣诲姞鎴愬姛"); + } + + @RequestMapping(value = "/order/form/KingDeeadd/authtest") + @ManagerAuth(memo = "鏍规嵁璁㈠崟绫诲瀷鍜岃鍗曠爜娣诲姞") + @Transactional + public R KingDeeformAddTest(@RequestBody OrderDomainParam param){ + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + //鐧诲綍閲戣澏 + ReturnT<String> start = loginAuthenticationHandler.start(); + InFormIdParam inFormIdParam = new InFormIdParam(); + //鏁伴噺瀛楁ncompatible types. Found: 'java.lang.Long', required: 'char, byte, short, int, Character, Byte, Short, Integer, String, or an enum' + String anfme =null; + int i=Long.valueOf(param.getDocType()).intValue(); + switch (i){ + //閲囪喘鍏ュ簱 + case 13 : inFormIdParam.setFormId("STK_InStock");anfme ="FRealQty"; break; + //閲囪喘閫�鏂� + case 21 : inFormIdParam.setFormId("PUR_MRB");anfme ="FRMREALQTY"; break; + //鐢熶骇棰嗘枡 + case 22 : inFormIdParam.setFormId("PRD_PickMtrl");anfme ="FActualQty"; break; + //鐢熶骇閫�鏂� + case 24 : inFormIdParam.setFormId("PRD_ReturnMtrl");anfme ="FQty"; break; + //鐢熶骇琛ユ枡 + case 25 : inFormIdParam.setFormId("PRD_FeedMtrl");anfme ="FActualQty"; break; + //鐩存帴璋冩嫧鍗� + case 26 : inFormIdParam.setFormId("STK_TransferDirect");anfme ="FQty"; break; + //鐩樼泩鍗� + case 28 : inFormIdParam.setFormId("STK_StockCountGain");anfme ="FGainQty"; break; + //鐩樹簭鍗� + case 29 : inFormIdParam.setFormId("STK_StockCountLoss");anfme ="FLossQty"; break; + //鍏朵粬鍑哄簱 + case 30 : inFormIdParam.setFormId("STK_MisDelivery");anfme ="FQty"; break; + //绠�鍗曠敓浜ч鏂� + case 31 : inFormIdParam.setFormId("SP_PickMtrl");anfme ="FActualQty"; break; + //绠�鍗曠敓浜ч��鏂� + case 32 : inFormIdParam.setFormId("SP_ReturnMtrl");anfme ="FQty"; break; + //閿�鍞嚭搴� + case 14 : inFormIdParam.setFormId("SAL_OUTSTOCK");anfme ="FRealQty"; break; + //閿�鍞��璐� + case 33 : inFormIdParam.setFormId("SAL_RETURNSTOCK");anfme ="FRealQty"; break; + } + inFormIdParam.setLimit(100); + inFormIdParam.setStartRow("0"); + String FDocumentStatus = "B"; + + //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("FormId", inFormIdParam.getFormId()); + jsonObject.put("Limit", inFormIdParam.getLimit()); + jsonObject.put("StartRow", inFormIdParam.getStartRow()); + //鍗曟嵁鐘舵�� + FDocumentStatus="B"; + //璁㈠崟鐮� + String orderNo= param.getOrderNo(); + jsonObject.put("FilterString", "FBillNo='"+orderNo+"'and FStockId.Fname='绔嬪簱'"+" and FDocumentStatus='"+FDocumentStatus+"'"); + jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+anfme+",FDocumentStatus"); + // FBillNo :鍗曟嵁缂栧彿锛� + // FCreateDate 锛氬崟鎹垱寤烘椂闂达紱 + // FMaterialId.FNumber : 鐗╂枡缂栫爜锛� + // FMaterialName 锛氱墿鏂欏悕绉帮紱 + // FMaterialId.FSpecification锛氱墿鏂欒鏍� + // anfme : 鐗╂枡鏁伴噺 + // FDocumentStatus 锛氬崟鎹姸鎬侊紱 + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("data", jsonObject); + String add = jsonObject1.toJSONString(); + + //涓婃姤 + String response = ""; + boolean success = false; + try { + //鑾峰彇Cookie鍊� + HashMap<String, Object> headers = new HashMap<>(); + headers.put("Cookie", start.getContent()); + response = new HttpHandler.Builder() + .setHeaders(headers) + .setUri(URL) + .setPath(inaddress) + .setJson(add) + .build() + .doPost(); + JSONArray data = JSON.parseArray(response); + if(data.getJSONArray(0).get(0).toString().length()<20){ + success = true; + for (int j = 0; j < data.size(); j++) { + JSONArray jsonArray = data.getJSONArray(j); + Order order = orderService.selectByNo(jsonArray.get(0).toString()); + if (Cools.isEmpty(order)) { + DocType docType = docTypeService.selectById(param.getDocType()); + Date now = new Date(); + // 鍗曟嵁涓绘。 + order = new Order( + String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖] + jsonArray.get(0).toString(), // 璁㈠崟缂栧彿 + DateUtils.convert(now), // 鍗曟嵁鏃ユ湡 + docType.getDocId(), // 鍗曟嵁绫诲瀷 + 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 // 澶囨敞 + ); + //瀵圭編鍥芥椂闂磋繘琛岃浆鎹� + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; + LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(1).toString(), formatter); + String format = dateFormat.format(dateTime); + Date date = sdf.parse(format); + //鏈�鏂版姄鍙栨椂闂� + docType.setCreateTime(date); + docTypeService.update(docType, new EntityWrapper<DocType>().eq("doc_id", param.getDocType())); + if (!orderService.insert(order)) { + throw new CoolException("鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + //鐗╂枡缂栫爜 + Mat mat = matService.selectByMatnr(jsonArray.get(2).toString()); + if (Cools.isEmpty(mat)) { + throw new CoolException(jsonArray.get(2).toString() + "缂栧彿鍟嗗搧妫�绱㈠け璐ワ紝璇峰厛娣诲姞鍟嗗搧"); + } + OrderDetl orderDetl1 = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", jsonArray.get(0).toString()).eq("matnr", jsonArray.get(2).toString())); + if (!Cools.isEmpty(orderDetl1)) { + continue; + } + DocType docType = docTypeService.selectById(param.getDocType()); + OrderDetl orderDetl = new OrderDetl(); + orderDetl.sync(mat); + orderDetl.setBatch(null); + orderDetl.setAnfme(Double.parseDouble(jsonArray.get(5).toString())); + orderDetl.setOrderId(order.getId()); + orderDetl.setOrderNo(order.getOrderNo()); + orderDetl.setCreateBy(9527L); + orderDetl.setCreateTime(new Date()); + orderDetl.setUpdateBy(9527L); + orderDetl.setUpdateTime(new Date()); + orderDetl.setStatus(1); + orderDetl.setQty(0.0D); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); + DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; + LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(1).toString(), formatter); + String format = dateFormat.format(dateTime); + Date date = sdf.parse(format); + //鏈�鏂版姄鍙栨椂闂� + docType.setCreateTime(date); + if (!orderDetlService.insert(orderDetl)) { + throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } + }else{ + throw new CoolException("娌℃湁鎵惧埌鎸囧畾璁㈠崟锛岃鑱旂郴绠$悊鍛�"); + } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "杞鏁版嵁", + URL + inaddress, + null, + "127.0.0.1", + add, + response, + success + ); + } catch (Exception e) { + log.error("", e); + } + } + return R.ok("璁㈠崟娣诲姞鎴愬姛"); + } + + + + } -- Gitblit v1.9.1