package cn.com.lzt.budget.inst.controller; import cn.com.lzt.budget.costbreakdown.service.BudgetCostBreakdownServiceI; import cn.com.lzt.budget.data.dto.BudgetCalc; import cn.com.lzt.budget.data.dto.BudgetSpreadCellData; import cn.com.lzt.budget.data.service.BudgetDataService; import cn.com.lzt.budget.data.util.BudgetConstant; import cn.com.lzt.budget.data.util.BudgetUtils; import cn.com.lzt.budget.dimfunction.service.BudgetDimFunctionServiceI; import cn.com.lzt.budget.inst.dao.BudgetInstDao; import cn.com.lzt.budget.inst.dto.BudgetInstDto; import cn.com.lzt.budget.inst.entity.BudgetInstEntity; import cn.com.lzt.budget.inst.service.BudgetInstServiceI; import cn.com.lzt.budget.instmeasure.entity.BudgetInstMeasureEntity; import cn.com.lzt.budget.instversion.entity.BudgetInstVersionEntity; import cn.com.lzt.budget.instversion.service.BudgetInstVersionServiceI; import cn.com.lzt.budget.post.entity.BudgetPostEntity; import cn.com.lzt.budget.postnum.entity.BudgetPostNumDetailEntity; import cn.com.lzt.budget.postnum.entity.BudgetPostNumEntity; import cn.com.lzt.budget.proc.service.BudgetProcServiceI; import cn.com.lzt.budget.task.entity.BudgetTaskEntity; import cn.com.lzt.common.util.DictUtil; import cn.com.lzt.goodscategory.entity.TBGoodsCategoryEntity; import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity; import cn.com.lzt.priceinfo.entity.TBPriceInfoEntity; import org.apache.commons.lang.xwork.StringUtils; import org.apache.log4j.Logger; import org.jeecgframework.core.aop.HibernateTableRename; import org.jeecgframework.core.beanvalidator.BeanValidators; 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.AjaxJson; import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.*; import org.jeecgframework.minidao.pojo.MiniDaoPage; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.web.system.pojo.base.TSType; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.UriComponentsBuilder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.ConstraintViolation; import javax.validation.Validator; import java.io.IOException; import java.math.BigDecimal; import java.net.URI; import java.util.*; /** * @Title: Controller * @Description: 预算表 * @author onlineGenerator * @date 2020-07-17 13:48:55 * @version V1.0 * */ @Controller @RequestMapping("/budgetInstController") public class BudgetInstController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(BudgetInstController.class); @Autowired private BudgetInstServiceI budgetInstService; @Autowired private SystemService systemService; @Autowired private Validator validator; @Autowired private BudgetDataService budgetDataService; @Autowired private BudgetDimFunctionServiceI budgetDimFunctionService; @Autowired private BudgetInstDao budgetInstDao; @Autowired private BudgetProcServiceI budgetProcService; @Autowired private BudgetInstVersionServiceI budgetInstVersionService; @Autowired private BudgetCostBreakdownServiceI budgetCostBreakdownServiceI; /** * 预算表列表 页面跳转 * * @return */ @RequestMapping(params = "list") public ModelAndView list(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/budget/inst/budgetInstList"); } /** * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid */ @RequestMapping(params = "datagrid") public void datagrid(BudgetInstEntity budgetInst,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid); //查询条件组装器 if(StringUtils.isNotBlank(budgetInst.getEntityName())){ cq.like("entityName", "%"+budgetInst.getEntityName()+"%"); budgetInst.setEntityName(null); } if(StringUtils.isNotBlank(budgetInst.getTempSheetName())){ String sql="select id from t_b_budget_tempsheet where name like '%"+budgetInst.getTempSheetName()+"%'"; List tempsheetIdList = systemService.findListbySql(sql); if(tempsheetIdList.isEmpty()) { cq.in("tempSheetId", new Object[]{"-1"}); }else { cq.in("tempSheetId",tempsheetIdList.toArray()); } budgetInst.setTempSheetName(null); } Integer actual =budgetInst.getActual(); if(actual==null){ budgetInst.setActual(Integer.valueOf(Globals.NO)); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap()); try{ TSUser user = ResourceUtil.getSessionUser(); cq.eq("editBy", user.getId()); //自定义追加查询条件 }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.budgetInstService.getDataGridReturn(cq, true); TagUtil.datagrid(response, dataGrid); } /** * 删除预算表 * * @return */ @RequestMapping(params = "doDel") @ResponseBody public AjaxJson doDel(BudgetInstEntity budgetInst, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); budgetInst = systemService.getEntity(BudgetInstEntity.class, budgetInst.getId()); message = "预算表删除成功"; try{ budgetInstService.delete(budgetInst); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "预算表删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 批量删除预算表 * * @return */ @RequestMapping(params = "doBatchDel") @ResponseBody public AjaxJson doBatchDel(String ids,HttpServletRequest request){ String message = null; AjaxJson j = new AjaxJson(); message = "预算表删除成功"; try{ for(String id:ids.split(",")){ BudgetInstEntity budgetInst = systemService.getEntity(BudgetInstEntity.class, id ); budgetInstService.delete(budgetInst); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); } }catch(Exception e){ e.printStackTrace(); message = "预算表删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 添加预算表 * * @return */ @RequestMapping(params = "doAdd") @ResponseBody public AjaxJson doAdd(BudgetInstEntity budgetInst, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "预算表添加成功"; try{ budgetInstService.save(budgetInst); systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "预算表添加失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 更新预算表 * * @return */ @RequestMapping(params = "doUpdate") @ResponseBody public AjaxJson doUpdate(BudgetInstEntity budgetInst, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "预算表更新成功"; BudgetInstEntity t = budgetInstService.get(BudgetInstEntity.class, budgetInst.getId()); try { MyBeanUtils.copyBeanNotNull2Bean(budgetInst, t); budgetInstService.saveOrUpdate(t); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); } catch (Exception e) { e.printStackTrace(); message = "预算表更新失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 预算表新增页面跳转 * * @return */ @RequestMapping(params = "goAdd") public ModelAndView goAdd(BudgetInstEntity budgetInst, HttpServletRequest req) { if (StringUtil.isNotEmpty(budgetInst.getId())) { budgetInst = budgetInstService.getEntity(BudgetInstEntity.class, budgetInst.getId()); req.setAttribute("budgetInstPage", budgetInst); } return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-add"); } /** * 预算表编辑页面跳转 * * @return */ @RequestMapping(params = "goUpdate") public ModelAndView goUpdate(BudgetInstEntity budgetInst, HttpServletRequest req) { if (StringUtil.isNotEmpty(budgetInst.getId())) { budgetInst = budgetInstService.getEntity(BudgetInstEntity.class, budgetInst.getId()); req.setAttribute("budgetInstPage", budgetInst); } return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-update"); } /** * 导入功能跳转 * * @return */ @RequestMapping(params = "upload") public ModelAndView upload(HttpServletRequest req) { req.setAttribute("controller_name","budgetInstController"); return new ModelAndView("common/upload/pub_excel_upload"); } /** * 导出excel * * @param request * @param response */ @RequestMapping(params = "exportXls") public String exportXls(BudgetInstEntity budgetInst,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid); org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap()); List budgetInsts = this.budgetInstService.getListByCriteriaQuery(cq,false); modelMap.put(NormalExcelConstants.FILE_NAME,"预算表"); modelMap.put(NormalExcelConstants.CLASS,BudgetInstEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("预算表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,budgetInsts); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 导出excel 使模板 * * @param request * @param response */ @RequestMapping(params = "exportXlsByT") public String exportXlsByT(BudgetInstEntity budgetInst,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { modelMap.put(NormalExcelConstants.FILE_NAME,"预算表"); modelMap.put(NormalExcelConstants.CLASS,BudgetInstEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("预算表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList()); return NormalExcelConstants.JEECG_EXCEL_VIEW; } @SuppressWarnings("unchecked") @RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { List listBudgetInstEntitys = ExcelImportUtil.importExcel(file.getInputStream(),BudgetInstEntity.class,params); for (BudgetInstEntity budgetInst : listBudgetInstEntitys) { budgetInstService.save(budgetInst); } j.setMsg("文件导入成功!"); } catch (Exception e) { j.setMsg("文件导入失败!"); logger.error(ExceptionUtil.getExceptionMessage(e)); }finally{ try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return j; } @RequestMapping(method = RequestMethod.GET) @ResponseBody public List list() { List listBudgetInsts=budgetInstService.getList(BudgetInstEntity.class); return listBudgetInsts; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody public ResponseEntity get(@PathVariable("id") String id) { BudgetInstEntity task = budgetInstService.get(BudgetInstEntity.class, id); if (task == null) { return new ResponseEntity(HttpStatus.NOT_FOUND); } return new ResponseEntity(task, HttpStatus.OK); } @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public ResponseEntity create(@RequestBody BudgetInstEntity budgetInst, UriComponentsBuilder uriBuilder) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(budgetInst); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ budgetInstService.save(budgetInst); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象. String id = budgetInst.getId(); URI uri = uriBuilder.path("/rest/budgetInstController/" + id).build().toUri(); HttpHeaders headers = new HttpHeaders(); headers.setLocation(uri); return new ResponseEntity(headers, HttpStatus.CREATED); } @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity update(@RequestBody BudgetInstEntity budgetInst) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(budgetInst); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ budgetInstService.saveOrUpdate(budgetInst); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码. return new ResponseEntity(HttpStatus.NO_CONTENT); } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) public void delete(@PathVariable("id") String id) { budgetInstService.deleteEntityById(BudgetInstEntity.class, id); } @RequestMapping(params = "goFill") public ModelAndView goFill(BudgetInstEntity budgetInst, HttpServletRequest req) { if (StringUtil.isNotEmpty(budgetInst.getId())) { String instId = budgetInst.getId(); budgetInst = budgetInstService.getEntity(BudgetInstEntity.class, instId); String sql = "select is_total from t_b_budget_tempsheet where id = ?"; List tempSheetList = systemService.findListbySql(sql,budgetInst.getTempSheetId()); if(tempSheetList!=null && !tempSheetList.isEmpty()){ String isTotal = tempSheetList.get(0); req.setAttribute("isTotal", isTotal); } Integer instStatus = budgetInst.getStatus(); Boolean edit = (Boolean) req.getAttribute("edit"); Integer actual = budgetInst.getActual(); Boolean toView = (Boolean) req.getAttribute("view");//是否查看 if(toView!=null && toView) {//查看 req.setAttribute("readOnly", true); }else { if (actual == 0) {//预算表 if (edit == null) {//审批页面不为空,这里不需要再设置了 boolean readOnly = false; TSUser user = ResourceUtil.getSessionUser(); if (StringUtils.equals(budgetInst.getEditBy(), user.getId())) { if (instStatus == BudgetConstant.INST_STATUS_INIT || instStatus == BudgetConstant.INST_STATUS_REFUSE) { edit = true; } else { readOnly = true; } } else { readOnly = true; } req.setAttribute("edit", edit); req.setAttribute("readOnly", readOnly); } } else {//执行表 req.setAttribute("readOnly", true); } } req.setAttribute("inst", budgetInst); HibernateTableRename.set("t_b_budget_inst_measure",budgetInst.getInstMeasureTableName()); String instMeasureHql = "from BudgetInstMeasureEntity"; List instMeasureEntityList =systemService.findHql(instMeasureHql); HibernateTableRename.remove(); req.setAttribute("instMeasureEntityList",instMeasureEntityList); String type= budgetInst.getType(); //执行统计样表 跟通用样表 类似 if(StringUtils.startsWith(type,BudgetConstant.TEMPSHEET_TYPE_NORMAL) || StringUtils.equals(type,BudgetConstant.TEMPSHEET_TYPE_ACTUAL_STA)){ List measureDataTypeList =systemService.getTypesByGroupcodeFromCache("budget_measure_datatype"); req.setAttribute("measureDataTypeList",measureDataTypeList ); return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-fill"); }else if(StringUtils.equals(type,"orders")){ List typeList = systemService.getTypesByGroupcodeFromCache("metering_calcu_unit"); req.setAttribute("typeList",typeList); String orderKind = budgetInst.getOrdersKind(); String ordersKindTxt = DictUtil.formatToTypeName(orderKind,"budget_orders_kind"); req.setAttribute("ordersKindTxt", ordersKindTxt); if(budgetInst.getOrdersKindType()==BudgetConstant.OrdersKindType.gzf) { List clothingusertypeList = systemService.getTypesByGroupcodeFromCache("clothingusertype"); req.setAttribute("clothingusertypeList", clothingusertypeList); } return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-fill4orders"); }else if(StringUtils.equals(type,"hr")){ if(budgetInst.getUpdateDate()==null) { String hql = "from BudgetPostEntity where deleteFlag=? and status=? order by sortNum"; List budgetPostEntityList = systemService.findHql(hql, Globals.Delete_Normal.toString(), Globals.Enabled_Status.toString()); req.setAttribute("budgetPostEntityList", budgetPostEntityList); List postTypeList =systemService.getTypesByGroupcodeFromCache("budget_cost_post_type"); req.setAttribute("postTypeList",postTypeList ); List postUserTypeList =systemService.getTypesByGroupcodeFromCache("budget_cost_post_user_type"); req.setAttribute("postUserTypeList",postUserTypeList ); req.setAttribute("needInitData", true); //找自有的岗位人数 String postNumHql = "from BudgetPostNumEntity where entityId=? and periodYear=? and type=0 order by createDate desc"; List postNumList = systemService.findHql(postNumHql,budgetInst.getEntityId(),budgetInst.getPeriodYear()); if(!postNumList.isEmpty()){ BudgetPostNumEntity postNumEntity=postNumList.get(0); String postNumDetailHql = "from BudgetPostNumDetailEntity where postNumId=? "; List postNumDetailEntityList = systemService.findHql(postNumDetailHql,postNumEntity.getId()); req.setAttribute("postNumDetailEntityList", postNumDetailEntityList); } }else { req.setAttribute("needInitData", false); } return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-fill4Hr"); } } return null; } @RequestMapping(params = "goView") public ModelAndView goView(BudgetInstEntity budgetInst, HttpServletRequest req) { req.setAttribute("view", true); return goFill(budgetInst,req); } @RequestMapping(params = "doFill") @ResponseBody public AjaxJson doFill(BudgetInstEntity budgetInst, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "保存成功"; try { budgetInstService.doFill(budgetInst); } catch (Exception e) { e.printStackTrace(); message = "保存失败"; j.setSuccess(false); } j.setMsg(message); return j; } @RequestMapping(params = "getUsedGoods") @ResponseBody public AjaxJson getUsedGoods(BudgetInstEntity budgetInst, HttpServletRequest request) { String initCategoryCode=request.getParameter("initCategoryCode"); List categoryCodeList = Collections.EMPTY_LIST; if(StringUtils.isNotBlank(initCategoryCode)){ categoryCodeList= Arrays.asList(initCategoryCode.split(",")); } Integer year =Integer.valueOf(request.getParameter("year")); String entityId=request.getParameter("entityId"); List list =budgetDataService.getUsedGoodsInfoByYear(year,categoryCodeList,entityId); if(list != null && list.size() > 0){ TBGoodsInfoEntity goodsInfoEntity = null; TBPriceInfoEntity tBPriceInfoEntity = null; for(int i = 0 ;i < list.size();i++){ goodsInfoEntity = (TBGoodsInfoEntity)list.get(i); //获取参数 Object id0 = goodsInfoEntity.getId(); String cateID = goodsInfoEntity.getBelongCategory(); TBGoodsCategoryEntity cate = systemService.get(TBGoodsCategoryEntity.class, cateID); goodsInfoEntity.setBelongCategoryName(BudgetUtils.dealCateName(cate.getCategoryCode(), cate.getCategoryName())); goodsInfoEntity.setBelongCategoryCode(cate.getCategoryCode()); String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? "; List tBPriceInfoEntityList = systemService.findHql(hql0,id0); if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){ for(int j = 0 ;j < tBPriceInfoEntityList.size();j++){ tBPriceInfoEntity = new TBPriceInfoEntity(); tBPriceInfoEntity = tBPriceInfoEntityList.get(j); if(goodsInfoEntity.getPurchaseUnit()!= null && tBPriceInfoEntity.getMeteringUnit() != null && goodsInfoEntity.getPurchaseUnit().equals(tBPriceInfoEntity.getMeteringUnit())){ goodsInfoEntity.setCostPrice(tBPriceInfoEntity.getRetailPrice()); break; } } } Double[] countArray = budgetDataService.getOneGoodsRefYearUsed(year, goodsInfoEntity.getId(),entityId); goodsInfoEntity.setRefYearCountArray(countArray); } } Collections.sort(list, new Comparator() { @Override public int compare(TBGoodsInfoEntity o1, TBGoodsInfoEntity o2) { return o1.getBelongCategoryCode().compareTo(o2.getBelongCategoryCode()); } }); AjaxJson j = new AjaxJson(); j.setObj(list); return j; } @RequestMapping(params = "getOneGoodsUesdCount") @ResponseBody public AjaxJson getOneGoodsUesdCount(HttpServletRequest request) { Integer year = oConvertUtils.getInt(request.getParameter("year"), -1); String goodsId = request.getParameter("goodsId"); String entityId = request.getParameter("entityId"); Double[] countArray = budgetDataService.getOneGoodsRefYearUsed(year, goodsId,entityId); AjaxJson j = new AjaxJson(); j.setObj(countArray); return j; } @RequestMapping(params = "goTaskListTab") public ModelAndView goTaskListTab(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-listTab"); } @RequestMapping(params = "goMyTaskList") public ModelAndView goMyTaskList(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-myList"); } @RequestMapping(params = "taskListDatagrid") public void taskListDatagrid(BudgetInstDto budgetInstDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { TSUser user = ResourceUtil.getSessionUser(); budgetInstDto.setTaskUserId(user.getId()); budgetInstDto.setTaskStatus(BudgetConstant.TASK_STATUS_INIT); MiniDaoPage page = budgetInstDao.getInstInProc(budgetInstDto,dataGrid.getPage(), dataGrid.getRows()); dataGrid.setResults(page.getResults()); dataGrid.setTotal(page.getTotal()); TagUtil.datagrid(response, dataGrid); } @RequestMapping(params = "goHistoryTaskList") public ModelAndView goHistoryTaskList(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-historyList"); } @RequestMapping(params = "historyTaskListDatagrid") public void historyTaskListDatagrid(BudgetInstDto budgetInstDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { TSUser user = ResourceUtil.getSessionUser(); budgetInstDto.setTaskUserId(user.getId()); budgetInstDto.setTaskStatus(BudgetConstant.TASK_STATUS_END); MiniDaoPage page = budgetInstDao.getInstInProc(budgetInstDto,dataGrid.getPage(), dataGrid.getRows()); dataGrid.setResults(page.getResults()); dataGrid.setTotal(page.getTotal()); TagUtil.datagrid(response, dataGrid); } @RequestMapping(params = "goTaskTab") public ModelAndView goTaskTab(HttpServletRequest request) { return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-tab"); } @RequestMapping(params = "goTask") public ModelAndView goTask(BudgetInstEntity instEntity, HttpServletRequest req) { String taskId = req.getParameter("taskId"); BudgetTaskEntity taskEntity = systemService.getEntity(BudgetTaskEntity.class, taskId); boolean edit =false; TSUser user = ResourceUtil.getSessionUser(); if(StringUtils.equals(taskEntity.getUserId(), user.getId())){ edit =true; } req.setAttribute("edit",edit); req.setAttribute("inProcess",true); req.setAttribute("backType",1); instEntity.setId(taskEntity.getInstId()); return goFill(instEntity,req); } //流程审批历史 @RequestMapping(params = "goProcTaskHistoryList") public ModelAndView goProcTaskHistoryList(BudgetInstEntity instEntity, HttpServletRequest req) { return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-procHistoryList"); } @RequestMapping(params = "procTaskHistoryListDatagrid") public void procTaskHistoryListDatagrid(@RequestParam("taskId") String taskId, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { BudgetTaskEntity taskEntity = systemService.getEntity(BudgetTaskEntity.class,taskId); String procId = taskEntity.getProcId(); List taskEntityList = systemService.findByProperty(BudgetTaskEntity.class,"procId",procId); dataGrid.setResults(taskEntityList); TagUtil.datagrid(response, dataGrid); } @RequestMapping(params = "goHistoryTask") public ModelAndView goHistoryTask(BudgetInstEntity instEntity, HttpServletRequest req) { String taskId = req.getParameter("taskId"); BudgetTaskEntity taskEntity = systemService.getEntity(BudgetTaskEntity.class, taskId); instEntity.setId(taskEntity.getInstId()); req.setAttribute("edit",false); req.setAttribute("readOnly",true); req.setAttribute("backType",2); return goFill(instEntity,req); } @RequestMapping(params = "select") public String select(BudgetInstEntity instEntity, HttpServletRequest req) { return "cn/com/lzt/budget/inst/budgetInst-select"; } @RequestMapping(params = "selectDatagrid") public void selectDatagrid(BudgetInstEntity budgetInst,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid); //查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap()); try{ //自定义追加查询条件 }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.budgetInstService.getDataGridReturn(cq, true); TagUtil.datagrid(response, dataGrid); } @RequestMapping(params = "select4changeEntity") public String select4changeEntity(BudgetInstEntity instEntity, HttpServletRequest req) { return "cn/com/lzt/budget/inst/budgetInst-select4changeEntity"; } @RequestMapping(params = "select4changeEntityDatagrid") public void select4changeEntityDatagrid(BudgetInstEntity budgetInst,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { TSUser user = ResourceUtil.getSessionUser(); Integer status = budgetInst.getStatus(); if(status!=null && status!=0 && status!=-2) {//审核状态 BudgetInstDto dto = new BudgetInstDto(); dto.setTempSheetId(budgetInst.getTempSheetId()); dto.setEntityName(budgetInst.getEntityName()); taskListDatagrid(dto,request,response,dataGrid); return; } CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid); if(StringUtils.isNotBlank(budgetInst.getEntityName())){ cq.like("entityName","%"+budgetInst.getEntityName()+"%"); budgetInst.setEntityName(null); } //查询条件组装器 org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap()); try{ cq.eq("editBy", user.getId()); //自定义追加查询条件 }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.budgetInstService.getDataGridReturn(cq, true); TagUtil.datagrid(response, dataGrid); } @RequestMapping(params = "calcFunction") @ResponseBody public AjaxJson calcFunction(BudgetInstEntity instEntity, HttpServletRequest req) { AjaxJson j = new AjaxJson(); String instId = instEntity.getId(); instEntity = systemService.getEntity(BudgetInstEntity.class, instId); String entityId = instEntity.getEntityId(); HibernateTableRename.set("t_b_budget_inst_measure", instEntity.getInstMeasureTableName()); String hql = "from BudgetInstMeasureEntity where functionId is not null"; List list = systemService.findHql(hql); List valueList = new ArrayList<>(); HibernateTableRename.remove(); Map attriMap = new HashMap<>(); System.out.println("calcFunction start"); Long t1 =System.currentTimeMillis(); List calcList = new ArrayList<>(); for(BudgetInstMeasureEntity instMeasureEntity:list){ String functionId = instMeasureEntity.getFunctionId(); String measureId = instMeasureEntity.getMeasureId(); try { BudgetCalc budgetCalc = new BudgetCalc(); budgetCalc.setRow(instMeasureEntity.getRow()); budgetCalc.setCol(instMeasureEntity.getCol()); budgetCalc.setFunctionId(functionId); budgetCalc.setMeasureId(measureId); budgetCalc.setEntityId(entityId); budgetCalc.setPeriodDetailId(instMeasureEntity.getPeriodDetailId()); budgetCalc.setDeep(false); budgetCalc.setUpdate(false); calcList.add(budgetCalc); }catch (IllegalStateException e){//死循环 logger.info("维度公式循环引用:"+functionId); attriMap.put("errorMsg", "维度公式循环引用,请联系管理员"); } } budgetDimFunctionService.batchCalc(calcList); for(BudgetCalc budgetCalc:calcList){ BigDecimal value = budgetCalc.getValue(); if(value!=null) { valueList.add(new Object[]{budgetCalc.getRow(), budgetCalc.getCol(), value.toPlainString()}); } } Long t2 =System.currentTimeMillis(); System.out.println("calcFunction end :"+(t2-t1)); j.setObj(valueList); j.setAttributes(attriMap); return j; } //上报 @RequestMapping(params = "doSubmit") @ResponseBody public AjaxJson doSubmit(BudgetInstEntity budgetInst, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); budgetInstService.doSubmit(budgetInst.getId()); return j; } @RequestMapping(params = "finishTask") @ResponseBody public AjaxJson finishTask(BudgetInstEntity instEntity, HttpServletRequest req) { AjaxJson j = new AjaxJson(); String descn =req.getParameter("descn"); String statusString =req.getParameter("status");//1 通过 -1 驳回 Integer status = Integer.valueOf(statusString); String instId =req.getParameter("instId"); String taskId =req.getParameter("taskId"); /*if(status==BudgetConstant.VERIFY_STATUS_PASS) { }*/ budgetInstService.doFill(instEntity); budgetProcService.process(instId,taskId,status,descn); return j; } /** * 显示一条记录历史详情 * @param req * @return */ @RequestMapping(params = "goOneHistry") public ModelAndView goOneHistry(HttpServletRequest req) { // budgetDataService.getOneGoodsRefYearUsed(, ); return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-oneHistory"); } //上报版本和审核版本对比 @RequestMapping(params = "getSubmitVerifyVersion") @ResponseBody public AjaxJson getSubmitVerifyVersion(HttpServletRequest req) { AjaxJson json = new AjaxJson(); String instId = req.getParameter("instId"); Map map = new HashMap(); String hql = "from BudgetInstVersionEntity where instId=? and userSave=0 and instStatusBefore =? and instStatusAfter<>-2 and instStatusAfter<>instStatusBefore order by version desc"; List l1 = systemService.findHql(hql,instId,BudgetConstant.INST_STATUS_INIT); if(!l1.isEmpty()) { map.put("version1", l1.get(0).getId()); } List l2 = systemService.findHql(hql,instId,BudgetConstant.INST_STATUS_VERIFY); if(!l2.isEmpty()) { map.put("version2", l2.get(0).getId()); } json.setAttributes(map); return json; } @RequestMapping(params = "submitOrdersToCost") @ResponseBody public AjaxJson submitOrdersToCost(HttpServletRequest req) { AjaxJson json = new AjaxJson(); String periodYear = req.getParameter("periodYear"); List list =budgetCostBreakdownServiceI.submitOrdersToCost(periodYear); json.setObj(list); json.setMsg("提取成功"); return json; } @RequestMapping(params = "submitHrToCost") @ResponseBody public AjaxJson submitHrToCost(HttpServletRequest req) { AjaxJson json = new AjaxJson(); String periodYear = req.getParameter("periodYear"); List list = budgetCostBreakdownServiceI.submitHrToCost(periodYear); json.setObj(list); json.setMsg("提取成功"); return json; } //人力表 获得自有人数 @RequestMapping(params = "getPostNum") @ResponseBody public AjaxJson getPostNum(HttpServletRequest request) { AjaxJson json = new AjaxJson(); String entityId = request.getParameter("entityId"); String periodYear = request.getParameter("periodYear"); String postNumHql = "from BudgetPostNumEntity where entityId=? and periodYear=? and type=0 order by createDate desc "; List postNumList = systemService.findHql(postNumHql,entityId,periodYear); if(!postNumList.isEmpty()){ BudgetPostNumEntity postNumEntity=postNumList.get(0); String postNumDetailHql = "from BudgetPostNumDetailEntity where postNumId=? "; List postNumDetailEntityList = systemService.findHql(postNumDetailHql,postNumEntity.getId()); json.setObj(postNumDetailEntityList); } return json; } /** * 预算表列表 页面跳转 * * @return */ @RequestMapping(params = "list4actualview") public ModelAndView list4actualview(HttpServletRequest request) { request.setAttribute("actual", Integer.valueOf(Globals.YES)); return new ModelAndView("cn/com/lzt/budget/inst/budgetInstList-view"); } //查看 @RequestMapping(params = "list4expectview") public ModelAndView list4expectview(HttpServletRequest request) { request.setAttribute("actual", Integer.valueOf(Globals.NO)); return new ModelAndView("cn/com/lzt/budget/inst/budgetInstList-view"); } /** * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid */ @RequestMapping(params = "datagrid4view") public void datagrid4view(BudgetInstDto dto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { TSUser user = ResourceUtil.getSessionUser(); dto.setTaskUserId(user.getId()); dto.setStatus(BudgetConstant.INST_STATUS_END); MiniDaoPage page = budgetInstDao.getInst4view(dto,dataGrid.getPage(), dataGrid.getRows()); dataGrid.setResults(page.getResults()); dataGrid.setTotal(page.getTotal()); TagUtil.datagrid(response, dataGrid); } //获得预算值 @RequestMapping(params = "getExpectValue") @ResponseBody public AjaxJson getExpectValue(HttpServletRequest request ,@RequestParam("periodDetailId") String periodDetailId ,@RequestParam("entityId") String entityId ,@RequestParam("measureId") String measureId ,@RequestParam(value="includeTax",required = false,defaultValue = Globals.YES) Integer includeTax ,@RequestParam(value="expect",required = false,defaultValue = Globals.YES) Integer expect ) { AjaxJson json = new AjaxJson(); BigDecimal value = budgetDataService.getExpectValue(periodDetailId,entityId,measureId,includeTax); json.setObj(value); return json; } //获得预算实体年度总表对应id @RequestMapping(params = "getTotalInstId") @ResponseBody public AjaxJson getTotalInstId(HttpServletRequest req) { String entityId = req.getParameter("entityId"); String periodYear = req.getParameter("periodYear"); Integer actual = Integer.valueOf(req.getParameter("actual")); String sql = "select inst.id,inst.inst_name from t_b_budget_inst inst where inst.tempsheet_id = " + " (select ts.id from t_b_budget_tempsheet ts where ts.is_total=1 and actual=? ) and inst.entity_id=? and inst.period_year=? "; List list = systemService.findListbySql(sql,actual,entityId,periodYear); AjaxJson json = new AjaxJson(); if(list!=null && !list.isEmpty()){ json.setObj(list.get(0)); } return json; } }