package com.zy.asrs.wms.asrs.controller;  
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;  
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;  
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;  
 | 
import com.zy.asrs.framework.common.Cools;  
 | 
import com.zy.asrs.framework.common.R;  
 | 
import com.zy.asrs.framework.exception.CoolException;  
 | 
import com.zy.asrs.wms.asrs.entity.*;  
 | 
import com.zy.asrs.wms.asrs.entity.enums.OrderType;  
 | 
import com.zy.asrs.wms.asrs.entity.template.WaitPakinTemplate;  
 | 
import com.zy.asrs.wms.asrs.service.*;  
 | 
import com.zy.asrs.wms.common.annotation.OperationLog;  
 | 
import com.zy.asrs.wms.common.domain.BaseParam;  
 | 
import com.zy.asrs.wms.common.domain.KeyValVo;  
 | 
import com.zy.asrs.wms.common.domain.PageParam;  
 | 
import com.zy.asrs.wms.system.controller.BaseController;  
 | 
import com.zy.asrs.wms.utils.ExcelUtil;  
 | 
import org.springframework.beans.factory.annotation.Autowired;  
 | 
import org.springframework.security.access.prepost.PreAuthorize;  
 | 
import org.springframework.web.bind.annotation.*;  
 | 
import org.springframework.web.multipart.MultipartFile;  
 | 
  
 | 
import javax.servlet.http.HttpServletResponse;  
 | 
import java.util.*;  
 | 
  
 | 
@RestController  
 | 
@RequestMapping("/api")  
 | 
public class WaitPakinController extends BaseController {  
 | 
  
 | 
    @Autowired  
 | 
    private WaitPakinService waitPakinService;  
 | 
    @Autowired  
 | 
    private OrderService orderService;  
 | 
    @Autowired  
 | 
    private OrderDetlService orderDetlService;  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @PostMapping("/waitPakin/page")  
 | 
    public R page(@RequestBody Map<String, Object> map) {  
 | 
        BaseParam baseParam = buildParam(map, BaseParam.class);  
 | 
        PageParam<WaitPakin, BaseParam> pageParam = new PageParam<>(baseParam, WaitPakin.class);  
 | 
        return R.ok().add(waitPakinService.page(pageParam, pageParam.buildWrapper(true)));  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @PostMapping("/waitPakin/list")  
 | 
    public R list(@RequestBody Map<String, Object> map) {  
 | 
        return R.ok().add(waitPakinService.list());  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @GetMapping("/waitPakin/{id}")  
 | 
    public R get(@PathVariable("id") Long id) {  
 | 
        return R.ok().add(waitPakinService.getById(id));  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @GetMapping("/waitPakin/orderDetlId/{orderDetlId}")  
 | 
    public R getByOrderDetlId(@PathVariable("orderDetlId") Long orderDetlId) {  
 | 
        return R.ok().add(waitPakinService.getByOrderDetlId(orderDetlId));  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:save')")  
 | 
    @OperationLog("添加组托通知档")  
 | 
    @PostMapping("/waitPakin/save")  
 | 
    public R save(@RequestBody WaitPakin waitPakin) {  
 | 
        try {  
 | 
            if (waitPakin.getBarcode().contains("PK")) {  
 | 
                waitPakinService.comb(waitPakin, OrderType.PK_IN_ORDER.id);  
 | 
            } else {  
 | 
                waitPakinService.comb(waitPakin, OrderType.UTC_IN_ORDER.id);  
 | 
            }  
 | 
        } catch (Exception e) {  
 | 
            e.printStackTrace();  
 | 
            return R.error(e.getMessage());  
 | 
        }  
 | 
        return R.ok("添加成功");  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:update')")  
 | 
    @OperationLog("修改组托通知档")  
 | 
    @PostMapping("/waitPakin/update")  
 | 
    public R update(@RequestBody WaitPakin waitPakin) {  
 | 
        if (!waitPakinService.updateById(waitPakin)) {  
 | 
            return R.error("修改失败");  
 | 
        }  
 | 
        return R.ok("修改成功");  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:remove')")  
 | 
    @OperationLog("删除组托通知档")  
 | 
    @PostMapping("/waitPakin/remove/{ids}")  
 | 
    public R remove(@PathVariable Long[] ids) {  
 | 
        if (!waitPakinService.removeByIds(Arrays.asList(ids))) {  
 | 
            return R.error("删除失败");  
 | 
        }  
 | 
        return R.ok("删除成功");  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @PostMapping("/waitPakin/query")  
 | 
    public R query(@RequestParam(required = false) String condition) {  
 | 
        List<KeyValVo> vos = new ArrayList<>();  
 | 
        LambdaQueryWrapper<WaitPakin> wrapper = new LambdaQueryWrapper<>();  
 | 
        if (!Cools.isEmpty(condition)) {  
 | 
            wrapper.like(WaitPakin::getId, condition);  
 | 
        }  
 | 
        waitPakinService.page(new Page<>(1, 30), wrapper).getRecords().forEach(  
 | 
                item -> vos.add(new KeyValVo(item.getId(), item.getId()))  
 | 
        );  
 | 
        return R.ok().add(vos);  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @PostMapping("/waitPakin/barcode/query")  
 | 
    public R barcodeQuery(@RequestParam(required = false) String condition) {  
 | 
        List<KeyValVo> vos = new ArrayList<>();  
 | 
        QueryWrapper<WaitPakin> queryWrapper = new QueryWrapper<>();  
 | 
        queryWrapper.select("distinct barcode");  
 | 
        if (!Cools.isEmpty(condition)) {  
 | 
            queryWrapper.like("barcode", condition);  
 | 
        }  
 | 
        waitPakinService.page(new Page<>(1, 30), queryWrapper).getRecords().forEach(  
 | 
                item -> vos.add(new KeyValVo(item.getBarcode(), item.getBarcode()))  
 | 
        );  
 | 
        return R.ok().add(vos);  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @PostMapping("/waitPakin/export")  
 | 
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {  
 | 
        BaseParam baseParam = buildParam(map, BaseParam.class);  
 | 
        PageParam<WaitPakin, BaseParam> pageParam = new PageParam<>(baseParam, WaitPakin.class);  
 | 
        List<WaitPakin> data = waitPakinService.list(pageParam.buildWrapper(true));  
 | 
  
 | 
        ExcelUtil.build(ExcelUtil.create(data, WaitPakin.class), response);  
 | 
    }  
 | 
  
 | 
    @PreAuthorize("hasAuthority('asrs:waitPakin:list')")  
 | 
    @PostMapping("/waitPakin/exportTemplate")  
 | 
    public void exportTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {  
 | 
        ArrayList<WaitPakinTemplate> list = new ArrayList<>();  
 | 
        ExcelUtil.build(ExcelUtil.create(list, WaitPakinTemplate.class), response);  
 | 
    }  
 | 
  
 | 
    @PostMapping("/waitPakin/upload")  
 | 
    public R upload(@RequestParam("file") MultipartFile file) {  
 | 
        List<WaitPakinTemplate> list = ExcelUtil.parseExcelFile(file, WaitPakinTemplate.class);  
 | 
        for (WaitPakinTemplate waitPakinTemplate : list) {  
 | 
            Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, waitPakinTemplate.getOrderNo()).eq(Order::getStatus, 1));  
 | 
            if (order == null) {  
 | 
                throw new CoolException("订单不存在");  
 | 
            }  
 | 
  
 | 
            LambdaQueryWrapper<OrderDetl> wrapper = new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId());  
 | 
            if (!Cools.isEmpty(waitPakinTemplate.getBatch())) {  
 | 
                wrapper.eq(OrderDetl::getBatch, waitPakinTemplate.getBatch());  
 | 
            }  
 | 
            List<OrderDetl> orderDetls = orderDetlService.list(wrapper);  
 | 
            if (orderDetls.isEmpty()) {  
 | 
                throw new CoolException("订单明细不存在");  
 | 
            }  
 | 
  
 | 
            OrderDetl orderDetl = null;  
 | 
            for (OrderDetl detl : orderDetls) {  
 | 
                Mat mat = detl.getMat$();  
 | 
                if (mat.getMatnr().equals(waitPakinTemplate.getMatnr())) {  
 | 
                    orderDetl = detl;  
 | 
                }  
 | 
            }  
 | 
  
 | 
            if (orderDetl == null) {  
 | 
                throw new CoolException("订单明细不存在");  
 | 
            }  
 | 
  
 | 
            WaitPakin waitPakin = new WaitPakin();  
 | 
            waitPakin.setOrderId(order.getId());  
 | 
            waitPakin.setOrderNo(order.getOrderNo());  
 | 
            waitPakin.setAnfme(waitPakinTemplate.getAnfme());  
 | 
            waitPakin.setBarcode(waitPakinTemplate.getBarcode());  
 | 
            waitPakin.setDetlId(orderDetl.getId());  
 | 
            waitPakin.setMatnr(orderDetl.getMat$().getMatnr());  
 | 
            waitPakin.setBatch(orderDetl.getBatch());  
 | 
            if (waitPakinTemplate.getBarcode().contains("PK")) {  
 | 
                waitPakinService.comb(waitPakin, OrderType.PK_IN_ORDER.id);  
 | 
            } else {  
 | 
                waitPakinService.comb(waitPakin, OrderType.UTC_IN_ORDER.id);  
 | 
            }  
 | 
        }  
 | 
        return R.ok();  
 | 
    }  
 | 
  
 | 
}  
 |