Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

shasha 3 nedēļas atpakaļ
vecāks
revīzija
78a7167712
16 mainītis faili ar 111 papildinājumiem un 7 dzēšanām
  1. 4 0
      snowy-admin-web/src/views/biz/bizconfig/form.vue
  2. 4 1
      snowy-admin-web/src/views/biz/bizorder/dispatch.vue
  3. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/entity/BizConfig.java
  4. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/param/BizConfigAddParam.java
  5. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/param/BizConfigEditParam.java
  6. 12 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/service/impl/BizConfigServiceImpl.java
  7. 2 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/mapper/BizLoadTimeMapper.java
  8. 6 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/mapper/mapping/BizLoadTimeMapper.xml
  9. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/param/BizLoadTimePageParam.java
  10. 13 2
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/service/impl/BizLoadTimeServiceImpl.java
  11. 4 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/entity/BizOrder.java
  12. 3 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/mapper/mapping/BizOrderMapper.xml
  13. 7 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/service/impl/BizOrderServiceImpl.java
  14. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorderload/mapper/BizOrderLoadMapper.java
  15. 8 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorderload/mapper/mapping/BizOrderLoadMapper.xml
  16. 33 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorderload/service/impl/BizOrderLoadServiceImpl.java

+ 4 - 0
snowy-admin-web/src/views/biz/bizconfig/form.vue

@@ -22,6 +22,9 @@
 			<a-form-item label="预约申请数量:" name="applyCount">
 				<a-input-number v-model:value="formData.applyCount" style="width:90%"  :precision="0" :min="1" :max="99999" placeholder="请输入预约申请数量" allow-clear /><span style="margin-left:10px;">个</span>
 			</a-form-item>
+			<a-form-item label="车辆装载量:" name="loadWeight">
+				<a-input-number v-model:value="formData.loadWeight" style="width:90%"  :precision="2" :min="0.01" :max="99999" placeholder="请输入车辆装载量" allow-clear /><span style="margin-left:10px;">吨</span>
+			</a-form-item>
 			<a-form-item label="预约审核开关:" name="auditSwitch">
 				<a-radio-group button-style="solid" v-model:value="formData.auditSwitch">
 					<a-radio-button value="1">
@@ -125,6 +128,7 @@
 		lossWarn: [required('请输入装卸损耗预警值')],
 		applyCount: [required('请输入预约申请数量')],
 		lineNoticeSwitch: [required('请选择排队通知开关')],
+		loadWeight: [required('请输入车辆装载量')],
 	}
 	// 验证并提交数据
 	const onSubmit = () => {

+ 4 - 1
snowy-admin-web/src/views/biz/bizorder/dispatch.vue

@@ -20,6 +20,9 @@
 						  :options="deliveryTimeIdList" disabled
 				> </a-select>
 			</a-form-item>
+			<a-form-item label="申请次数:" name="applyNumber" >
+				<a-input v-model:value="formData.applyNumber" placeholder="请输入申请次数" allow-clear disabled/>
+			</a-form-item>
 			<a-form-item label="装卸点位:" name="loadPointId">
 				<a-select v-model:value="formData.loadPointId" placeholder="请选择装卸点位"
 						  :options="loadPointIdList" @change="onChangePoint"
@@ -154,7 +157,7 @@
 		loadTimeIdList.value = ''
 		formData.value.availableNumber = ''
 		formData.value.alreadyNumber = ''
-		bizLoadTimeApi.search({pointId:formData.value.loadPointId,goodsConfId:formData.value.deliveryTimeId}).then((res)=>{
+		bizLoadTimeApi.search({pointId:formData.value.loadPointId,goodsConfId:formData.value.deliveryTimeId,orderId:formData.value.id}).then((res)=>{
 			loadTimeIdList.value = res.map((item)=>{
 				return{
 					value:item.id,

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/entity/BizConfig.java

@@ -72,4 +72,7 @@ public class BizConfig extends CommonEntity {
 
     /**临时预约审核状态*/
     private String temporaryAuditSwitch;
+
+    /**车辆装载量**/
+    private BigDecimal loadWeight;
 }

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/param/BizConfigAddParam.java

@@ -73,4 +73,7 @@ public class BizConfigAddParam {
     /**临时预约审核状态*/
     private String temporaryAuditSwitch;
 
+    /**车辆装载量**/
+    private BigDecimal loadWeight;
+
 }

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/param/BizConfigEditParam.java

@@ -78,4 +78,7 @@ public class BizConfigEditParam {
     /**临时预约审核状态*/
     private String temporaryAuditSwitch;
 
+    /**车辆装载量**/
+    private BigDecimal loadWeight;
+
 }

+ 12 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizconfig/service/impl/BizConfigServiceImpl.java

@@ -32,6 +32,7 @@ import vip.xiaonuo.biz.modular.bizconfig.param.BizConfigIdParam;
 import vip.xiaonuo.biz.modular.bizconfig.param.BizConfigPageParam;
 import vip.xiaonuo.biz.modular.bizconfig.service.BizConfigService;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -53,7 +54,11 @@ public class BizConfigServiceImpl extends ServiceImpl<BizConfigMapper, BizConfig
         } else {
             queryWrapper.lambda().orderByAsc(BizConfig::getId);
         }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        Page<BizConfig> page = this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        for(BizConfig bizConfig : page.getRecords()){
+            bizConfig.setLoadWeight(bizConfig.getLoadWeight().divide(new BigDecimal(1000)));
+        }
+        return page;
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -64,6 +69,9 @@ public class BizConfigServiceImpl extends ServiceImpl<BizConfigMapper, BizConfig
             throw new CommonException("已添加过配置信息!");
         }
         BizConfig bizConfig = BeanUtil.toBean(bizConfigAddParam, BizConfig.class);
+        if(ObjectUtil.isNotEmpty(bizConfigAddParam.getLoadWeight())){
+            bizConfig.setLoadWeight(bizConfigAddParam.getLoadWeight().multiply(new BigDecimal(1000)));
+        }
         this.save(bizConfig);
     }
 
@@ -72,6 +80,9 @@ public class BizConfigServiceImpl extends ServiceImpl<BizConfigMapper, BizConfig
     public void edit(BizConfigEditParam bizConfigEditParam) {
         BizConfig bizConfig = this.queryEntity(bizConfigEditParam.getId());
         BeanUtil.copyProperties(bizConfigEditParam, bizConfig);
+        if(ObjectUtil.isNotEmpty(bizConfigEditParam.getLoadWeight())){
+            bizConfig.setLoadWeight(bizConfigEditParam.getLoadWeight().multiply(new BigDecimal(1000)));
+        }
         this.updateById(bizConfig);
     }
 

+ 2 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/mapper/BizLoadTimeMapper.java

@@ -31,7 +31,8 @@ public interface BizLoadTimeMapper extends BaseMapper<BizLoadTime> {
 
     Page<BizLoadTime> page(@Param("page") Page<BizLoadTime> page, @Param("ew") QueryWrapper<BizLoadTime> wrapper);
 
-    List<BizLoadTime> getSearch(@Param("noId") String noId, @Param("pointId") String pointId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
+    List<BizLoadTime> getSearch(@Param("noId") String noId, @Param("pointId") String pointId, @Param("startTime") Date startTime,
+                                @Param("endTime") Date endTime,@Param("timeIdList") List<String> timeIdList);
 
 
 }

+ 6 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/mapper/mapping/BizLoadTimeMapper.xml

@@ -34,6 +34,12 @@
             <if test="pointId != null">
                 and t.point_id = #{pointId}
             </if>
+            <if test="timeIdList != null and timeIdList.size() > 0">
+                AND t.id not IN
+                <foreach collection="timeIdList" item="timeId" open="(" separator="," close=")">
+                    #{timeId}
+                </foreach>
+            </if>
             and #{endTime} > t.begin_time
             and t.end_time > #{startTime}
     </select>

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/param/BizLoadTimePageParam.java

@@ -76,6 +76,9 @@ public class BizLoadTimePageParam {
     @Schema(description = "提货时间配置ID")
     private String goodsConfId;
 
+    /**物流订单id*/
+    private String orderId;
+
 
 
 }

+ 13 - 2
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/service/impl/BizLoadTimeServiceImpl.java

@@ -19,10 +19,13 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import io.swagger.v3.oas.annotations.media.Schema;
 import jakarta.annotation.Resource;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.biz.modular.bizorderload.entity.BizOrderLoad;
+import vip.xiaonuo.biz.modular.bizorderload.service.BizOrderLoadService;
 import vip.xiaonuo.biz.modular.customer.entity.BizCustomer;
 import vip.xiaonuo.biz.modular.goodsConf.entity.BizGoodsConf;
 import vip.xiaonuo.biz.modular.goodsConf.enums.BizGoodsConfEnum;
@@ -63,6 +66,9 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
     @Resource
     private BizGoodsConfService bizGoodsConfService;
 
+    @Resource
+    private BizOrderLoadService bizOrderLoadService;
+
     @Override
     public Page<BizLoadTime> page(BizLoadTimePageParam bizLoadTimePageParam) {
         QueryWrapper<BizLoadTime> queryWrapper = new QueryWrapper<BizLoadTime>().checkSqlInjection();
@@ -152,8 +158,13 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
             Date startTime = bizGoodsConf.getConfStartTime();
             // 结束时间
             Date endTime = bizGoodsConf.getConfEndTime();
+            //查询物流订单已经添加过的装卸时段
+            List<String> timeIdList = Lists.newArrayList();
+            bizOrderLoadService.list(new QueryWrapper<BizOrderLoad>().lambda().
+                    eq(BizOrderLoad::getOrderId, bizLoadTimePageParam.getOrderId())).
+                    forEach(time->timeIdList.add(time.getLoadTimeId()));
             // 根据时间段和装货点位ID过滤装货时间配置
-            List<BizLoadTime> list = this.baseMapper.getSearch(null, pointId, startTime, endTime);
+            List<BizLoadTime> list = this.baseMapper.getSearch(null, pointId, startTime, endTime,timeIdList);
             return list;
         }else{
             return null;
@@ -192,7 +203,7 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
 
     // 校验同一个点位的时间段是否有交集
     public Boolean checkBizLoadTime(BizLoadTime bizLoadTime){
-        List<BizLoadTime> list = this.baseMapper.getSearch(bizLoadTime.getId(), bizLoadTime.getPointId(), bizLoadTime.getBeginTime(), bizLoadTime.getEndTime());
+        List<BizLoadTime> list = this.baseMapper.getSearch(bizLoadTime.getId(), bizLoadTime.getPointId(), bizLoadTime.getBeginTime(), bizLoadTime.getEndTime(),null);
         if(null != list && list.size() > 0){
             return false;
         }else{

+ 4 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/entity/BizOrder.java

@@ -160,4 +160,8 @@ public class BizOrder extends CommonEntity{
     /**运费单价*/
     private BigDecimal freightPrice;
 
+    /**申请次数*/
+    @TableField(exist = false)
+    private Integer applyNumber;
+
 }

+ 3 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/mapper/mapping/BizOrderMapper.xml

@@ -37,13 +37,15 @@
             bso.sale_price price,
             bso.business_name,
             bs.supplier_name,
-            bo.freight_price
+            bo.freight_price,
+            boc.apply_number
         from biz_order bo
         left join biz_customer bc on bo.customer_id = bc.id
         left join biz_goods bg on bg.id = bo.good_id
         left join biz_goods_conf bgc on bgc.id = bo.delivery_time_id
         left join biz_sale_order bso on bso.id = bo.sale_order_info
         left join biz_supplier bs on bs.id = bo.supplier_id
+        left join biz_order_config boc on boc.order_id = bo.id
         ${ew.customSqlSegment}
     </select>
 

+ 7 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/service/impl/BizOrderServiceImpl.java

@@ -66,6 +66,7 @@ import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
 
 import java.io.*;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.HashMap;
@@ -380,7 +381,12 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
         bizOrderConfig.setOrderId(bizOrder.getId());
         BizConfig bizConfig = bizConfigService.getOne(new QueryWrapper<BizConfig>().lambda().last("limit 1"));
         if(ObjectUtil.isNotNull(bizConfig)){
-            bizOrderConfig.setApplyNumber(bizConfig.getApplyCount());
+            //采用配置的申请次数
+            //bizOrderConfig.setApplyNumber(bizConfig.getApplyCount());
+
+            //用订单重量除以配置的车辆装载量,向下取整,得出预约次数
+            BigDecimal applyCount = bizOrder.getOrderWeight().divide(bizConfig.getLoadWeight(), RoundingMode.FLOOR);
+            bizOrderConfig.setApplyNumber(applyCount.intValue());
         }
         orderConfigService.save(bizOrderConfig);
     }

+ 3 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorderload/mapper/BizOrderLoadMapper.java

@@ -18,6 +18,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.biz.modular.bizorderload.entity.BizOrderLoad;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -33,4 +34,6 @@ public interface BizOrderLoadMapper extends BaseMapper<BizOrderLoad> {
     List<BizOrderLoad> getPage(@Param("ew") QueryWrapper<BizOrderLoad> ew);
 
     List<BizOrderLoad> getPointList(@Param("ew") QueryWrapper<BizOrderLoad> ew);
+
+    Integer getAvaNumber(@Param("ew") QueryWrapper<BizOrderLoad> ew);
 }

+ 8 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorderload/mapper/mapping/BizOrderLoadMapper.xml

@@ -28,4 +28,12 @@
         left join biz_load_point blp on blp.id = bol.load_point_id
             ${ew.customSqlSegment}
     </select>
+
+    <select id="getAvaNumber" resultType="java.lang.Integer">
+        select
+            IFNULL(sum(blt.available_number),0) count
+        from biz_order_load bol
+            left join biz_load_time blt on bol.load_time_id = blt.id
+            ${ew.customSqlSegment}
+    </select>
 </mapper>

+ 33 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorderload/service/impl/BizOrderLoadServiceImpl.java

@@ -27,6 +27,8 @@ import vip.xiaonuo.biz.modular.bizloadtime.entity.BizLoadTime;
 import vip.xiaonuo.biz.modular.bizloadtime.service.BizLoadTimeService;
 import vip.xiaonuo.biz.modular.bizorder.entity.BizOrder;
 import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
+import vip.xiaonuo.biz.modular.bizorderconfig.entity.BizOrderConfig;
+import vip.xiaonuo.biz.modular.bizorderconfig.service.BizOrderConfigService;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
@@ -38,6 +40,7 @@ import vip.xiaonuo.biz.modular.bizorderload.param.BizOrderLoadIdParam;
 import vip.xiaonuo.biz.modular.bizorderload.param.BizOrderLoadPageParam;
 import vip.xiaonuo.biz.modular.bizorderload.service.BizOrderLoadService;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -53,6 +56,8 @@ public class BizOrderLoadServiceImpl extends ServiceImpl<BizOrderLoadMapper, Biz
     private BizOrderService bizOrderService;
     @Resource
     private BizLoadTimeService bizLoadTimeService;
+    @Resource
+    private BizOrderConfigService bizOrderConfigService;
 
     @Override
     public Page<BizOrderLoad> page(BizOrderLoadPageParam bizOrderLoadPageParam) {
@@ -87,6 +92,34 @@ public class BizOrderLoadServiceImpl extends ServiceImpl<BizOrderLoadMapper, Biz
         if(count>0){
             throw new CommonException("装卸点位和时间已经添加过!");
         }
+
+        //判断物流订单提货时段的总预约次数
+        BizOrder bizOrder = bizOrderService.getById(bizOrderLoadAddParam.getOrderId());
+        if(ObjectUtil.isNotNull(bizOrder)){
+            QueryWrapper<BizOrderLoad> wrapper = new QueryWrapper<>();
+            wrapper.eq("bol.delete_flag","NOT_DELETE");
+            wrapper.eq("blt.delete_flag","NOT_DELETE");
+            wrapper.eq("bol.order_id",bizOrder.getId());
+            Integer avaNumber = this.getBaseMapper().getAvaNumber(wrapper);
+            Integer avaCount = 0;
+            Integer orderNumber = 0;
+            if(ObjectUtil.isNotEmpty(bizOrderLoadAddParam.getLoadTimeId())){
+                BizLoadTime bizLoadTime = bizLoadTimeService.getById(bizOrderLoadAddParam.getLoadTimeId());
+                if(ObjectUtil.isNotNull(bizLoadTime)){
+                    avaCount = bizLoadTime.getAvailableNumber();
+                }
+                //查询物流订单申请数量
+                BizOrderConfig bizOrderConfig = bizOrderConfigService.getOne(new QueryWrapper<BizOrderConfig>().lambda().
+                        eq(BizOrderConfig::getOrderId, bizOrder.getId()).
+                        last("limit 1"));
+                if(ObjectUtil.isNotNull(bizOrderConfig)){
+                    orderNumber = bizOrderConfig.getApplyNumber();
+                }
+                if(avaCount+avaNumber > orderNumber){
+                    throw new CommonException("物流订单申请预约数量:"+bizOrderConfig.getApplyNumber()+",装卸时段已添加预约:"+avaNumber+",还可添加预约:"+(orderNumber-avaNumber));
+                }
+            }
+        }
     }
 
     @Transactional(rollbackFor = Exception.class)