BudgetInstController.java 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968
  1. package cn.com.lzt.budget.inst.controller;
  2. import cn.com.lzt.budget.costbreakdown.service.BudgetCostBreakdownServiceI;
  3. import cn.com.lzt.budget.data.dto.BudgetCalc;
  4. import cn.com.lzt.budget.data.dto.BudgetSpreadCellData;
  5. import cn.com.lzt.budget.data.service.BudgetDataService;
  6. import cn.com.lzt.budget.data.util.BudgetConstant;
  7. import cn.com.lzt.budget.data.util.BudgetUtils;
  8. import cn.com.lzt.budget.dimfunction.service.BudgetDimFunctionServiceI;
  9. import cn.com.lzt.budget.inst.dao.BudgetInstDao;
  10. import cn.com.lzt.budget.inst.dto.BudgetInstDto;
  11. import cn.com.lzt.budget.inst.entity.BudgetInstEntity;
  12. import cn.com.lzt.budget.inst.service.BudgetInstServiceI;
  13. import cn.com.lzt.budget.instmeasure.entity.BudgetInstMeasureEntity;
  14. import cn.com.lzt.budget.instversion.entity.BudgetInstVersionEntity;
  15. import cn.com.lzt.budget.instversion.service.BudgetInstVersionServiceI;
  16. import cn.com.lzt.budget.post.entity.BudgetPostEntity;
  17. import cn.com.lzt.budget.postnum.entity.BudgetPostNumDetailEntity;
  18. import cn.com.lzt.budget.postnum.entity.BudgetPostNumEntity;
  19. import cn.com.lzt.budget.proc.service.BudgetProcServiceI;
  20. import cn.com.lzt.budget.task.entity.BudgetTaskEntity;
  21. import cn.com.lzt.common.util.DictUtil;
  22. import cn.com.lzt.goodscategory.entity.TBGoodsCategoryEntity;
  23. import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity;
  24. import cn.com.lzt.priceinfo.entity.TBPriceInfoEntity;
  25. import org.apache.commons.lang.xwork.StringUtils;
  26. import org.apache.log4j.Logger;
  27. import org.jeecgframework.core.aop.HibernateTableRename;
  28. import org.jeecgframework.core.beanvalidator.BeanValidators;
  29. import org.jeecgframework.core.common.controller.BaseController;
  30. import org.jeecgframework.core.common.exception.BusinessException;
  31. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  32. import org.jeecgframework.core.common.model.json.AjaxJson;
  33. import org.jeecgframework.core.common.model.json.DataGrid;
  34. import org.jeecgframework.core.constant.Globals;
  35. import org.jeecgframework.core.util.*;
  36. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  37. import org.jeecgframework.poi.excel.ExcelImportUtil;
  38. import org.jeecgframework.poi.excel.entity.ExportParams;
  39. import org.jeecgframework.poi.excel.entity.ImportParams;
  40. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  41. import org.jeecgframework.tag.core.easyui.TagUtil;
  42. import org.jeecgframework.web.system.pojo.base.TSType;
  43. import org.jeecgframework.web.system.pojo.base.TSUser;
  44. import org.jeecgframework.web.system.service.SystemService;
  45. import org.springframework.beans.factory.annotation.Autowired;
  46. import org.springframework.http.HttpHeaders;
  47. import org.springframework.http.HttpStatus;
  48. import org.springframework.http.MediaType;
  49. import org.springframework.http.ResponseEntity;
  50. import org.springframework.stereotype.Controller;
  51. import org.springframework.ui.ModelMap;
  52. import org.springframework.web.bind.annotation.*;
  53. import org.springframework.web.multipart.MultipartFile;
  54. import org.springframework.web.multipart.MultipartHttpServletRequest;
  55. import org.springframework.web.servlet.ModelAndView;
  56. import org.springframework.web.util.UriComponentsBuilder;
  57. import javax.servlet.http.HttpServletRequest;
  58. import javax.servlet.http.HttpServletResponse;
  59. import javax.validation.ConstraintViolation;
  60. import javax.validation.Validator;
  61. import java.io.IOException;
  62. import java.math.BigDecimal;
  63. import java.net.URI;
  64. import java.util.*;
  65. /**
  66. * @Title: Controller
  67. * @Description: 预算表
  68. * @author onlineGenerator
  69. * @date 2020-07-17 13:48:55
  70. * @version V1.0
  71. *
  72. */
  73. @Controller
  74. @RequestMapping("/budgetInstController")
  75. public class BudgetInstController extends BaseController {
  76. /**
  77. * Logger for this class
  78. */
  79. private static final Logger logger = Logger.getLogger(BudgetInstController.class);
  80. @Autowired
  81. private BudgetInstServiceI budgetInstService;
  82. @Autowired
  83. private SystemService systemService;
  84. @Autowired
  85. private Validator validator;
  86. @Autowired
  87. private BudgetDataService budgetDataService;
  88. @Autowired
  89. private BudgetDimFunctionServiceI budgetDimFunctionService;
  90. @Autowired
  91. private BudgetInstDao budgetInstDao;
  92. @Autowired
  93. private BudgetProcServiceI budgetProcService;
  94. @Autowired
  95. private BudgetInstVersionServiceI budgetInstVersionService;
  96. @Autowired
  97. private BudgetCostBreakdownServiceI budgetCostBreakdownServiceI;
  98. /**
  99. * 预算表列表 页面跳转
  100. *
  101. * @return
  102. */
  103. @RequestMapping(params = "list")
  104. public ModelAndView list(HttpServletRequest request) {
  105. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstList");
  106. }
  107. /**
  108. * easyui AJAX请求数据
  109. *
  110. * @param request
  111. * @param response
  112. * @param dataGrid
  113. */
  114. @RequestMapping(params = "datagrid")
  115. public void datagrid(BudgetInstEntity budgetInst,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  116. CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid);
  117. //查询条件组装器
  118. if(StringUtils.isNotBlank(budgetInst.getEntityName())){
  119. cq.like("entityName", "%"+budgetInst.getEntityName()+"%");
  120. budgetInst.setEntityName(null);
  121. }
  122. if(StringUtils.isNotBlank(budgetInst.getTempSheetName())){
  123. String sql="select id from t_b_budget_tempsheet where name like '%"+budgetInst.getTempSheetName()+"%'";
  124. List<String> tempsheetIdList = systemService.findListbySql(sql);
  125. if(tempsheetIdList.isEmpty()) {
  126. cq.in("tempSheetId", new Object[]{"-1"});
  127. }else {
  128. cq.in("tempSheetId",tempsheetIdList.toArray());
  129. }
  130. budgetInst.setTempSheetName(null);
  131. }
  132. Integer actual =budgetInst.getActual();
  133. if(actual==null){
  134. budgetInst.setActual(Integer.valueOf(Globals.NO));
  135. }
  136. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap());
  137. try{
  138. TSUser user = ResourceUtil.getSessionUser();
  139. cq.eq("editBy", user.getId());
  140. //自定义追加查询条件
  141. }catch (Exception e) {
  142. throw new BusinessException(e.getMessage());
  143. }
  144. cq.add();
  145. this.budgetInstService.getDataGridReturn(cq, true);
  146. TagUtil.datagrid(response, dataGrid);
  147. }
  148. /**
  149. * 删除预算表
  150. *
  151. * @return
  152. */
  153. @RequestMapping(params = "doDel")
  154. @ResponseBody
  155. public AjaxJson doDel(BudgetInstEntity budgetInst, HttpServletRequest request) {
  156. String message = null;
  157. AjaxJson j = new AjaxJson();
  158. budgetInst = systemService.getEntity(BudgetInstEntity.class, budgetInst.getId());
  159. message = "预算表删除成功";
  160. try{
  161. budgetInstService.delete(budgetInst);
  162. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  163. }catch(Exception e){
  164. e.printStackTrace();
  165. message = "预算表删除失败";
  166. throw new BusinessException(e.getMessage());
  167. }
  168. j.setMsg(message);
  169. return j;
  170. }
  171. /**
  172. * 批量删除预算表
  173. *
  174. * @return
  175. */
  176. @RequestMapping(params = "doBatchDel")
  177. @ResponseBody
  178. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  179. String message = null;
  180. AjaxJson j = new AjaxJson();
  181. message = "预算表删除成功";
  182. try{
  183. for(String id:ids.split(",")){
  184. BudgetInstEntity budgetInst = systemService.getEntity(BudgetInstEntity.class,
  185. id
  186. );
  187. budgetInstService.delete(budgetInst);
  188. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  189. }
  190. }catch(Exception e){
  191. e.printStackTrace();
  192. message = "预算表删除失败";
  193. throw new BusinessException(e.getMessage());
  194. }
  195. j.setMsg(message);
  196. return j;
  197. }
  198. /**
  199. * 添加预算表
  200. *
  201. * @return
  202. */
  203. @RequestMapping(params = "doAdd")
  204. @ResponseBody
  205. public AjaxJson doAdd(BudgetInstEntity budgetInst, HttpServletRequest request) {
  206. String message = null;
  207. AjaxJson j = new AjaxJson();
  208. message = "预算表添加成功";
  209. try{
  210. budgetInstService.save(budgetInst);
  211. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  212. }catch(Exception e){
  213. e.printStackTrace();
  214. message = "预算表添加失败";
  215. throw new BusinessException(e.getMessage());
  216. }
  217. j.setMsg(message);
  218. return j;
  219. }
  220. /**
  221. * 更新预算表
  222. *
  223. * @return
  224. */
  225. @RequestMapping(params = "doUpdate")
  226. @ResponseBody
  227. public AjaxJson doUpdate(BudgetInstEntity budgetInst, HttpServletRequest request) {
  228. String message = null;
  229. AjaxJson j = new AjaxJson();
  230. message = "预算表更新成功";
  231. BudgetInstEntity t = budgetInstService.get(BudgetInstEntity.class, budgetInst.getId());
  232. try {
  233. MyBeanUtils.copyBeanNotNull2Bean(budgetInst, t);
  234. budgetInstService.saveOrUpdate(t);
  235. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  236. } catch (Exception e) {
  237. e.printStackTrace();
  238. message = "预算表更新失败";
  239. throw new BusinessException(e.getMessage());
  240. }
  241. j.setMsg(message);
  242. return j;
  243. }
  244. /**
  245. * 预算表新增页面跳转
  246. *
  247. * @return
  248. */
  249. @RequestMapping(params = "goAdd")
  250. public ModelAndView goAdd(BudgetInstEntity budgetInst, HttpServletRequest req) {
  251. if (StringUtil.isNotEmpty(budgetInst.getId())) {
  252. budgetInst = budgetInstService.getEntity(BudgetInstEntity.class, budgetInst.getId());
  253. req.setAttribute("budgetInstPage", budgetInst);
  254. }
  255. return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-add");
  256. }
  257. /**
  258. * 预算表编辑页面跳转
  259. *
  260. * @return
  261. */
  262. @RequestMapping(params = "goUpdate")
  263. public ModelAndView goUpdate(BudgetInstEntity budgetInst, HttpServletRequest req) {
  264. if (StringUtil.isNotEmpty(budgetInst.getId())) {
  265. budgetInst = budgetInstService.getEntity(BudgetInstEntity.class, budgetInst.getId());
  266. req.setAttribute("budgetInstPage", budgetInst);
  267. }
  268. return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-update");
  269. }
  270. /**
  271. * 导入功能跳转
  272. *
  273. * @return
  274. */
  275. @RequestMapping(params = "upload")
  276. public ModelAndView upload(HttpServletRequest req) {
  277. req.setAttribute("controller_name","budgetInstController");
  278. return new ModelAndView("common/upload/pub_excel_upload");
  279. }
  280. /**
  281. * 导出excel
  282. *
  283. * @param request
  284. * @param response
  285. */
  286. @RequestMapping(params = "exportXls")
  287. public String exportXls(BudgetInstEntity budgetInst,HttpServletRequest request,HttpServletResponse response
  288. , DataGrid dataGrid,ModelMap modelMap) {
  289. CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid);
  290. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap());
  291. List<BudgetInstEntity> budgetInsts = this.budgetInstService.getListByCriteriaQuery(cq,false);
  292. modelMap.put(NormalExcelConstants.FILE_NAME,"预算表");
  293. modelMap.put(NormalExcelConstants.CLASS,BudgetInstEntity.class);
  294. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("预算表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  295. "导出信息"));
  296. modelMap.put(NormalExcelConstants.DATA_LIST,budgetInsts);
  297. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  298. }
  299. /**
  300. * 导出excel 使模板
  301. *
  302. * @param request
  303. * @param response
  304. */
  305. @RequestMapping(params = "exportXlsByT")
  306. public String exportXlsByT(BudgetInstEntity budgetInst,HttpServletRequest request,HttpServletResponse response
  307. , DataGrid dataGrid,ModelMap modelMap) {
  308. modelMap.put(NormalExcelConstants.FILE_NAME,"预算表");
  309. modelMap.put(NormalExcelConstants.CLASS,BudgetInstEntity.class);
  310. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("预算表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  311. "导出信息"));
  312. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  313. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  314. }
  315. @SuppressWarnings("unchecked")
  316. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  317. @ResponseBody
  318. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  319. AjaxJson j = new AjaxJson();
  320. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  321. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  322. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  323. MultipartFile file = entity.getValue();// 获取上传文件对象
  324. ImportParams params = new ImportParams();
  325. params.setTitleRows(2);
  326. params.setHeadRows(1);
  327. params.setNeedSave(true);
  328. try {
  329. List<BudgetInstEntity> listBudgetInstEntitys = ExcelImportUtil.importExcel(file.getInputStream(),BudgetInstEntity.class,params);
  330. for (BudgetInstEntity budgetInst : listBudgetInstEntitys) {
  331. budgetInstService.save(budgetInst);
  332. }
  333. j.setMsg("文件导入成功!");
  334. } catch (Exception e) {
  335. j.setMsg("文件导入失败!");
  336. logger.error(ExceptionUtil.getExceptionMessage(e));
  337. }finally{
  338. try {
  339. file.getInputStream().close();
  340. } catch (IOException e) {
  341. e.printStackTrace();
  342. }
  343. }
  344. }
  345. return j;
  346. }
  347. @RequestMapping(method = RequestMethod.GET)
  348. @ResponseBody
  349. public List<BudgetInstEntity> list() {
  350. List<BudgetInstEntity> listBudgetInsts=budgetInstService.getList(BudgetInstEntity.class);
  351. return listBudgetInsts;
  352. }
  353. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  354. @ResponseBody
  355. public ResponseEntity<?> get(@PathVariable("id") String id) {
  356. BudgetInstEntity task = budgetInstService.get(BudgetInstEntity.class, id);
  357. if (task == null) {
  358. return new ResponseEntity(HttpStatus.NOT_FOUND);
  359. }
  360. return new ResponseEntity(task, HttpStatus.OK);
  361. }
  362. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  363. @ResponseBody
  364. public ResponseEntity<?> create(@RequestBody BudgetInstEntity budgetInst, UriComponentsBuilder uriBuilder) {
  365. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  366. Set<ConstraintViolation<BudgetInstEntity>> failures = validator.validate(budgetInst);
  367. if (!failures.isEmpty()) {
  368. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  369. }
  370. //保存
  371. try{
  372. budgetInstService.save(budgetInst);
  373. } catch (Exception e) {
  374. e.printStackTrace();
  375. return new ResponseEntity(HttpStatus.NO_CONTENT);
  376. }
  377. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  378. String id = budgetInst.getId();
  379. URI uri = uriBuilder.path("/rest/budgetInstController/" + id).build().toUri();
  380. HttpHeaders headers = new HttpHeaders();
  381. headers.setLocation(uri);
  382. return new ResponseEntity(headers, HttpStatus.CREATED);
  383. }
  384. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  385. public ResponseEntity<?> update(@RequestBody BudgetInstEntity budgetInst) {
  386. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  387. Set<ConstraintViolation<BudgetInstEntity>> failures = validator.validate(budgetInst);
  388. if (!failures.isEmpty()) {
  389. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  390. }
  391. //保存
  392. try{
  393. budgetInstService.saveOrUpdate(budgetInst);
  394. } catch (Exception e) {
  395. e.printStackTrace();
  396. return new ResponseEntity(HttpStatus.NO_CONTENT);
  397. }
  398. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  399. return new ResponseEntity(HttpStatus.NO_CONTENT);
  400. }
  401. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  402. @ResponseStatus(HttpStatus.NO_CONTENT)
  403. public void delete(@PathVariable("id") String id) {
  404. budgetInstService.deleteEntityById(BudgetInstEntity.class, id);
  405. }
  406. @RequestMapping(params = "goFill")
  407. public ModelAndView goFill(BudgetInstEntity budgetInst, HttpServletRequest req) {
  408. if (StringUtil.isNotEmpty(budgetInst.getId())) {
  409. String instId = budgetInst.getId();
  410. budgetInst = budgetInstService.getEntity(BudgetInstEntity.class, instId);
  411. String sql = "select is_total from t_b_budget_tempsheet where id = ?";
  412. List<String> tempSheetList = systemService.findListbySql(sql,budgetInst.getTempSheetId());
  413. if(tempSheetList!=null && !tempSheetList.isEmpty()){
  414. String isTotal = tempSheetList.get(0);
  415. req.setAttribute("isTotal", isTotal);
  416. }
  417. Integer instStatus = budgetInst.getStatus();
  418. Boolean edit = (Boolean) req.getAttribute("edit");
  419. Integer actual = budgetInst.getActual();
  420. Boolean toView = (Boolean) req.getAttribute("view");//是否查看
  421. if(toView!=null && toView) {//查看
  422. req.setAttribute("readOnly", true);
  423. }else {
  424. if (actual == 0) {//预算表
  425. if (edit == null) {//审批页面不为空,这里不需要再设置了
  426. boolean readOnly = false;
  427. TSUser user = ResourceUtil.getSessionUser();
  428. if (StringUtils.equals(budgetInst.getEditBy(), user.getId())) {
  429. if (instStatus == BudgetConstant.INST_STATUS_INIT || instStatus == BudgetConstant.INST_STATUS_REFUSE) {
  430. edit = true;
  431. } else {
  432. readOnly = true;
  433. }
  434. } else {
  435. readOnly = true;
  436. }
  437. req.setAttribute("edit", edit);
  438. req.setAttribute("readOnly", readOnly);
  439. }
  440. } else {//执行表
  441. req.setAttribute("readOnly", true);
  442. }
  443. }
  444. req.setAttribute("inst", budgetInst);
  445. HibernateTableRename.set("t_b_budget_inst_measure",budgetInst.getInstMeasureTableName());
  446. String instMeasureHql = "from BudgetInstMeasureEntity";
  447. List<BudgetInstMeasureEntity> instMeasureEntityList =systemService.findHql(instMeasureHql);
  448. HibernateTableRename.remove();
  449. req.setAttribute("instMeasureEntityList",instMeasureEntityList);
  450. String type= budgetInst.getType();
  451. //执行统计样表 跟通用样表 类似
  452. if(StringUtils.startsWith(type,BudgetConstant.TEMPSHEET_TYPE_NORMAL) || StringUtils.equals(type,BudgetConstant.TEMPSHEET_TYPE_ACTUAL_STA)){
  453. List<TSType> measureDataTypeList =systemService.getTypesByGroupcodeFromCache("budget_measure_datatype");
  454. req.setAttribute("measureDataTypeList",measureDataTypeList );
  455. return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-fill");
  456. }else if(StringUtils.equals(type,"orders")){
  457. List<TSType> typeList = systemService.getTypesByGroupcodeFromCache("metering_calcu_unit");
  458. req.setAttribute("typeList",typeList);
  459. String orderKind = budgetInst.getOrdersKind();
  460. String ordersKindTxt = DictUtil.formatToTypeName(orderKind,"budget_orders_kind");
  461. req.setAttribute("ordersKindTxt", ordersKindTxt);
  462. if(budgetInst.getOrdersKindType()==BudgetConstant.OrdersKindType.gzf) {
  463. List<TSType> clothingusertypeList = systemService.getTypesByGroupcodeFromCache("clothingusertype");
  464. req.setAttribute("clothingusertypeList", clothingusertypeList);
  465. }
  466. return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-fill4orders");
  467. }else if(StringUtils.equals(type,"hr")){
  468. if(budgetInst.getUpdateDate()==null) {
  469. String hql = "from BudgetPostEntity where deleteFlag=? and status=? order by sortNum";
  470. List<BudgetPostEntity> budgetPostEntityList = systemService.findHql(hql, Globals.Delete_Normal.toString(), Globals.Enabled_Status.toString());
  471. req.setAttribute("budgetPostEntityList", budgetPostEntityList);
  472. List<TSType> postTypeList =systemService.getTypesByGroupcodeFromCache("budget_cost_post_type");
  473. req.setAttribute("postTypeList",postTypeList );
  474. List<TSType> postUserTypeList =systemService.getTypesByGroupcodeFromCache("budget_cost_post_user_type");
  475. req.setAttribute("postUserTypeList",postUserTypeList );
  476. req.setAttribute("needInitData", true);
  477. //找自有的岗位人数
  478. String postNumHql = "from BudgetPostNumEntity where entityId=? and periodYear=? and type=0 order by createDate desc";
  479. List<BudgetPostNumEntity> postNumList = systemService.findHql(postNumHql,budgetInst.getEntityId(),budgetInst.getPeriodYear());
  480. if(!postNumList.isEmpty()){
  481. BudgetPostNumEntity postNumEntity=postNumList.get(0);
  482. String postNumDetailHql = "from BudgetPostNumDetailEntity where postNumId=? ";
  483. List<BudgetPostNumDetailEntity> postNumDetailEntityList = systemService.findHql(postNumDetailHql,postNumEntity.getId());
  484. req.setAttribute("postNumDetailEntityList", postNumDetailEntityList);
  485. }
  486. }else {
  487. req.setAttribute("needInitData", false);
  488. }
  489. return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-fill4Hr");
  490. }
  491. }
  492. return null;
  493. }
  494. @RequestMapping(params = "goView")
  495. public ModelAndView goView(BudgetInstEntity budgetInst, HttpServletRequest req) {
  496. req.setAttribute("view", true);
  497. return goFill(budgetInst,req);
  498. }
  499. @RequestMapping(params = "doFill")
  500. @ResponseBody
  501. public AjaxJson doFill(BudgetInstEntity budgetInst, HttpServletRequest request) {
  502. String message = null;
  503. AjaxJson j = new AjaxJson();
  504. message = "保存成功";
  505. try {
  506. budgetInstService.doFill(budgetInst);
  507. } catch (Exception e) {
  508. e.printStackTrace();
  509. message = "保存失败";
  510. j.setSuccess(false);
  511. }
  512. j.setMsg(message);
  513. return j;
  514. }
  515. @RequestMapping(params = "getUsedGoods")
  516. @ResponseBody
  517. public AjaxJson getUsedGoods(BudgetInstEntity budgetInst, HttpServletRequest request) {
  518. String initCategoryCode=request.getParameter("initCategoryCode");
  519. List<String> categoryCodeList = Collections.EMPTY_LIST;
  520. if(StringUtils.isNotBlank(initCategoryCode)){
  521. categoryCodeList= Arrays.asList(initCategoryCode.split(","));
  522. }
  523. Integer year =Integer.valueOf(request.getParameter("year"));
  524. String entityId=request.getParameter("entityId");
  525. List<TBGoodsInfoEntity> list =budgetDataService.getUsedGoodsInfoByYear(year,categoryCodeList,entityId);
  526. if(list != null && list.size() > 0){
  527. TBGoodsInfoEntity goodsInfoEntity = null;
  528. TBPriceInfoEntity tBPriceInfoEntity = null;
  529. for(int i = 0 ;i < list.size();i++){
  530. goodsInfoEntity = (TBGoodsInfoEntity)list.get(i);
  531. //获取参数
  532. Object id0 = goodsInfoEntity.getId();
  533. String cateID = goodsInfoEntity.getBelongCategory();
  534. TBGoodsCategoryEntity cate = systemService.get(TBGoodsCategoryEntity.class, cateID);
  535. goodsInfoEntity.setBelongCategoryName(BudgetUtils.dealCateName(cate.getCategoryCode(), cate.getCategoryName()));
  536. goodsInfoEntity.setBelongCategoryCode(cate.getCategoryCode());
  537. String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? ";
  538. List<TBPriceInfoEntity> tBPriceInfoEntityList = systemService.findHql(hql0,id0);
  539. if(tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0){
  540. for(int j = 0 ;j < tBPriceInfoEntityList.size();j++){
  541. tBPriceInfoEntity = new TBPriceInfoEntity();
  542. tBPriceInfoEntity = tBPriceInfoEntityList.get(j);
  543. if(goodsInfoEntity.getPurchaseUnit()!= null && tBPriceInfoEntity.getMeteringUnit() != null && goodsInfoEntity.getPurchaseUnit().equals(tBPriceInfoEntity.getMeteringUnit())){
  544. goodsInfoEntity.setCostPrice(tBPriceInfoEntity.getRetailPrice());
  545. break;
  546. }
  547. }
  548. }
  549. Double[] countArray = budgetDataService.getOneGoodsRefYearUsed(year, goodsInfoEntity.getId(),entityId);
  550. goodsInfoEntity.setRefYearCountArray(countArray);
  551. }
  552. }
  553. Collections.sort(list, new Comparator<TBGoodsInfoEntity>() {
  554. @Override
  555. public int compare(TBGoodsInfoEntity o1, TBGoodsInfoEntity o2) {
  556. return o1.getBelongCategoryCode().compareTo(o2.getBelongCategoryCode());
  557. }
  558. });
  559. AjaxJson j = new AjaxJson();
  560. j.setObj(list);
  561. return j;
  562. }
  563. @RequestMapping(params = "getOneGoodsUesdCount")
  564. @ResponseBody
  565. public AjaxJson getOneGoodsUesdCount(HttpServletRequest request) {
  566. Integer year = oConvertUtils.getInt(request.getParameter("year"), -1);
  567. String goodsId = request.getParameter("goodsId");
  568. String entityId = request.getParameter("entityId");
  569. Double[] countArray = budgetDataService.getOneGoodsRefYearUsed(year, goodsId,entityId);
  570. AjaxJson j = new AjaxJson();
  571. j.setObj(countArray);
  572. return j;
  573. }
  574. @RequestMapping(params = "goTaskListTab")
  575. public ModelAndView goTaskListTab(HttpServletRequest request) {
  576. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-listTab");
  577. }
  578. @RequestMapping(params = "goMyTaskList")
  579. public ModelAndView goMyTaskList(HttpServletRequest request) {
  580. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-myList");
  581. }
  582. @RequestMapping(params = "taskListDatagrid")
  583. public void taskListDatagrid(BudgetInstDto budgetInstDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  584. TSUser user = ResourceUtil.getSessionUser();
  585. budgetInstDto.setTaskUserId(user.getId());
  586. budgetInstDto.setTaskStatus(BudgetConstant.TASK_STATUS_INIT);
  587. MiniDaoPage<?> page = budgetInstDao.getInstInProc(budgetInstDto,dataGrid.getPage(), dataGrid.getRows());
  588. dataGrid.setResults(page.getResults());
  589. dataGrid.setTotal(page.getTotal());
  590. TagUtil.datagrid(response, dataGrid);
  591. }
  592. @RequestMapping(params = "goHistoryTaskList")
  593. public ModelAndView goHistoryTaskList(HttpServletRequest request) {
  594. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-historyList");
  595. }
  596. @RequestMapping(params = "historyTaskListDatagrid")
  597. public void historyTaskListDatagrid(BudgetInstDto budgetInstDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  598. TSUser user = ResourceUtil.getSessionUser();
  599. budgetInstDto.setTaskUserId(user.getId());
  600. budgetInstDto.setTaskStatus(BudgetConstant.TASK_STATUS_END);
  601. MiniDaoPage<?> page = budgetInstDao.getInstInProc(budgetInstDto,dataGrid.getPage(), dataGrid.getRows());
  602. dataGrid.setResults(page.getResults());
  603. dataGrid.setTotal(page.getTotal());
  604. TagUtil.datagrid(response, dataGrid);
  605. }
  606. @RequestMapping(params = "goTaskTab")
  607. public ModelAndView goTaskTab(HttpServletRequest request) {
  608. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-tab");
  609. }
  610. @RequestMapping(params = "goTask")
  611. public ModelAndView goTask(BudgetInstEntity instEntity, HttpServletRequest req) {
  612. String taskId = req.getParameter("taskId");
  613. BudgetTaskEntity taskEntity = systemService.getEntity(BudgetTaskEntity.class, taskId);
  614. boolean edit =false;
  615. TSUser user = ResourceUtil.getSessionUser();
  616. if(StringUtils.equals(taskEntity.getUserId(), user.getId())){
  617. edit =true;
  618. }
  619. req.setAttribute("edit",edit);
  620. req.setAttribute("inProcess",true);
  621. req.setAttribute("backType",1);
  622. instEntity.setId(taskEntity.getInstId());
  623. return goFill(instEntity,req);
  624. }
  625. //流程审批历史
  626. @RequestMapping(params = "goProcTaskHistoryList")
  627. public ModelAndView goProcTaskHistoryList(BudgetInstEntity instEntity, HttpServletRequest req) {
  628. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstTask-procHistoryList");
  629. }
  630. @RequestMapping(params = "procTaskHistoryListDatagrid")
  631. public void procTaskHistoryListDatagrid(@RequestParam("taskId") String taskId, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  632. BudgetTaskEntity taskEntity = systemService.getEntity(BudgetTaskEntity.class,taskId);
  633. String procId = taskEntity.getProcId();
  634. List<BudgetTaskEntity> taskEntityList = systemService.findByProperty(BudgetTaskEntity.class,"procId",procId);
  635. dataGrid.setResults(taskEntityList);
  636. TagUtil.datagrid(response, dataGrid);
  637. }
  638. @RequestMapping(params = "goHistoryTask")
  639. public ModelAndView goHistoryTask(BudgetInstEntity instEntity, HttpServletRequest req) {
  640. String taskId = req.getParameter("taskId");
  641. BudgetTaskEntity taskEntity = systemService.getEntity(BudgetTaskEntity.class, taskId);
  642. instEntity.setId(taskEntity.getInstId());
  643. req.setAttribute("edit",false);
  644. req.setAttribute("readOnly",true);
  645. req.setAttribute("backType",2);
  646. return goFill(instEntity,req);
  647. }
  648. @RequestMapping(params = "select")
  649. public String select(BudgetInstEntity instEntity, HttpServletRequest req) {
  650. return "cn/com/lzt/budget/inst/budgetInst-select";
  651. }
  652. @RequestMapping(params = "selectDatagrid")
  653. public void selectDatagrid(BudgetInstEntity budgetInst,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  654. CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid);
  655. //查询条件组装器
  656. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap());
  657. try{
  658. //自定义追加查询条件
  659. }catch (Exception e) {
  660. throw new BusinessException(e.getMessage());
  661. }
  662. cq.add();
  663. this.budgetInstService.getDataGridReturn(cq, true);
  664. TagUtil.datagrid(response, dataGrid);
  665. }
  666. @RequestMapping(params = "select4changeEntity")
  667. public String select4changeEntity(BudgetInstEntity instEntity, HttpServletRequest req) {
  668. return "cn/com/lzt/budget/inst/budgetInst-select4changeEntity";
  669. }
  670. @RequestMapping(params = "select4changeEntityDatagrid")
  671. public void select4changeEntityDatagrid(BudgetInstEntity budgetInst,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  672. TSUser user = ResourceUtil.getSessionUser();
  673. Integer status = budgetInst.getStatus();
  674. if(status!=null && status!=0 && status!=-2) {//审核状态
  675. BudgetInstDto dto = new BudgetInstDto();
  676. dto.setTempSheetId(budgetInst.getTempSheetId());
  677. dto.setEntityName(budgetInst.getEntityName());
  678. taskListDatagrid(dto,request,response,dataGrid);
  679. return;
  680. }
  681. CriteriaQuery cq = new CriteriaQuery(BudgetInstEntity.class, dataGrid);
  682. if(StringUtils.isNotBlank(budgetInst.getEntityName())){
  683. cq.like("entityName","%"+budgetInst.getEntityName()+"%");
  684. budgetInst.setEntityName(null);
  685. }
  686. //查询条件组装器
  687. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInst, request.getParameterMap());
  688. try{
  689. cq.eq("editBy", user.getId());
  690. //自定义追加查询条件
  691. }catch (Exception e) {
  692. throw new BusinessException(e.getMessage());
  693. }
  694. cq.add();
  695. this.budgetInstService.getDataGridReturn(cq, true);
  696. TagUtil.datagrid(response, dataGrid);
  697. }
  698. @RequestMapping(params = "calcFunction")
  699. @ResponseBody
  700. public AjaxJson calcFunction(BudgetInstEntity instEntity, HttpServletRequest req) {
  701. AjaxJson j = new AjaxJson();
  702. String instId = instEntity.getId();
  703. instEntity = systemService.getEntity(BudgetInstEntity.class, instId);
  704. String entityId = instEntity.getEntityId();
  705. HibernateTableRename.set("t_b_budget_inst_measure", instEntity.getInstMeasureTableName());
  706. String hql = "from BudgetInstMeasureEntity where functionId is not null";
  707. List<BudgetInstMeasureEntity> list = systemService.findHql(hql);
  708. List<Object[]> valueList = new ArrayList<>();
  709. HibernateTableRename.remove();
  710. Map<String,Object> attriMap = new HashMap<>();
  711. System.out.println("calcFunction start");
  712. Long t1 =System.currentTimeMillis();
  713. List<BudgetCalc> calcList = new ArrayList<>();
  714. for(BudgetInstMeasureEntity instMeasureEntity:list){
  715. String functionId = instMeasureEntity.getFunctionId();
  716. String measureId = instMeasureEntity.getMeasureId();
  717. try {
  718. BudgetCalc budgetCalc = new BudgetCalc();
  719. budgetCalc.setRow(instMeasureEntity.getRow());
  720. budgetCalc.setCol(instMeasureEntity.getCol());
  721. budgetCalc.setFunctionId(functionId);
  722. budgetCalc.setMeasureId(measureId);
  723. budgetCalc.setEntityId(entityId);
  724. budgetCalc.setPeriodDetailId(instMeasureEntity.getPeriodDetailId());
  725. budgetCalc.setDeep(false);
  726. budgetCalc.setUpdate(false);
  727. calcList.add(budgetCalc);
  728. }catch (IllegalStateException e){//死循环
  729. logger.info("维度公式循环引用:"+functionId);
  730. attriMap.put("errorMsg", "维度公式循环引用,请联系管理员");
  731. }
  732. }
  733. budgetDimFunctionService.batchCalc(calcList);
  734. for(BudgetCalc budgetCalc:calcList){
  735. BigDecimal value = budgetCalc.getValue();
  736. if(value!=null) {
  737. valueList.add(new Object[]{budgetCalc.getRow(), budgetCalc.getCol(), value.toPlainString()});
  738. }
  739. }
  740. Long t2 =System.currentTimeMillis();
  741. System.out.println("calcFunction end :"+(t2-t1));
  742. j.setObj(valueList);
  743. j.setAttributes(attriMap);
  744. return j;
  745. }
  746. //上报
  747. @RequestMapping(params = "doSubmit")
  748. @ResponseBody
  749. public AjaxJson doSubmit(BudgetInstEntity budgetInst, HttpServletRequest request) {
  750. String message = null;
  751. AjaxJson j = new AjaxJson();
  752. budgetInstService.doSubmit(budgetInst.getId());
  753. return j;
  754. }
  755. @RequestMapping(params = "finishTask")
  756. @ResponseBody
  757. public AjaxJson finishTask(BudgetInstEntity instEntity, HttpServletRequest req) {
  758. AjaxJson j = new AjaxJson();
  759. String descn =req.getParameter("descn");
  760. String statusString =req.getParameter("status");//1 通过 -1 驳回
  761. Integer status = Integer.valueOf(statusString);
  762. String instId =req.getParameter("instId");
  763. String taskId =req.getParameter("taskId");
  764. /*if(status==BudgetConstant.VERIFY_STATUS_PASS) {
  765. }*/
  766. budgetInstService.doFill(instEntity);
  767. budgetProcService.process(instId,taskId,status,descn);
  768. return j;
  769. }
  770. /**
  771. * 显示一条记录历史详情
  772. * @param req
  773. * @return
  774. */
  775. @RequestMapping(params = "goOneHistry")
  776. public ModelAndView goOneHistry(HttpServletRequest req) {
  777. // budgetDataService.getOneGoodsRefYearUsed(, );
  778. return new ModelAndView("cn/com/lzt/budget/inst/budgetInst-oneHistory");
  779. }
  780. //上报版本和审核版本对比
  781. @RequestMapping(params = "getSubmitVerifyVersion")
  782. @ResponseBody
  783. public AjaxJson getSubmitVerifyVersion(HttpServletRequest req) {
  784. AjaxJson json = new AjaxJson();
  785. String instId = req.getParameter("instId");
  786. Map<String,Object> map = new HashMap<String,Object>();
  787. String hql = "from BudgetInstVersionEntity where instId=? and userSave=0 and instStatusBefore =? and instStatusAfter<>-2 and instStatusAfter<>instStatusBefore order by version desc";
  788. List<BudgetInstVersionEntity> l1 = systemService.findHql(hql,instId,BudgetConstant.INST_STATUS_INIT);
  789. if(!l1.isEmpty()) {
  790. map.put("version1", l1.get(0).getId());
  791. }
  792. List<BudgetInstVersionEntity> l2 = systemService.findHql(hql,instId,BudgetConstant.INST_STATUS_VERIFY);
  793. if(!l2.isEmpty()) {
  794. map.put("version2", l2.get(0).getId());
  795. }
  796. json.setAttributes(map);
  797. return json;
  798. }
  799. @RequestMapping(params = "submitOrdersToCost")
  800. @ResponseBody
  801. public AjaxJson submitOrdersToCost(HttpServletRequest req) {
  802. AjaxJson json = new AjaxJson();
  803. String periodYear = req.getParameter("periodYear");
  804. List<BudgetSpreadCellData> list =budgetCostBreakdownServiceI.submitOrdersToCost(periodYear);
  805. json.setObj(list);
  806. json.setMsg("提取成功");
  807. return json;
  808. }
  809. @RequestMapping(params = "submitHrToCost")
  810. @ResponseBody
  811. public AjaxJson submitHrToCost(HttpServletRequest req) {
  812. AjaxJson json = new AjaxJson();
  813. String periodYear = req.getParameter("periodYear");
  814. List<BudgetSpreadCellData> list = budgetCostBreakdownServiceI.submitHrToCost(periodYear);
  815. json.setObj(list);
  816. json.setMsg("提取成功");
  817. return json;
  818. }
  819. //人力表 获得自有人数
  820. @RequestMapping(params = "getPostNum")
  821. @ResponseBody
  822. public AjaxJson getPostNum(HttpServletRequest request) {
  823. AjaxJson json = new AjaxJson();
  824. String entityId = request.getParameter("entityId");
  825. String periodYear = request.getParameter("periodYear");
  826. String postNumHql = "from BudgetPostNumEntity where entityId=? and periodYear=? and type=0 order by createDate desc ";
  827. List<BudgetPostNumEntity> postNumList = systemService.findHql(postNumHql,entityId,periodYear);
  828. if(!postNumList.isEmpty()){
  829. BudgetPostNumEntity postNumEntity=postNumList.get(0);
  830. String postNumDetailHql = "from BudgetPostNumDetailEntity where postNumId=? ";
  831. List<BudgetPostNumDetailEntity> postNumDetailEntityList = systemService.findHql(postNumDetailHql,postNumEntity.getId());
  832. json.setObj(postNumDetailEntityList);
  833. }
  834. return json;
  835. }
  836. /**
  837. * 预算表列表 页面跳转
  838. *
  839. * @return
  840. */
  841. @RequestMapping(params = "list4actualview")
  842. public ModelAndView list4actualview(HttpServletRequest request) {
  843. request.setAttribute("actual", Integer.valueOf(Globals.YES));
  844. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstList-view");
  845. }
  846. //查看
  847. @RequestMapping(params = "list4expectview")
  848. public ModelAndView list4expectview(HttpServletRequest request) {
  849. request.setAttribute("actual", Integer.valueOf(Globals.NO));
  850. return new ModelAndView("cn/com/lzt/budget/inst/budgetInstList-view");
  851. }
  852. /**
  853. * easyui AJAX请求数据
  854. *
  855. * @param request
  856. * @param response
  857. * @param dataGrid
  858. */
  859. @RequestMapping(params = "datagrid4view")
  860. public void datagrid4view(BudgetInstDto dto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  861. TSUser user = ResourceUtil.getSessionUser();
  862. dto.setTaskUserId(user.getId());
  863. dto.setStatus(BudgetConstant.INST_STATUS_END);
  864. MiniDaoPage<?> page = budgetInstDao.getInst4view(dto,dataGrid.getPage(), dataGrid.getRows());
  865. dataGrid.setResults(page.getResults());
  866. dataGrid.setTotal(page.getTotal());
  867. TagUtil.datagrid(response, dataGrid);
  868. }
  869. //获得预算值
  870. @RequestMapping(params = "getExpectValue")
  871. @ResponseBody
  872. public AjaxJson getExpectValue(HttpServletRequest request
  873. ,@RequestParam("periodDetailId") String periodDetailId
  874. ,@RequestParam("entityId") String entityId
  875. ,@RequestParam("measureId") String measureId
  876. ,@RequestParam(value="includeTax",required = false,defaultValue = Globals.YES) Integer includeTax
  877. ,@RequestParam(value="expect",required = false,defaultValue = Globals.YES) Integer expect
  878. ) {
  879. AjaxJson json = new AjaxJson();
  880. BigDecimal value = budgetDataService.getExpectValue(periodDetailId,entityId,measureId,includeTax);
  881. json.setObj(value);
  882. return json;
  883. }
  884. //获得预算实体年度总表对应id
  885. @RequestMapping(params = "getTotalInstId")
  886. @ResponseBody
  887. public AjaxJson getTotalInstId(HttpServletRequest req) {
  888. String entityId = req.getParameter("entityId");
  889. String periodYear = req.getParameter("periodYear");
  890. Integer actual = Integer.valueOf(req.getParameter("actual"));
  891. String sql = "select inst.id,inst.inst_name from t_b_budget_inst inst where inst.tempsheet_id = " +
  892. " (select ts.id from t_b_budget_tempsheet ts where ts.is_total=1 and actual=? ) and inst.entity_id=? and inst.period_year=? ";
  893. List<String[]> list = systemService.findListbySql(sql,actual,entityId,periodYear);
  894. AjaxJson json = new AjaxJson();
  895. if(list!=null && !list.isEmpty()){
  896. json.setObj(list.get(0));
  897. }
  898. return json;
  899. }
  900. }