package com.zy.third.lk.task;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.exception.CoolException;
|
import com.zy.asrs.entity.DocType;
|
import com.zy.asrs.entity.Mat;
|
import com.zy.asrs.entity.Order;
|
import com.zy.asrs.entity.OrderDetl;
|
import com.zy.asrs.service.DocTypeService;
|
import com.zy.asrs.service.MatService;
|
import com.zy.asrs.service.OrderDetlService;
|
import com.zy.asrs.service.OrderService;
|
import com.zy.common.service.erp.ErpSqlServer;
|
import com.zy.third.lk.entity.*;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 入库更新完成回报
|
*/
|
@Slf4j
|
@Component
|
public class LKInTBScheduler {
|
|
@Autowired
|
private MatService matService;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Autowired
|
private OrderDetlService orderDetlService;
|
|
@Autowired
|
private DocTypeService docTypeService;
|
|
@Autowired
|
private ErpSqlServer erpSqlServer;
|
|
@Transactional(rollbackFor = Throwable.class)
|
@Scheduled(cron = "${erp.refreshtime}")
|
public void pakinOrderComplete() {
|
//log.info("开始入库更新完成回报");
|
// 所有订单
|
List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
|
DocType docType;
|
for (Order order : orders) {
|
System.out.println(order);
|
docType = docTypeService.selectById(order.getDocType());
|
if (docType == null) {
|
log.error("该订单类型不存在:" + order.getDocType());
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
if (docType.getPakin() == 1) {
|
//入库单
|
for (OrderDetl orderDetl : orderDetls) {
|
insertInDet(orderDetl);
|
}
|
insertInHed(order);
|
} else {
|
//出库单
|
for (OrderDetl orderDetl : orderDetls) {
|
insertOutDet(orderDetl);
|
}
|
insertOutHed(order);
|
}
|
// 修改订单状态 4.完成 ===>> 6.已上报
|
if (!orderService.updateSettle(order.getId(), 6L, null)) {
|
throw new CoolException("服务器内部错误,请联系管理员");
|
}
|
}
|
}
|
|
|
/**
|
* 将入库单的信息插入到ERP表
|
*
|
* @param orderDetl
|
* @return
|
*/
|
@Transactional(rollbackFor = Throwable.class)
|
public boolean insertInDet(OrderDetl orderDetl) {
|
String sqlInDetTb = "select * from lk_InDetTB where BillNo='" + orderDetl.getOrderNo() + "' and " +
|
" ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
|
List<InDetTB> inDets = erpSqlServer.select(sqlInDetTb, InDetTB.class);
|
String sqlInDetTbBak = "select * from lk_InDetTB_Bak where BillNo='" + orderDetl.getOrderNo() + "' and " +
|
" ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
|
List<InDetTBBak> inDetBaks = erpSqlServer.select(sqlInDetTbBak, InDetTBBak.class);
|
if (!inDets.isEmpty() || !inDetBaks.isEmpty()) {
|
log.error("该单号料号中间表表身已存在:" + orderDetl.getOrderNo() + "==>>" + orderDetl.getOrderNo());
|
return true;
|
}
|
Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
|
Map<String, Object> content = getMap(orderDetl);
|
int insert = erpSqlServer.insert(InDetTB.class, content);
|
|
if (insert == 1) {
|
log.info("入库单表身回传成功:{}", content);
|
return true;
|
} else {
|
log.error("入库回传失败,实体类打印:{}", content);
|
return false;
|
}
|
|
}
|
|
/**
|
* 将入库单的详情信息插入到ERP表
|
*
|
* @param order
|
* @return
|
*/
|
@Transactional(rollbackFor = Throwable.class)
|
public boolean insertInHed(Order order) {
|
String sqlInHedTb = "select * from lk_InHedTB where LKName='中扬二期' and BillNo='" + order.getOrderNo() + "'";
|
List<InHedTB> outHeds = erpSqlServer.select(sqlInHedTb, InHedTB.class);
|
String sqlInHedTbBak = "select * from lk_InHedTB_Bak where LKName='中扬二期' and BillNo='" + order.getOrderNo() + "'";
|
List<InHedTBBak> inHedBaks = erpSqlServer.select(sqlInHedTbBak, InHedTBBak.class);
|
if (!outHeds.isEmpty() || !inHedBaks.isEmpty()) {
|
log.error("该单号料号中间表表头已存在:" + order.getOrderNo());
|
return true;
|
}
|
HashMap<String, Object> content = new HashMap<>();
|
content.put("BillNo", "'" + order.getOrderNo() + "'");
|
content.put("IoKindID", "'" + order.getDocType() + "'");
|
content.put("ObjectId", "'" + order.getCstmr() + "'");
|
content.put("ObjectName", "'" + order.getCstmrName() + "'");
|
content.put("Remark", "'" + order.getMemo() + "'");
|
content.put("LKName", "'中扬二期'");
|
int insert = erpSqlServer.insert(InHedTB.class, content);
|
String sql = "UPDATE lk_InHedTB SET bPass = 1, LKName='中扬二期' WHERE BillNo = '" + order.getOrderNo() + "'";
|
int update = erpSqlServer.update(sql);
|
if (update == 1) {
|
log.info("入库单表头回传成功:" + content);
|
return true;
|
} else {
|
log.error("入库单表头回传失败:" + content);
|
return false;
|
}
|
}
|
|
/**
|
* 将入库单的信息插入到ERP表
|
*
|
* @param orderDetl
|
* @return
|
*/
|
@Transactional(rollbackFor = Throwable.class)
|
public boolean insertOutDet(OrderDetl orderDetl) {
|
String sqlInDetTb = "select * from lk_OutDetTB where BillNo='" + orderDetl.getOrderNo() + "' and " +
|
" ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
|
List<OutDetTB> inDets = erpSqlServer.select(sqlInDetTb, OutDetTB.class);
|
String sqlInDetTbBak = "select * from lk_OutDetTB_Bak where BillNo='" + orderDetl.getOrderNo() + "' and " +
|
" ItemId='" + orderDetl.getMatnr() + "' and ItemBatch='" + orderDetl.getBatch() + "' and proType='" + orderDetl.getSpecs() + "'";
|
List<OutDetTBBak> inDetBaks = erpSqlServer.select(sqlInDetTbBak, OutDetTBBak.class);
|
if (!inDets.isEmpty() || !inDetBaks.isEmpty()) {
|
log.error("该单号料号中间表表身已存在:" + orderDetl.getOrderNo() + "==>>" + orderDetl.getOrderNo());
|
return true;
|
}
|
Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
|
Map<String, Object> content = getMap(orderDetl);
|
int insert = erpSqlServer.insert(InDetTB.class, content);
|
|
if (insert == 1) {
|
log.info("入库单表身回传成功:" + content.toString());
|
return true;
|
} else {
|
log.error("入库回传失败,实体类打印:" + content.toString());
|
return false;
|
}
|
|
}
|
|
/**
|
* 将入库单的详情信息插入到ERP表
|
*
|
* @param order
|
* @return
|
*/
|
@Transactional(rollbackFor = Throwable.class)
|
public boolean insertOutHed(Order order) {
|
String sqlInHedTb = "select * from lk_OutHedTB where LKName='中扬二期' and BillNo='" + order.getOrderNo() + "'";
|
List<OutHedTB> outHeds = erpSqlServer.select(sqlInHedTb, OutHedTB.class);
|
String sqlInHedTbBak = "select * from lk_OutHedTB_Bak where LKName='中扬二期' and BillNo='" + order.getOrderNo() + "'";
|
List<OutHedTBBak> inHedBaks = erpSqlServer.select(sqlInHedTbBak, OutHedTBBak.class);
|
if (!outHeds.isEmpty() || !inHedBaks.isEmpty()) {
|
log.error("该单号料号中间表表头已存在:" + order.getOrderNo());
|
return true;
|
}
|
HashMap<String, Object> content = new HashMap<>();
|
content.put("BillNo", "'" + order.getOrderNo() + "'");
|
content.put("IoKindID", "'" + order.getDocType() + "'");
|
content.put("ObjectId", "'" + order.getCstmr() + "'");
|
content.put("ObjectName", "'" + order.getCstmrName() + "'");
|
content.put("Remark", "'" + order.getMemo() + "'");
|
content.put("LKName", "'中扬二期'");
|
int insert = erpSqlServer.insert(OutHedTB.class, content);
|
String sql = "UPDATE lk_OutHedTB SET bPass = 1, LKName='中扬二期' WHERE BillNo = '" + order.getOrderNo() + "'";
|
int update = erpSqlServer.update(sql);
|
if (update == 1) {
|
log.info("入库单表头回传成功:" + content);
|
return true;
|
} else {
|
log.error("入库单表头回传失败:" + content);
|
return false;
|
}
|
}
|
|
private Map<String, Object> getMap(OrderDetl orderDetl) {
|
Map<String, Object> content = new HashMap<>();
|
content.put("BillNo", "'" + orderDetl.getOrderNo() + "'");
|
content.put("iNO", "'" + orderDetl.getINO() + "'");
|
content.put("detId", orderDetl.getThreeCode());
|
content.put("ItemId", "'" + orderDetl.getThreeCode() + "'");
|
content.put("ItemCode", "'" + orderDetl.getMatnr() + "'");
|
content.put("ItemBatch", "'" + orderDetl.getBatch() + "'");
|
content.put("proType", "'" + orderDetl.getProType() + "'");
|
content.put("remark", "'" + orderDetl.getMemo() + "'");
|
content.put("OrderNo", "'" + orderDetl.getOutOrderNo() + "'");
|
content.put("MainNum", orderDetl.getQty());
|
content.put("WareId", "'" + orderDetl.getWareId() + "'");
|
content.put("WareName", "'" + orderDetl.getWareName() + "'");
|
content.put("Packing", "'" + orderDetl.getPacking() + "'");
|
content.put("LuHao", "'" + orderDetl.getLuHao() + "'");
|
content.put("sPgNO", "'" + orderDetl.getSPgNO() + "'");
|
content.put("temp1", "'" + orderDetl.getTemp1() + "'");
|
content.put("temp2", "'" + orderDetl.getTemp2() + "'");
|
content.put("temp3", "'" + orderDetl.getTemp3() + "'");
|
content.put("LKName", "'中扬二期'");
|
return content;
|
}
|
}
|