|  | @@ -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("转航次成功");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |