From bfa8a6b595295a3c444b6cfbb40278f42b3178e7 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期四, 06 十一月 2025 16:42:52 +0800
Subject: [PATCH] 前端页面
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db-wal | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-wal | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/Controllers/Allocate/AllocateOrderController.cs | 63 ++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_DTO/Allocate/AllocateDto.cs | 3
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_IAllocateService/IAllocateService.cs | 5
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Model/Models/Outbound/Dt_OutboundOrder.cs | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Core/CodeConfigEnum/RuleCodeEnum.cs | 7
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/copilot-chat/13d2ebf8/sessions/5c08ea60-efea-4683-8780-e289f0bee8d0 | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Common/AllocateEnum/BusinessTypeEnum.cs | 15 +
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Model/Models/Inbound/Dt_InboundOrder.cs | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_ AllocateOrder.cs | 102 ++++++
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs | 338 ++++++++++++++++++++++
项目代码/WIDESEA_WMSClient/src/views/inbound/Dt_MaterielToMes.vue | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/CodeChunks.db-shm | 0
项目代码/WIDESEA_WMSClient/src/extension/inbound/Dt_MaterielToMes.js | 253 +++++++---------
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_AllocateService/WIDESEA_AllocateService.csproj | 2
项目代码/WMS无仓储版/WIDESEA_WMSServer/.vs/WIDESEA_WMSServer/CopilotIndices/17.14.1091.29919/SemanticSymbols.db-shm | 0
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_Model/Models/Allocate/Dt_AllocateOrderDetail.cs | 104 ++++++
21 files changed, 738 insertions(+), 162 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_MaterielToMes.js" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_MaterielToMes.js"
index 844b013..02aeab4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_MaterielToMes.js"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/extension/inbound/Dt_MaterielToMes.js"
@@ -14,9 +14,9 @@
modelBody: '',
modelFooter: ''
},
- tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+ tableAction: '',
buttons: { view: [{
- name: '鐢熸垚浜岀淮鐮�',
+ name: '鐢熸垚浜岀淮鐮�',
type: 'success',
value: '鐢熸垚浜岀淮鐮�',
onClick: async function () {
@@ -31,43 +31,18 @@
return;
}
- // 2. 鑾峰彇鍗曟嵁缂栧彿
- const newMaterialBarCode = selectedRows[0].newMaterialBarCode;
- if (!newMaterialBarCode) {
- ElMessage.error('閫変腑鐨勬暟鎹腑鏈壘鍒板崟鎹紪鍙�');
+ // 2. 鑾峰彇鏍稿績鐗╂枡瀛楁锛堟枡鍙枫�佸搧鍚嶃�佽鏍肩瓑锛�
+ const { materielCode, materialName, specification, lotNo, batchNo, date } = selectedRows[0];
+ if (!materielCode) {
+ ElMessage.error('閫変腑鏁版嵁缂哄皯鏂欏彿淇℃伅');
return;
}
- // 3. 鑾峰彇鍗曟嵁鏄庣粏鏁版嵁锛堟柊澧烇細閫氳繃鍗曟嵁缂栧彿鑾峰彇QtyTrans銆丮aterialCode銆丮aterialName锛�
- // let detailList = [];
- // const loading = ElLoading.service({ text: '鑾峰彇鍗曟嵁鏄庣粏涓�...' });
- // try {
- // const res = await http.post('/api/DocumentDetail/details', { transNo: transNo });
- // // 鏍¢獙杩斿洖鏍煎紡锛堝繀椤绘槸鏁扮粍涓旇嚦灏戞湁涓�鏉℃暟鎹級
- // if (!res.status || !Array.isArray(res.data) || res.data.length === 0) {
- // throw new Error('鏈煡璇㈠埌鍗曟嵁鏄庣粏鏁版嵁');
- // }
- // detailList = res.data;
-
- // // 鏍¢獙姣忔潯鏄庣粏鐨勫繀濉瓧娈�
- // detailList.forEach((item, index) => {
- // if (!item.qtyTrans || !item.materialCode || !item.materialName) {
- // throw new Error(`绗�${index + 1}鏉℃槑缁嗘暟鎹笉瀹屾暣`);
- // }
- // });
- // } catch (err) {
- // ElMessage.error(err.message || '鑾峰彇鍗曟嵁鏄庣粏澶辫触');
- // loading.close();
- // return;
- // } finally {
- // loading.close();
- // }
-
- // 4. 鐢熸垚浜岀淮鐮�
+ // 3. 鐢熸垚浜岀淮鐮侊紙鍐呭涓烘枡鍙凤紝鍙牴鎹渶姹傛嫾鎺ユ洿澶氫俊鎭級
let qrCodeUrl = '';
try {
- qrCodeUrl = await QRCode.toDataURL(newMaterialBarCode, {
- width: 200, // 浜岀淮鐮佸ぇ灏忛�傞厤甯冨眬
+ qrCodeUrl = await QRCode.toDataURL(materielCode, {
+ width: 150, // 閫傞厤鏍囪瘑鍗″昂瀵�
margin: 1
});
} catch (err) {
@@ -76,11 +51,11 @@
return;
}
- // 5. 鍒涘缓寮圭獥
+ // 4. 鍒涘缓寮圭獥鎸傝浇鑺傜偣
const mountNode = document.createElement('div');
document.body.appendChild(mountNode);
- // 娣诲姞鎵撳嵃涓撶敤鏍峰紡
+ // 鎵撳嵃涓撶敤鏍峰紡
const addPrintStyle = () => {
const style = document.createElement('style');
style.id = 'qr-print-style';
@@ -88,39 +63,61 @@
@media print {
body > *:not(.print-container) { display: none !important; }
.print-container {
- position: fixed !important;
- top: 50px !important;
- left: 50px !important;
- width: 90% !important;
- height: auto !important;
+ position: fixed !important;
+ top: 0 !important;
+ left: 0 !important;
+ width: 100% !important;
+ height: 100% !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 0 !important;
+ margin: 0 !important;
}
- /* 鎵撳嵃鍐呭甯冨眬 */
- .print-content {
- display: flex !important;
- flex-direction: column !important;
- gap: 20px !important;
+
+ .material-card {
+ border: 1px solid #000;
+ padding: 5mm; /* 浣跨敤姣背鍗曚綅鏇撮�傞厤鎵撳嵃灏哄 */
+ font-size: 2mm; /* 鎸夋瘮渚嬬缉灏忓瓧浣� */
+ position: relative;
+ width: 70mm; /* 鐣ュ皬浜庣焊寮犲搴︼紝鐣欒竟璺� */
+ height: 50mm; /* 鐣ュ皬浜庣焊寮犻珮搴︼紝鐣欒竟璺� */
+ box-sizing: border-box; /* 纭繚padding涓嶅奖鍝嶆暣浣撳昂瀵� */
}
- .qr-wrapper {
- align-self: flex-start !important; /* 浜岀淮鐮侀潬宸� */
+
+ .card-title {
+ text-align: center;
+ font-size: 2mm; /* 鏍囬鐣ュぇ */
+ font-weight: bold;
+ margin-top: 5mm; /* 鍑忓皬椤堕儴闂磋窛 */
+ margin-right: 20mm; /* 閫傞厤缂╁皬鐨勪簩缁寸爜浣嶇疆 */
}
- .detail-fields {
- display: flex !important;
- justify-content: space-around !important; /* 瀛楁鍧囧寑鍒嗗竷 */
- width: 100% !important;
- margin-top: 20px !important;
- font-size: 16px !important;
+
+ .card-fields {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: space-between;
+ gap: 1.5mm; /* 缂╁皬闂磋窛 */
+ margin-top: 8mm; /* 璋冩暣瀛楁瀹瑰櫒浣嶇疆 */
}
+
.field-item {
- text-align: center !important;
- padding: 10px !important;
- border: 1px solid #eee !important;
- border-radius: 4px !important;
- width: 30% !important; /* 姣忎釜瀛楁鍗�1/3瀹藉害 */
+ width: 48%; /* 淇濇寔涓ゅ垪甯冨眬 */
+ line-height: 1.3; /* 绱у噾琛岄珮 */
}
- .field-label {
- font-weight: bold !important;
- margin-bottom: 5px !important;
- display: block !important;
+
+ .qr-wrapper {
+ position: absolute;
+ top: 5mm; /* 璋冩暣浜岀淮鐮侀《閮ㄤ綅缃� */
+ right: 3mm; /* 璋冩暣浜岀淮鐮佸彸渚т綅缃� */
+ width: 15mm; /* 浜岀淮鐮佸昂瀵搁�傞厤灏忓崱鐗� */
+ height: 15mm;
+ }
+
+ .qr-wrapper img {
+ width: 100% !important; /* 纭繚浜岀淮鐮佸~鍏呮弧瀹瑰櫒 */
+ height: 100% !important;
+ object-fit: contain;
}
}
`;
@@ -130,106 +127,83 @@
// 鎵撳嵃鍑芥暟
const printQrCode = () => {
- // 鍒涘缓鎵撳嵃瀹瑰櫒
const printContainer = document.createElement('div');
printContainer.className = 'print-container';
printContainer.style = 'position:fixed; top:-9999px; left:-9999px;';
document.body.appendChild(printContainer);
- // 濉厖鎵撳嵃鍐呭锛堝竷灞�锛氫簩缁寸爜宸︿笂瑙� + 涓変釜瀛楁鍧囧寑鍒嗗竷锛�
+ // 鏋勫缓鐗╂枡鏍囪瘑鍗TML缁撴瀯
printContainer.innerHTML = `
- <div class="print-content">
- <!-- 浜岀淮鐮侊紙宸︿笂瑙掞級 -->
- <div class="qr-wrapper">
- <img src="${qrCodeUrl}" style="width: 200px; height: 200px;" />
- <p style="margin-top: 10px; font-size: 16px;">鍗曟嵁缂栧彿锛�${newMaterialBarCode}</p>
+ <div class="material-card">
+ <div class="card-title">鍗撳姏鑳界墿鏂欐爣璇嗗崱锛堝皬鍖咃級</div>
+ <div class="card-fields">
+ <div class="field-item">鏂欏彿锛�${materielCode}</div>
+ <div class="field-item">渚涘簲鍟嗙紪鐮侊細</div>
+ <div class="field-item">鍝佸悕锛�${materialName || '鏃�'}</div>
+ <div class="field-item">閲囪喘鍗曞彿锛�</div>
+ <div class="field-item">瑙勬牸锛�${specification || '鏃�'}</div>
+ <div class="field-item">鏁伴噺/鎬绘暟锛�0PCS/0PCS</div>
+ <div class="field-item">鎵瑰彿锛�${lotNo || '鏃�'}</div>
+ <div class="field-item">鎵规锛�${batchNo || '鏃�'}</div>
+ <div class="field-item">鍘傚尯锛氬崜鍔涜兘涓夊巶</div>
+ <div class="field-item">鏃ユ湡锛�${date || '鏃�'}</div>
</div>
-
- <!-- 鏄庣粏瀛楁锛堝潎鍖�鍒嗗竷锛� -->
- <div class="detail-fields">
- <div class="field-item">
- <span class="field-label">浜ゆ槗鏁伴噺</span>
- <span>${detailList[0].qtyTrans}</span>
- </div>
- <div class="field-item">
- <span class="field-label">鐗╂枡缂栫爜</span>
- <span>${detailList[0].materialCode}</span>
- </div>
- <div class="field-item">
- <span class="field-label">鐗╂枡鍚嶇О</span>
- <span>${detailList[0].materialName}</span>
- </div>
+ <div class="qr-wrapper">
+ <img src="${qrCodeUrl}" alt="鐗╂枡浜岀淮鐮�" />
</div>
</div>
`;
- // 娣诲姞鎵撳嵃鏍峰紡
const printStyle = addPrintStyle();
-
- // 娓呯悊鍑芥暟锛堥槻姝㈤噸澶嶇Щ闄わ級
const cleanUp = () => {
- if (printContainer.parentNode === document.body) {
- document.body.removeChild(printContainer);
- }
- if (printStyle && printStyle.parentNode === document.head) {
- document.head.removeChild(printStyle);
- }
+ document.body.removeChild(printContainer);
+ document.head.removeChild(printStyle);
window.removeEventListener('afterprint', cleanUp);
};
-
- // 鐩戝惉鎵撳嵃瀹屾垚
window.addEventListener('afterprint', cleanUp, { once: true });
-
- // 瑙﹀彂鎵撳嵃
window.print();
};
- // 寮圭獥缁勪欢锛堥瑙堝竷灞�锛�
+ // 寮圭獥棰勮缁勪欢
const vnode = createVNode(ElDialog, {
- title: '鍗曟嵁浜岀淮鐮佸強鏄庣粏',
- width: '600px',
+ title: '鐗╂枡鏍囪瘑鍗″強浜岀淮鐮�',
+ width: '500px',
modelValue: true,
+ style: { maxHeight: '500px', overflowY: 'auto' },
appendToBody: true,
'onUpdate:modelValue': (isVisible) => {
if (!isVisible) {
const printStyle = document.getElementById('qr-print-style');
- if (printStyle && printStyle.parentNode === document.head) {
- document.head.removeChild(printStyle);
- }
+ printStyle && document.head.removeChild(printStyle);
render(null, mountNode);
- if (mountNode.parentNode === document.body) {
- document.body.removeChild(mountNode);
- }
+ document.body.removeChild(mountNode);
}
}
}, {
default: () => [
- // 棰勮鍖哄竷灞�锛堝拰鎵撳嵃甯冨眬涓�鑷达級
h('div', { style: { padding: '20px' } }, [
- // 浜岀淮鐮侀瑙堬紙宸︿笂瑙掞級
- h('div', { style: { marginBottom: '20px' } }, [
- h(ElImage, {
- src: qrCodeUrl,
- alt: '鍗曟嵁浜岀淮鐮�',
- style: { width: '200px', height: '200px' }
- }),
- h('p', { style: { marginTop: '10px', fontSize: '16px' } }, `鍗曟嵁缂栧彿锛�${newMaterialBarCode}`)
- ]),
- // 鏄庣粏瀛楁棰勮锛堝潎鍖�鍒嗗竷锛�
- // h('div', { style: { display: 'flex', justifyContent: 'space-around', gap: '10px' } }, [
- // h('div', { style: { textAlign: 'center', padding: '10px', border: '1px solid #eee', width: '30%' } }, [
- // h('div', { style: { fontWeight: 'bold', marginBottom: '5px' } }, '浜ゆ槗鏁伴噺'),
- // h('div', null, detailList[0].qtyTrans)
- // ]),
- // h('div', { style: { textAlign: 'center', padding: '10px', border: '1px solid #eee', width: '30%' } }, [
- // h('div', { style: { fontWeight: 'bold', marginBottom: '5px' } }, '鐗╂枡缂栫爜'),
- // h('div', null, detailList[0].materialCode)
- // ]),
- // h('div', { style: { textAlign: 'center', padding: '10px', border: '1px solid #eee', width: '30%' } }, [
- // h('div', { style: { fontWeight: 'bold', marginBottom: '5px' } }, '鐗╂枡鍚嶇О'),
- // h('div', null, detailList[0].materialName)
- // ])
- // ])
+ h('div', { style: { border: '1px solid #000', padding: '15px' ,position:'relative',height:'280px'} }, [
+ h('div', { style: { textAlign: 'center', fontSize: '18px', fontWeight: 'bold', marginTop: '20px' ,marginRight:'100px'} }, '鍗撳姏鑳界墿鏂欐爣璇嗗崱锛堝皬鍖咃級'),
+ h('div', { style: { display: 'flex', flexWrap: 'wrap', justifyContent: 'space-between', gap: '10px',marginTop:'60px'} }, [
+ h('div', { style: { width: '48%' } }, `鏂欏彿锛�${materielCode}`),
+ h('div', { style: { width: '48%' } }, '渚涘簲鍟嗙紪鐮侊細'),
+ h('div', { style: { width: '48%' } }, `鍝佸悕锛�${materialName || '鏃�'}`),
+ h('div', { style: { width: '48%' } }, '閲囪喘鍗曞彿锛�'),
+ h('div', { style: { width: '48%' } }, `瑙勬牸锛�${specification || '鏃�'}`),
+ h('div', { style: { width: '48%' } }, '鏁伴噺/鎬绘暟锛�0PCS/0PCS'),
+ h('div', { style: { width: '48%' } }, `鎵瑰彿锛�${lotNo || '鏃�'}`),
+ h('div', { style: { width: '48%' } }, `鎵规锛�${batchNo || '鏃�'}`),
+ h('div', { style: { width: '48%' } }, '鍘傚尯锛氬崜鍔涜兘涓夊巶'),
+ h('div', { style: { width: '48%' } }, `鏃ユ湡锛�${date || '鏃�'}`),
+ ]),
+ h('div', { style: { position:'absolute',top:'1px',right:'15px',width:'100px',heigth:'100px' } }, [
+ h(ElImage, {
+ src: qrCodeUrl,
+ alt: '鐗╂枡浜岀淮鐮�',
+ style: { width: '100px', height: '100px' }
+ })
+ ])
+ ])
])
],
footer: () => h('div', null, [
@@ -237,18 +211,16 @@
type: 'default',
onClick: () => {
const printStyle = document.getElementById('qr-print-style');
- if (printStyle) document.head.removeChild(printStyle);
+ printStyle && document.head.removeChild(printStyle);
render(null, mountNode);
- if (mountNode.parentNode === document.body) {
- document.body.removeChild(mountNode);
- }
+ document.body.removeChild(mountNode);
}
}, '鍏抽棴'),
h(ElButton, {
type: 'primary',
onClick: () => {
ElMessageBox.confirm(
- '鏄惁鎵撳嵃璇ュ唴瀹癸紵',
+ '鏄惁鎵撳嵃璇ョ墿鏂欐爣璇嗗崱锛�',
'鎵撳嵃纭',
{
confirmButtonText: '纭鎵撳嵃',
@@ -257,21 +229,16 @@
}
).then(async () => {
try {
- // 鎵ц鎵撳嵃骞剁瓑寰呭畬鎴愶紝鎹曡幏鍙兘鐨勯敊璇�
await printQrCode();
setTimeout(() => {
render(null, mountNode);
- if (mountNode.parentNode === document.body) {
- document.body.removeChild(mountNode);
- }
+ document.body.removeChild(mountNode);
}, 500);
} catch (printErr) {
- // 鏄剧ず鐪熷疄閿欒锛堣�岄潪鈥滃凡鍙栨秷鈥濓級
ElMessage.error(`鎵撳嵃澶辫触锛�${printErr.message || '鏈煡閿欒'}`);
console.error('鎵撳嵃閿欒锛�', printErr);
}
}).catch((err) => {
- // 浠呯敤鎴蜂富鍔ㄥ彇娑堟椂鎵嶆樉绀衡�滃凡鍙栨秷鈥�
if (err === 'cancel' || err.name === 'CanceledError') {
ElMessage.info('宸插彇娑堟墦鍗�');
}
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/Dt_MaterielToMes.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/Dt_MaterielToMes.vue"
index cb9c659..38c3110 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/Dt_MaterielToMes.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEA_WMSClient/src/views/inbound/Dt_MaterielToMes.vue"
@@ -162,7 +162,7 @@
sort: true
},
{
- field: "MaterielCode",
+ field: "materielCode",
title: "鐗╂枡缂栧彿",
type: "string",
width: 180,
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.1091.29919/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.1091.29919/CodeChunks.db"
new file mode 100644
index 0000000..fc74a41
--- /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.1091.29919/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.1091.29919/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.1091.29919/CodeChunks.db-shm"
new file mode 100644
index 0000000..18a087c
--- /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.1091.29919/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.1091.29919/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.1091.29919/CodeChunks.db-wal"
new file mode 100644
index 0000000..4f44951
--- /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.1091.29919/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.1091.29919/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.1091.29919/SemanticSymbols.db"
new file mode 100644
index 0000000..03f8146
--- /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.1091.29919/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.1091.29919/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.1091.29919/SemanticSymbols.db-shm"
new file mode 100644
index 0000000..0da02b6
--- /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.1091.29919/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.1091.29919/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.1091.29919/SemanticSymbols.db-wal"
new file mode 100644
index 0000000..5ac8e6a
--- /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.1091.29919/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/.vs/WIDESEA_WMSServer/copilot-chat/13d2ebf8/sessions/5c08ea60-efea-4683-8780-e289f0bee8d0" "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/copilot-chat/13d2ebf8/sessions/5c08ea60-efea-4683-8780-e289f0bee8d0"
new file mode 100644
index 0000000..7e09622
--- /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/copilot-chat/13d2ebf8/sessions/5c08ea60-efea-4683-8780-e289f0bee8d0"
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/WIDESEA_AllocateService/AllocateService.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_AllocateService/AllocateService.cs"
index 0f3e492..9b4af39 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_AllocateService/AllocateService.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_AllocateService/AllocateService.cs"
@@ -1,24 +1,356 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.AllocateEnum;
+using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.CodeConfigEnum;
+using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
+using WIDESEA_Core.Seed;
using WIDESEA_IAllocateService;
+using WIDESEA_IInboundService;
+using WIDESEA_IOutboundService;
using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.Allocate;
+
namespace WIDESEA_AllocateService
{
public partial class AllocateService : ServiceBase<Dt_AllocateOrder, IRepository<Dt_AllocateOrder>>, IAllocateService
{
- public AllocateService(IRepository<Dt_AllocateOrder> BaseDal) : base(BaseDal)
+ public readonly IUnitOfWorkManage _unitOfWorkManage;
+ public readonly IInboundService _inboundService;
+ public readonly IOutboundService _outboundService;
+ public readonly IRepository<Dt_AllocateOrder> _allocateOrderRepository;
+ public readonly IRepository<Dt_AllocateOrderDetail> _allocateOrderDetailRepository;
+ public AllocateService(IRepository<Dt_AllocateOrder> BaseDal,
+ IUnitOfWorkManage unitOfWorkManage,
+ IInboundService inboundService,
+ IOutboundService outboundService,
+ IRepository<Dt_AllocateOrder> allocateOrderRepository,
+ IRepository<Dt_AllocateOrderDetail> allocateOrderDetailRepository) : base(BaseDal)
{
+ _unitOfWorkManage = unitOfWorkManage;
+ _inboundService = inboundService;
+ _outboundService = outboundService;
+ _allocateOrderRepository = allocateOrderRepository;
+ _allocateOrderDetailRepository = allocateOrderDetailRepository;
}
public IRepository<Dt_AllocateOrder> Repository => BaseDal;
+
+ public WebResponseContent ReceiveAllocateOrder(Dt_AllocateOrder allocateOrder, int operateType)
+ {
+ try
+ {
+ return operateType switch
+ {
+ 1 => AddInboundOrder(allocateOrder),
+ 2 => UpdateInboundOrder(allocateOrder),
+ 3 => DeleteInboundOrder(allocateOrder),
+
+ _ => WebResponseContent.Instance.OK(),
+ };
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent AddInboundOrder(Dt_AllocateOrder allocateOrder)
+ {
+ try
+ {
+ if (BaseDal.QueryFirst(x => x.UpperOrderNo == allocateOrder.UpperOrderNo) != null)
+ {
+ return WebResponseContent.Instance.Error($"璋冩嫧鍗曞彿閲嶅");
+ }
+ allocateOrder.OrderNo = CreateCodeByRule(nameof(RuleCodeEnum.AllocateOrderCodeRule));
+ Db.InsertNav(allocateOrder).Include(x => x.Details).ExecuteCommand();
+ if (Enum.TryParse<BusinessTypeEnum>(allocateOrder.BusinessType, out var businessType))
+ {
+ if (businessType == BusinessTypeEnum.澶栭儴浠撳簱璋冩櫤浠�)
+ {
+ var inboundOrders = ConvertToInboundOrders(allocateOrder);
+ _inboundService.InbounOrderService.ReceiveInboundOrder(inboundOrders, 1);
+ }
+ else if (businessType == BusinessTypeEnum.鏅轰粨璋冨閮ㄤ粨搴�)
+ {
+ var outboundOrders = ConvertToOutboundOrders(allocateOrder);
+ _outboundService.OutboundOrderService.ReceiveOutboundOrder(outboundOrders, 1);
+ }
+ else
+ {
+ // 澶勭悊鏈畾涔夌殑鏋氫妇鍊硷紙濡傛湭鏉ユ柊澧炰絾鏈疄鐜扮殑绫诲瀷锛�
+ throw new NotSupportedException($"涓嶆敮鎸佺殑涓氬姟绫诲瀷鏋氫妇鍊�: {businessType}");
+ }
+ }
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+ public WebResponseContent UpdateInboundOrder(Dt_AllocateOrder model)
+ {
+ try
+ {
+ var allocateOrder = Db.Queryable<Dt_AllocateOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
+ if (allocateOrder == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟淇℃伅");
+ }
+ if (allocateOrder.Details == null || allocateOrder.Details.Count == 0)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟鏄庣粏淇℃伅");
+ }
+ List<Dt_AllocateOrderDetail> allocateOrderDetails = new List<Dt_AllocateOrderDetail>();
+ List<Dt_AllocateOrderDetail> updateAllocateOrderDetails = new List<Dt_AllocateOrderDetail>();
+ List<int> detailIds = new List<int>();
+ foreach (var item in model.Details)
+ {
+ if (string.IsNullOrEmpty(item.Barcode))
+ {
+
+ }
+ else
+ {
+ Dt_AllocateOrderDetail? allocateOrderDetail = allocateOrder.Details.FirstOrDefault(x => x.Barcode == item.Barcode);
+ if (allocateOrderDetail == null)
+ {
+ allocateOrderDetail = new Dt_AllocateOrderDetail()
+ {
+ OrderId = allocateOrder.Id,
+ MaterielCode = item.MaterielCode,
+ LineNo= item.LineNo,
+ BatchNo = item.BatchNo,
+ Unit = item.Unit,
+ WarehouseCode = item.WarehouseCode,
+ Barcode = item.Barcode,
+ BarcodeUnit = item.BarcodeUnit,
+ BarcodeQty = (decimal)item.BarcodeQty,
+ OrderQuantity = item.OrderQuantity
+ };
+ allocateOrderDetails.Add(allocateOrderDetail);
+ }
+ else
+ {
+ allocateOrderDetail.LineNo = item.LineNo;
+ allocateOrderDetail.MaterielCode = item.MaterielCode;
+ allocateOrderDetail.BatchNo = item.BatchNo;
+ allocateOrderDetail.Unit = item.Unit;
+ allocateOrderDetail.WarehouseCode = item.WarehouseCode;
+ allocateOrderDetail.Barcode = item.Barcode;
+ allocateOrderDetail.BarcodeUnit = item.BarcodeUnit;
+ allocateOrderDetail.BarcodeQty = item.BarcodeQty;
+ allocateOrderDetail.OrderQuantity = item.OrderQuantity;
+
+
+ updateAllocateOrderDetails.Add(allocateOrderDetail);
+ detailIds.Add(allocateOrderDetail.Id);
+ }
+ }
+ }
+
+ allocateOrder.UpperOrderNo = model.UpperOrderNo;
+ allocateOrder.BusinessType = model.BusinessType;
+ allocateOrder.IsBatch = model.IsBatch;
+ allocateOrder.FactoryArea = model.FactoryArea;
+
+ List<Dt_AllocateOrderDetail> deletePurchaseOrderDetails = allocateOrder.Details.Where(x => !detailIds.Contains(x.Id)).ToList();
+
+ _unitOfWorkManage.BeginTran();
+ foreach (var item in deletePurchaseOrderDetails)
+ {
+ _allocateOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.鑷姩鍒犻櫎);
+ }
+
+ _allocateOrderDetailRepository.UpdateData(updateAllocateOrderDetails);
+ _allocateOrderDetailRepository.AddData(allocateOrderDetails);
+
+ BaseDal.UpdateData(allocateOrder);
+ _unitOfWorkManage.CommitTran();
+
+
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent DeleteInboundOrder(Dt_AllocateOrder model)
+ {
+ try
+ {
+ var allocateOrder = Db.Queryable<Dt_AllocateOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
+ if (allocateOrder == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟淇℃伅");
+ }
+ if (allocateOrder.Details == null || allocateOrder.Details.Count == 0)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟鏄庣粏淇℃伅");
+ }
+ //Db.DeleteNav(inboundOrder).Include(x => x.Details).ExecuteCommand();
+ _unitOfWorkManage.BeginTran();
+ BaseDal.DeleteAndMoveIntoHty(allocateOrder, OperateTypeEnum.鑷姩鍒犻櫎);
+ foreach (var item in allocateOrder.Details)
+ {
+ _allocateOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.鑷姩鍒犻櫎);
+ }
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public List<Dt_InboundOrder> ConvertToInboundOrders(Dt_AllocateOrder allocateOrder)
+ {
+ return new List<Dt_InboundOrder>()
+ {
+ new Dt_InboundOrder(){
+ WarehouseId= allocateOrder.WarehouseId,
+ InboundOrderNo=allocateOrder.OrderNo,
+ UpperOrderNo=allocateOrder.UpperOrderNo,
+ SupplierId=allocateOrder.SupplierId,
+ OrderType=allocateOrder.OrderType,
+ OrderStatus=allocateOrder.OrderStatus,
+ CreateType=allocateOrder.CreateType,
+ BusinessType=allocateOrder.BusinessType,
+ IsBatch=allocateOrder.IsBatch,
+ FactoryArea=allocateOrder.FactoryArea,
+ Remark=allocateOrder.Remark,
+ Details=allocateOrder.Details.Select(detail=>new Dt_InboundOrderDetail
+ {
+ OrderId= detail.OrderId,
+ MaterielCode=detail.MaterielCode,
+ MaterielName="",
+ BatchNo=detail.BatchNo,
+ OrderQuantity=detail.OrderQuantity,
+ ReceiptQuantity=detail.ReceiptQuantity,
+ OverInQuantity=detail.OverInQuantity,
+ OrderDetailStatus=detail.OrderDetailStatus,
+ Unit=detail.Unit,
+ RowNo=0,
+ SupplyCode="",
+ WarehouseCode=detail.WarehouseCode,
+ Barcode=detail.Barcode,
+ OutBoxbarcodes="",
+ BarcodeQty=(decimal)detail.BarcodeQty,
+ BarcodeUnit=detail.BarcodeUnit
+ }).ToList()
+ }
+ };
+ }
+
+ public Dt_OutboundOrder ConvertToOutboundOrders(Dt_AllocateOrder allocateOrder)
+ {
+ return new Dt_OutboundOrder()
+ {
+ WarehouseId= allocateOrder.WarehouseId,
+ OrderNo=allocateOrder.OrderNo,
+ UpperOrderNo=allocateOrder.UpperOrderNo,
+ OrderType=allocateOrder.OrderType,
+ OrderStatus=allocateOrder.OrderStatus,
+ CreateType=allocateOrder.CreateType,
+ BusinessType=allocateOrder.BusinessType,
+ IsBatch=allocateOrder.IsBatch,
+ FactoryArea=allocateOrder.FactoryArea,
+ Remark=allocateOrder.Remark,
+ DepartmentCode="",
+ DepartmentName="",
+ Details=allocateOrder.Details.Select(detail=>new Dt_OutboundOrderDetail
+ {
+ OrderId= detail.OrderId,
+ MaterielCode=detail.MaterielCode,
+ MaterielName="",
+ BatchNo=detail.BatchNo,
+ OrderQuantity=detail.OrderQuantity,
+ LockQuantity=0,
+ OverOutQuantity=0,
+ OrderDetailStatus=detail.OrderDetailStatus,
+ Unit=detail.Unit,
+ RowNo=0,
+ SupplyCode="",
+ WarehouseCode=detail.WarehouseCode,
+
+ }).ToList()
+ };
+ }
+
+ static object lock_code = new object();
+ public string CreateCodeByRule(string ruleCode)
+ {
+ lock (lock_code)
+ {
+
+ string code = string.Empty;
+ DateTime dateTime = DateTime.Now;
+ DateTime now = DateTime.Now;
+ try
+ {
+ if (string.IsNullOrEmpty(ruleCode))
+ throw new ArgumentNullException(nameof(ruleCode));
+ SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig
+ {
+ IsAutoCloseConnection = true,
+ DbType = DbType.SqlServer,
+ ConnectionString = DBContext.ConnectionString
+ });
+ Dt_CodeRuleConfig codeRuleConfig = sugarClient.Queryable<Dt_CodeRuleConfig>().Where(x => x.RuleCode == ruleCode).First();
+ if (codeRuleConfig == null)
+ throw new ArgumentNullException(nameof(codeRuleConfig));
+ if (codeRuleConfig.ModifyDate != null)
+ {
+ dateTime = Convert.ToDateTime(codeRuleConfig.ModifyDate);
+ }
+ else
+ {
+ dateTime = Convert.ToDateTime(codeRuleConfig.CreateDate);
+ }
+
+ if (now.Year == dateTime.Year && now.Month == dateTime.Month && now.Day == dateTime.Day)
+ {
+ now = dateTime;
+ codeRuleConfig.CurrentVal = Convert.ToInt32(codeRuleConfig.CurrentVal) + 1;
+ }
+ else
+ {
+ codeRuleConfig.CurrentVal = 1;
+ }
+ codeRuleConfig.ModifyDate = DateTime.Now;
+ code = codeRuleConfig.StartStr + codeRuleConfig.Format;
+ code = code.Replace($"[{CodeFormatTypeEnum.YYYY}]", now.Year.ToString().PadLeft(4, '0'));
+ code = code.Replace($"[{CodeFormatTypeEnum.MM}]", now.Month.ToString().PadLeft(2, '0'));
+ code = code.Replace($"[{CodeFormatTypeEnum.DD}]", now.Day.ToString().PadLeft(2, '0'));
+ code = code.Replace($"[{CodeFormatTypeEnum.ST}]", codeRuleConfig.StartStr?.ToString() ?? "");
+ code = code.Replace($"[{CodeFormatTypeEnum.NUM}]", codeRuleConfig.CurrentVal.ToString().PadLeft(codeRuleConfig.Length, '0'));
+ Dictionary<string, object> keyValuePairs = new Dictionary<string, object>() { { nameof(codeRuleConfig.CurrentVal), codeRuleConfig.CurrentVal }, { nameof(codeRuleConfig.Id), codeRuleConfig.Id }, { nameof(codeRuleConfig.ModifyDate), DateTime.Now } };
+ sugarClient.Updateable(keyValuePairs).AS(MainDb.CodeRuleConfig).WhereColumns(nameof(codeRuleConfig.Id)).ExecuteCommand();
+ sugarClient.Updateable(codeRuleConfig);
+
+ }
+ catch (Exception ex)
+ {
+
+ }
+ return code;
+ }
+ }
}
}
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_AllocateService/WIDESEA_AllocateService.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_AllocateService/WIDESEA_AllocateService.csproj"
index fe117a5..1493640 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_AllocateService/WIDESEA_AllocateService.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_AllocateService/WIDESEA_AllocateService.csproj"
@@ -9,6 +9,8 @@
<ItemGroup>
<ProjectReference Include="..\WIDESEA_Core\WIDESEA_Core.csproj" />
<ProjectReference Include="..\WIDESEA_IAllocateService\WIDESEA_IAllocateService.csproj" />
+ <ProjectReference Include="..\WIDESEA_IInboundService\WIDESEA_IInboundService.csproj" />
+ <ProjectReference Include="..\WIDESEA_IOutboundService\WIDESEA_IOutboundService.csproj" />
<ProjectReference Include="..\WIDESEA_Model\WIDESEA_Model.csproj" />
</ItemGroup>
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/AllocateEnum/BusinessTypeEnum.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/AllocateEnum/BusinessTypeEnum.cs"
new file mode 100644
index 0000000..cad2935
--- /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/AllocateEnum/BusinessTypeEnum.cs"
@@ -0,0 +1,15 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace WIDESEA_Common.AllocateEnum
+{
+ public enum BusinessTypeEnum
+ {
+ 鏅轰粨璋冩櫤浠�=1,
+ 鏅轰粨璋冨閮ㄤ粨搴�=2,
+ 澶栭儴浠撳簱璋冩櫤浠�=3
+ }
+}
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_Core/CodeConfigEnum/RuleCodeEnum.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_Core/CodeConfigEnum/RuleCodeEnum.cs"
index f270e87..3d6df73 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_Core/CodeConfigEnum/RuleCodeEnum.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_Core/CodeConfigEnum/RuleCodeEnum.cs"
@@ -44,6 +44,11 @@
/// 鍏ユ枡鍗曞彿缂栫爜瑙勫垯
/// </summary>
[Description("鍏ユ枡鍗曞彿缂栫爜瑙勫垯")]
- RLCodeRule
+ RLCodeRule,
+ /// <summary>
+ /// 璋冩嫧鍗曞彿缂栫爜瑙勫垯
+ /// </summary>
+ [Description("璋冩嫧鍗曞彿缂栫爜瑙勫垯")]
+ AllocateOrderCodeRule
}
}
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/Allocate/AllocateDto.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/Allocate/AllocateDto.cs"
index d658ab2..69ac035 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_DTO/Allocate/AllocateDto.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/Allocate/AllocateDto.cs"
@@ -4,6 +4,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_DTO.Inbound;
namespace WIDESEA_DTO.Allocate
{
@@ -136,4 +137,6 @@
[JsonProperty("unit")]
public string Unit { 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_IAllocateService/IAllocateService.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_IAllocateService/IAllocateService.cs"
index 57dc5fe..3f4cd3f 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_IAllocateService/IAllocateService.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_IAllocateService/IAllocateService.cs"
@@ -3,10 +3,11 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.Allocate;
+
namespace WIDESEA_IAllocateService
{
@@ -14,5 +15,7 @@
public interface IAllocateService : IService<Dt_AllocateOrder>
{
IRepository<Dt_AllocateOrder> Repository { get; }
+
+ WebResponseContent ReceiveAllocateOrder(Dt_AllocateOrder allocateOrder, int operateType);
}
}
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_Model/Models/Allocate/Dt_ AllocateOrder.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_Model/Models/Allocate/Dt_ AllocateOrder.cs"
index 1109425..c20497a 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_Model/Models/Allocate/Dt_ AllocateOrder.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_Model/Models/Allocate/Dt_ AllocateOrder.cs"
@@ -1,18 +1,110 @@
-锘縰sing SqlSugar;
+锘縰sing MailKit.Search;
+using SqlSugar;
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core.DB.Models;
-namespace WIDESEA_Model.Models.Allocate
+namespace WIDESEA_Model.Models
{
/// <summary>
- ///
+ /// 璋冩嫧鍗�
/// </summary>
- [SugarTable(nameof(Dt_InboundOrder), "鍏ュ簱鍗�")]
+ [SugarTable(nameof(Dt_AllocateOrder), "璋冩嫧鍗�")]
public class Dt_AllocateOrder : BaseEntity
- {
+ {
+ /// <summary>
+ /// 涓婚敭ID锛堣嚜澧烇級
+ /// </summary>
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// 浠撳簱ID
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "浠撳簱ID")]
+ public int WarehouseId { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟缂栧彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "璁㈠崟缂栧彿")]
+ public string OrderNo { get; set; }
+
+ /// <summary>
+ /// 涓婄骇璁㈠崟缂栧彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "涓婄骇璁㈠崟缂栧彿")]
+ public string UpperOrderNo { get; set; }
+
+ /// <summary>
+ /// 渚涘簲鍟咺D
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "渚涘簲鍟咺D")]
+ public string SupplierId { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟绫诲瀷
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟绫诲瀷")]
+ public int OrderType { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鐘舵��
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鐘舵��")]
+ public int OrderStatus { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓绫诲瀷
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍒涘缓绫诲瀷")]
+ public int CreateType { get; set; }
+
+ /// <summary>
+ /// 涓氬姟绫诲瀷
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "涓氬姟绫诲瀷")]
+ public string BusinessType { get; set; }
+
+ /// <summary>
+ /// 鏉ユ簮浠撳簱
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏉ユ簮浠撳簱")]
+ public string FromWarehouse { get; set; }
+
+ /// <summary>
+ /// 鐩爣浠撳簱
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐩爣浠撳簱")]
+ public string ToWarehouse { get; set; }
+
+ /// <summary>
+ /// 鏄惁鎵规
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鏄惁鎵规")]
+ public bool? IsBatch { get; set; }
+
+ /// <summary>
+ /// 鍘傚尯
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鍘傚尯")]
+ public string FactoryArea { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 200, ColumnDescription = "澶囨敞")]
+ public string Remark { get; set; }
+
+ /// <summary>
+ /// 璋冩嫧鍗曟槑缁�
+ /// </summary>
+ [Navigate(NavigateType.OneToMany, nameof(Dt_AllocateOrderDetail.OrderId), nameof(Id))]
+ public List<Dt_AllocateOrderDetail> Details { 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_Model/Models/Allocate/Dt_AllocateOrderDetail.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_Model/Models/Allocate/Dt_AllocateOrderDetail.cs"
index 760228f..d184693 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_Model/Models/Allocate/Dt_AllocateOrderDetail.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_Model/Models/Allocate/Dt_AllocateOrderDetail.cs"
@@ -1,12 +1,110 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Core.DB.Models;
-namespace WIDESEA_Model.Models.Allocate
+namespace WIDESEA_Model.Models
{
- public class Dt_AllocateOrderDetail
+ /// <summary>
+ /// 璋冩嫧鍗曟槑缁�
+ /// </summary>
+ [SugarTable(nameof(Dt_AllocateOrderDetail), "璋冩嫧鍗曟槑缁�")]
+ public class Dt_AllocateOrderDetail : BaseEntity
{
+ /// <summary>
+ /// 涓婚敭ID锛堣嚜澧烇級
+ /// </summary>
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnDescription = "涓婚敭")]
+ public int Id { get; set; }
+
+ /// <summary>
+ /// 鍏宠仈璁㈠崟ID锛堝搴擠t_AllocateOrder.Id锛�
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鍏宠仈璁㈠崟ID")]
+ public int OrderId { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栫爜
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鐗╂枡缂栫爜")]
+ public string MaterielCode { get; set; }
+
+
+ /// <summary>
+ /// 鎵规鍙�
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鎵规鍙�")]
+ public string BatchNo { get; set; }
+
+ /// <summary>
+ /// 璁㈠崟鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "璁㈠崟鏁伴噺")]
+ public decimal OrderQuantity { get; set; }
+
+ /// <summary>
+ /// 鏀惰揣鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鏀惰揣鏁伴噺")]
+ public decimal ReceiptQuantity { get; set; }
+
+ /// <summary>
+ /// 瓒呴鍏ュ簱鏁伴噺
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "瓒呴鍏ュ簱鏁伴噺")]
+ public decimal OverInQuantity { get; set; }
+
+ /// <summary>
+ /// 鏄庣粏鐘舵��
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鏄庣粏鐘舵��")]
+ public int OrderDetailStatus { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "鍗曚綅")]
+ public string Unit { get; set; }
+
+ /// <summary>
+ /// 琛屽彿
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 20, ColumnDescription = "琛屽彿")]
+ public string LineNo { get; set; }
+
+ /// <summary>
+ /// 浠撳簱缂栫爜
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "浠撳簱缂栫爜")]
+ public string WarehouseCode { get; set; }
+
+ /// <summary>
+ /// 鏉″舰鐮�
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏉″舰鐮�")]
+ public string Barcode { get; set; }
+
+ /// <summary>
+ /// 鏉″舰鐮佹暟閲�
+ /// </summary>
+ [SugarColumn(IsNullable = false, ColumnDescription = "鏉″舰鐮佹暟閲�")]
+ public decimal? BarcodeQty { get; set; }
+
+ /// <summary>
+ /// 鏉″舰鐮佸崟浣�
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 50, ColumnDescription = "鏉″舰鐮佸崟浣�")]
+ public string BarcodeUnit { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(IsNullable = false, Length = 255, ColumnDescription = "澶囨敞")]
+ public string Remark { 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_Model/Models/Inbound/Dt_InboundOrder.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_Model/Models/Inbound/Dt_InboundOrder.cs"
index e3644cb..ccff342 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_Model/Models/Inbound/Dt_InboundOrder.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_Model/Models/Inbound/Dt_InboundOrder.cs"
@@ -78,7 +78,7 @@
/// 榛樿鍊�:
///</summary>
[SugarColumn(ColumnName = "isBatch", ColumnDescription = "鏄惁鍒嗘壒")]
- public int? IsBatch { get; set; }
+ public bool? IsBatch { get; set; }
/// <summary>
/// 澶� 娉�:鍘傚尯
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_Model/Models/Outbound/Dt_OutboundOrder.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_Model/Models/Outbound/Dt_OutboundOrder.cs"
index d72efc3..f5d40c0 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_Model/Models/Outbound/Dt_OutboundOrder.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_Model/Models/Outbound/Dt_OutboundOrder.cs"
@@ -84,7 +84,7 @@
/// 榛樿鍊�:
///</summary>
[SugarColumn(ColumnName = "isBatch", ColumnDescription = "鏄惁鍒嗘壒")]
- public int? IsBatch { get; set; }
+ public bool? IsBatch { get; set; }
/// <summary>
/// 澶� 娉�:鍘傚尯
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/Allocate/AllocateOrderController.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/Allocate/AllocateOrderController.cs"
index 361a8e5..b0fef60 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/Controllers/Allocate/AllocateOrderController.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/Allocate/AllocateOrderController.cs"
@@ -1,9 +1,15 @@
-锘縰sing Microsoft.AspNetCore.Mvc;
+锘縰sing Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Data.Common;
+using System.Diagnostics.Eventing.Reader;
+using WIDESEA_Core;
+using WIDESEA_Core.Attributes;
using WIDESEA_Core.BaseController;
+using WIDESEA_DTO.Allocate;
using WIDESEA_IAllocateService;
using WIDESEA_IInboundService;
using WIDESEA_Model.Models;
-using WIDESEA_Model.Models.Allocate;
+
namespace WIDESEA_WMSServer.Controllers.Allocate
{
@@ -19,7 +25,60 @@
{
}
+ [HttpPost, Route("ReceiveAllocateOrder"), MethodParamsValidate, AllowAnonymous]
+ public WebResponseContent ReceiveAllocateOrder([FromBody] AllocateDto model)
+ {
+ Dt_AllocateOrder allocateOrder = new Dt_AllocateOrder
+ {
+ OrderNo = model.OrderNo,
+ UpperOrderNo = model.OrderNo,
+ BusinessType=model.BusinessType,
+ FactoryArea=model.FactoryArea,
+ IsBatch=model.IsBatch,
+ CreateType = model.OperationType,
+ Details = new List<Dt_AllocateOrderDetail>()
+ };
+ foreach (var detailDto in model.Details)
+ {
+ if (detailDto.Barcodes != null && detailDto.Barcodes.Any())
+ {
+ foreach (var barcodeDto in detailDto.Barcodes)
+ {
+ Dt_AllocateOrderDetail orderDetail = new Dt_AllocateOrderDetail
+ {
+ WarehouseCode = detailDto.WarehouseCode,
+ MaterielCode = detailDto.MaterialCode,
+ LineNo = detailDto.LineNo,
+ OrderQuantity = detailDto.Qty,
+ Unit = detailDto.Unit,
+ Barcode = barcodeDto.Barcode,
+ BatchNo = barcodeDto.BatchNo,
+ BarcodeQty = barcodeDto.Qty,
+ BarcodeUnit = barcodeDto.Unit
+ };
+ allocateOrder.Details.Add(orderDetail);
+ }
+ }
+ else
+ {
+ Dt_AllocateOrderDetail orderDetail = new Dt_AllocateOrderDetail
+ {
+ WarehouseCode = detailDto.WarehouseCode,
+ MaterielCode = detailDto.MaterialCode,
+ LineNo = detailDto.LineNo,
+ OrderQuantity = detailDto.Qty,
+ Unit = detailDto.Unit
+ };
+ allocateOrder.Details.Add(orderDetail);
+ }
+ allocateOrder.Details.AddRange(allocateOrder.Details);
+ }
+ var content = Service.ReceiveAllocateOrder(allocateOrder, model.OperationType);
+
+ if (content.Status) return WebResponseContent.Instance.OK(200);
+ else return WebResponseContent.Instance.Error(content.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/appsettings.json" "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/appsettings.json"
index 65182e5..9ea9bf9 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/appsettings.json"
+++ "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/appsettings.json"
@@ -12,7 +12,7 @@
"MainDB": "DB_WIDESEA", //褰撳墠椤圭洰鐨勪富搴擄紝鎵�瀵瑰簲鐨勮繛鎺ュ瓧绗︿覆鐨凟nabled蹇呴』涓簍rue
//杩炴帴瀛楃涓�
//"ConnectionString": "HTI6FB1H05Krd07mNm9yBCNhofW6edA5zLs9TY~MNthRYW3kn0qKbMIsGp~3yyPDF1YZUCPBQx8U0Jfk4PH~ajNFXVIwlH85M3F~v_qKYQ3CeAz3q1mLVDn8O5uWt1~3Ut2V3KRkEwYHvW2oMDN~QIDXPxDgXN0R2oTIhc9dNu7QNaLEknblqmHhjaNSSpERdDVZIgHnMKejU_SL49tralBkZmDNi0hmkbL~837j1NWe37u9fJKmv91QPb~16JsuI9uu0EvNZ06g6PuZfOSAeFH9GMMIZiketdcJG3tHelo=",
- "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_ALDZhongRui;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
+ "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWMS_ALDZhongRui;User ID=sa;Password=root;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
//"ConnectionString": "Data Source=10.30.4.92;Initial Catalog=WMS_TC;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
//鏃MS鏁版嵁搴撹繛鎺�
//"TeConnectionString": "Data Source=10.30.4.92;Initial Catalog=TeChuang;User ID=sa;Password=duo123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
--
Gitblit v1.9.3