shasha 1 місяць тому
батько
коміт
a85eaddbdc
17 змінених файлів з 198 додано та 28 видалено
  1. 5 1
      snowy-admin-web/src/views/biz/bizloadpoint/form.vue
  2. 5 2
      snowy-admin-web/src/views/biz/bizloadpoint/index.vue
  3. 5 2
      snowy-admin-web/src/views/biz/bizloadpoint/timeIndex.vue
  4. 34 6
      snowy-admin-web/src/views/biz/bizloadpoint/userForm.vue
  5. 15 0
      snowy-admin-web/src/views/biz/bizloadpoint/userIndex.vue
  6. 0 5
      snowy-admin-web/src/views/biz/bizloadtime/index.vue
  7. 1 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadpoint/service/impl/BizLoadPointServiceImpl.java
  8. 9 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/service/BizLoadTimeService.java
  9. 33 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/service/impl/BizLoadTimeServiceImpl.java
  10. 1 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/entity/BizLoadUser.java
  11. 6 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/mapper/BizLoadUserMapper.java
  12. 16 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/mapper/mapping/BizLoadUserMapper.xml
  13. 1 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/param/BizLoadUserAddParam.java
  14. 1 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/param/BizLoadUserEditParam.java
  15. 4 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/param/BizLoadUserPageParam.java
  16. 53 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/result/BizLoadUserListResult.java
  17. 9 7
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/service/impl/BizLoadUserServiceImpl.java

+ 5 - 1
snowy-admin-web/src/views/biz/bizloadpoint/form.vue

@@ -6,7 +6,7 @@
 		:destroy-on-close="true"
 		@close="onClose"
 	>
-		<a-form ref="formRef" :model="formData" :rules="formRules" layout="vertical">
+		<a-form ref="formRef" :model="formData" :rules="formRules" :wrapper-col="wrapperCol" :label-col="labelCol">
 			<a-form-item label="装货点位:" name="loadPoint">
 				<a-input v-model:value="formData.loadPoint" placeholder="请输入装货点位" allow-clear />
 			</a-form-item>
@@ -30,6 +30,10 @@
 	const formData = ref({})
 	const submitLoading = ref(false)
 
+	//设置表单样式
+	const labelCol = ref({ span: 4})
+	const wrapperCol = ref({ span: 16})
+
 	// 打开抽屉
 	const onOpen = (record) => {
 		open.value = true

+ 5 - 2
snowy-admin-web/src/views/biz/bizloadpoint/index.vue

@@ -59,6 +59,9 @@
 	import UserIndex from './userIndex.vue'
 	import TimeIndex from './timeIndex.vue'
 	import bizLoadPointApi from '@/api/biz/bizLoadPointApi'
+	import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
+	import {Modal} from 'ant-design-vue';
+	import {createVNode} from 'vue';
 
 	const searchFormState = ref({})
 	const searchFormRef = ref()
@@ -135,8 +138,8 @@
 					}
 				]
 
-				customerApi
-					.customerDelete(params)
+				bizLoadPointApi
+					.bizLoadPointDelete(params)
 					.then(() => {
 						tableRef.value.refresh(true)
 					})

+ 5 - 2
snowy-admin-web/src/views/biz/bizloadpoint/timeIndex.vue

@@ -49,6 +49,9 @@
 	import TimeEditForm from './timeEditForm.vue'
 	import TimeAlreadyForm from './timeAlreadyForm.vue'
 	import bizLoadTimeApi from '@/api/biz/bizLoadTimeApi'
+	import {ExclamationCircleOutlined} from '@ant-design/icons-vue';
+	import {Modal} from 'ant-design-vue';
+	import {createVNode} from 'vue';
 
 	const submitLoading = ref(false)
 	const toolConfig = { refresh: true, height: false, columnSetting: false, striped: false }
@@ -128,8 +131,8 @@
 					}
 				]
 
-				customerAccountApi
-					.customerAccountDelete(params)
+				bizLoadTimeApi
+					.bizLoadTimeDelete(params)
 					.then(() => {
 						tableRef.value.refresh(true)
 					})

+ 34 - 6
snowy-admin-web/src/views/biz/bizloadpoint/userForm.vue

@@ -1,17 +1,21 @@
 <template>
 	<xn-form-container
-		:title="formData.id ? '编辑装货点人员信息' : '增加装货点人员信息'"
+		title="增加装货点人员信息"
 		:width="700"
 		v-model:open="open"
 		:destroy-on-close="true"
 		@close="onClose"
 	>
-		<a-form ref="formRef" :model="formData" :rules="formRules" layout="vertical">
-			<a-form-item label="装货点位id:" name="loadId">
-				<a-input v-model:value="formData.loadId" placeholder="请输入装货点位id" allow-clear />
-			</a-form-item>
+		<a-form ref="formRef" :model="formData" :rules="formRules" :wrapper-col="wrapperCol" :label-col="labelCol">
 			<a-form-item label="点位人员信息:" name="userId">
-				<a-input v-model:value="formData.userId" placeholder="请输入点位人员信息" allow-clear />
+				<xn-page-select
+					ref="xnUserPageSelectRef"
+					v-model:value="formData.userId"
+					placeholder="请选择装货员"
+					allow-clear
+					:page-function="selectApiFunction.userSelector"
+					:echo-function="selectApiFunction.echoUser"
+				/>
 			</a-form-item>
 		</a-form>
 		<template #footer>
@@ -25,6 +29,8 @@
 	import { cloneDeep } from 'lodash-es'
 	import { required } from '@/utils/formRules'
 	import bizLoadUserApi from '@/api/biz/bizLoadUserApi'
+	import userCenterApi from '@/api/sys/userCenterApi'
+
 	// 抽屉状态
 	const open = ref(false)
 	const emit = defineEmits({ successful: null })
@@ -32,6 +38,12 @@
 	// 表单数据
 	const formData = ref({})
 	const submitLoading = ref(false)
+	// 分页select组件dom定义
+	const xnUserPageSelectRef = ref()
+
+	//设置表单样式
+	const labelCol = ref({ span: 4})
+	const wrapperCol = ref({ span: 16})
 
 	// 打开抽屉
 	const onOpen = (record) => {
@@ -40,6 +52,7 @@
 			let recordData = cloneDeep(record)
 			formData.value = Object.assign({}, recordData)
 		}
+		xnUserPageSelectRef.value.onPage()
 	}
 	// 关闭抽屉
 	const onClose = () => {
@@ -49,6 +62,21 @@
 	}
 	// 默认要校验的
 	const formRules = {
+		userId: [required('请选择人员')],
+	}
+	
+	// 传递选择组件需要的API
+	const selectApiFunction = {
+		userSelector: (param) => {
+			return bizUserApi.userSelector(param).then((data) => {
+				return Promise.resolve(data)
+			})
+		},
+		echoUser: (param) => {
+			return userCenterApi.userCenterGetUserListByIdList(param).then((data) => {
+				return Promise.resolve(data)
+			})
+		}
 	}
 	// 验证并提交数据
 	const onSubmit = () => {

+ 15 - 0
snowy-admin-web/src/views/biz/bizloadpoint/userIndex.vue

@@ -71,11 +71,26 @@
 			dataIndex: 'serial',
 			align:'center'
 		},
+		{
+			title: '装货点位',
+			dataIndex: 'loadPoint',
+			align:'center'
+		},
 		{
 			title: '装货员账号',
 			dataIndex: 'account',
 			align:'center'
 		},
+		{
+			title: '装货员姓名',
+			dataIndex: 'name',
+			align:'center'
+		},
+		{
+			title: '装货员手机',
+			dataIndex: 'phone',
+			align:'center'
+		},
 		{
 			title: '创建时间',
 			dataIndex: 'createTime',

+ 0 - 5
snowy-admin-web/src/views/biz/bizloadtime/index.vue

@@ -97,11 +97,6 @@
 			dataIndex: 'availableNumber',
 			align:'center'
 		},
-		{
-			title: '已预约日期',
-			dataIndex: 'alreadyDate',
-			align:'center'
-		},
 		{
 			title: '已预约次数',
 			dataIndex: 'alreadyNumber',

+ 1 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadpoint/service/impl/BizLoadPointServiceImpl.java

@@ -55,7 +55,7 @@ public class BizLoadPointServiceImpl extends ServiceImpl<BizLoadPointMapper, Biz
             queryWrapper.orderBy(true, bizLoadPointPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
                     StrUtil.toUnderlineCase(bizLoadPointPageParam.getSortField()));
         } else {
-            queryWrapper.lambda().orderByAsc(BizLoadPoint::getId);
+            queryWrapper.lambda().orderByDesc(BizLoadPoint::getCreateTime);
         }
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);
     }

+ 9 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloadtime/service/BizLoadTimeService.java

@@ -20,6 +20,7 @@ import vip.xiaonuo.biz.modular.bizloadtime.param.BizLoadTimeEditParam;
 import vip.xiaonuo.biz.modular.bizloadtime.param.BizLoadTimeIdParam;
 import vip.xiaonuo.biz.modular.bizloadtime.param.BizLoadTimePageParam;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -54,6 +55,14 @@ public interface BizLoadTimeService extends IService<BizLoadTime> {
      */
     void edit(BizLoadTimeEditParam bizLoadTimeEditParam);
 
+    /**
+     * 更新已预约次数
+     *
+     * @author sandy
+     * @date  2025/05/29 16:13
+     **/
+    void editAvailableNumber(String bizLoadTimeId);
+
     /**
      * 删除装货时间配置
      *

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

@@ -25,6 +25,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.biz.modular.customer.entity.BizCustomer;
 import vip.xiaonuo.biz.modular.goodsConf.entity.BizGoodsConf;
+import vip.xiaonuo.biz.modular.goodsConf.enums.BizGoodsConfEnum;
 import vip.xiaonuo.biz.modular.goodsConf.service.BizGoodsConfService;
 import vip.xiaonuo.biz.modular.user.mapper.BizUserMapper;
 import vip.xiaonuo.biz.modular.user.service.BizUserService;
@@ -40,6 +41,7 @@ import vip.xiaonuo.biz.modular.bizloadtime.param.BizLoadTimePageParam;
 import vip.xiaonuo.biz.modular.bizloadtime.service.BizLoadTimeService;
 import vip.xiaonuo.sys.api.SysUserApi;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -72,7 +74,7 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
             queryWrapper.orderBy(true, bizLoadTimePageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
                     StrUtil.toUnderlineCase(bizLoadTimePageParam.getSortField()));
         } else {
-            queryWrapper.lambda().orderByAsc(BizLoadTime::getId);
+            queryWrapper.lambda().orderByDesc(BizLoadTime::getCreateTime);
         }
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);
     }
@@ -81,6 +83,10 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
     @Override
     public void add(BizLoadTimeAddParam bizLoadTimeAddParam) {
         BizLoadTime bizLoadTime = BeanUtil.toBean(bizLoadTimeAddParam, BizLoadTime.class);
+        if(!checkBizLoadTime(bizLoadTime)){
+            // 当前时间段内的提货配置重叠了
+            throw new CommonException("装货配置时间段重叠,请重新选择。");
+        }
         this.save(bizLoadTime);
     }
 
@@ -88,10 +94,28 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
     @Override
     public void edit(BizLoadTimeEditParam bizLoadTimeEditParam) {
         BizLoadTime bizLoadTime = this.queryEntity(bizLoadTimeEditParam.getId());
+        if(!checkBizLoadTime(bizLoadTime)){
+            // 当前时间段内的提货配置重叠了
+            throw new CommonException("装货配置时间段重叠,请重新选择。");
+        }
         BeanUtil.copyProperties(bizLoadTimeEditParam, bizLoadTime);
         this.updateById(bizLoadTime);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void editAvailableNumber(String bizLoadTimeId) {
+        BizLoadTime bizLoadTime = this.queryEntity(bizLoadTimeId);
+        if(null != bizLoadTime){
+            /** 原已预约次数 */
+            int alreadyNumber = bizLoadTime.getAlreadyNumber();
+            alreadyNumber += 1;
+            // 更新已提货重量
+            bizLoadTime.setAlreadyNumber(alreadyNumber);
+            this.updateById(bizLoadTime);
+        }
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void delete(List<BizLoadTimeIdParam> bizLoadTimeIdParamList) {
@@ -136,6 +160,14 @@ public class BizLoadTimeServiceImpl extends ServiceImpl<BizLoadTimeMapper, BizLo
     }
 
     // 校验同一个点位的时间段是否有交集
+    public Boolean checkBizLoadTime(BizLoadTime bizLoadTime){
+        List<BizLoadTime> list = this.baseMapper.getSearch(bizLoadTime.getPointId(), bizLoadTime.getBeginTime(), bizLoadTime.getEndTime());
+        if(null != list && list.size() > 0){
+            return false;
+        }else{
+            return true;
+        }
+    }
 
 
 

+ 1 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/entity/BizLoadUser.java

@@ -39,7 +39,7 @@ public class BizLoadUser extends CommonEntity {
 
     /** 装货点位id */
     @Schema(description = "装货点位id")
-    private String loadId;
+    private String pointId;
 
     /** 点位人员信息 */
     @Schema(description = "点位人员信息")

+ 6 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/mapper/BizLoadUserMapper.java

@@ -12,7 +12,10 @@
  */
 package vip.xiaonuo.biz.modular.bizloaduser.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import vip.xiaonuo.biz.modular.bizloaduser.entity.BizLoadUser;
 
 /**
@@ -22,4 +25,7 @@ import vip.xiaonuo.biz.modular.bizloaduser.entity.BizLoadUser;
  * @date  2025/05/29 14:56
  **/
 public interface BizLoadUserMapper extends BaseMapper<BizLoadUser> {
+
+    Page<BizLoadUser> getPage(@Param("page") Page page, @Param("ew") QueryWrapper<BizLoadUser> ew);
+
 }

+ 16 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/mapper/mapping/BizLoadUserMapper.xml

@@ -2,4 +2,20 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="vip.xiaonuo.biz.modular.bizloaduser.mapper.BizLoadUserMapper">
 
+    <select id="getPage" resultType="vip.xiaonuo.biz.modular.bizloaduser.result.BizLoadUserListResult">
+        select
+            t.id,
+            t.point_id pointId,
+            p.load_point loadPoint,
+            t.user_id userId,
+            u.account,
+            u.name,
+            u.phone,
+            t.create_time createTime
+        from biz_load_user t
+            left join biz_load_point p on p.id = t.point_id
+            left join sys_user u on u.id = t.user_id
+        ${ew.customSqlSegment}
+    </select>
+
 </mapper>

+ 1 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/param/BizLoadUserAddParam.java

@@ -33,7 +33,7 @@ public class BizLoadUserAddParam {
 
     /** 装货点位id */
     @Schema(description = "装货点位id")
-    private String loadId;
+    private String pointId;
 
     /** 点位人员信息 */
     @Schema(description = "点位人员信息")

+ 1 - 1
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/param/BizLoadUserEditParam.java

@@ -38,7 +38,7 @@ public class BizLoadUserEditParam {
 
     /** 装货点位id */
     @Schema(description = "装货点位id")
-    private String loadId;
+    private String pointId;
 
     /** 点位人员信息 */
     @Schema(description = "点位人员信息")

+ 4 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/param/BizLoadUserPageParam.java

@@ -48,4 +48,8 @@ public class BizLoadUserPageParam {
     @Schema(description = "关键词")
     private String searchKey;
 
+    /** 点位ID */
+    @Schema(description = "点位ID")
+    private String loadPointId;
+
 }

+ 53 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/result/BizLoadUserListResult.java

@@ -0,0 +1,53 @@
+/*
+ * Copyright [2022] [https://www.xiaonuo.vip]
+ *
+ * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
+ *
+ * 1.请不要删除和修改根目录下的LICENSE文件。
+ * 2.请不要删除和修改Snowy源码头部的版权声明。
+ * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
+ * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
+ * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
+ * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
+ */
+package vip.xiaonuo.biz.modular.bizloaduser.result;
+
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * 装货点人员信息添加参数
+ *
+ * @author fanzherong
+ * @date  2025/05/29 14:56
+ **/
+@Getter
+@Setter
+public class BizLoadUserListResult {
+
+    private String id;
+
+    /** 装货点位id */
+    private String pointId;
+    /** 装货点位 */
+    private String loadPoint;
+
+    /** 点位人员信息 */
+    private String userId;
+    /** 账号 */
+    private String account;
+    /** 姓名 */
+    private String name;
+    /** 手机 */
+    private String phone;
+
+    /** 创建时间 */
+    private Date createTime;
+
+}

+ 9 - 7
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizloaduser/service/impl/BizLoadUserServiceImpl.java

@@ -14,6 +14,7 @@ package vip.xiaonuo.biz.modular.bizloaduser.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -21,6 +22,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.biz.modular.bizloadtime.entity.BizLoadTime;
+import vip.xiaonuo.biz.modular.bizsaleorder.entity.BizSaleOrder;
 import vip.xiaonuo.common.enums.CommonSortOrderEnum;
 import vip.xiaonuo.common.exception.CommonException;
 import vip.xiaonuo.common.page.CommonPageRequest;
@@ -46,14 +49,13 @@ public class BizLoadUserServiceImpl extends ServiceImpl<BizLoadUserMapper, BizLo
     @Override
     public Page<BizLoadUser> page(BizLoadUserPageParam bizLoadUserPageParam) {
         QueryWrapper<BizLoadUser> queryWrapper = new QueryWrapper<BizLoadUser>().checkSqlInjection();
-        if(ObjectUtil.isAllNotEmpty(bizLoadUserPageParam.getSortField(), bizLoadUserPageParam.getSortOrder())) {
-            CommonSortOrderEnum.validate(bizLoadUserPageParam.getSortOrder());
-            queryWrapper.orderBy(true, bizLoadUserPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
-                    StrUtil.toUnderlineCase(bizLoadUserPageParam.getSortField()));
-        } else {
-            queryWrapper.lambda().orderByAsc(BizLoadUser::getId);
+        //订单编号查询
+        if(ObjectUtil.isNotEmpty(bizLoadUserPageParam.getLoadPointId())){
+            queryWrapper.like("t.point_id",bizLoadUserPageParam.getLoadPointId());
         }
-        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+        queryWrapper.eq("t.delete_flag","NOT_DELETE");
+        queryWrapper.orderByDesc("t.create_time");
+        return this.getBaseMapper().getPage(CommonPageRequest.defaultPage(), queryWrapper);
     }
 
     @Transactional(rollbackFor = Exception.class)