TBInitialStockController.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852
  1. package cn.com.lzt.initialstock.controller;
  2. import cn.com.lzt.goodsinfo.entity.TBGoodsInfoEntity;
  3. import cn.com.lzt.initialstock.entity.TBInitialStockEntity;
  4. import cn.com.lzt.initialstock.page.TBInitialStockPage;
  5. import cn.com.lzt.initialstock.service.TBInitialStockServiceI;
  6. import cn.com.lzt.initialstockdetail.entity.TBInitialStockDetailEntity;
  7. import cn.com.lzt.stockinfo.entity.TBStockInfoEntity;
  8. import cn.com.lzt.warehouse.entity.WarehouseEntity;
  9. import org.apache.commons.lang.xwork.StringUtils;
  10. import org.apache.log4j.Logger;
  11. import org.jeecgframework.core.beanvalidator.BeanValidators;
  12. import org.jeecgframework.core.common.controller.BaseController;
  13. import org.jeecgframework.core.common.dao.ICommonDao;
  14. import org.jeecgframework.core.common.exception.BusinessException;
  15. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  16. import org.jeecgframework.core.common.model.json.AjaxJson;
  17. import org.jeecgframework.core.common.model.json.DataGrid;
  18. import org.jeecgframework.core.constant.Globals;
  19. import org.jeecgframework.core.util.*;
  20. import org.jeecgframework.poi.excel.ExcelImportUtil;
  21. import org.jeecgframework.poi.excel.entity.ExportParams;
  22. import org.jeecgframework.poi.excel.entity.ImportParams;
  23. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  24. import org.jeecgframework.tag.core.easyui.TagUtil;
  25. import org.jeecgframework.web.system.pojo.base.TSBaseUser;
  26. import org.jeecgframework.web.system.pojo.base.TSType;
  27. import org.jeecgframework.web.system.pojo.base.TSTypegroup;
  28. import org.jeecgframework.web.system.pojo.base.TSUser;
  29. import org.jeecgframework.web.system.service.SystemService;
  30. import org.springframework.beans.factory.annotation.Autowired;
  31. import org.springframework.http.HttpHeaders;
  32. import org.springframework.http.HttpStatus;
  33. import org.springframework.http.MediaType;
  34. import org.springframework.http.ResponseEntity;
  35. import org.springframework.stereotype.Controller;
  36. import org.springframework.ui.ModelMap;
  37. import org.springframework.web.bind.annotation.*;
  38. import org.springframework.web.multipart.MultipartFile;
  39. import org.springframework.web.multipart.MultipartHttpServletRequest;
  40. import org.springframework.web.servlet.ModelAndView;
  41. import org.springframework.web.util.UriComponentsBuilder;
  42. import javax.servlet.http.HttpServletRequest;
  43. import javax.servlet.http.HttpServletResponse;
  44. import javax.servlet.http.HttpSession;
  45. import javax.validation.ConstraintViolation;
  46. import javax.validation.Validator;
  47. import java.io.IOException;
  48. import java.net.URI;
  49. import java.util.*;
  50. /**
  51. * @Title: Controller
  52. * @Description: 期初库存表
  53. * @author onlineGenerator
  54. * @date 2017-06-20 13:41:25
  55. * @version V1.0
  56. *
  57. */
  58. @Controller
  59. @RequestMapping("/tBInitialStockController")
  60. public class TBInitialStockController extends BaseController {
  61. /**
  62. * Logger for this class
  63. */
  64. private static final Logger logger = Logger.getLogger(TBInitialStockController.class);
  65. @Autowired
  66. private TBInitialStockServiceI tBInitialStockService;
  67. @Autowired
  68. private SystemService systemService;
  69. @Autowired
  70. private Validator validator;
  71. @Autowired
  72. public ICommonDao commonDao;
  73. /**
  74. * 期初库存表列表 页面跳转
  75. *
  76. * @return
  77. */
  78. @RequestMapping(params = "list")
  79. public ModelAndView list(HttpServletRequest request) {
  80. return new ModelAndView("cn/com/lzt/initialstock/tBInitialStockList");
  81. }
  82. /**
  83. * easyui AJAX请求数据
  84. *
  85. * @param request
  86. * @param response
  87. * @param dataGrid
  88. * @param user
  89. */
  90. @RequestMapping(params = "datagrid")
  91. public void datagrid(TBInitialStockEntity tBInitialStock,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  92. CriteriaQuery cq = new CriteriaQuery(TBInitialStockEntity.class, dataGrid);
  93. //查询条件组装器
  94. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tBInitialStock);
  95. try{
  96. //自定义追加查询条件
  97. }catch (Exception e) {
  98. throw new BusinessException(e.getMessage());
  99. }
  100. cq.add();
  101. this.tBInitialStockService.getDataGridReturn(cq, true);
  102. TagUtil.datagrid(response, dataGrid);
  103. }
  104. /**
  105. * 导出excel
  106. *
  107. * @param request
  108. * @param response
  109. */
  110. @RequestMapping(params = "exportXls")
  111. public String exportXls(TBInitialStockEntity tBInitialStock,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid,ModelMap map) {
  112. CriteriaQuery cq = new CriteriaQuery(TBInitialStockEntity.class, dataGrid);
  113. //查询条件组装器
  114. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, tBInitialStock);
  115. try{
  116. //自定义追加查询条件
  117. }catch (Exception e) {
  118. throw new BusinessException(e.getMessage());
  119. }
  120. cq.add();
  121. List<TBInitialStockEntity> list=this.tBInitialStockService.getListByCriteriaQuery(cq, false);
  122. List<TBInitialStockPage> pageList=new ArrayList<TBInitialStockPage>();
  123. if(list!=null&&list.size()>0){
  124. for(TBInitialStockEntity entity:list){
  125. try{
  126. TBInitialStockPage page=new TBInitialStockPage();
  127. MyBeanUtils.copyBeanNotNull2Bean(entity,page);
  128. Object id0 = entity.getId();
  129. String hql0 = "from TBInitialStockDetailEntity where 1 = 1 AND iNITIAL_STOCK_ID =? ";
  130. List<TBInitialStockDetailEntity> tBInitialStockDetailEntityList = systemService.findHql(hql0,id0);
  131. page.setTBInitialStockDetailList(tBInitialStockDetailEntityList);
  132. pageList.add(page);
  133. }catch(Exception e){
  134. logger.info(e.getMessage());
  135. }
  136. }
  137. }
  138. map.put(NormalExcelConstants.FILE_NAME,"期初库存表");
  139. map.put(NormalExcelConstants.CLASS,TBInitialStockPage.class);
  140. map.put(NormalExcelConstants.PARAMS,new ExportParams("期初库存表列表", "导出人:Jeecg",
  141. "导出信息"));
  142. map.put(NormalExcelConstants.DATA_LIST,pageList);
  143. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  144. }
  145. /**
  146. * 删除期初库存表
  147. *
  148. * @return
  149. */
  150. @RequestMapping(params = "doDel")
  151. @ResponseBody
  152. public AjaxJson doDel(String id, HttpServletRequest request) {
  153. AjaxJson j = new AjaxJson();
  154. TBInitialStockEntity tBInitialStock = systemService.getEntity(TBInitialStockEntity.class, id);
  155. String message = "期初库存表删除成功";
  156. try{
  157. tBInitialStockService.delMain(tBInitialStock);
  158. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  159. }catch(Exception e){
  160. e.printStackTrace();
  161. message = "期初库存表删除失败";
  162. throw new BusinessException(e.getMessage());
  163. }
  164. j.setMsg(message);
  165. return j;
  166. }
  167. /* @RequestMapping(params = "doDel")
  168. @ResponseBody
  169. public AjaxJson doDel(TBInitialStockEntity tBInitialStock, HttpServletRequest request) {
  170. AjaxJson j = new AjaxJson();
  171. tBInitialStock = systemService.getEntity(TBInitialStockEntity.class, tBInitialStock.getId());
  172. String message = "期初库存表删除成功";
  173. try{
  174. tBInitialStockService.delMain(tBInitialStock);
  175. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  176. }catch(Exception e){
  177. e.printStackTrace();
  178. message = "期初库存表删除失败";
  179. throw new BusinessException(e.getMessage());
  180. }
  181. j.setMsg(message);
  182. return j;
  183. }*/
  184. /**
  185. * 批量删除期初库存表
  186. *
  187. * @return
  188. */
  189. @RequestMapping(params = "doBatchDel")
  190. @ResponseBody
  191. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  192. AjaxJson j = new AjaxJson();
  193. String message = "期初库存表删除成功";
  194. try{
  195. for(String id:ids.split(",")){
  196. TBInitialStockEntity tBInitialStock = systemService.getEntity(TBInitialStockEntity.class,id);
  197. tBInitialStockService.delMain(tBInitialStock);
  198. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  199. }
  200. }catch(Exception e){
  201. e.printStackTrace();
  202. message = "期初库存表删除失败";
  203. throw new BusinessException(e.getMessage());
  204. }
  205. j.setMsg(message);
  206. return j;
  207. }
  208. /**
  209. * 同步
  210. *
  211. * @author zhijia.wang
  212. */
  213. @RequestMapping(params = "syncRealStock")
  214. @ResponseBody
  215. public AjaxJson syncRealStock(String id, HttpServletRequest req) {
  216. AjaxJson j = new AjaxJson();
  217. String message = null;
  218. String hql1 = "from TBInitialStockDetailEntity where initialStockId=? ";
  219. // List<TBInitialStockDetailEntity> detailList = null;//期初库存详情list
  220. // List<TBRealtimeStockEntity> realtimeStockList = new ArrayList<TBRealtimeStockEntity>();//实时库存list
  221. // try{
  222. // TBInitialStockEntity initialStock = systemService.getEntity(TBInitialStockEntity.class, id);
  223. // if(initialStock != null){
  224. // initialStock.setSyncStatus(Globals.Sync_yes);//设置为已同步状态
  225. // detailList = systemService.findHql(hql1, initialStock.getId());
  226. // if(detailList!=null && detailList.size()>0){
  227. // for(int i=0; i<detailList.size(); i++){
  228. // TBRealtimeStockEntity realtimeStock = new TBRealtimeStockEntity();
  229. // realtimeStock.setGoodsId(detailList.get(i).getGoodsId());
  230. // realtimeStock.setWarehouseId(initialStock.getWarehouseId());
  231. // realtimeStock.setAmount(detailList.get(i).getQuantity());
  232. // realtimeStock.setBaseUnit(detailList.get(i).getMeteringUnit());
  233. // realtimeStockList.add(realtimeStock);
  234. // }
  235. // }else{
  236. // message = "数据异常!";
  237. // j.setSuccess(false);
  238. // j.setMsg(message);
  239. // return j;
  240. // }
  241. // }else{
  242. // message = "数据异常,该条记录不存在!";
  243. // j.setSuccess(false);
  244. // j.setMsg(message);
  245. // return j;
  246. // }
  247. // tBInitialStockService.addRealtimeStockList(initialStock, realtimeStockList);
  248. // message = "同步成功!";
  249. // systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  250. // }catch(Exception e){
  251. // message = "操作失败!";
  252. // }
  253. j.setMsg(message);
  254. return j;
  255. }
  256. /**
  257. * 添加期初库存表
  258. *
  259. * @param ids
  260. * @return
  261. */
  262. @RequestMapping(params = "doAdd")
  263. @ResponseBody
  264. public AjaxJson doAdd(TBInitialStockEntity tBInitialStock,TBInitialStockPage tBInitialStockPage, HttpServletRequest request) {
  265. List<TBInitialStockDetailEntity> tBInitialStockDetailList = tBInitialStockPage.getTBInitialStockDetailList();
  266. // List<TBRealtimeStockEntity> realStickList = new ArrayList<TBRealtimeStockEntity>();//实时库存集合
  267. tBInitialStock.setSyncStatus(Globals.Sync_no);
  268. AjaxJson j = new AjaxJson();
  269. String message = "添加成功";
  270. try{
  271. //设置仓库code和name
  272. WarehouseEntity warehouseEntity = systemService.getEntity(WarehouseEntity.class, tBInitialStock.getWarehouseId());
  273. if(warehouseEntity != null){
  274. tBInitialStock.setWarehouseCode(warehouseEntity.getWarehouseCode());
  275. tBInitialStock.setWarehouseName(warehouseEntity.getWarehouseName());
  276. String hql1 = "from TBInitialStockEntity where warehouseId=? ";
  277. List<TBInitialStockEntity> initialStockEntityList = systemService.findHql(hql1, tBInitialStock.getWarehouseId());
  278. if(initialStockEntityList != null && initialStockEntityList.size()>0){
  279. message = "添加失败,仓库:" + warehouseEntity.getWarehouseName()+"已经添加过期初库存,不能重复添加";
  280. j.setMsg(message);
  281. j.setSuccess(false);
  282. return j;
  283. }
  284. }
  285. //设置经手人登录名、姓名等
  286. HttpSession session = ContextHolderUtils.getSession();
  287. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  288. if(user != null){
  289. tBInitialStock.setByhandId(user.getId());
  290. tBInitialStock.setByhandBy(user.getUserName());//经手人登录名称
  291. tBInitialStock.setByhandName(user.getRealName());//经手人名称
  292. tBInitialStock.setByhandDate(new Date());//经手日期
  293. }else{
  294. message = "请先选择经手人后再提交";
  295. j.setMsg(message);
  296. j.setSuccess(false);
  297. return j;
  298. }
  299. if(tBInitialStockDetailList != null && tBInitialStockDetailList.size()>0){
  300. Map<String,TBInitialStockDetailEntity> map = new HashMap<String,TBInitialStockDetailEntity>();
  301. for(int i=0;i<tBInitialStockDetailList.size();i++){
  302. TBInitialStockDetailEntity initialStockDetail = tBInitialStockDetailList.get(i);
  303. if(initialStockDetail.getGoodsId() != null && !"".equals(initialStockDetail.getGoodsId())){
  304. map.put(initialStockDetail.getGoodsId(), initialStockDetail);
  305. }else{
  306. map.put(initialStockDetail.getGoodsCode(), initialStockDetail);
  307. }
  308. }
  309. if(tBInitialStockDetailList.size() != map.size()){
  310. message = "添加失败:货品存在重复,请重新选择货品";
  311. j.setMsg(message);
  312. j.setSuccess(false);
  313. return j;
  314. }
  315. }
  316. //计算总额
  317. /*double moneySum = 0f;
  318. if(tBInitialStockDetailList != null && tBInitialStockDetailList.size()>0){
  319. for(int i=0;i<tBInitialStockDetailList.size();i++){
  320. TBInitialStockDetailEntity initialStockDetail = tBInitialStockDetailList.get(i);
  321. moneySum = moneySum + initialStockDetail.getTotalCost();
  322. //设置商品的实时库存
  323. TBRealtimeStockEntity realStick = new TBRealtimeStockEntity();
  324. realStick.setGoodsId(initialStockDetail.getGoodsId());
  325. realStick.setWarehouseId(warehouseEntity.getId());
  326. realStick.setAmount(initialStockDetail.getTotalCost());
  327. realStick.setBaseUnit(initialStockDetail.getMeteringUnit());
  328. realStickList.add(realStick);
  329. }
  330. tBInitialStock.setTotalMoney(moneySum);
  331. }*/
  332. // tBInitialStockService.addMain_custom(tBInitialStock, tBInitialStockDetailList, realStickList);
  333. tBInitialStockService.addMain(tBInitialStock, tBInitialStockDetailList);
  334. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  335. }catch(Exception e){
  336. e.printStackTrace();
  337. message = "期初库存表添加失败";
  338. throw new BusinessException(e.getMessage());
  339. }
  340. j.setMsg(message);
  341. return j;
  342. }
  343. /**
  344. * 更新期初库存表
  345. *
  346. * @param ids
  347. * @return
  348. */
  349. @RequestMapping(params = "doUpdate")
  350. @ResponseBody
  351. public AjaxJson doUpdate(TBInitialStockEntity tBInitialStock,TBInitialStockPage tBInitialStockPage, HttpServletRequest request) {
  352. List<TBInitialStockDetailEntity> tBInitialStockDetailList = tBInitialStockPage.getTBInitialStockDetailList();
  353. AjaxJson j = new AjaxJson();
  354. String message = "更新成功";
  355. try{
  356. //设置仓库code和name
  357. WarehouseEntity warehouseEntity = systemService.getEntity(WarehouseEntity.class, tBInitialStock.getWarehouseId());
  358. if(warehouseEntity != null){
  359. tBInitialStock.setWarehouseCode(warehouseEntity.getWarehouseCode());
  360. tBInitialStock.setWarehouseName(warehouseEntity.getWarehouseName());
  361. // String hql1 = "from TBInitialStockEntity where warehouseId=? ";
  362. // String sql1 = "select count(1) from t_b_initial_stock where WAREHOUSE_ID='" + tBInitialStock.getWarehouseId()+"'";
  363. String sql2 = "select WAREHOUSE_NAME from t_b_initial_stock where WAREHOUSE_ID=? ";
  364. // List<TBInitialStockEntity> initialStockEntityList = tBInitialStockService.findHql(hql1, tBInitialStock.getWarehouseId());
  365. // Long lo = tBInitialStockService.getCountForJdbc(sql1);
  366. List<Map<String, Object>> list = tBInitialStockService.findForJdbc(sql2, tBInitialStock.getWarehouseId());
  367. if(list != null && list.size() != 1){
  368. message = "更新失败,仓库:" + warehouseEntity.getWarehouseName()+"已经添加过期初库存,不能重复添加";
  369. j.setMsg(message);
  370. j.setSuccess(false);
  371. return j;
  372. }
  373. }
  374. //设置经手人登录名、姓名等
  375. TSBaseUser user = systemService.getEntity(TSBaseUser.class, tBInitialStock.getByhandId());
  376. if(user != null){
  377. tBInitialStock.setByhandBy(user.getUserName());//经手人登录名称
  378. tBInitialStock.setByhandName(user.getRealName());//经手人名称
  379. tBInitialStock.setByhandDate(new Date());//经手日期
  380. }else{
  381. message = "请先选择经手人后再提交";
  382. j.setMsg(message);
  383. j.setSuccess(false);
  384. return j;
  385. }
  386. if(tBInitialStockDetailList != null && tBInitialStockDetailList.size()>0){
  387. Map<String,TBInitialStockDetailEntity> map = new HashMap<String,TBInitialStockDetailEntity>();
  388. for(int i=0;i<tBInitialStockDetailList.size();i++){
  389. TBInitialStockDetailEntity initialStockDetail = tBInitialStockDetailList.get(i);
  390. if(initialStockDetail.getGoodsId() != null && !"".equals(initialStockDetail.getGoodsId())){
  391. map.put(initialStockDetail.getGoodsId(), initialStockDetail);
  392. }else{
  393. map.put(initialStockDetail.getGoodsCode(), initialStockDetail);
  394. }
  395. }
  396. if(tBInitialStockDetailList.size() != map.size()){
  397. message = "更新失败:货品存在重复,请重新选择货品";
  398. j.setMsg(message);
  399. j.setSuccess(false);
  400. return j;
  401. }
  402. }
  403. //计算总额
  404. /*double moneySum = 0f;
  405. if(tBInitialStockDetailList != null && tBInitialStockDetailList.size()>0){
  406. for(int i=0;i<tBInitialStockDetailList.size();i++){
  407. TBInitialStockDetailEntity initialStockDetail= tBInitialStockDetailList.get(i);
  408. moneySum = moneySum + initialStockDetail.getTotalCost();
  409. }
  410. tBInitialStock.setTotalMoney(moneySum);
  411. }*/
  412. tBInitialStockService.updateMain(tBInitialStock, tBInitialStockDetailList);
  413. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  414. }catch(Exception e){
  415. e.printStackTrace();
  416. message = "更新期初库存表失败";
  417. throw new BusinessException(e.getMessage());
  418. }
  419. j.setMsg(message);
  420. return j;
  421. }
  422. /**
  423. * 期初库存表新增页面跳转
  424. *
  425. * @return
  426. */
  427. @RequestMapping(params = "goAdd")
  428. public ModelAndView goAdd(TBInitialStockEntity tBInitialStock, HttpServletRequest req) {
  429. if (StringUtil.isNotEmpty(tBInitialStock.getId())) {
  430. tBInitialStock = tBInitialStockService.getEntity(TBInitialStockEntity.class, tBInitialStock.getId());
  431. req.setAttribute("tBInitialStockPage", tBInitialStock);
  432. }
  433. return new ModelAndView("cn/com/lzt/initialstock/tBInitialStock-add");
  434. }
  435. /**
  436. * 期初库存表编辑页面跳转
  437. *
  438. * @return
  439. */
  440. @RequestMapping(params = "goUpdate")
  441. public ModelAndView goUpdate(TBInitialStockEntity tBInitialStock, HttpServletRequest req) {
  442. if (StringUtil.isNotEmpty(tBInitialStock.getId())) {
  443. tBInitialStock = tBInitialStockService.getEntity(TBInitialStockEntity.class, tBInitialStock.getId());
  444. idandname(req, tBInitialStock);
  445. req.setAttribute("tBInitialStockPage", tBInitialStock);
  446. }
  447. return new ModelAndView("cn/com/lzt/initialstock/tBInitialStock-update");
  448. }
  449. public void idandname(HttpServletRequest req, TBInitialStockEntity tBInitialStock) {
  450. WarehouseEntity warehouseEntity = systemService.findUniqueByProperty(WarehouseEntity.class, "id", tBInitialStock.getWarehouseId());
  451. TSBaseUser user = systemService.findUniqueByProperty(TSBaseUser.class, "id", tBInitialStock.getByhandId());
  452. String wareHouseId = "";
  453. String wareHouseIdName = "";
  454. if (warehouseEntity != null) {
  455. wareHouseId = warehouseEntity.getId();
  456. wareHouseIdName= warehouseEntity.getWarehouseName();
  457. }
  458. req.setAttribute("wareHouseId", wareHouseId);
  459. req.setAttribute("wareHouseIdName", wareHouseIdName);
  460. String userId = "";
  461. String realName = "";
  462. if (user != null) {
  463. userId = user.getId();
  464. realName = user.getRealName();
  465. }
  466. req.setAttribute("userId", userId);
  467. req.setAttribute("realName", realName);
  468. }
  469. /**
  470. * 加载明细列表[期初库存详情]
  471. *
  472. * @return
  473. */
  474. @RequestMapping(params = "tBInitialStockDetailList")
  475. public ModelAndView tBInitialStockDetailList(TBInitialStockEntity tBInitialStock, HttpServletRequest req) {
  476. //===================================================================================
  477. //获取参数
  478. Object id0 = tBInitialStock.getId();
  479. //===================================================================================
  480. //查询-期初库存详情
  481. String hql0 = "from TBInitialStockDetailEntity where 1 = 1 AND iNITIAL_STOCK_ID =? ";
  482. //查询-字典
  483. String hql1 = "from TSTypegroup where typegroupcode =? ";
  484. // String hql2 = "from TSType where iNITIAL_STOCK_ID = ? ";
  485. try{
  486. List<TBInitialStockDetailEntity> tBInitialStockDetailEntityList = systemService.findHql(hql0,id0);
  487. //查询字典(计量单位)
  488. if(tBInitialStockDetailEntityList!=null && tBInitialStockDetailEntityList.size()>0){
  489. for(int i=0; i<tBInitialStockDetailEntityList.size(); i++){
  490. TBInitialStockDetailEntity initialStockDetail = tBInitialStockDetailEntityList.get(i);
  491. //查出所有的计量单位
  492. List<TSTypegroup> groupList = systemService.findHql(hql1,Globals.Dic_meteringUnit);
  493. if(groupList != null && groupList.size()>0){
  494. TSTypegroup group = groupList.get(0);
  495. List<TSType> typeList = group.getTSTypes();
  496. if(typeList != null && typeList.size()>0){
  497. for(int j=0; j<typeList.size(); j++){
  498. TSType type = typeList.get(j);
  499. if(type.getTypecode().equals(initialStockDetail.getMeteringUnit())){
  500. tBInitialStockDetailEntityList.get(i).setMeteringUnitName(type.getTypename());
  501. }
  502. }
  503. }
  504. }
  505. }
  506. }
  507. req.setAttribute("tBInitialStockDetailList", tBInitialStockDetailEntityList);
  508. }catch(Exception e){
  509. logger.info(e.getMessage());
  510. }
  511. return new ModelAndView("cn/com/lzt/initialstockdetail/tBInitialStockDetailList");
  512. }
  513. /**
  514. * 通过excel导入数据
  515. * @param request
  516. * @param
  517. * @return
  518. */
  519. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  520. @ResponseBody
  521. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  522. AjaxJson j = new AjaxJson();
  523. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  524. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  525. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  526. MultipartFile file = entity.getValue();// 获取上传文件对象
  527. ImportParams params = new ImportParams();
  528. params.setTitleRows(2);
  529. params.setHeadRows(2);
  530. params.setNeedSave(true);
  531. try {
  532. List<TBInitialStockPage> list = ExcelImportUtil.importExcel(file.getInputStream(), TBInitialStockPage.class, params);
  533. TBInitialStockEntity entity1=null;
  534. for (TBInitialStockPage page : list) {
  535. entity1=new TBInitialStockEntity();
  536. MyBeanUtils.copyBeanNotNull2Bean(page,entity1);
  537. tBInitialStockService.addMain(entity1, page.getTBInitialStockDetailList());
  538. }
  539. j.setMsg("文件导入成功!");
  540. } catch (Exception e) {
  541. j.setMsg("文件导入失败!");
  542. logger.error(ExceptionUtil.getExceptionMessage(e));
  543. }finally{
  544. try {
  545. file.getInputStream().close();
  546. } catch (IOException e) {
  547. e.printStackTrace();
  548. }
  549. }
  550. }
  551. return j;
  552. }
  553. /**
  554. * 导出excel 使模板
  555. */
  556. @RequestMapping(params = "exportXlsByT")
  557. public String exportXlsByT(ModelMap map) {
  558. map.put(NormalExcelConstants.FILE_NAME,"期初库存表");
  559. map.put(NormalExcelConstants.CLASS,TBInitialStockPage.class);
  560. map.put(NormalExcelConstants.PARAMS,new ExportParams("期初库存表列表", "导出人:"+ ResourceUtil.getSessionUserName().getRealName(),
  561. "导出信息"));
  562. map.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  563. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  564. }
  565. /**
  566. * 导入功能跳转
  567. *
  568. * @return
  569. */
  570. @RequestMapping(params = "upload")
  571. public ModelAndView upload(HttpServletRequest req) {
  572. req.setAttribute("controller_name", "tBInitialStockController");
  573. return new ModelAndView("common/upload/pub_excel_upload");
  574. }
  575. @RequestMapping(method = RequestMethod.GET)
  576. @ResponseBody
  577. public List<TBInitialStockEntity> list() {
  578. List<TBInitialStockEntity> listTBInitialStocks=tBInitialStockService.getList(TBInitialStockEntity.class);
  579. return listTBInitialStocks;
  580. }
  581. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  582. @ResponseBody
  583. public ResponseEntity<?> get(@PathVariable("id") String id) {
  584. TBInitialStockEntity task = tBInitialStockService.get(TBInitialStockEntity.class, id);
  585. if (task == null) {
  586. return new ResponseEntity(HttpStatus.NOT_FOUND);
  587. }
  588. return new ResponseEntity(task, HttpStatus.OK);
  589. }
  590. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  591. @ResponseBody
  592. public ResponseEntity<?> create(@RequestBody TBInitialStockPage tBInitialStockPage, UriComponentsBuilder uriBuilder) {
  593. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  594. Set<ConstraintViolation<TBInitialStockPage>> failures = validator.validate(tBInitialStockPage);
  595. if (!failures.isEmpty()) {
  596. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  597. }
  598. //保存
  599. List<TBInitialStockDetailEntity> tBInitialStockDetailList = tBInitialStockPage.getTBInitialStockDetailList();
  600. TBInitialStockEntity tBInitialStock = new TBInitialStockEntity();
  601. try{
  602. MyBeanUtils.copyBeanNotNull2Bean(tBInitialStock,tBInitialStockPage);
  603. }catch(Exception e){
  604. logger.info(e.getMessage());
  605. }
  606. tBInitialStockService.addMain(tBInitialStock, tBInitialStockDetailList);
  607. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  608. String id = tBInitialStockPage.getId();
  609. URI uri = uriBuilder.path("/rest/tBInitialStockController/" + id).build().toUri();
  610. HttpHeaders headers = new HttpHeaders();
  611. headers.setLocation(uri);
  612. return new ResponseEntity(headers, HttpStatus.CREATED);
  613. }
  614. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  615. public ResponseEntity<?> update(@RequestBody TBInitialStockPage tBInitialStockPage) {
  616. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  617. Set<ConstraintViolation<TBInitialStockPage>> failures = validator.validate(tBInitialStockPage);
  618. if (!failures.isEmpty()) {
  619. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  620. }
  621. //保存
  622. List<TBInitialStockDetailEntity> tBInitialStockDetailList = tBInitialStockPage.getTBInitialStockDetailList();
  623. TBInitialStockEntity tBInitialStock = new TBInitialStockEntity();
  624. try{
  625. MyBeanUtils.copyBeanNotNull2Bean(tBInitialStock,tBInitialStockPage);
  626. }catch(Exception e){
  627. logger.info(e.getMessage());
  628. }
  629. tBInitialStockService.updateMain(tBInitialStock, tBInitialStockDetailList);
  630. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  631. return new ResponseEntity(HttpStatus.NO_CONTENT);
  632. }
  633. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  634. @ResponseStatus(HttpStatus.NO_CONTENT)
  635. public void delete(@PathVariable("id") String id) {
  636. TBInitialStockEntity tBInitialStock = tBInitialStockService.get(TBInitialStockEntity.class, id);
  637. tBInitialStockService.delMain(tBInitialStock);
  638. }
  639. /**
  640. * 弹出货品信息列表选择页面
  641. *
  642. * @return
  643. */
  644. @RequestMapping(params = "selectReferGoods")
  645. public ModelAndView selectReferGoods(HttpServletRequest request) {
  646. ModelAndView mv = new ModelAndView("cn/com/lzt/initialstock/selectGoodsInfo");
  647. String ids = oConvertUtils.getString(request.getParameter("ids"));
  648. mv.addObject("ids", ids);
  649. // 需要将前端的类路径传递到refer页面
  650. String clsname = oConvertUtils.getString(request.getParameter("classname"));
  651. mv.addObject("classname", clsname);
  652. mv.addObject("codefield", oConvertUtils.getString(request.getParameter("codefield")));
  653. mv.addObject("namefield", oConvertUtils.getString(request.getParameter("namefield")));
  654. mv.addObject("specification", oConvertUtils.getString(request.getParameter("specification")));
  655. mv.addObject("meteringUnit", oConvertUtils.getString(request.getParameter("meteringUnit")));
  656. mv.addObject("meteringUnitName", oConvertUtils.getString(request.getParameter("meteringUnitName")));
  657. mv.addObject("costPrice", oConvertUtils.getString(request.getParameter("costPrice")));
  658. mv.addObject("goodsId", oConvertUtils.getString(request.getParameter("goodsId")));
  659. mv.addObject("strEmpty", oConvertUtils.getString(request.getParameter("strEmpty")));
  660. return mv;
  661. }
  662. /**
  663. * 根据货品名称获取货品信息
  664. *
  665. * @param request
  666. * @param response
  667. * @param dataGrid
  668. * @throws ClassNotFoundException
  669. */
  670. @SuppressWarnings("rawtypes")
  671. @RequestMapping(params = "selRefDatagridGoods")
  672. public void selRefDatagridGoods(String classname, TBGoodsInfoEntity tBGoodsInfoEntity, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  673. Class cls = MyClassLoader.getClassByScn(classname);
  674. CriteriaQuery cq = new CriteriaQuery(cls, dataGrid);
  675. //查询条件组装器
  676. //增加筛选客户的条件
  677. String[] unitstate = new String[]{Globals.Enable_Normal};
  678. cq.in("status", unitstate);
  679. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  680. // 检索用货品编码
  681. if(StringUtils.isNotBlank(tBGoodsInfoEntity.getGoodsCode())){
  682. cq.eq("goodsCode", tBGoodsInfoEntity.getGoodsCode());
  683. }
  684. // 检索用货品名称
  685. if(StringUtils.isNotBlank(tBGoodsInfoEntity.getGoodsName())){
  686. cq.eq("goodsName", tBGoodsInfoEntity.getGoodsName());
  687. }
  688. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, cls.newInstance());
  689. commonDao.getDataGridReturn(cq, true);
  690. List result = dataGrid.getResults();
  691. if(result != null && result.size() > 0){
  692. TBGoodsInfoEntity goodsInfoEntity = null;
  693. for(int i = 0 ;i < result.size();i++){
  694. goodsInfoEntity = (TBGoodsInfoEntity)result.get(i);
  695. goodsInfoEntity.setMeteringUnit(goodsInfoEntity.getBaseUnit());
  696. //获取参数
  697. Object id0 = goodsInfoEntity.getId();
  698. String hql0 = "from TBStockInfoEntity where 1 = 1 AND GOODS_ID =? ";
  699. List<TBStockInfoEntity> stockInfoEntityList = systemService.findHql(hql0,id0);
  700. if(stockInfoEntityList != null && stockInfoEntityList.size() > 0){
  701. TBStockInfoEntity stockInfoEntity = stockInfoEntityList.get(0);
  702. goodsInfoEntity.setCostPrice(stockInfoEntity.getLatestCost());
  703. }
  704. //查询字典(计量单位)
  705. String hql1 = "from TSTypegroup where typegroupcode =? ";
  706. if(goodsInfoEntity.getMeteringUnit() != null){
  707. //查出所有的计量单位
  708. List<TSTypegroup> groupList = systemService.findHql(hql1,Globals.Dic_meteringUnit);
  709. if(groupList != null && groupList.size()>0){
  710. TSTypegroup group = groupList.get(0);
  711. List<TSType> typeList = group.getTSTypes();
  712. if(typeList != null && typeList.size()>0){
  713. for(int j=0; j<typeList.size(); j++){
  714. TSType type = typeList.get(j);
  715. if(type.getTypecode().equals(goodsInfoEntity.getMeteringUnit())){
  716. goodsInfoEntity.setMeteringUnitName(type.getTypename());
  717. }
  718. }
  719. }
  720. }
  721. }
  722. }
  723. }
  724. try {
  725. //result =systemService.dealResultShowText4Entities(dataGrid.getResults(), cls);
  726. } catch (Exception e) {
  727. throw new BusinessException(e);
  728. }
  729. dataGrid.setResults(result);
  730. TagUtil.datagrid(response, dataGrid);
  731. }
  732. /**
  733. * 解析SQL,返回字段集 支持多数据源
  734. * @param sql
  735. * @return
  736. */
  737. @SuppressWarnings({ "unchecked", "rawtypes" })
  738. @RequestMapping(params = "getProductInfo", method = RequestMethod.POST)
  739. @ResponseBody
  740. public Object getSqlFields(String goodsCode){
  741. TBGoodsInfoEntity goodInfo = null;
  742. Map reJson = new HashMap<String, Object>();
  743. try{
  744. goodInfo = systemService.findUniqueByProperty(TBGoodsInfoEntity.class, "goodsCode",goodsCode);
  745. if(goodInfo != null){
  746. goodInfo.setMeteringUnit(goodInfo.getBaseUnit());
  747. if(goodInfo.getDeleteFlag() == null || goodInfo.getStatus() == null
  748. || !Globals.Delete_Normal.toString().equals(goodInfo.getDeleteFlag())
  749. || !Globals.Enable_Normal.equals(goodInfo.getStatus())){
  750. goodInfo = null;
  751. reJson.put("status", "success");
  752. reJson.put("datainfo", goodInfo);
  753. return reJson;
  754. }
  755. }
  756. //获取参数
  757. Object id0 = goodInfo.getId();
  758. String hql0 = "from TBStockInfoEntity where 1 = 1 AND GOODS_ID =? ";
  759. List<TBStockInfoEntity> stockInfoEntityList = systemService.findHql(hql0,id0);
  760. if(stockInfoEntityList != null && stockInfoEntityList.size() > 0){
  761. TBStockInfoEntity stockInfoEntity = stockInfoEntityList.get(0);
  762. goodInfo.setCostPrice(stockInfoEntity.getLatestCost());
  763. }
  764. //查询字典(计量单位)
  765. String hql1 = "from TSTypegroup where typegroupcode =? ";
  766. if(goodInfo.getMeteringUnit() != null){
  767. //查出所有的计量单位
  768. List<TSTypegroup> groupList = systemService.findHql(hql1,Globals.Dic_meteringUnit);
  769. if(groupList != null && groupList.size()>0){
  770. TSTypegroup group = groupList.get(0);
  771. List<TSType> typeList = group.getTSTypes();
  772. if(typeList != null && typeList.size()>0){
  773. for(int j=0; j<typeList.size(); j++){
  774. TSType type = typeList.get(j);
  775. if(type.getTypecode().equals(goodInfo.getMeteringUnit())){
  776. goodInfo.setMeteringUnitName(type.getTypename());
  777. }
  778. }
  779. }
  780. }
  781. }
  782. }catch (Exception e) {
  783. logger.info(e.getMessage());
  784. }
  785. reJson.put("status", "success");
  786. reJson.put("datainfo", goodInfo);
  787. return reJson;
  788. }
  789. }