From d85016e8ca551b6672e123d3a56ac4c12554fb45 Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期五, 30 八月 2024 14:44:20 +0800
Subject: [PATCH] 优化轮询获取出库单

---
 src/main/java/com/zy/asrs/controller/MatController.java |  250 +++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 218 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java
index b842a73..0eb8600 100644
--- a/src/main/java/com/zy/asrs/controller/MatController.java
+++ b/src/main/java/com/zy/asrs/controller/MatController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.excel.EasyExcel;
 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
@@ -10,19 +11,26 @@
 import com.core.annotations.ManagerAuth;
 import com.core.common.*;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.Mat;
-import com.zy.asrs.entity.MatPrint;
-import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.InFormIdParam;
 import com.zy.asrs.entity.result.KeyValueVo;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.MatService;
+import com.zy.asrs.service.TagService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler;
 import com.zy.asrs.utils.MatExcelListener;
 import com.zy.common.CodeRes;
 import com.zy.common.config.AdminInterceptor;
 import com.zy.common.entity.MatExcel;
 import com.zy.common.utils.BarcodeUtils;
+import com.zy.common.utils.HttpHandler;
 import com.zy.common.utils.QrCode;
 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 org.springframework.web.multipart.MultipartFile;
@@ -32,24 +40,46 @@
 import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @RestController
+@Slf4j
 public class MatController extends BaseController {
 
+    @Value("${erp.address.URL}")
+    //绔彛
+    private String URL;
+
+    @Value("${erp.address.inaddress}")
+    //鍗曟嵁锛屽晢鍝佹。妗堝湴鍧�
+    private String inaddress;
+
+    @Autowired
+    private TagService tagService;
+
+    @Autowired
+    private ApiLogService apiLogService;
     @Autowired
     private MatService matService;
     @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private LoginAuthenticationHandler loginAuthenticationHandler;
 
     @RequestMapping(value = "/mat/auto/matnr/auth")
-    public R autoMatnr(){
+    public R autoMatnr() {
         return R.ok().add("YJ" + DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmsssss).substring(0, 16));
     }
 
     @RequestMapping(value = "/mat/list/pda/auth")
     @ManagerAuth
-    public R pdaList(@RequestParam(required = true)Long tagId){
+    public R pdaList(@RequestParam(required = true) Long tagId) {
         EntityWrapper<Mat> wrapper = new EntityWrapper<>();
         wrapper.eq("tag_id", tagId);
         wrapper.orderBy("create_time", false);
@@ -59,7 +89,7 @@
 
     @RequestMapping(value = "/mat/search/pda/auth")
     @ManagerAuth
-    public R pdaSearch(@RequestParam(required = false)String condition){
+    public R pdaSearch(@RequestParam(required = false) String condition) {
         EntityWrapper<Mat> wrapper = new EntityWrapper<>();
         if (!Cools.isEmpty(condition)) {
             wrapper.like("matnr", condition).or().like("maktx", condition);
@@ -75,7 +105,7 @@
         return R.ok(matService.selectById(String.valueOf(id)));
     }
 
-    @RequestMapping(value = "/matCode/auth0")
+    @RequestMapping(value = "/mat/auth")
     @ManagerAuth
     public R find(@RequestParam("matnr") String matnr) {
         return R.ok(matService.selectOne(new EntityWrapper<Mat>().eq("matnr", matnr)));
@@ -83,11 +113,11 @@
 
     @RequestMapping(value = "/mat/list/auth")
     @ManagerAuth
-    public R list(@RequestParam(defaultValue = "1")Integer curr,
-                  @RequestParam(defaultValue = "10")Integer limit,
-                  @RequestParam(required = false)String orderByField,
-                  @RequestParam(required = false)String orderByType,
-                  @RequestParam Map<String, Object> param){
+    public R list(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String orderByField,
+                  @RequestParam(required = false) String orderByType,
+                  @RequestParam Map<String, Object> param) {
         Object tagId = param.get("tag_id");
         if (Cools.isEmpty(tagId)) {
             tagId = getOriginTag().getId();
@@ -95,15 +125,17 @@
         return R.ok(matService.getPage(new Page<>(curr, limit)
                 , String.valueOf(tagId)
                 , param.get("matnr")
-                , param.get("maktx"))
+                , param.get("maktx")
+                , param.get("specs")
+                , param.get("model"))
         );
 
     }
 
-    private void convert(Map<String, Object> map, EntityWrapper wrapper){
-        for (Map.Entry<String, Object> entry : map.entrySet()){
+    private void convert(Map<String, Object> map, EntityWrapper wrapper) {
+        for (Map.Entry<String, Object> entry : map.entrySet()) {
             String val = String.valueOf(entry.getValue());
-            if (val.contains(RANGE_TIME_LINK)){
+            if (val.contains(RANGE_TIME_LINK)) {
                 String[] dates = val.split(RANGE_TIME_LINK);
                 wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
                 wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
@@ -131,10 +163,158 @@
         return R.ok();
     }
 
-	@RequestMapping(value = "/mat/update/auth")
-	@ManagerAuth
-    public R update(Mat mat){
-        if (Cools.isEmpty(mat) || null==mat.getId()){
+    @RequestMapping(value = "/mat/KingDeeadd/auth")
+    @ManagerAuth
+    public R KingDeeadd() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        //鐧诲綍閲戣澏
+        ReturnT<String> start = loginAuthenticationHandler.start();
+
+        InFormIdParam inFormIdParam = new InFormIdParam();
+        inFormIdParam.setFormId("BD_MATERIAL");
+        inFormIdParam.setLimit(10000000);
+        inFormIdParam.setStartRow("0");
+        String FDocumentStatus = "C";
+
+        // 鑾峰彇褰撳墠鏃ユ湡
+        LocalDate currentDate = LocalDate.now();
+        // 鑾峰彇鍓嶄竴涓湀鐨勫悓涓�澶�
+        LocalDate previousMonthDate = currentDate.minusMonths(1);
+
+        // 鏍煎紡鍖栨棩鏈熶负 "yyyyMMdd" 鏍煎紡
+        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        String formattedDate2 = previousMonthDate.format(formatter1);
+
+        //鏉′欢鍜岄渶瑕佽幏寰楃殑缁撴灉鎷兼帴
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("FormId", inFormIdParam.getFormId());
+        jsonObject.put("Limit", inFormIdParam.getLimit());
+        jsonObject.put("StartRow", inFormIdParam.getStartRow());
+        jsonObject.put("FilterString", "FCreateDate>'" + formattedDate2 + "' and FDocumentStatus='" + FDocumentStatus + "' and FUseOrgId .FNumber='201'");
+        jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus,FTuhao");
+        // FName : 鐗╂枡鍚嶇О 锛�
+        // FNumber 锛氱墿鏂欑紪鍙凤紱
+        // FCreateDate 锛氱墿鏂欏垱寤烘椂闂达紱
+        // FSpecification 锛氱墿鏂欒鏍硷紱
+        // 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);
+            int i = 0;
+            if (data.size() > 0) {
+                if (data.getJSONArray(0).get(0).toString().length() < 20) {
+                    if (i == 0) {
+                        for (int j = 0; j < data.size(); j++) {
+                            JSONArray jsonArray = data.getJSONArray(j);
+                            //鐢熸垚鍟嗗搧妗f
+                            //鍟嗗搧缂栧彿
+                            Mat mat = matService.selectByMatnr(jsonArray.get(1).toString());
+                            if (mat == null) {
+                                mat = new Mat();
+                                Tag tag = new Tag();
+                                mat.setMatnr(jsonArray.get(1).toString());
+                                mat.setMaktx(jsonArray.get(0).toString());
+                                mat.setSpecs(jsonArray.get(3).toString());//瑙勬牸
+                                mat.setModel(jsonArray.get(5).toString());//鍥惧彿
+                                mat.setTagId(20L);
+                                //瀵圭編鍥芥椂闂磋繘琛岃浆鎹�
+                                DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
+                                DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
+                                LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(2).toString(), formatter);
+                                String format = dateFormat.format(dateTime);
+                                Date date = sdf.parse(format);
+                                mat.setCreateTime(date);//鍟嗗搧鍒涘缓鏃堕棿
+                                mat.setUpdateTime(new Date());
+                                mat.setStatus(1);
+                                //鏈�鏂版姄鍙栧晢鍝佹椂闂�
+                                tag.setCreateTime(date);
+                                tagService.update(tag, new EntityWrapper<Tag>().eq("id", 20));
+                                if (!matService.insert(mat)) {
+                                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                                } else {
+                                    log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+
+//            if (data.getJSONArray(0).get(0).toString().length() < 20) {
+//                success = true;
+//                JSONArray jsonArray = data.getJSONArray(0);
+//                //鐢熸垚鍟嗗搧妗f
+//                //鍟嗗搧缂栧彿
+//                mat = matService.selectByMatnr(jsonArray.get(1).toString());
+//                if (mat == null) {
+//                    mat = new Mat();
+//                    Tag tag = new Tag();
+//                    mat.setMatnr(jsonArray.get(1).toString());
+//                    mat.setMaktx(jsonArray.get(0).toString());
+//                    mat.setSpecs(jsonArray.get(3).toString());//瑙勬牸
+//                    mat.setTagId(20L);
+//                    //瀵圭編鍥芥椂闂磋繘琛岃浆鎹�
+//                    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
+//                    DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
+//                    LocalDateTime dateTime = LocalDateTime.parse(jsonArray.get(2).toString(), formatter);
+//                    String format = dateFormat.format(dateTime);
+//                    Date date = sdf.parse(format);
+//                    mat.setCreateTime(date);//鍟嗗搧鍒涘缓鏃堕棿
+//                    mat.setUpdateTime(new Date());
+//                    mat.setStatus(1);
+//                    //鏈�鏂版姄鍙栧晢鍝佹椂闂�
+//                    tag.setCreateTime(date);
+//                    tagService.update(tag, new EntityWrapper<Tag>().eq("id", 20));
+//                    if (!matService.insert(mat)) {
+//                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                    } else {
+//                        log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+//                    }
+//                }
+//            } else {
+//                throw new CoolException("娌℃湁鎵惧埌鎸囧畾鐗╂枡妗f锛岃鑱旂郴绠$悊鍛�");
+//            }
+        } 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();
+    }
+
+    @RequestMapping(value = "/mat/update/auth")
+    @ManagerAuth
+    public R update(Mat mat) {
+        if (Cools.isEmpty(mat) || null == mat.getId()) {
             return R.error();
         }
         mat.setUpdateBy(getUserId());
@@ -145,12 +325,18 @@
 
     @RequestMapping(value = "/mat/delete/auth")
     @ManagerAuth
-    public R delete(@RequestParam String param){
+    @Transactional
+    public R delete(@RequestParam String param) {
         List<Mat> list = JSONArray.parseArray(param, Mat.class);
-        if (Cools.isEmpty(list)){
+        if (Cools.isEmpty(list)) {
             return R.error();
         }
-        for (Mat entity : list){
+
+        for (Mat entity : list) {
+            LocDetl locDetl = locDetlService.selectByMatnr(entity.getMatnr());
+            if (!Cools.isEmpty(locDetl)) {
+                throw new CoolException("褰撳墠鐗╂枡鍦ㄥ簱锛屾棤娉曞垹闄わ紒");
+            }
             if (!matService.delete(new EntityWrapper<>(entity))) {
                 throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
@@ -160,7 +346,7 @@
 
     @RequestMapping(value = "/mat/export/auth")
     @ManagerAuth
-    public R export(@RequestBody JSONObject param){
+    public R export(@RequestBody JSONObject param) {
         EntityWrapper<Mat> wrapper = new EntityWrapper<>();
         List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
         Map<String, Object> map = excludeTrash(param.getJSONObject("mat"));
@@ -176,7 +362,7 @@
         wrapper.like("matnr", condition).or().like("maktx", condition);
         Page<Mat> page = matService.selectPage(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
-        for (Mat mat : page.getRecords()){
+        for (Mat mat : page.getRecords()) {
             Map<String, Object> map = new HashMap<>();
             map.put("id", mat.getId());
             map.put("value", mat.getMatnr() + "(" + mat.getMaktx() + ")");
@@ -189,7 +375,7 @@
     @ManagerAuth
     public R query(@RequestBody JSONObject param) {
         Wrapper<Mat> wrapper = new EntityWrapper<Mat>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
-        if (null != matService.selectOne(wrapper)){
+        if (null != matService.selectOne(wrapper)) {
             return R.parse(BaseRes.REPEAT).add(getComment(Mat.class, String.valueOf(param.get("key"))));
         }
         return R.ok();
@@ -203,7 +389,7 @@
             return R.ok();
         }
         OrderDetl orderDetl = new OrderDetl();
-        orderDetl.sync(orderDetl);
+        orderDetl.sync(mat);
         orderDetl.setAnfme(0.0D);
         return R.ok().add(orderDetl);
     }
@@ -216,7 +402,7 @@
             , @RequestParam String param
             , HttpServletResponse response) throws Exception {
         AdminInterceptor.cors(response);
-        if (Cools.isEmpty(param)){
+        if (Cools.isEmpty(param)) {
             return R.parse(BaseRes.EMPTY);
         }
         BufferedImage img;
@@ -237,11 +423,11 @@
     @RequestMapping(value = "/mat/print/auth")
     @ManagerAuth(memo = "鍟嗗搧缂栫爜鎵撳嵃")
     public R matCodePrint(@RequestParam(value = "param[]") String[] param) {
-        if(Cools.isEmpty(param)) {
+        if (Cools.isEmpty(param)) {
             return R.parse(CodeRes.EMPTY);
         }
         List<MatPrint> res = new ArrayList<>();
-        for (String matnr : param){
+        for (String matnr : param) {
             Mat mat = matService.selectByMatnr(matnr);
             // 鎵撳嵃鏁版嵁娉ㄥ叆
             MatPrint print = new MatPrint();
@@ -282,7 +468,7 @@
     public R matExcelImport(MultipartFile file) throws IOException {
         MatExcelListener listener = new MatExcelListener(getUserId());
         EasyExcel.read(file.getInputStream(), MatExcel.class, listener).sheet().doRead();
-        return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉″晢鍝佹暟鎹�");
+        return R.ok("鎴愬姛鍚屾" + listener.getTotal() + "鏉″晢鍝佹暟鎹�");
     }
 
     /*************************************** xm-select ***********************************************/
@@ -299,7 +485,7 @@
         for (Mat mat : mats) {
             KeyValueVo vo = new KeyValueVo();
             vo.setName(mat.getMatnr() + " - " + mat.getMaktx());
-            vo.setValue(mat.getId());
+            vo.setValue(mat.getMatnr());
             valueVos.add(vo);
         }
         return R.ok().add(valueVos);

--
Gitblit v1.9.1