|  | @@ -436,6 +436,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |       * @return 库存总账
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  |      public TWhgenleg queryTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, String ifCntrno) {
 | 
	
		
			
				|  |  | +        // 货转时如果调出操作是10-1且计费日期10-1那么调入的时候也要判断计费日期10-1业务日期10-1,调入之后吧id赋值给费用明细新加字段中
 | 
	
		
			
				|  |  | +        // 调拨同理
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          TWhgenleg tWhgenleg = new TWhgenleg();
 | 
	
		
			
				|  |  |          // 客户
 | 
	
		
			
				|  |  |          tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
 | 
	
	
		
			
				|  | @@ -452,6 +455,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          tWhgenleg.setfMarks(warehousebillsitems.getfMarks());
 | 
	
		
			
				|  |  |          // 业务日期
 | 
	
		
			
				|  |  |          tWhgenleg.setfBsdate(warehousebillsitems.getfBsdate());
 | 
	
		
			
				|  |  | +    1
 | 
	
		
			
				|  |  | +        1
 | 
	
		
			
				|  |  | +                1
 | 
	
		
			
				|  |  | +                        1
 | 
	
		
			
				|  |  | +                                11
 | 
	
		
			
				|  |  | +                                        1
 | 
	
		
			
				|  |  | +                                                1
 | 
	
		
			
				|  |  | +    1
 | 
	
		
			
				|  |  |          if ("1".equals(ifCntrno)) {
 | 
	
		
			
				|  |  |              tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -3595,6 +3606,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |          List<TFees> feesList = new ArrayList<>();
 | 
	
		
			
				|  |  |          List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();
 | 
	
		
			
				|  |  |          for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
 | 
	
		
			
				|  |  | +            if (StringUtils.isNull(wbItem.getfSrcid())) {
 | 
	
		
			
				|  |  | +                throw new WarehouseException("仓储明细找不对库存总帐信息");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              // 如果业务时间超出当前时间则不允许
 | 
	
		
			
				|  |  |              if (wbItem.getfBsdate().after(new Date())) {
 | 
	
		
			
				|  |  |                  throw new WarehouseException("业务日期不得超出当前日期");
 | 
	
	
		
			
				|  | @@ -3620,90 +3634,77 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                  transferWarehouselocid = wbItem.getfTransferWarehouselocid();
 | 
	
		
			
				|  |  |  //                wbItem.setfWarehouselocid(transferWarehouselocid);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            // 查询总账是否存在
 | 
	
		
			
				|  |  | -            TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (Objects.nonNull(tWhgenle) && wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) {
 | 
	
		
			
				|  |  | +            // 根据来源编号查出库存总账的信息
 | 
	
		
			
				|  |  | +            TWhgenleg tWhgenle = tWhgenlegMapper.selectTWhgenlegById(wbItem.getfSrcid());
 | 
	
		
			
				|  |  | +                // 查询总账是否存在
 | 
	
		
			
				|  |  | +            if (Objects.isNull(tWhgenle)) {
 | 
	
		
			
				|  |  | +                throw new WarehouseException("库存明细第" + i + "行找不到库存信息");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) {
 | 
	
		
			
				|  |  |                  throw new WarehouseException("业务日期不得超出库存总帐日期");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //  入库数特殊不判断入账
 | 
	
		
			
				|  |  |              if ("SJCK".equals(billsType)) { // 出库 查询
 | 
	
		
			
				|  |  | -                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
 | 
	
		
			
				|  |  | -                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                    return AjaxResult.error("库存明细第" + i + "行库存为空");
 | 
	
		
			
				|  |  | -                } else { // 非空修改库存总账
 | 
	
		
			
				|  |  | -                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | -                    checkWhgenleg(wbItem, tWhgenle);
 | 
	
		
			
				|  |  | -                    //  库存 <  出库件数
 | 
	
		
			
				|  |  | -                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("库存明细第" + i + "行库存不足");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    // 更新库存总账
 | 
	
		
			
				|  |  | -                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
 | 
	
		
			
				|  |  | -                    if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    DateUtils.getDateDay(tWarehouseBills.getfBsdate(), wbItem.getfChargedate());
 | 
	
		
			
				|  |  | -                    if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
 | 
	
		
			
				|  |  | +                    return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
 | 
	
		
			
				|  |  | +                    return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +                checkWhgenleg(wbItem, tWhgenle);
 | 
	
		
			
				|  |  | +                //  库存 <  出库件数
 | 
	
		
			
				|  |  | +                if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
 | 
	
		
			
				|  |  | +                    return AjaxResult.error("库存明细第" + i + "行库存不足");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +                // 更新库存总账
 | 
	
		
			
				|  |  | +                updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
 | 
	
		
			
				|  |  |                  wbItem.setfBillstatus(40L);
 | 
	
		
			
				|  |  |              } else if (WarehouseTypeEnum.CKDB.getType().equals(billsType) || WarehouseTypeEnum.HWTG.getType().equals(billsType)) { // 调拨查询
 | 
	
		
			
				|  |  | -                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
 | 
	
		
			
				|  |  | +                //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +                checkWhgenleg(wbItem, tWhgenle);
 | 
	
		
			
				|  |  | +                if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
 | 
	
		
			
				|  |  |                      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                    return AjaxResult.error("库存明细第" + i + "行库存为空");
 | 
	
		
			
				|  |  | -                } else { // 非空修改库存总账
 | 
	
		
			
				|  |  | -                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | -                    checkWhgenleg(wbItem, tWhgenle);
 | 
	
		
			
				|  |  | -                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("库存明细第" + i + "行库存不足");
 | 
	
		
			
				|  |  | -                    } else {  // 2、 库存足够 先 进行出库操作
 | 
	
		
			
				|  |  | -                        wbItem.setfWarehouselocid(warehouselocId);
 | 
	
		
			
				|  |  | -                        updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
 | 
	
		
			
				|  |  | -                        tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    // 3、 进行入库操作 查询是否存在库存
 | 
	
		
			
				|  |  | -                    wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
 | 
	
		
			
				|  |  | -                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
 | 
	
		
			
				|  |  | -                    if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
 | 
	
		
			
				|  |  | -                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
 | 
	
		
			
				|  |  | -                    } else { // 4、 存在 进行跟新库存
 | 
	
		
			
				|  |  | -                        updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | +                    throw new WarehouseException("库存明细第" + i + "行库存不足");
 | 
	
		
			
				|  |  | +                } else {  // 2、 库存足够 先 进行出库操作
 | 
	
		
			
				|  |  | +                    wbItem.setfWarehouselocid(warehouselocId);
 | 
	
		
			
				|  |  | +                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), WarehouseTypeEnum.SJCK.getType());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
 | 
	
		
			
				|  |  | +                    tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                // 3、 进行入库操作 查询是否存在库存
 | 
	
		
			
				|  |  | +                wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
 | 
	
		
			
				|  |  | +                // todo:: 需要完善的地方  缺一个字段用来存储 货转新总帐查询
 | 
	
		
			
				|  |  | +                TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
 | 
	
		
			
				|  |  | +                    instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
 | 
	
		
			
				|  |  | +                } else { // 4、 存在 进行跟新库存
 | 
	
		
			
				|  |  | +                    updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  wbItem.setfWarehouselocid(warehouselocId);
 | 
	
		
			
				|  |  |                  wbItem.setfBillstatus(40L);
 | 
	
		
			
				|  |  |              } else if (WarehouseTypeEnum.HQZY.getType().equals(billsType)) { // 货转
 | 
	
		
			
				|  |  |                  wbItem.setfBillstatus(6L);
 | 
	
		
			
				|  |  |                  wbItem.setfBillingway(tWarehouseBills.getfBillingway());
 | 
	
		
			
				|  |  | -                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
 | 
	
		
			
				|  |  | -                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                    return AjaxResult.error("库存明细第" + i + "行库存为空");
 | 
	
		
			
				|  |  | -                } else { // 非空修改库存总账
 | 
	
		
			
				|  |  | -                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | -                    checkWhgenleg(wbItem, tWhgenle);
 | 
	
		
			
				|  |  | -                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
 | 
	
		
			
				|  |  | -                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
 | 
	
		
			
				|  |  | -                        return AjaxResult.error("库存明细第" + i + "行库存不足");
 | 
	
		
			
				|  |  | -                    } else {  // 2、 库存足够 先 进行出库操作
 | 
	
		
			
				|  |  | -                        updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    long corpId = tWarehouseBills.getfCorpid();
 | 
	
		
			
				|  |  | -                    tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
 | 
	
		
			
				|  |  | -                    // 3、 进行入库操作 查询是否存在库存
 | 
	
		
			
				|  |  | -                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
 | 
	
		
			
				|  |  | -                    if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
 | 
	
		
			
				|  |  | -                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
 | 
	
		
			
				|  |  | -                    } else { // 4、 存在 进行跟新库存
 | 
	
		
			
				|  |  | -                        updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    tWarehouseBills.setfCorpid(corpId);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | +                //校验计费日期是等于库存总帐计费日,如果不相等则报错
 | 
	
		
			
				|  |  | +                checkWhgenleg(wbItem, tWhgenle);
 | 
	
		
			
				|  |  | +                if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
 | 
	
		
			
				|  |  | +                    throw new WarehouseException("库存明细第" + i + "行库存不足");
 | 
	
		
			
				|  |  | +                } else {  // 2、 库存足够 先 进行出库操作
 | 
	
		
			
				|  |  | +                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), WarehouseTypeEnum.SJCK.getType());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                long corpId = tWarehouseBills.getfCorpid();
 | 
	
		
			
				|  |  | +                tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
 | 
	
		
			
				|  |  | +                // 3、 进行入库操作 查询是否存在库存
 | 
	
		
			
				|  |  | +                TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
 | 
	
		
			
				|  |  | +                if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
 | 
	
		
			
				|  |  | +                    instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
 | 
	
		
			
				|  |  | +                } else { // 4、 存在 进行跟新库存
 | 
	
		
			
				|  |  | +                    updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                tWarehouseBills.setfCorpid(corpId);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              i++;
 | 
	
		
			
				|  |  |              int num = 0;
 | 
	
	
		
			
				|  | @@ -3715,7 +3716,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 | 
	
		
			
				|  |  |                  wbItem.setUpdateBy(loginUser.getUser().getUserName());
 | 
	
		
			
				|  |  |                  wbItem.setUpdateTime(new Date());
 | 
	
		
			
				|  |  |                  num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
 | 
	
		
			
				|  |  | -                if ("SJCK".equals(billsType)) {
 | 
	
		
			
				|  |  | +                if (WarehouseTypeEnum.SJCK.getType().equals(billsType)) {
 | 
	
		
			
				|  |  |                      // 添加状态log
 | 
	
		
			
				|  |  |                      insertTWarehousebillsLog(wbItem, 40L, loginUser);
 | 
	
		
			
				|  |  |                  }
 |