Browse Source

成本报表 辅料转入

liuchaohui 2 years ago
parent
commit
28487ee635

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/cost/mapper/SyCostAllocationIngredientMapper.java

@@ -3,8 +3,10 @@ package org.jeecg.modules.cost.mapper;
 import java.util.List;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.cost.entity.SyCostAllocationIngredient;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.cost.entity.SyTransfer;
 
 /**
  * @Description: 成本分配子表_辅料
@@ -20,4 +22,6 @@ public interface SyCostAllocationIngredientMapper extends BaseMapper<SyCostAlloc
 
 	@DS("multi-three")
 	List<SyCostAllocationIngredient> queryByCostIngredient(String code);
+	@DS("multi-three")
+	List<SyTransfer> queryTransferByIngredient(@Param("code") String code, @Param("goodName") String goodName);
 }

+ 72 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/cost/mapper/xml/SyCostAllocationIngredientMapper.xml

@@ -129,4 +129,76 @@
 				GROUP BY i.cInvName,rs.cBatch
 		)tab2 on tab2.cInvName=tab.goodsName
 	</select>
+
+	<select id="queryTransferByIngredient" resultType="org.jeecg.modules.cost.entity.SyTransfer">
+		select tab1.cInvName as goodsName,tab1.cCode as planCode,tab1.purchaseQuantity-tab2.jian as number
+		from
+		(
+				select i.cInvName,sum(rs.iQuantity) as purchaseQuantity,rs.cBatch,(
+						select distinct om.cCode
+						from UFDATA_901_2021.dbo.om_momain om
+						join UFDATA_901_2021.dbo.OM_MODetails od on om.moid=od.moid
+						join UFDATA_901_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+						WHERE om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+									and omi.cInvCcode like '19%' and od.csocode=rs.iordercode
+				) as ccode
+				from UFDATA_901_2021.dbo.rdrecords01 rs
+				join UFDATA_901_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+				where (i.cInvCcode like '05%' or i.cInvCcode like '06%' or i.cInvCcode like '07%'
+						or i.cInvCCode = '0399' or i.cInvCCode = '0499')
+				GROUP BY i.cInvName,rs.cBatch,rs.iordercode
+		)tab1
+		 join
+		(
+				select i.cInvName,sum(rs.iQuantity) as jian,rs.cBatch from UFDATA_901_2021.dbo.rdrecords11 rs
+				join UFDATA_901_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+				where iordercode in (
+						select distinct od.csocode
+						from UFDATA_901_2021.dbo.om_momain om
+						join UFDATA_901_2021.dbo.OM_MODetails od on om.moid=od.moid
+						join UFDATA_901_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+						WHERE om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+									and omi.cInvCcode like '19%' and om.cCode like CONCAT(#{code},'%')
+				) and (i.cInvCcode like '05%' or i.cInvCcode like '06%' or i.cInvCcode like '07%'
+						or i.cInvCCode = '0399' or i.cInvCCode = '0499') and i.cInvName = #{goodName}
+				GROUP BY i.cInvName,rs.cBatch
+		)tab2 on tab2.cInvName=tab1.cInvName and tab1.cBatch=tab2.cBatch
+		 where tab1.purchaseQuantity-tab2.jian>0
+
+		 union all
+
+		 select tab1.cInvName as goodsName,tab1.cCode as planCode,tab1.purchaseQuantity-tab2.jian as number
+		from
+		(
+				select i.cInvName,sum(rs.iQuantity) as purchaseQuantity,rs.cBatch,(
+						select distinct om.cCode
+						from UFDATA_903_2021.dbo.om_momain om
+						join UFDATA_903_2021.dbo.OM_MODetails od on om.moid=od.moid
+						join UFDATA_903_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+						WHERE om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+									and omi.cInvCcode like '19%' and od.csocode=rs.iordercode
+				) as ccode
+				from UFDATA_903_2021.dbo.rdrecords01 rs
+				join UFDATA_903_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+				where (i.cInvCcode like '05%' or i.cInvCcode like '06%' or i.cInvCcode like '07%'
+						or i.cInvCCode = '0399' or i.cInvCCode = '0499')
+				GROUP BY i.cInvName,rs.cBatch,rs.iordercode
+		)tab1
+		 join
+		(
+				select i.cInvName,sum(rs.iQuantity) as jian,rs.cBatch from UFDATA_903_2021.dbo.rdrecords11 rs
+				join UFDATA_903_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+				where iordercode in (
+						select distinct od.csocode
+						from UFDATA_903_2021.dbo.om_momain om
+						join UFDATA_903_2021.dbo.OM_MODetails od on om.moid=od.moid
+						join UFDATA_903_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+						WHERE om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+									and omi.cInvCcode like '19%' and om.cCode like CONCAT(#{code},'%')
+				) and (i.cInvCcode like '05%' or i.cInvCcode like '06%' or i.cInvCcode like '07%'
+						or i.cInvCCode = '0399' or i.cInvCCode = '0499') and i.cInvName = #{goodName}
+				GROUP BY i.cInvName,rs.cBatch
+		)tab2 on tab2.cInvName=tab1.cInvName and tab1.cBatch=tab2.cBatch
+		 where tab1.purchaseQuantity-tab2.jian>0
+    </select>
 </mapper>

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

@@ -225,84 +225,10 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
         List<SyCostAllocationIngredient> list4 = syCostAllocationIngredientMapper.queryByCostIngredient(plannum);
         for (int i=0;i<list4.size();i++) {
             SyCostAllocationIngredient Ingredient = list4.get(i);
-            /*余下*/
-            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  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.iVerifyStateNew = 2 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";
-            /*转入*/
-            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.iVerifyStateNew = 2 and om.cCode like '"+plannum+"%'    " +
-                                    "     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";
-            List<Map<String, Object>> remainingList  = senYuDataSourceOne.queryForList(sqlRemaining);
-            if(remainingList.size()>0){
-                List<JSONObject> remainingJson = JsonChangeUtils.toJSONObject(remainingList);
-                List<SyRemaining> syRemainingList = new ArrayList<>();
-                for (int j=0;j<remainingJson.size();j++){
-                    SyRemaining syRemaining = JSONObject.toJavaObject(remainingJson.get(j), SyRemaining.class);
-                    syRemainingList.add(syRemaining);
-                }
-                Ingredient.setSyRemaining(syRemainingList);
-            }else{
-                Ingredient.setIngredientsRemainingQuantity(BigDecimal.ZERO);
-            }
-            List<Map<String, Object>> transferlist  = senYuDataSourceOne.queryForList(sqlTransfer);
-            if(transferlist.size()>0){
-                List<JSONObject> transferJson = JsonChangeUtils.toJSONObject(transferlist);
-                List<SyTransfer> syTransferList = new ArrayList<>();
-                for (int j=0;j<transferJson.size();j++){
-                    SyTransfer transfer = JSONObject.toJavaObject(transferJson.get(j), SyTransfer.class);
-                    syTransferList.add(transfer);
-                }
-                Ingredient.setSyTransfers(syTransferList);
-            }else{
-                Ingredient.setIngredientsTransferQuantity(BigDecimal.ZERO);
-                Ingredient.setTransferCost(BigDecimal.ZERO);
+            //若转入数量不为0则给转入数据对象赋值
+            if(0!=Ingredient.getIngredientsTransferQuantity().compareTo(BigDecimal.ZERO)){
+                List<SyTransfer> transferlist  = syCostAllocationIngredientMapper.queryTransferByIngredient(plannum,Ingredient.getGoodsName());
+                Ingredient.setSyTransfers(transferlist);
             }
             //辅料含税成本 美元
             if(Ingredient.getUsdAmount()!=null){