package com.zy.ints.task.scheduler; import com.core.common.Cools; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.Tag; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.MatService; import com.zy.asrs.service.TagService; 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.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.HashMap; import java.util.List; /** * erp任务控制器 * Created by vincent on 2020/11/27 */ @Slf4j @Component public class ErpPrdtSchedulerNew { /** * ERP接口是否启用 */ @Value("${erp.enabled}") private Boolean erpEnabled; @Value("${erp.enabledNew}") private Boolean erpEnabledNew; @Value("${erp.useName.ip}") private String ip; @Autowired private ApiLogService apiLogService; @Autowired private TagService tagService; @Autowired private ErpSqlServer erpSqlServer; @Autowired private MatService matService; /** * 获取商品信息表资料 年前 */ @Scheduled(cron = "${erp.refreshtime}") public void obtainPedt() { if (!erpEnabledNew) return; String sqlSelectPrdt = "select PRD_NO as prdNo,NAME as name,UT as ut,SPC as spc from PRDT where 1=1"; String sqlUpDatePrdtOne = "update PRDT set STATUS=1 where PRD_NO="; String sqlUpDatePrdtTwo = "update PRDT set STATUS=2 where PRD_NO="; try { Tag tag = tagService.selectByName("全部", 1); List prdts = erpSqlServer.select(sqlSelectPrdt, Prdt.class); Date date = new Date(); if (prdts.size() > 0) { for (Prdt prdt : prdts) { Mat mat = matService.selectByMatnr(prdt.getPrdNo()); if (Cools.isEmpty(mat)) { Mat matNew = new Mat(); matNew.setTagId(tag.getId()); matNew.setMatnr(prdt.getPrdNo()); matNew.setMaktx(prdt.getName()); matNew.setUnit(prdt.getUt()); matNew.setSpecs(prdt.getSpc()); matNew.setCreateBy(9999L);//9999表示erp下发 matNew.setCreateTime(date); matNew.setUpdateBy(9999L);//9999表示erp下发 matNew.setUpdateTime(date); if (matService.insert(matNew)) { // erpSqlServer.update(sqlUpDatePrdtOne + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息成功!添加商品信息成功!", true); } else { // erpSqlServer.update(sqlUpDatePrdtTwo + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息失败!!!添加商品信息失败!!!", false); } } else { // erpSqlServer.update(sqlUpDatePrdtTwo + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息失败!!!商品已存在!!!", false); } } } /*if (prdts.size() > 0) { for (Prdt prdt : prdts) { Date date = new Date(); if (prdt.getStatus() == 0) { Integer type = prdt.getType(); if (type == 1) { Mat mat = matService.selectByMatnr(prdt.getPrdNo()); if (Cools.isEmpty(mat)) { Mat matNew = new Mat(); matNew.setTagId(tag.getId()); matNew.setMatnr(prdt.getPrdNo()); matNew.setMaktx(prdt.getName()); matNew.setUnit(prdt.getUt()); matNew.setSpecs(prdt.getSpc()); matNew.setCreateBy(9999L);//9999表示erp下发 matNew.setCreateTime(date); matNew.setUpdateBy(9999L);//9999表示erp下发 matNew.setUpdateTime(date); if (matService.insert(matNew)) { erpSqlServer.update(sqlUpDatePrdtOne + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息成功!添加商品信息成功!", true); } else { erpSqlServer.update(sqlUpDatePrdtTwo + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息失败!!!添加商品信息失败!!!", false); } } else { erpSqlServer.update(sqlUpDatePrdtTwo + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息失败!!!商品已存在!!!", false); } } else if (type == 2) { Mat mat = matService.selectByMatnr(prdt.getPrdNo()); if (!Cools.isEmpty(mat)) { mat.setMaktx(prdt.getName()); mat.setUnit(prdt.getUt()); mat.setSpecs(prdt.getSpc()); if (matService.updateById(mat)) { erpSqlServer.update(sqlUpDatePrdtOne + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息成功!修改商品信息成功!", true); } else { erpSqlServer.update(sqlUpDatePrdtTwo + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息失败!!!修改商品信息失败!!!", false); } } } else if (type == 3) { Mat mat = matService.selectByMatnr(prdt.getPrdNo()); if (!Cools.isEmpty(mat)) { if (matService.deleteById(mat.getId())) { erpSqlServer.update(sqlUpDatePrdtOne + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息成功!删除商品信息成功!", true); } else { erpSqlServer.update(sqlUpDatePrdtTwo + "'" + prdt.getPrdNo() + "'"); callApiLogSave(prdt, "PRDT", "接收ERP下发商品信息成功!删除商品信息失败!", false); } } } else { callApiLogSave(prdt, "PRDT", "商品信息出现异常资料未处理!", false); } } else if (prdt.getStatus() == 1) { HashMap condition = new HashMap<>(); condition.put("PRD_NO", "'" + prdt.getPrdNo() + "'"); condition.put("NAME", "'" + prdt.getName() + "'"); condition.put("UT", "'" + prdt.getUt() + "'"); condition.put("SPC", "'" + prdt.getSpc() + "'"); condition.put("TYPE", "'" + prdt.getType() + "'"); condition.put("STATUS", "'" + prdt.getStatus() + "'"); erpSqlServer.insert(PrdtBak.class, condition); // callApiLogSave(prdt, "erp_prdt_bak", "ERP下发商品信息备份成功!", true); HashMap condition2 = new HashMap<>(); condition2.put("prd_no", "'" + prdt.getPrdNo() + "'"); erpSqlServer.delete(Prdt.class, condition2); // callApiLogSave(prdt, "erp_prdt", "ERP下发商品信息备份后删除成功!", true); } else { callApiLogSave(prdt, "PRDT", "商品信息出现异常资料未处理!", false); } }*/ // } } catch (Exception e) { Date date = new Date(); log.error(date + ": 表名:PRDT :" + e); } } public void callApiLogSave(Prdt prdt, String tableName, String response, Boolean bool) { apiLogService.save("ERP下发商品信息", tableName, "null", ip, "品号:" + prdt.getPrdNo() + "、品名:" + prdt.getName() + "、类型:" + prdt.getType() + "、状态:" + prdt.getStatus$(), response, bool); } }