|
|
@@ -1,5 +1,6 @@
|
|
|
package com.dk.mdm.service.ivt;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.dk.common.infrastructure.annotaiton.Pagination;
|
|
|
import com.dk.common.infrastructure.constant.Constant;
|
|
|
import com.dk.common.infrastructure.enums.ErrorCodeEnum;
|
|
|
@@ -21,6 +22,7 @@ import com.dk.mdm.mapper.ivt.IntoReturnMapper;
|
|
|
import com.dk.common.service.BaseService;
|
|
|
import com.dk.common.mapper.BaseMapper;
|
|
|
import com.dk.mdm.model.pojo.ivt.IntoReturnItem;
|
|
|
+import com.dk.mdm.model.pojo.pur.Purchase;
|
|
|
import com.dk.mdm.model.pojo.pur.PurchaseItem;
|
|
|
import com.dk.mdm.model.query.ivt.IntoReturnQuery;
|
|
|
import com.dk.mdm.model.query.pur.PurchaseQuery;
|
|
|
@@ -79,14 +81,12 @@ public class IntoReturnService extends BaseService<IntoReturn> {
|
|
|
private OutboundService outboundService;
|
|
|
|
|
|
@Autowired
|
|
|
- private InboundService inboundService;
|
|
|
-
|
|
|
- @Autowired
|
|
|
private InboundMapper inboundMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private InboundItemMapper inboundItemMapper;
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* @desc : 查询
|
|
|
* @author : 于继渤
|
|
|
@@ -106,83 +106,96 @@ public class IntoReturnService extends BaseService<IntoReturn> {
|
|
|
rollbackFor = {Exception.class}
|
|
|
)
|
|
|
public ResponseResultVO<?> insert(IntoReturnVO intoReturnVO) {
|
|
|
- //校验明细长度
|
|
|
- List<IntoReturnItemVO> intoReturnItemVOList = intoReturnVO.getIntoReturnItemVOList();
|
|
|
- //明细不存在
|
|
|
- if (intoReturnItemVOList == null || intoReturnItemVOList.size() == 0) {
|
|
|
- //返回 采购退货明细不可为空,请重新操作
|
|
|
- return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
|
|
|
- }
|
|
|
- //设置总单
|
|
|
- intoReturnVO = this.insertTotal(intoReturnVO);
|
|
|
- //设置明细
|
|
|
- intoReturnItemVOList = this.insertDetail(intoReturnVO, intoReturnItemVOList);
|
|
|
-
|
|
|
- //反写入库单 反写退货数量金额
|
|
|
- Inbound inbound = inboundMapper.selectById(intoReturnVO.getIntoId());
|
|
|
- inboundMapper.updateAmount(new Inbound().setIntoId(intoReturnVO.getIntoId())
|
|
|
- .setReturnQty(inbound.getReturnQty().add(intoReturnVO.getSumQuantity()))
|
|
|
- .setReturnAmt(inbound.getReturnAmt().add(intoReturnVO.getSumAmount())));
|
|
|
-
|
|
|
-
|
|
|
- //反写入库订单明细、反写订单明细
|
|
|
- for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
|
|
|
-
|
|
|
- //根据退货明细中入库明细id查询入库明细数据
|
|
|
- InboundItem inboundItem = inboundItemMapper.selectById(intoReturnItemVO.getIntoItemId());
|
|
|
- inboundItemMapper.updateAmount(
|
|
|
- new InboundItem()
|
|
|
- .setItemId(inboundItem.getItemId())
|
|
|
- .setReturnQty(inboundItem.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
|
|
|
- .setReturnAmt(inboundItem.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
|
|
|
- );
|
|
|
- //TODO 反写订单出库明细 退货数量和退货金额
|
|
|
- //查询采购订单明细数据
|
|
|
- PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getPurItemId());
|
|
|
- //反写订单明细退货数量和退货金额
|
|
|
- purchaseItemMapper.updateAmount(
|
|
|
- new PurchaseItem()
|
|
|
- .setItemId(intoReturnItemVO.getPurItemId())
|
|
|
- .setReturnQty(purchaseItemResponse.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
|
|
|
- .setReturnAmt(purchaseItemResponse.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
|
|
|
-
|
|
|
+ //校验明细长度
|
|
|
+ List<IntoReturnItemVO> intoReturnItemVOList = intoReturnVO.getIntoReturnItemVOList();
|
|
|
+ //明细不存在
|
|
|
+ if (intoReturnItemVOList == null || intoReturnItemVOList.size() == 0) {
|
|
|
+ //返回 采购退货明细不可为空,请重新操作
|
|
|
+ return ResponseResultUtil.error(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.PURCHASE_RETURN_DETAIL_NOT_EXIST.getMessage());
|
|
|
+ }
|
|
|
+ //查询采购订单
|
|
|
+ PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnVO.getPurId());
|
|
|
+ //设置总单
|
|
|
+ intoReturnVO = this.insertTotal(intoReturnVO, purchaseResponse);
|
|
|
+ //设置明细
|
|
|
+ intoReturnItemVOList = this.insertDetail(intoReturnVO, intoReturnItemVOList);
|
|
|
+
|
|
|
+
|
|
|
+ //反写采购订单已入库退货数量、金额
|
|
|
+ purchaseMapper.updateAmount(new Purchase().setPurId(intoReturnVO.getPurId())
|
|
|
+ .setReturnQty(purchaseResponse.getReturnQty().add(intoReturnVO.getSumQuantity()))
|
|
|
+ .setReturnAmt(purchaseResponse.getReturnAmt().add(intoReturnVO.getSumAmount()))
|
|
|
);
|
|
|
- }
|
|
|
-
|
|
|
-// //新建出库单
|
|
|
-// OutboundVO outboundVO = new OutboundVO();
|
|
|
-// //来源ID
|
|
|
-// outboundVO.setFromId(intoReturnVO.getReturnId());
|
|
|
-// //来源单号
|
|
|
-// outboundVO.setFromNo(intoReturnVO.getReturnNo());
|
|
|
-// //部门
|
|
|
-// outboundVO.setOrgId(intoReturnVO.getOrgId());
|
|
|
-// //员工
|
|
|
-// outboundVO.setStaffId(intoReturnVO.getStaffId());
|
|
|
-// //供应商
|
|
|
-// outboundVO.setSupId(intoReturnVO.getSupId());
|
|
|
-// //出库状态
|
|
|
-// outboundVO.setOutStatus("出库状态-出库中");
|
|
|
-// outboundVO.setMakeStaff(authUtils.getStaff().getStaffId());
|
|
|
-// outboundVO.setCpId(authUtils.getStaff().getCpId());
|
|
|
-// List<OutboundItemVO> itemList = new ArrayList<>();
|
|
|
-// Integer itemIndex = 0;
|
|
|
-//
|
|
|
-// for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
|
|
|
-// OutboundItemVO outboundItemVO = new OutboundItemVO();
|
|
|
-// outboundItemVO.setSkuId(intoReturnItemVO.getSkuId());
|
|
|
-// outboundItemVO.setItemIndex(itemIndex +1);
|
|
|
-// outboundItemVO.setPriceOut(intoReturnItemVO.getPriceReturn());
|
|
|
-// outboundItemVO.setInvId("10112024-0305-0000-0000-000009593bb6");
|
|
|
-// itemList.add(outboundItemVO);
|
|
|
-// }
|
|
|
-//
|
|
|
-// outboundVO.setItemList(itemList);
|
|
|
-//
|
|
|
-//
|
|
|
-//
|
|
|
-// outboundService.insert(outboundVO);
|
|
|
-
|
|
|
+ BigDecimal sumReturnQty = BigDecimal.ZERO;
|
|
|
+ BigDecimal sumReturnAmt = BigDecimal.ZERO;
|
|
|
+ //反写入库订单明细、反写订单明细
|
|
|
+ for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
|
|
|
+
|
|
|
+ //根据退货明细中入库明细id查询入库明细数据
|
|
|
+ InboundItem inboundItem = inboundItemMapper.selectById(intoReturnItemVO.getIntoItemId());
|
|
|
+ BigDecimal returnQty = inboundItem.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP));
|
|
|
+ BigDecimal returnAmt = inboundItem.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP));
|
|
|
+ sumReturnQty = sumReturnQty.add(returnQty);
|
|
|
+ sumReturnAmt = sumReturnAmt.add(returnAmt);
|
|
|
+ inboundItemMapper.updateAmount(
|
|
|
+ new InboundItem()
|
|
|
+ .setItemId(inboundItem.getItemId())
|
|
|
+ .setReturnQty(returnQty)
|
|
|
+ .setReturnAmt(returnAmt)
|
|
|
+ );
|
|
|
+ //TODO 反写订单出库明细 退货数量和退货金额
|
|
|
+ //查询采购订单明细数据
|
|
|
+ PurchaseItemResponse purchaseItemResponse = purchaseItemMapper.selectById(intoReturnItemVO.getPurItemId());
|
|
|
+ //反写订单明细退货数量和退货金额
|
|
|
+ purchaseItemMapper.updateAmount(
|
|
|
+ new PurchaseItem()
|
|
|
+ .setItemId(intoReturnItemVO.getPurItemId())
|
|
|
+ .setReturnQty(purchaseItemResponse.getReturnQty().add(intoReturnItemVO.getItemQty().setScale(6, BigDecimal.ROUND_HALF_UP)))
|
|
|
+ .setReturnAmt(purchaseItemResponse.getReturnAmt().add(intoReturnItemVO.getItemAmt().setScale(6, BigDecimal.ROUND_HALF_UP)))
|
|
|
+
|
|
|
+ );
|
|
|
+ }
|
|
|
+ //反写入库单退货数量金额 todo
|
|
|
+ Inbound inbound = inboundMapper.selectById(intoReturnVO.getIntoId());
|
|
|
+ inboundMapper.updateAmount(new Inbound().setIntoId(intoReturnVO.getIntoId())
|
|
|
+ .setReturnQty(inbound.getReturnQty().add(sumReturnQty))
|
|
|
+ .setReturnAmt(inbound.getReturnAmt().add(sumReturnAmt)));
|
|
|
+ //新建出库单
|
|
|
+ OutboundVO outboundVO = new OutboundVO();
|
|
|
+ //来源ID
|
|
|
+ outboundVO.setFromId(intoReturnVO.getReturnId());
|
|
|
+ //来源单号
|
|
|
+ outboundVO.setFromNo(intoReturnVO.getReturnNo());
|
|
|
+ //部门
|
|
|
+ outboundVO.setOrgId(intoReturnVO.getOrgId());
|
|
|
+ //员工
|
|
|
+ outboundVO.setStaffId(intoReturnVO.getStaffId());
|
|
|
+ //出库状态 待出库
|
|
|
+ outboundVO.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
|
|
|
+ //供应商
|
|
|
+ outboundVO.setSupId(intoReturnVO.getSupId());
|
|
|
+ outboundVO.setMakeStaff(authUtils.getStaff().getStaffId());
|
|
|
+ outboundVO.setCpId(authUtils.getStaff().getCpId());
|
|
|
+
|
|
|
+ outboundVO.setFromId(intoReturnVO.getReturnId());
|
|
|
+ List<OutboundItemVO> itemList = new ArrayList<>();
|
|
|
+ Integer itemIndex = 0;
|
|
|
+ for (IntoReturnItemVO intoReturnItemVO : intoReturnItemVOList) {
|
|
|
+ //来源单ID 入库退货
|
|
|
+ OutboundItemVO outboundItemVO = new OutboundItemVO();
|
|
|
+
|
|
|
+ outboundItemVO.setFromId(intoReturnItemVO.getReturnId());
|
|
|
+ outboundItemVO.setFromItemId(intoReturnItemVO.getItemId());
|
|
|
+ outboundItemVO.setSkuId(intoReturnItemVO.getSkuId());
|
|
|
+ outboundItemVO.setItemIndex(itemIndex + 1);
|
|
|
+ outboundItemVO.setPriceOut(intoReturnItemVO.getPriceReturn());
|
|
|
+ outboundItemVO.setInvId(intoReturnItemVO.getInvId());
|
|
|
+ itemList.add(outboundItemVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ outboundVO.setItemList(itemList);
|
|
|
+ //新建出库单
|
|
|
+ outboundService.insertOutBound(outboundVO);
|
|
|
|
|
|
return ResponseResultUtil.success();
|
|
|
}
|
|
|
@@ -193,16 +206,16 @@ public class IntoReturnService extends BaseService<IntoReturn> {
|
|
|
* @author : 于继渤
|
|
|
*/
|
|
|
@Transactional(rollbackFor = {Exception.class})
|
|
|
- public IntoReturnVO insertTotal(IntoReturnVO intoReturnVO) {
|
|
|
+ public IntoReturnVO insertTotal(IntoReturnVO intoReturnVO, PurchaseResponse purchaseResponse) {
|
|
|
// 获取单号
|
|
|
Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
|
|
|
intoReturnVO.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
|
|
|
.setReturnType(Constant.returnType.PURRETURN.getName());
|
|
|
- //查询采购订单上的客户信息
|
|
|
- PurchaseResponse purchaseResponse = purchaseMapper.selectById(intoReturnVO.getPurId());
|
|
|
+
|
|
|
//部门Id
|
|
|
intoReturnVO.setOrgId(purchaseResponse.getOrgId());
|
|
|
- intoReturnVO.setReturnStatus("退货状态-通过");
|
|
|
+ //退货状态 通过
|
|
|
+ intoReturnVO.setReturnStatus(Constant.returnStatus.OUT_REJECT_STATUS_ADOPT.getName());
|
|
|
//出库状态
|
|
|
intoReturnVO.setOutStatus(Constant.OutStatus.DAICHUKU.getName());
|
|
|
//制单员
|
|
|
@@ -257,53 +270,70 @@ public class IntoReturnService extends BaseService<IntoReturn> {
|
|
|
IntoReturnItem intoReturnItem = intoReturnItemConvert.convertToPo(intoReturnItemVO);
|
|
|
intoReturnItemService.insert(intoReturnItem);
|
|
|
|
|
|
-// //已出库数量
|
|
|
-
|
|
|
-// orderOutRejectItemVO.setOutOutQuantity(orderItem.getOutQuantity());
|
|
|
-// //已出库金额
|
|
|
-// orderOutRejectItemVO.setOutOutAmount(orderItem.getOutAmount());
|
|
|
-// //已出库退货数量
|
|
|
-// orderOutRejectItemVO.setOutRejectQuantity(orderItem.getRejectQuantity());
|
|
|
-// //已出库退货金额
|
|
|
-// orderOutRejectItemVO.setOutRejectAmount(orderItem.getRejectAmount());
|
|
|
-// //退货差价
|
|
|
-// orderOutRejectItemVO.setDifferencePrice(orderItem.getPriceSale().subtract(orderOutRejectItemVO.getOrderPriceSale()));
|
|
|
-// //退货差额
|
|
|
-// orderOutRejectItemVO.setDifferenceAmount(orderOutRejectItemVO.getDifferencePrice().multiply(orderOutRejectItemVO.getOutRejectQuantity()));
|
|
|
-// // 出库中数量 - 已出库数量 < 本次出库数量
|
|
|
-// if (orderOutRejectItemVO.getOutOutQuantity().add(orderOutRejectItemVO.getOutRejectQuantity()).compareTo(orderOutRejectItemVO.getRejectQuantity().negate()) == -1) {
|
|
|
-// throw new BaseBusinessException(ResponseCodeEnum.OPERATE_FAIL.getCode(), ErrorCodeEnum.ORDER_GREATER_THAN_THE_REFUNDABLE_QUANTITY.getmessage());
|
|
|
-// }
|
|
|
-// //出库状态 出库中
|
|
|
-// orderOutRejectItemVO.setOutStatus(Constant.OutStatusConstant.OUT_ORDER_NOT_OUT.getName());
|
|
|
-// //出库中金额
|
|
|
-// orderOutRejectItemVO.setOutGoingAmount(orderOutRejectItemVO.getRejectAmount().abs());
|
|
|
-// //出库中数量
|
|
|
-// orderOutRejectItemVO.setOutGoingQuantity(orderOutRejectItemVO.getRejectQuantity().abs());
|
|
|
-// //出库中时间
|
|
|
-// orderOutRejectItemVO.setOutGoingTime(LocalDateTime.now());
|
|
|
-// //自动出库赋值 已出库数量、已出库金额、最后出库时间
|
|
|
-// if (orderOutRejectVO.getFlgAutoIvt()) {
|
|
|
-// //已出库数量
|
|
|
-// orderOutRejectItemVO.setOutQuantity(orderOutRejectItemVO.getRejectQuantity().abs());
|
|
|
-// //已出库金额
|
|
|
-// orderOutRejectItemVO.setOutAmount(orderOutRejectItemVO.getRejectAmount().abs());
|
|
|
-// //最后出库时间
|
|
|
-// orderOutRejectItemVO.setOutTime(LocalDateTime.now());
|
|
|
-// }
|
|
|
-// //实体转换
|
|
|
-// OrderOutRejectItem orderOutRejectItem = orderOutRejectItemConvert.convertToPo(orderOutRejectItemVO);
|
|
|
-// //明细新建
|
|
|
-// orderOutRejectItemMapper.insert(orderOutRejectItem);
|
|
|
-// orderOutRejectItemVO.setItemId(orderOutRejectItem.getItemId());
|
|
|
-// }
|
|
|
-//
|
|
|
-// return orderOutRejectItemVOList;
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
return intoReturnItemVOList;
|
|
|
}
|
|
|
|
|
|
|
|
|
+ //TODO 未完成
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc : 冲正
|
|
|
+ * @date : 2022/6/28 16:58
|
|
|
+ * @author : 于继渤
|
|
|
+ */
|
|
|
+ @Transactional(rollbackFor = {Exception.class})
|
|
|
+ public ResponseResultVO<String> righting(String purId, List<String> intoReturnIdList) {
|
|
|
+ //根据订单id查询到订单
|
|
|
+ Purchase purchase = purchaseMapper.selectPurchaseByRighting(new PurchaseQuery().setPurId(purId));
|
|
|
+
|
|
|
+
|
|
|
+ //查询采购退货数据List
|
|
|
+ List<IntoReturn> intoReturnList = intoReturnMapper.selectReturnList(intoReturnIdList);
|
|
|
+
|
|
|
+ //根据订单id查询所有退货单
|
|
|
+ List<IntoReturnResponse> intoReturnResponsesList = intoReturnMapper.selectByCond(new IntoReturnQuery().setIntoReturnIdList(intoReturnIdList));
|
|
|
+
|
|
|
+
|
|
|
+ //本次冲正退货总额
|
|
|
+ BigDecimal sumReturnAmount = intoReturnResponsesList.stream().map(IntoReturnResponse::getSumAmount)
|
|
|
+ .reduce(BigDecimal.ZERO, BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+
|
|
|
+// for (IntoReturn intoReturn : intoReturnList) {
|
|
|
+//
|
|
|
+//
|
|
|
+// }
|
|
|
+ //订单退货金额、退货数量
|
|
|
+ purchase.setReturnAmt(purchase.getReturnAmt().subtract(intoReturnList.stream()
|
|
|
+ .map(IntoReturn::getSumAmount).reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(2, BigDecimal.ROUND_HALF_UP));
|
|
|
+ purchase.setReturnQty(purchase.getReturnQty().subtract(intoReturnList.stream()
|
|
|
+ .map(IntoReturn::getSumQuantity).reduce(BigDecimal.ZERO, BigDecimal::add)).setScale(6, BigDecimal.ROUND_HALF_UP));
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //TODO 未完成
|
|
|
+ @Transactional(rollbackFor = {Exception.class})
|
|
|
+ public void rightingByIbossReturnSuccess(IntoReturn intoReturn) {
|
|
|
+ //修改原单总单的状态
|
|
|
+ intoReturnMapper.updateById(new IntoReturn().setReturnId(intoReturn.getReturnId()).
|
|
|
+ setReturnStatus("退货状态-冲正"));
|
|
|
+
|
|
|
+
|
|
|
+ //region 根据id查询原始单据信息、生成逆向生成销售退货总单数据
|
|
|
+ //根据id查询原始单据信息
|
|
|
+ IntoReturn intoReturnRig = intoReturnMapper.selectReturnByRighting(intoReturn.getReturnId());
|
|
|
+ Map<String, Object> codeMap = commonService.getUniqueNoteCode(Constant.docNameConstant.OUTBOUND.getName(), false);
|
|
|
+ intoReturnRig.setReturnId(codeMap.get("outId").toString()).setReturnNo(codeMap.get("outNote").toString())
|
|
|
+ .setReturnType(Constant.returnType.PURRETURN.getName());
|
|
|
+
|
|
|
+ intoReturnRig.setReturnType("退货类型-冲正");
|
|
|
+ intoReturnRig.setReturnStatus("退货状态-冲正");
|
|
|
+ //退货单状态 冲正
|
|
|
+ intoReturnRig.setMakeTime(LocalDateTime.now());
|
|
|
+ //endregion
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|