BudgetInstVersionController.java 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457
  1. package cn.com.lzt.budget.instversion.controller;
  2. import cn.com.lzt.budget.data.util.BudgetConstant;
  3. import cn.com.lzt.budget.inst.entity.BudgetInstEntity;
  4. import cn.com.lzt.budget.instversion.dto.BudgetInstVersionChange;
  5. import cn.com.lzt.budget.instversion.entity.BudgetInstVersionEntity;
  6. import cn.com.lzt.budget.instversion.service.BudgetInstVersionServiceI;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.apache.log4j.Logger;
  9. import org.jeecgframework.core.beanvalidator.BeanValidators;
  10. import org.jeecgframework.core.common.controller.BaseController;
  11. import org.jeecgframework.core.common.exception.BusinessException;
  12. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  13. import org.jeecgframework.core.common.model.json.AjaxJson;
  14. import org.jeecgframework.core.common.model.json.DataGrid;
  15. import org.jeecgframework.core.constant.Globals;
  16. import org.jeecgframework.core.util.*;
  17. import org.jeecgframework.poi.excel.ExcelImportUtil;
  18. import org.jeecgframework.poi.excel.entity.ExportParams;
  19. import org.jeecgframework.poi.excel.entity.ImportParams;
  20. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  21. import org.jeecgframework.tag.core.easyui.TagUtil;
  22. import org.jeecgframework.web.system.pojo.base.TSUser;
  23. import org.jeecgframework.web.system.service.SystemService;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.http.HttpHeaders;
  26. import org.springframework.http.HttpStatus;
  27. import org.springframework.http.MediaType;
  28. import org.springframework.http.ResponseEntity;
  29. import org.springframework.stereotype.Controller;
  30. import org.springframework.ui.ModelMap;
  31. import org.springframework.web.bind.annotation.*;
  32. import org.springframework.web.multipart.MultipartFile;
  33. import org.springframework.web.multipart.MultipartHttpServletRequest;
  34. import org.springframework.web.servlet.ModelAndView;
  35. import org.springframework.web.util.UriComponentsBuilder;
  36. import javax.servlet.http.HttpServletRequest;
  37. import javax.servlet.http.HttpServletResponse;
  38. import javax.validation.ConstraintViolation;
  39. import javax.validation.Validator;
  40. import java.io.IOException;
  41. import java.net.URI;
  42. import java.util.*;
  43. /**
  44. * @Title: Controller
  45. * @Description: 实例版本
  46. * @author onlineGenerator
  47. * @date 2020-08-01 08:02:35
  48. * @version V1.0
  49. *
  50. */
  51. @Controller
  52. @RequestMapping("/budgetInstVersionController")
  53. public class BudgetInstVersionController extends BaseController {
  54. /**
  55. * Logger for this class
  56. */
  57. private static final Logger logger = Logger.getLogger(BudgetInstVersionController.class);
  58. @Autowired
  59. private BudgetInstVersionServiceI budgetInstVersionService;
  60. @Autowired
  61. private SystemService systemService;
  62. @Autowired
  63. private Validator validator;
  64. /**
  65. * 实例版本列表 页面跳转
  66. *
  67. * @return
  68. */
  69. @RequestMapping(params = "list")
  70. public ModelAndView list(HttpServletRequest request) {
  71. return new ModelAndView("cn/com/lzt/budget/instversion/budgetInstVersionList");
  72. }
  73. /**
  74. * easyui AJAX请求数据
  75. *
  76. * @param request
  77. * @param response
  78. * @param dataGrid
  79. */
  80. @RequestMapping(params = "datagrid")
  81. public void datagrid(BudgetInstVersionEntity budgetInstVersion,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  82. CriteriaQuery cq = new CriteriaQuery(BudgetInstVersionEntity.class, dataGrid);
  83. //查询条件组装器
  84. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInstVersion, request.getParameterMap());
  85. try{
  86. //自定义追加查询条件
  87. }catch (Exception e) {
  88. throw new BusinessException(e.getMessage());
  89. }
  90. cq.add();
  91. this.budgetInstVersionService.getDataGridReturn(cq, true);
  92. TagUtil.datagrid(response, dataGrid);
  93. }
  94. /**
  95. * 删除实例版本
  96. *
  97. * @return
  98. */
  99. @RequestMapping(params = "doDel")
  100. @ResponseBody
  101. public AjaxJson doDel(BudgetInstVersionEntity budgetInstVersion, HttpServletRequest request) {
  102. String message = null;
  103. AjaxJson j = new AjaxJson();
  104. budgetInstVersion = systemService.getEntity(BudgetInstVersionEntity.class, budgetInstVersion.getId());
  105. message = "实例版本删除成功";
  106. try{
  107. budgetInstVersionService.delete(budgetInstVersion);
  108. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  109. }catch(Exception e){
  110. e.printStackTrace();
  111. message = "实例版本删除失败";
  112. throw new BusinessException(e.getMessage());
  113. }
  114. j.setMsg(message);
  115. return j;
  116. }
  117. /**
  118. * 批量删除实例版本
  119. *
  120. * @return
  121. */
  122. @RequestMapping(params = "doBatchDel")
  123. @ResponseBody
  124. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  125. String message = null;
  126. AjaxJson j = new AjaxJson();
  127. message = "实例版本删除成功";
  128. try{
  129. for(String id:ids.split(",")){
  130. BudgetInstVersionEntity budgetInstVersion = systemService.getEntity(BudgetInstVersionEntity.class,
  131. id
  132. );
  133. budgetInstVersionService.delete(budgetInstVersion);
  134. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  135. }
  136. }catch(Exception e){
  137. e.printStackTrace();
  138. message = "实例版本删除失败";
  139. throw new BusinessException(e.getMessage());
  140. }
  141. j.setMsg(message);
  142. return j;
  143. }
  144. /**
  145. * 添加实例版本
  146. *
  147. * @return
  148. */
  149. @RequestMapping(params = "doAdd")
  150. @ResponseBody
  151. public AjaxJson doAdd(BudgetInstVersionEntity budgetInstVersion, HttpServletRequest request) {
  152. String message = null;
  153. AjaxJson j = new AjaxJson();
  154. message = "版本保存成功";
  155. try{
  156. budgetInstVersion.setUserSave(1);
  157. budgetInstVersionService.save(budgetInstVersion);
  158. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  159. }catch(Exception e){
  160. e.printStackTrace();
  161. message = "版本保存失败";
  162. throw new BusinessException(e.getMessage());
  163. }
  164. j.setMsg(message);
  165. return j;
  166. }
  167. /**
  168. * 更新实例版本
  169. *
  170. * @return
  171. */
  172. @RequestMapping(params = "doUpdate")
  173. @ResponseBody
  174. public AjaxJson doUpdate(BudgetInstVersionEntity budgetInstVersion, HttpServletRequest request) {
  175. String message = null;
  176. AjaxJson j = new AjaxJson();
  177. message = "实例版本更新成功";
  178. BudgetInstVersionEntity t = budgetInstVersionService.get(BudgetInstVersionEntity.class, budgetInstVersion.getId());
  179. try {
  180. MyBeanUtils.copyBeanNotNull2Bean(budgetInstVersion, t);
  181. budgetInstVersionService.saveOrUpdate(t);
  182. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  183. } catch (Exception e) {
  184. e.printStackTrace();
  185. message = "实例版本更新失败";
  186. throw new BusinessException(e.getMessage());
  187. }
  188. j.setMsg(message);
  189. return j;
  190. }
  191. /**
  192. * 实例版本新增页面跳转
  193. *
  194. * @return
  195. */
  196. @RequestMapping(params = "goAdd")
  197. public ModelAndView goAdd(BudgetInstVersionEntity budgetInstVersion, HttpServletRequest req) {
  198. // String instId = budgetInstVersion.getInstId();
  199. String defaultVersionName = DataUtils.formatDate(new Date(),"yyyyMMddHHmmss");
  200. req.setAttribute("defaultVersionName",defaultVersionName);
  201. return new ModelAndView("cn/com/lzt/budget/instversion/budgetInstVersion-add");
  202. }
  203. /**
  204. * 实例版本编辑页面跳转
  205. *
  206. * @return
  207. */
  208. @RequestMapping(params = "goUpdate")
  209. public ModelAndView goUpdate(BudgetInstVersionEntity budgetInstVersion, HttpServletRequest req) {
  210. if (StringUtil.isNotEmpty(budgetInstVersion.getId())) {
  211. budgetInstVersion = budgetInstVersionService.getEntity(BudgetInstVersionEntity.class, budgetInstVersion.getId());
  212. req.setAttribute("budgetInstVersionPage", budgetInstVersion);
  213. }
  214. return new ModelAndView("cn/com/lzt/budget/instversion/budgetInstVersion-update");
  215. }
  216. /**
  217. * 导入功能跳转
  218. *
  219. * @return
  220. */
  221. @RequestMapping(params = "upload")
  222. public ModelAndView upload(HttpServletRequest req) {
  223. req.setAttribute("controller_name","budgetInstVersionController");
  224. return new ModelAndView("common/upload/pub_excel_upload");
  225. }
  226. /**
  227. * 导出excel
  228. *
  229. * @param request
  230. * @param response
  231. */
  232. @RequestMapping(params = "exportXls")
  233. public String exportXls(BudgetInstVersionEntity budgetInstVersion,HttpServletRequest request,HttpServletResponse response
  234. , DataGrid dataGrid,ModelMap modelMap) {
  235. CriteriaQuery cq = new CriteriaQuery(BudgetInstVersionEntity.class, dataGrid);
  236. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, budgetInstVersion, request.getParameterMap());
  237. List<BudgetInstVersionEntity> budgetInstVersions = this.budgetInstVersionService.getListByCriteriaQuery(cq,false);
  238. modelMap.put(NormalExcelConstants.FILE_NAME,"实例版本");
  239. modelMap.put(NormalExcelConstants.CLASS,BudgetInstVersionEntity.class);
  240. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("实例版本列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  241. "导出信息"));
  242. modelMap.put(NormalExcelConstants.DATA_LIST,budgetInstVersions);
  243. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  244. }
  245. /**
  246. * 导出excel 使模板
  247. *
  248. * @param request
  249. * @param response
  250. */
  251. @RequestMapping(params = "exportXlsByT")
  252. public String exportXlsByT(BudgetInstVersionEntity budgetInstVersion,HttpServletRequest request,HttpServletResponse response
  253. , DataGrid dataGrid,ModelMap modelMap) {
  254. modelMap.put(NormalExcelConstants.FILE_NAME,"实例版本");
  255. modelMap.put(NormalExcelConstants.CLASS,BudgetInstVersionEntity.class);
  256. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("实例版本列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  257. "导出信息"));
  258. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  259. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  260. }
  261. @SuppressWarnings("unchecked")
  262. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  263. @ResponseBody
  264. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  265. AjaxJson j = new AjaxJson();
  266. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  267. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  268. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  269. MultipartFile file = entity.getValue();// 获取上传文件对象
  270. ImportParams params = new ImportParams();
  271. params.setTitleRows(2);
  272. params.setHeadRows(1);
  273. params.setNeedSave(true);
  274. try {
  275. List<BudgetInstVersionEntity> listBudgetInstVersionEntitys = ExcelImportUtil.importExcel(file.getInputStream(),BudgetInstVersionEntity.class,params);
  276. for (BudgetInstVersionEntity budgetInstVersion : listBudgetInstVersionEntitys) {
  277. budgetInstVersionService.save(budgetInstVersion);
  278. }
  279. j.setMsg("文件导入成功!");
  280. } catch (Exception e) {
  281. j.setMsg("文件导入失败!");
  282. logger.error(ExceptionUtil.getExceptionMessage(e));
  283. }finally{
  284. try {
  285. file.getInputStream().close();
  286. } catch (IOException e) {
  287. e.printStackTrace();
  288. }
  289. }
  290. }
  291. return j;
  292. }
  293. @RequestMapping(method = RequestMethod.GET)
  294. @ResponseBody
  295. public List<BudgetInstVersionEntity> list() {
  296. List<BudgetInstVersionEntity> listBudgetInstVersions=budgetInstVersionService.getList(BudgetInstVersionEntity.class);
  297. return listBudgetInstVersions;
  298. }
  299. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  300. @ResponseBody
  301. public ResponseEntity<?> get(@PathVariable("id") String id) {
  302. BudgetInstVersionEntity task = budgetInstVersionService.get(BudgetInstVersionEntity.class, id);
  303. if (task == null) {
  304. return new ResponseEntity(HttpStatus.NOT_FOUND);
  305. }
  306. return new ResponseEntity(task, HttpStatus.OK);
  307. }
  308. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  309. @ResponseBody
  310. public ResponseEntity<?> create(@RequestBody BudgetInstVersionEntity budgetInstVersion, UriComponentsBuilder uriBuilder) {
  311. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  312. Set<ConstraintViolation<BudgetInstVersionEntity>> failures = validator.validate(budgetInstVersion);
  313. if (!failures.isEmpty()) {
  314. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  315. }
  316. //保存
  317. try{
  318. budgetInstVersionService.save(budgetInstVersion);
  319. } catch (Exception e) {
  320. e.printStackTrace();
  321. return new ResponseEntity(HttpStatus.NO_CONTENT);
  322. }
  323. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  324. String id = budgetInstVersion.getId();
  325. URI uri = uriBuilder.path("/rest/budgetInstVersionController/" + id).build().toUri();
  326. HttpHeaders headers = new HttpHeaders();
  327. headers.setLocation(uri);
  328. return new ResponseEntity(headers, HttpStatus.CREATED);
  329. }
  330. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  331. public ResponseEntity<?> update(@RequestBody BudgetInstVersionEntity budgetInstVersion) {
  332. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  333. Set<ConstraintViolation<BudgetInstVersionEntity>> failures = validator.validate(budgetInstVersion);
  334. if (!failures.isEmpty()) {
  335. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  336. }
  337. //保存
  338. try{
  339. budgetInstVersionService.saveOrUpdate(budgetInstVersion);
  340. } catch (Exception e) {
  341. e.printStackTrace();
  342. return new ResponseEntity(HttpStatus.NO_CONTENT);
  343. }
  344. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  345. return new ResponseEntity(HttpStatus.NO_CONTENT);
  346. }
  347. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  348. @ResponseStatus(HttpStatus.NO_CONTENT)
  349. public void delete(@PathVariable("id") String id) {
  350. budgetInstVersionService.deleteEntityById(BudgetInstVersionEntity.class, id);
  351. }
  352. @RequestMapping(params = "select")
  353. public ModelAndView select(HttpServletRequest request) {
  354. return new ModelAndView("cn/com/lzt/budget/instversion/budgetInstVersion-select");
  355. }
  356. @RequestMapping(params = "selectDatagrid")
  357. public void selectDatagrid(BudgetInstVersionEntity entity,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  358. CriteriaQuery cq = new CriteriaQuery(BudgetInstVersionEntity.class, dataGrid);
  359. //查询条件组装器
  360. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, entity, request.getParameterMap());
  361. try{
  362. String noAuth = request.getParameter("noAuth");
  363. if(!StringUtils.equals(noAuth, "1")) {
  364. TSUser tsUser = ResourceUtil.getSessionUser();
  365. cq.eq("createBy", tsUser.getUserName());
  366. }
  367. //自定义追加查询条件
  368. }catch (Exception e) {
  369. throw new BusinessException(e.getMessage());
  370. }
  371. cq.add();
  372. this.systemService.getDataGridReturn(cq, true);
  373. TagUtil.datagrid(response, dataGrid);
  374. }
  375. @RequestMapping(params = "revert")
  376. @ResponseBody
  377. public AjaxJson revert(BudgetInstVersionEntity entity, HttpServletRequest request) {
  378. String message = null;
  379. AjaxJson j = new AjaxJson();
  380. message = "版本还原成功";
  381. try{
  382. String versionId = entity.getId();
  383. entity = budgetInstVersionService.get(BudgetInstVersionEntity.class,versionId);
  384. String instId = entity.getInstId();
  385. BudgetInstEntity inst = systemService.get(BudgetInstEntity.class,instId );
  386. String type = inst.getType();
  387. j.setAttributes(Collections.<String,Object>singletonMap("instType", type));
  388. if(StringUtils.equals(type, BudgetConstant.TEMPSHEET_TYPE_ORDERS) || StringUtils.equals(type, BudgetConstant.TEMPSHEET_TYPE_HR)) {//物料是全覆盖
  389. String json = entity.getJson();
  390. j.setObj(json);
  391. }else{
  392. List<BudgetInstVersionChange> list=budgetInstVersionService.findRestoreData(instId,versionId);
  393. j.setObj(list);
  394. }
  395. }catch(Exception e){
  396. e.printStackTrace();
  397. message = "版本还原失败";
  398. throw new BusinessException(e.getMessage());
  399. }
  400. j.setMsg(message);
  401. return j;
  402. }
  403. @RequestMapping(params = "goDiff")
  404. public ModelAndView goDiff(HttpServletRequest req) {
  405. String instId = req.getParameter("instId");
  406. if(StringUtils.isNotBlank(instId)){
  407. BudgetInstEntity inst = systemService.getEntity(BudgetInstEntity.class, instId);
  408. req.setAttribute("inst",inst);
  409. }
  410. String versionId1 = req.getParameter("version1");
  411. if(StringUtils.isNotBlank(versionId1)){
  412. BudgetInstVersionEntity instVersion1 = systemService.getEntity(BudgetInstVersionEntity.class, versionId1);
  413. req.setAttribute("instVersion1",instVersion1);
  414. }
  415. String versionId2 = req.getParameter("version2");
  416. if(StringUtils.isNotBlank(versionId2)){
  417. BudgetInstVersionEntity instVersion2 = systemService.getEntity(BudgetInstVersionEntity.class, versionId2);
  418. req.setAttribute("instVersion2",instVersion2);
  419. }
  420. return new ModelAndView("cn/com/lzt/budget/instversion/budgetInstVersion-diff");
  421. }
  422. }