|  | @@ -1,5 +1,7 @@
 | 
	
		
			
				|  |  |  package com.ruoyi.orderPlan.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import cn.hutool.core.bean.BeanUtil;
 | 
	
		
			
				|  |  | +import cn.hutool.core.util.StrUtil;
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  |  import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  |  import com.ruoyi.basicData.domain.TCorps;
 | 
	
	
		
			
				|  | @@ -24,6 +26,8 @@ import com.ruoyi.warehouseBusiness.domain.BillnoDel;
 | 
	
		
			
				|  |  |  import com.ruoyi.warehouseBusiness.mapper.BillnoDelMapper;
 | 
	
		
			
				|  |  |  import com.ruoyi.warehouseBusiness.service.impl.BillnoSerialServiceImpl;
 | 
	
		
			
				|  |  |  import lombok.extern.slf4j.Slf4j;
 | 
	
		
			
				|  |  | +import org.slf4j.Logger;
 | 
	
		
			
				|  |  | +import org.slf4j.LoggerFactory;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
	
		
			
				|  | @@ -45,6 +49,8 @@ import java.util.Map;
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    final Logger logger = LoggerFactory.getLogger(FtmsorderbillscarsServiceImpl.class);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private TGoodsMapper tGoodsMapper;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -595,6 +601,41 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 自动配载
 | 
	
		
			
				|  |  | +     * @param sourceId 来源ID,待插入数据ID,执行逻辑:插入数据,单据类型为分单,主单号为原来车辆的运单号
 | 
	
		
			
				|  |  | +     * @param targetId 目标ID,待处理数据ID,执行逻辑:单据类型 变为主单
 | 
	
		
			
				|  |  | +     * @return dongyongwei 20210713
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional
 | 
	
		
			
				|  |  | +    public AjaxResult autoStowage(Long sourceId, Long targetId) {
 | 
	
		
			
				|  |  | +        //获取来源单据
 | 
	
		
			
				|  |  | +        Ftmsorderbillscars source = ftmsorderbillscarsMapper.selectftmsorderbillscarsById(sourceId);
 | 
	
		
			
				|  |  | +        //获取目标单据
 | 
	
		
			
				|  |  | +        Ftmsorderbillscars target = ftmsorderbillscarsMapper.selectftmsorderbillscarsById(targetId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //处理目标单据单据类型变更为主单
 | 
	
		
			
				|  |  | +        target.setBillKind("MM");
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsMapper.updateftmsorderbillscars(target);
 | 
	
		
			
				|  |  | +        //执行逻辑:插入数据,单据类型为分单,主单号为原来车辆的运单号
 | 
	
		
			
				|  |  | +        Ftmsorderbillscars newTarget = new Ftmsorderbillscars();
 | 
	
		
			
				|  |  | +        //原数据先复制给待插入数据
 | 
	
		
			
				|  |  | +        BeanUtil.copyProperties(source,newTarget);
 | 
	
		
			
				|  |  | +        //分单逻辑
 | 
	
		
			
				|  |  | +        newTarget.setBillKind("MH");
 | 
	
		
			
				|  |  | +        //主单号为原来车辆的运单号
 | 
	
		
			
				|  |  | +        newTarget.setOrderNo(source.getmBillNo());
 | 
	
		
			
				|  |  | +        //关联目标主表ID
 | 
	
		
			
				|  |  | +        newTarget.setpId(target.getpId());
 | 
	
		
			
				|  |  | +        //orgID
 | 
	
		
			
				|  |  | +        newTarget.setOrgId(target.getOrgId());
 | 
	
		
			
				|  |  | +        //执行完以上自动逻辑进行插入
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsMapper.insertftmsorderbillscars(newTarget);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return AjaxResult.success("配载成功");
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       *  查询陆运台账列表信息
 | 
	
		
			
				|  |  |       * @param vehicleLedgerExcel    查询条件
 | 
	
		
			
				|  |  |       * @return  结果
 | 
	
	
		
			
				|  | @@ -798,6 +839,31 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional
 | 
	
		
			
				|  |  |      public AjaxResult vehicleArrangement(String status, Ftmsorderbillscars ftmsorderbillscars, LoginUser loginUser) {
 | 
	
		
			
				|  |  | +        //新增逻辑  20210714 dongyongwei
 | 
	
		
			
				|  |  | +        // 配载常规提交
 | 
	
		
			
				|  |  | +        if ("addStowage".equals(status)) {
 | 
	
		
			
				|  |  | +            AjaxResult result = vehicleChangeAdd(ftmsorderbillscars, loginUser);
 | 
	
		
			
				|  |  | +            String ajaxCode = result.get("code").toString();
 | 
	
		
			
				|  |  | +            if ("500".equals(ajaxCode)) {
 | 
	
		
			
				|  |  | +                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //新增更改配载过来的单据的状态为:主单,字典:直单NN主单MM从单MH 20210714
 | 
	
		
			
				|  |  | +            //配载过来的单据的主单号,实际为来之前的单据的运单号
 | 
	
		
			
				|  |  | +            String orderNo = ftmsorderbillscars.getmBillNo();
 | 
	
		
			
				|  |  | +            Ftmsorderbillscars ftmsorderbillscarsBefore = ftmsorderbillscarsMapper.selectftmsorderbillscarsByOrderNo(orderNo);
 | 
	
		
			
				|  |  | +            ftmsorderbillscarsBefore.setBillKind("MM");
 | 
	
		
			
				|  |  | +            ftmsorderbillscarsMapper.updateftmsorderbillscars(ftmsorderbillscarsBefore);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //新增逻辑20210707 dongyongwei,
 | 
	
		
			
				|  |  | +            //更改订单状态为
 | 
	
		
			
				|  |  | +            //5派车中 调度量和派车量比较 调度量大于0 派车<>0   调度量>派车
 | 
	
		
			
				|  |  | +            //6待回单 调度量和派车量比较 调度量大于0 调度量=派车
 | 
	
		
			
				|  |  | +            ftmsorderbillsService.setFtmsorderbillsBillStatus(ftmsorderbillscars.getOrgId(),5L);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            return result;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // 常规提交
 | 
	
		
			
				|  |  |          if ("add".equals(status)) {
 | 
	
		
			
				|  |  |              AjaxResult result = vehicleChangeAdd(ftmsorderbillscars, loginUser);
 | 
	
	
		
			
				|  | @@ -828,6 +894,22 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
 | 
	
		
			
				|  |  |              ftmsorderbillsService.setFtmsorderbillsBillStatus(ftmsorderbillscars.getOrgId(),5L);
 | 
	
		
			
				|  |  |              return result;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 配载撤销 20210714 dongyongwei
 | 
	
		
			
				|  |  | +        if ("revokeStowage".equals(status)) {
 | 
	
		
			
				|  |  | +            AjaxResult result = vehicleChangeRevokeStowage(ftmsorderbillscars, loginUser);
 | 
	
		
			
				|  |  | +            String ajaxCode = result.get("code").toString();
 | 
	
		
			
				|  |  | +            if ("500".equals(ajaxCode)) {
 | 
	
		
			
				|  |  | +                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //新增逻辑20210707 dongyongwei,
 | 
	
		
			
				|  |  | +            //更改订单状态为
 | 
	
		
			
				|  |  | +            //5派车中 调度量和派车量比较 调度量大于0 派车<>0   调度量>派车
 | 
	
		
			
				|  |  | +            //6待回单 调度量和派车量比较 调度量大于0 调度量=派车
 | 
	
		
			
				|  |  | +            ftmsorderbillsService.setFtmsorderbillsBillStatus(ftmsorderbillscars.getOrgId(),5L);
 | 
	
		
			
				|  |  | +            return result;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          // 撤销
 | 
	
		
			
				|  |  |          if ("revoke".equals(status)) {
 | 
	
		
			
				|  |  |              AjaxResult result = vehicleChangeRevoke(ftmsorderbillscars, loginUser);
 | 
	
	
		
			
				|  | @@ -936,7 +1018,11 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
 | 
	
		
			
				|  |  |          Date time = new Date();
 | 
	
		
			
				|  |  |          String billNo = billnoSerialServiceImpl.getSerialNumber("SJLSH", time);
 | 
	
		
			
				|  |  |          ftmsorderbillscars.setOrderNo(billNo);
 | 
	
		
			
				|  |  | -        ftmsorderbillscars.setmBillNo(billNo);
 | 
	
		
			
				|  |  | +        //新增配载逻辑 20210714 dongyongwei
 | 
	
		
			
				|  |  | +        //如果配载过来的主单号存在,则直接赋值,反之,走之前的逻辑
 | 
	
		
			
				|  |  | +        if(StrUtil.isBlank(ftmsorderbillscars.getmBillNo())){
 | 
	
		
			
				|  |  | +            ftmsorderbillscars.setmBillNo(billNo);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          ftmsorderbillscars.setMblno(tmsorderbills.getMblno());
 | 
	
		
			
				|  |  |          ftmsorderbillscars.setOrgId(ftmsorderbillsplans.getOrgId());
 | 
	
		
			
				|  |  |          if (ftmsorderbillsplansMapper.updateftmsorderbillsplans(ftmsorderbillsplans) <= 0) {
 | 
	
	
		
			
				|  | @@ -997,6 +1083,59 @@ public class FtmsorderbillscarsServiceImpl implements IftmsorderbillscarsService
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 单条车辆安排撤销(配载)
 | 
	
		
			
				|  |  | +     *20210714 dongyongwei
 | 
	
		
			
				|  |  | +     * @return 结果
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Transactional
 | 
	
		
			
				|  |  | +    public AjaxResult vehicleChangeRevokeStowage(Ftmsorderbillscars ftmsorderbillscars, LoginUser loginUser) {
 | 
	
		
			
				|  |  | +        //先取出真正需要撤销的单据
 | 
	
		
			
				|  |  | +        //运单号,也就是配载单的主单号
 | 
	
		
			
				|  |  | +        String orderNo = ftmsorderbillscars.getOrderNo();
 | 
	
		
			
				|  |  | +        Ftmsorderbillscars ftmsorderbillscarsQuery = new Ftmsorderbillscars();
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsQuery.setmBillNo(orderNo);
 | 
	
		
			
				|  |  | +        List<Ftmsorderbillscars> ftmsorderbillscarsList = ftmsorderbillscarsMapper.selectftmsorderbillscarsList(ftmsorderbillscarsQuery);
 | 
	
		
			
				|  |  | +        //取最后一条配载的记录进行逻辑操作
 | 
	
		
			
				|  |  | +        Ftmsorderbillscars ftmsorderbillscarsStowage = ftmsorderbillscarsList.get(ftmsorderbillscarsList.size()-1);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String, Object> map = new HashMap<>();
 | 
	
		
			
				|  |  | +        // 验证司机是否产生费用,若产生的费用已经结算则拦截
 | 
	
		
			
				|  |  | +        List<Ftmsorderbillsfees> ftmsorderbillsfeesList = ftmsorderbillsfeesMapper.selectFTmsorderbillsfeesByPId(ftmsorderbillscarsStowage.getId());
 | 
	
		
			
				|  |  | +/*        if (!"NN".equals(ftmsorderbillscarsStowage.getBillKind())) {
 | 
	
		
			
				|  |  | +            return AjaxResult.error("该运单已参与配载,无法撤销");
 | 
	
		
			
				|  |  | +        }*/
 | 
	
		
			
				|  |  | +        if (ftmsorderbillsfeesList.size() != 0) {
 | 
	
		
			
				|  |  | +            for (Ftmsorderbillsfees f : ftmsorderbillsfeesList) {
 | 
	
		
			
				|  |  | +                if (StringUtils.isNotEmpty(f.getfStlamountNo())) {
 | 
	
		
			
				|  |  | +                    return AjaxResult.error("该安排车辆费用已经结算,无法撤销");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (ftmsorderbillscarsStowage.getOrderStatus() > 30) {
 | 
	
		
			
				|  |  | +            return AjaxResult.error("该安排车辆已经装卸货,无法撤回");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsStowage.setBillStatus(3L);
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsStowage.setUpdateTime(new Date());
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsStowage.setUpdateBy(loginUser.getUsername());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //执行配载逻辑:原单又变回直单,新增的这条变直单,运单号赋值给主单号
 | 
	
		
			
				|  |  | +        //新增的这条变直单,运单号赋值给主单号
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsStowage.setmBillNo(ftmsorderbillscarsStowage.getOrderNo());
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsStowage.setBillKind("NN");//直单NN主单MM从单MH
 | 
	
		
			
				|  |  | +        logger.debug("变更ftmsorderbillscarsStowage:"+ftmsorderbillscarsStowage.toString());
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsMapper.updateftmsorderbillscars(ftmsorderbillscarsStowage);
 | 
	
		
			
				|  |  | +        //原单又变回直单,保证数据完整性,通过原单的id重新获取一下整条记录
 | 
	
		
			
				|  |  | +        Ftmsorderbillscars ftmsorderbillscarsBefore = ftmsorderbillscarsMapper.selectftmsorderbillscarsById(ftmsorderbillscars.getId());
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsBefore.setBillKind("NN");
 | 
	
		
			
				|  |  | +        logger.debug("变更ftmsorderbillscarsBefore:"+ftmsorderbillscarsBefore.toString());
 | 
	
		
			
				|  |  | +        ftmsorderbillscarsMapper.updateftmsorderbillscars(ftmsorderbillscarsBefore);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        map.put("plan", ftmsorderbillsplansMapper.selectftmsorderbillsplansById(ftmsorderbillscarsStowage.getpId()));
 | 
	
		
			
				|  |  | +        map.put("cars", ftmsorderbillscarsStowage);
 | 
	
		
			
				|  |  | +        return AjaxResult.success(map);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       * 单条车辆安排撤销
 | 
	
		
			
				|  |  |       *
 | 
	
		
			
				|  |  |       * @return 结果
 |