fanzherong_v 1 week geleden
bovenliggende
commit
c5c6e52656
44 gewijzigde bestanden met toevoegingen van 1118 en 65 verwijderingen
  1. 3 0
      snowy-admin-web/src/api/biz/bizOrderApi.js
  2. 32 0
      snowy-admin-web/src/api/biz/bizOrderSupplierApi.js
  3. 2 2
      snowy-admin-web/src/views/biz/bizappointmentrecord/detail.vue
  4. 2 2
      snowy-admin-web/src/views/biz/bizappointmentrecord/index.vue
  5. 45 2
      snowy-admin-web/src/views/biz/bizorder/detail.vue
  6. 6 6
      snowy-admin-web/src/views/biz/bizorder/form.vue
  7. 2 2
      snowy-admin-web/src/views/biz/bizorder/index.vue
  8. 1 0
      snowy-admin-web/src/views/biz/bizsendrecord/detail.vue
  9. 10 0
      snowy-admin-web/src/views/biz/bizsendrecord/index.vue
  10. 1 2
      snowy-admin-web/src/views/biz/bizsettle/orderItem.vue
  11. 2 1
      snowy-admin-web/src/views/biz/bizsupplier/index.vue
  12. 1 1
      snowy-admin-web/src/views/biz/bizsupplier/transportIndex.vue
  13. 1 0
      snowy-admin-web/src/views/biz/record/detail.vue
  14. 10 0
      snowy-admin-web/src/views/biz/record/index.vue
  15. 1 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizappointmentrecord/mapper/mapping/BizAppointmentRecordMapper.xml
  16. 51 24
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizappointmentrecord/service/impl/BizAppointmentRecordServiceImpl.java
  17. 12 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/controller/BizOrderController.java
  18. 5 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/entity/BizOrder.java
  19. 2 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/mapper/BizOrderMapper.java
  20. 47 8
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/mapper/mapping/BizOrderMapper.xml
  21. 4 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/param/BizOrderAddParam.java
  22. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/param/BizOrderEditParam.java
  23. 2 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/param/BizOrderPageParam.java
  24. 7 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/service/BizOrderService.java
  25. 90 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/service/impl/BizOrderServiceImpl.java
  26. 131 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/controller/BizOrderSupplierController.java
  27. 64 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/entity/BizOrderSupplier.java
  28. 34 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/enums/BizOrderSupplierEnum.java
  29. 31 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/mapper/BizOrderSupplierMapper.java
  30. 15 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/mapper/mapping/BizOrderSupplierMapper.xml
  31. 50 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierAddParam.java
  32. 55 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierEditParam.java
  33. 35 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierIdParam.java
  34. 53 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierPageParam.java
  35. 85 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/service/BizOrderSupplierService.java
  36. 105 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/service/impl/BizOrderSupplierServiceImpl.java
  37. 37 11
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizsettle/service/impl/BizSettleServiceImpl.java
  38. 6 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizsupplier/service/impl/BizSupplierAccountServiceImpl.java
  39. 5 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizsupplier/service/impl/BizSupplierServiceImpl.java
  40. 2 2
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/customer/service/impl/BizCustomerServiceImpl.java
  41. 7 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/record/entity/BizRecord.java
  42. 3 1
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/record/mapper/mapping/BizRecordMapper.xml
  43. 3 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/record/param/BizRecordPageParam.java
  44. 55 0
      snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/record/service/impl/BizRecordServiceImpl.java

+ 3 - 0
snowy-admin-web/src/api/biz/bizOrderApi.js

@@ -13,6 +13,9 @@ export default {
 	bizOrderPage(data) {
 		return request('page', data, 'get')
 	},
+	bizSupplierOrderPage(data){
+		return request('pageSupplier',data,'get')
+	},
 	// 提交订单管理表单 edit为true时为编辑,默认为新增
 	bizOrderSubmitForm(data, edit = false) {
 		return request(edit ? 'edit' : 'add', data)

+ 32 - 0
snowy-admin-web/src/api/biz/bizOrderSupplierApi.js

@@ -0,0 +1,32 @@
+import { baseRequest } from '@/utils/request'
+
+const request = (url, ...arg) => baseRequest(`/biz/bizordersupplier/` + url, ...arg)
+
+/**
+ * 订单供应商Api接口管理器
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+export default {
+	// 获取订单供应商分页
+	bizOrderSupplierPage(data) {
+		return request('page', data, 'get')
+	},
+	// 提交订单供应商表单 edit为true时为编辑,默认为新增
+	bizOrderSupplierSubmitForm(data, edit = false) {
+		return request(edit ? 'edit' : 'add', data)
+	},
+	// 删除订单供应商
+	bizOrderSupplierDelete(data) {
+		return request('delete', data)
+	},
+	// 获取订单供应商详情
+	bizOrderSupplierDetail(data) {
+		return request('detail', data, 'get')
+	},
+	// 获取订单供应商列表
+	getSupplierList(data){
+		return request('getSupplierList',data,'get')
+	}
+}

+ 2 - 2
snowy-admin-web/src/views/biz/bizappointmentrecord/detail.vue

@@ -3,7 +3,7 @@
 		<a-form ref="formRef" :model="formData" :label-col="labelCol4" :wrapper-col="wrapperCol20">
 			<a-descriptions :column="4" size="middle" bordered class="mb-2" :label-style="labelStyle" :contentStyle="contentStyle">
 				<a-descriptions-item label="订单编号" :span="2">{{ formData.orderNumber }}</a-descriptions-item>
-				<a-descriptions-item label="订单名称" :span="2">{{ formData.orderName }}</a-descriptions-item>
+<!--				<a-descriptions-item label="订单名称" :span="2">{{ formData.orderName }}</a-descriptions-item>-->
 				<a-descriptions-item label="车牌号" :span="2">{{ formData.licenseNumber }}</a-descriptions-item>
 				<a-descriptions-item label="车辆轴数" :span="2">{{ formData.axleNumber+'轴' }}</a-descriptions-item>
 				<a-descriptions-item label="提货开始时间" :span="2">{{ formData.beginTime }}</a-descriptions-item>
@@ -14,7 +14,7 @@
 				<a-descriptions-item label="货品编码" :span="2">{{ formData.goodsCode }}</a-descriptions-item>
 				<a-descriptions-item label="司机姓名" :span="2">{{ formData.driverName }}</a-descriptions-item>
 				<a-descriptions-item label="司机电话" :span="2">{{ formData.driverMobile }}</a-descriptions-item>
-				<a-descriptions-item label="供应商" :span="2">{{ formData.supplierName }}</a-descriptions-item>
+<!--				<a-descriptions-item label="供应商" :span="2">{{ formData.supplierName }}</a-descriptions-item>-->
 				<a-descriptions-item label="装卸点位" :span="2">{{ formData.loadPoint }}</a-descriptions-item>
 				<a-descriptions-item label="装卸开始时间" :span="2">{{ formData.loadBeginTime }}</a-descriptions-item>
 				<a-descriptions-item label="装卸结束时间" :span="2">{{ formData.loadEndTime }}</a-descriptions-item>

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

@@ -320,12 +320,12 @@
 			width: 110,
 			align:'center'
 		},
-		{
+		/*{
 			title: '供应商',
 			dataIndex: 'supplierName',
 			width: 110,
 			align:'center'
-		},
+		},*/
 		{
 			title: '状态',
 			dataIndex: 'status',

+ 45 - 2
snowy-admin-web/src/views/biz/bizorder/detail.vue

@@ -1,6 +1,7 @@
 <template>
 	<xn-form-container title="详情" :width="900" :visible="visible" :destroy-on-close="true" @close="onClose">
 		<a-form ref="formRef" :model="formData" :label-col="labelCol4" :wrapper-col="wrapperCol20">
+			<a-divider dashed style="border-color: gray">物流订单</a-divider>
 			<a-descriptions :column="4" size="middle" bordered class="mb-2" :label-style="labelStyle" :contentStyle="contentStyle">
 				<a-descriptions-item label="订单编号" :span="2">{{ formData.orderNumber }}</a-descriptions-item>
 				<a-descriptions-item label="订单类型" :span="2">
@@ -60,10 +61,10 @@
 				</a-descriptions-item>
 				<a-descriptions-item label="订单重量" :span="2">{{ formData.orderWeight +'吨'}}</a-descriptions-item>
 				<a-descriptions-item label="过磅重量" :span="2">{{ formData.netWeight +'吨'}}</a-descriptions-item>
+				<a-descriptions-item label="卸货重量" :span="2">{{ formData.shippingWeight +'吨'}}</a-descriptions-item>
+				<a-descriptions-item label="运费单价" :span="2">{{ formData.freightPrice +'元/吨'}}</a-descriptions-item>
 				<a-descriptions-item label="提货开始时间" :span="2">{{ formData.confStartTime}}</a-descriptions-item>
 				<a-descriptions-item label="提货结束时间" :span="2">{{ formData.confEndTime}}</a-descriptions-item>
-				<a-descriptions-item label="供应商" :span="2">{{ formData.supplierName }}</a-descriptions-item>
-				<a-descriptions-item label="运费单价" :span="2">{{ formData.freightPrice +'元/吨'}}</a-descriptions-item>
 				<a-descriptions-item label="创建时间" :span="2">{{ formData.createTime}}</a-descriptions-item>
 				<a-descriptions-item label="创建人" :span="2">{{ formData.createUserName}}</a-descriptions-item>
 				<a-descriptions-item label="送货地址" :span="4">{{ formData.shipAddress}}</a-descriptions-item>
@@ -73,12 +74,29 @@
 				<a-descriptions-item label="结束备注" :span="4">{{ formData.endReason}}</a-descriptions-item>
 				<a-descriptions-item label="审核备注" :span="4">{{ formData.orderReason}}</a-descriptions-item>
 			</a-descriptions>
+
+			<a-divider dashed style="border-color: gray" >供应商明细</a-divider>
+			<a-table
+				:dataSource="supplierDataSource"
+				:columns="supplierDataColumns"
+				:pagination="false"
+				:bordered="true"
+			>
+				<template #bodyCell="{ column, record }">
+					<template v-if="column.dataIndex === 'status'">
+						<a-tag :color="record.status === '1' ? 'green' : 'red'">{{
+								$TOOL.dictTypeData('examine_status', record.status)
+							}}</a-tag>
+					</template>
+				</template>
+			</a-table>
 		</a-form>
 	</xn-form-container>
 </template>
 
 <script setup name="recordDoubleForm">
 	import { cloneDeep } from 'lodash-es'
+	import bizOrderSupplierApi from '@/api/biz/bizOrderSupplierApi'
 	// 默认是关闭状态
 	const visible = ref(false)
 	const formData = ref({})
@@ -96,6 +114,27 @@
 	const labelCol8 = ref({span: 8, style: 'width: 26%; line-height: 20px; white-space: normal',})
 	const wrapperCol20 = ref({span: 20})
 
+
+	const supplierDataSource = ref([])
+
+	const supplierDataColumns = [
+		{
+			title: '供应商名称',
+			dataIndex: 'supplierName',
+			align: 'center'
+		},
+		{
+			title: '过磅重量(吨)',
+			dataIndex: 'netWeight',
+			align: 'center'
+		},
+		{
+			title: '卸货重量(吨)',
+			dataIndex: 'shippingWeight',
+			align: 'center'
+		},
+	]
+
 	// 打开抽屉
 	const onOpen = (record) => {
 		visible.value = true
@@ -103,6 +142,10 @@
 		if(record){
 			let recordData = cloneDeep(record)
 			formData.value = Object.assign({}, recordData)
+
+			bizOrderSupplierApi.getSupplierList({orderId:formData.value.id}).then((res)=>{
+				supplierDataSource.value = res
+			})
 		}
 
 	}

+ 6 - 6
snowy-admin-web/src/views/biz/bizorder/form.vue

@@ -43,9 +43,9 @@
 						  :options="deliveryTimeIdList"
 				> </a-select>
 			</a-form-item>
-			<a-form-item label="供货商:" name="supplierId">
-				<a-select v-model:value="formData.supplierId" placeholder="请选择供货商信息"
-						  :options="supplierIdList"
+			<a-form-item label="供货商:" name="supplierIdList">
+				<a-select v-model:value="formData.supplierIdList" placeholder="请选择供货商信息"
+						  :options="supplierIds" mode="tags"
 				> </a-select>
 			</a-form-item>
 			<a-form-item label="运费单价:" name="freightPrice">
@@ -105,7 +105,7 @@
 	const customerIdList = ref()
 	const saleOrderInfoList = ref()
 	const deliveryTimeIdList = ref()
-	const supplierIdList = ref()
+	const supplierIds = ref()
 
 	// 打开抽屉
 	const onOpen = (record) => {
@@ -126,7 +126,7 @@
 
 		//查询供货商信息
 		bizSupplierApi.getList().then((res)=>{
-			supplierIdList.value = res.map((item)=>{
+			supplierIds.value = res.map((item)=>{
 				return{
 					value:item.id,
 					label:item.supplierName
@@ -232,7 +232,7 @@
 		deliveryTimeId: [required('请选择提货时间')],
 		orderWeight: [required('请输入订单重量')],
 		orderType: [required('请选择订单类型')],
-		supplierId: [required('请选择供货商信息')],
+		supplierIdList: [required('请选择供货商信息')],
 		freightPrice: [required('请输入运费单价')],
 	}
 	// 验证并提交数据

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

@@ -455,12 +455,12 @@
 			align:'center',
 			width: 100
 		},
-		{
+		/*{
 			title: '供应商',
 			dataIndex: 'supplierName',
 			align:'center',
 			width: 100
-		},
+		},*/
 	]
 	// 操作栏通过权限判断是否显示
 	columns.push({

+ 1 - 0
snowy-admin-web/src/views/biz/bizsendrecord/detail.vue

@@ -21,6 +21,7 @@
 			<a-descriptions-item label="订单编号">{{ formData.orderNumber }}</a-descriptions-item>
 			<a-descriptions-item label="客户名称">{{ formData.customerName }}</a-descriptions-item>
 			<a-descriptions-item label="司机电话">{{ formData.driverMobile }}</a-descriptions-item>
+			<a-descriptions-item label="供应商名称">{{ formData.supplierName }}</a-descriptions-item>
 <!--			<a-descriptions-item label="过磅人">{{ formData.extKey1 }}</a-descriptions-item>
 			<a-descriptions-item label="打印时间">{{ formData.extKey2 }}</a-descriptions-item>-->
 		</a-descriptions>

+ 10 - 0
snowy-admin-web/src/views/biz/bizsendrecord/index.vue

@@ -77,6 +77,11 @@
 						> </a-select>
 					</a-form-item>
 				</a-col>
+				<a-col :span="6" v-show="advanced">
+					<a-form-item label="供应商名称" name="supplierName">
+						<a-input v-model:value="searchFormState.supplierName" placeholder="请输入供应商名称" />
+					</a-form-item>
+				</a-col>
 				<a-col :span="6">
 					<a-button type="primary" @click="tableRef.refresh()">查询</a-button>
 					<a-button style="margin: 0 8px" @click="reset">重置</a-button>
@@ -260,6 +265,11 @@
 			title: '司机信息',
 			dataIndex: 'driver',
 			width: '150px'
+		},
+		{
+			title: '供应商',
+			dataIndex: 'supplierName',
+			width: '150px'
 		}
 	]
 	// 操作栏通过权限判断是否显示

+ 1 - 2
snowy-admin-web/src/views/biz/bizsettle/orderItem.vue

@@ -115,7 +115,6 @@
 			title: '供应商名称',
 			width: 100,
 			dataIndex: 'supplierName',
-			ellipsis: true,
 			align:'center'
 		},
 		{
@@ -172,7 +171,7 @@
 		const searchFormParam = JSON.parse(JSON.stringify(searchFormState))
 		searchFormParam.orderStatus = '7'
 		searchFormParam.orderType = '1'
-		return bizOrderApi.bizOrderPage(Object.assign(parameter, searchFormParam)).then((data) => {
+		return bizOrderApi.bizSupplierOrderPage(Object.assign(parameter, searchFormParam)).then((data) => {
 			return data
 		})
 	}

+ 2 - 1
snowy-admin-web/src/views/biz/bizsupplier/index.vue

@@ -47,7 +47,7 @@
 
 						<a-divider type="vertical" v-if="hasPerm(['bizSupplierEdit', 'bizSupplierDelete', 'bizSupplierAccount'], 'or') && hasPerm('bizSupplierTransport')" />
 						<a @click="transportIndexRef.onOpen(record)" v-if="hasPerm('bizSupplierTransport')">运输</a>
-					
+
 					</a-space>
 				</template>
 			</template>
@@ -92,6 +92,7 @@
 		{
 			title: '供货商地址',
 			dataIndex: 'supplierAddress',
+			width: 200,
 			align:'center'
 		},
 		{

+ 1 - 1
snowy-admin-web/src/views/biz/bizsupplier/transportIndex.vue

@@ -32,7 +32,7 @@
 						<a-space>
 							<a @click="formRef.onOpen(record, supplierId)" v-if="hasPerm('bizSupplierTransportEdit') && record.auditStatus!='2'">编辑</a>
 							<a-divider type="vertical" v-if="hasPerm(['bizSupplierTransportEdit', 'bizSupplierTransportDelete'], 'and') && record.auditStatus!='2'" />
-							<a-button type="link" danger size="small" v-if="hasPerm('bizSupplierTransportDelete') && record.auditStatus!='2'" @click="deleteConfig(record)">删除</a-button>
+							<a-button type="link" danger size="small" v-if="hasPerm('bizSupplierTransportDelete')" @click="deleteConfig(record)">删除</a-button>
 							<a-divider type="vertical" v-if="(hasPerm(['bizSupplierTransportEdit', 'bizSupplierTransportDelete'], 'or') && record.auditStatus!='2') && hasPerm('bizSupplierTransportAudit')" />
 							<a @click="auditFormRef.showModal(record.id)" v-if="hasPerm('bizSupplierTransportAudit') && record.auditStatus!='2'">审核</a>
 						</a-space>

+ 1 - 0
snowy-admin-web/src/views/biz/record/detail.vue

@@ -21,6 +21,7 @@
 			<a-descriptions-item label="订单编号">{{ formData.orderNumber }}</a-descriptions-item>
 			<a-descriptions-item label="客户名称">{{ formData.customerName }}</a-descriptions-item>
 			<a-descriptions-item label="司机电话">{{ formData.driverMobile }}</a-descriptions-item>
+			<a-descriptions-item label="供应商名称">{{ formData.supplierName }}</a-descriptions-item>
 <!--			<a-descriptions-item label="过磅人">{{ formData.extKey1 }}</a-descriptions-item>
 			<a-descriptions-item label="打印时间">{{ formData.extKey2 }}</a-descriptions-item>-->
 		</a-descriptions>

+ 10 - 0
snowy-admin-web/src/views/biz/record/index.vue

@@ -79,6 +79,11 @@
 							<a-input v-model:value="searchFormState.customerName" placeholder="请输入客户名称" />
 						</a-form-item>
 					</a-col>
+					<a-col :span="6" v-show="advanced">
+						<a-form-item label="供应商名称" name="supplierName">
+							<a-input v-model:value="searchFormState.supplierName" placeholder="请输入供应商名称" />
+						</a-form-item>
+					</a-col>
 				</template>
 				<a-col :span="6">
 					<a-button type="primary" @click="tableRef.refresh()">查询</a-button>
@@ -256,6 +261,11 @@
 			title: '司机信息',
 			dataIndex: 'driver',
 			width: '150px'
+		},
+		{
+			title: '供应商',
+			dataIndex: 'supplierName',
+			width: '150px'
 		}
 	]
 	// 操作栏通过权限判断是否显示

+ 1 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizappointmentrecord/mapper/mapping/BizAppointmentRecordMapper.xml

@@ -126,6 +126,7 @@
         FROM
             biz_appointment_record bar
                 LEFT JOIN biz_record br ON br.appointment_id = bar.id
+                left join biz_order bo on bo.id = bar.order_id
             ${ew.customSqlSegment}
     </select>
 </mapper>

+ 51 - 24
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizappointmentrecord/service/impl/BizAppointmentRecordServiceImpl.java

@@ -51,6 +51,8 @@ import vip.xiaonuo.biz.modular.bizorder.param.BizOrderExportResult;
 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.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.service.BizOrderSupplierService;
 import vip.xiaonuo.biz.modular.bizsupplier.entity.BizSupplierTransport;
 import vip.xiaonuo.biz.modular.bizsupplier.service.BizSupplierTransportService;
 import vip.xiaonuo.biz.modular.customer.entity.BizCustomer;
@@ -133,6 +135,9 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
     @Resource
     private BizLoadTimeService bizLoadTimeService;
 
+    @Resource
+    private BizOrderSupplierService bizOrderSupplierService;
+
     @Override
     public Page<BizAppointmentRecord> page(BizAppointmentRecordPageParam bizAppointmentRecordPageParam) {
         QueryWrapper<BizAppointmentRecord> queryWrapper = getQueryWrapper(bizAppointmentRecordPageParam);
@@ -332,6 +337,18 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
             if(count>0){
                 throw new CommonException("车牌号:{}已经添加过预约!",bizAppointmentRecordAddParam.getLicenseNumber());
             }
+
+            //查询是否存在没有回签的记录
+            QueryWrapper<BizAppointmentRecord> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("bar.delete_flag","NOT_DELETE");
+            queryWrapper.isNull("br.unload_weight");
+            queryWrapper.eq("bo.order_type","1");
+            queryWrapper.eq("bar.`status`","10");
+            queryWrapper.eq("bar.license_number",bizAppointmentRecordAddParam.getLicenseNumber());
+            List<BizAppointmentRecord> recordList = this.getBaseMapper().getRecordList(queryWrapper);
+            if(ObjectUtil.isNotEmpty(recordList)){
+                throw new CommonException("请先填写回签信息,再进行预约!");
+            }
         }
         //校验手机号
         if(ObjectUtil.isNotEmpty(bizAppointmentRecordAddParam.getDriverMobile())){
@@ -353,9 +370,14 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
                     }
                 }
 
+                //查询订单下的供应商
+                List<BizOrderSupplier> supplierList = bizOrderSupplierService.list(new QueryWrapper<BizOrderSupplier>().lambda().
+                        eq(BizOrderSupplier::getOrderId, bizAppointmentRecordAddParam.getOrderId()));
+                List<String> supplierIdList = Lists.newArrayList();
+                supplierList.forEach(supplier->supplierIdList.add(supplier.getSupplierId()));
                 //查询车辆是否在供应商名下
                 BizSupplierTransport transport = bizSupplierTransportService.getOne(new QueryWrapper<BizSupplierTransport>().lambda().
-                        eq(BizSupplierTransport::getSupplierId, bizOrder.getSupplierId()).
+                        in(BizSupplierTransport::getSupplierId, supplierIdList).
                         eq(BizSupplierTransport::getTransportNo, bizAppointmentRecordAddParam.getLicenseNumber()).
                         eq(BizSupplierTransport::getAuditStatus,"2").
                         last("limit 1"));
@@ -368,31 +390,25 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
             bizAppointmentRecordAddParam.setTimeId(bizOrderService.queryEntity(bizAppointmentRecordAddParam.getOrderId()).getDeliveryTimeId());
             //查询预约时间段内可预约次数
             //BizAppointmentTime bizAppointmentTime = bizAppointmentTimeService.getById(bizAppointmentRecordAddParam.getTimeId());
+            getTimeCount(bizAppointmentRecordAddParam);
+        }
+
+
+
+    }
+
+    public void getTimeCount(BizAppointmentRecordAddParam bizAppointmentRecordAddParam){
+        lock.lock();
+        try{
             BizOrderConfig bizOrderConfig = bizOrderConfigService.getOne(new QueryWrapper<BizOrderConfig>().lambda().
                     eq(BizOrderConfig::getOrderId, bizAppointmentRecordAddParam.getOrderId()).
                     last("limit 1"));
             if(ObjectUtil.isNotNull(bizOrderConfig)){
                 //校验预约时间段是否预约满
-                //查询预约时间段内的预约记录,10:已出场   11:已签收   12:自动审核  13:销售已审核   14:已取消这些状态都占用预约名额
-                /*long count = this.count(new QueryWrapper<BizAppointmentRecord>().lambda().
-                        eq(BizAppointmentRecord::getTimeId, bizAppointmentRecordAddParam.getTimeId()).
-                        notIn(BizAppointmentRecord::getStatus, "10", "11", "12", "13", "14","15"));
-                if(count>=bizOrderConfig.getApplyNumber()){
-                    throw new CommonException("该订单已经预约满!");
-                }*/
                 if(bizOrderConfig.getApplyNumber()-bizOrderConfig.getApplyNumberAlready() <=0){
                     throw new CommonException("该订单已经预约满!");
                 }
             }
-        }
-
-        getTimeCount(bizAppointmentRecordAddParam);
-
-    }
-
-    public void getTimeCount(BizAppointmentRecordAddParam bizAppointmentRecordAddParam){
-        lock.lock();
-        try{
             //判断装卸预约次数是否满足
             if(ObjectUtil.isNotEmpty(bizAppointmentRecordAddParam.getLoadTimeId())){
                 BizLoadTime bizLoadTime = bizLoadTimeService.queryEntity(bizAppointmentRecordAddParam.getLoadTimeId());
@@ -444,6 +460,18 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
                 if(count>0){
                     throw new CommonException("车牌号:{}已经添加过预约!",bizAppointmentRecordEditParam.getLicenseNumber());
                 }
+
+                //查询是否存在没有回签的记录
+                QueryWrapper<BizAppointmentRecord> queryWrapper = new QueryWrapper<>();
+                queryWrapper.eq("bar.delete_flag","NOT_DELETE");
+                queryWrapper.isNull("br.unload_weight");
+                queryWrapper.eq("bo.order_type","1");
+                queryWrapper.eq("bar.`status`","10");
+                queryWrapper.eq("bar.license_number",bizAppointmentRecordEditParam.getLicenseNumber());
+                List<BizAppointmentRecord> recordList = this.getBaseMapper().getRecordList(queryWrapper);
+                if(ObjectUtil.isNotEmpty(recordList)){
+                    throw new CommonException("请先填写回签信息,再进行预约!");
+                }
             }
         }
         //校验手机号
@@ -466,9 +494,14 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
                     }
                 }
 
+                //查询订单下的供应商
+                List<BizOrderSupplier> supplierList = bizOrderSupplierService.list(new QueryWrapper<BizOrderSupplier>().lambda().
+                        eq(BizOrderSupplier::getOrderId, bizAppointmentRecordEditParam.getOrderId()));
+                List<String> supplierIdList = Lists.newArrayList();
+                supplierList.forEach(supplier->supplierIdList.add(supplier.getSupplierId()));
                 //查询车辆是否在供应商名下
                 BizSupplierTransport transport = bizSupplierTransportService.getOne(new QueryWrapper<BizSupplierTransport>().lambda().
-                        eq(BizSupplierTransport::getSupplierId, bizOrder.getSupplierId()).
+                        in(BizSupplierTransport::getSupplierId, supplierIdList).
                         eq(BizSupplierTransport::getTransportNo, bizAppointmentRecordEditParam.getLicenseNumber()).
                         eq(BizSupplierTransport::getAuditStatus,"2").
                         last("limit 1"));
@@ -487,12 +520,6 @@ public class BizAppointmentRecordServiceImpl extends ServiceImpl<BizAppointmentR
             if(ObjectUtil.isNotNull(bizOrderConfig)){
                 //校验预约时间段是否预约满
                 //查询预约时间段内的预约记录,10:已出场   11:已签收   12:自动审核  13:销售已审核   14:已取消这些状态都占用预约名额
-                /*long count = this.count(new QueryWrapper<BizAppointmentRecord>().lambda().
-                        eq(BizAppointmentRecord::getTimeId, bizAppointmentRecordEditParam.getTimeId()).
-                        notIn(BizAppointmentRecord::getStatus, "10", "11", "12", "13", "14","15"));
-                if(count>=bizOrderConfig.getApplyNumber()+1){
-                    throw new CommonException("该订单已经预约满!");
-                }*/
                 if(bizOrderConfig.getApplyNumber()-bizOrderConfig.getApplyNumberAlready() <=0){
                     throw new CommonException("该订单已经预约满!");
                 }

+ 12 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/controller/BizOrderController.java

@@ -68,6 +68,18 @@ public class BizOrderController {
         return CommonResult.data(bizOrderService.page(bizOrderPageParam));
     }
 
+    /**
+     * 获取供应商订单管理分页
+     *
+     * @author fanzherong
+     * @date  2025/03/21 17:16
+     */
+    @Operation(summary = "获取供应商订单管理分页")
+    @GetMapping("/biz/bizorder/pageSupplier")
+    public CommonResult<Page<BizOrder>> pageSupplier(BizOrderPageParam bizOrderPageParam) {
+        return CommonResult.data(bizOrderService.pageSupplier(bizOrderPageParam));
+    }
+
     /**
      * 添加订单管理
      *

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

@@ -23,6 +23,7 @@ import vip.xiaonuo.common.pojo.CommonEntity;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 订单管理实体
@@ -153,6 +154,10 @@ public class BizOrder extends CommonEntity{
     /**供货商id*/
     private String supplierId;
 
+    /**供应商id*/
+    @TableField(exist = false)
+    private List<String> supplierIdList;
+
     /**供应商名称*/
     @TableField(exist = false)
     private String supplierName;

+ 2 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/mapper/BizOrderMapper.java

@@ -29,6 +29,8 @@ import java.util.List;
 public interface BizOrderMapper extends BaseMapper<BizOrder> {
     Page<BizOrder> getPage(@Param("page")Page<BizOrder> page, @Param("ew") QueryWrapper<BizOrder> ew);
 
+    Page<BizOrder> getSupplierPage(@Param("page")Page<BizOrder> page, @Param("ew") QueryWrapper<BizOrder> ew);
+
     List<BizOrder> getPage(@Param("ew") QueryWrapper<BizOrder> ew);
 
     BizOrder getDetailOrder(@Param("ew") QueryWrapper<BizOrder> ew);

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

@@ -95,7 +95,7 @@
             bo.order_status,
             bo.order_weight/1000 order_weight,
             bo.net_weight/1000 net_weight,
-            ifnull(bo.shipping_weight/1000,0) shipping_weight,
+            ifnull(bos.shipping_weight/1000,0) shipping_weight,
             bgc.CONF_START_TIME,
             bgc.CONF_END_TIME,
             bo.sale_order_info,
@@ -106,20 +106,59 @@
             bo.ship_address,
             bo.create_time,
             bo.create_user,
-            bo.supplier_id,
             bo.freight_price,
-            bso.sale_price price,
-            bso.business_name,
             bs.supplier_name,
+            bos.supplier_id,
+            bo.freight_price
+        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_order_supplier bos on bos.order_id = bo.id
+                 left join biz_supplier bs on bs.id = bos.supplier_id
+            ${ew.customSqlSegment}
+    </select>
+
+    <select id="getSupplierPage" resultType="vip.xiaonuo.biz.modular.bizorder.entity.BizOrder">
+        select
+            bo.id,
+            bo.order_number,
+            bo.order_name,
+            bo.customer_id,
+            bc.name customerName,
+            bc.contact customerContactName,
+            bc.phone customerPhone,
+            bc.address customerAddress,
+            bo.good_id,
+            bg.`GOODS_NAME` goodsName,
+            bg.GOODS_MODEL goodsModel,
+            bg.GOODS_CODE goodsCode,
+            bo.order_type,
+            bo.order_source,
+            bo.order_status,
+            bo.order_weight/1000 order_weight,
+            bo.net_weight/1000 net_weight,
+            ifnull(bos.shipping_weight/1000,0) shipping_weight,
+            bgc.CONF_START_TIME,
+            bgc.CONF_END_TIME,
+            bo.sale_order_info,
+            bo.delivery_time_id,
+            bo.order_sign,
+            bo.order_reason,
+            bo.end_reason,
+            bo.ship_address,
+            bo.create_time,
+            bo.create_user,
             bo.freight_price,
-            boc.apply_number
+            bs.supplier_name,
+            bos.supplier_id,
+            bo.freight_price
         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
+            left join biz_order_supplier bos on bos.order_id = bo.id
+                 left join biz_supplier bs on bs.id = bos.supplier_id
             ${ew.customSqlSegment}
     </select>
 </mapper>

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

@@ -20,6 +20,7 @@ import jakarta.validation.constraints.NotBlank;
 import jakarta.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 订单管理添加参数
@@ -83,6 +84,9 @@ public class BizOrderAddParam {
     /**供货商id*/
     private String supplierId;
 
+    /**供应商id*/
+    private List<String> supplierIdList;
+
     /**运费单价*/
     private BigDecimal freightPrice;
 

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

@@ -100,6 +100,9 @@ public class BizOrderEditParam {
     /**供货商id*/
     private String supplierId;
 
+    /**供应商id*/
+    private List<String> supplierIdList;
+
     /**运费单价*/
     private BigDecimal freightPrice;
 

+ 2 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/param/BizOrderPageParam.java

@@ -71,4 +71,6 @@ public class BizOrderPageParam {
 
     /**订单类型*/
     private String orderType;
+
+    private String createUser;
 }

+ 7 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizorder/service/BizOrderService.java

@@ -42,6 +42,13 @@ public interface BizOrderService extends IService<BizOrder> {
      */
     Page<BizOrder> page(BizOrderPageParam bizOrderPageParam);
 
+    /**
+     * 查询供应商订单
+     * @param bizOrderPageParam
+     * @return
+     */
+    Page<BizOrder> pageSupplier(BizOrderPageParam bizOrderPageParam);
+
     /**
      * 添加订单管理
      *

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

@@ -47,6 +47,8 @@ import vip.xiaonuo.biz.modular.bizconfig.entity.BizConfig;
 import vip.xiaonuo.biz.modular.bizconfig.service.BizConfigService;
 import vip.xiaonuo.biz.modular.bizorderconfig.entity.BizOrderConfig;
 import vip.xiaonuo.biz.modular.bizorderconfig.service.BizOrderConfigService;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.service.BizOrderSupplierService;
 import vip.xiaonuo.biz.modular.bizsaleorder.entity.BizSaleOrder;
 import vip.xiaonuo.biz.modular.bizsaleorder.service.BizSaleOrderService;
 import vip.xiaonuo.biz.modular.customer.entity.BizCustomer;
@@ -108,13 +110,64 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
     @Resource
     private BizUserService bizUserService;
 
+    @Resource
+    private BizOrderSupplierService bizOrderSupplierService;
+
     @Resource(name = "loginUserApi")
     private SaBaseLoginUserApi loginUserApi;
 
     @Override
     public Page<BizOrder> page(BizOrderPageParam bizOrderPageParam) {
         QueryWrapper<BizOrder> queryWrapper = getQueryWrapper(bizOrderPageParam);
-        return this.getBaseMapper().getPage(CommonPageRequest.defaultPage(), queryWrapper);
+        Page<BizOrder> page = this.getBaseMapper().getPage(CommonPageRequest.defaultPage(), queryWrapper);
+        for(BizOrder bizOrder : page.getRecords()){
+            List<BizOrderSupplier> supplierList = bizOrderSupplierService.list(new QueryWrapper<BizOrderSupplier>().lambda().
+                    eq(BizOrderSupplier::getOrderId, bizOrder.getId()));
+            List<String> idList = Lists.newArrayList();
+            supplierList.forEach(supplier->idList.add(supplier.getSupplierId()));
+            bizOrder.setSupplierIdList(idList);
+        }
+        return page;
+    }
+
+    @Override
+    public Page<BizOrder> pageSupplier(BizOrderPageParam bizOrderPageParam) {
+        QueryWrapper<BizOrder> queryWrapper = geSuppliertQueryWrapper(bizOrderPageParam);
+        Page<BizOrder> page = this.getBaseMapper().getSupplierPage(CommonPageRequest.defaultPage(), queryWrapper);
+        return page;
+    }
+
+
+    public QueryWrapper<BizOrder> geSuppliertQueryWrapper(BizOrderPageParam bizOrderPageParam){
+        QueryWrapper<BizOrder> queryWrapper = new QueryWrapper<BizOrder>().checkSqlInjection();
+        //订单编号查询
+        if(ObjectUtil.isNotEmpty(bizOrderPageParam.getOrderNumber())){
+            queryWrapper.like("bo.order_number",bizOrderPageParam.getOrderNumber());
+        }
+        //客户名称查询
+        if(ObjectUtil.isNotEmpty(bizOrderPageParam.getCustomerName())){
+            queryWrapper.like("bc.name",bizOrderPageParam.getCustomerName());
+        }
+        //货品名称查询
+        if(ObjectUtil.isNotEmpty(bizOrderPageParam.getGoodsName())){
+            queryWrapper.like("bg.`GOODS_NAME`",bizOrderPageParam.getGoodsName());
+        }
+        //状态查询
+        if(ObjectUtil.isNotEmpty(bizOrderPageParam.getOrderStatus())){
+            queryWrapper.eq("bo.order_status",bizOrderPageParam.getOrderStatus());
+            queryWrapper.eq("bos.status","0");
+        }
+        //订单类型
+        if(ObjectUtil.isNotEmpty(bizOrderPageParam.getOrderType())){
+            queryWrapper.eq("bo.order_type",bizOrderPageParam.getOrderType());
+        }
+        // 供应商角色,查询是自己的
+        if(StpLoginUserUtil.getLoginUser().getRoleCodeList().contains("supplier")){
+            queryWrapper.eq("bos.supplier_id",StpLoginUserUtil.getLoginUser().getCustomerId());
+        }
+        queryWrapper.eq("bo.delete_flag","NOT_DELETE");
+        queryWrapper.orderByDesc("bo.create_time");
+        return queryWrapper;
     }
 
     public QueryWrapper<BizOrder> getQueryWrapper(BizOrderPageParam bizOrderPageParam){
@@ -197,6 +250,16 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
         bizOrder.setOrderStatus("0");
         this.save(bizOrder);
 
+        //存供应商表
+        if(ObjectUtil.isNotEmpty(bizOrderAddParam.getSupplierIdList())){
+            for(String supplierId : bizOrderAddParam.getSupplierIdList()){
+                BizOrderSupplier bizOrderSupplier = new BizOrderSupplier();
+                bizOrderSupplier.setOrderId(bizOrder.getId());
+                bizOrderSupplier.setSupplierId(supplierId);
+                bizOrderSupplierService.save(bizOrderSupplier);
+            }
+        }
+
         //修改时段配置内物品重量
         bizGoodsConfService.editUsedWeight(bizGoodsConf.getId(),bizOrderAddParam.getOrderWeight().multiply(new BigDecimal(1000)));
 
@@ -276,6 +339,21 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
             bizOrder.setOrderWeight(bizOrder.getOrderWeight().multiply(new BigDecimal(1000)));
         }
         this.updateById(bizOrder);
+
+        //删除供应商信息
+        List<BizOrderSupplier> supplierList = bizOrderSupplierService.list(new QueryWrapper<BizOrderSupplier>().lambda().eq(BizOrderSupplier::getOrderId, bizOrder.getId()));
+        bizOrderSupplierService.removeByIds(CollStreamUtil.toList(supplierList, BizOrderSupplier::getId));
+
+        //新增供应商信息
+        //存供应商表
+        if(ObjectUtil.isNotEmpty(bizOrderEditParam.getSupplierIdList())){
+            for(String supplierId : bizOrderEditParam.getSupplierIdList()){
+                BizOrderSupplier bizOrderSupplier = new BizOrderSupplier();
+                bizOrderSupplier.setOrderId(bizOrder.getId());
+                bizOrderSupplier.setSupplierId(supplierId);
+                bizOrderSupplierService.save(bizOrderSupplier);
+            }
+        }
     }
 
     @Transactional(rollbackFor = Exception.class)
@@ -588,6 +666,17 @@ public class BizOrderServiceImpl extends ServiceImpl<BizOrderMapper, BizOrder> i
         if(ObjectUtil.isNotEmpty(bizOrderPageParam.getOrderId())){
             queryWrapper.eq("bo.id",bizOrderPageParam.getOrderId());
         }
+        // 供应商角色,查询是自己的
+        if(StpLoginUserUtil.getLoginUser().getRoleCodeList().contains("supplier")){
+            queryWrapper.eq("bos.supplier_id",StpLoginUserUtil.getLoginUser().getCustomerId());
+        }else{
+            if(ObjectUtil.isNotEmpty(bizOrderPageParam.getCreateUser())){
+                BizUser bizUser = bizUserService.getById(bizOrderPageParam.getCreateUser());
+                if(ObjectUtil.isNotNull(bizUser)){
+                    queryWrapper.eq("bos.supplier_id",bizUser.getCustomerId());
+                }
+            }
+        }
         BizOrder detailOrder = this.getBaseMapper().getDetailOrder(queryWrapper);
         return detailOrder;
     }

+ 131 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/controller/BizOrderSupplierController.java

@@ -0,0 +1,131 @@
+/*
+ * 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.bizordersupplier.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Operation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+import vip.xiaonuo.common.annotation.CommonLog;
+import vip.xiaonuo.common.pojo.CommonResult;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierAddParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierEditParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierIdParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierPageParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.service.BizOrderSupplierService;
+
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotEmpty;
+import java.util.List;
+
+/**
+ * 订单供应商控制器
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ */
+@Tag(name = "订单供应商控制器")
+@RestController
+@Validated
+public class BizOrderSupplierController {
+
+    @Resource
+    private BizOrderSupplierService bizOrderSupplierService;
+
+    /**
+     * 获取订单供应商分页
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    @Operation(summary = "获取订单供应商分页")
+    @SaCheckPermission("/biz/bizordersupplier/page")
+    @GetMapping("/biz/bizordersupplier/page")
+    public CommonResult<Page<BizOrderSupplier>> page(BizOrderSupplierPageParam bizOrderSupplierPageParam) {
+        return CommonResult.data(bizOrderSupplierService.page(bizOrderSupplierPageParam));
+    }
+
+    /**
+     * 添加订单供应商
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    @Operation(summary = "添加订单供应商")
+    @CommonLog("添加订单供应商")
+    @PostMapping("/biz/bizordersupplier/add")
+    public CommonResult<String> add(@RequestBody @Valid BizOrderSupplierAddParam bizOrderSupplierAddParam) {
+        bizOrderSupplierService.add(bizOrderSupplierAddParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 编辑订单供应商
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    @Operation(summary = "编辑订单供应商")
+    @CommonLog("编辑订单供应商")
+    @PostMapping("/biz/bizordersupplier/edit")
+    public CommonResult<String> edit(@RequestBody @Valid BizOrderSupplierEditParam bizOrderSupplierEditParam) {
+        bizOrderSupplierService.edit(bizOrderSupplierEditParam);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 删除订单供应商
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    @Operation(summary = "删除订单供应商")
+    @CommonLog("删除订单供应商")
+    @PostMapping("/biz/bizordersupplier/delete")
+    public CommonResult<String> delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空")
+                                                   List<BizOrderSupplierIdParam> bizOrderSupplierIdParamList) {
+        bizOrderSupplierService.delete(bizOrderSupplierIdParamList);
+        return CommonResult.ok();
+    }
+
+    /**
+     * 获取订单供应商详情
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    @Operation(summary = "获取订单供应商详情")
+    @GetMapping("/biz/bizordersupplier/detail")
+    public CommonResult<BizOrderSupplier> detail(@Valid BizOrderSupplierIdParam bizOrderSupplierIdParam) {
+        return CommonResult.data(bizOrderSupplierService.detail(bizOrderSupplierIdParam));
+    }
+
+    /**
+     * 获取订单供应商列表
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    @Operation(summary = "获取订单供应商列表")
+    @GetMapping("/biz/bizordersupplier/getSupplierList")
+    public CommonResult<List<BizOrderSupplier>> getSupplierList(BizOrderSupplierPageParam bizOrderSupplierPageParam) {
+        return CommonResult.data(bizOrderSupplierService.getSupplierList(bizOrderSupplierPageParam));
+    }
+}

+ 64 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/entity/BizOrderSupplier.java

@@ -0,0 +1,64 @@
+/*
+ * 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.bizordersupplier.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import vip.xiaonuo.common.pojo.CommonEntity;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 订单供应商实体
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Getter
+@Setter
+@TableName("biz_order_supplier")
+public class BizOrderSupplier extends CommonEntity {
+
+    /** 主键ID */
+    @TableId
+    @Schema(description = "主键ID")
+    private String id;
+
+    /** 订单ID */
+    @Schema(description = "订单ID")
+    private String orderId;
+
+    /** 供应商id */
+    @Schema(description = "供应商id")
+    private String supplierId;
+
+    /** 场内重量 */
+    @Schema(description = "场内重量")
+    private BigDecimal netWeight;
+
+    /** 卸货重量 */
+    @Schema(description = "卸货重量")
+    private BigDecimal shippingWeight;
+
+    /**供应商名称*/
+    @TableField(exist = false)
+    private String supplierName;
+
+    /**
+     * 状态 0:待结算  1:已结算
+     */
+    private String status;
+}

+ 34 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/enums/BizOrderSupplierEnum.java

@@ -0,0 +1,34 @@
+/*
+ * 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.bizordersupplier.enums;
+
+import lombok.Getter;
+
+/**
+ * 订单供应商枚举
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Getter
+public enum BizOrderSupplierEnum {
+
+    /** 测试 */
+    TEST("TEST");
+
+    private final String value;
+
+    BizOrderSupplierEnum(String value) {
+        this.value = value;
+    }
+}

+ 31 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/mapper/BizOrderSupplierMapper.java

@@ -0,0 +1,31 @@
+/*
+ * 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.bizordersupplier.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+
+import java.util.List;
+
+/**
+ * 订单供应商Mapper接口
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+public interface BizOrderSupplierMapper extends BaseMapper<BizOrderSupplier> {
+
+    List<BizOrderSupplier> getSupplierList(@Param("ew") QueryWrapper<BizOrderSupplier> ew);
+}

+ 15 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/mapper/mapping/BizOrderSupplierMapper.xml

@@ -0,0 +1,15 @@
+<?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="vip.xiaonuo.biz.modular.bizordersupplier.mapper.BizOrderSupplierMapper">
+
+    <select id="getSupplierList" resultType="vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier">
+        SELECT
+            bs.supplier_name,
+            ifnull(bos.net_weight/1000,0) net_weight,
+            ifnull(bos.shipping_weight/1000,0) shipping_weight
+        FROM
+            biz_order_supplier bos
+        LEFT JOIN biz_supplier bs ON bs.id = bos.supplier_id
+        ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 50 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierAddParam.java

@@ -0,0 +1,50 @@
+/*
+ * 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.bizordersupplier.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 订单供应商添加参数
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Getter
+@Setter
+public class BizOrderSupplierAddParam {
+
+    /** 订单ID */
+    @Schema(description = "订单ID")
+    private String orderId;
+
+    /** 供应商id */
+    @Schema(description = "供应商id")
+    private String supplierId;
+
+    /** 场内重量 */
+    @Schema(description = "场内重量")
+    private BigDecimal netWeight;
+
+    /** 卸货重量 */
+    @Schema(description = "卸货重量")
+    private BigDecimal shippingWeight;
+
+}

+ 55 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierEditParam.java

@@ -0,0 +1,55 @@
+/*
+ * 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.bizordersupplier.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 订单供应商编辑参数
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Getter
+@Setter
+public class BizOrderSupplierEditParam {
+
+    /** 主键ID */
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+
+    /** 订单ID */
+    @Schema(description = "订单ID")
+    private String orderId;
+
+    /** 供应商id */
+    @Schema(description = "供应商id")
+    private String supplierId;
+
+    /** 场内重量 */
+    @Schema(description = "场内重量")
+    private BigDecimal netWeight;
+
+    /** 卸货重量 */
+    @Schema(description = "卸货重量")
+    private BigDecimal shippingWeight;
+
+}

+ 35 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierIdParam.java

@@ -0,0 +1,35 @@
+/*
+ * 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.bizordersupplier.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 订单供应商Id参数
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Getter
+@Setter
+public class BizOrderSupplierIdParam {
+
+    /** 主键ID */
+    @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotBlank(message = "id不能为空")
+    private String id;
+}

+ 53 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/param/BizOrderSupplierPageParam.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.bizordersupplier.param;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 订单供应商查询参数
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Getter
+@Setter
+public class BizOrderSupplierPageParam {
+
+    /** 当前页 */
+    @Schema(description = "当前页码")
+    private Integer current;
+
+    /** 每页条数 */
+    @Schema(description = "每页条数")
+    private Integer size;
+
+    /** 排序字段 */
+    @Schema(description = "排序字段,字段驼峰名称,如:userName")
+    private String sortField;
+
+    /** 排序方式 */
+    @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND")
+    private String sortOrder;
+
+    /** 关键词 */
+    @Schema(description = "关键词")
+    private String searchKey;
+
+    private String orderId;
+
+}

+ 85 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/service/BizOrderSupplierService.java

@@ -0,0 +1,85 @@
+/*
+ * 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.bizordersupplier.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierAddParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierEditParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierIdParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierPageParam;
+
+import java.util.List;
+
+/**
+ * 订单供应商Service接口
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+public interface BizOrderSupplierService extends IService<BizOrderSupplier> {
+
+    /**
+     * 获取订单供应商分页
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    Page<BizOrderSupplier> page(BizOrderSupplierPageParam bizOrderSupplierPageParam);
+
+    /**
+     * 添加订单供应商
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    void add(BizOrderSupplierAddParam bizOrderSupplierAddParam);
+
+    /**
+     * 编辑订单供应商
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    void edit(BizOrderSupplierEditParam bizOrderSupplierEditParam);
+
+    /**
+     * 删除订单供应商
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    void delete(List<BizOrderSupplierIdParam> bizOrderSupplierIdParamList);
+
+    /**
+     * 获取订单供应商详情
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     */
+    BizOrderSupplier detail(BizOrderSupplierIdParam bizOrderSupplierIdParam);
+
+    /**
+     * 获取订单供应商详情
+     *
+     * @author fanzherong
+     * @date  2025/06/20 11:43
+     **/
+    BizOrderSupplier queryEntity(String id);
+
+    /**
+     * 获取订单供应商列表
+     */
+    List<BizOrderSupplier> getSupplierList(BizOrderSupplierPageParam bizOrderSupplierPageParam);
+}

+ 105 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizordersupplier/service/impl/BizOrderSupplierServiceImpl.java

@@ -0,0 +1,105 @@
+/*
+ * 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.bizordersupplier.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollStreamUtil;
+import cn.hutool.core.util.ObjectUtil;
+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 org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.common.enums.CommonSortOrderEnum;
+import vip.xiaonuo.common.exception.CommonException;
+import vip.xiaonuo.common.page.CommonPageRequest;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.mapper.BizOrderSupplierMapper;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierAddParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierEditParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierIdParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.param.BizOrderSupplierPageParam;
+import vip.xiaonuo.biz.modular.bizordersupplier.service.BizOrderSupplierService;
+
+import java.util.List;
+
+/**
+ * 订单供应商Service接口实现类
+ *
+ * @author fanzherong
+ * @date  2025/06/20 11:43
+ **/
+@Service
+public class BizOrderSupplierServiceImpl extends ServiceImpl<BizOrderSupplierMapper, BizOrderSupplier> implements BizOrderSupplierService {
+
+    @Override
+    public Page<BizOrderSupplier> page(BizOrderSupplierPageParam bizOrderSupplierPageParam) {
+        QueryWrapper<BizOrderSupplier> queryWrapper = new QueryWrapper<BizOrderSupplier>().checkSqlInjection();
+        if(ObjectUtil.isAllNotEmpty(bizOrderSupplierPageParam.getSortField(), bizOrderSupplierPageParam.getSortOrder())) {
+            CommonSortOrderEnum.validate(bizOrderSupplierPageParam.getSortOrder());
+            queryWrapper.orderBy(true, bizOrderSupplierPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()),
+                    StrUtil.toUnderlineCase(bizOrderSupplierPageParam.getSortField()));
+        } else {
+            queryWrapper.lambda().orderByAsc(BizOrderSupplier::getId);
+        }
+        return this.page(CommonPageRequest.defaultPage(), queryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void add(BizOrderSupplierAddParam bizOrderSupplierAddParam) {
+        BizOrderSupplier bizOrderSupplier = BeanUtil.toBean(bizOrderSupplierAddParam, BizOrderSupplier.class);
+        this.save(bizOrderSupplier);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void edit(BizOrderSupplierEditParam bizOrderSupplierEditParam) {
+        BizOrderSupplier bizOrderSupplier = this.queryEntity(bizOrderSupplierEditParam.getId());
+        BeanUtil.copyProperties(bizOrderSupplierEditParam, bizOrderSupplier);
+        this.updateById(bizOrderSupplier);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void delete(List<BizOrderSupplierIdParam> bizOrderSupplierIdParamList) {
+        // 执行删除
+        this.removeByIds(CollStreamUtil.toList(bizOrderSupplierIdParamList, BizOrderSupplierIdParam::getId));
+    }
+
+    @Override
+    public BizOrderSupplier detail(BizOrderSupplierIdParam bizOrderSupplierIdParam) {
+        return this.queryEntity(bizOrderSupplierIdParam.getId());
+    }
+
+    @Override
+    public BizOrderSupplier queryEntity(String id) {
+        BizOrderSupplier bizOrderSupplier = this.getById(id);
+        if(ObjectUtil.isEmpty(bizOrderSupplier)) {
+            throw new CommonException("订单供应商不存在,id值为:{}", id);
+        }
+        return bizOrderSupplier;
+    }
+
+    @Override
+    public List<BizOrderSupplier> getSupplierList(BizOrderSupplierPageParam bizOrderSupplierPageParam) {
+        QueryWrapper<BizOrderSupplier> queryWrapper = new QueryWrapper<>();
+        if(ObjectUtil.isNotEmpty(bizOrderSupplierPageParam.getOrderId())){
+            queryWrapper.eq("bos.order_id",bizOrderSupplierPageParam.getOrderId());
+        }
+        queryWrapper.eq("bos.delete_flag","NOT_DELETE");
+        List<BizOrderSupplier> list = this.getBaseMapper().getSupplierList(queryWrapper);
+        return list;
+    }
+}

+ 37 - 11
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizsettle/service/impl/BizSettleServiceImpl.java

@@ -34,6 +34,8 @@ import vip.xiaonuo.biz.modular.bizconfig.service.BizConfigService;
 import vip.xiaonuo.biz.modular.bizorder.entity.BizOrder;
 import vip.xiaonuo.biz.modular.bizorder.param.BizOrderPageParam;
 import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.service.BizOrderSupplierService;
 import vip.xiaonuo.biz.modular.bizsettle.param.*;
 import vip.xiaonuo.biz.modular.bizsettleorder.entity.BizSettleOrder;
 import vip.xiaonuo.biz.modular.bizsettleorder.service.BizSettleOrderService;
@@ -67,6 +69,8 @@ public class BizSettleServiceImpl extends ServiceImpl<BizSettleMapper, BizSettle
     private BizConfigService bizConfigService;
     @Resource
     private BizAuditLogService bizAuditLogService;
+    @Resource
+    private BizOrderSupplierService bizOrderSupplierService;
 
     @Override
     public Page<BizSettle> page(BizSettlePageParam bizSettlePageParam) {
@@ -123,9 +127,18 @@ public class BizSettleServiceImpl extends ServiceImpl<BizSettleMapper, BizSettle
                 bizSettleOrderService.save(bizSettleOrder);
 
                 UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
-                //修改订单状态
-                updateWrapper.set("order_status","9").eq("id",bizOrder.getId());
-                bizOrderService.update(updateWrapper);
+                //查询供应商订单信息
+                BizOrderSupplier orderSupplier = bizOrderSupplierService.getOne(new QueryWrapper<BizOrderSupplier>().lambda().
+                        eq(BizOrderSupplier::getOrderId, bizOrder.getId()).
+                        eq(BizOrderSupplier::getSupplierId, bizOrder.getSupplierId()).
+                        last("limit 1"));
+                if(ObjectUtil.isNotNull(orderSupplier)){
+                    //修改订单状态:待结算->已结算
+                    /*updateWrapper.set("order_status","9").eq("id",bizOrder.getId());
+                    bizOrderService.update(updateWrapper);*/
+                    orderSupplier.setStatus("1");
+                    bizOrderSupplierService.updateById(orderSupplier);
+                }
             }
         }
     }
@@ -173,10 +186,16 @@ public class BizSettleServiceImpl extends ServiceImpl<BizSettleMapper, BizSettle
         for(BizSettleOrder bizSettleOrder: list){
             BizOrder bizOrder = bizOrderService.getById(bizSettleOrder.getOrderId());
             if(ObjectUtil.isNotNull(bizOrder)){
-                UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
-                //修改订单状态
-                updateWrapper.set("order_status","7").eq("id",bizOrder.getId());
-                bizOrderService.update(updateWrapper);
+                //查询供应商订单信息
+                BizOrderSupplier orderSupplier = bizOrderSupplierService.getOne(new QueryWrapper<BizOrderSupplier>().lambda().
+                        eq(BizOrderSupplier::getOrderId, bizOrder.getId()).
+                        eq(BizOrderSupplier::getSupplierId, StpLoginUserUtil.getLoginUser().getCustomerId()).
+                        last("limit 1"));
+                if(ObjectUtil.isNotNull(orderSupplier)){
+                    //修改订单状态:已结算->待结算
+                    orderSupplier.setStatus("0");
+                    bizOrderSupplierService.updateById(orderSupplier);
+                }
             }
         }
         //删除关联信息表
@@ -191,10 +210,16 @@ public class BizSettleServiceImpl extends ServiceImpl<BizSettleMapper, BizSettle
                 bizSettleOrder.setOrderId(bizOrder.getId());
                 bizSettleOrderService.save(bizSettleOrder);
 
-                UpdateWrapper<BizOrder> updateWrapper = new UpdateWrapper<>();
-                //修改订单状态
-                updateWrapper.set("order_status","9").eq("id",bizOrder.getId());
-                bizOrderService.update(updateWrapper);
+                //查询供应商订单信息
+                BizOrderSupplier orderSupplier = bizOrderSupplierService.getOne(new QueryWrapper<BizOrderSupplier>().lambda().
+                        eq(BizOrderSupplier::getOrderId, bizOrder.getId()).
+                        eq(BizOrderSupplier::getSupplierId, StpLoginUserUtil.getLoginUser().getCustomerId()).
+                        last("limit 1"));
+                if(ObjectUtil.isNotNull(orderSupplier)){
+                    //修改订单状态:已结算->待结算
+                    orderSupplier.setStatus("1");
+                    bizOrderSupplierService.updateById(orderSupplier);
+                }
             }
         }
     }
@@ -251,6 +276,7 @@ public class BizSettleServiceImpl extends ServiceImpl<BizSettleMapper, BizSettle
         for(BizSettleOrder bizSettleOrder : list){
             BizOrderPageParam bizOrderPageParam = new BizOrderPageParam();
             bizOrderPageParam.setOrderId(bizSettleOrder.getOrderId());
+            bizOrderPageParam.setCreateUser(bizSettle.getCreateUser());
             BizOrder detailOrder = bizOrderService.getDetailOrder(bizOrderPageParam);
             if(ObjectUtil.isNotNull(detailOrder)){
                 orderList.add(detailOrder);

+ 6 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizsupplier/service/impl/BizSupplierAccountServiceImpl.java

@@ -44,6 +44,7 @@ import vip.xiaonuo.biz.modular.bizsupplier.mapper.BizSupplierAccountMapper;
 import vip.xiaonuo.biz.modular.bizsupplier.service.BizSupplierAccountService;
 import vip.xiaonuo.common.util.CommonCryptogramUtil;
 import vip.xiaonuo.dev.api.DevConfigApi;
+import vip.xiaonuo.sys.api.SysUserApi;
 
 import java.util.List;
 
@@ -66,6 +67,8 @@ public class BizSupplierAccountServiceImpl extends ServiceImpl<BizSupplierAccoun
     private DevConfigApi devConfigApi;
 
     private static final String SNOWY_SYS_DEFAULT_PASSWORD_KEY = "SNOWY_SYS_DEFAULT_PASSWORD";
+    @Resource
+    private SysUserApi sysUserApi;
 
     @Override
     public Page<BizSupplierAccount> page(BizSupplierAccountPageParam bizSupplierAccountPageParam) {
@@ -146,6 +149,9 @@ public class BizSupplierAccountServiceImpl extends ServiceImpl<BizSupplierAccoun
         // 设置状态
         bizUser.setUserStatus(BizUserStatusEnum.ENABLE.getValue());
         this.bizUserMapper.insert(bizUser);
+
+        // 添加供应商角色
+        this.sysUserApi.grantRoleType(bizUser.getId(), "供应商");
     }
 
     public void deleteAccount(BizSupplierAccount bizSupplierAccount){

+ 5 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/bizsupplier/service/impl/BizSupplierServiceImpl.java

@@ -23,6 +23,7 @@ import jakarta.annotation.Resource;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.biz.modular.bizsupplier.entity.BizSupplierAccount;
 import vip.xiaonuo.biz.modular.bizsupplier.entity.BizSupplierTransport;
 import vip.xiaonuo.biz.modular.bizsupplier.enums.BizSupplierAccountEnum;
@@ -85,6 +86,10 @@ public class BizSupplierServiceImpl extends ServiceImpl<BizSupplierMapper, BizSu
         if(ObjectUtil.isNotEmpty(bizSupplierPageParam.getSupplierContactName())){
             queryWrapper.lambda().like(BizSupplier::getSupplierContactName,bizSupplierPageParam.getSupplierContactName());
         }
+        if(StpLoginUserUtil.getLoginUser().getRoleCodeList().contains("supplier")){
+            //供应商角色查询自己
+            queryWrapper.lambda().eq(BizSupplier::getId,StpLoginUserUtil.getLoginUser().getCustomerId());
+        }
         queryWrapper.lambda().eq(BizSupplier::getDeleteFlag, "NOT_DELETE");
         queryWrapper.lambda().orderByDesc(BizSupplier::getCreateTime);
         return this.page(CommonPageRequest.defaultPage(), queryWrapper);

+ 2 - 2
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/customer/service/impl/BizCustomerServiceImpl.java

@@ -168,7 +168,7 @@ public class BizCustomerServiceImpl extends ServiceImpl<BizCustomerMapper, BizCu
         this.bizUserMapper.insert(bizUser);
 
         // 添加客户角色
-        this.sysUserApi.grantRoleType(bizUser.getId(), "服务客户");
+        this.sysUserApi.grantRoleType(bizUser.getId(), "用友客户");
 
         BizCustomerAccount bizCustomerAccount = new BizCustomerAccount();
         bizCustomerAccount.setCustomerId(bizCustomer.getId());
@@ -315,7 +315,7 @@ public class BizCustomerServiceImpl extends ServiceImpl<BizCustomerMapper, BizCu
         StringBuffer buffer = new StringBuffer();
         buffer.append("appKey=").append("0ol2749zps9xhid1&").
                 append("appSecret=e4w9ylwk7grdsdzpbcq8kcedg7ailh1c&").append("nonce=1241455592&")
-                .append("timestamp=1746844849&");
+                .append("timestamp=1750670992&");
         System.out.printf(MD5.md5(buffer.toString()));
     }
 }

+ 7 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/record/entity/BizRecord.java

@@ -233,4 +233,11 @@ public class BizRecord extends CommonEntity {
 
     /**司机确认时间*/
     private Date driverConfirmTime;
+
+    /**供应商id**/
+    private String supplierId;
+
+    /**供应商名称**/
+    @TableField(exist = false)
+    private String supplierName;
 }

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

@@ -322,12 +322,14 @@
             bo.order_number,
             bo.order_type,
             bc.name customerName,
-            bar.status
+            bar.status,
+            bs.supplier_name
         from biz_record br
          left join biz_appointment_record bar on bar.id = br.appointment_id
          left join biz_order bo on bo.id = br.order_id
          left join biz_customer bc on bo.customer_id = bc.id
          left join biz_load_user blu on blu.point_id = bar.load_point_id
+         left join biz_supplier bs on bs.id = br.supplier_id
         ${ew.customSqlSegment}
     </select>
 </mapper>

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

@@ -121,4 +121,7 @@ public class BizRecordPageParam {
     /**发货确认状态*/
     private String sendRecordStatus;
 
+    /**供应商名称*/
+    private String supplierName;
+
 }

+ 55 - 0
snowy-plugin/snowy-plugin-biz/src/main/java/vip/xiaonuo/biz/modular/record/service/impl/BizRecordServiceImpl.java

@@ -54,6 +54,10 @@ import vip.xiaonuo.biz.modular.bizexcessconfig.service.BizExcessConfigService;
 import vip.xiaonuo.biz.modular.bizorder.entity.BizOrder;
 import vip.xiaonuo.biz.modular.bizorder.param.BizOrderEditParam;
 import vip.xiaonuo.biz.modular.bizorder.service.BizOrderService;
+import vip.xiaonuo.biz.modular.bizordersupplier.entity.BizOrderSupplier;
+import vip.xiaonuo.biz.modular.bizordersupplier.service.BizOrderSupplierService;
+import vip.xiaonuo.biz.modular.bizsupplier.entity.BizSupplierTransport;
+import vip.xiaonuo.biz.modular.bizsupplier.service.BizSupplierTransportService;
 import vip.xiaonuo.biz.modular.mq.MqttSubscribeClient;
 import vip.xiaonuo.biz.modular.record.param.*;
 import vip.xiaonuo.biz.modular.record.result.BizRecordExportResult;
@@ -117,6 +121,12 @@ public class BizRecordServiceImpl extends ServiceImpl<BizRecordMapper, BizRecord
     @Resource
     private BizExcessConfigService bizExcessConfigService;
 
+    @Resource
+    private BizOrderSupplierService bizOrderSupplierService;
+
+    @Resource
+    private BizSupplierTransportService bizSupplierTransportService;
+
     @Override
     public Page<BizRecord> page(BizRecordPageParam bizRecordPageParam) {
         QueryWrapper<BizRecord> queryWrapper = getQueryWrapper(bizRecordPageParam);
@@ -162,6 +172,9 @@ public class BizRecordServiceImpl extends ServiceImpl<BizRecordMapper, BizRecord
         if (ObjectUtil.isNotEmpty(bizRecordPageParam.getIsFlag())){
             //queryWrapper.eq("br.weighing_type","1");
         }
+        if (ObjectUtil.isNotEmpty(bizRecordPageParam.getSupplierName())){
+            queryWrapper.like("bs.supplier_name",bizRecordPageParam.getSupplierName());
+        }
         if (ObjectUtil.isNotEmpty(bizRecordPageParam.getSignFlag())){
             queryWrapper.in("bar.status","10","11","12","13");
             queryWrapper.eq("bo.order_type","1");
@@ -220,6 +233,13 @@ public class BizRecordServiceImpl extends ServiceImpl<BizRecordMapper, BizRecord
             bizRecord.setRelationId(bizRecord.getId());
             bizRecord.setId(null);
             bizRecord.setAppointmentUser(appointmentRecord.getCreateUser());
+            //查询供应商
+            BizSupplierTransport transport = bizSupplierTransportService.getOne(new QueryWrapper<BizSupplierTransport>().lambda().
+                    eq(BizSupplierTransport::getTransportNo, bizRecordEditParam.getLicensePlate()).
+                    last("limit 1"));
+            if(ObjectUtil.isNotNull(transport)){
+                bizRecord.setSupplierId(transport.getSupplierId());
+            }
             this.save(bizRecord);
 
             //修改预约状态
@@ -662,8 +682,26 @@ public class BizRecordServiceImpl extends ServiceImpl<BizRecordMapper, BizRecord
             if(ObjectUtil.isNotNull(bizOrder)){
                 bizOrder.setNetWeight(bizOrder.getNetWeight().add(bizRecord.getNetWeight()));
                 bizOrderService.updateById(bizOrder);
+                log.info("司机确认修改订单出场重量成功-----");
+
+                //修改供应商出场重量
+                //查询车辆属于哪个供应商
+                BizSupplierTransport transport = bizSupplierTransportService.getOne(new QueryWrapper<BizSupplierTransport>().lambda().
+                        eq(BizSupplierTransport::getTransportNo, bizRecord.getLicensePlate()).
+                        last("limit 1"));
+                if(ObjectUtil.isNotNull(transport)){
+                    //根据物流订单和供应商查询
+                    BizOrderSupplier orderSupplier = bizOrderSupplierService.getOne(new QueryWrapper<BizOrderSupplier>().lambda().
+                            eq(BizOrderSupplier::getOrderId, bizOrder.getId()).
+                            eq(BizOrderSupplier::getSupplierId, transport.getSupplierId()).
+                            last("limit 1"));
+                    orderSupplier.setNetWeight(orderSupplier.getNetWeight().add(bizRecord.getNetWeight()));
+                    bizOrderSupplierService.updateById(orderSupplier);
+                    log.info("司机确认修改供应商出场重量成功-----");
+                }
             }
 
+
             if(ObjectUtil.isNotNull(appointmentRecord)){
                 log.info("mqtt回调结束:过磅记录id:"+bizRecord.getRelationId()+",车牌号:"+bizRecord.getLicensePlate()+",状态:"+appointmentRecord.getStatus());
             }
@@ -728,6 +766,23 @@ public class BizRecordServiceImpl extends ServiceImpl<BizRecordMapper, BizRecord
                 }
                 bizOrder.setShippingWeight(bizOrder.getShippingWeight().add(bizRecordEditParam.getUnloadWeight().multiply(new BigDecimal(1000))));
                 bizOrderService.updateById(bizOrder);
+                log.info("司机确认修改订单卸货重量成功-----");
+
+                //修改供应商卸货重量
+                //查询车辆属于哪个供应商
+                BizSupplierTransport transport = bizSupplierTransportService.getOne(new QueryWrapper<BizSupplierTransport>().lambda().
+                        eq(BizSupplierTransport::getTransportNo, bizRecord.getLicensePlate()).
+                        last("limit 1"));
+                if(ObjectUtil.isNotNull(transport)){
+                    //根据物流订单和供应商查询
+                    BizOrderSupplier orderSupplier = bizOrderSupplierService.getOne(new QueryWrapper<BizOrderSupplier>().lambda().
+                            eq(BizOrderSupplier::getOrderId, bizOrder.getId()).
+                            eq(BizOrderSupplier::getSupplierId, transport.getSupplierId()).
+                            last("limit 1"));
+                    orderSupplier.setShippingWeight(orderSupplier.getShippingWeight().add(bizRecordEditParam.getUnloadWeight().multiply(new BigDecimal(1000))));
+                    bizOrderSupplierService.updateById(orderSupplier);
+                    log.info("司机确认修改供应商卸货重量成功-----");
+                }
             }
         }
     }