package cn.com.lzt.sign.controller; import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto; import cn.com.lzt.post.entity.PostEntity; import cn.com.lzt.sign.entity.*; import cn.com.lzt.sign.service.TBRequestFeedbackService; import cn.com.lzt.sign.service.TBRequestRuleService; import cn.com.lzt.sign.service.TBRequestService; import cn.com.lzt.sign.service.TBRequestTypeRuleRelService; import cn.com.lzt.sysmsg.entity.SysMsgEntity; import cn.com.lzt.sysmsg.service.SysMsgServiceI; import cn.com.lzt.sysmsgdetail.entity.SysMsgDetailEntity; import cn.com.lzt.sysmsgdetail.service.SysMsgDetailServiceI; import cn.com.lzt.useractiviti.data.controller.ActivitiToolsController; import cn.com.lzt.useroptions.entity.TBusUserOptionsEntity; import com.alibaba.fastjson.JSONObject; import com.daju.common.util.Result; import org.apache.commons.lang.StringUtils; import org.hibernate.criterion.Restrictions; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.exception.BusinessException; import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery; import org.jeecgframework.core.common.model.json.*; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil; import org.jeecgframework.core.util.*; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.tag.vo.datatable.SortDirection; import org.jeecgframework.web.system.pojo.base.TSBaseUser; import org.jeecgframework.web.system.pojo.base.TSDepart; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.pojo.base.TSUserOrg; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.text.SimpleDateFormat; import java.util.*; import java.util.logging.Logger; @Controller @RequestMapping("/tBRequestController") public class TBRequestController extends BaseController { private static final Logger logger = Logger.getLogger(String.valueOf(TBRequestController.class)); @Autowired private TBRequestService tBRequestService; @Autowired private TBRequestTypeRuleRelService tBRequestTypeRuleRelService; @Autowired private TBRequestRuleService tBRequestRuleService; @Autowired private TBRequestFeedbackService tBRequestFeedbackService; @Autowired private SystemService systemService; // add-刘梦祥-2022年8月5日14:31:50(签报业务添加系统消息提示) @Autowired private SysMsgServiceI sysMsgService; SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); /** * 申请表列表 页面跳转 * * @return */ @RequestMapping(params = "list") public ModelAndView list(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/sign/tBRequest/tBRequestList"); } /** * 签名板 页面跳转 * * @return */ @RequestMapping(params = "goToSignature") public ModelAndView goToSignature(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/sign/approve/signature"); } /** * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid */ @RequestMapping(params = "datagrid") public void datagrid(TBRequestEntity tBRequest, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(TBRequestEntity.class, dataGrid); //查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tBRequest); /*try{ //自定义追加查询条件 TSUser user = ResourceUtil.getSessionUser(); cq.add(Restrictions.eq("createBy",user.getUserName())); }catch (Exception e) { throw new BusinessException(e.getMessage()); }*/ cq.add(); this.tBRequestService.getDataGridReturn(cq, true); TagUtil.datagrid(response, dataGrid); } /** * 返回limit条件 * * @param pagination * @return * @author 刘梦祥 * @Date 2021年12月21日18:32:27 */ public String getLimitStr(Pagination pagination) { int limitA = (pagination.getCurrentPage() - 1) * pagination.getPageSize(); int limitB = (pagination.getCurrentPage()) * pagination.getPageSize(); return "LIMIT " + limitA + "," + limitB + ";"; } /** * 返回字段对照集合 * * @param prop * @return * @author 刘梦祥 * @Date 2021年12月21日18:32:27 */ public List> getPropsByprop(Map prop) { List> props = new ArrayList<>(); if (prop.size() > 0) { for (String key : prop.keySet()) { Map propItem = new HashMap<>(); propItem.put("name", key); propItem.put("label", prop.get(key)); props.add(propItem); } } return props; } /** * 返回异常对象 * * @param responseJson 结果集 * @param msg 提示信息 * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月22日15:54:20 */ public ResponseJson returnErrorResponseJson(ResponseJson responseJson, String msg) { responseJson.setSuccess(false); responseJson.setData(null); responseJson.setCode(500); responseJson.setMsg(msg); return responseJson; } /** * 判断并封装排序条件 * * @param request * @param prop * @param sqlStr * @author 刘梦祥 * @Date 2021年12月21日18:32:27 */ public String sortToSql(HttpServletRequest request, Map prop, String sqlStr) { if (StringUtil.isNotEmpty(request.getParameter("sortColumn")) && StringUtil.isNotEmpty(request.getParameter("sort"))) { if (prop.containsKey(request.getParameter("sortColumn")) && ("ASC".equals(request.getParameter("sort").toUpperCase()) || "DESC".equals(request.getParameter("sort").toUpperCase()))) { sqlStr += "ORDER BY " + request.getParameter("sortColumn") + " " + request.getParameter("sort") + "\n"; } else { System.err.println("排序参数接收错误!可接收参数:" + prop.keySet() + ";传入参数:" + request.getParameter("sortColumn") + ";可接收排序方式:[DESC,ASC];排序方式:" + request.getParameter("sort") + ";将取消排序"); } } return sqlStr; } /** * 返回物料申购基本信息 * * @param responseJson * @param mapresult * @param requestId * @author 刘梦祥 * @Data 2021年12月27日10:13:13 */ public void getMaterialMaintenanceData(ResponseJson responseJson, Map mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\ttbm.id tableId,\n" + "\ttbw.warehouse_name storehouse,\n" + "\ttbm.create_name manager,\n" + "\tDATE_FORMAT(tbm.material_date,'%Y-%m-%d') date,\n" + "\ttbm.material_remarks description\n" + "FROM\n" + "\tt_b_material tbm\n" + "LEFT JOIN t_b_warehouse tbw ON tbw.id = tbm.material_warehouse_id\n" + "WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { mapresult.put("detail", selectTableData); responseJson.setData(mapresult); if (selectTableData.containsKey("tableId")) { String selectTableInfoSql = "SELECT\n" + "\ttbgi.goods_name goodsName,\n" + "\ttt.typename baseUnit,\n" + "\ttbgi.specification specification,\n" + "\tgt.category_name goodsType,\n" + "\ttbmi.material_info_num number,\n" + "\tDATE_FORMAT(tbmi.create_date,'%Y-%m-%d %H:%I:%s') times,\n" + "\ttbmi.material_info_remarks infoRemark\n" + "FROM\n" + "\tt_b_material_info tbmi\n" + "LEFT JOIN t_b_goods_info tbgi ON tbgi.id = tbmi.material_info_goods_id\n" + "LEFT JOIN (\n" + "\tSELECT\n" + "\t\t*\n" + "\tFROM\n" + "\t\tt_s_type\n" + "\tWHERE\n" + "\t\ttypegroupid = (\n" + "\t\t\tSELECT\n" + "\t\t\t\tid\n" + "\t\t\tFROM\n" + "\t\t\t\tt_s_typegroup\n" + "\t\t\tWHERE\n" + "\t\t\t\ttypegroupcode = \"metering_calcu_unit\"\n" + "\t\t)\n" + ") tt ON tt.typecode = tbgi.base_unit\n" + "LEFT JOIN t_b_goods_category gt ON gt.category_code = tbgi.belong_category\n" + "WHERE\n" + "\ttbmi.material_id = ?;"; List> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, selectTableData.get("tableId")); mapresult.put("detailInfo", selectTableInfoData); responseJson.setData(mapresult); } } else { returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!"); } } /** * 根据classPath和审批id获取tableId * * @param classPath * @param requestId * @author 刘梦祥 * @Data 2021年12月27日14:03:50 */ public String getTableIdByClassPathAndRequest(String classPath, String requestId) { // 得到操作表名 String[] classNameList = classPath.split("\\."); String classNameA = classNameList[classNameList.length - 1]; String tableName = ""; switch (classNameA) { case "TBusActivitiOvertimeEntity": tableName = "t_bus_activiti_overtime"; break; case "TBusActivitiOvertimeAuditEntity": tableName = "t_bus_activiti_overtime_audit"; break; case "TBusActivitiOvertimeVacationEntity": tableName = "t_bus_activiti_overtime_vacation"; break; case "TBAssetsEntity": tableName = "t_b_assets"; break; case "TBBeforehandEntity": tableName = "t_b_beforehand"; break; case "TBMaterialEntity": tableName = "t_b_material"; break; case "TBMessageEntity": tableName = "t_b_message"; break; case "TBOfficeEntity": tableName = "t_b_office"; break; case "TBSealEntity": tableName = "t_b_seal"; break; case "TBSupervisionEntity": tableName = "t_b_supervision"; break; default: System.out.println("根据classPath对照tableName失败,没有对应的tabelName,classPath:" + classNameA); break; } Map tableinfo = systemService.findOneForJdbc("select id tableId from " + tableName + " where request_id = ? ;", requestId); if (tableinfo != null && tableinfo.containsKey("tableId")) { return String.valueOf(tableinfo.get("tableId")); } else { return null; } } /** * 返回加班申请基本信息 * * @param responseJson * @param mapresult * @param requestId * @author 刘梦祥 * @Data 2021年12月27日10:51:13 */ public void getActivitiOverTimeData(ResponseJson responseJson, Map mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\ttbao.id tableId,\n" + "\ttbao.attachment attachment,\n" + "\ttbao.user_count people_number,\n" + "\ttbao.depart_id departmentId,\n" + "\ttsd.departname department,\n" + "\n" + "IF (\n" + "\ttbao.overtime_settlement_type = 1,\n" + "\t'按照工时',\n" + "\t'按照吨数'\n" + ") pay_type,\n" + " tbao.total_hour total_time,\n" + " tbao.total_tons total_weight,\n" + " tbao.reason reason\n" + "FROM\n" + "\tt_bus_activiti_overtime tbao\n" + "LEFT JOIN t_s_depart tsd ON tsd.id = tbao.depart_id\n" + "WHERE\n" + "\ttbao.request_id = ?;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { mapresult.put("detail", selectTableData); responseJson.setData(mapresult); if (selectTableData.containsKey("tableId")) { String selectTableInfoSql = "SELECT\n" + "\ttbaod.real_name overtimeUser,\n" + "\ttst.typename overtimeType,\n" + "\ttbaod.start_time overtimeStartTime,\n" + "\ttbaod.end_time overtimeEndTime,\n" + "tbaod.pickup_truck_number pickupTruckNumber,\n" + "tbaod.keep_up_ton_number keepUpTonNumber,\n" + "\tTIMESTAMPDIFF(\n" + "\t\tHOUR,\n" + "\t\ttbaod.start_time,\n" + "\t\ttbaod.end_time\n" + "\t) overtimeTotalTime,\n" + "\n" + "IF (\n" + "\ttst.typename = \"周末值班\" && tbaod.compensate = \"exchange\",\n" + "\t\"调休\",\n" + "\t\"加班费\"\n" + ") compensate,\n" + " tbaod.remark reason\n" + "FROM\n" + "\tt_bus_activiti_overtime_detail tbaod\n" + "LEFT JOIN (\n" + "\tSELECT\n" + "\t\t*\n" + "\tFROM\n" + "\t\tt_s_type\n" + "\tWHERE\n" + "\t\ttypegroupid = (\n" + "\t\t\tSELECT\n" + "\t\t\t\tid\n" + "\t\t\tFROM\n" + "\t\t\t\tt_s_typegroup\n" + "\t\t\tWHERE\n" + "\t\t\t\ttypegroupcode = \"overtime_type\"\n" + "\t\t)\n" + ") tst ON tst.typecode = tbaod.overtime_type\n" + "where tbaod.overtime_id = ?;"; List> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, selectTableData.get("tableId")); mapresult.put("detailInfo", selectTableInfoData); responseJson.setData(mapresult); } } else { returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!"); } } /** * 返回加班审核基本信息 * * @param responseJson * @param mapresult * @param requestId * @author 刘梦祥 * @Data 2021年12月27日10:51:13 */ public void getActivitiOverTimeAuditData(ResponseJson responseJson, Map mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\ttbao.id tableId,\n" + "\ttbao.user_count people_number,\n" + "\ttbao.create_name manager,\n" + "\ttbao.depart_id departmentId,\n" + "\ttsd.departname department,\n" + "\n" + "IF (\n" + "\ttbao.overtime_settlement_type = 1,\n" + "\t'按照工时',\n" + "\t'按照吨数'\n" + ") pay_type,\n" + " tbao.total_hour total_time,\n" + " tbao.total_tons total_weight,\n" + " tbao.reason reason,\n" + " tbao.attachment attachment\n" + "FROM\n" + "\tt_bus_activiti_overtime_audit tbaoa\n" + "LEFT JOIN t_bus_activiti_overtime tbao on tbao.id = tbaoa.overtime_ids\n" + "LEFT JOIN t_s_depart tsd ON tsd.id = tbao.depart_id\n" + "WHERE\n" + "\ttbaoa.request_id = ?;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { mapresult.put("detail", selectTableData); responseJson.setData(mapresult); if (selectTableData.containsKey("tableId")) { String selectTableInfoSql = "SELECT\n" + "\ttbaod.real_name overtimeUser,\n" + "\ttst.typename overtimeType,\n" + "\ttbaod.start_time overtimeStartTime,\n" + "\ttbaod.end_time overtimeEndTime,\n" + "tbaod.pickup_truck_number pickupTruckNumber,\n" + "tbaod.keep_up_ton_number keepUpTonNumber,\n" + "\tTIMESTAMPDIFF(\n" + "\t\tHOUR,\n" + "\t\ttbaod.start_time,\n" + "\t\ttbaod.end_time\n" + "\t) overtimeTotalTime,\n" + "\n" + "IF (\n" + "\ttst.typename = \"周末值班\" && tbaod.compensate = \"exchange\",\n" + "\t\"调休\",\n" + "\t\"加班费\"\n" + ") compensate,\n" + " tbaod.remark reason\n" + "FROM\n" + "\tt_bus_activiti_overtime_detail tbaod\n" + "LEFT JOIN (\n" + "\tSELECT\n" + "\t\t*\n" + "\tFROM\n" + "\t\tt_s_type\n" + "\tWHERE\n" + "\t\ttypegroupid = (\n" + "\t\t\tSELECT\n" + "\t\t\t\tid\n" + "\t\t\tFROM\n" + "\t\t\t\tt_s_typegroup\n" + "\t\t\tWHERE\n" + "\t\t\t\ttypegroupcode = \"overtime_type\"\n" + "\t\t)\n" + ") tst ON tst.typecode = tbaod.overtime_type\n" + "where tbaod.overtime_id = ?;"; List> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, selectTableData.get("tableId")); mapresult.put("detailInfo", selectTableInfoData); responseJson.setData(mapresult); } } else { returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!"); } } /** * 返回休假申请基本信息 * * @param responseJson * @param mapresult * @param requestId * @author 刘梦祥 * @Data 2021年12月27日13:03:15 */ public void getActivitiOverTimeVacationData(ResponseJson responseJson, Map mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\ttbaov.id tableId,\n" + "\ttsbu.realname manager,\n" + "\ttsd.departname department,\n" + "\ttbaov.attachment attachment,\n" + "\ttbaov.other_text otherText,\n" + "\ttype.typename type,\n" + "\ttbaov.vacation_start_date start_time,\n" + "\ttbaov.vacation_end_date end_time,\n" + "\tTIMESTAMPDIFF(\n" + "\t\tHOUR,\n" + "\t\ttbaov.vacation_start_date,\n" + "\t\ttbaov.vacation_end_date\n" + "\t) total_time,\n" + "\tTIMESTAMPDIFF(\n" + "\t\tYEAR,\n" + "\t\ttsu.employment_date,\n" + "\t\tNOW()\n" + "\t) serve_year,\n" + "\ttbaov.remake reason\n" + "FROM\n" + "\tt_bus_activiti_overtime_vacation tbaov\n" + "LEFT JOIN (\n" + "\tSELECT\n" + "\t\t*\n" + "\tFROM\n" + "\t\tt_s_type\n" + "\tWHERE\n" + "\t\ttypegroupid = (\n" + "\t\t\tSELECT\n" + "\t\t\t\tid\n" + "\t\t\tFROM\n" + "\t\t\t\tt_s_typegroup\n" + "\t\t\tWHERE\n" + "\t\t\t\ttypegroupcode = \"rest_type\"\n" + "\t\t)\n" + ") type ON type.typecode = tbaov.vacation_type\n" + "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbaov.user_id\n" + "LEFT JOIN t_s_user tsu ON tsu.id = tsbu.id\n" + "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.ID\n" + "LEFT JOIN t_s_depart tsd ON tsd.id = tsuo.org_id\n" + "WHERE\n" + "\trequest_id = ?;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { mapresult.put("detail", selectTableData); responseJson.setData(mapresult); } else { returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!"); } } /** * 微信小程序审批流暴露接口1(根据用户ID,获取所有提交过审批的申请人) * * @param request * @param pagination * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月21日16:33:26 */ @GetMapping(params = "getAllRequestData") @ResponseBody public ResponseJson getAllRequestData(HttpServletRequest request, Pagination pagination) { // 初始化返回实体 ResponseJson responseJson = new ResponseJson(); // 初始化字段对照实体 List> props = new ArrayList<>(); // 初始化查询sql对象 String sqlStr = ""; try { // 初始化字段对照集合 Map prop = new HashMap<>(); prop.put("userId", "用户id"); prop.put("realName", "用户名"); prop.put("orgId", "科室id"); prop.put("departName", "科室名称"); // 将字段对照集合转换为字段对照实体 props = getPropsByprop(prop); // 初始化查询sql sqlStr = "SELECT\n" + "\ttbr.user_id userId,\n" + "\ttsbu.realname realName,\n" + "\ttsuo.org_id orgId,\n" + "\ttsd.departname departName\n" + "FROM\n" + "\tt_b_request tbr\n" + "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbr.user_id\n" + "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.id\n" + "LEFT JOIN t_s_depart tsd ON tsd.id = tsuo.org_id where tsbu.delete_flag = '0' \n"; // 判断并封装查询条件 if (StringUtil.isNotEmpty(request.getParameter("realName"))) { sqlStr += "and tsbu.realname like '%" + request.getParameter("realName") + "%'\n"; } else if (StringUtil.isNotEmpty(request.getParameter("userId"))) { sqlStr += "and tsbu.id like '%" + request.getParameter("userId") + "%'\n"; } // 根据userId去重 sqlStr += "GROUP BY tbr.user_id \n"; // 判断并封装排序条件 sqlStr = sortToSql(request, prop, sqlStr); // 初始化总条数sql String sqlTotal = sqlStr; // 根据pagination对象封装分页条件 sqlStr += getLimitStr(pagination); // 执行sql得到总条数 List total = systemService.findListbySql(sqlTotal); // 将得到的总条数返回给pagination对象 pagination.setTotal(total.size()); // 执行查询sql List> mapresult = systemService.findForJdbc(sqlStr, pagination.getCurrentPage(), pagination.getPageSize()); if (mapresult != null && mapresult.size() > 0) { // 将得到的数据返回给pagination对象 responseJson.setData(mapresult); } else { responseJson.setMsg("没有该用户的审批提交记录!"); } } catch (Exception e) { System.err.println("根据用户ID,获取所有提交过审批的申请人Exception" + e.getLocalizedMessage() + "\nsql:\n" + sqlStr); returnErrorResponseJson(responseJson, e.getMessage()); } responseJson.setProps(props); responseJson.setPagination(pagination); return responseJson; } /** * 微信小程序审批流暴露接口2(获取所有审批类型) * * @param pagination * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月22日13:16:28 */ @GetMapping(params = "getAllRequestType") @ResponseBody public ResponseJson getAllRequestType(Pagination pagination) { // 初始化返回实体 ResponseJson responseJson = new ResponseJson(); // 初始化字段对照实体 List> props = new ArrayList<>(); // 初始化查询sql对象 String sqlStr = ""; try { // 初始化字段对照集合 Map prop = new HashMap<>(); prop.put("id", "审批类型id"); prop.put("typeName", "审批类型"); prop.put("description", "审批流程"); // 将字段对照集合转换为字段对照实体 props = getPropsByprop(prop); // 初始化查询sql sqlStr = "SELECT\n" + "\tid,\n" + "\t`name` typeName,\n" + "\tdescription\n" + "FROM\n" + "\tt_b_request_rule\n"; // 初始化总条数sql String sqlTotal = sqlStr; // 根据pagination对象封装分页条件 sqlStr += getLimitStr(pagination); // 执行sql得到总条数 List total = systemService.findListbySql(sqlTotal); // 将得到的总条数返回给pagination对象 pagination.setTotal(total.size()); // 执行查询sql List> mapresult = systemService.findForJdbc(sqlStr, pagination.getCurrentPage(), pagination.getPageSize()); // 将得到的数据返回给pagination对象 responseJson.setData(mapresult); } catch (Exception e) { System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage() + "\nsql:\n" + sqlStr); returnErrorResponseJson(responseJson, e.getMessage()); } responseJson.setProps(props); responseJson.setPagination(pagination); return responseJson; } /** * 微信小程序审批流暴露接口3(根据用户id,获取申请列表) * * @param request * @param pagination * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月22日13:39:52 */ @GetMapping(params = "getAllRequestList") @ResponseBody public ResponseJson getAllRequestList(HttpServletRequest request, Pagination pagination) { // 初始化返回实体 ResponseJson responseJson = new ResponseJson(); // 初始化字段对照实体 List> props = new ArrayList<>(); // 初始化查询sql对象 String sqlStr = ""; try { if (StringUtil.isNotEmpty(request.getParameter("loginUserId")) && StringUtil.isNotEmpty(request.getParameter("pageType"))) { // 初始化字段对照集合 Map prop = new HashMap<>(); prop.put("id", "审批id"); prop.put("type", "审批类型"); prop.put("tableName", "操作对照表名"); prop.put("status", "审批状态"); prop.put("invoker_name", "申请人姓名"); prop.put("userId", "申请人id"); prop.put("feedbackStatus", "审批结果"); prop.put("created_at", "申请时间"); prop.put("timeBegin", "查询申请时间开始时间"); prop.put("timeEnd", "查询申请时间结束时间"); prop.put("detail", "审批表单详情"); prop.put("reason", "申请原因"); // 将字段对照集合转换为字段对照实体 props = getPropsByprop(prop); sqlStr = "SELECT\n" + "\ttbr.id requestId,\n" + "\ttbrtrr.type tableName,\n" + "\ttbr.type type,\n" + "\ttbrf.feedback_status feedbackStatus,\n" + "\ttbr.`status` `status`,\n" + "\ttsbu.realname invoker_name,\n" + "\ttbr.user_id userId,\n" + "\ttbr.created_at created_at\n" + "FROM\n" + "\tt_b_request_feedback tbrf\n" + "RIGHT JOIN t_b_request tbr ON tbr.id = tbrf.request_id\n" + "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbr.user_id\n" + "LEFT JOIN t_b_request_type_rule_rel tbrtrr ON tbrtrr.rule_id = tbr.rule_id\n"; // 判断并封装查询条件 sqlStr += "where "; // 初始化查询sql switch (request.getParameter("pageType")) { case "待处理": // 首先根据小程序登录用户的userid得到科室和职位 String sql = "SELECT\n" + "\ttsbu.id loginUserId,\n" + "\ttsuo.org_id orgId,\n" + "\ttbup.in_postid inPostId\n" + "FROM\n" + "\tt_s_base_user tsbu\n" + "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.id\n" + "LEFT JOIN t_bus_user_personnel tbup ON tbup.userid = tsuo.user_id\n" + "WHERE\n" + "\ttsbu.id = ?;"; Map uopData = systemService.findOneForJdbc(sql, request.getParameter("loginUserId")); if (uopData != null) { sqlStr += "tbr.`status` = \"待审批\"\n" + "AND tbr.current_ruler_id IN (\n" + "\t'{\"userId\":\"" + request.getParameter("loginUserId") + "\"}',\n" + "\t'{\"departId\":\"" + uopData.get("orgId") + "\",\"inPostid\":\"" + uopData.get("inPostId") + "\"}'\n" + ") and "; } break; case "已处理": sqlStr += "tbrf.user_id = \"" + request.getParameter("loginUserId") + "\" and "; break; case "已提交": sqlStr += "tbr.user_id = \"" + request.getParameter("loginUserId") + "\" and "; break; default: // 全部 String sqlAll = "SELECT\n" + "\ttsbu.id loginUserId,\n" + "\ttsuo.org_id orgId,\n" + "\ttbup.in_postid inPostId\n" + "FROM\n" + "\tt_s_base_user tsbu\n" + "LEFT JOIN t_s_user_org tsuo ON tsuo.user_id = tsbu.id\n" + "LEFT JOIN t_bus_user_personnel tbup ON tbup.userid = tsuo.user_id\n" + "WHERE\n" + "\ttsbu.id = ?;"; Map uopDataAll = systemService.findOneForJdbc(sqlAll, request.getParameter("loginUserId")); if (uopDataAll != null) { sqlStr += "tbr.current_ruler_id IN (\n" + "\t'{\"userId\":\"" + request.getParameter("loginUserId") + "\"}',\n" + "\t'{\"departId\":\"" + uopDataAll.get("orgId") + "\",\"inPostid\":\"" + uopDataAll.get("inPostId") + "\"}'\n" + ") or "; } sqlStr += "tbrf.user_id = \"" + request.getParameter("loginUserId") + "\" or "; sqlStr += "tbr.user_id LIKE \"%" + request.getParameter("loginUserId") + "%\" and "; break; } for (String key : prop.keySet()) { if (StringUtil.isNotEmpty(request.getParameter(key))) { switch (key) { case "userId": sqlStr += "tbr.user_id LIKE \"%" + request.getParameter(key) + "%\" and "; break; case "type": sqlStr += "tbr.type LIKE \"%" + request.getParameter(key) + "%\" and "; break; case "status": sqlStr += "tbr.`status` LIKE \"%" + request.getParameter(key) + "%\" and "; break; case "timeBegin": sqlStr += "date_format(tbr.created_at,'%Y-%m-%d') BETWEEN \"" + request.getParameter(key) + "\" and \"" + request.getParameter(key.substring(0, key.length() - 5) + "End") + "\" and "; break; default: break; } } } sqlStr = sqlStr.substring(0, sqlStr.length() - 4); sqlStr += " GROUP BY tbr.id \n"; // 判断并封装排序条件 sqlStr = sortToSql(request, prop, sqlStr); // 初始化总条数sql String sqlTotal = sqlStr; // 根据pagination对象封装分页条件 sqlStr += getLimitStr(pagination); // 执行sql得到总条数 List total = systemService.findListbySql(sqlTotal); // 将得到的总条数返回给pagination对象 pagination.setTotal(total.size()); // 执行查询sql List> mapresult = systemService.findForJdbc(sqlStr, pagination.getCurrentPage(), pagination.getPageSize()); if (mapresult != null && mapresult.size() > 0) { for (Map mapItem : mapresult) { if (mapItem.containsKey("tableName") && mapItem.get("tableName") != null && mapItem.containsKey("requestId") && mapItem.get("requestId") != null) { // 申请表名 String formTableName = ""; // 备注字段名 String remakeColumn = ""; switch (String.valueOf(mapItem.get("tableName"))) { // 加班申请 case "t_bus_activiti_overtime": formTableName = "t_bus_activiti_overtime"; remakeColumn = "reason"; break; // 加班审核 case "t_bus_activiti_overtime_audit": formTableName = "t_bus_activiti_overtime_audit"; remakeColumn = "remake"; break; // 休假签报 case "t_bus_activiti_overtime_vacation": formTableName = "t_bus_activiti_overtime_vacation"; remakeColumn = "remake"; break; // 物料申购(维修类和非维修类) case "t_b_material_maintenance": case "t_b_material_un_maintenance": formTableName = "t_b_material"; mapItem.put("tableName", formTableName); remakeColumn = "material_remarks"; break; // 用印 case "t_b_seal": formTableName = "t_b_seal"; remakeColumn = "seal_reason"; break; // 资产申购 case "t_b_assets": formTableName = "t_b_assets"; remakeColumn = "assets_remarks"; break; // 事前 case "t_b_beforehand": formTableName = "t_b_beforehand"; remakeColumn = "beforehand_reason"; break; // 办公 case "t_b_office": formTableName = "t_b_office"; remakeColumn = "office_cont"; break; // 消息 case "t_b_message": formTableName = "t_b_message"; remakeColumn = "message_title"; break; // 督查奖惩 case "t_b_supervision": formTableName = "t_b_supervision"; remakeColumn = "supervision_pro_cont"; break; default: System.err.println("审批规则表对应失败!"); break; } if (StringUtil.isNotEmpty(formTableName)) { String selectTableSql = "select * from " + formTableName + " where request_id = ? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, mapItem.get("requestId")); if (selectTableData != null && selectTableData.containsKey(remakeColumn) && selectTableData.get(remakeColumn) != null) { Map remakes = new HashMap<>(); remakes.put("reason", String.valueOf(selectTableData.get(remakeColumn))); mapItem.put("detail", remakes); } } } } } // 将得到的数据返回给pagination对象 responseJson.setData(mapresult); } else { System.err.println("缺少必须参数loginUserId、pageType!"); returnErrorResponseJson(responseJson, "缺少必须参数loginUserId、pageType!"); } } catch (Exception e) { System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage() + "\nsql:\n" + sqlStr); returnErrorResponseJson(responseJson, e.getMessage()); } responseJson.setProps(props); responseJson.setPagination(pagination); return responseJson; } /** * 微信小程序审批流暴露接口4(根据申请id获取申请详情) * * @param request * @param pagination * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月22日15:14:10 */ @GetMapping(params = "getRequestInfoById") @ResponseBody public ResponseJson getRequestInfoById(HttpServletRequest request, Pagination pagination) { // 初始化返回实体 ResponseJson responseJson = new ResponseJson(); // 初始化字段对照实体 List> props = new ArrayList<>(); // 初始化查询sql对象 String sqlStr = ""; try { // 初始化字段对照集合 Map prop = new HashMap<>(); prop.put("requestId", "审批id"); prop.put("tableName", "操作对照表名"); prop.put("type", "审批类型"); prop.put("status", "审批状态"); prop.put("name", "申请人姓名"); prop.put("userId", "申请人id"); prop.put("time", "申请时间"); // 初始化查询sql sqlStr = "SELECT\n" + "\ttbr.id requestId,\n" + "\ttbrtrr.type tableName,\n" + "\ttbr.type type,\n" + "\ttbr.`status` `status`,\n" + "\ttsbu.realname `name`,\n" + "\ttbr.user_id userId,\n" + "\ttbr.created_at time\n" + "FROM\n" + "\tt_b_request tbr\n" + "LEFT JOIN t_s_base_user tsbu ON tsbu.id = tbr.user_id\n" + "LEFT JOIN t_b_request_type_rule_rel tbrtrr ON tbrtrr.rule_id = tbr.rule_id\n"; // 判断并封装查询条件 if (StringUtil.isNotEmpty(request.getParameter("requestId"))) { sqlStr += "where tbr.id =\"" + request.getParameter("requestId") + "\" \n"; // 判断并封装排序条件 sqlStr = sortToSql(request, prop, sqlStr); // 初始化总条数sql String sqlTotal = sqlStr; // 根据pagination对象封装分页条件 sqlStr += getLimitStr(pagination); // 执行sql得到总条数 List total = systemService.findListbySql(sqlTotal); // 将得到的总条数返回给pagination对象 pagination.setTotal(total.size()); // 执行查询sql Map mapresult = new HashMap<>(); Map infoData = systemService.findOneForJdbc(sqlStr); // 写入基本信息 mapresult.put("baseInfo", infoData); if (infoData != null && infoData.containsKey("tableName") && infoData.get("tableName") != null) { switch (String.valueOf(infoData.get("tableName"))) { // 加班申请 case "t_bus_activiti_overtime": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.department", "科室"); prop.put("detail.people_number", "加班人数合计"); prop.put("detail.pay_type", "加班结算方式"); prop.put("detail.total_time", "加班时长总计"); prop.put("detail.total_weight", "加班吨数总计"); prop.put("detail.reason", "加班原因"); prop.put("detail.attachment", "附件"); // 详细信息列表字段对照 prop.put("detailInfo.overtimeUser", "加班员工"); prop.put("detailInfo.overtimeType", "加班类型"); prop.put("detailInfo.overtimeStartTime", "加班开始时间"); prop.put("detailInfo.overtimeEndTime", "加班结束时间"); prop.put("detailInfo.overtimeTotalTime", "加班时长"); prop.put("detailInfo.pickupTruckNumber", "清运车数"); prop.put("detailInfo.keepUpTonNumber", "清运吨数"); prop.put("detailInfo.compensate", "补偿方式"); prop.put("detailInfo.reason", "备注"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); // 查询详情信息 getActivitiOverTimeData(responseJson, mapresult, request.getParameter("requestId")); break; // 加班审核 case "t_bus_activiti_overtime_audit": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.manager", "制单人"); prop.put("detail.department", "科室"); prop.put("detail.people_number", "加班人数合计"); prop.put("detail.pay_type", "加班结算方式"); prop.put("detail.total_time", "加班时长总计"); prop.put("detail.total_weight", "加班吨数总计"); prop.put("detail.attachment", "附件"); prop.put("detail.reason", "加班原因"); // 详细信息列表字段对照 prop.put("detailInfo.overtimeUser", "加班员工"); prop.put("detailInfo.overtimeType", "加班类型"); prop.put("detailInfo.overtimeStartTime", "加班开始时间"); prop.put("detailInfo.overtimeEndTime", "加班结束时间"); prop.put("detailInfo.overtimeTotalTime", "加班时长"); prop.put("detailInfo.pickupTruckNumber", "清运车数"); prop.put("detailInfo.keepUpTonNumber", "清运吨数"); prop.put("detailInfo.compensate", "补偿方式"); prop.put("detailInfo.reason", "备注"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getActivitiOverTimeAuditData(responseJson, mapresult, request.getParameter("requestId")); break; // 休假签报 case "t_bus_activiti_overtime_vacation": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.manager", "休假员工"); prop.put("detail.department", "科室"); prop.put("detail.serve_year", "工龄"); prop.put("detail.type", "休假类型"); prop.put("detail.start_time", "休假开始时间"); prop.put("detail.end_time", "休假结束时间"); prop.put("detail.total_time", "休假总时长"); prop.put("detail.reason", "休假原因"); prop.put("detail.attachment", "附件"); prop.put("detail.otherText", "休假类型描述"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getActivitiOverTimeVacationData(responseJson, mapresult, request.getParameter("requestId")); break; // 物料申购(维修类和非维修类) case "t_b_material_maintenance": case "t_b_material_un_maintenance": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.storehouse", "仓库"); prop.put("detail.manager", "经办人"); prop.put("detail.date", "申请日期"); prop.put("detail.description", "备注说明"); // 详细信息列表字段对照 prop.put("detailInfo.goodsName", "货品名称"); prop.put("detailInfo.baseUnit", "计量单位"); prop.put("detailInfo.specifications", "规格型号"); prop.put("detailInfo.goodsType", "货品分类"); prop.put("detailInfo.number", "数量"); prop.put("detailInfo.times", "请购时间"); prop.put("detailInfo.infoRemark", "备注"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); // 查询详情信息 getMaterialMaintenanceData(responseJson, mapresult, request.getParameter("requestId")); break; // TODO:请补充其他申请类型的对照 // 资产申购 case "t_b_assets": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.assets_date", "申购日期"); prop.put("detail.assets_dapt_id", "科室id"); prop.put("detail.assets_dept", "科室"); prop.put("detail.assets_username", "经办人"); prop.put("detail.assets_remarks", "备注"); // prop.put("detail.assets_cont", "子表信息"); //详细信息 prop.put("detailinfo.assets_info_goodsname", "货品名称"); prop.put("detailinfo.assets_info_measure", "计量单位"); prop.put("detailinfo.assets_info_model", "规格型号"); prop.put("detailinfo.assets_info_num", "数量"); prop.put("detailinfo.assets_info_remarks", "备注信息"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getAssetsData(responseJson, mapresult, request.getParameter("requestId")); break; // 用印 case "t_b_seal": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.seal_dept", "科室"); prop.put("detail.seal_dept_id", "科室id"); prop.put("detail.seal_type", "用印类别"); prop.put("detail.seal_type_id", "用印类别id"); prop.put("detail.seal_maindept", "主送单位"); prop.put("detail.seal_username", "经办人"); prop.put("detail.seal_file", "用印文件"); prop.put("detail.seal_date", "用印日期"); prop.put("detail.seal_num", "用印份数"); prop.put("detail.seal_num_china", "份数(大写)"); prop.put("detail.seal_reason", "用印事由"); prop.put("detail.seal_file_url", "附件路径"); prop.put("detail.seal_filename", "附件名称"); prop.put("detail.attachment", "附件"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getSealData(responseJson, mapresult, request.getParameter("requestId")); break; // 事前 case "t_b_beforehand": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.beforehand_dept", "科室"); prop.put("detail.beforehand_dept_id", "科室id"); prop.put("detail.beforehand_receive_user", "接待员工"); prop.put("detail.beforehand_post", "职务"); prop.put("detail.beforehand_station", "岗位"); prop.put("detail.beforehand_accompany_user", "陪同员工"); prop.put("detail.beforehand_receive_dapt", "招待单位"); prop.put("detail.beforehand_start_date", "招待开始时间"); prop.put("detail.beforehand_end_date", "招待结束时间"); prop.put("detail.beforehand_day", "招待天数"); prop.put("detail.beforehand_reason", "招待事由"); prop.put("detail.beforehand_file_url", "附件路径"); prop.put("detail.beforehand_filename", "附件名称"); prop.put("detail.attachment", "附件"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getBeforehandData(responseJson, mapresult, request.getParameter("requestId")); break; // 消息 case "t_b_message": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.message_title", "标题"); prop.put("detail.message_range_dept", "发送范围"); // prop.put("detail.message_range_dept", "发送范围部门名称"); prop.put("detail.message_range_dept_id", "发送范围部门ids"); prop.put("detail.message_mode", "发送方式"); prop.put("detail.message_date_type", "发送时间类型"); prop.put("detail.message_type", "通知类型"); prop.put("detail.message_cont", "内容"); prop.put("detail.message_send", "是否发送"); prop.put("detail.message_file_url", "附件路径"); prop.put("detail.message_filename", "附件名称"); prop.put("detail.attachment", "附件"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getMessageData(responseJson, mapresult, request.getParameter("requestId")); break; // 办公 case "t_b_office": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.create_date", "申请日期"); prop.put("detail.office_dept", "科室"); prop.put("detail.office_dept_id", "科室id"); prop.put("detail.office_travel_user", "公务出行人员"); prop.put("detail.office_drive_user", "驾驶人员"); prop.put("detail.office_address", "公务活动地点"); prop.put("detail.office_start_date", "公务活动开始时间"); prop.put("detail.office_end_date", "公务活动结束时间"); prop.put("detail.office_day", "公务活动总天数"); prop.put("detail.office_cont", "公务活动内容"); prop.put("detail.office_file_url", "附件路径"); prop.put("detail.office_filename", "附件名称"); prop.put("detail.attachment", "附件"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getOfficeData(responseJson, mapresult, request.getParameter("requestId")); break; // 督查奖惩 case "t_b_supervision": // 附加字段对照集合 prop.put("detail.tableId", "操作表id"); prop.put("detail.supervision_bill_id", "督查单据id"); prop.put("detail.supervision_bill_code", "督查单据编码"); prop.put("detail.supervision_bill_date", "督查单据日期"); prop.put("detail.supervision_bill_user", "督查单据人员"); prop.put("detail.supervision_bill_region", "督查单据区域"); prop.put("detail.supervision_type", "业务类型"); prop.put("detail.supervision_address", "问题作业位置"); prop.put("detail.supervision_pro_cont", "问题描述"); prop.put("detail.supervision_one_img_url", "问题照片路径1"); prop.put("detail.supervision_two_img_url", "问题照片路径2"); prop.put("detail.supervision_three_img_url", "问题照片路径3"); prop.put("detail.supervision_duty_user", "责任人"); prop.put("detail.supervision_class_user", "班组长"); prop.put("detail.supervision_cont", "奖惩内容"); prop.put("detail.supervision_res_type", "奖惩类型"); prop.put("detail.supervision_res", "奖惩处理"); // 将字段对照集合添加到对照实体 props = getPropsByprop(prop); getSupervisionData(responseJson, mapresult, request.getParameter("requestId")); break; default: System.err.println("审批规则表对应失败!"); break; } } else { returnErrorResponseJson(responseJson, "审批类型查询失败!"); } } else { returnErrorResponseJson(responseJson, "缺少参数requestId!"); } } catch (Exception e) { System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage()); returnErrorResponseJson(responseJson, e.getMessage()); } responseJson.setProps(props); responseJson.setPagination(pagination); return responseJson; } private void getSupervisionData(ResponseJson responseJson, Map mapresult, String requestId) { String selectTableSql = " SELECT \n" + " id tableId, \n" + " supervision_bill_id, \n" + " supervision_bill_code, \n" + " DATE_FORMAT(supervision_bill_date,'%Y-%m-%d') supervision_bill_date, \n" + " (select realname from t_s_base_user where id = supervision_bill_user) supervision_bill_user, \n" + " supervision_bill_region, \n" + " supervision_type, \n" + " supervision_address, \n" + " supervision_pro_cont, \n" + " supervision_one_img_url, \n" + " supervision_two_img_url, \n" + " supervision_three_img_url, \n" + " (select realname from t_s_base_user where id = supervision_duty_user) supervision_duty_user, \n" + " (select realname from t_s_base_user where id = supervision_class_user) supervision_class_user, \n" + " supervision_cont, \n" + " supervision_res_type, \n" + " supervision_res \n" + " FROM \n" + " t_b_supervision " + " WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { mapresult.put("detail", selectTableData); responseJson.setData(mapresult); } else { returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!"); } } private void getMessageData(ResponseJson responseJson, Map mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\tid tableId,\n" + "\tmessage_title,\n" + //"\tmessage_range,\n" + "\tmessage_range_dept,\n" + "\tmessage_range_dept_id,\n" + "\tmessage_mode,\n" + "\tmessage_date_type,\n" + "\tmessage_type,\n" + "\tmessage_cont,\n" + "\tmessage_send,\n" + "\tmessage_file_url,\n" + "\tmessage_filename \n" + "FROM\n" + "\tt_b_message" + " WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { if(selectTableData.get("message_file_url")!=null){ String[] sealFileUrl = (String.valueOf(selectTableData.get("message_file_url"))).split(","); String[] sealFilename = (String.valueOf(selectTableData.get("message_filename"))).split(","); String attachment = "["; for(int i=0;i mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\tid tableId,\n" + "\toffice_dept,\n" + "\toffice_dept_id,\n" + "\toffice_travel_user,\n" + "\toffice_drive_user,\n" + "\toffice_address,\n" + "\t DATE_FORMAT(office_start_date,'%Y-%m-%d') office_start_date,\n" + "\t DATE_FORMAT(office_end_date,'%Y-%m-%d') office_end_date,\n" + "\toffice_day,\n" + "\toffice_cont,\n" + "\toffice_file_url,\n" + "\toffice_filename, \n" + "\t DATE_FORMAT(create_date,'%Y-%m-%d') create_date \n" + "FROM\n" + "\tt_b_office" + " WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { if(selectTableData.get("office_file_url")!=null){ String[] sealFileUrl = (String.valueOf(selectTableData.get("office_file_url"))).split(","); String[] sealFilename = (String.valueOf(selectTableData.get("office_filename"))).split(","); String attachment = "["; for(int i=0;i mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\tid tableId,\n" + "\tbeforehand_dept,\n" + "\tbeforehand_dept_id,\n" + "\tbeforehand_receive_user,\n" + "\tbeforehand_post,\n" + "\tbeforehand_station,\n" + "\tbeforehand_accompany_user,\n" + "\tbeforehand_receive_dapt,\n" + "\t DATE_FORMAT(beforehand_start_date,'%Y-%m-%d') beforehand_start_date,\n" + "\t DATE_FORMAT(beforehand_end_date,'%Y-%m-%d') beforehand_end_date,\n" + "\tbeforehand_day,\n" + "\tbeforehand_reason,\n" + "\tbeforehand_file_url,\n" + "\tbeforehand_filename \n" + "FROM\n" + "\tt_b_beforehand" + " WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { if(selectTableData.get("beforehand_file_url")!=null){ String[] sealFileUrl = (String.valueOf(selectTableData.get("beforehand_file_url"))).split(","); String[] sealFilename = (String.valueOf(selectTableData.get("beforehand_filename"))).split(","); String attachment = "["; for(int i=0;i mapresult, String requestId) { String selectTableSql = "SELECT\n" + "\tid tableId,\n" + "\tseal_dept,\n" + "\tseal_dept_id,\n" + "\t (select typename from t_s_type where typecode = seal_type_id) seal_type,\n" + "\tseal_type_id,\n" + "\tseal_maindept,\n" + "\tseal_username,\n" + "\tseal_file,\n" + "\t DATE_FORMAT(seal_date,'%Y-%m-%d') seal_date,\n" + "\tseal_num,\n" + "\tseal_num_china,\n" + "\tseal_reason,\n" + "\tseal_file_url,\n" + "\tseal_filename \n" + "FROM\n" + "\tt_b_seal" + " WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); if (selectTableData != null) { if(selectTableData.get("seal_file_url")!=null){ String[] sealFileUrl = (String.valueOf(selectTableData.get("seal_file_url"))).split(","); String[] sealFilename = (String.valueOf(selectTableData.get("seal_filename"))).split(","); String attachment = "["; for(int i=0;i mapresult, String requestId) { //主表 String selectTableSql = "\tselect id tableId, DATE_FORMAT(assets_date,'%Y-%m-%d') assets_date,assets_dapt_id, " + "\tassets_dept,assets_username,assets_remarks from t_b_assets " + "WHERE\n" + "\trequest_id =? ;"; Map selectTableData = systemService.findOneForJdbc(selectTableSql, requestId); //详情 if (selectTableData != null) { String selectTableInfoSql = " SELECT assets_info_goodsname,\n" + " assets_info_measure,\n" + " assets_info_model,\n" + " assets_info_num,\n" + " assets_info_remarks\n" + " FROM t_b_assets_info where assets_id =?"; List> selectTableInfoData = systemService.findForJdbc(selectTableInfoSql, String.valueOf(selectTableData.get("tableId"))); if (selectTableInfoData != null) { mapresult.put("detailInfo", selectTableInfoData); responseJson.setData(mapresult); } } if (selectTableData != null) { mapresult.put("detail", selectTableData); responseJson.setData(mapresult); } else { returnErrorResponseJson(responseJson, "未查询到申请表单的基本信息,请检查流程是否已通过或该表单已被删除!"); } } /** * 微信小程序审批流暴露接口5(根据申请id获取申请流程) * * @param request * @param pagination * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月22日15:29:39 */ @GetMapping(params = "getRequestById") @ResponseBody public ResponseJson getRequestById(HttpServletRequest request, Pagination pagination) { // 初始化返回实体 ResponseJson responseJson = new ResponseJson(); // 初始化字段对照实体 List> props = new ArrayList<>(); // 初始化查询sql对象 String sqlStr = ""; try { List tbRequestFeedbackEntityArrayList = new ArrayList<>(); List> mapresult = new ArrayList<>(); String requestId = ""; if (StringUtil.isNotEmpty(request.getParameter("requestId"))) { requestId = request.getParameter("requestId"); // 初始化字段对照集合 Map prop = new HashMap<>(); prop.put("name", "审批人姓名"); prop.put("image", "审批人头像"); prop.put("requestId", "审批id"); prop.put("content", "审批意见"); prop.put("time", "审批时间"); prop.put("deny", "是否拒绝"); // 将字段对照集合转换为字段对照实体 props = getPropsByprop(prop); // 根据流程id得到对应流程规则的流程明细 Map 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); if (rulersOne != null && rulersOne.containsKey("rulers") && StringUtil.isNotEmpty(rulersOne.get("rulers")) && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) { String rulers = String.valueOf(rulersOne.get("rulers")); List ruleList = Arrays.asList(rulers.split(",")); List> 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); if (requestInfoList != null) { int index = 0; boolean returenStatus = false; for (Map feedBackItem : requestInfoList) { TBRequestFeedbackEntity tbRequestFeedbackEntity = new TBRequestFeedbackEntity(); tbRequestFeedbackEntity.setUserId(String.valueOf(feedBackItem.get("realname"))); tbRequestFeedbackEntity.setId(String.valueOf(feedBackItem.get("id"))); tbRequestFeedbackEntity.setRequestId(String.valueOf(feedBackItem.get("request_id"))); tbRequestFeedbackEntity.setFeedbackStatus(String.valueOf(feedBackItem.get("feedback_status"))); tbRequestFeedbackEntity.setFeedbackOpinion(String.valueOf(feedBackItem.get("feedback_opinion"))); tbRequestFeedbackEntity.setSignatureBaseUrl(String.valueOf(feedBackItem.get("signature_base_url"))); if (feedBackItem.get("created_at") != null) { tbRequestFeedbackEntity.setCreatedAt(simpleDateFormat.parse(String.valueOf(feedBackItem.get("created_at")))); } else { tbRequestFeedbackEntity.setCreatedAt(null); } if ("驳回".equals(feedBackItem.get("feedback_status"))) { index++; returenStatus = true; } else if ("同意".equals(feedBackItem.get("feedback_status"))) { index++; } tbRequestFeedbackEntityArrayList.add(tbRequestFeedbackEntity); } if (index < ruleList.size()) { // 代表未完成 for (int i = index; i < ruleList.size(); i++) { // 暂存科室id String departId = ""; String inPostid = ""; TBRequestFeedbackEntity tbRequestFeedbackEntity = new TBRequestFeedbackEntity(); tbRequestFeedbackEntity.setFeedbackStatus(returenStatus ? "流程驳回,待经办人确认,并执行其他操作" : "待审批"); String userRuleMapStr = this.getUserRuleMap(ruleList.get(i), String.valueOf(rulersOne.get("userId"))); if (StringUtil.isNotEmpty(userRuleMapStr)) { JSONObject userRuleObj = JSONObject.parseObject(userRuleMapStr); if (userRuleObj.containsKey("departId") && userRuleObj.containsKey("inPostid")) { departId = userRuleObj.get("departId").toString(); inPostid = userRuleObj.get("inPostid").toString(); // 根据科室和职位查询用户 CriteriaQuery criteriaQuery1 = new CriteriaQuery(UserAndUserPersonnelDto.class, new DataGrid()); criteriaQuery1.eq("inPostid", userRuleObj.get("inPostid").toString()); criteriaQuery1.add(); List userAndUserPersonnelDtoList = this.systemService.getListByCriteriaQuery(criteriaQuery1, true); if (userAndUserPersonnelDtoList != null && userAndUserPersonnelDtoList.size() > 0) { userAndUserPersonnelDtoList.get(0).getRealname(); for (UserAndUserPersonnelDto userDto : userAndUserPersonnelDtoList) { List> 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")); if (userJoinList != null && userJoinList.size() > 0) { for (Map tsItem : userJoinList) { String oldUserId = StringUtil.isNotEmpty(tbRequestFeedbackEntity.getUserId()) ? tbRequestFeedbackEntity.getUserId() + "-" : ""; tbRequestFeedbackEntity.setUserId(oldUserId + tsItem.get("realname")); String oldUserImage = StringUtil.isNotEmpty(tbRequestFeedbackEntity.getImage()) ? tbRequestFeedbackEntity.getImage() + "-" : ""; tbRequestFeedbackEntity.setImage(oldUserImage + tsItem.get("image")); } } } } } else if (userRuleObj.containsKey("userId")) { Map 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()); if (userItem.containsKey("realname")) { tbRequestFeedbackEntity.setUserId(userItem.get("realname").toString()); if (userItem.get("image") != null) { tbRequestFeedbackEntity.setImage(userItem.get("image").toString()); } } else { tbRequestFeedbackEntity.setUserId(null); } } } if (StringUtil.isEmpty(tbRequestFeedbackEntity.getUserId())) { TSDepart tsDepart = this.systemService.getEntity(TSDepart.class, departId); PostEntity postEntity = this.systemService.getEntity(PostEntity.class, inPostid); tbRequestFeedbackEntity.setUserId("系统暂无该职位用户!部门:" + tsDepart.getDepartname() + ";岗位:" + postEntity.getPostName() + "!"); } tbRequestFeedbackEntityArrayList.add(tbRequestFeedbackEntity); } } // 将实体类转换为微信小程序识别的数据结构 if (tbRequestFeedbackEntityArrayList.size() > 0) { for (TBRequestFeedbackEntity tbRequestFeedbackEntity : tbRequestFeedbackEntityArrayList) { Map resultItem = new HashMap<>(); resultItem.put("name", tbRequestFeedbackEntity.getUserId()); resultItem.put("image", tbRequestFeedbackEntity.getImage()); resultItem.put("requestId", tbRequestFeedbackEntity.getRequestId()); resultItem.put("content", tbRequestFeedbackEntity.getFeedbackOpinion()); resultItem.put("time", tbRequestFeedbackEntity.getCreatedAt()); if(tbRequestFeedbackEntity.getSignatureBaseUrl() == null){ 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="); } resultItem.put("signatureBaseUrl", tbRequestFeedbackEntity.getSignatureBaseUrl()); resultItem.put("deny", tbRequestFeedbackEntity.getFeedbackStatus() != null ? "驳回".equals(tbRequestFeedbackEntity.getFeedbackStatus()) : null); mapresult.add(resultItem); } } // 将得到的数据返回给pagination对象 responseJson.setData(mapresult); } else { returnErrorResponseJson(responseJson, "未查询到流程id为" + requestId + "的审批记录。"); } } else { returnErrorResponseJson(responseJson, "未查询到流程id为" + requestId + "的审批规则。"); } } else { returnErrorResponseJson(responseJson, "缺少参数requestId"); } } catch (Exception e) { System.err.println("获取所有审批类型Exception:" + e.getLocalizedMessage()); returnErrorResponseJson(responseJson, e.getMessage()); } responseJson.setProps(props); responseJson.setPagination(pagination); return responseJson; } /** * 微信小程序审批流暴露接口6(提交审批意见) * * @param requestDto * @return ResponseJson * @author 刘梦祥 * @Date 2021年12月22日19:15:53 */ @PostMapping(params = "putRequest") @ResponseBody @Transactional(rollbackFor = Exception.class) public ResponseJson putRequest(RequestDto requestDto) { // 初始化返回实体 ResponseJson responseJson = new ResponseJson(); try { if (requestDto != null && requestDto.getDeny() != null && requestDto.getRequestId() != null && requestDto.getContent() != null && requestDto.getUserId() != null && requestDto.getSignatureBaseUrl() != null) { requestDto.setContent(new String(requestDto.getContent().getBytes("ISO-8859-1"),"UTF-8")); TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity(); //保存审批详细数据 tBRequestFeedback.setId(UUID.randomUUID().toString()); tBRequestFeedback.setUserId(requestDto.getUserId()); tBRequestFeedback.setRequestId(requestDto.getRequestId()); tBRequestFeedback.setFeedbackStatus(requestDto.getDeny() ? "驳回" : "同意"); tBRequestFeedback.setFeedbackOpinion(requestDto.getContent()); tBRequestFeedback.setCreatedAt(new Date()); tBRequestFeedback.setSignatureBaseUrl(requestDto.getSignatureBaseUrl()); // 根据审批id查询对应classPath和rulers Map 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()); if (rulersOne != null && rulersOne.containsKey("classPath") && rulersOne.containsKey("rulers") && rulersOne.get("classPath") != null && rulersOne.get("rulers") != null && rulersOne.containsKey("currentRulerId") && rulersOne.get("currentRulerId") != null) { // 验证该用户是否有审批权限 JSONObject currentRulerIdObj = JSONObject.parseObject(String.valueOf(rulersOne.get("currentRulerId"))); Boolean currentRulerStatus = null; if (currentRulerIdObj.containsKey("userId")) { if (requestDto.getUserId().equals(currentRulerIdObj.get("userId"))) { currentRulerStatus = true; } else { currentRulerStatus = false; } } else if (currentRulerIdObj.containsKey("inPostid") && currentRulerIdObj.containsKey("departId")) { 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 = ?;"; List> currentRulerUserList = systemService.findForJdbc(currentRulerUserListSql, requestDto.getUserId(), currentRulerIdObj.get("departId"), currentRulerIdObj.get("inPostid")); if (currentRulerUserList != null && currentRulerUserList.size() > 0) { currentRulerStatus = true; } else { currentRulerStatus = false; } } else { currentRulerStatus = false; } if (currentRulerStatus) { TBRequestEntity tBRequestA = systemService.getEntity(TBRequestEntity.class, requestDto.getRequestId()); if ("待审批".equals(tBRequestA.getStatus())) { String rules = String.valueOf(rulersOne.get("rulers")); List ruleList = Arrays.asList(rules.split(",")); //判断下一个审批的人 String nextRole = ""; // 根据审批id查询审批日志表数据 CriteriaQuery feedbackCq = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); feedbackCq.eq("requestId", tBRequestFeedback.getRequestId()); feedbackCq.addOrder("createdAt", SortDirection.asc); feedbackCq.add(); List tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(feedbackCq, true); nextRole = null; int index = 1; for (TBRequestFeedbackEntity feedBackItem : tbRequestFeedbackEntityList) { if ("驳回".equals(feedBackItem.getFeedbackStatus())) { index = 1; } else if ("同意".equals(feedBackItem.getFeedbackStatus())) { index++; } } if (index >= ruleList.size()) { // 代表已完成 tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "已通过" : "已驳回"); tBRequestA.setCurrentRulerId(nextRole); } else { // 代表未完成 nextRole = this.getUserRuleMap(ruleList.get(index), requestDto.getUserId()); tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "待审批" : "已驳回"); tBRequestA.setCurrentRulerId(nextRole); } if (tBRequestFeedback.getFeedbackStatus().equals("同意")) { responseJson.setMsg("审批成功!"); } else { responseJson.setMsg("单据已驳回!"); } // 根据classPath和审批id获取tableId String tableId = getTableIdByClassPathAndRequest(String.valueOf(rulersOne.get("classPath")), tBRequestFeedback.getRequestId()); if (tableId != null && StringUtil.isNotEmpty(tableId)) { systemService.save(tBRequestFeedback); this.tBRequestService.saveOrUpdate(tBRequestA); this.tBRequestService.withdrawbyClassPath(String.valueOf(rulersOne.get("classPath")), tableId, tBRequestA.getStatus(), tBRequestFeedback.getRequestId()); } else { System.err.println("该审批流未查询到对应的表单id,请刷新后重试!"); returnErrorResponseJson(responseJson, "该审批流未查询到对应的表单id,请刷新后重试!"); } } else { System.err.println("该审批流状态为:" + tBRequestA.getStatus() + ",请刷新后重试!"); returnErrorResponseJson(responseJson, "该审批流状态为:" + tBRequestA.getStatus() + ",请刷新后重试!"); } } else { System.err.println("该用户没有审批权限!"); returnErrorResponseJson(responseJson, "该用户没有审批权限!"); } } else { System.err.println("根据审批id查询信息失败rulersOne:" + rulersOne); returnErrorResponseJson(responseJson, "根据审批id查询信息失败rulersOne:" + rulersOne); } } else { System.err.println("缺少必传参数:requestDto:" + requestDto); returnErrorResponseJson(responseJson, "缺少必传参数:requestDto:" + requestDto); } } catch (Exception e) { System.err.println("提交审批意见Exception:" + e.getLocalizedMessage()); returnErrorResponseJson(responseJson, e.getMessage()); } return responseJson; } /** * 根据流程id查询得到所有的审批记录 * * @param request * @param response * @param dataGrid */ @RequestMapping(params = "goodsdatagrid") public void goodsdatagrid(HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { String requestId = request.getParameter("requestId"); CriteriaQuery cq = new CriteriaQuery(TBRequestFeedbackEntity.class, dataGrid); TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity(); tBRequestFeedback.setRequestId(requestId); HqlGenerateUtil.installHql(cq, tBRequestFeedback, request.getParameterMap()); try { cq.eq("requestId", requestId); cq.addOrder("createdAt", SortDirection.asc); } catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); List TBRequestFeedbackEntityList = this.tBRequestFeedbackService.getListByCriteriaQuery(cq, true); String userId = ""; Map 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); if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) { userId = rulersOne.get("userId").toString(); } // 显示所有的待审批流程 if (StringUtil.isNotEmpty(userId)) { CriteriaQuery feedbackCq = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); feedbackCq.eq("requestId", tBRequestFeedback.getRequestId()); feedbackCq.addOrder("createdAt", SortDirection.asc); feedbackCq.add(); List tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(feedbackCq, true); CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestEntity.class, new DataGrid()); criteriaQuery.eq("id", tBRequestFeedback.getRequestId()); criteriaQuery.add(); List TBRequestEntityList = this.systemService.getListByCriteriaQuery(criteriaQuery, true); TBRequestRuleEntity tBRequestRule = this.tBRequestRuleService.getEntity(TBRequestRuleEntity.class, TBRequestEntityList.get(0).getRuleId()); String rules = tBRequestRule.getRulers(); List ruleList = Arrays.asList(rules.split(",")); int index = 0; boolean returenStatus = false; if (tbRequestFeedbackEntityList != null && tbRequestFeedbackEntityList.size() > 0) { for (TBRequestFeedbackEntity feedBackItem : tbRequestFeedbackEntityList) { // add-刘梦祥-2022年5月9日10:39:42(添加角色名称) if(ruleList.get(index).contains("userId")){ TBRequestFeedbackEntityList.get(index).setRequestUserRole(ruleList.get(index).substring(7)); }else{ TBRequestFeedbackEntityList.get(index).setRequestUserRole(ruleList.get(index)); } if ("驳回".equals(feedBackItem.getFeedbackStatus())) { // update-刘梦祥-2021年12月3日11:11:26(就算是用户驳回,也不会重新显示下面的数据) index++; returenStatus = true; } else if ("同意".equals(feedBackItem.getFeedbackStatus())) { index++; } } } if (index < ruleList.size()) { // 代表未完成 for (int i = index; i < ruleList.size(); i++) { // 暂存科室id String departId = ""; String inPostid = ""; TBRequestFeedbackEntity tbRequestFeedbackEntity = new TBRequestFeedbackEntity(); tbRequestFeedbackEntity.setFeedbackStatus(returenStatus ? "流程驳回,待经办人确认,并执行其他操作" : "待审批"); // add-刘梦祥-2022年5月9日10:39:42(添加角色名称) tbRequestFeedbackEntity.setRequestUserRole(ruleList.get(i)); if(ruleList.get(i).contains("userId")){ tbRequestFeedbackEntity.setRequestUserRole(ruleList.get(i).substring(7)); }else{ tbRequestFeedbackEntity.setRequestUserRole(ruleList.get(i)); } String userRuleMapStr = this.getUserRuleMap(ruleList.get(i), userId); if (StringUtil.isNotEmpty(userRuleMapStr)) { JSONObject userRuleObj = JSONObject.parseObject(userRuleMapStr); if (userRuleObj.containsKey("departId") && userRuleObj.containsKey("inPostid")) { departId = userRuleObj.get("departId").toString(); inPostid = userRuleObj.get("inPostid").toString(); // 根据科室和职位查询用户 CriteriaQuery criteriaQuery1 = new CriteriaQuery(UserAndUserPersonnelDto.class, new DataGrid()); criteriaQuery1.eq("inPostid", userRuleObj.get("inPostid").toString()); criteriaQuery1.add(); List userAndUserPersonnelDtoList = this.systemService.getListByCriteriaQuery(criteriaQuery1, true); if (userAndUserPersonnelDtoList != null && userAndUserPersonnelDtoList.size() > 0) { userAndUserPersonnelDtoList.get(0).getRealname(); for (UserAndUserPersonnelDto userDto : userAndUserPersonnelDtoList) { CriteriaQuery criteriaQuery2 = new CriteriaQuery(TSBaseUser.class, new DataGrid()); criteriaQuery2.eq("id", userDto.getUserid()); criteriaQuery2.eq("departid", userRuleObj.get("departId")); criteriaQuery2.add(); List tsBaseUserList = this.systemService.getListByCriteriaQuery(criteriaQuery2, true); if (tsBaseUserList != null && tsBaseUserList.size() > 0) { for (TSBaseUser tsItem : tsBaseUserList) { String oldUserId = StringUtil.isNotEmpty(tbRequestFeedbackEntity.getUserId()) ? tbRequestFeedbackEntity.getUserId() + "-" : ""; tbRequestFeedbackEntity.setUserId(oldUserId + tsItem.getRealName()); } } } } } else if (userRuleObj.containsKey("userId")) { tbRequestFeedbackEntity.setUserId(userRuleObj.get("userId").toString()); } if(StringUtils.isEmpty(tbRequestFeedbackEntity.getSignatureBaseUrl())){ 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="); } } if (StringUtil.isEmpty(tbRequestFeedbackEntity.getUserId())) { TSDepart tsDepart = this.systemService.getEntity(TSDepart.class, departId); PostEntity postEntity = this.systemService.getEntity(PostEntity.class, inPostid); tbRequestFeedbackEntity.setUserId("系统暂无该职位用户!部门:" + tsDepart.getDepartname() + ";岗位:" + postEntity.getPostName() + "!"); } TBRequestFeedbackEntityList.add(tbRequestFeedbackEntity); } } } dataGrid.setResults(null); dataGrid.setResults(TBRequestFeedbackEntityList); dataGrid.setTotal(TBRequestFeedbackEntityList.size()); TagUtil.datagrid(response, dataGrid); } /** * 查看流程 * * @param request * @return */ @RequestMapping(params = "goUpdate") public ModelAndView goUpdate(HttpServletRequest request) { // 获取审批流程id String requestId = request.getParameter("requestId"); DataGrid dataGrid = new DataGrid(); CriteriaQuery cq = new CriteriaQuery(TBRequestFeedbackEntity.class, dataGrid); TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity(); tBRequestFeedback.setRequestId(requestId); HqlGenerateUtil.installHql(cq, tBRequestFeedback, request.getParameterMap()); // 查询审批流程进度的日志 try { cq.eq("requestId", requestId); cq.addOrder("createdAt", SortDirection.asc); } catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); List TBRequestFeedbackEntityList = this.tBRequestFeedbackService.getListByCriteriaQuery(cq, true); for (TBRequestFeedbackEntity TBRequestFeedbackEntityItem : TBRequestFeedbackEntityList){ if(TBRequestFeedbackEntityItem.getSignatureBaseUrl() == null){ 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="); } } request.setAttribute("requestId", requestId); request.setAttribute("tBRequestFeedbackList", TBRequestFeedbackEntityList); if (StringUtil.isNotEmpty(request.getParameter("agentUserId"))) { request.setAttribute("agentUserId", request.getParameter("agentUserId")); } else { Map 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); if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) { request.setAttribute("agentUserId", rulersOne.get("userId")); } } return new ModelAndView("cn/com/lzt/sign/approve/approve-view"); } /** * 打开审批流程页面 * * @param request * @return */ @RequestMapping(params = "goAdd") public ModelAndView goAdd(HttpServletRequest request) { String requestId = request.getParameter("requestId"); String type = request.getParameter("type"); String id = request.getParameter("id"); //查询上一个人的审批数据 DataGrid dataGrid = new DataGrid(); // 根据审批流id查询申请审批反馈表 CriteriaQuery cq = new CriteriaQuery(TBRequestFeedbackEntity.class, dataGrid); TBRequestFeedbackEntity tBRequestFeedback = new TBRequestFeedbackEntity(); tBRequestFeedback.setRequestId(requestId); HqlGenerateUtil.installHql(cq, tBRequestFeedback, request.getParameterMap()); try { // 根据时间倒序 cq.addOrder("createdAt", SortDirection.desc); } catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.tBRequestFeedbackService.getDataGridReturn(cq, true); request.setAttribute("type", type); if (StringUtil.isNotEmpty(request.getParameter("statusId"))) { request.setAttribute("statusId", request.getParameter("statusId")); } else { request.setAttribute("statusId", id); } request.setAttribute("requestId", requestId); if (StringUtil.isNotEmpty(request.getParameter("agentUserId"))) { request.setAttribute("agentUserId", request.getParameter("agentUserId")); } else { Map 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); if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) { request.setAttribute("agentUserId", rulersOne.get("userId")); } } if (StringUtil.isNotEmpty(request.getParameter("detailPageRequest"))) { request.setAttribute("detailPageRequest", request.getParameter("detailPageRequest") + "&load=detail&id=" + id); } if (dataGrid.getResults() != null && dataGrid.getResults().size() > 0) { request.setAttribute("tBRequestFeedback", (dataGrid.getResults()).get(0)); } else { request.setAttribute("blog", "1"); } return new ModelAndView("cn/com/lzt/sign/approve/approve-update"); } /** * 提交审批 * * @param tBRequestFeedback 申请审批反馈表 * @param request * @return */ @RequestMapping(params = {"doSubmitIo"}) @ResponseBody public AjaxJson doSubmitIo(TBRequestFeedbackEntity tBRequestFeedback, HttpServletRequest request) { AjaxJson j = new AjaxJson(); try { //保存审批详细数据 HttpSession session = ContextHolderUtils.getSession(); TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER"); tBRequestFeedback.setUserId(tuser.getId()); tBRequestFeedback.setCreatedAt(new Date()); this.tBRequestFeedbackService.save(tBRequestFeedback); //取出审批流程 String id = request.getParameter("type"); TBRequestTypeRuleRelEntity tBRequestTypeRuleRel = new TBRequestTypeRuleRelEntity(); tBRequestTypeRuleRel.setId(id); DataGrid dataGrid = new DataGrid(); CriteriaQuery cq = new CriteriaQuery(TBRequestTypeRuleRelEntity.class, dataGrid); HqlGenerateUtil.installHql(cq, tBRequestTypeRuleRel, request.getParameterMap()); this.tBRequestTypeRuleRelService.getDataGridReturn(cq, true); tBRequestTypeRuleRel = (TBRequestTypeRuleRelEntity) (dataGrid.getResults()).get(0); //修改审批结果 String requestId = tBRequestFeedback.getRequestId(); TBRequestEntity tBRequestA = new TBRequestEntity(); tBRequestA.setId(requestId); DataGrid dataGridA = new DataGrid(); CriteriaQuery cqA = new CriteriaQuery(TBRequestEntity.class, dataGridA); HqlGenerateUtil.installHql(cqA, tBRequestA, request.getParameterMap()); this.tBRequestService.getDataGridReturn(cqA, true); tBRequestA = (TBRequestEntity) (dataGridA.getResults()).get(0); String CurrentRulerId = tBRequestA.getCurrentRulerId(); String ruleId = tBRequestTypeRuleRel.getRuleId(); TBRequestRuleEntity tBRequestRule = this.tBRequestRuleService.getEntity(TBRequestRuleEntity.class, ruleId); String rules = tBRequestRule.getRulers(); List ruleList = Arrays.asList(rules.split(",")); //判断下一个审批的人 String nextRole = ""; // 根据审批id查询审批日志表数据 String userId = ""; Map 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); if (rulersOne != null && rulersOne.containsKey("userId") && StringUtil.isNotEmpty(rulersOne.get("userId"))) { userId = rulersOne.get("userId").toString(); } if (StringUtil.isNotEmpty(userId) && StringUtil.isNotEmpty(tBRequestTypeRuleRel.getClassPath())) { CriteriaQuery feedbackCq = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); feedbackCq.eq("requestId", tBRequestFeedback.getRequestId()); feedbackCq.addOrder("createdAt", SortDirection.asc); feedbackCq.add(); List tbRequestFeedbackEntityList = this.systemService.getListByCriteriaQuery(feedbackCq, true); nextRole = null; if (tbRequestFeedbackEntityList != null && tbRequestFeedbackEntityList.size() > 0) { int index = 0; for (TBRequestFeedbackEntity feedBackItem : tbRequestFeedbackEntityList) { if ("驳回".equals(feedBackItem.getFeedbackStatus())) { index = 0; } else if ("同意".equals(feedBackItem.getFeedbackStatus())) { index++; } } if (index >= ruleList.size()) { // 代表已完成 tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "已通过" : "已驳回"); tBRequestA.setCurrentRulerId(nextRole); } else { // 代表未完成 nextRole = this.getUserRuleMap(ruleList.get(index), userId); tBRequestA.setStatus(tBRequestFeedback.getFeedbackStatus().equals("同意") ? "待审批" : "已驳回"); tBRequestA.setCurrentRulerId(nextRole); } } else { System.err.println("---------------------------------------根据审批id查询审批日志表数据为空-审批id为:" + tBRequestFeedback.getRequestId()); } if (tBRequestFeedback.getFeedbackStatus().equals("同意")) { j.setMsg("审批成功!"); } else { j.setMsg("单据已驳回!"); } this.tBRequestService.saveOrUpdate(tBRequestA); String statusId = request.getParameter("statusId"); this.tBRequestService.withdrawbyClassPath(tBRequestTypeRuleRel.getClassPath(), statusId, tBRequestA.getStatus(), tBRequestFeedback.getRequestId()); } else { for (int i = 0; i < ruleList.size(); i++) { if (CurrentRulerId.equals(ruleList.get(i)) && i != (ruleList.size() - 1)) { nextRole = ruleList.get(i + 1); } } if ("".equals(nextRole) && "同意".equals(tBRequestFeedback.getFeedbackStatus())) { tBRequestA.setStatus("已通过"); tBRequestA.setCurrentRulerId(nextRole); } if ("".equals(nextRole) && "驳回".equals(tBRequestFeedback.getFeedbackStatus())) { tBRequestA.setStatus("已驳回"); tBRequestA.setCurrentRulerId(""); } if (!"".equals(nextRole) && "同意".equals(tBRequestFeedback.getFeedbackStatus())) { tBRequestA.setStatus("待审批"); tBRequestA.setCurrentRulerId(nextRole); } if (!"".equals(nextRole) && "驳回".equals(tBRequestFeedback.getFeedbackStatus())) { tBRequestA.setStatus("已驳回"); tBRequestA.setCurrentRulerId(""); } this.tBRequestService.saveOrUpdate(tBRequestA); String statusId = request.getParameter("statusId"); this.tBRequestService.updateStatus(id, tBRequestA, statusId); } if(tBRequestA.getStatus().equals("已通过")){ sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_2,Globals.MSG_CONTENT_REQUEST_2,tuser.getId(),tBRequestA.getUserId()); }else if(tBRequestA.getStatus().equals("已驳回")){ sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_2,Globals.MSG_CONTENT_REQUEST_3+tBRequestFeedback.getFeedbackOpinion(),tuser.getId(),tBRequestA.getUserId()); }else if(tBRequestA.getStatus().equals("待审批")){ sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_1,Globals.MSG_CONTENT_REQUEST_1,tuser.getId(),tBRequestA.getCurrentRulerId()); } } catch (Exception e) { e.printStackTrace(); j.setMsg("审批失败"); throw new BusinessException(e.getMessage()); } return j; } /** * 生成当前经办人的审批权限集合 * * @return * @author刘梦祥 * @Date 2021年11月29日00:42:57 */ public String getUserRuleMap(String ruleType, String agentUserId) { DataGrid dataGrid1 = new DataGrid(); dataGrid1.setRows(99999); CriteriaQuery criteriaQuery = new CriteriaQuery(TSUserOrg.class, dataGrid1); criteriaQuery.eq("tsUser.id", agentUserId); criteriaQuery.add(); List tsUserOrgList = this.systemService.getListByCriteriaQuery(criteriaQuery, true); List departidList = new ArrayList<>(); String departidStr = ""; if (tsUserOrgList != null && tsUserOrgList.size() > 0) { for (TSUserOrg tsUserOrg : tsUserOrgList) { departidList.add(tsUserOrg.getTsDepart().getId()); if (StringUtil.isNotEmpty(tsUserOrg.getTsDepart().getId())) { departidStr = tsUserOrg.getTsDepart().getId(); break; } } } // update-刘梦祥-2021年12月17日11:15:06(审批流程BUG修复:用户的科室信息应该从TSUserOrg表中获取) if (StringUtil.isNotEmpty(departidStr)) { Map ruleMap = new HashMap<>(); switch (ruleType) { // 科室组长(组长) case "groupLeader": ruleMap.put("departId", departidStr); ruleMap.put("inPostid", "ff8080817b760b5d017b805b3b3301de"); break; // 安全保障科科长(科长) case "securitySectionChief": ruleMap.put("departId", "ff8080817b5e7d81017b62bca59a0136"); ruleMap.put("inPostid", "ff8080817b760b5d017b8057b15901c6"); break; // 人事科科科长(科长) case "personnelSectionChief": ruleMap.put("departId", "ff8080817b5e7d81017b62bc58860132"); ruleMap.put("inPostid", "ff8080817b760b5d017b8057b15901c6"); break; // 科室科长(科长) case "sectionChief": ruleMap.put("departId", departidStr); if("ff8080817b5e7d81017b62bc1cb4012e".equals(departidStr)){ ruleMap.put("inPostid", "ff8080817b760b5d017b805789b201c4"); }else{ ruleMap.put("inPostid", "ff8080817b760b5d017b8057b15901c6"); } break; // 分管领导(根据情况确定) case "inChargeOfTheLeadership": // 如果是人事科或者办公室科(高总) if ("ff8080817b5e7d81017b62bc58860132".equals(departidStr) || "ff8080817b5e7d81017b62bc1cb4012e".equals(departidStr) || "ff8080817b760b5d017b76ef38ff0018".equals(departidStr)) { ruleMap.put("userId", "2c9e7297812325a7018141f5f9fb003b"); // 仓库科、保洁科、市场部(周总) } else if ("ff8080817b5e7d81017b62bcff99013c".equals(departidStr) || "ff8080817b5e7d81017b62bcc47a0138".equals(departidStr) || "ff8080817b5e7d81017b62bc74480134".equals(departidStr)) { ruleMap.put("userId", "2c9e7297812325a7018141e044cc0036"); // 安全保障科、清运科(潘总) } else if ("ff8080817b5e7d81017b62bca59a0136".equals(departidStr) || "ff8080817b5e7d81017b62bcea8c013a".equals(departidStr)) { ruleMap.put("userId", "2c9e7297812325a7018141f5fb120040"); } break; // 总经理(田总) case "generalManager": ruleMap.put("userId", "2c9e7297812325a7018141e043a30031"); break; default: ruleMap.put("userId", ruleType.substring(7)); break; } return JSONObject.toJSONString(ruleMap); } else { return null; } } /** * 提交审批 * * @param requestId 流程id * @param id 关联字段(操作数据id,流程日志表的id) * @param type 流程规则 * @return AjaxJson * @author 刘梦祥 * @Date 2021年11月24日18:19:09 */ @RequestMapping(params = {"doSubmit"}) @ResponseBody public AjaxJson doSubmit(String requestId, String id, String type) { // 根据审批type获取审批对照表 TBRequestTypeRuleRelEntity TBRequestTypeRuleRel = this.tBRequestTypeRuleRelService.getEntity(TBRequestTypeRuleRelEntity.class, type); HttpSession session = ContextHolderUtils.getSession(); TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER"); AjaxJson j = new AjaxJson(); //先判断是否在审批流程中 try { if ("".equals(requestId) || null == requestId || "undefined".equals(requestId)) { j.setMsg("操作成功"); //插入审批进度到审批流程进度表 TBRequestEntity tBRequest = new TBRequestEntity(); String s = UUID.randomUUID().toString(); s = s.substring(0, 8) + s.substring(9, 13) + s.substring(14, 18) + s.substring(19, 23) + s.substring(24); tBRequest.setId(s); tBRequest.setUserId(tuser.getId()); tBRequest.setType(TBRequestTypeRuleRel.getTypeInfo()); tBRequest.setRuleId(TBRequestTypeRuleRel.getRuleId()); tBRequest.setStatus("待审批"); Date day = new Date(); tBRequest.setDate(day); tBRequest.setCreatedAt(day); tBRequest.setUpdatedAt(day); //取需要审批的userid String ruleId = TBRequestTypeRuleRel.getRuleId(); // 根据审批对照表的ruleId获取审批流程表 TBRequestRuleEntity tBRequestRule = this.tBRequestRuleService.getEntity(TBRequestRuleEntity.class, ruleId); // 获取审批流程 String rules = tBRequestRule.getRulers(); List roleList = Arrays.asList(rules.split(",")); 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:")) { // 将第一个审批的规则map写入到审批流程进度表 String userRuleMapStr = this.getUserRuleMap(roleList.get(0), tuser.getId()); if (userRuleMapStr != null) { tBRequest.setCurrentRulerId(userRuleMapStr); } else { j.setSuccess(false); j.setMsg("经办人缺少部门信息!"); } } else { // 将第一个审批的人员或部门写入到审批流程进度表 tBRequest.setCurrentRulerId(roleList.get(0)); } this.tBRequestService.save(tBRequest); if (TBRequestTypeRuleRel.getClassPath() != null) { //反序列化的方式操作 this.tBRequestService.withdrawbyClassPath(TBRequestTypeRuleRel.getClassPath(), id, "待审批", tBRequest.getId()); } else { //根据表名(TBRequestTypeRuleRel.getType())和id修改对应记录的流程id(tBRequest.getId())和状态 this.tBRequestService.updatebydate(TBRequestTypeRuleRel.getType(), id, tBRequest.getId()); } sysMsgService.saveSysMsg(Globals.MSG_TITLE_REQUEST_1,Globals.MSG_CONTENT_REQUEST_1,tuser.getId(),tBRequest.getCurrentRulerId()); } else { //在流程中的 j.setSuccess(false); j.setMsg("操作异常:该信息已经在审批流程中!"); } } catch (Exception e) { e.printStackTrace(); j.setSuccess(false); j.setMsg("操作失败!" + e.getMessage()); throw new BusinessException(e.getMessage()); } return j; } /** * 撤回审批流程 * * @param requestId 流程id * @param id 关联字段(操作数据id,流程日志表的id) * @param type 流程规则 * @return AjaxJson * @author 刘梦祥 * @Date 2021年11月29日03:11:52 */ @RequestMapping(params = {"doWithdraw"}) @ResponseBody public AjaxJson doWithdraw(String requestId, String id, String type) { // 根据审批type获取审批对照表 TBRequestTypeRuleRelEntity TBRequestTypeRuleRel = this.tBRequestTypeRuleRelService.getEntity(TBRequestTypeRuleRelEntity.class, type); AjaxJson j = new AjaxJson(); j.setSuccess(true); j.setMsg("流程撤回成功!"); //先判断是否在审批流程中 try { if (TBRequestTypeRuleRel.getClassPath() != null) { if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) { //反序列化的方式操作 this.tBRequestService.withdrawbyClassPath(TBRequestTypeRuleRel.getClassPath(), id, "待提交", null); this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId); CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); criteriaQuery.eq("requestId", requestId); criteriaQuery.add(); List tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true); if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) { for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) { this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId()); } } } else { j.setSuccess(true); j.setMsg("流程撤回失败,没有找到流程id!"); } } else { if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) { this.tBRequestService.delbydate(TBRequestTypeRuleRel.getType(), id, requestId); this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId); CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); criteriaQuery.eq("requestId", requestId); criteriaQuery.add(); List tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true); if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) { for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) { this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId()); } } } else { j.setSuccess(true); j.setMsg("流程撤回失败,没有找到流程id!"); } } } catch (Exception e) { e.printStackTrace(); j.setSuccess(false); j.setMsg("流程撤回失败:" + e.getMessage()); } return j; } /** * 作废审批流程 * * @param requestId 流程id * @param id 关联字段(操作数据id,流程日志表的id) * @param type 流程规则 * @return AjaxJson * @author dugc * @Date 2021年01月04日03:11:52 */ @RequestMapping(params = {"doVoid"}) @ResponseBody public AjaxJson doVoid(String requestId, String id, String type) { // 根据审批type获取审批对照表 TBRequestTypeRuleRelEntity TBRequestTypeRuleRel = this.tBRequestTypeRuleRelService.getEntity(TBRequestTypeRuleRelEntity.class, type); AjaxJson j = new AjaxJson(); j.setSuccess(true); j.setMsg("流程作废成功!"); //先判断是否在审批流程中 try { if (TBRequestTypeRuleRel.getClassPath() != null) { if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) { //反序列化的方式操作 this.tBRequestService.withdrawbyClassPath(TBRequestTypeRuleRel.getClassPath(), id, "已作废", null); this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId); CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); criteriaQuery.eq("requestId", requestId); criteriaQuery.add(); List tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true); if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) { for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) { this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId()); } } } else { j.setSuccess(true); j.setMsg("流程作废失败,没有找到流程id!"); } } else { if (StringUtil.isNotEmpty(requestId) && !"undefined".equals(requestId)) { this.tBRequestService.delbydate(TBRequestTypeRuleRel.getType(), id, requestId); this.tBRequestService.deleteEntityById(TBRequestEntity.class, requestId); CriteriaQuery criteriaQuery = new CriteriaQuery(TBRequestFeedbackEntity.class, new DataGrid()); criteriaQuery.eq("requestId", requestId); criteriaQuery.add(); List tbRequestFeedbackEntitiesList = this.tBRequestFeedbackService.getListByCriteriaQuery(criteriaQuery, true); if (tbRequestFeedbackEntitiesList != null && tbRequestFeedbackEntitiesList.size() > 0) { for (TBRequestFeedbackEntity tbr : tbRequestFeedbackEntitiesList) { this.tBRequestService.deleteEntityById(TBRequestFeedbackEntity.class, tbr.getId()); } } } else { j.setSuccess(true); j.setMsg("流程作废失败,没有找到流程id!"); } } } catch (Exception e) { e.printStackTrace(); j.setSuccess(false); j.setMsg("流程作废失败:" + e.getMessage()); } return j; } }