自动化立体仓库 - WMS系统
#
LSH
2023-10-21 55364b8819e0bc7dc7a12de668f904bed16e8faf
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -9,10 +9,11 @@
import com.core.common.SnowflakeIdWorker;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.kingdee.*;
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.erp.kingdee.entity.param.InFormIdParam;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import com.zy.common.utils.HttpHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -66,42 +67,14 @@
        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<docTypeService.selectCount(new EntityWrapper<>())+2;i++) {
            InFormIdParam inFormIdParam = new InFormIdParam();
            //对应订单类型ID
            int docName=0;
            //数量字段
            String anfme =null;
            switch (i){
                //物料档案
                case 0 : inFormIdParam.setFormId("BD_MATERIAL"); break;
                //采购入库
                case 1 : inFormIdParam.setFormId("STK_InStock");docName=13;anfme ="FRealQty"; break;
                //采购退料
                case 2 : inFormIdParam.setFormId("PUR_MRB");docName=21;anfme ="FRMREALQTY"; break;
                //生产领料
                case 3 : inFormIdParam.setFormId("PRD_PickMtrl");docName=22;anfme ="FActualQty"; break;
                //生产退料
                case 4 : inFormIdParam.setFormId("PRD_ReturnMtrl");docName=24;anfme ="FQty"; break;
                //生产补料
                case 5 : inFormIdParam.setFormId("PRD_FeedMtrl");docName=25;anfme ="FActualQty"; break;
                //直接调拨单
                case 6 : inFormIdParam.setFormId("STK_TransferDirect");docName=26;anfme ="FQty"; break;
                //盘盈单
                case 7 : inFormIdParam.setFormId("STK_StockCountGain");docName=28;anfme ="FGainQty"; break;
                //盘亏单
                case 8 : inFormIdParam.setFormId("STK_StockCountLoss");docName=29;anfme ="FLossQty"; break;
                //其他出库
                case 9 : inFormIdParam.setFormId("STK_MisDelivery");docName=30;anfme ="FQty"; break;
                //简单生产领料
                case 10 : inFormIdParam.setFormId("SP_PickMtrl");docName=31;anfme ="FActualQty"; break;
                //简单生产退料
                case 11 : inFormIdParam.setFormId("SP_ReturnMtrl");docName=32;anfme ="FQty"; break;
                //销售出库
                case 12 : inFormIdParam.setFormId("SAL_OUTSTOCK");docName=14;anfme ="FRealQty"; break;
                //销售退货
                case 13 : inFormIdParam.setFormId("SAL_RETURNSTOCK");docName=33;anfme ="FRealQty"; break;
            KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get((short)i);
            if (Cools.isEmpty(kingDeeUtilType)){
                continue;
            }
            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", kingDeeUtilType.desc));
            inFormIdParam.setFormId(kingDeeUtilType.formId);
            inFormIdParam.setLimit(100);
            inFormIdParam.setStartRow("0");
            Date time=new Date();
@@ -113,7 +86,7 @@
            jsonObject.put("Limit", inFormIdParam.getLimit());
            jsonObject.put("StartRow", inFormIdParam.getStartRow());
            //物料档案查询
            if(i==0){
            if(inFormIdParam.getFormId().equals("BD_MATERIAL")){
                Tag tag = tagService.selectById(20);
                //最新时间
                time=tag.getCreateTime();
@@ -128,11 +101,10 @@
                // FDocumentStatus :物料状态
            }else{
                //获取最新时间
                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");
                jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+kingDeeUtilType.anfme+",FDocumentStatus");
                // FBillNo :单据编号;
                // FCreateDate :单据创建时间;
                // FMaterialId.FNumber : 物料编码;
@@ -160,8 +132,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)  continue;
                if (data.getJSONArray(0).get(0).toString().length()>=20) continue;
                        if (i == 0) {
                            for (int j = 0; j < data.size(); j++) {
                                JSONArray jsonArray = data.getJSONArray(j);
@@ -199,7 +171,6 @@
                                JSONArray jsonArray = data.getJSONArray(j);
                                Order order = orderService.selectByNo(jsonArray.get(0).toString());
                                if (Cools.isEmpty(order)) {
                                    DocType docType = docTypeService.selectById(docName);
                                    Date now = new Date();
                                    // 单据主档
                                    order = new Order(
@@ -246,7 +217,7 @@
                                    Date date = sdf.parse(format);
                                    //最新抓取时间
                                    docType.setCreateTime(date);
                                    docTypeService.update(docType, new EntityWrapper<DocType>().eq("doc_id", docName));
                            docTypeService.updateById(docType);
                                    if (!orderService.insert(order)) {
                                        throw new CoolException("生成单据主档失败,请联系管理员");
                                    }
@@ -260,7 +231,6 @@
                                if (!Cools.isEmpty(orderDetl1)) {
                                    continue;
                                }
                                DocType docType = docTypeService.selectById(docName);
                                OrderDetl orderDetl = new OrderDetl();
                                orderDetl.sync(mat);
                                orderDetl.setBatch(null);
@@ -284,10 +254,6 @@
                                    throw new CoolException("生成单据明细失败,请联系管理员");
                                }
                            }
                        }
                    }else {
                    }
                }else {
                }
            } catch (Exception e) {
                log.error("fail", e);