|  |  |  | 
|---|
|  |  |  | package com.zy.ints.task.scheduler; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
|---|
|  |  |  | import com.zy.asrs.entity.LocDetl; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.service.LocDetlService; | 
|---|
|  |  |  | import com.zy.common.web.BaseController; | 
|---|
|  |  |  | import com.zy.ints.entity.ErpLk; | 
|---|
|  |  |  | import com.zy.ints.entity.ErpLkBak; | 
|---|
|  |  |  | 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.Date; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Slf4j | 
|---|
|  |  |  | @Component | 
|---|
|  |  |  | public class ErpLkScheduler { | 
|---|
|  |  |  | public class ErpLkScheduler extends BaseController { | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * ERP接口是否启用 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Value("${erp.enabled}") | 
|---|
|  |  |  | private Boolean erpEnabled; | 
|---|
|  |  |  | @Value("${erp.useName.ip}") | 
|---|
|  |  |  | private String ip; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ErpSqlServer erpSqlServer; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private LocDetlService locDetlService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * ERP与lk库存数据比对 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Scheduled(cron = "${erp.refreshtime}") | 
|---|
|  |  |  | public void InOrOutOrder() { | 
|---|
|  |  |  | public void proofread() { | 
|---|
|  |  |  | if (!erpEnabled) return; | 
|---|
|  |  |  | String sqlSelectErpLk = "select prd_no as prdNo,prd_mark as prdMark,qty,wh,status,temp1,temp2,temp3 from bas_erp_lk where 1=1"; | 
|---|
|  |  |  | String sqlSelectErpLkBak = "select prd_no as prdNo,prd_mark as prdMark,qty,wh,status,temp1,temp2,temp3 from bas_erp_lk_bak where 1=1"; | 
|---|
|  |  |  | String sqlUpDateErpLkOne = "update bas_erp_lk set status=1 where prd_no="; | 
|---|
|  |  |  | String sqlUpDateErpLkTwo = "update bas_erp_lk set status=2 where prd_no="; | 
|---|
|  |  |  | String sqlUpDateErpLkBak = "update bas_erp_lk_bak set qty="; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | List<ErpLk> erpLks = erpSqlServer.select(sqlSelectErpLk, ErpLk.class); | 
|---|
|  |  |  | if (erpLks.size() > 0){ | 
|---|
|  |  |  | for (ErpLk erpLk:erpLks){ | 
|---|
|  |  |  | if (erpLks.size() > 0) { | 
|---|
|  |  |  | for (ErpLk erpLk : erpLks) { | 
|---|
|  |  |  | Integer status = erpLk.getStatus(); | 
|---|
|  |  |  | if (status == 0){ | 
|---|
|  |  |  | if (status == 0) { | 
|---|
|  |  |  | HashMap<String, Object> param = new HashMap<>(); | 
|---|
|  |  |  | param.put("curr", 1); | 
|---|
|  |  |  | param.put("limit", 20); | 
|---|
|  |  |  | param.put("matnr", erpLk.getPrdNo()); | 
|---|
|  |  |  | param.put("batch", erpLk.getPrdMark()); | 
|---|
|  |  |  | Page<LocDetl> stockStatis = locDetlService.getStockStatis(toPage(1, 10, param, LocDetl.class)); | 
|---|
|  |  |  | if (stockStatis.getRecords().size() == 1) { | 
|---|
|  |  |  | for (LocDetl locDetl : stockStatis.getRecords()) { | 
|---|
|  |  |  | if (locDetl.getAnfme() - erpLk.getQty() == 0) { | 
|---|
|  |  |  | erpSqlServer.update(sqlUpDateErpLkOne + "'" + erpLk.getPrdNo() + "' and prd_mark='" + erpLk.getPrdMark() + "'"); | 
|---|
|  |  |  | callApiLogSave(erpLk, "bas_erp_lk", "库存对比数量相同!!!总量为:" + erpLk.getQty(), true); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | erpSqlServer.update(sqlUpDateErpLkTwo + "'" + erpLk.getPrdNo() + "' and prd_mark='" + erpLk.getPrdMark() + "'"); | 
|---|
|  |  |  | callApiLogSave(erpLk, "bas_erp_lk", "库存对比数量不同!!!立库总量为:" + locDetl.getAnfme() + "、ERP总量为:" + erpLk.getQty(), false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callApiLogSave(erpLk, "bas_erp_lk", "立库库存异常!!!相同品号、货品特征的货物重复!!!", false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (status == 1) { | 
|---|
|  |  |  | List<ErpLkBak> erpLkBaks = erpSqlServer.select(sqlSelectErpLkBak + " and prd_no='" + erpLk.getPrdNo() + "' and prd_mark='" + erpLk.getPrdMark() + "'", ErpLkBak.class); | 
|---|
|  |  |  | if (erpLkBaks.size() == 1) { | 
|---|
|  |  |  | erpSqlServer.update(sqlUpDateErpLkBak + "'" + erpLk.getQty() + "' where 1=1  " + | 
|---|
|  |  |  | "and prd_no='" + erpLk.getPrdNo() + "'" + | 
|---|
|  |  |  | "and prd_mark='" + erpLk.getPrdMark() + "'" | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | } else if (erpLkBaks.size() == 0) { | 
|---|
|  |  |  | HashMap<String, Object> condition = new HashMap<>(); | 
|---|
|  |  |  | condition.put("prd_no", "'" + erpLk.getPrdNo() + "'"); | 
|---|
|  |  |  | condition.put("prd_mark", "'" + erpLk.getPrdMark() + "'"); | 
|---|
|  |  |  | condition.put("qty", "'" + erpLk.getQty() + "'"); | 
|---|
|  |  |  | condition.put("wh", "'" + erpLk.getWh() + "'"); | 
|---|
|  |  |  | condition.put("status", "'" + erpLk.getStatus() + "'"); | 
|---|
|  |  |  | condition.put("temp1", "'" + erpLk.getTemp1() + "'"); | 
|---|
|  |  |  | condition.put("temp2", "'" + erpLk.getTemp2() + "'"); | 
|---|
|  |  |  | condition.put("temp3", "'" + erpLk.getTemp3() + "'"); | 
|---|
|  |  |  | erpSqlServer.insert(ErpLkBak.class, condition); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callApiLogSave(erpLk, "bas_erp_lk", "库存对比记录备份存在异常!!!", false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //                        callApiLogSave(erpLk, "bas_erp_lk", "库存对比记录备份成功!!!总量为:" + erpLk.getQty(), true); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else if (status == 1){ | 
|---|
|  |  |  | HashMap<String, String> condition2 = new HashMap<>(); | 
|---|
|  |  |  | condition2.put("prd_no", "'" + erpLk.getPrdNo() + "'"); | 
|---|
|  |  |  | condition2.put("prd_mark", "'" + erpLk.getPrdMark() + "'"); | 
|---|
|  |  |  | erpSqlServer.delete(ErpLk.class, condition2); | 
|---|
|  |  |  | //                        callApiLogSave(erpLk, "bas_erp_lk", "库存对比记录备份后删除成功!!!总量为:" + erpLk.getQty(), true); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else if (status == 2){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | callApiLogSave(erpLk, "bas_erp_lk", "库存对比存在异常数据未处理!!!", false); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | Date date = new Date(); | 
|---|
|  |  |  | log.error(date + ": 表名:bas_erp_lk :" + e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void callApiLogSave(ErpLk erpLk, String tableName, String response, Boolean bool) { | 
|---|
|  |  |  | apiLogService.save("ERP与lk库存数据比对", tableName, "null", ip, | 
|---|
|  |  |  | "品号:" + erpLk.getPrdNo() + "、货品特征:" + erpLk.getPrdMark() + "、数量:" + erpLk.getQty() + "、状态:" + erpLk.getStatus$(), | 
|---|
|  |  |  | response, bool); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|