中微多查询

main
FOAM 2024-03-15 15:53:57 +08:00
parent 7991fe68ab
commit 4f618d60d1
8 changed files with 406 additions and 38 deletions

View File

@ -70,6 +70,22 @@
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.4.0.jre8</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.21</version>
</dependency>
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>2.2.3</version>
</dependency>
</dependencies>
<build>

View File

@ -1,7 +1,9 @@
package com.yc.wms;
import com.yc.wms.until.SpringContextHolder;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
@SpringBootApplication
public class WmsApplication {
@ -9,5 +11,10 @@ public class WmsApplication {
public static void main(String[] args) {
SpringApplication.run(WmsApplication.class, args);
}
@Bean
public SpringContextHolder springContextHolder() {
return new SpringContextHolder();
}
}

View File

@ -5,12 +5,20 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yc.wms.model.Menu;
import com.yc.wms.model.User;
import com.yc.wms.service.DcxService;
import com.yc.wms.service.MenuService;
import com.yc.wms.service.UserService;
import com.yc.wms.until.QueryPageUtil;
import com.yc.wms.until.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.spring.web.json.Json;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import java.util.Arrays;
import java.util.HashMap;
@ -25,6 +33,7 @@ import java.util.List;
* @since 2023-03-04
*/
@RestController
@Slf4j
@RequestMapping("/user")
public class UserController {
@ -34,26 +43,65 @@ public class UserController {
@Autowired
private MenuService menuService;
@Autowired
private DcxService dcxService;
/**
* @return
*
*/
@PostMapping ("/login")
public Result login(@RequestBody User user) {
Result result = null;
List<User> list= userService.lambdaQuery()
.eq(User::getUserNo,user.getUserNo())
.eq(User::getPassWord,user.getPassWord()).list();
if(list.size()>0){
List menulist=menuService.lambdaQuery().like(Menu::getMenuRight,list.get(0).getRoleId().toString()).list();
HashMap map =new HashMap();
map.put("user",list.get(0));
map.put("menu",menulist);
result=Result.success(map);
}else{
result=Result.fail("账号或密码输入有误!");
}
return result;
// Result result = null;
// List<User> list= userService.lambdaQuery()
// .eq(User::getUserNo,user.getUserNo())
// .eq(User::getPassWord,user.getPassWord()).list();
// if(list.size()>0){
// List menulist=menuService.lambdaQuery().like(Menu::getMenuRight,list.get(0).getRoleId().toString()).list();
// HashMap map =new HashMap();
// map.put("user",list.get(0));
// map.put("menu",menulist);
// result=Result.success(map);
// }else{
// result=Result.fail("账号或密码输入有误!");
// }
// return result;
JSONArray array=new JSONArray();
JSONObject data=new JSONObject();
int menuCount=3;
for (int i=1;i<=menuCount;i++){
JSONObject menu=new JSONObject();
menu.put("id",i);
menu.put("menuCode",i);
if(i==1) {
menu.put("menuName", "库存汇总查询");
}else if(i==2) {
menu.put("menuName", "入库明细查询");
}else if(i==3) {
menu.put("menuName", "出库明细查询");
}
menu.put("menuLevel",i);
menu.put("menuParentCode",i);
menu.put("menuClick","admin"+i);
menu.put("menuRight", "0,1");
menu.put("menuComponent","/admin"+i);
menu.put("menuIcon","el-icon-s-home");
array.add(menu);
}
data.put("menu",array);
JSONObject u=new JSONObject();
u.put("id", 2);
u.put("userNo", "1");
u.put("userName", "1");
u.put("passWord", "123456");
u.put("age", 1);
u.put("sex", 1);
u.put("phone", "1");
u.put("roleId", 1);
u.put("isValid", false);
data.put("user",u);
log.info("lll:"+new ResponseEntity(data, HttpStatus.OK));
return Result.success(menuCount,data);
}
/**
@ -62,26 +110,27 @@ public class UserController {
*/
@PostMapping("/queryUser")
public Result queryUser(@RequestBody QueryPageUtil query) {
HashMap map = query.getParam();
String name = (String) map.get("name");
String sex = (String) map.get("xb");
Page<User> page = new Page<User>();
page.setCurrent(query.getPageNum());
page.setSize(query.getPageSize());
System.out.println("当前页:" + query.getPageNum());
System.out.println("条数:" + query.getPageSize());
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper();
if (name != null && name.length() > 0) {
lambdaQueryWrapper.like(User::getUserName, name);
}
if (sex != null && sex.length() > 0) {
lambdaQueryWrapper.like(User::getSex, sex);
}
IPage iPage = userService.QueryUser(page, lambdaQueryWrapper);
System.out.println(iPage.getTotal());
System.out.println(iPage.getRecords());
return Result.success(iPage.getTotal(), iPage.getRecords());
// HashMap map = query.getParam();
// String name = (String) map.get("name");
// String sex = (String) map.get("xb");
// Page<User> page = new Page<User>();
// page.setCurrent(query.getPageNum());
// page.setSize(query.getPageSize());
// System.out.println("当前页:" + query.getPageNum());
// System.out.println("条数:" + query.getPageSize());
// LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper();
// if (name != null && name.length() > 0) {
// lambdaQueryWrapper.like(User::getUserName, name);
// }
// if (sex != null && sex.length() > 0) {
// lambdaQueryWrapper.like(User::getSex, sex);
// }
// IPage iPage = userService.QueryUser(page, lambdaQueryWrapper);
//
// System.out.println(iPage.getTotal());
// System.out.println(iPage.getRecords());
// return Result.success(iPage.getTotal(), iPage.getRecords());
return dcxService.readJson(query);
}
/**

View File

@ -0,0 +1,23 @@
package com.yc.wms.service;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yc.wms.model.User;
import com.yc.wms.until.QueryPageUtil;
import com.yc.wms.until.Result;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author wms
* @since 2023-03-04
*/
public interface DcxService {
Result readJson(QueryPageUtil query);
}

View File

@ -0,0 +1,73 @@
package com.yc.wms.service.impl;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.yc.wms.service.DcxService;
import com.yc.wms.until.QueryPageUtil;
import com.yc.wms.until.Result;
import com.yc.wms.until.SpringContextHolder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.object.SqlQuery;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
@Service
@Slf4j
public class DcxServiceImpl implements DcxService {
private EntityManager entityManager;
@Override
public Result readJson(QueryPageUtil query) {
HashMap map = query.getParam();
// String methodType = (String) map.get("methodType");
// if(methodType.equals("kchzcx")){//库存汇总查询
// return queryKchz(query);
// }
return queryKchz(query);
}
public Result queryKchz(QueryPageUtil query) {
EntityManager entity = SpringContextHolder.getBean(EntityManager.class);
HashMap map = query.getParam();
// String itemCode = (String) map.get("itemCode");
int pageNum = query.getPageNum();//当前页
int pageSize = query.getPageSize();//条数
System.out.println("当前页:" + pageNum);
System.out.println("条数:" + pageSize);
String sql = "from (SELECT ROW_NUMBER() OVER(ORDER BY it.id) AS RowNum, it.id ,"
+ "it.code,"
+ "it.name"
+ " from Item it ";
sql += ") AS subquery ";
String sqlCount = "select count(id) " + sql;
sql = "select * " + sql + " WHERE RowNum BETWEEN " + (pageNum-1) * pageSize + " AND " + (pageNum) * pageSize;
log.info("sqlCount:"+sqlCount);
log.info("sql:"+sql);
log.info("entityManager:"+entity);
List<Object[]> list=entity.createNativeQuery(sql).getResultList();
List listCount=entity.createNativeQuery(sqlCount).getResultList();
JSONArray data = new JSONArray();
for(Object[] obj:list){
int i=0;
JSONObject d = new JSONObject();
d.put("id",obj[i++]==null?"":obj[i-1]);
d.put("userNo",obj[i++]==null?"":obj[i-1]);
d.put("userName", obj[i++]==null?"":obj[i-1]);
d.put("passWord","123456");
d.put("age",19);
d.put("sex",1);
d.put("phone", "123");
d.put("roleId", 2);
d.put("isValid", false);
data.add(d);
}
return Result.success(listCount.size(),data);
}
}

View File

@ -0,0 +1,43 @@
/*
* Copyright 2019-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.yc.wms.until;
/**
* @author: liaojinlong
* @date: 2020/6/9 17:02
* @since: 1.0
* @see {@link SpringContextHolder}
* SpringContextHolder <br>
* <br>
* SpringContextHolder 使
*/
public interface CallBack {
/**
*
*/
void executor();
/**
*
* @return /
*/
default String getCallBackName() {
return Thread.currentThread().getId() + ":" + this.getClass().getName();
}
}

View File

@ -0,0 +1,157 @@
/*
* Copyright 2019-2020 Zheng Jie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.yc.wms.until;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Jie
* @date 2019-01-07
*/
@Slf4j
public class SpringContextHolder implements ApplicationContextAware, DisposableBean {
private static ApplicationContext applicationContext = null;
private static final List<CallBack> CALL_BACKS = new ArrayList<>();
private static boolean addCallback = true;
/**
* SpringContextHolder
* SpringContextHolder 使
*
* @param callBack
*/
public synchronized static void addCallBacks(CallBack callBack) {
if (addCallback) {
SpringContextHolder.CALL_BACKS.add(callBack);
} else {
log.warn("CallBack{} 已无法添加!立即执行", callBack.getCallBackName());
callBack.executor();
}
}
/**
* applicationContextBean, .
*/
@SuppressWarnings("unchecked")
public static <T> T getBean(String name) {
assertContextInjected();
return (T) applicationContext.getBean(name);
}
/**
* applicationContextBean, .
*/
public static <T> T getBean(Class<T> requiredType) {
assertContextInjected();
return applicationContext.getBean(requiredType);
}
/**
* SpringBoot
*
* @param property key
* @param defaultValue
* @param requiredType
* @return /
*/
public static <T> T getProperties(String property, T defaultValue, Class<T> requiredType) {
T result = defaultValue;
try {
result = getBean(Environment.class).getProperty(property, requiredType);
} catch (Exception ignored) {}
return result;
}
/**
* SpringBoot
*
* @param property key
* @return /
*/
public static String getProperties(String property) {
return getProperties(property, null, String.class);
}
/**
* SpringBoot
*
* @param property key
* @param requiredType
* @return /
*/
public static <T> T getProperties(String property, Class<T> requiredType) {
return getProperties(property, null, requiredType);
}
/**
* ApplicationContext.
*/
private static void assertContextInjected() {
if (applicationContext == null) {
throw new IllegalStateException("applicaitonContext属性未注入, 请在applicationContext" +
".xml中定义SpringContextHolder或在SpringBoot启动类中注册SpringContextHolder.");
}
}
/**
* SpringContextHolderApplicationContextNull.
*/
private static void clearHolder() {
log.debug("清除SpringContextHolder中的ApplicationContext:"
+ applicationContext);
applicationContext = null;
}
@Override
public void destroy() {
SpringContextHolder.clearHolder();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
if (SpringContextHolder.applicationContext != null) {
log.warn("SpringContextHolder中的ApplicationContext被覆盖, 原有ApplicationContext为:" + SpringContextHolder.applicationContext);
}
SpringContextHolder.applicationContext = applicationContext;
if (addCallback) {
for (CallBack callBack : SpringContextHolder.CALL_BACKS) {
callBack.executor();
}
CALL_BACKS.clear();
}
SpringContextHolder.addCallback = false;
}
/**
* @Service bean
* @return /
*/
public static List<String> getAllServiceBeanName() {
return new ArrayList<>(Arrays.asList(applicationContext
.getBeanNamesForAnnotation(Service.class)));
}
}

View File

@ -3,10 +3,10 @@ server:
spring:
datasource:
url: jdbc:mysql://47.100.54.81:53306/wms?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=false&useOldAliasMetadataBehavior=true&autoReconnect=true&failOverReadOnly=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: Youchain@56
url: jdbc:sqlserver://47.100.54.81:1433;DatabaseName=zwtest
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
username: super
password: 1K4QfD%ESd1fe@VJ
hikari:
connection-timeout: 60000
validation-timeout: 3000