|
@@ -9,6 +9,7 @@ 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 org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.Date;
|
|
@@ -150,41 +151,49 @@ public class WmshGridMaterialServiceImpl implements IWmshGridMaterialService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public int updateWmshGridMaterial(Map<String, Object> map) {
|
|
|
BigDecimal batchId = DataChange.dataToBigDecimal(map.get("batchId"));
|
|
|
- BigDecimal userId = DataChange.dataToBigDecimal(map.get("userId"));
|
|
|
- BigDecimal gmId = DataChange.dataToBigDecimal(map.get("gmId"));
|
|
|
- //查找是否有港存库实时库存
|
|
|
- List<Map<String,Object>> wmshGridMaterials = wmshGridMaterialMapper.getGridId(map);
|
|
|
- WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
|
|
|
- if(wmshGridMaterials!=null && wmshGridMaterials.size()>0){
|
|
|
- //已经存在则加库存,将原本的港存库库存弄成0,免得同一录入批次二次使用时多加库存
|
|
|
- Map<String,Object> now = wmshGridMaterials.get(0);
|
|
|
- BigDecimal nowGmsTonnage = DataChange.dataToBigDecimal(now.get("gmTonnage"));
|
|
|
- //查询旧的批次
|
|
|
- Map<String,Object> 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());
|
|
|
+ String userId = map.get("userId")+"";
|
|
|
+ //查询旧的批次所有的港存库
|
|
|
+ Map<String,Object> batchIdOld = new HashMap<>();
|
|
|
+ batchIdOld.put("batchId",map.get("batchIdOld"));
|
|
|
+ List<Map<String,Object>> oldGrids = wmshGridMaterialMapper.getAllGridOfBatch(batchIdOld);
|
|
|
+ for(Map<String,Object> oldGrid:oldGrids){
|
|
|
+ WmshGridMaterial wmshGridMaterial=new WmshGridMaterial();
|
|
|
+ BigDecimal gmId = DataChange.dataToBigDecimal(oldGrid.get("gmId"));
|
|
|
+ BigDecimal oldGmsTonnage = DataChange.dataToBigDecimal(oldGrid.get("gmTonnage"));
|
|
|
+ BigDecimal portId =DataChange.dataToBigDecimal(oldGrid.get("portId"));
|
|
|
+ Map<String,Object> temp=new HashMap<>();
|
|
|
+ temp.put("batchId",batchId);
|
|
|
+ temp.put("portId",portId);
|
|
|
+ //查询对应的新批次港存库
|
|
|
+ List<Map<String,Object>> nowGrids=wmshGridMaterialMapper.getGridId(temp);
|
|
|
+ if(nowGrids!=null && nowGrids.size()>0){
|
|
|
+ Map<String,Object> nowGrid=nowGrids.get(0);
|
|
|
+ BigDecimal nowGmsTonnage = DataChange.dataToBigDecimal(nowGrid.get("gmTonnage"));
|
|
|
+ //增加库存
|
|
|
+ wmshGridMaterial.setGmId(DataChange.dataToBigDecimal(nowGrid.get("gmId")));
|
|
|
+ wmshGridMaterial.setGmTonnage(nowGmsTonnage.add(oldGmsTonnage));
|
|
|
+ wmshGridMaterial.setUpdateUsername(userId);
|
|
|
+ //将旧的港存库置为0
|
|
|
+ WmshGridMaterial oldGridMaterial=new WmshGridMaterial();
|
|
|
+ oldGridMaterial.setGmId(DataChange.dataToBigDecimal(oldGrid.get("gmId")));
|
|
|
+ oldGridMaterial.setGmTonnage(new BigDecimal(0));
|
|
|
+ oldGridMaterial.setUpdateUsername(userId);
|
|
|
+ oldGridMaterial.setDeleted(new BigDecimal(1));
|
|
|
+ wmshGridMaterialMapper.updateByPrimaryKeySelective(oldGridMaterial);
|
|
|
+ }else{
|
|
|
+ //如果没有新批次的港存库,就直接修改当前港存库批次为该港存库
|
|
|
+ wmshGridMaterial.setGmId(gmId);
|
|
|
+ wmshGridMaterial.setBatchId(batchId);
|
|
|
+ wmshGridMaterial.setUpdateUsername(userId);
|
|
|
+ }
|
|
|
+ wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
|
|
|
}
|
|
|
//修改入库和出库实绩绑定的批次
|
|
|
wmshInboundResultMapper.updateForBind(map);
|
|
|
wmshOutboundResultMapper.updateForBind(map);
|
|
|
- return wmshGridMaterialMapper.updateByPrimaryKeySelective(wmshGridMaterial);
|
|
|
+ return 1;
|
|
|
}
|
|
|
}
|