package zy.cloud.wms.common.service.erp; import com.alibaba.fastjson.JSON; import com.core.common.Cools; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import zy.cloud.wms.common.service.erp.entity.GetDataResult; import zy.cloud.wms.manager.entity.CustOrder; import zy.cloud.wms.manager.service.CustOrderService; import zy.cloud.wms.manager.utils.HttpHandler; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * erp任务控制器 * Created by vincent on 2020/11/27 */ @Slf4j @Component public class ErpScheduler { public static final String URI = "http://8.133.182.21:8080/api/"; public static final String GET_ORDERS = "cM/basis/getOrders"; @Autowired private CustOrderService custOrderService; /** * 持久化销售订单 */ // @Scheduled(cron = "0/3 * * * * ? ") @Transactional public void getOrdersExecute(){ try { Map json = new HashMap<>(); json.put("vchType", 41); String response = new HttpHandler.Builder() .setUri(URI) .setPath(GET_ORDERS) .setJson(JSON.toJSONString(json)) .build() .doPost(); if (Cools.isEmpty(response)) { log.error("请求:{}\nError,响应结果为空!", URI + GET_ORDERS); } else { 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(), GetDataResult.class); if (!Cools.isEmpty(list)) { boolean complete = true; for (GetDataResult data : list) { CustOrder custOrder = new CustOrder( data.getNumber(), // 销售单号 data.getBillDate(), // 单据日期[非空] data.getBTypeID(), // 客户编号 data.getETypeID(), // 经手人编号[非空] data.getUserCode(), // 商品编号 data.getQty(), // 商品数量 data.getPrice(), // 商品单价 data.getComment(), // 商品备注[非空] 0, // 状态 now, // 添加时间 now, // 修改时间 null // 备注 ); boolean insert = custOrderService.insert(custOrder); if (!insert) { complete = false; log.error("保存销售订单失败!"); } } if (complete) { List collect = list.stream().map(GetDataResult::getNumber).distinct().collect(Collectors.toList()); for (String number : collect) { custOrderService.updateStatus(number, 1); } } } } } catch (IOException e) { e.printStackTrace(); } } }