|  |  |  | 
|---|
|  |  |  | package com.zy.ints.task.scheduler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | 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.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.scheduling.annotation.Scheduled; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.text.SimpleDateFormat; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Value("${erp.enabled}") | 
|---|
|  |  |  | private Boolean erpEnabled; | 
|---|
|  |  |  | @Value("${erp.useName.ip}") | 
|---|
|  |  |  | private String ip; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ErpSqlServer erpSqlServer; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | 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 sqlUpDateLkDetTbOne = "update lk_det_tb set status=1 where prd_no="; | 
|---|
|  |  |  | String sqlUpDateLkDetTbTwo = "update lk_det_tb set status=2 where prd_no="; | 
|---|
|  |  |  | 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<LkDetTb> lkDetTbs = erpSqlServer.select(sqlSelectLkDetTb, LkDetTb.class); | 
|---|
|  |  |  | if (lkDetTbs.size() > 0){ | 
|---|
|  |  |  | for (LkDetTb lkDetTb:lkDetTbs){ | 
|---|
|  |  |  | Integer status = lkDetTb.getStatus(); | 
|---|
|  |  |  | if (status == 0){ | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 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 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<>(); | 
|---|
|  |  |  | condition.put("bill_no", "'" + orderDetl.getOrderNo() + "'"); | 
|---|
|  |  |  | condition.put("prd_no", "'" + orderDetl.getMatnr() + "'"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else if (status == 1){ | 
|---|
|  |  |  | 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 + "'"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else if (status == 2){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } 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("上报完结订单明细信息", 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("上报完结订单明细信息", 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); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|