WinController.java 7.54 KB
package com.huaheng.api.erp.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.zxing.WriterException;
import com.huaheng.api.erp.domain.MaterialDomain;
import com.huaheng.api.erp.domain.PDAInventory;
import com.huaheng.api.erp.domain.PrintDomain;
import com.huaheng.common.exception.service.ServiceException;
import com.huaheng.common.utils.QRCodeGenerator;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.proPackaging.domain.ProPackaging;
import com.huaheng.pc.config.proPackaging.service.IProPackagingService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail;
import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService;
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author lty
 */
@RestController
@RequestMapping("/API/WMS/v2")
public class WinController extends BaseController {


    @Resource
    TaskHeaderService taskHeaderService;
    @Resource
    ShipmentHeaderService shipmentHeaderService;
    @Resource
    ReceiptContainerHeaderService receiptContainerHeaderService;
    @Resource
    ReceiptContainerDetailService receiptContainerDetailService;
    @Resource
    IProPackagingService proPackingService;

    @PostMapping("/printLabel")
    @ApiOperation("请求打印数据")
    @ResponseBody
    @ApiLogger(apiName = "请求打印数据", from="win")
    public AjaxResult printLabel() {
        LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
        taskHeaderLambdaQueryWrapper.eq(TaskHeader::getPrint,1);
        TaskHeader taskHeader = taskHeaderService.getOne(taskHeaderLambdaQueryWrapper);
        if (taskHeader==null)
        {
            return AjaxResult.error("没有补码任务");
        }
        LambdaQueryWrapper<ShipmentHeader> shipmentHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
        shipmentHeaderLambdaQueryWrapper.eq(ShipmentHeader::getCode,taskHeader.getShipmentCode());
        ShipmentHeader shipmentHeader = shipmentHeaderService.getOne(shipmentHeaderLambdaQueryWrapper);


        PrintDomain printDomain = new PrintDomain();
        if (StringUtils.isNotEmpty(shipmentHeader.getReferCode())) {
            //erp单号
            printDomain.setErpCode(shipmentHeader.getReferCode());
        } else {
            printDomain.setErpCode("不存在");
        }

        if (StringUtils.isNotEmpty(shipmentHeader.getCustomerName())) {
            //客户名称
            printDomain.setName(shipmentHeader.getCustomerName());
        } else {
            printDomain.setName("不存在");
        }

        printDomain.setCode(shipmentHeader.getCode());

        printDomain.setContainerCode(taskHeader.getContainerCode());


        LambdaQueryWrapper<ReceiptContainerHeader> receiptContainerHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
        receiptContainerHeaderLambdaQueryWrapper.eq(ReceiptContainerHeader::getContainerCode,taskHeader.getContainerCode());
        ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getOne(receiptContainerHeaderLambdaQueryWrapper);

        if (receiptContainerHeader==null)
        {
            return AjaxResult.error("当前任务不能补打");
        }

        LambdaQueryWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
        receiptContainerDetailLambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptContainerId,receiptContainerHeader.getId());
        List<ReceiptContainerDetail> receiptContainerDetails = receiptContainerDetailService.list(receiptContainerDetailLambdaQueryWrapper);



        List<ReceiptContainerDetail> receiptContainerDetailList=new ArrayList<>();
        for (ReceiptContainerDetail receiptContainerDetail:receiptContainerDetails)
        {
            int 标记=0;
            for (ReceiptContainerDetail receiptContainerdetail:receiptContainerDetailList)
            {
                if(receiptContainerdetail.getMaterialCode().equals(receiptContainerDetail.getMaterialCode()))
                {
                    receiptContainerdetail.setQty(receiptContainerdetail.getQty().add(BigDecimal.valueOf(1)));
                    标记=1;
                    break;
                }
            }
            if (标记==0)
            {
                receiptContainerDetailList.add(receiptContainerDetail);
            }
        }

        List<MaterialDomain> materialDomains=new ArrayList<>();
        for (ReceiptContainerDetail receiptContainerDetail:receiptContainerDetailList)
        {
            MaterialDomain materialDomain=new MaterialDomain();

            materialDomain.setMaterialCode(receiptContainerDetail.getMaterialCode());
            materialDomain.setMaterialName(receiptContainerDetail.getMaterialName());
            materialDomain.setLevel(receiptContainerDetail.getLevel());
            materialDomain.setColor(receiptContainerDetail.getColor());

            LambdaQueryWrapper<ProPackaging> proPackagingLambdaQueryWrapper = Wrappers.lambdaQuery();
            proPackagingLambdaQueryWrapper.eq(ProPackaging::getNumber, receiptContainerDetail.getProPackaging());
            ProPackaging proPackaging = proPackingService.getOne(proPackagingLambdaQueryWrapper);
            if (proPackaging == null) {
                return AjaxResult.error("没有包装信息");
            }
            int pieceBox = proPackaging.getPieceBox();
            materialDomain.setBox(receiptContainerDetail.getQty().intValue()*pieceBox);
            materialDomain.setScattered(receiptContainerDetail.getQty().intValue());
            materialDomains.add(materialDomain);

        }

        printDomain.setMaterial(materialDomains);

        taskHeader.setPrint(0);
        taskHeaderService.updateById(taskHeader);
        return AjaxResult.success(printDomain);
    }




    /**
     * @author lty
     * //生成dataMatrix类型二维码
     */

    @GetMapping(value = "/imageDmx/{text}")
    public ResponseEntity<byte[]> getImageDmx(@PathVariable("text") String text) {
        byte[] qrcode = null;
        try {
            qrcode = QRCodeGenerator.getDataMatrixImage(text, 210, 210);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // Set headers
        final HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.IMAGE_JPEG);
        return new ResponseEntity<byte[]>(qrcode, headers, HttpStatus.CREATED);
    }

}