Ver código fonte

面料损耗更新

fenghaifu 2 anos atrás
pai
commit
87965d666f

+ 1 - 0
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -93,6 +93,7 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
         filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
         filterChainDefinitionMap.put("/openApi/**", "anon");//openApi接口排除
+        filterChainDefinitionMap.put("/report/FabricLoss/getFile", "anon");//图片预览 &下载文件不限制token
 
 
         filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码

+ 4 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/entity/FabricPoOrderOut.java

@@ -39,4 +39,8 @@ public class FabricPoOrderOut {
 	String cColor;
 	@ApiModelProperty(value = "批号")
 	String cBatch;
+	@ApiModelProperty(value = "仓库编码")
+	String cWhCode;
+	@ApiModelProperty(value = "仓库名称")
+	String cWhName;
 }

+ 10 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/mapper/FabricLossMapper.java

@@ -139,4 +139,14 @@ public interface FabricLossMapper extends BaseMapper<FabricLoss> {
 	// 委外订单附件
 	@DS("multi-three")
 	List<AccessorItem> getOmAccList(@Param("code")String code);
+	// 获取采购入库仓库库存
+	@DS("multi-three")
+	List<FabricPoOrderOut> getPurchaseStockList(@Param("code")String code);
+
+	// 获取委外订单国内出库数量
+	@DS("multi-three")
+	List<FabricPoOrderOut> getOmInGnOutList(@Param("invIdList")List<String> invIdList);
+	// 获取委外订单国内出库数量
+	@DS("multi-three")
+	List<FabricPoOrderOut> getOmInGwOutList(@Param("invIdList")List<String> invIdList);
 }

+ 47 - 7
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/mapper/xml/FabricLossMapper.xml

@@ -359,7 +359,7 @@
 	</select>
 	<!--获取本次采购入库单,含发票和结算数据-->
 	<select id="getPurchaseInList" resultType="org.jeecg.modules.report.entity.FabricPoOrderIn">
-		select a.cCode,a.cBusType,b.cInvCode,b.cFree1 as cColor,b.cBatch,b.iQuantity,e.cInvName,
+		select a.cCode,a.cBusType,b.cInvCode,isnull(b.cFree1,'') as cColor,b.cBatch,b.iQuantity,e.cInvName,
 		isnull((select sum(iPBVQuantity ) from PurBillVouchs x where x.RdsId =b.autoid),0) as iQuantityInvoice,
 		isnull(isnull((select sum(iSum)/sum(iPBVQuantity ) from PurBillVouchs  x where x.RdsId =b.autoid),b.iSum/b.iQuantity),0) as iPrice,
 		isnull((select sum(iSVQuantity) from PurSettleVouchs  x where x.iRdsID=b.autoid),0) as iQuantitySettle
@@ -508,17 +508,17 @@
 		comcode not like CONCAT(#{code},'%')
 		and (cInvCode+isnull(cFree1,'')+isnull(cbatch,'') in (
 			select b.cinvcode+isnull(b.cfree1,'')+isnull(b.cbatch,'') from RdRecords01 b
-			inner join OM_MODetails  c on b.iOMoDID=c.MODetailsID
-			inner join om_momain d on c.MOID =d.MOID
-			where d.ccode like CONCAT(#{code},'%')
+			inner join PO_Podetails  c on b.iposid=c.id
+			inner join PO_Pomain d on c.POID =d.POID
+			where d.cPOID like CONCAT(#{code},'%')
 		)
 		or cInvCode+isnull(cFree1,'')+isnull(cbatch,'') in (
 			select cInvCode2+isnull(cColor2,'')+isnull(cAVBatch2,'') from VIEW_FabricLoss_AssemVouchs where
 				cInvCode+isnull(cColor,'')+isnull(cAVBatch,'') in (
 				select b.cinvcode+isnull(b.cfree1,'')+isnull(b.cbatch,'') from RdRecords01 b
-				inner join OM_MODetails  c on b.iOMoDID=c.MODetailsID
-				inner join om_momain d on c.MOID =d.MOID
-				where d.ccode like CONCAT(#{code},'%')
+				inner join PO_Podetails  c on b.iposid=c.id
+				inner join PO_Pomain d on c.POID =d.POID
+				where d.cPOID like CONCAT(#{code},'%')
 		)
 		)
 		)
@@ -624,6 +624,7 @@
 		AND a.cCode LIKE CONCAT(#{code},'%')
 		group by b.MODetailsID,
 			 d.cInvCode,z.cInvName,d.cFree1,d.cBatch
+			 having sum(d.iQuantity)>0
 	</select>
 	<!-- 获取委外订单出库物料的入库物料信息:包含采购入库、委外入库 -->
 	<select id="getOmRowInList" resultType="map">
@@ -778,4 +779,43 @@
 		where f.vouchertypeid='OM01'
 			and a.cCode like CONCAT(#{code},'%')
 	</select>
+	<!-- 获取采购入库仓库库存 -->
+	<select id="getPurchaseStockList" resultType="org.jeecg.modules.report.entity.FabricPoOrderOut">
+		select a.cWhCode,b.cWhName ,a.cInvCode ,isnull(a.cFree1,'') as cColor ,isnull(a.cBatch,'') as cBatch ,a.iQuantity
+		from CurrentStock a inner join Warehouse b on a.cWhCode=b.cWhCode
+		where
+			a.iquantity>0 and
+			a.cinvcode+isnull(a.cfree1,'')+isnull(a.cBatch,'') in(
+				select r.cinvcode+isnull(r.cfree1,'')+isnull(r.cBatch,'')
+				from PO_Pomain o
+				inner join PO_Podetails p on o.POID  =p.POID
+				inner join Inventory q on p.cInvCode=q.cInvCode
+				inner join RdRecords01 r on r.iposid=p.id
+				where o.cPOID like CONCAT(#{code},'%')
+				and (q.cInvCCode LIKE '01%'
+				or q.cInvCCode LIKE '02%'
+				or q.cInvCCode LIKE '03%'
+				or q.cInvCCode LIKE '04%')
+		)
+	</select>
+	<!-- 获取委外订单国内出库数量 -->
+	<select id="getOmInGnOutList" resultType="org.jeecg.modules.report.entity.FabricPoOrderOut">
+		select b.cInvCode,b.cFree1 as cColor,b.cBatch,b.iQuantity from rdrecord09 a inner join rdrecords09 b
+		on a.id=b.id where a.cbustype='调拨出库'
+		and b.cinvCode+isnull(cfree1,'')+isnull(cbatch,'') in
+		<foreach  item="item" collection="invIdList" index="index"  open="(" separator="," close=")">
+			#{item}
+		</foreach>
+
+	</select>
+	<!-- 获取委外订单国外出库数量 -->
+	<select id="getOmInGwOutList" resultType="org.jeecg.modules.report.entity.FabricPoOrderOut">
+		select b.cInvCode,b.cFree1 as cColor,b.cBatch,b.iQuantity from rdrecord32  a inner join rdrecords32 b
+		on a.id=b.id
+		where b.cinvCode+isnull(cfree1,'')+isnull(cbatch,'') in
+		<foreach  item="item" collection="invIdList" index="index"  open="(" separator="," close=")">
+			#{item}
+		</foreach>
+		
+	</select>
 </mapper>

+ 76 - 11
jeecg-boot-module-system/src/main/java/org/jeecg/modules/report/service/impl/FabricLossServiceImpl.java

@@ -33,6 +33,7 @@ import org.jeecg.modules.system.vo.SysUserDepVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -67,6 +68,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @return
 	 */
 	@Override
+	@Transactional(propagation = Propagation.NOT_SUPPORTED)
 	public FabricLoss getFabricLossData(String code) {
 		if (oConvertUtils.isNotEmpty(code)){
 			FabricLoss ret = new FabricLoss();
@@ -170,6 +172,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 			}
 			// 采购入库被其他委外订单使用的信息
 			List<FabricPoOrderOut> fabricPoOrderOutList = fabricLossMapper.getPoOrderInToOther(code);
+			// 采购入库仓库库存
+			List<FabricPoOrderOut> poOrderStockList = fabricLossMapper.getPurchaseStockList(code);
 			// 采购订单设置分配数量、委外供应商、余纱、采购损耗
 			for (FabricPoOrder fabricPoOrder : fabricPoOrderList){
 				// 获取采购形态转换物料
@@ -247,9 +251,15 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					}
 					item.setCPlanCode(cCode.substring(index1,index2-1));
 				}
-				
+				// 设置仓库库存
+				List<FabricPoOrderOut> findPoOrderStockList = poOrderStockList.stream().filter(e->
+						fabricPoOrder.getCInvCode().equals(e.getCInvCode()) &&
+								oConvertUtils.getString(fabricPoOrder.getCColor()).equals(e.getCColor())).collect(Collectors.toList());
+				findFabricPoOrderOutList.addAll(findPoOrderStockList);
+
 				fabricPoOrder.setFabricPoOrderOutList(findFabricPoOrderOutList);
 			}
+
 			// 采购入库-来源余纱
 			/*
 			List<FabricPoOrderOut> fabricPoOrderTempList = fabricLossMapper.getPurchaseListOtherPurInList(code);
@@ -433,7 +443,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 			// 计算入金额
 			Double costInTotal = fabricCostInvoiceList.stream().mapToDouble(FabricCostInvoice::getIMoney).sum();
 			// 转出成本
-			d = oConvertUtils.getDouble(fabricLossMapper.getOmInToOtherMoney(code), 0) + getOutCost(ret.getFabricPoOrderList(), fabricOMOrderList1);
+			d = getOutCost(ret.getFabricPoOrderList(), fabricOMOrderListGn, fabricOMOrderListGw);
 			fabricCostInvoice = new FabricCostInvoice();
 			fabricCostInvoice.setCVCName("转出成本");
 			fabricCostInvoice.setIMoney(d);
@@ -535,7 +545,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param code - 计划号
 	 * @return
 	 */
-	List<FabricOMOrder> setFabricOMOrderOutDetail(List<FabricOMOrder> fabricOMOrderList, String code){
+	private List<FabricOMOrder> setFabricOMOrderOutDetail(List<FabricOMOrder> fabricOMOrderList, String code){
 		// 获取委外订单行id,入库物料编号+颜色,处理费用,入库数量
 		List<Map<String,Object>> rowInfoList = fabricLossMapper.getOmRowInfoList(code);
 		// 获取委外订单行id,出库物料信息,出库数量
@@ -568,7 +578,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param code - 计划号
 	 * @return
 	 */
-	List<FabricOMOrder> setFabricOMOrderInDetail(List<FabricOMOrder> fabricOMOrderList, String code){
+	private List<FabricOMOrder> setFabricOMOrderInDetail(List<FabricOMOrder> fabricOMOrderList, String code){
 		List<FabricMoOrderRK> fabricMoOrderRKList = fabricLossMapper.getOmInDetailList(code);
 
 		for (FabricOMOrder fabricOMOrder : fabricOMOrderList){
@@ -732,7 +742,7 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	 * @param rowInListWithAV - 形态转换前的材料入库信息
 	 * @return
 	 */
-	List<FabricMoOrderCK> getFabricMoOrderCKList(List<Map<String,Object>> rowInfoList,
+	private List<FabricMoOrderCK> getFabricMoOrderCKList(List<Map<String,Object>> rowInfoList,
 	                                             List<FabricMoOrderCK> rowOutList,
 	                                             List<Map<String,Object>> rowInList,
 	                                             List<Map<String,Object>> rowInListWithAV){
@@ -954,10 +964,11 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 	/**
 	 * 根据采购入库详情,委外订单详情,获取转出成本。(入库数量-出库数量) * 单价
 	 * @param poOrderList - 采购入库详情
-	 * @param fabricOMOrderList - 委外出入库详情
+	 * @param omOrderListGn - 委外订单国内
+	 * @param omOrderListGw - 委外订单国外
 	 * @return
 	 */
-	private Double getOutCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> fabricOMOrderList){
+	private Double getOutCost(List<FabricPoOrder> poOrderList, List<FabricOMOrder> omOrderListGn, List<FabricOMOrder> omOrderListGw){
 		// 采购出入库去掉末尾两行:来源余纱、其他入库纱
 		List<FabricPoOrder> poOrderListReal = new ArrayList<>();
 		if (poOrderList.size()>2){
@@ -994,8 +1005,8 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 				}
 			}
 		}
-		/*
-		for (FabricOMOrder item : fabricOMOrderList){
+
+		for (FabricOMOrder item : omOrderListGn){
 			List<FabricMoOrderRK> inList = item.getFabricMoOrderRKList();
 			if (oConvertUtils.listIsNotEmpty(inList)){
 				for (FabricMoOrderRK itemIn : inList){
@@ -1005,13 +1016,50 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 					formatItem.setCBatch(itemIn.getCBatch());
 					formatItem.setIQuantity(itemIn.getIQuantityIn());
 					formatItem.setIPrice(itemIn.getIPrice());
+					formatItem.setCBusType("1");        // 国内
 					allInList.add(formatItem);
 				}
 			}
-		}*/
+		}
+
+		for (FabricOMOrder item : omOrderListGw){
+			List<FabricMoOrderRK> inList = item.getFabricMoOrderRKList();
+			if (oConvertUtils.listIsNotEmpty(inList)){
+				for (FabricMoOrderRK itemIn : inList){
+					FabricPoOrderIn formatItem = new FabricPoOrderIn();
+					formatItem.setCInvCode(item.getCInvCode());
+					formatItem.setCColor(item.getCColor());
+					formatItem.setCBatch(itemIn.getCBatch());
+					formatItem.setIQuantity(itemIn.getIQuantityIn());
+					formatItem.setIPrice(itemIn.getIPrice());
+					formatItem.setCBusType("2");        // 国外
+					allInList.add(formatItem);
+				}
+			}
+		}
+
+		List<String> invIdGnList = new ArrayList<>();// 国内入库物料编码
+		List<String> invIdGwList = new ArrayList<>();// 国外入库物料编码
+		for (FabricOMOrder omOrder : omOrderListGn){
+			List<FabricMoOrderRK> omRkList = omOrder.getFabricMoOrderRKList();
+			for (FabricMoOrderRK rkItem : omRkList){
+				invIdGnList.add(omOrder.getCInvCode()+omOrder.getCColor()+rkItem.getCBatch());
+			}
+		}
+		for (FabricOMOrder omOrder : omOrderListGw){
+			List<FabricMoOrderRK> omRkList = omOrder.getFabricMoOrderRKList();
+			for (FabricMoOrderRK rkItem : omRkList){
+				invIdGwList.add(omOrder.getCInvCode()+omOrder.getCColor()+rkItem.getCBatch());
+			}
+		}
+		List<FabricPoOrderOut> invOutGnList = fabricLossMapper.getOmInGnOutList(invIdGnList);   //国内出库数量
+		List<FabricPoOrderOut> invOutGwList = fabricLossMapper.getOmInGwOutList(invIdGwList);   //国外出库数量
 		// 扣减出库数量
+		List<FabricOMOrder> omOrderListAll = new ArrayList<>();
+		omOrderListAll.addAll(omOrderListGn);
+		omOrderListAll.addAll(omOrderListGw);
 		for (FabricPoOrderIn itemIn : allInList){
-			for (FabricOMOrder item : fabricOMOrderList){
+			for (FabricOMOrder item : omOrderListAll){
 				List<FabricMoOrderCK> outList = item.getFabricMoOrderCKList();
 				if (oConvertUtils.listIsNotEmpty(outList)){
 					Double dOut = outList.stream().filter(e->
@@ -1019,6 +1067,23 @@ public class FabricLossServiceImpl extends ServiceImpl<FabricLossMapper, FabricL
 							e.getCColorOut().equals(itemIn.getCColor()) &&
 							e.getCBatchOut().equals(itemIn.getCBatch())).mapToDouble(FabricMoOrderCK::getIQuantity).sum();
 					itemIn.setIQuantity(itemIn.getIQuantity()-dOut);
+				}else{
+					List<FabricPoOrderOut> useOutList = null;
+					// 国内
+					if ("1".equals(itemIn.getCBusType())){
+						useOutList = invOutGnList;
+					}
+					// 国外
+					else if ("2".equals(itemIn.getCBusType())){
+						useOutList = invOutGwList;
+					}
+					if (useOutList != null){
+						Double dOut = useOutList.stream().filter(e->
+								e.getCInvCode().equals(itemIn.getCInvCode()) &&
+										e.getCColor().equals(itemIn.getCColor()) &&
+										e.getCBatch().equals(itemIn.getCBatch())).mapToDouble(FabricPoOrderOut::getIQuantity).sum();
+						itemIn.setIQuantity(itemIn.getIQuantity()-dOut);
+					}
 				}
 			}
 		}