package com.huaheng.api.sap.controller; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import org.springframework.web.bind.annotation.*; import com.huaheng.api.sap.domain.WxAgvTaskDomain; import com.huaheng.api.sap.domain.ZarDomain; import com.huaheng.api.sap.service.CreateWXAgvTaskApiService; import com.huaheng.api.sap.service.ReturnSapTaskService; import com.huaheng.api.sap.service.ZarApiService; import com.huaheng.common.exception.service.ServiceException; 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 com.huaheng.pc.sap.domain.ReturnSapTaskLog; import com.huaheng.pc.sap.domain.Zarsh; import com.huaheng.pc.sap.service.BackSapStatusService; import com.huaheng.pc.sap.service.LockSapUniqueIdService; import com.huaheng.pc.sap.service.ReturnSapTaskLogService; import com.huaheng.pc.sap.service.SapTaskLogService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @RequestMapping("/api/zarapi") @Api(tags = {"入库单接口"}, value = "入库单接口receipt") public class SAPApiController extends BaseController { @Resource private ZarApiService zarApiService; @Resource private BackSapStatusService backSapStatusService; @Resource private SapTaskLogService sapTaskLogService; @Resource private LockSapUniqueIdService lockSapUniqueIdService; @Resource private ReturnSapTaskService returnSapTaskService; @Resource private ReturnSapTaskLogService returnSapTaskLogService; @Resource private CreateWXAgvTaskApiService createWXAgvTaskApiService; /** * SAP下发任务单据 */ @Log(title = "SAP下发任务单据", action = BusinessType.INSERT) @PostMapping("/save") @ApiOperation("SAP下发任务单据") @ResponseBody @ApiLogger(apiName = "SAP下发任务单据", from = "ERP") public AjaxResult save(@RequestBody ZarDomain zarDomain) { if (StringUtils.isNull(zarDomain)) { throw new ServiceException("参数为空"); } Zarsh zarsh = zarDomain.getZarsh(); if (zarsh == null) { throw new ServiceException("zarsh参数为空"); } if (StringUtils.isEmpty(zarsh.getUniqueId())) { throw new ServiceException("唯一号uniqueId参数为空"); } // 判断出库、入库,然后在判断是否空托盘出入库 if (StringUtils.isEmpty(zarsh.getLgnum())) { throw new ServiceException("仓库号为空"); } if (StringUtils.isEmpty(zarsh.getMFlag())) { throw new ServiceException("入库出库标志为空"); } AjaxResult ajaxResult = handleMultiProcess("save", new MultiProcessListener() { @Override public AjaxResult doProcess() { AjaxResult ajaxResult = null; try { ajaxResult = zarApiService.saveSapData(zarDomain); sapTaskLogService.addSapTaskLog(zarDomain, ajaxResult.getMsg(), 0); if (ajaxResult.hasErr()) { lockSapUniqueIdService.lockStaionByUniqueId(zarsh); } else { lockSapUniqueIdService.unlockStaionByUniqueId(zarsh); } } catch (Exception e) { // 调用sap的api,传递任务状态 ajaxResult = AjaxResult.error(e.getMessage()); backSapStatusService.addBackSapStatus(zarsh.getUniqueId(), zarsh.getLgnum(), null, "1", "C", null, e.getMessage()); sapTaskLogService.addSapTaskLog(zarDomain, e.getMessage(), 1); lockSapUniqueIdService.lockStaionByUniqueId(zarsh); } return ajaxResult; } }); // if (ajaxResult == null || ajaxResult.hasErr()) { // String msg = ajaxResult == null ? "" : ajaxResult.getMsg(); // // 调用sap的api,传递任务状态 // backSapStatusService.addBackSapStatus(zarsh.getUniqueId(), zarsh.getLgnum(), null, "1", "C", null, msg); // sapTaskLogService.addSapTaskLog(zarsh, msg, 1); // } else { // sapTaskLogService.addSapTaskLog(zarsh, null, 0); // } return ajaxResult; } /** * SAP同步WMS库存 */ @Log(title = "SAP同步WMS库存", action = BusinessType.INSERT) @PostMapping("/saveSapInventory") @ApiOperation("SAP同步WMS库存") @ResponseBody @ApiLogger(apiName = "SAP同步WMS库存", from = "ERP") public AjaxResult saveSapInventory(@RequestBody List<ReturnSapTaskLog> returnSapTaskLogs) { if (returnSapTaskLogs == null) { return AjaxResult.error("sap同步wms:参数为空"); } ReturnSapTaskLog returnSapTaskLog = returnSapTaskLogs.get(0); if (StringUtils.isNull(returnSapTaskLog)) { return AjaxResult.error("sap同步wms:参数为空"); } if (StringUtils.isEmpty(returnSapTaskLog.getLgnum())) { return AjaxResult.error("sap同步wms:仓库号为空"); } if (StringUtils.isEmpty(returnSapTaskLog.getLgort())) { return AjaxResult.error("sap同步wms:参数为空"); } if (StringUtils.isEmpty(returnSapTaskLog.getDrumId())) { return AjaxResult.error("sap同步wms:库存地点不能为空"); } if (StringUtils.isEmpty(returnSapTaskLog.getLgpla())) { return AjaxResult.error("sap同步wms:库位不能为空"); } AjaxResult ajaxResult = handleMultiProcess("saveSapInventory", new MultiProcessListener() { @Override public AjaxResult doProcess() { AjaxResult ajaxResult = null; try { ajaxResult = returnSapTaskService.saveSapInventory(returnSapTaskLogs); List<ReturnSapTaskLog> logs = (ArrayList)ajaxResult.getData(); returnSapTaskLogService.saveReturnSapTaskLog(logs, ajaxResult.getMsg(), 1); } catch (Exception e) { ajaxResult = AjaxResult.error(e.getMessage()); returnSapTaskLogService.saveReturnSapTaskLog(returnSapTaskLogs, e.getMessage(), 3); e.printStackTrace(); } return ajaxResult; } }); return ajaxResult; } /** * SAP同步WMS库存 */ @Log(title = "创建维修房agv任务", action = BusinessType.INSERT) @PostMapping("/createWXAgvTask") @ApiOperation("创建维修房agv任务") @ResponseBody @ApiLogger(apiName = "创建维修房agv任务", from = "ERP") public AjaxResult createWXAgvTask(@RequestBody WxAgvTaskDomain wxAgvTaskDomain) { if (wxAgvTaskDomain == null) { return AjaxResult.error("参数为空"); } if (StringUtils.isEmpty(wxAgvTaskDomain.getFromPos())) { return AjaxResult.error("起点为空"); } if (StringUtils.isEmpty(wxAgvTaskDomain.getToPos())) { return AjaxResult.error("终点为空"); } AjaxResult ajaxResult = handleMultiProcess("createWXAgvTask", new MultiProcessListener() { @Override public AjaxResult doProcess() { AjaxResult ajaxResult = null; try { ajaxResult = createWXAgvTaskApiService.createWXAgvTask(wxAgvTaskDomain); } catch (Exception e) { e.printStackTrace(); } return ajaxResult; } }); return ajaxResult; } }