| | |
| | | package com.zy.ints.task.scheduler; |
| | | |
| | | 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.common.model.DetlDto; |
| | | import com.zy.ints.entity.ErpDetTb; |
| | | import com.zy.ints.entity.ErpDetTbBak; |
| | | import com.zy.ints.entity.Prdt; |
| | | import com.zy.ints.entity.PrdtBak; |
| | | 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.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | private ErpSqlServer erpSqlServer; |
| | | @Autowired |
| | | private MatService matService; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | |
| | | /** |
| | | * 获取入出库订单信息 |
| | | */ |
| | | @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 prd_no="; |
| | | String sqlUpDateerpDetTbTwo = "update erp_det_tb set status=2 where prd_no="; |
| | | 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 "; |
| | | |
| | | try { |
| | | List<ErpDetTb> erpDetTbs = erpSqlServer.select(sqlSelecterpDetTb, ErpDetTb.class); |
| | | if (erpDetTbs.size() > 0){ |
| | | for (ErpDetTb erpDetTb:erpDetTbs){ |
| | | List<ErpDetTb> erpDetTbs = erpSqlServer.select(sqlSelectErpDetTb, ErpDetTb.class); |
| | | if (erpDetTbs.size() > 0) { |
| | | for (ErpDetTb erpDetTb : erpDetTbs) { |
| | | Date now = new Date(); |
| | | Integer status = erpDetTb.getStatus(); |
| | | if (status == 0){ |
| | | 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() + "'"); |
| | | } else { |
| | | Order order = orderService.selectByNo(erpDetTb.getBillNo()); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | erpDetTb.getBillNo(), // 订单编号 |
| | | DateUtils.convert(now), // 单据日期 |
| | | null, // 单据类型 |
| | | null, // 项目编号 |
| | | null, // |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 客户编号 |
| | | null, // 客户 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9999L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9999L, // 修改人员 |
| | | now, // 修改时间 |
| | | null // 备注 |
| | | ); |
| | | String InAndOut = erpDetTb.getAddId().equals("2") ? "(出库)" : "(入库)"; |
| | | DocType docType = docTypeService.selectOrAdd(erpDetTb.getIokindid$() + InAndOut, erpDetTb.getAddId().equals("1")); |
| | | if (!Cools.isEmpty(docType)) { |
| | | order.setDocType(docType.getDocId()); |
| | | if (!orderService.insert(order)) { |
| | | throw new CoolException("添加订单主档信息失败!!!"); |
| | | } |
| | | } |
| | | } |
| | | Order order1 = orderService.selectByNo(erpDetTb.getBillNo()); |
| | | if (!Cools.isEmpty(order1)) { |
| | | OrderDetl orderDetl = orderDetlService.selectItem(order1.getId(), erpDetTb.getBillNo(), erpDetTb.getPrdMark()); |
| | | if (Cools.isEmpty(orderDetl)) { |
| | | orderDetl = new OrderDetl(); |
| | | orderDetl.setOrderId(order1.getId()); |
| | | orderDetl.setOrderNo(erpDetTb.getBillNo()); |
| | | orderDetl.setAnfme(erpDetTb.getQty()); |
| | | orderDetl.setQty(0.0D); |
| | | orderDetl.setMatnr(erpDetTb.getPrdNo()); |
| | | orderDetl.setMaktx(mat.getMaktx()); |
| | | orderDetl.setBatch(erpDetTb.getPrdMark()); |
| | | orderDetl.setSpecs(mat.getSpecs()); |
| | | orderDetl.setUnit(mat.getUnit()); |
| | | |
| | | }else if (status == 1){ |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setCreateBy(9999L); |
| | | orderDetl.setCreateTime(now); |
| | | orderDetl.setUpdateBy(9999L); |
| | | orderDetl.setUpdateTime(now); |
| | | if (orderDetlService.insert(orderDetl)){ |
| | | erpSqlServer.update(sqlUpDateErpDetTbOne + "'" + erpDetTb.getPrdNo() + "'"); |
| | | }else { |
| | | erpSqlServer.update(sqlUpDateErpDetTbTwo + ",temp1='添加订单明细档失败!!!'" + "where 1=1 and prd_no=" + "'" + erpDetTb.getPrdNo() + "'"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else if (status == 1) { |
| | | 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", "'" + erpDetTb.getBilldate() + "'"); |
| | | 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); |
| | | |
| | | }else if (status == 2){ |
| | | HashMap<String, String> condition2 = new HashMap<>(); |
| | | condition.put("bill_no", "'" + erpDetTb.getBillNo() + "'"); |
| | | condition2.put("prd_no", "'" + erpDetTb.getPrdNo() + "'"); |
| | | condition.put("prd_mark", "'" + erpDetTb.getPrdMark() + "'"); |
| | | erpSqlServer.delete(ErpDetTb.class, condition2); |
| | | } else if (status == 2) { |
| | | |
| | | }else { |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | |
| | | } catch (Exception e) { |
| | | Date date = new Date(); |
| | | log.error(date + ": 表名:erp_det_tb :" + e); |
| | | } |
| | | } |
| | | } |