package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; import com.core.annotations.AppAuth; import com.core.common.*; import com.core.exception.CoolException; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.OpenService; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.naming.ldap.HasControls; import javax.servlet.http.HttpServletRequest; import java.util.*; /** * Created by vincent on 2022/4/8 */ @Slf4j @RestController @RequestMapping("open/asrs") public class OpenController extends BaseController { private static final boolean auth = true; private static final String sign_arm_order = "|s|LABEL_"; private static final String sign_arm_sku = "|sku|LABEL_"; public static final ArrayList APP_KEY_LIST = new ArrayList() {{ add("ea1f0459efc02a79f046f982767939ae"); }}; @Autowired private OpenService openService; // @PostMapping("/order/matSync/default/v1") //// @AppAuth(memo = "商品信息同步接口") // public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey, // @RequestBody(required = false) MatSyncParam param, // HttpServletRequest request){ // auth(appkey, param, request); // if (Cools.isEmpty(param)) { // return R.parse(BaseRes.PARAM); // } // openService.syncMat(param); // return R.ok(); // } /****************************************************************************/ /********************************* 打包上线 **********************************/ /****************************************************************************/ // @PostMapping("/order/pakin/new/package/v1") // @AppAuth(memo = "打包上线接口") // public synchronized R pakinOrderPackage(@RequestHeader(required = false) String appkey, // @RequestBody(required = false) PackParam param, // HttpServletRequest request) { // auth(appkey, param, request); // if (Cools.isEmpty(param)) { // return R.parse(BaseRes.PARAM); // } // openService.packageUp(param); // return R.ok(); // } /** * 添加入库单 */ @PostMapping("/order/pakin/default/v1") public synchronized R pakinOrderCreate(@RequestHeader(required = false) String appkey, @RequestBody OpenOrderPakinParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getOrderNo())) { return R.error("单据编号[orderNo]不能为空"); } if (Cools.isEmpty(param.getOrderType())) { return R.error("单据类型[orderType]不能为空"); } if (Cools.isEmpty(param.getOrderDetails())) { return R.error("单据明细[orderDetails]不能为空"); } openService.pakinOrderCreate(param); return R.ok(); } /** * 入库单回写 */ // @PostMapping("/order/pakin/complete/default/v1") public synchronized R orderPakinComplete(@RequestHeader(required = false) String appkey, @RequestBody(required = false) OpenOrderCompleteParam param, HttpServletRequest request) { auth(appkey, param, request); return R.ok().add(openService.pakinOrderComplete(param)); } /** * 添加出库单 */ @PostMapping("/order/pakout/default/v1") @AppAuth(memo = "添加订单出库") public synchronized R pakoutOrderCreate(@RequestHeader(required = false) String appkey, @RequestBody OpenOrderPakoutParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getOrderNo())) { return R.error("单据编号[orderNo]不能为空"); } if (Cools.isEmpty(param.getOrderType())) { return R.error("单据类型[orderType]不能为空"); } if (Cools.isEmpty(param.getOrderDetails())) { return R.error("单据明细[orderDetails]不能为空"); } openService.pakoutOrderCreate(param); return R.ok(); } /** * 出库单回写 */ // @PostMapping("/order/pakout/complete/default/v1") public synchronized R orderPakoutComplete(@RequestHeader(required = false) String appkey, @RequestBody(required = false) OpenOrderCompleteParam param, HttpServletRequest request) { auth(appkey, param, request); return R.ok().add(openService.pakoutOrderComplete(param)); } /** * 库存统计 */ @RequestMapping("/stock/default/v1") public R queryStock(@RequestHeader(required = false) String appkey, HttpServletRequest request) { auth(appkey, null, request); return R.ok().add(openService.queryStock()); } private void auth(String appkey, Object obj, HttpServletRequest request) { log.info("{}接口被访问;appkey:{};请求数据:{}", "open/sensorType/list/auth/v1", appkey, JSON.toJSONString(obj)); request.setAttribute("cache", obj); if (!auth) { return; } if (Cools.isEmpty(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } if (!APP_KEY_LIST.contains(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } } public static void main(String[] args) { // 1 System.out.println("======================================"); OpenOrderPakinParam param = new OpenOrderPakinParam(); param.setOrderNo(String.valueOf(new SnowflakeIdWorker().nextId())); param.setOrderType("打包上线单"); param.setOrderTime(DateUtils.convert(new Date())); List orderDetails = new ArrayList<>(); param.setOrderDetails(orderDetails); for (int i = 0; i < 3; i++) { DetlDto detlDto = new DetlDto(); switch (i) { case 0: detlDto.setMatnr("MDH020030530"); detlDto.setBatch("500"); detlDto.setAnfme(18.0); break; case 1: detlDto.setMatnr("MDH020016416"); detlDto.setBatch("500"); detlDto.setAnfme(32.0); break; case 2: detlDto.setMatnr("LSH90152025"); detlDto.setAnfme(50.0); break; default: break; } orderDetails.add(detlDto); } System.out.println(JSON.toJSONString(param)); // 2 System.out.println("======================================"); OpenOrderCompleteParam param1 = new OpenOrderCompleteParam(); param1.setOrderNo("963001846497017856"); System.out.println(JSON.toJSONString(param1)); } /** * 分拣线上报接收 */ @PostMapping("/arm/task/v1") @AppAuth(memo = "分拣线上报接收") public synchronized R TaskArmReport(@RequestHeader(required = false) String appkey, @RequestBody TaskArmReportParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getOrderNo())) { return R.error("单据编号[orderNo]不能为空"); } if (Cools.isEmpty(param.getSku())) { return R.error("客人型号[sku]不能为空"); } if (Cools.isEmpty(param.getPo())) { return R.error("客人PO[po]不能为空"); } if (Cools.isEmpty(param.getUpc())) { return R.error("UPC[upc]不能为空"); } if (Cools.isEmpty(param.getItem())) { return R.error("UPC[item]不能为空"); } if (Cools.isEmpty(param.getSupplier())) { return R.error("货源[supplier]不能为空"); } if (Cools.isEmpty(param.getStaNo())) { return R.error("分拣点位[staNo]不能为空"); } if (Cools.isEmpty(param.getBindingTags())) { return R.error("分拣绑定类别[bindingTags]不能为空"); } try{ openService.taskArmReport(param); } catch (Exception e){ return R.error(e.getMessage()).add(e.getMessage()); } return R.ok(); } /** * 单码完成 */ @PostMapping("/arm/task/cycle_result") @AppAuth(memo = "单码完成") public synchronized R TaskArmCycleResult(@RequestHeader(required = false) String appkey, @RequestBody TaskArmCycleResultParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getArm_no())) { return R.error("机械臂编号[Arm_no]不能为空"); } if (Cools.isEmpty(param.getOrder_id())) { return R.error("单据编号[order_id]不能为空"); } if (Cools.isEmpty(param.getPick_num())) { return R.error("客人型号[pick_num]不能为空"); } try{ param.OrderIdTwo(sign_arm_order,sign_arm_sku); } catch (Exception e){ return R.error("单据编号[order_id]以 "+sign_arm_sku+" 与 "+sign_arm_order+" 作为拆分标记拆分失败!!!"); } openService.taskArmCycleResult(param); return R.ok(); } /** * 托盘完成 */ @PostMapping("/arm/task/workspace_status") @AppAuth(memo = "托盘完成") public synchronized R TaskArmWorkspaceStatus(@RequestHeader(required = false) String appkey, @RequestBody TaskArmWorkspaceStatusParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getArm_no())) { return R.error("机械臂编号[Arm_no]不能为空"); } if (Cools.isEmpty(param.getId())) { return R.error("单据编号[order_id]不能为空"); } if (Integer.parseInt(param.getId())<2){ return R.ok().add("来料口空间复位成功"); } if (Cools.isEmpty(param.getType())) { return R.error("客人型号[pick_num]不能为空"); } if (Cools.isEmpty(param.getStatus())) { return R.error("客人型号[pick_num]不能为空"); } openService.taskArmWorkspaceStatus(param); return R.ok(); } /** * 托盘就绪状态查询 */ @PostMapping("/arm/task/loc_status") @AppAuth(memo = "托盘就绪状态查询") public synchronized R TaskArmLocStatus(@RequestHeader(required = false) String appkey, @RequestBody ArmOKParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getArmNo())) { return R.error("机械臂编号[armNo]不能为空"); } if (Cools.isEmpty(param.getStaNo())) { return R.error("站点编号[staNo]不能为空"); } boolean taskArmLocStatus = openService.TaskArmLocStatus(param); if (taskArmLocStatus){ return new R(200,"OK").add(true); } return R.error("不符合").add(false); } /** * 异常上报 */ @PostMapping("/armAbnormalOperation") @AppAuth(memo = "异常上报") public synchronized R ArmAbnormalOperation(@RequestHeader(required = false) String appkey, @RequestBody TaskArmErrorParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param.getArm_no())) { return R.error("机械臂编号[Arm_no]不能为空"); } if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } return R.ok().add(param); } /** * 订单完成上报 */ @PostMapping("/arm/task/order_result") @AppAuth(memo = "订单完成上报") public synchronized R TaskArmWorkOrderStatus(@RequestHeader(required = false) String appkey, @RequestBody OrderArmEndParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getArm_no())) { return R.error("机械臂编号[Arm_no]不能为空"); } if (Cools.isEmpty(param.getOrder_id())) { return R.error("单据编号[order_id]不能为空"); } try{ param.OrderIdTwo(sign_arm_order,sign_arm_sku); } catch (Exception e){ return R.error("单据编号[order_id]以 "+sign_arm_sku+" 与 "+sign_arm_order+" 作为拆分标记拆分失败!!!"); } if (param.getArm_no()>4){ openService.taskArmOrderResult(param); return R.ok(); } openService.taskArmWorkOrderStatus(param); return R.ok(); } /**********************************************************哥斯拉项目对接接口*******************************************************************/ @PostMapping("/order/matSync/default/v2") // @AppAuth(memo = "商品信息同步接口") public synchronized R syncMatInfoV2(@RequestBody(required = false) List param){ System.out.println(param); // if (Cools.isEmpty(param)) { // return R.parse(BaseRes.PARAM); // } // MatSyncParam matSyncParam = new MatSyncParam(); // List objects = new ArrayList<>(); // objects.add(param); // matSyncParam.matDetails = objects; // openService.syncMat(matSyncParam); return R.ok(); } /** * 站点同步接口 * 同步站点编号 * 同步站点进出类型 * 同步站点名称 * 同步操作类型 * return */ @PostMapping("/station/all") public synchronized R stationAll(){ List> list =new ArrayList<>(); LinkedHashMap map = new LinkedHashMap<>(); map.put("stationId","101"); map.put("stationType","3"); map.put("stationName","101"); list.add(map); System.out.println(); // try { // //获取Cookie值 // HashMap headers = new HashMap<>(); // headers.put("accesstoken", erpSecret.getAccessToken()); // headers.put("x-acgw-identity", xAcfwIdentity); // 自定义请求头 // response = new HttpHandler.Builder() // .setHeaders(headers) // .setUri(URL) // .setPath(path) // .setJson(add) // .build() // .doPost(); // JSONObject jsonResponse = JSON.parseObject(response); // if (jsonResponse.getString("errorCode").equals("401")) { // // } // }catch (Exception e){ // e.printStackTrace(); // } // if (Cools.isEmpty(param)) { // return R.parse(BaseRes.PARAM); // } // MatSyncParam matSyncParam = new MatSyncParam(); // List objects = new ArrayList<>(); // objects.add(param); // matSyncParam.matDetails = objects; // openService.syncMat(matSyncParam); return R.ok().add(list); } /** * 组托信息下发 * return */ @PostMapping("/comb/auth") public synchronized R comb(@RequestBody ArrayList> param){ System.out.println(param); // if (Cools.isEmpty(param)) { // return R.parse(BaseRes.PARAM); // } // MatSyncParam matSyncParam = new MatSyncParam(); // List objects = new ArrayList<>(); // objects.add(param); // matSyncParam.matDetails = objects; // openService.syncMat(matSyncParam); return R.ok(); } /** * 出库通知单 */ @PostMapping("/outOrder") public synchronized R outOrder (@RequestBody ArrayList> param){ System.out.println(param); return R.ok(); } }