|
@@ -935,8 +935,119 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
}
|
|
|
}
|
|
|
return AjaxResult.success();
|
|
|
-
|
|
|
}
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
+ * 撤销入账
|
|
|
+ *
|
|
|
+ * @param warehouseBills 主表
|
|
|
+ * @param warehousebillsitems 明细
|
|
|
+ * @param whgenleg 附件
|
|
|
+ * @param loginUser 当前登录人
|
|
|
+ * @param billsType 状态
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType) {
|
|
|
+ Long fPid = null;
|
|
|
+ if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
|
|
|
+ return AjaxResult.error("未找到主表信息");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
|
|
|
+ return AjaxResult.error("未找到入账信息");
|
|
|
+ }
|
|
|
+ TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
|
|
|
+ fPid = tWarehousebills.getfId();
|
|
|
+ JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
|
|
|
+ List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
|
|
|
+ if (StringUtils.isNotEmpty(warehousebillsitemsList)) {
|
|
|
+ int i = 1;
|
|
|
+ for (TWarehousebillsitems wb : warehousebillsitemsList) {
|
|
|
+ // 查询库存总账
|
|
|
+ TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb);
|
|
|
+ if ("SJRKRevoke".equals(billsType)) { // 撤销 入库
|
|
|
+ if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数
|
|
|
+ updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
|
|
|
+ } else { // 撤销数>结余数
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
|
|
|
+ }
|
|
|
+ } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库
|
|
|
+ if (StringUtils.isNotNull(tWhgenle)) { // 非空
|
|
|
+ updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
|
|
|
+ } else {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return AjaxResult.error("第" + i + "行未查询到库存信息");
|
|
|
+ }
|
|
|
+ } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销
|
|
|
+ Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
|
|
|
+ Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
|
|
|
+ // 1、新货权方撤销入库
|
|
|
+ // 查询库存总账
|
|
|
+ tWarehousebills.setfCorpid(fTocorpid);
|
|
|
+ TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
|
|
|
+ if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
|
|
|
+ updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
|
|
|
+ } else {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
|
|
|
+ }
|
|
|
+ // 2、原货权方撤销出库
|
|
|
+ // 查询库存总账
|
|
|
+ tWarehousebills.setfCorpid(fCorpid);
|
|
|
+ TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
|
|
|
+ updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
|
|
|
+ } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销 HQZYRevoke
|
|
|
+ Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
|
|
|
+ Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
|
|
|
+ // 1、新货权方撤销入库
|
|
|
+ // 查询库存总账
|
|
|
+ tWarehousebills.setfCorpid(fTocorpid);
|
|
|
+ TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
|
|
|
+ if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
|
|
|
+ updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
|
|
|
+ } else {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
|
|
|
+ }
|
|
|
+ // 2、原货权方撤销出库
|
|
|
+ // 查询库存总账
|
|
|
+ tWarehousebills.setfCorpid(fCorpid);
|
|
|
+ TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
|
|
|
+ updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
|
|
|
+ }
|
|
|
+ i++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 查询所有库存明细 修改仓库主表状态
|
|
|
+ int notInStorage = 0;
|
|
|
+ int Stored = 0;
|
|
|
+ TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
|
|
|
+ tWarehousebillsitems.setfPid(fPid);
|
|
|
+ List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
|
|
|
+ for (TWarehousebillsitems item : warehousebillsitemsList1) {
|
|
|
+ if (item.getfBillstatus() == null) {
|
|
|
+ notInStorage++;
|
|
|
+ } else if (item.getfBillstatus().equals("6")) {
|
|
|
+ Stored++;
|
|
|
+ } else if (item.getfBillstatus().equals("1")) {
|
|
|
+ notInStorage++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 录入库存明细整体状态
|
|
|
+ TWarehouseBills warehouseBill = new TWarehouseBills();
|
|
|
+ warehouseBill.setfId(fPid);
|
|
|
+ if (Objects.equals(Stored, 0)) { // 未入库
|
|
|
+ warehouseBill.setfItemsStatus("1");
|
|
|
+ } else if (Objects.equals(notInStorage, 0)) { // 已入库
|
|
|
+ warehouseBill.setfItemsStatus("6");
|
|
|
+ } else { // 有已入库、有未入库
|
|
|
+ warehouseBill.setfItemsStatus("2");
|
|
|
+ }
|
|
|
+ tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);
|
|
|
+ return AjaxResult.success();
|
|
|
+ }
|
|
|
+
|
|
|
}
|