package com.zy.asrs.wms.asrs.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.zy.asrs.common.domain.CodeRes;
|
import com.zy.asrs.common.domain.enums.LoginSystemType;
|
import com.zy.asrs.framework.annotations.ManagerAuth;
|
import com.zy.asrs.framework.common.Cools;
|
import com.zy.asrs.framework.common.R;
|
import com.zy.asrs.framework.exception.CoolException;
|
import com.zy.asrs.wms.asrs.entity.CacheSite;
|
import com.zy.asrs.wms.asrs.entity.Order;
|
import com.zy.asrs.wms.asrs.entity.WaitPakin;
|
import com.zy.asrs.wms.asrs.entity.dto.OrderInfoDto;
|
import com.zy.asrs.wms.asrs.entity.dto.PickSheetDetlDto;
|
import com.zy.asrs.wms.asrs.entity.dto.ShippingOrderDetlDto;
|
import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
|
import com.zy.asrs.wms.asrs.entity.param.PakinOnShelvesParams;
|
import com.zy.asrs.wms.asrs.service.MobileService;
|
import com.zy.asrs.wms.asrs.service.OrderService;
|
import com.zy.asrs.wms.asrs.service.WaitPakinService;
|
import com.zy.asrs.wms.system.controller.BaseController;
|
import com.zy.asrs.wms.system.entity.Host;
|
import com.zy.asrs.wms.system.entity.User;
|
import com.zy.asrs.wms.system.entity.UserLogin;
|
import com.zy.asrs.wms.system.service.UserLoginService;
|
import com.zy.asrs.wms.system.service.UserService;
|
import io.jsonwebtoken.lang.Collections;
|
import io.netty.util.internal.StringUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.*;
|
|
@RequestMapping("/pda")
|
@RestController
|
public class MobileController extends BaseController {
|
|
@Value("${super.pwd}")
|
private String superPwd;
|
@Autowired
|
private UserService userService;
|
@Autowired
|
private UserLoginService userLoginService;
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private MobileService mobileService;
|
@Autowired
|
private WaitPakinService waitPakinService;
|
|
/**
|
* 获取用户机构
|
* @return
|
*/
|
@GetMapping("/current/host")
|
public R getUserHost() {
|
List<Host> hosts = mobileService.getHosts();
|
return R.ok(hosts);
|
}
|
|
/**
|
* 入库单据--扫码获取订单明细列表
|
* @param barcode
|
* @return
|
*/
|
@PostMapping("/mat/auth")
|
public R getProductForBarcode(@RequestBody Map<String, String> barcode) {
|
if (Objects.isNull(barcode)) {
|
return R.error("参数不能为空!!");
|
}
|
if (StringUtil.isNullOrEmpty(barcode.get("barcode"))) {
|
return R.error("条码不能为空!!");
|
}
|
Order order = orderService.selectByBarcode(barcode.get("barcode"));
|
|
if (Objects.isNull(order)) {
|
return R.error("订单不存在!");
|
}
|
|
List<OrderInfoDto> orders = orderService.getDetlForOrderId(order.getId());
|
|
return R.ok(orders);
|
}
|
|
/**
|
* 平库上架
|
* PDA扫码入库
|
* 1. 绑定库位号与拖盘码
|
* 2. 库位置为在库状态
|
* @return
|
*/
|
@PostMapping("/matnr/in/barcode")
|
public R pakinToStock(@RequestBody PakinOnShelvesParams shelvesParams) {
|
if (StringUtil.isNullOrEmpty(shelvesParams.getBarcode())) {
|
return R.error("拖盘码不能为空!!");
|
}
|
if (StringUtil.isNullOrEmpty(shelvesParams.getLoc())) {
|
return R.error("库位不能为空!!");
|
}
|
//TODO 绑定库位,添加库位明细
|
if (mobileService.pakinToStock(shelvesParams)) {
|
return R.ok("入库成功!!");
|
} else {
|
return R.error("入库失败!!");
|
}
|
|
}
|
|
/**
|
* 获取拖盘码绑定商品
|
* @return
|
*/
|
@GetMapping("/barcode/matnr/{code}")
|
public R getAllGoods(@PathVariable String code) {
|
if (StringUtil.isNullOrEmpty(code)) {
|
return R.error("托盘码不能为空!!");
|
}
|
|
String str = code.trim();
|
// 确保字符串长度至少为8
|
if (str.length() >= 8) {
|
code = str.substring(str.length() - 8);
|
} else {
|
return R.error("字符串长度小于8,无法获取后8位");
|
}
|
|
List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, code));
|
|
return R.ok(waitPakins);
|
}
|
|
|
@GetMapping("/login.action")
|
@ManagerAuth(value = ManagerAuth.Auth.NONE, memo = "登录")
|
public R loginAction(String username, String password, Boolean wms) {
|
if (username.equals("super") && password.equals(Cools.md5(superPwd))) {
|
Map<String, Object> res = new HashMap<>();
|
res.put("username", username);
|
res.put("token", Cools.enToken(System.currentTimeMillis() + username, superPwd));
|
return R.ok(res);
|
}
|
LambdaQueryWrapper<User> userWrapper = new LambdaQueryWrapper<>();
|
userWrapper.eq(User::getUsername, username);
|
User user = userService.getOne(userWrapper);
|
if (Cools.isEmpty(user)) {
|
return R.parse(CodeRes.USER_10001);
|
}
|
if (user.getStatus() != 1) {
|
return R.parse(CodeRes.USER_10002);
|
}
|
if (!user.getPassword().equals(password)) {
|
return R.parse(CodeRes.USER_10003);
|
}
|
String system = null;//登陆系统
|
if (wms) {
|
system = String.valueOf(LoginSystemType.WMS);
|
}else {
|
system = String.valueOf(LoginSystemType.WCS);
|
}
|
String token = Cools.enToken(System.currentTimeMillis() + username, user.getPassword());
|
userLoginService.remove(new LambdaQueryWrapper<UserLogin>().eq(UserLogin::getUserId, user.getId()).eq(UserLogin::getSystemCode, system));
|
UserLogin userLogin = new UserLogin();
|
userLogin.setUserId(user.getId());
|
userLogin.setToken(token);
|
userLogin.setCreateTime(new Date());
|
userLogin.setSystemCode(system);
|
// if (user.getRoleId() == 2) {
|
// userLogin.setHostId(hostService.getTop1().getId());
|
// }
|
userLoginService.save(userLogin);
|
Map<String, Object> res = new HashMap<>();
|
res.put("username", user.getUsername());
|
res.put("token", token);
|
return R.ok(res);
|
}
|
|
|
@PostMapping("/comb/auth")
|
public R combMats(@RequestBody BatchMergeOrdersParam ordersParam) {
|
if (StringUtil.isNullOrEmpty(ordersParam.getOrderNo())) {
|
return R.error("订单号不能为空!!");
|
}
|
if (StringUtil.isNullOrEmpty(ordersParam.getMergeNo())) {
|
return R.error("托盘码不能为空!!");
|
}
|
if (Collections.isEmpty(ordersParam.getOrderDetls())) {
|
return R.error("订单明细不能为空!!");
|
}
|
|
String str = ordersParam.getMergeNo().trim();
|
// 确保字符串长度至少为8
|
if (str.length() >= 8) {
|
ordersParam.setMergeNo(str.substring(str.length() - 8));
|
} else {
|
return R.error("字符串长度小于8,无法获取后8位");
|
}
|
|
boolean result = mobileService.batchMergeOrders(ordersParam);
|
if (result) {
|
return R.ok("组托成功!!");
|
} else {
|
return R.ok("组托失败!!");
|
}
|
}
|
|
/**
|
* 获取拣货明细
|
* @return
|
*/
|
@GetMapping("/pick/detl/{code}")
|
public R pickDetlByPickNo(@PathVariable String code) {
|
if (StringUtil.isNullOrEmpty(code)) {
|
return R.error("拣货单据编码不能为空!!");
|
}
|
PickSheetDetlDto pickSheetDetls = mobileService.outFlatSheet(code);
|
|
return R.ok(pickSheetDetls);
|
}
|
|
/**
|
* 拣货单确认出库
|
* @param code
|
* @return
|
*/
|
@GetMapping("/pick/confirm/{code}")
|
public R confirmOutFlatSheet(@PathVariable String code) {
|
if (StringUtil.isNullOrEmpty(code)) {
|
return R.error("拣货单据编码不能为空!!");
|
}
|
if (!mobileService.confirmFlatSheet(code)) {
|
return R.error("出库失败!!");
|
}
|
return R.ok("出库成功!!");
|
}
|
|
|
/**
|
* 获取播种位
|
* @return
|
*/
|
@GetMapping("/pick/seed/locs")
|
public R seedLocs() {
|
List<CacheSite> sites = mobileService.getSeedLocs();
|
return R.ok(sites);
|
}
|
|
/**
|
* 订单绑定站点
|
* @param param
|
* @return
|
*/
|
@PostMapping("/pick/seed/bind")
|
public R bindLoc(@RequestBody Map<String, Object> param) {
|
if (Objects.isNull(param)) {
|
throw new CoolException("请求参数不能为空!!");
|
}
|
if (Objects.isNull(param.get("barcode"))) {
|
throw new CoolException("播种墙容器编码不能为空");
|
}
|
if (Objects.isNull(param.get("orderNo"))) {
|
throw new CoolException("订单编号不能为空!!");
|
}
|
if (Objects.isNull(param.get("siteNo"))) {
|
throw new CoolException("播种站点不能为空!!");
|
}
|
if (Objects.isNull(param.get("type"))) {
|
throw new CoolException("参数类型不能为空!!");
|
}
|
boolean result = mobileService.bindOrderBySite(param);
|
if (result) {
|
return R.ok("绑定成功!!");
|
} else {
|
return R.error("绑定失败!!");
|
}
|
}
|
|
|
/**
|
* 获取发货订单明细
|
* @return
|
*/
|
@PostMapping("/shipping/order/detl")
|
public R getOrderDetl(@RequestBody Map<String, Object> params) {
|
if (Objects.isNull(params)) {
|
throw new CoolException("参数不能为空!!");
|
}
|
return mobileService.selectShippingDetl(params);
|
}
|
|
/**
|
* 确认发货单明细
|
* @return
|
*/
|
@PostMapping("/shipping/confirm")
|
public R confirmShipping(@RequestBody List<ShippingOrderDetlDto> params) {
|
if (params.isEmpty()) {
|
throw new CoolException("发货单明细不能为空!!");
|
}
|
return mobileService.confirmShippingDetl(params);
|
}
|
|
|
|
}
|