自动化立体仓库 - WMS系统
野心家
2024-08-05 00d83fc72c84383c506e8a8c0584d1292cafc260
完善
3个文件已修改
268 ■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/MatController.java 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/MatController.java
@@ -41,6 +41,7 @@
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.*;
@@ -164,10 +165,7 @@
    @RequestMapping(value = "/mat/KingDeeadd/auth")
    @ManagerAuth
    public R KingDeeadd(Mat mat) {
        if (null != matService.selectByMatnr(mat.getMatnr())) {
            return R.error("编号已存在");
        }
    public R KingDeeadd() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //登录金蝶
        ReturnT<String> start = loginAuthenticationHandler.start();
@@ -177,14 +175,28 @@
        inFormIdParam.setLimit(100);
        inFormIdParam.setStartRow("0");
        String FDocumentStatus = "C";
        String FNumber=mat.getMatnr();
        // 获取当前日期
        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", "FDocumentStatus='" + FDocumentStatus +"' and FNumber='"+FNumber+"' and FUseOrgId .FNumber='201'");
        jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus");
        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();
@@ -203,40 +215,80 @@
                    .build()
                    .doPost();
            JSONArray data = JSON.parseArray(response);
            if (data.getJSONArray(0).get(0).toString().length()<20) {
                success = true;
            JSONArray jsonArray = data.getJSONArray(0);
            //生成商品档案
            //商品编号
            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());
            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);
                            //生成商品档案
                            //商品编号
                            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());
                                }
                            }
                        }
                    }
                }
            }
            }else {
                throw new CoolException("没有找到指定物料档案,请联系管理员");
            }
//            if (data.getJSONArray(0).get(0).toString().length() < 20) {
//                success = true;
//                JSONArray jsonArray = data.getJSONArray(0);
//                //生成商品档案
//                //商品编号
//                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("没有找到指定物料档案,请联系管理员");
//            }
        } catch (Exception e) {
            log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -26,6 +26,7 @@
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
@@ -70,49 +71,103 @@
    @Transactional
    public synchronized ReturnT<String> start() {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //登录金蝶
        ReturnT<String> start = loginAuthenticationHandler.start();
        for(int i=0;i<14;i++) {
        for (int i = 0; i < 14; i++) {
            InFormIdParam inFormIdParam = new InFormIdParam();
            //对应订单类型ID
            int docName=0;
            int docName = 0;
            //数量字段
            String anfme =null;
            switch (i){
            String anfme = null;
            switch (i) {
                //物料档案
                case 0 : inFormIdParam.setFormId("BD_MATERIAL"); break;
                case 0:
                    inFormIdParam.setFormId("BD_MATERIAL");
                    break;
                //采购入库
                case 1 : inFormIdParam.setFormId("STK_InStock");docName=13;anfme ="FRealQty"; break;
                case 1:
                    inFormIdParam.setFormId("STK_InStock");
                    docName = 13;
                    anfme = "FRealQty";
                    break;
                //采购退料
                case 2 : inFormIdParam.setFormId("PUR_MRB");docName=21;anfme ="FRMREALQTY"; break;
                case 2:
                    inFormIdParam.setFormId("PUR_MRB");
                    docName = 21;
                    anfme = "FRMREALQTY";
                    break;
                //生产领料
                case 3 : inFormIdParam.setFormId("PRD_PickMtrl");docName=22;anfme ="FActualQty"; break;
                case 3:
                    inFormIdParam.setFormId("PRD_PickMtrl");
                    docName = 22;
                    anfme = "FActualQty";
                    break;
                //生产退料
                case 4 : inFormIdParam.setFormId("PRD_ReturnMtrl");docName=24;anfme ="FQty"; break;
                case 4:
                    inFormIdParam.setFormId("PRD_ReturnMtrl");
                    docName = 24;
                    anfme = "FQty";
                    break;
                //生产补料
                case 5 : inFormIdParam.setFormId("PRD_FeedMtrl");docName=25;anfme ="FActualQty"; break;
                case 5:
                    inFormIdParam.setFormId("PRD_FeedMtrl");
                    docName = 25;
                    anfme = "FActualQty";
                    break;
                //直接调拨单
                case 6 : inFormIdParam.setFormId("STK_TransferDirect");docName=26;anfme ="FQty"; break;
                case 6:
                    inFormIdParam.setFormId("STK_TransferDirect");
                    docName = 26;
                    anfme = "FQty";
                    break;
                //盘盈单
                case 7 : inFormIdParam.setFormId("STK_StockCountGain");docName=28;anfme ="FGainQty"; break;
                case 7:
                    inFormIdParam.setFormId("STK_StockCountGain");
                    docName = 28;
                    anfme = "FGainQty";
                    break;
                //盘亏单
                case 8 : inFormIdParam.setFormId("STK_StockCountLoss");docName=29;anfme ="FLossQty"; break;
                case 8:
                    inFormIdParam.setFormId("STK_StockCountLoss");
                    docName = 29;
                    anfme = "FLossQty";
                    break;
                //其他出库
                case 9 : inFormIdParam.setFormId("STK_MisDelivery");docName=30;anfme ="FQty"; break;
                case 9:
                    inFormIdParam.setFormId("STK_MisDelivery");
                    docName = 30;
                    anfme = "FQty";
                    break;
                //简单生产领料
                case 10 : inFormIdParam.setFormId("SP_PickMtrl");docName=31;anfme ="FActualQty"; break;
                case 10:
                    inFormIdParam.setFormId("SP_PickMtrl");
                    docName = 31;
                    anfme = "FActualQty";
                    break;
                //简单生产退料
                case 11 : inFormIdParam.setFormId("SP_ReturnMtrl");docName=32;anfme ="FQty"; break;
                case 11:
                    inFormIdParam.setFormId("SP_ReturnMtrl");
                    docName = 32;
                    anfme = "FQty";
                    break;
                //销售出库
                case 12 : inFormIdParam.setFormId("SAL_OUTSTOCK");docName=14;anfme ="FRealQty"; break;
                case 12:
                    inFormIdParam.setFormId("SAL_OUTSTOCK");
                    docName = 14;
                    anfme = "FRealQty";
                    break;
                //销售退货
                case 13 : inFormIdParam.setFormId("SAL_RETURNSTOCK");docName=33;anfme ="FRealQty"; break;
                case 13:
                    inFormIdParam.setFormId("SAL_RETURNSTOCK");
                    docName = 33;
                    anfme = "FRealQty";
                    break;
            }
            inFormIdParam.setLimit(100);
            inFormIdParam.setStartRow("0");
            Date time=new Date();
            String FDocumentStatus=null;
            Date time = new Date();
            String FDocumentStatus = null;
            //条件和需要获得的结果拼接
            JSONObject jsonObject = new JSONObject();
@@ -120,26 +175,33 @@
            jsonObject.put("Limit", inFormIdParam.getLimit());
            jsonObject.put("StartRow", inFormIdParam.getStartRow());
            //物料档案查询
            if(i==0){
                Tag tag = tagService.selectById(20);
                //最新时间
                time=tag.getCreateTime();
            if (i == 0) {
                // 获取当前日期
                LocalDate currentDate = LocalDate.now();
                // 获取前一个月的同一天
                LocalDate previousMonthDate = currentDate.minusMonths(1);
                // 格式化日期为 "yyyyMMdd" 格式
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                String formattedDate2 = previousMonthDate.format(formatter);
                //物料状态 FUseOrgId .FNumber
                FDocumentStatus="C";
                jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(time)+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='201'");
                FDocumentStatus = "C";
                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 :物料状态
            }else{
            } else {
                //获取最新时间
                DocType docType= docTypeService.selectById(docName);
                DocType docType = docTypeService.selectById(docName);
                //单据状态
                FDocumentStatus="B";
                jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(docType.getCreateTime())+"' and FStockId.Fname='立库'"+" and FDocumentStatus='"+FDocumentStatus+"'");
                jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+anfme+",FDocumentStatus");
                FDocumentStatus = "B";
                jsonObject.put("FilterString", "FCreateDate>'" + sdf.format(docType.getCreateTime()) + "' and FStockId.Fname='立库'" + " and FDocumentStatus='" + FDocumentStatus + "'");
                jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification," + anfme + ",FDocumentStatus");
                // FBillNo :单据编号;
                // FCreateDate :单据创建时间;
                // FMaterialId.FNumber : 物料编码;
@@ -167,8 +229,8 @@
                        .build()
                        .doPost();
                JSONArray data = JSON.parseArray(response);
                if(data.size()>0) {
                if (data.getJSONArray(0).get(0).toString().length()<20) {
                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);
@@ -293,9 +355,9 @@
                                }
                            }
                        }
                    }else {
                    } else {
                    }
                }else {
                } else {
                }
            } catch (Exception e) {
                log.error("fail", e);
src/main/resources/application.yml
@@ -10,7 +10,7 @@
    enabled: false
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://10.10.10.215:1433;databasename=tzhtasrs
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=tzhtasrs
    username: sa
    password: sa@123
  mvc:
@@ -54,7 +54,7 @@
erp:
  #地址
  address:
    URL: http://ht01.wlgear.com:16001
    URL: http://192.168.3.102:16001
    #登录地址
    loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
    #单据,商品档案地址