| 
					
				 | 
			
			
				@@ -935,8 +935,119 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return AjaxResult.success(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 撤销入账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param warehouseBills      主表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param warehousebillsitems 明细 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param whgenleg            附件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param loginUser           当前登录人 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param billsType           状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @return 结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Transactional 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Long fPid = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AjaxResult.error("未找到主表信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return AjaxResult.error("未找到入账信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fPid = tWarehousebills.getfId(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (StringUtils.isNotEmpty(warehousebillsitemsList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int i = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (TWarehousebillsitems wb : warehousebillsitemsList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 查询库存总账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if ("SJRKRevoke".equals(billsType)) { // 撤销 入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { // 撤销数>结余数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (StringUtils.isNotNull(tWhgenle)) { // 非空 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return AjaxResult.error("第" + i + "行未查询到库存信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //  1、新货权方撤销入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 查询库存总账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebills.setfCorpid(fTocorpid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //  2、原货权方撤销出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 查询库存总账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebills.setfCorpid(fCorpid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销 HQZYRevoke 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //  1、新货权方撤销入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 查询库存总账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebills.setfCorpid(fTocorpid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //  2、原货权方撤销出库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    // 查询库存总账 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebills.setfCorpid(fCorpid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 查询所有库存明细 修改仓库主表状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int notInStorage = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int Stored = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tWarehousebillsitems.setfPid(fPid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (TWarehousebillsitems item : warehousebillsitemsList1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (item.getfBillstatus() == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                notInStorage++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (item.getfBillstatus().equals("6")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                Stored++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else if (item.getfBillstatus().equals("1")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                notInStorage++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 录入库存明细整体状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TWarehouseBills warehouseBill = new TWarehouseBills(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        warehouseBill.setfId(fPid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (Objects.equals(Stored, 0)) { // 未入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBill.setfItemsStatus("1"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (Objects.equals(notInStorage, 0)) { // 已入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBill.setfItemsStatus("6"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { // 有已入库、有未入库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBill.setfItemsStatus("2"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return AjaxResult.success(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |