OrdersController.java 104 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287
  1. package cn.com.lzt.orders.controller;
  2. import cn.com.lzt.arrangeduty.dao.UserOrgMinidao;
  3. import cn.com.lzt.arrangeduty.dto.UserOrgDto;
  4. import cn.com.lzt.common.controller.BaseLztController;
  5. import cn.com.lzt.common.util.DictUtil;
  6. import cn.com.lzt.common.util.LztUtil;
  7. import cn.com.lzt.common.view.JsonDataModelAndView;
  8. import cn.com.lzt.goodscategory.entity.TBGoodsCategoryEntity;
  9. import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity;
  10. import cn.com.lzt.logistics.entity.TBLogisticsEntity;
  11. import cn.com.lzt.orderproducts.entity.OrderProductsEntity;
  12. import cn.com.lzt.orders.dao.OrdersDao;
  13. import cn.com.lzt.orders.entity.OrderMonthsEntity;
  14. import cn.com.lzt.orders.entity.OrdersEntity;
  15. import cn.com.lzt.orders.entity.OrdersFlowDto;
  16. import cn.com.lzt.orders.entity.ProductSpecificationLimitEntity;
  17. import cn.com.lzt.orders.page.OrdersPage;
  18. import cn.com.lzt.orders.service.OrdersServiceI;
  19. import cn.com.lzt.priceinfo.entity.TBPriceInfoEntity;
  20. import cn.com.lzt.relatedunits.entity.RelatedUnitsEntity;
  21. import cn.com.lzt.relatedunits.service.RelatedUnitsServiceI;
  22. import cn.com.lzt.tools.OrderNumTools;
  23. import cn.com.lzt.tools.SCMConsole;
  24. import cn.com.lzt.useractiviti.data.util.ActivitiPdfExport;
  25. import cn.com.lzt.useractiviti.data.util.ActivitiTools;
  26. import cn.com.lzt.warehouse.entity.WarehouseEntity;
  27. import com.lowagie.text.pdf.PdfPTable;
  28. import com.jeecg.qianbao.util.FormProcUtil;
  29. import com.xcgl.utils.XcglDateUtils;
  30. import com.xcgl.weixin.entity.WXAjaxJson;
  31. import com.xcgl.weixin.service.WXServiceI;
  32. import org.activiti.engine.HistoryService;
  33. import org.activiti.engine.RepositoryService;
  34. import org.activiti.engine.RuntimeService;
  35. import org.activiti.engine.TaskService;
  36. import org.activiti.engine.impl.RepositoryServiceImpl;
  37. import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
  38. import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
  39. import org.activiti.engine.impl.pvm.PvmTransition;
  40. import org.activiti.engine.impl.pvm.process.ActivityImpl;
  41. import org.activiti.engine.task.Task;
  42. import org.apache.commons.lang.CommonRandomUtil;
  43. import org.apache.commons.lang.xwork.StringUtils;
  44. import org.apache.log4j.Logger;
  45. import org.hibernate.criterion.Disjunction;
  46. import org.hibernate.criterion.Restrictions;
  47. import org.jeecgframework.core.beanvalidator.BeanValidators;
  48. import org.jeecgframework.core.common.dao.ICommonDao;
  49. import org.jeecgframework.core.common.exception.BusinessException;
  50. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  51. import org.jeecgframework.core.common.model.json.AjaxJson;
  52. import org.jeecgframework.core.common.model.json.DataGrid;
  53. import org.jeecgframework.core.constant.Globals;
  54. import org.jeecgframework.core.util.*;
  55. import org.jeecgframework.poi.excel.ExcelImportUtil;
  56. import org.jeecgframework.poi.excel.entity.ExportParams;
  57. import org.jeecgframework.poi.excel.entity.ImportParams;
  58. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  59. import org.jeecgframework.tag.core.easyui.TagUtil;
  60. import org.jeecgframework.tag.vo.datatable.SortDirection;
  61. import org.jeecgframework.web.system.dao.JeecgDictDao;
  62. import org.jeecgframework.web.system.pojo.base.DictEntity;
  63. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  64. import org.jeecgframework.web.system.pojo.base.TSUser;
  65. import org.jeecgframework.web.system.service.SystemService;
  66. import org.jeecgframework.workflow.common.WorkFlowGlobals;
  67. import org.jeecgframework.workflow.dto.DealOptionDto;
  68. import org.jeecgframework.workflow.model.activiti.ProcessHandle;
  69. import org.jeecgframework.workflow.model.activiti.Variable;
  70. import org.jeecgframework.workflow.pojo.activiti.ActRuTask;
  71. import org.jeecgframework.workflow.pojo.activiti.ActRuVariable;
  72. import org.jeecgframework.workflow.pojo.base.TPBpmLog;
  73. import org.jeecgframework.workflow.pojo.base.TSBaseBusQuery;
  74. import org.jeecgframework.workflow.service.ActivitiService;
  75. import org.jeecgframework.workflow.service.impl.TaskJeecgService;
  76. import org.jeecgframework.workflow.user.entity.TPTaskCcEntity;
  77. import org.springframework.beans.factory.annotation.Autowired;
  78. import org.springframework.http.HttpHeaders;
  79. import org.springframework.http.HttpStatus;
  80. import org.springframework.http.MediaType;
  81. import org.springframework.http.ResponseEntity;
  82. import org.springframework.stereotype.Controller;
  83. import org.springframework.ui.ModelMap;
  84. import org.springframework.web.bind.annotation.*;
  85. import org.springframework.web.multipart.MultipartFile;
  86. import org.springframework.web.multipart.MultipartHttpServletRequest;
  87. import org.springframework.web.servlet.ModelAndView;
  88. import org.springframework.web.util.UriComponentsBuilder;
  89. import javax.servlet.http.HttpServletRequest;
  90. import javax.servlet.http.HttpServletResponse;
  91. import javax.servlet.http.HttpSession;
  92. import javax.validation.ConstraintViolation;
  93. import javax.validation.Validator;
  94. import java.io.IOException;
  95. import java.math.BigDecimal;
  96. import java.net.URI;
  97. import java.text.DateFormat;
  98. import java.text.SimpleDateFormat;
  99. import java.util.*;
  100. //import cn.com.lzt.weixin.service.WXServiceI;
  101. /**
  102. * @author onlineGenerator
  103. * @version V1.0
  104. * @Title: Controller
  105. * @Description: 订单表
  106. * @date 2017-06-07 17:15:24
  107. */
  108. @Controller
  109. @RequestMapping("/ordersController")
  110. public class OrdersController extends BaseLztController {
  111. /**
  112. * Logger for this class
  113. */
  114. private static final Logger logger = Logger.getLogger(OrdersController.class);
  115. @Autowired
  116. private OrdersServiceI ordersService;
  117. @Autowired
  118. private SystemService systemService;
  119. @Autowired
  120. private Validator validator;
  121. @Autowired
  122. public ICommonDao commonDao = null;
  123. // @Autowired
  124. // private PaymentMiddleServiceI paymentMiddleService;
  125. @Autowired
  126. private RelatedUnitsServiceI relatedUnitsService;
  127. // @Autowired
  128. // private CollectMiddleServiceI collectMiddleService;
  129. @Autowired
  130. private OrdersDao orderdao;
  131. @Autowired
  132. private JeecgDictDao jeecgDictDao;
  133. @Autowired
  134. private UserOrgMinidao userOrgdao;
  135. @Autowired
  136. private ActivitiService activitiService;
  137. @Autowired
  138. private TaskJeecgService taskJeecgService;
  139. @Autowired
  140. private TaskService taskService;
  141. @Autowired
  142. private RuntimeService runtimeService;
  143. @Autowired
  144. protected HistoryService historyService;
  145. @Autowired
  146. protected RepositoryService repositoryService;
  147. @Autowired
  148. protected WXServiceI wxservice;
  149. /**
  150. * 订单表列表 页面跳转
  151. *
  152. * @return
  153. */
  154. @RequestMapping(params = "list")
  155. public ModelAndView list(HttpServletRequest request) {
  156. return new ModelAndView("cn/com/lzt/orders/ordersList");
  157. }
  158. /**
  159. * 订单表列表 页面跳转
  160. *
  161. * @return
  162. */
  163. @RequestMapping(params = "listByWarehouse")
  164. public ModelAndView listByWarehouse(HttpServletRequest request) {
  165. // 当前登录用户ID
  166. String userid = ResourceUtil.getSessionUser().getId();
  167. // 仓库查询语句(状态为可用0)
  168. String status = "0";
  169. String hql1 = "from WarehouseEntity where status = ?";
  170. List<WarehouseEntity> warehouseList = systemService.findHql(hql1, status);
  171. request.setAttribute("userid", userid);
  172. // 查询可用仓库
  173. if (warehouseList.size() > 1)
  174. request.setAttribute("isMultiWarehouse", "1");
  175. else {
  176. request.setAttribute("isMultiWarehouse", "0");
  177. if (warehouseList.size() == 1) {
  178. request.setAttribute("wareHouse", warehouseList.get(0));
  179. }
  180. }
  181. String orderType = request.getParameter("orderType");
  182. if (StringUtils.isEmpty(orderType))
  183. orderType = "1";
  184. request.setAttribute("orderType", orderType);
  185. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/ordersListByWarehouse");
  186. // delete-刘梦祥-2021年11月17日13:14:19(物料申购暂时只有一种,所以删除原本的收购类型判断)
  187. // if(orderType.equals("1"))//月度申购
  188. // mv = new ModelAndView("cn/com/lzt/orders/ordersListByWarehouse");
  189. // else if (orderType.equals("2"))//临时申购
  190. // mv = new ModelAndView("cn/com/lzt/orders/ordersListByWarehouse-temp");
  191. // else if (orderType.equals("3"))//代业主申购
  192. // mv = new ModelAndView("cn/com/lzt/orders/ordersListByWarehouse-representOwner");
  193. return mv;
  194. }
  195. /**
  196. * 请购单审批页面
  197. *
  198. * @return
  199. */
  200. @RequestMapping(params = "ordersList_task")
  201. public ModelAndView list_orderstask(HttpServletRequest request) {
  202. return new ModelAndView("cn/com/lzt/orders/ordersList_task");
  203. }
  204. /**
  205. * 请购单审批页面加载
  206. *
  207. * @return
  208. */
  209. @RequestMapping(params = "datagrid_orderstask")
  210. public void datagrid_orderstask(OrdersEntity orders, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  211. CriteriaQuery cq = new CriteriaQuery(OrdersEntity.class, dataGrid);
  212. String orderDateBegin = request.getParameter("orderDate_begin");
  213. String orderDateEnd = request.getParameter("orderDate_end");
  214. String orderOnumber = orders.getOrderOnumber();
  215. if (StringUtils.isNotBlank(orderOnumber)) {
  216. orders.setOrderOnumber("*" + orderOnumber + "*");
  217. }
  218. cq.addOrder("createDate", SortDirection.desc);
  219. //查询条件组装器
  220. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, orders);
  221. try {
  222. //自定义追加查询条件
  223. if (StringUtils.isNotBlank(orderDateBegin) && StringUtils.isNotBlank(orderDateEnd)) {
  224. cq.ge("createDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateBegin + " 00:00:00"));
  225. cq.le("createDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateEnd + " 23:59:59"));
  226. }
  227. } catch (Exception e) {
  228. throw new BusinessException(e.getMessage());
  229. }
  230. cq.notEq("bpmStatus", "1");
  231. cq.add();
  232. List<OrdersEntity> list = ordersService.getListByCriteriaQuery(cq, false);
  233. if (list == null || list.size() == 0) {
  234. return;
  235. }
  236. List<OrdersEntity> result = new ArrayList<OrdersEntity>();
  237. HashMap<String, OrdersEntity> hm_id2obj = new HashMap<>();
  238. for (OrdersEntity oe : list) {
  239. hm_id2obj.put(oe.getId(), oe);
  240. }
  241. TSUser user = ResourceUtil.getSessionUser();
  242. List taskList = this.activitiService.findPriTodoTasks(user.getUserName(), request);
  243. for (int i = 0; i < taskList.size(); i++) {
  244. TSBaseBusQuery busobj = (TSBaseBusQuery) taskList.get(i);
  245. String id = activitiService.getBusinessKeyByTask(busobj.getProcess().getTask().getId());
  246. OrdersEntity order = hm_id2obj.get(id);
  247. if (order != null) {
  248. result.add(order);
  249. order.setProcessObject(busobj);
  250. }
  251. }
  252. dataGrid.setResults(result);
  253. dataGrid.setFooter("totalMoney,baojieSum,gongchengSum,bangongSum");
  254. TagUtil.datagrid(response, dataGrid);
  255. }
  256. @RequestMapping(params = {"popDealOption"})
  257. public ModelAndView popDealOption(DealOptionDto dto, HttpServletRequest request) {
  258. request.setAttribute("dealParam", dto);
  259. return new ModelAndView("cn/com/lzt/orders/dealOrderFlowWriteOption");
  260. }
  261. public Task getTask(String taskId) {
  262. return (Task) this.taskService.createTaskQuery().taskId(taskId).singleResult();
  263. }
  264. /**
  265. * 获取任务下一步节点的id
  266. *
  267. * @param taskId
  268. * @param transName 通过或者驳回
  269. * @return
  270. */
  271. private String getTaskNextNodeId(String taskId, String transName) {
  272. List outTransitions = null;
  273. ArrayList trans = new ArrayList();
  274. Task task = this.getTask(taskId);
  275. ProcessDefinitionEntity def = (ProcessDefinitionEntity) ((RepositoryServiceImpl) this.repositoryService).getDeployedProcessDefinition(task.getProcessDefinitionId());
  276. List activitiList = def.getActivities();
  277. String excId = task.getExecutionId();
  278. ExecutionEntity execution = (ExecutionEntity) this.runtimeService.createExecutionQuery().executionId(excId).singleResult();
  279. String activitiId = execution.getActivityId();
  280. Iterator arg10 = activitiList.iterator();
  281. while (arg10.hasNext()) {
  282. ActivityImpl activityImpl = (ActivityImpl) arg10.next();
  283. String id = activityImpl.getId();
  284. if (activitiId.equals(id)) {
  285. outTransitions = activityImpl.getOutgoingTransitions();
  286. Iterator arg13 = outTransitions.iterator();
  287. while (arg13.hasNext()) {
  288. PvmTransition tr = (PvmTransition) arg13.next();
  289. if (tr.getId() != null) {
  290. String name = (String) (oConvertUtils.isNotEmpty(tr.getProperty("name")) ? tr.getProperty("name") : tr.getId());
  291. if (transName.equals(name)) {
  292. return tr.getDestination().getId();
  293. }
  294. }
  295. }
  296. return null;
  297. }
  298. }
  299. return null;
  300. }
  301. private List<OrdersFlowDto> getWorkflowParam(HttpServletRequest request) {
  302. List<OrdersFlowDto> result = new ArrayList<>();
  303. String taskIdsInReq = oConvertUtils.getString(request.getParameter("taskId"));
  304. String dealOption = oConvertUtils.getString(request.getParameter("dealOption"));
  305. String transName = oConvertUtils.getString(request.getParameter("nextNodeName"));
  306. if ("agree".equals(transName)) {
  307. transName = "通过";
  308. } else {
  309. transName = "驳回";
  310. }
  311. if (StringUtils.isEmpty(taskIdsInReq)) {
  312. return result;
  313. }
  314. String[] taskids = taskIdsInReq.split(",");
  315. for (int i = 0; i < taskids.length; i++) {
  316. String nextNode = getTaskNextNodeId(taskids[i], transName);
  317. OrdersFlowDto dto = new OrdersFlowDto();
  318. dto.setDealOption(dealOption);
  319. dto.setModel("1");
  320. dto.setNextnode(nextNode);
  321. dto.setTaskId(taskids[i]);
  322. dto.setOperateType(transName);
  323. result.add(dto);
  324. }
  325. return result;
  326. }
  327. /**
  328. * 批量审批
  329. *
  330. * @param request
  331. * @param var
  332. * @return
  333. * @throws Exception
  334. */
  335. @RequestMapping(params = {"processComplete"})
  336. @ResponseBody
  337. public AjaxJson processComplete(HttpServletRequest request, Variable var) throws Exception {
  338. List<OrdersFlowDto> dtos = getWorkflowParam(request);
  339. AjaxJson j = new AjaxJson();
  340. String nextUser = oConvertUtils.getString(request.getParameter("id"));
  341. try {
  342. for (OrdersFlowDto dto : dtos) {
  343. ProcessHandle processHandle = this.activitiService.getProcessHandle(dto.getTaskId());
  344. if (oConvertUtils.isEmpty(processHandle)) {
  345. j.setSuccess(false);
  346. j.setMsg(MutiLangUtil.getMutiLangInstance().getLang("process.task.notexist"));
  347. return j;
  348. } else {
  349. Map map = var.getVariableMap(processHandle.getTpProcesspros());
  350. Task task = this.activitiService.getTask(dto.getTaskId());
  351. String processInstanceId = task.getProcessInstanceId();
  352. String ccUserNames = "";
  353. if ("1".equals(dto.getModel())) {
  354. if ("end".equals(dto.getNextnode())) {
  355. this.taskJeecgService.goProcessTaskNode(dto.getTaskId(), dto.getNextnode(), map);
  356. } else {
  357. this.taskJeecgService.goProcessTaskNode(dto.getTaskId(), dto.getNextnode(), map);
  358. ccUserNames = this.taskJeecgService.getTaskIdByProins(processInstanceId, dto.getNextnode());
  359. }
  360. }
  361. //ccUserNames = oConvertUtils.getString(request.getParameter("ccUserNames"));
  362. this.taskCc(ccUserNames, task);
  363. TPBpmLog arg30 = new TPBpmLog();
  364. TSUser arg31 = ResourceUtil.getSessionUser();
  365. arg30.setBpm_id(task.getProcessInstanceId());
  366. arg30.setTask_name(processHandle.getTpProcess().getProcessname());
  367. arg30.setTask_node(processHandle.getTpProcessnode().getProcessnodename());
  368. arg30.setOp_code(arg31.getUserKey());
  369. arg30.setOp_name(arg31.getRealName());
  370. arg30.setOp_time(DataUtils.gettimestamp());
  371. // arg30.setLinename(nextNodeName);
  372. arg30.setTaskId(dto.getTaskId());
  373. arg30.setMemo(dto.getDealOption());
  374. String tableName = null;
  375. String busId = null;
  376. boolean hastep_name = false;
  377. String curttentstep = null;
  378. List actRuVariables = this.systemService.findByProperty(ActRuVariable.class, "actRuExecutionByProcInstId.id", processInstanceId);
  379. for (int list = 0; list < actRuVariables.size(); ++list) {
  380. ActRuVariable item = (ActRuVariable) actRuVariables.get(list);
  381. if (WorkFlowGlobals.BPM_FORM_KEY.equals(item.getName())) {
  382. tableName = item.getText();
  383. }
  384. if (WorkFlowGlobals.BPM_DATA_ID.equals(item.getName())) {
  385. busId = item.getText();
  386. }
  387. if ("step_name".equals(item.getName())) {
  388. hastep_name = true;
  389. }
  390. }
  391. List arg32 = this.systemService.findByProperty(ActRuTask.class, "actRuExecutionByProcInstId.id", processInstanceId);
  392. if (oConvertUtils.isNotEmpty(arg32) && arg32.size() > 0) {
  393. curttentstep = ((ActRuTask) arg32.get(0)).getName();
  394. }
  395. if (hastep_name) {
  396. this.activitiService.updateBusStepname(tableName, busId, curttentstep);
  397. }
  398. if ("end".equals(dto.getNextnode())) {
  399. this.activitiService.updateBusStepname(tableName, busId, MutiLangUtil.getMutiLangInstance().getLang("process.complete"));
  400. }
  401. this.systemService.save(arg30);
  402. }
  403. }
  404. j.setMsg("审批成功!");
  405. j.setObj(dtos);
  406. } catch (BusinessException arg28) {
  407. j.setSuccess(false);
  408. j.setMsg(MutiLangUtil.getMutiLangInstance().getLang("process.do.fail") + ":" + MutiLangUtil.getMutiLangInstance().getLang("process.nextnode.unknownerror"));
  409. arg28.printStackTrace();
  410. } catch (Exception arg29) {
  411. j.setSuccess(false);
  412. j.setMsg(MutiLangUtil.getMutiLangInstance().getLang("process.do.fail") + ":" + MutiLangUtil.getMutiLangInstance().getLang("nextnode.nopersion.error"));
  413. arg29.printStackTrace();
  414. }
  415. return j;
  416. }
  417. private void taskCc(String ccUserNames, Task task) {
  418. if (!CommonRandomUtil.isEmpty(ccUserNames)) {
  419. TSUser user = ResourceUtil.getSessionUser();
  420. String[] ccUserNameArr = ccUserNames.split(",");
  421. TPTaskCcEntity taskCcEntity = null;
  422. String[] arg8 = ccUserNameArr;
  423. int arg7 = ccUserNameArr.length;
  424. for (int arg6 = 0; arg6 < arg7; ++arg6) {
  425. String ccUserName = arg8[arg6];
  426. taskCcEntity = new TPTaskCcEntity();
  427. taskCcEntity.setProcDefId(task.getProcessDefinitionId());
  428. taskCcEntity.setProcInstId(task.getProcessInstanceId());
  429. taskCcEntity.setExecutionId(task.getExecutionId());
  430. taskCcEntity.setTaskDefKey(task.getTaskDefinitionKey());
  431. taskCcEntity.setTaskId(task.getId());
  432. taskCcEntity.setTaskName(task.getName());
  433. taskCcEntity.setFromUserName(user.getUserName());
  434. taskCcEntity.setCcUserName(ccUserName);
  435. this.systemService.save(taskCcEntity);
  436. }
  437. }
  438. }
  439. /**
  440. * easyui AJAX请求数据
  441. *
  442. * @param request
  443. * @param response
  444. * @param dataGrid
  445. */
  446. @RequestMapping(params = "datagrid")
  447. public void datagrid(OrdersEntity orders, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  448. CriteriaQuery cq = new CriteriaQuery(OrdersEntity.class, dataGrid);
  449. String orderDateBegin = request.getParameter("orderDate_begin");
  450. String orderDateEnd = request.getParameter("orderDate_end");
  451. String orderOnumber = orders.getOrderOnumber();
  452. if (StringUtils.isNotBlank(orderOnumber)) {
  453. orders.setOrderOnumber("*" + orderOnumber + "*");
  454. }
  455. String warehouseName = orders.getWarehouseName();
  456. if (StringUtils.isNotBlank(warehouseName)) {
  457. orders.setWarehouseName("*" + warehouseName + "*");
  458. }
  459. cq.addOrder("createDate", SortDirection.desc);
  460. //查询条件组装器
  461. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, orders);
  462. try {
  463. //自定义追加查询条件
  464. if (StringUtils.isNotBlank(orderDateBegin) && StringUtils.isNotBlank(orderDateEnd)) {
  465. cq.ge("createDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateBegin + " 00:00:00"));
  466. cq.le("createDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateEnd + " 23:59:59"));
  467. }
  468. } catch (Exception e) {
  469. throw new BusinessException(e.getMessage());
  470. }
  471. cq.notEq("bpmStatus", "1");
  472. cq.add();
  473. List<OrdersEntity> list = ordersService.getListByCriteriaQuery(cq, false);
  474. dataGrid.setResults(list);
  475. // this.ordersService.getDataGridReturn(cq, false);
  476. dataGrid.setFooter("totalMoney,baojieSum,gongchengSum,bangongSum");
  477. TagUtil.datagrid(response, dataGrid);
  478. }
  479. /**
  480. * easyui AJAX请求数据
  481. *
  482. * @param request
  483. * @param response
  484. * @param dataGrid
  485. */
  486. @RequestMapping(params = "datagridByWarehouse")
  487. public void datagridByWarehouse(OrdersEntity orders, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  488. CriteriaQuery cq = new CriteriaQuery(OrdersEntity.class, dataGrid);
  489. String orderDateBegin = request.getParameter("orderDate_begin");
  490. String orderDateEnd = request.getParameter("orderDate_end");
  491. String orderOnumber = orders.getOrderOnumber();
  492. if (StringUtils.isNotBlank(orderOnumber)) {
  493. orders.setOrderOnumber("*" + orderOnumber + "*");
  494. }
  495. cq.addOrder("createDate", SortDirection.desc);
  496. //查询条件组装器
  497. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, orders);
  498. try {
  499. //自定义追加查询条件
  500. if (StringUtils.isNotBlank(orderDateBegin)) {
  501. cq.ge("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateBegin + " 00:00:00"));
  502. }
  503. if (StringUtils.isNotBlank(orderDateEnd)) {
  504. cq.le("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateEnd + " 23:59:59"));
  505. }
  506. } catch (Exception e) {
  507. throw new BusinessException(e.getMessage());
  508. }
  509. cq.add();
  510. HttpSession session = ContextHolderUtils.getSession();
  511. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  512. UserOrgDto userOrgDto = new UserOrgDto();
  513. userOrgDto.setUserId(tuser.getId());
  514. List<UserOrgDto> dtos = userOrgdao.getUserOrgDtoByUserId(userOrgDto, null);
  515. StringBuffer sb = new StringBuffer();
  516. String sql = "select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "' and delete_flag = 0";
  517. if (dtos != null && dtos.size() > 0) {
  518. for (int i = 0; i < dtos.size(); i++) {
  519. if (i > 0) {
  520. sb.append(",");
  521. }
  522. sb.append("'");
  523. sb.append(dtos.get(i).getOrgId());
  524. sb.append("'");
  525. }
  526. sql += " or project_id in(" + sb.toString() + ")";
  527. }
  528. List<String> tsDList = systemService.findListbySql(sql);
  529. if (tsDList != null && tsDList.size() > 0) {
  530. cq.in("warehouseId", tsDList.toArray());
  531. cq.add();
  532. List<OrdersEntity> ordersList = ordersService.getListByCriteriaQuery(cq, false);
  533. if (ordersList == null || ordersList.size() == 0) {
  534. dataGrid.setResults(new ArrayList<OrdersEntity>());
  535. TagUtil.datagrid(response, dataGrid);
  536. }
  537. List<OrdersEntity> result = new ArrayList<OrdersEntity>();
  538. HashMap<String, OrdersEntity> hm_id2obj = new HashMap<>();
  539. for (OrdersEntity oe : ordersList) {
  540. hm_id2obj.put(oe.getId(), oe);
  541. }
  542. TSUser user = ResourceUtil.getSessionUser();
  543. List taskList = this.activitiService.findPriTodoTasks(user.getUserName(), request);
  544. for (int i = 0; i < taskList.size(); i++) {
  545. TSBaseBusQuery busobj = (TSBaseBusQuery) taskList.get(i);
  546. String id = activitiService.getBusinessKeyByTask(busobj.getProcess().getTask().getId());
  547. OrdersEntity order = hm_id2obj.get(id);
  548. if (order != null) {
  549. result.add(order);
  550. order.setProcessObject(busobj);
  551. }
  552. }
  553. dataGrid.setResults(ordersList);
  554. TagUtil.datagrid(response, dataGrid);
  555. } else {
  556. dataGrid.setResults(new ArrayList<OrdersEntity>());
  557. TagUtil.datagrid(response, dataGrid);
  558. }
  559. }
  560. /**
  561. * 删除订单表
  562. *
  563. * @return
  564. */
  565. @RequestMapping(params = "doDel")
  566. @ResponseBody
  567. public AjaxJson doDel(OrdersEntity orders, HttpServletRequest request) {
  568. AjaxJson j = new AjaxJson();
  569. orders = systemService.getEntity(OrdersEntity.class, orders.getId());
  570. String message = "订单表删除成功";
  571. try {
  572. ordersService.delMain(orders);
  573. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  574. } catch (Exception e) {
  575. e.printStackTrace();
  576. message = "订单表删除失败";
  577. throw new BusinessException(e.getMessage());
  578. }
  579. j.setMsg(message);
  580. return j;
  581. }
  582. /**
  583. * 批量删除订单表
  584. *
  585. * @return
  586. */
  587. @RequestMapping(params = "doBatchDel")
  588. @ResponseBody
  589. public AjaxJson doBatchDel(String ids, HttpServletRequest request) {
  590. AjaxJson j = new AjaxJson();
  591. String message = "订单表删除成功";
  592. try {
  593. for (String id : ids.split(",")) {
  594. OrdersEntity orders = systemService.getEntity(OrdersEntity.class,
  595. id
  596. );
  597. ordersService.delMain(orders);
  598. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  599. }
  600. } catch (Exception e) {
  601. e.printStackTrace();
  602. message = "订单表删除失败";
  603. throw new BusinessException(e.getMessage());
  604. }
  605. j.setMsg(message);
  606. return j;
  607. }
  608. /**
  609. * 添加订单表
  610. *
  611. * @return
  612. */
  613. @RequestMapping(params = "doAdd")
  614. @ResponseBody
  615. public AjaxJson doAdd(OrdersEntity orders, OrdersPage ordersPage, HttpServletRequest request) {
  616. List<OrderProductsEntity> orderProductsList = ordersPage.getOrderProductsList();
  617. AjaxJson j = new AjaxJson();
  618. String message = "添加成功";
  619. try {
  620. String months = orders.getOrderMonths();
  621. String warehouseid = orders.getWarehouseId();
  622. if ("1".equals(orders.getOrderType())) {
  623. // 月度申购类型
  624. String sql = "select id from t_b_orders where order_months='" + months + "' and warehouse_id='"
  625. + warehouseid + "' and order_type =? ";
  626. List<String> tsDList = systemService.findListbySql(sql, "1");
  627. if (tsDList != null && tsDList.size() > 0) {
  628. j.setSuccess(false);
  629. j.setMsg("不能重复进行月度申购,如需临时申购,请联系行政部开发临时申购权限。");
  630. return j;
  631. }
  632. }
  633. HttpSession session = ContextHolderUtils.getSession();
  634. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  635. WarehouseEntity wh = systemService.get(WarehouseEntity.class, warehouseid);
  636. orders.setWarehouseName(wh.getWarehouseName());
  637. orders.setHandlerPersonId(tuser.getId());
  638. orders.setHandlerPersonName(tuser.getRealName());
  639. orders.setOrderOnumber(OrderNumTools.generate18OrderNum());// 采购单好
  640. orders.setOrderStatus(Globals.UNAPPROVED);// 未审批状态
  641. //代业主申购时,没有双月信息,需要补充双月信息
  642. if (StringUtils.isEmpty(orders.getOrderMonths())) {
  643. createOrderMonths(orders);
  644. }
  645. ordersService.addMain(orders, orderProductsList);
  646. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  647. } catch (Exception e) {
  648. e.printStackTrace();
  649. message = "订单表添加失败";
  650. throw new BusinessException(e.getMessage());
  651. }
  652. j.setMsg(message);
  653. return j;
  654. }
  655. private void createOrderMonths(OrdersEntity order) {
  656. String sql = "select id from t_b_ordermonths where id like '%"
  657. + DateUtils.formatDate(order.getOrderDate()).substring(0, 7) + "%'";
  658. List<Map<String, Object>> rets = systemService.findForJdbc(sql);
  659. if (rets.size() > 0) {
  660. order.setOrderMonths(rets.get(0).get("id").toString());
  661. }
  662. }
  663. /**
  664. * 更新订单表
  665. *
  666. * @return
  667. */
  668. @RequestMapping(params = "doUpdate")
  669. @ResponseBody
  670. public AjaxJson doUpdate(OrdersEntity orders, OrdersPage ordersPage, HttpServletRequest request) {
  671. List<OrderProductsEntity> orderProductsList = ordersPage.getOrderProductsList();
  672. AjaxJson j = new AjaxJson();
  673. String message = "更新成功";
  674. try {
  675. String warehouseid = orders.getWarehouseId();
  676. HttpSession session = ContextHolderUtils.getSession();
  677. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  678. String months = orders.getOrderMonths();
  679. if ("1".equals(orders.getOrderType())) {
  680. // 月度申购类型
  681. String sql = "select id from t_b_orders where order_months='" + months + "' and warehouse_id='"
  682. + warehouseid + "' and order_type =? ";
  683. List<String> tsDList = systemService.findListbySql(sql, "1");
  684. if (tsDList != null && tsDList.size() > 0 && !tsDList.get(0).equals(orders.getId())) {
  685. j.setSuccess(false);
  686. j.setMsg("不能重复进行月度申购,如需临时申购,请联系行政部开发临时申购权限。");
  687. return j;
  688. }
  689. }
  690. WarehouseEntity wh = systemService.get(WarehouseEntity.class, warehouseid);
  691. orders.setWarehouseName(wh.getWarehouseName());
  692. orders.setHandlerPersonId(tuser.getId());
  693. orders.setHandlerPersonName(tuser.getRealName());
  694. ordersService.updateMain(orders, orderProductsList);
  695. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  696. } catch (Exception e) {
  697. e.printStackTrace();
  698. message = "更新订单表失败";
  699. throw new BusinessException(e.getMessage());
  700. }
  701. j.setMsg(message);
  702. return j;
  703. }
  704. /**
  705. * 订单表新增页面跳转
  706. *
  707. * @return
  708. */
  709. @RequestMapping(params = "goAdd")
  710. public ModelAndView goAdd(OrdersEntity orders, HttpServletRequest req) {
  711. HttpSession session = ContextHolderUtils.getSession();
  712. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  713. req.setAttribute("userid", tuser.getId());
  714. String orderType = orders.getOrderType();
  715. if (StringUtils.isEmpty(orderType))
  716. orderType = "1";
  717. orders.setOrderType(orderType);
  718. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/ordersListByWarehouse");
  719. if (orderType.equals("1"))//月度申购
  720. mv = new ModelAndView("cn/com/lzt/orders/orders-add");
  721. else if (orderType.equals("2"))//临时申购
  722. mv = new ModelAndView("cn/com/lzt/orders/orders-add");
  723. else if (orderType.equals("3"))//代业主申购
  724. mv = new ModelAndView("cn/com/lzt/orders/orders-add-representOwner");
  725. if (StringUtil.isNotEmpty(orders.getId())) {
  726. orders = ordersService.getEntity(OrdersEntity.class, orders.getId());
  727. dealRoundHalfUpValue(orders);
  728. req.setAttribute("ordersPage", orders);
  729. } else {
  730. //新增时,首先选择仓库(如果此人负责多仓库)
  731. if (StringUtil.isNotEmpty(req.getParameter("warehouseid"))) {
  732. String hql1 = "from WarehouseEntity where id=? ";
  733. List<WarehouseEntity> warehouseList = systemService.findHql(hql1, req.getParameter("warehouseid").toString());
  734. if (warehouseList.size() > 0) {
  735. orders.setWarehouseId(warehouseList.get(0).getId());
  736. }
  737. } else {
  738. List<String> tsDList = systemService.findListbySql("select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "' and delete_flag = 0");
  739. if (tsDList != null && tsDList.size() > 0) {
  740. orders.setWarehouseId(tsDList.get(0));
  741. }
  742. }
  743. //req.setAttribute("type", req.getParameter("type"));
  744. }
  745. req.setAttribute("ordersPage", orders);
  746. Date now = new Date();
  747. Calendar begin = Calendar.getInstance();
  748. begin.setTime(now);
  749. begin.add(Calendar.MONTH, -6);
  750. Calendar end = Calendar.getInstance();
  751. end.setTime(now);
  752. end.add(Calendar.MONTH, 6);
  753. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  754. req.setAttribute("ref_date_begin", sdf.format(begin.getTime()));
  755. req.setAttribute("ref_date_end", sdf.format(end.getTime()));
  756. Calendar defaultdate = Calendar.getInstance();
  757. defaultdate.setTime(now);
  758. int month = defaultdate.get(Calendar.MONTH);
  759. if (month % 2 == 0) {
  760. //单月
  761. month += 1;
  762. }
  763. defaultdate.set(Calendar.MONTH, month);
  764. defaultdate.set(Calendar.DATE, 1);
  765. List<String> ome = systemService.findListbySql("select id from t_b_ordermonths where ref_date='" + sdf.format(defaultdate.getTime()) + "'");
  766. if ((orderType.equals("1") || orderType.equals("2")) && ome != null && ome.size() > 0) {
  767. orders.setOrderMonths(ome.get(0));
  768. }
  769. if (orderType.equals("3")) {
  770. orders.setOrderDate(new Date());
  771. }
  772. return mv;
  773. }
  774. /**
  775. * 订单表编辑页面跳转
  776. *
  777. * @return
  778. */
  779. @RequestMapping(params = "goUpdateWithProcess")
  780. public ModelAndView goUpdateWithProcess(OrdersEntity orders, HttpServletRequest req) {
  781. if (LztUtil.isApiRequest()) {
  782. return goUpdateWithProcessMobile(orders, req);
  783. }
  784. String isView = req.getParameter("viewFlag");
  785. req.setAttribute("viewFlag", isView);
  786. String taskId = oConvertUtils.getString(req.getParameter("taskId"));
  787. HttpSession session = ContextHolderUtils.getSession();
  788. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  789. req.setAttribute("userid", tuser.getId());
  790. if (oConvertUtils.isNotEmpty(taskId)) {
  791. FormProcUtil.initWorkflowParam(req);
  792. req.setAttribute("taskId", taskId);
  793. }
  794. if (StringUtil.isNotEmpty(orders.getId())) {
  795. orders = ordersService.getEntity(OrdersEntity.class, orders.getId());
  796. dealRoundHalfUpValue(orders);
  797. req.setAttribute("ordersPage", orders);
  798. } else {
  799. List<String> tsDList = systemService.findListbySql("select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "' and delete_flag = 0");
  800. if (tsDList != null && tsDList.size() > 0) {
  801. orders.setWarehouseId(tsDList.get(0));
  802. }
  803. req.setAttribute("ordersPage", orders);
  804. }
  805. // Date now = new Date();
  806. // Calendar begin = Calendar.getInstance();
  807. // begin.setTime(now);
  808. // begin.add(Calendar.MONTH, -2);
  809. //
  810. // Calendar end = Calendar.getInstance();
  811. // end.setTime(now);
  812. // end.add(Calendar.MONTH, 2);
  813. //
  814. // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  815. //
  816. // req.setAttribute("ref_date_begin", sdf.format(begin.getTime()));
  817. // req.setAttribute("ref_date_end", sdf.format(end.getTime()));
  818. //
  819. // Calendar defaultdate = Calendar.getInstance();
  820. // defaultdate.setTime(now);
  821. // int month = defaultdate.get(Calendar.MONTH);
  822. // if(month%2 == 0) {
  823. // //单月
  824. // month += 1;
  825. // }
  826. // defaultdate.set(Calendar.MONTH, month);
  827. // defaultdate.set(Calendar.DATE, 1);
  828. // List<String> ome = systemService.findListbySql("select id from t_b_ordermonths where ref_date='"+sdf.format(defaultdate.getTime())+"'");
  829. // if(ome != null && ome.size()>0) {
  830. // orders.setOrderMonths(ome.get(0));
  831. // }
  832. return new ModelAndView("cn/com/lzt/orders/orders-proc-update");
  833. }
  834. @RequestMapping(params = "goUpdateWithProcessMobile")
  835. public ModelAndView goUpdateWithProcessMobile(OrdersEntity orders, HttpServletRequest req) {
  836. String isView = req.getParameter("viewFlag");
  837. req.setAttribute("viewFlag", isView);
  838. String taskId = oConvertUtils.getString(req.getParameter("taskId"));
  839. HttpSession session = ContextHolderUtils.getSession();
  840. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  841. req.setAttribute("userid", tuser.getId());
  842. if (oConvertUtils.isNotEmpty(taskId)) {
  843. FormProcUtil.initWorkflowParam(req);
  844. req.setAttribute("taskId", taskId);
  845. }
  846. if (StringUtil.isNotEmpty(orders.getId())) {
  847. orders = ordersService.getEntity(OrdersEntity.class, orders.getId());
  848. dealRoundHalfUpValue(orders);
  849. req.setAttribute("entity", orders);
  850. } else {
  851. List<String> tsDList = systemService.findListbySql("select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "' and delete_flag = 0");
  852. if (tsDList != null && tsDList.size() > 0) {
  853. orders.setWarehouseId(tsDList.get(0));
  854. }
  855. req.setAttribute("entity", orders);
  856. }
  857. Map<String, Object> data = LztUtil.copyReqAttributes(new String[]{
  858. "entity", "viewFlag", "taskId", "userid"});
  859. return new JsonDataModelAndView(WXAjaxJson.success(data));
  860. }
  861. /**
  862. * 订单表编辑页面跳转
  863. *
  864. * @return
  865. */
  866. @RequestMapping(params = "goUpdate")
  867. public ModelAndView goUpdate(OrdersEntity orders, HttpServletRequest req) {
  868. String isView = req.getParameter("viewFlag");
  869. req.setAttribute("viewFlag", isView);
  870. HttpSession session = ContextHolderUtils.getSession();
  871. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  872. req.setAttribute("userid", tuser.getId());
  873. if (StringUtil.isNotEmpty(orders.getId())) {
  874. orders = ordersService.getEntity(OrdersEntity.class, orders.getId());
  875. dealRoundHalfUpValue(orders);
  876. req.setAttribute("ordersPage", orders);
  877. } else {
  878. List<String> tsDList = systemService.findListbySql("select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "'");
  879. if (tsDList != null && tsDList.size() > 0) {
  880. orders.setWarehouseId(tsDList.get(0));
  881. }
  882. req.setAttribute("ordersPage", orders);
  883. }
  884. Date now = new Date();
  885. Calendar begin = Calendar.getInstance();
  886. begin.setTime(now);
  887. begin.add(Calendar.MONTH, -6);
  888. Calendar end = Calendar.getInstance();
  889. end.setTime(now);
  890. end.add(Calendar.MONTH, 6);
  891. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  892. req.setAttribute("ref_date_begin", sdf.format(begin.getTime()));
  893. req.setAttribute("ref_date_end", sdf.format(end.getTime()));
  894. // Calendar defaultdate = Calendar.getInstance();
  895. // defaultdate.setTime(now);
  896. // int month = defaultdate.get(Calendar.MONTH);
  897. // if(month%2 == 0) {
  898. // //单月
  899. // month += 1;
  900. // }
  901. // defaultdate.set(Calendar.MONTH, month);
  902. // defaultdate.set(Calendar.DATE, 1);
  903. // List<String> ome = systemService.findListbySql("select id from t_b_ordermonths where ref_date='"+sdf.format(defaultdate.getTime())+"'");
  904. // if(ome != null && ome.size()>0) {
  905. // orders.setOrderMonths(ome.get(0));
  906. // }
  907. String orderType = orders.getOrderType();
  908. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/orders-update");
  909. if (orderType.equals("3"))//代业主申购
  910. mv = new ModelAndView("cn/com/lzt/orders/orders-update-representOwner");
  911. return mv;
  912. }
  913. @RequestMapping(params = "goView")
  914. public ModelAndView goView(OrdersEntity orders, HttpServletRequest request) {
  915. if (LztUtil.isApiRequest())
  916. return goViewMobile(orders, request);
  917. request.setAttribute("viewFlag", "1");
  918. String taskId = oConvertUtils.getString(request.getParameter("taskId"));
  919. if (oConvertUtils.isNotEmpty(taskId)) {
  920. FormProcUtil.initWorkflowParam(request);
  921. request.setAttribute("taskId", taskId);
  922. }
  923. if (StringUtil.isNotEmpty(orders.getId())) {
  924. orders = ordersService.getEntity(OrdersEntity.class, orders.getId());
  925. // idandname(req, orders);
  926. dealRoundHalfUpValue(orders);
  927. request.setAttribute("ordersPage", orders);
  928. }
  929. request.setAttribute("load", "detail");
  930. return new ModelAndView("cn/com/lzt/orders/orders-View");
  931. }
  932. @RequestMapping(params = "goViewMobile")
  933. public ModelAndView goViewMobile(OrdersEntity orders, HttpServletRequest request) {
  934. request.setAttribute("viewFlag", "1");
  935. String taskId = oConvertUtils.getString(request.getParameter("taskId"));
  936. if (oConvertUtils.isNotEmpty(taskId)) {
  937. FormProcUtil.initWorkflowParam(request);
  938. request.setAttribute("taskId", taskId);
  939. }
  940. if (StringUtil.isNotEmpty(orders.getId())) {
  941. orders = ordersService.getEntity(OrdersEntity.class, orders.getId());
  942. // idandname(req, orders);
  943. dealRoundHalfUpValue(orders);
  944. request.setAttribute("entity", orders);
  945. }
  946. String monthsSql = "select ordermonths_name from t_b_ordermonths where id = '" + orders.getOrderMonths() + "'";
  947. List<String> monthsNames = systemService.findListbySql(monthsSql);
  948. if (monthsNames.size() > 0) {
  949. orders.setOrderMonths(monthsNames.get(0));
  950. }
  951. request.setAttribute("load", "detail");
  952. Map<String, Object> data = LztUtil.copyReqAttributes(new String[]{
  953. "entity", "viewFlag", "taskId", "load"});
  954. return new JsonDataModelAndView(WXAjaxJson.success(data));
  955. }
  956. // public void idandname(HttpServletRequest req, OrdersEntity orders) {
  957. // WarehouseEntity warehouseEntity = systemService.findUniqueByProperty(WarehouseEntity.class, "id", orders.getWarehouseId());
  958. // RelatedUnitsEntity relatedUnitsEntity = systemService.findUniqueByProperty(RelatedUnitsEntity.class, "id", orders.getSupplierName());
  959. // TSBaseUser user = systemService.findUniqueByProperty(TSBaseUser.class, "id", orders.getHandlerPerson());
  960. // // 经手人
  961. // String handlerPersonName="";
  962. // // 仓库
  963. // String wareHouseName = "";
  964. // // 供应商名
  965. // String unitName = "";
  966. // if (warehouseEntity != null) {
  967. // wareHouseName= warehouseEntity.getWarehouseName();
  968. // req.setAttribute("wareHouseIdName", wareHouseName);
  969. // }
  970. // if (relatedUnitsEntity != null) {
  971. // unitName= relatedUnitsEntity.getUnitName();
  972. // req.setAttribute("textUnitName", unitName);
  973. // }
  974. //
  975. // if (user != null) {
  976. // handlerPersonName= user.getRealName();
  977. // req.setAttribute("realName", handlerPersonName);
  978. // }
  979. // }
  980. /**
  981. * 加载明细列表[采购商品]
  982. *
  983. * @return
  984. */
  985. @RequestMapping(params = "orderProductsList")
  986. public ModelAndView orderProductsList(OrdersEntity orders, HttpServletRequest req) {
  987. // String type = req.getParameter("type");
  988. //===================================================================================
  989. //获取参数
  990. Object id0 = orders.getId();
  991. if (id0.toString().length() == 0) {
  992. List<OrderProductsEntity> orderProductsEntityList = new ArrayList<>();
  993. //月度申购才查询已申购的明细
  994. if (orders.getOrderType().equals("1")) {
  995. String warehouseid = req.getParameter("warehouseid");
  996. if (!StringUtils.isNotEmpty(warehouseid)) {
  997. HttpSession session = ContextHolderUtils.getSession();
  998. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  999. List<String> tsDList = systemService.findListbySql("select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "' and delete_flag = 0");
  1000. if (tsDList != null && tsDList.size() > 0) {
  1001. warehouseid = tsDList.get(0);
  1002. }
  1003. }
  1004. orderProductsEntityList = orderdao.getLastOrderProducts(warehouseid);
  1005. //取采购价
  1006. if (!orderProductsEntityList.isEmpty()) {
  1007. for (OrderProductsEntity productsEntity : orderProductsEntityList) {
  1008. // TBGoodsInfoEntity goodsInfoEntity = systemService.get(, )
  1009. String goodsId = productsEntity.getGoodsId();
  1010. String hql = "from TBPriceInfoEntity where goodsId=? and meteringUnit=? ";
  1011. List<TBPriceInfoEntity> priceList = systemService.findHql(hql, goodsId, productsEntity.getMeasureUnit());
  1012. if (priceList != null && !priceList.isEmpty()) {
  1013. productsEntity.setPurchasePrice(priceList.get(0).getRetailPrice());
  1014. }
  1015. TBGoodsInfoEntity goodsInfoEntity = systemService.getEntity(TBGoodsInfoEntity.class, goodsId);
  1016. String supplierId = goodsInfoEntity.getDefaultProvider();
  1017. productsEntity.setSupplierId(supplierId);
  1018. if (StringUtils.isNotBlank(supplierId)) {
  1019. RelatedUnitsEntity entity = systemService.get(RelatedUnitsEntity.class, goodsInfoEntity.getDefaultProvider());
  1020. if (entity != null) {
  1021. productsEntity.setSupplierName(entity.getUnitName());
  1022. }
  1023. }
  1024. }
  1025. }
  1026. }
  1027. req.setAttribute("orderProductsList", orderProductsEntityList);
  1028. String load = (String) req.getAttribute("load");
  1029. req.setAttribute("load", load);
  1030. } else {
  1031. orders = ordersService.get(OrdersEntity.class, (String) id0);
  1032. //===================================================================================
  1033. //查询-采购商品
  1034. String hql0 = "from OrderProductsEntity where 1 = 1 AND fK_ID =? ";
  1035. try {
  1036. List<OrderProductsEntity> orderProductsEntityList = systemService.findHql(hql0, id0);
  1037. addOnhandInfo2OrderProdunctsList(orders, orderProductsEntityList);
  1038. req.setAttribute("orderProductsList", orderProductsEntityList);
  1039. String load = (String) req.getAttribute("load");
  1040. req.setAttribute("load", load);
  1041. } catch (Exception e) {
  1042. logger.info(e.getMessage());
  1043. }
  1044. }
  1045. return new ModelAndView("cn/com/lzt/orderproducts/orderProductsList");
  1046. }
  1047. /**
  1048. * 加载审批明细列表[采购商品]
  1049. *
  1050. * @return
  1051. */
  1052. @RequestMapping(params = "orderProductsViewList")
  1053. public ModelAndView orderProductsViewList(OrdersEntity orders, HttpServletRequest req) {
  1054. //===================================================================================
  1055. //获取参数
  1056. Object id0 = orders.getId();
  1057. orders = ordersService.get(OrdersEntity.class, (String) id0);
  1058. //===================================================================================
  1059. //查询-采购商品
  1060. String hql0 = "from OrderProductsEntity where 1 = 1 AND fK_ID =? ";
  1061. try {
  1062. List<OrderProductsEntity> orderProductsEntityList = systemService.findHql(hql0, id0);
  1063. addOnhandInfo2OrderProdunctsList(orders, orderProductsEntityList);
  1064. req.setAttribute("orderProductsList", orderProductsEntityList);
  1065. String load = (String) req.getAttribute("load");
  1066. req.setAttribute("load", load);
  1067. } catch (Exception e) {
  1068. logger.info(e.getMessage());
  1069. }
  1070. return new ModelAndView("cn/com/lzt/orderproducts/orderProductsViewList");
  1071. }
  1072. private void addOnhandInfo2OrderProdunctsList(OrdersEntity orders, List<OrderProductsEntity> list) {
  1073. if (orders != null && list != null && list.size() > 0) {
  1074. String ordermonths = orders.getOrderMonths();
  1075. OrderMonthsEntity ordermonthsEntity = systemService.get(OrderMonthsEntity.class, ordermonths);
  1076. String warehouseid = orders.getWarehouseId();
  1077. DateFormat format = new SimpleDateFormat("yyyy-MM");
  1078. String busiDate = format.format(ordermonthsEntity.getRefDate());
  1079. //暂时使用旧接口,带新功能启用后,再使用新接口
  1080. HashMap<String, HashMap<String, Double>> onHandMap = ordersService.queryGoodsOnhandDataForOrderAudit(busiDate, warehouseid, list);
  1081. if (onHandMap != null) {
  1082. for (OrderProductsEntity entity : list) {
  1083. String goodsid = entity.getGoodsId();
  1084. String unit = entity.getMeasureUnit();
  1085. HashMap<String, Double> result = onHandMap.get(goodsid + unit);
  1086. if (result != null) {
  1087. Double onhand = result.get(SCMConsole.ONHAND);
  1088. Double last2MonthOutQuantity = result.get(SCMConsole.LAST2MONTHOUTQUANTITY);
  1089. entity.setLastMonthUsedAmount(last2MonthOutQuantity);
  1090. entity.setOnHandAmount(onhand);
  1091. }
  1092. }
  1093. }
  1094. }
  1095. }
  1096. /**
  1097. * 加载审批明细可修改列表[采购商品]
  1098. *
  1099. * @return
  1100. */
  1101. @RequestMapping(params = "orderProductsProcUpdateList")
  1102. public ModelAndView orderProductsProcUpdateList(OrdersEntity orders, HttpServletRequest req) {
  1103. //===================================================================================
  1104. //获取参数
  1105. Object id0 = orders.getId();
  1106. orders = ordersService.get(OrdersEntity.class, (String) id0);
  1107. //===================================================================================
  1108. //查询-采购商品
  1109. try {
  1110. List<OrderProductsEntity> orderProductsEntityList = orderdao.getOrderProductsOrderByCategory((String) id0);
  1111. addOnhandInfo2OrderProdunctsList(orders, orderProductsEntityList);
  1112. req.setAttribute("orderProductsList", orderProductsEntityList);
  1113. String load = (String) req.getAttribute("load");
  1114. req.setAttribute("load", load);
  1115. } catch (Exception e) {
  1116. logger.info(e.getMessage());
  1117. }
  1118. return new ModelAndView("cn/com/lzt/orderproducts/orderProductsProcUpdateList");
  1119. }
  1120. /**
  1121. * 导出excel
  1122. *
  1123. * @param request
  1124. * @param response
  1125. */
  1126. @SuppressWarnings({"rawtypes", "unchecked"})
  1127. @RequestMapping(params = "exportXls")
  1128. public String exportXls(OrdersEntity orders, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid, ModelMap map) {
  1129. CriteriaQuery cq = new CriteriaQuery(OrdersEntity.class, dataGrid);
  1130. String orderDateBegin = request.getParameter("orderDate_begin");
  1131. String orderDateEnd = request.getParameter("orderDate_end");
  1132. // 模糊查询
  1133. String orderOnumber = orders.getOrderOnumber();
  1134. if (StringUtils.isNotBlank(orderOnumber)) {
  1135. orders.setOrderOnumber("*" + orderOnumber + "*");
  1136. }
  1137. //查询条件组装器
  1138. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, orders);
  1139. try {
  1140. //自定义追加查询条件
  1141. if (StringUtils.isNotBlank(orderDateBegin) && StringUtils.isNotBlank(orderDateEnd)) {
  1142. cq.ge("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateBegin + " 00:00:00"));
  1143. cq.le("orderDate", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(orderDateEnd + " 23:59:59"));
  1144. }
  1145. } catch (Exception e) {
  1146. throw new BusinessException(e.getMessage());
  1147. }
  1148. cq.add();
  1149. List<OrdersEntity> list = this.ordersService.getListByCriteriaQuery(cq, false);
  1150. List<OrdersEntity> listResult = null;
  1151. List<OrdersPage> pageList = new ArrayList<OrdersPage>();
  1152. List<OrderProductsEntity> orderProductsEntityListResult = null;
  1153. if (list != null && list.size() > 0) {
  1154. Class clsOrder = MyClassLoader.getClassByScn("cn.com.lzt.orders.entity.OrdersEntity");
  1155. try {
  1156. listResult = systemService.dealResultShowText4Entities(list, clsOrder);
  1157. } catch (Exception e1) {
  1158. logger.info(e1.getMessage());
  1159. }
  1160. for (OrdersEntity entity : listResult) {
  1161. try {
  1162. OrdersPage page = new OrdersPage();
  1163. MyBeanUtils.copyBeanNotNull2Bean(entity, page);
  1164. Object id0 = entity.getId();
  1165. String hql0 = "from OrderProductsEntity where 1 = 1 AND fK_ID =? ";
  1166. List<OrderProductsEntity> orderProductsEntityList = systemService.findHql(hql0, id0);
  1167. Class cls = MyClassLoader.getClassByScn("cn.com.lzt.orderproducts.entity.OrderProductsEntity");
  1168. orderProductsEntityListResult = systemService.dealResultShowText4Entities(orderProductsEntityList, cls);
  1169. page.setOrderProductsList(orderProductsEntityListResult);
  1170. pageList.add(page);
  1171. } catch (Exception e) {
  1172. logger.info(e.getMessage());
  1173. }
  1174. }
  1175. }
  1176. map.put(NormalExcelConstants.FILE_NAME, "订单表");
  1177. map.put(NormalExcelConstants.CLASS, OrdersPage.class);
  1178. map.put(NormalExcelConstants.PARAMS, new ExportParams("订单表列表", "导出人:Jeecg",
  1179. "导出信息"));
  1180. map.put(NormalExcelConstants.DATA_LIST, pageList);
  1181. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1182. }
  1183. /**
  1184. * 导出excel
  1185. *
  1186. * @param request
  1187. * @param response
  1188. */
  1189. @SuppressWarnings({"rawtypes", "unchecked"})
  1190. @RequestMapping(params = "exportXlsOrder")
  1191. public String exportXlsOrder(String orderid, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid, ModelMap map) {
  1192. TSUser user = ResourceUtil.getSessionUser();
  1193. OrdersEntity order = systemService.get(OrdersEntity.class, orderid);
  1194. List<OrderProductsEntity> details = systemService.findByProperty(OrderProductsEntity.class, "fkId", orderid);
  1195. String fileName = "申购单-" + order.getWarehouseName() + "-" + order.getOrderMonths();
  1196. if (order.getOrderType().equals("3")) {
  1197. fileName = "代业主申购单-" + order.getWarehouseName() + "-" + DateUtils.formatDate(order.getOrderDate(), "yyyy-MM-dd");
  1198. }
  1199. map.put(NormalExcelConstants.FILE_NAME, fileName);
  1200. map.put(NormalExcelConstants.CLASS, OrderProductsEntity.class);
  1201. ExportParams param = new ExportParams("申购单-" + order.getWarehouseName() + "-" + order.getOrderMonths(),
  1202. "总金额:" + order.getTotalMoney() + "元 保洁类金额:" + order.getBaojieSum() + "元 工程类金额:" + order.getGongchengSum() + "元 办公类金额:" + order.getBangongSum() + "元",
  1203. "导出信息");
  1204. param.setAddIndex(true);
  1205. map.put(NormalExcelConstants.PARAMS, param);
  1206. map.put(NormalExcelConstants.DATA_LIST, details);
  1207. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1208. }
  1209. /**
  1210. * 通过excel导入数据
  1211. *
  1212. * @param request
  1213. * @param
  1214. * @return
  1215. */
  1216. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  1217. @ResponseBody
  1218. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  1219. AjaxJson j = new AjaxJson();
  1220. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  1221. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  1222. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  1223. MultipartFile file = entity.getValue();// 获取上传文件对象
  1224. ImportParams params = new ImportParams();
  1225. params.setTitleRows(2);
  1226. params.setHeadRows(2);
  1227. params.setNeedSave(true);
  1228. try {
  1229. List<OrdersPage> list = ExcelImportUtil.importExcel(file.getInputStream(), OrdersPage.class, params);
  1230. OrdersEntity entity1 = null;
  1231. for (OrdersPage page : list) {
  1232. entity1 = new OrdersEntity();
  1233. MyBeanUtils.copyBeanNotNull2Bean(page, entity1);
  1234. ordersService.addMain(entity1, page.getOrderProductsList());
  1235. }
  1236. j.setMsg("文件导入成功!");
  1237. } catch (Exception e) {
  1238. j.setMsg("文件导入失败!");
  1239. logger.error(ExceptionUtil.getExceptionMessage(e));
  1240. } finally {
  1241. try {
  1242. file.getInputStream().close();
  1243. } catch (IOException e) {
  1244. e.printStackTrace();
  1245. }
  1246. }
  1247. }
  1248. return j;
  1249. }
  1250. /**
  1251. * 导出excel 使模板
  1252. */
  1253. @RequestMapping(params = "exportXlsByT")
  1254. public String exportXlsByT(ModelMap map) {
  1255. map.put(NormalExcelConstants.FILE_NAME, "订单表");
  1256. map.put(NormalExcelConstants.CLASS, OrdersPage.class);
  1257. map.put(NormalExcelConstants.PARAMS, new ExportParams("订单表列表", "导出人:" + ResourceUtil.getSessionUserName().getRealName(),
  1258. "导出信息"));
  1259. map.put(NormalExcelConstants.DATA_LIST, new ArrayList());
  1260. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  1261. }
  1262. /**
  1263. * 导入功能跳转
  1264. *
  1265. * @return
  1266. */
  1267. @RequestMapping(params = "upload")
  1268. public ModelAndView upload(HttpServletRequest req) {
  1269. req.setAttribute("controller_name", "ordersController");
  1270. return new ModelAndView("common/upload/pub_excel_upload");
  1271. }
  1272. @RequestMapping(method = RequestMethod.GET)
  1273. @ResponseBody
  1274. public List<OrdersEntity> list() {
  1275. List<OrdersEntity> listOrderss = ordersService.getList(OrdersEntity.class);
  1276. return listOrderss;
  1277. }
  1278. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  1279. @ResponseBody
  1280. public ResponseEntity<?> get(@PathVariable("id") String id) {
  1281. OrdersEntity task = ordersService.get(OrdersEntity.class, id);
  1282. if (task == null) {
  1283. return new ResponseEntity(HttpStatus.NOT_FOUND);
  1284. }
  1285. return new ResponseEntity(task, HttpStatus.OK);
  1286. }
  1287. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  1288. @ResponseBody
  1289. public ResponseEntity<?> create(@RequestBody OrdersPage ordersPage, UriComponentsBuilder uriBuilder) {
  1290. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  1291. Set<ConstraintViolation<OrdersPage>> failures = validator.validate(ordersPage);
  1292. if (!failures.isEmpty()) {
  1293. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  1294. }
  1295. //保存
  1296. List<OrderProductsEntity> orderProductsList = ordersPage.getOrderProductsList();
  1297. OrdersEntity orders = new OrdersEntity();
  1298. try {
  1299. MyBeanUtils.copyBeanNotNull2Bean(orders, ordersPage);
  1300. } catch (Exception e) {
  1301. logger.info(e.getMessage());
  1302. }
  1303. ordersService.addMain(orders, orderProductsList);
  1304. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  1305. String id = ordersPage.getId();
  1306. URI uri = uriBuilder.path("/rest/ordersController/" + id).build().toUri();
  1307. HttpHeaders headers = new HttpHeaders();
  1308. headers.setLocation(uri);
  1309. return new ResponseEntity(headers, HttpStatus.CREATED);
  1310. }
  1311. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  1312. public ResponseEntity<?> update(@RequestBody OrdersPage ordersPage) {
  1313. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  1314. Set<ConstraintViolation<OrdersPage>> failures = validator.validate(ordersPage);
  1315. if (!failures.isEmpty()) {
  1316. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  1317. }
  1318. //保存
  1319. List<OrderProductsEntity> orderProductsList = ordersPage.getOrderProductsList();
  1320. OrdersEntity orders = new OrdersEntity();
  1321. try {
  1322. MyBeanUtils.copyBeanNotNull2Bean(orders, ordersPage);
  1323. } catch (Exception e) {
  1324. logger.info(e.getMessage());
  1325. }
  1326. ordersService.updateMain(orders, orderProductsList);
  1327. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  1328. return new ResponseEntity(HttpStatus.NO_CONTENT);
  1329. }
  1330. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  1331. @ResponseStatus(HttpStatus.NO_CONTENT)
  1332. public void delete(@PathVariable("id") String id) {
  1333. OrdersEntity orders = ordersService.get(OrdersEntity.class, id);
  1334. ordersService.delMain(orders);
  1335. }
  1336. /**
  1337. * 解析SQL,返回字段集 支持多数据源
  1338. *
  1339. * @return
  1340. */
  1341. @SuppressWarnings({"unchecked", "rawtypes"})
  1342. @RequestMapping(params = "getProductInfo", method = RequestMethod.POST)
  1343. @ResponseBody
  1344. public Object getSqlFields(String goodsCode) {
  1345. TBGoodsInfoEntity goodInfo = null;
  1346. TBPriceInfoEntity tBPriceInfoEntity = null;
  1347. TBPriceInfoEntity tBPriceInfoEntityResult = null;
  1348. Map reJson = new HashMap<String, Object>();
  1349. try {
  1350. //goodInfo = systemService.findUniqueByProperty(TBGoodsInfoEntity.class, "goodsCode",goodsCode);
  1351. String hql_Goods = "from TBGoodsInfoEntity where 1 = 1 AND GOODS_CODE =? AND STATUS = 0 AND DELETE_FLAG = 0";
  1352. List<TBGoodsInfoEntity> tBGoodsInfoEntityList = systemService.findHql(hql_Goods, goodsCode);
  1353. if (tBGoodsInfoEntityList != null && tBGoodsInfoEntityList.size() > 0) {
  1354. goodInfo = tBGoodsInfoEntityList.get(0);
  1355. } else {
  1356. reJson.put("status", "false");
  1357. return reJson;
  1358. }
  1359. String categoryHql = " FROM TBGoodsCategoryEntity where categoryCode =? or categoryCode =? order by categoryCode";
  1360. List<TBGoodsCategoryEntity> categoryList = systemService.findHql(categoryHql, goodInfo.getBelongCategoryCode().substring(0, 7), goodInfo.getBelongCategoryCode().substring(0, 10));
  1361. if (categoryList != null && categoryList.size() == 2) {
  1362. goodInfo.setCategoryname(categoryList.get(0).getCategoryName() + "-" + categoryList.get(1).getCategoryName());
  1363. } else {
  1364. reJson.put("status", "false");
  1365. return reJson;
  1366. }
  1367. //获取参数
  1368. Object id0 = goodInfo.getId();
  1369. String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? ";
  1370. List<TBPriceInfoEntity> tBPriceInfoEntityList = systemService.findHql(hql0, id0);
  1371. if (tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0) {
  1372. for (int i = 0; i < tBPriceInfoEntityList.size(); i++) {
  1373. tBPriceInfoEntity = new TBPriceInfoEntity();
  1374. tBPriceInfoEntity = tBPriceInfoEntityList.get(i);
  1375. if (goodInfo.getPurchaseUnit() != null && tBPriceInfoEntity.getMeteringUnit() != null && goodInfo.getPurchaseUnit().equals(tBPriceInfoEntity.getMeteringUnit())) {
  1376. tBPriceInfoEntityResult = tBPriceInfoEntity;
  1377. break;
  1378. }
  1379. }
  1380. }
  1381. } catch (Exception e) {
  1382. logger.info(e.getMessage());
  1383. }
  1384. reJson.put("status", "success");
  1385. reJson.put("datainfo", goodInfo);
  1386. reJson.put("pricinfo", tBPriceInfoEntityResult);
  1387. return reJson;
  1388. }
  1389. /**
  1390. * 解析SQL,返回字段集 支持多数据源
  1391. *
  1392. * @return
  1393. */
  1394. @SuppressWarnings({"unchecked", "rawtypes"})
  1395. @RequestMapping(params = "getPurchasePriceInfo", method = RequestMethod.POST)
  1396. @ResponseBody
  1397. public Object getPurchasePriceInfo(String goodsCode, String purchaseUnit) {
  1398. Map reJson = new HashMap<String, Object>();
  1399. TBGoodsInfoEntity goodInfo = null;
  1400. if (StringUtils.isNotBlank(goodsCode) && StringUtils.isNotBlank(purchaseUnit)) {
  1401. TBPriceInfoEntity tBPriceInfoEntityResult = null;
  1402. List<String> unitlist = new ArrayList<String>();
  1403. try {
  1404. goodInfo = systemService.findUniqueByProperty(TBGoodsInfoEntity.class, "goodsCode", goodsCode);
  1405. String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID = ?";
  1406. List<TBPriceInfoEntity> tBPriceInfoEntityList = systemService.findHql(hql0, goodInfo.getId());
  1407. String hql1 = "from ProductSpecificationLimitEntity where 1 = 1 AND GOODS_ID = ?";
  1408. List<ProductSpecificationLimitEntity> lists = systemService.findHql(hql1, goodInfo.getId());
  1409. if (lists != null && lists.size() > 0) {
  1410. boolean a = false;
  1411. List<DictEntity> dictList = jeecgDictDao.querySystemDict("metering_calcu_unit");
  1412. HashMap<String, String> map = new HashMap<>();
  1413. for (DictEntity dic : dictList) {
  1414. map.put(dic.getTypecode(), dic.getTypename());
  1415. }
  1416. StringBuffer sb = new StringBuffer();
  1417. sb.append("可选择的计量单位:【");
  1418. for (int i = 0; i < lists.size(); i++) {
  1419. if (!purchaseUnit.equals(lists.get(i).getSpecification())) {
  1420. if (i > 0) {
  1421. sb.append("/");
  1422. }
  1423. sb.append(map.get(lists.get(i).getSpecification()));
  1424. } else {
  1425. a = true;
  1426. break;
  1427. }
  1428. }
  1429. sb.append("】");
  1430. if (!a) {
  1431. reJson.put("msg", sb.toString());
  1432. } else {
  1433. if (tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0) {
  1434. for (TBPriceInfoEntity price : tBPriceInfoEntityList) {
  1435. unitlist.add(price.getMeteringUnit());
  1436. if (purchaseUnit.equals(price.getMeteringUnit())) {
  1437. tBPriceInfoEntityResult = price;
  1438. }
  1439. }
  1440. }
  1441. }
  1442. } else {
  1443. if (tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0) {
  1444. for (TBPriceInfoEntity price : tBPriceInfoEntityList) {
  1445. unitlist.add(price.getMeteringUnit());
  1446. if (purchaseUnit.equals(price.getMeteringUnit())) {
  1447. tBPriceInfoEntityResult = price;
  1448. }
  1449. }
  1450. }
  1451. if (tBPriceInfoEntityResult == null) {
  1452. List<DictEntity> dictList = jeecgDictDao.querySystemDict("metering_calcu_unit");
  1453. HashMap<String, String> map = new HashMap<>();
  1454. for (DictEntity dic : dictList) {
  1455. map.put(dic.getTypecode(), dic.getTypename());
  1456. }
  1457. StringBuffer sb = new StringBuffer();
  1458. sb.append("可选择的计量单位:【");
  1459. for (int i = 0; i < unitlist.size(); i++) {
  1460. if (i > 0) {
  1461. sb.append("/");
  1462. }
  1463. sb.append(map.get(unitlist.get(i)));
  1464. }
  1465. sb.append("】");
  1466. reJson.put("msg", sb.toString());
  1467. }
  1468. }
  1469. } catch (Exception e) {
  1470. reJson.put("status", "fail");
  1471. logger.info(e.getMessage());
  1472. return reJson;
  1473. }
  1474. reJson.put("status", "success");
  1475. reJson.put("pricinfo", tBPriceInfoEntityResult);
  1476. } else {
  1477. reJson.put("status", "success");
  1478. reJson.put("pricinfo", null);
  1479. }
  1480. return reJson;
  1481. }
  1482. /**
  1483. * 供应商弹出框
  1484. *
  1485. * @param request
  1486. * @param response
  1487. * @param dataGrid
  1488. * @throws ClassNotFoundException
  1489. */
  1490. @SuppressWarnings({"rawtypes"})
  1491. @RequestMapping(params = "selRefDatagridUnits")
  1492. public void selRefDatagridUnits(String classname, RelatedUnitsEntity relatedUnitsEntity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  1493. Class cls = MyClassLoader.getClassByScn(classname);
  1494. CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  1495. //自定义追加查询条件
  1496. String[] unitstate = new String[]{Globals.Enable_Normal};
  1497. cq.in("status", unitstate);
  1498. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  1499. //cq.eq("unitType", Globals.AGRICULTURAL_SUPPLIERS);// 供应商
  1500. // 检索用 供应商编码
  1501. if (StringUtils.isNotBlank(relatedUnitsEntity.getUnitCode())) {
  1502. cq.like("unitCode", "%" + relatedUnitsEntity.getUnitCode() + "%");
  1503. relatedUnitsEntity.setUnitCode(null);
  1504. }
  1505. // 检索用 供应商名称
  1506. if (StringUtils.isNotBlank(relatedUnitsEntity.getUnitName())) {
  1507. cq.like("unitName", "%" + relatedUnitsEntity.getUnitName() + "%");
  1508. relatedUnitsEntity.setUnitName(null);
  1509. }
  1510. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  1511. commonDao.getDataGridReturn(cq, true);
  1512. List result = dataGrid.getResults();
  1513. try {
  1514. //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  1515. } catch (Exception e) {
  1516. throw new BusinessException(e);
  1517. }
  1518. dataGrid.setResults(result);
  1519. TagUtil.datagrid(response, dataGrid);
  1520. }
  1521. /**
  1522. * 供应商弹出框
  1523. *
  1524. * @return
  1525. */
  1526. @RequestMapping(params = "selectReferUnits")
  1527. public ModelAndView selectReferUnits(HttpServletRequest request) {
  1528. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/selectUnitsInfo");
  1529. String ids = oConvertUtils.getString(request.getParameter("ids"));
  1530. mv.addObject("ids", ids);
  1531. // 需要将前端的类路径传递到refer页面
  1532. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  1533. mv.addObject("classname", clsname);
  1534. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  1535. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  1536. return mv;
  1537. }
  1538. /**
  1539. * 根据货品名称获取货品信息
  1540. *
  1541. * @param request
  1542. * @param response
  1543. * @param dataGrid
  1544. * @throws ClassNotFoundException
  1545. */
  1546. @SuppressWarnings("rawtypes")
  1547. @RequestMapping(params = "selRefDatagridGoods")
  1548. public void selRefDatagridGoods(String classname, TBGoodsInfoEntity tBGoodsInfoEntity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  1549. String warehouseid = request.getParameter("warehouseid");
  1550. Class cls = MyClassLoader.getClassByScn(classname);
  1551. CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  1552. //如果有仓库信息传入,则只查询此仓库有的货品
  1553. if (StringUtils.isNotEmpty(warehouseid)) {
  1554. List<String> goodsIDList = systemService.findListbySql("select goods_id from t_b_onhand where warehouse_id = '" + warehouseid + "' and quantity > 0");
  1555. if (goodsIDList.size() > 0) {
  1556. cq.in("id", goodsIDList.toArray());
  1557. } else {
  1558. cq.eq("id", "1");
  1559. }
  1560. }
  1561. //查询条件组装器
  1562. //自定义追加查询条件
  1563. String status = request.getParameter("status");
  1564. String[] unitstate;
  1565. if (StringUtils.isNotBlank(status)) {
  1566. unitstate = StringUtils.split(status, ",");
  1567. } else {
  1568. unitstate = new String[]{Globals.Enable_Normal};
  1569. }
  1570. cq.in("status", unitstate);
  1571. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  1572. String initCategoryCodes = request.getParameter("initCategoryCode");
  1573. if (StringUtils.isNotBlank(initCategoryCodes)) {
  1574. //模糊查询
  1575. String[] initCategoryCodesArray = initCategoryCodes.split(",");
  1576. Disjunction dis = Restrictions.disjunction();
  1577. for (String initCategoryCode : initCategoryCodesArray) {
  1578. dis.add(Restrictions.like("belongCategoryCode", initCategoryCode + "%"));
  1579. }
  1580. cq.add(dis);
  1581. }
  1582. // 检索用货品分类编码
  1583. if (StringUtils.isNotBlank(tBGoodsInfoEntity.getBelongCategoryCode())) {
  1584. //模糊查询
  1585. cq.like("belongCategoryCode", "%" + tBGoodsInfoEntity.getBelongCategoryCode() + "%");
  1586. }
  1587. // 检索用货品名称
  1588. if (StringUtils.isNotBlank(tBGoodsInfoEntity.getGoodsName())) {
  1589. //模糊查询
  1590. cq.like("goodsName", "%" + tBGoodsInfoEntity.getGoodsName() + "%");
  1591. }
  1592. String goodsNameEq = request.getParameter("goodsNameEq");
  1593. if (StringUtils.isNotBlank(goodsNameEq)) {
  1594. //模糊查询
  1595. cq.eq("goodsName", goodsNameEq);
  1596. }
  1597. // 检索用货品名称
  1598. if (StringUtils.isNotBlank(tBGoodsInfoEntity.getSpecification())) {
  1599. //模糊查询
  1600. cq.like("specification", "%" + tBGoodsInfoEntity.getSpecification() + "%");
  1601. }
  1602. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  1603. commonDao.getDataGridReturn(cq, true);
  1604. List result = dataGrid.getResults();
  1605. if (result != null && result.size() > 0) {
  1606. Collections.sort(result);
  1607. TBGoodsInfoEntity goodsInfoEntity = null;
  1608. TBPriceInfoEntity tBPriceInfoEntity = null;
  1609. for (int i = 0; i < result.size(); i++) {
  1610. goodsInfoEntity = (TBGoodsInfoEntity) result.get(i);
  1611. if (StringUtils.isNotEmpty(goodsInfoEntity.getDefaultProvider()) && cq.getField().indexOf("supplierName") > -1) {
  1612. RelatedUnitsEntity entity = systemService.get(RelatedUnitsEntity.class, goodsInfoEntity.getDefaultProvider());
  1613. if (entity != null) {
  1614. goodsInfoEntity.setSupplierName(entity.getUnitName());
  1615. }
  1616. }
  1617. goodsInfoEntity.setGoodsDesc("");
  1618. //获取参数
  1619. Object id0 = goodsInfoEntity.getId();
  1620. String cateID = goodsInfoEntity.getBelongCategory();
  1621. TBGoodsCategoryEntity cate = systemService.get(TBGoodsCategoryEntity.class, cateID);
  1622. goodsInfoEntity.setBelongCategoryName(dealCateName(cate.getCategoryCode(), cate.getCategoryName()));
  1623. String hql0 = "from TBPriceInfoEntity where 1 = 1 AND GOODS_ID =? ";
  1624. List<TBPriceInfoEntity> tBPriceInfoEntityList = systemService.findHql(hql0, id0);
  1625. if (tBPriceInfoEntityList != null && tBPriceInfoEntityList.size() > 0) {
  1626. for (int j = 0; j < tBPriceInfoEntityList.size(); j++) {
  1627. tBPriceInfoEntity = new TBPriceInfoEntity();
  1628. tBPriceInfoEntity = tBPriceInfoEntityList.get(j);
  1629. if (goodsInfoEntity.getSalesUnit() != null && tBPriceInfoEntity.getMeteringUnit() != null && goodsInfoEntity.getSalesUnit().equals(tBPriceInfoEntity.getMeteringUnit())) {
  1630. goodsInfoEntity.setGoodsDesc(tBPriceInfoEntity.getRetailPrice().toString());
  1631. goodsInfoEntity.setCostPrice(tBPriceInfoEntity.getRetailPrice());
  1632. break;
  1633. }
  1634. }
  1635. }
  1636. }
  1637. }
  1638. try {
  1639. //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  1640. } catch (Exception e) {
  1641. throw new BusinessException(e);
  1642. }
  1643. dataGrid.setResults(result);
  1644. TagUtil.datagrid(response, dataGrid);
  1645. }
  1646. /**
  1647. * @param categoryName
  1648. * @param categoryName
  1649. * @return
  1650. */
  1651. private String dealCateName(String categoryCode, String categoryName) {
  1652. if (categoryCode.contains("rootA01")) {
  1653. categoryName = "工程类-" + categoryName;
  1654. } else if (categoryCode.contains("rootA02")) {
  1655. categoryName = "保洁类-" + categoryName;
  1656. } else if (categoryCode.contains("rootA03")) {
  1657. categoryName = "办公类-" + categoryName;
  1658. }
  1659. return categoryName;
  1660. }
  1661. /**
  1662. * 选择会员跳转页面
  1663. *
  1664. * @return
  1665. */
  1666. @RequestMapping(params = "selectReferGoods")
  1667. public ModelAndView selectReferGoods(HttpServletRequest request) {
  1668. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/selectGoodsInfo");
  1669. String ids = oConvertUtils.getString(request.getParameter("ids"));
  1670. mv.addObject("ids", ids);
  1671. // 需要将前端的类路径传递到refer页面
  1672. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  1673. mv.addObject("classname", clsname);
  1674. mv.addObject("warehouseid", oConvertUtils.getString(request.getParameter("warehouseid")));
  1675. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  1676. mv.addObject("categoryfield", oConvertUtils.getString(request.getParameter("categoryfield")));
  1677. mv.addObject("categoryNamefield", oConvertUtils.getString(request.getParameter("categoryNamefield")));
  1678. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  1679. mv.addObject("purchaseUnit", oConvertUtils.getString(request.getParameter("purchaseUnit")));
  1680. mv.addObject("specification", oConvertUtils.getString(request.getParameter("specification")));
  1681. mv.addObject("goodsDesc", oConvertUtils.getString(request.getParameter("goodsDesc")));
  1682. mv.addObject("supplierName", oConvertUtils.getString(request.getParameter("supplierName")));
  1683. mv.addObject("strEmpty", oConvertUtils.getString(request.getParameter("strEmpty")));
  1684. return mv;
  1685. }
  1686. /**
  1687. * 仓库弹出框
  1688. *
  1689. * @param request
  1690. * @param response
  1691. * @param dataGrid
  1692. * @throws ClassNotFoundException
  1693. */
  1694. @SuppressWarnings({"rawtypes"})
  1695. @RequestMapping(params = "selRefDatagridWareHouse")
  1696. public void selRefDatagridWareHouse(String classname, WarehouseEntity warehouse, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  1697. Class cls = MyClassLoader.getClassByScn(classname);
  1698. CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  1699. //自定义追加查询条件
  1700. String[] unitstate = new String[]{Globals.Enable_Normal};
  1701. cq.in("status", unitstate);
  1702. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  1703. String scope = oConvertUtils.getString(request.getParameter("scope"));
  1704. if ("part".equals(scope)) {
  1705. HttpSession session = ContextHolderUtils.getSession();
  1706. TSUser user = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  1707. cq.eq("responsiblePerson", user.getId());
  1708. }
  1709. // 检索用仓库编码
  1710. if (StringUtils.isNotBlank(warehouse.getWarehouseCode())) {
  1711. cq.eq("warehouseCode", warehouse.getWarehouseCode());
  1712. }
  1713. // 检索用仓库名称
  1714. if (StringUtils.isNotBlank(warehouse.getWarehouseName())) {
  1715. cq.eq("warehouseName", warehouse.getWarehouseName());
  1716. }
  1717. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  1718. commonDao.getDataGridReturn(cq, true);
  1719. List result = dataGrid.getResults();
  1720. try {
  1721. //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  1722. } catch (Exception e) {
  1723. throw new BusinessException(e);
  1724. }
  1725. dataGrid.setResults(result);
  1726. TagUtil.datagrid(response, dataGrid);
  1727. }
  1728. /**
  1729. * 仓库弹出框
  1730. *
  1731. * @return
  1732. */
  1733. @RequestMapping(params = "selectReferWareHouse")
  1734. public ModelAndView selectReferWareHouse(HttpServletRequest request) {
  1735. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/selectWareHouseInfo");
  1736. String ids = oConvertUtils.getString(request.getParameter("ids"));
  1737. mv.addObject("ids", ids);
  1738. String scope = oConvertUtils.getString(request.getParameter("scope"));
  1739. mv.addObject("scope", scope);
  1740. // 需要将前端的类路径传递到refer页面
  1741. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  1742. mv.addObject("classname", clsname);
  1743. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  1744. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  1745. return mv;
  1746. }
  1747. /**
  1748. * 经手人弹出框
  1749. *
  1750. * @param request
  1751. * @param response
  1752. * @param dataGrid
  1753. * @throws ClassNotFoundException
  1754. */
  1755. @SuppressWarnings({"rawtypes"})
  1756. @RequestMapping(params = "selRefDatagridHandlerPerson")
  1757. public void selRefDatagridHandlerPerson(String classname, TSBaseUser tSBaseUser, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  1758. // Class cls = MyClassLoader.getClassByScn(classname);
  1759. // CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  1760. // //自定义追加查询条件
  1761. // Short[] status = new Short[]{Globals.ONLINE,Globals.OFFLINE};
  1762. // cq.in("status", status);
  1763. // cq.eq("deleteFlag", Globals.Delete_Normal);
  1764. // // 检索用仓库编码
  1765. // if(StringUtils.isNotBlank(tSBaseUser.getUserName())){
  1766. // cq.eq("userName", tSBaseUser.getUserName());
  1767. // }
  1768. // // 检索用仓库名称
  1769. // if(StringUtils.isNotBlank(tSBaseUser.getRealName())){
  1770. // cq.eq("realName", tSBaseUser.getRealName());
  1771. // }
  1772. // org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  1773. // commonDao.getDataGridReturn(cq, true);
  1774. // List result = dataGrid.getResults();
  1775. // try {
  1776. // //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  1777. // } catch (Exception e) {
  1778. // throw new BusinessException(e);
  1779. // }
  1780. // dataGrid.setResults(result);
  1781. // TagUtil.datagrid(response, dataGrid);
  1782. }
  1783. /**
  1784. * 经手人弹出框
  1785. *
  1786. * @return
  1787. */
  1788. @RequestMapping(params = "selectReferHandlerPerson")
  1789. public ModelAndView selectReferHandlerPerson(HttpServletRequest request) {
  1790. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/selectHandlerPersonInfo");
  1791. String ids = oConvertUtils.getString(request.getParameter("ids"));
  1792. mv.addObject("ids", ids);
  1793. // 需要将前端的类路径传递到refer页面
  1794. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  1795. mv.addObject("classname", clsname);
  1796. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  1797. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  1798. return mv;
  1799. }
  1800. /**
  1801. * 物流弹出框
  1802. *
  1803. * @param request
  1804. * @param response
  1805. * @param dataGrid
  1806. * @throws ClassNotFoundException
  1807. */
  1808. @SuppressWarnings({"rawtypes"})
  1809. @RequestMapping(params = "selRefDatagridLogistics")
  1810. public void selRefDatagridLogistics(String classname, TBLogisticsEntity tBLogisticsEntity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  1811. Class cls = MyClassLoader.getClassByScn(classname);
  1812. CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  1813. //自定义追加查询条件
  1814. String[] unitstate = new String[]{Globals.Enable_Normal};
  1815. cq.in("status", unitstate);
  1816. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  1817. // 检索用仓库编码
  1818. if (StringUtils.isNotBlank(tBLogisticsEntity.getCompanyCode())) {
  1819. cq.eq("companyCode", tBLogisticsEntity.getCompanyCode());
  1820. }
  1821. // 检索用仓库名称
  1822. if (StringUtils.isNotBlank(tBLogisticsEntity.getCompanyName())) {
  1823. cq.eq("companyName", tBLogisticsEntity.getCompanyName());
  1824. }
  1825. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  1826. commonDao.getDataGridReturn(cq, true);
  1827. List result = dataGrid.getResults();
  1828. try {
  1829. //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  1830. } catch (Exception e) {
  1831. throw new BusinessException(e);
  1832. }
  1833. dataGrid.setResults(result);
  1834. TagUtil.datagrid(response, dataGrid);
  1835. }
  1836. /**
  1837. * 物流弹出框
  1838. *
  1839. * @return
  1840. */
  1841. @RequestMapping(params = "selectReferLogistics")
  1842. public ModelAndView selectReferLogistics(HttpServletRequest request) {
  1843. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/selectLogisticsInfo");
  1844. String ids = oConvertUtils.getString(request.getParameter("ids"));
  1845. mv.addObject("ids", ids);
  1846. // 需要将前端的类路径传递到refer页面
  1847. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  1848. mv.addObject("classname", clsname);
  1849. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  1850. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  1851. return mv;
  1852. }
  1853. /**
  1854. * 取消采购单
  1855. *
  1856. * @author guoqing.yan
  1857. */
  1858. @RequestMapping(params = "doCancel")
  1859. @ResponseBody
  1860. public AjaxJson doCancel(String id, HttpServletRequest req) {
  1861. AjaxJson j = new AjaxJson();
  1862. String message = null;
  1863. OrdersEntity orders = ordersService.getEntity(OrdersEntity.class, id);
  1864. try {
  1865. // 未审批和已经审批的可以取消
  1866. if (orders.getOrderStatus() != null && (orders.getOrderStatus().equals(Globals.UNAPPROVED) || orders.getOrderStatus().equals(Globals.APPROVED))) {
  1867. orders.setOrderStatus(Globals.CANCELED);//订单状态: 取消
  1868. ordersService.updateEntitie(orders);
  1869. message = "单号:" + orders.getOrderOnumber() + "取消成功!";
  1870. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  1871. } else {
  1872. message = "该单不能取消,请确认!";
  1873. }
  1874. } catch (Exception e) {
  1875. message = "操作失败!";
  1876. }
  1877. j.setMsg(message);
  1878. return j;
  1879. }
  1880. private void dealRoundHalfUpValue(OrdersEntity entity) {
  1881. BigDecimal baojie = entity.getBaojieSum() == null ? BigDecimal.ZERO : new BigDecimal(entity.getBaojieSum());
  1882. entity.setBaojieSum(baojie.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
  1883. BigDecimal bangong = entity.getBangongSum() == null ? BigDecimal.ZERO : new BigDecimal(entity.getBangongSum());
  1884. entity.setBangongSum(bangong.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
  1885. BigDecimal gongcheng = entity.getGongchengSum() == null ? BigDecimal.ZERO : new BigDecimal(entity.getGongchengSum());
  1886. entity.setGongchengSum(gongcheng.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
  1887. }
  1888. /**
  1889. * 取消采购单
  1890. *
  1891. * @author guoqing.yan
  1892. */
  1893. @RequestMapping(params = "doCancelAuditOrder")
  1894. @ResponseBody
  1895. public AjaxJson doCancelAuditOrder(String id, String refundvalue, HttpServletRequest req) {
  1896. AjaxJson j = new AjaxJson();
  1897. String message = null;
  1898. OrdersEntity orders = ordersService.getEntity(OrdersEntity.class, id);
  1899. // try{
  1900. // // 首先判断该订单是否入库,如果入库则不能取消
  1901. // Long godownOrderCount = systemService.getCountForJdbc("select count(1) from t_b_godown_entry where purchase_order_no='" + orders.getOrderOnumber() + "'");
  1902. // // 未入库时候
  1903. // if(godownOrderCount <=0){
  1904. // if(StringUtils.isNotBlank(refundvalue)){
  1905. // // 退的预付定金额
  1906. // Double refundMoney = Double.parseDouble(refundvalue);
  1907. // CollectMiddleEntity collectMiddleEntity = new CollectMiddleEntity();
  1908. // collectMiddleEntity.setUnitId(orders.getSupplierId());// 供应商ID
  1909. // collectMiddleEntity.setCollectionOrderOnumber(orders.getOrderOnumber());//订单号
  1910. // collectMiddleEntity.setCollectionType(Globals.DEPOSIT_REFUND);// 预付定金退款
  1911. // collectMiddleEntity.setAmountReceivable(refundMoney);
  1912. // collectMiddleService.saveOrUpdate(collectMiddleEntity);
  1913. // // 更新 往来单位表中的 应收余额
  1914. // RelatedUnitsEntity relatedUnitsEntity = relatedUnitsService.get(RelatedUnitsEntity.class, orders.getSupplierId());
  1915. // if(relatedUnitsEntity.getAmountReceivable() != null){
  1916. // relatedUnitsEntity.setPrepaidBalance(refundMoney + relatedUnitsEntity.getAmountReceivable());// 预付余额
  1917. // }else{
  1918. // relatedUnitsEntity.setPrepaidBalance(refundMoney);// 预付余额
  1919. // }
  1920. // relatedUnitsService.updateEntitie(relatedUnitsEntity);
  1921. // }
  1922. // // 未审批和已经审批的可以取消
  1923. // if(orders.getOrderStatus() != null && !orders.getOrderStatus().equals(Globals.CANCELED)){
  1924. // orders.setOrderStatus(Globals.CANCELED);//订单状态: 取消
  1925. // ordersService.updateEntitie(orders);
  1926. // message = "单号:" + orders.getOrderOnumber() + "取消成功!";
  1927. // systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  1928. // }else{
  1929. // message = "该单已经取消,请确认!";
  1930. // }
  1931. // // 已经入库的时候
  1932. // }else{
  1933. // message = "该订单已经入库,不能取消,请确认!";
  1934. // }
  1935. //
  1936. // }catch(Exception e){
  1937. // message = "操作失败!";
  1938. // }
  1939. j.setMsg(message);
  1940. return j;
  1941. }
  1942. /**
  1943. * 审核通过 采购单
  1944. *
  1945. * @author guoqing.yan
  1946. */
  1947. @RequestMapping(params = "doAudit")
  1948. @ResponseBody
  1949. public AjaxJson doAudit(String id, HttpServletRequest req) {
  1950. AjaxJson j = new AjaxJson();
  1951. String message = null;
  1952. OrdersEntity orders = ordersService.getEntity(OrdersEntity.class, id);
  1953. try {
  1954. // 未审批和已经审批的可以取消
  1955. if (orders.getOrderStatus() != null && orders.getOrderStatus().equals(Globals.UNAPPROVED)) {
  1956. // 预付定金 不为空的时候
  1957. if (orders.getPrepaidMoney() != null && orders.getPrepaidMoney() > 0) {
  1958. // 更新 付款明细中间表
  1959. // PaymentMiddleEntity paymentMiddleEntity = new PaymentMiddleEntity();
  1960. // paymentMiddleEntity.setUnitId(orders.getSupplierId());// 供应商ID
  1961. // paymentMiddleEntity.setPaymentDate(new Date());// 应付款发生日期
  1962. // paymentMiddleEntity.setPaymentOrderOnumber(orders.getOrderOnumber());// 应付款单据编号
  1963. // paymentMiddleEntity.setPaymentType(Globals.PURCHASE_ADVANCE_PAYMENT);// 应付款类型 采购预付款
  1964. // paymentMiddleEntity.setHandlerPerson(orders.getHandlerPersonId());// 经手人
  1965. // paymentMiddleEntity.setAmountPayable(orders.getPrepaidMoney());// 应付定金
  1966. // paymentMiddleService.save(paymentMiddleEntity);
  1967. // 更新 往来单位表中的 预付余额
  1968. RelatedUnitsEntity relatedUnitsEntity = relatedUnitsService.get(RelatedUnitsEntity.class, orders.getSupplierId());
  1969. if (relatedUnitsEntity.getPrepaidBalance() != null) {
  1970. relatedUnitsEntity.setPrepaidBalance(orders.getPrepaidMoney() + relatedUnitsEntity.getPrepaidBalance());// 预付余额
  1971. } else {
  1972. relatedUnitsEntity.setPrepaidBalance(orders.getPrepaidMoney());// 预付余额
  1973. }
  1974. relatedUnitsService.updateEntitie(relatedUnitsEntity);
  1975. }
  1976. // 采购单审核状态更新
  1977. ordersService.updateEntitie(orders);
  1978. HttpSession session = ContextHolderUtils.getSession();
  1979. TSUser tuser = (TSUser) session.getAttribute("LOCAL_CLINET_USER");
  1980. orders.setAuditDate(new Date());
  1981. orders.setOrderAuditor(tuser.getRealName());
  1982. orders.setOrderStatus(Globals.APPROVED);//订单状态: 已审批
  1983. message = "单号:" + orders.getOrderOnumber() + "已生效!";
  1984. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  1985. } else {
  1986. message = "该单已经取消或者已生效,不能提交生效,请确认!";
  1987. }
  1988. } catch (Exception e) {
  1989. message = "操作失败!";
  1990. }
  1991. j.setMsg(message);
  1992. return j;
  1993. }
  1994. @RequestMapping(params = "doCheckNotSubnitWarehouse")
  1995. @ResponseBody
  1996. public AjaxJson doCheckNotSubnitWarehouse(String id, String refundvalue, HttpServletRequest req) {
  1997. AjaxJson j = new AjaxJson();
  1998. String message = null;
  1999. try {
  2000. String monthSql = "select id from t_b_ordermonths where ref_date = ?";
  2001. String monthFirstDay = DateUtils.date_sdf.format(new Date()).substring(0, 7) + "-01";
  2002. if (monthFirstDay.substring(5, 7).equals("01") || monthFirstDay.substring(5, 7).equals("03") || monthFirstDay.substring(5, 7).equals("05") ||
  2003. monthFirstDay.substring(5, 7).equals("07") || monthFirstDay.substring(5, 7).equals("09") || monthFirstDay.substring(5, 7).equals("11")) {
  2004. Calendar cal = Calendar.getInstance();
  2005. cal.setTime(new Date());
  2006. cal.add(Calendar.MONTH, -1);
  2007. Date lastMonthDate = cal.getTime();
  2008. monthFirstDay = DateUtils.date_sdf.format(lastMonthDate).substring(0, 7) + "-01";
  2009. }
  2010. List<Map<String, Object>> res = systemService.findForJdbc(monthSql, monthFirstDay);
  2011. if (res.size() == 0)
  2012. return j;
  2013. wxservice.sendMsgToWXForOrdersNotSubmit(res.get(0).get("id").toString());
  2014. message = "消息发送成功,请行政经理查看美都环卫微管理";
  2015. } catch (Exception e) {
  2016. logger.error(e.getMessage());
  2017. message = "操作失败,请联系系统管理员查看失败原因。";
  2018. }
  2019. j.setMsg(message);
  2020. return j;
  2021. }
  2022. @RequestMapping(params = "checkGoAdd")
  2023. @ResponseBody
  2024. public AjaxJson checkGoAdd(String warehouseid, HttpServletRequest request) {
  2025. AjaxJson j = new AjaxJson();
  2026. //暂时取消校验,待物料二期正式使用时,在启用此校验
  2027. if (true)
  2028. return j;
  2029. TSUser tuser = ResourceUtil.getSessionUser();
  2030. if (StringUtils.isEmpty(warehouseid)) {
  2031. List<String> tsDList = systemService.findListbySql("select id from t_b_warehouse where responsible_person = '" + tuser.getId() + "' and delete_flag = 0");
  2032. if (tsDList != null && tsDList.size() > 0) {
  2033. warehouseid = tsDList.get(0);
  2034. }
  2035. }
  2036. String message = "";
  2037. String lastMonth = XcglDateUtils.addDateMonth(new Date(), -1, DateUtils.date_sdf).substring(0, 7);
  2038. //查询上个月出库单
  2039. String noStorageOutSql = "select * from t_b_storage_out where warehouseid =? and left(outdate,7) =? ";
  2040. String onhandSql = "select * from t_b_onhandreport where warehouse_id =? and order_date =? ";
  2041. String hasPorderSql = "select id from t_b_porders where warehouse_id = '" + warehouseid + "' and left(order_date,4) > '2019' order by order_date desc LIMIT 1";
  2042. String orderstotalSql = "select count(*) as totalrows from t_b_orders where warehouse_id =? ";
  2043. //新建领料点,可以直接申请物料
  2044. List<Map<String, Object>> ordersCount = systemService.findForJdbc(orderstotalSql, warehouseid);
  2045. if (Integer.parseInt(ordersCount.get(0).get("totalrows").toString()) == 0)
  2046. return j;
  2047. List<String> idList = systemService.findListbySql(hasPorderSql);
  2048. //查询上一个采购单的核对单
  2049. String noStorageInSql = "select * from t_b_storage_in where porderid in ( select id from ( " +
  2050. "select id from t_b_porders where warehouse_id =? order by order_date desc LIMIT 1 )as t)";
  2051. List<Map<String, Object>> retout = systemService.findForJdbc(noStorageOutSql, warehouseid, lastMonth);
  2052. List<Map<String, Object>> retOnhand = systemService.findForJdbc(onhandSql, warehouseid, lastMonth);
  2053. List<Map<String, Object>> retin = systemService.findForJdbc(noStorageInSql, warehouseid);
  2054. //如果上个月库存上报单及领料出库单都没有,则提示,保障系统初始运行时无错误逻辑
  2055. if (retOnhand.size() == 0 && retout.size() == 0) {
  2056. message = lastMonth + "未进行领料出库,请填写领料出库后再进行物料申购";
  2057. }
  2058. //如果有采购单,并且采购单没有进行核对,则提示
  2059. if (idList.size() > 0 && retin.size() == 0) {
  2060. message = "此领料点上次采购单未进行采购核对,请填写采购单核对后再进行物料申购";
  2061. }
  2062. if (StringUtils.isNotEmpty(message)) {
  2063. j.setSuccess(false);
  2064. j.setMsg(message);
  2065. }
  2066. return j;
  2067. }
  2068. @RequestMapping(params = "exportDetailPdf4Mobile")
  2069. public void exportDetailPdf4Mobile(@RequestParam("procInstId") String procInstId, HttpServletResponse response) {
  2070. ActivitiTools tools = ActivitiTools.getInstance(procInstId, true);
  2071. tools.setProcInstId(null);
  2072. ActivitiPdfExport pdfExport = tools.getPdfExport();
  2073. String id = tools.getBusId();
  2074. OrdersEntity orders = ordersService.getEntity(OrdersEntity.class, id);
  2075. String monthsSql = "select ordermonths_name from t_b_ordermonths where id = '" + orders.getOrderMonths() + "'";
  2076. List<String> monthsNames = systemService.findListbySql(monthsSql);
  2077. String orderMonths = orders.getOrderMonths();
  2078. if (monthsNames.size() > 0) {
  2079. // orders.setOrderMonths(monthsNames.get(0));
  2080. orderMonths = monthsNames.get(0);
  2081. }
  2082. pdfExport.table()
  2083. .cell("领料点", orders.getWarehouseName())
  2084. .cell("申购月份", orderMonths)
  2085. .cell("总金额", orders.getTotalMoney() == null ? "0" : orders.getTotalMoney().toString())
  2086. .cell("保洁类金额", orders.getBaojieSum() == null ? "0" : orders.getBaojieSum().toString())
  2087. .cell("工程类金额", orders.getGongchengSum() == null ? "0" : orders.getGongchengSum().toString())
  2088. .cell("办公类金额", orders.getBangongSum() == null ? "0" : orders.getBangongSum().toString())
  2089. .cell("备注说明", orders.getDescription())
  2090. ;
  2091. String hql0 = "from OrderProductsEntity where 1 = 1 AND fK_ID =? ";
  2092. try {
  2093. List<OrderProductsEntity> orderProductsEntityList = systemService.findHql(hql0, id);
  2094. // addOnhandInfo2OrderProdunctsList(orders,orderProductsEntityList);
  2095. pdfExport.cell("");
  2096. PdfPTable detailTableHeader = pdfExport.createTable(7);
  2097. detailTableHeader.setWidthPercentage(100);
  2098. pdfExport.cell(detailTableHeader, "货品名称", true);
  2099. pdfExport.cell(detailTableHeader, "规格型号", true);
  2100. pdfExport.cell(detailTableHeader, "计量单位", true);
  2101. pdfExport.cell(detailTableHeader, "数量", true);
  2102. pdfExport.cell(detailTableHeader, "采购单价(元)", true);
  2103. pdfExport.cell(detailTableHeader, "金额(元)", true);
  2104. pdfExport.cell(detailTableHeader, "备注", true);
  2105. pdfExport.cell(detailTableHeader);
  2106. int i = 0;
  2107. for (OrderProductsEntity detailEntity : orderProductsEntityList) {
  2108. i++;
  2109. PdfPTable detailTable = pdfExport.createTable(7);
  2110. pdfExport.cell(detailTable, detailEntity.getPname(), false);
  2111. pdfExport.cell(detailTable, detailEntity.getSpecType(), false);
  2112. pdfExport.cell(detailTable, DictUtil.formatToTypeName(detailEntity.getMeasureUnit(), "metering_calcu_unit"), false);
  2113. pdfExport.cell(detailTable, detailEntity.getQuantity().toString(), false);
  2114. pdfExport.cell(detailTable, detailEntity.getPurchasePrice().toString(), false);
  2115. pdfExport.cell(detailTable, detailEntity.getMoney().toString(), false);
  2116. pdfExport.cell(detailTable, detailEntity.getRemark(), false);
  2117. pdfExport.cell("明细" + i, true);
  2118. pdfExport.cell(detailTable);
  2119. }
  2120. } catch (Exception e) {
  2121. e.printStackTrace();
  2122. logger.info(e.getMessage());
  2123. }
  2124. tools.exportToResponse(response);
  2125. }
  2126. /**
  2127. * 选择会员跳转页面
  2128. *
  2129. * @return
  2130. */
  2131. @RequestMapping(params = "selectReferGoodsBySameName")
  2132. public ModelAndView selectReferGoodsBySameName(HttpServletRequest request) {
  2133. ModelAndView mv = new ModelAndView("cn/com/lzt/orders/selectGoodsInfo-samename");
  2134. String ids = oConvertUtils.getString(request.getParameter("ids"));
  2135. mv.addObject("ids", ids);
  2136. // 需要将前端的类路径传递到refer页面
  2137. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  2138. mv.addObject("classname", clsname);
  2139. mv.addObject("warehouseid", oConvertUtils.getString(request.getParameter("warehouseid")));
  2140. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  2141. mv.addObject("categoryfield", oConvertUtils.getString(request.getParameter("categoryfield")));
  2142. mv.addObject("categoryNamefield", oConvertUtils.getString(request.getParameter("categoryNamefield")));
  2143. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  2144. mv.addObject("purchaseUnit", oConvertUtils.getString(request.getParameter("purchaseUnit")));
  2145. mv.addObject("specification", oConvertUtils.getString(request.getParameter("specification")));
  2146. mv.addObject("goodsDesc", oConvertUtils.getString(request.getParameter("goodsDesc")));
  2147. mv.addObject("supplierName", oConvertUtils.getString(request.getParameter("supplierName")));
  2148. mv.addObject("strEmpty", oConvertUtils.getString(request.getParameter("strEmpty")));
  2149. return mv;
  2150. }
  2151. }