package com.zy.ints.task.scheduler;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.core.common.Cools;
|
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.DocTypeService;
|
import com.zy.asrs.service.OrderDetlService;
|
import com.zy.asrs.service.OrderService;
|
import com.zy.ints.entity.ErpDetTbBak;
|
import com.zy.ints.entity.LkDetTb;
|
import com.zy.ints.entity.LkDetTbBak;
|
import com.zy.ints.erp.ErpSqlServer;
|
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.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
|
/**
|
* erp任务控制器
|
* Created by vincent on 2020/11/27
|
*/
|
@Slf4j
|
@Component
|
public class LkDetTbScheduler {
|
/**
|
* ERP接口是否启用
|
*/
|
@Value("${erp.enabled}")
|
private Boolean erpEnabled;
|
@Autowired
|
private ErpSqlServer erpSqlServer;
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private OrderDetlService orderDetlService;
|
@Autowired
|
private DocTypeService docTypeService;
|
/**
|
* 上报入出库完结订单信息
|
*/
|
@Scheduled(cron = "${erp.refreshtime}")
|
public void InOrOutOrder() {
|
if (!erpEnabled) return;
|
String sqlSelectLkDetTb = "select bill_no as billNo,prd_no as prdNo,iokindid,add_id as addId,qty,prd_mark as prdMark,wh,billdate,status,temp1,temp2,temp3 from lk_det_tb where 1=1";
|
String sqlSelectLkDetTbBak = "select bill_no as billNo,prd_no as prdNo,iokindid,add_id as addId,qty,prd_mark as prdMark,wh,billdate,status,temp1,temp2,temp3 from lk_det_tb_bak where 1=1";
|
|
try {
|
List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 4L));
|
if (orders.size()>0){
|
for (Order order:orders){
|
List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
|
if (!Cools.isEmpty(orderDetls)){
|
for (OrderDetl orderDetl:orderDetls){
|
Date now = new Date();
|
List<LkDetTb> lkDetTbs = erpSqlServer.select(sqlSelectLkDetTb+
|
" and bill_no='"+orderDetl.getOrderNo()+"'" +
|
" and prd_no='"+orderDetl.getMatnr()+"'" +
|
" and prd_mark='"+orderDetl.getBatch()+"'"
|
, LkDetTb.class);
|
List<LkDetTbBak> lkDetTbBaks = erpSqlServer.select(sqlSelectLkDetTbBak+
|
" and bill_no='"+orderDetl.getOrderNo()+"'" +
|
" and prd_no='"+orderDetl.getMatnr()+"'" +
|
" and prd_mark='"+orderDetl.getBatch()+"'"
|
, LkDetTbBak.class);
|
if (lkDetTbs.size() == 1 || lkDetTbBaks.size()==1){
|
log.error("订单号:"+orderDetl.getOrderNo()+"、商品编号:"+orderDetl.getMatnr()+"、货品特征:"+orderDetl.getBatch()+" " +
|
"已经上报但是明细依旧存在,请联系开发人员!!!");
|
continue;
|
}else if (lkDetTbs.size()>1 || lkDetTbBaks.size()>1){
|
log.error("相同 订单号:"+orderDetl.getOrderNo()+"、商品编号:"+orderDetl.getMatnr()+"、货品特征:"+orderDetl.getBatch()+" " +
|
"存在重复资料,联系开发人员!!!");
|
continue;
|
// throw new CoolException("相同 订单号:"+orderDetl.getOrderNo()+"、商品编号:"+orderDetl.getMatnr()+"、货品特征:"+orderDetl.getBatch()+" " +
|
// "存在重复资料,联系开发人员!!!");
|
}else {
|
String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now);
|
HashMap<String, Object> condition = new HashMap<>();
|
condition.put("bill_no", "'" + orderDetl.getOrderNo() + "'");
|
condition.put("prd_no", "'" + orderDetl.getMatnr() + "'");
|
|
DocType docType = docTypeService.selectById(order.getDocType());
|
if (!Cools.isEmpty(docType)){
|
int addid = docType.getPakin() == 1 ? 1 : 2;
|
condition.put("iokindid", "'" + docType.getDocName$() + "'");
|
condition.put("add_id", "'" + addid + "'");
|
}
|
|
condition.put("qty", "'" + orderDetl.getQty() + "'");
|
condition.put("prd_mark", "'" + orderDetl.getBatch() + "'");
|
condition.put("wh", "'" + orderDetl.getMemo() + "'");
|
condition.put("billdate", "'" + format + "'");
|
condition.put("status", "'" + 0 + "'");
|
erpSqlServer.insert(LkDetTb.class, condition);
|
}
|
//保存订单明细历史档
|
if (orderDetlService.addToLogTable(orderDetl)){
|
//删除订单明细
|
orderDetlService.deleteById(orderDetl.getId());
|
}
|
}
|
//保存订单历史档
|
if (orderService.addToLogTable(order)){
|
//删除完结订单
|
orderService.deleteById(order.getId());
|
}
|
}
|
}
|
}
|
|
}catch (Exception e){
|
|
}
|
}
|
}
|