From 7ce4419c34a54a968d4e9fe0e4f1b1a7595e868d Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 30 五月 2024 09:08:16 +0800
Subject: [PATCH] #
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 232 insertions(+), 0 deletions(-)
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java
index 979c419..c96a715 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java
@@ -1,10 +1,16 @@
package com.zy.asrs.wms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.domain.dto.LocDetlDto;
import com.zy.asrs.common.domain.dto.WrkDto;
import com.zy.asrs.common.domain.entity.MobileAdjustResult;
+import com.zy.asrs.common.domain.entity.StaDesc;
+import com.zy.asrs.common.domain.enums.WorkNoType;
import com.zy.asrs.common.domain.param.MobileAdjustParam;
+import com.zy.asrs.common.domain.param.PickConfirmParam;
+import com.zy.asrs.common.domain.param.PickMatParam;
import com.zy.asrs.common.openapi.entity.param.CombParam;
+import com.zy.asrs.common.sys.service.StaDescService;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.common.wms.entity.*;
import com.zy.asrs.common.wms.service.*;
@@ -20,6 +26,7 @@
import org.springframework.web.bind.annotation.RestController;
import java.util.*;
+import java.util.stream.Collectors;
/**
* 绉诲姩绔帴鍙f帶鍒跺櫒
@@ -42,6 +49,41 @@
private LocDetlService locDetlService;
@Autowired
private BasDevpService basDevpService;
+ @Autowired
+ private RolePermissionService rolePermissionService;
+ @Autowired
+ private PermissionService permissionService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private MatService matService;
+
+ @RequestMapping("/pda/WarehouseIn")
+ @ManagerAuth
+ public R WarehouseIn(@RequestParam String locNo,@RequestParam String barcode){
+ return mobileService.WarehouseIn(locNo,barcode,getHostId());
+ }
+
+ @RequestMapping("/menu/pda/auth")
+ @ManagerAuth
+ public R menuPda(){
+ List<RolePermission> rolePermissions;
+ Long roleId = getUser().getRoleId();
+ rolePermissions = rolePermissionService.list(new LambdaQueryWrapper<RolePermission>().eq(RolePermission::getRoleId, getHostId()));
+
+ if (Cools.isEmpty(rolePermissions)) {
+ return R.ok();
+ }
+ List<Long> collect = rolePermissions.stream().map(RolePermission::getPermissionId).distinct().collect(Collectors.toList());
+ List<Permission> permissions = permissionService.listByIds(collect);
+ return R.ok().add(permissions);
+ }
/**
* 鏍规嵁鍗曞彿妫�绱㈠崟鎹暟鎹�
@@ -266,4 +308,194 @@
return R.ok("鐩樼偣鎴愬姛");
}
+ @RequestMapping("/loc/f/list")
+ @ManagerAuth(memo = "鑾峰彇鍦ㄥ簱搴撲綅")
+ public R locNoF(@RequestParam(required = false) String locNo){
+ LambdaQueryWrapper<LocMast> wrapper = new LambdaQueryWrapper<LocMast>()
+ .eq(LocMast::getLocSts, "F")
+ .eq(LocMast::getHostId, getHostId());
+ if (!Cools.isEmpty(locNo)) {
+ wrapper.like(LocMast::getLocNo, locNo);
+ }
+ List<LocMast> list = locMastService.list(wrapper);
+ return R.ok().add(list);
+ }
+
+ @RequestMapping("/pick/sta/list")
+ @ManagerAuth(memo = "鑾峰彇骞舵澘绔�")
+ public R pickSta(){
+ List<StaDesc> list = staDescService.list(new LambdaQueryWrapper<StaDesc>()
+ .eq(StaDesc::getTypeNo, 104)
+ .eq(StaDesc::getHostId, getHostId()));
+ return R.ok().add(list);
+ }
+
+ @RequestMapping("/pick/mat/list")
+ @ManagerAuth(memo = "鑾峰彇骞舵澘鐗╂枡")
+ public R pickMats(@RequestParam(required = false) String matnr){
+ List<DocType> docTypes = docTypeService.list(new LambdaQueryWrapper<DocType>().like(DocType::getDocName, "鍏ュ簱"));
+ ArrayList<Long> typeList = new ArrayList<>();
+ for (DocType docType : docTypes) {
+ typeList.add(docType.getDocId());
+ }
+
+ LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Order::getStatus, 1);
+ wrapper.eq(Order::getHostId, getHostId());
+ wrapper.in(Order::getDocType, typeList);
+ List<Order> orders = orderService.list(wrapper);
+
+ ArrayList<Long> orderIds = new ArrayList<>();
+ for (Order order : orders) {
+ orderIds.add(order.getId());
+ }
+
+ //鎼滅储鏄庣粏
+ LambdaQueryWrapper<OrderDetl> wrapper1 = new LambdaQueryWrapper<>();
+ wrapper1.eq(OrderDetl::getStatus, 1);
+ wrapper1.eq(OrderDetl::getHostId, getHostId());
+ wrapper1.in(OrderDetl::getOrderId, orderIds);
+ if (!Cools.isEmpty(matnr)) {
+ wrapper1.like(OrderDetl::getMatnr, matnr);
+ }
+
+ List<OrderDetl> list = orderDetlService.list(wrapper1);
+
+ ArrayList<PickMatParam> maps = new ArrayList<>();
+ for (OrderDetl orderDetl : list) {
+ //鍓╀綑鍙敤鏁伴噺
+ double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+ if (count <= 0) {
+ continue;
+ }
+
+ PickMatParam matParam = new PickMatParam();
+ matParam.setMatnr(orderDetl.getMatnr());
+ matParam.setBatch(orderDetl.getBatch());
+ matParam.setOrderNo(orderDetl.getOrderNo());
+ matParam.setOrderId(orderDetl.getOrderId());
+ matParam.setCount(count);
+ maps.add(matParam);
+ }
+ return R.ok().add(maps);
+ }
+
+ @RequestMapping("/pick/in")
+ @ManagerAuth(memo = "骞舵澘鍏ュ簱")
+ @Transactional
+ public R pickConfirm(@RequestBody PickConfirmParam param){
+ LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>()
+ .eq(LocMast::getLocNo, param.getLocNo())
+ .eq(LocMast::getHostId, getHostId()));
+ if (!locMast.getLocSts().equals("F")) {
+ return R.error("搴撲綅鐘舵�佷笉鏄湪搴�");
+ }
+
+ StaDesc staDesc = staDescService.getOne(new LambdaQueryWrapper<StaDesc>()
+ .eq(StaDesc::getTypeNo, 104)
+ .eq(StaDesc::getStnNo, param.getStaNo())
+ .eq(StaDesc::getHostId, getHostId()));
+ if (staDesc == null) {
+ return R.error("绔欑偣涓嶅瓨鍦�");
+ }
+
+ //妫�楠屼紶鍙傛槸鍚﹀拰璁㈠崟鏄庣粏鍖归厤
+ for (PickMatParam matParam : param.getList()) {
+ LambdaQueryWrapper<OrderDetl> wrapper = new LambdaQueryWrapper<OrderDetl>()
+ .eq(OrderDetl::getOrderNo, matParam.getOrderNo())
+ .eq(OrderDetl::getHostId, getHostId())
+ .eq(OrderDetl::getStatus, 1)
+ .eq(OrderDetl::getMatnr, matParam.getMatnr());
+ if (!Cools.isEmpty(matParam.getBatch())) {
+ wrapper.eq(OrderDetl::getBatch, matParam.getBatch());
+ }
+ OrderDetl orderDetl = orderDetlService.getOne(wrapper);
+ if (orderDetl == null) {
+ return R.error("鐗╂枡鏁版嵁涓嶅瓨鍦�");
+ }
+
+ //鍓╀綑鍙敤鏁伴噺
+ double count = orderDetl.getAnfme() - orderDetl.getWorkQty();
+ if (matParam.getCount() != count) {
+ return R.error("鐗╂枡鏁版嵁宸茶繃鏈�");
+ }
+
+ if (matParam.getUseCount() > count) {
+ return R.error("鍙敤鏁伴噺涓嶈冻");
+ }
+ }
+
+ Date now = new Date();
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(104));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱
+ wrkMast.setIoType(104); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setSourceStaNo(staDesc.getDeviceStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(param.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("Y"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(String.valueOf(getUserId())); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(String.valueOf(getUserId()));
+ wrkMast.setModiTime(now);
+ wrkMast.setHostId(getHostId());
+ wrkMast.setCrnNo(staDesc.getDeviceNo());
+ if (!wrkMastService.save(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + param.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (PickMatParam matParam : param.getList()) {
+ LambdaQueryWrapper<Mat> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(Mat::getHostId, getHostId());
+ wrapper.eq(Mat::getStatus, 1);
+ wrapper.eq(Mat::getMatnr, matParam.getMatnr());
+ Mat mat = matService.getOne(wrapper);
+ if (mat == null) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鐗╂枡淇℃伅涓嶅瓨鍦細" + matParam.getMatnr());
+ }
+
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(mat);
+ wrkDetl.setOrderNo(matParam.getOrderNo());
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ wrkDetl.setAnfme(matParam.getUseCount()); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(getUserId());
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(getUserId());
+ wrkDetl.setHostId(getHostId());
+ wrkDetl.setWrkMastId(wrkMast.getId());
+ if (!wrkDetlService.save(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+
+ //鏇存柊璁㈠崟宸ヤ綔鏁伴噺
+ orderDetlService.increaseWorkQtyByOrderNo(matParam.getOrderNo(), matParam.getMatnr(), matParam.getBatch(), matParam.getUseCount(), getHostId());
+ }
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId, getHostId()));
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts("P");
+ locMast.setModiUser(getUserId());
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + param.getLocNo());
+ }
+ } else {
+ throw new CoolException(param.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+
+ return R.ok();
+ }
+
}
--
Gitblit v1.9.1