|
|
@@ -9,12 +9,17 @@ import com.dk.common.response.ResponseResultUtil;
|
|
|
import com.dk.common.response.ResponseResultVO;
|
|
|
import com.dk.mdm.infrastructure.convert.sale.OutReturnConvert;
|
|
|
import com.dk.mdm.infrastructure.convert.sale.OutReturnItemConvert;
|
|
|
+import com.dk.mdm.mapper.sale.OrderItemMapper;
|
|
|
+import com.dk.mdm.mapper.sale.OrderMapper;
|
|
|
import com.dk.mdm.mapper.sale.OutReturnItemMapper;
|
|
|
+import com.dk.mdm.model.pojo.sale.Order;
|
|
|
+import com.dk.mdm.model.pojo.sale.OrderItem;
|
|
|
import com.dk.mdm.model.pojo.sale.OutReturn;
|
|
|
import com.dk.mdm.model.pojo.sale.OutReturnItem;
|
|
|
import com.dk.mdm.mapper.sale.OutReturnMapper;
|
|
|
import com.dk.common.service.BaseService;
|
|
|
import com.dk.common.mapper.BaseMapper;
|
|
|
+import com.dk.mdm.model.response.sale.OrderResponse;
|
|
|
import com.dk.mdm.model.vo.sale.OutReturnItemVO;
|
|
|
import com.dk.mdm.model.vo.sale.OutReturnVO;
|
|
|
import com.dk.mdm.service.common.CommonService;
|
|
|
@@ -22,6 +27,7 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
@@ -51,6 +57,18 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
private OutReturnItemMapper outReturnItemMapper;
|
|
|
|
|
|
@Autowired
|
|
|
+ private OrderService orderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderMapper orderMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderItemService orderItemService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private OrderItemMapper orderItemMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
private CommonService commonService;
|
|
|
|
|
|
@Autowired
|
|
|
@@ -70,21 +88,45 @@ public class OutReturnService extends BaseService<OutReturn> {
|
|
|
public ResponseResultVO<?> insert(OutReturnVO outReturnVO) {
|
|
|
|
|
|
// 获取单号
|
|
|
- Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORDER.getName(), false);
|
|
|
+ Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.ORDEROUT.getName(), false);
|
|
|
outReturnVO.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
|
|
|
.setReturnType(Constant.DocumentType.OUT_RETURN.getName());
|
|
|
// 转化实体
|
|
|
OutReturn outReturn = outReturnConvert.convertToPo(outReturnVO);
|
|
|
- // 订单总单保存
|
|
|
+ // 总单保存
|
|
|
super.insert(outReturn);
|
|
|
|
|
|
// 明细保存
|
|
|
if (outReturnVO.getItemList() != null && outReturnVO.getItemList().size() > 0) {
|
|
|
+ double sumReturnQty = 0; // 合计已出库退货数量
|
|
|
+ double sumReturnAmt = 0; // 合计已出库退货金额
|
|
|
for (OutReturnItemVO outReturnItemVO : outReturnVO.getItemList()) {
|
|
|
OutReturnItem outReturnItem = outReturnItemConvert.convertToPo(outReturnItemVO);
|
|
|
outReturnItem.setReturnId(outReturn.getReturnId()).setCpId(outReturn.getCpId()).setIntoStatus(Constant.IntoStatus.DAIRUKU.getName());
|
|
|
outReturnItemMapper.insert(outReturnItem);
|
|
|
+
|
|
|
+ // 反写订单已出库退货数量、金额
|
|
|
+ OrderItem orderItem = orderItemMapper.selectById(outReturnItem.getOrderItemId());
|
|
|
+ // 如果出库数量小于订单上已退货+本次退货数量
|
|
|
+ if (orderItem.getOutQty().compareTo(orderItem.getReturnQty().add(outReturnItem.getItemQty())) == -1) {
|
|
|
+ throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.OUTQTY_NO_LESS_RETURNQTY.getMessage());
|
|
|
+ }
|
|
|
+ OrderItem orderItemUpdate = new OrderItem();
|
|
|
+ orderItemUpdate.setReturnQty(orderItem.getReturnQty().add(outReturnItem.getItemQty()))
|
|
|
+ .setReturnAmt(orderItem.getReturnAmt().add(outReturnItem.getItemAmt()))
|
|
|
+ .setItemId(orderItem.getItemId());
|
|
|
+ orderItemService.updateByUuid(orderItemUpdate);
|
|
|
+ // 累加退货数量,金额
|
|
|
+ sumReturnQty += outReturnItem.getItemQty().doubleValue();
|
|
|
+ sumReturnAmt += outReturnItem.getItemAmt().doubleValue();
|
|
|
}
|
|
|
+ // 更新订单上的退货数量,金额
|
|
|
+ OrderResponse orderResponse = orderMapper.selectById(outReturnVO.getOrderId());
|
|
|
+ Order orderUpdate = new Order();
|
|
|
+ orderUpdate.setReturnQty(orderResponse.getReturnQty().add(new BigDecimal(sumReturnQty)))
|
|
|
+ .setReturnAmt(orderResponse.getReturnAmt().add(new BigDecimal(sumReturnAmt)))
|
|
|
+ .setOrderId(outReturnVO.getOrderId());
|
|
|
+ orderService.updateByUuid(orderUpdate);
|
|
|
}
|
|
|
return ResponseResultUtil.success();
|
|
|
}
|