Browse Source

出库申请、欠款出库添加限制:若出库车辆的销售订单中选择了上装、挂车,则需要先上装、挂车入库绑定车辆后方可提交出库申请

master
dimengzhe 4 months ago
parent
commit
f826d1865a
  1. 9
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyMapper.java
  2. 15
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyMapper.xml
  3. 108
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java
  4. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.java
  5. 7
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.xml
  6. 4
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupService.java
  7. 2
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordertrailer/BusSalesOrderTrailerMapper.java
  8. 12
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordertrailer/BusSalesOrderTrailerMapper.xml
  9. 4
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordertrailer/BusSalesOrderTrailerService.java

9
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyMapper.java

@ -30,11 +30,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.base.api.basetrailer.BaseTrailer;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleState;
import com.yxt.anrui.base.api.basevehinstall.BaseVehinstall;
import com.yxt.anrui.buscenter.api.busdeliveredapply.AppDeliveredApplyPageQuery;
import com.yxt.anrui.buscenter.api.busdeliveredapply.AppDeliveredApplyPageVo;
import com.yxt.anrui.buscenter.api.busdeliveredapply.BusDeliveredApply;
import com.yxt.anrui.buscenter.api.busdeliveredapply.BusDeliveredApplyVo;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -126,4 +129,10 @@ public interface BusDeliveredApplyMapper extends BaseMapper<BusDeliveredApply> {
int selByVinSidAndYBJ(String vinSid);
String selCustomerByBusVinSid(@Param("busVinSid") String busVinSid);
List<BaseTrailer> selectTralier(String vinSid);
BusSalesOrderVehicle selectVinNoByVehicleSid(@Param("vinSid") String vinSid, @Param("contractNo") String contractId);
List<BaseVehinstall> selectInstall(String linkNo);
}

15
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyMapper.xml

@ -218,4 +218,19 @@
ORDER BY a.createTime DESC
LIMIT 1
</select>
<select id="selectTralier" resultType="com.yxt.anrui.base.api.basetrailer.BaseTrailer">
select * from anrui_base.base_trailer where vehSid = #{vinSid}
</select>
<select id="selectVinNoByVehicleSid"
resultType="com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle">
select bv.* from bus_sales_order_vehicle bv
left join bus_sales_order bo on bo.sid = bv.salesOrderSid
where bo.contractNo = #{contractNo} and bv.linkSid = #{vinSid}
</select>
<select id="selectInstall" resultType="com.yxt.anrui.base.api.basevehinstall.BaseVehinstall">
select * from anrui_base.base_vehinstall where vinNo = #{linkNo}
</select>
</mapper>

108
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java

@ -33,10 +33,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.base.api.basemiddleman.BaseMiddlemanDetailsVo;
import com.yxt.anrui.base.api.basemiddleman.BaseMiddlemanFeign;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerDetailsVo;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerFeign;
import com.yxt.anrui.base.api.basetrailer.TrailerVo;
import com.yxt.anrui.base.api.basetrailer.TraliveredVo;
import com.yxt.anrui.base.api.basetrailer.*;
import com.yxt.anrui.base.api.basevehicle.BaseVehicle;
import com.yxt.anrui.base.api.basevehicle.BaseVehicleFeign;
import com.yxt.anrui.base.api.basevehicle.BaseVehicleSelectVo;
@ -51,6 +48,7 @@ import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleState;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateDto;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateEnum;
import com.yxt.anrui.base.api.basevehiclestate.BaseVehicleStateFeign;
import com.yxt.anrui.base.api.basevehinstall.BaseVehinstall;
import com.yxt.anrui.base.api.commoncontract.CommonContractFeign;
import com.yxt.anrui.base.common.enums.CertificState;
import com.yxt.anrui.base.common.utils.Rule;
@ -83,8 +81,10 @@ import com.yxt.anrui.buscenter.api.bushandoverpreparevehicle.AppBusHandoverPrepa
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesorderdiscount.BusSalesOrderDiscount;
import com.yxt.anrui.buscenter.api.bussalesordermakeup.BusSalesOrderMakeup;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.buscenter.api.bussalesordersubmit.SubmitVo;
import com.yxt.anrui.buscenter.api.bussalesordertrailer.BusSalesOrderTrailer;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleDetailsVo;
import com.yxt.anrui.buscenter.api.busvalcustfiling.BusValcustFilingDto;
@ -102,6 +102,8 @@ import com.yxt.anrui.buscenter.biz.bushandoverprepare.BusHandoverPrepareService;
import com.yxt.anrui.buscenter.biz.bussalesorder.BusSalesOrderService;
import com.yxt.anrui.buscenter.biz.bussalesorderdiscount.BusSalesOrderDiscountService;
import com.yxt.anrui.buscenter.biz.bussalesorderloancontract.BusSalesOrderLoancontractService;
import com.yxt.anrui.buscenter.biz.bussalesordermakeup.BusSalesOrderMakeupService;
import com.yxt.anrui.buscenter.biz.bussalesordertrailer.BusSalesOrderTrailerService;
import com.yxt.anrui.buscenter.biz.bussalesordervehicle.BusSalesOrderVehicleService;
import com.yxt.anrui.buscenter.biz.busvalcustfiling.BusValcustFilingService;
import com.yxt.anrui.buscenter.biz.busvehicleinformationhandover.BusVehicleInformationHandoverService;
@ -297,6 +299,11 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
@Autowired
private ScmVehRebateFeign scmVehRebateFeign;
@Autowired
private BusSalesOrderTrailerService busSalesOrderTrailerService;
@Autowired
private BusSalesOrderMakeupService busSalesOrderMakeupService;
/**
* 构造出库申请的查询条件
*
@ -3370,7 +3377,53 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} else {
return rb.setMsg("请选择要出库的车辆");
}
//先查询该订单下是否有挂车,如果有的话,再根据该订单及车辆查询挂车是否都已入库,若没有全部入库,则提示
boolean isHave = false;
List<BusSalesOrderTrailer> trailersLists = busSalesOrderTrailerService.selectTrailerByContractNo(dto.getContractId());
trailersLists = trailersLists.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
// 如果列表不为空,使用流式操作计算总挂车数量
if(!trailersLists.isEmpty()){
int totalTrailerCount = trailersLists.stream()
.mapToInt(BusSalesOrderTrailer::getTrailerCount) // 提取数量
.sum(); // 累加所有数量
if(!carList.isEmpty()){
for (AppCarListVo car : carList) {
//根据车辆sid 查询挂车的数量
List<BaseTrailer> trList = baseMapper.selectTralier(car.getVinSid());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(totalTrailerCount != trList.size()){
isHave = true;
break;
}
}
}
}
if(isHave){
return rb.setMsg("挂车入库绑定车辆后才可以提交出库申请");
}
boolean issHave = false;
List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo(dto.getContractId());
makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(!makeUpsList.isEmpty()){
//查询上装入库中是否有该主车关联的上装
if(!carList.isEmpty()){
for (AppCarListVo car : carList) {
//根据车辆sid和合同号查询主车车架号
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(),dto.getContractId());
List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(trList.isEmpty()){
issHave = true;
break;
}
}
}
}
if(issHave){
return rb.setMsg("上装入库绑定车辆后才可以提交出库申请");
}
//=================
BusDeliveredApply busDeliveredApply = fetchBySid(dto.getSid());
int r = submitAppBusinessData(dto, busDeliveredApply);
if (r == 3) {
@ -4281,7 +4334,54 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
} else {
return rb.setMsg("请选择要出库的车辆");
}
//=====================
//先查询该订单下是否有挂车,如果有的话,再根据该订单及车辆查询挂车是否都已入库,若没有全部入库,则提示
boolean isHave = false;
List<BusSalesOrderTrailer> trailersLists = busSalesOrderTrailerService.selectTrailerByContractNo(dto.getContractId());
trailersLists = trailersLists.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
// 如果列表不为空,使用流式操作计算总挂车数量
if(!trailersLists.isEmpty()){
int totalTrailerCount = trailersLists.stream()
.mapToInt(BusSalesOrderTrailer::getTrailerCount) // 提取数量
.sum(); // 累加所有数量
if(!carList.isEmpty()){
for (AppCarListVo car : carList) {
//根据车辆sid 查询挂车的数量
List<BaseTrailer> trList = baseMapper.selectTralier(car.getVinSid());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(totalTrailerCount != trList.size()){
isHave = true;
break;
}
}
}
}
if(isHave){
return rb.setMsg("挂车入库绑定车辆后才可以提交出库申请");
}
boolean issHave = false;
List<BusSalesOrderMakeup> makeUpsList = busSalesOrderMakeupService.selectMakeUpByContractNo(dto.getContractId());
makeUpsList = makeUpsList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(!makeUpsList.isEmpty()){
//查询上装入库中是否有该主车关联的上装
if(!carList.isEmpty()){
for (AppCarListVo car : carList) {
//根据车辆sid和合同号查询主车车架号
BusSalesOrderVehicle busSalesOrderVehicle = baseMapper.selectVinNoByVehicleSid(car.getVinSid(),dto.getContractId());
List<BaseVehinstall> trList = baseMapper.selectInstall(busSalesOrderVehicle.getLinkNo());
trList = trList.stream().filter(Objects::nonNull).collect(Collectors.toList()); // 去除null元素
if(trList.isEmpty()){
issHave = true;
break;
}
}
}
}
if(issHave){
return rb.setMsg("上装入库绑定车辆后才可以提交出库申请");
}
//=================
BusDeliveredApply busDeliveredApply = fetchBySid(dto.getSid());
int r = submitAppBusinessData2(dto, busDeliveredApply);
if (r == 3) {

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.java

@ -97,4 +97,6 @@ public interface BusSalesOrderMakeupMapper extends BaseMapper<BusSalesOrderMakeu
@Select("select * from bus_sales_order_makeup where salesOrderSid = #{orderSid}")
List<BusSalesOrderMakeupDetailsVo> selectTopByOrderSid(@Param("orderSid") String orderSid);
List<BusSalesOrderMakeup> selectMakeUpByContractNo(String contractId);
}

7
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupMapper.xml

@ -109,4 +109,11 @@
<select id="selectBySid" resultType="com.yxt.anrui.buscenter.api.bussalesordermakeup.BusSalesOrderMakeup">
select * from bus_sales_order_makeup where salesOrderSid = #{sid}
</select>
<select id="selectMakeUpByContractNo"
resultType="com.yxt.anrui.buscenter.api.bussalesordermakeup.BusSalesOrderMakeup">
select bm.* from bus_sales_order_makeup bm
left join bus_sales_order bo on bo.sid = bm.salesOrderSid
where bo.contractNo = #{contractId}
</select>
</mapper>

4
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordermakeup/BusSalesOrderMakeupService.java

@ -281,4 +281,8 @@ public class BusSalesOrderMakeupService extends MybatisBaseService<BusSalesOrder
List<BusSalesOrderMakeupDetailsVo> busSalesOrderMakeupDetailsVoList = baseMapper.selectTopByOrderSid(orderSid);
return rb.success().setData(busSalesOrderMakeupDetailsVoList);
}
public List<BusSalesOrderMakeup> selectMakeUpByContractNo(String contractId) {
return baseMapper.selectMakeUpByContractNo(contractId);
}
}

2
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordertrailer/BusSalesOrderTrailerMapper.java

@ -68,4 +68,6 @@ public interface BusSalesOrderTrailerMapper extends BaseMapper<BusSalesOrderTrai
@Select("select * from bus_sales_order_trailer where salesOrderSid = #{salesOrderSid} and sid != #{dtoSid}")
BusSalesOrderTrailerDetailsVo fetchByOrderSidAndNotSidOne(@Param("salesOrderSid") String salesOrderSid,@Param("dtoSid") String dtoSid);
List<BusSalesOrderTrailer> selectTrailerByContractNo(String contractId);
}

12
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordertrailer/BusSalesOrderTrailerMapper.xml

@ -1,6 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.buscenter.biz.bussalesordertrailer.BusSalesOrderTrailerMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
<select id="selectTrailerByContractNo"
resultType="com.yxt.anrui.buscenter.api.bussalesordertrailer.BusSalesOrderTrailer">
select bt.*
from bus_sales_order_trailer bt
left join bus_sales_order bo on bo.sid = bt.salesOrderSid
where bo.contractNo = #{contractId}
</select>
</mapper>

4
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordertrailer/BusSalesOrderTrailerService.java

@ -183,4 +183,8 @@ public class BusSalesOrderTrailerService extends MybatisBaseService<BusSalesOrde
}
return busSalesOrderTrailerDetailsVos;
}
public List<BusSalesOrderTrailer> selectTrailerByContractNo(String contractId) {
return baseMapper.selectTrailerByContractNo(contractId);
}
}
Loading…
Cancel
Save