package com.zy.asrs.wms.asrs.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.common.R; import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.asrs.entity.Order; import com.zy.asrs.wms.asrs.entity.WaveDetl; import com.zy.asrs.wms.asrs.entity.dto.MergePreviewDto; import com.zy.asrs.wms.asrs.entity.dto.MergePreviewResultDto; import com.zy.asrs.wms.asrs.entity.dto.OrderOutBatchPreviewDto; import com.zy.asrs.wms.asrs.entity.param.*; import com.zy.asrs.wms.asrs.manage.OutManage; import com.zy.asrs.wms.asrs.service.OrderService; import com.zy.asrs.wms.asrs.service.WaveDetlService; import com.zy.asrs.wms.common.annotation.OperationLog; import com.zy.asrs.wms.system.controller.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping("/api") public class OutController extends BaseController { @Autowired private OutManage outManage; @Autowired private OrderService orderService; @Autowired private WaveDetlService waveDetlService; /** * 出库 */ @PostMapping("/out/start") @OperationLog("出库") @Transactional public R start(@RequestBody OutParam param) { outManage.out(param); return R.ok(); } @PostMapping("/out/orderOut/batch/preview") @OperationLog("批量出库预览") @Transactional public R orderOutBatchPreview(@RequestBody OrderOutBatchPreviewParam param) { List previewDtos = outManage.orderOutBatchPreview(param); return R.ok().add(previewDtos); } @PostMapping("/out/orderOut/batch") @OperationLog("批量出库") @Transactional public R orderOutBatch(@RequestBody List param) { outManage.orderOutBatch(param); return R.ok(); } @PostMapping("/out/orderOut/merge/preview") @OperationLog("预览合并订单") @Transactional public R orderOutMergePreview(@RequestBody OrderOutMergePreviewParam param) { List dtos = outManage.orderOutMergePreview(param); return R.ok().add(dtos); } @PostMapping("/out/orderOut/merge/loc/preview") @OperationLog("预览合并订单出库") @Transactional public R orderOutMergeLocPreview(@RequestBody List param) { List dtos = outManage.orderOutMergeLocPreview(param); return R.ok().add(dtos); } @PostMapping("/out/orderOut/wave/preview") @OperationLog("预览波次出库") @Transactional public R orderOutWavePreview(@RequestBody OrderOutWavePreviewParam param) { if (param == null) { throw new CoolException("参数不能为空"); } Long waveId = param.getWaveId(); if (waveId == null) { throw new CoolException("波次不能为空"); } List orderIds = new ArrayList<>(); List orders = orderService.list(new LambdaQueryWrapper().eq(Order::getWaveId, waveId)); for (Order order : orders) { orderIds.add(order.getId()); } List dtos = new ArrayList<>(); List waveDetls = waveDetlService.list(new LambdaQueryWrapper().eq(WaveDetl::getWaveId, waveId)); for (WaveDetl waveDetl : waveDetls) { MergePreviewDto dto = new MergePreviewDto(); dtos.add(dto); double anfme = waveDetl.getAnfme() - waveDetl.getWorkQty(); dto.setMatnr(waveDetl.getMatnr()); dto.setBatch(waveDetl.getBatch()); dto.setAnfme(anfme); dto.setOrderIds(orderIds); dto.setFieldParams(JSON.parseArray(waveDetl.getFieldParams(), FieldParam.class)); dto.setFieldParamsEncode(waveDetl.getFieldParams()); } List resultDtos = outManage.orderOutMergeLocPreview(dtos); return R.ok().add(resultDtos); } @PostMapping("/out/orderOut/merge/wave") @OperationLog("波次合并订单出库") @Transactional public R orderOutMerge(@RequestBody OrderOutMergeParamDto param) { outManage.orderOutMergeWave(param); return R.ok(); } @PostMapping("/out/wave/generate") @OperationLog("生成波次") @Transactional public R generateWave(@RequestBody GenerateWaveParam param) { outManage.generateWave(param); return R.ok(); } @PostMapping("/out/wave/cancel") @OperationLog("取消波次") @Transactional public R cancelWave(@RequestBody List waveIds) { outManage.cancelWave(waveIds); return R.ok(); } }