| | |
| | |
|
| | | import com.alibaba.fastjson.JSONObject;
|
| | | 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.extension.service.IService;
|
| | | import com.zy.asrs.framework.common.R;
|
| | |
| | | import com.zy.asrs.wms.apis.wcs.entity.response.CommonReponse;
|
| | | import com.zy.asrs.wms.apis.wcs.utils.HttpEssUtils;
|
| | | import com.zy.asrs.wms.asrs.entity.*;
|
| | | import com.zy.asrs.wms.asrs.entity.dto.MatnrDetlDto;
|
| | | import com.zy.asrs.wms.asrs.entity.dto.PickSheetDetlDto;
|
| | | import com.zy.asrs.wms.asrs.entity.dto.ShippingOrderDetlDto;
|
| | | import com.zy.asrs.wms.asrs.entity.enums.*;
|
| | |
| | |
|
| | | //组拖通知档
|
| | | waitPakins.forEach(pakin -> {
|
| | | waitPakinService.comb(pakin);
|
| | | waitPakinService.comb(pakin, ordersParam.getInType());
|
| | | });
|
| | |
|
| | |
|
| | |
| | | orders.forEach(order -> {
|
| | | List<OrderDetl> detls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
|
| | | Double sum = detls.stream().mapToDouble(OrderDetl::getQty).sum();
|
| | | Double summed = detls.stream().mapToDouble(OrderDetl::getWorkQty).sum();
|
| | | Double v = Math.round((sum + summed) * 1000) / 1000.0;
|
| | | // Double summed = detls.stream().mapToDouble(OrderDetl::getWorkQty).sum();
|
| | | // Double v = Math.round((sum ) * 1000) / 1000.0;
|
| | | Double anfme = detls.stream().mapToDouble(OrderDetl::getAnfme).sum();
|
| | | if (v.compareTo(anfme) == 0.0) {
|
| | | if (sum.compareTo(anfme) == 0.0) {
|
| | | order.setOrderSettle(OrderSettleType.COMPLETE.val());
|
| | | if (!orderService.updateById(order)) {
|
| | | throw new CoolException("单据状态修改失败!!");
|
| | |
| | | }
|
| | | }
|
| | | });
|
| | | |
| | | //判断是否为波次单据
|
| | | if (pickSheet.getType().equals(1)) {
|
| | | //删除波次及对应明细信息
|
| | | if (!waveService.remove(new LambdaQueryWrapper<Wave>().eq(Wave::getId, pickSheet.getWaveId()))) {
|
| | | throw new CoolException("波次列表单据删除失败!!");
|
| | | }
|
| | |
|
| | | //删除波次及对应明细信息
|
| | | if (!waveService.remove(new LambdaQueryWrapper<Wave>().eq(Wave::getId, pickSheet.getWaveId()))) {
|
| | | throw new CoolException("波次列表单据删除失败!!");
|
| | | }
|
| | | if (!waveDetlService.remove(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, pickSheet.getWaveId()))) {
|
| | | throw new CoolException("波次明细列表删除失败!!");
|
| | | }
|
| | |
|
| | | if (!waveDetlService.remove(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, pickSheet.getWaveId()))) {
|
| | | throw new CoolException("波次明细列表删除失败!!");
|
| | | }
|
| | |
|
| | | List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, pickSheet.getWaveId()));
|
| | | if (orders.isEmpty()) {
|
| | | throw new CoolException("波次订单不存在!!");
|
| | | }
|
| | | List<Long> list = orders.stream().map(Order::getId).collect(Collectors.toList());
|
| | | boolean remove = orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, list));
|
| | | if (!remove) {
|
| | | throw new CoolException("原始订单明细删除失败!!");
|
| | | }
|
| | | if (!orderService.remove(new LambdaQueryWrapper<Order>().in(Order::getId, list))) {
|
| | | throw new CoolException("原始订单删除失败!!");
|
| | | List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, pickSheet.getWaveId()));
|
| | | if (orders.isEmpty()) {
|
| | | throw new CoolException("波次订单不存在!!");
|
| | | }
|
| | | List<Long> list = orders.stream().map(Order::getId).collect(Collectors.toList());
|
| | | boolean remove = orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, list));
|
| | | if (!remove) {
|
| | | throw new CoolException("原始订单明细删除失败!!");
|
| | | }
|
| | | if (!orderService.remove(new LambdaQueryWrapper<Order>().in(Order::getId, list))) {
|
| | | throw new CoolException("原始订单删除失败!!");
|
| | | }
|
| | | }
|
| | |
|
| | | return true;
|
| | |
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public boolean bindOrderBySite(Map<String, Object> param) {
|
| | | CacheSite siteNo = cacheSiteMapper.selectOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getSiteNo, param.get("siteNo")), false);
|
| | | CacheSite siteNo = cacheSiteMapper.selectOne(new LambdaQueryWrapper<CacheSite>()
|
| | | .eq(CacheSite::getSiteNo, param.get("siteNo")), false);
|
| | | if (Objects.isNull(siteNo)) {
|
| | | throw new CoolException("站点异常!!");
|
| | | }
|
| | |
| | | if (!StringUtil.isNullOrEmpty(siteNo.getOrderNo())) {
|
| | | throw new CoolException("当前播种站点已绑定订单!!");
|
| | | }
|
| | | Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, param.get("orderNo").toString()));
|
| | | Order order = orderService.getOne(new LambdaQueryWrapper<Order>()
|
| | | .eq(Order::getOrderNo, param.get("orderNo").toString()));
|
| | | if (Objects.isNull(order)) {
|
| | | throw new CoolException("绑定订单不存在!!");
|
| | | }
|
| | |
| | | throw new CoolException("订单播种位绑定失败!!");
|
| | | }
|
| | |
|
| | | if (!waveSeedMapper.update(new LambdaUpdateWrapper<WaveSeed>()
|
| | | .eq(WaveSeed::getOrderNo, order.getOrderNo())
|
| | | .set(WaveSeed::getSiteId, siteNo.getId())
|
| | | .set(WaveSeed::getSiteNo, siteNo.getSiteNo()))) {
|
| | | throw new CoolException("播种站点更新失败!!");
|
| | | }
|
| | | // if (!waveSeedMapper.update(new LambdaUpdateWrapper<WaveSeed>()
|
| | | // .eq(WaveSeed::getOrderNo, order.getOrderNo())
|
| | | // .set(WaveSeed::getSiteId, siteNo.getId())
|
| | | // .set(WaveSeed::getSiteNo, siteNo.getSiteNo()))) {
|
| | | // throw new CoolException("播种站点更新失败!!");
|
| | | // }
|
| | | //绑定成功,播种墙亮灯
|
| | | sowLightMange(siteNo.getSiteNo(), order, "LIGHT");
|
| | | } else {
|
| | |
| | | public void sowLightMange(String siteNo, Order order, String light) {
|
| | | // 到达拣选位,控制播种墙亮灯
|
| | | CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>()
|
| | | .eq(CacheSite::getSiteNo, siteNo));
|
| | | .eq(CacheSite::getSiteNo, siteNo));
|
| | | if (Objects.isNull(cacheSite)) {
|
| | | log.error("条码:{},未找到播种墙亮灯", siteNo);
|
| | | throw new CoolException("未找到播种墙");
|
| | |
| | | if (Objects.isNull(detls)) {
|
| | | throw new CoolException("数据错误,订单明细不存在!!");
|
| | | }
|
| | | int anfme = (int)detls.stream().mapToDouble(OrderDetl::getAnfme).sum();
|
| | | int anfme = (int) detls.stream().mapToDouble(OrderDetl::getAnfme).sum();
|
| | | SlapLightControlParam slapLightControlParam = new SlapLightControlParam();
|
| | | slapLightControlParam
|
| | | .setControllerCode(cacheSite.getMemo())
|
| | |
| | | log.info("播种墙亮灯下发", JSONObject.toJSONString(slapLightControlParam));
|
| | | CommonReponse response = HttpEssUtils.post("到达拣选位,播种墙亮灯", HttpEssUtils.PLT_SEND_COMMAND, slapLightControlParam);
|
| | | if (response.getCode().equals(0)) {
|
| | | log.info("播种墙{}亮灯成功", cacheSite.getSiteNo());
|
| | | log.info("播种墙{}亮灯成功", cacheSite.getSiteNo());
|
| | | } else {
|
| | | log.info("播种墙{}亮灯失败", cacheSite.getSiteNo());
|
| | | }
|
| | |
| | | */
|
| | | @Override
|
| | | public R getMatsByCode(String matnr) {
|
| | | return R.ok().add(matService.list(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matnr)));
|
| | | QueryWrapper<LocDetl> wrapper = new QueryWrapper<>();
|
| | | wrapper.eq("matnr", matnr).select("matnr, SUM(anfme) anfme");
|
| | | LocDetl detl = locDetlService.getOne(wrapper);
|
| | |
|
| | | Mat one = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, detl.getMatnr()), false);
|
| | | if (Objects.isNull(one)) {
|
| | | throw new CoolException("物料不存在!!");
|
| | | }
|
| | | one.setAnfme(detl.getAnfme());
|
| | | return R.ok().add(Arrays.asList(one));
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | List<LocDetl> detls = locDetlService.list(new LambdaQueryWrapper<LocDetl>()
|
| | | .eq(LocDetl::getLocNo, barcode));
|
| | | for (int i = 0; i < detls.size(); i++) {
|
| | | // detls.get(i).setMats(matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, detls.get(i).getMatnr())));
|
| | | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getId, detls.get(i).getMatId()));
|
| | | MatnrDetlDto detlDto = new MatnrDetlDto();
|
| | | detlDto.setTspec(mat.getSpecs())
|
| | | .setType(mat.getModel())
|
| | | .setMatnrName(mat.getMaktx())
|
| | | .setMatnrNo(mat.getMatnr());
|
| | | detls.get(i).setMats(detlDto);
|
| | | }
|
| | | return detls;
|
| | | }
|
| | |
| | | .eq(Loc::getLocStsId, LocStsType.F.val())
|
| | | .eq(Loc::getLocNo, param.get("barcode")));
|
| | | if (Objects.isNull(barcode)) {
|
| | | throw new CoolException("源库位明细不存在!!");
|
| | | throw new CoolException(param.get("barcode") + "库位状态不可执行此操作!!");
|
| | | }
|
| | | Loc tarCode = locService.getOne(new LambdaQueryWrapper<Loc>()
|
| | | .eq(Loc::getLocStsId, LocStsType.O.val())
|
| | |
| | | List<LocArea> locAreas = locAreaService.list(new LambdaQueryWrapper<LocArea>()
|
| | | .in(LocArea::getLocId, ids)
|
| | | .eq(LocArea::getTypeId, LocAreaTypeSts.LOC_AREA_TYPE_FLAT.id));
|
| | | if (!locAreas.isEmpty() && locAreas.size() == ids.size()) {
|
| | | if (!locAreas.isEmpty() && locAreas.size() != ids.size()) {
|
| | | throw new CoolException("非平库不可执行此操作!!");
|
| | | }
|
| | |
|
| | |
| | | return R.error("库位明细不存在!!");
|
| | | }
|
| | |
|
| | | if (!locService.update(new LambdaUpdateWrapper<Loc>()
|
| | | .eq(Loc::getLocNo, barcode.getLocNo())
|
| | | .set(Loc::getBarcode, null)
|
| | | .set(Loc::getLocStsId, LocStsType.O.val()))) {
|
| | | throw new CoolException("源库位状态修改失败!!");
|
| | | }
|
| | |
|
| | | if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getLocNo, tarCode.getLocNo())
|
| | | .set(Loc::getBarcode, barcode.getBarcode())
|
| | | .set(Loc::getLocStsId, LocStsType.F.val()))) {
|
| | | throw new CoolException("目标库位修改失败!!");
|
| | | }
|
| | |
|
| | | if (!locDetlService.update(new LambdaUpdateWrapper<LocDetl>()
|
| | | .eq(LocDetl::getLocId, barcode.getId())
|
| | | .set(LocDetl::getLocId, tarCode.getId())
|