|
@@ -8,7 +8,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.gree.mall.manager.bean.admin.AdminUserCom;
|
|
|
-import com.gree.mall.manager.bean.material.stock.PartsStockLogic;
|
|
|
+import com.gree.mall.manager.bean.material.stock.WebsitStockDTO;
|
|
|
+import com.gree.mall.manager.bean.material.stock.WorkerStockDTO;
|
|
|
import com.gree.mall.manager.bean.material.worker.NewRefundManageBean;
|
|
|
import com.gree.mall.manager.bean.material.worker.NewRefundManageItemBean;
|
|
|
import com.gree.mall.manager.bean.material.worker.NewRefundManageRecordBean;
|
|
@@ -16,29 +17,24 @@ import com.gree.mall.manager.bean.material.worker.NewRefundManageVO;
|
|
|
import com.gree.mall.manager.commonmapper.MaterialMapper;
|
|
|
import com.gree.mall.manager.enums.IsEnum;
|
|
|
import com.gree.mall.manager.enums.base.BaseEnum;
|
|
|
-import com.gree.mall.manager.enums.material.PartsOrderFlagEnum;
|
|
|
-import com.gree.mall.manager.enums.material.PartsRefTypeEnum;
|
|
|
-import com.gree.mall.manager.enums.material.PartsRefundStateEnum;
|
|
|
-import com.gree.mall.manager.enums.material.PayTypeEnum;
|
|
|
+import com.gree.mall.manager.enums.material.*;
|
|
|
import com.gree.mall.manager.exception.RemoteServiceException;
|
|
|
import com.gree.mall.manager.logic.common.CommonLogic;
|
|
|
-import com.gree.mall.manager.plus.entity.WebsitPartsNewRefundManage;
|
|
|
-import com.gree.mall.manager.plus.entity.WebsitPartsNewRefundManageItem;
|
|
|
-import com.gree.mall.manager.plus.entity.WebsitPartsNewRefundManageRecord;
|
|
|
-import com.gree.mall.manager.plus.entity.WebsitPartsRefundRecord;
|
|
|
-import com.gree.mall.manager.plus.service.WebsitPartsNewRefundManageItemService;
|
|
|
-import com.gree.mall.manager.plus.service.WebsitPartsNewRefundManageRecordService;
|
|
|
-import com.gree.mall.manager.plus.service.WebsitPartsNewRefundManageService;
|
|
|
-import com.gree.mall.manager.plus.service.WebsitPartsRefundRecordService;
|
|
|
+import com.gree.mall.manager.logic.material.stock.MaterialGoodsStockLogic;
|
|
|
+import com.gree.mall.manager.plus.entity.*;
|
|
|
+import com.gree.mall.manager.plus.service.*;
|
|
|
import com.gree.mall.manager.zfire.bean.ZfireParamBean;
|
|
|
import com.gree.mall.manager.zfire.util.FieldUtils;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
|
|
@@ -52,8 +48,9 @@ public class NewRefundManageLogic {
|
|
|
private final WebsitPartsNewRefundManageService websitPartsNewRefundManageService;
|
|
|
private final WebsitPartsNewRefundManageItemService websitPartsNewRefundManageItemService;
|
|
|
private final WebsitPartsNewRefundManageRecordService websitPartsNewRefundManageRecordService;
|
|
|
- private final PartsStockLogic partsStockLogic;
|
|
|
+ private final MaterialGoodsStockLogic materialGoodsStockLogic;
|
|
|
private final WebsitPartsRefundRecordService websitPartsRefundRecordService;
|
|
|
+ private final StorageService storageService;
|
|
|
|
|
|
public IPage<NewRefundManageVO> list(ZfireParamBean zfireParamBean) {
|
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
@@ -107,18 +104,18 @@ public class NewRefundManageLogic {
|
|
|
.eq(WebsitPartsNewRefundManageRecord::getApplyNo, partsNewRefundManage.getApplyNo())
|
|
|
.list();
|
|
|
// 驳回状态时临占新件库存减 新件库存加
|
|
|
-// List<WorkerStockDTO> workerStockDTOList = this.createWorkerStockDTO(partsNewRefundManage, partsNewRefundManageItems,
|
|
|
-// partsNewRefundManage.getExamineBy(), partsNewRefundManage.getExamineTime(),
|
|
|
-// PartsStockPartsAttrEnum.TEMP_NEW.toString(), PartsStockPartsAttrEnum.NEW.toString());
|
|
|
-// partsStockLogic.handleWorkerStock(workerStockDTOList);
|
|
|
-// // 驳回状态时销售明细还原数量
|
|
|
- partsStockLogic.revertNewPartsSalesQty(partsNewRefundManage.getReceiveWebsitId(), partsNewRefundManage.getReceivePartsWebsitId(),
|
|
|
+ List<WorkerStockDTO> workerStockDTOList = this.createWorkerStockDTO(partsNewRefundManage, partsNewRefundManageItems,
|
|
|
+ partsNewRefundManage.getExamineBy(), partsNewRefundManage.getExamineTime(),
|
|
|
+ PartsAttrEnum.TEMP_NEW.getKey(), PartsAttrEnum.NEW.getKey());
|
|
|
+ materialGoodsStockLogic.handleWorkerStock(workerStockDTOList);
|
|
|
+ // 驳回状态时销售明细还原数量
|
|
|
+ materialGoodsStockLogic.revertNewPartsSalesQty(partsNewRefundManage.getCompanyWechatId(), partsNewRefundManage.getReceiveWebsitId(), partsNewRefundManage.getReceivePartsWebsitId(),
|
|
|
partsNewRefundManage.getIdentity(), partsNewRefundManageRecordList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
|
- public void refund(String applyNo) {
|
|
|
+ public void refund(String applyNo) throws Exception {
|
|
|
AdminUserCom adminUser = commonLogic.getAdminUser();
|
|
|
WebsitPartsNewRefundManage partsNewRefundManage = websitPartsNewRefundManageService.getById(applyNo);
|
|
|
if (!partsNewRefundManage.getFlag().equals(PartsOrderFlagEnum.AGREE.getKey())) {
|
|
@@ -135,14 +132,14 @@ public class NewRefundManageLogic {
|
|
|
List<WebsitPartsNewRefundManageItem> partsNewRefundManageItems = websitPartsNewRefundManageItemService.lambdaQuery()
|
|
|
.eq(WebsitPartsNewRefundManageItem::getApplyNo, partsNewRefundManage.getApplyNo())
|
|
|
.list();
|
|
|
-// List<WorkerStockDTO> workerStockDTOList = this.createWorkerStockDTO(partsNewRefundManage, partsNewRefundManageItems,
|
|
|
-// partsNewRefundManage.getRefundedBy(), partsNewRefundManage.getRefundedTime(),
|
|
|
-// PartsStockPartsAttrEnum.TEMP_NEW.toString(), null);
|
|
|
-// partsStockLogic.handleWorkerStock(workerStockDTOList);
|
|
|
+ List<WorkerStockDTO> workerStockDTOList = this.createWorkerStockDTO(partsNewRefundManage, partsNewRefundManageItems,
|
|
|
+ partsNewRefundManage.getRefundedBy(), partsNewRefundManage.getRefundedTime(),
|
|
|
+ PartsAttrEnum.TEMP_NEW.getKey(), null);
|
|
|
+ materialGoodsStockLogic.handleWorkerStock(workerStockDTOList);
|
|
|
|
|
|
// 增加网点新件库存
|
|
|
-// List<ShopStockDTO> shopStockDTOList = this.createShopStockDTO(partsNewRefundManage, partsNewRefundManageItems);
|
|
|
-// partsStockLogic.handleShopStock(shopStockDTOList);
|
|
|
+ List<WebsitStockDTO> shopStockDTOList = this.createWebsitStockDTO(partsNewRefundManage, partsNewRefundManageItems);
|
|
|
+ materialGoodsStockLogic.handleWebsitStock(shopStockDTOList);
|
|
|
|
|
|
//TODO 插入退款记录
|
|
|
List<WebsitPartsNewRefundManageRecord> partsNewRefundManageRecords = websitPartsNewRefundManageRecordService.lambdaQuery()
|
|
@@ -185,4 +182,107 @@ public class NewRefundManageLogic {
|
|
|
}
|
|
|
return partsRefundRecordList;
|
|
|
}
|
|
|
+
|
|
|
+ private List<WorkerStockDTO> createWorkerStockDTO(WebsitPartsNewRefundManage partsNewRefundManage,
|
|
|
+ List<WebsitPartsNewRefundManageItem> partsNewRefundManageItems,
|
|
|
+ String operateBy, Date operateTime, String partsAttr1,
|
|
|
+ String partsAttr2) {
|
|
|
+ List<WorkerStockDTO> workerStockDTOList = new ArrayList<>();
|
|
|
+
|
|
|
+ for (WebsitPartsNewRefundManageItem refundManageItem : partsNewRefundManageItems) {
|
|
|
+ // 新件
|
|
|
+ if (StringUtils.isNotBlank(partsAttr1)) {
|
|
|
+ WorkerStockDTO workerStockDTO = new WorkerStockDTO();
|
|
|
+ workerStockDTO.setCompanyWechatId(partsNewRefundManage.getCompanyWechatId());
|
|
|
+ workerStockDTO.setCompanyWechatName(partsNewRefundManage.getCompanyWechatName());
|
|
|
+ workerStockDTO.setIdentity(partsNewRefundManage.getIdentity());
|
|
|
+ workerStockDTO.setWorkerId(partsNewRefundManage.getWorkerId());
|
|
|
+ workerStockDTO.setWorkerName(partsNewRefundManage.getWorkerName());
|
|
|
+ workerStockDTO.setWebsitId(partsNewRefundManage.getReceiveWebsitId());
|
|
|
+ workerStockDTO.setWebsitName(partsNewRefundManage.getReceiveWebsitName());
|
|
|
+ workerStockDTO.setPartsWebsitId(partsNewRefundManage.getReceivePartsWebsitId());
|
|
|
+ workerStockDTO.setSdate(DateUtil.date());
|
|
|
+ workerStockDTO.setGoodsId(refundManageItem.getPartsNumber());
|
|
|
+ workerStockDTO.setGoodsName(refundManageItem.getPartsName());
|
|
|
+ workerStockDTO.setMaterialGroupName(refundManageItem.getMaterialGroupName());
|
|
|
+ workerStockDTO.setGoodsStockUnit(refundManageItem.getGoodsStockUnit());
|
|
|
+ workerStockDTO.setPrice(BigDecimal.ZERO);
|
|
|
+ workerStockDTO.setRef(partsNewRefundManage.getApplyNo());
|
|
|
+ workerStockDTO.setRefType(PartsRefTypeEnum.NEW_REFUND.getKey());
|
|
|
+ workerStockDTO.setPartsAttr(partsAttr1);
|
|
|
+ workerStockDTO.setChangeQty(refundManageItem.getQty());
|
|
|
+ workerStockDTO.setDirectFlag(DirectFlagEnum.SUB.getKey());
|
|
|
+ workerStockDTO.setRemark(refundManageItem.getRemark());
|
|
|
+ workerStockDTO.setOperateBy(operateBy);
|
|
|
+ workerStockDTO.setOperateTime(operateTime);
|
|
|
+
|
|
|
+ workerStockDTOList.add(workerStockDTO);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(partsAttr2)) {
|
|
|
+ WorkerStockDTO workerStockDTO = new WorkerStockDTO();
|
|
|
+ workerStockDTO.setCompanyWechatId(partsNewRefundManage.getCompanyWechatId());
|
|
|
+ workerStockDTO.setCompanyWechatName(partsNewRefundManage.getCompanyWechatName());
|
|
|
+ workerStockDTO.setIdentity(partsNewRefundManage.getIdentity());
|
|
|
+ workerStockDTO.setWorkerId(partsNewRefundManage.getWorkerId());
|
|
|
+ workerStockDTO.setWorkerName(partsNewRefundManage.getWorkerName());
|
|
|
+ workerStockDTO.setWebsitId(partsNewRefundManage.getReceiveWebsitId());
|
|
|
+ workerStockDTO.setWebsitName(partsNewRefundManage.getReceiveWebsitName());
|
|
|
+ workerStockDTO.setPartsWebsitId(partsNewRefundManage.getReceivePartsWebsitId());
|
|
|
+ workerStockDTO.setSdate(DateUtil.date());
|
|
|
+ workerStockDTO.setGoodsId(refundManageItem.getPartsNumber());
|
|
|
+ workerStockDTO.setGoodsName(refundManageItem.getPartsName());
|
|
|
+ workerStockDTO.setMaterialGroupName(refundManageItem.getMaterialGroupName());
|
|
|
+ workerStockDTO.setGoodsStockUnit(refundManageItem.getGoodsStockUnit());
|
|
|
+ workerStockDTO.setPrice(BigDecimal.ZERO);
|
|
|
+ workerStockDTO.setRef(partsNewRefundManage.getApplyNo());
|
|
|
+ workerStockDTO.setRefType(PartsRefTypeEnum.NEW_REFUND.getKey());
|
|
|
+ workerStockDTO.setPartsAttr(partsAttr2);
|
|
|
+ workerStockDTO.setChangeQty(refundManageItem.getQty());
|
|
|
+ workerStockDTO.setDirectFlag(DirectFlagEnum.ADD.getKey());
|
|
|
+ workerStockDTO.setRemark(refundManageItem.getRemark());
|
|
|
+ workerStockDTO.setOperateBy(operateBy);
|
|
|
+ workerStockDTO.setOperateTime(operateTime);
|
|
|
+
|
|
|
+ workerStockDTOList.add(workerStockDTO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return workerStockDTOList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<WebsitStockDTO> createWebsitStockDTO(WebsitPartsNewRefundManage partsNewRefundManage, List<WebsitPartsNewRefundManageItem> partsNewRefundManageItems) {
|
|
|
+ List<WebsitStockDTO> shopStockDTOList = new ArrayList<>();
|
|
|
+ final Storage storage = storageService.lambdaQuery()
|
|
|
+ .eq(Storage::getCompanyWechatId, partsNewRefundManage.getCompanyWechatId())
|
|
|
+ .in(Storage::getWebsitId, partsNewRefundManage.getReceiveWebsitId())
|
|
|
+ .eq(Storage::getIsDefault, IsEnum.Y.getValue())
|
|
|
+ .one();
|
|
|
+
|
|
|
+ for (WebsitPartsNewRefundManageItem partsNewRefundManageItem : partsNewRefundManageItems) {
|
|
|
+ WebsitStockDTO websitStockDTO = new WebsitStockDTO();
|
|
|
+ websitStockDTO.setCompanyWechatId(partsNewRefundManage.getCompanyWechatId());
|
|
|
+ websitStockDTO.setCompanyWechatName(partsNewRefundManage.getCompanyWechatName());
|
|
|
+ websitStockDTO.setWebsitId(partsNewRefundManage.getReceiveWebsitId());
|
|
|
+ websitStockDTO.setWebsitName(partsNewRefundManage.getReceiveWebsitName());
|
|
|
+ websitStockDTO.setSdate(partsNewRefundManage.getRefundedTime());
|
|
|
+ websitStockDTO.setPartsWebsitId(partsNewRefundManage.getReceivePartsWebsitId());
|
|
|
+ websitStockDTO.setGoodsId(partsNewRefundManageItem.getPartsNumber());
|
|
|
+ websitStockDTO.setGoodsName(partsNewRefundManageItem.getPartsName());
|
|
|
+ websitStockDTO.setPrice(BigDecimal.ZERO);
|
|
|
+ websitStockDTO.setMaterialGroupName(partsNewRefundManageItem.getMaterialGroupName());
|
|
|
+ websitStockDTO.setGoodsStockUnit(partsNewRefundManageItem.getGoodsStockUnit());
|
|
|
+ websitStockDTO.setVoucherNo(partsNewRefundManage.getApplyNo());
|
|
|
+ websitStockDTO.setApplyNo(partsNewRefundManage.getApplyNo());
|
|
|
+ websitStockDTO.setObj(BaseEnum.keyToEnumNotNull(PartsRefundApplyTypeEnum.class, partsNewRefundManage.getApplyType()).getRemark());
|
|
|
+ websitStockDTO.setPartsAttr(PartsAttrEnum.NEW.toString());
|
|
|
+ websitStockDTO.setChangeQty(partsNewRefundManageItem.getQty());
|
|
|
+ websitStockDTO.setDirectFlag(DirectFlagEnum.ADD.getKey());
|
|
|
+ websitStockDTO.setRemark(partsNewRefundManageItem.getRemark());
|
|
|
+ websitStockDTO.setOperateBy(partsNewRefundManage.getRefundedBy());
|
|
|
+ websitStockDTO.setOperateTime(partsNewRefundManage.getRefundedTime());
|
|
|
+ websitStockDTO.setStorageId(storage.getStorageId());
|
|
|
+ shopStockDTOList.add(websitStockDTO);
|
|
|
+ }
|
|
|
+ return shopStockDTOList;
|
|
|
+ }
|
|
|
}
|