package com.zy.asrs.task.handler; 
 | 
  
 | 
import com.alibaba.fastjson.JSON; 
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.core.common.Cools; 
 | 
import com.core.common.DateUtils; 
 | 
import com.core.exception.CoolException; 
 | 
import com.zy.asrs.entity.DocType; 
 | 
import com.zy.asrs.entity.Order; 
 | 
import com.zy.asrs.entity.OrderDetl; 
 | 
import com.zy.asrs.service.ApiLogService; 
 | 
import com.zy.asrs.service.DocTypeService; 
 | 
import com.zy.asrs.service.OrderDetlService; 
 | 
import com.zy.asrs.service.OrderService; 
 | 
import com.zy.asrs.task.AbstractHandler; 
 | 
import com.zy.asrs.task.core.ReturnT; 
 | 
import com.zy.common.constant.MesConstant; 
 | 
import com.zy.common.model.MesPakinParam; 
 | 
import com.zy.common.model.MesPakoutParam; 
 | 
import com.zy.common.utils.HttpHandler; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.jdbc.core.JdbcTemplate; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * Created by vincent on 2020/7/7 
 | 
 */ 
 | 
@Slf4j 
 | 
@Service 
 | 
public class OrderSyncHandler extends AbstractHandler<String> { 
 | 
  
 | 
    @Autowired 
 | 
    private JdbcTemplate jdbcTemplate; 
 | 
    @Autowired 
 | 
    private OrderService orderService; 
 | 
    @Autowired 
 | 
    private OrderDetlService orderDetlService; 
 | 
    @Autowired 
 | 
    private ApiLogService apiLogService; 
 | 
    @Autowired 
 | 
    private DocTypeService docTypeService; 
 | 
  
 | 
    @Transactional 
 | 
    public ReturnT<String> start(Order order) { 
 | 
        DocType docType = docTypeService.selectById(order.getDocType()); 
 | 
        if (null == docType) { 
 | 
            return SUCCESS; 
 | 
        } 
 | 
        List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); 
 | 
        // 入库完成上报 
 | 
        if (docType.getPakin() == 1) { 
 | 
            MesPakinParam pakinParam = new MesPakinParam(); 
 | 
            pakinParam.setPakinTime(DateUtils.convert(order.getUpdateTime())); 
 | 
            pakinParam.setLgortFrom("5008"); 
 | 
            pakinParam.setLgortTo("5006"); 
 | 
            for (OrderDetl orderDetl : orderDetls) { 
 | 
                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); 
 | 
                pakinParam.getList().add(new MesPakinParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); 
 | 
            } 
 | 
            String response = ""; 
 | 
            boolean success = false; 
 | 
            try { 
 | 
                response = new HttpHandler.Builder() 
 | 
                        .setUri(MesConstant.URL) 
 | 
                        .setPath(MesConstant.PAKIN_URL) 
 | 
                        .setJson(JSON.toJSONString(pakinParam)) 
 | 
                        .build() 
 | 
                        .doPost(); 
 | 
                JSONObject jsonObject = JSON.parseObject(response); 
 | 
                if (jsonObject.getInteger("code").equals(200)) { 
 | 
                    success = true; 
 | 
                    // 修改订单状态 4.完成 ===>> 6.已上报 
 | 
                    if (!orderService.updateSettle(order.getId(), 6L, null)) { 
 | 
                        throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
                    } 
 | 
                } else { 
 | 
                    log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKIN_URL, JSON.toJSONString(pakinParam), response); 
 | 
                    throw new CoolException("上报mes系统失败"); 
 | 
                } 
 | 
            } catch (Exception e) { 
 | 
                log.error("fail", e); 
 | 
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg(e.getMessage()); 
 | 
            } finally { 
 | 
                try { 
 | 
                    // 保存接口日志 
 | 
                    apiLogService.save( 
 | 
                            "成品库入库上报", 
 | 
                            MesConstant.URL + MesConstant.PAKIN_URL, 
 | 
                            null, 
 | 
                            "127.0.0.1", 
 | 
                            JSON.toJSONString(pakinParam), 
 | 
                            response, 
 | 
                            success 
 | 
                    ); 
 | 
                } catch (Exception e) { log.error("", e); } 
 | 
            } 
 | 
        } 
 | 
        // 出库完成上报 
 | 
        if (docType.getPakout() == 1) { 
 | 
            MesPakoutParam pakoutParam = new MesPakoutParam(); 
 | 
            pakoutParam.setTag(!order.getDocType$().equalsIgnoreCase("手动出库单")); 
 | 
            pakoutParam.setPakoutTime(DateUtils.convert(order.getUpdateTime())); 
 | 
            pakoutParam.setLgortFrom("5006"); 
 | 
            pakoutParam.setLgortTo("1111"); 
 | 
            if (!pakoutParam.isTag()) { 
 | 
                pakoutParam.setKunnr("C1000"); 
 | 
            } 
 | 
            pakoutParam.setOrderNo(order.getOrderNo()); 
 | 
            for (OrderDetl orderDetl : orderDetls) { 
 | 
                String serial = Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch(); 
 | 
                pakoutParam.getList().add(new MesPakoutParam.Detl(orderDetl.getMatnr() + (Cools.isEmpty(serial) ? "" : "-" + serial), orderDetl.getAnfme())); 
 | 
            } 
 | 
            String response = ""; 
 | 
            boolean success = false; 
 | 
            try { 
 | 
                response = new HttpHandler.Builder() 
 | 
                        .setUri(MesConstant.URL) 
 | 
                        .setPath(MesConstant.PAKOUT_URL) 
 | 
                        .setJson(JSON.toJSONString(pakoutParam)) 
 | 
                        .build() 
 | 
                        .doPost(); 
 | 
                JSONObject jsonObject = JSON.parseObject(response); 
 | 
                if (jsonObject.getInteger("code").equals(200)) { 
 | 
                    success = true; 
 | 
                    // 修改订单状态 4.完成 ===>> 6.已上报 
 | 
                    if (!orderService.updateSettle(order.getId(), 6L, null)) { 
 | 
                        throw new CoolException("服务器内部错误,请联系管理员"); 
 | 
                    } 
 | 
                } else { 
 | 
                    log.error("请求接口失败!!!url:{};request:{};response:{}", MesConstant.URL+MesConstant.PAKOUT_URL, JSON.toJSONString(pakoutParam), response); 
 | 
                    throw new CoolException("上报mes系统失败"); 
 | 
                } 
 | 
            } catch (Exception e) { 
 | 
                log.error("fail", e); 
 | 
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
 | 
                return FAIL.setMsg(e.getMessage()); 
 | 
            } finally { 
 | 
                try { 
 | 
                    // 保存接口日志 
 | 
                    apiLogService.save( 
 | 
                            "成品库出库上报", 
 | 
                            MesConstant.URL + MesConstant.PAKOUT_URL, 
 | 
                            null, 
 | 
                            "127.0.0.1", 
 | 
                            JSON.toJSONString(pakoutParam), 
 | 
                            response, 
 | 
                            success 
 | 
                    ); 
 | 
                } catch (Exception e) { log.error("", e); } 
 | 
            } 
 | 
        } 
 | 
        return SUCCESS; 
 | 
    } 
 | 
  
 | 
} 
 |