TWarehouseBillsServiceImpl.java 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938
  1. package com.ruoyi.warehouseBusiness.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.ruoyi.basicData.domain.*;
  5. import com.ruoyi.basicData.mapper.*;
  6. import com.ruoyi.common.core.domain.AjaxResult;
  7. import com.ruoyi.common.core.domain.entity.SysUser;
  8. import com.ruoyi.common.core.domain.model.LoginUser;
  9. import com.ruoyi.common.utils.DateUtils;
  10. import com.ruoyi.common.utils.StringUtils;
  11. import com.ruoyi.reportManagement.domain.TWhgenleg;
  12. import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;
  13. import com.ruoyi.system.mapper.SysDeptMapper;
  14. import com.ruoyi.system.mapper.SysUserMapper;
  15. import com.ruoyi.warehouseBusiness.domain.*;
  16. import com.ruoyi.warehouseBusiness.mapper.*;
  17. import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  22. import java.math.BigDecimal;
  23. import java.util.*;
  24. /**
  25. * 详情主表Service业务层处理
  26. *
  27. * @author ruoyi
  28. * @date 2020-12-11
  29. */
  30. @Service
  31. public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
  32. @Autowired
  33. private TWhgenlegMapper tWhgenlegMapper;
  34. @Autowired
  35. private TGoodsMapper tGoodsMapper;
  36. @Autowired
  37. private SysDeptMapper sysDeptMapper;
  38. @Autowired
  39. private SysUserMapper sysUserMapper;
  40. @Autowired
  41. private TCorpsMapper tCorpsMapper;
  42. @Autowired
  43. private TFeesMapper tFeesMapper;
  44. @Autowired
  45. private TWarehouseMapper tWarehouseMapper;
  46. @Autowired
  47. private TWarehouseAreaMapper tWarehouseAreaMapper;
  48. @Autowired
  49. private TEnclosureMapper tEnclosureMapper;
  50. @Autowired
  51. private TWarehouseBillsMapper tWarehouseBillsMapper;
  52. @Autowired
  53. private TWarehousebillsfeesMapper tWarehousebillsfeesMapper;
  54. @Autowired
  55. private TWarehousebillsitemsMapper tWarehousebillsitemsMapper;
  56. @Autowired
  57. private BillnoSerialServiceImpl billnoSerialServiceImpl;
  58. @Autowired
  59. private BillnoDelMapper billnoDelMapper;
  60. /**
  61. * 查询详情主表
  62. *
  63. * @param fId 详情主表ID
  64. * @return 详情主表
  65. */
  66. @Override
  67. public Map<String, Object> selectTWarehousebillsById(Long fId) {
  68. Map<String, Object> map = new HashMap<>();
  69. // 查询仓库主表数据
  70. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  71. // 客户表
  72. List<Long> corpsId = new ArrayList<>();
  73. // 用户表
  74. List<SysUser> sysUserList = new ArrayList<>();
  75. // 仓库表
  76. List<TWarehouse> warehouseList = new ArrayList<>();
  77. // 商品
  78. List<Long> goodsId = new ArrayList<>();
  79. // 费用
  80. List<Long> feesId = new ArrayList<>();
  81. // 库区
  82. List<Long> warehouseAreaId = new ArrayList<>();
  83. if (!StringUtils.isNull(tWarehousebills)) {
  84. if (StringUtils.isNotNull(tWarehousebills.getfTocorpid())) {
  85. corpsId.add(tWarehousebills.getfTocorpid());
  86. }
  87. corpsId.add(tWarehousebills.getfCorpid());
  88. // 查询联系人
  89. SysUser sysUser = sysUserMapper.selectUserByUserName(tWarehousebills.getfStorekeeper());
  90. if (StringUtils.isNotNull(sysUser)) {
  91. sysUserList.add(sysUser);
  92. }
  93. // 查询仓库
  94. TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(tWarehousebills.getfWarehouseid());
  95. if (StringUtils.isNotNull(tWarehouse)) {
  96. warehouseList.add(tWarehouse);
  97. }
  98. // 查询经营单位
  99. corpsId.add(tWarehousebills.getfSbu());
  100. map.put("warehousebills", tWarehousebills);
  101. }
  102. // 查询仓库明细从表数据
  103. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  104. tWarehousebillsitems.setfPid(fId);
  105. List<Map<String, Object>> mapList = tWarehousebillsitemsMapper.selectGoodsTransferitemsList(tWarehousebillsitems);
  106. if (StringUtils.isNotEmpty(mapList)) {
  107. for (Map<String, Object> wb : mapList) {
  108. /*TWhgenleg tWhgenleg = new TWhgenleg();
  109. tWhgenleg.setfCorpid(tWarehousebills.getfCorpid());
  110. if (StringUtils.isNotNull(wb.get("fGoodsid"))) {
  111. tWhgenleg.setfGoodsid(((Integer) wb.get("fGoodsid")).longValue());
  112. }
  113. if (StringUtils.isNotNull(wb.get("fWarehouselocid"))) {
  114. tWhgenleg.setfWarehouseLocationid(((Integer) wb.get("fWarehouselocid")).longValue());
  115. }
  116. tWhgenleg.setfTrademodeid(tWarehousebills.getfTrademodeid());
  117. tWhgenleg.setfMblno(tWarehousebills.getfMblno());
  118. TWhgenleg whgenleg = tWhgenlegMapper.selectTWhgenleg(tWhgenleg);
  119. if (StringUtils.isNotNull(whgenleg)) {
  120. wb.put("fQtyblc", whgenleg.getfQtyblc());
  121. }*/
  122. if (StringUtils.isNotNull(wb.get("fGoodsid"))) {
  123. Integer fGoodsid = (Integer) wb.get("fGoodsid");
  124. goodsId.add(fGoodsid.longValue());
  125. }
  126. if (StringUtils.isNotNull(wb.get("fWarehouselocid"))) {
  127. Integer fWarehouselocid = (Integer) wb.get("fWarehouselocid");
  128. warehouseAreaId.add(fWarehouselocid.longValue());
  129. }
  130. }
  131. map.put("warehouseBillsItem", mapList);
  132. }
  133. // 查询仓库费用明细表数据
  134. TWarehousebillsfees tWarehousebillsfees = new TWarehousebillsfees();
  135. tWarehousebillsfees.setfPid(fId);
  136. List<TWarehousebillsfees> warehousebillsfeesDr = new ArrayList<>();
  137. List<TWarehousebillsfees> warehousebillsfeesCr = new ArrayList<>();
  138. List<TWarehousebillsfees> warehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees);
  139. if (StringUtils.isNotEmpty(warehousebillsfees)) {
  140. for (TWarehousebillsfees fees : warehousebillsfees) {
  141. if ("C".equals(fees.getfDc())) {
  142. warehousebillsfeesCr.add(fees);
  143. } else {
  144. warehousebillsfeesDr.add(fees);
  145. }
  146. corpsId.add(fees.getfCorpid());
  147. feesId.add(fees.getfFeeid());
  148. }
  149. }
  150. // 查询附件表数据
  151. TEnclosure enclosure = new TEnclosure();
  152. enclosure.setfPid(fId);
  153. List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);
  154. if (StringUtils.isNotEmpty(enclosures)) {
  155. map.put("enclosures", enclosures);
  156. }
  157. List<TCorps> corpsList = new ArrayList<>();
  158. List<Long> corpsIdList = StringUtils.integerDeduplication(corpsId);
  159. for (Long corpId : corpsIdList) {
  160. TCorps corps = tCorpsMapper.selectTCorpsById(corpId);
  161. if (StringUtils.isNotNull(corps)) {
  162. corpsList.add(corps);
  163. }
  164. }
  165. List<TWarehouseArea> warehouseAreaList = new ArrayList<>();
  166. List<Long> warehouseAreaIdList = StringUtils.integerDeduplication(warehouseAreaId);
  167. for (Long warehouseArea : warehouseAreaIdList) {
  168. TWarehouseArea tWarehouseArea = tWarehouseAreaMapper.selectTWarehouseAreaById(warehouseArea);
  169. if (StringUtils.isNotNull(tWarehouseArea)) {
  170. warehouseAreaList.add(tWarehouseArea);
  171. }
  172. }
  173. List<TGoods> goodsList = new ArrayList<>();
  174. List<Long> goodsIdList = StringUtils.integerDeduplication(goodsId);
  175. for (Long goods : goodsIdList) {
  176. TGoods tGoods = tGoodsMapper.selectTGoodsById(goods);
  177. if (StringUtils.isNotNull(tGoods)) {
  178. goodsList.add(tGoods);
  179. }
  180. }
  181. List<TFees> feesList = new ArrayList<>();
  182. List<Long> longList = StringUtils.integerDeduplication(feesId);
  183. for (Long fees : longList) {
  184. TFees tFees = tFeesMapper.selectTFeesById(fees);
  185. if (StringUtils.isNotNull(tFees)) {
  186. feesList.add(tFees);
  187. }
  188. }
  189. map.put("corps", corpsList);
  190. map.put("goodsList", goodsList);
  191. map.put("feesList", feesList);
  192. map.put("sysUser", sysUserList);
  193. map.put("warehouse", warehouseList);
  194. map.put("warehouseAreas", warehouseAreaList);
  195. map.put("warehousebillsfeesDr", warehousebillsfeesDr);
  196. map.put("warehousebillsfeesCr", warehousebillsfeesCr);
  197. map.put("dept", sysDeptMapper.selectDeptById(tWarehousebills.getfDeptid()));
  198. return map;
  199. }
  200. /**
  201. * 查询详情主表列表
  202. *
  203. * @param tWarehousebills 详情主表
  204. * @return 详情主表
  205. */
  206. @Override
  207. public List<Map<String, Object>> selectWarehouseBusinessList(TWarehouseBills tWarehousebills) {
  208. return tWarehouseBillsMapper.selectWarehouseBusinessList(tWarehousebills);
  209. }
  210. /**
  211. * 查询导出所需主表列表
  212. *
  213. * @param tWarehousebills 详情主表
  214. * @return 详情主表
  215. */
  216. @Override
  217. public List<TWarehouseBills> selectTWarehousebillsList(TWarehouseBills tWarehousebills) {
  218. return tWarehouseBillsMapper.selectTWarehousebillsList(tWarehousebills);
  219. }
  220. /**
  221. * 根据条件查询总账是否存在
  222. *
  223. * @param warehouseBills 仓库主表
  224. * @param warehousebillsitems 仓库明细表
  225. * @return 库存总账
  226. */
  227. public TWhgenleg queryTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems) {
  228. TWhgenleg tWhgenleg = new TWhgenleg();
  229. // 客户
  230. tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
  231. // 提单号
  232. if ("HQZY".equals(warehouseBills.getfBilltype())) {
  233. tWhgenleg.setfMblno(warehousebillsitems.getfMblno());
  234. } else {
  235. tWhgenleg.setfMblno(warehouseBills.getfMblno());
  236. }
  237. // 库区
  238. tWhgenleg.setfWarehouseLocationid(warehousebillsitems.getfWarehouselocid());
  239. // 货物品名
  240. tWhgenleg.setfGoodsid(warehousebillsitems.getfGoodsid());
  241. // 贸易方式
  242. tWhgenleg.setfTrademodeid(warehouseBills.getfTrademodeid());
  243. return tWhgenlegMapper.selectTWhgenleg(tWhgenleg);
  244. }
  245. /**
  246. * 新增库存总账
  247. *
  248. * @param warehouseBills 仓库主表
  249. * @param warehousebillsitems 仓库明细表
  250. * @return 结果
  251. */
  252. @Transactional
  253. public int instalTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, SysUser user) {
  254. TWhgenleg tWhgenleg = new TWhgenleg();
  255. if ("SJRK".equals(warehouseBills.getfBilltype()) || "HQZY".equals(warehouseBills.getfBilltype())) {
  256. tWhgenleg.setfOriginalbilldate(new Date());
  257. }
  258. // 客户
  259. tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
  260. // 提单号
  261. tWhgenleg.setfMblno(warehouseBills.getfMblno());
  262. // 原始单号
  263. tWhgenleg.setfOriginalbillno(warehouseBills.getfMblno());
  264. // 仓库
  265. tWhgenleg.setfWarehouseid(warehouseBills.getfWarehouseid());
  266. // 库区
  267. tWhgenleg.setfWarehouseLocationid(warehousebillsitems.getfWarehouselocid());
  268. // 货物品名
  269. tWhgenleg.setfGoodsid(warehousebillsitems.getfGoodsid());
  270. // 贸易方式
  271. tWhgenleg.setfTrademodeid(warehouseBills.getfTrademodeid());
  272. // 入库数
  273. tWhgenleg.setfQtyd(warehousebillsitems.getfQty());
  274. // 入库尺码
  275. tWhgenleg.setfVolumnd(warehousebillsitems.getfVolumn());
  276. // 唛头
  277. tWhgenleg.setfMarks(warehousebillsitems.getfMarks());
  278. // 入库毛重
  279. tWhgenleg.setfGrossweightd(warehousebillsitems.getfGrossweight());
  280. // 入库净重
  281. tWhgenleg.setfNetweightd(warehousebillsitems.getfNetweight());
  282. // 入库箱号
  283. tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
  284. // 创建人
  285. tWhgenleg.setCreateBy(user.getUserName());
  286. // 创建人
  287. tWhgenleg.setCreateTime(new Date());
  288. // 状态
  289. tWhgenleg.setfStatus("T");
  290. // 结余件数
  291. tWhgenleg.setfQtyblc(warehousebillsitems.getfQty());
  292. System.out.println("主表新增:" + warehouseBills.toString());
  293. System.out.println("要添加的总账:" + tWhgenleg.toString());
  294. return tWhgenlegMapper.insertTWhgenleg(tWhgenleg);
  295. }
  296. @Transactional
  297. public int updateTWhgenlegData(TWarehousebillsitems warehousebillsitems, long whgenlegId, String billtype) {
  298. Map<String, Object> map = new HashMap<>();
  299. map.put("whgenlegId", whgenlegId);
  300. map.put("billType", billtype);
  301. map.put("warehousebillsitems", warehousebillsitems);
  302. return tWhgenlegMapper.updateTWhgenlegData(map);
  303. }
  304. /**
  305. * 新增详情主表
  306. *
  307. * @param tWarehouseBills 仓库主表
  308. * @param tWarehousebillsfeesCr 仓库费付款用明细表
  309. * @param tWarehousebillsfeesDr 仓库费收
  310. * 款用明细表
  311. * @param tWarehousebillsitems 仓库货物明细表
  312. * @param loginUser 当前登陆人
  313. * @param billsType 判断标识
  314. * @return 结果
  315. */
  316. @Override
  317. @Transactional
  318. public AjaxResult insertTWarehousebills(String tWarehouseBills, String tWarehousebillsfeesCr, String tWarehousebillsfeesDr
  319. , String tWarehousebillsitems, String tWhgenleg, LoginUser loginUser, String billsType) {
  320. Long fPid = null;
  321. TWarehouseBills warehouseBills = JSONArray.parseObject(tWarehouseBills, TWarehouseBills.class);
  322. if (StringUtils.isNull(warehouseBills.getfId())) {
  323. // 如果是新数据
  324. warehouseBills.setCreateBy(loginUser.getUser().getUserName());
  325. warehouseBills.setfBilltype(billsType);
  326. warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  327. /*// 提交时: 生流水号
  328. if ("6".equals(warehouseBills.getfBillstatus()) || "7".equals(warehouseBills.getfBillstatus())) {
  329. // 业务编码
  330. String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());
  331. warehouseBills.setfBillno(billNo);
  332. // 存货编码
  333. Date time = new Date();
  334. String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);
  335. warehouseBills.setfBscorpno(bscorpno);
  336. }*/
  337. // 业务编码
  338. String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());
  339. warehouseBills.setfBillno(billNo);
  340. // 存货编码
  341. Date time = new Date();
  342. String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);
  343. warehouseBills.setfBscorpno(bscorpno);
  344. tWarehouseBillsMapper.insertTWarehousebills(warehouseBills);
  345. fPid = warehouseBills.getfId();
  346. } else {
  347. fPid = warehouseBills.getfId();
  348. warehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  349. warehouseBills.setUpdateTime(new Date());
  350. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  351. tWarehousebillsitemsMapper.deleteByFPid(fPid);
  352. tWarehousebillsfeesMapper.deleteByFPid(fPid);
  353. tEnclosureMapper.deleteByFPid(fPid);
  354. }
  355. // 查询库存总账 库存明细不为空 并且 入库不是暂存状态 进行库存总账的查询新增修改
  356. if (tWarehousebillsitems != null && !"2".equals(warehouseBills.getfBillstatus())) {
  357. JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
  358. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  359. int i = 1;
  360. for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
  361. // 查询总账是否存在
  362. TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, wbItem);
  363. // 入库数特殊不判断入账
  364. if ("SJCK".equals(billsType)) { // 出库 查询
  365. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  366. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  367. return AjaxResult.error("库存明细第" + i + "行库存为空");
  368. } else { // 非空修改库存总账
  369. if ("6".equals(warehouseBills.getfBillstatus())) {
  370. // 库存 < 出库件数 提示库存不足
  371. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
  372. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  373. return AjaxResult.error("库存明细第" + i + "行库存不足");
  374. }
  375. updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
  376. }
  377. }
  378. } else if ("CKDB".equals(billsType)) { // 调拨查询
  379. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  380. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  381. return AjaxResult.error("库存明细第" + i + "行库存为空");
  382. } else { // 非空修改库存总账
  383. if ("6".equals(warehouseBills.getfBillstatus())) {
  384. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
  385. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  386. return AjaxResult.error("库存明细第" + i + "行库存不足");
  387. } else { // 2、 库存足够 先 进行出库操作
  388. updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
  389. }
  390. // 3、 进行入库操作 查询是否存在库存
  391. warehouseBills.setfCorpid(warehouseBills.getfTocorpid()); // 新货权方
  392. TWhgenleg tWhgenle1 = queryTWhgenleg(warehouseBills, wbItem);
  393. if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
  394. instalTWhgenleg(warehouseBills, wbItem, loginUser.getUser());
  395. } else { // 4、 存在 进行跟新库存
  396. if ("6".equals(warehouseBills.getfBillstatus())) {
  397. updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
  398. }
  399. }
  400. }
  401. }
  402. } else if ("HQZY".equals(billsType)) { // 货转
  403. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  404. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  405. return AjaxResult.error("库存明细第" + i + "行库存为空");
  406. } else { // 非空修改库存总账
  407. if ("6".equals(warehouseBills.getfBillstatus())) {
  408. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
  409. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  410. return AjaxResult.error("库存明细第" + i + "行库存不足");
  411. } else { // 2、 库存足够 先 进行出库操作
  412. updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
  413. }
  414. // 3、 进行入库操作 查询是否存在库存
  415. warehouseBills.setfCorpid(warehouseBills.getfTocorpid()); // 新货权方
  416. TWhgenleg tWhgenle1 = queryTWhgenleg(warehouseBills, wbItem);
  417. if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
  418. instalTWhgenleg(warehouseBills, wbItem, loginUser.getUser());
  419. } else { // 4、 存在 进行跟新库存
  420. updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
  421. }
  422. }
  423. }
  424. }
  425. i++;
  426. }
  427. }
  428. // 库存明细添加
  429. if (tWarehousebillsitems != null) {
  430. JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
  431. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  432. int notInStorage = 0;
  433. int Stored = 0;
  434. for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
  435. if (wbItem.getfBillstatus() == null) {
  436. wbItem.setfBillstatus("1");
  437. notInStorage++;
  438. } else if (wbItem.getfBillstatus().equals("6")) {
  439. wbItem.setfBillstatus("6");
  440. Stored++;
  441. } else if (wbItem.getfBillstatus().equals("1")) {
  442. wbItem.setfBillstatus("1");
  443. notInStorage++;
  444. }
  445. wbItem.setfPid(fPid);
  446. wbItem.setfMarks(warehouseBills.getfMarks());
  447. wbItem.setfMblno(warehouseBills.getfMblno());
  448. wbItem.setCreateBy(loginUser.getUser().getUserName());
  449. wbItem.setCreateTime(new Date());
  450. tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
  451. }
  452. // 录入库存明细整体状态
  453. TWarehouseBills warehouseBill = new TWarehouseBills();
  454. warehouseBill.setfId(fPid);
  455. if (Objects.equals(Stored, 0)) { // 未入库
  456. warehouseBill.setfItemsStatus("1");
  457. } else if (Objects.equals(notInStorage, 0)) { // 已入库
  458. warehouseBill.setfItemsStatus("6");
  459. } else { // 有已入库、有未入库
  460. warehouseBill.setfItemsStatus("2");
  461. }
  462. tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);
  463. }
  464. // 附件添加
  465. if (StringUtils.isNotNull(tWhgenleg)) {
  466. JSONArray jsonDrArray = JSONArray.parseArray(tWhgenleg);
  467. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  468. for (TEnclosure tEnclosure : tEnclosureList) {
  469. tEnclosure.setfPid(fPid);
  470. tEnclosure.setCreateBy(loginUser.getUser().getUserName());
  471. tEnclosure.setCreateTime(new Date());
  472. tEnclosureMapper.insertTEnclosure(tEnclosure);
  473. }
  474. }
  475. // 收款明细添加
  476. if (tWarehousebillsfeesDr != null) {
  477. JSONArray jsonDrArray = JSONArray.parseArray(tWarehousebillsfeesDr);
  478. List<TWarehousebillsfees> warehousebillsfeesDrList = JSONObject.parseArray(jsonDrArray.toJSONString(), TWarehousebillsfees.class);
  479. for (TWarehousebillsfees wbDr : warehousebillsfeesDrList) {
  480. // 检验 数量*单价=金额
  481. wbDr.setfPid(fPid);
  482. wbDr.setfDc("D");
  483. wbDr.setCreateBy(loginUser.getUser().getUserName());
  484. wbDr.setCreateTime(new Date());
  485. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbDr);
  486. }
  487. }
  488. // 付款明细添加
  489. if (tWarehousebillsfeesCr != null) {
  490. JSONArray jsonCrArray = JSONArray.parseArray(tWarehousebillsfeesCr);
  491. List<TWarehousebillsfees> warehousebillsfeesCrList = JSONObject.parseArray(jsonCrArray.toJSONString(), TWarehousebillsfees.class);
  492. for (TWarehousebillsfees wbCr : warehousebillsfeesCrList) {
  493. wbCr.setfPid(fPid);
  494. wbCr.setfDc("C");
  495. wbCr.setCreateBy(loginUser.getUser().getUserName());
  496. wbCr.setCreateTime(new Date());
  497. tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
  498. }
  499. }
  500. return AjaxResult.success();
  501. }
  502. /**
  503. * 入库详情入账
  504. *
  505. * @param warehouseBills 主表
  506. * @param warehousebillsitems 明细
  507. * @param whgenleg 附件
  508. * @param loginUser 当前登录人
  509. * @param billsType 状态
  510. * @return 结果
  511. */
  512. @Override
  513. @Transactional
  514. public AjaxResult addCredit(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType) {
  515. Long fPid = null;
  516. if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
  517. return AjaxResult.error("未找到主表信息");
  518. }
  519. if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
  520. return AjaxResult.error("未找到入账信息");
  521. }
  522. TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  523. if (StringUtils.isNotNull(tWarehouseBills.getfId())) {
  524. tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  525. tWarehouseBills.setUpdateTime(new Date());
  526. tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  527. fPid = tWarehouseBills.getfId();
  528. tEnclosureMapper.deleteByFPid(fPid);
  529. } else {
  530. // 业务编码
  531. String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());
  532. tWarehouseBills.setfBillno(billNo);
  533. // 存货编码
  534. Date time = new Date();
  535. String bscorpno = billnoSerialServiceImpl.getCorpNo(tWarehouseBills.getfCorpid(), time);
  536. tWarehouseBills.setfBscorpno(bscorpno);
  537. tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
  538. tWarehouseBills.setCreateTime(new Date());
  539. tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  540. // 已入账
  541. tWarehouseBills.setfBillstatus("2");
  542. tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
  543. fPid = tWarehouseBills.getfId();
  544. }
  545. JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
  546. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  547. for (TWarehousebillsitems item : warehousebillsitemsList) {
  548. TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, item);
  549. if (StringUtils.isNotNull(tWhgenle)) {
  550. int i = updateTWhgenlegData(item, tWhgenle.getfId(), billsType);
  551. if (i <= 0) {
  552. return AjaxResult.error("更新库存总账失败");
  553. }
  554. } else {
  555. if (instalTWhgenleg(tWarehouseBills, item, loginUser.getUser()) <= 0) {
  556. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  557. return AjaxResult.error("新增库存总账失败");
  558. }
  559. }
  560. item.setfPid(fPid);
  561. item.setfBillstatus("6");
  562. item.setCreateBy(loginUser.getUser().getUserName());
  563. item.setCreateTime(new Date());
  564. int num = 0;
  565. if (StringUtils.isNotNull(item.getfId())) {
  566. num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
  567. } else {
  568. num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
  569. }
  570. if (num <= 0) {
  571. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  572. return AjaxResult.error("新增库存明细失败");
  573. }
  574. }
  575. // 查询所有库存明细 修改仓库主表状态
  576. int notInStorage = 0;
  577. int Stored = 0;
  578. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  579. tWarehousebillsitems.setfPid(fPid);
  580. List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
  581. for (TWarehousebillsitems item : warehousebillsitemsList1) {
  582. if (item.getfBillstatus() == null) {
  583. notInStorage++;
  584. } else if (item.getfBillstatus().equals("6")) {
  585. Stored++;
  586. } else if (item.getfBillstatus().equals("1")) {
  587. notInStorage++;
  588. }
  589. }
  590. // 录入库存明细整体状态
  591. TWarehouseBills warehouseBill = new TWarehouseBills();
  592. warehouseBill.setfId(fPid);
  593. if (Objects.equals(Stored, 0)) { // 未入库
  594. warehouseBill.setfItemsStatus("1");
  595. } else if (Objects.equals(notInStorage, 0)) { // 已入库
  596. warehouseBill.setfItemsStatus("6");
  597. } else { // 有已入库、有未入库
  598. warehouseBill.setfItemsStatus("2");
  599. }
  600. tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);
  601. if (StringUtils.isNotNull(whgenleg) && !"[]".equals(whgenleg)) {
  602. JSONArray jsonDrArray = JSONArray.parseArray(whgenleg);
  603. List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
  604. for (TEnclosure tEnclosure : tEnclosureList) {
  605. tEnclosure.setfPid(fPid);
  606. tEnclosure.setCreateBy(loginUser.getUser().getUserName());
  607. tEnclosure.setCreateTime(new Date());
  608. tEnclosureMapper.insertTEnclosure(tEnclosure);
  609. }
  610. }
  611. // 添加成功 主键返回 前台
  612. return AjaxResult.success("成功", fPid);
  613. }
  614. /**
  615. * 出库、调拨、货转 确认
  616. *
  617. * @param warehouseBills
  618. * @param warehousebillsitems
  619. * @param loginUser
  620. * @param billsType
  621. * @return
  622. */
  623. @Override
  624. @Transactional
  625. public AjaxResult updateCredit(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String billsType) {
  626. Long fPid = null;
  627. if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
  628. return AjaxResult.error("未找到主表信息");
  629. }
  630. if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
  631. return AjaxResult.error("未找到入账信息");
  632. }
  633. TWarehouseBills tWarehouseBills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
  634. if (StringUtils.isNotNull(tWarehouseBills.getfId())) {
  635. tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
  636. tWarehouseBills.setUpdateTime(new Date());
  637. tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  638. fPid = tWarehouseBills.getfId();
  639. tEnclosureMapper.deleteByFPid(fPid);
  640. } else {
  641. // 业务编码
  642. String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());
  643. tWarehouseBills.setfBillno(billNo);
  644. // 存货编码
  645. Date time = new Date();
  646. String bscorpno = billnoSerialServiceImpl.getCorpNo(tWarehouseBills.getfCorpid(), time);
  647. tWarehouseBills.setfBscorpno(bscorpno);
  648. tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
  649. tWarehouseBills.setCreateTime(new Date());
  650. tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
  651. // 已入账
  652. tWarehouseBills.setfBillstatus("2");
  653. tWarehouseBills.setfBilltype(billsType);
  654. tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
  655. fPid = tWarehouseBills.getfId();
  656. }
  657. JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
  658. List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
  659. int i = 1;
  660. for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
  661. // 查询总账是否存在
  662. TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem);
  663. // 入库数特殊不判断入账
  664. if ("SJCK".equals(billsType)) { // 出库 查询
  665. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  666. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  667. return AjaxResult.error("库存明细第" + i + "行库存为空");
  668. } else { // 非空修改库存总账
  669. // 库存 < 出库件数 、
  670. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
  671. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  672. return AjaxResult.error("库存明细第" + i + "行库存不足");
  673. }
  674. updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
  675. }
  676. } else if ("CKDB".equals(billsType)) { // 调拨查询
  677. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  678. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  679. return AjaxResult.error("库存明细第" + i + "行库存为空");
  680. } else { // 非空修改库存总账
  681. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
  682. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  683. return AjaxResult.error("库存明细第" + i + "行库存不足");
  684. } else { // 2、 库存足够 先 进行出库操作
  685. updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
  686. }
  687. // 3、 进行入库操作 查询是否存在库存
  688. tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid()); // 新货权方
  689. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem);
  690. if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
  691. instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
  692. } else { // 4、 存在 进行跟新库存
  693. updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
  694. }
  695. }
  696. } else if ("HQZY".equals(billsType)) { // 货转
  697. if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
  698. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  699. return AjaxResult.error("库存明细第" + i + "行库存为空");
  700. } else { // 非空修改库存总账
  701. if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
  702. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  703. return AjaxResult.error("库存明细第" + i + "行库存不足");
  704. } else { // 2、 库存足够 先 进行出库操作
  705. updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
  706. }
  707. // 3、 进行入库操作 查询是否存在库存
  708. tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid()); // 新货权方
  709. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem);
  710. if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
  711. instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
  712. } else { // 4、 存在 进行跟新库存
  713. updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
  714. }
  715. }
  716. }
  717. i++;
  718. wbItem.setfPid(fPid);
  719. wbItem.setfBillstatus("6");
  720. wbItem.setfBsdate(tWarehouseBills.getfBsdate());
  721. wbItem.setCreateBy(loginUser.getUser().getUserName());
  722. wbItem.setCreateTime(new Date());
  723. int num = 0;
  724. if (StringUtils.isNotNull(wbItem.getfId())) {
  725. num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
  726. } else {
  727. num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
  728. }
  729. if (num <= 0) {
  730. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  731. return AjaxResult.error("库存明细更新失败");
  732. }
  733. }
  734. // 查询所有库存明细 修改仓库主表状态
  735. int notInStorage = 0;
  736. int Stored = 0;
  737. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  738. tWarehousebillsitems.setfPid(fPid);
  739. List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
  740. for (TWarehousebillsitems item : warehousebillsitemsList1) {
  741. if (item.getfBillstatus() == null) {
  742. notInStorage++;
  743. } else if (item.getfBillstatus().equals("6")) {
  744. Stored++;
  745. } else if (item.getfBillstatus().equals("1")) {
  746. notInStorage++;
  747. }
  748. }
  749. // 录入库存明细整体状态
  750. TWarehouseBills warehouseBill = new TWarehouseBills();
  751. warehouseBill.setfId(fPid);
  752. if (Objects.equals(Stored, 0)) { // 未入库
  753. warehouseBill.setfItemsStatus("1");
  754. } else if (Objects.equals(notInStorage, 0)) { // 已入库
  755. warehouseBill.setfItemsStatus("6");
  756. } else { // 有已入库、有未入库
  757. warehouseBill.setfItemsStatus("2");
  758. }
  759. tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);
  760. // 添加成功 主键返回 前台
  761. return AjaxResult.success("成功", fPid);
  762. }
  763. // 入库 收费明细 校验
  764. public Long check(BigDecimal number, BigDecimal unitPrice) {
  765. BigDecimal result1 = number.multiply(unitPrice);
  766. // 保留两位小数且四舍五入
  767. result1 = result1.setScale(2, BigDecimal.ROUND_HALF_UP);
  768. // 转换去掉小数点
  769. String result = result1.toString().replace(".", "");
  770. return Long.valueOf(result);
  771. }
  772. /**
  773. * 修改详情主表
  774. *
  775. * @param tWarehousebills 详情主表
  776. * @return 结果
  777. */
  778. @Override
  779. public int updateTWarehousebills(TWarehouseBills tWarehousebills) {
  780. tWarehousebills.setUpdateTime(DateUtils.getNowDate());
  781. return tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  782. }
  783. /**
  784. * 批量删除详情主表
  785. *
  786. * @param fIds 需要删除的详情主表ID
  787. * @return 结果
  788. */
  789. @Override
  790. public int deleteTWarehousebillsByIds(Long[] fIds) {
  791. // 取出业务编号、 放入 billno_del
  792. for (Long id : fIds) {
  793. // 1、查询主表信息
  794. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(id);
  795. // 2、业务编号、客存编号 放入 billno_del
  796. BillnoDel billnoDel = new BillnoDel();
  797. billnoDel.setBillType(tWarehousebills.getfBilltype());
  798. billnoDel.setBillNo(tWarehousebills.getfBillno());
  799. billnoDelMapper.insertBillnoDel(billnoDel);
  800. }
  801. return tWarehouseBillsMapper.deleteTWarehousebillsByIds(fIds);
  802. }
  803. /**
  804. * 删除详情主表信息
  805. *
  806. * @param fId 详情主表ID
  807. * @return 结果
  808. */
  809. @Override
  810. public int deleteTWarehousebillsById(Long fId) {
  811. return tWarehouseBillsMapper.deleteTWarehousebillsById(fId);
  812. }
  813. @Override
  814. public String getWarehouseInStockBillsNo(TWarehouseBills tWarehouseBills) {
  815. return null;
  816. }
  817. @Override
  818. public String getWarehouseOutStockBillsNo(TWarehouseBills tWarehouseBills) {
  819. return null;
  820. }
  821. @Override
  822. public AjaxResult revokeTWarehousebillsById(Long fId, LoginUser loginUser, String billsType) {
  823. // 查询 仓库主表信息、库存明细信息
  824. TWarehouseBills tWarehousebills = tWarehouseBillsMapper.selectTWarehousebillsById(fId);
  825. // 修改主表信息
  826. tWarehousebills.setUpdateBy(loginUser.getUser().getUserName());
  827. tWarehousebills.setUpdateTime(new Date());
  828. tWarehousebills.setfBillstatus("3"); //撤销状态
  829. tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
  830. // 查询库存明细从表数据
  831. TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
  832. tWarehousebillsitems.setfPid(fId);
  833. List<TWarehousebillsitems> warehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
  834. // 撤销 库存总账
  835. if (StringUtils.isNotEmpty(warehousebillsitems)) {
  836. int i = 1;
  837. for (TWarehousebillsitems wb : warehousebillsitems) {
  838. // 查询库存总账
  839. TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb);
  840. if ("SJRKRevoke".equals(billsType)) { // 撤销 入库
  841. if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数
  842. updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
  843. } else { // 撤销数>结余数
  844. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  845. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  846. }
  847. } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库
  848. if (StringUtils.isNotNull(tWhgenle)) { // 非空
  849. updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
  850. } else {
  851. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  852. return AjaxResult.error("第" + i + "行未查询到库存信息");
  853. }
  854. } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销
  855. Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
  856. Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
  857. // 1、新货权方撤销入库
  858. // 查询库存总账
  859. tWarehousebills.setfCorpid(fTocorpid);
  860. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
  861. if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
  862. updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
  863. } else {
  864. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  865. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  866. }
  867. // 2、原货权方撤销出库
  868. // 查询库存总账
  869. tWarehousebills.setfCorpid(fCorpid);
  870. TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
  871. updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
  872. } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销 HQZYRevoke
  873. Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
  874. Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
  875. // 1、新货权方撤销入库
  876. // 查询库存总账
  877. tWarehousebills.setfCorpid(fTocorpid);
  878. TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
  879. if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
  880. updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
  881. } else {
  882. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  883. return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
  884. }
  885. // 2、原货权方撤销出库
  886. // 查询库存总账
  887. tWarehousebills.setfCorpid(fCorpid);
  888. TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
  889. updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
  890. }
  891. i++;
  892. }
  893. }
  894. return AjaxResult.success();
  895. }
  896. }