自动化立体仓库 - WMS系统
#
LSH
2023-12-17 f88561ab48893d0e1866a6085c64213a6cdd1008
#
2个文件已添加
1个文件已修改
182 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/PushDowmOrderSyncScheduler.java
New file
@@ -0,0 +1,42 @@
package com.zy.asrs.task.kingdee;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.core.ReturnT;
import com.zy.asrs.task.kingdee.handler.PushDowmOrderSyncHandler;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.List;
/*
* 金蝶ERP下推接口
* */
@Slf4j
@Component
public class PushDowmOrderSyncScheduler {
    @Autowired
    private PushDowmOrderSyncHandler pushDowmOrderSyncHandler;
    @Autowired
    private OrderService orderService;
    @Value("${erp.switch.PushDowmOrderSwitch}")
    private boolean PushDowmOrderSwitch;
    @Scheduled(cron = "0/3 * * * * ? ")
    void login(){
        if(!PushDowmOrderSwitch){
            return;
        }
        List<Order> orders = orderService.selectComplete();
        for (Order order : orders) {
            ReturnT<String> result = pushDowmOrderSyncHandler.start(order);
            if (!result.isSuccess()) {
                log.error("单据[orderNo={}]提交至erp失败", order.getOrderNo());
            }
        }
    }
}
src/main/java/com/zy/asrs/task/kingdee/handler/PushDowmOrderSyncHandler.java
New file
@@ -0,0 +1,134 @@
package com.zy.asrs.task.kingdee.handler;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.DocType;
import com.zy.asrs.entity.Order;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.utils.HttpHandler;
import com.zy.erp.kingdee.enums.KingDeeUtilType;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Set;
/**
 * Created by vincent on 2023/10/21
 */
@Slf4j
@Service
public class PushDowmOrderSyncHandler extends AbstractHandler<String> {
    @Value("${erp.address.URL}")
    //端口
    private String URL;
    @Value("${erp.address.pushDowmAudit}")
    //审核地址
    private String pushDowmAudit;
    @Autowired
    private OrderService orderService;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private DocTypeService docTypeService;
    @Autowired
    private LoginAuthenticationHandler loginAuthenticationHandler;
    @Transactional
    public ReturnT<String> start(Order order) {
        //登录金蝶r
        ReturnT<String> start = loginAuthenticationHandler.start();
        DocType docType = docTypeService.selectById(order.getDocType());
        if (null == docType) {
            return SUCCESS;
        }
        KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
        //条件拼接
        JSONObject dataJsonObject = new JSONObject();
        dataJsonObject.put("Numbers",order.getOrderNo());
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("data", dataJsonObject);
        jsonObject.put("FormId",kingDeeUtilType.formId);
        String add = jsonObject.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(pushDowmAudit)
                    .setJson(add)
                    .build()
                    .doPost();
            JSONObject data = JSON.parseObject(response);
            Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess");
            String bool=IsSuccess.toString();
            //审核完成原订单4转6  6.上报完成
            if(bool.equals("true")){
                success = true;
                order.setSettle(6L);
                orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo()));
            }
        } catch (Exception e) {
            log.error("fail", e);
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        } finally {
            try {
                // 保存接口日志
                apiLogService.save(
                        "审核",
                        URL+ pushDowmAudit,
                        null,
                        "127.0.0.1",
                        add,
                        response,
                        success
                );
            } catch (Exception e) {
                log.error("", e);
            }
        }
        return SUCCESS;
    }
    public static Object findValueByKey(JSONObject json, String key) {
        Set<String> keySet = json.keySet();
        for (String k : keySet) {
            Object v = json.get(k);
            if (k.equals(key)) {
                return v;
            } else if (v instanceof JSONArray) {
                int size = ((JSONArray) v).size();
                for (int i = 0; i <= size - 1; i++) {
                    Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key);
                    if (result != null){
                        return result;
                    }
                }
            } else if (v instanceof JSONObject){
                Object result = findValueByKey((JSONObject) v, key);
                if (result != null){
                    return result;
                }
            }
        }
        return null;
    }
}
src/main/resources/application.yml
@@ -65,8 +65,10 @@
    InboundOrderSwitch: false
    #登录接口开关
    LoginAuthenticationSwitch: false
    #上报单据开关
    #上报单据开关  米多无用
    ReviewOrderSwitch: false
    #下推单据开关
    PushDowmOrderSwitch: false
  #  地址
  address:
    URL: http://58.210.10.90:28090
@@ -74,6 +76,8 @@
    loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc
    #单据,商品档案地址
    inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc
    #单据下推地址
    pushDowmAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc
    #结果上报(保存)单地址  米多无用
    outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc
    #结果上报(提交)单地址  米多无用