package com.steerinfo.dil.service.impl; import com.steerinfo.dil.mapper.WmshGridMaterialMapper; import com.steerinfo.dil.mapper.WmshInboundResultMapper; import com.steerinfo.dil.mapper.WmshOutboundResultMapper; import com.steerinfo.dil.model.WmshGridMaterial; import com.steerinfo.dil.model.WmshOutboundResult; import com.steerinfo.dil.service.IWmshGridMaterialService; import com.steerinfo.dil.util.DataChange; import org.springframework.beans.factory.annotation.Autowired; 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; /** * WmshGridMaterial服务实现: * @author generator * @version 1.0-SNAPSHORT 2021-10-09 07:25 * 类描述 * 修订历史: * 日期:2021-10-09 * 作者:generator * 参考: * 描述:WmshGridMaterial服务实现 * @see null * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. */ @Service(value = "wmshGridMaterialService") public class WmshGridMaterialServiceImpl implements IWmshGridMaterialService { @Autowired private WmshGridMaterialMapper wmshGridMaterialMapper; @Autowired private WmshOutboundResultMapper wmshOutboundResultMapper; @Autowired private WmshInboundResultMapper wmshInboundResultMapper; /** * 展示下游港口实时库存 * @param mapVal * @return */ @Override public List> getUnloadPortStockList(Map mapVal) { return wmshGridMaterialMapper.getUnloadPortStockList(mapVal); } /** * 展示万州港实时库存 * @param mapVal * @return */ @Override public List> getLoadPortStockList(Map mapVal) { return wmshGridMaterialMapper.getLoadPortStockList(mapVal); } /** * 修改实时库存 * @param map * @return */ @Override public int updatePortStock(Map map) { BigDecimal tonnage=null; BigDecimal portId = DataChange.dataToBigDecimal(map.get("portId")); BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId")); tonnage = DataChange.dataToBigDecimal(map.get("resultMaterialNumber")); if (map.get("resultMaterialNumber")==null){ tonnage =DataChange.dataToBigDecimal(map.get("resultTonnage")); } BigDecimal status = DataChange.dataToBigDecimal(map.get("status")); Map selectMap = new HashMap<>(); selectMap.put("portId",portId); selectMap.put("batchId",batchId); //查找是否有港存库实时库存 List> wmshGridMaterials = wmshGridMaterialMapper.getGridId(map); if (wmshGridMaterials.size() == 0) { WmshGridMaterial wmshGridMaterial = new WmshGridMaterial(); BigDecimal gmId = wmshGridMaterialMapper.selectMaxId(); wmshGridMaterial.setGmId(gmId); wmshGridMaterial.setBatchId(batchId); wmshGridMaterial.setPortId(portId); wmshGridMaterial.setGmTonnage(tonnage); wmshGridMaterial.setDeleted(new BigDecimal(0)); return wmshGridMaterialMapper.insertSelective(wmshGridMaterial); } Map map1 = wmshGridMaterials.get(0); BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(map1.get("gmTonnage")); BigDecimal gmId =DataChange.dataToBigDecimal(map1.get("gmId")); WmshGridMaterial wmshGridMaterial=new WmshGridMaterial(); wmshGridMaterial.setGmId(gmId); BigDecimal gmsTonnage; if (status.intValue() == 0) { //gmsTonnage = new BigDecimal(oldGmsTonnage.doubleValue() - tonnage.doubleValue()); gmsTonnage = oldGmsTonnage.subtract(tonnage); } else { //gmsTonnage = new BigDecimal(tonnage.doubleValue() + oldGmsTonnage.doubleValue()); gmsTonnage = tonnage.add(oldGmsTonnage); } if (gmsTonnage.intValue()>=0) { wmshGridMaterial.setGmTonnage(gmsTonnage); }else { return -1; } wmshGridMaterial.setUpdateTime(new Date()); int i = wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial); return i; } @Override public int clearWmshGridMaterial(Map map) { int i=0; BigDecimal gmId =DataChange.dataToBigDecimal(map.get("gmId")); WmshGridMaterial wmshGridMaterial=new WmshGridMaterial(); wmshGridMaterial.setGmId(gmId); wmshGridMaterial.setGmTonnage(new BigDecimal(0)); i = wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial); //实时库存 String isClear =(String) map.get("isClean"); WmshOutboundResult wmshOutboundResult =new WmshOutboundResult(); BigDecimal id = DataChange.dataToBigDecimal(wmshGridMaterialMapper.selectMaxId()); wmshOutboundResult.setResultId(id); String gckd = DataChange.generateEightDigitsNumber("GCKD", id.intValue()); wmshOutboundResult.setResultNumber(gckd); wmshOutboundResult.setResultClearing(isClear); wmshOutboundResult.setInsertTime(new Date()); wmshOutboundResult.setResultTonnage(DataChange.dataToBigDecimal(map.get("resultMaterialNumber"))); wmshOutboundResult.setBatchId(DataChange.dataToBigDecimal(map.get("batchId"))); BigDecimal portId = DataChange.dataToBigDecimal(map.get("portId")); wmshOutboundResult.setHarborId(portId); i = wmshOutboundResultMapper.insertSelective(wmshOutboundResult); return id.intValue(); } //展示港存库目前品种对应的库存 @Override public List> getLoadPortStockByMaterialName(Map mapVal) { return wmshGridMaterialMapper.getLoadPortStockByMaterialName(mapVal); } //展示出库总吨位 @Override public List> getUnLockPortStock(Map mapVal) { return wmshGridMaterialMapper.getUnLockPortStock(mapVal); } @Override public int updateWmshGridMaterial(Map map) { BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId")); BigDecimal userId = DataChange.dataToBigDecimal(map.get("userId")); BigDecimal gmId = DataChange.dataToBigDecimal(map.get("gmId")); //查找是否有港存库实时库存 List> wmshGridMaterials = wmshGridMaterialMapper.getGridId(map); WmshGridMaterial wmshGridMaterial=new WmshGridMaterial(); if(wmshGridMaterials!=null && wmshGridMaterials.size()>0){ //已经存在则加库存,将原本的港存库库存弄成0,免得同一录入批次二次使用时多加库存 Map now = wmshGridMaterials.get(0); BigDecimal nowGmsTonnage = DataChange.dataToBigDecimal(now.get("gmTonnage")); //查询旧的批次 Map old = new HashMap<>(); old.put("portId",map.get("portId")); old.put("batchId",map.get("batchIdOld")); old=wmshGridMaterialMapper.getGridId(old).get(0); BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(old.get("gmTonnage")); //增加库存 wmshGridMaterial.setGmId(DataChange.dataToBigDecimal(now.get("gmId"))); wmshGridMaterial.setGmTonnage(nowGmsTonnage.add(oldGmsTonnage)); wmshGridMaterial.setUpdateUsername(userId.toString()); //将旧的港存库置为0 WmshGridMaterial oldGrid=new WmshGridMaterial(); oldGrid.setGmId(DataChange.dataToBigDecimal(old.get("gmId"))); oldGrid.setGmTonnage(new BigDecimal(0)); wmshGridMaterialMapper.updateByPrimaryKeySelective(oldGrid); }else{ //不存在修改批次 wmshGridMaterial.setGmId(gmId); wmshGridMaterial.setBatchId(batchId); wmshGridMaterial.setUpdateUsername(userId.toString()); } //修改入库和出库实绩绑定的批次 wmshInboundResultMapper.updateForBind(map); wmshOutboundResultMapper.updateForBind(map); return wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial); } }