|
|
@@ -27,8 +27,6 @@ import com.dk.common.service.BaseService;
|
|
|
import com.dk.common.mapper.BaseMapper;
|
|
|
import com.dk.mdm.model.query.sale.OutReturnItemQuery;
|
|
|
import com.dk.mdm.model.query.sale.OutReturnQuery;
|
|
|
-import com.dk.mdm.model.response.ivt.OutboundItemResponse;
|
|
|
-import com.dk.mdm.model.response.ivt.OutboundResponse;
|
|
|
import com.dk.mdm.model.response.sale.OutReturnItemResponse;
|
|
|
import com.dk.mdm.model.response.sale.OutReturnResponse;
|
|
|
import com.dk.mdm.model.vo.sale.OutReturnItemVO;
|
|
|
@@ -151,9 +149,13 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
if (outReturnVO.getItemList() != null && outReturnVO.getItemList().size() > 0) {
|
|
|
OrderItem orderItemForUpdate;
|
|
|
OutboundItem outboundItemForUpdate;
|
|
|
- String outId = "";
|
|
|
+ // 出库IdList,一个退货单可能有多个出库单
|
|
|
+ List<String> outIdList = new ArrayList<>();
|
|
|
for (OutReturnItemVO outReturnItemVO : outReturnVO.getItemList()) {
|
|
|
- outId = outReturnItemVO.getOutId();
|
|
|
+ // 把出库Id存起来
|
|
|
+ if (!outIdList.contains(outReturnItemVO.getOutId())) {
|
|
|
+ outIdList.add(outReturnItemVO.getOutId());
|
|
|
+ }
|
|
|
OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
|
|
|
outReturnItem.setReturnId(outReturn.getReturnId()).setCpId(outReturn.getCpId()).setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
|
|
|
outReturnItemMapper.insert(outReturnItem);
|
|
|
@@ -186,18 +188,21 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
/********************* 反写订单明细退货数量、金额 end **********************/
|
|
|
}
|
|
|
|
|
|
- // 计算出库明细的退货数量,金额合计
|
|
|
- List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
|
|
|
- OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
|
|
|
- OutboundItem item = new OutboundItem();
|
|
|
- item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
|
|
|
- item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
|
|
|
- return item;
|
|
|
- }).get();
|
|
|
- // 更新出库单上的退货数量,金额
|
|
|
- Outbound outboundUpdate = new Outbound();
|
|
|
- outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
|
|
|
- outboundService.updateByUuid(outboundUpdate);
|
|
|
+ // 可能有多个出库单,所以要循环更新总单
|
|
|
+ for (String outId : outIdList) {
|
|
|
+ // 计算出库明细的退货数量,金额合计
|
|
|
+ List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
|
|
|
+ OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
|
|
|
+ OutboundItem item = new OutboundItem();
|
|
|
+ item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
|
|
|
+ item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
|
|
|
+ return item;
|
|
|
+ }).get();
|
|
|
+ // 更新出库单上的退货数量,金额
|
|
|
+ Outbound outboundUpdate = new Outbound();
|
|
|
+ outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
|
|
|
+ outboundService.updateByUuid(outboundUpdate);
|
|
|
+ }
|
|
|
|
|
|
// 计算订单明细的退货数量,金额合计
|
|
|
List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outReturnVO.getOrderId());
|
|
|
@@ -216,6 +221,98 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * @desc : 编辑方法
|
|
|
+ * @author : 付斌
|
|
|
+ * @date : 2023/1/9 10:49
|
|
|
+ */
|
|
|
+ @Transactional(
|
|
|
+ rollbackFor = {Exception.class}
|
|
|
+ )
|
|
|
+ public ResponseResultVO<Boolean> update(OutReturnVO outReturnVO) {
|
|
|
+ // 订单明细实体
|
|
|
+ OrderItem orderItemForUpdate;
|
|
|
+ // 出库明细实体
|
|
|
+ OutboundItem outboundItemForUpdate;
|
|
|
+ // 退货明细实体
|
|
|
+ OutReturnItem outReturnItemForUpdate;
|
|
|
+ // 出库IdList,一个退货单可能有多个出库单
|
|
|
+ List<String> outIdList = new ArrayList<>();
|
|
|
+
|
|
|
+ // 编辑退货明细
|
|
|
+ List<OutReturnItemVO> editOutReturnItemVOList = outReturnVO.getItemList();
|
|
|
+ for (OutReturnItemVO outReturnItemVO : editOutReturnItemVOList) {
|
|
|
+ // 把出库Id存起来
|
|
|
+ if (!outIdList.contains(outReturnItemVO.getOutId())) {
|
|
|
+ outIdList.add(outReturnItemVO.getOutId());
|
|
|
+ }
|
|
|
+
|
|
|
+ outReturnItemForUpdate = outReturnItemMapper.selectByIdForUpdate(outReturnItemVO.getItemId());
|
|
|
+ // 退货数量不能小于入库中数量
|
|
|
+ if (outReturnItemVO.getItemQty().compareTo(outReturnItemForUpdate.getIntoingQty()) == -1) {
|
|
|
+ throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.RETURNQTY_NO_LESS_INTOINGQTY.getMessage());
|
|
|
+ }
|
|
|
+
|
|
|
+ outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outReturnItemVO.getOutItemId());
|
|
|
+ // 出库数量不能小于(出库明细的退货数量 - 退货明细之前的退货数量 + 退货明细现在的退货数量)
|
|
|
+ if (outboundItemForUpdate.getOutQty().compareTo(outboundItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()).add(outReturnItemVO.getItemQty())) == -1) {
|
|
|
+ throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
|
|
|
+ }
|
|
|
+ // 更新出库明细退货数量
|
|
|
+ OutboundItem outboundItemUpdate = new OutboundItem();
|
|
|
+ outboundItemUpdate.setReturnQty(outboundItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()).add(outReturnItemVO.getItemQty()))
|
|
|
+ .setReturnAmt(outboundItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()).add(outReturnItemVO.getItemAmt()))
|
|
|
+ .setItemId(outboundItemForUpdate.getItemId());
|
|
|
+ outboundItemService.updateByUuid(outboundItemUpdate);
|
|
|
+
|
|
|
+ // 更新订单明细退货数量
|
|
|
+ orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outReturnItemVO.getOrderItemId());
|
|
|
+ OrderItem orderItemUpdate = new OrderItem();
|
|
|
+ orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()).add(outReturnItemVO.getItemQty()))
|
|
|
+ .setReturnAmt(orderItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()).add(outReturnItemVO.getItemAmt()))
|
|
|
+ .setItemId(orderItemForUpdate.getItemId());
|
|
|
+ orderItemService.updateByUuid(orderItemUpdate);
|
|
|
+
|
|
|
+ // 更新退货明细
|
|
|
+ OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
|
|
|
+ outReturnItemService.updateByUuid(outReturnItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 可能有多个出库单,所以要循环更新总单
|
|
|
+ for (String outId : outIdList) {
|
|
|
+ // 计算出库明细的退货数量,金额合计
|
|
|
+ List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
|
|
|
+ OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
|
|
|
+ OutboundItem item = new OutboundItem();
|
|
|
+ item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
|
|
|
+ item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
|
|
|
+ return item;
|
|
|
+ }).get();
|
|
|
+ // 更新订单上的出库中数量,金额
|
|
|
+ Outbound outboundUpdate = new Outbound();
|
|
|
+ outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
|
|
|
+ outboundService.updateByUuid(outboundUpdate);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 计算订单明细的退货数量,金额合计
|
|
|
+ List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(outReturnVO.getOrderId());
|
|
|
+ OrderItem orderItem = orderItemList.stream().reduce((x, y) -> {
|
|
|
+ OrderItem item = new OrderItem();
|
|
|
+ item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
|
|
|
+ item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
|
|
|
+ return item;
|
|
|
+ }).get();
|
|
|
+ // 更新订单上的出库中数量,金额
|
|
|
+ Order orderUpdate = new Order();
|
|
|
+ orderUpdate.setReturnQty(orderItem.getReturnQty()).setReturnAmt(orderItem.getReturnAmt()).setOrderId(outReturnVO.getOrderId());
|
|
|
+ orderService.updateByUuid(orderUpdate);
|
|
|
+
|
|
|
+ // 转化实体、更新退货单总表
|
|
|
+ OutReturn outReturn = outReturnConvert.convertToPo(outReturnVO);
|
|
|
+ return ResponseResultUtil.success(super.update(outReturn, new UpdateWrapper<OutReturn>().lambda().eq(OutReturn::getReturnId,
|
|
|
+ UUID.fromString(outReturn.getReturnId()))));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* @desc : 作废
|
|
|
* @author : 付斌
|
|
|
* @date : 2024-03-08 16:38
|
|
|
@@ -223,7 +320,7 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
public ResponseResultVO<?> invalid(String id) {
|
|
|
OutReturn outReturnForUpdate = outReturnMapper.selectByIdForUpdate(id);
|
|
|
// 并发校验
|
|
|
- if(!outReturnForUpdate.getFlgValid()){
|
|
|
+ if (!outReturnForUpdate.getFlgValid()) {
|
|
|
throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ISFLGVALID_FALSE.getMessage());
|
|
|
}
|
|
|
|
|
|
@@ -236,21 +333,27 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
List<OutReturnItem> outReturnItemList = outReturnItemMapper.selectByZIdForUpdate(id);
|
|
|
OutboundItem outboundItemForUpdate;
|
|
|
OrderItem orderItemForUpdate;
|
|
|
- String outId = "";
|
|
|
String orderId = "";
|
|
|
+
|
|
|
+ // 出库IdList,一个退货单可能有多个出库单
|
|
|
+ List<String> outIdList = new ArrayList<>();
|
|
|
for (OutReturnItem outReturnItemForUpdate : outReturnItemList) {
|
|
|
- outId = outReturnItemForUpdate.getOutId();
|
|
|
+ // 把出库Id存起来
|
|
|
+ if (!outIdList.contains(outReturnItemForUpdate.getOutId())) {
|
|
|
+ outIdList.add(outReturnItemForUpdate.getOutId());
|
|
|
+ }
|
|
|
orderId = outReturnItemForUpdate.getOrderId();
|
|
|
- outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outReturnItemForUpdate.getOutItemId());
|
|
|
+
|
|
|
// 更新出库明细退货数量
|
|
|
+ outboundItemForUpdate = outboundItemMapper.selectByIdForUpdate(outReturnItemForUpdate.getOutItemId());
|
|
|
OutboundItem outboundItemUpdate = new OutboundItem();
|
|
|
outboundItemUpdate.setReturnQty(outboundItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()))
|
|
|
.setReturnAmt(outboundItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()))
|
|
|
.setItemId(outboundItemForUpdate.getItemId());
|
|
|
outboundItemService.updateByUuid(outboundItemUpdate);
|
|
|
|
|
|
- orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outReturnItemForUpdate.getOrderItemId());
|
|
|
// 更新订单明细退货数量
|
|
|
+ orderItemForUpdate = orderItemMapper.selectByIdForUpdate(outReturnItemForUpdate.getOrderItemId());
|
|
|
OrderItem orderItemUpdate = new OrderItem();
|
|
|
orderItemUpdate.setReturnQty(orderItemForUpdate.getReturnQty().subtract(outReturnItemForUpdate.getItemQty()))
|
|
|
.setReturnAmt(orderItemForUpdate.getReturnAmt().subtract(outReturnItemForUpdate.getItemAmt()))
|
|
|
@@ -258,18 +361,21 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
orderItemService.updateByUuid(orderItemUpdate);
|
|
|
}
|
|
|
|
|
|
- // 计算出库明细的退货数量,金额合计
|
|
|
- List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
|
|
|
- OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
|
|
|
- OutboundItem item = new OutboundItem();
|
|
|
- item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
|
|
|
- item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
|
|
|
- return item;
|
|
|
- }).get();
|
|
|
- // 更新出库单上的退货数量,金额
|
|
|
- Outbound outboundUpdate = new Outbound();
|
|
|
- outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
|
|
|
- outboundService.updateByUuid(outboundUpdate);
|
|
|
+ // 可能有多个出库单,所以要循环更新总单
|
|
|
+ for (String outId : outIdList) {
|
|
|
+ // 计算出库明细的退货数量,金额合计
|
|
|
+ List<OutboundItem> outboundItemList = outboundItemMapper.selectByZIdForUpdate(outId);
|
|
|
+ OutboundItem outboundItem = outboundItemList.stream().reduce((x, y) -> {
|
|
|
+ OutboundItem item = new OutboundItem();
|
|
|
+ item.setReturnQty(x.getReturnQty().add(y.getReturnQty()));
|
|
|
+ item.setReturnAmt(x.getReturnAmt().add(y.getReturnAmt()));
|
|
|
+ return item;
|
|
|
+ }).get();
|
|
|
+ // 更新出库单上的退货数量,金额
|
|
|
+ Outbound outboundUpdate = new Outbound();
|
|
|
+ outboundUpdate.setReturnQty(outboundItem.getReturnQty()).setReturnAmt(outboundItem.getReturnAmt()).setOutId(outId);
|
|
|
+ outboundService.updateByUuid(outboundUpdate);
|
|
|
+ }
|
|
|
|
|
|
// 计算订单明细的退货数量,金额合计
|
|
|
List<OrderItem> orderItemList = orderItemMapper.selectByZIdForUpdate(orderId);
|
|
|
@@ -298,13 +404,13 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
* @date : 2024-03-02 17:27
|
|
|
*/
|
|
|
public ResponseResultVO<?> getOutReturnForUpdate(String id) {
|
|
|
- Map<String, Object> outReturnInfo = new HashMap<>();
|
|
|
+ Map<String, Object> dataInfo = new HashMap<>();
|
|
|
OutReturnResponse outReturnResponse = outReturnMapper.selectById(id);
|
|
|
- outReturnInfo.put("outReturn", outReturnResponse);
|
|
|
+ dataInfo.put("data", outReturnResponse);
|
|
|
|
|
|
// 商品明细
|
|
|
List<OutReturnItemResponse> outReturnItemResponseList = outReturnItemMapper.selectByCondForReturnEdit(id);
|
|
|
- outReturnInfo.put("outReturnItem", outReturnItemResponseList);
|
|
|
- return ResponseResultUtil.success(outReturnInfo);
|
|
|
+ dataInfo.put("dataItem", outReturnItemResponseList);
|
|
|
+ return ResponseResultUtil.success(dataInfo);
|
|
|
}
|
|
|
}
|