فهرست منبع

余下数量 转入数量 第二版

liuchaohui 2 سال پیش
والد
کامیت
c123c9f95e

+ 120 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/cost/service/impl/SyCostAllocationServiceImpl.java

@@ -254,8 +254,42 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
         List<SyCostAllocationFabric> list3 = new ArrayList<>();
         for (int i=0;i<jianSon1.size();i++) {
             SyCostAllocationFabric Fabric = JSONObject.toJavaObject(jianSon1.get(i), SyCostAllocationFabric.class);
+            /*
+            1.转入:从材料出库起手,找到委外订单下使用的出库,然后关联采购排除不是自己买的;
+                  -- 1.委外订单关联材料出库单,根据计划号查出所有材料出库;
+                  -- 2.根据第一步查出的所有材料出库批次号+物料,查出所有的采购入库;
+                  -- 3.根据第二步找到所有的采购订单
+                  -- 4.根据第三步的采购订单用计划号not like ,找出所有不是本次采购的采购订单
+            2.余下:从采购起手,找到所有的采购入库,然后关联材料出库,排除掉自己使用的 就是余下的
+            * */
             /*余下*/
-            String sqlRemaining = " SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
+            String sqlRemaining ="       select b.cInvName as goodsName,b.cPOID as planCode,b.cfree1 as color,max(b.yi ) as number " +
+                                    "       FROM ( " +
+                                    "        select cBatch,cInvCode,iOMoDID from rdrecords11 where  cBatch is not null  " +
+                                    "        group by cBatch,cInvCode,iOMoDID  " +
+                                    "       ) r    " +
+                                    "       JOIN (    " +
+                                    "        SELECT v.cVenName as cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch, " +
+                                    "             sum(isnull(od.iSendQTY,0)+isnull(p.iQuantity,0)) as yi " +
+                                    "        FROM rdrecords01 rs1    " +
+                                    "        left join rdrecord01 r1 on r1.id=rs1.id   " +
+                                    "        left join PO_Podetails p on p.ID=rs1.iPOsID   " +
+                                    "        left join OM_MODetails o on o.MODetailsID =rs1.iOMoDID   " +
+                                    "        left join OM_MOMaterials od on od.MoDetailsID=o.MODetailsID   " +
+                                    "        LEFT JOIN Inventory  c on c.cInvCode=rs1.cInvCode   " +
+                                    "        LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
+                                    "        where and rs1.cPOID  like '"+plannum+"%' and v.cVenName='"+Fabric.getProcessUnit()+
+                                    "' and c.cInvName='"+Fabric.getGoodsName()+"' " +
+                                    "        group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch " +
+                                    "              ) b on r.cBatch = b.cBatch and b.cInvCode=r.cInvCode  " +
+                                    "      JOIN (    " +
+                                    "        SELECT od.MODetailsID     " +
+                                    "        FROM OM_MOMain om LEFT JOIN OM_MODetails od ON om.MOID = od.MOID     " +
+                                    "        WHERE om.cState = 1 and om.cCode not like '"+plannum+"%'    " +
+                                    "       group by MODetailsID " +
+                                    "       ) o ON r.iOMoDID  = o.MODetailsID   " +
+                                    "           group by b.cVenName,b.cInvName,b.cPOID,b.cfree1";
+/*                    " SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
                     "   isnull(sum(od.iSendQTY),0)+isnull(sum(p.iQuantity),0) as yi " +
                     "    FROM rdrecords01 rs1  " +
                     " left join rdrecord01 r1 on r1.id=rs1.id " +
@@ -266,9 +300,35 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
                     " LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
                     " where rs1.cBatch != ' "+plannum+"' and rs1.cPOID  like ' "+plannum+"%' and v.cVenName='"+Fabric.getProcessUnit()+
                             "' and c.cInvName='"+Fabric.getGoodsName()+"' " +
-                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";
+                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";*/
             /*转入*/
-            String sqlTransfer = " SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
+            String sqlTransfer = "     select b.cInvName as goodsName,b.cPOID as planCode,b.cfree1 as color,max(b.yi ) as number " +
+                                    "     FROM ( " +
+                                    "      select cBatch,cInvCode,iOMoDID from rdrecords11 where  cBatch is not null  " +
+                                    "      group by cBatch,cInvCode,iOMoDID  " +
+                                    "     ) r    " +
+                                    "    JOIN (    " +
+                                    "     SELECT od.MODetailsID     " +
+                                    "     FROM OM_MOMain om LEFT JOIN OM_MODetails od ON om.MOID = od.MOID     " +
+                                    "     WHERE om.cState = 1 and om.cCode like 'SYA520R%'    " +
+                                    "     group by MODetailsID " +
+                                    "         ) o ON r.iOMoDID  = o.MODetailsID   " +
+                                    "         JOIN (    " +
+                                    "         SELECT v.cVenName as cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch, " +
+                                    "               sum(isnull(od.iSendQTY,0)+isnull(p.iQuantity,0)) as yi " +
+                                    "         FROM rdrecords01 rs1    " +
+                                    "     left join rdrecord01 r1 on r1.id=rs1.id   " +
+                                    "     left join PO_Podetails p on p.ID=rs1.iPOsID   " +
+                                    "     left join OM_MODetails o on o.MODetailsID =rs1.iOMoDID   " +
+                                    "     left join OM_MOMaterials od on od.MoDetailsID=o.MODetailsID   " +
+                                    "     LEFT JOIN Inventory  c on c.cInvCode=rs1.cInvCode   " +
+                                    "     LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
+                                    "          where rs1.cPOID not like '"+plannum+"%' and v.cVenName='"+Fabric.getProcessUnit()+
+                                    "' and c.cInvName='"+Fabric.getGoodsName()+"' " +
+                                    "     group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch " +
+                                    "        ) b on r.cBatch = b.cBatch and b.cInvCode=r.cInvCode  " +
+                                    "    group by b.cVenName,b.cInvName,b.cPOID,b.cfree1";
+                    /*" SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
                     "   isnull(sum(od.iSendQTY),0)+isnull(sum(p.iQuantity),0) as yi " +
                     "    FROM rdrecords01 rs1  " +
                     " left join rdrecord01 r1 on r1.id=rs1.id " +
@@ -279,7 +339,7 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
                     " LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
                     " where rs1.cBatch = ' "+plannum+"' and rs1.cPOID not like ' "+plannum+"%' and v.cVenName='"+Fabric.getProcessUnit()+
                     "' and c.cInvName='"+Fabric.getGoodsName()+"' " +
-                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";
+                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";*/
             List<Map<String, Object>> remainingList  = senYuDataSourceOne.queryForList(sqlRemaining);
             if(remainingList.size()>0){
                 List<JSONObject> remainingJson = JsonChangeUtils.toJSONObject(remainingList);
@@ -364,7 +424,33 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
         for (int i=0;i<jianSon2.size();i++) {
             SyCostAllocationIngredient Ingredient = JSONObject.toJavaObject(jianSon2.get(i), SyCostAllocationIngredient.class);
             /*余下*/
-            String sqlRemaining = " SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
+            String sqlRemaining  ="       select b.cInvName as goodsName,b.cPOID as planCode,b.cfree1 as color,max(b.yi ) as number " +
+                                    "       FROM ( " +
+                                    "        select cBatch,cInvCode,iOMoDID from rdrecords11 where  cBatch is not null  " +
+                                    "        group by cBatch,cInvCode,iOMoDID  " +
+                                    "       ) r    " +
+                                    "       JOIN (    " +
+                                    "        SELECT v.cVenName as cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch, " +
+                                    "             sum(isnull(od.iSendQTY,0)+isnull(p.iQuantity,0)) as yi " +
+                                    "        FROM rdrecords01 rs1    " +
+                                    "        left join rdrecord01 r1 on r1.id=rs1.id   " +
+                                    "        left join PO_Podetails p on p.ID=rs1.iPOsID   " +
+                                    "        left join OM_MODetails o on o.MODetailsID =rs1.iOMoDID   " +
+                                    "        left join OM_MOMaterials od on od.MoDetailsID=o.MODetailsID   " +
+                                    "        LEFT JOIN Inventory  c on c.cInvCode=rs1.cInvCode   " +
+                                    "        LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
+                                    "        where and rs1.cPOID  like '"+plannum+"%' and v.cVenName='"+Ingredient.getProcessUnit()+
+                                    "' and c.cInvName='"+Ingredient.getGoodsName()+"' " +
+                                    "        group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch " +
+                                    "              ) b on r.cBatch = b.cBatch and b.cInvCode=r.cInvCode  " +
+                                    "      JOIN (    " +
+                                    "        SELECT od.MODetailsID     " +
+                                    "        FROM OM_MOMain om LEFT JOIN OM_MODetails od ON om.MOID = od.MOID     " +
+                                    "        WHERE om.cState = 1 and om.cCode not like '"+plannum+"%'    " +
+                                    "       group by MODetailsID " +
+                                    "       ) o ON r.iOMoDID  = o.MODetailsID   " +
+                                    "           group by b.cVenName,b.cInvName,b.cPOID,b.cfree1";
+                    /*" SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
                     "   isnull(sum(od.iSendQTY),0)+isnull(sum(p.iQuantity),0) as yi " +
                     "    FROM rdrecords01 rs1  " +
                     " left join rdrecord01 r1 on r1.id=rs1.id " +
@@ -375,9 +461,35 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
                     " LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
                     " where rs1.cBatch != ' "+plannum+"' and rs1.cPOID  like ' "+plannum+"%' and v.cVenName='"+Ingredient.getProcessUnit()+
                     "' and c.cInvName='"+Ingredient.getGoodsName()+"' " +
-                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";
+                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";*/
             /*转入*/
-            String sqlTransfer = " SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
+            String sqlTransfer = "     select b.cInvName as goodsName,b.cPOID as planCode,b.cfree1 as color,max(b.yi ) as number " +
+                                    "     FROM ( " +
+                                    "      select cBatch,cInvCode,iOMoDID from rdrecords11 where  cBatch is not null  " +
+                                    "      group by cBatch,cInvCode,iOMoDID  " +
+                                    "     ) r    " +
+                                    "    JOIN (    " +
+                                    "     SELECT od.MODetailsID     " +
+                                    "     FROM OM_MOMain om LEFT JOIN OM_MODetails od ON om.MOID = od.MOID     " +
+                                    "     WHERE om.cState = 1 and om.cCode like 'SYA520R%'    " +
+                                    "     group by MODetailsID " +
+                                    "         ) o ON r.iOMoDID  = o.MODetailsID   " +
+                                    "         JOIN (    " +
+                                    "         SELECT v.cVenName as cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch, " +
+                                    "               sum(isnull(od.iSendQTY,0)+isnull(p.iQuantity,0)) as yi " +
+                                    "         FROM rdrecords01 rs1    " +
+                                    "     left join rdrecord01 r1 on r1.id=rs1.id   " +
+                                    "     left join PO_Podetails p on p.ID=rs1.iPOsID   " +
+                                    "     left join OM_MODetails o on o.MODetailsID =rs1.iOMoDID   " +
+                                    "     left join OM_MOMaterials od on od.MoDetailsID=o.MODetailsID   " +
+                                    "     LEFT JOIN Inventory  c on c.cInvCode=rs1.cInvCode   " +
+                                    "     LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
+                                    "          where rs1.cPOID not like '"+plannum+"%' and v.cVenName='"+Ingredient.getProcessUnit()+
+                                    "' and c.cInvName='"+Ingredient.getGoodsName()+"' " +
+                                    "     group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1,rs1.cInvCode,rs1.cBatch " +
+                                    "        ) b on r.cBatch = b.cBatch and b.cInvCode=r.cInvCode  " +
+                                    "    group by b.cVenName,b.cInvName,b.cPOID,b.cfree1";
+                   /* " SELECT v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1, " +
                     "   isnull(sum(od.iSendQTY),0)+isnull(sum(p.iQuantity),0) as yi " +
                     "    FROM rdrecords01 rs1  " +
                     " left join rdrecord01 r1 on r1.id=rs1.id " +
@@ -388,7 +500,7 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
                     " LEFT JOIN Vendor v ON r1.cVenCode= v.cVenCode  " +
                     " where rs1.cBatch = ' "+plannum+"' and rs1.cPOID not like ' "+plannum+"%' and v.cVenName='"+Ingredient.getProcessUnit()+
                     "' and c.cInvName='"+Ingredient.getGoodsName()+"' " +
-                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";
+                    " group BY v.cVenName,c.cInvName,rs1.cPOID,rs1.cfree1";*/
             List<Map<String, Object>> remainingList  = senYuDataSourceOne.queryForList(sqlRemaining);
             if(remainingList.size()>0){
                 List<JSONObject> remainingJson = JsonChangeUtils.toJSONObject(remainingList);