diff --git a/插件库/Lskj.QueryEssentialInfo/FrmMain.cs b/插件库/Lskj.QueryEssentialInfo/FrmMain.cs
index b71273a..10da1b9 100644
--- a/插件库/Lskj.QueryEssentialInfo/FrmMain.cs
+++ b/插件库/Lskj.QueryEssentialInfo/FrmMain.cs
@@ -663,7 +663,7 @@ namespace Lskj.QueryEssentialInfo
}
}));
SetProcessMsg($"正在同步收入...");
- string dsfxzCode = QueryApiUtil.GetDSFXZ(out string dsfxzResult, out string dsfxzMsg);
+ string dsfxzCode = QueryApiUtil.GetIncome(out string dsfxzResult, out string dsfxzMsg);
if (!dsfxzCode.Equals("0"))
{
throw new Exception($"同步收入失败\r\n{dsfxzMsg}");
@@ -678,17 +678,35 @@ namespace Lskj.QueryEssentialInfo
///
private void GSSBQuery()
{
- SetProcessMsg($"正在进行个税申报...");
- string submitCode = QueryApiUtil.Submit(out string submitResult, out string submitMsg);
- if (!submitCode.Equals("0"))
+ SetProcessMsg($"正在同步收入...");
+ string incomeCode = QueryApiUtil.GetIncome(out string incomeResult, out string incomeMsg);
+ if (!incomeCode.Equals("0"))
{
- throw new Exception($"个税申报失败\r\n{submitMsg}");
+ throw new Exception($"同步收入失败\r\n{incomeMsg}");
}
- SetProcessMsg($"正在查询个税申报结果...");
- string submitQueryCode = "-99";
- while (!submitQueryCode.Equals("0"))
+ SetProcessMsg($"正在生成批次信息...");
+ string batchCode = QueryApiUtil.GetBatch(out string batchResult, "101060100", out string batchMsg);
+ if (!batchCode.Equals("0"))
{
- submitQueryCode = QueryApiUtil.SubmitQuery(out string submitQueryResult, out string submitQueryMsg);
- if (!submitQueryCode.Equals("0"))
- {
-
\ No newline at end of file
+ throw new Exception($"生成批次信息失败\r\n{batchMsg}");
+ }
+ SetProcessMsg($"正在获取计算结果...");
+ string resultCode = QueryApiUtil.GetResult(out string resultResult, "101060100", out string resultMsg);
+ if (!resultCode.Equals("0"))
+ {
+ throw new Exception($"获取计算结果\r\n{resultMsg}");
+ }
+ //SetProcessMsg($"正在进行个税申报...");
+ //string submitCode = QueryApiUtil.Submit(out string submitResult, out string submitMsg);
+ //if (!submitCode.Equals("0"))
+ //{
+ // throw new Exception($"个税申报失败\r\n{submitMsg}");
+ //}
+ //SetProcessMsg($"正在查询个税申报结果...");
+ //string submitQueryCode = "-99";
+ //while (!submitQueryCode.Equals("0"))
+ //{
+ // submitQueryCode = QueryApiUtil.SubmitQuery(out string submitQueryResult, out string submitQueryMsg);
+ // if (!submitQueryCode.Equals("0"))
+ // {
+ // if
\ No newline at end of file
diff --git a/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs b/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs
index 2a29d65..990ce0c 100644
--- a/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs
+++ b/插件库/Lskj.QueryEssentialInfo/QueryApiUtil.cs
@@ -810,12 +810,12 @@ namespace Lskj.QueryEssentialInfo
return code;
}
///
- /// 发起个人养老金查询
+ /// 同步收入
///
///
///
///
- public static string GetDSFXZ(out string resultRead, out string resultMsg)
+ public static string GetIncome(out string resultRead, out string resultMsg)
{
string code = "-9999";
resultRead = "";
@@ -842,24 +842,45 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("skssqZ", mainRow["qysh"] + "");
JArray bizDataListJArry = new JArray();
JArray incomeDataListJArry = new JArray();
- foreach (DataRow detailRow in detailTab.Rows)
+ var groupedRows = detailTab.AsEnumerable().Where(row => (row["p_emp_addTag"] + "") == "1").GroupBy(row => row["incomeTypeCode"] + "");
+ foreach (var group in groupedRows)
{
- JObject incomeDataJObject = new JObject();
- string addTag = detailRow["p_emp_addTag"] + "";
- if (!addTag.Equals("1"))
+ JObject bizDataJObject = new JObject();
+ string typeCode = group.Key; //当前的分组编码
+ foreach (DataRow detailRow in group)
{
- continue;
+ JObject incomeDataJObject = new JObject();
+ incomeDataJObject.Add("name", detailRow["name"] + "");
+ incomeDataJObject.Add("idType", detailRow["idType"] + "");
+ incomeDataJObject.Add("idNumber", detailRow["idNumber"] + "");
+ incomeDataJObject.Add("income", detailRow["income"] + "");
+ JObject externFieldsJObject = new JObject();
+ if (typeCode.Equals("101060100010100"))
+ {
+ externFieldsJObject.Add("endowmentInsurance", detailRow["endowmentInsurance"] + "");
+ externFieldsJObject.Add("medicalInsurance", detailRow["medicalInsurance"] + "");
+ externFieldsJObject.Add("unemploymentInsurance", detailRow["unemploymentInsurance"] + "");
+ externFieldsJObject.Add("housingFund", detailRow["housingFund"] + "");
+ }
+ else if (typeCode.Equals("101060100010300"))
+ {
+ externFieldsJObject.Add("sfkcjcfy", detailRow["sfkcjcfy"] + "");
+ externFieldsJObject.Add("employedDate", detailRow["employedDate"] + "");
+ }
+ else if (typeCode.Equals("101060100010400"))
+ {
+
+ }
+ else if (typeCode.Equals("101060100010500"))
+ {
+
+ }
+ incomeDataListJArry.Add(incomeDataJObject);
}
- incomeDataJObject.Add("name", detailRow["name"] + "");
- incomeDataJObject.Add("idType", detailRow["idType"] + "");
- incomeDataJObject.Add("idNumber", detailRow["idNumber"] + "");
- incomeDataJObject.Add("income", detailRow["income"] + "");
- incomeDataListJArry.Add(incomeDataJObject);
+ bizDataJObject.Add("incomeTypeCode", typeCode);
+ bizDataJObject.Add("incomeDataList", incomeDataListJArry);
+ bizDataListJArry.Add(bizDataJObject);
}
- 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();
@@ -877,6 +898,99 @@ namespace Lskj.QueryEssentialInfo
return code;
}
///
+ /// 生成批次信息
+ ///
+ ///
+ ///
+ ///
+ public static string GetBatch(out string resultRead, string incomeTypeCode, out string resultMsg)
+ {
+ string code = "-9999";
+ resultRead = "";
+ resultMsg = "";
+ try
+ {
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/gen/batch";
+ 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("ysyf", mainRow["ysyf"] + "");
+ pmsJObject.Add("nsrlxdm", mainRow["nsrlxdm"] + "");
+ pmsJObject.Add("incomeTypeCode", incomeTypeCode);
+ 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;
+ }
+ ///
+ /// 获取计算结果
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string GetResult(out string resultRead, string incomeTypeCode, out string resultMsg)
+ {
+ string code = "-9999";
+ resultRead = "";
+ resultMsg = "";
+ try
+ {
+ string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/acquire/compute/result";
+ 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("skssqQ", mainRow["skssqQ"] + "");
+ pmsJObject.Add("skssqZ", mainRow["skssqZ"] + "");
+ pmsJObject.Add("incomeTypeCode", incomeTypeCode);
+ 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)