From 9ceb6015e9cb8974364c30ae5e61fab1082ed0e1 Mon Sep 17 00:00:00 2001
From: wanggang <76527413@qq.com>
Date: Sat, 26 Aug 2023 14:13:11 +0800
Subject: [PATCH] up
---
.../wwwroot/components/form/form-input.js | 2 +-
.../wwwroot/models/settle/detail.js | 4 +-
.../wwwroot/models/vmi/adjust.js | 35 ++--
.../wwwroot/models/vmi/backup.js | 150 ++----------------
.../wwwroot/models/vmi/balance.js | 21 +++
.../wwwroot/models/vmi/log.js | 40 ++---
.../wwwroot/models/vmi/vmi.js | 8 +-
.../wwwroot/request/index.js | 12 +-
.../wwwroot/router/business.js | 10 +-
.../Entities/BQ/VmiAppService.cs | 36 +++--
.../Entities/BQ/VmiAsyncBalanceService.cs | 3 +
.../SettleAccount.Domain.Shared.csproj | 2 +-
.../SettleAccount.Domain.csproj | 6 +-
.../Win.Sfs.Shared/Win.Sfs.Shared.csproj | 12 +-
code/src/Shared/Win.Utils/Win.Utils.csproj | 2 +-
15 files changed, 140 insertions(+), 203 deletions(-)
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/form/form-input.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/form/form-input.js
index 848f81ac..37ed61b0 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/form/form-input.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/components/form/form-input.js
@@ -31,7 +31,7 @@ export default {
-
+
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/settle/detail.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/settle/detail.js
index b57c8145..05b77e14 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/settle/detail.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/settle/detail.js
@@ -21,11 +21,11 @@ const schema = {
type: "string",
},
lu: {
- title: "厂内零件号",
+ title: "客户零件号",
type: "string",
},
partCode: {
- title: "客户零件号",
+ title: "厂内零件号",
type: "string",
},
materialDesc: {
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/adjust.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/adjust.js
index 6316da9a..2fbc2f3f 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/adjust.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/adjust.js
@@ -1,4 +1,5 @@
import { useLogSchema } from "./vmi.js";
+import { dayjs } from "element-plus";
const schema = useLogSchema();
@@ -51,6 +52,26 @@ export default function () {
},
},
default: [
+ {
+ logic: "and",
+ column: "changedTime",
+ action: "biggerThanOrEqual",
+ value: null,
+ readOnly: true,
+ title: "发运开始",
+ default: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+ clearable: false,
+ },
+ {
+ logic: "and",
+ column: "changedTime",
+ action: "smallThan",
+ value: null,
+ readOnly: true,
+ title: "发运结束",
+ default: dayjs().add(1, "month").startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+ clearable: false,
+ },
{
logic: "and",
column: "erpToLoc",
@@ -93,20 +114,6 @@ export default function () {
value: null,
readOnly: true,
},
- {
- logic: "and",
- column: "billTime",
- action: "biggerThanOrEqual",
- value: null,
- readOnly: true,
- },
- {
- logic: "and",
- column: "billTime",
- action: "smallThanOrEqual",
- value: null,
- readOnly: true,
- },
],
},
skipCount: {
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/backup.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/backup.js
index fa43f8f9..dfab2fea 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/backup.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/backup.js
@@ -1,139 +1,21 @@
-import useVmi from "./vmi.js";
-
-const schema = useVmi();
-
-const baseUrl = "settleaccount/vmi";
-const queryUrl = `${baseUrl}/backup`;
-const detailsUrl = `${baseUrl}/get/%s`;
-const createUrl = `${baseUrl}/create`;
-const updateUrl = `${baseUrl}/update/%s`;
-const deleteUrl = `${baseUrl}/delete-list`;
-const importUrl = `${baseUrl}/code-setting-upload-excel-import`;
-const exportUrl = `${baseUrl}/backup-export`;
-const invokeUrl = "settleaccount/vmi/invoke";
-const queryMethod = "POST";
-const detailsMethod = "POST";
-const createMethod = "POST";
-const updateMethod = "POST";
-const deleteMethod = "POST";
-const importMethod = "POST";
-const exportMethod = "POST";
-const invokeMethod = "POST";
+import useBalance from "./balance.js";
export default function () {
- return {
- query: {
- url: queryUrl,
- method: queryMethod,
- hasFilter: true,
- autoSubmit: true,
- disableQueryOnLoad: true,
- schema: {
- title: "时点库存余额查询",
- type: "object",
- properties: {
- name: {
- title: "时间",
- type: "string",
- input: "select",
- url: "settleaccount/vmi/snapshot",
- value: "description",
- label: "name",
- defaultSelected: true,
- clearable: false,
- },
- filters: {
- title: "项目",
- type: "array",
- hidden: true,
- items: {
- type: "object",
- properties: {
- logic: {
- type: "int",
- },
- column: {
- type: "string",
- },
- action: {
- type: "int",
- },
- value: {
- type: "string",
- },
- },
- },
- default: [
- {
- logic: "and",
- column: "erpToLoc",
- action: "like",
- value: null,
- readOnly: true,
- },
- {
- logic: "and",
- column: "realPartCode",
- action: "like",
- value: null,
- readOnly: true,
- },
- {
- logic: "and",
- column: "vinCode",
- action: "like",
- value: null,
- readOnly: true,
- },
- {
- logic: "and",
- column: "codeType",
- action: "equal",
- value: null,
- readOnly: true,
- },
- {
- logic: "and",
- column: "deliverBillType",
- action: "equal",
- value: null,
- readOnly: true,
- },
- ],
- },
- skipCount: {
- hidden: true,
- default: 0,
- },
- maxResultCount: {
- hidden: true,
- default: 10,
- },
- sorting: {
- hidden: true,
- },
- },
+ const result = useBalance();
+ result.query.schema.properties = Object.assign(
+ {
+ name: {
+ title: "备份时间",
+ type: "string",
+ input: "select",
+ url: "settleaccount/vmi/snapshot",
+ value: "description",
+ label: "name",
+ defaultSelected: true,
+ clearable: false,
},
},
- table: {
- schema: schema,
- },
- edit: {
- detailsUrl,
- createUrl,
- updateUrl,
- deleteUrl,
- importUrl,
- exportUrl,
- invokeUrl,
- detailsMethod,
- createMethod,
- updateMethod,
- deleteMethod,
- importMethod,
- exportMethod,
- invokeMethod,
- schema: schema,
- },
- };
+ result.query.schema.properties
+ );
+ return result;
}
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/balance.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/balance.js
index da3a8a86..8979bce7 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/balance.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/balance.js
@@ -1,4 +1,5 @@
import useVmi from "./vmi.js";
+import { dayjs } from "element-plus";
const schema = useVmi();
@@ -50,6 +51,26 @@ export default function () {
},
},
default: [
+ {
+ logic: "and",
+ column: "billTime",
+ action: "biggerThanOrEqual",
+ value: null,
+ readOnly: true,
+ title: "发运开始",
+ default: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+ clearable: false,
+ },
+ {
+ logic: "and",
+ column: "billTime",
+ action: "smallThan",
+ value: null,
+ readOnly: true,
+ title: "发运结束",
+ default: dayjs().add(1, "month").startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+ clearable: false,
+ },
{
logic: "and",
column: "erpToLoc",
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/log.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/log.js
index 4c18888a..124c3c01 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/log.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/log.js
@@ -53,6 +53,26 @@ export default function () {
},
},
default: [
+ {
+ logic: "and",
+ column: "changedTime",
+ action: "biggerThanOrEqual",
+ value: null,
+ readOnly: true,
+ title: "事务开始",
+ default: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+ clearable: false,
+ },
+ {
+ logic: "and",
+ column: "changedTime",
+ action: "smallThan",
+ value: null,
+ readOnly: true,
+ title: "事务结束",
+ default: dayjs().add(1, "month").startOf("day").format("YYYY-MM-DD HH:mm:ss"),
+ clearable: false,
+ },
{
logic: "and",
column: "erpToLoc",
@@ -95,26 +115,6 @@ export default function () {
value: null,
readOnly: true,
},
- {
- logic: "and",
- column: "billTime",
- action: "biggerThanOrEqual",
- value: null,
- readOnly: true,
- title: "发运开始",
- default: dayjs().startOf("day").format("YYYY-MM-DD HH:mm:ss"),
- clearable: false,
- },
- {
- logic: "and",
- column: "billTime",
- action: "smallThan",
- value: null,
- readOnly: true,
- title: "发运结束",
- default: dayjs().add(1, "month").startOf("day").format("YYYY-MM-DD HH:mm:ss"),
- clearable: false,
- },
],
},
skipCount: {
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/vmi.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/vmi.js
index d6db88b6..c297775e 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/vmi.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/models/vmi/vmi.js
@@ -23,6 +23,7 @@ function useSchema() {
title: "发运日期",
type: "string",
input: "datetime",
+ clearable: false,
},
assembleData: {
title: "订单日期",
@@ -79,7 +80,8 @@ function useSchema() {
}
function useLogSchema() {
- return Object.assign(
+ const result = useSchema();
+ result.properties = Object.assign(
{
changedNumber: {
title: "变动单号",
@@ -89,6 +91,7 @@ function useLogSchema() {
title: "变动时间",
type: "string",
input: "datetime",
+ clearable: false,
},
changedType: {
title: "变动类型",
@@ -124,8 +127,9 @@ function useLogSchema() {
type: "string",
},
},
- useSchema()
+ result.properties
);
+ return result;
}
export default useSchema;
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/request/index.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/request/index.js
index 95c78741..5ec0d0d2 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/request/index.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/request/index.js
@@ -37,8 +37,8 @@ async function getResult(response) {
status: response.status,
message: messages.get(response.status),
};
+ const contentType = response.headers.get("Content-Type");
if (response.status === 200 || response.status === 201 || response.status === 204) {
- const contentType = response.headers.get("Content-Type");
if (contentType?.indexOf("application/json") > -1) {
result.data = await response.json();
} else if (contentType?.indexOf("text/plain") > -1) {
@@ -49,11 +49,16 @@ async function getResult(response) {
}
} else {
try {
- result.errors = await response.json();
+ if (contentType?.indexOf("application/json") > -1) {
+ result.errors = await response.json();
+ }
} catch (error) {
result.errors = error;
console.log(error);
}
+ if (!result.errors) {
+ result.errors = result.message;
+ }
}
return result;
}
@@ -91,7 +96,8 @@ async function request(url, data, options, notify = false) {
result.errors = result.data.message ?? result.data.code;
}
if (result.errors) {
- const message = i18n.global.t(result.errors?.error?.message ?? result.errors?.error?.code ?? result.errors ?? "错误");
+ const key = String(result.errors?.error?.message ?? result.errors?.error?.code ?? result.errors ?? "错误");
+ const message = i18n.global.t(key);
ElMessageBox({ title: "提示", message, type: "warning" });
} else if (notify && (!result.data?.code || result.data.code === 200)) {
ElMessage({
diff --git a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/router/business.js b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/router/business.js
index 2379ccdc..34436ccb 100644
--- a/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/router/business.js
+++ b/code/src/Modules/SettleAccount/host/SettleAccount.HttpApi.Host/wwwroot/router/business.js
@@ -405,20 +405,20 @@ export default [
children: [createButton("query", "title=查询&isTop=true"), createButton("export", "title=导出&isTop=true&pattern=paged")],
},
{
- ...createPage("log", "title=库存事务查询"),
- path: "log",
+ ...createPage("backup", "title=时点库存余额查询"),
children: [
createButton("query", "title=查询&isTop=true"),
createButton("export", "title=导出&isTop=true&pattern=paged"),
- createButton("export-replenishment", "title=补货数据导出&isTop=true&pattern=paged"),
+ createButton("invoke", "title=手动备份&isTop=true"),
],
},
{
- ...createPage("backup", "title=时点库存余额查询"),
+ ...createPage("log", "title=库存事务查询"),
+ path: "log",
children: [
createButton("query", "title=查询&isTop=true"),
createButton("export", "title=导出&isTop=true&pattern=paged"),
- createButton("invoke", "title=手动备份&isTop=true"),
+ createButton("export-replenishment", "title=补货数据导出&isTop=true&pattern=paged"),
],
},
{
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
index d0f95b80..2e8f1819 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAppService.cs
@@ -138,6 +138,7 @@ public class VmiAppService : ApplicationService, IJobService, ITransientDependen
db.Set().Add(snapshot);
db.SaveChanges();
db.Database.ExecuteSqlRaw($"select * into {table} from Set_VmiBalance;");
+ db.Database.ExecuteSqlRaw($"create clustered index IX_{table} on {table} (BillTime)");
snapshot.End = DateTime.Now;
transaction.Commit();
return Task.CompletedTask;
@@ -212,10 +213,9 @@ public class VmiAppService : ApplicationService, IJobService, ITransientDependen
[HttpPost]
public async Task> Log(LogRequestDto input)
{
- using var scope = this._serviceProvider.CreateScope();
- var db = scope.ServiceProvider.GetRequiredService();
- var start = DateTime.Parse(input.Filters.FirstOrDefault(o => o.Column == "billTime" && o.Action == EnumFilterAction.BiggerThanOrEqual).Value);
- var end = DateTime.Parse(input.Filters.FirstOrDefault(o => o.Column == "billTime" && o.Action == EnumFilterAction.BiggerThanOrEqual).Value);
+ //按季度计算查询需要 union 的表名
+ var start = DateTime.Parse(input.Filters.FirstOrDefault(o => o.Column == "changedTime" && o.Action == EnumFilterAction.BiggerThanOrEqual).Value);
+ var end = DateTime.Parse(input.Filters.FirstOrDefault(o => o.Column == "changedTime" && o.Action == EnumFilterAction.SmallThan).Value);
var tables = new List();
for (var time = start; time <= end; time = time.AddMonths(1))
{
@@ -223,18 +223,32 @@ public class VmiAppService : ApplicationService, IJobService, ITransientDependen
if (!tables.Contains(tableName))
{
tables.Add(tableName);
- if (db.Database.ExecuteSqlRaw($"select OBJECT_ID('{tableName}', 'U')") == -1)
- {
- var tran = db.Database.BeginTransaction();
- db.Database.ExecuteSqlRaw($"select * into {tableName} from Set_VmiLog");
- db.Database.ExecuteSqlRaw($"create clustered index IX_{tableName} on {tableName} (BillTime)");
- tran.Commit();
- }
}
}
+ //不存在则创建table
+ tables.ForEach(tableName =>
+ {
+ using var scope = this._serviceProvider.CreateScope();
+ var context = scope.ServiceProvider.GetRequiredService();
+ using var connection = context.Database.GetDbConnection();
+ connection.Open();
+ var cmd = connection.CreateCommand();
+ cmd.CommandText = $"select OBJECT_ID('{tableName}', 'U')";
+ var result = cmd.ExecuteScalar().ToString();
+ if (result == string.Empty)
+ {
+ cmd.CommandText = $"select * into {tableName} from Set_VmiLog;create clustered index IX_{tableName} on {tableName} (BillTime);";
+ cmd.ExecuteNonQuery();
+ }
+ });
+
+ //生成 union all 的 SQL
var sql = $"select * from {tables.First()}";
tables.Skip(1).ForEach(o => sql += $" union all select * from ${o}");
+ //使用 FromSqlRaw 查询
+ using var scope = this._serviceProvider.CreateScope();
+ var db = scope.ServiceProvider.GetRequiredService();
var query = db.Set().FromSqlRaw(sql);
var filters = input.Filters.ToLambda();
if (input.Filters.Count > 0)
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs
index 45fe2d3b..e08d27f8 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Application/Entities/BQ/VmiAsyncBalanceService.cs
@@ -37,6 +37,9 @@ public class VmiAsyncBalanceService : ApplicationService, IJobService, ITransien
foreach (var message in messages)
{
var log = JsonSerializer.Deserialize(message.Message);
+ //插入分表
+ //var tableName = $"Set_VmiLog_{log.BillTime.Year}_{(time.Month - 1) / 3 + 1}";
+ //插入库存
var balance = db.Set().FirstOrDefault(
o => o.DeliverBillType == log.DeliverBillType &&
o.CodeType == log.CodeType &&
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/SettleAccount.Domain.Shared.csproj b/code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/SettleAccount.Domain.Shared.csproj
index 113ed56d..1d93bf18 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/SettleAccount.Domain.Shared.csproj
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain.Shared/SettleAccount.Domain.Shared.csproj
@@ -16,7 +16,7 @@
-
+
diff --git a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/SettleAccount.Domain.csproj b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/SettleAccount.Domain.csproj
index 225e6f9c..884a9a7f 100644
--- a/code/src/Modules/SettleAccount/src/SettleAccount.Domain/SettleAccount.Domain.csproj
+++ b/code/src/Modules/SettleAccount/src/SettleAccount.Domain/SettleAccount.Domain.csproj
@@ -39,9 +39,9 @@
-
-
-
+
+
+
diff --git a/code/src/Shared/Win.Sfs.Shared/Win.Sfs.Shared.csproj b/code/src/Shared/Win.Sfs.Shared/Win.Sfs.Shared.csproj
index 0fa850e6..2a082374 100644
--- a/code/src/Shared/Win.Sfs.Shared/Win.Sfs.Shared.csproj
+++ b/code/src/Shared/Win.Sfs.Shared/Win.Sfs.Shared.csproj
@@ -1,4 +1,4 @@
-
+
netcoreapp5
@@ -13,11 +13,11 @@
-
-
-
-
-
+
+
+
+
+
diff --git a/code/src/Shared/Win.Utils/Win.Utils.csproj b/code/src/Shared/Win.Utils/Win.Utils.csproj
index 5450f2a7..0888e780 100644
--- a/code/src/Shared/Win.Utils/Win.Utils.csproj
+++ b/code/src/Shared/Win.Utils/Win.Utils.csproj
@@ -8,7 +8,7 @@
-
+