|
@@ -4,10 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.fjhx.common.entity.InOutBo;
|
|
|
import com.fjhx.common.enums.InOutType;
|
|
|
+import com.fjhx.common.utils.Assert;
|
|
|
import com.fjhx.item.entity.product.po.ProductClassify;
|
|
|
import com.fjhx.item.entity.product.po.ProductInfo;
|
|
|
import com.fjhx.item.entity.product.po.ProductStockInfo;
|
|
@@ -162,12 +164,17 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
|
|
|
//创建出入库记录
|
|
|
StockJournal stockJournal = new StockJournal();
|
|
|
+ stockJournal.setId(IdWorker.getId());
|
|
|
stockJournal.setOpType(inOutType == InOutType.IN ? 1 : 2);
|
|
|
stockJournal.setType(journalType.getDetailType());
|
|
|
stockJournal.setCode(stockDto.getType() == 1 ? CodeEnum.SIN_CODE.getCode() : CodeEnum.SOUT_CODE.getCode());
|
|
|
stockJournal.setWarehouseId(warehouseId);
|
|
|
stockJournal.setBusinessId(stockDto.getBusinessId());
|
|
|
stockJournal.setCompanyId(companyId);
|
|
|
+ stockJournal.setRemarks(stockDto.getRemarks());
|
|
|
+ stockJournal.setExWarehousePerson(stockDto.getExWarehousePerson());
|
|
|
+ //赋值流水信息
|
|
|
+ editStockJournalInfo(stockDto, stockJournal);
|
|
|
//保存出入库记录
|
|
|
stockJournalService.save(stockJournal);
|
|
|
List<Stock> list = stockDto.getList();
|
|
@@ -194,6 +201,55 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
productInfoService.editAvailableQuantity(inOutBoList, inOutType, null, productAvailableRecordType, SecurityUtils.getCompanyId());
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 手动出入库参数校验赋值
|
|
|
+ */
|
|
|
+ private void editStockJournalInfo(StockDto stockDto, StockJournal stockJournal) {
|
|
|
+ JournalType byDetailType = JournalType.getByDetailType(stockDto.getType());
|
|
|
+ //赋值生产订单id以及销售订单id
|
|
|
+ boolean equals1 = JournalType.PROD_PROOFING_OUT.equals(byDetailType);//生产打样
|
|
|
+ boolean equals2 = JournalType.PROD_EXCEED_OUT.equals(byDetailType);//生产超领
|
|
|
+ boolean equals3 = JournalType.MATERIAL_RETURN_IN.equals(byDetailType);//退料入库
|
|
|
+ boolean equals4 = JournalType.DISCARD_MATERIAL_IN.equals(byDetailType);//废料入库
|
|
|
+ boolean equals5 = JournalType.SALE_OUT.equals(byDetailType);//销售出库
|
|
|
+ //生产打样,生产超领,退料入库,废料入库
|
|
|
+ if (equals1 || equals2 || equals3 || equals4 || equals5) {
|
|
|
+ Long prodOrderId = stockDto.getProdOrderId();
|
|
|
+ Assert.notEmpty(prodOrderId, "生产订单id不能为空");
|
|
|
+ stockJournal.setProdOrderId(prodOrderId);
|
|
|
+ }
|
|
|
+ //借用出库
|
|
|
+ if (JournalType.BORROW_OUT.equals(byDetailType)) {
|
|
|
+ Date expectRestitutionTime = stockDto.getExpectRestitutionTime();
|
|
|
+ Assert.notEmpty(expectRestitutionTime, "预计归还时间不能为空");
|
|
|
+ stockJournal.setExpectRestitutionTime(expectRestitutionTime);
|
|
|
+ }
|
|
|
+ //归还入库
|
|
|
+ if (JournalType.RESTITUTION_IN.equals(byDetailType)) {
|
|
|
+ Long borrowId = stockDto.getBorrowId();
|
|
|
+ Assert.notEmpty(borrowId, "借用id不能为空");
|
|
|
+ StockJournal borrowJournal = stockJournalService.getById(borrowId);
|
|
|
+ Assert.notEmpty(borrowJournal, "查询不到借用信息");
|
|
|
+ //赋值归还id
|
|
|
+ borrowJournal.setRestitutionId(stockJournal.getId());
|
|
|
+ borrowJournal.setRestitutionTime(new Date());
|
|
|
+ stockJournalService.updateById(borrowJournal);
|
|
|
+ //赋值借用id
|
|
|
+ stockJournal.setBorrowId(borrowId);
|
|
|
+ }
|
|
|
+ //丢件寻回
|
|
|
+ if (JournalType.LOSE_IN.equals(byDetailType)) {
|
|
|
+ Long loseId = stockDto.getLoseId();
|
|
|
+ Assert.notEmpty(loseId, "丢件id不能为空");
|
|
|
+ StockJournal loseIdJournal = stockJournalService.getById(loseId);
|
|
|
+ Assert.notEmpty(loseIdJournal, "查询不到丢件信息");
|
|
|
+ //赋值寻回Id
|
|
|
+ loseIdJournal.setSeekId(stockJournal.getId());
|
|
|
+ //赋值丢件id
|
|
|
+ stockJournal.setLoseId(loseId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@DSTransactional
|
|
|
public void edit(StockDto stockDto) {
|
|
@@ -269,7 +325,8 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
|
|
|
* 计算结存单价(在操作库存之前计算)
|
|
|
*/
|
|
|
@Override
|
|
|
- public synchronized StockJournalDetails calculateUnitPrice(InOutType inOutType, Long productId, Long warehouseId, BigDecimal inOutQuantity, Integer purchaseArrival, BigDecimal price) {
|
|
|
+ public synchronized StockJournalDetails calculateUnitPrice(InOutType inOutType, Long productId, Long
|
|
|
+ warehouseId, BigDecimal inOutQuantity, Integer purchaseArrival, BigDecimal price) {
|
|
|
Warehouse warehouse = warehouseService.getById(warehouseId);
|
|
|
if (ObjectUtil.isEmpty(warehouse)) {
|
|
|
throw new ServiceException("查询不到仓库信息");
|