自动化立体仓库 - WMS系统
#
lsh
2024-12-16 ddb9f9d61b9125651c08fc460b5e499950531f24
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -12,6 +12,7 @@
import com.zy.asrs.service.*;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.utils.OrderInAndOutUtil;
import com.zy.erp.kingdee.entity.param.InFormIdParam;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import com.zy.common.utils.HttpHandler;
@@ -25,6 +26,7 @@
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@Slf4j
@@ -69,7 +71,7 @@
        for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) {
            InFormIdParam inFormIdParam = new InFormIdParam();
            DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", kingDeeUtilType.desc));
            if (Cools.isEmpty(docType)){
            if (Cools.isEmpty(docType) && !kingDeeUtilType.formId.equals("BD_MATERIAL")){
                docType = docTypeService.selectOrAdd(kingDeeUtilType.desc, kingDeeUtilType.pakIn.equals(1));
            }
            inFormIdParam.setFormId(kingDeeUtilType.formId);
@@ -83,11 +85,11 @@
            jsonObject.put("Limit", inFormIdParam.getLimit());
            jsonObject.put("StartRow", inFormIdParam.getStartRow());
            //物料档案查询
            if(inFormIdParam.getFormId().equals("BD_MATERIAL")){
            if(kingDeeUtilType.formId.equals("BD_MATERIAL")){
                Tag tag = tagService.selectByName("全部", 1);
                //物料状态 FUseOrgId .FNumber
                FDocumentStatus="C";
                jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(tag.getUpdateTime())+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='201'");
                jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(tag.getUpdateTime())+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='100'");
                jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus");
                // FName : 物料名称 ;
                // FNumber :物料编号;
@@ -98,7 +100,7 @@
                //获取最新时间
                //单据状态
                FDocumentStatus="B";
                jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(docType.getCreateTime())+"' and FStockId.Fname='立库'"+" and FDocumentStatus='"+FDocumentStatus+"'");
                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,"+kingDeeUtilType.anfme+",FDocumentStatus");
                // FBillNo :单据编号;
                // FCreateDate :单据创建时间;
@@ -134,7 +136,7 @@
                    for (int j = 0; j < data.size(); j++) {
                        JSONArray jsonArray = data.getJSONArray(j);
                        //对美国时间进行转换
                        Date date = KingDeeUtil.KingDeeDate(jsonArray.get(2).toString());
                        Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(2).toString());
                        //生成商品档案
                        //商品编号
                        Mat mat = matService.selectByMatnr(jsonArray.get(1).toString());
@@ -144,7 +146,7 @@
                            mat.setMaktx(jsonArray.get(0).toString());
                            mat.setSpecs(jsonArray.get(3).toString());//规格
                            mat.setTagId(tag.getId());
                            mat.setCreateTime(date);//商品创建时间
                            mat.setCreateTime(jsonDate);//商品创建时间
                            mat.setUpdateTime(new Date());
                            mat.setStatus(1);
                            //最新抓取商品时间
@@ -157,19 +159,22 @@
//                                log.info("同步新物料[商品编号:{}]", mat.getMatnr());
                            }
                        }else {
                            callApiLogSaveMat(mat,kingDeeUtilType, "商品编号重复:"+mat.getMatnr(), false);
                            log.info("同步新物料[商品编号:{}],商品编号重复!!!", mat.getMatnr());
                            if (!jsonDate.equals(tag.getUpdateTime())){
                                callApiLogSaveMat(mat,kingDeeUtilType, "商品编号重复:"+mat.getMatnr(), false);
                                log.info("同步新物料[商品编号:{}],商品编号重复!!!", mat.getMatnr());
                            }
                        }
                        tag.setUpdateTime(date);
                        tag.setUpdateTime(jsonDate);
                    }
                    tagService.updateById(tag);
                } else {
                    for (int j = 0; j < data.size(); j++) {
                        JSONArray jsonArray = data.getJSONArray(j);
                        //最新抓取时间
                        Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(2).toString());
                        Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(1).toString());
                        docType.setCreateTime(jsonDate);
                        Order order = orderService.selectByNo(jsonArray.get(0).toString());
                        Order order = OrderInAndOutUtil.selectByNo(kingDeeUtilType.pakIn == 1, jsonArray.get(0).toString());
//                        Order order = orderService.selectByNo(jsonArray.get(0).toString());
                        if (Cools.isEmpty(order)) {
                            Date now = new Date();
                            // 单据主档
@@ -209,22 +214,38 @@
                                    now,    // 修改时间
                                    null    // 备注
                            );
                             OrderInAndOutUtil.insertOrder(kingDeeUtilType.pakIn == 1, order);
                            if (!orderService.insert(order)) {
                                callApiLogSaveOrder(order,kingDeeUtilType, "生成单据主档失败,请联系管理员"+order, false);
                                continue;
//                                throw new CoolException("生成单据主档失败,请联系管理员");
                            }
//                            if (!orderService.insert(order)) {
//                                if (!jsonDate.equals(docType.getCreateTime())){
//                                    callApiLogSaveOrder(order,kingDeeUtilType, "生成单据主档失败,请联系管理员"+order, false);
//                                }
//                                continue;
////                                throw new CoolException("生成单据主档失败,请联系管理员");
//                            }
                        }
                        //物料编码
                        Mat mat = matService.selectByMatnr(jsonArray.get(2).toString());
                        if (Cools.isEmpty(mat)) {
                            callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+jsonArray.get(2).toString(), false);
                            if (!jsonDate.equals(docType.getCreateTime())){
                                callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+jsonArray.get(2).toString(), false);
                            }
                            continue;
//                            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)) {
//                        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;
//                        }
                        Order order1 = OrderInAndOutUtil.selectByNo(kingDeeUtilType.pakIn == 1, jsonArray.get(0).toString());
                        List<OrderDetl> orderDetls = OrderInAndOutUtil.selectByOrderId(kingDeeUtilType.pakIn == 1, order1.getId());
                        boolean sign = false;
                        for (OrderDetl orderDetl : orderDetls){
                            if (orderDetl.getMatnr().equals( jsonArray.get(2).toString())){
                                sign = true;
                                break;
                            }
                        }
                        if (sign){
                            continue;
                        }
                        OrderDetl orderDetl = new OrderDetl();
@@ -239,10 +260,11 @@
                        orderDetl.setUpdateTime(new Date());
                        orderDetl.setStatus(1);
                        orderDetl.setQty(0.0D);
                        if (!orderDetlService.insert(orderDetl)) {
                            callApiLogSaveOrder(order,kingDeeUtilType, "生成单据明细失败,请联系管理员!订单号:"+order.getOrderNo(), false);
//                            throw new CoolException("生成单据明细失败,请联系管理员");
                        }
//                        if (!orderDetlService.insert(orderDetl)) {
//                            callApiLogSaveOrder(order,kingDeeUtilType, "生成单据明细失败,请联系管理员!订单号:"+order.getOrderNo(), false);
////                            throw new CoolException("生成单据明细失败,请联系管理员");
//                        }
                        OrderInAndOutUtil.insertOrderDetl(kingDeeUtilType.pakIn == 1,order,orderDetl);
                    }
                    docTypeService.updateById(docType);
                }
@@ -251,20 +273,20 @@
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return FAIL.setMsg(e.getMessage());
            } finally {
                try {
                    // 保存接口日志
                    apiLogService.save(
                            "轮询数据",
                            URL + inaddress,
                            null,
                            "127.0.0.1",
                            add,
                            response,
                            success
                    );
                } catch (Exception e) {
                    log.error("", e);
                }
//                try {
//                    // 保存接口日志
//                    apiLogService.save(
//                            "轮询数据",
//                            URL + inaddress,
//                            null,
//                            "127.0.0.1",
//                            add,
//                            response,
//                            success
//                    );
//                } catch (Exception e) {
//                    log.error("", e);
//                }
            }
        }
        return SUCCESS;