From f3047bc98b1ace53f1ee09beca82c3864bb5957e Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期四, 05 六月 2025 21:10:48 +0800
Subject: [PATCH] 签收送货单api提交
---
StandardPda/MES.Service/service/QC/LljService.cs | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 404 insertions(+), 3 deletions(-)
diff --git a/StandardPda/MES.Service/service/QC/LljService.cs b/StandardPda/MES.Service/service/QC/LljService.cs
index edeabfd..e5e979e 100644
--- a/StandardPda/MES.Service/service/QC/LljService.cs
+++ b/StandardPda/MES.Service/service/QC/LljService.cs
@@ -5,12 +5,19 @@
using MES.Service.util;
using MySqlConnector;
using Newtonsoft.Json;
+using RestSharp;
using SharpCompress.Factories;
using SqlSugar;
+using System.ComponentModel;
using System.Data;
using System.Xml.Linq;
+using ZstdSharp.Unsafe;
+using System.Net.Http;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database;
using DbType = System.Data.DbType;
+using System.Text;
+using System.Security.Cryptography;
+using AngleSharp.Io;
namespace MES.Service.service.QC;
@@ -68,7 +75,9 @@
.WhereIF(queryObj.SelectedIndex == "1" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.ItemNo.ToLower().Contains(queryObj.SearchValue.ToLower())))
.WhereIF(queryObj.SelectedIndex == "2" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.ItemName.ToLower().Contains(queryObj.SearchValue.ToLower())))
.WhereIF(queryObj.SelectedIndex == "3" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d) => (a.SuppName.ToLower().Contains(queryObj.SearchValue.ToLower())))
- .WhereIF(queryObj.SelectedIndex == "4" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d, e) => (e.Fname.ToLower().Contains(queryObj.SearchValue.ToLower())))
+ .WhereIF(queryObj.result== "宸插畬鎴�", (a, b, d, e) => (a.IqcDate>= queryObj.startDate.ToDateTime()&& a.IqcDate <= queryObj.endDate.ToDateTime().AddDays(1)))
+ .WhereIF(queryObj.result == "宸插畬鎴�" && queryObj.state!= "鎵�鏈夌姸鎬�",(a, b, d, e) => (a.FcheckResu == queryObj.state))
+ // .WhereIF(queryObj.result == "鏈畬鎴�" && queryObj.SearchValue != null && queryObj.SearchValue != "", (a, b, d, e) => (e.Fname.ToLower().Contains(queryObj.SearchValue.ToLower())))
//.OrderByDescending((a, b, d) => a.Id)
.Select((a, b, d, e, f, g,h,i) => new LtsLlj
{
@@ -359,6 +368,247 @@
return msg;
}
+
+
+ public class DataAcquisitionConfiguration
+ {
+ //娴嬭瘯鐜
+ public const string TEST_COMPANY_CODE = "55958795";
+ public const string TEST_APP_KEY = "ab2d86b6dffabcc81dca6855c727c246";
+ public const string TEST_APP_SECRET = "01b17babe2a96d5ebd802e67709f33d1";
+ public const string TEST_ERP_CODE = "Z106";
+
+ //姝e紡鐜
+ public const string COMPANY_CODE = "72505985";
+ public const string APP_KEY = "a2866f03bb7f76387bfb1a98001f0e31";
+ public const string APP_SECRET = "f13bd1bcb130f0090ed92dc021e5f4e1";
+ public const string ERP_CODE = "Z106";
+ }
+ [Serializable]
+ public class ApiCommonParam
+ {
+ //鍙戞斁缁欑敤鎴风殑Key
+ public string appKey { get; set; }
+ //鎺ュ彛鐗堟湰
+ public string version { get; set; }
+ //鏁版嵁鎵�灞炲叕鍙哥紪鐮�
+ public string ownerCompanyCode { get; set; }
+ //鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
+ public string operateCompanyCode { get; set; }
+ //绛惧悕
+ public string sign { get; set; }
+ //鏃堕棿鎴�
+ public long? timestamps { get; set; }
+ ////鎵╁睍瀛楁
+ //public object Reserver { get; set; }
+ }
+ [Serializable]
+ public class BodyParam
+ {
+ public string erpCode { get; set; }
+ public string dnXkNo { get; set; }
+ }
+ public static string BuildCurrentSign(string paramJson, string appSecret)
+ {
+ var commonDict = new Dictionary<string, string>();
+ var jsonDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(paramJson);
+
+ var keyList = new List<string>();
+ foreach (var entry in jsonDict)
+ {
+ if (entry.Key.Equals("sign", StringComparison.OrdinalIgnoreCase))
+ continue;
+
+ var value = entry.Value?.ToString().Trim() ?? "";
+ commonDict[entry.Key] = value;
+ keyList.Add(entry.Key);
+ }
+
+ // 鎸夊瓧姣嶉『搴忔帓搴忛敭
+ keyList.Sort((x, y) => string.Compare(x, y, StringComparison.Ordinal));
+
+ // 鎷兼帴绛惧悕瀛楃涓�
+ var sb = new StringBuilder();
+ foreach (var key in keyList)
+ {
+ sb.Append(commonDict[key]).Append(":");
+ }
+ sb.Append(appSecret);
+
+ // 璁$畻MD5
+ using var md5 = MD5.Create();
+ byte[] hashBytes = md5.ComputeHash(Encoding.UTF8.GetBytes(sb.ToString()));
+
+ return BitConverter.ToString(hashBytes)
+ .Replace("-", "")
+ .ToLowerInvariant();
+ }
+ public class XkyCommonParam
+ {
+ public ApiCommonParam commonParam { get; set; }
+ public BodyParam body { get; set; }
+
+ public static XkyCommonParam GetInit()
+ {
+ var apiParam = new ApiCommonParam
+ {
+ // 鍙戞惡瀹簯鎻愪緵鐨刟ppKey
+ appKey = DataAcquisitionConfiguration.APP_KEY,
+ // 鎺ュ彛鐗堟湰
+ version = "1.0",
+ // 鎿嶄綔鑰呮墍灞炲叕鍙哥紪鐮�
+ operateCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
+ // 鏁版嵁鎵�灞炲叕鍙哥紪鐮侊紝闈為泦鍥㈠叕鍙搁粯璁よ祴鍊间负鎿嶄綔鍏徃
+ ownerCompanyCode = DataAcquisitionConfiguration.COMPANY_CODE,
+ // 褰撳墠鏃堕棿瀵瑰簲鐨勬椂闂存埑锛堢鏁帮級
+ timestamps = DateTimeOffset.UtcNow.ToUnixTimeSeconds()
+ };
+
+
+ string appSecret = DataAcquisitionConfiguration.APP_SECRET;
+
+ // 鐢熸垚绛惧悕
+ string sign = BuildCurrentSign(
+ JsonConvert.SerializeObject(apiParam),
+ appSecret);
+ apiParam.sign = sign;
+
+ return new XkyCommonParam
+ {
+ commonParam = apiParam
+ };
+ }
+ }
+
+ public async Task<string[]> SignDelivery(string id)
+ {
+ string[] msg = new string[2];
+ //鍙戣捣璇锋眰锛岀鏀堕�佽揣鍗�
+
+ try
+ {
+ var requestData = XkyCommonParam.GetInit();
+ requestData.body = new BodyParam
+ {
+ erpCode = "Z106",
+ dnXkNo = id
+ };
+
+ // 搴忓垪鍖栦负JSON
+ string json = JsonConvert.SerializeObject(requestData);
+
+ using (var client = new HttpClient())
+ {
+ // 璁剧疆璇锋眰鍐呭
+ var content = new StringContent(json, Encoding.UTF8, "application/json");
+ // 鍙戦�丳OST璇锋眰
+ HttpResponseMessage response = await client.PostAsync(
+ "https://openapi.xiekeyun.com/delivery/updateDeliveryStatus.json",
+ content);
+ // 澶勭悊鍝嶅簲
+ if (response.IsSuccessStatusCode)
+ {
+ string responseBody = await response.Content.ReadAsStringAsync();
+ var result =
+ JsonConvert.DeserializeObject<XKYApiResponse>(responseBody);
+ //鎴愬姛鍚庢墜鍔ㄤ笅鎺ㄥ埌璐у崟
+ if (result.Result == 1) {
+
+ // 瀹氫箟杈撳嚭鍙傛暟
+
+ var outputMessage = new SugarParameter("C_RESULT", null,
+ DbType.String,
+ ParameterDirection.Output, 4000);
+
+ // 瀹氫箟杈撳叆鍙傛暟
+ var parameters = new List<SugarParameter>
+ {
+ new("C_IN_STR", "閫佽揣鍗曠鏀禰BTNOK[PL017["+id,
+ DbType.String, ParameterDirection.Input),
+ outputMessage
+ };
+
+ var db = SqlSugarHelper.GetInstance();
+
+ // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+ db.Ado.ExecuteCommand(
+ "BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;",
+ parameters.ToArray());
+
+
+ // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+
+ var messageValue = outputMessage.Value?.ToString();
+
+ msg[0] = "0";
+ msg[1] = messageValue;
+ }
+ else
+ {
+ if (result.ErrorMsg== "鍑鸿揣鍗曟嵁涓嶆槸宸查�佽揣鐘舵�侊紒")
+ {
+ // 瀹氫箟杈撳嚭鍙傛暟
+
+ var outputMessage = new SugarParameter("C_RESULT", null,
+ DbType.String,
+ ParameterDirection.Output, 4000);
+
+ // 瀹氫箟杈撳叆鍙傛暟
+ var parameters = new List<SugarParameter>
+ {
+ new("C_IN_STR", "閫佽揣鍗曠鏀禰BTNOK[PL017["+id,
+ DbType.String, ParameterDirection.Input),
+ outputMessage
+ };
+
+ var db = SqlSugarHelper.GetInstance();
+
+ // 浣跨敤 SqlSugar 鎵ц瀛樺偍杩囩▼
+ db.Ado.ExecuteCommand(
+ "BEGIN PRC_RF_PDA_RECEIPT_BTN(:C_IN_STR,:C_RESULT); END;",
+ parameters.ToArray());
+
+
+ // 鑾峰彇杈撳嚭鍙傛暟鐨勫��
+
+ var messageValue = outputMessage.Value?.ToString();
+
+ msg[0] = "0";
+ msg[1] = messageValue;
+ }
+ else
+ {
+ msg[0] = "1";
+ msg[1] = "002[" + id + "绛炬敹澶辫触锛�" + result.ErrorMsg;
+ }
+
+ }
+
+ }
+ else
+ {
+
+ msg[0] = "1";
+ msg[1] = $"002[{id}绛炬敹澶辫触锛岃姹傚け璐ワ紝鐘舵�佺爜锛歿response.StatusCode}";
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+
+ msg[0] = "1";
+ msg[1] = $"002[璇锋眰澶辫触锛岀姸鎬佺爜锛歿ex.Message}";
+ }
+
+
+ //msg[0] = "1";
+ //msg[1] = responseBody;
+ return msg;
+
+ }
+
+
+
private string ExtractSubstring(string input, char startChar, char endChar)
{
var startIndex = input.IndexOf(startChar);
@@ -434,6 +684,7 @@
new JoinQueryInfos(JoinType.Left, a.Id == b.MainId))
.Where((a, b) => a.ReleaseNo == releaseNo)
// .WhereIF(id > 0, (a, b) => a.Id == id)
+ .OrderByDescending((a, b) => a.FcheckItem)
.GroupBy((a, b) => new
{
a.Id,
@@ -696,7 +947,134 @@
where ITEM_BARCODE='"+ BarCode + "'");
return SQLHelper.ExecuteQuery(sql);
}
+ public DataTable getImgBDlist(string id)
+ {
+ OracleSQLHelper SQLHelper = new();
+ var sql = string.Format(@"select id,FID,IMAGE_DATA from MES_QS_IMAGE where FID="+id+"");
+ return SQLHelper.ExecuteQuery(sql);
+ }
+ /// <summary>
+ /// 涓�鑷存�ч」鐩�
+ /// </summary>
+ public class Component
+ {
+ public string Name { get; set; }
+ public List<string> Specs { get; set; }
+ public List<string> Manufacturers { get; set; }
+ public List<string> Id { get; set; }
+ public int SelectedSpec { get; set; }
+ public int SelectedMfg { get; set; }
+ }
+ public List<Component> getYzxBDlist(string id)
+ {
+ OracleSQLHelper SQLHelper = new();
+ //鏌ュ厓鍣ㄤ欢
+ var sql1 = string.Format(@"select ITEMNAME from MES_IQC_CONSISTENCY_ck where PID='"+id+"' group by ITEMNAME order by ITEMNAME");
+ //鏌ユ槑缁�
+ var sql2 = string.Format(@"select * from MES_IQC_CONSISTENCY_ck where PID='"+id+"' order by ITEMNAME,ITEMMODE,SUPPNAME");
+ DataTable dataTable1= SQLHelper.ExecuteQuery(sql1);
+ DataTable dataTable2 = SQLHelper.ExecuteQuery(sql2);
+ List<Component> Components = new List<Component>();
+
+
+ for (int i = 0; i <dataTable1.Rows.Count; i++)
+ {
+ Component component = new Component();
+ component.Name= dataTable1.Rows[i]["ITEMNAME"].ToString();
+ component.Specs= new List<string>();
+ component.Manufacturers = new List<string>();
+ component.Id = new List<string>();
+ component.SelectedSpec = -1;
+ component.SelectedMfg = -1;
+ int index = 0;
+ for (int j = 0; j < dataTable2.Rows.Count; j++)
+ {
+
+ if (dataTable2.Rows[j]["ITEMNAME"].ToString()== dataTable1.Rows[i]["ITEMNAME"].ToString())
+ {
+ component.Specs.Add(dataTable2.Rows[j]["ITEMMODE"].ToString());
+ component.Manufacturers.Add(dataTable2.Rows[j]["SUPPNAME"].ToString());
+ component.Id.Add(dataTable2.Rows[j]["ID"].ToString());
+ if (dataTable2.Rows[j]["ISCHACK"].ToString()=="1")
+ {
+ component.SelectedSpec = index;
+ component.SelectedMfg = index;
+ }
+ index++;
+ }
+ }
+
+ Components.Add(component);
+ }
+ return Components;
+ }
+
+ public DataTable getBlmsItem()
+ {
+ OracleSQLHelper SQLHelper = new();
+ //鏌ヤ笉鑹弿杩�
+ var sql1 = string.Format(@"select DEFECT_NAME
+ from MES_DEFECT_CODE A
+ left join MES_DEFECT_TYPE X ON X.TYPE_NO = A.DEFECT_SORT AND X.COMPANY = A.COMPANY AND X.FACTORY = A.FACTORY");
+
+ return SQLHelper.ExecuteQuery(sql1);
+ }
+ public DataTable getBlmsItem(string id)
+ {
+ OracleSQLHelper SQLHelper = new();
+ //鏌ヤ笉鑹弿杩�
+ var sql1 = string.Format(@"select FCHECK_ITEM,FUNIT from mes_qa_items_detect_detail5 f where RELEASE_NO='"+id+"' and FUNIT is not null order by FCHECK_ITEM");
+
+ return SQLHelper.ExecuteQuery(sql1);
+ }
+ public void saveYzxBDlist(string id,DataTable DB)
+ {
+ OracleSQLHelper SQLHelper = new();
+ //鍏堟妸缁撴灉娓呯┖
+ var sql1 = string.Format(@"update MES_IQC_CONSISTENCY_ck set ISCHACK=0 where PID='"+ id + "' ");
+ SQLHelper.ExecuteQuery(sql1);
+ string rowId = "";
+ for (int i = 0; i < DB.Rows.Count; i++)
+ {
+ rowId += "'" + DB.Rows[i]["id"] + "',";
+ }
+ rowId = rowId.Substring(0, rowId.Length - 1);
+
+
+ //淇敼缁撴灉
+ var sql2 = string.Format(@"update MES_IQC_CONSISTENCY_ck set ISCHACK=1 where PID='" + id + "'and id in("+ rowId + ") ");
+ SQLHelper.ExecuteQuery(sql2);
+
+ }
+
+ public string[] YzxImgVerify(string id)
+ {
+ string[] msgStr = new string[2];
+
+ OracleSQLHelper SQLHelper = new();
+ //淇敼缁撴灉
+ var sql2 = string.Format(@"select A.ITEMNAME from ( select 888||min(id) id,ITEMNAME from MES_IQC_CONSISTENCY_CK where pid='"+ id + "' group by ITEMNAME) A " +
+ "left join MES_QS_IMAGE b on a.id=b.fid where B.id is null order by ITEMNAME");
+ DataTable db= SQLHelper.ExecuteQuery(sql2);
+ if (db.Rows.Count > 0)
+ {
+ msgStr[1] = "鍏冨櫒浠讹細";
+ for (int i = 0; i < db.Rows.Count; i++)
+ {
+ msgStr[1] += db.Rows[i]["ITEMNAME"]+ ",";
+ }
+ msgStr[1] += "鏈畬鎴愬浘鐗囦笂浼狅紝璇蜂笂浼狅紒";
+ msgStr[0] = "1";
+ }
+ else
+ {
+ msgStr[0] = "0";
+ msgStr[1] = "ok";
+ }
+
+ return msgStr;
+ }
public int UpdateQSItemDetail(MesQaItemsDetectDetail12 detail)
{
@@ -764,8 +1142,8 @@
return SqlSugarHelper.UseTransactionWithOracle(db =>
{
return db.Updateable<MesQaItemsDetectDetail5>()
- // .SetColumns(it =>
- // it.Remarks == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
+ .SetColumns(it =>
+ it.Funit == dto.Remarks) //SetColumns鏄彲浠ュ彔鍔犵殑 鍐�2涓氨2涓瓧娈佃祴鍊�
.Where(it => it.Id == dto.pid)
.ExecuteCommand();
});
@@ -888,4 +1266,27 @@
[JsonProperty("totalCount")] public int TotalCount { get; set; }
}
+ /// <summary>
+ /// 鎼哄浜戞帴鍙h繑鍥炲璞�
+ /// </summary>
+ public class XKYApiResponse
+ {
+ [JsonProperty("errorCode")]
+ public string ErrorCode { get; set; }
+
+ [JsonProperty("errorMsg")]
+ public string ErrorMsg { get; set; }
+
+ [JsonProperty("result")]
+ public int Result { get; set; }
+
+ [JsonProperty("data")]
+ public object Data { get; set; }
+
+ [JsonProperty("curServerTime")]
+ public long CurServerTime { get; set; }
+
+ // 濡傛灉闇�瑕佹椂闂磋浆鎹㈠彲浠ユ坊鍔犺繖涓睘鎬�
+ public DateTime ServerTime => DateTimeOffset.FromUnixTimeMilliseconds(CurServerTime).DateTime;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3