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.SpringUtils;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.Order;
|
import com.zy.asrs.entity.OrderDetl;
|
import com.zy.asrs.entity.U8Properties;
|
import com.zy.asrs.entity.result.OrderRsult;
|
import com.zy.asrs.service.ApiLogService;
|
import com.zy.asrs.service.OrderDetlService;
|
import com.zy.asrs.service.OrderService;
|
import com.zy.common.utils.HttpHandler;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.text.Format;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.Objects;
|
|
/**
|
* @author pang.jiabao
|
* @description 订单明细完成,定时上报u8
|
* @createDate 2025/9/19 9:50
|
*/
|
@Slf4j
|
@Component
|
public class AutoReportingHandler {
|
|
@Resource
|
private U8Properties u8Properties;
|
|
@Resource
|
private OrderDetlService orderDetlService;
|
|
@Resource
|
private OrderService orderService;
|
|
public void U8Reporting(OrderDetl orderDetl) {
|
|
String orderNo = orderDetl.getOrderNo();
|
Order order = orderService.selectByNo(orderNo);
|
|
if (order == null) {
|
throw new CoolException("没有找到该订单号:" + orderNo);
|
}
|
|
OrderRsult orderRsult = new OrderRsult();
|
OrderRsult.Login login = new OrderRsult.Login();
|
OrderRsult.HeadTable headTable = new OrderRsult.HeadTable();
|
OrderRsult.BodyTable bodyTable = new OrderRsult.BodyTable();
|
|
login.setSAccID(u8Properties.getSAccID()); //账套号 固定
|
login.setSUserID(u8Properties.getSUserID());//U8登陆账号 固定
|
login.setSPassword(u8Properties.getSPassword());//U8登陆密码 固定
|
login.setSServer(u8Properties.getSServer());//U8服务器地址 固定
|
orderRsult.setLogin(login);
|
|
orderRsult.setVerifier("sys");//单据类型 固定
|
orderRsult.setCommandType("关闭");//操作类型 固定
|
orderRsult.setVouchName("");//审核人 填写则自动审核
|
|
headTable.setCtvcode(orderNo);//调拨单号 默认
|
//时间
|
Date date = new Date();
|
Format formatter = new SimpleDateFormat("yyyy-MM-dd");
|
String format = formatter.format(date);
|
headTable.setDtvdate(format);//单据日期
|
headTable.setCmaker("sys");//制单人名称
|
headTable.setVt_id("89");//模板号 默认
|
headTable.setCiwhcode("1");//转入仓库编码
|
headTable.setCowhcode("1");//转出仓库编码
|
headTable.setCordcode("");//出库类别编码 默认
|
headTable.setCirdcode("");//入库类别编码 默认
|
headTable.setCodepcode("");//转出部门编码
|
headTable.setCidepcode("");//转入部门编码
|
|
bodyTable.setOrderNo(orderDetl.getOrderNo()); // 单据号
|
bodyTable.setIrowno(orderDetl.getSku());//行号
|
bodyTable.setCinvcode(orderDetl.getMatnr());//存货编码
|
bodyTable.setCtvbatch(Cools.isEmpty(orderDetl.getBatch()) ? "" : orderDetl.getBatch());//批号(特殊说明)
|
Double qty = orderDetl.getQty() - (Cools.isEmpty(orderDetl.getUnits()) ? 0 : orderDetl.getUnits());
|
bodyTable.setItvquantity(String.valueOf(qty));//完成件数
|
bodyTable.setCinposcode("1-1");//立库源货位
|
bodyTable.setCoutposcode("");//目标货位
|
bodyTable.setItrsid(orderDetl.getSku());//行主键
|
bodyTable.setEditprop("A");//状态 A 新增
|
|
ArrayList<OrderRsult.BodyTable> bodyTables = new ArrayList<>();
|
bodyTables.add(bodyTable);
|
orderRsult.setBodyTable(bodyTables);
|
|
ArrayList<OrderRsult.HeadTable> headTables = new ArrayList<>();
|
headTables.add(headTable);
|
orderRsult.setHeadTable(headTables);
|
|
String response = "";
|
boolean success = false;
|
try {
|
|
response = new HttpHandler.Builder()
|
// .setHeaders(map)
|
.setUri(u8Properties.getURL())
|
.setPath(u8Properties.getResultReportPath())
|
.setJson(JSON.toJSONString(orderRsult))
|
.build()
|
.doPost();
|
log.info("orderNo:{},matnr:{},qty:{}订单明细完成上报u8原始返回:{}",orderNo ,orderDetl.getMatnr() ,qty , response);
|
JSONObject jsonObject = JSON.parseObject(response);
|
|
if (jsonObject.getInteger("code").equals(200)) {
|
orderDetl.setUnits(qty + (Cools.isEmpty(orderDetl.getUnits()) ? 0 : orderDetl.getUnits()));
|
if (Objects.equals(orderDetl.getQty(), orderDetl.getAnfme())) {
|
orderDetl.setInspect(1);
|
}
|
orderDetlService.updateById(orderDetl);
|
success = true;
|
} else {
|
log.error("订单明细完成上报u8失败!!!url:{};request:{};response:{}", u8Properties.getURL() + "/" + u8Properties.getResultReportPath(), JSON.toJSONString(orderRsult), response);
|
}
|
} catch (Exception e) {
|
response = e.getMessage();
|
log.error("订单明细完成上报u8异常!!!url:{};request:{};response:{}", u8Properties.getURL() + "/" + u8Properties.getResultReportPath(), JSON.toJSONString(orderRsult), response);
|
} finally {
|
try {
|
// 保存接口日志
|
ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
|
apiLogService.save(
|
"订单完成上报u8",
|
u8Properties.getURL() + "/" + u8Properties.getResultReportPath(),
|
"",
|
"127.0.0.1",
|
JSON.toJSONString(orderRsult),
|
response,
|
success
|
);
|
} catch (Exception e) {
|
log.error("订单完成上报u8接口日志保存异常", e);
|
}
|
}
|
}
|
}
|