|
@@ -1,17 +1,27 @@
|
|
|
package com.fjhx.service.stock.impl;
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.base.Condition;
|
|
|
+import com.fjhx.constants.StatusConstant;
|
|
|
+import com.fjhx.constants.StockJournalTypeConstant;
|
|
|
import com.fjhx.entity.stock.StockJournal;
|
|
|
+import com.fjhx.enums.stock.InTypeEnum;
|
|
|
+import com.fjhx.enums.stock.OutTypeEnum;
|
|
|
import com.fjhx.mapper.stock.StockJournalMapper;
|
|
|
+import com.fjhx.params.stock.StockChangeVo;
|
|
|
import com.fjhx.params.stock.StockJournalVo;
|
|
|
import com.fjhx.service.stock.StockJournalService;
|
|
|
+import com.fjhx.uitl.code.CodeEnum;
|
|
|
import com.fjhx.utils.UserClientUtil;
|
|
|
import com.fjhx.utils.wrapperUtil.IWrapper;
|
|
|
import org.springblade.core.tool.utils.Func;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
@@ -66,17 +76,107 @@ public class StockJournalServiceImpl extends ServiceImpl<StockJournalMapper, Sto
|
|
|
removeById(stockJournalVo.getId());
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public void add(Integer type, Integer detailsType, Long goodsId, Long warehouseId, BigDecimal changeQuantity, String remarks) {
|
|
|
- StockJournal stockJournal = new StockJournal();
|
|
|
- stockJournal.setType(type);
|
|
|
- stockJournal.setDetailsType(detailsType);
|
|
|
- stockJournal.setGoodsId(goodsId);
|
|
|
- stockJournal.setWarehouseId(warehouseId);
|
|
|
- stockJournal.setChangeQuantity(changeQuantity);
|
|
|
- stockJournal.setActualQuantity(new BigDecimal(BigDecimal.ZERO.intValue()));
|
|
|
- stockJournal.setRemarks(remarks);
|
|
|
- save(stockJournal);
|
|
|
+ /**
|
|
|
+ * 添加流水记录
|
|
|
+ */
|
|
|
+ public void addJournal(StockChangeVo stockChangeVo) {
|
|
|
+ List<? extends StockChangeVo.ChangeDetails> changeDetailsList = stockChangeVo.getChangeDetailsList();
|
|
|
+ Enum<?> typeEnum = stockChangeVo.getTypeEnum();
|
|
|
+
|
|
|
+ // 添加入库明细
|
|
|
+ List<StockJournal> stockJournalList = new ArrayList<>();
|
|
|
+
|
|
|
+ synchronized (this) {
|
|
|
+
|
|
|
+ String code = null;
|
|
|
+
|
|
|
+ if (typeEnum instanceof InTypeEnum) {
|
|
|
+ switch ((InTypeEnum) typeEnum) {
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ switch ((OutTypeEnum) typeEnum) {
|
|
|
+ case PICKING:
|
|
|
+ case SALE:
|
|
|
+ case RETURN_GOODS:
|
|
|
+ case SCRAP:
|
|
|
+ code = CodeEnum.OUT_JOURNAL.getCode();
|
|
|
+ break;
|
|
|
+ case PURCHASE:
|
|
|
+ code = CodeEnum.S_OUT_JOURNAL.getCode();
|
|
|
+ break;
|
|
|
+ case JD:
|
|
|
+ code = CodeEnum.JD_OUT_JOURNAL.getCode();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for (StockChangeVo.ChangeDetails changeDetails : changeDetailsList) {
|
|
|
+
|
|
|
+ // 变更数量
|
|
|
+ BigDecimal changeQuantity = changeDetails.getChangeQuantity();
|
|
|
+ // 变更数量小于等于0,则跳过
|
|
|
+ if (changeQuantity.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 业务id
|
|
|
+ Long businessId = ObjectUtil.defaultIfNull(changeDetails.getBusinessId(), stockChangeVo.getDefaultBusinessId());
|
|
|
+ // 产品id
|
|
|
+ Long goodsId = changeDetails.getGoodsId();
|
|
|
+ // 仓库id
|
|
|
+ Long warehouseId = ObjectUtil.defaultIfNull(changeDetails.getWarehouseId(), stockChangeVo.getDefaultWarehouseId());
|
|
|
+ // 备注
|
|
|
+ String remarks = ObjectUtil.defaultIfNull(changeDetails.getRemarks(), stockChangeVo.getDefaultRemarks());
|
|
|
+
|
|
|
+ StockJournal stockJournal = new StockJournal();
|
|
|
+
|
|
|
+ if (typeEnum instanceof InTypeEnum) {
|
|
|
+ stockJournal.setType(StockJournalTypeConstant.IN);
|
|
|
+ stockJournal.setDetailsType(((InTypeEnum) typeEnum).getKey());
|
|
|
+ stockJournal.setActualQuantity(BigDecimal.ZERO);
|
|
|
+ stockJournal.setIsInStock(StatusConstant.NO);
|
|
|
+ } else {
|
|
|
+ stockJournal.setType(StockJournalTypeConstant.OUT);
|
|
|
+ stockJournal.setDetailsType(((OutTypeEnum) typeEnum).getKey());
|
|
|
+ }
|
|
|
+
|
|
|
+ stockJournal.setCode(code);
|
|
|
+ stockJournal.setBusinessId(businessId);
|
|
|
+ stockJournal.setGoodsId(goodsId);
|
|
|
+ stockJournal.setWarehouseId(warehouseId);
|
|
|
+ stockJournal.setChangeQuantity(changeQuantity);
|
|
|
+ stockJournal.setRemarks(remarks);
|
|
|
+ stockJournalList.add(stockJournal);
|
|
|
+ }
|
|
|
+
|
|
|
+ saveBatch(stockJournalList);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Page<Map<String, Object>> getManualOutPage(Condition condition) {
|
|
|
+
|
|
|
+ IWrapper<Object> wrapper = IWrapper.getWrapper(condition)
|
|
|
+ .like("sj", StockJournal::getCode)
|
|
|
+ .func(q -> {
|
|
|
+ Integer type = condition.getInt("type");
|
|
|
+ if (ObjectUtil.isEmpty(type)) {
|
|
|
+ q.in("sj", StockJournal::getDetailsType, OutTypeEnum.getHandleOutList());
|
|
|
+ } else {
|
|
|
+ q.eq("sj", StockJournal::getDetailsType, type);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .eq("sj", StockJournal::getWarehouseId)
|
|
|
+ .eq("sj", StockJournal::getCreateUser)
|
|
|
+ .periodTime("sj", StockJournal::getCreateTime);
|
|
|
+
|
|
|
+ Page<Map<String, Object>> manualOutPage = baseMapper.getManualOutPage(condition.getPage(), wrapper);
|
|
|
+ List<Map<String, Object>> records = manualOutPage.getRecords();
|
|
|
+ if (records.size() == 0) {
|
|
|
+ return manualOutPage;
|
|
|
+ }
|
|
|
+ UserClientUtil.setUserName(records, "createUser", "createUserName");
|
|
|
+
|
|
|
+ return manualOutPage;
|
|
|
+ }
|
|
|
}
|