zengtx vor 1 Jahr
Ursprung
Commit
d690870cf4

+ 6 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/cost/mapper/SyCostAllocationFabricMapper.java

@@ -22,7 +22,12 @@ public interface SyCostAllocationFabricMapper extends BaseMapper<SyCostAllocatio
 	public List<SyCostAllocationFabric> selectByMainId(String mainId);
 
 	@DS("multi-three")
-	List<SyCostAllocationFabric> queryByCostFabric(String mainId);
+	List<SyCostAllocationFabric> queryByCostFabric(@Param("code") String code);
+//	通过视图查询
+	@DS("multi-three")
+	List<SyCostAllocationFabric> queryByCostFabric1(@Param("code") String code);
+	@DS("multi-three")
+	List<SyCostAllocationFabric> queryByCostFabric2(@Param("code") String code);
 	@DS("multi-three")
 	List<SyTransfer> queryTransferByFabric(@Param("code") String code,@Param("goodName") String goodName);
 	@DS("multi-three")

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

@@ -24,6 +24,8 @@ public interface SyCostAllocationIngredientMapper extends BaseMapper<SyCostAlloc
 	@DS("multi-three")
 	List<SyCostAllocationIngredient> queryByCostIngredient(String code);
 	@DS("multi-three")
+	List<SyCostAllocationIngredient> queryByCostIngredient1(String code);
+	@DS("multi-three")
 	List<SyTransfer> queryTransferByIngredient(@Param("code") String code, @Param("goodName") String goodName);
 	@DS("multi-three")
 	List<SyRemaining> queryRemainingByIngredient(@Param("code") String code, @Param("goodName") String goodName);

+ 165 - 24
jeecg-boot-module-system/src/main/java/org/jeecg/modules/cost/mapper/xml/SyCostAllocationFabricMapper.xml

@@ -16,6 +16,145 @@
 			 sy_cost_allocation_id = #{id} 		
 	</select>
 
+	<select id="queryByCostFabric2" parameterType="java.lang.String" resultType="org.jeecg.modules.cost.entity.SyCostAllocationFabric">
+
+select cInvName as goodsName from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Cloth
+where trim(cSOCode) like CONCAT(#{code},'%') and cSOCode not like '%样%'
+
+	</select>
+	<!--	通过视图查询-->
+	<select id="queryByCostFabric1" parameterType="java.lang.String" resultType="org.jeecg.modules.cost.entity.SyCostAllocationFabric">
+select
+		tab.*,isnull(tab3.purchaseQuantity,0) as purchaseQuantity,
+		case when tab3.jian-isnull(tab3.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
+		else tab3.jian-isnull(tab3.purchaseQuantity,0) end as fabrictransferQuantity,
+		case when tab3.jian-isnull(tab3.purchaseQuantity,0) <![CDATA[<=]]> 0 then isnull(tab3.purchaseQuantity,0)-tab.usageQuantity
+		else (tab3.jian-isnull(tab3.purchaseQuantity,0))+isnull(tab3.purchaseQuantity,0)-tab.usageQuantity end
+		as 	fabricremainingQuantity,
+		isnull((
+		case when tab3.jian-isnull(tab3.purchaseQuantity,0) <![CDATA[<=]]> 0
+		then isnull(tab3.purchaseQuantity,0)-tab.usageQuantity
+		else (tab3.jian-isnull(tab3.purchaseQuantity,0))+isnull(tab3.purchaseQuantity,0)-tab.usageQuantity end
+		)/tab3.purchaseQuantity,0) as loss
+		from
+		(
+		select vim.goodsName as goodsName,sum(vim.unitConsumption) as unitConsumption,sum(vim.planQuantity) as planQuantity,
+		sum(vim.usageQuantity) as usageQuantity from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Cloth vif
+		join(
+		select oti.cInvName as goodsName,sum(ot.iUnitQuantity) as unitConsumption,sum(ot.iQuantity) as planQuantity,case when oti.cInvName like '%圆带%' and max(om.cCode) like '%SYM764%' then replace(oti.cInvName,' ','') +' ' + isnull(ot.cFree1,'') else oti.cInvName +' ' + isnull(ot.cFree1,'') end as cInvName,
+		sum(ot.iSendQTY) as usageQuantity
+		from UFDATA_101_2021.dbo.om_momain om
+		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_101_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
+		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
+		join UFDATA_101_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+		WHERE om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+		and om.cCode like CONCAT(#{code},'%') 	and omi.cInvCcode like '19%' and om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+		GROUP BY oti.cInvName,ot.cFree1
+		) vim on vim.cInvName = vif.cInvName
+		where trim(vif.cSOCode) like CONCAT(#{code},'%') and vif.cSOCode not like '%样%'
+		GROUP BY vim.goodsName
+		) tab
+		left join
+		( select tab2.cinvName,sum(tab1.purchaseQuantity) as purchaseQuantity,sum(tab2.jian) as jian from
+		(
+		select i.cInvName,sum(rs.iQuantity) as purchaseQuantity,max(rs.cBatch) as cBatch from UFDATA_101_2021.dbo.rdrecords01 rs
+		join UFDATA_101_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select distinct od.csocode
+		from UFDATA_101_2021.dbo.PO_POmain om
+		join UFDATA_101_2021.dbo.PO_PODetails od on om.poid=od.poid
+		join UFDATA_101_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
+		and om.cPOID like CONCAT(#{code},'%')
+		) and rs.cBatch like CONCAT(#{code},'%')
+		GROUP BY i.cInvName
+		)tab1
+		right join
+		(
+		select i.cInvName,sum(rs.iQuantity) as jian,max(rs.cBatch) as cBatch from UFDATA_101_2021.dbo.rdrecords11 rs
+		join UFDATA_101_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select distinct od.csocode
+		from UFDATA_101_2021.dbo.om_momain om
+		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_101_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},'%')
+		)
+		GROUP BY i.cInvName
+		)tab2 on tab2.cInvName=tab1.cInvName and tab2.cBatch=tab1.cBatch
+		GROUP BY tab2.cInvName
+		) tab3 on tab3.cInvName=tab.goodsName
+
+		union all
+
+		select
+		tab.*,isnull(tab3.purchaseQuantity,0) as purchaseQuantity,
+		case when tab3.jian-isnull(tab3.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
+		else tab3.jian-isnull(tab3.purchaseQuantity,0) end as fabrictransferQuantity,
+		case when tab3.jian-isnull(tab3.purchaseQuantity,0) <![CDATA[<=]]> 0 then isnull(tab3.purchaseQuantity,0)-tab.usageQuantity
+		else (tab3.jian-isnull(tab3.purchaseQuantity,0))+isnull(tab3.purchaseQuantity,0)-tab.usageQuantity end
+		as 	fabricremainingQuantity,
+		isnull((
+		case when tab3.jian-isnull(tab3.purchaseQuantity,0) <![CDATA[<=]]> 0
+		then isnull(tab3.purchaseQuantity,0)-tab.usageQuantity
+		else (tab3.jian-isnull(tab3.purchaseQuantity,0))+isnull(tab3.purchaseQuantity,0)-tab.usageQuantity end
+		)/tab3.purchaseQuantity,0) as loss
+		from
+		(
+		select vim.goodsName as goodsName,sum(vim.unitConsumption) as unitConsumption,sum(vim.planQuantity) as planQuantity,
+		sum(vim.usageQuantity) as usageQuantity from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Cloth vif
+		join(
+		select oti.cInvName as goodsName,sum(ot.iUnitQuantity) as unitConsumption,sum(ot.iQuantity) as planQuantity,case when oti.cInvName like '%圆带%' then replace(oti.cInvName,' ','') +' ' + isnull(ot.cFree1,'') else oti.cInvName +' ' + isnull(ot.cFree1,'') end as cInvName,
+		sum(ot.iSendQTY) as usageQuantity
+		from UFDATA_103_2021.dbo.om_momain om
+		join UFDATA_103_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_103_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
+		join UFDATA_103_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
+		join UFDATA_103_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+		WHERE om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+		and om.cCode like CONCAT(#{code},'%') and om.iVerifyStateNew = 2 and (om.cCloser is null or om.cCloser='asuser')
+		and omi.cInvCcode like '19%'
+		GROUP BY oti.cInvName,ot.cFree1
+		) vim on vim.cInvName = vif.cInvName
+		where trim(vif.cSOCode) like CONCAT(#{code},'%') and vif.cSOCode not like '%样%'
+		GROUP BY vim.goodsName
+		) tab
+		left join
+		( select tab2.cinvName,sum(tab1.purchaseQuantity) as purchaseQuantity,sum(tab2.jian) as jian from
+		(
+		select i.cInvName,sum(rs.iQuantity) as purchaseQuantity,max(rs.cBatch) as cBatch from UFDATA_103_2021.dbo.rdrecords01 rs
+		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select distinct od.csocode
+		from UFDATA_103_2021.dbo.PO_POmain om
+		join UFDATA_103_2021.dbo.PO_PODetails od on om.poid=od.poid
+		join UFDATA_103_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
+		and om.cPOID like CONCAT(#{code},'%')
+		) and rs.cBatch like CONCAT(#{code},'%')
+		GROUP BY i.cInvName
+		)tab1
+		right join
+		(
+		select i.cInvName,sum(rs.iQuantity) as jian,max(rs.cBatch) as cBatch from UFDATA_103_2021.dbo.rdrecords11 rs
+		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select distinct od.csocode
+		from UFDATA_103_2021.dbo.om_momain om
+		join UFDATA_103_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_103_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 rs.cBatch = #{code}
+		GROUP BY i.cInvName
+		)tab2 on tab2.cInvName=tab1.cInvName and tab2.cBatch=tab1.cBatch
+		GROUP BY tab2.cInvName
+		) tab3 on tab3.cInvName=tab.goodsName
+	</select>
+
 	<select id="queryByCostFabric" parameterType="java.lang.String" resultType="org.jeecg.modules.cost.entity.SyCostAllocationFabric">
 		select
 		tab.*,isnull(tab3.purchaseQuantity,0) as purchaseQuantity,
@@ -39,8 +178,7 @@
 		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
 		join UFDATA_101_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 (oti.cInvCcode like '03%' or oti.cInvCcode like '04%' or oti.cInvCcode like '02%') and (oti.cInvCCode != '0399' or oti.cInvName like '%圆带%' or oti.cInvName like '%人字带%')
-		and (oti.cInvCCode != '0499' or oti.cInvName like '%圆带%' or oti.cInvName like '%人字带%') and (oti.cInvCCode != '0299' or oti.cInvName like '%圆带%' or oti.cInvName like '%人字带%')
+		and (oti.cInvCcode like '03%' or oti.cInvCcode like '04%' or oti.cInvCcode like '02%') and (oti.cInvCCode != '0399' and oti.cInvCCode != '0499'  and oti.cInvCCode != '0299')
 		GROUP BY oti.cInvName
 		) tab
 		left join
@@ -55,8 +193,7 @@
 		join UFDATA_101_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
 		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
 		 and om.cPOID like CONCAT(#{code},'%')
-		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
-		and (i.cInvCCode != '0499' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%') and (i.cInvCCode != '0299' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
+		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399'  and i.cInvCCode != '0499' and i.cInvCCode != '0299' )
 		 and rs.cBatch like CONCAT(#{code},'%')
 		GROUP BY i.cInvName
 		)tab1
@@ -71,8 +208,7 @@
 		join UFDATA_101_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 '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
-		and (i.cInvCCode != '0499' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%') and (i.cInvCCode != '0299' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
+		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399'  and i.cInvCCode != '0499'  and i.cInvCCode != '0299')
 
 		GROUP BY i.cInvName
 		)tab2 on tab2.cInvName=tab1.cInvName and tab2.cBatch=tab1.cBatch
@@ -103,8 +239,7 @@
 		join UFDATA_103_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
 		join UFDATA_103_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 (oti.cInvCcode like '03%' or oti.cInvCcode like '04%' or oti.cInvCcode like '02%') and (oti.cInvCCode != '0399' or oti.cInvName like '%圆带%' or oti.cInvName like '%人字带%')
-		and (oti.cInvCCode != '0499' or oti.cInvName like '%圆带%' or oti.cInvName like '%人字带%') and (oti.cInvCCode != '0299' or oti.cInvName like '%圆带%' or oti.cInvName like '%人字带%')
+		and (oti.cInvCcode like '03%' or oti.cInvCcode like '04%' or oti.cInvCcode like '02%') and (oti.cInvCCode != '0399' and oti.cInvCCode != '0499'  and oti.cInvCCode != '0299' )
 		GROUP BY oti.cInvName
 		) tab
 		left join
@@ -119,8 +254,7 @@
 		join UFDATA_103_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
 		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
 		 and om.cPOID like CONCAT(#{code},'%')
-		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
-		and (i.cInvCCode != '0499' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%') and (i.cInvCCode != '0299' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
+		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' and i.cInvCCode != '0499'  and i.cInvCCode != '0299')
 		 and rs.cBatch like CONCAT(#{code},'%')
 		GROUP BY i.cInvName
 		)tab1
@@ -135,9 +269,8 @@
 		join UFDATA_103_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 '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
-		and (i.cInvCCode != '0499' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%') and (i.cInvCCode != '0299' or i.cInvName like '%圆带%' or i.cInvName like '%人字带%')
-		and rs.cBatch =#{code}
+		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399'  and i.cInvCCode != '0499' and i.cInvCCode != '0299' )
+		and rs.cBatch like CONCAT(#{code},'%')
 		GROUP BY i.cInvName
 		)tab2 on tab2.cInvName=tab1.cInvName and tab2.cBatch=tab1.cBatch
 		GROUP BY tab2.cInvName
@@ -249,21 +382,24 @@
 
 <!--	多发少发链接-->
 	<select id="querypilosityFewer" parameterType="java.lang.String" resultType="org.jeecg.modules.cost.entity.SyCostAllocationFabric">
-
 select
 		tab.planQuantity as planQuantity,tab.color, tab.goodsName,isnull(tab1.purchaseQuantity,0) as purchaseQuantity,(isnull(tab1.purchaseQuantity,0) - tab.planQuantity) as pilosityFewer
 
 		from
 		(
-		select ot.cFree1 as color,max(oti.cInvName) as goodsName,sum(ot.iQuantity) as planQuantity,sum(ot.iSendQTY) as usageQuantity
+		select vim.color as color,max(vim.goodsName) as goodsName,sum(vim.planQuantity) as planQuantity,sum(vim.usageQuantity) as usageQuantity,max(vim.cInvName) as cInvName from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Cloth vif
+		join(
+		select ot.cFree1 as color,max(oti.cInvName) as cInvName,max(oti.cInvName)+ ' '+ ot.cFree1 as goodsName,sum(ot.iQuantity) as planQuantity,sum(ot.iSendQTY) as usageQuantity
 		from UFDATA_101_2021.dbo.om_momain om
 		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
 		join UFDATA_101_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
 		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
 		join UFDATA_101_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 oti.cInvName = #{goodName}
-		and (oti.cInvCcode like '03%' or oti.cInvCcode like '04%' or oti.cInvCcode like '02%') and (oti.cInvCCode != '0399' or oti.cInvName like '%带%') and (oti.cInvCCode != '0499' or oti.cInvName like '%带%') and (oti.cInvCCode != '0299' or oti.cInvName like '%带%')
 		GROUP BY ot.cFree1
+		) vim on vim.goodsName = vif.cInvName
+		where trim(vif.cSOCode) like CONCAT(#{code},'%') and vif.cSOCode not like '%样%'
+		GROUP BY vim.color
 		) tab
 		left join
 	 (
@@ -276,10 +412,10 @@ select
 		join UFDATA_101_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
 		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
 		 and om.cPOID like CONCAT(#{code},'%')
-		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' or i.cInvName like '%带%') and (i.cInvCCode != '0499' or i.cInvName like '%带%') and (i.cInvCCode != '0299' or i.cInvName like '%带%') and i.cInvName = #{goodName}
+		)  and i.cInvName = #{goodName}
 		 and rs.cBatch like CONCAT(#{code},'%')
 		GROUP BY rs.cFree1
-		)tab1 on tab1.cInvName=tab.goodsName and tab1.color = tab.color
+		)tab1 on tab1.cInvName=tab.cInvName and tab1.color = tab.color
 
 
 		union all
@@ -289,30 +425,35 @@ select
 
 		from
 		(
-		select ot.cFree1 as color,max(oti.cInvName) as goodsName,sum(ot.iQuantity) as planQuantity,sum(ot.iSendQTY) as usageQuantity
+		select vim.color as color,max(vim.goodsName) as goodsName,sum(vim.planQuantity) as planQuantity,sum(vim.usageQuantity) as usageQuantity,max(vim.cInvName) as cInvName from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Cloth vif
+		join(
+		select ot.cFree1 as color,max(oti.cInvName) as cInvName,max(oti.cInvName)+ ' '+ ot.cFree1 as goodsName,sum(ot.iQuantity) as planQuantity,sum(ot.iSendQTY) as usageQuantity
 		from UFDATA_103_2021.dbo.om_momain om
 		join UFDATA_103_2021.dbo.OM_MODetails od on om.moid=od.moid
 		join UFDATA_103_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
 		join UFDATA_103_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
 		join UFDATA_103_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 oti.cInvName = #{goodName}
-		and (oti.cInvCcode like '03%' or oti.cInvCcode like '04%' or oti.cInvCcode like '02%') and (oti.cInvCCode != '0399' or oti.cInvName like '%带%') and (oti.cInvCCode != '0499' or oti.cInvName like '%带%') and (oti.cInvCCode != '0299' or oti.cInvName like '%带%')
 		GROUP BY ot.cFree1
+		) vim on vim.goodsName = vif.cInvName
+		where trim(vif.cSOCode) like CONCAT(#{code},'%') and vif.cSOCode not like '%样%'
+		GROUP BY vim.color
 		) tab
 		left join
 	 (
-		select rs.cFree1 as color,max(i.cInvName) as cInvName,sum(rs.iQuantity) as purchaseQuantity,max(rs.cBatch) as cBatch from UFDATA_103_2021.dbo.rdrecords01 rs
+		select rs.cFree1 as color,max(i.cInvName) as cInvName,sum(rs.iQuantity) as purchaseQuantity,max(rs.cBatch) as cBatch from UFDATA_101_2021.dbo.rdrecords01 rs
 		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
 		where iordercode in (
 		select distinct od.csocode
-			from UFDATA_103_2021.dbo.PO_POmain om
+			from UFDATA_101_2021.dbo.PO_POmain om
 		join UFDATA_103_2021.dbo.PO_PODetails od on om.poid=od.poid
 		join UFDATA_103_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
 		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
 		 and om.cPOID like CONCAT(#{code},'%')
-		) and (i.cInvCcode like '03%' or i.cInvCcode like '04%' or i.cInvCcode like '02%') and (i.cInvCCode != '0399' or i.cInvName like '%带%') and (i.cInvCCode != '0499' or i.cInvName like '%带%') and (i.cInvCCode != '0299' or i.cInvName like '%带%') and i.cInvName = #{goodName}
+		)  and i.cInvName = #{goodName}
 		 and rs.cBatch like CONCAT(#{code},'%')
 		GROUP BY rs.cFree1
-		)tab1 on tab1.cInvName=tab.goodsName and tab1.color = tab.color
+		)tab1 on tab1.cInvName=tab.cInvName and tab1.color = tab.color
+
 	</select>
 </mapper>

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

@@ -16,8 +16,7 @@
 			 sy_cost_allocation_id = #{id} 		
 	</select>
 
-	<select id="queryByCostIngredient" resultType="org.jeecg.modules.cost.entity.SyCostAllocationIngredient">
-
+	<select id="queryByCostIngredient1" resultType="org.jeecg.modules.cost.entity.SyCostAllocationIngredient">
 		select tab.*,isnull(tab1.purchaseQuantity,0) as purchaseQuantity,
 		case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
 		else isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) end
@@ -30,98 +29,386 @@
 		else (isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0))*tab.cost end as transferCost
 		from
 		(
-			select t4.goodsName,sum(t4.dosage) as dosage,sum(t4.usageQuantity) as usageQuantity,max(t4.supper) as supper,sum(t4.rmbAmount) as rmbAmount,sum(t4.usdAmount) as usdAmount,sum(t4.priceExcludingtax) as priceExcludingtax,sum(t4.cost) as cost from(
-		SELECT t3.goodsName,t3.cVenAbbName AS supper,max( t3.dosage ) AS dosage,SUM ( t3.usageQuantity ) AS usageQuantity,
-	
-	SUM ( t3.rmbAmount ) AS rmbAmount,SUM ( t3.usdAmount ) AS usdAmount,SUM ( t3.priceExcludingtax ) AS priceExcludingtax,
-	SUM ( t3.totalCost )/sum(totalSum) AS cost 
-FROM(
-SELECT t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.totalCost,t2.totalSum	
-FROM
-	(
-SELECT ot.cInvCode,od.isosid,om.ccode,oti.cInvName AS goodsName,SUM (ot.iUnitQuantity) AS dosage,SUM (ot.iSendQTY) AS usageQuantity 
-FROM
-	UFDATA_103_2021.dbo.om_momain om
-	JOIN UFDATA_103_2021.dbo.OM_MODetails od ON om.moid= od.moid
-	JOIN UFDATA_103_2021.dbo.OM_MOMaterials ot ON ot.MoDetailsID= od.MODetailsID
-	JOIN UFDATA_103_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
-	JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= ot.cInvCode
-	JOIN UFDATA_103_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 (oti.cInvCcode LIKE '05%' OR oti.cInvCcode LIKE '06%' OR oti.cInvCcode LIKE '07%' OR oti.cInvCCode = '0399' OR oti.cInvCCode = '0299' OR oti.cInvCCode = '0499' ) AND oti.cInvName NOT LIKE '%圆带%' AND oti.cInvName NOT LIKE '%人字带%'
-GROUP BY ot.cInvCode,od.isosid,om.ccode,oti.cInvName ) AS t1 
-
-	left join (SELECT ven.cVenAbbName AS cVenAbbName,bi.cInvCode,pod.isosid,SUM ( bi.iSum ) AS rmbAmount,SUM ( bi.iOriSum ) AS usdAmount,
-			SUM ( bi.iMoney ) AS priceExcludingtax,sum ( bi.iCost*bi.iPBVQuantity) AS totalCost ,sum ( bi.iPBVQuantity) AS totalSum 
+		select vim.cInvCode,vim.goodsName,sum(vim.dosage) as dosage,sum(vim.usageQuantity) as usageQuantity,max(vim.supper) as supper,sum(vim.rmbAmount) as rmbAmount,sum(vim.usdAmount) as usdAmount,sum(vim.priceExcludingtax) as priceExcludingtax,sum(vim.cost) as cost from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Assist vif
+		join (
+		select t4.cInvCode,t4.goodsName,max(t4.dosage) as dosage,max(t4.usageQuantity) as usageQuantity,max(t4.supper) as supper,sum(t4.rmbAmount) as rmbAmount,sum(t4.usdAmount) as usdAmount,sum(t4.priceExcludingtax) as priceExcludingtax,sum(t4.cost) as cost from(
+		SELECT t3.cInvCode,t3.goodsName,t3.cVenAbbName AS supper,max( t3.dosage ) AS dosage,SUM ( t3.usageQuantity ) AS usageQuantity,
+
+		SUM ( t3.rmbAmount ) AS rmbAmount,SUM ( t3.usdAmount ) AS usdAmount,SUM ( t3.priceExcludingtax ) AS priceExcludingtax,
+		SUM ( t3.totalCost )/sum(totalSum) AS cost
+		FROM(
+		SELECT t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.totalCost,t2.totalSum
 		FROM
-			UFDATA_103_2021.dbo.om_momain pom
-			JOIN UFDATA_103_2021.dbo.OM_MODetails pod ON pod.MOID  = pom.MOID
-			JOIN UFDATA_103_2021.dbo.PurBillVouchs bi ON bi.iPOsID= pod.MODetailsID
-			JOIN UFDATA_103_2021.dbo.PurBillVouch bm ON bm.PBVID= bi.PBVID
-			JOIN UFDATA_103_2021.dbo.Vendor ven ON bm.cVenCode = ven.cVenCode
-			JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= pod.cInvCode 
+		(
+		SELECT ot.cInvCode,od.isosid,om.ccode,oti.cInvName AS goodsName,SUM (ot.iUnitQuantity) AS dosage,SUM (ot.iSendQTY) AS usageQuantity
+		FROM
+		UFDATA_103_2021.dbo.om_momain om
+		JOIN UFDATA_103_2021.dbo.OM_MODetails od ON om.moid= od.moid
+		JOIN UFDATA_103_2021.dbo.OM_MOMaterials ot ON ot.MoDetailsID= od.MODetailsID
+		JOIN UFDATA_103_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= ot.cInvCode
+		JOIN UFDATA_103_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},'%')
+
+		GROUP BY ot.cInvCode,od.isosid,om.ccode,oti.cInvName ) AS t1
+
+		left join (SELECT ven.cVenAbbName AS cVenAbbName,bi.cInvCode,pod.isosid,SUM ( bi.iSum ) AS rmbAmount,SUM ( bi.iOriSum ) AS usdAmount,
+		SUM ( bi.iMoney ) AS priceExcludingtax,sum ( bi.iCost*bi.iPBVQuantity) AS totalCost ,sum ( bi.iPBVQuantity) AS totalSum
+		FROM
+		UFDATA_103_2021.dbo.om_momain pom
+		JOIN UFDATA_103_2021.dbo.OM_MODetails pod ON pod.MOID  = pom.MOID
+		JOIN UFDATA_103_2021.dbo.PurBillVouchs bi ON bi.iPOsID= pod.MODetailsID
+		JOIN UFDATA_103_2021.dbo.PurBillVouch bm ON bm.PBVID= bi.PBVID
+		JOIN UFDATA_103_2021.dbo.Vendor ven ON bm.cVenCode = ven.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= pod.cInvCode
 		GROUP BY bi.cInvCode,pod.isosid,ven.cVenAbbName
-	) AS t2 
-on
-	t1.cInvCode= t2.cInvCode 
-	AND t2.isosid= t1.isosid 
-	) t3 
-GROUP BY
-	t3.goodsName,t3.cVenAbbName
-	
-	union all
-		
-		
-SELECT t3.goodsName,t3.cVenAbbName AS supper,max( t3.dosage ) AS dosage,SUM ( t3.usageQuantity ) AS usageQuantity,
-	
-	SUM ( t3.rmbAmount ) AS rmbAmount,SUM ( t3.usdAmount ) AS usdAmount,SUM ( t3.priceExcludingtax ) AS priceExcludingtax,
-	SUM ( t3.totalCost )/sum(totalSum) AS cost 
-FROM(
-SELECT t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.totalCost,t2.totalSum	
-FROM
-	(
-SELECT ot.cInvCode,od.isosid,om.ccode,oti.cInvName AS goodsName,SUM (ot.iUnitQuantity) AS dosage,SUM (ot.iSendQTY) AS usageQuantity 
-FROM
-	UFDATA_103_2021.dbo.om_momain om
-	JOIN UFDATA_103_2021.dbo.OM_MODetails od ON om.moid= od.moid
-	JOIN UFDATA_103_2021.dbo.OM_MOMaterials ot ON ot.MoDetailsID= od.MODetailsID
-	JOIN UFDATA_103_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
-	JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= ot.cInvCode
-	JOIN UFDATA_103_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 (oti.cInvCcode LIKE '05%' OR oti.cInvCcode LIKE '06%' OR oti.cInvCcode LIKE '07%' OR oti.cInvCCode = '0399' OR oti.cInvCCode = '0299' OR oti.cInvCCode = '0499'  ) AND oti.cInvName NOT LIKE '%圆带%' AND oti.cInvName NOT LIKE '%人字带%'
-GROUP BY ot.cInvCode,od.isosid,om.ccode,oti.cInvName ) AS t1 
-
-	left join (SELECT ven.cVenAbbName AS cVenAbbName,bi.cInvCode,pod.iorderdid,SUM ( bi.iSum ) AS rmbAmount,SUM ( bi.iOriSum ) AS usdAmount,
-			SUM ( bi.iMoney ) AS priceExcludingtax,sum ( bi.iCost*bi.iPBVQuantity) AS totalCost ,sum ( bi.iPBVQuantity) AS totalSum 
+		) AS t2
+		on
+		t1.cInvCode= t2.cInvCode
+		AND t2.isosid= t1.isosid
+		) t3
+		GROUP BY
+		t3.cInvCode,t3.goodsName,t3.cVenAbbName
+
+		union all
+
+
+		SELECT t3.cInvCode,t3.goodsName,t3.cVenAbbName AS supper,max( t3.dosage ) AS dosage,SUM ( t3.usageQuantity ) AS usageQuantity,
+
+		SUM ( t3.rmbAmount ) AS rmbAmount,SUM ( t3.usdAmount ) AS usdAmount,SUM ( t3.priceExcludingtax ) AS priceExcludingtax,
+		SUM ( t3.totalCost )/sum(totalSum) AS cost
+		FROM(
+		SELECT t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.totalCost,t2.totalSum
 		FROM
-			UFDATA_103_2021.dbo.PO_Pomain pom
-			JOIN UFDATA_103_2021.dbo.PO_Podetails pod ON pod.POID  = pom.POID
-			JOIN UFDATA_103_2021.dbo.PurBillVouchs bi ON bi.iPOsID= pod.ID
-			JOIN UFDATA_103_2021.dbo.PurBillVouch bm ON bm.PBVID= bi.PBVID
-			JOIN UFDATA_103_2021.dbo.Vendor ven ON bm.cVenCode = ven.cVenCode
-			JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= pod.cInvCode 
+		(
+		SELECT ot.cInvCode,od.isosid,om.ccode,oti.cInvName AS goodsName,max (ot.iUnitQuantity) AS dosage,SUM (ot.iSendQTY) AS usageQuantity
+		FROM
+		UFDATA_103_2021.dbo.om_momain om
+		JOIN UFDATA_103_2021.dbo.OM_MODetails od ON om.moid= od.moid
+		JOIN UFDATA_103_2021.dbo.OM_MOMaterials ot ON ot.MoDetailsID= od.MODetailsID
+		JOIN UFDATA_103_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= ot.cInvCode
+		JOIN UFDATA_103_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},'%')
+
+		GROUP BY ot.cInvCode,od.isosid,om.ccode,oti.cInvName ) AS t1
+
+		left join (SELECT ven.cVenAbbName AS cVenAbbName,bi.cInvCode,pod.iorderdid,SUM ( bi.iSum ) AS rmbAmount,SUM ( bi.iOriSum ) AS usdAmount,
+		SUM ( bi.iMoney ) AS priceExcludingtax,sum ( bi.iCost*bi.iPBVQuantity) AS totalCost ,sum ( bi.iPBVQuantity) AS totalSum
+		FROM
+		UFDATA_103_2021.dbo.PO_Pomain pom
+		JOIN UFDATA_103_2021.dbo.PO_Podetails pod ON pod.POID  = pom.POID
+		JOIN UFDATA_103_2021.dbo.PurBillVouchs bi ON bi.iPOsID= pod.ID
+		JOIN UFDATA_103_2021.dbo.PurBillVouch bm ON bm.PBVID= bi.PBVID
+		JOIN UFDATA_103_2021.dbo.Vendor ven ON bm.cVenCode = ven.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= pod.cInvCode
 		GROUP BY bi.cInvCode,pod.iorderdid,ven.cVenAbbName
-	) AS t2 
-on
-	t1.cInvCode= t2.cInvCode 
-	AND t2.iorderdid= t1.isosid 
-	) t3 
-GROUP BY
-	t3.goodsName,t3.cVenAbbName
-	) t4 GROUP BY t4.goodsName
+		) AS t2
+		on
+		t1.cInvCode= t2.cInvCode
+		AND t2.iorderdid= t1.isosid
+		) t3
+		GROUP BY
+		t3.cInvCode,t3.goodsName,t3.cVenAbbName
+		) t4 GROUP BY t4.cInvCode,t4.goodsName
+		) vim on vim.goodsName = vif.cInvName
+		where trim(vif.cPoid) like CONCAT(#{code},'%') and vif.cPoid not like '%样%'
+		and vif.cVenAbbName not in ('宁波森语','马菲羊','森语集团') and vif.iquantityinvoice>0
+		GROUP BY vim.cInvCode,vim.goodsName
 		) tab
 		left join
 		(
-		select i.cInvName,sum(rs.iQuantity) as purchaseQuantity from UFDATA_103_2021.dbo.rdrecords01 rs
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as purchaseQuantity from UFDATA_103_2021.dbo.rdrecords01 rs
+		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select od.csocode
+		from UFDATA_103_2021.dbo.PO_POmain om
+		join UFDATA_103_2021.dbo.PO_PODetails od on om.POID=od.POID
+		join UFDATA_103_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
+		and om.cPOID LIKE CONCAT(#{code},'%')
+		)
+		GROUP BY i.cInvCode,i.cInvName
+		)tab1 on tab1.cInvName=tab.goodsName and tab1.cInvCode=tab.cInvCode
+		left join
+		(
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as jian from UFDATA_103_2021.dbo.rdrecords11 rs
+		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select distinct od.csocode
+		from UFDATA_103_2021.dbo.om_momain om
+		join UFDATA_103_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_103_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},'%')
+		)
+		GROUP BY i.cInvCode,i.cInvName--,rs.cBatch
+		)tab2 on tab2.cInvName=tab.goodsName and tab2.cInvCode=tab.cInvCode
+
+		union all
+
+
+
+		select tab.*,isnull(tab1.purchaseQuantity,0) as purchaseQuantity,
+		case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
+		else isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) end
+		as ingredientsTransferQuantity,
+		case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then isnull(tab1.purchaseQuantity,0)-tab.usageQuantity
+		else (isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0))+isnull(tab1.purchaseQuantity,0)-tab.usageQuantity end
+		as ingredientsRemainingQuantity,
+		(tab1.purchaseQuantity-tab.usageQuantity)/tab1.purchaseQuantity as loss,case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
+		else (isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0))*tab.cost end as transferCost
+		from
+		(
+		select vim.cInvCode,vim.goodsName,sum(vim.dosage) as dosage,sum(vim.usageQuantity) as usageQuantity,max(vim.supper) as supper,sum(vim.rmbAmount) as rmbAmount,sum(vim.usdAmount) as usdAmount,sum(vim.priceExcludingtax) as priceExcludingtax,sum(vim.cost) as cost from UFDATA_103_2021.dbo.VIEW_FabricLoss_Cost_Assist vif
+		join (
+		select t4.cInvCode,t4.goodsName,max(t4.dosage) as dosage,max(t4.usageQuantity) as usageQuantity,max(t4.supper) as supper,sum(t4.rmbAmount) as rmbAmount,sum(t4.usdAmount) as usdAmount,sum(t4.priceExcludingtax) as priceExcludingtax,sum(t4.cost) as cost from (
+		select t3.cInvCode,t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
+
+		select t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
+
+		from UFDATA_101_2021.dbo.om_momain om
+		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_101_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
+		JOIN UFDATA_101_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
+		join UFDATA_101_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},'%')
+		group by ot.cInvCode,od.isosid,om.ccode,oti.cInvName
+		) as t1,
+		(
+		select max(ven.cVenAbbName) as cVenAbbName,
+		bi.cInvCode,pod.iorderdid,sum(bi.iSum) as rmbAmount,sum(bi.iOriSum) as usdAmount
+		,sum(bi.iMoney) as priceExcludingtax,max(bi.iCost) as iCost
+		from UFDATA_101_2021.dbo.PO_Pomain pom
+		join UFDATA_101_2021.dbo.PO_Podetails pod on pod.POID  = pom.POID
+		join UFDATA_101_2021.dbo.PurBillVouchs bi  on bi.iPOsID=pod.ID
+		join UFDATA_101_2021.dbo.PurBillVouch bm  on bm.PBVID=bi.PBVID
+		join UFDATA_101_2021.dbo.Vendor ven on bm.cVenCode = ven.cVenCode
+		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=pod.cInvCode
+		where pom.cVenCode != 'T010001' and pom.cVenCode != 'T020001'
+		GROUP BY bi.cInvCode,pod.iorderdid) as t2 where t1.cInvCode=t2.cInvCode and t1.isosid = t2.iorderdid
+		) t3  GROUP BY t3.cInvCode,t3.goodsName
+
+		union all
+
+		select t3.cInvCode,t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
+
+		select t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
+
+		from UFDATA_101_2021.dbo.om_momain om
+		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_101_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
+		JOIN UFDATA_101_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
+		join UFDATA_101_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},'%')
+		group by ot.cInvCode,od.isosid,om.ccode,oti.cInvName
+		) as t1
+		left join (
+		select max(ven.cVenAbbName) as cVenAbbName,
+		bi.cInvCode,pod.iorderdid,sum(bi.iSum) as rmbAmount,sum(bi.iOriSum) as usdAmount
+		,sum(bi.iMoney) as priceExcludingtax,max(bi.iCost) as iCost
+		from UFDATA_101_2021.dbo.PO_Pomain pom
+		join UFDATA_101_2021.dbo.PO_Podetails pod on pod.POID  = pom.POID
+		join UFDATA_103_2021.dbo.HY_DZ_K7_SYNERGISMLOGDID hy on pod.id = hy.predid
+
+		join UFDATA_102_2021.dbo.PO_Podetails pd on pd.iorderdid=hy.did
+		join UFDATA_102_2021.dbo.PO_Pomain pm on pd.POID  = pm.POID
+		join UFDATA_102_2021.dbo.PurBillVouchs bi  on bi.iPOsID=pd.ID
+		join UFDATA_102_2021.dbo.PurBillVouch bm  on bm.PBVID=bi.PBVID
+		join UFDATA_102_2021.dbo.Vendor ven on bm.cVenCode = ven.cVenCode
+		join UFDATA_102_2021.dbo.Inventory oti on oti.cInvCode=pd.cInvCode
+		where pm.cVenCode != 'T020001' and pom.cpoid LIKE CONCAT(#{code},'%')
+		GROUP BY bi.cInvCode,pod.iorderdid) as t2 on t1.cInvCode=t2.cInvCode and t2.iorderdid=t1.isosid
+		) t3  GROUP BY t3.cInvCode,t3.goodsName
+
+		union all
+		select t3.cInvCode,t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
+
+		select t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
+
+		from UFDATA_101_2021.dbo.om_momain om
+		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_101_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
+		JOIN UFDATA_101_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=ot.cInvCode
+		join UFDATA_101_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},'%')
+		group by ot.cInvCode,od.isosid,om.ccode,oti.cInvName
+		) as t1,
+		(
+		select max(ven.cVenAbbName) as cVenAbbName,
+		bi.cInvCode,pod.iorderdid,sum(bi.iSum) as rmbAmount,sum(bi.iOriSum) as usdAmount
+		,sum(bi.iMoney) as priceExcludingtax,max(bi.iCost) as iCost
+		from UFDATA_101_2021.dbo.PO_Pomain pom
+		join UFDATA_101_2021.dbo.PO_Podetails pod on pod.POID  = pom.POID
+		join UFDATA_103_2021.dbo.HY_DZ_K7_SYNERGISMLOGDID hy on pod.id = hy.predid
+
+		join UFDATA_103_2021.dbo.OM_MODetails pd on pd.isosid=hy.did
+		join UFDATA_103_2021.dbo.OM_MOMain pm on pd.MOID  = pm.MOID
+		left join UFDATA_103_2021.dbo.PurBillVouchs bi  on bi.iPOsID=pd.MODetailsID
+		left join UFDATA_103_2021.dbo.PurBillVouch bm  on bm.PBVID=bi.PBVID
+		join UFDATA_103_2021.dbo.Vendor ven on bm.cVenCode = ven.cVenCode
+		join UFDATA_103_2021.dbo.Inventory oti on oti.cInvCode=pd.cInvCode
+		where pom.cpoid LIKE CONCAT(#{code},'%')
+		GROUP BY bi.cInvCode,pod.iorderdid) as t2 where t1.cInvCode=t2.cInvCode and t2.iorderdid=t1.isosid
+		) t3  GROUP BY t3.cInvCode,t3.goodsName
+		) t4 GROUP BY t4.cInvCode,t4.goodsName
+		) vim on vim.goodsName = vif.cInvName
+		where trim(vif.cPoid) like CONCAT(#{code},'%') and vif.cPoid not like '%样%'
+		and vif.cVenAbbName not in ('宁波森语','马菲羊','森语集团') and vif.iquantityinvoice>0
+		GROUP BY vim.cInvCode,vim.goodsName
+		) tab
+		left join
+		(
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as purchaseQuantity from UFDATA_101_2021.dbo.rdrecords01 rs
+		join UFDATA_101_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select od.csocode
+		from UFDATA_101_2021.dbo.PO_POmain om
+		join UFDATA_101_2021.dbo.PO_PODetails od on om.POID=od.POID
+		join UFDATA_101_2021.dbo.Inventory omi on omi.cInvCode=od.cInvCode
+		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
+		and om.cPOID LIKE CONCAT(#{code},'%')
+		)
+		GROUP BY i.cInvCode,i.cInvName
+		)tab1 on tab1.cInvName=tab.goodsName and tab1.cInvCode=tab.cInvCode
+		left join
+		(
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as jian from UFDATA_101_2021.dbo.rdrecords11 rs
+		join UFDATA_101_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
+		where iordercode in (
+		select distinct od.csocode
+		from UFDATA_101_2021.dbo.om_momain om
+		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
+		join UFDATA_101_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},'%')
+		)
+		GROUP BY i.cInvCode,i.cInvName
+		)tab2 on tab2.cInvName=tab.goodsName and tab1.cInvCode=tab.cInvCode
+	</select>
+
+	<select id="queryByCostIngredient" resultType="org.jeecg.modules.cost.entity.SyCostAllocationIngredient">
+		select tab.*,isnull(tab1.purchaseQuantity,0) as purchaseQuantity,
+		case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
+		else isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) end
+		as ingredientsTransferQuantity,
+		case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then isnull(tab1.purchaseQuantity,0)-tab.usageQuantity
+		else (isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0))+isnull(tab1.purchaseQuantity,0)-tab.usageQuantity end
+		as ingredientsRemainingQuantity,
+		(tab1.purchaseQuantity-tab.usageQuantity)/tab1.purchaseQuantity as loss,
+		case when isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0) <![CDATA[<=]]> 0 then 0
+		else (isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0))*tab.cost end as transferCost
+		from
+		(
+		select t4.cInvCode,t4.goodsName,max(t4.dosage) as dosage,max(t4.usageQuantity) as usageQuantity,max(t4.supper) as supper,sum(t4.rmbAmount) as rmbAmount,sum(t4.usdAmount) as usdAmount,sum(t4.priceExcludingtax) as priceExcludingtax,sum(t4.cost) as cost from(
+		SELECT t3.cInvCode as cInvCode,t3.goodsName,t3.cVenAbbName AS supper,max( t3.dosage ) AS dosage,SUM ( t3.usageQuantity ) AS usageQuantity,
+
+		SUM ( t3.rmbAmount ) AS rmbAmount,SUM ( t3.usdAmount ) AS usdAmount,SUM ( t3.priceExcludingtax ) AS priceExcludingtax,
+		SUM ( t3.totalCost )/sum(totalSum) AS cost
+		FROM(
+		SELECT t1.cInvCode as cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.totalCost,t2.totalSum
+		FROM
+		(
+		SELECT ot.cInvCode,od.isosid,om.ccode,oti.cInvName AS goodsName,SUM (ot.iUnitQuantity) AS dosage,SUM (ot.iSendQTY) AS usageQuantity
+		FROM
+		UFDATA_103_2021.dbo.om_momain om
+		JOIN UFDATA_103_2021.dbo.OM_MODetails od ON om.moid= od.moid
+		JOIN UFDATA_103_2021.dbo.OM_MOMaterials ot ON ot.MoDetailsID= od.MODetailsID
+		JOIN UFDATA_103_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= ot.cInvCode
+		JOIN UFDATA_103_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 (oti.cInvCcode LIKE '05%' OR oti.cInvCcode LIKE '06%' OR oti.cInvCcode LIKE '07%' OR oti.cInvCCode = '0399' OR oti.cInvCCode = '0299' OR oti.cInvCCode = '0499' )
+		GROUP BY ot.cInvCode,od.isosid,om.ccode,oti.cInvName ) AS t1
+
+		join (SELECT ven.cVenAbbName AS cVenAbbName,bi.cInvCode,pod.isosid,SUM ( bi.iSum ) AS rmbAmount,SUM ( bi.iOriSum ) AS usdAmount,
+		SUM ( bi.iMoney ) AS priceExcludingtax,sum ( bi.iCost*bi.iPBVQuantity) AS totalCost ,sum ( bi.iPBVQuantity) AS totalSum
+		FROM
+		UFDATA_103_2021.dbo.om_momain pom
+		JOIN UFDATA_103_2021.dbo.OM_MODetails pod ON pod.MOID  = pom.MOID
+		JOIN UFDATA_103_2021.dbo.PurBillVouchs bi ON bi.iPOsID= pod.MODetailsID
+		JOIN UFDATA_103_2021.dbo.PurBillVouch bm ON bm.PBVID= bi.PBVID
+		JOIN UFDATA_103_2021.dbo.Vendor ven ON bm.cVenCode = ven.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= pod.cInvCode
+		GROUP BY bi.cInvCode,pod.isosid,ven.cVenAbbName
+		) AS t2
+		on
+		t1.cInvCode= t2.cInvCode
+		AND t2.isosid= t1.isosid
+		) t3
+		GROUP BY
+		t3.cInvCode,t3.goodsName,t3.cVenAbbName
+
+		union all
+
+
+		SELECT t3.cInvCode,t3.goodsName,max(t3.cVenAbbName) AS supper,max( t3.dosage ) AS dosage,SUM ( t3.usageQuantity ) AS usageQuantity,
+
+		SUM ( t3.rmbAmount ) AS rmbAmount,SUM ( t3.usdAmount ) AS usdAmount,SUM ( t3.priceExcludingtax ) AS priceExcludingtax,
+		SUM ( t3.totalCost )/sum(totalSum) AS cost
+		FROM(
+		SELECT t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.totalCost,t2.totalSum
+		FROM
+		(
+		SELECT ot.cInvCode,od.isosid,om.ccode,oti.cInvName AS goodsName,max (ot.iUnitQuantity) AS dosage,SUM (ot.iSendQTY) AS usageQuantity
+		FROM
+		UFDATA_103_2021.dbo.om_momain om
+		JOIN UFDATA_103_2021.dbo.OM_MODetails od ON om.moid= od.moid
+		JOIN UFDATA_103_2021.dbo.OM_MOMaterials ot ON ot.MoDetailsID= od.MODetailsID
+		JOIN UFDATA_103_2021.dbo.Vendor v ON om.cVenCode= v.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= ot.cInvCode
+		JOIN UFDATA_103_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 (oti.cInvCcode LIKE '05%' OR oti.cInvCcode LIKE '06%' OR oti.cInvCcode LIKE '07%' OR oti.cInvCCode = '0399' OR oti.cInvCCode = '0299' OR oti.cInvCCode = '0499'  )
+		GROUP BY ot.cInvCode,od.isosid,om.ccode,oti.cInvName ) AS t1
+
+		left join (SELECT max(ven.cVenAbbName) AS cVenAbbName,bi.cInvCode,pod.iorderdid,SUM ( bi.iSum ) AS rmbAmount,SUM ( bi.iOriSum ) AS usdAmount,
+		SUM ( bi.iMoney ) AS priceExcludingtax,sum ( bi.iCost*bi.iPBVQuantity) AS totalCost ,sum ( bi.iPBVQuantity) AS totalSum
+		FROM
+		UFDATA_103_2021.dbo.PO_Pomain pom
+		JOIN UFDATA_103_2021.dbo.PO_Podetails pod ON pod.POID  = pom.POID
+		JOIN UFDATA_103_2021.dbo.PurBillVouchs bi ON bi.iPOsID= pod.ID
+		JOIN UFDATA_103_2021.dbo.PurBillVouch bm ON bm.PBVID= bi.PBVID
+		JOIN UFDATA_103_2021.dbo.Vendor ven ON bm.cVenCode = ven.cVenCode
+		JOIN UFDATA_103_2021.dbo.Inventory oti ON oti.cInvCode= pod.cInvCode
+		GROUP BY bi.cInvCode,pod.iorderdid
+		) AS t2
+		on
+		t1.cInvCode= t2.cInvCode
+		AND t2.iorderdid= t1.isosid
+		) t3
+		GROUP BY
+		t3.cInvCode,t3.goodsName
+		) t4 GROUP BY t4.cInvCode,t4.goodsName
+		) tab
+		left join
+		(
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as purchaseQuantity from UFDATA_103_2021.dbo.rdrecords01 rs
 		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
 		where iordercode in (
 		select od.csocode
@@ -131,12 +418,12 @@ GROUP BY
 		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
 		and om.cPOID 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'  or i.cInvCCode = '0299') and i.cInvName not like '%带%'
-		GROUP BY i.cInvName
-		)tab1 on tab1.cInvName=tab.goodsName
+		or i.cInvCCode = '0399' or i.cInvCCode = '0499'  or i.cInvCCode = '0299')
+		GROUP BY i.cInvCode,i.cInvName
+		)tab1 on tab1.cInvName=tab.goodsName and tab.cInvCode = tab1.cInvCode
 		left join
 		(
-		select i.cInvName,sum(rs.iQuantity) as jian from UFDATA_103_2021.dbo.rdrecords11 rs
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as jian from UFDATA_103_2021.dbo.rdrecords11 rs
 		join UFDATA_103_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
 		where iordercode in (
 		select distinct od.csocode
@@ -146,9 +433,9 @@ GROUP BY
 		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'  or i.cInvCCode = '0299') and rs.cBatch LIKE CONCAT(#{code},'%') and i.cInvName not like '%圆带%' AND i.cInvName NOT LIKE '%人字带%'
-		GROUP BY i.cInvName--,rs.cBatch
-		)tab2 on tab2.cInvName=tab.goodsName
+		or i.cInvCCode = '0399' or i.cInvCCode = '0499'  or i.cInvCCode = '0299')
+		GROUP BY i.cInvCode,i.cInvName--,rs.cBatch
+		)tab2 on tab2.cInvName=tab.goodsName and tab.cInvCode = tab2.cInvCode
 
 		union all
 
@@ -165,11 +452,10 @@ GROUP BY
 		else (isnull(tab2.jian,0)-isnull(tab1.purchaseQuantity,0))*tab.cost end as transferCost
 		from
 		(
-		select t4.goodsName,sum(t4.dosage) as dosage,sum(t4.usageQuantity) as usageQuantity,max(t4.supper) as supper,sum(t4.rmbAmount) as rmbAmount,sum(t4.usdAmount) as usdAmount,sum(t4.priceExcludingtax) as priceExcludingtax,sum(t4.cost) as cost from (
-		select t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
-
-		select t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
+		select t4.cInvCode,t4.goodsName,max(t4.dosage) as dosage,max(t4.usageQuantity) as usageQuantity,max(t4.supper) as supper,sum(t4.rmbAmount) as rmbAmount,sum(t4.usdAmount) as usdAmount,sum(t4.priceExcludingtax) as priceExcludingtax,sum(t4.cost) as cost from (
+		select t3.cInvCode,t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
 
+		select t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
 		from UFDATA_101_2021.dbo.om_momain om
 		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
 		join UFDATA_101_2021.dbo.OM_MOMaterials ot on ot.MoDetailsID=od.MODetailsID
@@ -179,7 +465,7 @@ GROUP BY
 
 		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 (oti.cInvCcode like '05%' or oti.cInvCcode like '06%'
-		or oti.cInvCcode like '07%' or oti.cInvCCode = '0399' or oti.cInvCCode = '0299' or oti.cInvCCode = '0499' ) AND oti.cInvName NOT LIKE '%圆带%' AND oti.cInvName NOT LIKE '%人字带%'
+		or oti.cInvCcode like '07%' or oti.cInvCCode = '0399' or oti.cInvCCode = '0299' or oti.cInvCCode = '0499' )
 		group by ot.cInvCode,od.isosid,om.ccode,oti.cInvName
 		) as t1,
 		(
@@ -194,13 +480,13 @@ GROUP BY
 		join UFDATA_101_2021.dbo.Inventory oti on oti.cInvCode=pod.cInvCode
 		where pom.cVenCode != 'T010001' and pom.cVenCode != 'T020001'
 		GROUP BY bi.cInvCode,pod.iorderdid) as t2 where t1.cInvCode=t2.cInvCode and t2.iorderdid=t1.isosid
-		) t3  GROUP BY t3.goodsName
+		) t3  GROUP BY t3.cInvCode,t3.goodsName
 
 		union all
 
-		select t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
+		select t3.cInvCode,t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
 
-		select t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
+		select t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
 
 		from UFDATA_101_2021.dbo.om_momain om
 		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
@@ -211,7 +497,7 @@ GROUP BY
 
 		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 (oti.cInvCcode like '05%' or oti.cInvCcode like '06%'
-		or oti.cInvCcode like '07%' or oti.cInvCCode = '0399' or oti.cInvCCode = '0299' or oti.cInvCCode = '0499' ) AND oti.cInvName NOT LIKE '%圆带%' AND oti.cInvName NOT LIKE '%人字带%'
+		or oti.cInvCcode like '07%' or oti.cInvCCode = '0399' or oti.cInvCCode = '0299' or oti.cInvCCode = '0499' )
 		group by ot.cInvCode,od.isosid,om.ccode,oti.cInvName
 		) as t1
 		left join (
@@ -230,12 +516,12 @@ GROUP BY
 		join UFDATA_102_2021.dbo.Inventory oti on oti.cInvCode=pd.cInvCode
 		where pm.cVenCode != 'T020001' and pom.cpoid LIKE CONCAT(#{code},'%')
 		GROUP BY bi.cInvCode,pod.iorderdid) as t2 on t1.cInvCode=t2.cInvCode and t2.iorderdid=t1.isosid
-		) t3  GROUP BY t3.goodsName
+		) t3  GROUP BY t3.cInvCode,t3.goodsName
 
 		union all
-		select t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
+		select t3.cInvCode,t3.goodsName,max(t3.dosage) as dosage,sum(t3.usageQuantity) as usageQuantity,max(t3.cVenAbbName) as supper,sum(t3.rmbAmount) as rmbAmount,sum(t3.usdAmount) as usdAmount,sum(t3.priceExcludingtax) as priceExcludingtax,sum(t3.iCost) as cost from (
 
-		select t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
+		select t1.cInvCode,t1.goodsName,t1.dosage,t1.usageQuantity,t2.cVenAbbName,t2.rmbAmount,t2.usdAmount,t2.priceExcludingtax,t2.iCost from (select  ot.cInvCode,od.isosid,om.ccode,oti.cInvName as goodsName,sum(ot.iUnitQuantity) as dosage,sum(ot.iSendQTY) as usageQuantity
 
 		from UFDATA_101_2021.dbo.om_momain om
 		join UFDATA_101_2021.dbo.OM_MODetails od on om.moid=od.moid
@@ -246,7 +532,7 @@ GROUP BY
 
 		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 (oti.cInvCcode like '05%' or oti.cInvCcode like '06%'
-		or oti.cInvCcode like '07%' or oti.cInvCCode = '0399' or oti.cInvCCode = '0299' or oti.cInvCCode = '0499' )AND oti.cInvName NOT LIKE '%圆带%' AND oti.cInvName NOT LIKE '%人字带%'
+		or oti.cInvCcode like '07%' or oti.cInvCCode = '0399' or oti.cInvCCode = '0299' or oti.cInvCCode = '0499' )
 		group by ot.cInvCode,od.isosid,om.ccode,oti.cInvName
 		) as t1,
 		(
@@ -265,12 +551,12 @@ GROUP BY
 		join UFDATA_103_2021.dbo.Inventory oti on oti.cInvCode=pd.cInvCode
 		where pom.cpoid LIKE CONCAT(#{code},'%')
 		GROUP BY bi.cInvCode,pod.iorderdid) as t2 where t1.cInvCode=t2.cInvCode and t2.iorderdid=t1.isosid
-		) t3  GROUP BY t3.goodsName
-		) t4 GROUP BY t4.goodsName
+		) t3  GROUP BY t3.cInvCode,t3.goodsName
+		) t4 GROUP BY t4.cInvCode,t4.goodsName
 		) tab
 		left join
 		(
-		select i.cInvName,sum(rs.iQuantity) as purchaseQuantity from UFDATA_101_2021.dbo.rdrecords01 rs
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as purchaseQuantity from UFDATA_101_2021.dbo.rdrecords01 rs
 		join UFDATA_101_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
 		where iordercode in (
 		select od.csocode
@@ -280,12 +566,12 @@ GROUP BY
 		WHERE om.cVerifier is not null and (om.cCloser is null or om.cCloser='asuser')
 		and om.cPOID 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' or i.cInvCCode = '0299')  and i.cInvName not like '%圆带%' AND i.cInvName NOT LIKE '%人字带%'
-		GROUP BY i.cInvName
-		)tab1 on tab1.cInvName=tab.goodsName
+		or i.cInvCCode = '0399' or i.cInvCCode = '0499' or i.cInvCCode = '0299')
+		GROUP BY i.cInvCode,i.cInvName
+		)tab1 on tab1.cInvName=tab.goodsName and tab1.cInvCode = tab.cInvCode
 		left join
 		(
-		select i.cInvName,sum(rs.iQuantity) as jian from UFDATA_101_2021.dbo.rdrecords11 rs
+		select i.cInvCode,i.cInvName,sum(rs.iQuantity) as jian from UFDATA_101_2021.dbo.rdrecords11 rs
 		join UFDATA_101_2021.dbo.Inventory i on rs.cInvCode=i.cInvCode
 		where iordercode in (
 		select distinct od.csocode
@@ -295,9 +581,11 @@ GROUP BY
 		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'  or i.cInvCCode = '0299') and i.cInvName not like '%圆带%' AND i.cInvName NOT LIKE '%人字带%' and rs.cBatch LIKE CONCAT(#{code},'%')
-		GROUP BY i.cInvName
-		)tab2 on tab2.cInvName=tab.goodsName
+		or i.cInvCCode = '0399' or i.cInvCCode = '0499'  or i.cInvCCode = '0299')
+		GROUP BY i.cInvCode,i.cInvName
+		)tab2 on tab2.cInvName=tab.goodsName and tab2.cInvCode = tab.cInvCode
+
+
 
 	</select>
 

+ 23 - 37
jeecg-boot-module-system/src/main/java/org/jeecg/modules/cost/mapper/xml/SyCostAllocationShipdetailMapper.xml

@@ -18,44 +18,30 @@
 
 	<select id="queryByCostShipdetail" resultType="org.jeecg.modules.cost.entity.SyCostAllocationShipdetail">
 	select t.* from (
-			SELECT
-			sh.cDefine10 AS invoiceNum,
-			CONVERT(varchar(50), min(sh.dDate), 23) as outdata ,
-			sum(shs.iQuantity) as shipQuantity,
-			sh.iExchRate AS exchangeRate,
-			sh.cSOCode AS orderNum,
-			max(so.cdefine22) AS poStyleNum,
-			max(so.cDefine28) AS smallPo,
-			max(shs.iTaxUnitPrice) AS exportUnitPrice ,
-			sum(shs.iSum) as exportPrice,
-			sum(iNatSum) as rmbAmount,
-			case when max(so.cexch)='人民币' then max(so.procesUnitPriceusd) else round(max(so.procesUnitPriceusd)*sh.iExchRate,4) end as procesUnitPricermb,
-			case when max(so.cexch)='人民币' then 0 else max(so.procesUnitPriceusd) end as procesUnitPriceusd,
-				case when max(so.cexch)='人民币' then max(so.procesUnitPriceusd) else round(max(so.procesUnitPriceusd)*sh.iExchRate,4) end* sum(shs.iQuantity) as processCost,
-			case when max(so.cexch)='人民币' then 0 else max(so.procesUnitPriceusd) end * sum(shs.iQuantity) as processCostUsd,
-			v.cVenName AS processUnit
-		 FROM
-			UFDATA_101_2021.dbo.SaleBillVouch sh
-			left JOIN UFDATA_101_2021.dbo.SaleBillVouchs shs ON sh.SBVID = shs.SBVID
-			LEFT JOIN UFDATA_101_2021.dbo.Inventory c ON c.cInvCode= shs.cInvCode
-			JOIN (
-			 SELECT
-				o.supplierCode,s.iSOsID,s.id ,o.procesUnitPriceusd,o.procesUnitPricermb,o.iPBVQuantity,o.cexch as cexch,s.cdefine22,s.cDefine28
-			 FROM UFDATA_101_2021.dbo.SO_SODetails s
-			 JOIN (
-					SELECT max(om.cexch_name) as cexch,od.csoordercode,
-			 max(om.cVenCode) AS supplierCode,max(od.cInvCode) as cInvCode,sum(od.iTax) as iTax,sum(od.iNatTax) as iNatTax
-			 ,min(od.iNatUnitPrice) as procesUnitPricermb,min(bi.iOriTaxCost ) as procesUnitPriceusd,count(1) as iPBVQuantity
-					FROM UFDATA_101_2021.dbo.OM_MOMain om
-					LEFT JOIN UFDATA_101_2021.dbo.OM_MODetails od ON om.MOID = od.MOID
-					left join UFDATA_101_2021.dbo.PurBillVouchs bi  on bi.iPOsID=od.MODetailsID
-					WHERE om.iVerifyStateNew = 2 AND om.cCode like CONCAT(#{code},'%')
-					GROUP BY od.csoordercode
-				) o ON s.csocode = o.csoordercode
-			) so ON so.iSOsID = shs.iSOsID
-		 LEFT JOIN UFDATA_101_2021.dbo.Vendor v ON so.supplierCode= v.cVenCode
-		 group by sh.cDefine10,sh.iExchRate,sh.cSOCode,c.cInvName, v.cVenName
+					select sbv.cDefine10 AS invoiceNum,CONVERT(varchar(50), min(sbv.dDate), 23) as outdata,sum(pbv.iQuantity) as shipQuantity,sbv.iExchRate AS exchangeRate,sbv.cSOCode AS orderNum,max(pbv.cdefine22) AS poStyleNum,max(pbv.cDefine28) AS smallPo,max(sbv.exportUnitPrice) AS exportUnitPrice,sum(sbv.exportPrice) as exportPrice,sum(sbv.rmbAmount) as rmbAmount,
+case when max(sbv.cexch_name)='人民币' then max(pbv.iOriTaxCost) else round(max(pbv.iOriTaxCost)*sbv.iExchRate,4) end as procesUnitPricermb,
+			case when max(sbv.cexch_name)='人民币' then 0 else max(pbv.iOriTaxCost) end as procesUnitPriceusd,
+				case when max(sbv.cexch_name)='人民币' then max(pbv.iOriTaxCost) else round(max(pbv.iOriTaxCost)*sbv.iExchRate,4) end * sum(pbv.iQuantity) as processCost,
+			case when max(sbv.cexch_name)='人民币' then 0 else max(pbv.iOriTaxCost) end * sum(pbv.iQuantity) as processCostUsd,
+			max(v.cVenName) AS processUnit
 
+from
+(select pbv.cDefine10,pbvs.cInvCode,pbvs.cFree1,pbvs.cFree2,pbv.cBusType,sum(pbvs.iPBVQuantity) as iQuantity,ommo.ccode,max(sd.cdefine22) as cdefine22,max(sd.cdefine28) as cdefine28,max(pbvs.iOriTaxCost) as iOriTaxCost,ommo.cVenCode as cVenCode
+from UFDATA_101_2021.dbo.PurBillVouchs pbvs left join UFDATA_101_2021.dbo.PurBillVouch pbv
+on pbv.PBVID=pbvs.PBVID
+left join UFDATA_101_2021.dbo.OM_MODetails ommos on ommos.MODetailsID=pbvs.iPOsID
+left join UFDATA_101_2021.dbo.om_momain ommo on ommo.moid=ommos.moid
+left join UFDATA_101_2021.dbo.SO_SODetails sd on sd.iSOsID = ommos.isosid
+group by pbv.cDefine10,pbvs.cInvCode,pbvs.cFree1,pbvs.cFree2,pbv.cBusType,ommo.ccode,ommo.cVenCode
+having ommo.ccode like CONCAT(#{code},'%') AND pbv.cBusType='委外加工') as pbv
+left join
+-- 根据外销发票号 加物料编码以及自由项组合计算 销售发票合计数量
+(select sbv.cDefine10,sum(sbvs.iQuantity) as iQuantity,sbvs.cInvCode,sbvs.cFree1,sbvs.cFree2,min(sbv.dDate) as dDate,max(sbv.iExchRate) as iExchRate,sbv.cSOCode as cSOCode,max(sbvs.iTaxUnitPrice) AS exportUnitPrice,sum(sbvs.iSum) as exportPrice,sum(sbvs.iNatSum) as rmbAmount,max(sbv.cexch_name) as cexch_name
+from UFDATA_101_2021.dbo.SaleBillVouchs sbvs  left join UFDATA_101_2021.dbo.SaleBillVouch sbv on   sbv.SBVID=sbvs.SBVID
+group by  sbv.cDefine10,sbvs.cInvCode,sbvs.cFree1,sbvs.cFree2,sbv.cSOCode
+) as sbv on sbv.cInvCode=pbv.cInvCode and sbv.cFree1=pbv.cFree1 and sbv.cFree2=pbv.cFree2 and pbv.iQuantity=sbv.iQuantity -- 自由项+合计数量做匹配
+LEFT JOIN UFDATA_101_2021.dbo.Vendor v ON pbv.cVenCode= v.cVenCode
+GROUP BY sbv.cDefine10,sbv.iExchRate,sbv.cSOCode
 
 		 union all
 

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

@@ -234,7 +234,17 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
         }
 
         /*查询U8数据 面料*/
-        List<SyCostAllocationFabric> list3 = syCostAllocationFabricMapper.queryByCostFabric(plannum);
+        List<SyCostAllocationFabric> list3 = null;
+        List<SyCostAllocationIngredient> list4 = null;
+
+        list3 = syCostAllocationFabricMapper.queryByCostFabric2(plannum);
+        if(list3.size()==0){
+            list3 = syCostAllocationFabricMapper.queryByCostFabric(plannum);
+            list4 = syCostAllocationIngredientMapper.queryByCostIngredient(plannum);
+        }else{
+            list3 = syCostAllocationFabricMapper.queryByCostFabric1(plannum);
+            list4 = syCostAllocationIngredientMapper.queryByCostIngredient1(plannum);
+        }
 
         for (int i=0;i<list3.size();i++) {
 
@@ -371,7 +381,7 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
 
 
         //查询U8数据 辅料
-        List<SyCostAllocationIngredient> list4 = syCostAllocationIngredientMapper.queryByCostIngredient(plannum);
+
         for (int i=0;i<list4.size();i++) {
             SyCostAllocationIngredient Ingredient = list4.get(i);
             //若转入数量不为0则给转入数据对象赋值
@@ -379,9 +389,9 @@ public class SyCostAllocationServiceImpl extends ServiceImpl<SyCostAllocationMap
                 List<SyTransfer> transferlist  = syCostAllocationIngredientMapper.queryTransferByIngredient(plannum,Ingredient.getGoodsName());
                 Ingredient.setSyTransfers(transferlist);
             }
-            //若转入数量不为0则给转入数据对象赋值
+            //若剩余数量不为0则给转入数据对象赋值
             if(Ingredient.getIngredientsRemainingQuantity()!=null){
-                if(0!=Ingredient.getIngredientsRemainingQuantity().compareTo(BigDecimal.ZERO)){
+                if(Ingredient.getIngredientsRemainingQuantity().compareTo(BigDecimal.ZERO)>0){
                     List<SyRemaining> remaininglist  = syCostAllocationIngredientMapper.queryRemainingByIngredient(plannum,Ingredient.getGoodsName());
                     Ingredient.setSyRemaining(remaininglist);
                 }

+ 1 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/documents/seclarationElements/mapper/xml/SyDeclarationElementsMapper.xml

@@ -24,7 +24,7 @@
         left join sy_packing_list_fabric b
         on a.sy_packing_list_fabric_id = b.id
         set a.elements_Id = #{newElmentId}
-        where a.elements_Id = #{elmentId} and a.del_flag = '0' and b.push_State = '0'
+        where a.elements_Id = #{elmentId} and a.del_flag = '0' and b.push_State != '1'
 
 
     </update>