|
@@ -1,6 +1,7 @@
|
|
package com.fjhx.victoriatourist.service.jd.impl;
|
|
package com.fjhx.victoriatourist.service.jd.impl;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -10,6 +11,7 @@ import com.fjhx.customer.service.customer.CustomerService;
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
import com.fjhx.item.service.product.ProductInfoService;
|
|
import com.fjhx.item.util.excel.util.ExcelUtil;
|
|
import com.fjhx.item.util.excel.util.ExcelUtil;
|
|
|
|
+import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
|
|
import com.fjhx.victoriatourist.entity.jd.bo.JdOrderExcelImportBo;
|
|
import com.fjhx.victoriatourist.entity.jd.bo.JdOrderExcelImportBo;
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
|
|
@@ -17,28 +19,31 @@ import com.fjhx.victoriatourist.entity.jd.po.JdOrder;
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
|
|
import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
|
|
import com.fjhx.victoriatourist.entity.jd.vo.JdOrderDetailsVo;
|
|
import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
|
|
import com.fjhx.victoriatourist.entity.jd.vo.JdOrderVo;
|
|
|
|
+import com.fjhx.victoriatourist.entity.stock.dto.StockTransferDto;
|
|
import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
|
|
import com.fjhx.victoriatourist.entity.stock.po.StockTransfer;
|
|
import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
|
|
import com.fjhx.victoriatourist.entity.stock.po.StockTransferDetails;
|
|
import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
|
|
import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
|
|
|
|
+import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
|
|
import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
|
|
import com.fjhx.victoriatourist.service.jd.JdOrderDetailsService;
|
|
import com.fjhx.victoriatourist.service.jd.JdOrderService;
|
|
import com.fjhx.victoriatourist.service.jd.JdOrderService;
|
|
import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
|
|
import com.fjhx.victoriatourist.service.stock.StockTransferDetailsService;
|
|
import com.fjhx.victoriatourist.service.stock.StockTransferService;
|
|
import com.fjhx.victoriatourist.service.stock.StockTransferService;
|
|
|
|
+import com.fjhx.victoriatourist.utils.CodeEnum;
|
|
|
|
+import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
import com.fjhx.wms.entity.stock.emums.StockWaitType;
|
|
import com.fjhx.wms.entity.stock.emums.StockWaitType;
|
|
-import com.fjhx.wms.entity.stock.po.StockWait;
|
|
|
|
-import com.fjhx.wms.entity.stock.po.StockWaitDetails;
|
|
|
|
-import com.fjhx.wms.service.stock.StockWaitDetailsService;
|
|
|
|
-import com.fjhx.wms.service.stock.StockWaitService;
|
|
|
|
|
|
+import com.fjhx.wms.entity.stock.po.*;
|
|
|
|
+import com.fjhx.wms.service.stock.*;
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
import com.ruoyi.common.core.domain.BaseIdPo;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
|
+import com.ruoyi.system.utils.UserUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
-import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
+import java.util.function.Function;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@@ -70,6 +75,15 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
@Autowired
|
|
@Autowired
|
|
StockWaitDetailsService stockWaitDetailsService;
|
|
StockWaitDetailsService stockWaitDetailsService;
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ AbnormalInfoService abnormalInfoService;
|
|
|
|
+ @Autowired
|
|
|
|
+ StockJournalService stockJournalService;
|
|
|
|
+ @Autowired
|
|
|
|
+ StockJournalDetailsService stockJournalDetailsService;
|
|
|
|
+ @Autowired
|
|
|
|
+ StockService stockService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public Page<JdOrderVo> getPage(JdOrderSelectDto dto) {
|
|
public Page<JdOrderVo> getPage(JdOrderSelectDto dto) {
|
|
IWrapper<JdOrder> wrapper = getWrapper();
|
|
IWrapper<JdOrder> wrapper = getWrapper();
|
|
@@ -109,7 +123,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
|
+ @DSTransactional
|
|
@Override
|
|
@Override
|
|
public void add(JdOrderDto jdOrderDto) {
|
|
public void add(JdOrderDto jdOrderDto) {
|
|
|
|
|
|
@@ -246,7 +260,7 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
stockWaitDetailsService.saveBatch(stockWaitDetailsList);
|
|
stockWaitDetailsService.saveBatch(stockWaitDetailsList);
|
|
}
|
|
}
|
|
|
|
|
|
- @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
|
+ @DSTransactional
|
|
@Override
|
|
@Override
|
|
public void outbound(JdOrderDto jdOrderDto) {
|
|
public void outbound(JdOrderDto jdOrderDto) {
|
|
//修改待出库状态
|
|
//修改待出库状态
|
|
@@ -281,4 +295,102 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
|
|
stockTransferDetailsService.saveBatch(stockTransferDetailsList);
|
|
stockTransferDetailsService.saveBatch(stockTransferDetailsList);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public Page<JdOrderVo> receivePage(JdOrderSelectDto dto) {
|
|
|
|
+ IWrapper<JdOrder> wrapper = getWrapper();
|
|
|
|
+ wrapper.eq("st.in_status", dto.getInStatus());
|
|
|
|
+ Page<JdOrderVo> page = this.baseMapper.getReceivePage(dto.getPage(), wrapper);
|
|
|
|
+ List<JdOrderVo> records = page.getRecords();
|
|
|
|
+ // 赋值国省市
|
|
|
|
+ AreaUtil.setAreaName(records);
|
|
|
|
+ //赋值接收人名字
|
|
|
|
+ UserUtil.assignmentNickName(records, JdOrderVo::getInUserId, JdOrderVo::setInUserName);
|
|
|
|
+ // 赋值客户名称
|
|
|
|
+ customerService.attributeAssign(records, JdOrderVo::getCustomerId, (item, customer) -> {
|
|
|
|
+ item.setCustomerName(customer.getName());
|
|
|
|
+ });
|
|
|
|
+ return page;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DSTransactional
|
|
|
|
+ @Override
|
|
|
|
+ public void receive(StockTransferDto stockTransferDto) {
|
|
|
|
+ StockTransfer stockTransfer = stockTransferService.getById(stockTransferDto.getId());
|
|
|
|
+ //明细
|
|
|
|
+ List<Stock> stockList = new ArrayList<>();
|
|
|
|
+ List<StockTransferDetails> stockTransferDetailsList = stockTransferDto.getStockTransferDetailsList();
|
|
|
|
+ if(ObjectUtil.isNotEmpty(stockTransferDetailsList)) {
|
|
|
|
+ stockTransferDetailsService.updateBatchById(stockTransferDetailsList);
|
|
|
|
+ //获取数据库中的数据
|
|
|
|
+ List<Long> ids = stockTransferDetailsList.stream().map(StockTransferDetails::getId).collect(Collectors.toList());
|
|
|
|
+ List<StockTransferDetails> oldstockTransferDetailsList = stockTransferDetailsService.listByIds(ids);
|
|
|
|
+ Map<Long, StockTransferDetails> oldstockTransferDetailsMap = oldstockTransferDetailsList.stream().collect(Collectors.toMap(StockTransferDetails::getId, Function.identity()));
|
|
|
|
+
|
|
|
|
+ Integer abnormalFlag = 0;
|
|
|
|
+ for (StockTransferDetails stockTransferDetails : stockTransferDetailsList) {
|
|
|
|
+ Stock stock = new Stock();
|
|
|
|
+ stock.setProductId(stockTransferDetails.getProductId());
|
|
|
|
+ stock.setQuantity(stockTransferDetails.getInQuantity());
|
|
|
|
+ stockList.add(stock);
|
|
|
|
+
|
|
|
|
+ //调仓接收数量与发出数量不一致
|
|
|
|
+ StockTransferDetails oldstockTransferDetails = oldstockTransferDetailsMap.get(stockTransferDetails.getId());
|
|
|
|
+ if (stockTransferDetails.getInQuantity() != oldstockTransferDetails.getOutQuantity()) {
|
|
|
|
+ abnormalFlag =1;
|
|
|
|
+ stockTransfer.setInStatus(1);//设置为部分接收
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(abnormalFlag ==1){
|
|
|
|
+ AbnormalInfo abnormalInfo = new AbnormalInfo();
|
|
|
|
+ abnormalInfo.setId(IdWorker.getId());
|
|
|
|
+ abnormalInfo.setType(30);
|
|
|
|
+ abnormalInfo.setLinkId(stockTransfer.getId());
|
|
|
|
+ abnormalInfo.setTitle("调仓接收数量与发出数量不一致");
|
|
|
|
+ abnormalInfoService.save(abnormalInfo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //修改调仓状态
|
|
|
|
+ stockTransfer.setInStatus(2);//修改为已接收
|
|
|
|
+ List<StockTransferDetails> stockTransferDetails = stockTransferDetailsService.list(q -> q.eq(StockTransferDetails::getStockTransferId, stockTransfer.getId()));
|
|
|
|
+ for (StockTransferDetails stockTransferDetail : stockTransferDetails) {
|
|
|
|
+ if(stockTransferDetail.getOutQuantity().compareTo(stockTransferDetail.getInQuantity())!=0){
|
|
|
|
+ stockTransfer.setInStatus(1);//部分接收
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ stockTransferService.updateById(stockTransfer);
|
|
|
|
+ //创建入库记录
|
|
|
|
+ StockJournal stockJournal = new StockJournal();
|
|
|
|
+ stockJournal.setOpType(1);
|
|
|
|
+ stockJournal.setType(JournalType.ADJUSTING_IN.getDetailType());
|
|
|
|
+ stockJournal.setCode(CodeEnum.STOCK_TRANSFER.getCode());
|
|
|
|
+ stockJournal.setWarehouseId(stockTransfer.getOutWarehouseId());
|
|
|
|
+ stockJournal.setToWarehouseId(stockTransfer.getInWarehouseId());
|
|
|
|
+ stockJournal.setBusinessId(stockTransfer.getId());
|
|
|
|
+ //保存人库记录
|
|
|
|
+ stockJournalService.save(stockJournal);
|
|
|
|
+
|
|
|
|
+ //创建出库记录
|
|
|
|
+ StockJournal stockJournal1 = new StockJournal();
|
|
|
|
+ stockJournal1.setOpType(2);
|
|
|
|
+ stockJournal1.setType(JournalType.ADJUSTING_OUT.getDetailType());
|
|
|
|
+ stockJournal1.setCode(CodeEnum.STOCK_TRANSFER.getCode());
|
|
|
|
+ stockJournal1.setWarehouseId(stockTransfer.getOutWarehouseId());
|
|
|
|
+ stockJournal1.setToWarehouseId(stockTransfer.getInWarehouseId());
|
|
|
|
+ stockJournal1.setBusinessId(stockTransfer.getId());
|
|
|
|
+ //保存出库记录
|
|
|
|
+ stockJournalService.save(stockJournal1);
|
|
|
|
+ if(ObjectUtil.isNotEmpty(stockList)) {
|
|
|
|
+ //出库
|
|
|
|
+ List<StockJournalDetails> stockJournalDetailsList1 = stockService.ModifyInventory(stockJournal1.getId(), 2, stockList, stockTransfer.getOutWarehouseId());
|
|
|
|
+ //入库
|
|
|
|
+ List<StockJournalDetails> stockJournalDetailsList = stockService.ModifyInventory(stockJournal.getId(), 1, stockList, stockTransfer.getInWarehouseId());
|
|
|
|
+ //保存出入库记录明细
|
|
|
|
+ stockJournalDetailsService.saveBatch(stockJournalDetailsList);
|
|
|
|
+ stockJournalDetailsService.saveBatch(stockJournalDetailsList1);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|