|
@@ -2,15 +2,31 @@ package com.fjhx.victoriatourist.service.jd.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.common.utils.Assert;
|
|
|
+import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
+import com.fjhx.item.service.product.ProductInfoService;
|
|
|
+import com.fjhx.victoriatourist.entity.jd.dto.JdRefundQualityCheckDto;
|
|
|
import com.fjhx.victoriatourist.entity.jd.dto.JdRefundQualityCheckSelectDto;
|
|
|
import com.fjhx.victoriatourist.entity.jd.po.JdRefundQualityCheck;
|
|
|
import com.fjhx.victoriatourist.entity.jd.vo.JdRefundQualityCheckVo;
|
|
|
import com.fjhx.victoriatourist.mapper.jd.JdRefundQualityCheckMapper;
|
|
|
import com.fjhx.victoriatourist.service.jd.JdRefundQualityCheckService;
|
|
|
+import com.fjhx.wms.entity.stock.po.Stock;
|
|
|
+import com.fjhx.wms.service.stock.StockService;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
+import com.ruoyi.common.exception.ServiceException;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+import static com.fjhx.victoriatourist.service.jd.impl.JdRefundServiceImpl.WAREHOUSE_ID;
|
|
|
+import static com.fjhx.victoriatourist.service.jd.impl.JdRefundServiceImpl.getUpdateStockSql;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -23,6 +39,12 @@ import org.springframework.stereotype.Service;
|
|
|
@Service
|
|
|
public class JdRefundQualityCheckServiceImpl extends ServiceImpl<JdRefundQualityCheckMapper, JdRefundQualityCheck> implements JdRefundQualityCheckService {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private ProductInfoService productInfoService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StockService stockService;
|
|
|
+
|
|
|
@Override
|
|
|
public Page<JdRefundQualityCheckVo> getPage(JdRefundQualityCheckSelectDto dto) {
|
|
|
IWrapper<JdRefundQualityCheck> wrapper = getWrapper()
|
|
@@ -32,9 +54,70 @@ public class JdRefundQualityCheckServiceImpl extends ServiceImpl<JdRefundQuality
|
|
|
new SqlField("pi.custom_code"),
|
|
|
new SqlField("su.user_name")
|
|
|
)
|
|
|
+ .in("jrqc", JdRefundQualityCheck::getScrappedHandleStatus, dto.getStatus())
|
|
|
.orderByDesc("jrqc", JdRefundQualityCheck::getId);
|
|
|
Page<JdRefundQualityCheckVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
|
return page;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public synchronized void handle(JdRefundQualityCheckDto dto) {
|
|
|
+ JdRefundQualityCheck jdRefundQualityCheck = getById(dto.getId());
|
|
|
+ Assert.notEmpty(jdRefundQualityCheck, "数据不存在");
|
|
|
+ Assert.eqTrue(jdRefundQualityCheck.getScrappedHandleStatus() == 1, "该记录已处理,请勿重复操作");
|
|
|
+
|
|
|
+ dto.setScrappedToQualifiedCount(ObjectUtils.defaultIfNull(dto.getScrappedToQualifiedCount(), 0));
|
|
|
+ dto.setScrappedToDefectiveCount(ObjectUtils.defaultIfNull(dto.getScrappedToDefectiveCount(), 0));
|
|
|
+ dto.setResultScrappedCount(ObjectUtils.defaultIfNull(dto.getResultScrappedCount(), 0));
|
|
|
+
|
|
|
+ if (jdRefundQualityCheck.getScrappedCount() !=
|
|
|
+ dto.getScrappedToQualifiedCount() + dto.getScrappedToDefectiveCount() + dto.getResultScrappedCount()) {
|
|
|
+
|
|
|
+ Long productId = jdRefundQualityCheck.getProductId();
|
|
|
+ ProductInfo productInfo = productInfoService.getById(productId);
|
|
|
+
|
|
|
+ throw new ServiceException("物品【" + productInfo.getCustomCode() + "】转良品数量+转次品数量+最终报废数量 必须等于 报废数量");
|
|
|
+ }
|
|
|
+
|
|
|
+ update(q -> q.eq(BaseIdPo::getId, dto.getId())
|
|
|
+ .set(JdRefundQualityCheck::getScrappedToQualifiedCount, dto.getScrappedToQualifiedCount())
|
|
|
+ .set(JdRefundQualityCheck::getScrappedToDefectiveCount, dto.getScrappedToDefectiveCount())
|
|
|
+ .set(JdRefundQualityCheck::getResultScrappedCount, dto.getResultScrappedCount())
|
|
|
+ .set(JdRefundQualityCheck::getScrappedHandleStatus, 2)
|
|
|
+ .set(JdRefundQualityCheck::getScrappedHandleTime, new Date())
|
|
|
+ .set(JdRefundQualityCheck::getScrappedHandleUserId, SecurityUtils.getUserId())
|
|
|
+ );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void verify(JdRefundQualityCheckDto dto) {
|
|
|
+ JdRefundQualityCheck jdRefundQualityCheck = getById(dto.getId());
|
|
|
+ Assert.notEmpty(jdRefundQualityCheck, "数据不存在");
|
|
|
+ Assert.eqTrue(jdRefundQualityCheck.getScrappedHandleStatus() == 2, "该记录已处理,请勿重复操作");
|
|
|
+
|
|
|
+ Integer scrappedCount = jdRefundQualityCheck.getScrappedCount();
|
|
|
+ Integer qualifiedCount = jdRefundQualityCheck.getScrappedToQualifiedCount();
|
|
|
+ Integer defectiveCount = jdRefundQualityCheck.getScrappedToDefectiveCount();
|
|
|
+
|
|
|
+ // 修改库存
|
|
|
+ stockService.update(q -> q
|
|
|
+ .eq(Stock::getProductId, jdRefundQualityCheck.getProductId())
|
|
|
+ .eq(Stock::getWarehouseId, WAREHOUSE_ID)
|
|
|
+ // 良品入库
|
|
|
+ .setSql(qualifiedCount > 0, "quantity = quantity + " + qualifiedCount)
|
|
|
+ // 次品入库
|
|
|
+ .setSql(defectiveCount > 0, getUpdateStockSql(3, defectiveCount))
|
|
|
+ // 减少锁定库存
|
|
|
+ .setSql(getUpdateStockSql(2, scrappedCount))
|
|
|
+ );
|
|
|
+
|
|
|
+ update(q -> q.eq(BaseIdPo::getId, dto.getId())
|
|
|
+ .set(JdRefundQualityCheck::getScrappedHandleStatus, 3)
|
|
|
+ .set(JdRefundQualityCheck::getScrappedVerifyTime, new Date())
|
|
|
+ .set(JdRefundQualityCheck::getScrappedVerifyUserId, SecurityUtils.getUserId())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+
|