|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.wms.asrs.controller; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.zy.asrs.framework.common.R; | 
|---|
|  |  |  | import com.zy.asrs.wms.asrs.controller.req.OutReq; | 
|---|
|  |  |  | import com.zy.asrs.wms.asrs.entity.LocDetl; | 
|---|
|  |  |  | import com.zy.asrs.wms.asrs.manage.OutManage; | 
|---|
|  |  |  | import com.zy.asrs.wms.system.controller.BaseController; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 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.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 这里处理所有的出库流程的接口 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping("/api") | 
|---|
|  |  |  | public class OutController extends BaseController { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OutManage outManage; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取库存 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param map | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/out/getStock") | 
|---|
|  |  |  | public R page(@RequestBody Map<String, Object> map) { | 
|---|
|  |  |  | List<LocDetl> suitableMat = outManage.getSuitableMat(map); | 
|---|
|  |  |  | return R.ok(suitableMat); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 出库 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param outReq 出库列表 | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @PostMapping("/out/start") | 
|---|
|  |  |  | public R page(@RequestBody OutReq outReq) { | 
|---|
|  |  |  | outManage.out(outReq); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 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<OrderOutBatchPreviewDto> previewDtos = outManage.orderOutBatchPreview(param); | 
|---|
|  |  |  | return R.ok().add(previewDtos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("/out/orderOut/batch") | 
|---|
|  |  |  | @OperationLog("批量出库") | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R orderOutBatch(@RequestBody List<OrderOutBatchPreviewDto> param) { | 
|---|
|  |  |  | outManage.orderOutBatch(param); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("/out/orderOut/merge/preview") | 
|---|
|  |  |  | @OperationLog("预览合并订单") | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R orderOutMergePreview(@RequestBody OrderOutMergePreviewParam param) { | 
|---|
|  |  |  | List<MergePreviewDto> dtos = outManage.orderOutMergePreview(param); | 
|---|
|  |  |  | return R.ok().add(dtos); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @PostMapping("/out/orderOut/merge/loc/preview") | 
|---|
|  |  |  | @OperationLog("预览合并订单出库") | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public R orderOutMergeLocPreview(@RequestBody List<MergePreviewDto> param) { | 
|---|
|  |  |  | List<MergePreviewResultDto> 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<Long> orderIds = new ArrayList<>(); | 
|---|
|  |  |  | List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getWaveId, waveId)); | 
|---|
|  |  |  | for (Order order : orders) { | 
|---|
|  |  |  | orderIds.add(order.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //获取订单波次明细 | 
|---|
|  |  |  | List<MergePreviewDto> dtos = new ArrayList<>(); | 
|---|
|  |  |  | List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, waveId)); | 
|---|
|  |  |  | for (WaveDetl waveDetl : waveDetls) { | 
|---|
|  |  |  | MergePreviewDto dto = new MergePreviewDto(); | 
|---|
|  |  |  | dtos.add(dto); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | double anfme = Math.round((waveDetl.getAnfme() - waveDetl.getWorkQty()) * 1000) / 1000.0; | 
|---|
|  |  |  | dto.setMatnr(waveDetl.getMatnr()); | 
|---|
|  |  |  | dto.setBatch(waveDetl.getBatch()); | 
|---|
|  |  |  | dto.setStatus(0); | 
|---|
|  |  |  | dto.setWorkQty(0.0); | 
|---|
|  |  |  | dto.setAnfme(anfme); | 
|---|
|  |  |  | dto.setOrderIds(orderIds); | 
|---|
|  |  |  | dto.setFieldParams(JSON.parseArray(waveDetl.getFieldParams(), FieldParam.class)); | 
|---|
|  |  |  | dto.setFieldParamsEncode(waveDetl.getFieldParams()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //获取波次明细库位信息 | 
|---|
|  |  |  | List<MergePreviewResultDto> 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<Long> waveIds) { | 
|---|
|  |  |  | outManage.cancelWave(waveIds); | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|