| 
					
				 | 
			
			
				@@ -7225,7 +7225,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         cntrno.setfVoy(tCntrno.getfVoy()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         cntrno.setfUpdateaddress(aLong.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         cntrno.setfOpctnstatus(fOpCTnsTaTus); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        cntrno.setfCntrstatus(warehousebillsCntr.getfCntrstatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cntrno.setfUpdateef(warehousebillsCntr.getfCntrstatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         tCntrnoMapper.updateTCntrnoByfNo(cntrno); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         //保存历史信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         TCntrno cntrnoById = tCntrnoMapper.selectTCnTrNoByfNo(warehousebillsCntritem.getfCntrno()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -8835,5 +8835,159 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return AjaxResult.success("转船成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public AjaxResult turnVoyage(TWarehouseBills tWarehouseBills, LoginUser loginUser) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TVoyage voyage = tVoyageMapper.selectTVoyageByFid(tWarehouseBills.getfVoyid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (voyage == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RuntimeException("未找到航次信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TVessel tVessel = tVesselMapper.selectTVesselById(tWarehouseBills.getfVslid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (tVessel == null){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RuntimeException("未找到船信息"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (Long aLong : tWarehouseBills.getOrderList()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 1.查询原订单信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 2.判断原订单是否卸船 否不能转船 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(aLong); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (warehouseBills.getfArrivalStatus().longValue() != 2L) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new RuntimeException("提单号" + warehouseBills.getfMblno() + "的订单状态未到港卸货不能转船"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 3.复制原订单数据生成新的订单 系统编号重新生成 新订单提单号为转配船+原提单号 船名航次为选择转船的船名航次 配船状态回复默认值 未配船 离港出运状态回复默认值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWarehouseBills bills = new TWarehouseBills(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BeanUtils.copyProperties(warehouseBills, bills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String billNo = billnoSerialServiceImpl.getBillNo("SE", DateUtils.getNowDate()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfBillno(billNo); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfMblno("转航次" + bills.getfMblno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setCreateBy(loginUser.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setUpdateBy(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setUpdateTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfVslid(tWarehouseBills.getfVslid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfVoyid(tWarehouseBills.getfVoyid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfItemstatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfItemsStatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfUpdeteStatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfSubmitUpdate(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfDeleteStatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfCargoPlanning(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfArrivalStatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfDismountStatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfDue(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfPay(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfCaregoStatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfShipTwo(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bills.setfVoyTwo(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBillsMapper.insertTWarehousebills(bills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 4.复制原订单货物信息 和箱信息到新的订单信息上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //货物信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWarehousebillsCntr warehousebillsCntr = new TWarehousebillsCntr(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehousebillsCntr.setfPid(aLong); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TWarehousebillsCntr> tWarehousebillsCntrs = tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(warehousebillsCntr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isNotEmpty(tWarehousebillsCntrs)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (TWarehousebillsCntr tWarehousebillsCntr : tWarehousebillsCntrs) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntr.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntr.setfPid(bills.getfId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntr.setCreateBy(loginUser.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntr.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntr.setUpdateBy(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntr.setUpdateTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntrMapper.insertTWarehousebillsCntr(tWarehousebillsCntr); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //配箱信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWarehousebillsCntritems warehousebillsCntritems = new TWarehousebillsCntritems(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehousebillsCntritems.setfPid(aLong); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TWarehousebillsCntritems> tWarehousebillsCntritems = tWarehousebillsCntritemsMapper.selectTWarehousebillsCntritemsList(warehousebillsCntritems); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isNotEmpty(tWarehousebillsCntritems)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (TWarehousebillsCntritems tWarehousebillsCntritem : tWarehousebillsCntritems) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritem.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritem.setfPid(bills.getfId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritem.setCreateBy(loginUser.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritem.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritem.setUpdateBy(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritem.setUpdateTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsCntritemsMapper.insertTWarehousebillsCntritems(tWarehousebillsCntritem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //修改箱动态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TCntrno cntrno = new TCntrno(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cntrno.setfNo(tWarehousebillsCntritem.getfCntrno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cntrno.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cntrno.setUpdateBy(loginUser.getUser().getUserName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cntrno.setfUpdatetime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cntrno.setfVsl(tVessel.getfName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cntrno.setfVoy(voyage.getfNo()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tCntrnoMapper.updateTCntrnoByfNo(cntrno); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    //保存历史信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TCntrno cntrnoById = tCntrnoMapper.selectTCnTrNoByfNo(tWarehousebillsCntritem.getfCntrno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (cntrnoById == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if ("T".equals(cntrnoById.getfStatus()) || "正常".equals(cntrnoById.getfStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cntrnoById.setfStatus("T"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        cntrnoById.setfStatus("F"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    TCntrtracking tCntrtracking = new TCntrtracking(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    BeanUtils.copyProperties(cntrnoById, tCntrtracking); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tCntrtracking.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tCntrtracking.setfVoy(voyage.getfNo());//航次 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tCntrtracking.setfVsl(tVessel.getfName());//船名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tCntrtrackingMapper.insertTCntrtracking(tCntrtracking); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 5.复制原订单的中付费的付费地点为原订单目的港的应付费用 费用状态为录入 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //应付信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TWarehousebillsfees tWarehousebillsfees = new TWarehousebillsfees(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehousebillsfees.setfPid(aLong); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehousebillsfees.setfDc("C"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehousebillsfees.setfAddress(warehouseBills.getfDestportid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TWarehousebillsfees> warehousebillsfeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isNotEmpty(warehousebillsfeesList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (TWarehousebillsfees warehousebillsfees : warehousebillsfeesList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfPid(bills.getfId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setCreateBy(loginUser.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setCreateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setUpdateBy(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setUpdateTime(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfReviewDate(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfBillstatus(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfStatementNo(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfAccamount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfAccamountDate(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfStlamountNo(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfStlamountDate(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfStlamount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfInvnos(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfInvamount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfAskamount(BigDecimal.ZERO); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfees.setfMblno(bills.getfMblno()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsfeesMapper.insertTWarehousebillsfees(warehousebillsfees); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 6.修改原订单的信息将本次转船的船名航次赋值到原订单的第二次转船的船名航次或者第三次转船的船名航次上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBills.setfShipTwo(tWarehouseBills.getfVslid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBills.setfVoyTwo(tWarehouseBills.getfVoyid()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBills.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            warehouseBills.setUpdateBy(loginUser.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tWarehouseBillsMapper.updateKaHeOrder(warehouseBills); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 7.获取原订单的应付费用中目的港的费用将单价和金额转为负数然后保存到原订单的应付费用上 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CollectionUtils.isNotEmpty(warehousebillsfees)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (TWarehousebillsfees warehousebillsfee : warehousebillsfees) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfee.setfId(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfee.setfUnitprice(warehousebillsfee.getfUnitprice().subtract(warehousebillsfee.getfUnitprice().multiply(new BigDecimal(2)))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfee.setfAmount(warehousebillsfee.getfAmount().subtract(warehousebillsfee.getfAmount().multiply(new BigDecimal(2)))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfee.setUpdateBy(loginUser.getUsername()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    warehousebillsfee.setUpdateTime(new Date()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tWarehousebillsfeesMapper.insertTWarehousebillsfees(warehousebillsfee); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return AjaxResult.success("转航次成功"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |