|
@@ -67,7 +67,7 @@ public class MaterialGoodsStockLogic {
|
|
|
*/
|
|
|
public List<WebsitGoodsCategory> websitGoodsCategoryList(String webistId, String goodsType) {
|
|
|
CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
|
|
|
- List<WebsitGoodsCategory> websitGoodsCategories = materialGoodsStockCMapper.queryWebsitGoodsCategoryList(webistId, currentCompanyWechat.getUser().getWorkerNumber(), goodsType);
|
|
|
+ List<WebsitGoodsCategory> websitGoodsCategories = materialGoodsStockCMapper.queryWebsitGoodsCategoryList(webistId, currentCompanyWechat.getUser(), goodsType);
|
|
|
return websitGoodsCategories;
|
|
|
}
|
|
|
|
|
@@ -83,7 +83,7 @@ public class MaterialGoodsStockLogic {
|
|
|
public IPage<WorkerStockBean> workerStockList(String websitId, String goodsType, String categoryId, Integer pageNum, Integer pageSize) {
|
|
|
CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
|
|
|
IPage<WorkerStockBean> workerStockBeanIPage = materialGoodsStockCMapper
|
|
|
- .queryWorkerStockList(new Page(pageNum, pageSize), websitId, currentCompanyWechat.getUser().getWorkerNumber(), goodsType, categoryId);
|
|
|
+ .queryWorkerStockList(new Page(pageNum, pageSize), websitId, currentCompanyWechat.getUser(), goodsType, categoryId);
|
|
|
|
|
|
return workerStockBeanIPage;
|
|
|
}
|
|
@@ -116,7 +116,7 @@ public class MaterialGoodsStockLogic {
|
|
|
Page page = workerStockAccService.lambdaQuery()
|
|
|
.eq(StringUtils.isNotBlank(websitId), WorkerStockAcc::getWebsitId, websitId)
|
|
|
.eq(StringUtils.isNotBlank(directFlag), WorkerStockAcc::getDirectFlag, directFlag)
|
|
|
- .eq(WorkerStockAcc::getWorkerId, currentCompanyWechat.getUser().getWorkerNumber())
|
|
|
+ .eq(WorkerStockAcc::getIdentity, currentCompanyWechat.getUser().getIdCard())
|
|
|
.eq(WorkerStockAcc::getGoodsId, websitGoodsId)
|
|
|
.between(startTime != null && endTime != null, WorkerStockAcc::getOperTime, startTime, endTime)
|
|
|
.orderByDesc(WorkerStockAcc::getOperTime).page(new Page<>(pageNum, pageSize));
|
|
@@ -140,13 +140,13 @@ public class MaterialGoodsStockLogic {
|
|
|
Integer newRefundCount = websitPartsRetService.lambdaQuery()
|
|
|
.eq(WebsitPartsRet::getType, "NEW")
|
|
|
.eq(WebsitPartsRet::getFlag, "SUBMIT")
|
|
|
- .eq(WebsitPartsRet::getWorkerId, wechat.getUser().getWorkerNumber())
|
|
|
+ .eq(WebsitPartsRet::getIdentity, wechat.getUser().getIdCard())
|
|
|
.eq(WebsitPartsRet::getCompanyWechatId, wechat.getCurrentCompanyWechatId())
|
|
|
.count();
|
|
|
Integer oldRefundCount = websitPartsRetService.lambdaQuery()
|
|
|
.eq(WebsitPartsRet::getType, "OLD")
|
|
|
.eq(WebsitPartsRet::getFlag, "SUBMIT")
|
|
|
- .eq(WebsitPartsRet::getWorkerId, wechat.getUser().getWorkerNumber())
|
|
|
+ .eq(WebsitPartsRet::getIdentity, wechat.getUser().getIdCard())
|
|
|
.eq(WebsitPartsRet::getCompanyWechatId, wechat.getCurrentCompanyWechatId())
|
|
|
.count();
|
|
|
Integer materialSalesCount = websitNormRecordService.query()
|
|
@@ -207,7 +207,7 @@ public class MaterialGoodsStockLogic {
|
|
|
try {
|
|
|
ValidateUtil.validate(websitStockDTO);
|
|
|
if (websitStockDTO.getChangeQty().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
- throw new RuntimeException("变动数量不能少于0");
|
|
|
+ throw new RemoteServiceException("变动数量不能少于0");
|
|
|
}
|
|
|
} catch (ValidationException ve) {
|
|
|
throw new RemoteServiceException("执行数据第" + (i+1) + "行" + ve.getMessage());
|
|
@@ -307,21 +307,22 @@ public class MaterialGoodsStockLogic {
|
|
|
try {
|
|
|
ValidateUtil.validate(workerStockDTO);
|
|
|
if (workerStockDTO.getChangeQty().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
- throw new RuntimeException("变动数量不能少于0");
|
|
|
- }
|
|
|
- if (workerStockDTO.getGoodsType().equals(WebsitGoodsTypeEnum.P.toString()) && StringUtils.isBlank(workerStockDTO.getWorkerId())) {
|
|
|
- throw new RuntimeException("师傅编号不能空");
|
|
|
+ throw new RemoteServiceException("变动数量不能少于0");
|
|
|
}
|
|
|
+// if (workerStockDTO.getGoodsType().equals(WebsitGoodsTypeEnum.P.toString()) && StringUtils.isBlank(workerStockDTO.getWorkerId())) {
|
|
|
+// throw new RemoteServiceException("师傅编号不能空");
|
|
|
+// }
|
|
|
} catch (ValidationException ve) {
|
|
|
throw new RemoteServiceException("第" + (i + 1) + "行" + ve.getMessage());
|
|
|
}
|
|
|
}
|
|
|
// 锁定师傅配件库存
|
|
|
WorkerStockDTO workerStockDTO = stockList.get(0);
|
|
|
- Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.MATERIAL_STOCK_LOCK +
|
|
|
+ String key = Constant.RedisPrefix.MATERIAL_STOCK_LOCK +
|
|
|
workerStockDTO.getCompanyWechatId() + ":" +
|
|
|
- workerStockDTO.getWorkerId() + ":" +
|
|
|
- workerStockDTO.getGoodsType());
|
|
|
+ workerStockDTO.getIdentity() + ":" +
|
|
|
+ workerStockDTO.getGoodsType();
|
|
|
+ Lock obtain = redisLockRegistry.obtain(key);
|
|
|
if (!obtain.tryLock(10, TimeUnit.SECONDS)) {
|
|
|
throw new RemoteServiceException("库存已冻结:" + workerStockDTO.getWorkerName());
|
|
|
}
|
|
@@ -335,8 +336,7 @@ public class MaterialGoodsStockLogic {
|
|
|
|
|
|
private void saveWorkerStock(WorkerStockDTO workerStockDTO, List<WorkerStockDTO> stockList) throws Exception {
|
|
|
// 查询存在的商品库存
|
|
|
- List<WorkerStock> existWorkerStockList = materialGoodsStockCMapper.queryExistWorkerStockList(workerStockDTO.getCompanyWechatId()
|
|
|
- , workerStockDTO.getWorkerId(), stockList);
|
|
|
+ List<WorkerStock> existWorkerStockList = materialGoodsStockCMapper.queryExistWorkerStockList(workerStockDTO, stockList);
|
|
|
// 全部商品库存
|
|
|
Map<String, WorkerStock> existWorkerStockMap = this.createNotExistWorkerStock(workerStockDTO.getGoodsType(), stockList, existWorkerStockList);
|
|
|
// 计算商品库存
|
|
@@ -344,7 +344,7 @@ public class MaterialGoodsStockLogic {
|
|
|
this.computeWorkerStock(stockList, existWorkerStockMap, null, workerStockAccList);
|
|
|
|
|
|
if (CollectionUtil.isEmpty(workerStockAccList)) {
|
|
|
- throw new RemoteServiceException("师傅配件库存处理失败");
|
|
|
+ throw new RemoteServiceException("师傅库存处理失败");
|
|
|
}
|
|
|
|
|
|
workerStockService.saveOrUpdateBatch(existWorkerStockMap.values());
|
|
@@ -354,7 +354,7 @@ public class MaterialGoodsStockLogic {
|
|
|
private void computeWorkerStock(List<WorkerStockDTO> stockList, Map<String, WorkerStock> existWorkerStockMap,
|
|
|
List<WorkerStock> workerStockList, List<WorkerStockAcc> workerStockAccList) throws Exception {
|
|
|
for (WorkerStockDTO workerStockDTO : stockList) {
|
|
|
- WorkerStock workerStock = existWorkerStockMap.get(workerStockDTO.getGoodsId());
|
|
|
+ WorkerStock workerStock = existWorkerStockMap.get(workerStockDTO.getCompanyWechatId() + workerStockDTO.getGoodsId());
|
|
|
if (workerStockDTO.getGoodsType().equals(WebsitGoodsTypeEnum.P.toString())) {
|
|
|
workerStock = existWorkerStockMap.get(workerStockDTO.getCompanyWechatId() + workerStockDTO.getWebsitId() + workerStockDTO.getPartsWebsitId() + workerStockDTO.getGoodsId());
|
|
|
}
|
|
@@ -370,7 +370,7 @@ public class MaterialGoodsStockLogic {
|
|
|
|
|
|
if (goodsType.equals(WebsitGoodsTypeEnum.M.toString())) {
|
|
|
existShopStockMap = existWorkerStockList.stream()
|
|
|
- .collect(Collectors.toMap(WorkerStock::getGoodsId, Function.identity()));
|
|
|
+ .collect(Collectors.toMap(o -> o.getCompanyWechatId() + o.getGoodsId(), Function.identity()));
|
|
|
} else {
|
|
|
existShopStockMap = existWorkerStockList.stream()
|
|
|
.collect(Collectors.toMap(o -> o.getCompanyWechatId() + o.getWebsitId() + o.getPartsWebsitId() + o.getGoodsId(), Function.identity()));
|
|
@@ -378,7 +378,7 @@ public class MaterialGoodsStockLogic {
|
|
|
|
|
|
// 找出不存在的商品库存并存入新商品库存List
|
|
|
for (WorkerStockDTO workerStockDTO : stockList) {
|
|
|
- WorkerStock workerStock = existShopStockMap.get(workerStockDTO.getGoodsId());
|
|
|
+ WorkerStock workerStock = existShopStockMap.get(workerStockDTO.getCompanyWechatId() + workerStockDTO.getGoodsId());
|
|
|
if (goodsType.equals(WebsitGoodsTypeEnum.P.toString())) {
|
|
|
workerStock = existShopStockMap.get(workerStockDTO.getCompanyWechatId() + workerStockDTO.getWebsitId() + workerStockDTO.getPartsWebsitId() + workerStockDTO.getGoodsId());
|
|
|
}
|
|
@@ -386,7 +386,7 @@ public class MaterialGoodsStockLogic {
|
|
|
if (Objects.isNull(workerStock)) {
|
|
|
workerStock = workerStockDTO.createWorkerStock();
|
|
|
if (goodsType.equals(WebsitGoodsTypeEnum.M.toString())) {
|
|
|
- existShopStockMap.put(workerStockDTO.getGoodsId(), workerStock);
|
|
|
+ existShopStockMap.put(workerStockDTO.getCompanyWechatId() + workerStockDTO.getGoodsId(), workerStock);
|
|
|
} else {
|
|
|
existShopStockMap.put(workerStockDTO.getCompanyWechatId() + workerStockDTO.getWebsitId() + workerStockDTO.getPartsWebsitId() + workerStockDTO.getGoodsId(), workerStock);
|
|
|
}
|