| | |
| | | package com.zy.ints.task.scheduler; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | 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.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.ints.entity.ErpDetTb; |
| | | import com.zy.ints.entity.ErpDetTbBak; |
| | | import com.zy.ints.erp.ErpSqlServer; |
| | |
| | | */ |
| | | @Value("${erp.enabled}") |
| | | private Boolean erpEnabled; |
| | | @Value("${erp.enabledErpDetTb}") |
| | | private Boolean erpEnabledErpDetTb; |
| | | @Value("${erp.useName.ip}") |
| | | private String ip; |
| | | @Autowired |
| | | private ErpSqlServer erpSqlServer; |
| | | @Autowired |
| | |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | |
| | | /** |
| | | * 获取入出库订单信息 |
| | | */ |
| | | @Scheduled(cron = "${erp.refreshtime}") |
| | | public void InOrOutOrder() { |
| | | if (!erpEnabled) return; |
| | | String sqlSelectErpDetTb = "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 erp_det_tb where 1=1"; |
| | | String sqlUpDateErpDetTbOne = "update erp_det_tb set status=1 where 1=1 and prd_no="; |
| | | String sqlUpDateErpDetTbTwo = "update erp_det_tb set status=2 "; |
| | | if (!erpEnabledErpDetTb) return; |
| | | String sqlSelectErpDetTb = "select BIL_NO as billNo,prd_no as prdNo,ITM as itm,ADD_ID as addId2,QTY as qty,PRD_MARK as prdMark,WH as wh,STATUS as status,Temp1 as temp1,Temp2 as temp2,Temp3 as temp3 from ERP_DETTB where 1=1"; |
| | | String sqlUpDateErpDetTbOne = "update ERP_DETTB set STATUS=1 where 1=1 and PRD_NO="; |
| | | String sqlUpDateErpDetTbTwo = "update ERP_DETTB set STATUS=2 "; |
| | | |
| | | try { |
| | | List<ErpDetTb> erpDetTbs = erpSqlServer.select(sqlSelectErpDetTb, ErpDetTb.class); |
| | |
| | | if (status == 0) { |
| | | Mat mat = matService.selectByMatnr(erpDetTb.getPrdNo()); |
| | | if (Cools.isEmpty(mat)) { |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",temp1='品号信息在立库不存在,请先添加商品!!!'" + "where 1=1 and prd_no=" + "'" + erpDetTb.getPrdNo() + "'"); |
| | | if(Cools.isEmpty(erpDetTb.getTemp1())){ |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",Temp1='品号信息在立库不存在,请先添加商品!!!'" + "where 1=1 " |
| | | +" and PRD_NO=" + "'" + erpDetTb.getPrdNo() + "'" |
| | | +" and ITM=" + "'" + erpDetTb.getItm() + "'" |
| | | +" and BIL_NO=" + "'" + erpDetTb.getBillNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "品号信息在立库不存在,请先添加商品!!!", false); |
| | | } |
| | | } else { |
| | | Order order = orderService.selectByNo(erpDetTb.getBillNo()); |
| | | Order order = orderService.selectByNo(erpDetTb.getBillNo()+"---"+erpDetTb.getItm()); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | erpDetTb.getBillNo(), // 订单编号 |
| | | erpDetTb.getBillNo()+"---"+erpDetTb.getItm(), // 订单编号 |
| | | DateUtils.convert(now), // 单据日期 |
| | | null, // 单据类型 |
| | | null, // 项目编号 |
| | |
| | | now, // 修改时间 |
| | | null // 备注 |
| | | ); |
| | | String InAndOut = erpDetTb.getAddId().equals("2") ? "(出库)" : "(入库)"; |
| | | DocType docType = docTypeService.selectOrAdd(erpDetTb.getIokindid$() + InAndOut, erpDetTb.getAddId().equals("1")); |
| | | String InAndOut = erpDetTb.getAddId2().equals(2) ? "(出库)" : "(入库)"; |
| | | DocType docType = docTypeService.selectOrAdd("ERP订单"+InAndOut, erpDetTb.getAddId2().equals(1)); |
| | | if (!Cools.isEmpty(docType)) { |
| | | order.setDocType(docType.getDocId()); |
| | | if (!orderService.insert(order)) { |
| | | throw new CoolException("添加订单主档信息失败!!!"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "订单主档添加失败!!", false); |
| | | continue; |
| | | } else { |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "订单主档添加成功!!", true); |
| | | } |
| | | } |
| | | } |
| | | Order order1 = orderService.selectByNo(erpDetTb.getBillNo()); |
| | | Order order1 = orderService.selectByNo(erpDetTb.getBillNo()+"---"+erpDetTb.getItm()); |
| | | if (!Cools.isEmpty(order1)) { |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order1.getId(), erpDetTb.getBillNo(), erpDetTb.getPrdMark()); |
| | | // OrderDetl orderDetl = orderDetlService.selectItem(order1.getId(), erpDetTb.getBillNo(), erpDetTb.getPrdMark()); |
| | | OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no",erpDetTb.getBillNo()+"---"+erpDetTb.getItm()).eq("matnr",erpDetTb.getPrdNo())); |
| | | if (Cools.isEmpty(orderDetl)) { |
| | | orderDetl = new OrderDetl(); |
| | | orderDetl.setOrderId(order1.getId()); |
| | | orderDetl.setOrderNo(erpDetTb.getBillNo()); |
| | | orderDetl.setOrderNo(erpDetTb.getBillNo()+"---"+erpDetTb.getItm()); |
| | | orderDetl.setAnfme(erpDetTb.getQty()); |
| | | orderDetl.setQty(0.0D); |
| | | orderDetl.setMatnr(erpDetTb.getPrdNo()); |
| | |
| | | orderDetl.setBatch(erpDetTb.getPrdMark()); |
| | | orderDetl.setSpecs(mat.getSpecs()); |
| | | orderDetl.setUnit(mat.getUnit()); |
| | | orderDetl.setOrigin(erpDetTb.getItm().toString()); |
| | | |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setCreateBy(9999L); |
| | | orderDetl.setCreateTime(now); |
| | | orderDetl.setUpdateBy(9999L); |
| | | orderDetl.setUpdateTime(now); |
| | | if (orderDetlService.insert(orderDetl)){ |
| | | orderDetl.setMemo(erpDetTb.getWh()); |
| | | if (orderDetlService.insert(orderDetl)) { |
| | | erpSqlServer.update(sqlUpDateErpDetTbOne + "'" + erpDetTb.getPrdNo() + "'"); |
| | | }else { |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",temp1='添加订单明细档失败!!!'" + "where 1=1 and prd_no=" + "'" + erpDetTb.getPrdNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "接收ERP下发订单接收成功!!", true); |
| | | } else { |
| | | if (Cools.isEmpty(erpDetTb.getTemp2())){ |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",temp2='添加订单明细档失败!!!'" + "where 1=1 " |
| | | +" and PRD_NO=" + "'" + erpDetTb.getPrdNo() + "'" |
| | | +" and ITM=" + "'" + erpDetTb.getItm() + "'" |
| | | +" and BIL_NO=" + "'" + erpDetTb.getBillNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "ERP下发订单接收失败!!", false); |
| | | } |
| | | } |
| | | }else if (!erpDetTb.getItm().toString().equals(orderDetl.getOrigin())){ |
| | | orderDetl.setAnfme(orderDetl.getAnfme()+erpDetTb.getQty()); |
| | | EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>(); |
| | | wrapper.eq("id", orderDetl.getId()); |
| | | if (orderDetlService.update(orderDetl,wrapper)) { |
| | | erpSqlServer.update(sqlUpDateErpDetTbOne + "'" + erpDetTb.getPrdNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "接收ERP下发订单接收成功!!", true); |
| | | } else { |
| | | if (Cools.isEmpty(erpDetTb.getTemp2())){ |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",temp2='更新订单明细档失败!!!'" + "where 1=1 " |
| | | +" and PRD_NO=" + "'" + erpDetTb.getPrdNo() + "'" |
| | | +" and ITM=" + "'" + erpDetTb.getItm() + "'" |
| | | +" and BIL_NO=" + "'" + erpDetTb.getBillNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "ERP下发订单接收失败!!", false); |
| | | } |
| | | } |
| | | }else { |
| | | if (Cools.isEmpty(erpDetTb.getTemp3())){ |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",temp3='更新订单明细档失败!!!订单明细已存在!!'" + "where 1=1 " |
| | | +" and PRD_NO=" + "'" + erpDetTb.getPrdNo() + "'" |
| | | +" and ITM=" + "'" + erpDetTb.getItm() + "'" |
| | | +" and BIL_NO=" + "'" + erpDetTb.getBillNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "ERP下发订单接收失败!!", false); |
| | | } |
| | | } |
| | | } |
| | |
| | | } else if (status == 1) { |
| | | String format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now); |
| | | HashMap<String, Object> condition = new HashMap<>(); |
| | | condition.put("bill_no", "'" + erpDetTb.getBillNo() + "'"); |
| | | condition.put("prd_no", "'" + erpDetTb.getPrdNo() + "'"); |
| | | condition.put("iokindid", "'" + erpDetTb.getIokindid() + "'"); |
| | | condition.put("add_id", "'" + erpDetTb.getAddId() + "'"); |
| | | condition.put("qty", "'" + erpDetTb.getQty() + "'"); |
| | | condition.put("prd_mark", "'" + erpDetTb.getPrdMark() + "'"); |
| | | condition.put("wh", "'" + erpDetTb.getWh() + "'"); |
| | | condition.put("billdate", "'" + format + "'"); |
| | | condition.put("status", "'" + erpDetTb.getStatus() + "'"); |
| | | condition.put("temp1", "'" + erpDetTb.getTemp1() + "'"); |
| | | condition.put("temp2", "'" + erpDetTb.getTemp2() + "'"); |
| | | condition.put("temp3", "'" + erpDetTb.getTemp3() + "'"); |
| | | condition.put("BIL_NO", "'" + erpDetTb.getBillNo() + "'"); |
| | | condition.put("PRD_NO", "'" + erpDetTb.getPrdNo() + "'"); |
| | | condition.put("ITM", "'" + erpDetTb.getItm() + "'"); |
| | | condition.put("ADD_ID", "'" + erpDetTb.getAddId2() + "'"); |
| | | condition.put("QTY", "'" + erpDetTb.getQty() + "'"); |
| | | condition.put("PRD_MARK", "'" + erpDetTb.getPrdMark() + "'"); |
| | | condition.put("WH", "'" + erpDetTb.getWh() + "'"); |
| | | condition.put("BIL_DATE", "'" + format + "'"); |
| | | condition.put("STATUS", "'" + erpDetTb.getStatus() + "'"); |
| | | condition.put("Temp1", "'" + erpDetTb.getTemp1() + "'"); |
| | | condition.put("Temp2", "'" + erpDetTb.getTemp2() + "'"); |
| | | condition.put("Temp3", "'" + erpDetTb.getTemp3() + "'"); |
| | | erpSqlServer.insert(ErpDetTbBak.class, condition); |
| | | |
| | | // callApiLogSave(erpDetTb, "ERP_DETTB_BAK", "ERP下发订单备份成功!!", true); |
| | | |
| | | HashMap<String, String> condition2 = new HashMap<>(); |
| | | condition2.put("bill_no", "'" + erpDetTb.getBillNo() + "'"); |
| | | condition2.put("prd_no", "'" + erpDetTb.getPrdNo() + "'"); |
| | | condition2.put("prd_mark", "'" + erpDetTb.getPrdMark() + "'"); |
| | | condition2.put("BIL_NO", "'" + erpDetTb.getBillNo() + "'"); |
| | | condition2.put("PRD_NO", "'" + erpDetTb.getPrdNo() + "'"); |
| | | condition2.put("ITM", "'" + erpDetTb.getItm() + "'"); |
| | | // condition2.put("PRD_MARK", "'" + erpDetTb.getPrdMark() + "'"); |
| | | erpSqlServer.delete(ErpDetTb.class, condition2); |
| | | } else if (status == 2) { |
| | | |
| | | // callApiLogSave(erpDetTb, "ERP_DETTB", "ERP下发订单备份后删除成功!!", true); |
| | | |
| | | } else { |
| | | |
| | | if (Cools.isEmpty(erpDetTb.getTemp1()) && Cools.isEmpty(erpDetTb.getTemp2()) && Cools.isEmpty(erpDetTb.getTemp3())){ |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",Temp1='接收ERP下发订单失败!!!状态异常!!!请ERP、立库双方协助解决。'" + "where 1=1 " |
| | | +" and PRD_NO=" + "'" + erpDetTb.getPrdNo() + "'" |
| | | +" and ITM=" + "'" + erpDetTb.getItm() + "'" |
| | | +" and BIL_NO=" + "'" + erpDetTb.getBillNo() + "'"); |
| | | callApiLogSave(erpDetTb, "ERP_DETTB", "接收ERP下发订单失败!!!状态异常!!!", false); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | Date date = new Date(); |
| | | log.error(date + ": 表名:erp_det_tb :" + e); |
| | | log.error(date + ": 表名:ERP_DETTB :" + e); |
| | | } |
| | | } |
| | | |
| | | public void callApiLogSave(ErpDetTb erpDetTb, String tableName, String response, Boolean bool) { |
| | | apiLogService.save("ERP下发订单信息", tableName, "null", ip, |
| | | "订单号:" + erpDetTb.getBillNo() + "、品号:" + erpDetTb.getPrdNo() + "、货品特征:" + erpDetTb.getPrdMark() + "、状态:" + erpDetTb.getStatus$(), |
| | | response, bool); |
| | | } |
| | | } |