|  |  |  | 
|---|
|  |  |  | package com.vincent.rsf.server.manager.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.vincent.rsf.framework.common.R; | 
|---|
|  |  |  | import com.vincent.rsf.framework.exception.CoolException; | 
|---|
|  |  |  | import com.vincent.rsf.server.api.entity.dto.PoItemsDto; | 
|---|
|  |  |  | import com.vincent.rsf.server.api.service.ErpApiService; | 
|---|
|  |  |  | import com.vincent.rsf.server.api.service.ReceiveMsgService; | 
|---|
|  |  |  | import com.vincent.rsf.server.api.service.ReportMsgService; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.entity.AsnOrderItem; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.entity.Purchase; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.entity.PurchaseItem; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.mapper.AsnOrderMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.entity.AsnOrder; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.mapper.PurchaseMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.AsnOrderItemService; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.AsnOrderService; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.constant.SerialRuleCode; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.entity.SerialRule; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.mapper.SerialRuleMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.system.utils.SerialRuleUtils; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Set; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | public class AsnOrderServiceImpl extends ServiceImpl<AsnOrderMapper, AsnOrder> implements AsnOrderService { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ErpApiService erpApiService; | 
|---|
|  |  |  | private ReceiveMsgService receiveMsgService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ReportMsgService reportMsgService; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private PurchaseMapper purchaseMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AsnOrderItemService asnOrderItemService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private AsnOrderItemMapper asnOrderItemMapper; | 
|---|
|  |  |  | private SerialRuleMapper serialRuleMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public boolean notifyInspect(List<AsnOrder> orders) { | 
|---|
|  |  |  | 
|---|
|  |  |  | throw new CoolException("ASN单据不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<PoItemsDto> items = purchaseMapper.poList(asnIds); | 
|---|
|  |  |  | if (erpApiService.reportInspectNotify(items)) { | 
|---|
|  |  |  | if (reportMsgService.reportInspectNotify(items)) { | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R generateBarcode(List<AsnOrder> orders) { | 
|---|
|  |  |  | orders.forEach(order -> { | 
|---|
|  |  |  | List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId())); | 
|---|
|  |  |  | if (!items.isEmpty()) { | 
|---|
|  |  |  | items.forEach(item -> { | 
|---|
|  |  |  | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, item); | 
|---|
|  |  |  | item.setTrackCode(ruleCode); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | if (!asnOrderItemService.saveOrUpdateBatch(items)) { | 
|---|
|  |  |  | throw new CoolException("生成条码失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<AsnOrder> getListByMatnr(Map<String, String> params) { | 
|---|
|  |  |  | if (Objects.isNull(params)) { | 
|---|
|  |  |  | throw new CoolException("查询条件不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>() | 
|---|
|  |  |  | .like(!Objects.isNull(params.get("maktx")), AsnOrderItem::getMaktx, params.get("maktx")) | 
|---|
|  |  |  | .eq(!Objects.isNull(params.get("matnrCode")), AsnOrderItem::getMatnrCode, params.get("matnrCode"))); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (orderItems.isEmpty()) { | 
|---|
|  |  |  | return new ArrayList<>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<Long> longList = orderItems.stream().map(AsnOrderItem::getAsnId).collect(Collectors.toList()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return this.listByIds(longList); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R saveOrderAndItems(AsnOrderAndItemsParams params) { | 
|---|
|  |  |  | if (Objects.isNull(params.getOrders())) { | 
|---|
|  |  |  | throw new CoolException("主单信息不能为空"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AsnOrder orders = params.getOrders(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ASN_ORDER, orders); | 
|---|
|  |  |  | if (Objects.isNull(ruleCode)) { | 
|---|
|  |  |  | throw new CoolException("收货通知单编码生成失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orders.setCode(ruleCode); | 
|---|
|  |  |  | if (!this.save(orders)) { | 
|---|
|  |  |  | throw new CoolException("主单保存失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (params.getItems().isEmpty()) { | 
|---|
|  |  |  | throw new CoolException("收货通知单明细不能为寒食节!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | params.getItems().forEach(item -> { | 
|---|
|  |  |  | item.put("asnId", orders.getId()); | 
|---|
|  |  |  | item.put("asnCode", orders.getCode()); | 
|---|
|  |  |  | item.put("poCode", orders.getPoCode()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!asnOrderItemService.fieldsSave(item)) { | 
|---|
|  |  |  | throw new CoolException("明细保存失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return R.ok("保存成功!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|