CarScheduleDetailController.java 15 KB

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