BasicWarehouseController.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. package com.chinaitop.depot.basic.controller;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.List;
  7. import java.util.Map;
  8. import javax.annotation.Resource;
  9. import javax.servlet.http.HttpServletRequest;
  10. import com.chinaitop.depot.Object.HwObj;
  11. import com.fasterxml.jackson.core.type.TypeReference;
  12. import org.apache.commons.lang.ObjectUtils;
  13. import org.apache.commons.lang3.StringUtils;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.http.MediaType;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RequestMethod;
  19. import org.springframework.web.bind.annotation.RestController;
  20. import com.alibaba.fastjson.JSONArray;
  21. import com.alibaba.fastjson.JSONObject;
  22. import com.chinaitop.depot.basic.model.BasicStorehouse;
  23. import com.chinaitop.depot.basic.model.BasicTank;
  24. import com.chinaitop.depot.basic.model.BasicWarehouse;
  25. import com.chinaitop.depot.basic.model.BasicWarehouseExample;
  26. import com.chinaitop.depot.basic.model.BasicWarehouseExample.Criteria;
  27. import com.chinaitop.depot.basic.model.BasicWarehouseVO;
  28. import com.chinaitop.depot.basic.service.BasicStorehouseService;
  29. import com.chinaitop.depot.basic.service.BasicTankService;
  30. import com.chinaitop.depot.basic.service.BasicWarehouseService;
  31. import com.chinaitop.depot.basic.service.impl.BasicStorehouseServiceImpl;
  32. import com.chinaitop.depot.basic.service.impl.BasicWarehouseServiceImpl;
  33. import com.chinaitop.depot.utils.BusinessUtils;
  34. import com.chinaitop.utils.ParameterUtil;
  35. import com.chinaitop.utils.WarehouseDataSynchronization;
  36. import com.fasterxml.jackson.databind.ObjectMapper;
  37. import com.github.pagehelper.PageHelper;
  38. import com.github.pagehelper.PageInfo;
  39. import io.swagger.annotations.Api;
  40. import io.swagger.annotations.ApiImplicitParam;
  41. import io.swagger.annotations.ApiImplicitParams;
  42. import io.swagger.annotations.ApiOperation;
  43. /**
  44. * 货位管理Controller,货位管理菜单中所有的功能都在这里
  45. * @author User
  46. *
  47. */
  48. @RestController
  49. @RequestMapping(value="/Warehouse")
  50. @Api(value= "BasicWarehouseController", description = "货位管理控制类")
  51. @SuppressWarnings("all")
  52. public class BasicWarehouseController {
  53. final static Logger logger = LoggerFactory.getLogger(BasicWarehouse.class);
  54. @Resource
  55. private BasicWarehouseService basicWarehouseService;
  56. @Resource
  57. private BasicStorehouseService basicStorehouseService;
  58. @Resource
  59. private BasicTankService basicTankService;
  60. @RequestMapping(value="/getList", method = RequestMethod.GET)
  61. @ApiOperation(value="查询 货位 信息列表", notes = "查询 货位 信息列表,支持分页")
  62. @ApiImplicitParams({
  63. @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "query"),
  64. @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query"),
  65. @ApiImplicitParam(name = "storehouseId", value = "仓房ID", paramType = "query"),
  66. @ApiImplicitParam(name = "warehouseId", value = "货位ID", paramType = "query"),
  67. @ApiImplicitParam(name = "warehouseName", value = "货位名称", paramType = "query"),
  68. @ApiImplicitParam(name = "graindepotId", value = "单位ID", paramType = "query"),
  69. @ApiImplicitParam(name = "libraryType", value = "粮库类型", paramType = "query"),
  70. @ApiImplicitParam(name = "delFlag", value = "是否删除", paramType = "query")
  71. })
  72. public PageInfo<BasicWarehouse> getList(Integer pageNum, Integer pageSize, Integer storehouseId, Integer warehouseId,
  73. String warehouseName, Integer graindepotId, String libraryType, Integer delFlag) {
  74. BasicWarehouseExample wareExample = new BasicWarehouseExample();
  75. Criteria criteria = wareExample.createCriteria();
  76. List<BasicWarehouse> list = null;
  77. try {
  78. // 拼接查询条件
  79. if (!"".equals(warehouseName) && warehouseName != null) {
  80. criteria.andWarehouseNameLike("%"+warehouseName+"%");
  81. }
  82. if (null != storehouseId && !"".equals(storehouseId)) {
  83. criteria.andStorehouseIdEqualTo(storehouseId); //只查询顶级菜单
  84. }
  85. if (null != warehouseId && !"".equals(warehouseId) ){
  86. criteria.andWarehouseIdEqualTo(warehouseId);
  87. }
  88. if (null != libraryType) {
  89. //如果是3则说明是空仓过滤
  90. if(ParameterUtil.isequal("3",libraryType)){
  91. //1说明是空仓
  92. criteria.andCrkStatusEqualTo("1");
  93. }else {
  94. criteria.andLibraryTypeEqualTo(libraryType);
  95. }
  96. }
  97. /* 查询当前库下的数据 */
  98. criteria.andOrgIdEqualTo(graindepotId);
  99. if (null != pageNum && null != pageSize) {
  100. PageHelper.startPage(pageNum, pageSize);
  101. }
  102. // 值为1是没删除的数据(在用),0是已删除的数据(弃用)
  103. if (null != delFlag) {
  104. criteria.andDelFlagEqualTo(delFlag);
  105. }
  106. wareExample.setOrderByClause("storehouse_id asc");
  107. list = basicWarehouseService.findCondition(wareExample);
  108. } catch (Exception e) {
  109. //e.printStackTrace();
  110. logger.error(e.getMessage(), e);
  111. }
  112. PageInfo<BasicWarehouse> pageInfo = new PageInfo<BasicWarehouse>(list);
  113. return pageInfo;
  114. }
  115. /**
  116. * 按货位ID查询一条数据
  117. *
  118. * @param id 数据ID
  119. * @return
  120. */
  121. @RequestMapping(value="/findByWarehouse", method = RequestMethod.GET)
  122. @ApiOperation(value="按货位ID查询一条数据", notes = "按货位ID查询一条数据")
  123. @ApiImplicitParams({
  124. @ApiImplicitParam(name = "id", value = "数据ID", paramType = "query")
  125. })
  126. public BasicWarehouse findByWarehouse(Integer id) {
  127. BasicWarehouse basicWarehouse = new BasicWarehouse();
  128. if (id != null) {
  129. basicWarehouse = basicWarehouseService.findByParmaryKey(id);
  130. }
  131. return basicWarehouse;
  132. }
  133. /**
  134. * 更新货位信息
  135. *
  136. * @param warehouseJson JSON数据对象
  137. * @return
  138. */
  139. @RequestMapping(value="/edit", method = RequestMethod.POST)
  140. @ApiOperation(value="更新货位信息", notes = "更新货位信息")
  141. @ApiImplicitParams({
  142. @ApiImplicitParam(name = "warehouseJson", value = "JSON货位数据对象", paramType = "form"),
  143. @ApiImplicitParam(name = "userInfo", value = "JSON登录数据对象", paramType = "form"),
  144. @ApiImplicitParam(name = "orgInfoJson", value = "JSON登录粮库的数据对象", paramType = "form")
  145. })
  146. public Map<String, Object> edit(String warehouseJson, String userInfo, String orgInfoJson) {
  147. Map<String, Object> map = new HashMap<String, Object>();
  148. try {
  149. basicWarehouseService.edit(warehouseJson, userInfo, orgInfoJson);
  150. map.put("status", "success");
  151. } catch (Exception e) {
  152. //e.printStackTrace();
  153. logger.error(e.getMessage(), e);
  154. map.put("status", "error");
  155. map.put("msg", "保存失败!");
  156. }
  157. return map;
  158. }
  159. /**
  160. * 删除货位信息
  161. *
  162. * @param id 数据对象
  163. * @return
  164. */
  165. @RequestMapping(value="/remove", method = RequestMethod.POST)
  166. @ApiOperation(value="删除货位信息", notes = "删除货位信息")
  167. @ApiImplicitParams({
  168. @ApiImplicitParam(name = "id", value = "数据ID", paramType = "form")
  169. })
  170. public Map<String, Object> remove(Integer id, Integer storehouseId) {
  171. Map<String, Object> map = new HashMap<String, Object>();
  172. try {
  173. //先查询这条仓房数据,进行判断
  174. BasicWarehouse basicWarehouse = basicWarehouseService.findByParmaryKey(id);
  175. //先查询这条货位数据,通过判断如果为弃用状态则根据仓房状态进行修改,若仓房状态为应用状态,则不对货位状态进行修改
  176. BasicStorehouse basicStorehouse = basicStorehouseService.findByPrimary(storehouseId);
  177. Integer delFlag = basicWarehouse.getDelFlag();
  178. if (delFlag == 1 || "1".equals(delFlag)) {
  179. delFlag = 0;
  180. } else if (delFlag == 0 || "0".equals(delFlag)) {
  181. delFlag = 1;
  182. //判断为弃用改应用状态,则进行应用
  183. basicStorehouse.setDelFlag(delFlag);
  184. basicStorehouseService.updateBasicStorehouse(basicStorehouse);
  185. }
  186. basicWarehouse.setDelFlag(delFlag);
  187. if (id != null) {
  188. basicWarehouseService.update(basicWarehouse);;
  189. }
  190. map.put("status", "success");
  191. } catch (Exception e) {
  192. e.printStackTrace();
  193. map.put("status", "error");
  194. map.put("msg", "操作失败!");
  195. }
  196. return map;
  197. }
  198. /**
  199. * 根据单位和仓房查询货位信息(货位对外接口)
  200. *
  201. * @param unitId 单位ID
  202. * @param storehouseId 仓房ID
  203. * @return
  204. */
  205. @RequestMapping(value="/getWarehouse", method = RequestMethod.GET)
  206. @ApiOperation(value="根据单位和仓房查询货位信息(货位对外接口)", notes = "根据单位和仓房查询货位信息(货位对外接口)")
  207. @ApiImplicitParams({
  208. @ApiImplicitParam(name = "unitId", value = "单位ID", paramType = "query"),
  209. @ApiImplicitParam(name = "storehouseId", value = "仓房ID", paramType = "query"),
  210. @ApiImplicitParam(name = "libraryType", value = "库类型(0主粮库,1代储库)", paramType = "query")
  211. })
  212. public Map<String, Object> getWarehouse(Integer unitId, Integer storehouseId, String libraryType) {
  213. Map<String, Object> map = null;
  214. map = basicWarehouseService.getWarehouse(unitId, storehouseId, libraryType);
  215. return map;
  216. }
  217. @RequestMapping(value="/findWareCode", method=RequestMethod.GET)
  218. @ApiOperation(value="防止货位编码重复添加", notes = "storehouseCode参数")
  219. @ApiImplicitParams({
  220. @ApiImplicitParam(name = "storehouseId", value = "仓房ID", paramType = "query"),
  221. @ApiImplicitParam(name = "warehouseCode", value = "货位编码", paramType = "query"),
  222. @ApiImplicitParam(name = "wareId", value = "货位ID", paramType = "query"),
  223. @ApiImplicitParam(name = "libraryType", value = "判断是代储点还是主库", paramType = "query")
  224. })
  225. public String findWareCode(HttpServletRequest request, Integer storehouseId, String warehouseCode, Integer wareId, String libraryType) {
  226. String codeFlag = "";
  227. List<BasicWarehouse> list = null;
  228. Integer orgId = (Integer) request.getSession().getAttribute("orgId");
  229. BasicWarehouseExample warehouseExample = new BasicWarehouseExample();
  230. Criteria cria = warehouseExample.createCriteria();
  231. cria.andStorehouseIdEqualTo(storehouseId);
  232. cria.andWarehouseCodeEqualTo(warehouseCode);
  233. cria.andOrgIdEqualTo(orgId);
  234. cria.andWarehouseIdNotEqualTo(wareId);
  235. //cria.andLibraryTypeEqualTo(libraryType);
  236. try {
  237. list = basicWarehouseService.findCondition(warehouseExample);
  238. if (null != list && list.size() > 0) {
  239. codeFlag = "0";
  240. } else {
  241. codeFlag = "1";
  242. }
  243. } catch (Exception e) {
  244. e.printStackTrace();
  245. }
  246. return codeFlag;
  247. }
  248. //库点信息同步
  249. @SuppressWarnings("all")
  250. @RequestMapping("/warehouseSynchronization")
  251. @ApiOperation(value="货位信息同步", notes = "货位信息同步")
  252. public void orgInfoSynchronization() {
  253. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
  254. List list = WarehouseDataSynchronization.queryWarehouse();
  255. BasicWarehouseExample wareExample = new BasicWarehouseExample();
  256. List<BasicWarehouse> wareList = basicWarehouseService.findCondition(wareExample);
  257. for(BasicWarehouse warehouse : wareList) {
  258. int num = 0;
  259. for(int i=0;i<list.size();i++) {
  260. Map<String,Object> map = (Map<String,Object>)list.get(i);
  261. String hwbh = ObjectUtils.toString(map.get("hwbh"),"");//库点编码
  262. String refreshTime = ObjectUtils.toString(map.get("refreshTime"),"");
  263. if(hwbh.equals(ObjectUtils.toString(warehouse.getWarehouseCode(),""))) {
  264. if(!refreshTime.equals(format.format(warehouse.getUpdatedate()))) {
  265. WarehouseDataSynchronization.warehouseSynchronizationUpdate(map, warehouse);
  266. }
  267. break;
  268. }else if(num == (list.size()-1)){
  269. WarehouseDataSynchronization.warehouseSynchronizationInsert(warehouse);
  270. }else {
  271. num = num+1;
  272. }
  273. }
  274. }
  275. }
  276. /**
  277. * 根据货位编码编码获取有关信息用于和市平台对接
  278. */
  279. @RequestMapping(value="/getWareDataByHwbm",produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.GET)
  280. @ApiOperation(value="根据货位编码获取有关信息用于和市平台对接", notes = "根据货位编码获取有关信息用于和市平台对接")
  281. public Map<String, Object> getWareDataByHwbm(String hwbm) {
  282. Map<String, Object> map = new HashMap<String, Object>();
  283. Integer houseId = 0;
  284. String storehouseName = "";
  285. Integer wareHouseId = 0;
  286. String warehouseName = "";
  287. Integer orgId = 0;
  288. String transUnitName = "";
  289. String strs = hwbm.substring(0, 3);
  290. if ("120".equals(strs)) {
  291. BasicWarehouseVO basicWarehouse = basicWarehouseService.getWareDataByHwbm(hwbm);
  292. if (basicWarehouse != null) {
  293. if(basicWarehouse.getStorehouseId()!=null){
  294. houseId = basicWarehouse.getStorehouseId();
  295. }
  296. if(basicWarehouse.getWarehouseId()!=null){
  297. wareHouseId = basicWarehouse.getWarehouseId();
  298. }
  299. if(basicWarehouse.getWarehouseName()!=null){
  300. warehouseName = basicWarehouse.getWarehouseName();
  301. }
  302. if(basicWarehouse.getOrgId()!=null){
  303. orgId = basicWarehouse.getOrgId();
  304. }
  305. if(basicWarehouse.getDepotName()!=null){
  306. transUnitName = basicWarehouse.getDepotName();
  307. }
  308. if(basicWarehouse.getStorehouseName()!=null){
  309. storehouseName = basicWarehouse.getStorehouseName();
  310. }
  311. }
  312. } else {
  313. BasicTank tank = basicTankService.findByPrimary(hwbm);
  314. if (null != tank) {
  315. if (StringUtils.isNotBlank(tank.getId())) {
  316. houseId = Integer.parseInt(tank.getId());
  317. wareHouseId = Integer.parseInt(tank.getId());
  318. }
  319. if (tank.getStoragetankName() != null) {
  320. warehouseName = tank.getStoragetankName();
  321. storehouseName = tank.getStoragetankName();
  322. }
  323. if(tank.getOrgId()!=null){
  324. orgId = tank.getOrgId();
  325. }
  326. }
  327. }
  328. map.put("houseId", houseId);
  329. map.put("wareHouseId", wareHouseId);
  330. map.put("warehouseName", warehouseName);
  331. map.put("orgId", orgId);
  332. map.put("transUnitName", transUnitName);
  333. map.put("storehouseName", storehouseName);
  334. return map;
  335. }
  336. @RequestMapping(value="/getPageInfoWareAndTank", method=RequestMethod.GET)
  337. @ApiOperation(value="查询空的货位和油罐列表", notes = "支持分页")
  338. @ApiImplicitParams({
  339. @ApiImplicitParam(name = "pageNum", value = "页码", paramType = "query"),
  340. @ApiImplicitParam(name = "pageSize", value = "每页条数", paramType = "query"),
  341. @ApiImplicitParam(name = "orgId", value = "组织机构ID", paramType = "query"),
  342. @ApiImplicitParam(name = "houseId", value = "仓房ID", paramType = "query"),
  343. @ApiImplicitParam(name = "warehouseId", value = "货位ID", paramType = "query")
  344. })
  345. public PageInfo<Map<String, Object>> getPageInfoWareAndTank(Integer pageNum, Integer pageSize, Integer orgId,
  346. Integer houseId, Integer warehouseId) {
  347. List<Map<String, Object>> list = null;
  348. try {
  349. if (null != pageNum && null != pageSize) {
  350. PageHelper.startPage(pageNum, pageSize);
  351. }
  352. list = basicWarehouseService.selectWareAndTank(orgId, houseId, warehouseId);
  353. } catch (Exception e) {
  354. //e.printStackTrace();
  355. logger.error(e.getMessage(), e);
  356. }
  357. PageInfo<Map<String, Object>> pageInfo = new PageInfo<Map<String, Object>>(list);
  358. return pageInfo;
  359. }
  360. @RequestMapping(value="/updateWarehouseCrkStatus", method=RequestMethod.POST)
  361. @ApiOperation(value="修改货位的出入库状态值", notes = "修改货位的出入库状态值")
  362. @ApiImplicitParams({
  363. @ApiImplicitParam(name = "wareJson", value = "数据串", paramType = "form")
  364. })
  365. public void updateWarehouseCrkStatus(String wareJson) {
  366. String date = ParameterUtil.getSysDateTime();
  367. logger.info("时间:"+date+",出入库状态回写接口,封仓和成品粮出入库调用,接收参数是:"+wareJson);
  368. /**
  369. * 逻辑说明:本接口只有库级平台粮情专卡提交和成品粮出入库的分仓保管账菜单录入数据提交时调用
  370. * 1、粮情专卡提交调用时:只有一个状态,那就是3(封仓状态),处理时直接修改成3
  371. * 2、成品粮分仓保管账菜单入库数据提交时调用:直接修改为入库状态2,或者出库状态4
  372. */
  373. try {
  374. if (StringUtils.isNotEmpty(wareJson)) {
  375. /* 将获取到的json串转换成HwObj集合 */
  376. wareJson = wareJson.replace("crk_status", "status");
  377. ObjectMapper objectMapper = new ObjectMapper();
  378. List<HwObj> hwObjs = objectMapper.readValue(wareJson, new TypeReference<List<HwObj>>() {
  379. });
  380. basicWarehouseService.editRuleMethod(hwObjs);
  381. logger.info("时间:" + date + ",出入库状态回写接口,封仓调用,调用成功!");
  382. }
  383. } catch (Exception e) {
  384. logger.info("时间:"+date+",出入库状态回写接口,封仓调用,调用失败!");
  385. e.printStackTrace();
  386. }
  387. }
  388. @RequestMapping(value="/getHouseIdBySptDataID", method=RequestMethod.GET)
  389. @ApiOperation(value="查询仓房id根据货位编码", notes = "查询仓房id根据货位编码")
  390. @ApiImplicitParams({
  391. @ApiImplicitParam(name = "sptDataId", value = "和市平台对接的货位编码", paramType = "query")
  392. })
  393. public String getHouseIdBySptDataID(String sptDataId) {
  394. String a = "0";
  395. BasicWarehouseExample wareExample = new BasicWarehouseExample();
  396. Criteria criteria = wareExample.createCriteria();
  397. criteria.andSptDataidEqualTo(sptDataId);
  398. List<BasicWarehouse> list = basicWarehouseService.findCondition(wareExample);
  399. if(list.size()>0){
  400. a = list.get(0).getStorehouseId().toString();
  401. }
  402. return a;
  403. }
  404. @RequestMapping(value="/getWareOrTankObj", method=RequestMethod.GET)
  405. @ApiOperation(value="按市平台货位数据ID查询一条货位数据", notes = "")
  406. @ApiImplicitParams({
  407. @ApiImplicitParam(name = "sptDataId", value = "和市平台对接的货位数据ID", paramType = "query")
  408. })
  409. public Map<String, Object> getWareOrTankObj(String sptDataId) {
  410. Map<String, Object> map = new HashMap<String, Object>();
  411. try {
  412. map = basicWarehouseService.getWareOrTank(sptDataId);
  413. } catch (Exception e) {
  414. e.printStackTrace();
  415. }
  416. return map;
  417. }
  418. @RequestMapping(value="/getCrkStatusList", method=RequestMethod.GET)
  419. @ApiOperation(value="按条件查询某种货位状态的数据", notes = "")
  420. @ApiImplicitParams({
  421. @ApiImplicitParam(name = "lylx", value = "粮油类型(0:原粮,1:成品粮)", required=true, paramType = "query"),
  422. @ApiImplicitParam(name = "crkStatus", value = "货位状态值1空仓,2入库中,3封仓,4出库中", required=true, paramType = "query"),
  423. @ApiImplicitParam(name = "orgId", value = "库ID", required=true, paramType = "query")
  424. })
  425. public List<BasicWarehouse> getCrkStatusList(String lylx, String crkStatus, Integer orgId) {
  426. List<BasicWarehouse> list = null;
  427. try {
  428. list = basicWarehouseService.getCrkStatusList(lylx, crkStatus, orgId);
  429. } catch (Exception e) {
  430. e.printStackTrace();
  431. }
  432. return list;
  433. }
  434. }