瀏覽代碼

修改港存库绑定

liyg 2 年之前
父節點
當前提交
d058db123f

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/WmshGridMaterialMapper.java

@@ -48,4 +48,7 @@ public interface WmshGridMaterialMapper extends IBaseMapper<WmshGridMaterial, Bi
     List<Map<String, Object>> getLoadPortStockByMaterialName(Map<String, Object> mapVal);
 
     List<Map<String, Object>> getUnLockPortStock(Map<String, Object> mapVal);
+
+    //查询该批次的所有港存库
+    List<Map<String, Object>> getAllGridOfBatch(Map<String,Object> map);
 }

+ 39 - 30
src/main/java/com/steerinfo/dil/service/impl/WmshGridMaterialServiceImpl.java

@@ -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;
     }
 }

+ 12 - 0
src/main/resources/com/steerinfo/dil/mapper/WmshGridMaterialMapper.xml

@@ -536,4 +536,16 @@
         </if>
         Order By  WOR.RESULT_NUMBER desc
     </select>
+    <select id="getAllGridOfBatch" resultType="java.util.Map">
+        select distinct
+               WGM.GM_ID "gmId",
+               WGM.GM_TONNAGE "gmTonnage",
+               RP.PORT_ID "portId",
+               WGM.BATCH_ID "batchId",
+                RP.PORT_NAME "portName"
+        from WMSH_GRID_MATERIAL WGM
+                 LEFT JOIN RMS_PORT RP
+                           ON RP.PORT_ID=WGM.PORT_ID
+        WHERE WGM.BATCH_ID=#{batchId}
+    </select>
 </mapper>