You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Gz_AmountsController.cs 12 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. using Learun.Application.Base.SystemModule;
  2. using Learun.Application.TwoDevelopment.PersonnelManagement;
  3. using Learun.Util;
  4. using Newtonsoft.Json;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Linq;
  9. using System.Web.Mvc;
  10. namespace Learun.Application.Web.Areas.PersonnelManagement.Controllers
  11. {
  12. /// <summary>
  13. /// 版 本 Learun-ADMS V7.0.6 力软敏捷开发框架
  14. /// Copyright (c) 2013-2020 力软信息技术(苏州)有限公司
  15. /// 创 建:超级管理员
  16. /// 日 期:2024-01-15 14:07
  17. /// 描 述:工资明细信息
  18. /// </summary>
  19. public class Gz_AmountsController : MvcControllerBase
  20. {
  21. private Gz_AmountsIBLL gz_AmountsIBLL = new Gz_AmountsBLL();
  22. private AnnexesFileIBLL annexesFileIBLL = new AnnexesFileBLL();
  23. private Gz_ItemsIBLL gz_ItemsIBLL = new Gz_ItemsBLL();
  24. #region 视图功能
  25. /// <summary>
  26. /// 主页面
  27. /// </summary>
  28. /// <returns></returns>
  29. [HttpGet]
  30. public ActionResult Index()
  31. {
  32. return View();
  33. }
  34. /// <summary>
  35. /// 表单页
  36. /// </summary>
  37. /// <returns></returns>
  38. [HttpGet]
  39. public ActionResult Form()
  40. {
  41. return View();
  42. }
  43. /// <summary>
  44. /// 导入工资
  45. /// </summary>
  46. /// <returns></returns>
  47. [HttpGet]
  48. public ActionResult GzImport()
  49. {
  50. return View();
  51. }
  52. /// <summary>
  53. /// 我的工资
  54. /// </summary>
  55. /// <returns></returns>
  56. [HttpGet]
  57. public ActionResult MyAmount()
  58. {
  59. return View();
  60. }
  61. #endregion
  62. #region 获取数据
  63. /// <summary>
  64. /// 获取列表数据
  65. /// </summary>
  66. /// <param name="queryJson">查询参数</param>
  67. /// <returns></returns>
  68. [HttpGet]
  69. [AjaxOnly]
  70. public ActionResult GetList(string queryJson)
  71. {
  72. var data = gz_AmountsIBLL.GetList(queryJson);
  73. return Success(data);
  74. }
  75. /// <summary>
  76. /// 获取列表分页数据
  77. /// </summary>
  78. /// <param name="pagination">分页参数</param>
  79. /// <param name="queryJson">查询参数</param>
  80. /// <returns></returns>
  81. [HttpGet]
  82. [AjaxOnly]
  83. public ActionResult GetPageList(string pagination, string queryJson)
  84. {
  85. Pagination paginationobj = pagination.ToObject<Pagination>();
  86. var data = gz_AmountsIBLL.GetPageList(paginationobj, queryJson);
  87. var jsonData = new
  88. {
  89. rows = data,
  90. total = paginationobj.total,
  91. page = paginationobj.page,
  92. records = paginationobj.records
  93. };
  94. return Success(jsonData);
  95. }
  96. /// <summary>
  97. /// 获取列表分页数据
  98. /// </summary>
  99. /// <param name="pagination">分页参数</param>
  100. /// <param name="queryJson">查询参数</param>
  101. /// <returns></returns>
  102. [HttpGet]
  103. [AjaxOnly]
  104. public ActionResult GetPageListCol(string pagination, string queryJson)
  105. {
  106. Pagination paginationobj = pagination.ToObject<Pagination>();
  107. var data = gz_AmountsIBLL.GetPageListCol(paginationobj, queryJson, out decimal totalSend);
  108. var jsonData = new
  109. {
  110. rows = data,
  111. total = paginationobj.total,
  112. page = paginationobj.page,
  113. records = paginationobj.records,
  114. totalSend
  115. };
  116. return Success(jsonData);
  117. }
  118. [HttpGet]
  119. [AjaxOnly]
  120. public ActionResult GetPageListMyCol(string pagination, string queryJson)
  121. {
  122. Pagination paginationobj = pagination.ToObject<Pagination>();
  123. var user = LoginUserInfo.Get();
  124. var data = gz_AmountsIBLL.GetPageListCol(paginationobj, queryJson, user.account);
  125. var jsonData = new
  126. {
  127. rows = data,
  128. total = paginationobj.total,
  129. page = paginationobj.page,
  130. records = paginationobj.records
  131. };
  132. return Success(jsonData);
  133. }
  134. [HttpGet]
  135. [AjaxOnly]
  136. public ActionResult GetPageListMyCurrCol(string pagination, string queryJson)
  137. {
  138. Pagination paginationobj = pagination.ToObject<Pagination>();
  139. var user = LoginUserInfo.Get();
  140. var data = gz_AmountsIBLL.GetPageListCol(user.account,out var year,out var month);
  141. var jsonData = new
  142. {
  143. year,
  144. month,
  145. rows = data,
  146. total = paginationobj.total,
  147. page = paginationobj.page,
  148. records = paginationobj.records
  149. };
  150. return Success(jsonData);
  151. }
  152. /// <summary>
  153. /// 获取表单数据
  154. /// </summary>
  155. /// <param name="keyValue">主键</param>
  156. /// <returns></returns>
  157. [HttpGet]
  158. [AjaxOnly]
  159. public ActionResult GetFormData(string keyValue)
  160. {
  161. var data = gz_AmountsIBLL.GetEntity(keyValue);
  162. return Success(data);
  163. }
  164. [HttpGet]
  165. [AjaxOnly]
  166. public ActionResult GetDetail(string userNo, int year, int month, string cs)
  167. {
  168. var data = gz_AmountsIBLL.GetAmountsDetail(userNo, year, month, cs, 0);
  169. return Success(data);
  170. }
  171. #endregion
  172. #region 提交数据
  173. /// <summary>
  174. /// 删除实体数据
  175. /// </summary>
  176. /// <param name="keyValue">主键</param>
  177. /// <returns></returns>
  178. [HttpPost]
  179. [AjaxOnly]
  180. public ActionResult DeleteForm()
  181. {
  182. var userNo = Request.Params["userNo"].ToString().Split(',');
  183. var year = Request.Params["year"].ToString().Split(',').Select(x=>int.Parse(x)).ToArray();
  184. var month = Request.Params["month"].ToString().Split(',').Select(x => int.Parse(x)).ToArray();
  185. var sendCount = Request.Params["sendCount"].ToString().Split(',');
  186. gz_AmountsIBLL.DeleteEntity(userNo, year, month, sendCount);
  187. return Success("删除成功!");
  188. }
  189. /// <summary>
  190. /// 保存实体数据(新增、修改)
  191. /// </summary>
  192. /// <param name="keyValue">主键</param>
  193. /// <param name="entity">实体</param>
  194. /// <returns></returns>
  195. [HttpPost]
  196. [ValidateAntiForgeryToken]
  197. [AjaxOnly]
  198. public ActionResult SaveForm(string keyValue, Gz_AmountsEntity entity)
  199. {
  200. gz_AmountsIBLL.SaveEntity(keyValue, entity);
  201. return Success("保存成功!");
  202. }
  203. #endregion
  204. #region 导入
  205. /// <summary>
  206. /// 导入
  207. /// </summary>
  208. /// <param name="fileGuid"></param>
  209. /// <param name="chunks"></param>
  210. /// <returns></returns>
  211. [HttpPost]
  212. [ValidateAntiForgeryToken]
  213. public ActionResult ExecuteImportExcel(string fileGuid, int chunks, string ext)
  214. {
  215. string path = annexesFileIBLL.SaveAnnexes(fileGuid, $"{fileGuid}.{ext}", chunks, LoginUserInfo.Get());
  216. if (!string.IsNullOrEmpty(path))
  217. {
  218. DataTable dt = ExcelHelper.ExcelImport(path);
  219. if (dt.Rows.Count > 0)
  220. {
  221. var cols = new List<string>();
  222. foreach (DataColumn item in dt.Columns)
  223. {
  224. cols.Add(item.ColumnName.Trim());
  225. }
  226. var ignoreCol = Config.GetValue("GzColumn").Split(',');
  227. var useCol = cols.Except(ignoreCol).ToList();
  228. var items = gz_ItemsIBLL.SyncColumn(useCol);
  229. var res = gz_AmountsIBLL.ExecuteImportExcel(dt, ignoreCol, useCol, items, fileGuid);
  230. var data = new
  231. {
  232. Success = res.snum,
  233. Fail = res.failDt.Rows.Count
  234. };
  235. return Success(data);
  236. }
  237. return Fail("EXCEL表无数据");
  238. }
  239. else
  240. {
  241. return Fail("导入数据失败!");
  242. }
  243. }
  244. #endregion
  245. #region 导出
  246. [HttpPost, ValidateInput(false)]
  247. public ActionResult ExportCol(string queryJson)
  248. {
  249. var paginationobj = new Pagination { page = 1, rows = 10000, sidx = string.Empty, sord = "DESC" };
  250. var data = gz_AmountsIBLL.GetPageListCol(paginationobj, queryJson, out decimal totalSend).ToList();
  251. var result = new List<Dictionary<string, string>>();
  252. if(data.Any())
  253. {
  254. foreach (var item in data)
  255. {
  256. var dic = new Dictionary<string, string>();
  257. dic.Add("DeptCode", item.DeptCode);
  258. dic.Add("DeptName", item.DeptName);
  259. dic.Add("PersonTypeCode", item.PersonTypeCode);
  260. dic.Add("PersonType", item.PersonType);
  261. dic.Add("UserNo", item.UserNo);
  262. dic.Add("RealName", item.RealName);
  263. dic.Add("SendDate", item.SendDate);
  264. dic.Add("SendCount", item.SendCount);
  265. dic.Add("Year", item.Year.ToString());
  266. dic.Add("Month", item.Month.ToString());
  267. dic.Add("TotalPay", item.TotalPay);
  268. dic.Add("TotalDeduction", item.TotalDeduction);
  269. dic.Add("TotalSend", item.TotalSend);
  270. dic.Add("Remark", item.Remark);
  271. result.Add(dic);
  272. }
  273. var str = JsonConvert.SerializeObject(result);
  274. var dt = str.ToTable();
  275. //设置导出格式
  276. ExcelConfig excelconfig = new ExcelConfig();
  277. excelconfig.Title = " 工资数据列表";
  278. excelconfig.TitleFont = "微软雅黑";
  279. excelconfig.TitlePoint = 20;
  280. excelconfig.FileName = " 工资数据导出.xls";
  281. excelconfig.IsAllSizeColumn = true;
  282. //每一列的设置,没有设置的列信息,系统将按datatable中的列名导出
  283. excelconfig.ColumnEntity = new List<ColumnModel>();
  284. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "DeptCode", ExcelColumn = "部门代码" });
  285. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "DeptName", ExcelColumn = "部门名称" });
  286. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "PersonTypeCode", ExcelColumn = "职员类型代码" });
  287. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "PersonType", ExcelColumn = "职员类型" });
  288. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "UserNo", ExcelColumn = "职员代码" });
  289. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "RealName", ExcelColumn = "职员姓名" });
  290. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "SendDate", ExcelColumn = "发放时间" });
  291. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "SendCount", ExcelColumn = "发放次数" });
  292. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "Year", ExcelColumn = "发放年份" });
  293. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "Month", ExcelColumn = "发放月份" });
  294. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "TotalPay", ExcelColumn = "应发合计" });
  295. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "TotalDeduction", ExcelColumn = "扣款合计" });
  296. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "TotalSend", ExcelColumn = "实发合计" });
  297. excelconfig.ColumnEntity.Add(new ColumnModel() { Column = "Remark", ExcelColumn = "备注" });
  298. //调用导出方法
  299. ExcelHelper.ExcelDownload(dt, excelconfig);
  300. return Success("导出成功!");
  301. }
  302. else
  303. {
  304. return Success("无可导出数据!");
  305. }
  306. }
  307. #endregion
  308. }
  309. }