BasicWarehouseServiceImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382
  1. package com.chinaitop.depot.basic.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.Date;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import javax.annotation.Resource;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import com.alibaba.fastjson.JSONObject;
  12. import com.chinaitop.depot.Object.HwObj;
  13. import com.chinaitop.depot.Object.YwConstant;
  14. import com.chinaitop.depot.basic.mapper.BasicStorehouseMapper;
  15. import com.chinaitop.depot.basic.mapper.BasicTankHwMapper;
  16. import com.chinaitop.depot.basic.mapper.BasicTankMapper;
  17. import com.chinaitop.depot.basic.mapper.BasicWarehouseMapper;
  18. import com.chinaitop.depot.basic.model.BasicStorehouse;
  19. import com.chinaitop.depot.basic.model.BasicTank;
  20. import com.chinaitop.depot.basic.model.BasicTankExample;
  21. import com.chinaitop.depot.basic.model.BasicTankHw;
  22. import com.chinaitop.depot.basic.model.BasicWarehouse;
  23. import com.chinaitop.depot.basic.model.BasicWarehouseExample;
  24. import com.chinaitop.depot.basic.model.BasicWarehouseExample.Criteria;
  25. import com.chinaitop.depot.basic.model.BasicWarehouseVO;
  26. import com.chinaitop.depot.basic.service.BasicWarehouseService;
  27. import com.chinaitop.depot.utils.BusinessUtils;
  28. import com.chinaitop.utils.ParameterUtil;
  29. import com.fasterxml.jackson.core.type.TypeReference;
  30. import com.fasterxml.jackson.databind.ObjectMapper;
  31. @Service
  32. public class BasicWarehouseServiceImpl implements BasicWarehouseService {
  33. @Resource
  34. private BasicWarehouseMapper warehouseMapper;
  35. @Resource
  36. private BasicTankMapper bankMapper;
  37. @Resource
  38. private BasicTankHwMapper tankHwMapper;
  39. @Resource
  40. private BasicStorehouseMapper storehouseMapper;
  41. @Override
  42. public void add(BasicWarehouse basicWarehouse) {
  43. warehouseMapper.insertSelective(basicWarehouse);
  44. }
  45. @Override
  46. @Transactional(rollbackFor = Exception.class)
  47. public void edit(String warehouseJson, String userInfo, String orgInfoJson) throws Exception {
  48. JSONObject user = null;
  49. Integer orgId = null;
  50. String userName = "";
  51. //解析用户信息
  52. if (null != userInfo && !"".equals(userInfo)) {
  53. user = JSONObject.parseObject(userInfo);
  54. orgId = Integer.parseInt(user.get("orgId") == null?"":user.get("orgId").toString());
  55. userName = user.get("username") == null?"":user.get("username").toString();
  56. }
  57. //获取当前时间
  58. Date date = new Date();
  59. // JSON字符串转对象
  60. ObjectMapper mapper = new ObjectMapper();
  61. BasicWarehouse new_warehouse = (BasicWarehouse)mapper.readValue(warehouseJson, BasicWarehouse.class);
  62. String hwdm = "";
  63. if (new_warehouse.getWarehouseId() != null) {
  64. new_warehouse.setUpdatename(userName);
  65. new_warehouse.setUpdatedate(date);
  66. BasicStorehouse storehouse = storehouseMapper.selectByPrimaryKey(new_warehouse.getStorehouseId());
  67. new_warehouse.setHwdm(BusinessUtils.setBZhwbm(storehouse.getAjbm(), new_warehouse.getWarehouseCode()));
  68. //new_warehouse.setUpdatetime(date);
  69. warehouseMapper.updateByPrimaryKey(new_warehouse);
  70. //如果是出库或空仓,需要把当前货位的业务数据进行归档等操作
  71. if ("1".equals(new_warehouse.getCrkStatus()) || "4".equals(new_warehouse.getCrkStatus())) {
  72. Map<String, Object> lqkmap = new HashMap<String, Object>();
  73. lqkmap.put("wareId", new_warehouse.getWarehouseId());
  74. lqkmap.put("orgId", new_warehouse.getOrgId());
  75. //注意:从仓房管理和货位管理、油罐管理这三个菜单保存的数据,只要是空仓或出库,原粮和成品粮的粮情卡都要归档
  76. warehouseMapper.updateYlLqkGd(lqkmap);//归档原粮粮情卡
  77. warehouseMapper.updateCplLqkGd(lqkmap);//归档成品粮粮情卡
  78. warehouseMapper.updateQualitycheck(lqkmap);//归档自检数据
  79. }
  80. } else {
  81. new_warehouse.setWarehouseStatus(2963); //添加时默认货位状态为空仓
  82. new_warehouse.setOrgId(orgId);
  83. if(!ParameterUtil.isequal(new_warehouse.getLibraryType(),"1")){
  84. new_warehouse.setDepotId(orgId);
  85. }
  86. if (!"".equals(new_warehouse.getWarehouseCode())) {
  87. BasicStorehouse storehouse = storehouseMapper.selectByPrimaryKey(new_warehouse.getStorehouseId());
  88. hwdm = BusinessUtils.setBZhwbm(storehouse.getAjbm(), new_warehouse.getWarehouseCode());
  89. new_warehouse.setHwdm(hwdm.trim());
  90. }
  91. new_warehouse.setCreatename(userName);
  92. new_warehouse.setCreatedate(date);
  93. //new_warehouse.setUpdatetime(date);
  94. new_warehouse.setDelFlag(1);
  95. add(new_warehouse);
  96. }
  97. }
  98. @Override
  99. public void update(BasicWarehouse basicWarehouse) {
  100. warehouseMapper.updateByPrimaryKeySelective(basicWarehouse);
  101. }
  102. @Override
  103. public void delete(Integer id) {
  104. warehouseMapper.deleteByPrimaryKey(id);
  105. }
  106. @Override
  107. public BasicWarehouse findByParmaryKey(Integer id) {
  108. return warehouseMapper.selectByPrimaryKey(id);
  109. }
  110. @Override
  111. public List<BasicWarehouse> findCondition(BasicWarehouseExample example) {
  112. return warehouseMapper.selectByExample(example);
  113. }
  114. @Override
  115. public Map<String, Object> getWarehouse(Integer unitId, Integer storehouseId, String libraryType) {
  116. /* 返回大对象 */
  117. Map<String, Object> map = new HashMap<String, Object>();
  118. /* 设置货位的按ID转化对象 */
  119. List<BasicWarehouse> warelist = getWareList(unitId, null, null, null); //获取当前库所有货位
  120. Map<Integer, Object> wareMap = new HashMap<Integer, Object>();
  121. if (null != warelist && warelist.size() != 0) {
  122. for (BasicWarehouse ware : warelist) {
  123. wareMap.put(ware.getWarehouseId(), ware);
  124. }
  125. } else {
  126. warelist = new ArrayList<BasicWarehouse>();
  127. }
  128. map.put("wares", wareMap); // 数据列表页面转换对象
  129. /* 获取有效的货位下拉列表 */
  130. List<BasicWarehouse> list = getWareList(unitId, storehouseId, libraryType, 1); //获取库点下的某个仓房中的的货位
  131. map.put("wareList", list); //货位下拉列表集合
  132. return map;
  133. }
  134. /**
  135. * 按条件查询货位数据
  136. *
  137. * @param orgId 单位ID
  138. * @param houseId 仓房ID
  139. * @param libraryType 是否代储
  140. * @param delFlag 是否在用
  141. * @return
  142. */
  143. @SuppressWarnings("all")
  144. private List<BasicWarehouse> getWareList(Integer orgId, Integer houseId, String libraryType, Integer delFlag) {
  145. List<BasicWarehouse> list = null;
  146. BasicWarehouseExample example = new BasicWarehouseExample();
  147. Criteria criteria = example.createCriteria();
  148. try {
  149. if (null != orgId) {
  150. criteria.andOrgIdEqualTo(orgId);
  151. }
  152. if (null != houseId) {
  153. criteria.andStorehouseIdEqualTo(houseId);
  154. }
  155. if (libraryType != null && !"".equals(libraryType)) {
  156. criteria.andLibraryTypeEqualTo(libraryType);
  157. }
  158. if (null != delFlag) {
  159. criteria.andDelFlagEqualTo(delFlag);
  160. }
  161. example.setOrderByClause("warehouse_id ASC");
  162. list = warehouseMapper.selectByExample(example);
  163. } catch (Exception e) {
  164. e.printStackTrace();
  165. } finally {
  166. return list;
  167. }
  168. }
  169. @Override
  170. public void deletEexample(Integer storehouseId) {
  171. //条件
  172. BasicWarehouseExample example = new BasicWarehouseExample();
  173. Criteria criteria = example.createCriteria();
  174. criteria.andStorehouseIdEqualTo(storehouseId);
  175. criteria.andDelFlagEqualTo(1);
  176. //要修改的值
  177. BasicWarehouse warehouse = new BasicWarehouse();
  178. warehouse.setDelFlag(0);
  179. warehouseMapper.updateByExampleSelective(warehouse, example);
  180. }
  181. @Override
  182. public BasicWarehouseVO getWareDataByHwbm(String hwbm) {
  183. // TODO Auto-generated method stub
  184. return warehouseMapper.getWareDataByHwbm(hwbm);
  185. }
  186. @Override
  187. public void updateWareStatus(Map<String, Object> param) {
  188. String status = param.get("status").toString();
  189. BasicWarehouse ware = new BasicWarehouse();
  190. ware.setWarehouseId(Integer.parseInt(param.get("wareId").toString()));
  191. ware.setCrkStatus(status);
  192. ware.setUpdatetime(new Date());
  193. if ("1".equals(status)) {//如果是空仓,将粮油类型设置为空
  194. ware.setLylx("");
  195. } else {
  196. ware.setLylx(param.get("lylx").toString());
  197. }
  198. warehouseMapper.updateByPrimaryKeySelective(ware);
  199. }
  200. @Override
  201. @Transactional(rollbackFor = Exception.class)
  202. public void saveOrUpdate(BasicStorehouse storehouse, String warehouseJson) throws Exception {
  203. ObjectMapper mappers = new ObjectMapper();
  204. List<BasicWarehouse> list = mappers.readValue(warehouseJson, new TypeReference<List<BasicWarehouse>>(){});
  205. String hwdm = "";
  206. for (BasicWarehouse warehouse : list) {
  207. if (!"".equals(warehouse.getWarehouseCode())) {
  208. hwdm = BusinessUtils.setBZhwbm(storehouse.getAjbm(), warehouse.getWarehouseCode());
  209. warehouse.setHwdm(hwdm);
  210. }
  211. if (null == warehouse.getWarehouseId()) {//没有货位ID那就是新增
  212. warehouse.setStorehouseId(storehouse.getStorehouseId());
  213. warehouse.setCreatename(storehouse.getCreatename());
  214. warehouse.setCreatedate(storehouse.getCreatedate());
  215. warehouse.setOrgId(storehouse.getOrgId());
  216. warehouseMapper.insertSelective(warehouse);
  217. } else {
  218. warehouse.setUpdatename(storehouse.getUpdatename());
  219. warehouse.setUpdatedate(storehouse.getUpdatedate());
  220. warehouseMapper.updateByPrimaryKeySelective(warehouse);
  221. //如果是出库或空仓,需要把当前货位的业务数据进行归档等操作
  222. if ("1".equals(warehouse.getCrkStatus()) || "4".equals(warehouse.getCrkStatus())) {
  223. Map<String, Object> lqkmap = new HashMap<String, Object>();
  224. lqkmap.put("wareId", warehouse.getWarehouseId());
  225. lqkmap.put("orgId", warehouse.getOrgId());
  226. warehouseMapper.updateYlLqkGd(lqkmap);//归档原粮粮情卡
  227. warehouseMapper.updateCplLqkGd(lqkmap);//归档成品粮粮情卡
  228. warehouseMapper.updateQualitycheck(lqkmap);//归档自检数据
  229. }
  230. }
  231. }
  232. }
  233. @Override
  234. public void editRuleMethod(List<HwObj> hwObjs) throws Exception {
  235. hwObjs.forEach(obj-> {
  236. if (YwConstant.YW_LX_YG.equals(obj.getYwlx())) {//油罐
  237. BasicTank banks = bankMapper.selectByPrimaryKey(obj.getWareId());
  238. //检查保存的粮油类型是否对应(成品粮或者原粮)
  239. if (obj.getLylx().equals(banks.getLylx()) || StringUtils.isBlank(banks.getLylx())) {
  240. BasicTank bank = new BasicTank();
  241. bank.setId(obj.getWareId());
  242. bank.setCrkStatus(obj.getStatus());
  243. if (YwConstant.KC_STATUS.equals(obj.getStatus())) {//如果是空仓则把粮油类型置为空
  244. bank.setLylx("");
  245. } else {
  246. bank.setLylx(obj.getLylx());
  247. }
  248. bankMapper.updateByPrimaryKeySelective(bank);
  249. BasicTankHw tankHw = new BasicTankHw();
  250. tankHw.setId(Integer.parseInt(obj.getWareId()));
  251. tankHw.setCrkStatus(obj.getStatus());
  252. tankHw.setZhgxsj(new Date());
  253. tankHwMapper.updateByPrimaryKeySelective(tankHw);
  254. //如果不是封仓,需要把当前货位的业务数据进行归档等操作
  255. if (!"3".equals(obj.getStatus())) {//出库或者空仓
  256. Map<String, Object> lqkmap = new HashMap<String, Object>();
  257. lqkmap.put("storehouseId", obj.getWareId());
  258. lqkmap.put("orgId", obj.getOrgId());
  259. warehouseMapper.updateQualitycheck(lqkmap);//归档自检数据
  260. }
  261. }
  262. } else if (YwConstant.YW_LX_LC.equals(obj.getYwlx())) {//粮仓
  263. BasicWarehouse ware = warehouseMapper.selectByPrimaryKey(Integer.parseInt(obj.getWareId()));
  264. if (obj.getLylx().equals(ware.getLylx()) || StringUtils.isBlank(ware.getLylx())) {
  265. ware.setCrkStatus(obj.getStatus());
  266. ware.setUpdatetime(new Date());
  267. if (YwConstant.KC_STATUS.equals(obj.getStatus())) {//如果是空仓,将粮油类型设置为空
  268. ware.setLylx("");
  269. } else {
  270. ware.setLylx(obj.getLylx());
  271. }
  272. warehouseMapper.updateByPrimaryKeySelective(ware);
  273. //如果不是封仓,需要把当前货位的业务数据进行归档等操作
  274. if (!"3".equals(obj.getStatus())) {
  275. Map<String, Object> lqkmap = new HashMap<String, Object>();
  276. lqkmap.put("wareId", obj.getWareId());
  277. lqkmap.put("orgId", obj.getOrgId());
  278. warehouseMapper.updateQualitycheck(lqkmap);//归档自检数据
  279. }
  280. }
  281. }
  282. });
  283. }
  284. @Override
  285. public List<Map<String, Object>> selectWareAndTank(Integer orgId, Integer houseId, Integer warehouseId) throws Exception {
  286. // 拼接查询条件
  287. Map<String, Object> map = new HashMap<>();
  288. map.put("orgId", orgId);
  289. if (null != houseId) {
  290. map.put("houseId", houseId);
  291. }
  292. if (null != warehouseId) {
  293. map.put("warehouseId", warehouseId);
  294. }
  295. List<Map<String, Object>> list = warehouseMapper.selectWareAndTank(map);
  296. return list;
  297. }
  298. @Override
  299. public Map<String, Object> getWareOrTank(String sptDataId) throws Exception {
  300. Map<String, Object> map = new HashMap<String, Object>();
  301. Integer houseId = 0;
  302. Integer wareHouseId = 0;
  303. Integer orgId = 0;
  304. if (sptDataId.length() > 4) {//这是粮仓的货位
  305. BasicWarehouseExample wareExample = new BasicWarehouseExample();
  306. Criteria criteria = wareExample.createCriteria();
  307. criteria.andSptDataidEqualTo(sptDataId);
  308. List<BasicWarehouse> list = warehouseMapper.selectByExample(wareExample);
  309. if(list.size()>0){
  310. houseId = list.get(0).getStorehouseId();
  311. wareHouseId = list.get(0).getWarehouseId();
  312. orgId = list.get(0).getOrgId();
  313. }
  314. } else {//油罐的
  315. BasicTankExample example = new BasicTankExample();
  316. BasicTankExample.Criteria criteria = example.createCriteria();
  317. criteria.andSptDataidEqualTo(sptDataId);
  318. List<BasicTank> list = bankMapper.selectByExample(example);
  319. if(null != list && list.size() > 0){
  320. BasicTank basicTank = list.get(0);
  321. houseId = Integer.parseInt(basicTank.getId());
  322. wareHouseId = houseId;
  323. orgId = basicTank.getOrgId();
  324. }
  325. }
  326. map.put("houseId", houseId);
  327. map.put("warehouseId", wareHouseId);
  328. map.put("orgId", orgId);
  329. return map;
  330. }
  331. @Override
  332. public List<BasicWarehouse> getCrkStatusList(String lylx, String crkStatus, Integer orgId) {
  333. BasicWarehouse ware = new BasicWarehouse();
  334. ware.setLylx(lylx);
  335. ware.setCrkStatus(crkStatus);
  336. ware.setOrgId(orgId);
  337. List<BasicWarehouse> list = warehouseMapper.getCrkStatusList(ware);
  338. return list;
  339. }
  340. }