自动化立体仓库 - WMS系统
LSH
2023-01-04 8b470245dae34e0fa6e558a895865503ba6d99f4
src/main/java/com/zy/ints/task/scheduler/LkDetTbScheduler.java
@@ -6,9 +6,11 @@
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.ints.entity.ErpDetTb;
import com.zy.ints.entity.ErpDetTbBak;
import com.zy.ints.entity.LkDetTb;
import com.zy.ints.entity.LkDetTbBak;
@@ -36,6 +38,10 @@
     */
    @Value("${erp.enabled}")
    private Boolean erpEnabled;
    @Value("${erp.useName.ip}")
    private String ip;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private ErpSqlServer erpSqlServer;
    @Autowired
@@ -44,11 +50,12 @@
    private OrderDetlService orderDetlService;
    @Autowired
    private DocTypeService docTypeService;
    /**
     * 上报入出库完结订单信息
     */
    @Scheduled(cron = "${erp.refreshtime}")
    public void InOrOutOrder() {
    public void reportOrder() {
        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";
@@ -71,16 +78,18 @@
                                            " 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()+" " +
                                        "已经上报但是明细依旧存在,请联系开发人员!!!");
                            if (lkDetTbs.size() == 1) {
                                callApiLogSaveLkDetTb(lkDetTbs.get(0), "erp_det_tb", "已经上报但是明细依旧存在,请联系开发人员!!!", false);
                                continue;
                            }else if (lkDetTbs.size()>1 || lkDetTbBaks.size()>1){
                                log.error("相同 订单号:"+orderDetl.getOrderNo()+"、商品编号:"+orderDetl.getMatnr()+"、货品特征:"+orderDetl.getBatch()+" " +
                                        "存在重复资料,联系开发人员!!!");
                            } else if (lkDetTbBaks.size() == 1) {
                                callApiLogSaveLkDetTbBak(lkDetTbBaks.get(0), "erp_det_tb_bak", "已经上报但是明细依旧存在,请联系开发人员!!!", false);
                                continue;
//                                throw new CoolException("相同 订单号:"+orderDetl.getOrderNo()+"、商品编号:"+orderDetl.getMatnr()+"、货品特征:"+orderDetl.getBatch()+" " +
//                                        "存在重复资料,联系开发人员!!!");
                            } else if (lkDetTbs.size() > 1) {
                                callApiLogSaveLkDetTb(lkDetTbs.get(0), "erp_det_tb", "存在重复资料,联系开发人员!!!", false);
                                continue;
                            } else if (lkDetTbBaks.size() > 1) {
                                callApiLogSaveLkDetTbBak(lkDetTbBaks.get(0), "erp_det_tb_bak", "存在重复资料,联系开发人员!!!", false);
                                continue;
                            }else {
                                String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now);
                                HashMap<String, Object> condition = new HashMap<>();
@@ -100,24 +109,53 @@
                                condition.put("billdate", "'" + format + "'");
                                condition.put("status", "'" + 0 + "'");
                                erpSqlServer.insert(LkDetTb.class, condition);
                                callApiLogSaveOrderDetl(orderDetl, "完结订单明细上报完成", true);
                            }
                            //保存订单明细历史档
                            if (orderDetlService.addToLogTable(orderDetl)){
                                callApiLogSaveOrderDetl(orderDetl, "保存订单明细历史档成功!", true);
                                //删除订单明细
                                orderDetlService.deleteById(orderDetl.getId());
                                callApiLogSaveOrderDetl(orderDetl, "订单明细档保存后删除成功!", true);
                            }
                        }
                        //保存订单历史档
                        if (orderService.addToLogTable(order)){
                            callApiLogSaveOrder(order, "完结订单上报完成,并保存订单历史档成功!!!", true);
                            //删除完结订单
                            orderService.deleteById(order.getId());
                            callApiLogSaveOrder(order, "完结订单上报完成,并保存订单历史档后删除完结订单成功!!!", true);
                        }
                    }
                }
            }
        }catch (Exception e){
            Date date = new Date();
            log.error(date + ": 表名:lk_det_tb :" + e);
        }
    }
    public void callApiLogSaveLkDetTb(LkDetTb lkDetTb, String tableName, String response, Boolean bool) {
        apiLogService.save("ERP下发订单信息", "中间表:" + tableName, "null", ip,
                "订单号:" + lkDetTb.getBillNo() + "品号:" + lkDetTb.getPrdNo() + "货品特征:" + lkDetTb.getPrdMark() + "状态:" + lkDetTb.getStatus(),
                response, bool);
    }
    public void callApiLogSaveLkDetTbBak(LkDetTbBak lkDetTbBak, String tableName, String response, Boolean bool) {
        apiLogService.save("ERP下发订单信息", "中间表:" + tableName, "null", ip,
                "订单号:" + lkDetTbBak.getBillNo() + "品号:" + lkDetTbBak.getPrdNo() + "货品特征:" + lkDetTbBak.getPrdMark() + "状态:" + lkDetTbBak.getStatus(),
                response, bool);
    }
    public void callApiLogSaveOrderDetl(OrderDetl orderDetl, String response, Boolean bool) {
        apiLogService.save("上报完结订单明细信息", "中间表:lk_det_tb", "null", ip,
                "订单号:" + orderDetl.getOrderNo() + "品号:" + orderDetl.getMatnr() + "货品特征:" + orderDetl.getBatch(),
                response, bool);
    }
    public void callApiLogSaveOrder(Order order, String response, Boolean bool) {
        apiLogService.save("完结订单信息上报完成", "中间表:lk_det_tb", "null", ip,
                "订单号:" + order.getOrderNo(), response, bool);
    }
}