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


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huaheng.api.general.domain.InventoryBean;
import com.huaheng.api.general.domain.Receipt;
import com.huaheng.api.general.domain.ReceiptBean;
import com.huaheng.api.general.domain.ReceiptDomain;
import com.huaheng.api.general.service.InventoryApiService;
import com.huaheng.api.general.service.ReceiptApiService;
import com.huaheng.api.general.service.ReceiptService;
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.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
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.util.List;

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

    @Resource
    private ReceiptApiService receiptApiService;
    @Resource
    private InventoryApiService inventoryApiService;

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


    /**
     * 同步入库单
     */
    @Log(title = "入库单添加", action = BusinessType.INSERT)
    @PostMapping("/receipt")
    @ApiOperation("入库单添加公共接口")
    @ResponseBody
    @ApiLogger(apiName = "添加入库单", from="ERP")
    public AjaxResult receipt(@RequestBody ReceiptDomain receiptDomain)
    {
        if(receiptDomain == null){
            return AjaxResult.error("入库单为空");
        }
        if(StringUtils.isEmpty(receiptDomain.getReferCode())){
            return AjaxResult.error("ERP唯一号字段为空referCode");
        }
        if(StringUtils.isEmpty(receiptDomain.getContainerCode())){
            return AjaxResult.error("入库单容器字段为空containerCode");
        }
        if(receiptDomain.getReceiptDetails() == null||receiptDomain.getReceiptDetails().size()<=0){
            return AjaxResult.error("入库单详情为空receiptDetails");
        }
        AjaxResult result = handleMultiProcessV1("receipt", new BaseController.MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {

                AjaxResult ajaxResult = receiptApiService.receiptERP(receiptDomain);
                return ajaxResult;
            }
        });
        return result;
    }


//    /**
//     * 入库单下发
//     */
//    @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);
    }

    /**
     * 厂易WMS快速入库
     */
    @Log(title = "快速入库", action = BusinessType.INSERT)
    @PostMapping("/quickReceipt")
    @ApiOperation("快速入库")
    @ResponseBody
    @ApiLogger(apiName = "快速入库", from="WMS")
    public AjaxResult quickReceipt(@RequestBody ReceiptBean receiptBean){

        return null;
    }
    /**
     * 厂易WMS扣立库WMS库存 Deductions
     */
    @Log(title = "扣减库存", action = BusinessType.INSERT)
    @PostMapping("/deductions")
    @ApiOperation("扣减库存")
    @ResponseBody
    @ApiLogger(apiName = "扣减库存", from="ERP")
    public AjaxResult deductions(@RequestBody List<InventoryBean> inventoryBeans){
        if(inventoryBeans == null || inventoryBeans.size()<=0){
            return AjaxResult.error("数据为空");
        }
        InventoryBean inventoryBean= inventoryBeans.get(0);
//        if(StringUtils.isEmpty(inventoryBean.getDocumentId())){
//            return AjaxResult.error("单号为空");
//        }
        if(StringUtils.isEmpty(inventoryBean.getItemNum())){
            return AjaxResult.error("条码为空");
        }

        AjaxResult result = handleMultiProcessV1("deductions", new BaseController.MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {

                AjaxResult ajaxResult = inventoryApiService.deductions(inventoryBeans);
                return ajaxResult;
            }
        });
        return result;
    }
}