TBRequestController.java 148 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369
  1. package cn.com.lzt.sign.controller;
  2. import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
  3. import cn.com.lzt.post.entity.PostEntity;
  4. import cn.com.lzt.sign.entity.*;
  5. import cn.com.lzt.sign.service.TBRequestFeedbackService;
  6. import cn.com.lzt.sign.service.TBRequestRuleService;
  7. import cn.com.lzt.sign.service.TBRequestService;
  8. import cn.com.lzt.sign.service.TBRequestTypeRuleRelService;
  9. import cn.com.lzt.sysmsg.entity.SysMsgEntity;
  10. import cn.com.lzt.sysmsg.service.SysMsgServiceI;
  11. import cn.com.lzt.sysmsgdetail.entity.SysMsgDetailEntity;
  12. import cn.com.lzt.sysmsgdetail.service.SysMsgDetailServiceI;
  13. import cn.com.lzt.useractiviti.data.controller.ActivitiToolsController;
  14. import cn.com.lzt.useroptions.entity.TBusUserOptionsEntity;
  15. import com.alibaba.fastjson.JSONObject;
  16. import com.daju.common.util.Result;
  17. import org.apache.commons.lang.StringUtils;
  18. import org.hibernate.criterion.Restrictions;
  19. import org.jeecgframework.core.common.controller.BaseController;
  20. import org.jeecgframework.core.common.exception.BusinessException;
  21. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  22. import org.jeecgframework.core.common.model.json.*;
  23. import org.jeecgframework.core.constant.Globals;
  24. import org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil;
  25. import org.jeecgframework.core.util.*;
  26. import org.jeecgframework.tag.core.easyui.TagUtil;
  27. import org.jeecgframework.tag.vo.datatable.SortDirection;
  28. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  29. import org.jeecgframework.web.system.pojo.base.TSDepart;
  30. import org.jeecgframework.web.system.pojo.base.TSUser;
  31. import org.jeecgframework.web.system.pojo.base.TSUserOrg;
  32. import org.jeecgframework.web.system.service.SystemService;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.stereotype.Controller;
  35. import org.springframework.transaction.annotation.Transactional;
  36. import org.springframework.web.bind.annotation.*;
  37. import org.springframework.web.servlet.ModelAndView;
  38. import javax.servlet.http.HttpServletRequest;
  39. import javax.servlet.http.HttpServletResponse;
  40. import javax.servlet.http.HttpSession;
  41. import java.text.SimpleDateFormat;
  42. import java.util.*;
  43. import java.util.logging.Logger;
  44. @Controller
  45. @RequestMapping("/tBRequestController")
  46. public class TBRequestController extends BaseController {
  47. private static final Logger logger = Logger.getLogger(String.valueOf(TBRequestController.class));
  48. @Autowired
  49. private TBRequestService tBRequestService;
  50. @Autowired
  51. private TBRequestTypeRuleRelService tBRequestTypeRuleRelService;
  52. @Autowired
  53. private TBRequestRuleService tBRequestRuleService;
  54. @Autowired
  55. private TBRequestFeedbackService tBRequestFeedbackService;
  56. @Autowired
  57. private SystemService systemService;
  58. // add-刘梦祥-2022年8月5日14:31:50(签报业务添加系统消息提示)
  59. @Autowired
  60. private SysMsgServiceI sysMsgService;
  61. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  62. /**
  63. * 申请表列表 页面跳转
  64. *
  65. * @return
  66. */
  67. @RequestMapping(params = "list")
  68. public ModelAndView list(HttpServletRequest request) {
  69. return new ModelAndView("cn/com/lzt/sign/tBRequest/tBRequestList");
  70. }
  71. /**
  72. * 签名板 页面跳转
  73. *
  74. * @return
  75. */
  76. @RequestMapping(params = "goToSignature")
  77. public ModelAndView goToSignature(HttpServletRequest request) {
  78. return new ModelAndView("cn/com/lzt/sign/approve/signature");
  79. }
  80. /**
  81. * easyui AJAX请求数据
  82. *
  83. * @param request
  84. * @param response
  85. * @param dataGrid
  86. */
  87. @RequestMapping(params = "datagrid")
  88. public void datagrid(TBRequestEntity tBRequest, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  89. CriteriaQuery cq = new CriteriaQuery(TBRequestEntity.class, dataGrid);
  90. //查询条件组装器
  91. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tBRequest);
  92. /*try{
  93. //自定义追加查询条件
  94. TSUser user = ResourceUtil.getSessionUser();
  95. cq.add(Restrictions.eq("createBy",user.getUserName()));
  96. }catch (Exception e) {
  97. throw new BusinessException(e.getMessage());
  98. }*/
  99. cq.add();
  100. this.tBRequestService.getDataGridReturn(cq, true);
  101. TagUtil.datagrid(response, dataGrid);
  102. }
  103. /**
  104. * 返回limit条件
  105. *
  106. * @param pagination
  107. * @return
  108. * @author 刘梦祥
  109. * @Date 2021年12月21日18:32:27
  110. */
  111. public String getLimitStr(Pagination pagination) {
  112. int limitA = (pagination.getCurrentPage() - 1) * pagination.getPageSize();
  113. int limitB = (pagination.getCurrentPage()) * pagination.getPageSize();
  114. return "LIMIT " + limitA + "," + limitB + ";";
  115. }
  116. /**
  117. * 返回字段对照集合
  118. *
  119. * @param prop
  120. * @return
  121. * @author 刘梦祥
  122. * @Date 2021年12月21日18:32:27
  123. */
  124. public List<Map<String, String>> getPropsByprop(Map<String, String> prop) {
  125. List<Map<String, String>> props = new ArrayList<>();
  126. if (prop.size() > 0) {
  127. for (String key : prop.keySet()) {
  128. Map<String, String> propItem = new HashMap<>();
  129. propItem.put("name", key);
  130. propItem.put("label", prop.get(key));
  131. props.add(propItem);
  132. }
  133. }
  134. return props;
  135. }
  136. /**
  137. * 返回异常对象
  138. *
  139. * @param responseJson 结果集
  140. * @param msg 提示信息
  141. * @return ResponseJson
  142. * @author 刘梦祥
  143. * @Date 2021年12月22日15:54:20
  144. */
  145. public ResponseJson returnErrorResponseJson(ResponseJson responseJson, String msg) {
  146. responseJson.setSuccess(false);
  147. responseJson.setData(null);
  148. responseJson.setCode(500);
  149. responseJson.setMsg(msg);
  150. return responseJson;
  151. }
  152. /**
  153. * 判断并封装排序条件
  154. *
  155. * @param request
  156. * @param prop
  157. * @param sqlStr
  158. * @author 刘梦祥
  159. * @Date 2021年12月21日18:32:27
  160. */
  161. public String sortToSql(HttpServletRequest request, Map<String, String> prop, String sqlStr) {
  162. if (StringUtil.isNotEmpty(request.getParameter("sortColumn")) && StringUtil.isNotEmpty(request.getParameter("sort"))) {
  163. if (prop.containsKey(request.getParameter("sortColumn")) && ("ASC".equals(request.getParameter("sort").toUpperCase()) || "DESC".equals(request.getParameter("sort").toUpperCase()))) {
  164. sqlStr += "ORDER BY " + request.getParameter("sortColumn") + " " + request.getParameter("sort") + "\n";
  165. } else {
  166. System.err.println("排序参数接收错误!可接收参数:" + prop.keySet() + ";传入参数:" + request.getParameter("sortColumn") + ";可接收排序方式:[DESC,ASC];排序方式:" + request.getParameter("sort") + ";将取消排序");
  167. }
  168. }
  169. return sqlStr;
  170. }
  171. /**
  172. * 返回物料申购基本信息
  173. *
  174. * @param responseJson
  175. * @param mapresult
  176. * @param requestId
  177. * @author 刘梦祥
  178. * @Data 2021年12月27日10:13:13
  179. */
  180. public void getMaterialMaintenanceData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  181. String selectTableSql = "SELECT\n" +
  182. "\ttbm.id tableId,\n" +
  183. "\ttbw.warehouse_name storehouse,\n" +
  184. "\ttbm.create_name manager,\n" +
  185. "\tDATE_FORMAT(tbm.material_date,'%Y-%m-%d') date,\n" +
  186. "\ttbm.material_remarks description\n" +
  187. "FROM\n" +
  188. "\tt_b_material tbm\n" +
  189. "LEFT JOIN t_b_warehouse tbw ON tbw.id = tbm.material_warehouse_id\n" +
  190. "WHERE\n" +
  191. "\trequest_id =? ;";
  192. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  193. if (selectTableData != null) {
  194. mapresult.put("detail", selectTableData);
  195. responseJson.setData(mapresult);
  196. if (selectTableData.containsKey("tableId")) {
  197. String selectTableInfoSql = "SELECT\n" +
  198. "\ttbgi.goods_name goodsName,\n" +
  199. "\ttt.typename baseUnit,\n" +
  200. "\ttbgi.specification specification,\n" +
  201. "\tgt.category_name goodsType,\n" +
  202. "\ttbmi.material_info_num number,\n" +
  203. "\tDATE_FORMAT(tbmi.create_date,'%Y-%m-%d %H:%I:%s') times,\n" +
  204. "\ttbmi.material_info_remarks infoRemark\n" +
  205. "FROM\n" +
  206. "\tt_b_material_info tbmi\n" +
  207. "LEFT JOIN t_b_goods_info tbgi ON tbgi.id = tbmi.material_info_goods_id\n" +
  208. "LEFT JOIN (\n" +
  209. "\tSELECT\n" +
  210. "\t\t*\n" +
  211. "\tFROM\n" +
  212. "\t\tt_s_type\n" +
  213. "\tWHERE\n" +
  214. "\t\ttypegroupid = (\n" +
  215. "\t\t\tSELECT\n" +
  216. "\t\t\t\tid\n" +
  217. "\t\t\tFROM\n" +
  218. "\t\t\t\tt_s_typegroup\n" +
  219. "\t\t\tWHERE\n" +
  220. "\t\t\t\ttypegroupcode = \"metering_calcu_unit\"\n" +
  221. "\t\t)\n" +
  222. ") tt ON tt.typecode = tbgi.base_unit\n" +
  223. "LEFT JOIN t_b_goods_category gt ON gt.category_code = tbgi.belong_category\n" +
  224. "WHERE\n" +
  225. "\ttbmi.material_id = ?;";
  226. List<Map<String, Object>> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, selectTableData.get("tableId"));
  227. mapresult.put("detailInfo", selectTableInfoData);
  228. responseJson.setData(mapresult);
  229. }
  230. } else {
  231. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  232. }
  233. }
  234. /**
  235. * 根据classPath和审批id获取tableId
  236. *
  237. * @param classPath
  238. * @param requestId
  239. * @author 刘梦祥
  240. * @Data 2021年12月27日14:03:50
  241. */
  242. public String getTableIdByClassPathAndRequest(String classPath, String requestId) {
  243. // 得到操作表名
  244. String[] classNameList = classPath.split("\\.");
  245. String classNameA = classNameList[classNameList.length - 1];
  246. String tableName = "";
  247. switch (classNameA) {
  248. case "TBusActivitiOvertimeEntity":
  249. tableName = "t_bus_activiti_overtime";
  250. break;
  251. case "TBusActivitiOvertimeAuditEntity":
  252. tableName = "t_bus_activiti_overtime_audit";
  253. break;
  254. case "TBusActivitiOvertimeVacationEntity":
  255. tableName = "t_bus_activiti_overtime_vacation";
  256. break;
  257. case "TBAssetsEntity":
  258. tableName = "t_b_assets";
  259. break;
  260. case "TBBeforehandEntity":
  261. tableName = "t_b_beforehand";
  262. break;
  263. case "TBMaterialEntity":
  264. tableName = "t_b_material";
  265. break;
  266. case "TBMessageEntity":
  267. tableName = "t_b_message";
  268. break;
  269. case "TBOfficeEntity":
  270. tableName = "t_b_office";
  271. break;
  272. case "TBSealEntity":
  273. tableName = "t_b_seal";
  274. break;
  275. case "TBSupervisionEntity":
  276. tableName = "t_b_supervision";
  277. break;
  278. default:
  279. System.out.println("根据classPath对照tableName失败,没有对应的tabelName,classPath:" + classNameA);
  280. break;
  281. }
  282. Map<String, Object> tableinfo = systemService.findOneForJdbc("select id tableId from " + tableName + " where request_id = ? ;", requestId);
  283. if (tableinfo != null && tableinfo.containsKey("tableId")) {
  284. return String.valueOf(tableinfo.get("tableId"));
  285. } else {
  286. return null;
  287. }
  288. }
  289. /**
  290. * 返回加班申请基本信息
  291. *
  292. * @param responseJson
  293. * @param mapresult
  294. * @param requestId
  295. * @author 刘梦祥
  296. * @Data 2021年12月27日10:51:13
  297. */
  298. public void getActivitiOverTimeData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  299. String selectTableSql = "SELECT\n" +
  300. "\ttbao.id tableId,\n" +
  301. "\ttbao.attachment attachment,\n" +
  302. "\ttbao.user_count people_number,\n" +
  303. "\ttbao.depart_id departmentId,\n" +
  304. "\ttsd.departname department,\n" +
  305. "\n" +
  306. "IF (\n" +
  307. "\ttbao.overtime_settlement_type = 1,\n" +
  308. "\t'按照工时',\n" +
  309. "\t'按照吨数'\n" +
  310. ") pay_type,\n" +
  311. " tbao.total_hour total_time,\n" +
  312. " tbao.total_tons total_weight,\n" +
  313. " tbao.reason reason\n" +
  314. "FROM\n" +
  315. "\tt_bus_activiti_overtime tbao\n" +
  316. "LEFT JOIN t_s_depart tsd ON tsd.id = tbao.depart_id\n" +
  317. "WHERE\n" +
  318. "\ttbao.request_id = ?;";
  319. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  320. if (selectTableData != null) {
  321. mapresult.put("detail", selectTableData);
  322. responseJson.setData(mapresult);
  323. if (selectTableData.containsKey("tableId")) {
  324. String selectTableInfoSql = "SELECT\n" +
  325. "\ttbaod.real_name overtimeUser,\n" +
  326. "\ttst.typename overtimeType,\n" +
  327. "\ttbaod.start_time overtimeStartTime,\n" +
  328. "\ttbaod.end_time overtimeEndTime,\n" +
  329. "tbaod.pickup_truck_number pickupTruckNumber,\n" +
  330. "tbaod.keep_up_ton_number keepUpTonNumber,\n" +
  331. "\tTIMESTAMPDIFF(\n" +
  332. "\t\tHOUR,\n" +
  333. "\t\ttbaod.start_time,\n" +
  334. "\t\ttbaod.end_time\n" +
  335. "\t) overtimeTotalTime,\n" +
  336. "\n" +
  337. "IF (\n" +
  338. "\ttst.typename = \"周末值班\" && tbaod.compensate = \"exchange\",\n" +
  339. "\t\"调休\",\n" +
  340. "\t\"加班费\"\n" +
  341. ") compensate,\n" +
  342. " tbaod.remark reason\n" +
  343. "FROM\n" +
  344. "\tt_bus_activiti_overtime_detail tbaod\n" +
  345. "LEFT JOIN (\n" +
  346. "\tSELECT\n" +
  347. "\t\t*\n" +
  348. "\tFROM\n" +
  349. "\t\tt_s_type\n" +
  350. "\tWHERE\n" +
  351. "\t\ttypegroupid = (\n" +
  352. "\t\t\tSELECT\n" +
  353. "\t\t\t\tid\n" +
  354. "\t\t\tFROM\n" +
  355. "\t\t\t\tt_s_typegroup\n" +
  356. "\t\t\tWHERE\n" +
  357. "\t\t\t\ttypegroupcode = \"overtime_type\"\n" +
  358. "\t\t)\n" +
  359. ") tst ON tst.typecode = tbaod.overtime_type\n" +
  360. "where tbaod.overtime_id = ?;";
  361. List<Map<String, Object>> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, selectTableData.get("tableId"));
  362. mapresult.put("detailInfo", selectTableInfoData);
  363. responseJson.setData(mapresult);
  364. }
  365. } else {
  366. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  367. }
  368. }
  369. /**
  370. * 返回加班审核基本信息
  371. *
  372. * @param responseJson
  373. * @param mapresult
  374. * @param requestId
  375. * @author 刘梦祥
  376. * @Data 2021年12月27日10:51:13
  377. */
  378. public void getActivitiOverTimeAuditData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  379. String selectTableSql = "SELECT\n" +
  380. "\ttbao.id tableId,\n" +
  381. "\ttbao.user_count people_number,\n" +
  382. "\ttbao.create_name manager,\n" +
  383. "\ttbao.depart_id departmentId,\n" +
  384. "\ttsd.departname department,\n" +
  385. "\n" +
  386. "IF (\n" +
  387. "\ttbao.overtime_settlement_type = 1,\n" +
  388. "\t'按照工时',\n" +
  389. "\t'按照吨数'\n" +
  390. ") pay_type,\n" +
  391. " tbao.total_hour total_time,\n" +
  392. " tbao.total_tons total_weight,\n" +
  393. " tbao.reason reason,\n" +
  394. " tbao.attachment attachment\n" +
  395. "FROM\n" +
  396. "\tt_bus_activiti_overtime_audit tbaoa\n" +
  397. "LEFT JOIN t_bus_activiti_overtime tbao on tbao.id = tbaoa.overtime_ids\n" +
  398. "LEFT JOIN t_s_depart tsd ON tsd.id = tbao.depart_id\n" +
  399. "WHERE\n" +
  400. "\ttbaoa.request_id = ?;";
  401. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  402. if (selectTableData != null) {
  403. mapresult.put("detail", selectTableData);
  404. responseJson.setData(mapresult);
  405. if (selectTableData.containsKey("tableId")) {
  406. String selectTableInfoSql = "SELECT\n" +
  407. "\ttbaod.real_name overtimeUser,\n" +
  408. "\ttst.typename overtimeType,\n" +
  409. "\ttbaod.start_time overtimeStartTime,\n" +
  410. "\ttbaod.end_time overtimeEndTime,\n" +
  411. "tbaod.pickup_truck_number pickupTruckNumber,\n" +
  412. "tbaod.keep_up_ton_number keepUpTonNumber,\n" +
  413. "\tTIMESTAMPDIFF(\n" +
  414. "\t\tHOUR,\n" +
  415. "\t\ttbaod.start_time,\n" +
  416. "\t\ttbaod.end_time\n" +
  417. "\t) overtimeTotalTime,\n" +
  418. "\n" +
  419. "IF (\n" +
  420. "\ttst.typename = \"周末值班\" && tbaod.compensate = \"exchange\",\n" +
  421. "\t\"调休\",\n" +
  422. "\t\"加班费\"\n" +
  423. ") compensate,\n" +
  424. " tbaod.remark reason\n" +
  425. "FROM\n" +
  426. "\tt_bus_activiti_overtime_detail tbaod\n" +
  427. "LEFT JOIN (\n" +
  428. "\tSELECT\n" +
  429. "\t\t*\n" +
  430. "\tFROM\n" +
  431. "\t\tt_s_type\n" +
  432. "\tWHERE\n" +
  433. "\t\ttypegroupid = (\n" +
  434. "\t\t\tSELECT\n" +
  435. "\t\t\t\tid\n" +
  436. "\t\t\tFROM\n" +
  437. "\t\t\t\tt_s_typegroup\n" +
  438. "\t\t\tWHERE\n" +
  439. "\t\t\t\ttypegroupcode = \"overtime_type\"\n" +
  440. "\t\t)\n" +
  441. ") tst ON tst.typecode = tbaod.overtime_type\n" +
  442. "where tbaod.overtime_id = ?;";
  443. List<Map<String, Object>> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, selectTableData.get("tableId"));
  444. mapresult.put("detailInfo", selectTableInfoData);
  445. responseJson.setData(mapresult);
  446. }
  447. } else {
  448. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  449. }
  450. }
  451. /**
  452. * 返回休假申请基本信息
  453. *
  454. * @param responseJson
  455. * @param mapresult
  456. * @param requestId
  457. * @author 刘梦祥
  458. * @Data 2021年12月27日13:03:15
  459. */
  460. public void getActivitiOverTimeVacationData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  461. String selectTableSql = "SELECT\n" +
  462. "\ttbaov.id tableId,\n" +
  463. "\ttsbu.realname manager,\n" +
  464. "\ttsd.departname department,\n" +
  465. "\ttbaov.attachment attachment,\n" +
  466. "\ttbaov.other_text otherText,\n" +
  467. "\ttype.typename type,\n" +
  468. "\ttbaov.vacation_start_date start_time,\n" +
  469. "\ttbaov.vacation_end_date end_time,\n" +
  470. "\tTIMESTAMPDIFF(\n" +
  471. "\t\tHOUR,\n" +
  472. "\t\ttbaov.vacation_start_date,\n" +
  473. "\t\ttbaov.vacation_end_date\n" +
  474. "\t) total_time,\n" +
  475. "\tTIMESTAMPDIFF(\n" +
  476. "\t\tYEAR,\n" +
  477. "\t\ttsu.employment_date,\n" +
  478. "\t\tNOW()\n" +
  479. "\t) serve_year,\n" +
  480. "\ttbaov.remake reason\n" +
  481. "FROM\n" +
  482. "\tt_bus_activiti_overtime_vacation tbaov\n" +
  483. "LEFT JOIN (\n" +
  484. "\tSELECT\n" +
  485. "\t\t*\n" +
  486. "\tFROM\n" +
  487. "\t\tt_s_type\n" +
  488. "\tWHERE\n" +
  489. "\t\ttypegroupid = (\n" +
  490. "\t\t\tSELECT\n" +
  491. "\t\t\t\tid\n" +
  492. "\t\t\tFROM\n" +
  493. "\t\t\t\tt_s_typegroup\n" +
  494. "\t\t\tWHERE\n" +
  495. "\t\t\t\ttypegroupcode = \"rest_type\"\n" +
  496. "\t\t)\n" +
  497. ") type ON type.typecode = tbaov.vacation_type\n" +
  498. "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbaov.user_id\n" +
  499. "LEFT JOIN t_s_user tsu ON tsu.id = tsbu.id\n" +
  500. "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.ID\n" +
  501. "LEFT JOIN t_s_depart tsd ON tsd.id = tsuo.org_id\n" +
  502. "WHERE\n" +
  503. "\trequest_id = ?;";
  504. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  505. if (selectTableData != null) {
  506. mapresult.put("detail", selectTableData);
  507. responseJson.setData(mapresult);
  508. } else {
  509. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  510. }
  511. }
  512. /**
  513. * 微信小程序审批流暴露接口1(根据用户ID,获取所有提交过审批的申请人)
  514. *
  515. * @param request
  516. * @param pagination
  517. * @return ResponseJson
  518. * @author 刘梦祥
  519. * @Date 2021年12月21日16:33:26
  520. */
  521. @GetMapping(params = "getAllRequestData")
  522. @ResponseBody
  523. public ResponseJson getAllRequestData(HttpServletRequest request, Pagination pagination) {
  524. // 初始化返回实体
  525. ResponseJson responseJson = new ResponseJson();
  526. // 初始化字段对照实体
  527. List<Map<String, String>> props = new ArrayList<>();
  528. // 初始化查询sql对象
  529. String sqlStr = "";
  530. try {
  531. // 初始化字段对照集合
  532. Map<String, String> prop = new HashMap<>();
  533. prop.put("userId", "用户id");
  534. prop.put("realName", "用户名");
  535. prop.put("orgId", "科室id");
  536. prop.put("departName", "科室名称");
  537. // 将字段对照集合转换为字段对照实体
  538. props = getPropsByprop(prop);
  539. // 初始化查询sql
  540. sqlStr = "SELECT\n" +
  541. "\ttbr.user_id userId,\n" +
  542. "\ttsbu.realname realName,\n" +
  543. "\ttsuo.org_id orgId,\n" +
  544. "\ttsd.departname departName\n" +
  545. "FROM\n" +
  546. "\tt_b_request tbr\n" +
  547. "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbr.user_id\n" +
  548. "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.id\n" +
  549. "LEFT JOIN t_s_depart tsd ON tsd.id = tsuo.org_id where tsbu.delete_flag = '0' \n";
  550. // 判断并封装查询条件
  551. if (StringUtil.isNotEmpty(request.getParameter("realName"))) {
  552. sqlStr += "and tsbu.realname like '%" + request.getParameter("realName") + "%'\n";
  553. } else if (StringUtil.isNotEmpty(request.getParameter("userId"))) {
  554. sqlStr += "and tsbu.id like '%" + request.getParameter("userId") + "%'\n";
  555. }
  556. // 根据userId去重
  557. sqlStr += "GROUP BY tbr.user_id \n";
  558. // 判断并封装排序条件
  559. sqlStr = sortToSql(request, prop, sqlStr);
  560. // 初始化总条数sql
  561. String sqlTotal = sqlStr;
  562. // 根据pagination对象封装分页条件
  563. sqlStr += getLimitStr(pagination);
  564. // 执行sql得到总条数
  565. List<Object> total = systemService.findListbySql(sqlTotal);
  566. // 将得到的总条数返回给pagination对象
  567. pagination.setTotal(total.size());
  568. // 执行查询sql
  569. List<Map<String, Object>> mapresult = systemService.findForJdbc(sqlStr, pagination.getCurrentPage(), pagination.getPageSize());
  570. if (mapresult != null && mapresult.size() > 0) {
  571. // 将得到的数据返回给pagination对象
  572. responseJson.setData(mapresult);
  573. } else {
  574. responseJson.setMsg("没有该用户的审批提交记录!");
  575. }
  576. } catch (Exception e) {
  577. System.err.println("根据用户ID,获取所有提交过审批的申请人Exception" + e.getLocalizedMessage() + "\nsql:\n" + sqlStr);
  578. returnErrorResponseJson(responseJson, e.getMessage());
  579. }
  580. responseJson.setProps(props);
  581. responseJson.setPagination(pagination);
  582. return responseJson;
  583. }
  584. /**
  585. * 微信小程序审批流暴露接口2(获取所有审批类型)
  586. *
  587. * @param pagination
  588. * @return ResponseJson
  589. * @author 刘梦祥
  590. * @Date 2021年12月22日13:16:28
  591. */
  592. @GetMapping(params = "getAllRequestType")
  593. @ResponseBody
  594. public ResponseJson getAllRequestType(Pagination pagination) {
  595. // 初始化返回实体
  596. ResponseJson responseJson = new ResponseJson();
  597. // 初始化字段对照实体
  598. List<Map<String, String>> props = new ArrayList<>();
  599. // 初始化查询sql对象
  600. String sqlStr = "";
  601. try {
  602. // 初始化字段对照集合
  603. Map<String, String> prop = new HashMap<>();
  604. prop.put("id", "审批类型id");
  605. prop.put("typeName", "审批类型");
  606. prop.put("description", "审批流程");
  607. // 将字段对照集合转换为字段对照实体
  608. props = getPropsByprop(prop);
  609. // 初始化查询sql
  610. sqlStr = "SELECT\n" +
  611. "\tid,\n" +
  612. "\t`name` typeName,\n" +
  613. "\tdescription\n" +
  614. "FROM\n" +
  615. "\tt_b_request_rule\n";
  616. // 初始化总条数sql
  617. String sqlTotal = sqlStr;
  618. // 根据pagination对象封装分页条件
  619. sqlStr += getLimitStr(pagination);
  620. // 执行sql得到总条数
  621. List<Object> total = systemService.findListbySql(sqlTotal);
  622. // 将得到的总条数返回给pagination对象
  623. pagination.setTotal(total.size());
  624. // 执行查询sql
  625. List<Map<String, Object>> mapresult = systemService.findForJdbc(sqlStr, pagination.getCurrentPage(), pagination.getPageSize());
  626. // 将得到的数据返回给pagination对象
  627. responseJson.setData(mapresult);
  628. } catch (Exception e) {
  629. System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage() + "\nsql:\n" + sqlStr);
  630. returnErrorResponseJson(responseJson, e.getMessage());
  631. }
  632. responseJson.setProps(props);
  633. responseJson.setPagination(pagination);
  634. return responseJson;
  635. }
  636. /**
  637. * 微信小程序审批流暴露接口3(根据用户id,获取申请列表)
  638. *
  639. * @param request
  640. * @param pagination
  641. * @return ResponseJson
  642. * @author 刘梦祥
  643. * @Date 2021年12月22日13:39:52
  644. */
  645. @GetMapping(params = "getAllRequestList")
  646. @ResponseBody
  647. public ResponseJson getAllRequestList(HttpServletRequest request, Pagination pagination) {
  648. // 初始化返回实体
  649. ResponseJson responseJson = new ResponseJson();
  650. // 初始化字段对照实体
  651. List<Map<String, String>> props = new ArrayList<>();
  652. // 初始化查询sql对象
  653. String sqlStr = "";
  654. try {
  655. if (StringUtil.isNotEmpty(request.getParameter("loginUserId")) && StringUtil.isNotEmpty(request.getParameter("pageType"))) {
  656. // 初始化字段对照集合
  657. Map<String, String> prop = new HashMap<>();
  658. prop.put("id", "审批id");
  659. prop.put("type", "审批类型");
  660. prop.put("tableName", "操作对照表名");
  661. prop.put("status", "审批状态");
  662. prop.put("invoker_name", "申请人姓名");
  663. prop.put("userId", "申请人id");
  664. prop.put("feedbackStatus", "审批结果");
  665. prop.put("created_at", "申请时间");
  666. prop.put("timeBegin", "查询申请时间开始时间");
  667. prop.put("timeEnd", "查询申请时间结束时间");
  668. prop.put("detail", "审批表单详情");
  669. prop.put("reason", "申请原因");
  670. // 将字段对照集合转换为字段对照实体
  671. props = getPropsByprop(prop);
  672. sqlStr = "SELECT\n" +
  673. "\ttbr.id requestId,\n" +
  674. "\ttbrtrr.type tableName,\n" +
  675. "\ttbr.type type,\n" +
  676. "\ttbrf.feedback_status feedbackStatus,\n" +
  677. "\ttbr.`status` `status`,\n" +
  678. "\ttsbu.realname invoker_name,\n" +
  679. "\ttbr.user_id userId,\n" +
  680. "\ttbr.created_at created_at\n" +
  681. "FROM\n" +
  682. "\tt_b_request_feedback tbrf\n" +
  683. "RIGHT JOIN t_b_request tbr ON tbr.id = tbrf.request_id\n" +
  684. "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbr.user_id\n" +
  685. "LEFT JOIN t_b_request_type_rule_rel tbrtrr ON tbrtrr.rule_id = tbr.rule_id\n";
  686. // 判断并封装查询条件
  687. sqlStr += "where ";
  688. // 初始化查询sql
  689. switch (request.getParameter("pageType")) {
  690. case "待处理":
  691. // 首先根据小程序登录用户的userid得到科室和职位
  692. String sql = "SELECT\n" +
  693. "\ttsbu.id loginUserId,\n" +
  694. "\ttsuo.org_id orgId,\n" +
  695. "\ttbup.in_postid inPostId\n" +
  696. "FROM\n" +
  697. "\tt_s_base_user tsbu\n" +
  698. "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.id\n" +
  699. "LEFT JOIN t_bus_user_personnel tbup ON tbup.userid = tsuo.user_id\n" +
  700. "WHERE\n" +
  701. "\ttsbu.id = ?;";
  702. Map<String, Object> uopData = systemService.findOneForJdbc(sql, request.getParameter("loginUserId"));
  703. if (uopData != null) {
  704. sqlStr += "tbr.`status` = \"待审批\"\n" +
  705. "AND tbr.current_ruler_id IN (\n" +
  706. "\t'{\"userId\":\"" + request.getParameter("loginUserId") + "\"}',\n" +
  707. "\t'{\"departId\":\"" + uopData.get("orgId") + "\",\"inPostid\":\"" + uopData.get("inPostId") + "\"}'\n" +
  708. ") and ";
  709. }
  710. break;
  711. case "已处理":
  712. sqlStr += "tbrf.user_id = \"" + request.getParameter("loginUserId") + "\" and ";
  713. break;
  714. case "已提交":
  715. sqlStr += "tbr.user_id = \"" + request.getParameter("loginUserId") + "\" and ";
  716. break;
  717. default:
  718. // 全部
  719. String sqlAll = "SELECT\n" +
  720. "\ttsbu.id loginUserId,\n" +
  721. "\ttsuo.org_id orgId,\n" +
  722. "\ttbup.in_postid inPostId\n" +
  723. "FROM\n" +
  724. "\tt_s_base_user tsbu\n" +
  725. "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.id\n" +
  726. "LEFT JOIN t_bus_user_personnel tbup ON tbup.userid = tsuo.user_id\n" +
  727. "WHERE\n" +
  728. "\ttsbu.id = ?;";
  729. Map<String, Object> uopDataAll = systemService.findOneForJdbc(sqlAll, request.getParameter("loginUserId"));
  730. if (uopDataAll != null) {
  731. sqlStr += "tbr.current_ruler_id IN (\n" +
  732. "\t'{\"userId\":\"" + request.getParameter("loginUserId") + "\"}',\n" +
  733. "\t'{\"departId\":\"" + uopDataAll.get("orgId") + "\",\"inPostid\":\"" + uopDataAll.get("inPostId") + "\"}'\n" +
  734. ") or ";
  735. }
  736. sqlStr += "tbrf.user_id = \"" + request.getParameter("loginUserId") + "\" or ";
  737. sqlStr += "tbr.user_id LIKE \"%" + request.getParameter("loginUserId") + "%\" and ";
  738. break;
  739. }
  740. for (String key : prop.keySet()) {
  741. if (StringUtil.isNotEmpty(request.getParameter(key))) {
  742. switch (key) {
  743. case "userId":
  744. sqlStr += "tbr.user_id LIKE \"%" + request.getParameter(key) + "%\" and ";
  745. break;
  746. case "type":
  747. sqlStr += "tbr.type LIKE \"%" + request.getParameter(key) + "%\" and ";
  748. break;
  749. case "status":
  750. sqlStr += "tbr.`status` LIKE \"%" + request.getParameter(key) + "%\" and ";
  751. break;
  752. case "timeBegin":
  753. sqlStr += "date_format(tbr.created_at,'%Y-%m-%d') BETWEEN \"" + request.getParameter(key) + "\" and \"" + request.getParameter(key.substring(0, key.length() - 5) + "End") + "\" and ";
  754. break;
  755. default:
  756. break;
  757. }
  758. }
  759. }
  760. sqlStr = sqlStr.substring(0, sqlStr.length() - 4);
  761. sqlStr += " GROUP BY tbr.id \n";
  762. // 判断并封装排序条件
  763. sqlStr = sortToSql(request, prop, sqlStr);
  764. // 初始化总条数sql
  765. String sqlTotal = sqlStr;
  766. // 根据pagination对象封装分页条件
  767. sqlStr += getLimitStr(pagination);
  768. // 执行sql得到总条数
  769. List<Object> total = systemService.findListbySql(sqlTotal);
  770. // 将得到的总条数返回给pagination对象
  771. pagination.setTotal(total.size());
  772. // 执行查询sql
  773. List<Map<String, Object>> mapresult = systemService.findForJdbc(sqlStr, pagination.getCurrentPage(), pagination.getPageSize());
  774. if (mapresult != null && mapresult.size() > 0) {
  775. for (Map<String, Object> mapItem : mapresult) {
  776. if (mapItem.containsKey("tableName") && mapItem.get("tableName") != null && mapItem.containsKey("requestId") && mapItem.get("requestId") != null) {
  777. // 申请表名
  778. String formTableName = "";
  779. // 备注字段名
  780. String remakeColumn = "";
  781. switch (String.valueOf(mapItem.get("tableName"))) {
  782. // 加班申请
  783. case "t_bus_activiti_overtime":
  784. formTableName = "t_bus_activiti_overtime";
  785. remakeColumn = "reason";
  786. break;
  787. // 加班审核
  788. case "t_bus_activiti_overtime_audit":
  789. formTableName = "t_bus_activiti_overtime_audit";
  790. remakeColumn = "remake";
  791. break;
  792. // 休假签报
  793. case "t_bus_activiti_overtime_vacation":
  794. formTableName = "t_bus_activiti_overtime_vacation";
  795. remakeColumn = "remake";
  796. break;
  797. // 物料申购(维修类和非维修类)
  798. case "t_b_material_maintenance":
  799. case "t_b_material_un_maintenance":
  800. formTableName = "t_b_material";
  801. mapItem.put("tableName", formTableName);
  802. remakeColumn = "material_remarks";
  803. break;
  804. // 用印
  805. case "t_b_seal":
  806. formTableName = "t_b_seal";
  807. remakeColumn = "seal_reason";
  808. break;
  809. // 资产申购
  810. case "t_b_assets":
  811. formTableName = "t_b_assets";
  812. remakeColumn = "assets_remarks";
  813. break;
  814. // 事前
  815. case "t_b_beforehand":
  816. formTableName = "t_b_beforehand";
  817. remakeColumn = "beforehand_reason";
  818. break;
  819. // 办公
  820. case "t_b_office":
  821. formTableName = "t_b_office";
  822. remakeColumn = "office_cont";
  823. break;
  824. // 消息
  825. case "t_b_message":
  826. formTableName = "t_b_message";
  827. remakeColumn = "message_title";
  828. break;
  829. // 督查奖惩
  830. case "t_b_supervision":
  831. formTableName = "t_b_supervision";
  832. remakeColumn = "supervision_pro_cont";
  833. break;
  834. default:
  835. System.err.println("审批规则表对应失败!");
  836. break;
  837. }
  838. if (StringUtil.isNotEmpty(formTableName)) {
  839. String selectTableSql = "select * from " + formTableName + " where request_id = ? ;";
  840. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, mapItem.get("requestId"));
  841. if (selectTableData != null && selectTableData.containsKey(remakeColumn) && selectTableData.get(remakeColumn) != null) {
  842. Map<String, String> remakes = new HashMap<>();
  843. remakes.put("reason", String.valueOf(selectTableData.get(remakeColumn)));
  844. mapItem.put("detail", remakes);
  845. }
  846. }
  847. }
  848. }
  849. }
  850. // 将得到的数据返回给pagination对象
  851. responseJson.setData(mapresult);
  852. } else {
  853. System.err.println("缺少必须参数loginUserId、pageType!");
  854. returnErrorResponseJson(responseJson, "缺少必须参数loginUserId、pageType!");
  855. }
  856. } catch (Exception e) {
  857. System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage() + "\nsql:\n" + sqlStr);
  858. returnErrorResponseJson(responseJson, e.getMessage());
  859. }
  860. responseJson.setProps(props);
  861. responseJson.setPagination(pagination);
  862. return responseJson;
  863. }
  864. /**
  865. * 微信小程序审批流暴露接口4(根据申请id获取申请详情)
  866. *
  867. * @param request
  868. * @param pagination
  869. * @return ResponseJson
  870. * @author 刘梦祥
  871. * @Date 2021年12月22日15:14:10
  872. */
  873. @GetMapping(params = "getRequestInfoById")
  874. @ResponseBody
  875. public ResponseJson getRequestInfoById(HttpServletRequest request, Pagination pagination) {
  876. // 初始化返回实体
  877. ResponseJson responseJson = new ResponseJson();
  878. // 初始化字段对照实体
  879. List<Map<String, String>> props = new ArrayList<>();
  880. // 初始化查询sql对象
  881. String sqlStr = "";
  882. try {
  883. // 初始化字段对照集合
  884. Map<String, String> prop = new HashMap<>();
  885. prop.put("requestId", "审批id");
  886. prop.put("tableName", "操作对照表名");
  887. prop.put("type", "审批类型");
  888. prop.put("status", "审批状态");
  889. prop.put("name", "申请人姓名");
  890. prop.put("userId", "申请人id");
  891. prop.put("time", "申请时间");
  892. // 初始化查询sql
  893. sqlStr = "SELECT\n" +
  894. "\ttbr.id requestId,\n" +
  895. "\ttbrtrr.type tableName,\n" +
  896. "\ttbr.type type,\n" +
  897. "\ttbr.`status` `status`,\n" +
  898. "\ttsbu.realname `name`,\n" +
  899. "\ttbr.user_id userId,\n" +
  900. "\ttbr.created_at time\n" +
  901. "FROM\n" +
  902. "\tt_b_request tbr\n" +
  903. "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbr.user_id\n" +
  904. "LEFT JOIN t_b_request_type_rule_rel tbrtrr ON tbrtrr.rule_id = tbr.rule_id\n";
  905. // 判断并封装查询条件
  906. if (StringUtil.isNotEmpty(request.getParameter("requestId"))) {
  907. sqlStr += "where tbr.id =\"" + request.getParameter("requestId") + "\" \n";
  908. // 判断并封装排序条件
  909. sqlStr = sortToSql(request, prop, sqlStr);
  910. // 初始化总条数sql
  911. String sqlTotal = sqlStr;
  912. // 根据pagination对象封装分页条件
  913. sqlStr += getLimitStr(pagination);
  914. // 执行sql得到总条数
  915. List<Object> total = systemService.findListbySql(sqlTotal);
  916. // 将得到的总条数返回给pagination对象
  917. pagination.setTotal(total.size());
  918. // 执行查询sql
  919. Map<String, Object> mapresult = new HashMap<>();
  920. Map<String, Object> infoData = systemService.findOneForJdbc(sqlStr);
  921. // 写入基本信息
  922. mapresult.put("baseInfo", infoData);
  923. if (infoData != null && infoData.containsKey("tableName") && infoData.get("tableName") != null) {
  924. switch (String.valueOf(infoData.get("tableName"))) {
  925. // 加班申请
  926. case "t_bus_activiti_overtime":
  927. // 附加字段对照集合
  928. prop.put("detail.tableId", "操作表id");
  929. prop.put("detail.department", "科室");
  930. prop.put("detail.people_number", "加班人数合计");
  931. prop.put("detail.pay_type", "加班结算方式");
  932. prop.put("detail.total_time", "加班时长总计");
  933. prop.put("detail.total_weight", "加班吨数总计");
  934. prop.put("detail.reason", "加班原因");
  935. prop.put("detail.attachment", "附件");
  936. // 详细信息列表字段对照
  937. prop.put("detailInfo.overtimeUser", "加班员工");
  938. prop.put("detailInfo.overtimeType", "加班类型");
  939. prop.put("detailInfo.overtimeStartTime", "加班开始时间");
  940. prop.put("detailInfo.overtimeEndTime", "加班结束时间");
  941. prop.put("detailInfo.overtimeTotalTime", "加班时长");
  942. prop.put("detailInfo.pickupTruckNumber", "清运车数");
  943. prop.put("detailInfo.keepUpTonNumber", "清运吨数");
  944. prop.put("detailInfo.compensate", "补偿方式");
  945. prop.put("detailInfo.reason", "备注");
  946. // 将字段对照集合添加到对照实体
  947. props = getPropsByprop(prop);
  948. // 查询详情信息
  949. getActivitiOverTimeData(responseJson, mapresult, request.getParameter("requestId"));
  950. break;
  951. // 加班审核
  952. case "t_bus_activiti_overtime_audit":
  953. // 附加字段对照集合
  954. prop.put("detail.tableId", "操作表id");
  955. prop.put("detail.manager", "制单人");
  956. prop.put("detail.department", "科室");
  957. prop.put("detail.people_number", "加班人数合计");
  958. prop.put("detail.pay_type", "加班结算方式");
  959. prop.put("detail.total_time", "加班时长总计");
  960. prop.put("detail.total_weight", "加班吨数总计");
  961. prop.put("detail.attachment", "附件");
  962. prop.put("detail.reason", "加班原因");
  963. // 详细信息列表字段对照
  964. prop.put("detailInfo.overtimeUser", "加班员工");
  965. prop.put("detailInfo.overtimeType", "加班类型");
  966. prop.put("detailInfo.overtimeStartTime", "加班开始时间");
  967. prop.put("detailInfo.overtimeEndTime", "加班结束时间");
  968. prop.put("detailInfo.overtimeTotalTime", "加班时长");
  969. prop.put("detailInfo.pickupTruckNumber", "清运车数");
  970. prop.put("detailInfo.keepUpTonNumber", "清运吨数");
  971. prop.put("detailInfo.compensate", "补偿方式");
  972. prop.put("detailInfo.reason", "备注");
  973. // 将字段对照集合添加到对照实体
  974. props = getPropsByprop(prop);
  975. getActivitiOverTimeAuditData(responseJson, mapresult, request.getParameter("requestId"));
  976. break;
  977. // 休假签报
  978. case "t_bus_activiti_overtime_vacation":
  979. // 附加字段对照集合
  980. prop.put("detail.tableId", "操作表id");
  981. prop.put("detail.manager", "休假员工");
  982. prop.put("detail.department", "科室");
  983. prop.put("detail.serve_year", "工龄");
  984. prop.put("detail.type", "休假类型");
  985. prop.put("detail.start_time", "休假开始时间");
  986. prop.put("detail.end_time", "休假结束时间");
  987. prop.put("detail.total_time", "休假总时长");
  988. prop.put("detail.reason", "休假原因");
  989. prop.put("detail.attachment", "附件");
  990. prop.put("detail.otherText", "休假类型描述");
  991. // 将字段对照集合添加到对照实体
  992. props = getPropsByprop(prop);
  993. getActivitiOverTimeVacationData(responseJson, mapresult, request.getParameter("requestId"));
  994. break;
  995. // 物料申购(维修类和非维修类)
  996. case "t_b_material_maintenance":
  997. case "t_b_material_un_maintenance":
  998. // 附加字段对照集合
  999. prop.put("detail.tableId", "操作表id");
  1000. prop.put("detail.storehouse", "仓库");
  1001. prop.put("detail.manager", "经办人");
  1002. prop.put("detail.date", "申请日期");
  1003. prop.put("detail.description", "备注说明");
  1004. // 详细信息列表字段对照
  1005. prop.put("detailInfo.goodsName", "货品名称");
  1006. prop.put("detailInfo.baseUnit", "计量单位");
  1007. prop.put("detailInfo.specifications", "规格型号");
  1008. prop.put("detailInfo.goodsType", "货品分类");
  1009. prop.put("detailInfo.number", "数量");
  1010. prop.put("detailInfo.times", "请购时间");
  1011. prop.put("detailInfo.infoRemark", "备注");
  1012. // 将字段对照集合添加到对照实体
  1013. props = getPropsByprop(prop);
  1014. // 查询详情信息
  1015. getMaterialMaintenanceData(responseJson, mapresult, request.getParameter("requestId"));
  1016. break;
  1017. // TODO:请补充其他申请类型的对照
  1018. // 资产申购
  1019. case "t_b_assets":
  1020. // 附加字段对照集合
  1021. prop.put("detail.tableId", "操作表id");
  1022. prop.put("detail.assets_date", "申购日期");
  1023. prop.put("detail.assets_dapt_id", "科室id");
  1024. prop.put("detail.assets_dept", "科室");
  1025. prop.put("detail.assets_username", "经办人");
  1026. prop.put("detail.assets_remarks", "备注");
  1027. // prop.put("detail.assets_cont", "子表信息");
  1028. //详细信息
  1029. prop.put("detailinfo.assets_info_goodsname", "货品名称");
  1030. prop.put("detailinfo.assets_info_measure", "计量单位");
  1031. prop.put("detailinfo.assets_info_model", "规格型号");
  1032. prop.put("detailinfo.assets_info_num", "数量");
  1033. prop.put("detailinfo.assets_info_remarks", "备注信息");
  1034. // 将字段对照集合添加到对照实体
  1035. props = getPropsByprop(prop);
  1036. getAssetsData(responseJson, mapresult, request.getParameter("requestId"));
  1037. break;
  1038. // 用印
  1039. case "t_b_seal":
  1040. // 附加字段对照集合
  1041. prop.put("detail.tableId", "操作表id");
  1042. prop.put("detail.seal_dept", "科室");
  1043. prop.put("detail.seal_dept_id", "科室id");
  1044. prop.put("detail.seal_type", "用印类别");
  1045. prop.put("detail.seal_type_id", "用印类别id");
  1046. prop.put("detail.seal_maindept", "主送单位");
  1047. prop.put("detail.seal_username", "经办人");
  1048. prop.put("detail.seal_file", "用印文件");
  1049. prop.put("detail.seal_date", "用印日期");
  1050. prop.put("detail.seal_num", "用印份数");
  1051. prop.put("detail.seal_num_china", "份数(大写)");
  1052. prop.put("detail.seal_reason", "用印事由");
  1053. prop.put("detail.seal_file_url", "附件路径");
  1054. prop.put("detail.seal_filename", "附件名称");
  1055. prop.put("detail.attachment", "附件");
  1056. // 将字段对照集合添加到对照实体
  1057. props = getPropsByprop(prop);
  1058. getSealData(responseJson, mapresult, request.getParameter("requestId"));
  1059. break;
  1060. // 事前
  1061. case "t_b_beforehand":
  1062. // 附加字段对照集合
  1063. prop.put("detail.tableId", "操作表id");
  1064. prop.put("detail.beforehand_dept", "科室");
  1065. prop.put("detail.beforehand_dept_id", "科室id");
  1066. prop.put("detail.beforehand_receive_user", "接待员工");
  1067. prop.put("detail.beforehand_post", "职务");
  1068. prop.put("detail.beforehand_station", "岗位");
  1069. prop.put("detail.beforehand_accompany_user", "陪同员工");
  1070. prop.put("detail.beforehand_receive_dapt", "招待单位");
  1071. prop.put("detail.beforehand_start_date", "招待开始时间");
  1072. prop.put("detail.beforehand_end_date", "招待结束时间");
  1073. prop.put("detail.beforehand_day", "招待天数");
  1074. prop.put("detail.beforehand_reason", "招待事由");
  1075. prop.put("detail.beforehand_file_url", "附件路径");
  1076. prop.put("detail.beforehand_filename", "附件名称");
  1077. prop.put("detail.attachment", "附件");
  1078. // 将字段对照集合添加到对照实体
  1079. props = getPropsByprop(prop);
  1080. getBeforehandData(responseJson, mapresult, request.getParameter("requestId"));
  1081. break;
  1082. // 消息
  1083. case "t_b_message":
  1084. // 附加字段对照集合
  1085. prop.put("detail.tableId", "操作表id");
  1086. prop.put("detail.message_title", "标题");
  1087. prop.put("detail.message_range_dept", "发送范围");
  1088. // prop.put("detail.message_range_dept", "发送范围部门名称");
  1089. prop.put("detail.message_range_dept_id", "发送范围部门ids");
  1090. prop.put("detail.message_mode", "发送方式");
  1091. prop.put("detail.message_date_type", "发送时间类型");
  1092. prop.put("detail.message_type", "通知类型");
  1093. prop.put("detail.message_cont", "内容");
  1094. prop.put("detail.message_send", "是否发送");
  1095. prop.put("detail.message_file_url", "附件路径");
  1096. prop.put("detail.message_filename", "附件名称");
  1097. prop.put("detail.attachment", "附件");
  1098. // 将字段对照集合添加到对照实体
  1099. props = getPropsByprop(prop);
  1100. getMessageData(responseJson, mapresult, request.getParameter("requestId"));
  1101. break;
  1102. // 办公
  1103. case "t_b_office":
  1104. // 附加字段对照集合
  1105. prop.put("detail.tableId", "操作表id");
  1106. prop.put("detail.create_date", "申请日期");
  1107. prop.put("detail.office_dept", "科室");
  1108. prop.put("detail.office_dept_id", "科室id");
  1109. prop.put("detail.office_travel_user", "公务出行人员");
  1110. prop.put("detail.office_drive_user", "驾驶人员");
  1111. prop.put("detail.office_address", "公务活动地点");
  1112. prop.put("detail.office_start_date", "公务活动开始时间");
  1113. prop.put("detail.office_end_date", "公务活动结束时间");
  1114. prop.put("detail.office_day", "公务活动总天数");
  1115. prop.put("detail.office_cont", "公务活动内容");
  1116. prop.put("detail.office_file_url", "附件路径");
  1117. prop.put("detail.office_filename", "附件名称");
  1118. prop.put("detail.attachment", "附件");
  1119. // 将字段对照集合添加到对照实体
  1120. props = getPropsByprop(prop);
  1121. getOfficeData(responseJson, mapresult, request.getParameter("requestId"));
  1122. break;
  1123. // 督查奖惩
  1124. case "t_b_supervision":
  1125. // 附加字段对照集合
  1126. prop.put("detail.tableId", "操作表id");
  1127. prop.put("detail.supervision_bill_id", "督查单据id");
  1128. prop.put("detail.supervision_bill_code", "督查单据编码");
  1129. prop.put("detail.supervision_bill_date", "督查单据日期");
  1130. prop.put("detail.supervision_bill_user", "督查单据人员");
  1131. prop.put("detail.supervision_bill_region", "督查单据区域");
  1132. prop.put("detail.supervision_type", "业务类型");
  1133. prop.put("detail.supervision_address", "问题作业位置");
  1134. prop.put("detail.supervision_pro_cont", "问题描述");
  1135. prop.put("detail.supervision_one_img_url", "问题照片路径1");
  1136. prop.put("detail.supervision_two_img_url", "问题照片路径2");
  1137. prop.put("detail.supervision_three_img_url", "问题照片路径3");
  1138. prop.put("detail.supervision_duty_user", "责任人");
  1139. prop.put("detail.supervision_class_user", "班组长");
  1140. prop.put("detail.supervision_cont", "奖惩内容");
  1141. prop.put("detail.supervision_res_type", "奖惩类型");
  1142. prop.put("detail.supervision_res", "奖惩处理");
  1143. // 将字段对照集合添加到对照实体
  1144. props = getPropsByprop(prop);
  1145. getSupervisionData(responseJson, mapresult, request.getParameter("requestId"));
  1146. break;
  1147. default:
  1148. System.err.println("审批规则表对应失败!");
  1149. break;
  1150. }
  1151. } else {
  1152. returnErrorResponseJson(responseJson, "审批类型查询失败!");
  1153. }
  1154. } else {
  1155. returnErrorResponseJson(responseJson, "缺少参数requestId!");
  1156. }
  1157. } catch (Exception e) {
  1158. System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage());
  1159. returnErrorResponseJson(responseJson, e.getMessage());
  1160. }
  1161. responseJson.setProps(props);
  1162. responseJson.setPagination(pagination);
  1163. return responseJson;
  1164. }
  1165. private void getSupervisionData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  1166. String selectTableSql = " SELECT \n" +
  1167. " id tableId, \n" +
  1168. " supervision_bill_id, \n" +
  1169. " supervision_bill_code, \n" +
  1170. " DATE_FORMAT(supervision_bill_date,'%Y-%m-%d') supervision_bill_date, \n" +
  1171. " (select realname from t_s_base_user where id = supervision_bill_user) supervision_bill_user, \n" +
  1172. " supervision_bill_region, \n" +
  1173. " supervision_type, \n" +
  1174. " supervision_address, \n" +
  1175. " supervision_pro_cont, \n" +
  1176. " supervision_one_img_url, \n" +
  1177. " supervision_two_img_url, \n" +
  1178. " supervision_three_img_url, \n" +
  1179. " (select realname from t_s_base_user where id = supervision_duty_user) supervision_duty_user, \n" +
  1180. " (select realname from t_s_base_user where id = supervision_class_user) supervision_class_user, \n" +
  1181. " supervision_cont, \n" +
  1182. " supervision_res_type, \n" +
  1183. " supervision_res \n" +
  1184. " FROM \n" +
  1185. " t_b_supervision " +
  1186. " WHERE\n" +
  1187. "\trequest_id =? ;";
  1188. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  1189. if (selectTableData != null) {
  1190. mapresult.put("detail", selectTableData);
  1191. responseJson.setData(mapresult);
  1192. } else {
  1193. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  1194. }
  1195. }
  1196. private void getMessageData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  1197. String selectTableSql = "SELECT\n" +
  1198. "\tid tableId,\n" +
  1199. "\tmessage_title,\n" +
  1200. //"\tmessage_range,\n" +
  1201. "\tmessage_range_dept,\n" +
  1202. "\tmessage_range_dept_id,\n" +
  1203. "\tmessage_mode,\n" +
  1204. "\tmessage_date_type,\n" +
  1205. "\tmessage_type,\n" +
  1206. "\tmessage_cont,\n" +
  1207. "\tmessage_send,\n" +
  1208. "\tmessage_file_url,\n" +
  1209. "\tmessage_filename \n" +
  1210. "FROM\n" +
  1211. "\tt_b_message" +
  1212. " WHERE\n" +
  1213. "\trequest_id =? ;";
  1214. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  1215. if (selectTableData != null) {
  1216. if(selectTableData.get("message_file_url")!=null){
  1217. String[] sealFileUrl = (String.valueOf(selectTableData.get("message_file_url"))).split(",");
  1218. String[] sealFilename = (String.valueOf(selectTableData.get("message_filename"))).split(",");
  1219. String attachment = "[";
  1220. for(int i=0;i<sealFileUrl.length;i++){
  1221. if(i==0){
  1222. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"}";
  1223. }else{
  1224. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"},";
  1225. }
  1226. }
  1227. attachment+="]";
  1228. selectTableData.put("attachment",attachment);
  1229. }
  1230. mapresult.put("detail", selectTableData);
  1231. responseJson.setData(mapresult);
  1232. } else {
  1233. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  1234. }
  1235. }
  1236. private void getOfficeData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  1237. String selectTableSql = "SELECT\n" +
  1238. "\tid tableId,\n" +
  1239. "\toffice_dept,\n" +
  1240. "\toffice_dept_id,\n" +
  1241. "\toffice_travel_user,\n" +
  1242. "\toffice_drive_user,\n" +
  1243. "\toffice_address,\n" +
  1244. "\t DATE_FORMAT(office_start_date,'%Y-%m-%d') office_start_date,\n" +
  1245. "\t DATE_FORMAT(office_end_date,'%Y-%m-%d') office_end_date,\n" +
  1246. "\toffice_day,\n" +
  1247. "\toffice_cont,\n" +
  1248. "\toffice_file_url,\n" +
  1249. "\toffice_filename, \n" +
  1250. "\t DATE_FORMAT(create_date,'%Y-%m-%d') create_date \n" +
  1251. "FROM\n" +
  1252. "\tt_b_office" +
  1253. " WHERE\n" +
  1254. "\trequest_id =? ;";
  1255. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  1256. if (selectTableData != null) {
  1257. if(selectTableData.get("office_file_url")!=null){
  1258. String[] sealFileUrl = (String.valueOf(selectTableData.get("office_file_url"))).split(",");
  1259. String[] sealFilename = (String.valueOf(selectTableData.get("office_filename"))).split(",");
  1260. String attachment = "[";
  1261. for(int i=0;i<sealFileUrl.length;i++){
  1262. if(i==0){
  1263. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"}";
  1264. }else{
  1265. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"},";
  1266. }
  1267. }
  1268. attachment+="]";
  1269. selectTableData.put("attachment",attachment);
  1270. }
  1271. mapresult.put("detail", selectTableData);
  1272. responseJson.setData(mapresult);
  1273. } else {
  1274. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  1275. }
  1276. }
  1277. private void getBeforehandData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  1278. String selectTableSql = "SELECT\n" +
  1279. "\tid tableId,\n" +
  1280. "\tbeforehand_dept,\n" +
  1281. "\tbeforehand_dept_id,\n" +
  1282. "\tbeforehand_receive_user,\n" +
  1283. "\tbeforehand_post,\n" +
  1284. "\tbeforehand_station,\n" +
  1285. "\tbeforehand_accompany_user,\n" +
  1286. "\tbeforehand_receive_dapt,\n" +
  1287. "\t DATE_FORMAT(beforehand_start_date,'%Y-%m-%d') beforehand_start_date,\n" +
  1288. "\t DATE_FORMAT(beforehand_end_date,'%Y-%m-%d') beforehand_end_date,\n" +
  1289. "\tbeforehand_day,\n" +
  1290. "\tbeforehand_reason,\n" +
  1291. "\tbeforehand_file_url,\n" +
  1292. "\tbeforehand_filename \n" +
  1293. "FROM\n" +
  1294. "\tt_b_beforehand" +
  1295. " WHERE\n" +
  1296. "\trequest_id =? ;";
  1297. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  1298. if (selectTableData != null) {
  1299. if(selectTableData.get("beforehand_file_url")!=null){
  1300. String[] sealFileUrl = (String.valueOf(selectTableData.get("beforehand_file_url"))).split(",");
  1301. String[] sealFilename = (String.valueOf(selectTableData.get("beforehand_filename"))).split(",");
  1302. String attachment = "[";
  1303. for(int i=0;i<sealFileUrl.length;i++){
  1304. if(i==0){
  1305. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"}";
  1306. }else{
  1307. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"},";
  1308. }
  1309. }
  1310. attachment+="]";
  1311. selectTableData.put("attachment",attachment);
  1312. }
  1313. mapresult.put("detail", selectTableData);
  1314. responseJson.setData(mapresult);
  1315. } else {
  1316. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  1317. }
  1318. }
  1319. private void getSealData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  1320. String selectTableSql = "SELECT\n" +
  1321. "\tid tableId,\n" +
  1322. "\tseal_dept,\n" +
  1323. "\tseal_dept_id,\n" +
  1324. "\t (select typename from t_s_type where typecode = seal_type_id) seal_type,\n" +
  1325. "\tseal_type_id,\n" +
  1326. "\tseal_maindept,\n" +
  1327. "\tseal_username,\n" +
  1328. "\tseal_file,\n" +
  1329. "\t DATE_FORMAT(seal_date,'%Y-%m-%d') seal_date,\n" +
  1330. "\tseal_num,\n" +
  1331. "\tseal_num_china,\n" +
  1332. "\tseal_reason,\n" +
  1333. "\tseal_file_url,\n" +
  1334. "\tseal_filename \n" +
  1335. "FROM\n" +
  1336. "\tt_b_seal" +
  1337. " WHERE\n" +
  1338. "\trequest_id =? ;";
  1339. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  1340. if (selectTableData != null) {
  1341. if(selectTableData.get("seal_file_url")!=null){
  1342. String[] sealFileUrl = (String.valueOf(selectTableData.get("seal_file_url"))).split(",");
  1343. String[] sealFilename = (String.valueOf(selectTableData.get("seal_filename"))).split(",");
  1344. String attachment = "[";
  1345. for(int i=0;i<sealFileUrl.length;i++){
  1346. if(i==0){
  1347. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"}";
  1348. }else{
  1349. attachment += "{\"name\":\""+sealFilename[i]+"\",\"url\":\""+sealFileUrl[i]+"\"},";
  1350. }
  1351. }
  1352. attachment+="]";
  1353. selectTableData.put("attachment",attachment);
  1354. }
  1355. mapresult.put("detail", selectTableData);
  1356. responseJson.setData(mapresult);
  1357. } else {
  1358. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  1359. }
  1360. }
  1361. private void getAssetsData(ResponseJson responseJson, Map<String, Object> mapresult, String requestId) {
  1362. //主表
  1363. String selectTableSql = "\tselect id tableId, DATE_FORMAT(assets_date,'%Y-%m-%d') assets_date,assets_dapt_id, " +
  1364. "\tassets_dept,assets_username,assets_remarks from t_b_assets " +
  1365. "WHERE\n" +
  1366. "\trequest_id =? ;";
  1367. Map<String, Object> selectTableData = systemService.findOneForJdbc(selectTableSql, requestId);
  1368. //详情
  1369. if (selectTableData != null) {
  1370. String selectTableInfoSql = " SELECT assets_info_goodsname,\n" +
  1371. " assets_info_measure,\n" +
  1372. " assets_info_model,\n" +
  1373. " assets_info_num,\n" +
  1374. " assets_info_remarks\n" +
  1375. " FROM t_b_assets_info where assets_id =?";
  1376. List<Map<String, Object>> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, String.valueOf(selectTableData.get("tableId")));
  1377. if (selectTableInfoData != null) {
  1378. mapresult.put("detailInfo", selectTableInfoData);
  1379. responseJson.setData(mapresult);
  1380. }
  1381. }
  1382. if (selectTableData != null) {
  1383. mapresult.put("detail", selectTableData);
  1384. responseJson.setData(mapresult);
  1385. } else {
  1386. returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!");
  1387. }
  1388. }
  1389. /**
  1390. * 微信小程序审批流暴露接口5(根据申请id获取申请流程)
  1391. *
  1392. * @param request
  1393. * @param pagination
  1394. * @return ResponseJson
  1395. * @author 刘梦祥
  1396. * @Date 2021年12月22日15:29:39
  1397. */
  1398. @GetMapping(params = "getRequestById")
  1399. @ResponseBody
  1400. public ResponseJson getRequestById(HttpServletRequest request, Pagination pagination) {
  1401. // 初始化返回实体
  1402. ResponseJson responseJson = new ResponseJson();
  1403. // 初始化字段对照实体
  1404. List<Map<String, String>> props = new ArrayList<>();
  1405. // 初始化查询sql对象
  1406. String sqlStr = "";
  1407. try {
  1408. List<TBRequestFeedbackEntity> tbRequestFeedbackEntityArrayList = new ArrayList<>();
  1409. List<Map<String, Object>> mapresult = new ArrayList<>();
  1410. String requestId = "";
  1411. if (StringUtil.isNotEmpty(request.getParameter("requestId"))) {
  1412. requestId = request.getParameter("requestId");
  1413. // 初始化字段对照集合
  1414. Map<String, String> prop = new HashMap<>();
  1415. prop.put("name", "审批人姓名");
  1416. prop.put("image", "审批人头像");
  1417. prop.put("requestId", "审批id");
  1418. prop.put("content", "审批意见");
  1419. prop.put("time", "审批时间");
  1420. prop.put("deny", "是否拒绝");
  1421. // 将字段对照集合转换为字段对照实体
  1422. props = getPropsByprop(prop);
  1423. // 根据流程id得到对应流程规则的流程明细
  1424. Map<String, Object> rulersOne = systemService.findOneForJdbc("select rulers,user_id userId from t_b_request_rule tbrr LEFT JOIN t_b_request tbr on tbr.rule_id = tbrr.id where tbr.id = ?;", requestId);
  1425. if (rulersOne != null && rulersOne.containsKey("rulers") && StringUtil.isNotEmpty(rulersOne.get("rulers")) && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) {
  1426. String rulers = String.valueOf(rulersOne.get("rulers"));
  1427. List<String> ruleList = Arrays.asList(rulers.split(","));
  1428. List<Map<String, Object>> requestInfoList = systemService.findForJdbc("select * from t_b_request_feedback tbrf LEFT JOIN t_s_base_user tsbu on tbrf.user_id = tsbu.ID where request_id = ? ORDER BY created_at ASC;", requestId);
  1429. if (requestInfoList != null) {
  1430. int index = 0;
  1431. boolean returenStatus = false;
  1432. for (Map<String, Object> feedBackItem : requestInfoList) {
  1433. TBRequestFeedbackEntity tbRequestFeedbackEntity = new TBRequestFeedbackEntity();
  1434. tbRequestFeedbackEntity.setUserId(String.valueOf(feedBackItem.get("realname")));
  1435. tbRequestFeedbackEntity.setId(String.valueOf(feedBackItem.get("id")));
  1436. tbRequestFeedbackEntity.setRequestId(String.valueOf(feedBackItem.get("request_id")));
  1437. tbRequestFeedbackEntity.setFeedbackStatus(String.valueOf(feedBackItem.get("feedback_status")));
  1438. tbRequestFeedbackEntity.setFeedbackOpinion(String.valueOf(feedBackItem.get("feedback_opinion")));
  1439. tbRequestFeedbackEntity.setSignatureBaseUrl(String.valueOf(feedBackItem.get("signature_base_url")));
  1440. if (feedBackItem.get("created_at") != null) {
  1441. tbRequestFeedbackEntity.setCreatedAt(simpleDateFormat.parse(String.valueOf(feedBackItem.get("created_at"))));
  1442. } else {
  1443. tbRequestFeedbackEntity.setCreatedAt(null);
  1444. }
  1445. if ("驳回".equals(feedBackItem.get("feedback_status"))) {
  1446. index++;
  1447. returenStatus = true;
  1448. } else if ("同意".equals(feedBackItem.get("feedback_status"))) {
  1449. index++;
  1450. }
  1451. tbRequestFeedbackEntityArrayList.add(tbRequestFeedbackEntity);
  1452. }
  1453. if (index < ruleList.size()) {
  1454. // 代表未完成
  1455. for (int i = index; i < ruleList.size(); i++) {
  1456. // 暂存科室id
  1457. String departId = "";
  1458. String inPostid = "";
  1459. TBRequestFeedbackEntity tbRequestFeedbackEntity = new TBRequestFeedbackEntity();
  1460. tbRequestFeedbackEntity.setFeedbackStatus(returenStatus ? "流程驳回,待经办人确认,并执行其他操作" : "待审批");
  1461. String userRuleMapStr = this.getUserRuleMap(ruleList.get(i), String.valueOf(rulersOne.get("userId")));
  1462. if (StringUtil.isNotEmpty(userRuleMapStr)) {
  1463. JSONObject userRuleObj = JSONObject.parseObject(userRuleMapStr);
  1464. if (userRuleObj.containsKey("departId") && userRuleObj.containsKey("inPostid")) {
  1465. departId = userRuleObj.get("departId").toString();
  1466. inPostid = userRuleObj.get("inPostid").toString();
  1467. // 根据科室和职位查询用户
  1468. CriteriaQuery criteriaQuery1 = new CriteriaQuery(UserAndUserPersonnelDto.class, new DataGrid());
  1469. criteriaQuery1.eq("inPostid", userRuleObj.get("inPostid").toString());
  1470. criteriaQuery1.add();
  1471. List<UserAndUserPersonnelDto> userAndUserPersonnelDtoList = this.systemService.getListByCriteriaQuery(criteriaQuery1, true);
  1472. if (userAndUserPersonnelDtoList != null && userAndUserPersonnelDtoList.size() > 0) {
  1473. userAndUserPersonnelDtoList.get(0).getRealname();
  1474. for (UserAndUserPersonnelDto userDto : userAndUserPersonnelDtoList) {
  1475. List<Map<String, Object>> userJoinList = systemService.findForJdbc("select * from t_s_base_user tsbu LEFT JOIN t_s_user tsu on tsu.id = tsbu.ID LEFT JOIN t_s_user_org tsuo on tsuo.user_id = tsu.ID where tsuo.user_id = ? and tsuo.org_id = ? ;", userDto.getUserid(), userRuleObj.get("departId"));
  1476. if (userJoinList != null && userJoinList.size() > 0) {
  1477. for (Map<String, Object> tsItem : userJoinList) {
  1478. String oldUserId = StringUtil.isNotEmpty(tbRequestFeedbackEntity.getUserId()) ? tbRequestFeedbackEntity.getUserId() + "-" : "";
  1479. tbRequestFeedbackEntity.setUserId(oldUserId + tsItem.get("realname"));
  1480. String oldUserImage = StringUtil.isNotEmpty(tbRequestFeedbackEntity.getImage()) ? tbRequestFeedbackEntity.getImage() + "-" : "";
  1481. tbRequestFeedbackEntity.setImage(oldUserImage + tsItem.get("image"));
  1482. }
  1483. }
  1484. }
  1485. }
  1486. } else if (userRuleObj.containsKey("userId")) {
  1487. Map<String, Object> userItem = systemService.findOneForJdbc("select * from t_s_base_user tsbu LEFT JOIN t_s_user tsu on tsu.id = tsbu.ID where tsbu.id = ?;", userRuleObj.get("userId").toString());
  1488. if (userItem.containsKey("realname")) {
  1489. tbRequestFeedbackEntity.setUserId(userItem.get("realname").toString());
  1490. if (userItem.get("image") != null) {
  1491. tbRequestFeedbackEntity.setImage(userItem.get("image").toString());
  1492. }
  1493. } else {
  1494. tbRequestFeedbackEntity.setUserId(null);
  1495. }
  1496. }
  1497. }
  1498. if (StringUtil.isEmpty(tbRequestFeedbackEntity.getUserId())) {
  1499. TSDepart tsDepart = this.systemService.getEntity(TSDepart.class, departId);
  1500. PostEntity postEntity = this.systemService.getEntity(PostEntity.class, inPostid);
  1501. tbRequestFeedbackEntity.setUserId("系统暂无该职位用户!部门:" + tsDepart.getDepartname() + ";岗位:" + postEntity.getPostName() + "!");
  1502. }
  1503. tbRequestFeedbackEntityArrayList.add(tbRequestFeedbackEntity);
  1504. }
  1505. }
  1506. // 将实体类转换为微信小程序识别的数据结构
  1507. if (tbRequestFeedbackEntityArrayList.size() > 0) {
  1508. for (TBRequestFeedbackEntity tbRequestFeedbackEntity : tbRequestFeedbackEntityArrayList) {
  1509. Map<String, Object> resultItem = new HashMap<>();
  1510. resultItem.put("name", tbRequestFeedbackEntity.getUserId());
  1511. resultItem.put("image", tbRequestFeedbackEntity.getImage());
  1512. resultItem.put("requestId", tbRequestFeedbackEntity.getRequestId());
  1513. resultItem.put("content", tbRequestFeedbackEntity.getFeedbackOpinion());
  1514. resultItem.put("time", tbRequestFeedbackEntity.getCreatedAt());
  1515. if(tbRequestFeedbackEntity.getSignatureBaseUrl() == null){
  1516. tbRequestFeedbackEntity.setSignatureBaseUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4QAAAEsCAYAAACbnn2RAAAAAXNSR0IArs4c6QAAFK1JREFUeF7t10EBAAAIAjHpX9ogNxsw/LBzBAgQIECAAAECBAgQIJAUWDK10AQIECBAgAABAgQIECBwBqEnIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQOAB6HkBLXgQOl0AAAAASUVORK5CYII=");
  1517. }
  1518. resultItem.put("signatureBaseUrl", tbRequestFeedbackEntity.getSignatureBaseUrl());
  1519. resultItem.put("deny", tbRequestFeedbackEntity.getFeedbackStatus() != null ? "驳回".equals(tbRequestFeedbackEntity.getFeedbackStatus()) : null);
  1520. mapresult.add(resultItem);
  1521. }
  1522. }
  1523. // 将得到的数据返回给pagination对象
  1524. responseJson.setData(mapresult);
  1525. } else {
  1526. returnErrorResponseJson(responseJson, "未查询到流程id为" + requestId + "的审批记录。");
  1527. }
  1528. } else {
  1529. returnErrorResponseJson(responseJson, "未查询到流程id为" + requestId + "的审批规则。");
  1530. }
  1531. } else {
  1532. returnErrorResponseJson(responseJson, "缺少参数requestId");
  1533. }
  1534. } catch (Exception e) {
  1535. System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage());
  1536. returnErrorResponseJson(responseJson, e.getMessage());
  1537. }
  1538. responseJson.setProps(props);
  1539. responseJson.setPagination(pagination);
  1540. return responseJson;
  1541. }
  1542. /**
  1543. * 微信小程序审批流暴露接口6(提交审批意见)
  1544. *
  1545. * @param requestDto
  1546. * @return ResponseJson
  1547. * @author 刘梦祥
  1548. * @Date 2021年12月22日19:15:53
  1549. */
  1550. @PostMapping(params = "putRequest")
  1551. @ResponseBody
  1552. @Transactional(rollbackFor = Exception.class)
  1553. public ResponseJson putRequest(RequestDto requestDto) {
  1554. // 初始化返回实体
  1555. ResponseJson responseJson = new ResponseJson();
  1556. try {
  1557. if (requestDto != null && requestDto.getDeny() != null && requestDto.getRequestId() != null && requestDto.getContent() != null && requestDto.getUserId() != null && requestDto.getSignatureBaseUrl() != null) {
  1558. requestDto.setContent(new String(requestDto.getContent().getBytes("ISO-8859-1"),"UTF-8"));
  1559. TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity();
  1560. //保存审批详细数据
  1561. tBRequestFeedback.setId(UUID.randomUUID().toString());
  1562. tBRequestFeedback.setUserId(requestDto.getUserId());
  1563. tBRequestFeedback.setRequestId(requestDto.getRequestId());
  1564. tBRequestFeedback.setFeedbackStatus(requestDto.getDeny() ? "驳回" : "同意");
  1565. tBRequestFeedback.setFeedbackOpinion(requestDto.getContent());
  1566. tBRequestFeedback.setCreatedAt(new Date());
  1567. tBRequestFeedback.setSignatureBaseUrl(requestDto.getSignatureBaseUrl());
  1568. // 根据审批id查询对应classPath和rulers
  1569. Map<String, Object> rulersOne = systemService.findOneForJdbc("select tbrtrr.class_path classPath,tbrr.rulers rulers,tbr.current_ruler_id currentRulerId from t_b_request tbr LEFT JOIN t_b_request_type_rule_rel tbrtrr on tbrtrr.rule_id = tbr.rule_id LEFT JOIN t_b_request_rule tbrr on tbrr.id = tbrtrr.rule_id where tbr.id = ?;", requestDto.getRequestId());
  1570. if (rulersOne != null && rulersOne.containsKey("classPath") && rulersOne.containsKey("rulers") && rulersOne.get("classPath") != null && rulersOne.get("rulers") != null && rulersOne.containsKey("currentRulerId") && rulersOne.get("currentRulerId") != null) {
  1571. // 验证该用户是否有审批权限
  1572. JSONObject currentRulerIdObj = JSONObject.parseObject(String.valueOf(rulersOne.get("currentRulerId")));
  1573. Boolean currentRulerStatus = null;
  1574. if (currentRulerIdObj.containsKey("userId")) {
  1575. if (requestDto.getUserId().equals(currentRulerIdObj.get("userId"))) {
  1576. currentRulerStatus = true;
  1577. } else {
  1578. currentRulerStatus = false;
  1579. }
  1580. } else if (currentRulerIdObj.containsKey("inPostid") && currentRulerIdObj.containsKey("departId")) {
  1581. String currentRulerUserListSql = "select * from t_s_user_org tsuo left JOIN t_bus_user_personnel tbup on tbup.userid = tsuo.user_id where tsuo.user_id = ? and tsuo.org_id = ? and tbup.in_postid = ?;";
  1582. List<Map<String, Object>> currentRulerUserList = systemService.findForJdbc(currentRulerUserListSql, requestDto.getUserId(), currentRulerIdObj.get("departId"), currentRulerIdObj.get("inPostid"));
  1583. if (currentRulerUserList != null && currentRulerUserList.size() > 0) {
  1584. currentRulerStatus = true;
  1585. } else {
  1586. currentRulerStatus = false;
  1587. }
  1588. } else {
  1589. currentRulerStatus = false;
  1590. }
  1591. if (currentRulerStatus) {
  1592. TBRequestEntity tBRequestA = systemService.getEntity(TBRequestEntity.class, requestDto.getRequestId());
  1593. if ("待审批".equals(tBRequestA.getStatus())) {
  1594. String rules = String.valueOf(rulersOne.get("rulers"));
  1595. List<String> ruleList = Arrays.asList(rules.split(","));
  1596. //判断下一个审批的人
  1597. String nextRole = "";
  1598. // 根据审批id查询审批日志表数据
  1599. CriteriaQuery feedbackCq = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  1600. feedbackCq.eq("requestId", tBRequestFeedback.getRequestId());
  1601. feedbackCq.addOrder("createdAt", SortDirection.asc);
  1602. feedbackCq.add();
  1603. List<TBRequestFeedbackEntity> tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(feedbackCq, true);
  1604. nextRole = null;
  1605. int index = 1;
  1606. for (TBRequestFeedbackEntity feedBackItem : tbRequestFeedbackEntityList) {
  1607. if ("驳回".equals(feedBackItem.getFeedbackStatus())) {
  1608. index = 1;
  1609. } else if ("同意".equals(feedBackItem.getFeedbackStatus())) {
  1610. index++;
  1611. }
  1612. }
  1613. if (index >= ruleList.size()) {
  1614. // 代表已完成
  1615. tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "已通过" : "已驳回");
  1616. tBRequestA.setCurrentRulerId(nextRole);
  1617. } else {
  1618. // 代表未完成
  1619. nextRole = this.getUserRuleMap(ruleList.get(index), requestDto.getUserId());
  1620. tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "待审批" : "已驳回");
  1621. tBRequestA.setCurrentRulerId(nextRole);
  1622. }
  1623. if (tBRequestFeedback.getFeedbackStatus().equals("同意")) {
  1624. responseJson.setMsg("审批成功!");
  1625. } else {
  1626. responseJson.setMsg("单据已驳回!");
  1627. }
  1628. // 根据classPath和审批id获取tableId
  1629. String tableId = getTableIdByClassPathAndRequest(String.valueOf(rulersOne.get("classPath")), tBRequestFeedback.getRequestId());
  1630. if (tableId != null && StringUtil.isNotEmpty(tableId)) {
  1631. systemService.save(tBRequestFeedback);
  1632. this.tBRequestService.saveOrUpdate(tBRequestA);
  1633. this.tBRequestService.withdrawbyClassPath(String.valueOf(rulersOne.get("classPath")), tableId, tBRequestA.getStatus(), tBRequestFeedback.getRequestId());
  1634. } else {
  1635. System.err.println("该审批流未查询到对应的表单id,请刷新后重试!");
  1636. returnErrorResponseJson(responseJson, "该审批流未查询到对应的表单id,请刷新后重试!");
  1637. }
  1638. } else {
  1639. System.err.println("该审批流状态为:" + tBRequestA.getStatus() + ",请刷新后重试!");
  1640. returnErrorResponseJson(responseJson, "该审批流状态为:" + tBRequestA.getStatus() + ",请刷新后重试!");
  1641. }
  1642. } else {
  1643. System.err.println("该用户没有审批权限!");
  1644. returnErrorResponseJson(responseJson, "该用户没有审批权限!");
  1645. }
  1646. } else {
  1647. System.err.println("根据审批id查询信息失败rulersOne:" + rulersOne);
  1648. returnErrorResponseJson(responseJson, "根据审批id查询信息失败rulersOne:" + rulersOne);
  1649. }
  1650. } else {
  1651. System.err.println("缺少必传参数:requestDto:" + requestDto);
  1652. returnErrorResponseJson(responseJson, "缺少必传参数:requestDto:" + requestDto);
  1653. }
  1654. } catch (Exception e) {
  1655. System.err.println("提交审批意见Exception:" + e.getLocalizedMessage());
  1656. returnErrorResponseJson(responseJson, e.getMessage());
  1657. }
  1658. return responseJson;
  1659. }
  1660. /**
  1661. * 根据流程id查询得到所有的审批记录
  1662. *
  1663. * @param request
  1664. * @param response
  1665. * @param dataGrid
  1666. */
  1667. @RequestMapping(params = "goodsdatagrid")
  1668. public void goodsdatagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  1669. String requestId = request.getParameter("requestId");
  1670. CriteriaQuery cq = new CriteriaQuery(TBRequestFeedbackEntity.class, dataGrid);
  1671. TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity();
  1672. tBRequestFeedback.setRequestId(requestId);
  1673. HqlGenerateUtil.installHql(cq, tBRequestFeedback, request.getParameterMap());
  1674. try {
  1675. cq.eq("requestId", requestId);
  1676. cq.addOrder("createdAt", SortDirection.asc);
  1677. } catch (Exception e) {
  1678. throw new BusinessException(e.getMessage());
  1679. }
  1680. cq.add();
  1681. List<TBRequestFeedbackEntity> TBRequestFeedbackEntityList = this.tBRequestFeedbackService.getListByCriteriaQuery(cq, true);
  1682. String userId = "";
  1683. Map<String, Object> rulersOne = systemService.findOneForJdbc("select rulers,user_id userId from t_b_request_rule tbrr LEFT JOIN t_b_request tbr on tbr.rule_id = tbrr.id where tbr.id = ?;", requestId);
  1684. if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) {
  1685. userId = rulersOne.get("userId").toString();
  1686. }
  1687. // 显示所有的待审批流程
  1688. if (StringUtil.isNotEmpty(userId)) {
  1689. CriteriaQuery feedbackCq = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  1690. feedbackCq.eq("requestId", tBRequestFeedback.getRequestId());
  1691. feedbackCq.addOrder("createdAt", SortDirection.asc);
  1692. feedbackCq.add();
  1693. List<TBRequestFeedbackEntity> tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(feedbackCq, true);
  1694. CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestEntity.class, new DataGrid());
  1695. criteriaQuery.eq("id", tBRequestFeedback.getRequestId());
  1696. criteriaQuery.add();
  1697. List<TBRequestEntity> TBRequestEntityList = this.systemService.getListByCriteriaQuery(criteriaQuery, true);
  1698. TBRequestRuleEntity tBRequestRule = this.tBRequestRuleService.getEntity(TBRequestRuleEntity.class, TBRequestEntityList.get(0).getRuleId());
  1699. String rules = tBRequestRule.getRulers();
  1700. List<String> ruleList = Arrays.asList(rules.split(","));
  1701. int index = 0;
  1702. boolean returenStatus = false;
  1703. if (tbRequestFeedbackEntityList != null && tbRequestFeedbackEntityList.size() > 0) {
  1704. for (TBRequestFeedbackEntity feedBackItem : tbRequestFeedbackEntityList) {
  1705. // add-刘梦祥-2022年5月9日10:39:42(添加角色名称)
  1706. if(ruleList.get(index).contains("userId")){
  1707. TBRequestFeedbackEntityList.get(index).setRequestUserRole(ruleList.get(index).substring(7));
  1708. }else{
  1709. TBRequestFeedbackEntityList.get(index).setRequestUserRole(ruleList.get(index));
  1710. }
  1711. if ("驳回".equals(feedBackItem.getFeedbackStatus())) {
  1712. // update-刘梦祥-2021年12月3日11:11:26(就算是用户驳回,也不会重新显示下面的数据)
  1713. index++;
  1714. returenStatus = true;
  1715. } else if ("同意".equals(feedBackItem.getFeedbackStatus())) {
  1716. index++;
  1717. }
  1718. }
  1719. }
  1720. if (index < ruleList.size()) {
  1721. // 代表未完成
  1722. for (int i = index; i < ruleList.size(); i++) {
  1723. // 暂存科室id
  1724. String departId = "";
  1725. String inPostid = "";
  1726. TBRequestFeedbackEntity tbRequestFeedbackEntity = new TBRequestFeedbackEntity();
  1727. tbRequestFeedbackEntity.setFeedbackStatus(returenStatus ? "流程驳回,待经办人确认,并执行其他操作" : "待审批");
  1728. // add-刘梦祥-2022年5月9日10:39:42(添加角色名称)
  1729. tbRequestFeedbackEntity.setRequestUserRole(ruleList.get(i));
  1730. if(ruleList.get(i).contains("userId")){
  1731. tbRequestFeedbackEntity.setRequestUserRole(ruleList.get(i).substring(7));
  1732. }else{
  1733. tbRequestFeedbackEntity.setRequestUserRole(ruleList.get(i));
  1734. }
  1735. String userRuleMapStr = this.getUserRuleMap(ruleList.get(i), userId);
  1736. if (StringUtil.isNotEmpty(userRuleMapStr)) {
  1737. JSONObject userRuleObj = JSONObject.parseObject(userRuleMapStr);
  1738. if (userRuleObj.containsKey("departId") && userRuleObj.containsKey("inPostid")) {
  1739. departId = userRuleObj.get("departId").toString();
  1740. inPostid = userRuleObj.get("inPostid").toString();
  1741. // 根据科室和职位查询用户
  1742. CriteriaQuery criteriaQuery1 = new CriteriaQuery(UserAndUserPersonnelDto.class, new DataGrid());
  1743. criteriaQuery1.eq("inPostid", userRuleObj.get("inPostid").toString());
  1744. criteriaQuery1.add();
  1745. List<UserAndUserPersonnelDto> userAndUserPersonnelDtoList = this.systemService.getListByCriteriaQuery(criteriaQuery1, true);
  1746. if (userAndUserPersonnelDtoList != null && userAndUserPersonnelDtoList.size() > 0) {
  1747. userAndUserPersonnelDtoList.get(0).getRealname();
  1748. for (UserAndUserPersonnelDto userDto : userAndUserPersonnelDtoList) {
  1749. CriteriaQuery criteriaQuery2 = new CriteriaQuery(TSBaseUser.class, new DataGrid());
  1750. criteriaQuery2.eq("id", userDto.getUserid());
  1751. criteriaQuery2.eq("departid", userRuleObj.get("departId"));
  1752. criteriaQuery2.add();
  1753. List<TSBaseUser> tsBaseUserList = this.systemService.getListByCriteriaQuery(criteriaQuery2, true);
  1754. if (tsBaseUserList != null && tsBaseUserList.size() > 0) {
  1755. for (TSBaseUser tsItem : tsBaseUserList) {
  1756. String oldUserId = StringUtil.isNotEmpty(tbRequestFeedbackEntity.getUserId()) ? tbRequestFeedbackEntity.getUserId() + "-" : "";
  1757. tbRequestFeedbackEntity.setUserId(oldUserId + tsItem.getRealName());
  1758. }
  1759. }
  1760. }
  1761. }
  1762. } else if (userRuleObj.containsKey("userId")) {
  1763. tbRequestFeedbackEntity.setUserId(userRuleObj.get("userId").toString());
  1764. }
  1765. if(StringUtils.isEmpty(tbRequestFeedbackEntity.getSignatureBaseUrl())){
  1766. tbRequestFeedbackEntity.setSignatureBaseUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4QAAAEsCAYAAACbnn2RAAAAAXNSR0IArs4c6QAAFK1JREFUeF7t10EBAAAIAjHpX9ogNxsw/LBzBAgQIECAAAECBAgQIJAUWDK10AQIECBAgAABAgQIECBwBqEnIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQOAB6HkBLXgQOl0AAAAASUVORK5CYII=");
  1767. }
  1768. }
  1769. if (StringUtil.isEmpty(tbRequestFeedbackEntity.getUserId())) {
  1770. TSDepart tsDepart = this.systemService.getEntity(TSDepart.class, departId);
  1771. PostEntity postEntity = this.systemService.getEntity(PostEntity.class, inPostid);
  1772. tbRequestFeedbackEntity.setUserId("系统暂无该职位用户!部门:" + tsDepart.getDepartname() + ";岗位:" + postEntity.getPostName() + "!");
  1773. }
  1774. TBRequestFeedbackEntityList.add(tbRequestFeedbackEntity);
  1775. }
  1776. }
  1777. }
  1778. dataGrid.setResults(null);
  1779. dataGrid.setResults(TBRequestFeedbackEntityList);
  1780. dataGrid.setTotal(TBRequestFeedbackEntityList.size());
  1781. TagUtil.datagrid(response, dataGrid);
  1782. }
  1783. /**
  1784. * 查看流程
  1785. *
  1786. * @param request
  1787. * @return
  1788. */
  1789. @RequestMapping(params = "goUpdate")
  1790. public ModelAndView goUpdate(HttpServletRequest request) {
  1791. // 获取审批流程id
  1792. String requestId = request.getParameter("requestId");
  1793. DataGrid dataGrid = new DataGrid();
  1794. CriteriaQuery cq = new CriteriaQuery(TBRequestFeedbackEntity.class, dataGrid);
  1795. TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity();
  1796. tBRequestFeedback.setRequestId(requestId);
  1797. HqlGenerateUtil.installHql(cq, tBRequestFeedback, request.getParameterMap());
  1798. // 查询审批流程进度的日志
  1799. try {
  1800. cq.eq("requestId", requestId);
  1801. cq.addOrder("createdAt", SortDirection.asc);
  1802. } catch (Exception e) {
  1803. throw new BusinessException(e.getMessage());
  1804. }
  1805. cq.add();
  1806. List<TBRequestFeedbackEntity> TBRequestFeedbackEntityList = this.tBRequestFeedbackService.getListByCriteriaQuery(cq, true);
  1807. for (TBRequestFeedbackEntity TBRequestFeedbackEntityItem : TBRequestFeedbackEntityList){
  1808. if(TBRequestFeedbackEntityItem.getSignatureBaseUrl() == null){
  1809. TBRequestFeedbackEntityItem.setSignatureBaseUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4QAAAEsCAYAAACbnn2RAAAAAXNSR0IArs4c6QAAFK1JREFUeF7t10EBAAAIAjHpX9ogNxsw/LBzBAgQIECAAAECBAgQIJAUWDK10AQIECBAgAABAgQIECBwBqEnIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQMAg9AMECBAgQIAAAQIECBCIChiE0eLFJkCAAAECBAgQIECAgEHoBwgQIECAAAECBAgQIBAVMAijxYtNgAABAgQIECBAgAABg9APECBAgAABAgQIECBAICpgEEaLF5sAAQIECBAgQIAAAQIGoR8gQIAAAQIECBAgQIBAVMAgjBYvNgECBAgQIECAAAECBAxCP0CAAAECBAgQIECAAIGogEEYLV5sAgQIECBAgAABAgQIGIR+gAABAgQIECBAgAABAlEBgzBavNgECBAgQIAAAQIECBAwCP0AAQIECBAgQIAAAQIEogIGYbR4sQkQIECAAAECBAgQIGAQ+gECBAgQIECAAAECBAhEBQzCaPFiEyBAgAABAgQIECBAwCD0AwQIECBAgAABAgQIEIgKGITR4sUmQIAAAQIECBAgQICAQegHCBAgQIAAAQIECBAgEBUwCKPFi02AAAECBAgQIECAAAGD0A8QIECAAAECBAgQIEAgKmAQRosXmwABAgQIECBAgAABAgahHyBAgAABAgQIECBAgEBUwCCMFi82AQIECBAgQIAAAQIEDEI/QIAAAQIECBAgQIAAgaiAQRgtXmwCBAgQIECAAAECBAgYhH6AAAECBAgQIECAAAECUQGDMFq82AQIECBAgAABAgQIEDAI/QABAgQIECBAgAABAgSiAgZhtHixCRAgQIAAAQIECBAgYBD6AQIECBAgQIAAAQIECEQFDMJo8WITIECAAAECBAgQIEDAIPQDBAgQIECAAAECBAgQiAoYhNHixSZAgAABAgQIECBAgIBB6AcIECBAgAABAgQIECAQFTAIo8WLTYAAAQIECBAgQIAAAYPQDxAgQIAAAQIECBAgQCAqYBBGixebAAECBAgQIECAAAECBqEfIECAAAECBAgQIECAQFTAIIwWLzYBAgQIECBAgAABAgQMQj9AgAABAgQIECBAgACBqIBBGC1ebAIECBAgQIAAAQIECBiEfoAAAQIECBAgQIAAAQJRAYMwWrzYBAgQIECAAAECBAgQMAj9AAECBAgQIECAAAECBKICBmG0eLEJECBAgAABAgQIECBgEPoBAgQIECBAgAABAgQIRAUMwmjxYhMgQIAAAQIECBAgQOAB6HkBLXgQOl0AAAAASUVORK5CYII=");
  1810. }
  1811. }
  1812. request.setAttribute("requestId", requestId);
  1813. request.setAttribute("tBRequestFeedbackList", TBRequestFeedbackEntityList);
  1814. if (StringUtil.isNotEmpty(request.getParameter("agentUserId"))) {
  1815. request.setAttribute("agentUserId", request.getParameter("agentUserId"));
  1816. } else {
  1817. Map<String, Object> rulersOne = systemService.findOneForJdbc("select rulers,user_id userId from t_b_request_rule tbrr LEFT JOIN t_b_request tbr on tbr.rule_id = tbrr.id where tbr.id = ?;", requestId);
  1818. if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) {
  1819. request.setAttribute("agentUserId", rulersOne.get("userId"));
  1820. }
  1821. }
  1822. return new ModelAndView("cn/com/lzt/sign/approve/approve-view");
  1823. }
  1824. /**
  1825. * 打开审批流程页面
  1826. *
  1827. * @param request
  1828. * @return
  1829. */
  1830. @RequestMapping(params = "goAdd")
  1831. public ModelAndView goAdd(HttpServletRequest request) {
  1832. String requestId = request.getParameter("requestId");
  1833. String type = request.getParameter("type");
  1834. String id = request.getParameter("id");
  1835. //查询上一个人的审批数据
  1836. DataGrid dataGrid = new DataGrid();
  1837. // 根据审批流id查询申请审批反馈表
  1838. CriteriaQuery cq = new CriteriaQuery(TBRequestFeedbackEntity.class, dataGrid);
  1839. TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity();
  1840. tBRequestFeedback.setRequestId(requestId);
  1841. HqlGenerateUtil.installHql(cq, tBRequestFeedback, request.getParameterMap());
  1842. try {
  1843. // 根据时间倒序
  1844. cq.addOrder("createdAt", SortDirection.desc);
  1845. } catch (Exception e) {
  1846. throw new BusinessException(e.getMessage());
  1847. }
  1848. cq.add();
  1849. this.tBRequestFeedbackService.getDataGridReturn(cq, true);
  1850. request.setAttribute("type", type);
  1851. if (StringUtil.isNotEmpty(request.getParameter("statusId"))) {
  1852. request.setAttribute("statusId", request.getParameter("statusId"));
  1853. } else {
  1854. request.setAttribute("statusId", id);
  1855. }
  1856. request.setAttribute("requestId", requestId);
  1857. if (StringUtil.isNotEmpty(request.getParameter("agentUserId"))) {
  1858. request.setAttribute("agentUserId", request.getParameter("agentUserId"));
  1859. } else {
  1860. Map<String, Object> rulersOne = systemService.findOneForJdbc("select rulers,user_id userId from t_b_request_rule tbrr LEFT JOIN t_b_request tbr on tbr.rule_id = tbrr.id where tbr.id = ?;", requestId);
  1861. if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) {
  1862. request.setAttribute("agentUserId", rulersOne.get("userId"));
  1863. }
  1864. }
  1865. if (StringUtil.isNotEmpty(request.getParameter("detailPageRequest"))) {
  1866. request.setAttribute("detailPageRequest", request.getParameter("detailPageRequest") + "&load=detail&id=" + id);
  1867. }
  1868. if (dataGrid.getResults() != null && dataGrid.getResults().size() > 0) {
  1869. request.setAttribute("tBRequestFeedback", (dataGrid.getResults()).get(0));
  1870. } else {
  1871. request.setAttribute("blog", "1");
  1872. }
  1873. return new ModelAndView("cn/com/lzt/sign/approve/approve-update");
  1874. }
  1875. /**
  1876. * 提交审批
  1877. *
  1878. * @param tBRequestFeedback 申请审批反馈表
  1879. * @param request
  1880. * @return
  1881. */
  1882. @RequestMapping(params = {"doSubmitIo"})
  1883. @ResponseBody
  1884. public AjaxJson doSubmitIo(TBRequestFeedbackEntity tBRequestFeedback, HttpServletRequest request) {
  1885. AjaxJson j = new AjaxJson();
  1886. try {
  1887. //保存审批详细数据
  1888. HttpSession session = ContextHolderUtils.getSession();
  1889. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  1890. tBRequestFeedback.setUserId(tuser.getId());
  1891. tBRequestFeedback.setCreatedAt(new Date());
  1892. this.tBRequestFeedbackService.save(tBRequestFeedback);
  1893. //取出审批流程
  1894. String id = request.getParameter("type");
  1895. TBRequestTypeRuleRelEntity tBRequestTypeRuleRel = new TBRequestTypeRuleRelEntity();
  1896. tBRequestTypeRuleRel.setId(id);
  1897. DataGrid dataGrid = new DataGrid();
  1898. CriteriaQuery cq = new CriteriaQuery(TBRequestTypeRuleRelEntity.class, dataGrid);
  1899. HqlGenerateUtil.installHql(cq, tBRequestTypeRuleRel, request.getParameterMap());
  1900. this.tBRequestTypeRuleRelService.getDataGridReturn(cq, true);
  1901. tBRequestTypeRuleRel = (TBRequestTypeRuleRelEntity) (dataGrid.getResults()).get(0);
  1902. //修改审批结果
  1903. String requestId = tBRequestFeedback.getRequestId();
  1904. TBRequestEntity tBRequestA = new TBRequestEntity();
  1905. tBRequestA.setId(requestId);
  1906. DataGrid dataGridA = new DataGrid();
  1907. CriteriaQuery cqA = new CriteriaQuery(TBRequestEntity.class, dataGridA);
  1908. HqlGenerateUtil.installHql(cqA, tBRequestA, request.getParameterMap());
  1909. this.tBRequestService.getDataGridReturn(cqA, true);
  1910. tBRequestA = (TBRequestEntity) (dataGridA.getResults()).get(0);
  1911. String CurrentRulerId = tBRequestA.getCurrentRulerId();
  1912. String ruleId = tBRequestTypeRuleRel.getRuleId();
  1913. TBRequestRuleEntity tBRequestRule = this.tBRequestRuleService.getEntity(TBRequestRuleEntity.class, ruleId);
  1914. String rules = tBRequestRule.getRulers();
  1915. List<String> ruleList = Arrays.asList(rules.split(","));
  1916. //判断下一个审批的人
  1917. String nextRole = "";
  1918. // 根据审批id查询审批日志表数据
  1919. String userId = "";
  1920. Map<String, Object> rulersOne = systemService.findOneForJdbc("select rulers,user_id userId from t_b_request_rule tbrr LEFT JOIN t_b_request tbr on tbr.rule_id = tbrr.id where tbr.id = ?;", requestId);
  1921. if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) {
  1922. userId = rulersOne.get("userId").toString();
  1923. }
  1924. if (StringUtil.isNotEmpty(userId) && StringUtil.isNotEmpty(tBRequestTypeRuleRel.getClassPath())) {
  1925. CriteriaQuery feedbackCq = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  1926. feedbackCq.eq("requestId", tBRequestFeedback.getRequestId());
  1927. feedbackCq.addOrder("createdAt", SortDirection.asc);
  1928. feedbackCq.add();
  1929. List<TBRequestFeedbackEntity> tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(feedbackCq, true);
  1930. nextRole = null;
  1931. if (tbRequestFeedbackEntityList != null && tbRequestFeedbackEntityList.size() > 0) {
  1932. int index = 0;
  1933. for (TBRequestFeedbackEntity feedBackItem : tbRequestFeedbackEntityList) {
  1934. if ("驳回".equals(feedBackItem.getFeedbackStatus())) {
  1935. index = 0;
  1936. } else if ("同意".equals(feedBackItem.getFeedbackStatus())) {
  1937. index++;
  1938. }
  1939. }
  1940. if (index >= ruleList.size()) {
  1941. // 代表已完成
  1942. tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "已通过" : "已驳回");
  1943. tBRequestA.setCurrentRulerId(nextRole);
  1944. } else {
  1945. // 代表未完成
  1946. nextRole = this.getUserRuleMap(ruleList.get(index), userId);
  1947. tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "待审批" : "已驳回");
  1948. tBRequestA.setCurrentRulerId(nextRole);
  1949. }
  1950. } else {
  1951. System.err.println("---------------------------------------根据审批id查询审批日志表数据为空-审批id为:" + tBRequestFeedback.getRequestId());
  1952. }
  1953. if (tBRequestFeedback.getFeedbackStatus().equals("同意")) {
  1954. j.setMsg("审批成功!");
  1955. } else {
  1956. j.setMsg("单据已驳回!");
  1957. }
  1958. this.tBRequestService.saveOrUpdate(tBRequestA);
  1959. String statusId = request.getParameter("statusId");
  1960. this.tBRequestService.withdrawbyClassPath(tBRequestTypeRuleRel.getClassPath(), statusId, tBRequestA.getStatus(), tBRequestFeedback.getRequestId());
  1961. } else {
  1962. for (int i = 0; i < ruleList.size(); i++) {
  1963. if (CurrentRulerId.equals(ruleList.get(i)) && i != (ruleList.size() - 1)) {
  1964. nextRole = ruleList.get(i + 1);
  1965. }
  1966. }
  1967. if ("".equals(nextRole) && "同意".equals(tBRequestFeedback.getFeedbackStatus())) {
  1968. tBRequestA.setStatus("已通过");
  1969. tBRequestA.setCurrentRulerId(nextRole);
  1970. }
  1971. if ("".equals(nextRole) && "驳回".equals(tBRequestFeedback.getFeedbackStatus())) {
  1972. tBRequestA.setStatus("已驳回");
  1973. tBRequestA.setCurrentRulerId("");
  1974. }
  1975. if (!"".equals(nextRole) && "同意".equals(tBRequestFeedback.getFeedbackStatus())) {
  1976. tBRequestA.setStatus("待审批");
  1977. tBRequestA.setCurrentRulerId(nextRole);
  1978. }
  1979. if (!"".equals(nextRole) && "驳回".equals(tBRequestFeedback.getFeedbackStatus())) {
  1980. tBRequestA.setStatus("已驳回");
  1981. tBRequestA.setCurrentRulerId("");
  1982. }
  1983. this.tBRequestService.saveOrUpdate(tBRequestA);
  1984. String statusId = request.getParameter("statusId");
  1985. this.tBRequestService.updateStatus(id, tBRequestA, statusId);
  1986. }
  1987. if(tBRequestA.getStatus().equals("已通过")){
  1988. sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_2,Globals.MSG_CONTENT_REQUEST_2,tuser.getId(),tBRequestA.getUserId());
  1989. }else if(tBRequestA.getStatus().equals("已驳回")){
  1990. sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_2,Globals.MSG_CONTENT_REQUEST_3+tBRequestFeedback.getFeedbackOpinion(),tuser.getId(),tBRequestA.getUserId());
  1991. }else if(tBRequestA.getStatus().equals("待审批")){
  1992. sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_1,Globals.MSG_CONTENT_REQUEST_1,tuser.getId(),tBRequestA.getCurrentRulerId());
  1993. }
  1994. } catch (Exception e) {
  1995. e.printStackTrace();
  1996. j.setMsg("审批失败");
  1997. throw new BusinessException(e.getMessage());
  1998. }
  1999. return j;
  2000. }
  2001. /**
  2002. * 生成当前经办人的审批权限集合
  2003. *
  2004. * @return
  2005. * @author刘梦祥
  2006. * @Date 2021年11月29日00:42:57
  2007. */
  2008. public String getUserRuleMap(String ruleType, String agentUserId) {
  2009. DataGrid dataGrid1 = new DataGrid();
  2010. dataGrid1.setRows(99999);
  2011. CriteriaQuery criteriaQuery = new CriteriaQuery(TSUserOrg.class, dataGrid1);
  2012. criteriaQuery.eq("tsUser.id", agentUserId);
  2013. criteriaQuery.add();
  2014. List<TSUserOrg> tsUserOrgList = this.systemService.getListByCriteriaQuery(criteriaQuery, true);
  2015. List<String> departidList = new ArrayList<>();
  2016. String departidStr = "";
  2017. if (tsUserOrgList != null && tsUserOrgList.size() > 0) {
  2018. for (TSUserOrg tsUserOrg : tsUserOrgList) {
  2019. departidList.add(tsUserOrg.getTsDepart().getId());
  2020. if (StringUtil.isNotEmpty(tsUserOrg.getTsDepart().getId())) {
  2021. departidStr = tsUserOrg.getTsDepart().getId();
  2022. break;
  2023. }
  2024. }
  2025. }
  2026. // update-刘梦祥-2021年12月17日11:15:06(审批流程BUG修复:用户的科室信息应该从TSUserOrg表中获取)
  2027. if (StringUtil.isNotEmpty(departidStr)) {
  2028. Map<String, String> ruleMap = new HashMap<>();
  2029. switch (ruleType) {
  2030. // 科室组长(组长)
  2031. case "groupLeader":
  2032. ruleMap.put("departId", departidStr);
  2033. ruleMap.put("inPostid", "ff8080817b760b5d017b805b3b3301de");
  2034. break;
  2035. // 安全保障科科长(科长)
  2036. case "securitySectionChief":
  2037. ruleMap.put("departId", "ff8080817b5e7d81017b62bca59a0136");
  2038. ruleMap.put("inPostid", "ff8080817b760b5d017b8057b15901c6");
  2039. break;
  2040. // 人事科科科长(科长)
  2041. case "personnelSectionChief":
  2042. ruleMap.put("departId", "ff8080817b5e7d81017b62bc58860132");
  2043. ruleMap.put("inPostid", "ff8080817b760b5d017b8057b15901c6");
  2044. break;
  2045. // 科室科长(科长)
  2046. case "sectionChief":
  2047. ruleMap.put("departId", departidStr);
  2048. if("ff8080817b5e7d81017b62bc1cb4012e".equals(departidStr)){
  2049. ruleMap.put("inPostid", "ff8080817b760b5d017b805789b201c4");
  2050. }else{
  2051. ruleMap.put("inPostid", "ff8080817b760b5d017b8057b15901c6");
  2052. }
  2053. break;
  2054. // 分管领导(根据情况确定)
  2055. case "inChargeOfTheLeadership":
  2056. // 如果是人事科或者办公室科(高总)
  2057. if ("ff8080817b5e7d81017b62bc58860132".equals(departidStr) || "ff8080817b5e7d81017b62bc1cb4012e".equals(departidStr) || "ff8080817b760b5d017b76ef38ff0018".equals(departidStr)) {
  2058. ruleMap.put("userId", "2c9e7297812325a7018141f5f9fb003b");
  2059. // 仓库科、保洁科、市场部(周总)
  2060. } else if ("ff8080817b5e7d81017b62bcff99013c".equals(departidStr) || "ff8080817b5e7d81017b62bcc47a0138".equals(departidStr) || "ff8080817b5e7d81017b62bc74480134".equals(departidStr)) {
  2061. ruleMap.put("userId", "2c9e7297812325a7018141e044cc0036");
  2062. // 安全保障科、清运科(潘总)
  2063. } else if ("ff8080817b5e7d81017b62bca59a0136".equals(departidStr) || "ff8080817b5e7d81017b62bcea8c013a".equals(departidStr)) {
  2064. ruleMap.put("userId", "2c9e7297812325a7018141f5fb120040");
  2065. }
  2066. break;
  2067. // 总经理(田总)
  2068. case "generalManager":
  2069. ruleMap.put("userId", "2c9e7297812325a7018141e043a30031");
  2070. break;
  2071. default:
  2072. ruleMap.put("userId", ruleType.substring(7));
  2073. break;
  2074. }
  2075. return JSONObject.toJSONString(ruleMap);
  2076. } else {
  2077. return null;
  2078. }
  2079. }
  2080. /**
  2081. * 提交审批
  2082. *
  2083. * @param requestId 流程id
  2084. * @param id 关联字段(操作数据id,流程日志表的id)
  2085. * @param type 流程规则
  2086. * @return AjaxJson
  2087. * @author 刘梦祥
  2088. * @Date 2021年11月24日18:19:09
  2089. */
  2090. @RequestMapping(params = {"doSubmit"})
  2091. @ResponseBody
  2092. public AjaxJson doSubmit(String requestId, String id, String type) {
  2093. // 根据审批type获取审批对照表
  2094. TBRequestTypeRuleRelEntity TBRequestTypeRuleRel = this.tBRequestTypeRuleRelService.getEntity(TBRequestTypeRuleRelEntity.class, type);
  2095. HttpSession session = ContextHolderUtils.getSession();
  2096. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  2097. AjaxJson j = new AjaxJson();
  2098. //先判断是否在审批流程中
  2099. try {
  2100. if ("".equals(requestId) || null == requestId || "undefined".equals(requestId)) {
  2101. j.setMsg("操作成功");
  2102. //插入审批进度到审批流程进度表
  2103. TBRequestEntity tBRequest = new TBRequestEntity();
  2104. String s = UUID.randomUUID().toString();
  2105. s = s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24);
  2106. tBRequest.setId(s);
  2107. tBRequest.setUserId(tuser.getId());
  2108. tBRequest.setType(TBRequestTypeRuleRel.getTypeInfo());
  2109. tBRequest.setRuleId(TBRequestTypeRuleRel.getRuleId());
  2110. tBRequest.setStatus("待审批");
  2111. Date day = new Date();
  2112. tBRequest.setDate(day);
  2113. tBRequest.setCreatedAt(day);
  2114. tBRequest.setUpdatedAt(day);
  2115. //取需要审批的userid
  2116. String ruleId = TBRequestTypeRuleRel.getRuleId();
  2117. // 根据审批对照表的ruleId获取审批流程表
  2118. TBRequestRuleEntity tBRequestRule = this.tBRequestRuleService.getEntity(TBRequestRuleEntity.class, ruleId);
  2119. // 获取审批流程
  2120. String rules = tBRequestRule.getRulers();
  2121. List<String> roleList = Arrays.asList(rules.split(","));
  2122. if ("personnelSectionChief".equals(roleList.get(0)) || "securitySectionChief".equals(roleList.get(0)) || "groupLeader".equals(roleList.get(0)) || "sectionChief".equals(roleList.get(0)) || "inChargeOfTheLeadership".equals(roleList.get(0)) || "generalManager".equals(roleList.get(0)) || roleList.get(0).contains("userId:")) {
  2123. // 将第一个审批的规则map写入到审批流程进度表
  2124. String userRuleMapStr = this.getUserRuleMap(roleList.get(0), tuser.getId());
  2125. if (userRuleMapStr != null) {
  2126. tBRequest.setCurrentRulerId(userRuleMapStr);
  2127. } else {
  2128. j.setSuccess(false);
  2129. j.setMsg("经办人缺少部门信息!");
  2130. }
  2131. } else {
  2132. // 将第一个审批的人员或部门写入到审批流程进度表
  2133. tBRequest.setCurrentRulerId(roleList.get(0));
  2134. }
  2135. this.tBRequestService.save(tBRequest);
  2136. if (TBRequestTypeRuleRel.getClassPath() != null) {
  2137. //反序列化的方式操作
  2138. this.tBRequestService.withdrawbyClassPath(TBRequestTypeRuleRel.getClassPath(), id, "待审批", tBRequest.getId());
  2139. } else {
  2140. //根据表名(TBRequestTypeRuleRel.getType())和id修改对应记录的流程id(tBRequest.getId())和状态
  2141. this.tBRequestService.updatebydate(TBRequestTypeRuleRel.getType(), id, tBRequest.getId());
  2142. }
  2143. sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_1,Globals.MSG_CONTENT_REQUEST_1,tuser.getId(),tBRequest.getCurrentRulerId());
  2144. } else {
  2145. //在流程中的
  2146. j.setSuccess(false);
  2147. j.setMsg("操作异常:该信息已经在审批流程中!");
  2148. }
  2149. } catch (Exception e) {
  2150. e.printStackTrace();
  2151. j.setSuccess(false);
  2152. j.setMsg("操作失败!" + e.getMessage());
  2153. throw new BusinessException(e.getMessage());
  2154. }
  2155. return j;
  2156. }
  2157. /**
  2158. * 撤回审批流程
  2159. *
  2160. * @param requestId 流程id
  2161. * @param id 关联字段(操作数据id,流程日志表的id)
  2162. * @param type 流程规则
  2163. * @return AjaxJson
  2164. * @author 刘梦祥
  2165. * @Date 2021年11月29日03:11:52
  2166. */
  2167. @RequestMapping(params = {"doWithdraw"})
  2168. @ResponseBody
  2169. public AjaxJson doWithdraw(String requestId, String id, String type) {
  2170. // 根据审批type获取审批对照表
  2171. TBRequestTypeRuleRelEntity TBRequestTypeRuleRel = this.tBRequestTypeRuleRelService.getEntity(TBRequestTypeRuleRelEntity.class, type);
  2172. AjaxJson j = new AjaxJson();
  2173. j.setSuccess(true);
  2174. j.setMsg("流程撤回成功!");
  2175. //先判断是否在审批流程中
  2176. try {
  2177. if (TBRequestTypeRuleRel.getClassPath() != null) {
  2178. if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) {
  2179. //反序列化的方式操作
  2180. this.tBRequestService.withdrawbyClassPath(TBRequestTypeRuleRel.getClassPath(), id, "待提交", null);
  2181. this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId);
  2182. CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  2183. criteriaQuery.eq("requestId", requestId);
  2184. criteriaQuery.add();
  2185. List<TBRequestFeedbackEntity> tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true);
  2186. if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) {
  2187. for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) {
  2188. this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId());
  2189. }
  2190. }
  2191. } else {
  2192. j.setSuccess(true);
  2193. j.setMsg("流程撤回失败,没有找到流程id!");
  2194. }
  2195. } else {
  2196. if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) {
  2197. this.tBRequestService.delbydate(TBRequestTypeRuleRel.getType(), id, requestId);
  2198. this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId);
  2199. CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  2200. criteriaQuery.eq("requestId", requestId);
  2201. criteriaQuery.add();
  2202. List<TBRequestFeedbackEntity> tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true);
  2203. if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) {
  2204. for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) {
  2205. this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId());
  2206. }
  2207. }
  2208. } else {
  2209. j.setSuccess(true);
  2210. j.setMsg("流程撤回失败,没有找到流程id!");
  2211. }
  2212. }
  2213. } catch (Exception e) {
  2214. e.printStackTrace();
  2215. j.setSuccess(false);
  2216. j.setMsg("流程撤回失败:" + e.getMessage());
  2217. }
  2218. return j;
  2219. }
  2220. /**
  2221. * 作废审批流程
  2222. *
  2223. * @param requestId 流程id
  2224. * @param id 关联字段(操作数据id,流程日志表的id)
  2225. * @param type 流程规则
  2226. * @return AjaxJson
  2227. * @author dugc
  2228. * @Date 2021年01月04日03:11:52
  2229. */
  2230. @RequestMapping(params = {"doVoid"})
  2231. @ResponseBody
  2232. public AjaxJson doVoid(String requestId, String id, String type) {
  2233. // 根据审批type获取审批对照表
  2234. TBRequestTypeRuleRelEntity TBRequestTypeRuleRel = this.tBRequestTypeRuleRelService.getEntity(TBRequestTypeRuleRelEntity.class, type);
  2235. AjaxJson j = new AjaxJson();
  2236. j.setSuccess(true);
  2237. j.setMsg("流程作废成功!");
  2238. //先判断是否在审批流程中
  2239. try {
  2240. if (TBRequestTypeRuleRel.getClassPath() != null) {
  2241. if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) {
  2242. //反序列化的方式操作
  2243. this.tBRequestService.withdrawbyClassPath(TBRequestTypeRuleRel.getClassPath(), id, "已作废", null);
  2244. this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId);
  2245. CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  2246. criteriaQuery.eq("requestId", requestId);
  2247. criteriaQuery.add();
  2248. List<TBRequestFeedbackEntity> tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true);
  2249. if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) {
  2250. for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) {
  2251. this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId());
  2252. }
  2253. }
  2254. } else {
  2255. j.setSuccess(true);
  2256. j.setMsg("流程作废失败,没有找到流程id!");
  2257. }
  2258. } else {
  2259. if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) {
  2260. this.tBRequestService.delbydate(TBRequestTypeRuleRel.getType(), id, requestId);
  2261. this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId);
  2262. CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid());
  2263. criteriaQuery.eq("requestId", requestId);
  2264. criteriaQuery.add();
  2265. List<TBRequestFeedbackEntity> tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true);
  2266. if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) {
  2267. for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) {
  2268. this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId());
  2269. }
  2270. }
  2271. } else {
  2272. j.setSuccess(true);
  2273. j.setMsg("流程作废失败,没有找到流程id!");
  2274. }
  2275. }
  2276. } catch (Exception e) {
  2277. e.printStackTrace();
  2278. j.setSuccess(false);
  2279. j.setMsg("流程作废失败:" + e.getMessage());
  2280. }
  2281. return j;
  2282. }
  2283. }