From c4409fac0044cc1efeda07b6a7709c3fde1aa9fe Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期六, 24 十月 2026 10:46:32 +0800
Subject: [PATCH] fix(仓储物流): ①出库新增临时跳过租户插件修复 SetOperationList 解析异常 ②库存预警查询补 warningLevel/warningStatus/warningTime/expectedShortageTime/suggestionType/suggestionContent 字段 ③currentStock 别名
---
src/main/java/com/ruoyi/tide/controller/TideController.java | 127 ++++++++++++++++++++++++++++++++++++++---
1 files changed, 116 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/ruoyi/tide/controller/TideController.java b/src/main/java/com/ruoyi/tide/controller/TideController.java
index 0f8b0b8..0128b59 100644
--- a/src/main/java/com/ruoyi/tide/controller/TideController.java
+++ b/src/main/java/com/ruoyi/tide/controller/TideController.java
@@ -1,5 +1,6 @@
package com.ruoyi.tide.controller;
+import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.ruoyi.common.constant.Constants;
@@ -7,20 +8,28 @@
import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.framework.security.service.SysLoginService;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysDeptService;
import com.ruoyi.project.system.service.ISysUserService;
import com.ruoyi.tide.pojo.TidePojo;
import com.ruoyi.tide.utils.TideUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.PreDestroy;
+import javax.annotation.security.PermitAll;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -37,27 +46,121 @@
@Autowired
private ISysUserService userService;
+ @Autowired
+ private ISysDeptService deptService;
+
@ApiOperation(value = "鐧诲綍")
@PostMapping("/tideLogin")
public AjaxResult login(@RequestBody TidePojo tidePojo) {
- String token = TideUtils.getToken(tidePojo.getCode());
- JSONObject userInfo = TideUtils.getUserInfo(token);
- JSONObject tenant = JSONObject.parseObject(userInfo.get("tenant").toString());
- AjaxResult ajax = AjaxResult.success();
- // 鐢熸垚浠ょ墝
- String generateToken = loginService.login(tenant.get("tenantAccount").toString(), tenant.get("tenantPassword").toString(), null,
- IdWorker.get32UUID());
- ajax.put(Constants.TOKEN, generateToken);
- return ajax;
+ if (tidePojo == null || ObjectUtils.isEmpty(tidePojo.getCode())) {
+ return AjaxResult.error("缂哄皯娴疆鎺堟潈鐮�(code)锛岃浠庢氮娼棬鎴烽噸鏂拌繘鍏ョ郴缁�");
+ }
+ // 娴疆闂ㄦ埛涓嬪彂鐨勬巿鏉冪爜鍙兘甯﹀浐瀹氬悗缂�锛屽仛涓�娆″吋瀹瑰鐞�
+ String code = String.valueOf(tidePojo.getCode()).trim();
+ if (code.endsWith("suanwangcode")) {
+ code = code.substring(0, code.length() - "suanwangcode".length());
+ }
+ String token;
+ try {
+ token = TideUtils.getToken(code);
+ } catch (Exception e) {
+ log.error("[娴疆SSO] 鎹㈠彇token寮傚父, code={}", code, e);
+ return AjaxResult.error("娴疆鎺堟潈澶辫触锛氭崲鍙栦护鐗屽紓甯革紝璇蜂粠闂ㄦ埛閲嶆柊杩涘叆绯荤粺");
+ }
+ if (ObjectUtils.isEmpty(token)) {
+ return AjaxResult.error("娴疆鎺堟潈澶辫触锛氭巿鏉冪爜鏍¢獙鏈�氳繃锛堝彲鑳藉凡杩囨湡鎴栧凡琚娇鐢級锛岃浠庨棬鎴烽噸鏂拌繘鍏ョ郴缁�");
+ }
+ JSONObject userInfo;
+ try {
+ userInfo = TideUtils.getUserInfo(token);
+ } catch (Exception e) {
+ log.error("[娴疆SSO] 鑾峰彇鐢ㄦ埛淇℃伅寮傚父, token={}", token, e);
+ return AjaxResult.error("娴疆鎺堟潈澶辫触锛氳幏鍙栫敤鎴蜂俊鎭紓甯革紝璇疯仈绯荤鐞嗗憳");
+ }
+ log.info("[娴疆SSO] 鐢ㄦ埛淇℃伅: {}", userInfo);
+ if (userInfo == null) {
+ return AjaxResult.error("娴疆鏈繑鍥炵敤鎴蜂俊鎭紝璇疯仈绯诲钩鍙扮鐞嗗憳");
+ }
+ // 鍏煎娴疆涓嶅悓鐗堟湰/涓嶅悓骞冲彴鐨勭鎴峰瓧娈靛懡鍚�
+ JSONObject tenant = null;
+ for (String key : new String[]{"tenant", "tenantInfo", "enterprise", "company", "org"}) {
+ Object v = userInfo.get(key);
+ if (v instanceof JSONObject) {
+ tenant = (JSONObject) v;
+ break;
+ }
+ if (v instanceof String && ((String) v).trim().startsWith("{")) {
+ try {
+ tenant = JSONObject.parseObject((String) v);
+ break;
+ } catch (Exception ignored) {
+ }
+ }
+ }
+ String account = tenant == null ? null : firstText(tenant, "tenantAccount", "account", "userName", "loginName", "mobile", "phone", "name");
+ String password = tenant == null ? null : firstText(tenant, "tenantPassword", "password", "pwd", "passWord");
+ if (ObjectUtils.isEmpty(account)) {
+ account = firstText(userInfo, "tenantAccount", "account", "userName", "loginName", "mobile", "phone");
+ }
+ if (ObjectUtils.isEmpty(password)) {
+ password = firstText(userInfo, "tenantPassword", "password", "pwd");
+ }
+ if (ObjectUtils.isEmpty(account) || ObjectUtils.isEmpty(password)) {
+ log.error("[娴疆SSO] 鏈彇鍒扮鎴疯处鍙�/瀵嗙爜, userInfo={}", userInfo);
+ return AjaxResult.error("娴疆鏈繑鍥炰紒涓氱鎴疯处鍙蜂俊鎭紝璇疯仈绯诲钩鍙扮鐞嗗憳妫�鏌ヨ璐﹀彿鐨勪紒涓氱粦瀹�");
+ }
+ try {
+ String generateToken = loginService.login(account, password, null, IdWorker.get32UUID());
+ AjaxResult ajax = AjaxResult.success();
+ ajax.put(Constants.TOKEN, generateToken);
+ return ajax;
+ } catch (Exception e) {
+ log.error("[娴疆SSO] 绉熸埛璐﹀彿鐧诲綍澶辫触, account={}", account, e);
+ return AjaxResult.error("娴疆鍗曠偣鐧诲綍澶辫触锛氱鎴疯处鍙穂" + account + "]鍦ㄧ郴缁熶腑鐧诲綍澶辫触锛�" + e.getMessage() + "锛�");
+ }
+ }
+
+ /** 渚濇灏濊瘯澶氫釜閿紝杩斿洖绗竴涓潪绌哄瓧绗︿覆鍊� */
+ private String firstText(JSONObject obj, String... keys) {
+ if (obj == null || keys == null) {
+ return null;
+ }
+ for (String key : keys) {
+ Object v = obj.get(key);
+ if (v == null) {
+ continue;
+ }
+ String s = String.valueOf(v).trim();
+ if (!s.isEmpty() && !"null".equalsIgnoreCase(s)) {
+ return s;
+ }
+ }
+ return null;
}
@PostMapping("/applicationOrdering")
+ @Transactional(rollbackFor = Exception.class,isolation = Isolation.READ_COMMITTED)
public JSONObject order (@RequestBody TidePojo tidePojo) {
SysUser user = userService.selectUserByUserName(tidePojo.getPltAccountLogin());
String defaultPwd = "I73Kj+Mn$+SI";//榛樿寮�閫氬瘑鐮佸浐瀹氬啓姝�
// String randomString = TideUtils.getRandomString(12);
//璐﹀彿涓嶅瓨鍦紝鎵ц鏂板鎿嶄綔
- if(Objects.isNull(user)){
+ if(ObjectUtils.isEmpty(user)){
+ //1.鍏堟柊澧炵敤鎴峰搴旂殑鍏徃
+ SysDept dept = new SysDept();
+ dept.setParentId(100L);//鐖跺叕鍙竔d
+ dept.setDeptName(tidePojo.getEnterpriseName());
+ dept.setDeptNick(tidePojo.getEnterpriseName());
+ dept.setOrderNum(0);
+ boolean deptNameUnique = deptService.checkDeptNameUnique(dept);
+ if (deptNameUnique){
+ deptService.insertDept(dept);
+ }
+ //鏌ヨ鍏徃
+ SysDept newSysDept = deptService.selectDeptByDeptName(dept.getDeptName());
+ dept.setDeptId(ObjectUtils.isEmpty(newSysDept)?100L:newSysDept.getDeptId());
+ dept.setTenantId(dept.getDeptId());
+ deptService.updateDept(dept);
user = new SysUser();
String password = SecurityUtils.encryptPassword(defaultPwd);
user.setPassword(password);
@@ -67,7 +170,9 @@
user.setDelFlag("0");
user.setPostIds(new Long[]{1L});
user.setRoleId(1L);
- user.setDeptIds(new Long[]{100L});
+ user.setRoleIds(new Long[]{2L});//榛樿鏅�氳鑹�
+ user.setDeptIds(new Long[]{dept.getDeptId()});//缁戝畾鍏徃
+ user.setTenantId(dept.getDeptId());
userService.insertUser(user);
}
Map<String, Object> map = new HashMap<>();
--
Gitblit v1.9.3