diff --git a/插件库/Lskj.QueryEssentialInfo/FrmMain.cs b/插件库/Lskj.QueryEssentialInfo/FrmMain.cs
index db8941c..b71273a 100644
--- a/插件库/Lskj.QueryEssentialInfo/FrmMain.cs
+++ b/插件库/Lskj.QueryEssentialInfo/FrmMain.cs
@@ -9,6 +9,8 @@ using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
+using System.Net;
+using System.Security.Authentication;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
@@ -33,6 +35,10 @@ namespace Lskj.QueryEssentialInfo
{
try
{
+ const SslProtocols _Tls12 = (SslProtocols)0x00000C00;
+ const SecurityProtocolType Tls12 = (SecurityProtocolType)_Tls12;
+ ServicePointManager.SecurityProtocol |= Tls12;
+
progressBarCurrent.Maximum = 100;
progressBarCurrent.Value = 0;
QueryApiUtil.mainRow = BaseImpl.GetDataRowResult(Model.MainSourceSql);
@@ -64,6 +70,13 @@ namespace Lskj.QueryEssentialInfo
MessageUtil.Show("个人养老金查询完成");
}));
break;
+ case "3":
+ DSFXZQuery();
+ Invoke(new Action(() =>
+ {
+ MessageUtil.Show("第三方薪资查询完成");
+ }));
+ break;
}
}
catch (Exception ex)
@@ -577,6 +590,90 @@ namespace Lskj.QueryEssentialInfo
}));
}
///
+ /// 三方薪资查询
+ ///
+ private void DSFXZQuery()
+ {
+ QueryApiUtil.Init(out string initResult, out string initMsg);
+ var rowsEnumerable = QueryApiUtil.detailTab.AsEnumerable();
+ if (rowsEnumerable.Where(n => string.IsNullOrEmpty(n["p_emp_addTag"] + "") || (n["p_emp_addTag"] + "").Equals("0")).Count() > 0)
+ {
+ SetProcessMsg($"正在报送人员...");
+ string personCode = QueryApiUtil.Person(out string personResult, out string personMsg);
+ if (!personCode.Equals("0"))
+ {
+ throw new Exception($"报送失败\r\n{personMsg}");
+ }
+ SetProcessMsg($"正在查询报送人员...");
+ for (int i = 0; i < 5; i++)
+ {
+ Thread.Sleep(1000);
+ SetProcessMsg($"正在查询报送人员...({i + 1}秒)");
+ }
+ string personQueryCode = QueryApiUtil.PersonQuery(out string personQueryResult, out string personQueryMsg);
+ if (!personQueryCode.Equals("0"))
+ {
+ throw new Exception($"报送查询失败\r\n{personQueryMsg}");
+ }
+ else
+ {
+ JObject personQueryJObject = (JObject)JsonConvert.DeserializeObject(personQueryResult);
+ if (personQueryJObject["data"] is JArray)
+ {
+ JArray personQueryJArray = (JArray)personQueryJObject["data"];
+ foreach (JObject personJObject in personQueryJArray)
+ {
+ string name = personJObject["name"] + "";
+ string sfzh = personJObject["sfzh"] + "";
+ string bszt = personJObject["bszt"] + "";
+ string sfyzzt = personJObject["sfyzzt"] + "";
+ if (bszt.Equals("报送成功") && sfyzzt.Equals("验证成功"))
+ {
+ DataRow selectRow = rowsEnumerable.Where(n => (n["idNumber"] + "").Equals(sfzh)).FirstOrDefault();
+ if (selectRow != null)
+ {
+ SqlHelper.ExecuteNonQuery($"update hr_grdkfptab set p_emp_addTag = 1 where hr_ID_Card = '{sfzh}'");
+ }
+ }
+ else
+ {
+ DataRow selectRow = rowsEnumerable.Where(n => (n["idNumber"] + "").Equals(sfzh)).FirstOrDefault();
+ if (selectRow != null)
+ {
+ SqlHelper.ExecuteNonQuery($"update hr_grdkfptab set p_emp_addTag = 2,error_msg='{bszt},{sfyzzt}' where hr_ID_Card = '{sfzh}'");
+ }
+ }
+ SetProcessMsg($"已报送:{name}");
+ }
+ }
+ }
+ }
+ QueryApiUtil.detailTab = BaseImpl.GetDataTableResult(Model.DetailSourceSql);
+ Invoke(new Action(() =>
+ {
+ rowsEnumerable = QueryApiUtil.detailTab.AsEnumerable();
+ int maxCount = rowsEnumerable.Where(n => (n["p_emp_addTag"] + "").Equals("1")).Count();
+ if (maxCount > 0)
+ {
+ progressBarCurrent.Maximum = rowsEnumerable.Where(n => (n["p_emp_addTag"] + "").Equals("1")).Count();
+ }
+ else
+ {
+ throw new Exception($"人员报送失败,员工未成功上报专项附加");
+ }
+ }));
+ SetProcessMsg($"正在同步收入...");
+ string dsfxzCode = QueryApiUtil.GetDSFXZ(out string dsfxzResult, out string dsfxzMsg);
+ if (!dsfxzCode.Equals("0"))
+ {
+ throw new Exception($"同步收入失败\r\n{dsfxzMsg}");
+ }
+ Invoke(new Action(() =>
+ {
+ this.Close();
+ }));
+ }
+ ///
/// 个税申报
///
private void GSSBQuery()
diff --git a/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs b/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs
index 96672fd..2a29d65 100644
--- a/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs
+++ b/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs
@@ -17,6 +17,7 @@ namespace Lskj.QueryEssentialInfo
{
public static class QueryApiUtil
{
+ public static string urlStart = "https://api.baiwangjs.com/swgx-saas/swgxpt-shishi-cpsbmk/v2";
public static DataRow mainRow;
public static DataTable detailTab;
///
@@ -351,7 +352,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/gsmycsh";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/gsmycsh";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -395,7 +396,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/syn/person";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/syn/person";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -421,15 +422,15 @@ namespace Lskj.QueryEssentialInfo
continue;
}
JObject bizDataJObject = new JObject();
- bizDataJObject.Add("name", detailRow["name"] + "");
- bizDataJObject.Add("idType", detailRow["idType"] + "");
- bizDataJObject.Add("idNumber", detailRow["idNumber"] + "");
- bizDataJObject.Add("sex", detailRow["sex"] + "");
- bizDataJObject.Add("birthday", detailRow["birthday"] + "");
- bizDataJObject.Add("employType", detailRow["employType"] + "");
- bizDataJObject.Add("employedDate", detailRow["employedDate"] + "");
- bizDataJObject.Add("phoneNumber", detailRow["phoneNumber"] + "");
- bizDataJObject.Add("isDeductExpense", detailRow["isDeductExpense"] + "");
+ bizDataJObject.Add("name", detailRow.Table.Columns.Contains("name") ? detailRow["name"] + "" : "");
+ bizDataJObject.Add("idType", detailRow.Table.Columns.Contains("idType") ? detailRow["idType"] + "" : "");
+ bizDataJObject.Add("idNumber", detailRow.Table.Columns.Contains("idNumber") ? detailRow["idNumber"] + "" : "");
+ bizDataJObject.Add("sex", detailRow.Table.Columns.Contains("sex") ? detailRow["sex"] + "" : "");
+ bizDataJObject.Add("birthday", detailRow.Table.Columns.Contains("birthday") ? detailRow["birthday"] + "" : "");
+ bizDataJObject.Add("employType", detailRow.Table.Columns.Contains("employType") ? detailRow["employType"] + "" : "");
+ bizDataJObject.Add("employedDate", detailRow.Table.Columns.Contains("employedDate") ? detailRow["employedDate"] + "" : "");
+ bizDataJObject.Add("phoneNumber", detailRow.Table.Columns.Contains("phoneNumber") ? detailRow["phoneNumber"] + "" : "");
+ bizDataJObject.Add("isDeductExpense", detailRow.Table.Columns.Contains("isDeductExpense") ? detailRow["isDeductExpense"] + "" : "");
bizlistJArray.Add(bizDataJObject);
}
pmsJObject.Add("bizDataList", bizlistJArray);
@@ -458,7 +459,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/person/submit/query";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/person/submit/query";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -500,7 +501,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/syn/special/addition";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/syn/special/addition";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -555,7 +556,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/acquire/special/addition";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/acquire/special/addition";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -613,7 +614,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/acquire/ylj/fqcx";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/acquire/ylj/fqcx";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -670,7 +671,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/acquire/ylj/list";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/acquire/ylj/list";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -730,7 +731,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/submit";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/submit";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -774,7 +775,7 @@ namespace Lskj.QueryEssentialInfo
resultMsg = "";
try
{
- string url = "http://swgxs.poc.htjs.net:9019/v2/web/sbmk/personal-tax/api/v1/submit/query";
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/submit/query";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary headerDic = new Dictionary();
DateTime utcNow = DateTime.UtcNow;
@@ -809,6 +810,73 @@ namespace Lskj.QueryEssentialInfo
return code;
}
///
+ /// 发起个人养老金查询
+ ///
+ ///
+ ///
+ ///
+ public static string GetDSFXZ(out string resultRead, out string resultMsg)
+ {
+ string code = "-9999";
+ resultRead = "";
+ resultMsg = "";
+ try
+ {
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/syn/income";
+ HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
+ Dictionary headerDic = new Dictionary();
+ DateTime utcNow = DateTime.UtcNow;
+ string date = utcNow.ToString("r", CultureInfo.InvariantCulture);
+ string host = "api.baiwangjs.com";
+ string x_htjs_nonce = Guid.NewGuid().ToString().ToLower();
+ string x_htjs_ua = "1.8.0_181 64 bit, sdk-ver=1.0.0";
+ headerDic.Add("Date", DateTime.UtcNow.ToString());
+ headerDic.Add("host", host);
+ headerDic.Add("x-htjs-nonce", x_htjs_nonce);
+ headerDic.Add("x-htjs-ua", x_htjs_ua);
+ headerDic.Add("Authorization", $"{GetAuthorization(date, host, x_htjs_nonce, x_htjs_ua)}");
+ JObject pmsJObject = new JObject();
+ pmsJObject.Add("qysh", mainRow["qysh"] + "");
+ pmsJObject.Add("operator", mainRow["qysh"] + "");
+ pmsJObject.Add("skssqQ", mainRow["qysh"] + "");
+ pmsJObject.Add("skssqZ", mainRow["qysh"] + "");
+ JArray bizDataListJArry = new JArray();
+ JArray incomeDataListJArry = new JArray();
+ foreach (DataRow detailRow in detailTab.Rows)
+ {
+ JObject incomeDataJObject = new JObject();
+ string addTag = detailRow["p_emp_addTag"] + "";
+ if (!addTag.Equals("1"))
+ {
+ continue;
+ }
+ incomeDataJObject.Add("name", detailRow["name"] + "");
+ incomeDataJObject.Add("idType", detailRow["idType"] + "");
+ incomeDataJObject.Add("idNumber", detailRow["idNumber"] + "");
+ incomeDataJObject.Add("income", detailRow["income"] + "");
+ incomeDataListJArry.Add(incomeDataJObject);
+ }
+ JObject bizDataJObject = new JObject();
+ bizDataJObject.Add("incomeTypeCode", "101060100010500");
+ bizDataJObject.Add("incomeDataList", incomeDataListJArry);
+ bizDataListJArry.Add(bizDataJObject);
+ pmsJObject.Add("bizDataList", bizDataListJArry);
+ HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
+ resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
+ if (webResponse != null && !string.IsNullOrEmpty(resultRead))
+ {
+ JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
+ code = resultJObject["code"] + "";
+ resultMsg = resultJObject["msg"] + "";
+ }
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ return code;
+ }
+ ///
/// 获取Authorization
///
public static string GetAuthorization(string date, string host, string x_htjs_nonce, string x_htjs_ua)
@@ -833,4 +901,26 @@ namespace Lskj.QueryEssentialInfo
string rtnValue = "";
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] valueBytes = Encoding.UTF8.GetBytes(value);
- using (var hmacsha256 = n
\ No newline at end of file
+ using (var hmacsha256 = new HMACSHA256(keyBytes))
+ {
+ byte[] hashValue = hmacsha256.ComputeHash(valueBytes);
+ rtnValue = Convert.ToBase64String(hashValue);
+ }
+ return rtnValue;
+ }
+ ///
+ /// MD5加密
+ ///
+ ///
+ ///
+ public static string GetMD5Hash(string input)
+ {
+ if (string.IsNullOrEmpty(input))
+ {
+ return string.Empty;
+ }
+ using (MD5 md5 = MD5.Create())
+ {
+ byte[] inputBytes = Encoding.UTF8.GetBytes(input);
+ byte[] hashBytes = md5.ComputeHash(inputBytes);
+ StringBuilder sb = new StringBuil
\ No newline at end of file