From c6fd827a11eda1dcb747b2f48113e074ad13cbf2 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周六, 23 11月 2024 13:26:34 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/LA24030-LuLI_PackageLine
---
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs | 308 +++++++++++++----------
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs | 9
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/Mes_BatchOrderUPI.cs | 77 +++++
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Enum/WmsOrder/PushStatusEnum.cs | 33 ++
CC/iWareSql/WmsDBModel/mes_PushPackageCode.cs | 46 +++
CC/iWareCommon/Utils/HTTP/HttpHelper.cs | 26 -
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs | 183 ++++++++++++++
CC/iWareSql/iWareSql.csproj | 1
CC/iWareCC_ASRS/ThreadService/00_269工位/DataProcess_269.cs | 1
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs | 4
CC/iWareSql/WmsDBModel/WmsDBModel.cs | 2
LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs | 21 +
CC/iWareCC_ASRS/ThreadService/04_BZ21(搬运整垛机器人)/DataProcess_BZ21.cs | 59 ++++
CC/iWareCC_ASRS/iWareCC.csproj | 2
14 files changed, 616 insertions(+), 156 deletions(-)
diff --git "a/CC/iWareCC_ASRS/ThreadService/00_269\345\267\245\344\275\215/DataProcess_269.cs" "b/CC/iWareCC_ASRS/ThreadService/00_269\345\267\245\344\275\215/DataProcess_269.cs"
index ce9dfce..bc41628 100644
--- "a/CC/iWareCC_ASRS/ThreadService/00_269\345\267\245\344\275\215/DataProcess_269.cs"
+++ "b/CC/iWareCC_ASRS/ThreadService/00_269\345\267\245\344\275\215/DataProcess_269.cs"
@@ -75,5 +75,6 @@
}
}
+
}
}
diff --git "a/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs" "b/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs"
new file mode 100644
index 0000000..bede0a6
--- /dev/null
+++ "b/CC/iWareCC_ASRS/ThreadService/04_BZ21\357\274\210\346\220\254\350\277\220\346\225\264\345\236\233\346\234\272\345\231\250\344\272\272\357\274\211/DataProcess_BZ21.cs"
@@ -0,0 +1,59 @@
+锘縰sing iWareCommon.Utils;
+using iWareSql.WmsDBModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace iWareCC.ThreadService._04_BZ21_鎼繍鏁村灈鏈哄櫒浜篲
+{
+ public class DataProcess_BZ21
+ {
+ public static void PushPackageCode()
+ {
+ while (true)
+ {
+ Thread.Sleep(2000);
+ using (WmsDBModel edm = new WmsDBModel())
+ {
+ var value = edm.mes_PushPackageCode.Where(x => x.PushStatus == 0 || x.PushStatus == 1).FirstOrDefault();
+ if (value != null)
+ {
+ PushPackageCodeInput input = new PushPackageCodeInput();
+ input.PackageCode = value.PackageCode;
+ var res = HttpHelper.GetHttpResponse<PushPackageCodeInput, Respone>(" ", input, 10000);
+
+ }
+ }
+ }
+ }
+ public class PushPackageCodeInput
+ {
+ public string PackageCode { get; set; }
+ }
+ public class Respone
+ {
+ /// <summary>
+ /// 杩斿洖鐮�
+ /// </summary>
+ public string code { get; set; }
+
+ /// <summary>
+ /// 杩斿洖娑堟伅
+ /// </summary>
+ public string message { get; set; }
+
+ /// <summary>
+ /// 璇锋眰缂栧彿
+ /// </summary>
+ public string reqCode { get; set; }
+
+ /// <summary>
+ /// 鑷畾涔夎繑鍥烇紙杩斿洖浠诲姟鍗曞彿锛�
+ /// </summary>
+ public string data { get; set; }
+ }
+ }
+}
diff --git a/CC/iWareCC_ASRS/iWareCC.csproj b/CC/iWareCC_ASRS/iWareCC.csproj
index 04c7263..c71096e 100644
--- a/CC/iWareCC_ASRS/iWareCC.csproj
+++ b/CC/iWareCC_ASRS/iWareCC.csproj
@@ -161,6 +161,7 @@
<Compile Include="ThreadService\02_BZ39宸ヤ綅锛堣ˉ鏉垮悗宸ヤ綅锛塡Outbound\3銆丏ataProcess_RobotBuffer_FinishTaskForOutbound.cs" />
<Compile Include="ThreadService\02_BZ39宸ヤ綅锛堣ˉ鏉垮悗宸ヤ綅锛塡Inbound\2銆丏ataProcess_RobotBuffer_FinishTask.cs" />
<Compile Include="ThreadService\02_BZ39宸ヤ綅锛堣ˉ鏉垮悗宸ヤ綅锛塡Inbound\1銆丏ataProcess_BZ39.cs" />
+ <Compile Include="ThreadService\04_BZ21锛堟惉杩愭暣鍨涙満鍣ㄤ汉锛塡DataProcess_BZ21.cs" />
<Compile Include="WCF\CCWcfService.cs" />
<Compile Include="WCF\ICCWcfService.cs" />
<Compile Include="WmsTask\AutoUpdateEngineInfoTask.cs" />
@@ -354,7 +355,6 @@
</ItemGroup>
<ItemGroup>
<Folder Include="ThreadService\03_BZ12%28鏈哄櫒浜虹爜鍖呭伐浣�%29\" />
- <Folder Include="ThreadService\04_BZ21锛堟惉杩愭暣鍨涙満鍣ㄤ汉锛塡" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
diff --git a/CC/iWareCommon/Utils/HTTP/HttpHelper.cs b/CC/iWareCommon/Utils/HTTP/HttpHelper.cs
index 7a3473d..a8cca9f 100644
--- a/CC/iWareCommon/Utils/HTTP/HttpHelper.cs
+++ b/CC/iWareCommon/Utils/HTTP/HttpHelper.cs
@@ -75,34 +75,30 @@
/// <param name="url">璇锋眰鍦板潃</param>
/// <param name="postData">璇锋眰鍙傛暟</param>
/// <param name="timeout">寤惰繜鏃堕棿</param>
- /// <param name="method">POST GET PUT DELETE</param>
/// <returns>璇锋眰鐨剅esponse</returns>
- public static string GetHttpResponse(string url, object postData, int timeout,string method)
+ public static T2 GetHttpResponse<T, T2>(string url, T postData, int timeout)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = method;
+ request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
request.UserAgent = null;
request.Timeout = timeout;
-
- if (!"GET".Equals(method))
- {
- var myRequestStream = request.GetRequestStream();
- var json = postData == null ? "" : JsonConvert.SerializeObject(postData);
- var jsonBytes = UTF8Encoding.UTF8.GetBytes(json);
- myRequestStream.Write(jsonBytes, 0, jsonBytes.Length);
- }
-
+ //request.Headers.Add("Authorization", "eyJhbGciOiJIUzM4NCIsInR5cCI6IkpXVCJ9.eyJpYXQiOiIxNTUzNTMwNjAwIiwiZXhwIjoiMTYxNjYwMjYwMCIsImlzcyI6IlNBR1dXSVAiLCJzdWIiOiJ3Y3NpbnRlZ3JhdGVkIiwidXNlcm5hbWUiOiJ3Y3NpbnRlZ3JhdGVkIiwidXNlcmdyb3VwIjpbeyJsb2dpbm5hbWUiOiJ3Y3NpbnRlZ3JhdGVkIiwiZ3JvdXBJZCI6Ijg3YjE1MTQ1LWUwODMtNDM2Ny04ZjdiLTNiNTI3NWJhYzExZSIsImdyb3VwbmFtZSI6IlJDU2ludGVncmF0ZWQiLCJyb2xlSWQiOiI4NjNhMGIxZS0zODAzLTQyNmMtOTRlNC04OTRmNTE1ZWQyYzgiLCJyb2xlbmFtZSI6IlJDU-mbhuaIkCJ9LHsibG9naW5uYW1lIjoid2NzaW50ZWdyYXRlZCIsImdyb3VwSWQiOiI5ZGU3ZjA5Zi05YzhiLTQwNDEtODc0NS1hYjgxNGQ0OTFiODEiLCJncm91cG5hbWUiOiJXQ1NpbnRlZ3JhdGVkIiwicm9sZUlkIjoiNWJhZDE1YTUtOTQ1NC00YTc3LTk0OGYtNzUxMjI2NDdiOTA4Iiwicm9sZW5hbWUiOiJXQ1Ppm4bmiJAifV19.AN9iUPMFZ5w7UW7D5kERV903gPCtyk6o2STZILX7QzkVjKLLSWgpUnQYBBfiSSQk");
+ var myRequestStream = request.GetRequestStream();
+
+ var json = postData == null ? "" : JsonConvert.SerializeObject(postData);
+
+ var jsonBytes = UTF8Encoding.UTF8.GetBytes(json);
+ myRequestStream.Write(jsonBytes, 0, jsonBytes.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
-
- return retString;
+ T2 result = JsonConvert.DeserializeObject<T2>(retString);
+ return result;
}
-
/// <summary>
/// Http涓婁紶鏂囦欢
/// </summary>
diff --git a/CC/iWareSql/WmsDBModel/WmsDBModel.cs b/CC/iWareSql/WmsDBModel/WmsDBModel.cs
index 4ad1a5e..20c8836 100644
--- a/CC/iWareSql/WmsDBModel/WmsDBModel.cs
+++ b/CC/iWareSql/WmsDBModel/WmsDBModel.cs
@@ -11,7 +11,7 @@
: base("name=WmsDBModel")
{
}
-
+ public virtual DbSet<mes_PushPackageCode> mes_PushPackageCode { get; set; }
public virtual DbSet<ApprovalFlow> ApprovalFlow { get; set; }
public virtual DbSet<DingTalkUser> DingTalkUser { get; set; }
public virtual DbSet<GoViewPro> GoViewPro { get; set; }
diff --git a/CC/iWareSql/WmsDBModel/mes_PushPackageCode.cs b/CC/iWareSql/WmsDBModel/mes_PushPackageCode.cs
new file mode 100644
index 0000000..98faf02
--- /dev/null
+++ b/CC/iWareSql/WmsDBModel/mes_PushPackageCode.cs
@@ -0,0 +1,46 @@
+namespace iWareSql.WmsDBModel
+{
+ using System;
+ using System.Collections.Generic;
+ using System.ComponentModel.DataAnnotations;
+ using System.ComponentModel.DataAnnotations.Schema;
+ using System.Data.Entity.Spatial;
+
+ public partial class mes_PushPackageCode
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.None)]
+ public long Id { get; set; }
+
+ [Required]
+ [StringLength(50)]
+ public string PackageCode { get; set; }
+
+ public int PushStatus { get; set; }
+
+ public int PushNum { get; set; }
+
+ [StringLength(50)]
+ public string ApiMessage { get; set; }
+
+ public DateTime? CreateTime { get; set; }
+
+ public DateTime? UpdateTime { get; set; }
+
+ public long? CreateUserId { get; set; }
+
+ [StringLength(64)]
+ public string CreateUserName { get; set; }
+
+ public long? UpdateUserId { get; set; }
+
+ [StringLength(64)]
+ public string UpdateUserName { get; set; }
+
+ public long? CreateOrgId { get; set; }
+
+ [StringLength(64)]
+ public string CreateOrgName { get; set; }
+
+ public bool IsDelete { get; set; }
+ }
+}
diff --git a/CC/iWareSql/iWareSql.csproj b/CC/iWareSql/iWareSql.csproj
index 1a74c5c..a01c0ec 100644
--- a/CC/iWareSql/iWareSql.csproj
+++ b/CC/iWareSql/iWareSql.csproj
@@ -162,6 +162,7 @@
<Compile Include="WmsDBModel\GoViewPro.cs" />
<Compile Include="WmsDBModel\GoViewProData.cs" />
<Compile Include="WmsDBModel\mes_batchOrderUPI_new.cs" />
+ <Compile Include="WmsDBModel\mes_PushPackageCode.cs" />
<Compile Include="WmsDBModel\SysCodeGen.cs" />
<Compile Include="WmsDBModel\SysCodeGenConfig.cs" />
<Compile Include="WmsDBModel\SysConfig.cs" />
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/Mes_BatchOrderUPI.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/Mes_BatchOrderUPI.cs
index e74cd10..07ec490 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/Mes_BatchOrderUPI.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Entity/WmsOrder/Mes_BatchOrderUPI.cs
@@ -135,5 +135,82 @@
[SugarColumn(ColumnName = "Info3", ColumnDescription = "绾哥楂�", Length = 50)]
public float? Info3 { get; set; }
+ /// <summary>
+ /// 閿�鍞悎鍚屽崟鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info4", ColumnDescription = "閿�鍞悎鍚屽崟鍙�", Length = 60)]
+ public string? Info4 { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "Info5", ColumnDescription = "鐢熶骇鍗曞彿", Length = 60)]
+ public string? Info5 { get; set; }
+
+ /// <summary>
+ /// 绗嚑鍖�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info6", ColumnDescription = "绗嚑鍖�", Length = 60)]
+ public string? Info6 { get; set; }
+
+ /// <summary>
+ /// 缁忛攢搴楀悕绉�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info7", ColumnDescription = "缁忛攢搴楀悕绉�", Length = 60)]
+ public string? Info7 { get; set; }
+
+ /// <summary>
+ /// 浜у搧鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "Info8", ColumnDescription = "浜у搧鍚嶇О", Length = 60)]
+ public string? Info8 { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "Info10", ColumnDescription = "瀹㈡埛鍚嶇О", Length = 60)]
+ public string? Info10 { get; set; }
+
+ /// <summary>
+ /// 鍖呰缂栫爜
+ /// </summary>
+ [SugarColumn(ColumnName = "Info9", ColumnDescription = "鍖呰缂栫爜", Length = 60)]
+ public string? Info9 { get; set; }
+
+ /// <summary>
+ /// 鑷彁or鍙戣揣
+ /// </summary>
+ [SugarColumn(ColumnName = "Info11", ColumnDescription = "鑷彁or鍙戣揣", Length = 60)]
+ public string? Info11 { get; set; }
+
+ /// <summary>
+ /// 鍖呰閮ㄤ欢鎬绘暟閲�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info12", ColumnDescription = "鍖呰閮ㄤ欢鎬绘暟閲�", Length = 60)]
+ public string? Info12 { get; set; }
+
+ /// <summary>
+ /// 鍖呰闈㈢Н
+ /// </summary>
+ [SugarColumn(ColumnName = "Info13", ColumnDescription = "鍖呰闈㈢Н", Length = 60)]
+ public string? Info13 { get; set; }
+
+ /// <summary>
+ /// 閮ㄤ欢鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "Info14", ColumnDescription = "閮ㄤ欢鍚嶇О", Length = 60)]
+ public string? Info14 { get; set; }
+
+ /// <summary>
+ /// 閮ㄤ欢鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "Info15", ColumnDescription = "閮ㄤ欢鏁伴噺")]
+ public int? Info15 { get; set; }
+
+ /// <summary>
+ /// 閮ㄤ欢灏哄
+ /// </summary>
+ [SugarColumn(ColumnName = "Info16", ColumnDescription = "閮ㄤ欢灏哄", Length = 60)]
+ public string? Info16 { get; set; }
}
}
\ No newline at end of file
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Enum/WmsOrder/PushStatusEnum.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Enum/WmsOrder/PushStatusEnum.cs
new file mode 100644
index 0000000..8a3079c
--- /dev/null
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Enum/WmsOrder/PushStatusEnum.cs
@@ -0,0 +1,33 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Admin.NET.Core.Enum;
+public enum PushStatusEnum
+{
+ /// <summary>
+ /// 鏈帹閫�
+ /// </summary>
+ [Description("鏈帹閫�")]
+ NotPush = 0,
+
+ /// <summary>
+ /// 鎺ㄩ�佷腑
+ /// </summary>
+ [Description("鎺ㄩ�佷腑")]
+ Pushing = 1,
+
+ /// <summary>
+ /// 鎺ㄩ�佹垚鍔�
+ /// </summary>
+ [Description("鎺ㄩ�佹垚鍔�")]
+ PushSuccess = 2,
+
+ /// <summary>
+ /// 鎺ㄩ�佸け璐�
+ /// </summary>
+ [Description("鎺ㄩ�佸け璐�")]
+ PushFail = 3,
+}
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs
index 5e1c6fa..54739b1 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeInput.cs
@@ -170,3 +170,7 @@
{
}
+public class PushPackageCodeInput
+{
+ public string PackageCode { get; set; }
+}
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs
index 16b8c23..e0a7fe2 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/Dto/MesPushPackageCodeOutput.cs
@@ -76,5 +76,12 @@
public bool IsDelete { get; set; }
}
-
+public class Respone
+{
+ public int iState;
+ public string message;
+ public object result;
+
+}
+
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs
index 328032f..e4801fc 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/MesPushPackageCode/MesPushPackageCodeService.cs
@@ -4,6 +4,11 @@
using System.Data;
using System.Web;
using System.Text;
+using Furion.DatabaseAccessor;
+using Admin.NET.Core.Enum;
+using Furion.RemoteRequest.Extensions;
+using StackExchange.Profiling.Internal;
+
namespace Admin.NET.Application;
/// <summary>
/// 鎺ㄩ�乵es鍖呰鍙锋湇鍔�
@@ -92,7 +97,7 @@
var entity = input.Adapt<MesPushPackageCode>();
//閲嶅鎬ч獙璇�
- await CheckExist(entity,true);
+ await CheckExist(entity, true);
await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
}
@@ -111,11 +116,40 @@
}
-
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "PushPackageCode")]
+ [UnitOfWork]
+ [AllowAnonymous]
+ public async Task PushPackageCode(PushPackageCodeInput input)
+ {
+ var value = await _rep.AsQueryable().Where(x => x.PackageCode == input.PackageCode).FirstAsync();
+ if (value == null) throw Oops.Oh("鍖呰鍙蜂笉瀛樺湪");
+ if (value.PushStatus != (int)PushStatusEnum.NotPush || value.PushStatus != (int)PushStatusEnum.Pushing) throw Oops.Oh("閲嶅鎺ㄩ��");
+ string url = "http://localhost:8088/api/getwmstask/getwmstask";
+ var respon = await url.SetHttpMethod(HttpMethod.Post).SetBody(input).PostAsStringAsync();
+ var data = respon.FromJson<Respone>();
+ if (data.iState == 1)
+ {
+ value.PushStatus = (int)PushStatusEnum.PushSuccess;
+ value.ApiMessage = data.message;
+ value.PushNum++;
+ }
+ else
+ {
+ value.PushStatus = (int)PushStatusEnum.Pushing;
+ value.ApiMessage = data.message;
+ value.PushNum++;
+ if (value.PushNum == 3)
+ {
+ value.PushStatus = (int)PushStatusEnum.PushFail;
+ }
+ }
+ await _rep.UpdateAsync(value);
+ }
#region 瀵煎叆
-
+
/// <summary>
/// Excel妯℃澘瀵煎叆鎺ㄩ�乵es鍖呰鍙峰姛鑳�
/// </summary>
@@ -125,15 +159,15 @@
[ApiDescriptionSettings(Name = "ImportExcel")]
[Description("MesPushPackageCode/ImportExcel")]
public async Task<int> ImportExcelAsync(IFormFile file)
- {
+ {
int _HeadStartLine = 2;//绗�1琛屾槸璇存槑,绗�2琛屾槸鍒楀悕
int _DataStartLine = 3;//绗�3琛屽紑濮嬫槸鏁版嵁
DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
- var addList =await CommonImport(importDataTable, _DataStartLine);
+ var addList = await CommonImport(importDataTable, _DataStartLine);
await _rep.InsertRangeAsync(addList);
return addList.Count;
}
-
+
/// <summary>
/// DataTable杞崲瀹炰綋瀵硅薄鍒楄〃
/// </summary>
@@ -148,91 +182,91 @@
{
index++;
//瀵煎叆妯$増瀹氬埗鍖栦唬鐮侊紙鏇挎崲妯$増浣跨敤锛�
-
- var addItem = new MesPushPackageCode();
- #region 瀹氫箟鍙橀噺
- var _PackageCode = "";//鍖呰鍙�
- var _PushStatus = "";//鎺ㄩ�佺姸鎬�
- var _PushNum = "";//鎺ㄩ�佹鏁�
- var _ApiMessage = "";//鎺ュ彛杩斿洖鍙傛暟
- var _CreateOrgName = "";//鍒涘缓鑰呴儴闂ㄥ悕绉�
- #endregion
-
-
- #region 鍙栧��
- _PackageCode = row["鍖呰鍙�"]?.ToString() ;
- _PushStatus = row["鎺ㄩ�佺姸鎬�"]?.ToString() ;
- _PushNum = row["鎺ㄩ�佹鏁�"]?.ToString() ;
- _ApiMessage = row["鎺ュ彛杩斿洖鍙傛暟"]?.ToString() ;
- _CreateOrgName = row["鍒涘缓鑰呴儴闂ㄥ悕绉�"]?.ToString() ;
- #endregion
-
-
- #region 楠岃瘉
-
- if (string.IsNullOrEmpty(_PackageCode))
- {
- throw Oops.Oh($"绗瑊index}琛孾鍖呰鍙穄{_PackageCode}涓嶈兘涓虹┖锛�");
- }
-
- if(!string.IsNullOrEmpty(_PackageCode))
- {
- addItem.PackageCode = (string)(_PackageCode.Trim());
- }
-
- if (string.IsNullOrEmpty(_PushStatus))
- {
- throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佺姸鎬乚{_PushStatus}涓嶈兘涓虹┖锛�");
- }
-
- if(!string.IsNullOrEmpty(_PushStatus))
- {
- if (!int.TryParse(_PushStatus, out int outPushStatus)&&!string.IsNullOrEmpty(_PushStatus))
- {
- throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佺姸鎬乚{_PushStatus}鍊间笉姝g‘锛�");
- }
- if (outPushStatus <= 0&&!string.IsNullOrEmpty(_PushStatus))
- {
- throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佺姸鎬乚{_PushStatus}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
- }
- else
- {
- addItem.PushStatus = outPushStatus;
- }
-
- }
-
- if (string.IsNullOrEmpty(_PushNum))
- {
- throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佹鏁癩{_PushNum}涓嶈兘涓虹┖锛�");
- }
-
- if(!string.IsNullOrEmpty(_PushNum))
- {
- if (!int.TryParse(_PushNum, out int outPushNum)&&!string.IsNullOrEmpty(_PushNum))
- {
- throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佹鏁癩{_PushNum}鍊间笉姝g‘锛�");
- }
- if (outPushNum <= 0&&!string.IsNullOrEmpty(_PushNum))
- {
- throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佹鏁癩{_PushNum}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
- }
- else
- {
- addItem.PushNum = outPushNum;
- }
-
- }
- if(!string.IsNullOrEmpty(_ApiMessage))
- {
- addItem.ApiMessage = (string)(_ApiMessage.Trim());
- }
- if(!string.IsNullOrEmpty(_CreateOrgName))
- {
- addItem.CreateOrgName = (string)(_CreateOrgName.Trim());
- }
- #endregion
-
+
+ var addItem = new MesPushPackageCode();
+ #region 瀹氫箟鍙橀噺
+ var _PackageCode = "";//鍖呰鍙�
+ var _PushStatus = "";//鎺ㄩ�佺姸鎬�
+ var _PushNum = "";//鎺ㄩ�佹鏁�
+ var _ApiMessage = "";//鎺ュ彛杩斿洖鍙傛暟
+ var _CreateOrgName = "";//鍒涘缓鑰呴儴闂ㄥ悕绉�
+ #endregion
+
+
+ #region 鍙栧��
+ _PackageCode = row["鍖呰鍙�"]?.ToString();
+ _PushStatus = row["鎺ㄩ�佺姸鎬�"]?.ToString();
+ _PushNum = row["鎺ㄩ�佹鏁�"]?.ToString();
+ _ApiMessage = row["鎺ュ彛杩斿洖鍙傛暟"]?.ToString();
+ _CreateOrgName = row["鍒涘缓鑰呴儴闂ㄥ悕绉�"]?.ToString();
+ #endregion
+
+
+ #region 楠岃瘉
+
+ if (string.IsNullOrEmpty(_PackageCode))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鍖呰鍙穄{_PackageCode}涓嶈兘涓虹┖锛�");
+ }
+
+ if (!string.IsNullOrEmpty(_PackageCode))
+ {
+ addItem.PackageCode = (string)(_PackageCode.Trim());
+ }
+
+ if (string.IsNullOrEmpty(_PushStatus))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佺姸鎬乚{_PushStatus}涓嶈兘涓虹┖锛�");
+ }
+
+ if (!string.IsNullOrEmpty(_PushStatus))
+ {
+ if (!int.TryParse(_PushStatus, out int outPushStatus) && !string.IsNullOrEmpty(_PushStatus))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佺姸鎬乚{_PushStatus}鍊间笉姝g‘锛�");
+ }
+ if (outPushStatus <= 0 && !string.IsNullOrEmpty(_PushStatus))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佺姸鎬乚{_PushStatus}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.PushStatus = outPushStatus;
+ }
+
+ }
+
+ if (string.IsNullOrEmpty(_PushNum))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佹鏁癩{_PushNum}涓嶈兘涓虹┖锛�");
+ }
+
+ if (!string.IsNullOrEmpty(_PushNum))
+ {
+ if (!int.TryParse(_PushNum, out int outPushNum) && !string.IsNullOrEmpty(_PushNum))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佹鏁癩{_PushNum}鍊间笉姝g‘锛�");
+ }
+ if (outPushNum <= 0 && !string.IsNullOrEmpty(_PushNum))
+ {
+ throw Oops.Oh($"绗瑊index}琛孾鎺ㄩ�佹鏁癩{_PushNum}鍊间笉鑳藉皬浜庣瓑浜�0锛�");
+ }
+ else
+ {
+ addItem.PushNum = outPushNum;
+ }
+
+ }
+ if (!string.IsNullOrEmpty(_ApiMessage))
+ {
+ addItem.ApiMessage = (string)(_ApiMessage.Trim());
+ }
+ if (!string.IsNullOrEmpty(_CreateOrgName))
+ {
+ addItem.CreateOrgName = (string)(_CreateOrgName.Trim());
+ }
+ #endregion
+
details.Add(addItem);
}
@@ -240,7 +274,7 @@
await CheckExisitForImport(details);
return details;
}
-
+
/// <summary>
/// 鏍规嵁鐗堟湰涓嬭浇鎺ㄩ�乵es鍖呰鍙风殑Excel瀵煎叆妯℃澘
/// </summary>
@@ -254,7 +288,7 @@
var fileName = HttpUtility.UrlEncode($"瀵煎叆妯℃澘(鎺ㄩ�乵es鍖呰鍙�).xlsx", Encoding.GetEncoding("UTF-8"));
return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
}
-
+
#endregion
#region 绉佹湁鏂规硶
@@ -275,57 +309,57 @@
|| u.CreateOrgName.Contains(input.SearchKey.Trim())
)
.WhereIF(!string.IsNullOrWhiteSpace(input.PackageCode), u => u.PackageCode.Contains(input.PackageCode.Trim()))
- .WhereIF(input.PushStatus>0, u => u.PushStatus == input.PushStatus)
- .WhereIF(input.PushNum>0, u => u.PushNum == input.PushNum)
+ .WhereIF(input.PushStatus > 0, u => u.PushStatus == input.PushStatus)
+ .WhereIF(input.PushNum > 0, u => u.PushNum == input.PushNum)
.WhereIF(!string.IsNullOrWhiteSpace(input.ApiMessage), u => u.ApiMessage.Contains(input.ApiMessage.Trim()))
.WhereIF(!string.IsNullOrWhiteSpace(input.CreateOrgName), u => u.CreateOrgName.Contains(input.CreateOrgName.Trim()))
.Select<MesPushPackageCodeOutput>();
return query;
- }
+ }
- /// <summary>
- /// 閲嶅鎬ч獙璇�
- /// </summary>
- /// <param name="input">楠岃瘉瀵硅薄</param>
- /// <param name="isEdit">鏄惁鏄紪杈�</param>
- /// <returns></returns>
- private async Task CheckExist( MesPushPackageCode input,bool isEdit=false)
+ /// <summary>
+ /// 閲嶅鎬ч獙璇�
+ /// </summary>
+ /// <param name="input">楠岃瘉瀵硅薄</param>
+ /// <param name="isEdit">鏄惁鏄紪杈�</param>
+ /// <returns></returns>
+ private async Task CheckExist(MesPushPackageCode input, bool isEdit = false)
+ {
+
+
+
+ //娌℃湁閰嶇疆缁勫悎鏍¢獙锛屼笉闇�瑕侀獙閲�
+
+
+ //娌℃湁閰嶇疆鍗曠嫭鏍¢獙锛屼笉闇�瑕侀獙閲�
+ }
+
+ /// <summary>
+ /// 鏍规嵁缁勫悎鏍¢獙鍜屽崟鐙牎楠岄獙璇佹暟鎹槸鍚﹀凡瀛樺湪-瀵煎叆鏃堕獙璇�
+ /// </summary>
+ /// <param name="inputs"></param>
+ /// <returns></returns>
+ private async Task CheckExisitForImport(List<MesPushPackageCode> inputs)
+ {
+ if (inputs?.Count <= 0)
{
-
-
-
- //娌℃湁閰嶇疆缁勫悎鏍¢獙锛屼笉闇�瑕侀獙閲�
-
-
- //娌℃湁閰嶇疆鍗曠嫭鏍¢獙锛屼笉闇�瑕侀獙閲�
- }
-
- /// <summary>
- /// 鏍规嵁缁勫悎鏍¢獙鍜屽崟鐙牎楠岄獙璇佹暟鎹槸鍚﹀凡瀛樺湪-瀵煎叆鏃堕獙璇�
- /// </summary>
- /// <param name="inputs"></param>
- /// <returns></returns>
- private async Task CheckExisitForImport(List<MesPushPackageCode> inputs)
- {
- if (inputs?.Count <= 0)
- {
- throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
- }
- //鏍规嵁缁勫悎鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
-
-
-
-
-
-
-
-
- //鏍规嵁鍗曠嫭鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
-
-
-
+ throw Oops.Oh($"瀵煎叆鏁版嵁涓嶈兘涓虹┖");
}
- #endregion
+ //鏍规嵁缁勫悎鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+
+
+
+
+
+
+
+
+ //鏍规嵁鍗曠嫭鏍¢獙楠岃瘉琛ㄦ牸涓腑鏄惁宸插瓨鍦ㄧ浉鍚屾暟鎹�
+
+
+
+ }
+ #endregion
}
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs
index 7f0b613..60db6c3 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Dto/Mes_BatchOrderUPI_NewInput.cs
@@ -391,3 +391,186 @@
{
}
+
+public class GetBatchOrderUPIInput
+{
+ [Required]
+ [SugarColumn(ColumnName = "PlanNo", ColumnDescription = "鎵规鍙�", Length = 50)]
+ public string PlanNo { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "OrderId", ColumnDescription = "璁㈠崟鍙�", Length = 50)]
+ public string OrderId { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "UPI", ColumnDescription = "閮ㄤ欢鏉$爜", Length = 50)]
+ public string UPI { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "DetailName", ColumnDescription = "閮ㄤ欢鍚嶇О", Length = 50)]
+ public string DetailName { get; set; }
+
+
+ [SugarColumn(ColumnName = "Length", ColumnDescription = "闀�")]
+ public float Length { get; set; }
+
+ [SugarColumn(ColumnName = "Width", ColumnDescription = "瀹�")]
+ public float Width { get; set; }
+
+ [SugarColumn(ColumnName = "Thk", ColumnDescription = "鍘�")]
+ public float Thk { get; set; }
+
+ [SugarColumn(ColumnName = "Matgrid", ColumnDescription = "閮ㄤ欢绾圭悊", Length = 50)]
+ public string? Matgrid { get; set; }
+
+ [SugarColumn(ColumnName = "IsEB", ColumnDescription = "鏄惁灏佽竟")]
+ public int? IsEB { get; set; }
+
+ /// <summary>
+ /// 鎵撳瓟璁惧缂栧彿 銆怑ditBy shaocx,2022-05-28銆�
+ /// 0锛氫笉鎵撳瓟
+ /// 1锛氬洓闈㈤捇
+ /// 2锛氳豹杩堝叚闈㈤捇
+ /// 5锛氬崡鍏村叚闈㈤捇
+ /// </summary>
+ [SugarColumn(ColumnName = "DRNum", ColumnDescription = "鎵撳瓟璁惧缂栧彿")]
+ public int? DRNum { get; set; }
+
+ [SugarColumn(ColumnName = "IsPA", ColumnDescription = "鏄惁浼樺寲鍖呰")]
+ public int? IsPA { get; set; }
+
+ /// <summary>
+ /// 閿垏鍥惧彿
+ /// </summary>
+ [SugarColumn(ColumnName = "MaterialIndeX", ColumnDescription = "閿垏鍥惧彿")]
+ public int? MaterialIndeX { get; set; }
+
+
+ #region 鍖呰绾挎湁鍏�
+
+ [Required]
+ [SugarColumn(ColumnName = "PackageCode", ColumnDescription = "鍖呰鍙�", Length = 50)]
+ public string PackageCode { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "MachineXCenter", ColumnDescription = "鍖呰X鍧愭爣", Length = 50)]
+ public float? MachineXCenter { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "MachineYCenter", ColumnDescription = "鍖呰Y鍧愭爣", Length = 50)]
+ public float? MachineYCenter { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "MachineZCenter", ColumnDescription = "鍖呰Z鍧愭爣", Length = 50)]
+ public float? MachineZCenter { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "Sequence", ColumnDescription = "灞傛暟", Length = 50)]
+ public int? Sequence { get; set; }
+
+ [Required]
+ [SugarColumn(ColumnName = "Shelf", ColumnDescription = "娆″簭", Length = 50)]
+ public int? Shelf { get; set; }
+
+ #endregion
+
+
+ /// <summary>
+ /// 鏄惁杞悜
+ /// 0锛氫笉杞悜
+ /// 1锛氳浆鍚�
+ /// 鐩墠鍙湁鍥涢潰閽绘墠鑳借浆鍚�
+ /// </summary>
+ [Required]
+ [SugarColumn(ColumnName = "Rotation", ColumnDescription = "杞悜瑙掑害", Length = 50)]
+ public float? Rotation { get; set; }
+
+
+
+ [SugarColumn(ColumnName = "Info1", ColumnDescription = "绾哥闀�", Length = 50)]
+ public float? Info1 { get; set; }
+
+ [SugarColumn(ColumnName = "Info2", ColumnDescription = "绾哥瀹�", Length = 50)]
+ public float? Info2 { get; set; }
+
+ [SugarColumn(ColumnName = "Info3", ColumnDescription = "绾哥楂�", Length = 50)]
+ public float? Info3 { get; set; }
+ /// <summary>
+ /// 閿�鍞悎鍚屽崟鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info4", ColumnDescription = "閿�鍞悎鍚屽崟鍙�", Length = 60)]
+ public string? Info4 { get; set; }
+
+ /// <summary>
+ /// 鐢熶骇鍗曞彿
+ /// </summary>
+ [SugarColumn(ColumnName = "Info5", ColumnDescription = "鐢熶骇鍗曞彿", Length = 60)]
+ public string? Info5 { get; set; }
+
+ /// <summary>
+ /// 绗嚑鍖�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info6", ColumnDescription = "绗嚑鍖�", Length = 60)]
+ public string? Info6 { get; set; }
+
+ /// <summary>
+ /// 缁忛攢搴楀悕绉�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info7", ColumnDescription = "缁忛攢搴楀悕绉�", Length = 60)]
+ public string? Info7 { get; set; }
+
+ /// <summary>
+ /// 浜у搧鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "Info8", ColumnDescription = "浜у搧鍚嶇О", Length = 60)]
+ public string? Info8 { get; set; }
+
+ /// <summary>
+ /// 瀹㈡埛鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "Info10", ColumnDescription = "瀹㈡埛鍚嶇О", Length = 60)]
+ public string? Info10 { get; set; }
+
+ /// <summary>
+ /// 鍖呰缂栫爜
+ /// </summary>
+ [SugarColumn(ColumnName = "Info9", ColumnDescription = "鍖呰缂栫爜", Length = 60)]
+ public string? Info9 { get; set; }
+
+ /// <summary>
+ /// 鑷彁or鍙戣揣
+ /// </summary>
+ [SugarColumn(ColumnName = "Info11", ColumnDescription = "鑷彁or鍙戣揣", Length = 60)]
+ public string? Info11 { get; set; }
+
+ /// <summary>
+ /// 鍖呰閮ㄤ欢鎬绘暟閲�
+ /// </summary>
+ [SugarColumn(ColumnName = "Info12", ColumnDescription = "鍖呰閮ㄤ欢鎬绘暟閲�", Length = 60)]
+ public string? Info12 { get; set; }
+
+ /// <summary>
+ /// 鍖呰闈㈢Н
+ /// </summary>
+ [SugarColumn(ColumnName = "Info13", ColumnDescription = "鍖呰闈㈢Н", Length = 60)]
+ public string? Info13 { get; set; }
+
+ /// <summary>
+ /// 閮ㄤ欢鍚嶇О
+ /// </summary>
+ [SugarColumn(ColumnName = "Info14", ColumnDescription = "閮ㄤ欢鍚嶇О", Length = 60)]
+ public string? Info14 { get; set; }
+
+ /// <summary>
+ /// 閮ㄤ欢鏁伴噺
+ /// </summary>
+ [SugarColumn(ColumnName = "Info15", ColumnDescription = "閮ㄤ欢鏁伴噺")]
+ public int? Info15 { get; set; }
+
+ /// <summary>
+ /// 閮ㄤ欢灏哄
+ /// </summary>
+ [SugarColumn(ColumnName = "Info16", ColumnDescription = "閮ㄤ欢灏哄", Length = 60)]
+ public string? Info16 { get; set; }
+}
+
diff --git a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs
index b366b3e..828eb19 100644
--- a/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs
+++ b/LA24030_LuLiPackageLine_Wms/Admin.NET.Application/Service/WmsOrder/Mes_BatchOrderUPI_New/Mes_BatchOrderUPI_NewService.cs
@@ -4,6 +4,9 @@
using System.Data;
using System.Web;
using System.Text;
+using Furion.DatabaseAccessor;
+using Mapster;
+
namespace Admin.NET.Application;
/// <summary>
/// 鎵规鏁版嵁鏈嶅姟
@@ -110,7 +113,23 @@
return await _rep.GetFirstAsync(u => u.Id == input.Id);
}
-
+ [HttpPost]
+ [ApiDescriptionSettings(Name = "GetBatchOrderUPIList")]
+ [UnitOfWork]
+ [AllowAnonymous]
+ public async Task GetBatchOrderUPIList(List<GetBatchOrderUPIInput> input)
+ {
+ List<Mes_BatchOrderUPI_New> list = new List<Mes_BatchOrderUPI_New>();
+ foreach (var item in input)
+ {
+ Mes_BatchOrderUPI_New task = new Mes_BatchOrderUPI_New();
+ task = item.Adapt<Mes_BatchOrderUPI_New>();
+ task.AreaCode = AreaCodeEnum.鏃犲尯鍩�;
+ task.UpiStatus = UpiStatusEnum.鍒濆;
+ list.Add(task);
+ }
+ await _rep.InsertRangeAsync(list);
+ }
--
Gitblit v1.9.3