From 7a7b559723e20de635d3888ea58eb151993c2ca2 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期二, 16 十二月 2025 17:39:56 +0800
Subject: [PATCH] 1
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db | 0
项目代码/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_copy.js | 105 ++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj | 8
项目代码/WIDESEA_WMSClient/src/api/http.js | 3
项目代码/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue | 465 ++--------
项目代码/WIDESEA_WMSClient/src/views/Login.vue | 95 -
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj | 47 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/Level.cs | 16
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer.sln | 14
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs | 7
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs | 36
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/Log.cs | 755 +++++++++++++++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundController.cs | 32
项目代码/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue | 65 -
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs | 11
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs | 195 ++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs | 39
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs | 215 +++++
项目代码/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js | 235 ----
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/GroupPalletDto.cs | 23
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs | 89 ++
项目代码/WMS无仓储版/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs | 57 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs | 8
28 files changed, 1,849 insertions(+), 671 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/api/http.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/api/http.js"
index 4418d76..f61383c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/api/http.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/api/http.js"
@@ -13,7 +13,8 @@
let loadingInstance;
let loadingStatus = false;
if (process.env.NODE_ENV == 'development') {
- axios.defaults.baseURL = window.webConfig.webApiBaseUrl;
+ axios.defaults.baseURL = 'http://127.0.0.1:9291/';
+ // axios.defaults.baseURL = window.webConfig.webApiBaseUrl;
}
else if (process.env.NODE_ENV == 'debug') {
axios.defaults.baseURL = 'http://127.0.0.1:8098/';
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
index 61170fd..39cbe94 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/extend/Pallet.vue"
@@ -1,12 +1,11 @@
<template>
- <vol-box v-model="groupPalletVisible" :title="'缁勭洏鎿嶄綔 - 鍗曟嵁鍙凤細' + currentDocNo" :height="1000" :width="1100" :padding="20"
- :modal="true" @open="handleDialogOpen" @close="handleDialogClose">
+ <vol-box v-model="show" :title="'缁勭洏鎿嶄綔 - 鍗曟嵁鍙凤細' + orderNo" :height="1000" :width="1100" :padding="20" :modal="true">
<div class="barcode-scanner-container">
<!-- 浠撳簱閫夋嫨 - 绱у噾甯冨眬 -->
<div class="location-section compact">
<el-form :model="form" :rules="rules" ref="locationForm" class="compact-form">
- <el-form-item label="浠撳簱" prop="warehouseType" class="location-select compact-item">
+ <el-form-item label="鍏ュ簱浠撳簱" prop="warehouseType" class="location-select compact-item">
<el-select v-model="form.warehouseType" placeholder="璇烽�夋嫨浠撳簱" clearable filterable
@change="handleWarehouseChange" style="width: 100%" :loading="warehouseLoading" size="medium">
<el-option v-for="item in warehouseTypes" :key="item.warehouseType" :label="item.warehouseTypeDesc"
@@ -53,7 +52,7 @@
<!-- 鎵樼洏鏉$爜杈撳叆 -->
<div class="input-wrapper custom-input-group compact-input">
- <div class="input-label">鏂欑鐮�</div>
+ <div class="input-label">鎵樼洏鏉$爜</div>
<el-input ref="trayInput" v-model="trayBarcode" placeholder="璇锋壂鎻忔垨杈撳叆鏂欑鐮佸悗鎸夊洖杞﹂敭" clearable
:disabled="!form.locationType || !form.warehouseType" @keyup.enter.native="handleTraySubmit"
@clear="handleTrayClear" @input="handleTrayInput" class="custom-input" size="medium">
@@ -113,9 +112,10 @@
</span>
</div>
-
- <div class="table-container">
- <el-table :data="unpalletMaterials" stripe style="width: 100%" height="100%" size="small" v-loading="unpalletBarcodesLoading">
+
+ <div class="table-container">
+ <el-table :data="unpalletMaterials" stripe style="width: 100%" height="100%" size="small"
+ v-loading="unpalletBarcodesLoading">
<el-table-column type="index" label="搴忓彿" width="60" align="center"></el-table-column>
<el-table-column prop="barcode" label="鏉$爜" min-width="140" show-overflow-tooltip></el-table-column>
<el-table-column prop="materielCode" label="鐗╂枡缂栫爜" min-width="150" show-overflow-tooltip></el-table-column>
@@ -126,7 +126,7 @@
</el-table>
</div>
</el-card>
-
+
</div>
<!-- 鐗╂枡鍒楄〃 - 鍥哄畾楂樺害甯︽粴鍔ㄦ潯 -->
@@ -166,35 +166,23 @@
</el-card>
</div>
</div>
-
- <!-- <div slot="footer" class="dialog-footer">
- <el-button @click="handleCancel">鍙栨秷</el-button>
- <el-button type="primary" @click="handleConfirm">纭</el-button>
- </div> -->
+ <template #footer>
+ <el-button type="danger" size="small" @click="handleDialogClose()">鍏抽棴</el-button>
+ </template>
</vol-box>
</template>
<script>
import http from '@/api/http.js';
import VolBox from '@/components/basic/VolBox.vue';
-import VolForm from '@/components/basic/VolForm.vue';
-import VolTable from '@/components/basic/VolTable.vue';
-import { ElLoading, ElMessage, ElMessageBox } from 'element-plus';
-import { ref, onMounted, onUnmounted } from 'vue'
-import InboundOrder from '../../../views/inbound/inboundOrder.vue';
-import { th } from 'element-plus/es/locales.mjs';
export default {
- name: 'BarcodeScanner',
- components: { VolBox, VolForm, VolTable },
- props: {
- docNo: { type: String, required: true, default: '' },
- visible: { type: Boolean, required: true, default: false }
- },
-
+ components: { VolBox },
data() {
return {
+ show: false,
+ orderNo: "",
palletVisible: this.visible,
- trayBarcodeReg:/^[A-Z]\d{9}$/,
+ trayBarcodeReg: /^[A-Z]\d{9}$/,
trayBarcode: '',
barcode: '',
materials: [],
@@ -203,7 +191,7 @@
debugMode: false,
currentFocus: 'warehouse',
- unpalletBarcodes:[],
+ unpalletBarcodes: [],
unpalletBarcodesLoading: false,
unpalletMaterials: [], // 鏈粍鐩樿缁嗘暟鎹垪琛�
@@ -239,12 +227,12 @@
trigger: 'change'
}
],
- trayBarcode:[
+ trayBarcode: [
{
pattern: this.trayBarcodeReg,
message: '鎵樼洏鍙锋牸寮忛敊璇紙闇�涓�1涓ぇ鍐欏瓧姣�+9涓暟瀛楋紝濡侫000008024锛�',
trigger: 'blur'
- }
+ }
],
warehouseType: [
{
@@ -255,12 +243,8 @@
}
}
},
+
computed: {
- groupPalletVisible: {
- get() { return this.visible; },
- set(newVal) { this.$emit('update:visible', newVal); }
- },
- currentDocNo() { return this.docNo; },
// 褰撳墠閫夋嫨鐨勪粨搴撳悕绉�
currentWarehouseName() {
const warehouse = this.warehouseTypes.find(item => item.warehouseType === this.form.warehouseType);
@@ -282,9 +266,6 @@
this.resetData();
this.$nextTick(() => {
setTimeout(() => {
- // this.focusTrayInput();
- this.initwarehouseTypes(); // 鍒濆鍖栦粨搴�
- this.initLocationTypes(); // 鍒濆鍖栦粨搴撳尯鍩�
this.fetchStockStatistics(); // 鍔犺浇缁熻鏁版嵁
this.fetchUnpalletMaterialDetails();
}, 300);
@@ -310,37 +291,27 @@
}
}
},
- 'form.warehouseType'(newVal) {
- if (newVal) {
- this.form.locationType = null;
- } else {
- this.locationTypes = [];
- }
- },
-
mounted() {
- // 娣诲姞鍏ㄥ眬閿洏鐩戝惉
document.addEventListener('keypress', this.handleKeyPress);
- // 浣跨敤setTimeout纭繚DOM瀹屽叏娓叉煋鍚庡啀鑱氱劍
setTimeout(() => {
- // this.focusTrayInput();
this.focusLocationSelect();
}, 300);
},
beforeDestroy() {
- // 娓呯悊浜嬩欢鐩戝惉
document.removeEventListener('keypress', this.handleKeyPress);
this.clearAllTimers();
},
methods: {
- /**
-* 鑷畾涔変粨搴撳尯鍩熼獙璇�
-* 鍏佽鍊间负0锛屽洜涓�0鏄悎娉曠殑locationType
-*/
+ open() {
+ this.show = true;
+ this.initLocationTypes();
+ this.initwarehouseTypes();
+ this.fetchStockStatistics();
+ this.fetchUnpalletMaterialDetails();
+ },
validateLocationType(rule, value, callback) {
- // 妫�鏌ュ�兼槸鍚︿负null銆乽ndefined鎴栫┖瀛楃涓诧紝浣嗗厑璁告暟瀛�0
if (!this.form.warehouseType) {
callback(new Error('璇峰厛閫夋嫨浠撳簱'));
} else if (value === null || value === undefined || value === '') {
@@ -349,32 +320,19 @@
callback();
}
},
-
+
// 鏍规嵁鏉$爜鍒楄〃鑾峰彇璇︾粏鏁版嵁
async fetchUnpalletMaterialDetails() {
try {
- // 灏濊瘯璋冪敤鎺ュ彛鑾峰彇璇︾粏鏁版嵁
- // 娉ㄦ剰锛氬鏋滆繖涓帴鍙d笉瀛樺湪锛屽彲浠ユ敞閲婃帀鎴栨牴鎹疄闄匒PI璋冩暣
- const response = await http.post('/api/InboundOrder/UnPalletGroupBarcode?orderNo='+this.docNo, {
-
- });
-
- console.log('鏈粍鐩樻暟鎹�:', response.data);
-
-
+ const response = await http.post('/api/InboundOrder/UnPalletGroupBarcode?orderNo=' + this.docNo, {});
if (response.status && Array.isArray(response.data)) {
this.unpalletMaterials = response.data;
this.unpalletBarcodes = response.data.map(item => item.barcode || '');
this.totalStockCount = response.data.length;
} else {
- // 濡傛灉鎺ュ彛杩斿洖鏍煎紡涓嶅悓锛屽皾璇曞叾浠栨柟寮�
- // 濡傛灉鎺ュ彛涓嶅瓨鍦紝杩欓噷浼氳繘鍏atch锛岃缃负绌烘暟缁�
this.unpalletMaterials = [];
}
} catch (err) {
- console.warn('鑾峰彇鏈粍鐩樿缁嗘暟鎹帴鍙e彲鑳戒笉瀛樺湪锛屼娇鐢ㄦ潯鐮佸垪琛ㄦ樉绀猴細', err);
- // 濡傛灉鎺ュ彛涓嶅瓨鍦紝灏嗘潯鐮佸垪琛ㄨ浆鎹负绠�鍗曠殑鏄剧ず鏍煎紡
- // 鎴栬�呬繚鎸佷负绌猴紝璁╃敤鎴风煡閬撻渶瑕侀�夋嫨浠撳簱鍜屽尯鍩熸潵鏌ョ湅璇︾粏鏁版嵁
this.unpalletMaterials = this.unpalletBarcodes.map(barcode => ({
barcode: barcode,
materielCode: '-',
@@ -386,121 +344,21 @@
}));
}
},
- /**
- * 鍒濆鍖栦粨搴撳尯鍩熸暟鎹�
- */
async initLocationTypes() {
- this.locationLoading = true;
- this.error = '';
-
try {
- const response = await http.post('/api/LocationInfo/GetLocationTypes');
-
- if (response.status && Array.isArray(response.data)) {
- this.locationTypes = response.data;
- if (this.locationTypes.length === 0) {
- this.error = '鏈幏鍙栧埌浠撳簱鍖哄煙鏁版嵁';
- } else {
- // 濡傛灉鏈夐粯璁ゅ尯鍩燂紝鍙互鍦ㄨ繖閲岃缃�
- // this.form.locationType = this.locationTypes[0].locationType;
- }
- } else {
- this.error = '鑾峰彇浠撳簱鍖哄煙鏁版嵁澶辫触';
- }
- } catch (error) {
- console.error('鑾峰彇浠撳簱鍖哄煙澶辫触:', error);
- this.error = `鑾峰彇浠撳簱鍖哄煙澶辫触: ${error.message || '缃戠粶閿欒'}`;
- } finally {
- this.locationLoading = false;
+ const { data } = await this.http.post("api/LocationInfo/GetLocationTypes")
+ this.locationTypes = data
+ } catch (e) {
+ this.$message.error('鑾峰彇鍖哄煙绫诲瀷澶辫触')
}
},
-
- /**
- * 鍒濆鍖栦粨搴撴暟鎹�
- */
async initwarehouseTypes() {
- this.warehouseLoading = true;
- this.error = '';
-
try {
- const response = await http.post('/api/Warehouse/GetwarehouseTypes');
-
- if (response.status && Array.isArray(response.data)) {
- this.warehouseTypes = response.data;
- if (this.warehouseTypes.length === 0) {
- this.error = '鏈幏鍙栧埌浠撳簱鏁版嵁';
- } else {
- // 濡傛灉鏈夐粯璁ゅ尯鍩燂紝鍙互鍦ㄨ繖閲岃缃�
- // this.form.locationType = this.locationTypes[0].locationType;
- }
- } else {
- this.error = '鑾峰彇浠撳簱鏁版嵁澶辫触';
- }
- } catch (error) {
- console.error('鑾峰彇浠撳簱澶辫触:', error);
- this.error = `鑾峰彇浠撳簱澶辫触: ${error.message || '缃戠粶閿欒'}`;
- } finally {
- this.warehouseLoading = false;
+ const { data } = await this.http.post("api/Warehouse/GetwarehouseTypes")
+ this.warehouseTypes = data
+ } catch (e) {
+ this.$message.error('鑾峰彇鍖哄煙绫诲瀷澶辫触')
}
- },
-
-
- /**
- * 浠撳簱鍖哄煙鍙樻洿澶勭悊
- */
- handleLocationChange(value) {
- console.log('閫夋嫨浠撳簱鍖哄煙:', value, '绫诲瀷:', typeof value, this.currentLocationDesc);
-
- // 绔嬪嵆娓呴櫎閿欒淇℃伅
- this.error = '';
-
- // 鎵嬪姩瑙﹀彂琛ㄥ崟楠岃瘉鏇存柊
- this.$nextTick(() => {
- if (this.$refs.locationForm) {
- // 娓呴櫎璇ュ瓧娈电殑楠岃瘉鐘舵�侊紝鐒跺悗閲嶆柊楠岃瘉
- this.$refs.locationForm.clearValidate('locationType');
-
- // 鐭殏寤惰繜鍚庨噸鏂伴獙璇侊紝纭繚DOM宸叉洿鏂�
- setTimeout(() => {
- this.$refs.locationForm.validateField('locationType', (errorMsg) => {
- if (!errorMsg && (value === 0 || value)) {
- console.log('浠撳簱鍖哄煙楠岃瘉閫氳繃:', value);
- // 鍖哄煙閫夋嫨鍚庯紝鑷姩鑱氱劍鍒版墭鐩樿緭鍏ユ
- this.focusLocationSelect();
- // 鍒锋柊鏈粍鐩樻暟鎹紙鏍规嵁閫夋嫨鐨勪粨搴撳拰鍖哄煙杩囨护锛�
- }
- });
- }, 100);
- }
- });
- },
-
- /**
- * 浠撳簱鍙樻洿澶勭悊
- */
- handleWarehouseChange(value) {
- console.log('閫夋嫨浠撳簱:', value, '绫诲瀷:', typeof value, this.currentWarehouseName);
-
- // 绔嬪嵆娓呴櫎閿欒淇℃伅
- this.error = '';
-
- // 鎵嬪姩瑙﹀彂琛ㄥ崟楠岃瘉鏇存柊
- this.$nextTick(() => {
- if (this.$refs.locationForm) {
- // 娓呴櫎璇ュ瓧娈电殑楠岃瘉鐘舵�侊紝鐒跺悗閲嶆柊楠岃瘉
- this.$refs.locationForm.clearValidate('warehouseType');
-
- // 鐭殏寤惰繜鍚庨噸鏂伴獙璇侊紝纭繚DOM宸叉洿鏂�
- setTimeout(() => {
- this.$refs.locationForm.validateField('warehouseType', (errorMsg) => {
- if (!errorMsg && (value === 0 || value)) {
- console.log('浠撳簱楠岃瘉閫氳繃:', value);
- this.focusLocationSelect();
- }
- });
- }, 100);
- }
- });
},
async fetchStockStatistics() {
@@ -513,29 +371,21 @@
this.sumLoading = true;
this.sumError = '';
try {
- // 璋冪敤鍚庣缁熻鎺ュ彛锛堟浛鎹负浣犵殑瀹為檯鎺ュ彛璺緞锛�
- const response = await http.post('/api/InboundOrder/UnPalletQuantity?orderNo=' + this.docNo, {
-
- });
-
- // 缁戝畾鏁版嵁锛堝尮閰� PalletSumQuantityDTO 缁撴瀯锛�
+ const response = await http.post('/api/InboundOrder/UnPalletQuantity?orderNo=' + this.docNo, {});
if (response.data) {
- this.totalStockSum = response.data.stockSumQuantity || 0; // 鎬诲簱瀛樻暟閲�
- this.totalStockCount = response.data.stockCount || 0; // 鎬诲簱瀛樿褰曟暟
- this.uniqueUnit = response.data.uniqueUnit || ''; // 璁¢噺鍗曚綅
+ this.totalStockSum = response.data.stockSumQuantity || 0;
+ this.totalStockCount = response.data.stockCount || 0;
+ this.uniqueUnit = response.data.uniqueUnit || '';
}
} catch (err) {
this.sumError = '缁熻鍔犺浇澶辫触';
this.totalStockSum = 0;
this.totalStockCount = 0;
- console.error('搴撳瓨缁熻鏌ヨ寮傚父锛�', err);
} finally {
this.sumLoading = false;
}
},
- /**
- * 琛ㄥ崟楠岃瘉
- */
+
async validateForm() {
return new Promise((resolve) => {
if (!this.$refs.locationForm) {
@@ -550,40 +400,18 @@
this.error = '';
resolve(true);
} else {
- // 鎵嬪姩妫�鏌ocationType锛屾纭鐞嗗�间负0鐨勬儏鍐�
if (!this.from.warehouseType) {
this.error = '璇峰厛閫夋嫨浠撳簱';
}
else if (this.form.locationType === null || this.form.locationType === undefined || this.form.locationType === '') {
this.error = '璇峰厛閫夋嫨浠撳簱鍖哄煙';
- //this.$message.warning('璇峰厛閫夋嫨浠撳簱鍖哄煙');
} else {
- // 濡傛灉鍊煎瓨鍦紙鍖呮嫭0锛夛紝浣嗛獙璇佷笉閫氳繃锛屽彲鑳芥槸鍏朵粬楠岃瘉閿欒
this.error = '璇锋鏌ヨ〃鍗曞~鍐欐槸鍚︽纭�';
}
resolve(false);
}
});
});
- },
- focusWarehouseSelect() {
- if (this.$refs.locationForm) {
- const selectEl = this.$el.querySelector('.location-select:first-child .el-input__inner');
- if (selectEl) {
- selectEl.focus();
- this.currentFocus = 'warehouse';
- }
- }
- },
- // 鑱氱劍鍒颁粨搴撳尯鍩熼�夋嫨
- focusLocationSelect() {
- if (this.$refs.locationForm) {
- const selectEl = this.$el.querySelector('.location-select:nth-child(2) .el-input__inner');
- if (selectEl) {
- selectEl.focus();
- this.currentFocus = 'location';
- }
- }
},
// 鑱氱劍鍒版墭鐩樿緭鍏ユ
focusTrayInput() {
@@ -606,18 +434,10 @@
inputEl.focus();
this.currentFocus = 'material';
this.scanTarget = 'material';
-
-
- inputEl.select();
- console.log('鐗╂枡杈撳叆妗嗗唴瀹瑰凡閫変腑');
-
+ inputEl.select();
}
}
},
-
-
-
-
// 閲嶇疆鎵�鏈夋暟鎹�
resetData() {
console.log('閲嶇疆寮规鏁版嵁');
@@ -664,38 +484,9 @@
this.scanTimer = null;
}
},
-
- // 寮规鎵撳紑鏃堕噸缃暟鎹�
- handleDialogOpen() {
- console.log('寮规鎵撳紑锛岄噸缃暟鎹�');
- this.resetData();
- // 浣跨敤setTimeout纭繚DOM瀹屽叏娓叉煋鍚庡啀鑱氱劍
- this.$nextTick(() => {
- setTimeout(() => {
- this.initwarehouseTypes();
- this.initLocationTypes(); // 鍒濆鍖栦粨搴撳尯鍩�
- // 纭繚琛ㄥ崟寮曠敤瀛樺湪鍚庡啀鑱氱劍
- if (this.$refs.locationForm) {
- this.focusWarehouseSelect();
- } else {
- // 濡傛灉琛ㄥ崟寮曠敤杩樹笉瀛樺湪锛岀◢鍚庨噸璇�
- setTimeout(() => {
- this.focusWarehouseSelect();
- }, 500);
- }
- }, 300);
- });
- },
-
- // 寮规鍏抽棴鏃堕噸缃暟鎹�
handleDialogClose() {
- console.log('寮规鍏抽棴锛岄噸缃暟鎹�');
+ this.show = false;
this.resetData();
- },
-
- // 鍙栨秷鎸夐挳
- handleCancel() {
- this.palletVisible = false;
},
// 纭鎸夐挳
@@ -785,12 +576,13 @@
this.error = '';
- if(!this.trayBarcodeReg.test(currentTrayBarcode)){
- ElMessage.warning({
- message: '鎵樼洏鍙锋牸寮忛敊璇�',
- type: 'warning',
- duration: 3000
- })
+ if (!this.trayBarcodeReg.test(currentTrayBarcode)) {
+ // ElMessage.warning({
+ // message: '鎵樼洏鍙锋牸寮忛敊璇�',
+ // type: 'warning',
+ // duration: 3000
+ // })
+ this.$message("鎵樼洏鍙锋牸寮忛敊璇�");
this.focusTrayInput();
return;
}
@@ -798,11 +590,12 @@
// 璁剧疆鎵樼洏鏉$爜鍚庯紝鑷姩鑱氱劍鍒扮墿鏂欒緭鍏ユ
this.focusBarcodeInput();
- this.$message({
- message: `鎵樼洏鏉$爜宸茶缃�: ${currentTrayBarcode}`,
- type: 'success',
- duration: 2000
- });
+ // this.$message({
+ // message: `鎵樼洏鏉$爜宸茶缃�: ${currentTrayBarcode}`,
+ // type: 'success',
+ // duration: 2000
+ // });
+ this.$message.success(`鎵樼洏鏉$爜宸茶缃�: ${currentTrayBarcode}`);
},
// 娓呴櫎鎵樼洏
@@ -829,7 +622,7 @@
this.isManualInput = false;
this.isScanning = false;
},
-
+
// 澶勭悊鐗╂枡鏉$爜鎻愪氦
async handleBarcodeSubmit() {
@@ -851,71 +644,43 @@
this.error = '';
this.loading = true;
+ console.log(currentBarcode);
try {
// 璋冪敤API鏌ヨ鐗╂枡淇℃伅
const materialData = await this.fetchMaterialData(currentBarcode);
if (!materialData || materialData.length === 0) {
-
-
return;
}
- // 妫�鏌ユ槸鍚﹀凡瀛樺湪鐩稿悓鐗╂枡缂栫爜鐨勮褰�
- const exists = this.materials.some(item =>
- item.barcode === this.trayBarcode
- );
- console.log('API:', materialData)
- if (exists) {
- this.$message({
- message: '璇ユ潯鐮佸凡瀛樺湪褰撳墠鎵樼洏鐨勫垪琛ㄤ腑',
- type: 'warning',
- duration: 2000
+
+ this.materials = [];
+ materialData.forEach(item => {
+ this.materials.push({
+ ...item,
+ trayCode: this.trayBarcode,
+ locationType: this.form.locationType,
+ locationDesc: this.currentLocationDesc,
+ scanTime: this.formatTime(new Date())
});
-
- } else {
+ });
+ this.orderNo = materialData[0].orderNo;
- materialData.forEach(item => {
+ this.fetchStockStatistics();
+ // 娓呯┖鐗╂枡杈撳叆妗嗗苟淇濇寔鑱氱劍
+ this.barcode = '';
+ this.scanCode = ''; // 娓呯┖鎵爜缂撳瓨
+ this.isScanning = false;
- // 濡傛灉涓嶅瓨鍦紝娣诲姞鏂扮墿鏂�
- this.materials.push({
- ...item,
- trayCode: this.trayBarcode,
- locationType: this.form.locationType,
- locationDesc: this.currentLocationDesc,
- scanTime: this.formatTime(new Date())
- });
- });
-
- const removeIndex = this.unpalletMaterials.findIndex(item => item.barcode === currentBarcode);
- if (removeIndex > -1) {
- this.unpalletMaterials.splice(removeIndex, 1); // 鍒犻櫎鏈粍鐩樺搴旀暟鎹�
- this.unpalletBarcodes = this.unpalletMaterials.map(item => item.barcode || ''); // 鏇存柊鏉$爜鏁扮粍
- this.totalStockCount = Math.max(0, this.totalStockCount - 1);
- }
-
- this.$message({
- message: `鎴愬姛娣诲姞鏉$爜: ${currentBarcode}`,
- type: 'success',
- duration: 2000
- });
-
- this.fetchStockStatistics();
- // 娓呯┖鐗╂枡杈撳叆妗嗗苟淇濇寔鑱氱劍
- this.barcode = '';
- this.scanCode = ''; // 娓呯┖鎵爜缂撳瓨
- this.isScanning = false;
-
- setTimeout(() => {
- this.focusBarcodeInput();
- }, 100);
- }
+ setTimeout(() => {
+ this.focusBarcodeInput();
+ }, 100);
} catch (err) {
this.error = err.message || '鏌ヨ鏉$爜淇℃伅澶辫触锛岃閲嶈瘯';
this.focusBarcodeInput();
setTimeout(() => {
- // 閫変腑杈撳叆妗嗗唴鐨勯敊璇唴瀹癸紙纭繚focus瀹屾垚鍚庢墽琛岋級
- const inputEl = this.$refs.barcodeInput?.$el?.querySelector('input');
- if (inputEl) inputEl.select();
- }, 100);
+ // 閫変腑杈撳叆妗嗗唴鐨勯敊璇唴瀹癸紙纭繚focus瀹屾垚鍚庢墽琛岋級
+ const inputEl = this.$refs.barcodeInput?.$el?.querySelector('input');
+ if (inputEl) inputEl.select();
+ }, 100);
} finally {
this.loading = false;
}
@@ -924,18 +689,15 @@
// API璇锋眰 - 鏇挎崲涓哄疄闄呯殑API璋冪敤
async fetchMaterialData(barcode) {
try {
- const response = await http.post('/api/InboundOrder/BarcodeMaterielGroup',
+ const response = await http.post('/api/Inbound/GroupPallet',
{
palletCode: this.trayBarcode,
- orderNo: this.docNo,
- barcodes: barcode,
+ barcode: barcode,
locationTypeDesc: this.currentLocationDesc,
locationType: this.form.locationType, // 娣诲姞浠撳簱鍖哄煙淇℃伅
warehouseType: this.form.warehouseType
}
);
-
-
let materialData;
if (typeof response.data === 'string') {
@@ -946,7 +708,6 @@
}
} else {
- // 濡傛灉杩斿洖鐨勬槸JSON瀵硅薄锛岀洿鎺ヤ娇鐢�
materialData = response.data;
}
if (!response.status) {
@@ -957,8 +718,6 @@
} catch (error) {
console.error('API璋冪敤澶辫触:', error);
-
-
}
},
@@ -1377,35 +1136,35 @@
}
.unpallet-section.compact {
- margin-bottom: 8px;
- flex-shrink: 0;
-}
-
-.unpallet-card {
- flex-shrink: 0;
-}
-
-.unpallet-barcode-list {
- display: flex;
- flex-wrap: wrap;
- gap: 6px;
- padding: 8px 0;
- max-height: 180px;
- overflow-y: auto;
-}
-
-.unpallet-barcode-list>>>.el-tag {
- cursor: pointer;
- max-width: calc(33.333% - 4px);
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-@media (max-width: 768px) {
- .unpallet-barcode-list>>>.el-tag {
- max-width: calc(50% - 4px);
+ margin-bottom: 8px;
+ flex-shrink: 0;
}
-}
+
+ .unpallet-card {
+ flex-shrink: 0;
+ }
+
+ .unpallet-barcode-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 6px;
+ padding: 8px 0;
+ max-height: 180px;
+ overflow-y: auto;
+ }
+
+ .unpallet-barcode-list>>>.el-tag {
+ cursor: pointer;
+ max-width: calc(33.333% - 4px);
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+
+ @media (max-width: 768px) {
+ .unpallet-barcode-list>>>.el-tag {
+ max-width: calc(50% - 4px);
+ }
+ }
}
</style>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
index 335d0cf..108a17e 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder.js"
@@ -1,13 +1,11 @@
//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
-import http from '@/api/http.js'
-import { h, createVNode, render, reactive, ref } from 'vue';
-import { ElDialog, ElForm, ElFormItem, ElInput, ElButton, ElMessage, ElSelect, ElOption } from 'element-plus'; // 寮曞叆ElMessage锛岃В鍐虫彁绀烘棤鍙嶅簲
import gridHeader from './extend/EmptyTrayInbound.vue'
+import gridBody from '../inbound/extend/Pallet.vue'
let extension = {
components: {
//鏌ヨ鐣岄潰鎵╁睍缁勪欢
gridHeader: gridHeader,
- gridBody: '',
+ gridBody: gridBody,
gridFooter: '',
//鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
modelHeader: '',
@@ -17,32 +15,30 @@
tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
buttons: {
view: [
- {
- name: '缁勭洏',
- type: 'primary',
- value: '缁勭洏',
- onClick: function () { // 淇1锛氱Щ闄ゆ棤鐢╮ow鍙傛暟锛屽姞鏃ュ織璋冭瘯
- console.log('缁勭洏鎸夐挳琚偣鍑伙紝寮�濮嬫牎楠�');
- const selectedRows = this.$refs.table.getSelected();
+ // {
+ // name: '缁勭洏',
+ // type: 'primary',
+ // value: '缁勭洏',
+ // onClick: function () { // 淇1锛氱Щ闄ゆ棤鐢╮ow鍙傛暟锛屽姞鏃ュ織璋冭瘯
+ // const selectedRows = this.$refs.table.getSelected();
+ // // 鏍¢獙1锛氭槸鍚﹂�変腑琛�
+ // if (selectedRows.length === 0) {
+ // console.log('鏍¢獙涓嶉�氳繃锛氭湭閫変腑浠讳綍鍗曟嵁');
+ // ElMessage.warning('璇烽�夋嫨涓�鏉″崟鎹�');
+ // return;
+ // }
+ // // 鏍¢獙2锛氭槸鍚﹂�変腑鍗曡
+ // if (selectedRows.length > 1) {
+ // console.log('鏍¢獙涓嶉�氳繃锛氶�変腑澶氳鍗曟嵁');
+ // ElMessage.warning('鍙兘閫夋嫨涓�鏉″崟鎹�');
+ // return;
+ // }
- // 鏍¢獙1锛氭槸鍚﹂�変腑琛�
- if (selectedRows.length === 0) {
- console.log('鏍¢獙涓嶉�氳繃锛氭湭閫変腑浠讳綍鍗曟嵁');
- ElMessage.warning('璇烽�夋嫨涓�鏉″崟鎹�');
- return;
- }
- // 鏍¢獙2锛氭槸鍚﹂�変腑鍗曡
- if (selectedRows.length > 1) {
- console.log('鏍¢獙涓嶉�氳繃锛氶�変腑澶氳鍗曟嵁');
- ElMessage.warning('鍙兘閫夋嫨涓�鏉″崟鎹�');
- return;
- }
+ // const targetRow = selectedRows[0];
- const targetRow = selectedRows[0];
-
- this.$emit('openPalletDialog', targetRow.inboundOrderNo);
- }
- },
+ // this.$emit('openPalletDialog', targetRow.inboundOrderNo);
+ // }
+ // },
{
name: '鎾ら攢缁勭洏',
type: 'primary',
@@ -245,181 +241,6 @@
}
}
},
- // {
- // name: '绌烘墭鐩樺叆搴�',
- // type: 'primary',
- // value: '绌烘墭鐩樺叆搴�',
-
- // onClick: function () {
- // const mountNode = document.createElement('div');
- // document.body.appendChild(mountNode);
-
- // // 鍝嶅簲寮忚〃鍗曟暟鎹細鏂欑鐮侊紙蹇呭~锛屾壂鐮佹灙/鎵嬪姩杈撳叆锛�
- // const formData = reactive({
- // boxCode: '',
- // warehouseCode: ''
- // });
-
- // const warehouses = ref([]);
- // const isLoadingWarehouses = ref(false);
-
- // const getWarehouseList = async () => {
- // isLoadingWarehouses.value = true;
- // try {
- // const { data, status } = await http.post('/api/LocationInfo/GetLocationTypes');
- // if (status && Array.isArray(data)) {
- // // 鏍煎紡鍖栦粨搴撻�夐」锛氶�傞厤ElSelect鐨刲abel-value鏍煎紡
- // warehouses.value = data.map(item => ({
- // label: item.locationTypeDesc,
- // value: item.locationType
- // }));
- // } else {
- // ElMessage.error('鑾峰彇鍖哄煙鍒楄〃澶辫触');
- // warehouses.value = [];
- // }
- // } catch (err) {
- // ElMessage.error('鍖哄煙鏁版嵁璇锋眰寮傚父锛岃绋嶅悗閲嶈瘯');
- // warehouses.value = [];
- // } finally {
- // isLoadingWarehouses.value = false;
- // }
- // };
-
- // // 鎻愪氦琛ㄥ崟鐨勭粺涓�閫昏緫锛堜緵鍥炶溅瑙﹀彂鍜屾寜閽偣鍑诲叡鐢級
- // const submitForm = async () => {
- // const formRef = vnode.component.refs.batchInForm;
- // try {
- // // 鎵ц琛ㄥ崟鏍¢獙锛堟枡绠辩爜蹇呭~锛�
- // await formRef.validate();
- // } catch (err) {
- // ElMessage.warning('璇疯緭鍏ユ湁鏁堢殑鏂欑鐮�');
- // return;
- // }
-
-
- // http.post('/api/InboundOrder/EmptyMaterielGroup', {
- // palletCode: formData.boxCode.trim(),
- // warehouseCode: formData.warehouseCode
- // }).then(({ data, status, message }) => {
- // if (status) {
- // ElMessage.success(`鍏ュ簱鎴愬姛锛屾枡绠辩爜锛�${formData.boxCode.trim()}`);
- // this.refresh();
- // formData.boxCode = '';
-
- // setTimeout(() => {
- // const inputRef = vnode.component.refs.boxCodeInput;
- // inputRef?.focus();
- // }, 100);
- // } else {
- // ElMessage.error(message || data?.message || '鍏ュ簱澶辫触');
- // selectBoxCodeInput();
- // }
- // }).catch(() => {
- // ElMessage.error('璇锋眰澶辫触锛岃绋嶅悗閲嶈瘯');
- // selectBoxCodeInput();
- // });
- // };
-
- // const selectBoxCodeInput = () => {
- // setTimeout(() => {
- // const inputRef = vnode.component.refs.boxCodeInput;
- // if (inputRef) {
- // const targetInput = inputRef.$el?.querySelector('input') || inputRef;
- // targetInput?.focus();
- // targetInput?.select();
- // }
- // }, 100);
- // }
- // const vnode = createVNode(ElDialog, {
- // title: '绌烘墭鐩樺叆搴�',
- // width: '400px',
- // modelValue: true,
- // appendToBody: true,
-
- // onOpened: async () => {
- // await getWarehouseList();
- // const inputRef = vnode.component.refs.boxCodeInput;
- // inputRef?.focus();
- // },
- // 'onUpdate:modelValue': (isVisible) => {
- // if (!isVisible) {
- // render(null, mountNode);
- // document.body.removeChild(mountNode);
- // }
- // }
- // }, {
- // default: () => h(ElForm, {
- // model: formData,
- // rules: {
- // boxCode: [
- // { required: true, message: '璇疯緭鍏ユ枡绠辩爜', trigger: ['blur', 'enter'] }
- // ],
- // warehouseCode: [
- // { required: true, message: '璇烽�夋嫨鍖哄煙', trigger: ['change', 'blur'] }
- // ]
- // },
- // ref: 'batchInForm'
- // }, [
- // //浠撳簱鏁版嵁
- // h(ElFormItem, { label: '鍖哄煙', prop: 'warehouseCode', required: true }, [
- // h(ElSelect, {
- // modelValue: formData.warehouseCode,
- // 'onUpdate:modelValue': (val) => {
- // formData.warehouseCode = val;
- // },
- // placeholder: '璇烽�夋嫨鍏ュ簱鍖哄煙',
- // filterable: true, // 鏀寔鎼滅储浠撳簱
- // loading: isLoadingWarehouses.value, // 鍔犺浇鐘舵��
- // style: { width: '100%' }
- // }, [
- // // 娓叉煋浠撳簱涓嬫媺閫夐」
- // warehouses.value.map(item => h(ElOption, {
- // label: item.label,
- // value: item.value
- // }))
- // ])
- // ]),
- // // 鏂欑鐮佽緭鍏ラ」锛堟敮鎸佽仛鐒︺�佸洖杞︽彁浜わ級
- // h(ElFormItem, { label: '鏂欑鐮�', prop: 'boxCode', required: true }, [
- // h(ElInput, {
- // type: 'text',
- // modelValue: formData.boxCode,
- // 'onUpdate:modelValue': (val) => {
- // formData.boxCode = val;
- // },
- // ref: 'boxCodeInput',
- // placeholder: '鎵爜杈撳叆鎴栨墜鍔ㄨ緭鍏ユ枡绠辩爜',
- // // 鐩戝惉鍥炶溅浜嬩欢锛堟壂鐮佹灙榛樿浼氬彂閫佸洖杞︼級
- // onKeydown: (e) => {
- // if (e.key === 'Enter') {
- // e.preventDefault();
- // submitForm();
- // }
- // }
- // })
- // ]),
- // // 搴曢儴鎸夐挳鍖�
- // h('div', { style: { textAlign: 'right', marginTop: '16px' } }, [
- // h(ElButton, {
- // type: 'text',
- // onClick: () => {
- // render(null, mountNode);
- // document.body.removeChild(mountNode);
- // ElMessage.info('鍙栨秷鍏ュ簱浠诲姟');
- // }
- // }, '鍙栨秷'),
- // h(ElButton, {
- // type: 'primary',
- // onClick: submitForm
- // }, '纭畾')
- // ])
- // ])
- // });
-
- // vnode.appContext = this.$.appContext;
- // render(vnode, mountNode);
- // }
- // }
], box: [], detail: []
},
methods: {
@@ -431,7 +252,13 @@
this.$refs.gridHeader.open();
}
}
-
+ var GroupPalletBtn = this.buttons.find(x => x.value == "GroupPallet");
+ if (GroupPalletBtn != null) {
+ GroupPalletBtn.onClick = () => {
+ // console.log(this.$refs)
+ this.$refs.gridBody.open();
+ }
+ }
this.columns.forEach(column => {
if (column.field === 'orderStatistics') {
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_copy.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_copy.js"
new file mode 100644
index 0000000..177fe52
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/inboundOrder_copy.js"
@@ -0,0 +1,105 @@
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+import gridHeader from './extend/EmptyTrayInbound.vue'
+import gridBody from './extend/Pallet.vue'
+let extension = {
+ components: {
+ //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+ gridHeader: gridHeader,
+ gridBody: gridBody,
+ gridFooter: '',
+ //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ buttons: { view: [], box: [], detail: [] },
+ methods: {
+ //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+ onInit() {
+ var EmptyTrayInboundBtn = this.buttons.find(x => x.value == "EmptyTrayInbound");
+ if (EmptyTrayInboundBtn != null) {
+ EmptyTrayInboundBtn.onClick = () => {
+ this.$refs.gridHeader.open();
+ }
+ }
+ var GroupPalletBtn = this.buttons.find(x => x.value == "GroupPallet");
+ if (GroupPalletBtn != null) {
+ GroupPalletBtn.onClick = () => {
+ // console.log(this.$refs)
+ this.$refs.gridBody.open();
+ }
+ }
+
+ this.columns.forEach(column => {
+ if (column.field === 'orderStatistics') {
+ column.formatter = (row) => {
+ // 鏍¢獙details鏄惁瀛樺湪涓旀湁鏁版嵁
+ if (row.details && row.details.length > 0) {
+ //鎸塵aterielCode鍒嗙粍缁熻orderQuantity鎬诲拰
+ const materielSumMap = row.details.reduce((acc, item) => {
+ const materielCode = item.materielCode || '鏈煡鐗╂枡';
+ const quantity = Number(item.orderQuantity) || 0;
+ acc[materielCode] = (acc[materielCode] || 0) + quantity;
+ return acc;
+ }, {});
+
+ //姣忎釜鐗╂枡椤圭敓鎴愮嫭绔媎iv锛岃法琛屾樉绀�
+ const displayItems = Object.entries(materielSumMap).map(([code, total]) => {
+ return `<div style="line-height: 1.5; white-space: normal;">${code}锛�${total}涓�</div>`;
+ });
+ const displayContent = displayItems.join('');
+ return `<div style="color: #F56C6C; white-space: normal; word-break: break-all;">${displayContent}</div>`;
+ } else {
+ return '<span style="color: #F56C6C">鏃犲叆搴撴槑缁�</span>';
+ }
+ };
+ }
+ });
+ },
+ onInited() {
+
+ //妗嗘灦鍒濆鍖栭厤缃悗
+ //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+ //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+ // this.searchFormFields.orderType=[0]
+ let wheres = [{
+ 'name': 'orderType',
+ 'value': '0',
+ 'displayType': 'text'
+ }];
+
+
+ param.wheres.push(...wheres);
+ return true;
+ },
+ searchAfter(result) {
+ return true;
+ },
+ addBefore(formData) {
+ //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+ return true;
+ },
+ updateBefore(formData) {
+ //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+ this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+ },
+ modelOpenAfter(row) {
+ //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+ //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+ //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+ //(3)this.editFormFields.瀛楁='xxx';
+ //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+ //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/Login.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/Login.vue"
index d810f15..99d69b8 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/Login.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/Login.vue"
@@ -13,63 +13,31 @@
<div class="login-text-small">WELCOME TO LOGIN</div>
<div class="item">
<div class="input-icon el-icon-user"></div>
- <input
- type="text"
- v-focus
- v-model="userInfo.userName"
- placeholder="璇疯緭鍏ヨ处鍙�"
- />
+ <input type="text" v-focus v-model="userInfo.userName" placeholder="璇疯緭鍏ヨ处鍙�" />
</div>
<div class="item">
<div class="input-icon el-icon-lock"></div>
- <input
- type="password"
- v-focus
- v-model="userInfo.password"
- placeholder="璇疯緭鍏ュ瘑鐮�"
- />
+ <input type="password" v-focus v-model="userInfo.password" placeholder="璇疯緭鍏ュ瘑鐮�" />
</div>
- <div class="item station-select-item">
+ <div class="item station-select-item">
<div class="input-icon el-icon-lock"></div>
- <el-select
- v-model="stationValue"
- placeholder="閫夋嫨绔欏彴"
- class="station-select"
- @change="handleStationChange"
- >
- <el-option
- v-for="item in stationOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- />
+ <el-select v-model="stationValue" placeholder="閫夋嫨绔欏彴" class="station-select" @change="handleStationChange">
+ <el-option v-for="item in stationOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
-
+
<div class="item">
<div class="input-icon el-icon-mobile"></div>
- <input
- v-focus
- type="text"
- v-model="userInfo.verificationCode"
- placeholder="杈撳叆楠岃瘉鐮�"
- />
+ <input v-focus type="text" v-model="userInfo.verificationCode" placeholder="杈撳叆楠岃瘉鐮�" />
<div class="code" @click="getVierificationCode">
<img v-show="codeImgSrc != ''" :src="codeImgSrc" />
</div>
</div>
</div>
<div class="loging-btn">
- <el-button
- size="large"
- :loading="loading"
- color="#3a6cd1"
- :dark="true"
- @click="login"
- long
- >
+ <el-button size="large" :loading="loading" color="#3a6cd1" :dark="true" @click="login" long>
<span v-if="!loading">鐧诲綍</span>
<span v-else>姝e湪鐧诲綍...</span>
</el-button>
@@ -100,17 +68,17 @@
const codeImgSrc = ref("");
const value = ref("");
const userInfo = reactive({
- userName: "",
- password: "",
- verificationCode: "",
+ userName: "admin",
+ password: "123456",
+ verificationCode: "1234",
UUID: undefined,
});
- const stationValue = ref("");
- const stationOptions = reactive([
+ const stationValue = ref("");
+ const stationOptions = reactive([
{ label: "绔欏彴2", value: "2-1" },
{ label: "绔欏彴3", value: "3-1" },
]);
- // 鍒濆鍖栫珯鍙板��
+ // 鍒濆鍖栫珯鍙板��
onMounted(() => {
// 浠庢湰鍦板瓨鍌ㄥ姞杞戒繚瀛樼殑绔欏彴鍊�
const savedStation = stationManager.getStation();
@@ -149,7 +117,7 @@
return $message.error("璇疯緭鍏ラ獙璇佺爜");
}
- // 纭繚绔欏彴鍊煎凡淇濆瓨
+ // 纭繚绔欏彴鍊煎凡淇濆瓨
if (stationValue.value) {
stationManager.saveStation(stationValue.value);
store.commit("setStation", stationValue.value);
@@ -184,7 +152,7 @@
userInfo,
loginPress,
openUrl,
- stationOptions,
+ stationOptions,
stationValue,
handleStationChange,
};
@@ -228,7 +196,7 @@
&.station-select-item {
padding-left: 0;
-
+
.input-icon {
margin-left: 20px;
min-width: 20px;
@@ -367,9 +335,11 @@
border: none;
padding: 0;
background: transparent;
-
+
// 绉婚櫎鎵�鏈塰over銆乫ocus鏁堟灉
- &:hover, &:focus, &.is-focus {
+ &:hover,
+ &:focus,
+ &.is-focus {
box-shadow: none !important;
outline: none !important;
border: none !important;
@@ -383,7 +353,7 @@
font-size: 16px;
color: #323233;
cursor: pointer; // 娣诲姞鎸囬拡鏄剧ず涓哄彲鐐瑰嚮
-
+
&::placeholder {
color: #c0c4cc;
}
@@ -403,7 +373,9 @@
}
// 绉婚櫎鏁翠釜缁勪欢涓婄殑浠讳綍hover鍜宖ocus鏍峰紡
- &:hover, &:focus, &.is-focus {
+ &:hover,
+ &:focus,
+ &.is-focus {
:deep(.el-input__wrapper) {
box-shadow: none !important;
outline: none !important;
@@ -417,35 +389,35 @@
border: 1px solid #ececec;
border-radius: 5px;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-
+
.el-select-dropdown__item {
height: 45px;
line-height: 45px;
font-size: 16px;
color: #323233;
padding: 0 20px;
-
+
&:hover {
background-color: #f5f7fa;
}
-
+
&.selected {
color: #3a6cd1;
font-weight: normal;
background-color: #f0f7ff;
}
}
-
+
// 闅愯棌婊氬姩鏉℃垨璋冩暣婊氬姩鏉℃牱寮�
&::-webkit-scrollbar {
width: 6px;
}
-
+
&::-webkit-scrollbar-track {
background: #f1f1f1;
border-radius: 3px;
}
-
+
&::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 3px;
@@ -454,7 +426,9 @@
// 绉婚櫎鎵�鏈塱nput鐨刦ocus鍜宧over鏍峰紡
input {
- &:hover, &:focus {
+
+ &:hover,
+ &:focus {
border: none !important;
outline: none !important;
box-shadow: none !important;
@@ -532,6 +506,7 @@
<style lang="less" scoped>
@media screen and (max-width: 700px) {
+
.login-bg,
.account-info,
.app-link,
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
index c59e488..90d3829 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/inboundOrder.vue"
@@ -1,38 +1,14 @@
<template>
- <view-grid
- ref="grid"
- @openPalletDialog="handleOpenPalletDialog"
- :columns="columns"
- :detail="detail"
- :editFormFields="editFormFields"
- :editFormOptions="editFormOptions"
- :searchFormFields="searchFormFields"
- :searchFormOptions="searchFormOptions"
- :table="table"
- :extend="extend"
- >
+ <view-grid ref="grid" @openPalletDialog="handleOpenPalletDialog" :columns="columns" :detail="detail"
+ :editFormFields="editFormFields" :editFormOptions="editFormOptions" :searchFormFields="searchFormFields"
+ :searchFormOptions="searchFormOptions" :table="table" :extend="extend">
</view-grid>
- <!-- 2. 缁勭洏寮圭獥锛氱‘淇漰rops鍜屼簨浠剁粦瀹氭纭� -->
- <PalletDialog
- v-model:visible="palletVisible"
- :docNo="currentPalletDocNo"
- @back-success="handlePalletBackSuccess"
- ></PalletDialog>
-
</template>
- <script>
-import extend from "@/extension/inbound/inboundOrder.js";
-import ViewGrid from '@/components/basic/ViewGrid/ViewGrid.vue';
+<script>
+import extend from "@/extension/inbound/inboundOrder_copy.js";
import { ref, defineComponent } from "vue";
-import PalletDialog from "@/extension/inbound/extend/Pallet.vue";
export default defineComponent({
- components: {
- // 鍏抽敭淇2锛氱粍浠舵敞鍐屽悕涓庢ā鏉挎爣绛惧悕閫傞厤锛坘ebab-case瀵瑰簲view-grid锛�
- viewGrid: ViewGrid, // 娉ㄥ唽涓簁ebab-case锛屾ā鏉跨敤<view-grid>
- PalletDialog // 娉ㄥ唽缁勭洏寮圭獥
-
- },
setup() {
const table = ref({
key: "id",
@@ -57,7 +33,7 @@
type: "select",
dataKey: "inOrderType",
data: [],
- hidden:true
+ hidden: true
},
{
field: "inboundOrderNo",
@@ -149,7 +125,7 @@
width: 150,
align: "left",
bind: { key: "inOrderType", data: [] },
- hidden:true
+ hidden: true
},
{
field: "businessType",
@@ -193,7 +169,7 @@
field: "returnToMESStatus",
title: "鍥炰紶MES鐘舵��",
width: 120,
- bind: { key: "createType", data:[{key:0, value:"鏈洖浼�"},{key:1, value:"宸插洖浼犳垚鍔�"},{key:2, value:"鍥炰紶澶辫触"}]},
+ bind: { key: "createType", data: [{ key: 0, value: "鏈洖浼�" }, { key: 1, value: "宸插洖浼犳垚鍔�" }, { key: 2, value: "鍥炰紶澶辫触" }] },
},
{
field: "factoryArea",
@@ -375,20 +351,7 @@
sortName: "id",
key: "id",
});
- // 6. 缁勭洏寮圭獥鑱斿姩锛堟墍鏈夊彉閲忓繀椤昏繑鍥烇級
- const palletVisible = ref(false);
- const currentPalletDocNo = ref("");
- const handleOpenPalletDialog = (docNo) => {
- console.log('涓荤粍浠舵敹鍒扮粍鐩樹簨浠讹紝鍗曟嵁鍙凤細', docNo);
- currentPalletDocNo.value = docNo;
- palletVisible.value = true;
- };
-
- const handlePalletBackSuccess = () => {
- console.log('缁勭洏鍥炰紶鎴愬姛锛屽埛鏂拌〃鏍�');
- grid.value?.refresh(); // 姝ゆ椂gridRef宸叉寕杞斤紝鍙皟鐢ㄦ柟娉�
- };
return {
table,
@@ -399,12 +362,12 @@
searchFormOptions,
columns,
detail,
- // 缁勭洏寮圭獥鐩稿叧
- PalletDialog, // 寮圭獥缁勪欢锛堟棤闇�杩斿洖锛屾敞鍐屽嵆鍙紝浣嗗彉閲忛渶杩斿洖锛�
- palletVisible,
- currentPalletDocNo,
- handleOpenPalletDialog,
- handlePalletBackSuccess
+ // // 缁勭洏寮圭獥鐩稿叧
+ // PalletDialog, // 寮圭獥缁勪欢锛堟棤闇�杩斿洖锛屾敞鍐屽嵆鍙紝浣嗗彉閲忛渶杩斿洖锛�
+ // palletVisible,
+ // currentPalletDocNo,
+ // handleOpenPalletDialog,
+ // handlePalletBackSuccess
};
},
});
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db"
new file mode 100644
index 0000000..8ad8c3d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
new file mode 100644
index 0000000..c67f2e1
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
new file mode 100644
index 0000000..2bcc48b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/CodeChunks.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
new file mode 100644
index 0000000..cc734c2
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
new file mode 100644
index 0000000..d00036d
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-shm"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
new file mode 100644
index 0000000..9268501
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1231.31060/SemanticSymbols.db-wal"
Binary files differ
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs"
new file mode 100644
index 0000000..2aaeea4
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/FileUtil.cs"
@@ -0,0 +1,39 @@
+锘縰sing System;
+using System.IO;
+using System.Threading;
+
+namespace LogLibrary.Log
+{
+ public static class FileUtil
+ {
+
+ /// <summary>
+ /// 杩藉姞鍐呭鍒版寚瀹氭枃浠朵腑
+ /// </summary>
+ /// <param name="filePath"></param>
+ /// <param name="content"></param>
+ public static void WriteAppend(string filePath, string content)
+ {
+ WriteAppend(filePath, new string[] { content });
+ }
+
+ public static void WriteAppend(string filePath, string[] contents)
+ {
+ using (FileStream fs = new(filePath, FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
+ {
+ fs.Seek(fs.Length, SeekOrigin.Current);
+
+ string content = string.Join(Environment.NewLine, contents) + Environment.NewLine;
+
+ //byte[] data = System.Text.Encoding.GetEncoding("GB2312").GetBytes(content);
+ byte[] data = System.Text.Encoding.Default.GetBytes(content);
+
+
+ fs.Write(data, 0, data.Length);
+
+ fs.Close();
+ fs.Dispose();
+ }
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs"
new file mode 100644
index 0000000..11c5c38
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/ILog.cs"
@@ -0,0 +1,89 @@
+锘縰sing System;
+
+namespace LogLibrary.Log
+{
+ public unsafe interface ILog
+ {
+ bool* IsCryto { set; }
+ bool IsDebugEnabled { get; }
+
+ bool IsErrorEnabled { get; }
+
+ bool IsFatalEnabled { get; }
+
+ bool IsInfoEnabled { get; }
+
+ bool IsWarnEnabled { get; }
+
+ void Debug(bool isWriteFile, object message);
+
+ void Debug(bool isWriteFile, object message, Exception exception);
+
+ void DebugFormat(bool isWriteFile, string format, object arg0);
+
+ void DebugFormat(bool isWriteFile, string format, params object[] args);
+
+ void DebugFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+ void DebugFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+ void DebugFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+ void Error(bool isWriteFile, object message);
+
+ void Error(bool isWriteFile, object message, Exception exception);
+
+ void ErrorFormat(bool isWriteFile, string format, object arg0);
+
+ void ErrorFormat(bool isWriteFile, string format, params object[] args);
+
+ void ErrorFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+ void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+ void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+ void Fatal(bool isWriteFile, object message);
+
+ void Fatal(bool isWriteFile, object message, Exception exception);
+
+ void FatalFormat(bool isWriteFile, string format, object arg0);
+
+ void FatalFormat(bool isWriteFile, string format, params object[] args);
+
+ void FatalFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+ void FatalFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+ void FatalFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+ void Info(bool isWriteFile, object message);
+
+ void Info(bool isWriteFile, object message, Exception exception);
+
+ //void InfoFormat(bool isWriteFile, string format, object arg0);
+
+ //void InfoFormat(bool isWriteFile, string format, params object[] args);
+
+ //void InfoFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+ //void InfoFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+ void InfoFormat(bool isWriteFile, object arg0, object arg1, object arg2);
+
+ void Warn(bool isWriteFile, object message);
+
+ void Warn(bool isWriteFile, object message, Exception exception);
+
+ void WarnFormat(bool isWriteFile, string format, object arg0);
+
+ void WarnFormat(bool isWriteFile, string format, params object[] args);
+
+ void WarnFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args);
+
+ void WarnFormat(bool isWriteFile, string format, object arg0, object arg1);
+
+ void WarnFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2);
+
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs"
new file mode 100644
index 0000000..520235a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/ILogFactory.cs"
@@ -0,0 +1,7 @@
+锘縩amespace LogLibrary.Log
+{
+ public interface ILogFactory
+ {
+ ILog GetLog(string name);
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/Level.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/Level.cs"
new file mode 100644
index 0000000..0cfd286
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/Level.cs"
@@ -0,0 +1,16 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LogLibrary.Log
+{
+ public enum Level : int
+ {
+ Debug,
+ Info,
+ Warning,
+ Error
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/Log.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/Log.cs"
new file mode 100644
index 0000000..6022c2a
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/Log.cs"
@@ -0,0 +1,755 @@
+锘縰sing System;
+using System.Text.RegularExpressions;
+
+namespace LogLibrary.Log
+{
+
+ public unsafe class Log
+ {
+ private string m_Name;
+ private const string m_MessageTemplate = "{0}-{1}: {2}";
+
+ private const string m_Debug = "DEBUG";
+
+ private const string m_Error = "ERROR";
+
+ private const string m_Fatal = "FATAL";
+
+ private const string m_Info = "INFO";
+
+ private const string m_Warn = "WARN";
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="Log"/> class.
+ /// </summary>
+ /// <param name="name">The name.</param>
+ public Log(string name)
+ {
+ m_Name = name;
+ }
+ public Log()
+ {
+ m_Name = "NaN";
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this instance is debug enabled.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if this instance is debug enabled; otherwise, <c>false</c>.
+ /// </value>
+ public bool IsDebugEnabled
+ {
+ get { return true; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this instance is error enabled.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if this instance is error enabled; otherwise, <c>false</c>.
+ /// </value>
+ public bool IsErrorEnabled
+ {
+ get { return true; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this instance is fatal enabled.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if this instance is fatal enabled; otherwise, <c>false</c>.
+ /// </value>
+ public bool IsFatalEnabled
+ {
+ get { return true; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this instance is info enabled.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if this instance is info enabled; otherwise, <c>false</c>.
+ /// </value>
+ public bool IsInfoEnabled
+ {
+ get { return true; }
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this instance is warn enabled.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if this instance is warn enabled; otherwise, <c>false</c>.
+ /// </value>
+ public bool IsWarnEnabled
+ {
+ get { return true; }
+ }
+
+
+
+ public string GetDataTimeLog(string log)
+ {
+ return string.Format("[{0}] >> {1}", DateTime.Now.ToString("yy-MM-dd HH:mm:ss"), log);
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ public void Debug(bool isWriteFile, object message)
+ {
+ string log = GetDataTimeLog(message.ToString());
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ /// <param name="exception">The exception.</param>
+ public void Debug(bool isWriteFile, object message, Exception exception)
+ {
+ string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ public void DebugFormat(bool isWriteFile, string format, object arg0)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void DebugFormat(bool isWriteFile, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, string.Format(format, args));
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void DebugFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, string.Format(provider, format, args));
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ public void DebugFormat(bool isWriteFile, string format, object arg0, object arg1)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the debug message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ /// <param name="arg2">The arg2.</param>
+ public void DebugFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Debug, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Debug, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ public void Error(bool isWriteFile, object message)
+ {
+ string log = GetDataTimeLog(message.ToString());
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ /// <param name="exception">The exception.</param>
+ public void Error(bool isWriteFile, object message, Exception exception)
+ {
+ //string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+ string log = GetDataTimeLog(message + Environment.NewLine + exception.Message );
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ public void ErrorFormat(bool isWriteFile, string format, object arg0)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void ErrorFormat(bool isWriteFile, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void ErrorFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(provider, format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ public void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ /// <param name="arg2">The arg2.</param>
+ public void ErrorFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg2));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Error, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Error, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ public void Fatal(bool isWriteFile, object message)
+ {
+ string log = GetDataTimeLog(message.ToString());
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ /// <param name="exception">The exception.</param>
+ public void Fatal(bool isWriteFile, object message, Exception exception)
+ {
+ string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ public void FatalFormat(bool isWriteFile, string format, object arg0)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void FatalFormat(bool isWriteFile, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void FatalFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(provider, format, args));
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ public void FatalFormat(bool isWriteFile, string format, object arg0, object arg1)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the fatal error message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ /// <param name="arg2">The arg2.</param>
+ public void FatalFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2));
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Fatal, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Fatal, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ public void Info(bool isWriteFile, object message)
+ {
+ string log = GetDataTimeLog(message.ToString());
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Info, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ /// <param name="exception">The exception.</param>
+ public void Info(bool isWriteFile, object message, Exception exception)
+ {
+ string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Info, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ public void InfoFormat(bool isWriteFile, string format, object arg0)
+ {
+ string log = GetDataTimeLog(string.Format("\n{0}\n{1}\n-----------------------------------------------------------\n\n", format, arg0));
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Info, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ //public void InfoFormat(bool isWriteFile, string format, params object[] args)
+ //{
+ // string log = GetDataTimeLog(string.Format(format, args));
+ // Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ // if (isWriteFile)
+ // {
+ // LogUtil.WriteLogFile(m_Name, m_Info, log);
+ // }
+ //}
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ //public void InfoFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+ //{
+ // string log = GetDataTimeLog(string.Format(provider, format, args));
+ // Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ // if (isWriteFile)
+ // {
+ // LogUtil.WriteLogFile(m_Name, m_Info, log);
+ // }
+ //}
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ //public void InfoFormat(bool isWriteFile, string format, object arg0, object arg1)
+ //{
+ // string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+ // Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ // if (isWriteFile)
+ // {
+ // LogUtil.WriteLogFile(m_Name, m_Info, log);
+ // }
+ //}
+
+ /// <summary>
+ /// Logs the info message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ /// <param name="arg2">The arg2.</param>
+ public void InfoFormat(bool isWriteFile, object arg0, object arg1, object arg2)
+ {
+ string func(string str, int len)
+ {
+ var strSLen = Regex.Replace(str, @"[^\x00-\xff]", "aa").Length;
+ var strLen = str.Length;
+ return str.PadLeft(len - strSLen + strLen);
+ }
+ string log = GetDataTimeLog(string.Format("[{0}]\t[{1}]\t{2}", arg0?.ToString(), arg1?.ToString(), arg2));
+ //string log = GetDataTimeLog(string.Format("[{0}] [{1}] {2}", func(arg0?.ToString(), 13), func(arg1?.ToString(), 16), arg2));
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Info, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Info, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ public void Warn(bool isWriteFile, object message)
+ {
+ string log = GetDataTimeLog(message.ToString());
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="message">The message.</param>
+ /// <param name="exception">The exception.</param>
+ public void Warn(bool isWriteFile, object message, Exception exception)
+ {
+ string log = GetDataTimeLog(message + Environment.NewLine + exception.Message + exception.StackTrace);
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ public void WarnFormat(bool isWriteFile, string format, object arg0)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0));
+ //Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void WarnFormat(bool isWriteFile, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="provider">The provider.</param>
+ /// <param name="format">The format.</param>
+ /// <param name="args">The args.</param>
+ public void WarnFormat(bool isWriteFile, IFormatProvider provider, string format, params object[] args)
+ {
+ string log = GetDataTimeLog(string.Format(provider, format, args));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ public void WarnFormat(bool isWriteFile, string format, object arg0, object arg1)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ /// <summary>
+ /// Logs the warning message.
+ /// </summary>
+ /// <param name="isWriteFile"></param>
+ /// <param name="format">The format.</param>
+ /// <param name="arg0">The arg0.</param>
+ /// <param name="arg1">The arg1.</param>
+ /// <param name="arg2">The arg2.</param>
+ public void WarnFormat(bool isWriteFile, string format, object arg0, object arg1, object arg2)
+ {
+ string log = GetDataTimeLog(string.Format(format, arg0, arg1, arg2));
+ Console.WriteLine(m_MessageTemplate, m_Name, m_Warn, log);
+ if (isWriteFile)
+ {
+ LogUtil.WriteLogFile(m_Name, m_Warn, log);
+ }
+ }
+
+ //public void Behavior(string logMsg, Level level)
+ //{
+ // lock (this)
+ // {
+ // m_Name = "琛屼负";
+ // switch (level)
+ // {
+ // case Level.Debug:
+ // Debug(true, logMsg);
+ // break;
+ // case Level.Info:
+ // Info(true, logMsg);
+ // break;
+ // case Level.Warning:
+ // Warn(true, logMsg);
+ // break;
+ // case Level.Error:
+ // Error(true, logMsg);
+ // break;
+ // default:
+ // break;
+ // }
+ // }
+ //}
+
+ //public void Interface(string logMsg, Level level)
+ //{
+ // lock (this)
+ // {
+ // m_Name = "鎺ュ彛";
+ // switch (level)
+ // {
+ // case Level.Debug:
+ // Debug(true, logMsg);
+ // break;
+ // case Level.Info:
+ // Info(true, logMsg);
+ // break;
+ // case Level.Warning:
+ // Warn(true, logMsg);
+ // break;
+ // case Level.Error:
+ // Error(true, logMsg);
+ // break;
+ // default:
+ // break;
+ // }
+ // }
+ //}
+
+ //public void Hardware(string logMsg, Level level)
+ //{
+ // lock (this)
+ // {
+ // m_Name = "纭欢";
+ // switch (level)
+ // {
+ // case Level.Debug:
+ // Debug(true, logMsg);
+ // break;
+ // case Level.Info:
+ // Info(true, logMsg);
+ // break;
+ // case Level.Warning:
+ // Warn(true, logMsg);
+ // break;
+ // case Level.Error:
+ // Error(true, logMsg);
+ // break;
+ // default:
+ // break;
+ // }
+ // }
+ //}
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs"
new file mode 100644
index 0000000..218faa9
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/LogFactory.cs"
@@ -0,0 +1,11 @@
+锘�
+namespace LogLibrary.Log
+{
+ public unsafe class LogFactory
+ {
+ public Log GetLog(string name)
+ {
+ return new Log(name);
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs"
new file mode 100644
index 0000000..9dd32fa
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Log/LogUtil.cs"
@@ -0,0 +1,57 @@
+锘縰sing System;
+using System.Diagnostics;
+using System.Threading;
+
+namespace LogLibrary.Log
+{
+ internal unsafe class LogUtil
+ {
+ static ReaderWriterLockSlim lockSlim = new ReaderWriterLockSlim();
+
+ /// <summary>
+ /// 鏍煎紡寮忓寲Log淇℃伅
+ /// </summary>
+ /// <param name="format"></param>
+ /// <param name="name"></param>
+ /// <param name="logType"></param>
+ /// <param name="log"></param>
+ /// <returns></returns>
+ private static string GetLogString(string name, string logType, string log)
+ {
+ return string.Format("[{0}]{1}-{2}: {3}", DateTime.Now.ToString("HH:mm:ss"), name, logType, log);
+ }
+
+ /// <summary>
+ /// 鑾峰緱鏃ュ織瑕佷繚瀛樼殑璺緞
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="logType"></param>
+ /// <returns></returns>
+ private static string GetLogPath(string name, string logType)
+ {
+ string path = AppDomain.CurrentDomain.BaseDirectory + $"Logs/{DateTime.Now:yyyyMM}";
+ if (!System.IO.Directory.Exists(path))
+ {
+ System.IO.Directory.CreateDirectory(path);
+ }
+
+ return System.IO.Path.Combine(path, string.Format("{0}_{1}_{2}.log", DateTime.Now.ToString("yyyy-MM-dd"), name, logType));
+ }
+
+ public static void WriteLogFile(string name, string logType, string log)
+ {
+ string logPath = GetLogPath(name, logType);
+ Trace.WriteLine(log);
+ lockSlim.EnterWriteLock();//鎵撳紑鍐欐搷浣滈攣
+ try
+ {
+ FileUtil.WriteAppend(logPath, log);
+ }
+ finally
+ {
+ lockSlim.ExitWriteLock();
+ }
+
+ }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj"
new file mode 100644
index 0000000..552ea92
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/LogLibrary.csproj"
@@ -0,0 +1,47 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <TargetFramework>net6.0</TargetFramework>
+ <OutputType>Library</OutputType>
+ <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <Configurations>Debug;Release;Dev</Configurations>
+ <Platforms>AnyCPU;x86</Platforms>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Dev|x86'">
+ <OutputPath>bin\x86\Debug\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <OutputPath>bin\x86\Release\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|AnyCPU'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Dev\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Dev|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Dev\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Dev|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\x86\Dev\</OutputPath>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
+ <DebugType>embedded</DebugType>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs"
new file mode 100644
index 0000000..a6c4576
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/LogLibrary/Properties/AssemblyInfo.cs"
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("LogLibrary")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LogLibrary")]
+[assembly: AssemblyCopyright("Copyright 漏 2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("2e0d9770-ab36-4811-a0d0-05b98093b92d")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+//鍙互鎸囧畾鎵�鏈夎繖浜涘�硷紝涔熷彲浠ヤ娇鐢ㄢ�滅敓鎴愬彿鈥濆拰鈥滀慨璁㈠彿鈥濈殑榛樿鍊�
+//閫氳繃浣跨敤 "*"锛屽涓嬫墍绀�:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs"
new file mode 100644
index 0000000..2648122
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/HttpClient/HttpsClient.cs"
@@ -0,0 +1,195 @@
+锘縰sing LogLibrary.Log;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common;
+
+public class HttpsClient
+{
+ private static readonly LogFactory LogFactory = new LogFactory();
+
+ // 灏佽涓�涓敤HttpClient鍙戦�丟ET璇锋眰鐨勬柟娉曟湁鍙傛暟
+ public static async Task<string> GetAsync(string url, Dictionary<string, object> parameters)
+ {
+ try
+ {
+ // 璁板綍璇锋眰鍙傛暟
+ LogRequestParameters(parameters, url);
+
+ // 灏嗗弬鏁版嫾鎺ュ埌URL涓�
+ string queryString = string.Join("&", parameters.Select(x => $"{x.Key}={x.Value}"));
+ url += "?" + queryString;
+
+ // 鍒涘缓HttpClient瀹炰緥
+ using (HttpClient client = new HttpClient())
+ {
+ // 鍙戦�丟ET璇锋眰骞惰幏鍙栧搷搴�
+ HttpResponseMessage response = await client.GetAsync(url);
+
+ // 纭繚鍝嶅簲鎴愬姛
+ response.EnsureSuccessStatusCode();
+
+ // 璇诲彇鍝嶅簲鍐呭
+ string responseBody = await response.Content.ReadAsStringAsync();
+
+ // 璁板綍鍝嶅簲鍙傛暟
+ LogResponseParameters(responseBody, url);
+
+ // 杩斿洖鍝嶅簲鍐呭
+ return responseBody;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrorParameters(ex.StackTrace, ex.Message, url);
+ return ex.Message;
+ }
+ }
+
+ // 鐢ㄤ簬杩借釜姣忎釜璇锋眰鐨勮皟鐢ㄦ鏁板拰鏈�鍚庤姹傛椂闂淬��
+ //private static readonly Dictionary<string, (int Count, DateTime LastRequestTime)> requestTracker = new();
+ // 灏佽涓�涓敤HttpClient鍙戦�丳ost璇锋眰鐨勬柟娉曟湁鍙傛暟
+ public static async Task<string> PostAsync(string url, Dictionary<string, object> parameters)
+ {
+ try
+ {
+ //// 鍒涘缓涓�涓柊鐨勫瓧鍏革紝鎺掗櫎 RequestTime 鍜� SessionId
+ //var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value);
+
+ //string requestKey = $"{url}:{JsonConvert.SerializeObject(filteredParameters)}";
+ //// 妫�鏌ヨ姹傛鏁板拰鏃堕棿闄愬埗
+ //if (requestTracker.TryGetValue(requestKey, out var requestInfo))
+ //{
+ // if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(3))
+ // {
+ // // 濡傛灉璇锋眰娆℃暟瓒呰繃闄愬埗涓旀湭瓒呰繃10鍒嗛挓锛屾姏鍑哄紓甯�
+ // throw new InvalidOperationException("璇锋眰娆℃暟宸茶揪鍒伴檺鍒讹紝璇风◢鍚庡啀璇曘��");
+ // }
+ //}
+
+ //// 鏇存柊璇锋眰璺熻釜淇℃伅
+ //if (requestTracker.ContainsKey(requestKey))
+ //{
+ // requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now);
+ //}
+ //else
+ //{
+ // requestTracker[requestKey] = (1, DateTime.Now);
+ //}
+
+
+ // 璁板綍璇锋眰鍙傛暟
+ LogRequestParameters(parameters, url);
+
+ // 鍒涘缓HttpClient瀹炰緥
+ using (HttpClient client = new HttpClient())
+ {
+ // 灏嗗弬鏁拌浆鎹负FormUrlEncodedContent
+ string content = JsonConvert.SerializeObject(parameters);
+
+ var request = new HttpRequestMessage(HttpMethod.Post, url);
+
+ request.Content = new StringContent(content, Encoding.UTF8, "application/json");
+
+ HttpResponseMessage response = await client.SendAsync(request);
+
+ // 纭繚鍝嶅簲鎴愬姛
+ response.EnsureSuccessStatusCode();
+
+ // 璇诲彇鍝嶅簲鍐呭
+ string responseBody = await response.Content.ReadAsStringAsync();
+
+ // 璁板綍鍝嶅簲鍙傛暟
+ LogResponseParameters(responseBody, url);
+
+ // 杩斿洖鍝嶅簲鍐呭
+ return responseBody;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogErrorParameters(ex.StackTrace,ex.Message, url);
+ return ex.Message;
+ }
+
+ }
+
+
+ public static async Task<string> PostAsync(string url, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null)
+ {
+ try
+ {
+ LogRequestParameters(requestJson, url);
+
+ string result = string.Empty;
+ using (HttpContent httpContent = new StringContent(requestJson))
+ {
+ httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
+ using HttpClient httpClient = new HttpClient();
+ httpClient.Timeout = new TimeSpan(0, 0, 60);
+
+ if (headers != null)
+ {
+ foreach (var header in headers)
+ httpClient.DefaultRequestHeaders.Add(header.Key, header.Value);
+ }
+ result = await httpClient.PostAsync(url, httpContent).Result.Content.ReadAsStringAsync();
+ }
+ LogResponseParameters(result, url);
+
+ return result;
+
+ }
+ catch (Exception ex)
+ {
+ LogErrorParameters(ex.StackTrace, ex.Message, url);
+ Console.WriteLine(ex.Message);
+ }
+ return null;
+ }
+ private static void LogErrorParameters(string errordetail, string error, string url = "")
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.Append(Environment.NewLine);
+ builder.Append("---------------------------------------------");
+ builder.Append(Environment.NewLine);
+ builder.Append("url:" + url + "寮傚父璇︾粏淇℃伅: " + JsonConvert.SerializeObject(error));
+ builder.Append("url:" + url + "寮傚父淇℃伅: " + JsonConvert.SerializeObject(error));
+ LogFactory.GetLog("API鎺ュ彛寮傚父").Error(true, builder);
+ }
+ private static void LogRequestParameters(Dictionary<string, object> parameters, string url = "")
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.Append(Environment.NewLine);
+ builder.Append("---------------------------------------------");
+ builder.Append(Environment.NewLine);
+ builder.Append("url:" + url + "璇锋眰鍙傛暟: " + JsonConvert.SerializeObject(parameters));
+ LogFactory.GetLog("API鎺ュ彛").Info(true, builder);
+ }
+
+ private static void LogRequestParameters(string parameters, string url = "")
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.Append(Environment.NewLine);
+ builder.Append("---------------------------------------------");
+ builder.Append(Environment.NewLine);
+ builder.Append("url:" + url + "璇锋眰鍙傛暟: " + JsonConvert.SerializeObject(parameters));
+ LogFactory.GetLog("API鎺ュ彛").Info(true, builder);
+ }
+
+ private static void LogResponseParameters(string responseBody, string url = "")
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.Append(Environment.NewLine);
+ builder.Append("url:" + url + "鍝嶅簲鍙傛暟: " + responseBody);
+ builder.Append(Environment.NewLine);
+ builder.Append("---------------------------------------------");
+ builder.Append(Environment.NewLine);
+ LogFactory.GetLog("API鎺ュ彛").Info(true, builder);
+ }
+}
\ No newline at end of file
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
index f14a168..26765d6 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_Common/WIDESEA_Common.csproj"
@@ -12,4 +12,12 @@
<None Remove="Location\**" />
</ItemGroup>
+ <ItemGroup>
+ <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ProjectReference Include="..\LogLibrary\LogLibrary.csproj" />
+ </ItemGroup>
+
</Project>
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/GroupPalletDto.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/GroupPalletDto.cs"
new file mode 100644
index 0000000..8e1954b
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_DTO/Inbound/GroupPalletDto.cs"
@@ -0,0 +1,23 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.Attributes;
+
+namespace WIDESEA_DTO.Inbound
+{
+ [ModelValidate]
+ public class GroupPalletDto
+ {
+ [PropertyValidate("鎵樼洏缂栧彿", NotNullAndEmpty = true)]
+ public string PalletCode { get; set; }
+
+ [PropertyValidate("搴忓垪鍙锋潯鐮�", NotNullAndEmpty = true)]
+ public string Barcode { get; set; }
+
+ public string locationType { get; set; }
+
+ public string WarehouseType { get; set; }
+ }
+}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs"
index 15237d5..2b55554 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_IInboundService/IInboundService.cs"
@@ -4,6 +4,7 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
+using WIDESEA_DTO.Inbound;
namespace WIDESEA_IInboundService
{
@@ -12,5 +13,12 @@
IInboundOrderDetailService InboundOrderDetailService { get; }
IInboundOrderService InbounOrderService { get; }
+
+ /// <summary>
+ /// 缁勭洏
+ /// </summary>
+ /// <param name="palletDto"></param>
+ /// <returns></returns>
+ Task<WebResponseContent> GroupPallet(GroupPalletDto palletDto);
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
index 97a2766..d35fbfe 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_InboundService/InboundService.cs"
@@ -1,22 +1,233 @@
-锘縰sing System;
+锘縰sing LogLibrary.Log;
+using MailKit;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.CommonEnum;
+using WIDESEA_Common.OrderEnum;
+using WIDESEA_Common.StockEnum;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.Helper;
+using WIDESEA_Core.Utilities;
+using WIDESEA_DTO.Inbound;
using WIDESEA_IInboundService;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
+using WIDESEA_Model.Models.Basic;
namespace WIDESEA_InboundService
{
public class InboundService : IInboundService
{
+ LogFactory LogFactory = new LogFactory();
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
public IInboundOrderDetailService InboundOrderDetailService { get; }
public IInboundOrderService InbounOrderService { get; }
+ private readonly IRepository<Dt_InboundOrder> _inboundOrderRepository;
+ private readonly IRepository<Dt_WarehouseArea> _warehouseAreaRepository;
+ private readonly IRepository<Dt_LocationType> _locationTypeRepository;
+ private readonly IRepository<Dt_StockInfo> _stockInfoRepository;
+ private readonly IRepository<Dt_InboundOrderDetail> _inboundOrderDetailRepository;
+ private readonly IRepository<Dt_Task> _taskRepository;
+ private IStockService _stockService;
- public InboundService(IInboundOrderDetailService inboundOrderDetailService, IInboundOrderService inbounOrderService)
+ public InboundService(IUnitOfWorkManage unitOfWorkManage, IInboundOrderDetailService inboundOrderDetailService, IInboundOrderService inbounOrderService, IRepository<Dt_InboundOrder> inboundOrderRepository, IRepository<Dt_WarehouseArea> warehouseAreaRepository, IRepository<Dt_LocationType> locationTypeRepository, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_InboundOrderDetail> inboundOrderDetailRepository, IStockService stockService, IRepository<Dt_Task> taskRepository)
{
+ _unitOfWorkManage = unitOfWorkManage;
InboundOrderDetailService = inboundOrderDetailService;
InbounOrderService = inbounOrderService;
+ _inboundOrderRepository = inboundOrderRepository;
+ _warehouseAreaRepository = warehouseAreaRepository;
+ _locationTypeRepository = locationTypeRepository;
+ _stockInfoRepository = stockInfoRepository;
+ _inboundOrderDetailRepository = inboundOrderDetailRepository;
+ _stockService = stockService;
+ _taskRepository = taskRepository;
+ }
+
+ public async Task<WebResponseContent> GroupPallet(GroupPalletDto palletDto)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ (bool, string, object?) result2 = ModelValidate.ValidateModelData(palletDto);
+ if (!result2.Item1) return content.Error(result2.Item2);
+
+ var code = _warehouseAreaRepository.Db.Queryable<Dt_WarehouseArea>().Where(x => x.Code == palletDto.WarehouseType).Select(x => x.Code).First();
+ if (string.IsNullOrEmpty(code))
+ {
+ return content.Error($"浠撳簱涓病鏈夎{palletDto.WarehouseType}缂栧彿銆�");
+ }
+
+ List<Dt_InboundOrderDetail> details = new List<Dt_InboundOrderDetail>();
+ Dt_InboundOrder inboundOrder = new Dt_InboundOrder();
+ details = _inboundOrderDetailRepository.QueryData(x => x.OutBoxbarcodes == palletDto.Barcode && x.OrderDetailStatus == (int)InOrderStatusEnum.鏈紑濮�);
+ if (details.Count <= 0)
+ {
+ details = _inboundOrderDetailRepository.QueryData(x => x.Barcode == palletDto.Barcode && x.OrderDetailStatus == (int)InOrderStatusEnum.鏈紑濮�);
+ }
+
+ if (details.Count() <= 0)
+ {
+ return content.Error("鏈壘鍒拌鏉$爜鍗曟嵁淇℃伅璇风‘璁ゆ槸鍚﹀凡缁忕粍鐩樺畬鎴�");
+ }
+ inboundOrder = _inboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Includes(x=>x.Details).Where(x => x.Id == details.First().OrderId).First();
+
+ if (inboundOrder == null)
+ {
+ return content.Error("鏈壘鍒拌鏉$爜涓诲崟淇℃伅");
+ }
+ Dt_StockInfo? stockInfo = await _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == palletDto.PalletCode).FirstAsync();
+
+ List<string?> materielCodes = details.GroupBy(x => x.Barcode).Select(x => x.Key).ToList();
+
+ (bool, string, object?) result = CheckMaterielGroupParam(palletDto, materielCodes, inboundOrder, stockInfo);
+ if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2);
+
+
+ if (stockInfo == null)
+ {
+ stockInfo = new Dt_StockInfo() { PalletType = (int)PalletTypeEnum.None, LocationType = Convert.ToInt32(palletDto.locationType) };
+ stockInfo.Details = new List<Dt_StockInfoDetail>();
+ }
+
+ foreach (var item in details)
+ {
+ stockInfo.Details.Add(new Dt_StockInfoDetail
+ {
+ StockId = stockInfo == null ? 0 : stockInfo.Id,
+ Barcode = item.Barcode,
+ MaterielCode = item.MaterielCode,
+ BatchNo = item.BatchNo,
+ Unit = item.Unit,
+ InboundOrderRowNo = item.lineNo,
+ SupplyCode = item.SupplyCode,
+ WarehouseCode = palletDto.WarehouseType,
+ StockQuantity = item.OrderQuantity,
+ BarcodeQty = item.BarcodeQty,
+ BarcodeUnit = item.BarcodeUnit,
+ FactoryArea = inboundOrder.FactoryArea,
+ Status = 0,
+ OrderNo = inboundOrder.InboundOrderNo,
+ BusinessType = inboundOrder.BusinessType,
+
+ });
+
+ item.ReceiptQuantity = item.BarcodeQty;
+ item.OrderDetailStatus = (int)OrderDetailStatusEnum.Over;
+ item.WarehouseCode = palletDto.WarehouseType;
+ item.ReturnToMESStatus = 0;
+ }
+
+ if (stockInfo.Id == 0)
+ {
+ stockInfo.PalletCode = palletDto.PalletCode;
+ stockInfo.StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨;
+ }
+ stockInfo.PalletType = (int)PalletTypeEnum.None;
+
+ List<int> updateDetailIds = details.Select(x => x.Id).ToList();
+ if (inboundOrder.OrderStatus == (int)InOrderStatusEnum.鏈紑濮�)
+ {
+ inboundOrder.OrderStatus = (int)InOrderStatusEnum.鍏ュ簱涓�;
+ }
+ inboundOrder.Operator = App.User.UserName;
+ content = MaterielGroupUpdateData(inboundOrder, details, stockInfo).Result;
+ if (content.Status)
+ {
+ Dt_StockInfo? NewstockInfo = await _stockInfoRepository.Db.Queryable<Dt_StockInfo>().Includes(x => x.Details).Where(x => x.PalletCode == palletDto.PalletCode).FirstAsync();
+
+ return WebResponseContent.Instance.OK(data: NewstockInfo.Details);
+ }
+ else
+ {
+ content = WebResponseContent.Instance.Error(content.Message);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogFactory.GetLog($"缁勭洏淇℃伅").Info(true, $"銆愬紓甯搞�戯細銆恵ex.Message}銆憑Environment.NewLine}銆恵ex.StackTrace}銆憑Environment.NewLine}{Environment.NewLine}");
+ return content.Error(ex.Message);
+ }
+ return content;
+ }
+
+ /// <summary>
+ /// 楠岃瘉缁勭洏鏁版嵁
+ /// </summary>
+ /// <param name="materielGroupDTO">鐗╂枡缁勭洏DTO</param>
+ /// <param name="matSerialNumberDTOs">鎵爜搴忓垪鍙�</param>
+ /// <param name="materielInfos">鐗╂枡淇℃伅</param>
+ /// <param name="materielCodes">鐗╂枡缂栧彿</param>
+ /// <param name="inboundOrder">鍏ュ簱鍗曟嵁</param>
+ /// <param name="stockInfo">缁勭洏淇℃伅</param>
+ /// <returns></returns>
+ public (bool, string, object?) CheckMaterielGroupParam(GroupPalletDto materielGroupDTO, List<string> barcodeCodes, Dt_InboundOrder inboundOrder, Dt_StockInfo stockInfo)
+ {
+ (bool, string, object?) result = ModelValidate.ValidateModelData(materielGroupDTO);
+ if (!result.Item1) return result;
+
+ if (_taskRepository.QueryFirst(x => x.PalletCode == materielGroupDTO.PalletCode) != null)
+ {
+ return (false, "璇ユ墭鐩樺彿宸叉湁浠诲姟", materielGroupDTO);
+ }
+
+ if (stockInfo != null && !string.IsNullOrEmpty(stockInfo.LocationCode) && stockInfo.StockStatus != (int)StockStatusEmun.缁勭洏鏆傚瓨)
+ {
+ return (false, "宸蹭笂鏋剁殑鎵樼洏涓嶈兘鍐嶆缁勭洏", materielGroupDTO);
+ }
+
+ if (_stockService.StockInfoDetailService.ExistBarcodes(barcodeCodes))
+ {
+ return (false, $"{barcodeCodes[0]} 鏉$爜鍦ㄥ簱瀛樹腑宸插瓨鍦�", materielGroupDTO);
+ }
+
+ if (inboundOrder == null)
+ {
+ return (false, "鍗曟嵁涓嶅瓨鍦�", materielGroupDTO);
+ }
+
+ if (inboundOrder.Details == null || inboundOrder.Details.Count == 0)
+ {
+ return (false, "鏃犲崟鎹槑缁嗕俊鎭�", materielGroupDTO);
+ }
+
+ if (inboundOrder.OrderStatus != (int)InOrderStatusEnum.鏈紑濮� && inboundOrder.OrderStatus != (int)InOrderStatusEnum.鍏ュ簱涓�)
+ {
+ return (false, "璇ュ崟鎹笉鍙啀缁勭洏", materielGroupDTO);
+ }
+
+ List<Dt_InboundOrderDetail> inboundOrderDetails = inboundOrder.Details.Where(x => barcodeCodes.Contains(x.Barcode)).ToList();
+
+ if (inboundOrderDetails.GroupBy(x => x.Barcode).Count() != barcodeCodes.Count)
+ {
+ return (false, "鏈夌墿鏂欎笉鍦ㄥ崟鎹唴", materielGroupDTO);
+ }
+
+ return (true, "鎴愬姛", materielGroupDTO);
+ }
+
+ public async Task<WebResponseContent> MaterielGroupUpdateData(Dt_InboundOrder inboundOrder, List<Dt_InboundOrderDetail> inboundOrderDetails, Dt_StockInfo stockInfo)
+ {
+ try
+ {
+ _unitOfWorkManage.BeginTran();
+ //await _inboundOrderRepository.Db.UpdateNav(inboundOrder).Include(x=>x.Details).ExecuteCommandAsync();
+ _inboundOrderRepository.UpdateData(inboundOrder);
+ _inboundOrderDetailRepository.UpdateData(inboundOrderDetails);
+ _stockService.StockInfoService.AddMaterielGroup(stockInfo);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
}
}
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer.sln" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
index 7b8e7db..8026feb 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer.sln"
@@ -74,6 +74,8 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WIDESEA_IAllocateService", "WIDESEA_IAllocateService\WIDESEA_IAllocateService.csproj", "{A6E822A3-5A09-4B18-BEE6-57CC7D7B8BEC}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LogLibrary", "LogLibrary\LogLibrary.csproj", "{A7C339A4-CC00-2872-6005-A272626BC5F1}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -360,6 +362,18 @@
{A6E822A3-5A09-4B18-BEE6-57CC7D7B8BEC}.Release|Any CPU.Build.0 = Release|Any CPU
{A6E822A3-5A09-4B18-BEE6-57CC7D7B8BEC}.Release|x86.ActiveCfg = Release|Any CPU
{A6E822A3-5A09-4B18-BEE6-57CC7D7B8BEC}.Release|x86.Build.0 = Release|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Debug|x86.ActiveCfg = Debug|x86
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Debug|x86.Build.0 = Debug|x86
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Dev|Any CPU.ActiveCfg = Dev|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Dev|Any CPU.Build.0 = Dev|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Dev|x86.ActiveCfg = Dev|x86
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Dev|x86.Build.0 = Dev|x86
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Release|x86.ActiveCfg = Release|x86
+ {A7C339A4-CC00-2872-6005-A272626BC5F1}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundController.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundController.cs"
new file mode 100644
index 0000000..df6c7a3
--- /dev/null
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Inbound/InboundController.cs"
@@ -0,0 +1,32 @@
+锘�
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core;
+using WIDESEA_DTO.CalcOut;
+using WIDESEA_DTO.Inbound;
+
+namespace WIDESEA_WMSServer.Controllers.Outbound
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class InboundController : ControllerBase
+ {
+ private readonly WIDESEA_IInboundService.IInboundService Service;
+ public InboundController(WIDESEA_IInboundService.IInboundService inboundService)
+ {
+ Service = inboundService;
+ }
+
+ /// <summary>
+ /// 缁勭洏
+ /// </summary>
+ /// <param name="palletDto"></param>
+ /// <returns></returns>
+ [HttpPost, Route("GroupPallet"), AllowAnonymous]
+ public async Task<WebResponseContent> GroupPallet([FromBody]GroupPalletDto palletDto)
+ {
+ return await Service.GroupPallet(palletDto);
+ }
+ }
+}
--
Gitblit v1.9.3