package zy.cloud.wms.common.service.erp; import com.alibaba.fastjson.JSON; import com.core.common.Cools; import com.core.common.DateUtils; 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.GetBasisResult; import zy.cloud.wms.common.service.erp.entity.GetOrderResult; import zy.cloud.wms.manager.entity.CustOrder; import zy.cloud.wms.manager.entity.Mat; import zy.cloud.wms.manager.service.CustOrderService; import zy.cloud.wms.manager.service.MatService; import zy.cloud.wms.manager.utils.HttpHandler; import javax.annotation.PostConstruct; 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"; public static final String GET_BASIS = "cM/basis/getBasis"; @Autowired private CustOrderService custOrderService; @Autowired private MatService matService; /** * 商品/客户下载 */ // @Scheduled(cron = "0/5 * * * * ? ") @PostConstruct public void getBasisExecute(){ 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); 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()); } if (null == mat) { mat = new Mat( String.valueOf(data.getRec()), // 编号 null, // 所属区域 null, // 所属归类 data.getUserCode(), // 商品编号 data.getFullName(), // 商品名称 null, // 名称 null, // 规格 null, // 型号 null, // 批号 null, // 单位 null, // 条码 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.setUpdateTime(updateTime); matService.updateById(mat); } log.info("====>> 更新物料:{}", data.getUserCode()); } } } catch (Exception e) { e.printStackTrace(); } } /** * 持久化销售订单 */ // @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.info(response); Date now = new Date(); Result result = JSON.parseObject(response, Result.class); if (result.getCode() != 1) { return; } List list = JSON.parseArray(result.getData(), GetOrderResult.class); if (!Cools.isEmpty(list)) { boolean complete = true; for (GetOrderResult 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(GetOrderResult::getNumber).distinct().collect(Collectors.toList()); for (String number : collect) { custOrderService.updateStatus(number, 1); } } } } } catch (IOException e) { e.printStackTrace(); } } }