ContractPController.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665
  1. package cn.com.lzt.contractp.controller;
  2. import cn.com.lzt.contractinvoice.entity.ContractInvoiceEntity;
  3. import cn.com.lzt.contractp.entity.ContractPEntity;
  4. import cn.com.lzt.contractp.page.ContractPPage;
  5. import cn.com.lzt.contractp.service.ContractPServiceI;
  6. import cn.com.lzt.contractpayment.entity.ContractPaymentEntity;
  7. import cn.com.lzt.contractpitem.entity.ContractPItemEntity;
  8. import cn.com.lzt.contractppayrule.entity.ContractPPayruleEntity;
  9. import cn.com.lzt.relatedunits.entity.RelatedUnitsEntity;
  10. import cn.com.lzt.tools.DecimalUtils;
  11. import cn.com.lzt.workflow.service.WorkflowServiceI;
  12. import com.xcgl.utils.OrderNumTools;
  13. import org.apache.commons.lang.xwork.StringUtils;
  14. import org.apache.log4j.Logger;
  15. import org.jeecgframework.core.beanvalidator.BeanValidators;
  16. import org.jeecgframework.core.common.controller.BaseController;
  17. import org.jeecgframework.core.common.exception.BusinessException;
  18. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  19. import org.jeecgframework.core.common.model.json.AjaxJson;
  20. import org.jeecgframework.core.common.model.json.DataGrid;
  21. import org.jeecgframework.core.constant.Globals;
  22. import org.jeecgframework.core.util.*;
  23. import org.jeecgframework.poi.excel.ExcelImportUtil;
  24. import org.jeecgframework.poi.excel.entity.ExportParams;
  25. import org.jeecgframework.poi.excel.entity.ImportParams;
  26. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  27. import org.jeecgframework.tag.core.easyui.TagUtil;
  28. import org.jeecgframework.tag.vo.datatable.SortDirection;
  29. import org.jeecgframework.web.system.pojo.base.TSDepart;
  30. import org.jeecgframework.web.system.service.SystemService;
  31. import org.jeecgframework.workflow.common.WorkFlowGlobals;
  32. import org.springframework.beans.factory.annotation.Autowired;
  33. import org.springframework.http.HttpHeaders;
  34. import org.springframework.http.HttpStatus;
  35. import org.springframework.http.MediaType;
  36. import org.springframework.http.ResponseEntity;
  37. import org.springframework.stereotype.Controller;
  38. import org.springframework.ui.ModelMap;
  39. import org.springframework.web.bind.annotation.*;
  40. import org.springframework.web.multipart.MultipartFile;
  41. import org.springframework.web.multipart.MultipartHttpServletRequest;
  42. import org.springframework.web.servlet.ModelAndView;
  43. import org.springframework.web.util.UriComponentsBuilder;
  44. import javax.servlet.http.HttpServletRequest;
  45. import javax.servlet.http.HttpServletResponse;
  46. import javax.validation.ConstraintViolation;
  47. import javax.validation.Validator;
  48. import java.io.IOException;
  49. import java.net.URI;
  50. import java.util.ArrayList;
  51. import java.util.List;
  52. import java.util.Map;
  53. import java.util.Set;
  54. /**
  55. * @Title: Controller
  56. * @Description: 物料采购合同
  57. * @author onlineGenerator
  58. * @date 2019-03-25 12:00:32
  59. * @version V1.0
  60. *
  61. */
  62. @Controller
  63. @RequestMapping("/contractPController")
  64. public class ContractPController extends BaseController {
  65. /**
  66. * Logger for this class
  67. */
  68. private static final Logger logger = Logger.getLogger(ContractPController.class);
  69. @Autowired
  70. private ContractPServiceI contractPService;
  71. @Autowired
  72. private SystemService systemService;
  73. @Autowired
  74. private Validator validator;
  75. @Autowired
  76. private WorkflowServiceI workflowService;
  77. /**
  78. * 物料采购合同列表 页面跳转
  79. *
  80. * @return
  81. */
  82. @RequestMapping(params = "list")
  83. public ModelAndView list(HttpServletRequest request) {
  84. return new ModelAndView("cn/com/lzt/contractp/contractpList");
  85. }
  86. /**
  87. * easyui AJAX请求数据
  88. *
  89. * @param request
  90. * @param response
  91. * @param dataGrid
  92. * @param user
  93. */
  94. @RequestMapping(params = "datagrid")
  95. public void datagrid(ContractPEntity contract,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  96. CriteriaQuery cq = new CriteriaQuery(ContractPEntity.class, dataGrid);
  97. String contractCode = request.getParameter("code");
  98. String contractName = request.getParameter("name");
  99. String contractDescription = request.getParameter("description");
  100. //查询条件组装器
  101. if(StringUtils.isNotBlank(contractCode)){
  102. //模糊查询
  103. cq.like("code", "%"+contractCode+"%");
  104. contract.setCode(null);
  105. }
  106. if(StringUtils.isNotBlank(contractName)){
  107. //模糊查询
  108. cq.like("name", "%"+contractName+"%");
  109. contract.setName(null);
  110. }
  111. if(StringUtils.isNotBlank(contractDescription)){
  112. //模糊查询
  113. cq.like("description", "%"+contractDescription+"%");
  114. contract.setDescription(null);
  115. }
  116. cq.addOrder("startdate", SortDirection.desc);
  117. try{
  118. //查询条件组装器
  119. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, contract);
  120. }catch (Exception e) {
  121. throw new BusinessException(e.getMessage());
  122. }
  123. cq.add();
  124. this.contractPService.getDataGridReturn(cq, true);
  125. TagUtil.datagrid(response, dataGrid);
  126. }
  127. /**
  128. * 选择合同列表界面
  129. * 应用场景:支付申请时,先选择合同
  130. * */
  131. @RequestMapping(params = "selectlist")
  132. public ModelAndView selectlist(HttpServletRequest request) {
  133. return new ModelAndView("cn/com/lzt/contractp/selectContractPList");
  134. }
  135. /**
  136. * 选择合同列表加载数据
  137. * 应用场景:支付申请时,先选择合同
  138. * */
  139. @RequestMapping(params = "selRefDatagridByUser")
  140. public void selRefDatagridByUser(ContractPEntity contract,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  141. String contractCode = request.getParameter("code");
  142. String contractName = request.getParameter("name");
  143. String contractDescription = request.getParameter("description");
  144. StringBuffer sbCondition = new StringBuffer();
  145. //默认查询条件
  146. sbCondition.append(" totalamount > ifnull(totalpayment,0) and bpmStatus = '")
  147. .append(Globals.BPM_STATUS_FINISHED)
  148. .append("' and busstatus = '")
  149. .append(Globals.CONTRACT_STATUS_ACTIVE)
  150. .append("' ");
  151. //查询条件组装器
  152. //模糊查询
  153. if(StringUtils.isNotBlank(contractCode)){
  154. sbCondition.append(" and code like '").append(contractCode).append("'");
  155. }
  156. if(StringUtils.isNotBlank(contractName)){
  157. sbCondition.append(" and name like '").append(contractName).append("'");
  158. }
  159. if(StringUtils.isNotBlank(contractDescription)){
  160. sbCondition.append(" and description like '").append(contractDescription).append("'");
  161. }
  162. String hql0 = "from ContractPEntity where "+sbCondition.toString() +" order by startdate desc";
  163. List<ContractPEntity> contractList = systemService.findHql(hql0);
  164. dataGrid.setResults(contractList);
  165. TagUtil.datagrid(response, dataGrid);
  166. }
  167. /**
  168. * 删除物料采购合同
  169. *
  170. * @return
  171. */
  172. @RequestMapping(params = "doDel")
  173. @ResponseBody
  174. public AjaxJson doDel(ContractPEntity contract, HttpServletRequest request) {
  175. AjaxJson j = new AjaxJson();
  176. contract = systemService.getEntity(ContractPEntity.class, contract.getId());
  177. String message = "物料采购合同删除成功";
  178. try{
  179. contractPService.delMain(contract);
  180. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  181. }catch(Exception e){
  182. e.printStackTrace();
  183. message = "物料采购合同删除失败";
  184. throw new BusinessException(e.getMessage());
  185. }
  186. j.setMsg(message);
  187. return j;
  188. }
  189. /**
  190. * 批量删除物料采购合同
  191. *
  192. * @return
  193. */
  194. @RequestMapping(params = "doBatchDel")
  195. @ResponseBody
  196. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  197. AjaxJson j = new AjaxJson();
  198. String message = "物料采购合同删除成功";
  199. try{
  200. for(String id:ids.split(",")){
  201. ContractPEntity contract = systemService.getEntity(ContractPEntity.class,
  202. id
  203. );
  204. contractPService.delMain(contract);
  205. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  206. }
  207. }catch(Exception e){
  208. e.printStackTrace();
  209. message = "物料采购合同删除失败";
  210. throw new BusinessException(e.getMessage());
  211. }
  212. j.setMsg(message);
  213. return j;
  214. }
  215. /**
  216. * 添加物料采购合同
  217. *
  218. * @param ids
  219. * @return
  220. */
  221. @RequestMapping(params = "doAdd")
  222. @ResponseBody
  223. public AjaxJson doAdd(ContractPEntity contract,ContractPPage ContractPPage, HttpServletRequest request) {
  224. List<ContractPPayruleEntity> contractPPayruleList = ContractPPage.getContractPPayruleList();
  225. List<ContractPItemEntity> contractItemList = ContractPPage.getContractPItemList();
  226. AjaxJson j = new AjaxJson();
  227. String message = "添加成功";
  228. try{
  229. //设置合同初始状态为已签订
  230. contract.setBusstatus(Globals.CONTRACT_STATUS_SIGN);
  231. //设置合同类型为物料采购合同
  232. contract.setType(Globals.CONTRACT_TYPE_OUTSERVICE);
  233. contract.setTotalincome(DecimalUtils.ZERO);
  234. contract.setTotalinvoice(DecimalUtils.ZERO);
  235. contract.setTotalpayment(DecimalUtils.ZERO);
  236. //如果合同编码为空,则按照编码规则设置默认编码(合同编码可编辑,用户签订合同时,合同上可能已经有编码)
  237. if(StringUtil.isEmpty(contract.getCode())) {
  238. contract.setCode(OrderNumTools.generateNextBillCode(Globals.CODE_PREFIX_CONTRACT_PURCHASE,"t_b_contract_p","code",4));
  239. }
  240. contractPService.addMain(contract, contractPPayruleList,contractItemList);
  241. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  242. }catch(Exception e){
  243. e.printStackTrace();
  244. message = "物料采购合同添加失败";
  245. throw new BusinessException(e.getMessage());
  246. }
  247. j.setMsg(message);
  248. return j;
  249. }
  250. /**
  251. * 更新物料采购合同
  252. *
  253. * @param ids
  254. * @return
  255. */
  256. @RequestMapping(params = "doUpdate")
  257. @ResponseBody
  258. public AjaxJson doUpdate(ContractPEntity contract,ContractPPage ContractPPage, HttpServletRequest request) {
  259. List<ContractPPayruleEntity> contractPPayruleList = ContractPPage.getContractPPayruleList();
  260. List<ContractPItemEntity> contractItemList = ContractPPage.getContractPItemList();
  261. AjaxJson j = new AjaxJson();
  262. String message = "更新成功";
  263. try{
  264. contractPService.updateMain(contract, contractPPayruleList,contractItemList);
  265. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  266. }catch(Exception e){
  267. e.printStackTrace();
  268. message = "更新物料采购合同失败";
  269. throw new BusinessException(e.getMessage());
  270. }
  271. j.setMsg(message);
  272. return j;
  273. }
  274. /**
  275. * 物料采购合同新增页面跳转
  276. *
  277. * @return
  278. */
  279. @RequestMapping(params = "goAdd")
  280. public ModelAndView goAdd(ContractPEntity contract, HttpServletRequest req) {
  281. if (StringUtil.isNotEmpty(contract.getId())) {
  282. contract = contractPService.getEntity(ContractPEntity.class, contract.getId());
  283. req.setAttribute("ContractPPage", contract);
  284. }
  285. return new ModelAndView("cn/com/lzt/contractp/contractp-add");
  286. }
  287. /**
  288. * 物料采购合同编辑页面跳转
  289. *
  290. * @return
  291. */
  292. @RequestMapping(params = "goUpdate")
  293. public ModelAndView goUpdate(ContractPEntity contract, HttpServletRequest req) {
  294. if (StringUtil.isNotEmpty(contract.getId())) {
  295. contract = contractPService.getEntity(ContractPEntity.class, contract.getId());
  296. if(StringUtil.isNotEmpty(contract.getProjectid())) {
  297. contract.setProjectName(((TSDepart)systemService.getEntity(TSDepart.class, contract.getProjectid())).getDepartname());
  298. }
  299. if(StringUtil.isNotEmpty(contract.getPartnerid())) {
  300. contract.setPartnerName(((RelatedUnitsEntity)systemService.getEntity(RelatedUnitsEntity.class, contract.getPartnerid())).getUnitName());
  301. }
  302. // contractPService.getEntity(ContractPEntity.class, contract.getId());
  303. req.setAttribute("ContractPPage", contract);
  304. }
  305. return new ModelAndView("cn/com/lzt/contractp/contractp-update");
  306. }
  307. @RequestMapping(params = "goUpdateMobile")
  308. public ModelAndView goUpdateMobile(ContractPEntity contract, HttpServletRequest req) {
  309. if (StringUtil.isNotEmpty(contract.getId())) {
  310. contract = contractPService.getEntity(ContractPEntity.class, contract.getId());
  311. if(StringUtil.isNotEmpty(contract.getProjectid())) {
  312. contract.setProjectName(((TSDepart)systemService.getEntity(TSDepart.class, contract.getProjectid())).getDepartname());
  313. }
  314. if(StringUtil.isNotEmpty(contract.getPartnerid())) {
  315. contract.setPartnerName(((RelatedUnitsEntity)systemService.getEntity(RelatedUnitsEntity.class, contract.getPartnerid())).getUnitName());
  316. }
  317. // contractPService.getEntity(ContractPEntity.class, contract.getId());
  318. req.setAttribute("ContractPPage", contract);
  319. }
  320. return new ModelAndView("cn/com/lzt/contractp/contractp-update-mobile");
  321. }
  322. @RequestMapping(params = "goViewBusi")
  323. public ModelAndView goBusiView(ContractPEntity contract, HttpServletRequest request) {
  324. request.setAttribute("viewFlag", "1");
  325. String taskid = oConvertUtils.getString(request.getParameter("taskId"));
  326. if(oConvertUtils.isNotEmpty(taskid)){
  327. // FormProcUtil.initWorkflowParam(request);
  328. request.setAttribute("taskId",taskid);
  329. request.setAttribute(WorkFlowGlobals.ProcNode_Start, "contractPController.do?goUpdate&load=detail&id="+workflowService.getBpmDataId(taskid));
  330. }
  331. // if (StringUtil.isNotEmpty(contract.getId())) {
  332. // contract = systemService.getEntity(ContractPEntity.class, contract.getId());
  333. // if(StringUtil.isNotEmpty(contract.getProjectid())) {
  334. // contract.setProjectName(((TSDepart)systemService.getEntity(TSDepart.class, contract.getProjectid())).getDepartname());
  335. // }
  336. // if(StringUtil.isNotEmpty(contract.getPartnerid())) {
  337. // contract.setPartnerName(((RelatedUnitsEntity)systemService.getEntity(RelatedUnitsEntity.class, contract.getPartnerid())).getUnitName());
  338. // }
  339. // }
  340. return new ModelAndView("workflow/task/single/task-form");
  341. }
  342. @RequestMapping(params = "goView")
  343. public ModelAndView goView(ContractPEntity contract, HttpServletRequest request) {
  344. String taskId = request.getParameter("taskId");
  345. //【我发起的流程】-【详情】中查看业务数据时,只看单据信息,不预览审批流程
  346. if(StringUtils.isEmpty(taskId)) {
  347. contract = contractPService.getEntity(ContractPEntity.class, contract.getId());
  348. if(StringUtil.isNotEmpty(contract.getProjectid())) {
  349. contract.setProjectName(((TSDepart)systemService.getEntity(TSDepart.class, contract.getProjectid())).getDepartname());
  350. }
  351. if(StringUtil.isNotEmpty(contract.getPartnerid())) {
  352. contract.setPartnerName(((RelatedUnitsEntity)systemService.getEntity(RelatedUnitsEntity.class, contract.getPartnerid())).getUnitName());
  353. }
  354. // contractPService.getEntity(ContractPEntity.class, contract.getId());
  355. request.setAttribute("ContractPPage", contract);
  356. request.setAttribute("viewFlag", "1");
  357. return new ModelAndView("cn/com/lzt/contractp/contractp-update");
  358. }
  359. if(StringUtils.isNotEmpty(request.getParameter("flag"))){
  360. //驳回重填表单
  361. request.setAttribute("url", "contractPController.do?goUpdate&return=1&id="+workflowService.getBpmDataId(taskId));
  362. }else {
  363. request.setAttribute("url", "contractPController.do?goUpdate&load=detail&id="+workflowService.getBpmDataId(taskId));
  364. }
  365. Map<String, Object> taskDetails = workflowService.getTaskDetails(taskId);
  366. request.setAttribute("busititle", "物料采购合同详细信息");
  367. request.setAttribute("id", workflowService.getBpmDataId(taskId));
  368. request.setAttribute("bpmLogList", taskDetails.get("bpmLogList"));
  369. request.setAttribute("taskId", taskDetails.get("taskId"));
  370. request.setAttribute("taskName", taskDetails.get("taskName"));
  371. request.setAttribute("task", taskDetails.get("task"));
  372. request.setAttribute("transitionList", taskDetails.get("transitionList"));
  373. request.setAttribute("nextCodeCount", taskDetails.get("nextCodeCount"));
  374. request.setAttribute("bpmLogListCount", taskDetails.get("bpmLogListCount"));
  375. request.setAttribute("bpmLogNewList", taskDetails.get("bpmLogNewList"));
  376. request.setAttribute("bpmLogNewListCount", taskDetails.get("bpmLogNewListCount"));
  377. request.setAttribute("histListNode", taskDetails.get("histListNode"));
  378. request.setAttribute("histListSize", taskDetails.get("histListSize"));
  379. request.setAttribute("turnbackTaskId", taskDetails.get("turnbackTaskId"));
  380. request.setAttribute("height", "678px");
  381. return new ModelAndView("cn/com/lzt/workflow/task-option");
  382. }
  383. /**
  384. * 加载明细列表[支付条款]
  385. *
  386. * @return
  387. */
  388. @RequestMapping(params = "contractPPayruleList")
  389. public ModelAndView contractPayruleList(ContractPEntity contract, HttpServletRequest req) {
  390. //===================================================================================
  391. //获取参数
  392. Object id0 = contract.getId();
  393. //===================================================================================
  394. //查询-支付条款
  395. String hql0 = "from ContractPPayruleEntity where 1 = 1 AND cONTRACTID =? ";
  396. try{
  397. List<ContractPPayruleEntity> ContractPPayruleEntityList = systemService.findHql(hql0,id0);
  398. req.setAttribute("contractPPayruleList", ContractPPayruleEntityList);
  399. }catch(Exception e){
  400. logger.info(e.getMessage());
  401. }
  402. return new ModelAndView("cn/com/lzt/contractppayrule/contractPPayruleList");
  403. }
  404. /**
  405. * 加载明细列表[货品、服务明细]
  406. *
  407. * @return
  408. */
  409. @RequestMapping(params = "contractPItemList")
  410. public ModelAndView contractItemList(ContractPEntity contract, HttpServletRequest req) {
  411. //===================================================================================
  412. //获取参数
  413. Object id1 = contract.getId();
  414. //===================================================================================
  415. //查询-货品、服务明细
  416. String hql1 = "from ContractPItemEntity where 1 = 1 AND cONTRACTID =? ";
  417. try{
  418. List<ContractPItemEntity> ContractPItemEntityList = systemService.findHql(hql1,id1);
  419. req.setAttribute("contractPItemList", ContractPItemEntityList);
  420. }catch(Exception e){
  421. logger.info(e.getMessage());
  422. }
  423. return new ModelAndView("cn/com/lzt/contractpitem/contractPItemList");
  424. }
  425. @RequestMapping(params = "contractPaymentList")
  426. public ModelAndView contractPaymentList(ContractPaymentEntity contract, HttpServletRequest req) {
  427. //===================================================================================
  428. //获取参数
  429. Object id1 = contract.getContractid();
  430. //===================================================================================
  431. //查询-货品、服务明细
  432. String hql1 = "from ContractPaymentEntity where 1 = 1 AND cONTRACTID =? and paystatus=? order by paydate desc";
  433. try{
  434. List<ContractPaymentEntity> contractPaymentEntityList = systemService.findHql(hql1,id1,Globals.PAY_STATUS_YES);
  435. req.setAttribute("contractPaymentList", contractPaymentEntityList);
  436. }catch(Exception e){
  437. logger.info(e.getMessage());
  438. }
  439. return new ModelAndView("cn/com/lzt/contractpayment/contractPaymentListbody");
  440. }
  441. @RequestMapping(params = "contractInvoiceList")
  442. public ModelAndView contractInvoiceList(ContractInvoiceEntity contract, HttpServletRequest req) {
  443. //===================================================================================
  444. //获取参数
  445. Object id1 = contract.getContractid();
  446. //===================================================================================
  447. //查询-货品、服务明细
  448. String hql1 = "from ContractInvoiceEntity where 1 = 1 AND cONTRACTID =? order by invoicedate desc ";
  449. try{
  450. List<ContractInvoiceEntity> contractInvoiceEntityList = systemService.findHql(hql1,id1);
  451. req.setAttribute("contractInvoiceList", contractInvoiceEntityList);
  452. }catch(Exception e){
  453. logger.info(e.getMessage());
  454. }
  455. return new ModelAndView("cn/com/lzt/contractinvoice/contractInvoiceListbody");
  456. }
  457. /**
  458. * 导出excel
  459. *
  460. * @param request
  461. * @param response
  462. */
  463. @RequestMapping(params = "exportXls")
  464. public String exportXls(ContractPEntity contract,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) {
  465. CriteriaQuery cq = new CriteriaQuery(ContractPEntity.class, dataGrid);
  466. //查询条件组装器
  467. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, contract);
  468. try{
  469. //自定义追加查询条件
  470. }catch (Exception e) {
  471. throw new BusinessException(e.getMessage());
  472. }
  473. cq.add();
  474. List<ContractPEntity> list=this.contractPService.getListByCriteriaQuery(cq, false);
  475. List<ContractPPage> pageList=new ArrayList<ContractPPage>();
  476. if(list!=null&&list.size()>0){
  477. for(ContractPEntity entity:list){
  478. try{
  479. ContractPPage page=new ContractPPage();
  480. MyBeanUtils.copyBeanNotNull2Bean(entity,page);
  481. Object id0 = entity.getId();
  482. String hql0 = "from ContractPPayruleEntity where 1 = 1 AND cONTRACTID =? ";
  483. List<ContractPPayruleEntity> ContractPPayruleEntityList = systemService.findHql(hql0,id0);
  484. page.setContractPPayruleList(ContractPPayruleEntityList);
  485. Object id1 = entity.getId();
  486. String hql1 = "from ContractPItemEntity where 1 = 1 AND cONTRACTID =? ";
  487. List<ContractPItemEntity> ContractPItemEntityList = systemService.findHql(hql1,id1);
  488. page.setContractPItemList(ContractPItemEntityList);
  489. pageList.add(page);
  490. }catch(Exception e){
  491. logger.info(e.getMessage());
  492. }
  493. }
  494. }
  495. map.put(NormalExcelConstants.FILE_NAME,"物料采购合同");
  496. map.put(NormalExcelConstants.CLASS,ContractPPage.class);
  497. map.put(NormalExcelConstants.PARAMS,new ExportParams("物料采购合同列表", "导出人:Jeecg",
  498. "导出信息"));
  499. map.put(NormalExcelConstants.DATA_LIST,pageList);
  500. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  501. }
  502. /**
  503. * 通过excel导入数据
  504. * @param request
  505. * @param
  506. * @return
  507. */
  508. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  509. @ResponseBody
  510. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  511. AjaxJson j = new AjaxJson();
  512. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  513. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  514. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  515. MultipartFile file = entity.getValue();// 获取上传文件对象
  516. ImportParams params = new ImportParams();
  517. params.setTitleRows(2);
  518. params.setHeadRows(2);
  519. params.setNeedSave(true);
  520. try {
  521. List<ContractPPage> list = ExcelImportUtil.importExcel(file.getInputStream(), ContractPPage.class, params);
  522. ContractPEntity entity1=null;
  523. for (ContractPPage page : list) {
  524. entity1=new ContractPEntity();
  525. MyBeanUtils.copyBeanNotNull2Bean(page,entity1);
  526. contractPService.addMain(entity1, page.getContractPPayruleList(),page.getContractPItemList());
  527. }
  528. j.setMsg("文件导入成功!");
  529. } catch (Exception e) {
  530. j.setMsg("文件导入失败!");
  531. logger.error(ExceptionUtil.getExceptionMessage(e));
  532. }finally{
  533. try {
  534. file.getInputStream().close();
  535. } catch (IOException e) {
  536. e.printStackTrace();
  537. }
  538. }
  539. }
  540. return j;
  541. }
  542. /**
  543. * 导出excel 使模板
  544. */
  545. @RequestMapping(params = "exportXlsByT")
  546. public String exportXlsByT(ModelMap map) {
  547. map.put(NormalExcelConstants.FILE_NAME,"物料采购合同");
  548. map.put(NormalExcelConstants.CLASS,ContractPPage.class);
  549. map.put(NormalExcelConstants.PARAMS,new ExportParams("物料采购合同列表", "导出人:"+ ResourceUtil.getSessionUser().getRealName(),
  550. "导出信息"));
  551. map.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  552. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  553. }
  554. /**
  555. * 导入功能跳转
  556. *
  557. * @return
  558. */
  559. @RequestMapping(params = "upload")
  560. public ModelAndView upload(HttpServletRequest req) {
  561. req.setAttribute("controller_name", "contractController");
  562. return new ModelAndView("common/upload/pub_excel_upload");
  563. }
  564. @RequestMapping(method = RequestMethod.GET)
  565. @ResponseBody
  566. public List<ContractPEntity> list() {
  567. List<ContractPEntity> listContracts=contractPService.getList(ContractPEntity.class);
  568. return listContracts;
  569. }
  570. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  571. @ResponseBody
  572. public ResponseEntity<?> get(@PathVariable("id") String id) {
  573. ContractPEntity task = contractPService.get(ContractPEntity.class, id);
  574. if (task == null) {
  575. return new ResponseEntity(HttpStatus.NOT_FOUND);
  576. }
  577. return new ResponseEntity(task, HttpStatus.OK);
  578. }
  579. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  580. @ResponseBody
  581. public ResponseEntity<?> create(@RequestBody ContractPPage ContractPPage, UriComponentsBuilder uriBuilder) {
  582. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  583. Set<ConstraintViolation<ContractPPage>> failures = validator.validate(ContractPPage);
  584. if (!failures.isEmpty()) {
  585. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  586. }
  587. //保存
  588. List<ContractPPayruleEntity> contractPayruleList = ContractPPage.getContractPPayruleList();
  589. List<ContractPItemEntity> contractItemList = ContractPPage.getContractPItemList();
  590. ContractPEntity contract = new ContractPEntity();
  591. try{
  592. MyBeanUtils.copyBeanNotNull2Bean(contract,ContractPPage);
  593. }catch(Exception e){
  594. logger.info(e.getMessage());
  595. }
  596. contractPService.addMain(contract, contractPayruleList,contractItemList);
  597. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  598. String id = ContractPPage.getId();
  599. URI uri = uriBuilder.path("/rest/contractController/" + id).build().toUri();
  600. HttpHeaders headers = new HttpHeaders();
  601. headers.setLocation(uri);
  602. return new ResponseEntity(headers, HttpStatus.CREATED);
  603. }
  604. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  605. public ResponseEntity<?> update(@RequestBody ContractPPage ContractPPage) {
  606. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  607. Set<ConstraintViolation<ContractPPage>> failures = validator.validate(ContractPPage);
  608. if (!failures.isEmpty()) {
  609. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  610. }
  611. //保存
  612. List<ContractPPayruleEntity> contractPPayruleList = ContractPPage.getContractPPayruleList();
  613. List<ContractPItemEntity> contractPItemList = ContractPPage.getContractPItemList();
  614. ContractPEntity contract = new ContractPEntity();
  615. try{
  616. MyBeanUtils.copyBeanNotNull2Bean(contract,ContractPPage);
  617. }catch(Exception e){
  618. logger.info(e.getMessage());
  619. }
  620. contractPService.updateMain(contract, contractPPayruleList,contractPItemList);
  621. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  622. return new ResponseEntity(HttpStatus.NO_CONTENT);
  623. }
  624. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  625. @ResponseStatus(HttpStatus.NO_CONTENT)
  626. public void delete(@PathVariable("id") String id) {
  627. ContractPEntity contract = contractPService.get(ContractPEntity.class, id);
  628. contractPService.delMain(contract);
  629. }
  630. }