远望上传,个税代码调整

This commit is contained in:
2026-08-11 14:18:01 +08:00
parent a9c986f9d5
commit a803070819
3 changed files with 192 additions and 25 deletions
+3 -5
View File
@@ -3960,11 +3960,9 @@ namespace Lskj.PubBomImport
{
long totalSize = fileInfo.Length;
// Web 前端上传器同样提示:经过防火墙的环境需要将分片
// 从 1MB 降到约 0.3MB。仅大文件启用安全分片,避免影响
// 现有小文件上传速度
int pageSize = totalSize > 4L * 1024 * 1024
? 320 * 1024
: 1 * 1024 * 1024;
// 从 1MB 降到约 0.3MB。所有文件统一使用安全分片,兼容
// 内网网关、透明代理及防火墙对 multipart 请求体的限制
int pageSize = 320 * 1024;
long position = 0;
int confirm = 1;
int encode = 4;
+55 -17
View File
@@ -43,6 +43,7 @@ namespace Lskj.QueryEssentialInfo
progressBarCurrent.Value = 0;
QueryApiUtil.mainRow = BaseImpl.GetDataRowResult(Model.MainSourceSql);
QueryApiUtil.detailTab = BaseImpl.GetDataTableResult(Model.DetailSourceSql);
QueryApiUtil.EssentialTabExists();
Task.Factory.StartNew(() =>
{
try
@@ -74,12 +75,27 @@ namespace Lskj.QueryEssentialInfo
break;
case "11":
RYJQuery();
GSSBQuery();
GSSBSubmit();
Invoke(new Action(() =>
{
MessageUtil.Show("个税申报完成");
}));
break;
case "-11":
RYJQuery();
GSSBInvalidSubmit();
Invoke(new Action(() =>
{
MessageUtil.Show("个税申报作废完成");
}));
break;
case "111":
GSSBQuery();
Invoke(new Action(() =>
{
MessageUtil.Show("个税申报查询成功");
}));
break;
case "2":
RYJQuery();
YLJQuery();
@@ -647,7 +663,7 @@ namespace Lskj.QueryEssentialInfo
/// <summary>
/// 个税申报
/// </summary>
private void GSSBQuery()
private void GSSBSubmit()
{
QueryApiUtil.detailTab = BaseImpl.GetDataTableResult(Model.DetailSourceSql);
var rowsEnumerable = QueryApiUtil.detailTab.AsEnumerable();
@@ -662,31 +678,53 @@ namespace Lskj.QueryEssentialInfo
{
throw new Exception($"个税申报失败\r\n{submitMsg}");
}
Invoke(new Action(() =>
{
this.Close();
}));
}
/// <summary>
/// 个税申报作废
/// </summary>
private void GSSBInvalidSubmit()
{
QueryApiUtil.detailTab = BaseImpl.GetDataTableResult(Model.DetailSourceSql);
var rowsEnumerable = QueryApiUtil.detailTab.AsEnumerable();
int bsFaildCount = rowsEnumerable.Where(n => !(n["p_emp_addTag"] + "").Equals("1")).Count();
if (bsFaildCount > 0)
{
throw new Exception($"人员未全部报送成功,请稍后再试或联系管理员");
}
SetProcessMsg($"正在作废个税申报...");
string submitCode = QueryApiUtil.InvalidSubmit(out string submitResult, out string submitMsg);
if (!submitCode.Equals("0"))
{
throw new Exception($"个税申报作废失败\r\n{submitMsg}");
}
Invoke(new Action(() =>
{
this.Close();
}));
}
/// <summary>
/// 个税申报查询
/// </summary>
private void GSSBQuery()
{
SetProcessMsg($"正在查询个税申报结果...");
string submitQueryCode = "-99";
string submitQueryResult = "";
string submitQueryMsg = "";
for (int i = 0; i < 5; i++)
{
submitQueryResult = "";
submitQueryMsg = "";
submitQueryCode = QueryApiUtil.SubmitQuery(out submitQueryResult, out submitQueryMsg);
if (submitQueryCode.Equals("0"))
{
break;
}
else
{
Thread.Sleep(1000);
}
}
submitQueryResult = "";
submitQueryMsg = "";
submitQueryCode = QueryApiUtil.SubmitQuery(out submitQueryResult, out submitQueryMsg);
if (!submitQueryCode.Equals("0"))
{
throw new Exception($"个税申报失败\r\n{submitQueryMsg}");
}
else
{
throw new Exception($"个税申报成功\r\n{submitQueryMsg}");
}
Invoke(new Action(() =>
{
@@ -6,6 +6,7 @@ using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -427,8 +428,16 @@ namespace Lskj.QueryEssentialInfo
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"] + "" : "");
string employType = detailRow.Table.Columns.Contains("employType") ? detailRow["employType"] + "" : "";
bizDataJObject.Add("employType", employType);
if (employType.Equals("雇员"))
{
bizDataJObject.Add("employedDate", detailRow.Table.Columns.Contains("employedDate") ? detailRow["employedDate"] + "" : "");
}
else if (employType.Equals("其他"))
{
bizDataJObject.Add("taxRelatedMatters", detailRow.Table.Columns.Contains("taxRelatedMatters") ? detailRow["taxRelatedMatters"] + "" : "");
}
bizDataJObject.Add("phoneNumber", detailRow.Table.Columns.Contains("phoneNumber") ? detailRow["phoneNumber"] + "" : "");
bizDataJObject.Add("isDeductExpense", detailRow.Table.Columns.Contains("isDeductExpense") ? detailRow["isDeductExpense"] + "" : "");
bizlistJArray.Add(bizDataJObject);
@@ -436,6 +445,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("bizDataList", bizlistJArray);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("同步人员", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -478,6 +488,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("operator", mainRow["operator"] + "");
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("查询人员报送情况", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -533,6 +544,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("idNumberList", idNumberjArray);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("同步专项附加", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -588,6 +600,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("idNumberList", idNumberjArray);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("查询专项附加", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -648,6 +661,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("idNumberList", idNumberjArray);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("发起养老金查询", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -705,6 +719,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("idNumberList", idNumberjArray);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("获取养老金明细", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -752,6 +767,55 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("skssqZ", mainRow["skssqZ"] + "");
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("个税申报", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
code = resultJObject["code"] + "";
resultMsg = resultJObject["msg"] + "";
}
}
catch (Exception)
{
throw;
}
return code;
}
/// <summary>
/// 个税申报作废
/// </summary>
/// <param name="resultRead"></param>
/// <param name="resultMsg"></param>
/// <returns></returns>
public static string InvalidSubmit(out string resultRead, out string resultMsg)
{
string code = "-9999";
resultRead = "";
resultMsg = "";
try
{
string url = $"{urlStart}/web/sbmk/personal-tax/api/v1/invalid/submit";
HttpTools.setting("application/json", null, null, HttpTools.Encode.UTF8);
Dictionary<string, string> headerDic = new Dictionary<string, string>();
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("busiTypeCode", mainRow["busiTypeCode"] + "");
pmsJObject.Add("qysh", mainRow["qysh"] + "");
pmsJObject.Add("operator", mainRow["operator"] + "");
pmsJObject.Add("skssqQ", mainRow["skssqQ"] + "");
pmsJObject.Add("skssqZ", mainRow["skssqZ"] + "");
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("个税申报作废", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -796,6 +860,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("skssqZ", mainRow["skssqZ"] + "");
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("个税申报查询", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -873,7 +938,7 @@ namespace Lskj.QueryEssentialInfo
}
else if (typeCode.Equals("101060100010500"))
{
externFieldsJObject.Add("sdxmdm", detailRow["sdxmdm"] + "");
}
incomeDataJObject.Add("externFields", externFieldsJObject);
incomeDataListJArry.Add(incomeDataJObject);
@@ -885,6 +950,7 @@ namespace Lskj.QueryEssentialInfo
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();
WriteLogInfo("同步收入", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -976,9 +1042,11 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("operator", mainRow["operator"] + "");
pmsJObject.Add("skssqQ", mainRow["skssqQ"] + "");
pmsJObject.Add("skssqZ", mainRow["skssqZ"] + "");
pmsJObject.Add("incomeTypeCode", mainRow["incomeTypeCode"] + "");
pmsJObject.Add("nsrlxDm", nsrlxdm);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("计算税款", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -1026,6 +1094,7 @@ namespace Lskj.QueryEssentialInfo
pmsJObject.Add("nsrlxDm", nsrlxdm);
HttpWebResponse webResponse = HttpTools.Post(url, JsonConvert.SerializeObject(pmsJObject), null, headerDic, HttpTools.Method.POST);
resultRead = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8).ReadToEnd();
WriteLogInfo("获取税款计算结果", JsonConvert.SerializeObject(pmsJObject), resultRead);
if (webResponse != null && !string.IsNullOrEmpty(resultRead))
{
JObject resultJObject = (JObject)JsonConvert.DeserializeObject(resultRead);
@@ -1117,5 +1186,67 @@ namespace Lskj.QueryEssentialInfo
}
return isResult;
}
/// <summary>
/// 判断表是否存在
/// </summary>
public static void EssentialTabExists()
{
string sql = @"IF OBJECT_ID(N'[dbo].[p_EssentialLogTab]', N'U') IS NULL
BEGIN
CREATE TABLE [dbo].[p_EssentialLogTab]
(
[Id] INT IDENTITY(1,1) NOT NULL,
[title] NVARCHAR(255) NULL,
[data] NVARCHAR(MAX) NULL,
[datetime] DATETIME NOT NULL DEFAULT(GETDATE()),
[rtnmsg] NVARCHAR(MAX) NULL,
CONSTRAINT [PK_p_EssentialLogTab] PRIMARY KEY CLUSTERED ([Id] ASC)
);
END";
SqlHelper.ExecuteNonQuery(sql);
}
/// <summary>
/// 写入日志信息
/// </summary>
public static void WriteLogInfo(string title, string data, string rtnmsg)
{
try
{
string sql = @"
INSERT INTO [dbo].[p_EssentialLogTab]
(
[title],
[data],
[rtnmsg]
)
VALUES
(
@title,
@data,
@rtnmsg
);";
SqlParameter[] parameters =
{
new SqlParameter("@title", SqlDbType.NVarChar, 255)
{
Value = title
},
new SqlParameter("@data", SqlDbType.NVarChar, -1)
{
Value = data.Replace("'","''")
},
new SqlParameter("@rtnmsg", SqlDbType.NVarChar, -1)
{
Value = rtnmsg.Replace("'","''")
}
};
SqlHelper.ExecuteNonQuery(CommandType.Text, sql, parameters);
}
catch (Exception)
{
}
}
}
}