|
@@ -49,9 +49,7 @@ import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDTO;
|
|
|
import com.ruoyi.warehouseBusiness.domain.enums.FeesTypeEnum;
|
|
|
import com.ruoyi.warehouseBusiness.domain.enums.WarehouseActIdEnum;
|
|
|
import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
|
|
|
-import com.ruoyi.warehouseBusiness.domain.vo.AppWarehouseInfoVO;
|
|
|
-import com.ruoyi.warehouseBusiness.domain.vo.CalculateStorageFeesInfoVO;
|
|
|
-import com.ruoyi.warehouseBusiness.domain.vo.StorageFeeCalculationResultVO;
|
|
|
+import com.ruoyi.warehouseBusiness.domain.vo.*;
|
|
|
import com.ruoyi.warehouseBusiness.excel.*;
|
|
|
import com.ruoyi.warehouseBusiness.mapper.*;
|
|
|
import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
|
|
@@ -3244,55 +3242,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 根据仓库主表id 更新对应明细表状态
|
|
|
- *
|
|
|
- * @param fPid 仓库主表id
|
|
|
- * @return 结果
|
|
|
- */
|
|
|
- @Transactional
|
|
|
- public AjaxResult storageFeeFollow(Long fPid, long fettle) {
|
|
|
- if (StringUtils.isNull(fPid)) {
|
|
|
- return AjaxResult.error("仓库更新状态未找到主表信息,请与管理员联系");
|
|
|
- }
|
|
|
- int warehouseUpdateResult = tWarehouseBillsMapper.warehouseFollowUpdate(fPid, fettle, new Date());
|
|
|
- if (warehouseUpdateResult <= 0) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("更新库存明细状态失败,请联系管理员");
|
|
|
- }
|
|
|
- TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
|
|
|
- warehousebillsfees.setfPid(fPid);
|
|
|
- List<TWarehousebillsfees> warehousebillsfeesList = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
|
|
|
- for (TWarehousebillsfees wareItem : warehousebillsfeesList) {
|
|
|
- if (StringUtils.isNull(wareItem.getSrcId())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- if ("KCZZ".equals(wareItem.getfBilltype())) {
|
|
|
- TWhgenleg tWhgenleg = tWhgenlegMapper.selectTWhgenlegById(wareItem.getSrcId());
|
|
|
- tWhgenleg.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
|
|
|
- int i = tWhgenlegMapper.updateTWhgenleg(tWhgenleg);
|
|
|
- if (i <= 0) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("更新库存费用状态失败,请联系管理员");
|
|
|
- }
|
|
|
- } else {
|
|
|
- TWarehousebillsitems tWarehousebillsitems = tWarehousebillsitemsMapper.selectTWarehousebillsitemsById(wareItem.getSrcId());
|
|
|
- tWarehousebillsitems.setfChargedate(DateUtils.dateAdd(wareItem.getfBillingDeadline(), 1));
|
|
|
- if ("SJCK".equals(wareItem.getfBilltype())) {
|
|
|
- tWarehousebillsitems.setfStorageFeeDeadline(wareItem.getfBillingDeadline());
|
|
|
- }
|
|
|
- tWarehousebillsitemsMapper.updateTWarehousebillsitems(tWarehousebillsitems);
|
|
|
- }
|
|
|
- }
|
|
|
- int feesUpdateResult = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(fPid, fettle, new Date());
|
|
|
- if (feesUpdateResult <= 0) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("更新库存费用状态失败,请联系管理员");
|
|
|
- }
|
|
|
- return AjaxResult.success();
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
* 入库确认
|
|
|
*
|
|
|
* @param warehouseBills 主表
|
|
@@ -4436,6 +4385,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
tWhgenleg.setfMarks((String) whgenleg.get("fMarks"));
|
|
|
tWhgenleg.setfMblno((String) whgenleg.get("fMblno"));
|
|
|
tWhgenleg.setfCntrno((String) whgenleg.get("fCntrno"));
|
|
|
+ tWhgenleg.setfOriginalbilldate((Date) whgenleg.get("fOriginalbilldate"));
|
|
|
tWhgenleg.setfGoodsid(Long.parseLong(whgenleg.get("fGoodsid").toString()));
|
|
|
tWhgenleg.setfNetweightblc(new BigDecimal(whgenleg.get("fNetweight").toString()));
|
|
|
tWhgenleg.setfGrossweightblc(new BigDecimal(whgenleg.get("fGrossweight").toString()));
|
|
@@ -4449,6 +4399,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
if ((!Objects.equals(li.getfGoodsid(), tWhgenleg.getfGoodsid())) ||
|
|
|
(!Objects.equals(li.getfWarehouselocid(), tWhgenleg.getfWarehouseid()) || Objects.equals(li.getfTransferWarehouselocid(), tWhgenleg.getfWarehouseid())) ||
|
|
|
!li.getfMblno().equals(tWhgenleg.getfMblno()) ||
|
|
|
+ !Objects.equals(li.getfOriginalbilldate(), tWhgenleg.getfOriginalbilldate()) ||
|
|
|
(!li.getfMarks().equals(tWhgenleg.getfMarks())) ||
|
|
|
(ifCntrno && !li.getfCntrno().equals(tWhgenleg.getfCntrno()))
|
|
|
) {
|
|
@@ -4905,24 +4856,92 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
auditItems.setTimes(tWarehousebills.getfTimes());
|
|
|
AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
|
|
|
String code = approvalFlow.get("code").toString();
|
|
|
-// Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
|
|
|
if ("500".equals(code)) {
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
}
|
|
|
return approvalFlow;
|
|
|
} else {
|
|
|
- AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
|
|
|
- String code = ajaxResult.get("code").toString();
|
|
|
-// Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
|
|
|
- if ("500".equals(code)) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- }
|
|
|
- return ajaxResult;
|
|
|
+ approvedStorageFee(fPid, 6L, new Date());
|
|
|
+ return AjaxResult.success();
|
|
|
}
|
|
|
}
|
|
|
return AjaxResult.success(tWarehousebills);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 计算仓储费审核通过
|
|
|
+ * @param warehouseId 主表id
|
|
|
+ * @param fettle 状态
|
|
|
+ * @param date 审核时间
|
|
|
+ */
|
|
|
+ public void approvedStorageFee(Long warehouseId, Long fettle, Date date) {
|
|
|
+ tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(warehouseId, fettle, date);
|
|
|
+ // 查出主表数据
|
|
|
+ TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(warehouseId);
|
|
|
+ if (Objects.isNull(warehouseBills)) {
|
|
|
+ throw new WarehouseException("未找到仓储信息");
|
|
|
+ }
|
|
|
+ List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(warehouseBills.getfId());
|
|
|
+ if (CollectionUtils.isEmpty(feesList)) {
|
|
|
+ throw new WarehouseException("未找到需要跟新的费用信息");
|
|
|
+ }
|
|
|
+ // 过滤出明细信息查询是否存在已计算仓储费
|
|
|
+ List<Long> ids = feesList.stream().map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
|
|
|
+ if (tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
|
|
|
+ throw new WarehouseException("计算费用中存在已计算仓储费信息");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (TWarehousebillsfees fees : feesList) {
|
|
|
+ storageFeeUpdateItem(warehouseBills, fees);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计算仓储费计算更新出库货转信息
|
|
|
+ *
|
|
|
+ * @param warehouseBills 主表信息
|
|
|
+ * @param fees 仓储费信息
|
|
|
+ */
|
|
|
+ private void storageFeeUpdateItem(TWarehouseBills warehouseBills, TWarehousebillsfees fees) {
|
|
|
+ Date chargeDate = DateUtils.addDays(fees.getfBillingDeadline(), 1);
|
|
|
+ // 如果是库存总帐
|
|
|
+ if (WarehouseTypeEnum.KCZZ.getType().equals(fees.getfBilltype())) {
|
|
|
+ TWhgenleg whgenleg = new TWhgenleg();
|
|
|
+ whgenleg.setfId(fees.getSrcId());
|
|
|
+ whgenleg.setfChargedate(chargeDate);
|
|
|
+ tWhgenlegMapper.updateTWhgenleg(whgenleg);
|
|
|
+ // 如果计算之前信息
|
|
|
+ if (!fees.getfBillingDeadline().after(warehouseBills.getUpdateTime())) {
|
|
|
+ // 查询时间区间内的仓储业务明细信息
|
|
|
+ List<String> timeList = new ArrayList<>();
|
|
|
+ timeList.add(DateUtils.dateToString(DateUtils.dateConversionMin(fees.getfBillingDeadline())));
|
|
|
+ timeList.add(DateUtils.dateToString(DateUtils.dateConversionMax(warehouseBills.getUpdateTime())));
|
|
|
+ warehouseBills.setItemBsDateList(timeList);
|
|
|
+ List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectListByCorpId(warehouseBills);
|
|
|
+ // 过滤出出库、货转,更新对应仓储费计费日期
|
|
|
+ List<TWarehousebillsitems> itemList = warehousebillsitemsList.stream().filter(li ->
|
|
|
+ li.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType()) ||
|
|
|
+ li.getfBilltype().equals(WarehouseTypeEnum.HQZY.getType())).collect(toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(itemList)) {
|
|
|
+ itemList.forEach(li -> {
|
|
|
+ li.setfChargedate(chargeDate);
|
|
|
+ li.setUpdateTime(new Date());
|
|
|
+ tWarehousebillsitemsMapper.updateTWarehousebillsitems(li);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ TWarehousebillsitems billsItem = new TWarehousebillsitems();
|
|
|
+ billsItem.setfId(fees.getSrcId());
|
|
|
+ billsItem.setfChargedate(chargeDate);
|
|
|
+ if ("SJCK".equals(fees.getfBilltype())) {
|
|
|
+ billsItem.setfStorageFeeDeadline(fees.getfBillingDeadline());
|
|
|
+ billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.CALCULATE.getType());
|
|
|
+ }
|
|
|
+ tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public AjaxResult insertStorageFeeList(List<StorageChargeInsert> storageChargeInsert, LoginUser loginUser, String billsType) {
|
|
|
if (CollectionUtils.isEmpty(storageChargeInsert)) {
|
|
@@ -5023,13 +5042,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
}
|
|
|
return approvalFlow;
|
|
|
} else {
|
|
|
- AjaxResult ajaxResult = storageFeeFollow(fPid, 6L);
|
|
|
- String code = ajaxResult.get("code").toString();
|
|
|
-// Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
|
|
|
- if ("500".equals(code)) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- }
|
|
|
- return ajaxResult;
|
|
|
+ approvedStorageFee(fPid, 6L, new Date());
|
|
|
+ return AjaxResult.success();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -7109,6 +7123,38 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 货转根据提单号查询可用客户、仓库信息
|
|
|
+ *
|
|
|
+ * @param fMblno 提单号
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult corpOrWarehouseByMblno(String fMblno) {
|
|
|
+ WarehouseBillsVO billsVO = new WarehouseBillsVO();
|
|
|
+ // 查询符合条件的库存总帐
|
|
|
+ TWhgenleg tWhgenleg = new TWhgenleg();
|
|
|
+ tWhgenleg.setfMblno(fMblno);
|
|
|
+ List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectTWhgenlegList(tWhgenleg);
|
|
|
+ if (CollectionUtils.isNotEmpty(tWhgenlegs)) {
|
|
|
+ // 查询仓库信息
|
|
|
+ List<Long> warehouseIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfWarehouseid())).map(TWhgenleg::getfWarehouseid)
|
|
|
+ .distinct().collect(toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(warehouseIds)) {
|
|
|
+ List<TWarehouse> warehouseList = tWarehouseMapper.selectByIds(warehouseIds);
|
|
|
+ billsVO.setWarehouseList(warehouseList);
|
|
|
+ }
|
|
|
+ // 查询客户
|
|
|
+ List<Long> corpIds = tWhgenlegs.stream().filter(leg -> Objects.nonNull(leg.getfCorpid())).map(TWhgenleg::getfCorpid)
|
|
|
+ .distinct().collect(toList());
|
|
|
+ if (CollectionUtils.isNotEmpty(corpIds)) {
|
|
|
+ List<TCorps> corpsList = tCorpsMapper.selectByIds(corpIds);
|
|
|
+ billsVO.setCorpsList(corpsList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return AjaxResult.success(billsVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 如果是入库
|
|
|
*
|
|
|
* @param infoVO
|