//package zy.cloud.wms.common.service.erp; // //import com.alibaba.fastjson.JSON; //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 lombok.extern.slf4j.Slf4j; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.scheduling.annotation.Scheduled; //import org.springframework.stereotype.Component; //import org.springframework.transaction.annotation.Transactional; //import org.springframework.web.bind.annotation.GetMapping; //import org.springframework.web.bind.annotation.RestController; //import zy.cloud.wms.common.service.erp.entity.*; //import zy.cloud.wms.manager.entity.*; //import zy.cloud.wms.manager.mapper.CustOrderMapper; //import zy.cloud.wms.manager.mapper.TagMapper; //import zy.cloud.wms.manager.service.*; //import zy.cloud.wms.manager.utils.HttpHandler; //import zy.cloud.wms.manager.utils.NodeUtils; // //import java.io.IOException; //import java.util.*; //import java.util.stream.Collectors; // ///** // * erp任务控制器 // * Created by vincent on 2020/11/27 // */ //@Slf4j //@Component //@RestController //public class ErpScheduler { // // public static final String URI = "http://8.133.182.21:8080/api"; // public static final String GET_ORDERS = "cM/basis/getOrders"; // public static final String GET_BASIS = "cM/basis/getBasis"; // public static final String UPLOAD_BILL = "cM/basis/uploadBill"; // public static final String UPLOAD_STOCK = "cM/basis/uploadStock"; // public static final String OVER_BILL = "cM/basis/OverBill"; // public static final String UPLOAD_CANCEL_RESULT = "cM/basis/cancelOrders"; // // @Autowired // private CustOrderService custOrderService; // @Autowired // private MatService matService; // @Autowired // private CstmrService cstmrService; // @Autowired // private LocDetlService locDetlService; // @Autowired // private TagService tagService; // @Autowired // private TagMapper tagMapper; // @Autowired // private CustOrderMapper custOrderMapper; // @Autowired // private SnowflakeIdWorker snowflakeIdWorker; // // /** // * 商品下载 // */ // // @Scheduled(cron = "0/5 * * * * ? ") // @GetMapping("/test1") //// @PostConstruct // public void getBasis1Execute(){ // try { // Map param = new HashMap<>(); // param.put("rec", 0); // param.put("Flag", 1); // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(GET_BASIS) // .setJson(JSON.toJSONString(param)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { // log.info(response); // Date now = new Date(); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // return; // } // List list = JSON.parseArray(result.getData(), GetBasisResult.class); // Tag first = null; // for (GetBasisResult data : list) { // Mat mat = matService.selectByMatnr(data.getUserCode()); // String modifyDate = data.getModifyDate(); // Date updateTime = null; // if (!Cools.isEmpty(modifyDate)) { // updateTime = DateUtils.convert(data.getModifyDate()); // } // // // 分类 // Tag second = tagService.selectOne(new EntityWrapper().eq("name", data.getYjfl()).eq("level", 2)); // if (second == null) { // if (first == null) { // first = tagService.selectOne(new EntityWrapper().eq("level", 1)); // if (first == null) { // throw new CoolException("全部分类出错"); // } // } // NodeUtils nodeUtils = new NodeUtils(); // nodeUtils.executePath(first.getId()); // second = new Tag( // null, // 编号 // data.getYjfl(), // 名称 // first.getId(), // 父级 // first.getName(), // 父级名称 // nodeUtils.path.toString(), // 关联路径 // nodeUtils.pathName.toString(), // 关联路径名 // 0, // 类型 // null, // 负责人 // null, // 图片 // null, // 简要描述 // null, // 数量 // 2, // 等级 // null, // 排序 // 1, // 状态 // now, // 添加时间 // null, // 添加人员 // now, // 修改时间 // null, // 修改人员 // null // 备注 // ); // if (tagMapper.insert(second) == 0) { // throw new CoolException("插入分类失败"); // } // } // // Tag third = tagService.selectOne(new EntityWrapper().eq("level", 3).eq("name", data.getEjfl()).eq("parent_name", data.getYjfl())); // if (third == null) { // NodeUtils nodeUtils = new NodeUtils(); // nodeUtils.executePath(second.getId()); // third = new Tag( // null, // 编号 // data.getEjfl(), // 名称 // second.getId(), // 父级 // second.getName(), // 父级名称 // nodeUtils.path.toString(), // 关联路径 // nodeUtils.pathName.toString(), // 关联路径名 // 0, // 类型 // null, // 负责人 // null, // 图片 // null, // 简要描述 // null, // 数量 // 3, // 等级 // null, // 排序 // 1, // 状态 // now, // 添加时间 // null, // 添加人员 // now, // 修改时间 // null, // 修改人员 // null // 备注 // ); // if (tagMapper.insert(third) == 0) { // throw new CoolException("插入分类失败"); // } // } // // if (null == mat) { // mat = new Mat( // String.valueOf(data.getRec()), // 编号 // null, // 所属区域 // third.getId(), // 所属归类 // data.getUserCode(), // 商品编号 // data.getFullName(), // 商品名称 // null, // 名称 // data.getStandard(), // 规格 // null, // 型号 // null, // 批号 // data.getUnit3(), // 单位 // data.getBarcode(), // 条码 // null, // 单据类型 // null, // 单据编号 // null, // 客户名称 // null, // 品项数 // null, // 库存余量 // null, // 重量 // 1, // // null, // 添加人员 // now, // 添加时间 // null, // 修改人员 // updateTime, // 修改时间 // null // 备注 // ); // matService.insert(mat); // } else { // mat.setUuid(String.valueOf(data.getRec())); // mat.setMatnr(data.getUserCode()); // mat.setMaktx(data.getFullName()); // mat.setSpecs(data.getStandard()); // mat.setUpdateTime(updateTime); // mat.setBarcode(data.getBarcode()); // mat.setUnit(data.getUnit3()); // matService.updateById(mat); // } // log.info("====>> 更新物料:{}", data.getUserCode()); // } // // } // } catch (Exception e) { // e.printStackTrace(); // throw new RuntimeException(e.getMessage()); // } // } // // /** // * 客户下载 // */ // // @Scheduled(cron = "0/5 * * * * ? ") //// @PostConstruct // public void getBasis2Execute(){ // try { // Map param = new HashMap<>(); // param.put("rec", 0); // param.put("Flag", 2); // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(GET_BASIS) // .setJson(JSON.toJSONString(param)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { // log.info(response); // Date now = new Date(); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // return; // } // List list = JSON.parseArray(result.getData(), GetBasisResult.class); // for (GetBasisResult data : list) { // Cstmr cstmr = cstmrService.selectOne(new EntityWrapper().eq("uuid", data.getUserCode())); // String modifyDate = data.getModifyDate(); // Date updateTime = null; // if (!Cools.isEmpty(modifyDate)) { // updateTime = DateUtils.convert(data.getModifyDate()); // } // if (null == cstmr) { // cstmr = new Cstmr( // data.getUserCode(), // 客户编号[非空] // data.getFullName(), // 客户名称 // null, // 联系人 // null, // 联系电话 // null, // 联系地址 // 1, // 状态 // null, // 添加人员 // now, // 添加时间 // null, // 修改人员 // updateTime, // 修改时间 // String.valueOf(data.getRec()) // 备注 // ); // cstmrService.insert(cstmr); // } else { // cstmr.setUuid(data.getUserCode()); // cstmr.setName(data.getFullName()); // cstmr.setUpdateTime(updateTime); // cstmr.setMemo(String.valueOf(data.getRec())); // cstmrService.updateById(cstmr); // } // log.info("====>> 更新客户资料:{}", data.getUserCode()); // } // // } // } catch (Exception e) { // e.printStackTrace(); // throw new RuntimeException(e.getMessage()); // } // } // // /** // * 持久化销售订单 // */ // @Scheduled(cron = "0/5 * * * * ? ") // @Transactional //// @PostConstruct // public void getOrdersExecute(){ // try { // Map json = new HashMap<>(); // json.put("vchType", 151); // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(GET_ORDERS) // .setJson(JSON.toJSONString(json)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { //// log.info(response); // Date now = new Date(); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // return; // } // List list = JSON.parseArray(result.getData(), GetOrderResult0.class); // if (!Cools.isEmpty(list)) { // boolean complete = true; // Set existNumbers = new HashSet<>(); // for (GetOrderResult0 data : list) { // if (custOrderService.selectCount(new EntityWrapper() // .eq("number", data.getNumber()) //// .ne("bType_id", data.getBTypeID()) // ) > 0) { //// log.error("{}单号已存在", data.getNumber()); //// complete = false; // existNumbers.add(data.getNumber()); // continue; // } // for (GetOrderResultDetl0 detl0 : data.getDetail()) { // CustOrder custOrder = new CustOrder( // data.getNumber(), // 销售单号 // data.getBillDate(), // 单据日期[非空] // data.getBTypeID(), // 客户编号 // data.getETypeID(), // 经手人编号[非空] // data.getVchcode(), // 单据自增ID // detl0.getUserCode(), // 商品编号 // detl0.getQty(), // 商品数量 // detl0.getQty(), // 总数量 // detl0.getPrice(), // 商品单价 // detl0.getRowNo(), // 商品明细行号 // detl0.getComment(), // 商品备注[非空] // 0, // 状态 // now, // 添加时间 // now, // 修改时间 // data.getSummary() // 备注 // ); // if (!custOrderService.insert(custOrder)) { // complete = false; // log.error("保存销售订单失败!"); // } // } // } // if (complete) { // List collect = list.stream().map(GetOrderResult0::getNumber).distinct().collect(Collectors.toList()); // for (String number : collect) { // if (!existNumbers.contains(number)) { // custOrderService.updateStatus(number, 1); // } // } // } // // } // } // } catch (IOException e) { // e.printStackTrace(); // throw new RuntimeException(e.getMessage()); // } // // } // // /** // * 完成销售订单 // */ // @Scheduled(cron = "0/10 * * * * ? ") // @Transactional //// @PostConstruct // public void finishOrdersExecute(){ // try { // List custOrders = custOrderService.selectList(new EntityWrapper().eq("status", 4).isNotNull("vch_code")); // if (!Cools.isEmpty(custOrders)) { // List numbers = custOrders.stream().map(CustOrder::getNumber).distinct().collect(Collectors.toList()); // for (String number : numbers) { // GetOrderResult0 getOrderResult0 = new GetOrderResult0(); // List list = new ArrayList<>(); // getOrderResult0.setDetail(list); // // 遍历递减 // Iterator iterator = custOrders.iterator(); // while (iterator.hasNext()) { // CustOrder custOrder = iterator.next(); // if (custOrder.getNumber().equals(number)) { // // 表头 // if (Cools.isEmpty(getOrderResult0.getNumber())) { // getOrderResult0.setNumber(number); // getOrderResult0.setVchType(11); // todo:luxiaotao // getOrderResult0.setBillDate(custOrder.getBillDate()); // getOrderResult0.setBTypeID(custOrder.getBTypeId()); // getOrderResult0.setKTypeID("宏挺仓库"); // getOrderResult0.setVchcode(custOrder.getVchcode()); // } // // 表体 // GetOrderResultDetl0 detl0 = new GetOrderResultDetl0(); // detl0.setUserCode(custOrder.getUserCode()); // detl0.setQty(custOrder.getTotal()); // detl0.setPrice(custOrder.getPrice()); // detl0.setComment(custOrder.getComment()); // detl0.setRowNo(custOrder.getRowNo()); // list.add(detl0); // iterator.remove(); // } // } // // System.out.println(JSON.toJSONString(getOrderResult0)); // // // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(UPLOAD_BILL) // .setJson(JSON.toJSONString(getOrderResult0)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { // log.warn(response); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // continue; // } // // 转历史档 // int save = custOrderMapper.saveLog(getOrderResult0.getNumber()); // if (save > 0) { // if (custOrderMapper.delete(new EntityWrapper().eq("number", getOrderResult0.getNumber())) == 0) { // throw new CoolException("删除销售订单失败"); // } // log.info("{}销售订单拣货结束", getOrderResult0.getNumber()); // } // } // // } // } // // // } catch (Exception e) { // e.printStackTrace(); // throw new RuntimeException(e.getMessage()); // } // // } // // /** // * 库存上传 // */ //// @Scheduled(cron = "0/15 * * * * ? ") // @GetMapping("test2") // public void uploadStockExecute(){ // try { // // List statis = locDetlService.getLocDetlStatis(); // if (!Cools.isEmpty(statis)) { // UploadStock uploadStock = new UploadStock(); // uploadStock.setNumber(String.valueOf(snowflakeIdWorker.nextId())); // uploadStock.setVchType(89); // uploadStock.setBillDate(DateUtils.convert(new Date(), DateUtils.yyyyMMdd_F)); // uploadStock.setDataSize(statis.size()); // List detail = new ArrayList<>(); // uploadStock.setDetail(detail); // for (LocDetl locDetl : statis) { // Mat mat = matService.selectByMatnr(locDetl.getMatnr()); // if (mat == null) {continue;} // UploadStockDtel detl = new UploadStockDtel(); // detl.setUserCode(mat.getMatnr()); // detl.setQty(locDetl.getAnfme()); //// detl.setPrice(Double.parseDouble()); // detl.setComment(mat.getMemo()); // detail.add(detl); // } // // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(UPLOAD_STOCK) // .setJson(JSON.toJSONString(uploadStock)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { // log.info("上报库存明细统计 ======>> \nrequest:{} \nresponse:{}", JSON.toJSONString(uploadStock), response); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // } // } // } // // } catch (Exception e) { // e.printStackTrace(); // } // // // } // // // /** // * 获取取消订单 // */ // @Scheduled(cron = "0/5 * * * * ? ") // @Transactional //// @PostConstruct // public void getCancelOrdersExecute(){ // try { // Map json = new HashMap<>(); // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(OVER_BILL) // .setJson(JSON.toJSONString(json)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { //// log.info(response); // Date now = new Date(); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // return; // } // List list = JSON.parseArray(result.getData(), GetOrderResult0.class); // if (!Cools.isEmpty(list)) { // boolean complete = true; // Set existNumbers = new HashSet<>(); // // String cancelNumber = ""; // if (!custOrderService.updateStatus(cancelNumber, 5)) { // throw new CoolException("修改订单状态失败"); // } // // // } // } // } catch (IOException e) { // e.printStackTrace(); // throw new RuntimeException(e.getMessage()); // } // // } // // /** // * 上传销售订单取消结果 // */ // @Scheduled(cron = "0/5 * * * * ? ") // @Transactional //// @PostConstruct // public void uploadCancelOrdersExecute(){ // try { // List custOrders = custOrderService.selectList(new EntityWrapper().eq("status", 3).isNotNull("vch_code")); // if (Cools.isEmpty(custOrders)) { // return; // } // Map json = new HashMap<>(); // List list = new ArrayList<>(); // for (CustOrder custOrder : custOrders) { // UploadCancelResult result = new UploadCancelResult(); // result.setNumber(custOrder.getNumber()); // result.setUserCode(custOrder.getUserCode()); // result.setQty(custOrder.getTotal()); // result.setStatus(1); // list.add(result); // } // json.put("data", list); // String response = new HttpHandler.Builder() // .setUri(URI) // .setPath(UPLOAD_CANCEL_RESULT) // .setJson(JSON.toJSONString(json)) // .build() // .doPost(); // if (!Cools.isEmpty(response)) { //// log.info(response); // Date now = new Date(); // Result result = JSON.parseObject(response, Result.class); // if (result.getCode() != 1) { // return; // } // for (UploadCancelResult result1 : list) { // // 转历史档 // int save = custOrderMapper.saveLog(result1.getNumber(), result1.getUserCode()); // if (save > 0) { // if (custOrderMapper.delete(new EntityWrapper().eq("number", result1.getNumber()).eq("user_code", result1.getUserCode())) == 0) { // throw new CoolException("删除销售订单失败"); // } // } // } // } // } catch (IOException e) { // e.printStackTrace(); // throw new RuntimeException(e.getMessage()); // } // // } // //}