Redeem 1 year ago
parent
commit
8f4d325cb4

+ 1 - 1
pom.xml

@@ -6,7 +6,7 @@
 
 
     <groupId>org.example</groupId>
     <groupId>org.example</groupId>
     <artifactId>dil-wms-api</artifactId>
     <artifactId>dil-wms-api</artifactId>
-    <version>1.7</version>
+    <version>1.8</version>
 
 
     <parent>
     <parent>
         <groupId>org.springframework.boot</groupId>
         <groupId>org.springframework.boot</groupId>

+ 6 - 0
src/main/java/com/steerinfo/dil/mapper/OyeRealtimeInventoryMapper.java

@@ -28,4 +28,10 @@ public interface OyeRealtimeInventoryMapper extends IBaseMapper<OyeRealtimeInven
 
 
     List<String> getSaleAreaRemark(String saler);
     List<String> getSaleAreaRemark(String saler);
 
 
+    BigDecimal getTheoryWeight(BigDecimal saleMaterialId);
+
+    BigDecimal getSingleWeight(BigDecimal inventoryId);
+
+    String selectCompareValue();
+
 }
 }

+ 29 - 14
src/main/java/com/steerinfo/dil/service/impl/OyeResultServiceImpl.java

@@ -74,11 +74,18 @@ public class OyeResultServiceImpl implements IOyeResultService {
         System.out.println(jsonObject);
         System.out.println(jsonObject);
         System.out.println("===========" + new Date());
         System.out.println("===========" + new Date());
         for (Map<String,Object> map : mapList) {
         for (Map<String,Object> map : mapList) {
+            //判断该拼是否入库
+            if (oyeInboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
+                throw new Exception("该分录已入库,无法继续入库");
+            }
+            //根据分录ID查询理重
+            BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
+            BigDecimal theoryWeightSaleMaterial = oyeRealtimeInventoryMapper.getTheoryWeight(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
+            BigDecimal singleWeight = theoryWeightSaleMaterial.divide(materialNumber,4,BigDecimal.ROUND_HALF_UP);
+            //根据分录理重
             OyeInboundResult oyeInboundResult = new OyeInboundResult();
             OyeInboundResult oyeInboundResult = new OyeInboundResult();
             BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
             BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
             BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
             BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
-            BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
-            BigDecimal singleWeight = theoryWeight.divide(materialNumber,4,BigDecimal.ROUND_HALF_UP);
             BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
             BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
             oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
             oyeInboundResult.setResultId(oyeInboundResultMapper.getResultId());
             oyeInboundResult.setSaleArea(map.get("saleArea").toString());
             oyeInboundResult.setSaleArea(map.get("saleArea").toString());
@@ -86,10 +93,6 @@ public class OyeResultServiceImpl implements IOyeResultService {
             oyeInboundResult.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
             oyeInboundResult.setCapacityId(DataChange.dataToBigDecimal(map.get("capacityId")));
             oyeInboundResult.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
             oyeInboundResult.setOrderId(DataChange.dataToBigDecimal(map.get("orderId")));
             oyeInboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
             oyeInboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
-            //判断该拼是否入库
-            if (oyeInboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
-                throw new Exception("该分录已入库,无法继续入库");
-            }
             oyeInboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
             oyeInboundResult.setCapacityNumbher(map.get("capacityNumber") + "");
             oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
             oyeInboundResult.setInboundArea(map.get("inboundArea").toString());
             oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
             oyeInboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
@@ -157,14 +160,30 @@ public class OyeResultServiceImpl implements IOyeResultService {
         System.out.println(jsonObject);
         System.out.println(jsonObject);
         System.out.println("===========" + new Date());
         System.out.println("===========" + new Date());
         for (Map<String,Object> map : mapList) {
         for (Map<String,Object> map : mapList) {
+            //判断该拼是否出库
+            if (oyeOutboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
+                throw new Exception("该分录已出库,无法继续出库");
+            }
+            //根据实时库存ID获取单重
+            BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
+            BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
+            BigDecimal singleWeight = oyeRealtimeInventoryMapper.getSingleWeight(inventoryId);
+            BigDecimal theoryWeightSaleMaterial = singleWeight.multiply(materialNumber);
             OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
             OyeOutboundResult oyeOutboundResult = new OyeOutboundResult();
             BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
             BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
             BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
             BigDecimal theoryWeight = DataChange.dataToBigDecimal(map.get("theoryWeight"));
-            BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
+            BigDecimal netWeight = DataChange.dataToBigDecimal(map.get("netWeight"));
             if(materialNumber == null || materialNumber.intValue() == 0) {
             if(materialNumber == null || materialNumber.intValue() == 0) {
                 throw new Exception("物资件数错误");
                 throw new Exception("物资件数错误");
             }
             }
-            BigDecimal singleWeight = theoryWeight.divide(materialNumber);
+            //查询比例
+            BigDecimal compareValue = DataChange.dataToBigDecimal(oyeRealtimeInventoryMapper.selectCompareValue());
+            BigDecimal theoryAdd = theoryWeightSaleMaterial.multiply(compareValue.add(new BigDecimal(1)));
+            BigDecimal theorySub = theoryWeightSaleMaterial.multiply(new BigDecimal(1).subtract(compareValue));
+            if (netWeight.compareTo(theoryAdd) > 0 || netWeight.compareTo(theorySub) < 0) {
+                throw new Exception("净重不在理重的" + compareValue + "范围内");
+            }
+            //BigDecimal singleWeight = theoryWeight.divide(materialNumber);
             BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
             BigDecimal meter = DataChange.dataToBigDecimal(map.get("meter"));
             oyeOutboundResult.setResultId(oyeOutboundResultMapper.getResultId());
             oyeOutboundResult.setResultId(oyeOutboundResultMapper.getResultId());
             oyeOutboundResult.setSaleArea(map.get("saleArea").toString());
             oyeOutboundResult.setSaleArea(map.get("saleArea").toString());
@@ -176,22 +195,18 @@ public class OyeResultServiceImpl implements IOyeResultService {
             oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
             oyeOutboundResult.setInboundArea(map.get("inboundArea").toString());
             oyeOutboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
             oyeOutboundResult.setInboundWarehouse(map.get("inboundWarehouse").toString());
             oyeOutboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
             oyeOutboundResult.setSaleMaterialId(DataChange.dataToBigDecimal(map.get("saleMaterialId")));
-            //判断该拼是否出库
-            if (oyeOutboundResultMapper.selectSaleMaterialID(DataChange.dataToBigDecimal(map.get("saleMaterialId"))) != null) {
-                throw new Exception("该分录已出库,无法继续出库");
-            }
+
             //更新制单日期
             //更新制单日期
             oyeOutboundResult.setMeter(meter);
             oyeOutboundResult.setMeter(meter);
             oyeOutboundResult.setMaterialId(materialId);
             oyeOutboundResult.setMaterialId(materialId);
             oyeOutboundResult.setTheoryWeight(theoryWeight);
             oyeOutboundResult.setTheoryWeight(theoryWeight);
             oyeOutboundResult.setSingleWeight(singleWeight);
             oyeOutboundResult.setSingleWeight(singleWeight);
-            oyeOutboundResult.setNetWeight(DataChange.dataToBigDecimal(map.get("netWeight")));
+            oyeOutboundResult.setNetWeight(netWeight);
             oyeOutboundResult.setMaterialNumber(materialNumber);
             oyeOutboundResult.setMaterialNumber(materialNumber);
             oyeOutboundResult.setInsertUsername(map.get("userName") + "");
             oyeOutboundResult.setInsertUsername(map.get("userName") + "");
             oyeOutboundResult.setInsertTime(new Date());
             oyeOutboundResult.setInsertTime(new Date());
             map.put("singleWeight",singleWeight);
             map.put("singleWeight",singleWeight);
             //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
             //根据区域,客户,物资,单重,米数,仓库,库区查询实时库存在不在
-            BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
             oyeOutboundResult.setInventoryId(inventoryId);
             oyeOutboundResult.setInventoryId(inventoryId);
             map.put("inventoryId",inventoryId);
             map.put("inventoryId",inventoryId);
             map.put("flag",2);
             map.put("flag",2);

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

@@ -903,5 +903,17 @@
     SELECT RSR.SALE_REMARK FROM RMS_SALER_REMAR RSR
     SELECT RSR.SALE_REMARK FROM RMS_SALER_REMAR RSR
     WHERE RSR.SALER_NAME = #{saler}
     WHERE RSR.SALER_NAME = #{saler}
   </select>
   </select>
+  <select id="getTheoryWeight" resultType="java.math.BigDecimal" parameterType="java.math.BigDecimal">
+    SELECT ASM.MATERIAL_WEIGHT FROM AMS_SALE_MATERIAL ASM
+    WHERE ASM.SALE_MATERIAL_ID = #{saleMaterialId}
+  </select>
+  <select id="getSingleWeight" resultType="java.math.BigDecimal">
+    SELECT ORI.SINGLE_WEIGHT FROM OYE_REALTIME_INVENTORY ORI
+    WHERE ORI.INVENTORY_ID = #{inventoryId}
+  </select>
+  <select id="selectCompareValue" resultType="java.lang.String">
+    SELECT VERSION_VALUE FROM DIL_VERSION
+    WHERE VERSION_ID = 16
+  </select>
 
 
 </mapper>
 </mapper>