|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.metadata.IPage; | 
|---|
|  |  |  | import com.vincent.rsf.framework.common.R; | 
|---|
|  |  |  | import com.vincent.rsf.framework.exception.CoolException; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.controller.params.IsptOrderParam; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.controller.params.QlyInspectAndItem; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.entity.*; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.enums.QlyIsptResult; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.enums.QlyIsptStatus; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.mapper.QlyInspectMapper; | 
|---|
|  |  |  | import com.vincent.rsf.server.manager.service.*; | 
|---|
|  |  |  | 
|---|
|  |  |  | private WarehouseAreasItemService warehouseAreasItemService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<AsnOrderItem> listByAsn(Map<String, Object> map) { | 
|---|
|  |  |  | public List<WkOrderItem> listByAsn(Map<String, Object> map) { | 
|---|
|  |  |  | if (Objects.isNull(map.get("asnCode"))) { | 
|---|
|  |  |  | throw new CoolException("收货单据明细编码不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>() | 
|---|
|  |  |  | .eq(AsnOrder::getCode, map.get("asnCode")) | 
|---|
|  |  |  | .ne(AsnOrder::getNtyStatus, 0)); | 
|---|
|  |  |  | if (Objects.isNull(asnOrder)) { | 
|---|
|  |  |  | WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() | 
|---|
|  |  |  | .eq(WkOrder::getCode, map.get("asnCode")) | 
|---|
|  |  |  | .ne(WkOrder::getNtyStatus, 0)); | 
|---|
|  |  |  | if (Objects.isNull(wkOrder)) { | 
|---|
|  |  |  | throw new CoolException("单据不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>() | 
|---|
|  |  |  | .eq(AsnOrderItem::getAsnCode, map.get("asnCode")) | 
|---|
|  |  |  | .eq(AsnOrderItem::getNtyStatus, 1)); | 
|---|
|  |  |  | if (asnOrderItems.isEmpty()) { | 
|---|
|  |  |  | List<WkOrderItem> wkOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>() | 
|---|
|  |  |  | .eq(WkOrderItem::getOrderCode, map.get("asnCode")) | 
|---|
|  |  |  | .eq(WkOrderItem::getNtyStatus, 1)); | 
|---|
|  |  |  | if (wkOrderItems.isEmpty()) { | 
|---|
|  |  |  | return new ArrayList<>(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return asnOrderItems; | 
|---|
|  |  |  | return wkOrderItems; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | 
|---|
|  |  |  | .select("asn_id as id, SUM(anfme) anfme, SUM(qty) qty, area_id, area_name, asn_code, asn_id, splr_id, splr_batch") | 
|---|
|  |  |  | .eq(StringUtils.isNotBlank(code), "asn_code", code) | 
|---|
|  |  |  | .lambda() | 
|---|
|  |  |  | .isNull(WarehouseAreasItem::getIsptResult) | 
|---|
|  |  |  | //                        .isNull(WarehouseAreasItem::getIsptResult) | 
|---|
|  |  |  | .lt(WarehouseAreasItem::getWorkQty, 1) | 
|---|
|  |  |  | .lt(WarehouseAreasItem::getQty, 1) | 
|---|
|  |  |  | .groupBy(WarehouseAreasItem::getAsnCode)); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Objects.isNull(param.getIds()) || param.getIds().isEmpty()) { | 
|---|
|  |  |  | throw new CoolException("单据ID不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, param.getIds())); | 
|---|
|  |  |  | if (asnOrders.isEmpty()) { | 
|---|
|  |  |  | List<WkOrder> wkOrders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, param.getIds())); | 
|---|
|  |  |  | if (wkOrders.isEmpty()) { | 
|---|
|  |  |  | throw new CoolException("单据不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, param.getIds())); | 
|---|
|  |  |  | 
|---|
|  |  |  | List<WarehouseAreasItem> orderItems = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>() | 
|---|
|  |  |  | .in(WarehouseAreasItem::getAsnId, param.getIds())); | 
|---|
|  |  |  | Map<Long, List<WarehouseAreasItem>> listMap = orderItems.stream().collect(Collectors.groupingBy(WarehouseAreasItem::getAsnId)); | 
|---|
|  |  |  | for (AsnOrder asnOrder : asnOrders) { | 
|---|
|  |  |  | for (WkOrder wkOrder : wkOrders) { | 
|---|
|  |  |  | QlyInspect inspect = new QlyInspect(); | 
|---|
|  |  |  | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_INSPECT_CODE, null); | 
|---|
|  |  |  | if (StringUtils.isBlank(ruleCode)) { | 
|---|
|  |  |  | throw new CoolException("策略错误:请检查策略「" + SerialRuleCode.SYS_INSPECT_CODE + "」是否设置正确!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | inspect.setCode(ruleCode) | 
|---|
|  |  |  | .setWkType(asnOrder.getWkType()) | 
|---|
|  |  |  | .setWkType(wkOrder.getWkType()) | 
|---|
|  |  |  | .setIsptStatus(QlyIsptStatus.QLY_ISPT_STAS_ING.val) | 
|---|
|  |  |  | .setCreateBy(loginUserId) | 
|---|
|  |  |  | .setAsnId(asnOrder.getId()) | 
|---|
|  |  |  | .setAsnCode(asnOrder.getCode()); | 
|---|
|  |  |  | .setAsnId(wkOrder.getId()) | 
|---|
|  |  |  | .setAsnCode(wkOrder.getCode()); | 
|---|
|  |  |  | /**获取单据明细*/ | 
|---|
|  |  |  | List<WarehouseAreasItem> asnOrderItems = listMap.get(asnOrder.getId()); | 
|---|
|  |  |  | List<WarehouseAreasItem> asnOrderItems = listMap.get(wkOrder.getId()); | 
|---|
|  |  |  | if (Objects.isNull(asnOrderItems) || asnOrderItems.isEmpty()) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | double anfme = asnOrderItems.stream().mapToDouble(WarehouseAreasItem::getAnfme).sum(); | 
|---|
|  |  |  | inspect.setRcptQty(anfme); | 
|---|
|  |  |  | if (!this.save(inspect)) { | 
|---|
|  |  |  | throw new CoolException("单据" + asnOrder.getCode() + "保存失败!!"); | 
|---|
|  |  |  | throw new CoolException("单据" + wkOrder.getCode() + "保存失败!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<QlyIsptItem> items = new ArrayList<>(); | 
|---|
|  |  |  | for (WarehouseAreasItem orderItem : asnOrderItems) { | 
|---|
|  |  |  | 
|---|
|  |  |  | .setIspectId(inspect.getId()) | 
|---|
|  |  |  | .setRcptQty(orderItem.getAnfme()) | 
|---|
|  |  |  | .setRcptId(orderItem.getId()) | 
|---|
|  |  |  | .setPlatItemId(orderItem.getPlatItemId()) | 
|---|
|  |  |  | .setPlatOrderCode(orderItem.getPlatOrderCode()) | 
|---|
|  |  |  | .setPlatWorkCode(orderItem.getPlatWorkCode()) | 
|---|
|  |  |  | .setProjectCode(orderItem.getProjectCode()) | 
|---|
|  |  |  | .setAnfme(0.0) | 
|---|
|  |  |  | .setFieldsIndex(orderItem.getFieldsIndex()) | 
|---|
|  |  |  | .setSplrBatch(orderItem.getSplrBatch()) | 
|---|
|  |  |  | .setSplrName(orderItem.getSplrId$()) | 
|---|
|  |  |  | .setCreateBy(loginUserId) | 
|---|
|  |  |  | .setUpdateBy(loginUserId) | 
|---|
|  |  |  | .setDlyQty(orderItem.getAnfme()); | 
|---|
|  |  |  | items.add(isptItem); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | if (Objects.isNull(qlyInspect.getAsnCode()) || StringUtils.isBlank(qlyInspect.getAsnCode())) { | 
|---|
|  |  |  | throw new CoolException("收货单号不能为空!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | AsnOrder asnOrder = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, qlyInspect.getAsnCode())); | 
|---|
|  |  |  | if (Objects.isNull(asnOrder)) { | 
|---|
|  |  |  | WkOrder wkOrder = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getId, qlyInspect.getAsnCode())); | 
|---|
|  |  |  | if (Objects.isNull(wkOrder)) { | 
|---|
|  |  |  | throw new CoolException("收货单不存在!!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | qlyInspect.setAsnCode(asnOrder.getCode()).setAsnId(asnOrder.getId()); | 
|---|
|  |  |  | qlyInspect.setAsnCode(wkOrder.getCode()).setAsnId(wkOrder.getId()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return this.save(qlyInspect); | 
|---|
|  |  |  | } | 
|---|