|
@@ -7,11 +7,15 @@ import cn.hutool.core.util.StrUtil;
|
|
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;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.fjhx.item.service.product.ProductInfoService;
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdOrderSelectDto;
|
|
|
|
+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.mapper.jd.JdOrderDetailsMapper;
|
|
import com.fjhx.victoriatourist.mapper.jd.JdOrderDetailsMapper;
|
|
|
|
+import com.fjhx.victoriatourist.mapper.jd.JdOrderMapper;
|
|
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.constants.RunParamConstant;
|
|
import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
|
|
import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
import com.fjhx.wms.entity.stock.emums.JournalType;
|
|
import com.fjhx.wms.entity.stock.po.Stock;
|
|
import com.fjhx.wms.entity.stock.po.Stock;
|
|
@@ -21,6 +25,7 @@ import com.fjhx.wms.service.stock.StockJournalDetailsService;
|
|
import com.fjhx.wms.service.stock.StockJournalService;
|
|
import com.fjhx.wms.service.stock.StockJournalService;
|
|
import com.fjhx.wms.service.stock.StockService;
|
|
import com.fjhx.wms.service.stock.StockService;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
@@ -46,6 +51,10 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
private StockJournalService stockJournalService;
|
|
private StockJournalService stockJournalService;
|
|
@Resource
|
|
@Resource
|
|
private StockJournalDetailsService stockJournalDetailsService;
|
|
private StockJournalDetailsService stockJournalDetailsService;
|
|
|
|
+ @Resource
|
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
|
+ @Resource
|
|
|
|
+ private JdOrderMapper jdOrderMapper;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<JdOrderDetailsVo> findListByJdOrderId(Long jdOrderId) {
|
|
public List<JdOrderDetailsVo> findListByJdOrderId(Long jdOrderId) {
|
|
@@ -65,6 +74,13 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
List<JdOrderDetails> records = page.getRecords();
|
|
List<JdOrderDetails> records = page.getRecords();
|
|
List<JdOrderDetailsVo> voList = BeanUtil.copyToList(records, JdOrderDetailsVo.class);
|
|
List<JdOrderDetailsVo> voList = BeanUtil.copyToList(records, JdOrderDetailsVo.class);
|
|
Page<JdOrderDetailsVo> voPage = BeanUtil.copyProperties(page, Page.class);
|
|
Page<JdOrderDetailsVo> voPage = BeanUtil.copyProperties(page, Page.class);
|
|
|
|
+
|
|
|
|
+ productInfoService.attributeAssign(voList, JdOrderDetails::getProductId, (item, product) -> {
|
|
|
|
+ item.setProductCode(product.getCode());
|
|
|
|
+ item.setProductName(product.getName());
|
|
|
|
+ item.setProductCustomCode(product.getCustomCode());
|
|
|
|
+ });
|
|
|
|
+
|
|
voPage.setRecords(voList);
|
|
voPage.setRecords(voList);
|
|
|
|
|
|
return voPage;
|
|
return voPage;
|
|
@@ -77,22 +93,60 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
if (ObjectUtil.isNull(byId)){
|
|
if (ObjectUtil.isNull(byId)){
|
|
throw new RuntimeException("数据不存在");
|
|
throw new RuntimeException("数据不存在");
|
|
}
|
|
}
|
|
- byId.setExHandle(vo.getExHandle());
|
|
|
|
|
|
+ byId.setHasEx(RunParamConstant.NO_EXCEPTION);
|
|
byId.setHandleStatus(RunParamConstant.EXCEPTION_STATE_TREATED);
|
|
byId.setHandleStatus(RunParamConstant.EXCEPTION_STATE_TREATED);
|
|
|
|
+ byId.setExHandle(vo.getExHandle());
|
|
byId.setHandleTime(new Date());
|
|
byId.setHandleTime(new Date());
|
|
Long userId = SecurityUtils.getUserId();
|
|
Long userId = SecurityUtils.getUserId();
|
|
byId.setHandleUser(userId);
|
|
byId.setHandleUser(userId);
|
|
-
|
|
|
|
|
|
+ //对应处理异常详细方法
|
|
switch (vo.getExHandle()){
|
|
switch (vo.getExHandle()){
|
|
- case RunParamConstant.SHORTAGE_DAMAGE+","+RunParamConstant.SHORTAGE_CLAIM:
|
|
|
|
|
|
+ case RunParamConstant.MULTI_CARGO_REDUCE_STOCK:
|
|
|
|
+ //弹窗提示,出库,减少库存
|
|
|
|
+ reduceStock(vo);
|
|
|
|
+ break;
|
|
|
|
+ case RunParamConstant.SHIPPED_DAMAGE:
|
|
|
|
+ case RunParamConstant.SHIPPED_CLAIM:
|
|
|
|
+ case RunParamConstant.BARCODE_ERROR_DAMAGE:
|
|
fillRemark(vo, byId);
|
|
fillRemark(vo, byId);
|
|
break;
|
|
break;
|
|
|
|
+ case RunParamConstant.SHIPPED_NOT_REDUCE_STOCK:
|
|
|
|
+ case RunParamConstant.BARCODE_ERROR_NOT_RETURN:
|
|
|
|
+ //仅弹窗提醒与修改状态,不做其他操作,修改状态在上面已经统一处理,预留位置。
|
|
|
|
+ break;
|
|
|
|
+ case RunParamConstant.SHORTAGE_RETURN:
|
|
|
|
+ //选择仓库,增加库存
|
|
|
|
+ addStock(vo);
|
|
|
|
+ break;
|
|
|
|
+ case RunParamConstant.EXCESS_RETURN:
|
|
|
|
+ case RunParamConstant.BARCODE_ERROR_RETURN:
|
|
|
|
+ fillExpressNoAndAddStock(vo, byId);
|
|
|
|
+ break;
|
|
|
|
+ case RunParamConstant.EXCESS_NOT_RETURN:
|
|
|
|
+ //增减库存
|
|
|
|
+ addAndReduceStock(vo);
|
|
|
|
+ break;
|
|
|
|
+ case RunParamConstant.EXCESS_DAMAGE:
|
|
|
|
+ //填备注增减库存
|
|
|
|
+ fillRemarkAndAddReduceStock(vo, byId);
|
|
|
|
+ break;
|
|
default:
|
|
default:
|
|
throw new RuntimeException("异常处理状态异常");
|
|
throw new RuntimeException("异常处理状态异常");
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
updateById(byId);
|
|
updateById(byId);
|
|
|
|
+
|
|
|
|
+ //判断当前采购单下所有明细是不是都已经无异常,如果是,修改采购单异常状态为无异常
|
|
|
|
+ List<JdOrderDetails> list = lambdaQuery().eq(JdOrderDetails::getJdOrderId, byId.getJdOrderId()).list();
|
|
|
|
+ if(CollectionUtil.isEmpty(list)){
|
|
|
|
+ throw new RuntimeException("采购单明细不存在");
|
|
|
|
+ }
|
|
|
|
+ boolean allMatch = list.stream().allMatch(jdOrderDetails -> StrUtil.equals(jdOrderDetails.getHasEx(), RunParamConstant.NO_EXCEPTION));
|
|
|
|
+ if(allMatch){
|
|
|
|
+ //修改采购单状态为已处理
|
|
|
|
+ JdOrder jdOrder = jdOrderMapper.selectById(byId.getJdOrderId());
|
|
|
|
+ jdOrder.setHasEx(RunParamConstant.NO_EXCEPTION);
|
|
|
|
+ jdOrderMapper.updateById(jdOrder);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -110,26 +164,48 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 填写快递单号
|
|
|
|
|
|
+ * 填写快递单号并增加库存
|
|
* @author hj
|
|
* @author hj
|
|
* @date 2024/1/15 22:42
|
|
* @date 2024/1/15 22:42
|
|
*/
|
|
*/
|
|
- private void fillExpressNo(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
|
|
|
|
|
|
+ private void fillExpressNoAndAddStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
|
|
String expressNo = vo.getExpressNo();
|
|
String expressNo = vo.getExpressNo();
|
|
if (StrUtil.isBlank(expressNo)) {
|
|
if (StrUtil.isBlank(expressNo)) {
|
|
throw new RuntimeException("快递单号不能为空");
|
|
throw new RuntimeException("快递单号不能为空");
|
|
}
|
|
}
|
|
jdOrderDetails.setExpressNo(expressNo);
|
|
jdOrderDetails.setExpressNo(expressNo);
|
|
|
|
+ addStock(vo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 增减库存
|
|
|
|
+ * @author hj
|
|
|
|
+ * @date 2024/1/15 22:42
|
|
|
|
+ */
|
|
|
|
+ private void addAndReduceStock(JdOrderDetailsVo vo) {
|
|
|
|
+ addStock(vo);
|
|
|
|
+ reduceStock(vo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 填备注增减库存
|
|
|
|
+ * @author hj
|
|
|
|
+ * @date 2024/1/15 22:42
|
|
|
|
+ */
|
|
|
|
+ private void fillRemarkAndAddReduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
|
|
|
|
+ fillRemark(vo, jdOrderDetails);
|
|
|
|
+ addStock(vo);
|
|
|
|
+ reduceStock(vo);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 增加库存
|
|
* 增加库存
|
|
* @param vo
|
|
* @param vo
|
|
- * @param jdOrderDetails
|
|
|
|
*/
|
|
*/
|
|
- private void addStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
|
|
|
|
|
|
+ private void addStock(JdOrderDetailsVo vo) {
|
|
//操作库存及记录
|
|
//操作库存及记录
|
|
- operateStock(vo.getWarehouseId(), RunParamConstant.INBOUND, jdOrderDetails.getQuantity());
|
|
|
|
|
|
+ operateStock(vo.getAddWarehouseId(), RunParamConstant.INBOUND, vo.getAddQuantity());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -137,9 +213,9 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
* @author hj
|
|
* @author hj
|
|
* @date 2024/1/15 22:44
|
|
* @date 2024/1/15 22:44
|
|
*/
|
|
*/
|
|
- private void reduceStock(JdOrderDetailsVo vo, JdOrderDetails jdOrderDetails) {
|
|
|
|
|
|
+ private void reduceStock(JdOrderDetailsVo vo) {
|
|
//操作库存及记录
|
|
//操作库存及记录
|
|
- operateStock(vo.getWarehouseId(), RunParamConstant.OUTBOUND, jdOrderDetails.getQuantity());
|
|
|
|
|
|
+ operateStock(vo.getReduceWarehouseId(), RunParamConstant.OUTBOUND, vo.getReduceQuantity());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -151,6 +227,10 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
* @param quantity 操作数量
|
|
* @param quantity 操作数量
|
|
*/
|
|
*/
|
|
private void operateStock(Long warehouseId, int type, BigDecimal quantity) {
|
|
private void operateStock(Long warehouseId, int type, BigDecimal quantity) {
|
|
|
|
+ if (ObjectUtil.isNull(warehouseId) || quantity.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
|
+ throw new RuntimeException("参数错误");
|
|
|
|
+ }
|
|
|
|
+
|
|
//要操作的数据
|
|
//要操作的数据
|
|
List<Stock> stockList = new ArrayList<>();
|
|
List<Stock> stockList = new ArrayList<>();
|
|
Stock stock = new Stock();
|
|
Stock stock = new Stock();
|
|
@@ -159,7 +239,7 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
stockList.add(stock);
|
|
stockList.add(stock);
|
|
|
|
|
|
//操作库存
|
|
//操作库存
|
|
-// stockService.ModifyInventory(type, stockList, warehouseId);
|
|
|
|
|
|
+ stockService.ModifyInventory(type, stockList, warehouseId);
|
|
|
|
|
|
//创建出入库记录
|
|
//创建出入库记录
|
|
StockJournal stockJournal = new StockJournal();
|
|
StockJournal stockJournal = new StockJournal();
|
|
@@ -178,7 +258,6 @@ public class JdOrderDetailsServiceImpl extends ServiceImpl<JdOrderDetailsMapper,
|
|
stockJournalDetails.setBusinessDetailsId(1L);//业务明细id
|
|
stockJournalDetails.setBusinessDetailsId(1L);//业务明细id
|
|
stockJournalDetails.setQuantity(BigDecimal.ZERO);//操作数量;
|
|
stockJournalDetails.setQuantity(BigDecimal.ZERO);//操作数量;
|
|
stockJournalDetails.setProductId(1L);//操作产品id
|
|
stockJournalDetails.setProductId(1L);//操作产品id
|
|
- stockJournalDetails.setStockJournalId(stockJournal.getId());//流水主表id
|
|
|
|
stockJournalDetailsList.add(stockJournalDetails);
|
|
stockJournalDetailsList.add(stockJournalDetails);
|
|
stockJournalDetailsService.saveBatch(stockJournalDetailsList);
|
|
stockJournalDetailsService.saveBatch(stockJournalDetailsList);
|
|
}
|
|
}
|