Browse Source

凯和转航次暂存

lazhaoqian 3 years ago
parent
commit
66e3706aff

+ 14 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/shipping/transship/Transhipment.java

@@ -43,4 +43,18 @@ public class Transhipment extends BaseController {
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return tWarehousebillsService.transship(tWarehouseBills,loginUser);
     }
+    @PostMapping("/turnVoyage")
+    public AjaxResult turnVoyage(@RequestBody TWarehouseBills tWarehouseBills) {
+        if (CollectionUtils.isEmpty(tWarehouseBills.getOrderList())){
+            throw new RuntimeException("请选择要转航次的订单");
+        }
+        if (tWarehouseBills.getfVslid() == null){
+            throw new RuntimeException("请选择要转的船名");
+        }
+        if (tWarehouseBills.getfVoyid() == null){
+            throw new RuntimeException("请选择要转的航次");
+        }
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return tWarehousebillsService.turnVoyage(tWarehouseBills,loginUser);
+    }
 }

+ 2 - 2
ruoyi-admin/src/main/resources/application-druid.yml

@@ -6,8 +6,8 @@ spring:
     druid:
       # 主库数据源
       master:
-        #url: jdbc:mysql://124.70.179.5:3306/LinuxServer?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
-        url: jdbc:mysql://124.70.179.5:3306/linshi?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+        url: jdbc:mysql://124.70.179.5:3306/LinuxServer?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+        #url: jdbc:mysql://124.70.179.5:3306/linshi?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
         username: root
         password: daasan7ujm^YHN
 

+ 7 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -869,5 +869,12 @@ public interface ITWarehouseBillsService {
      * @return
      */
     AjaxResult transship(TWarehouseBills tWarehouseBills,LoginUser loginUser);
+    /**
+     * 凯和转航次
+     * @param tWarehouseBills
+     * @param loginUser
+     * @return
+     */
+    AjaxResult turnVoyage(TWarehouseBills tWarehouseBills,LoginUser loginUser);
 
 }

+ 155 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

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