package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.RmsWarehouseMapper; import com.steerinfo.dil.mapper.WmspGridMaterialMapper; import com.steerinfo.dil.mapper.WmspInboundResultMapper; import com.steerinfo.dil.mapper.WmspSendReceiveMapper; import com.steerinfo.dil.model.WmspSendReceive; import com.steerinfo.dil.service.IWmspSendReceiveService; import com.steerinfo.dil.util.DataChange; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author luobang * @create 2021-09-08 16:10 */ @Service public class WmspSendReceiveServiceImpl implements IWmspSendReceiveService { @Autowired WmspSendReceiveMapper wmspSendReceiveMapper; @Autowired RmsWarehouseMapper rmsWarehouseMapper; @Autowired WmspGridMaterialMapper wmspGridMaterialMapper; @Autowired WmspInboundResultMapper wmspInboundResultMapper; @Override public List> getWmspSendReceiveService(Map mapValue) { List> maps = wmspSendReceiveMapper.selectWmspSendReceive(mapValue); return maps; } @Override public int count() { return 0; } @Override public BigDecimal getMaterialId(BigDecimal materialSteelId) { return wmspSendReceiveMapper.getMaterialId(materialSteelId); } @Override public int getTodaySendReceiveCount() { return wmspSendReceiveMapper.getTodaySendReceiveCount(); } /* @Override //针对每一个仓库中的每一个物资类型新增一个收发层(初始化收发层) @Scheduled(cron = "0 0 0 * * ? ") public int addSendReceive() { int i=0; WmspSendReceive wmspSendReceive = new WmspSendReceive(); //高线库,一棒库,二棒库,配送库 List> mapList = rmsWarehouseMapper.getWarehouseName(); //遍历四个仓库 for(Map map:mapList){ BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("id")); //查询去重实时库存中的物资id List> materialIdList = wmspGridMaterialMapper.getMaterialId(warehouseId); for(Map map1:materialIdList){ //收发层主键自增 BigDecimal sendReceiveId = wmspSendReceiveMapper.getSendReceiveId(); wmspSendReceive.setSendReceiveId(sendReceiveId); //仓库id wmspSendReceive.setWarehouseId(warehouseId); //收发层日期 wmspSendReceive.setSendReceiveDate(new Date()); //物资id BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId")); wmspSendReceive.setMaterialId(materialId); //今天入库(今天生产入库+今天退货入库+今天盘盈 = 今天入库)暂只管出入库 //从零点开始每入库一件就增加一件 //sendReceiveThisdayInbound = wmspSendReceiveMapper.updateSendReceiveThisdayInbound(materialId); //初始化今日入库为零 wmspSendReceive.setSendReceiveThisdayInbound(new BigDecimal(0)); //今天出库(今天出库+今天盘亏=今天出库) //初始化出库为0 wmspSendReceive.setSendReceiveThisdayOutbound(new BigDecimal(0)); //昨天库存 //查询昨天库存 Map map2 = new HashMap<>(); map2.put("warehouseId",warehouseId); map2.put("materialId",materialId); BigDecimal sendReceiveLastdayInventory = wmspSendReceiveMapper.getSendReceiveLastdayInventory(map2); if(sendReceiveLastdayInventory == null){ wmspSendReceive.setSendReceiveLastdayInventory(new BigDecimal(0)); }else{ wmspSendReceive.setSendReceiveLastdayInventory(sendReceiveLastdayInventory); } //今天库存 // BigDecimal sendReceiveLastdayInventory1 = wmspSendReceive.getSendReceiveLastdayInventory(); // if(sendReceiveLastdayInventory1.intValue()==0 || sendReceiveLastdayInventory1 == null){ // wmspSendReceive.setSendReceiveThisdayInventory(new BigDecimal(0)); // }else { // addThisdayInventorySendReceive(map2); // } wmspSendReceive.setSendReceiveThisdayInventory(wmspSendReceive.getSendReceiveLastdayInventory()); wmspSendReceive.setInsertUsername("admin"); wmspSendReceive.setInsertTime(new Date()); wmspSendReceive.setDeleted(new BigDecimal(1)); i+=wmspSendReceiveMapper.insertSelective(wmspSendReceive); } } return i; } //入库的时候调用收发层 //传入一个map进来warehouseId,materialId public int addInBoundSendReceive(Map map){ //今天入库(今天生产入库+今天退货入库+今天盘盈 = 今天入库)暂只管入库 return wmspSendReceiveMapper.updateSendReceiveThisdayInbound(map); } //出库的时候调用收发层 public int addOutBoundSendReceive(Map map){ //今天出库(今天出库+今天盘亏=今天出库)暂只管出库 return wmspSendReceiveMapper.updateSendReceiveThisdayOutbound(map); } //计算今天库存(昨天库存 + 今天入库 — 今天出库 = 今天库存),实时变动 public int addThisdayInventorySendReceive(Map map){ BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId")); BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("warehouseId")); //今天入库 BigDecimal sendReceiveThisdayInbound = wmspSendReceiveMapper.selectSendReceiveThisdayInbound(map); if(sendReceiveThisdayInbound == null){ sendReceiveThisdayInbound = new BigDecimal(0); } //今天出库 BigDecimal sendReceiveThisdayOutbound = wmspSendReceiveMapper.selectSendReceiveThisdayOutbound(map); if(sendReceiveThisdayOutbound == null){ sendReceiveThisdayOutbound = new BigDecimal(0); } // 昨天库存 BigDecimal sendReceiveLastdayInventory = wmspSendReceiveMapper.getSendReceiveLastdayInventory(map); if(sendReceiveLastdayInventory == null){ sendReceiveLastdayInventory=new BigDecimal(0); } //今天库存 BigDecimal sendReceiveThisdayInventory = new BigDecimal(sendReceiveLastdayInventory.intValue() +sendReceiveThisdayInbound.intValue()-sendReceiveThisdayOutbound.intValue()); Map map1 = new HashMap<>(); map1.put("materialId",materialId); map1.put("warehouseId",warehouseId); map1.put("sendReceiveThisdayInventory",sendReceiveThisdayInventory); return wmspSendReceiveMapper.updateSendReceiveThisdayInventory(map1); } */ //零点生成前一天的入库、出库、库存 @Override @Scheduled(cron = "1 45 23 * * ? ") public int addSendReceive(){ int i = 0; int count = wmspSendReceiveMapper.getTodaySendReceiveCount(); if(count == 0){ //高线库,一棒库,二棒库,配送库 List> mapList = rmsWarehouseMapper.getWarehouseName(); //遍历四个仓库 for(Map map:mapList){ BigDecimal warehouseId = DataChange.dataToBigDecimal(map.get("id")); //查询去重实时库存中的物资id List> materialIdList = wmspGridMaterialMapper.getMaterialId(warehouseId); for(Map map1:materialIdList) { WmspSendReceive wmspSendReceive = new WmspSendReceive(); //收发层主键自增 BigDecimal sendReceiveId = wmspSendReceiveMapper.getSendReceiveId(); wmspSendReceive.setSendReceiveId(sendReceiveId); //仓库id wmspSendReceive.setWarehouseId(warehouseId); //收发层日期 wmspSendReceive.setSendReceiveDate(new Date()); //物资id BigDecimal materialId = DataChange.dataToBigDecimal(map1.get("materialId")); wmspSendReceive.setMaterialId(materialId); Map map2 = new HashMap<>(); map2.put("warehouseId",warehouseId); map2.put("materialId",materialId); //统计今天的入库总数(只统计当前仓库没有预留的数量,不统计预留库的数量) BigDecimal sendReceiveThisdayInbound = wmspSendReceiveMapper.countSndReceiveThisdayInbound(map2); if(sendReceiveThisdayInbound == null){ wmspSendReceive.setSendReceiveThisdayInbound(new BigDecimal(0)); }else{ wmspSendReceive.setSendReceiveThisdayInbound(sendReceiveThisdayInbound); } BigDecimal sendReceiveThisdayInbound1 = wmspSendReceive.getSendReceiveThisdayInbound(); //统计今天天的出库总数 BigDecimal sendReceiveThisdayOutbound = wmspSendReceiveMapper.countSendReceiveThisdayOutbound(map2); if(sendReceiveThisdayOutbound == null){ wmspSendReceive.setSendReceiveThisdayOutbound(new BigDecimal(0)); }else { wmspSendReceive.setSendReceiveThisdayOutbound(sendReceiveThisdayOutbound); } BigDecimal sendReceiveThisdayOutbound1 = wmspSendReceive.getSendReceiveThisdayOutbound(); //昨天库存 BigDecimal sendReceiveLastdayInventory = wmspSendReceiveMapper.getSendReceiveLastdayInventory(map2); if(sendReceiveLastdayInventory == null){ wmspSendReceive.setSendReceiveLastdayInventory(new BigDecimal(0)); }else{ wmspSendReceive.setSendReceiveLastdayInventory(sendReceiveLastdayInventory); } BigDecimal sendReceiveLastdayInventory1 = wmspSendReceive.getSendReceiveLastdayInventory(); //今天库存 BigDecimal sendReceiveThisdayInventory = new BigDecimal(sendReceiveLastdayInventory1.intValue() +sendReceiveThisdayInbound1.intValue()-sendReceiveThisdayOutbound1.intValue()); wmspSendReceive.setSendReceiveThisdayInventory(sendReceiveThisdayInventory); wmspSendReceive.setInsertUsername("admin"); wmspSendReceive.setInsertTime(new Date()); wmspSendReceive.setDeleted(new BigDecimal(1)); i+=wmspSendReceiveMapper.insertSelective(wmspSendReceive); } } } return i; } }