ReceiptApiController.java 6.71 KB
package com.huaheng.api.general.controller;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.api.R;
import com.huaheng.api.general.domain.*;
import com.huaheng.api.general.service.ReceiptApiService;
import com.huaheng.api.general.service.ReceiptService;
import com.huaheng.api.general.service.ShipmentApiService;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail;
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;

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

@RestController
@RequestMapping("/api/receiptApi")
@Api(tags = {"入库单接口"}, value = "入库单接口receipt")
public class ReceiptApiController {

    @Resource
    private ReceiptApiService receiptApiService;
    @Resource
    private ReceiptService receiptService;
    @Resource
    private ShipmentApiService shipmentApiService;

    /**
     * 同步入库单
     */
    @Log(title = "入库单添加", action = BusinessType.INSERT)
    @PostMapping("/receipt")
    @ApiOperation("入库单添加公共接口")
    @ResponseBody
    @ApiLogger(apiName = "添加入库单", from="ERP")
    public AjaxResult receipt(@RequestBody WmsReceipt wmsReceipt)
    {
        String warehouseCode = "CS0001";
       int operation = wmsReceipt.getOPERATIONTYPE();
       if(operation == 0) {
           ReceiptDomain receiptDomain = new ReceiptDomain();
           ReceiptHeader receiptHeader = new ReceiptHeader();
           receiptHeader.setReferCode(wmsReceipt.getBILLNO());
           receiptHeader.setWarehouseCode(warehouseCode);
           receiptHeader.setCompanyCode("BHF");
           receiptHeader.setUserDef1(wmsReceipt.getNO());
           receiptHeader.setCreatedBy("WMS");
           receiptHeader.setReceiptType("DE");
           receiptDomain.setReceiptHeader(receiptHeader);
           List<ReceiptDetail> receiptDetails = new ArrayList<>();
           List<WmsReceiptDetail> wmsReceiptDetailList = wmsReceipt.getDetails();
           for(WmsReceiptDetail wmsReceiptDetail : wmsReceiptDetailList) {
               String materialCode = wmsReceiptDetail.getITEMCODE();
               BigDecimal qty = wmsReceiptDetail.getQTY();
               ReceiptDetail receiptDetail = new ReceiptDetail();
               receiptDetail.setWarehouseCode(warehouseCode);
               receiptDetail.setTotalQty(qty);
               receiptDetail.setMaterialCode(materialCode);
               receiptDetail.setCompanyCode("BHF");
               receiptDetails.add(receiptDetail);
           }
           receiptDomain.setReceiptDetails(receiptDetails);
           AjaxResult ajaxResult = receiptApiService.receipt(receiptDomain);
           return ajaxResult;
       } else {
           ShipmentDomain shipmentDomain = new ShipmentDomain();
           ShipmentHeader shipmentHeader = new ShipmentHeader();
           shipmentHeader.setReferCode(wmsReceipt.getBILLNO());
           shipmentHeader.setWarehouseCode(warehouseCode);
           shipmentHeader.setCompanyCode("BHF");
           shipmentHeader.setUserDef1(wmsReceipt.getNO());
           shipmentHeader.setCreatedBy("WMS");
           shipmentHeader.setShipmentType("ELO");
           shipmentDomain.setShipmentHeader(shipmentHeader);
           List<ShipmentDetail> shipmentDetails = new ArrayList<>();
           List<WmsReceiptDetail> wmsReceiptDetailList = wmsReceipt.getDetails();
           for(WmsReceiptDetail wmsReceiptDetail : wmsReceiptDetailList) {
               String materialCode = wmsReceiptDetail.getITEMCODE();
               BigDecimal qty = wmsReceiptDetail.getQTY();
               ShipmentDetail shipmentDetail = new ShipmentDetail();
               shipmentDetail.setWarehouseCode(warehouseCode);
               shipmentDetail.setShipQty(qty);
               shipmentDetail.setMaterialCode(materialCode);
               shipmentDetail.setCompanyCode("BHF");
               shipmentDetails.add(shipmentDetail);
           }
           shipmentDomain.setShipmentDetails(shipmentDetails);
           AjaxResult ajaxResult = shipmentApiService.shipment(shipmentDomain);
           return ajaxResult;
       }
    }

//    /**
//     * 同步入库单
//     */
//    @Log(title = "入库单添加", action = BusinessType.INSERT)
//    @PostMapping("/receipt")
//    @ApiOperation("入库单添加公共接口")
//    @ResponseBody
//    @ApiLogger(apiName = "添加入库单", from="ERP")
//    public AjaxResult receipt(@RequestBody WmsReceipt wmsReceipt)
//    {
//
//    }


//    /**
//     * 入库单下发
//     */
//    @Log(title = "入库单下发", action = BusinessType.INSERT)
//    @PostMapping("/insertReceipt")
//    @ApiOperation("入库单下发接口")
//    @ResponseBody
//    @ApiLogger(apiName = "下发入库单", from="ERP")
//    public AjaxResult MaterialApi(@RequestBody Receipt receipt) {
//        System.out.println("————————开始接收入库单——————————");
//        System.out.println(receipt);
//        AjaxResult ajaxResult = receiptService.insertReceipt(receipt);
//        return ajaxResult;
//    }

    /**
     * 取消入库单
     */
    @Log(title = "入库-入库单 ",operating = "入库单删除", action = BusinessType.UPDATE)
    @PostMapping("/remove")
    @ResponseBody
    @ApiLogger(apiName = "取消入库单", from="ERP")
    public AjaxResult remove(@RequestBody List<String> receiptCodeList){
        if (receiptCodeList==null && receiptCodeList.size()<1){
            return AjaxResult.error("单号列表为空");
        }
        return receiptApiService.remove(receiptCodeList);
    }

    /**
     * 入库单查询
     */
    @Log(title = "入库-入库单 ",operating = "入库单删除", action = BusinessType.UPDATE)
    @GetMapping("/search")
    @ResponseBody
    @ApiLogger(apiName = "查询入库单", from="ERP")
    public AjaxResult search(@RequestParam String receiptCode,
                             @RequestParam String companyCode,
                             @RequestParam String warehouseCode){
        return receiptApiService.search(receiptCode,companyCode,warehouseCode);
    }
}