home %!s(int64=2) %!d(string=hai) anos
pai
achega
90c989c64d

+ 2 - 0
src/main/java/com/example/storageex/mapper/IndexMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -28,4 +29,5 @@ public interface IndexMapper extends BaseMapper<Object> {
 
     List<Map<String, Object>> getInventoryRecord(@Param("ew") QueryWrapper<Object> wrapper);
 
+    BigDecimal getOutMaterial(@Param("jobNo") String jobNo, @Param("materialName") String materialName, @Param("beginDate") DateTime beginDate, @Param("endDate") Date endDate);
 }

+ 12 - 1
src/main/java/com/example/storageex/mapper/xml/Index.xml

@@ -62,7 +62,7 @@
                s.Quantity stockQty
         from material m
                  left join stock s on m.Code = s.MaterialCode
-        where m.categoryCode = '03.008.'
+        where m.categoryCode = '01.007.'
           and s.Quantity > 0
     </select>
     <select id="getPaidInLastAccountingPeriod" resultType="java.util.Map">
@@ -120,5 +120,16 @@
             ${ew.customSqlSegment}
     </select>
 
+    <select id="getOutMaterial" resultType="java.math.BigDecimal">
+        select ifnull(SUM(swd.ChangeNum),0)
+        from stock_waterdetial swd
+                 left join material m on swd.MaterialCode = m.`Code`
+                 left join u_user uu on uu.ID = swd.OperUserId
+        where swd.CreatedTime BETWEEN #{beginDate} AND #{endDate}
+          and m.`Name` like #{materialName}"%"
+          and uu.JobNo = #{jobNo}
+          and swd.IsDelete = 0
+    </select>
+
 
 </mapper>

+ 29 - 8
src/main/java/com/example/storageex/service/impl/IndexServiceImpl.java

@@ -61,7 +61,7 @@ public class IndexServiceImpl extends ServiceImpl<IndexMapper, Object> implement
         String url = "http://mes.cfmfactory.com:8087/MesWeb/planPersonOutAction.do";
         Date date = new Date();
 
-        DateTime parse = DateUtil.parse(DateUtil.format(date, "yyyy-MM-dd 7:30:00"));
+        DateTime parse = DateUtil.parse(DateUtil.format(date, "yyyy-MM-dd 7:00:00"));
 
         if (date.compareTo(parse) < 0) {
             date = DateUtil.offsetDay(date, -1);
@@ -120,20 +120,42 @@ public class IndexServiceImpl extends ServiceImpl<IndexMapper, Object> implement
             allMaterialList = baseMapper.selectAllMaterialList(query, jobNo);
             for (Map<String, Object> material : allMaterialList) {
                 for (Map<String, Object> stringObjectMap : v3DataList) {
-                    if (material.get("materialName").toString().startsWith(stringObjectMap.get("name").toString())) {
+                    String name = stringObjectMap.get("name").toString();
+
+                    if (material.get("materialName").toString().startsWith(name)) {
+
 
                         BigDecimal canTakeQty = (BigDecimal) stringObjectMap.get("canTakeQty");
 
                         BigDecimal width = floatToBig((Float) material.get("width"));
                         BigDecimal bigDecimal = new BigDecimal("100");
 
-                        BigDecimal userStockQty = (BigDecimal) material.get("userStockQty");
-                        userStockQty = userStockQty == null ? BigDecimal.ZERO : userStockQty;
+//                        BigDecimal userStockQty = (BigDecimal) material.get("userStockQty");
+//                        userStockQty = userStockQty == null ? BigDecimal.ZERO : userStockQty;
+
+                        BigDecimal qty;
+                        if (date.compareTo(parse) < 0) {
+                            qty = baseMapper.getOutMaterial(jobNo, name, DateUtil.offsetDay(parse, -1), parse);
+                        } else {
+                            qty = baseMapper.getOutMaterial(jobNo, name, parse, date);
+                        }
+
 
-                        BigDecimal canTakeQtyBD = canTakeQty.subtract(userStockQty.multiply(width).divide(bigDecimal, 2, RoundingMode.HALF_UP))
-                                .multiply(bigDecimal).divide(width, 2, RoundingMode.HALF_UP);
+                        material.put("userStockQty", BigDecimal.ZERO);
 
-                        material.put("canTakeQty", canTakeQtyBD.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : canTakeQtyBD);
+                        if (width.intValue() == 0) {
+                            break;
+                        }
+
+                        BigDecimal canTakeQtyBD = canTakeQty
+//                                .subtract(userStockQty.multiply(width).divide(bigDecimal, 2, RoundingMode.HALF_UP))
+                                .multiply(bigDecimal)
+                                .divide(width, 2, RoundingMode.HALF_UP)
+                                .subtract(qty);
+
+                        material.put("canTakeQty", canTakeQtyBD.compareTo(BigDecimal.ZERO) < 0 ?
+                                BigDecimal.ZERO : canTakeQtyBD.multiply(new BigDecimal("1.2"))
+                                .setScale(2, RoundingMode.HALF_DOWN));
                         break;
                     }
                 }
@@ -151,7 +173,6 @@ public class IndexServiceImpl extends ServiceImpl<IndexMapper, Object> implement
         }
         allMaterialList.addAll(inkList);
 
-
         hashMap.put("list", allMaterialList);
         result.put("allMaterialList", hashMap);
 

+ 0 - 1
src/main/resources/application.yml

@@ -30,4 +30,3 @@ mybatis-plus:
       logic-delete-value: 1
       logic-not-delete-value: 0
     enable-sql-runner: true
-