CgzjZjrwRepository.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. using QM.KJGH.CGGL.IRepository;
  2. using QM.KJGH.CGGL.Model;
  3. using QM.KJGH.CGGL.Model.Cgzj;
  4. using QM.KJGH.Model;
  5. using QM.KJGH.Model.KJGH;
  6. using QM.OrmSqlSugar;
  7. using SqlSugar;
  8. using System;
  9. using System.Collections.Generic;
  10. using System.Linq;
  11. using System.Threading.Tasks;
  12. using WS;
  13. using WS.AutoMapper;
  14. using WS.Helper;
  15. using WS.IO;
  16. using WS.Orm;
  17. namespace QM.KJGH.CGGL.Repository
  18. {
  19. /// <summary>
  20. ///
  21. /// </summary>
  22. public class CgzjZjrwRepository : SqlSugarRepository<CgzjZjrw>, ICgzjZjrwRepository
  23. {
  24. private readonly ICgzjSjbzRepository _ICgzjSjbzRepository;
  25. private readonly ICfgSettingRepository _ICfgSettingRepository;
  26. public CgzjZjrwRepository(
  27. ICgzjSjbzRepository ICgzjSjbzRepository
  28. , ICfgSettingRepository ICfgSettingRepository
  29. )
  30. {
  31. _ICgzjSjbzRepository = ICgzjSjbzRepository;
  32. _ICfgSettingRepository = ICfgSettingRepository;
  33. }
  34. /// <summary>
  35. /// 检查项
  36. /// </summary>
  37. /// <param name="rwbsm"></param>
  38. /// <returns></returns>
  39. public List<CgzjZjx> GetZjx(string rwbsm)
  40. {
  41. var list = Db.Queryable<CgzjZjx>().Where(t => t.RWBSM == rwbsm).ToList();
  42. return list;
  43. }
  44. #region 质检任务
  45. /// <summary>
  46. /// 添加数据审核
  47. /// </summary>
  48. /// <returns></returns>
  49. public async Task<bool> Add(CgzjZjrwInput input)
  50. {
  51. var model = await Db.Queryable<CgglCg>().Where(t => t.BSM == input.CG_BSM).FirstAsync();
  52. if (IsExist(t => t.BSM == input.CG_BSM))
  53. {
  54. throw new UseArgumentException("不能重复提交");
  55. }
  56. //检查目录
  57. var cgpath = FileManage.Instance.ToFullPath(model.CGML);
  58. var errorFile = await _ICgzjSjbzRepository.FileCheck(input.SJBZ_BSM, model.XZQDM, model.XZQMC, cgpath);
  59. //检查文文件
  60. var errorStr = string.Empty;
  61. var config = await _ICfgSettingRepository.GetSetting<CgglConfig>("CGGL");
  62. if (config.CheckLack && errorFile.lack.Count > 0)
  63. {
  64. errorStr+=@$"成果数据缺少以下目录或文件:{"\n"}{errorFile.lack.Join("\n")}{"\n"}";
  65. }
  66. if (config.CheckMany && errorFile.many.Count > 0)
  67. {
  68. errorStr += @$"成果数据多出以下文件,多的文档可放到其他文件中:{"\n"}{errorFile.many.Join("\n")}";
  69. }
  70. if (!string.IsNullOrWhiteSpace(errorStr))
  71. throw new UseMassageException(errorStr);
  72. model.ZT = KJGH.Model.Enums.EnumCgglCgZT.机器审查;
  73. model.ZT_JQSC = KJGH.Model.Enums.EnumCgscZT.审查中;
  74. CgzjZjrw zjrw = new CgzjZjrw()
  75. {
  76. BSM = model.BSM,
  77. CJSJ = DateTime.Now,
  78. GHLX = model.GHLX,
  79. ZRW_BSM = model.BSM,
  80. RWMC = model.XMMC,
  81. XZQDM = model.XZQDM,
  82. XZQMC = model.XZQMC,
  83. RWZT = KJGH.Model.Enums.EnumRwzt.Create,
  84. ZJFA_BSM = input.ZJFA_BSM,
  85. //SJBZ_BSM = input.SJBZ_BSM,
  86. SJWZ = model.CGB,
  87. GZML = model.CGML,
  88. QXCG_BSM = model.QXCG_BSM,
  89. //ZJSJ = DateTime.Now,
  90. ZJRY = input.ZJRY,
  91. CG_BSM = input.CG_BSM
  92. };
  93. //检查项
  94. List<CgzjZjx> zjxlist = new List<CgzjZjx>();
  95. var zjbzList = await Db.Queryable<CgzjZjbz>().Where(t => input.JCXS.Contains(t.BSM)).ToListAsync();
  96. foreach (var item in input.JCXS)
  97. {
  98. zjxlist.Add(new CgzjZjx()
  99. {
  100. BSM = Guid.NewGuid().ToStringN(),
  101. RWBSM = model.BSM,
  102. JCZT = KJGH.Model.Enums.EnumRwzt.Create,
  103. ZJBSM = item,
  104. JCLR = zjbzList.Where(t => t.BSM == item).FirstOrDefault().JCLR,
  105. });
  106. }
  107. try
  108. {
  109. Db.BeginTran();
  110. Db.Insertable(zjrw).ExecuteCommand();
  111. Db.Insertable(zjxlist).ExecuteCommand();
  112. Db.Updateable(model).ExecuteCommand();
  113. Db.CommitTran();
  114. }
  115. catch (System.Exception ex)
  116. {
  117. WS.Log.RunLog.Error(ex);
  118. Db.RollbackTran();
  119. throw new UseArgumentException("操作失败");
  120. }
  121. return true;
  122. }
  123. /// <summary>
  124. /// 开始检查
  125. /// </summary>
  126. /// <returns></returns>
  127. public async Task<bool> Start(string bsm)
  128. {
  129. var model = await Db.Queryable<CgzjZjrw>().Where(t => t.BSM == bsm).FirstAsync();
  130. model.RWZT = KJGH.Model.Enums.EnumRwzt.Run;
  131. model.ZJSJ = DateTime.Now;
  132. //进行质检查
  133. return Db.Updateable(model).ExecuteCommand() == 1;
  134. }
  135. /// <summary>
  136. /// 回退
  137. /// </summary>
  138. /// <returns></returns>
  139. public async Task<bool> Back(string bsm)
  140. {
  141. var model = await Db.Queryable<CgzjZjrw>().Where(t => t.BSM == bsm).FirstAsync();
  142. model.RWZT = KJGH.Model.Enums.EnumRwzt.Back;
  143. model.ZJSJ = DateTime.Now;
  144. var cg = await Db.Queryable<CgglCg>().Where(t => t.BSM == model.CG_BSM).FirstAsync();
  145. cg.ZT_JQSC = KJGH.Model.Enums.EnumCgscZT.退回;
  146. //进行质检查
  147. try
  148. {
  149. Db.BeginTran();
  150. Db.Updateable(model).ExecuteCommand();
  151. Db.Updateable(cg).ExecuteCommand();
  152. Db.CommitTran();
  153. }
  154. catch (Exception ex)
  155. {
  156. WS.Log.RunLog.Error(ex);
  157. Db.RollbackTran();
  158. throw new UseArgumentException("操作失败");
  159. }
  160. return true;
  161. }
  162. /// <summary>
  163. /// 获取
  164. /// </summary>
  165. /// <param name="bsm">标识码</param>
  166. /// <returns></returns>
  167. public async Task<CgzjZjrw> QueryById(string bsm)
  168. {
  169. return (await Db.Queryable<CgzjZjrw>().Where(t => t.BSM == bsm).FirstAsync()).MapTo<CgzjZjrw, CgzjZjrwView>();
  170. }
  171. /// <summary>
  172. /// 分页查询审查数据
  173. /// </summary>
  174. /// <param name="input"></param>
  175. /// <returns></returns>
  176. public async Task<PageData> GetPage(CgzjZjrwPage input)
  177. {
  178. var query = DbClient().Queryable<CgzjZjrw, CgglCg>((t, b) => new JoinQueryInfos(
  179. JoinType.Inner, t.CG_BSM == b.BSM));
  180. if (!string.IsNullOrWhiteSpace(input.XZQDM))
  181. query.Where((t, b) => t.XZQDM.StartsWith(input.XZQDM));
  182. if (!string.IsNullOrWhiteSpace(input.RWMC))
  183. query.Where((t, b) => t.RWMC.Contains(input.RWMC));
  184. if (!string.IsNullOrWhiteSpace(input.SJBZ_BSM))
  185. query.Where((t, b) => t.SJBZ_BSM == input.SJBZ_BSM);
  186. if (!string.IsNullOrWhiteSpace(input.ZJFA_BSM))
  187. query.Where((t, b) => t.ZJFA_BSM == input.ZJFA_BSM);
  188. if (!string.IsNullOrWhiteSpace(input.GHLX))
  189. query.Where((t, b) => t.GHLX == input.GHLX);
  190. if (input.RWZT != KJGH.Model.Enums.EnumRwzt.None)
  191. query.Where((t, b) => t.RWZT == input.RWZT);
  192. query.WhereIF(input.INSTID == "0", (t, b) => string.IsNullOrEmpty(b.INSTID));
  193. query.WhereIF(input.INSTID == "1", (t, b) => !string.IsNullOrEmpty(b.INSTID));
  194. query.WhereIF(!string.IsNullOrWhiteSpace(input.GHJB), (t, b) => b.GHJB.Contains(input.GHJB));
  195. var page = await query
  196. .OrderBy((t, b) => t.CJSJ, OrderByType.Desc)
  197. .Select((t, b) => new CgzjZjrwView()
  198. {
  199. BSM = t.BSM,
  200. CG_BSM = t.CG_BSM,
  201. CJSJ = t.CJSJ,
  202. GHLX = t.GHLX,
  203. GZML = t.GZML,
  204. QXCG_BSM = t.QXCG_BSM,
  205. RWMC = t.RWMC,
  206. RWZT = t.RWZT,
  207. SJBZ_BSM = t.SJBZ_BSM,
  208. SJWZ = t.SJWZ,
  209. WCSJ = t.WCSJ,
  210. XZQDM = t.XZQDM,
  211. XZQMC = t.XZQMC,
  212. ZJFA_BSM = t.ZJFA_BSM,
  213. ZJBG = t.ZJBG,
  214. ZJDF = t.ZJDF,
  215. ZJQU = t.ZJQU,
  216. ZJRY = t.ZJRY,
  217. ZJSJ = t.ZJSJ,
  218. ZRW_BSM = t.ZRW_BSM,
  219. CG_ZT = b.ZT,
  220. INSTID = b.INSTID,
  221. GHJB = b.GHJB
  222. })
  223. .ToPageAsync(input.page, input.limit);
  224. return page;
  225. }
  226. /// <summary>
  227. /// 质检项记录
  228. /// </summary>
  229. /// <param name="rwbsm"></param>
  230. /// <returns></returns>
  231. public async Task<List<CgzjZjxTree>> GetZjxTree(string rwbsm)
  232. {
  233. var zjrw = await Db.Queryable<CgzjZjrw>().Where(t => t.BSM == rwbsm).FirstAsync();
  234. var list = await Db.Queryable<CgzjZjbzfl>().Where(t => t.ZJFA_BSM == zjrw.ZJFA_BSM).ToListAsync();
  235. var zjxList = await DbClient().Queryable<CgzjZjbz, CgzjZjx>((t, b) => new object[] {
  236. JoinType.Inner, t.BSM == b.ZJBSM})
  237. .Where((t, b) => t.ZJFA_BSM == zjrw.ZJFA_BSM && b.RWBSM == rwbsm)
  238. .Select((t, b) => new CgzjZjxTree()
  239. {
  240. ZJBSM = t.BSM,
  241. JCBM = t.JCBM,
  242. FLBSM = t.FLBSM,
  243. CWSL = b.CWSL,
  244. JCLR = t.JCLR,
  245. JCZT = b.JCZT,
  246. ZJDF = b.ZJDF,
  247. IsParent = false,
  248. parent = t.FLBSM,
  249. children = null
  250. }).ToListAsync();
  251. List<CgzjZjxTree> treeList = new List<CgzjZjxTree>();
  252. var plist = list.Where(t => string.IsNullOrWhiteSpace(t.FBSM));
  253. foreach (var item in plist)
  254. {
  255. var pItem = new CgzjZjxTree()
  256. {
  257. JCLR = item.FLMC,
  258. IsParent = true,
  259. children = zjxList.Where(t => t.FLBSM == item.BSM).ToList()
  260. };
  261. treeList.Add(pItem);
  262. }
  263. return treeList;
  264. }
  265. /// <summary>
  266. /// 质检错误
  267. /// </summary>
  268. /// <param name="rwbsm">任务标识码</param>
  269. /// <param name="zjbsm">质检标识码</param>
  270. /// <returns></returns>
  271. public async Task<List<CgzjCwrz>> GetZjErrorLog(string rwbsm, string zjbsm)
  272. {
  273. var list = await DbClient().Queryable<CgzjCwrz, CgzjZjx>((t, b) => new object[] {
  274. JoinType.Inner, t.ZJXBSM == b.BSM})
  275. .Where((t, b) => b.ZJBSM == zjbsm && b.RWBSM == rwbsm)
  276. .Select((t, b) => t)
  277. .ToListAsync();
  278. return list;
  279. }
  280. #endregion
  281. }
  282. }