diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/CommonResult.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/CommonResult.java index 7cb9fd69..7e25915d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/CommonResult.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/CommonResult.java @@ -7,24 +7,24 @@ package org.nl.common.utils.api; * @date 2023-03-02 */ public class CommonResult { - private long code; - private String desc; - private T result; + private long status; + private String message; + private T data; public CommonResult() { } - protected CommonResult(T result) { - this.result = result; - this.desc = ResultCode.SUCCESS.getDesc(); - this.code = ResultCode.SUCCESS.getCode(); + protected CommonResult(T data) { + this.data = data; + this.message = ResultCode.SUCCESS.getDesc(); + this.status = ResultCode.SUCCESS.getCode(); } - protected CommonResult(long code, String desc, T result) { - this.code = code; - this.desc = desc; - this.result = result; + protected CommonResult(long status, String message, T data) { + this.status = status; + this.message = message; + this.data = data; } /** @@ -38,20 +38,20 @@ public class CommonResult { /** * 成功返回结果 * - * @param result 获取的数据 + * @param data 获取的数据 */ - public static CommonResult success(T result) { - return new CommonResult<>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getDesc(), result); + public static CommonResult success(T data) { + return new CommonResult<>(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getDesc(), data); } /** * 成功返回结果 * - * @param result 获取的数据 - * @param desc 提示信息 + * @param data 获取的数据 + * @param message 提示信息 */ - public static CommonResult success(T result, String desc) { - return new CommonResult<>(ResultCode.SUCCESS.getCode(), desc, result); + public static CommonResult success(T data, String message) { + return new CommonResult<>(ResultCode.SUCCESS.getCode(), message, data); } /** @@ -65,18 +65,18 @@ public class CommonResult { /** * 失败返回结果 * @param errorCode 错误码 - * @param desc 错误信息 + * @param message 错误信息 */ - public static CommonResult failed(IErrorCode errorCode,String desc) { - return new CommonResult<>(errorCode.getCode(), desc, null); + public static CommonResult failed(IErrorCode errorCode,String message) { + return new CommonResult<>(errorCode.getCode(), message, null); } /** * 失败返回结果 - * @param desc 提示信息 + * @param message 提示信息 */ - public static CommonResult failed(String desc) { - return new CommonResult<>(ResultCode.FAILED.getCode(), desc, null); + public static CommonResult failed(String message) { + return new CommonResult<>(ResultCode.FAILED.getCode(), message, null); } /** @@ -95,47 +95,47 @@ public class CommonResult { /** * 参数验证失败返回结果 - * @param desc 提示信息 + * @param message 提示信息 */ - public static CommonResult validateFailed(String desc) { - return new CommonResult<>(ResultCode.MISS_PARAMETER.getCode(), desc, null); + public static CommonResult validateFailed(String message) { + return new CommonResult<>(ResultCode.MISS_PARAMETER.getCode(), message, null); } /** * 未登录返回结果 */ - public static CommonResult unauthorized(T result) { - return new CommonResult<>(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getDesc(), result); + public static CommonResult unauthorized(T data) { + return new CommonResult<>(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getDesc(), data); } /** * 未授权返回结果 */ - public static CommonResult forbidden(T result) { - return new CommonResult<>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getDesc(), result); + public static CommonResult forbidden(T data) { + return new CommonResult<>(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getDesc(), data); } - public long getCode() { - return code; + public long getStatus() { + return status; } - public void setCode(long code) { - this.code = code; + public void setStatus(long status) { + this.status = status; } - public String getDesc() { - return desc; + public String getMessage() { + return message; } - public void setDesc(String desc) { - this.desc = desc; + public void setMessage(String message) { + this.message = message; } - public T getResult() { - return result; + public T getData() { + return data; } - public void setResult(T result) { - this.result = result; + public void setData(T data) { + this.data = data; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/RestBusinessTemplate.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/RestBusinessTemplate.java index e2876129..1971fc19 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/RestBusinessTemplate.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/RestBusinessTemplate.java @@ -15,11 +15,11 @@ public class RestBusinessTemplate{ public static CommonResult execute(Callback callback) { CommonResult result = new CommonResult<>(); try { - result.setCode(ResultCode.SUCCESS.getCode()); - result.setDesc(ResultCode.SUCCESS.getDesc()); + result.setStatus(ResultCode.SUCCESS.getCode()); + result.setMessage(ResultCode.SUCCESS.getDesc()); T object = callback.doExecute(); if(object != null) { - result.setResult(object); + result.setData(object); } } catch(BizCoreException e) { @@ -35,13 +35,46 @@ public class RestBusinessTemplate{ } log.error(e.getErrorMsg()); ResultCode code = e.getCode() == null ? ResultCode.FAILED : e.getCode(); - result.setCode(code.getCode()); - result.setDesc(errorMsg); + result.setStatus(code.getCode()); + result.setMessage(errorMsg); } catch(Exception e) { log.error("execute error", e); - result.setCode(ResultCode.FAILED.getCode()); - result.setDesc(ResultCode.FAILED.getDesc()+",原因是:"+e.getMessage()); + result.setStatus(ResultCode.FAILED.getCode()); + result.setMessage(ResultCode.FAILED.getDesc() + ",原因是:" + e.getMessage()); + } + return result; + } + + public static CommonResult execute(T object) { + CommonResult result = new CommonResult<>(); + try { + result.setStatus(ResultCode.SUCCESS.getCode()); + result.setMessage(ResultCode.SUCCESS.getDesc()); + if(object != null) { + result.setData(object); + } + } + catch(BizCoreException e) { + String errorMsg; + if(StringUtils.isNotBlank(e.getErrorMsg())) { + errorMsg = e.getErrorMsg(); + } + else if(e.getCode() != null) { + errorMsg = e.getCode().getDesc(); + } + else{ + errorMsg = e.getMessage(); + } + log.error(e.getErrorMsg()); + ResultCode code = e.getCode() == null ? ResultCode.FAILED : e.getCode(); + result.setStatus(code.getCode()); + result.setMessage(errorMsg); + } + catch(Exception e) { + log.error("execute error", e); + result.setStatus(ResultCode.FAILED.getCode()); + result.setMessage(ResultCode.FAILED.getDesc() + ",原因是:" + e); } return result; } @@ -50,19 +83,19 @@ public class RestBusinessTemplate{ CommonResult result = new CommonResult<>(); try { callback.execute(); - result.setCode(ResultCode.SUCCESS.getCode()); - result.setDesc(ResultCode.SUCCESS.getDesc()); + result.setStatus(ResultCode.SUCCESS.getCode()); + result.setMessage(ResultCode.SUCCESS.getDesc()); } catch(BizCoreException e) { log.error("", e); ResultCode code = e.getCode() == null ? ResultCode.FAILED : e.getCode(); - result.setCode(code.getCode()); - result.setDesc(StringUtils.isBlank(e.getMessage()) ? code.getDesc() : e.getMessage()); + result.setStatus(code.getCode()); + result.setMessage(StringUtils.isBlank(e.getMessage()) ? code.getDesc() : e.getMessage()); } catch(Exception e) { log.error("execute error", e); - result.setCode(ResultCode.FAILED.getCode()); - result.setDesc(ResultCode.FAILED.getDesc()); + result.setStatus(ResultCode.FAILED.getCode()); + result.setMessage(ResultCode.FAILED.getDesc()); } return result; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/ResultCode.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/ResultCode.java index 4175c06d..c516f7b1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/ResultCode.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/api/ResultCode.java @@ -7,7 +7,7 @@ package org.nl.common.utils.api; * @date 2023-03-02 */ public enum ResultCode implements IErrorCode{ - SUCCESS(1, "操作成功"), + SUCCESS(200, "操作成功"), FAILED(0, "操作失败"), MISS_PARAMETER(400, "参数缺失"), UNAUTHORIZED(401, "暂未登录或token已经过期"), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java index 1171a7b8..b334f061 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java @@ -9,7 +9,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; - import lombok.RequiredArgsConstructor; +import lombok.RequiredArgsConstructor; import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.config.RsaProperties; @@ -43,51 +43,46 @@ import java.util.Map; @RequestMapping("/mobile/auth") @RequiredArgsConstructor @Api(tags = "手持:系统授权接口") -public class MobileAuthorizationController { - private final RedisUtils redisUtils; - private final ISysUserService userService; - private final ISysRoleService roleService; +public class MobileAuthorizationController{ + private final RedisUtils redisUtils; + private final ISysUserService userService; + private final ISysRoleService roleService; - @ApiOperation("登录授权") - @PostMapping(value = "/login") - @SaIgnore - public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception { - // 密码解密 - 前端的加密规则: encrypt(根据实际更改) -// String password = authUser.getPassword(); - String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); - // 校验数据库 - // 根据用户名查询,在比对密码 - SysUser userDto = userService.getOne(new QueryWrapper().eq("username", authUser.getUsername()));// 拿不到已经抛出异常 - if (userDto==null||!userDto.getPassword().equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密 - throw new BadRequestException("账号或密码错误"); - } - // 获取权限列表 - 登录查找权限 - List permissionList = roleService.getPermissionList(JSONObject.parseObject(JSON.toJSONString(userDto))); - - // 登录输入,登出删除 - CurrentUser user = new CurrentUser(); - user.setId(userDto.getUserId()); - user.setUsername(userDto.getUsername()); - user.setPresonName(userDto.getPersonName()); - user.setUser(userDto); - user.setPermissions(permissionList); - - // SaLoginModel 配置登录相关参数 - StpUtil.login(userDto.getUserId(), new SaLoginModel() - .setDevice("PE") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 - .setExtra("loginInfo", user) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) - ); - - // 返回 token 与 用户信息 - JSONObject jsonObject = new JSONObject(); - jsonObject.put("user", userDto); - Map authInfo = new HashMap(2) {{ - put("token", StpUtil.getTokenValue()); - put("user", jsonObject); - }}; - - redisUtils.set("pe-satoken", StpUtil.getTokenValue(), StpUtil.getTokenTimeout()); - - return ResponseEntity.ok(authInfo); - } + @ApiOperation("登录授权") + @PostMapping(value = "/login") + @SaIgnore + public ResponseEntity login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) + throws Exception { + // 密码解密 - 前端的加密规则: encrypt(根据实际更改) + // String password = authUser.getPassword(); + String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword()); + // 校验数据库 + // 根据用户名查询,在比对密码 + SysUser userDto = userService.getOne(new QueryWrapper().eq("username", authUser.getUsername()));// 拿不到已经抛出异常 + if(userDto == null || !userDto.getPassword().equals(SaSecureUtil.md5BySalt(password, "salt"))) { // 这里需要密码加密 + throw new BadRequestException("账号或密码错误"); + } + // 获取权限列表 - 登录查找权限 + List permissionList = roleService.getPermissionList(JSONObject.parseObject(JSON.toJSONString(userDto))); + // 登录输入,登出删除 + CurrentUser user = new CurrentUser(); + user.setId(userDto.getUserId()); + user.setUsername(userDto.getUsername()); + user.setPresonName(userDto.getPersonName()); + user.setUser(userDto); + user.setPermissions(permissionList); + // SaLoginModel 配置登录相关参数 + StpUtil.login(userDto.getUserId(), new SaLoginModel().setDevice("PE") // 此次登录的客户端设备类型, 用于[同端互斥登录]时指定此次登录的设备类型 + .setExtra("loginInfo", user) // Token挂载的扩展参数 (此方法只有在集成jwt插件时才会生效) + ); + // 返回 token 与 用户信息 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("user", userDto); + Map authInfo = new HashMap(2){{ + put("token", StpUtil.getTokenValue()); + put("user", jsonObject); + }}; + redisUtils.set("pe-satoken", StpUtil.getTokenValue(), StpUtil.getTokenTimeout()); + return ResponseEntity.ok(authInfo); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/bean/ResultBean.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/bean/ResultBean.java index 62bb50fc..6d109119 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/bean/ResultBean.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/bean/ResultBean.java @@ -33,483 +33,464 @@ import java.util.Iterator; import java.util.List; @Slf4j -public class ResultBean implements Serializable, Cloneable { - private static final long serialVersionUID = -7486919713117296262L; - private ArrayList rslist = null; +public class ResultBean implements Serializable, Cloneable{ + private static final long serialVersionUID = -7486919713117296262L; + private ArrayList rslist = null; + // 返回的结果集的个数 + private int ResultCount = 0; + //如果是删除、更新类操作,返回受影响的记录数 + private int RowsCount = 0; + private int sucess; + private ArrayList InfoDump = null; + private ArrayList InfoError = null; + private ArrayList InfoTrace = null; - // 返回的结果集的个数 - private int ResultCount = 0; + public int getRowsCount() { + return RowsCount; + } - //如果是删除、更新类操作,返回受影响的记录数 - private int RowsCount = 0; + public void setRowsCount(int rowsCount) { + RowsCount = rowsCount; + } - private int sucess; + /** + * 返回是否执行成功 + * + * @return + */ + public boolean isSuccess() { + if(1 == this.sucess) { + return true; + } + else{ + return false; + } + } - private ArrayList InfoDump = null; + public int getSucess() { + return sucess; + } - private ArrayList InfoError = null; + public void setSucess(int value) { + this.sucess = value; + } - private ArrayList InfoTrace = null; + /** + * 取得结果集 + * + * @param value + * @return + */ + public ArrayList getResultSet(int value) { + // value = value - 1; + if(null == rslist) { + return null; + } + if(value < rslist.size()) { + if(rslist.get(value) instanceof RowSetDynaClass) { + return (ArrayList) ((RowSetDynaClass) rslist.get(value)).getRows(); + } + else{ + return (ArrayList) rslist.get(value); + } + } + return null; + } + // /** + // * 返回按bc定义的dataset + // * @param bc + // * @param value + // * @return + // */ + // public WQLData getWQLData(WQLObject wo,int value){ + // if (value < rslist.size()) { + // + // ArrayList list = getResultSet(value); + // try{ + // WQLData wd = null; + // if(null!=wo){ + // wd = new WQLData(wo); + // wd.populate(list); + // }else{ + // wd = new WQLData(list); + // } + // return wd; + // }catch(Exception ex){ + // ex.printStackTrace(); + // } + // } + // return null; + // } + // + // /** + // * 返回普通dataset + // * @param value + // * @return + // */ + // public WQLData getWQLData(int value){ + // return getWQLData(null,value); + // } + /** + * 泛型 + * + * @param resultSet + * @param c + * @return + * @throws IllegalAccessException + * @throws InstantiationException + * @throws IntrospectionException + */ + public ArrayList getObjects(int resultSet, Class c) + throws Exception { + JSONArray jrows = this.getResultJSONArray(resultSet); + ArrayList rows = new ArrayList(); + for(int i = 0; i < jrows.size(); i++) { + JSONObject jrow = jrows.getJSONObject(i); + Object o = c.newInstance(); + Field[] fields = c.getDeclaredFields(); + //反射读取其中属性,从jrow中取值并调用o中的set方法设置 + for(Field f : fields) { + String fieldName = f.getName(); + if(-1 != fieldName.toLowerCase().indexOf("serialversion") || -1 != fieldName.toLowerCase().indexOf("param_")) { + continue; + } + PropertyDescriptor pd = new PropertyDescriptor(f.getName(), c); + String jvalue = jrow.getString(fieldName); + Method m = pd.getWriteMethod(); + m.invoke(o, jvalue); + } + rows.add(o); + } + return rows; + } - public int getRowsCount() { - return RowsCount; - } - - public void setRowsCount(int rowsCount) { - RowsCount = rowsCount; - } - - /** - * 返回是否执行成功 - * - * @return - */ - public boolean isSuccess() { - if (1 == this.sucess) { - return true; - } else { - return false; - } - } - - public int getSucess() { - return sucess; - } - - public void setSucess(int value) { - this.sucess = value; - } - - /** - * 取得结果集 - * - * @param value - * @return - */ - public ArrayList getResultSet(int value) { - // value = value - 1; - if (null == rslist) { - return null; - } - if (value < rslist.size()) { - if (rslist.get(value) instanceof RowSetDynaClass) { - return (ArrayList) ((RowSetDynaClass) rslist.get(value)).getRows(); - } else { - return (ArrayList) rslist.get(value); - } - } - return null; - } - -// /** -// * 返回按bc定义的dataset -// * @param bc -// * @param value -// * @return -// */ -// public WQLData getWQLData(WQLObject wo,int value){ -// if (value < rslist.size()) { -// -// ArrayList list = getResultSet(value); -// try{ -// WQLData wd = null; -// if(null!=wo){ -// wd = new WQLData(wo); -// wd.populate(list); -// }else{ -// wd = new WQLData(list); -// } -// return wd; -// }catch(Exception ex){ -// ex.printStackTrace(); -// } -// } -// return null; -// } -// -// /** -// * 返回普通dataset -// * @param value -// * @return -// */ -// public WQLData getWQLData(int value){ -// return getWQLData(null,value); -// } - - /** - * 泛型 - * - * @param resultSet - * @param c - * @return - * @throws IllegalAccessException - * @throws InstantiationException - * @throws IntrospectionException - */ - public ArrayList getObjects(int resultSet, Class c) throws Exception { - JSONArray jrows = this.getResultJSONArray(resultSet); - ArrayList rows = new ArrayList(); - for (int i = 0; i < jrows.size(); i++) { - JSONObject jrow = jrows.getJSONObject(i); - Object o = c.newInstance(); - Field[] fields = c.getDeclaredFields(); - //反射读取其中属性,从jrow中取值并调用o中的set方法设置 - for (Field f : fields) { - String fieldName = f.getName(); - if (-1 != fieldName.toLowerCase().indexOf("serialversion") - || -1 != fieldName.toLowerCase().indexOf("param_")) { + /** + * 获取单一的对象 + * + * @param resultSet + * @param c + * @return + * @throws Exception + */ + public Object getObject(int resultSet, Class c) + throws Exception { + JSONObject jrow = this.uniqueResult(resultSet); + if(null == jrow) { + return null; + } + Object o = c.newInstance(); + Field[] fields = c.getDeclaredFields(); + //反射读取其中属性,从jrow中取值并调用o中的set方法设置 + for(Field f : fields) { + String fieldName = f.getName(); + if(-1 != fieldName.toLowerCase().indexOf("serialversion") || -1 != fieldName.toLowerCase().indexOf("param_")) { continue; - } - PropertyDescriptor pd = new PropertyDescriptor(f.getName(), c); - String jvalue = jrow.getString(fieldName); - Method m = pd.getWriteMethod(); - m.invoke(o, jvalue); - } - rows.add(o); - } - return rows; - } + } + PropertyDescriptor pd = new PropertyDescriptor(f.getName(), c); + String jvalue = jrow.getString(fieldName); + Method m = pd.getWriteMethod(); + if(null != m) { + m.invoke(o, jvalue); + } + } + return o; + } - /** - * 获取单一的对象 - * - * @param resultSet - * @param c - * @return - * @throws Exception - */ - public Object getObject(int resultSet, Class c) throws Exception { - JSONObject jrow = this.uniqueResult(resultSet); - if (null == jrow) { - return null; - } - Object o = c.newInstance(); - Field[] fields = c.getDeclaredFields(); - //反射读取其中属性,从jrow中取值并调用o中的set方法设置 - for (Field f : fields) { - String fieldName = f.getName(); - if (-1 != fieldName.toLowerCase().indexOf("serialversion") - || -1 != fieldName.toLowerCase().indexOf("param_")) { - continue; - } - PropertyDescriptor pd = new PropertyDescriptor(f.getName(), c); - String jvalue = jrow.getString(fieldName); - Method m = pd.getWriteMethod(); - if (null != m) { - m.invoke(o, jvalue); - } - } - return o; - } + /** + * 取得jsonarray格式的结果集 + * + * @param resultSet + * @return + */ + public JSONArray getResultJSONArray(int resultSet) { + ArrayList rows = this.getResultSet(resultSet); + if(null == rows) { + rows = new ArrayList(); + } + JSONArray jrows = this.rows2jsonarray(rows); + return jrows; + } - /** - * 取得jsonarray格式的结果集 - * - * @param resultSet - * @return - */ - public JSONArray getResultJSONArray(int resultSet) { - ArrayList rows = this.getResultSet(resultSet); - if (null == rows) { - rows = new ArrayList(); - } - JSONArray jrows = this.rows2jsonarray(rows); - return jrows; - } + /** + * 获取唯一一条记录 + * + * @param resultSet 结果集序号 + * @return + */ + public JSONObject uniqueResult(int resultSet) { + ArrayList rows = this.getResultSet(resultSet); + if(null == rows) { + rows = new ArrayList(); + } + JSONArray jrows = this.rows2jsonarray(rows); + JSONObject jrow = null; + if(jrows.size() > 0) { + jrow = jrows.getJSONObject(0); + } + // log.warn("===========uniqueResult速度 解析结果集="+(t2-t1)+" 转换成JSON="+(t3-t2)); + return jrow; + } - /** - * 获取唯一一条记录 - * - * @param resultSet 结果集序号 - * @return - */ - public JSONObject uniqueResult(int resultSet) { - ArrayList rows = this.getResultSet(resultSet); - if (null == rows) { - rows = new ArrayList(); - } - JSONArray jrows = this.rows2jsonarray(rows); - JSONObject jrow = null; - if (jrows.size() > 0) { - jrow = jrows.getJSONObject(0); - } -// log.warn("===========uniqueResult速度 解析结果集="+(t2-t1)+" 转换成JSON="+(t3-t2)); - return jrow; - } + /** + * 获取适合grid的分页结果集 + * + * @return + */ + public JSONObject pageResult() { + JSONObject jres = new JSONObject(); + ArrayList rows = this.getResultSet(0); + if(null == rows) { + rows = new ArrayList(); + } + JSONArray jrows = this.rows2jsonarray(rows); + jres.put("content", jrows); + ArrayList rows2 = this.getResultSet(1); + int nTotalSize = 0; + if(null != rows2 && rows2.size() > 0) { + JSONObject jrow2 = this.row2jsonobject((BasicDynaBean) rows2.get(0)); + nTotalSize = jrow2.getInteger("page_totalrecordnum"); + } + jres.put("totalElements", nTotalSize); + return jres; + } - /** - * 获取适合grid的分页结果集 - * - * @return - */ - public JSONObject pageResult() { - JSONObject jres = new JSONObject(); - ArrayList rows = this.getResultSet(0); - if (null == rows) { - rows = new ArrayList(); - } - JSONArray jrows = this.rows2jsonarray(rows); - jres.put("content", jrows); + /** + * 结果集转换方法 + * + * @param rows + * @return + */ + private JSONArray rows2jsonarray(ArrayList rows) { + JSONArray jrows = new JSONArray(); + for(Iterator it = rows.iterator(); it.hasNext(); ) { + BasicDynaBean row = (BasicDynaBean) it.next(); + jrows.add(row2jsonobject(row)); + } + return jrows; + } - ArrayList rows2 = this.getResultSet(1); - int nTotalSize = 0; - if (null != rows2 && rows2.size() > 0) { - JSONObject jrow2 = this.row2jsonobject((BasicDynaBean) rows2.get(0)); - nTotalSize = jrow2.getInteger("page_totalrecordnum"); - } - jres.put("totalElements", nTotalSize); - return jres; - } - - /** - * 结果集转换方法 - * - * @param rows - * @return - */ - private JSONArray rows2jsonarray(ArrayList rows) { - JSONArray jrows = new JSONArray(); - for (Iterator it = rows.iterator(); it.hasNext(); ) { - BasicDynaBean row = (BasicDynaBean) it.next(); - jrows.add(row2jsonobject(row)); - } - return jrows; - } - - - private JSONObject row2jsonobject(BasicDynaBean row) { - JSONObject jrow = new JSONObject(); - DynaProperty[] props = row.getDynaClass().getDynaProperties(); - for (int j = 0; j < props.length; j++) { - DynaProperty prop = props[j]; - String key = prop.getName(); - Object value = row.get(key); - String strValue = WqlUtil.getSQLFieldValue(value).trim(); - - if (value instanceof Timestamp) - //时间处理 - if (ObjectUtil.isEmpty(strValue) && ObjectUtil.isNotEmpty(value)) { - if (value instanceof Timestamp) { - strValue = value.toString(); + private JSONObject row2jsonobject(BasicDynaBean row) { + JSONObject jrow = new JSONObject(); + DynaProperty[] props = row.getDynaClass().getDynaProperties(); + for(int j = 0; j < props.length; j++) { + DynaProperty prop = props[j]; + String key = prop.getName(); + Object value = row.get(key); + String strValue = WqlUtil.getSQLFieldValue(value).trim(); + if(value instanceof Timestamp) + //时间处理 + { + if(ObjectUtil.isEmpty(strValue) && ObjectUtil.isNotEmpty(value)) { + if(value instanceof Timestamp) { + strValue = value.toString(); + } } - } - jrow.put(key, strValue); - } - return jrow; - } + } + jrow.put(key, strValue); + } + return jrow; + } - public void addSplitPageResultSet(ResultSet value, int start, int end) throws SQLException { - if (start < 0) { - addResultSet(value); - return; - } - - value.absolute(start); - ArrayList rs = new ArrayList(); - ResultSetMetaData rsmd = value.getMetaData(); - DynaProperty[] dps = new DynaProperty[rsmd.getColumnCount()]; - for (int i = 0; i < dps.length; i++) { - dps[i] = new DynaProperty(rsmd.getColumnName(i + 1).toLowerCase()); - } - - for (int i = start; i < end; i++) { - BasicDynaClass bdc = new BasicDynaClass("", BasicDynaBean.class, dps); - BasicDynaBean bdb = new BasicDynaBean(bdc); - if (value.next()) { - for (int j = 0; j < dps.length; j++) { - bdb.set(dps[j].getName(), value.getString(dps[j].getName())); - } - - rs.add(bdb); - } else - break; - } - if (rslist == null) { - rslist = new ArrayList(); - } - rslist.add(rs); - } - - /** - * 查询结束后添加结果集 - * - * @param sqlResultSet jdbc的resultSet - */ - public void addResultSet(ResultSet sqlResultSet) { - if (rslist == null) { - rslist = new ArrayList(); - } - try { - //支持别名的设置 - WQLRowSetDynaClass rs = new WQLRowSetDynaClass(sqlResultSet, true, -1); - rslist.add(rs); - ResultCount = rslist.size(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 查询结束后添加结果集 - * - * @param list - */ - public void addResultSet(ArrayList list) { - if (rslist == null) { - rslist = new ArrayList(); - } - - rslist.add(list); - ResultCount = rslist.size(); - } - - /** - * 开始新的查询前清空之前的结果集记录 - */ - public void clearResultSet() { - rslist = null; - ResultCount = 0; - RowsCount = 0; - } - - public ArrayList getInfoDump() { - return InfoDump; - } - - public void setInfoDump(ArrayList details) { - this.InfoDump = details; - } - - public ArrayList getInfoError() { - return InfoError; - } - - public void setInfoError(ArrayList details) { - this.InfoError = details; - } - - public ArrayList getInfoTrace() { - return InfoTrace; - } - - public void setInfoTrace(ArrayList details) { - this.InfoTrace = details; - } - - /** - * Returns the ResultCount. - * - * @return int - */ - public int getResultCount() { - if (rslist != null) { - ResultCount = rslist.size(); - } - return ResultCount; - } - - public void setResultSets(ArrayList details) { - if (details != null) { - this.rslist = details; - ResultCount = rslist.size(); - } - } - - public ArrayList getResultSets() { - if (rslist == null) { - rslist = new ArrayList(); - } - return rslist; - } - - public String toString() { - StringBuffer sStr = new StringBuffer(); - if (InfoTrace != null) { - sStr.append("\n InfoTrace Size =" + InfoTrace.size()); - } - if (InfoError != null) { - sStr.append(sStr + "\n InfoError Size =" + InfoError.size()); - } - if (InfoDump != null) { - sStr.append(sStr + "\n InfoDump Size =" + InfoDump.size()); - } - if (rslist != null) { - sStr.append("\n 结果集总数为(" + rslist.size() + ")个"); - for (int i = 1; i <= rslist.size(); i++) { - RowSetDynaClass rs = (RowSetDynaClass) rslist.get(i - 1); - List rows = rs.getRows(); - sStr.append("\n 第(" + i + ")个结果集有(" + rows.size() + ")条记录"); - // DynaProperty - DynaProperty properties[] = rs.getDynaProperties(); - for (int j = 0; j < properties.length; j++) { - sStr.append("\n 字段(" + j + ") " + properties[j].getName()); - if (rows.size() > 0) { - BasicDynaBean rowBean = (BasicDynaBean) rows.get(0); - sStr.append(" |" - + rowBean.get(properties[j].getName() - .toString())); + public void addSplitPageResultSet(ResultSet value, int start, int end) + throws SQLException { + if(start < 0) { + addResultSet(value); + return; + } + value.absolute(start); + ArrayList rs = new ArrayList(); + ResultSetMetaData rsmd = value.getMetaData(); + DynaProperty[] dps = new DynaProperty[rsmd.getColumnCount()]; + for(int i = 0; i < dps.length; i++) { + dps[i] = new DynaProperty(rsmd.getColumnName(i + 1).toLowerCase()); + } + for(int i = start; i < end; i++) { + BasicDynaClass bdc = new BasicDynaClass("", BasicDynaBean.class, dps); + BasicDynaBean bdb = new BasicDynaBean(bdc); + if(value.next()) { + for(int j = 0; j < dps.length; j++) { + bdb.set(dps[j].getName(), value.getString(dps[j].getName())); } - } + rs.add(bdb); + } + else{break;} + } + if(rslist == null) { + rslist = new ArrayList(); + } + rslist.add(rs); + } - } - } - return sStr.toString(); - } + /** + * 查询结束后添加结果集 + * + * @param sqlResultSet jdbc的resultSet + */ + public void addResultSet(ResultSet sqlResultSet) { + if(rslist == null) { + rslist = new ArrayList(); + } + try { + //支持别名的设置 + WQLRowSetDynaClass rs = new WQLRowSetDynaClass(sqlResultSet, true, -1); + rslist.add(rs); + ResultCount = rslist.size(); + } + catch(Exception e) { + e.printStackTrace(); + } + } - /** - * 测试用 - * - * @param args - */ - public static void main2s(String[] args) { + /** + * 查询结束后添加结果集 + * + * @param list + */ + public void addResultSet(ArrayList list) { + if(rslist == null) { + rslist = new ArrayList(); + } + rslist.add(list); + ResultCount = rslist.size(); + } - ResultBean ii = new ResultBean(); - // ii.setResultSets(null); - // System.exit(0); - try { - Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); - Connection conn = DriverManager - .getConnection("jdbc:sqlserver://192.168.1.4:1433;User=tc;Password=business;DatabaseName=test"); - conn.setAutoCommit(false); - String sqlStr = ""; - CallableStatement st; + /** + * 开始新的查询前清空之前的结果集记录 + */ + public void clearResultSet() { + rslist = null; + ResultCount = 0; + RowsCount = 0; + } - // sqlStr = - // BF.ScriptSwitch("SELECT DISTINCT A.IOSTORINVSID AS IOSTORINVSID , B.CORPSID AS CORPSID , B.BUSINESSCORPNAME AS SIMPLENAME , C.STORSID AS STORSID , C.STORNAME AS STORNAME , E.BIZINVTYPE AS BIZINVTYPE , E.TYPENAME AS TYPENAME , A.INVSID AS INVSID , CASE WHEN ? = '1' THEN A.TOTALDEFQTY / 250 WHEN ? = '2' THEN A.TOTALDEFQTY / 50 WHEN ? = '3' THEN A.TOTALDEFQTY WHEN ? = '4' THEN A.TOTALDEFQTY * 10 WHEN ? = '5' THEN A.TOTALDEFQTY * 200 ELSE A.TOTALDEFQTY END AS TOTALDEFQTY , A.FIRSTDTLCOUNT AS FIRSTDTLCOUNT , D.PERSONSID AS PERSONSID , D.PERSONNAME AS PERSONNAME , A.CREATEDATE AS CREATEDATE , A.REMARK AS REMARK , A.STATUS AS STATUS , CASE WHEN A.STATUS = '01' THEN '待分配' WHEN A.STATUS = '02' THEN '分配中' WHEN A.STATUS = '03' THEN '待确认' WHEN A.STATUS = '04' THEN '确认中' ELSE '确认完毕' END AS STATUSNAME FROM DBO.B_ST_BZIOSTORINVMST AS A LEFT OUTER JOIN DBO.G_OG_CORPINFO AS B ON A.CORPSID = B.CORPSID LEFT OUTER JOIN DBO.B_ST_BSREALSTORATTR AS C ON A.STORSID = C.STORSID LEFT OUTER JOIN DBO.G_OG_PERSONINFO AS D ON A.CREATERSID = D.PERSONSID LEFT OUTER JOIN DBO.G_PB_BIZINVTYPE AS E ON A.INVTYPE = E.BIZINVTYPE LEFT OUTER JOIN DBO.B_ST_BZIOSTORINVDIVDTL AS F ON A.IOSTORINVSID = F.IOSTORINVSID WHERE A.IOSTORINVSID = A.IOSTORINVSID AND A.ISOUTINV = '0' AND A.STORSID = '001000001' AND A.CORPSID = '001000000' AND A.STATUS IN ( '01' , '02' , '03' ) AND A.ISACTIVE = '1' ORDER BY A.IOSTORINVSID DESC ", - // 1); - st = conn.prepareCall(sqlStr, ResultSet.TYPE_SCROLL_INSENSITIVE, - ResultSet.CONCUR_READ_ONLY); - st.setString(1, ""); - st.setString(2, ""); - st.setString(3, ""); - st.setString(4, ""); - st.setString(5, ""); - st.execute(); - ResultBean ior = new ResultBean(); - ResultSet rs = st.getResultSet(); - ior.addSplitPageResultSet(rs, 1, 5); + public ArrayList getInfoDump() { + return InfoDump; + } - st.close(); - st = null; - conn.close(); - conn = null; + public void setInfoDump(ArrayList details) { + this.InfoDump = details; + } - ArrayList al = ior.getResultSets(); - System.out.println(al.size()); - ArrayList temp = ior.getResultSet(1); - System.out.println(temp.size()); - System.out.println(temp.get(0).getClass().getName()); - BasicDynaBean bdb = (BasicDynaBean) temp.get(0); - BasicDynaClass bdc = (BasicDynaClass) bdb.getDynaClass(); - DynaProperty[] dp = bdc.getDynaProperties(); - for (int i = 0; i < dp.length; i++) { - System.out.println(dp[i] + "=" + bdb.get(dp[i].getName())); - } + public ArrayList getInfoError() { + return InfoError; + } - } catch (Exception e) { - e.printStackTrace(); - } - } + public void setInfoError(ArrayList details) { + this.InfoError = details; + } + public ArrayList getInfoTrace() { + return InfoTrace; + } + + public void setInfoTrace(ArrayList details) { + this.InfoTrace = details; + } + + /** + * Returns the ResultCount. + * + * @return int + */ + public int getResultCount() { + if(rslist != null) { + ResultCount = rslist.size(); + } + return ResultCount; + } + + public void setResultSets(ArrayList details) { + if(details != null) { + this.rslist = details; + ResultCount = rslist.size(); + } + } + + public ArrayList getResultSets() { + if(rslist == null) { + rslist = new ArrayList(); + } + return rslist; + } + + public String toString() { + StringBuffer sStr = new StringBuffer(); + if(InfoTrace != null) { + sStr.append("\n InfoTrace Size =" + InfoTrace.size()); + } + if(InfoError != null) { + sStr.append(sStr + "\n InfoError Size =" + InfoError.size()); + } + if(InfoDump != null) { + sStr.append(sStr + "\n InfoDump Size =" + InfoDump.size()); + } + if(rslist != null) { + sStr.append("\n 结果集总数为(" + rslist.size() + ")个"); + for(int i = 1; i <= rslist.size(); i++) { + RowSetDynaClass rs = (RowSetDynaClass) rslist.get(i - 1); + List rows = rs.getRows(); + sStr.append("\n 第(" + i + ")个结果集有(" + rows.size() + ")条记录"); + // DynaProperty + DynaProperty properties[] = rs.getDynaProperties(); + for(int j = 0; j < properties.length; j++) { + sStr.append("\n 字段(" + j + ") " + properties[j].getName()); + if(rows.size() > 0) { + BasicDynaBean rowBean = (BasicDynaBean) rows.get(0); + sStr.append(" |" + rowBean.get(properties[j].getName().toString())); + } + } + } + } + return sStr.toString(); + } + + /** + * 测试用 + * + * @param args + */ + public static void main2s(String[] args) { + ResultBean ii = new ResultBean(); + // ii.setResultSets(null); + // System.exit(0); + try { + Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + Connection conn = DriverManager.getConnection("jdbc:sqlserver://192.168.1.4:1433;User=tc;Password=business;DatabaseName=test"); + conn.setAutoCommit(false); + String sqlStr = ""; + CallableStatement st; + // sqlStr = + // BF.ScriptSwitch("SELECT DISTINCT A.IOSTORINVSID AS IOSTORINVSID , B.CORPSID AS CORPSID , B.BUSINESSCORPNAME AS SIMPLENAME , C.STORSID AS STORSID , C.STORNAME AS STORNAME , E.BIZINVTYPE AS BIZINVTYPE , E.TYPENAME AS TYPENAME , A.INVSID AS INVSID , CASE WHEN ? = '1' THEN A.TOTALDEFQTY / 250 WHEN ? = '2' THEN A.TOTALDEFQTY / 50 WHEN ? = '3' THEN A.TOTALDEFQTY WHEN ? = '4' THEN A.TOTALDEFQTY * 10 WHEN ? = '5' THEN A.TOTALDEFQTY * 200 ELSE A.TOTALDEFQTY END AS TOTALDEFQTY , A.FIRSTDTLCOUNT AS FIRSTDTLCOUNT , D.PERSONSID AS PERSONSID , D.PERSONNAME AS PERSONNAME , A.CREATEDATE AS CREATEDATE , A.REMARK AS REMARK , A.STATUS AS STATUS , CASE WHEN A.STATUS = '01' THEN '待分配' WHEN A.STATUS = '02' THEN '分配中' WHEN A.STATUS = '03' THEN '待确认' WHEN A.STATUS = '04' THEN '确认中' ELSE '确认完毕' END AS STATUSNAME FROM DBO.B_ST_BZIOSTORINVMST AS A LEFT OUTER JOIN DBO.G_OG_CORPINFO AS B ON A.CORPSID = B.CORPSID LEFT OUTER JOIN DBO.B_ST_BSREALSTORATTR AS C ON A.STORSID = C.STORSID LEFT OUTER JOIN DBO.G_OG_PERSONINFO AS D ON A.CREATERSID = D.PERSONSID LEFT OUTER JOIN DBO.G_PB_BIZINVTYPE AS E ON A.INVTYPE = E.BIZINVTYPE LEFT OUTER JOIN DBO.B_ST_BZIOSTORINVDIVDTL AS F ON A.IOSTORINVSID = F.IOSTORINVSID WHERE A.IOSTORINVSID = A.IOSTORINVSID AND A.ISOUTINV = '0' AND A.STORSID = '001000001' AND A.CORPSID = '001000000' AND A.STATUS IN ( '01' , '02' , '03' ) AND A.ISACTIVE = '1' ORDER BY A.IOSTORINVSID DESC ", + // 1); + st = conn.prepareCall(sqlStr, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); + st.setString(1, ""); + st.setString(2, ""); + st.setString(3, ""); + st.setString(4, ""); + st.setString(5, ""); + st.execute(); + ResultBean ior = new ResultBean(); + ResultSet rs = st.getResultSet(); + ior.addSplitPageResultSet(rs, 1, 5); + st.close(); + st = null; + conn.close(); + conn = null; + ArrayList al = ior.getResultSets(); + System.out.println(al.size()); + ArrayList temp = ior.getResultSet(1); + System.out.println(temp.size()); + System.out.println(temp.get(0).getClass().getName()); + BasicDynaBean bdb = (BasicDynaBean) temp.get(0); + BasicDynaClass bdc = (BasicDynaClass) bdb.getDynaClass(); + DynaProperty[] dp = bdc.getDynaProperties(); + for(int i = 0; i < dp.length; i++) { + System.out.println(dp[i] + "=" + bdb.get(dp[i].getName())); + } + } + catch(Exception e) { + e.printStackTrace(); + } + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/engine/object/WO.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/engine/object/WO.java index be367585..87ce24b1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/engine/object/WO.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/core/engine/object/WO.java @@ -41,671 +41,655 @@ import java.util.Map; import java.util.Set; @Slf4j -public class WO implements Serializable, Cloneable { +public class WO implements Serializable, Cloneable{ + private static final long serialVersionUID = -4831486954013002791L; + public WP wp; + private String code = ""; //当前交易编号 + private String dbname = "dataSource"; //指定使用的数据库 - private static final long serialVersionUID = -4831486954013002791L; - public WP wp; - - private String code = ""; //当前交易编号 - private String dbname = "dataSource"; //指定使用的数据库 - - public WO setDbname(String dbname) { - this.dbname = dbname; - Object bean = SpringContextHolder.getBean(dbname); - if (bean instanceof DruidDataSource){ - DruidDataSource druidDataSource=(DruidDataSource )bean; - String rawJdbcUrl = druidDataSource.getRawJdbcUrl(); - DBConnBean dbb = new DBConnBean(); - dbb.setDrivers(""); - - if (StrUtil.containsAnyIgnoreCase(rawJdbcUrl, DataType.MYSQL)){ - dbb.setDbtype("mysql"); - } - if (StrUtil.containsAnyIgnoreCase(rawJdbcUrl, DataType.ORACLE)){ - dbb.setDbtype("oracle"); - } - if (StrUtil.containsAnyIgnoreCase(rawJdbcUrl, DataType.MSSQL) || StrUtil.containsAnyIgnoreCase(rawJdbcUrl,"sqlserver")){ - dbb.setDbtype("mssql"); - } - if (StrUtil.isNotEmpty(dbb.getDbtype()))this.dbtype=dbb.getDbtype(); - WQLCore.dbMap.put(dbname, dbb); - } - return this; - } - - private String dbtype = ""; //指定使用的数据库类型 - // private boolean isTransation = false; //是否开启事务 -// private boolean isSelfConn = false; //当前数据库连接是否是自身的连接 - private String hint_type = ""; //hint类型: 空-无hint master-主表 slave-从表 - - - private ArrayList tempTableList = new ArrayList(); //临时表列表 - private ArrayList processlist = new ArrayList(); //处理语句 - - - /////////////////////////// - //// 动态替换执行语句 - /////////////////////////// - public ArrayList getProcesslist() { - return processlist; - } - - public void setProcesslist(ArrayList processlist) { - this.processlist = processlist; - } - - - /** - * 按个数添加参数 - */ - public WO addParam(String key, Object value) { -// if("PAGE_PAGESTART".toLowerCase().equals(key.toLowerCase())){ - if (StrUtil.equalsIgnoreCase("PAGE_PAGESTART", key)) { - int PAGE_PAGESTART = (Integer) value; - this.setPage_PageStart(PAGE_PAGESTART); -// }else if("PAGE_PAGERECORDNUM".toLowerCase().equals(key.toLowerCase())){ - } else if (StrUtil.equalsIgnoreCase("PAGE_PAGERECORDNUM", key)) { - int PAGE_PAGERECORDNUM = (Integer) value; - this.setPage_PageRecordNum(PAGE_PAGERECORDNUM); -// }else if("SORT_ORDERBYFIELD".toLowerCase().equals(key.toLowerCase())){ - } else if (StrUtil.equalsIgnoreCase("SORT_ORDERBYFIELD", key)) { - String SORT_ORDERBYFIELD = (String) value; - this.setPage_OrderByField(SORT_ORDERBYFIELD); -// }else if("ORDERBY".toLowerCase().equals(key.toLowerCase())){ - } else if (StrUtil.equalsIgnoreCase("ORDERBY", key)) { - String SORT_ORDERBYFIELD = (String) value; - this.setPage_OrderByField(SORT_ORDERBYFIELD); - } - this.setParam(key, value); - return this; - } - - /** - * 按集合添加参数 - * - * @param map - * @return - */ - public WO addParamMap(Map map) { - Set keySet = map.keySet(); - for (Iterator it = keySet.iterator(); it.hasNext(); ) { - String key = (String) it.next(); - Object value = map.get(key); - this.addParam(key, value); - } - return this; - } - - /** - * 执行WQL - * - * @return - */ - public ResultBean process() { - ResultBean rb = this.MainProcess(); - if (rb.isSuccess() == false) { - StringBuffer sbuff = new StringBuffer(); - ArrayList errlist = rb.getInfoError(); - for (int i = 0; i < errlist.size(); i++) { - ErrorBean errBean = (ErrorBean) errlist.get(i); - sbuff.append(errBean.toString()); - sbuff.append("\n"); - } - throw new WDKException(sbuff.toString()); - } - return rb; - } - - /** - * 以分页查询的方式执行wql - * - * @param request - * @return - */ - public JSONObject pageQuery(HttpServletRequest request, String orderby) { - HttpContext hctx = new HttpContext(WqlUtil.getUUID()); - hctx.setRequest(request); - return pageQuery(hctx, orderby); - - } - - public JSONObject pageQuery(BaseContext ctx, String orderby) { - int nPageRecordNum = -1; - int nPageStart = -1; - // 分页参数 - String strRows = ctx.getRows();//ctx.getParameter("rows"); - String strPage = ctx.getPage();//ctx.getParameter("page"); - if (null != strRows && !"".equals(strRows.trim())) { - nPageRecordNum = Integer.parseInt(strRows); - } - if (null != strPage && !"".equals(strPage.trim())) { - nPageStart = Integer.parseInt(strPage) - 1; - } - //排序参数 - String orderbyfield = ctx.getOrderbyfield();//ctx.getParameter("orderbyfield"); - if (null != orderbyfield && !"".equals(orderbyfield.trim())) { - orderby = orderbyfield; - } - - return this.pageQuery2(nPageStart * nPageRecordNum, nPageRecordNum, orderby); - } - - private JSONObject pageQuery2(int startrecord, int pagerecord, String orderby) { - this.setPage_PageStart(startrecord); - this.setPage_PageRecordNum(pagerecord); - this.setPage_OrderByField(orderby); - ResultBean rb = this.process(); - return rb.pageResult(); - } - - /** - * 分页查询 - * - * @param pageStart 开始的记录数 > pageStart 从0开始 - * @param pageEnd 结束的记录数 <= pageEnd - * @param orderby 排序字段 - * @return - */ - public JSONObject pageQuery(int pageStart, int pageEnd, String orderby) { - // 分页参数 - this.setPage_PageStart(pageStart); - this.setPage_PageRecordNum(pageEnd - pageStart); - this.setPage_OrderByField(orderby); - ResultBean rb = this.process(); - return rb.pageResult(); - } - - public void init() { - this.wp.init(); - } - - public WO(String code, ArrayList wqlcontent) throws Exception { - -// this.isSelfConn = false; - this.code = code; - //this.dbname = WQLCore.defalutDBName; - this.dbname = this.getDbname(); -// if(this.code.toUpperCase().startsWith("U")){ -// this.isTransation = true; -// } - this.wp = new WP(); - - try { - - DBConnBean dbb = WQLCore.dbMap.get(dbname); - if (dbb == null) throw new Exception("无效的数据库名:" + dbname); - this.dbtype = dbb.getDbtype(); - - //当前指令作用域 - String cmd = ""; - - for (Iterator it = wqlcontent.iterator(); it.hasNext(); ) { - String wql = (String) it.next(); - //log.debug("wql:"+wql); - //删除空格和\t等制表符 - wql = WqlUtil.ltrim(wql); - wql = WqlUtil.rtrim(wql); - - //过滤整行的空行、注解和注释 - if ("".equals(wql) - || wql.startsWith("--") - || wql.startsWith("#") - || wql.startsWith("//")) { - continue; - } - - //分析当前命令域 - if (wql.startsWith("[")) { - //1、结束上一个指令域 - - - //2、开启下一个新的指令域 - cmd = wql.substring(wql.indexOf("[") + 1, wql.indexOf("]")); - continue; - } - - if ("数据库".equals(cmd)) { - this.dbname = wql; - dbb = WQLCore.dbMap.get(this.dbname); - if (dbb == null) throw new Exception("无效的数据库名:" + dbname); + public WO setDbname(String dbname) { + this.dbname = dbname; + Object bean = SpringContextHolder.getBean(dbname); + if(bean instanceof DruidDataSource) { + DruidDataSource druidDataSource = (DruidDataSource) bean; + String rawJdbcUrl = druidDataSource.getRawJdbcUrl(); + DBConnBean dbb = new DBConnBean(); + dbb.setDrivers(""); + if(StrUtil.containsAnyIgnoreCase(rawJdbcUrl, DataType.MYSQL)) { + dbb.setDbtype("mysql"); + } + if(StrUtil.containsAnyIgnoreCase(rawJdbcUrl, DataType.ORACLE)) { + dbb.setDbtype("oracle"); + } + if(StrUtil.containsAnyIgnoreCase(rawJdbcUrl, DataType.MSSQL) || StrUtil.containsAnyIgnoreCase(rawJdbcUrl, "sqlserver")) { + dbb.setDbtype("mssql"); + } + if(StrUtil.isNotEmpty(dbb.getDbtype())) { this.dbtype = dbb.getDbtype(); + } + WQLCore.dbMap.put(dbname, dbb); + } + return this; + } - } else if ("IO定义".equals(cmd) - || "临时变量".equals(cmd)) { - wql = WqlUtil.ctrim(wql); - this.wp.initIOParam(wql); + private String dbtype = ""; //指定使用的数据库类型 + // private boolean isTransation = false; //是否开启事务 + // private boolean isSelfConn = false; //当前数据库连接是否是自身的连接 + private String hint_type = ""; //hint类型: 空-无hint master-主表 slave-从表 + private ArrayList tempTableList = new ArrayList(); //临时表列表 + private ArrayList processlist = new ArrayList(); //处理语句 - } else if ("临时表".equals(cmd)) { - this.tempTableList.add(wql); + /////////////////////////// + //// 动态替换执行语句 + /////////////////////////// + public ArrayList getProcesslist() { + return processlist; + } - } else if ("业务过程".equals(cmd)) { - this.processlist.add(WqlUtil.ctrim(wql)); + public void setProcesslist(ArrayList processlist) { + this.processlist = processlist; + } - } - } - } catch (Exception e) { - e.printStackTrace(); - log.error("WQL加载失败:" + e.toString()); - throw new Exception("请检查WQL文件【" + code + ".wql】的语法规范!", e); - } - } + /** + * 按个数添加参数 + */ + public WO addParam(String key, Object value) { + // if("PAGE_PAGESTART".toLowerCase().equals(key.toLowerCase())){ + if(StrUtil.equalsIgnoreCase("PAGE_PAGESTART", key)) { + int PAGE_PAGESTART = (Integer) value; + this.setPage_PageStart(PAGE_PAGESTART); + // }else if("PAGE_PAGERECORDNUM".toLowerCase().equals(key.toLowerCase())){ + } + else if(StrUtil.equalsIgnoreCase("PAGE_PAGERECORDNUM", key)) { + int PAGE_PAGERECORDNUM = (Integer) value; + this.setPage_PageRecordNum(PAGE_PAGERECORDNUM); + // }else if("SORT_ORDERBYFIELD".toLowerCase().equals(key.toLowerCase())){ + } + else if(StrUtil.equalsIgnoreCase("SORT_ORDERBYFIELD", key)) { + String SORT_ORDERBYFIELD = (String) value; + this.setPage_OrderByField(SORT_ORDERBYFIELD); + // }else if("ORDERBY".toLowerCase().equals(key.toLowerCase())){ + } + else if(StrUtil.equalsIgnoreCase("ORDERBY", key)) { + String SORT_ORDERBYFIELD = (String) value; + this.setPage_OrderByField(SORT_ORDERBYFIELD); + } + this.setParam(key, value); + return this; + } - /** - * 有QU自身建立连接,则QU内部负责对该链接的事务处理 - * - * @return - */ - public ResultBean MainProcess() { - Connection conn = DBConnection.getConnection(this.dbname); -// this.isSelfConn = true; - log.debug(this.code + "执行开始"); - log.debug(this.wp.toString()); + /** + * 按集合添加参数 + * + * @param map + * @return + */ + public WO addParamMap(Map map) { + Set keySet = map.keySet(); + for(Iterator it = keySet.iterator(); it.hasNext(); ) { + String key = (String) it.next(); + Object value = map.get(key); + this.addParam(key, value); + } + return this; + } - //2、获取数据库连接并处理事务 - this.wp.conn = conn; - synchronized (this.wp.conn) { - try { - //如果是更新类的操作,则开启事务 -// if(this.code.toUpperCase().startsWith("U")){ -// if(this.isSelfConn){ -// this.wp.utx = DBConnection.getTransaction(this.dbname); -// try { -// if(this.wp.utx!=null){ -// this.wp.utx.begin(); -// } -// }catch (Exception ex) { -// this.wp._success = false; -// } -// } -// } + /** + * 执行WQL + * + * @return + */ + public ResultBean process() { + ResultBean rb = this.MainProcess(); + if(rb.isSuccess() == false) { + StringBuffer sbuff = new StringBuffer(); + ArrayList errlist = rb.getInfoError(); + for(int i = 0; i < errlist.size(); i++) { + ErrorBean errBean = (ErrorBean) errlist.get(i); + sbuff.append(errBean.toString()); + sbuff.append("\n"); + } + throw new WDKException(sbuff.toString()); + } + return rb; + } - //3、创建临时表 - this.wp._success = CreateTempTable(); + /** + * 以分页查询的方式执行wql + * + * @param request + * @return + */ + public JSONObject pageQuery(HttpServletRequest request, String orderby) { + HttpContext hctx = new HttpContext(WqlUtil.getUUID()); + hctx.setRequest(request); + return pageQuery(hctx, orderby); + } - //4、正式处理 - if (this.wp._success) { - this.wp._success = Process(); - } - } catch (Exception ex) { - // TODO Auto-generated catch block - ex.printStackTrace(); - this.wp.InfoError = new ErrorBean(); - this.wp.InfoError.setCode("QUERROR"); - this.wp.InfoError.setDescription(ex.toString()); - this.wp.ALInfoError.add(this.wp.InfoError); - this.wp._success = false; - } finally { - //8、结果处理,事务处理 - //如果是更新类的操作,则关闭事务 -// if(this.code.toUpperCase().startsWith("U")){ -// //如果自身控制事务 -// if(this.isSelfConn){ -// if (this.wp._success) { -// try { -//// if(this.wp.utx!=null){ -//// this.wp.utx.commit(); -//// } -// log.debug(this.code+"执行成功"); -// this.wp.rb.setSucess(1); -// } catch (Exception e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// try { -//// if(this.wp.utx!=null){ -//// this.wp.utx.rollback(); -//// } -// log.warn(this.code+"执行失败"); -// this.wp.rb.setSucess(0); -// }catch (Exception e1) { -// this.wp.InfoError = new ErrorBean(); -// this.wp.InfoError.setCode("TXERROR"); -// this.wp.InfoError.setDescription(e1.toString()); -// this.wp.ALInfoError.add(this.wp.InfoError); -// e1.printStackTrace(); -// } -// }finally{ -// DBConnection.freeConnection(this.wp.conn,this.dbname); -// //this.wp.conn = null; -//// this.wp.utx=null; -// } -// -// } else { -// try { -//// if(this.wp.utx!=null){ -//// this.wp.utx.rollback(); -//// } -// }catch (Exception ex) { -// }finally{ -// DBConnection.freeConnection(this.wp.conn,this.dbname); -// //this.wp.conn = null; -//// this.wp.utx=null; -// } -// log.warn(this.code+"执行失败"); -// this.wp.rb.setSucess(0); -// } -// }else{ -// if(this.wp._success){ -// log.debug(this.code+"执行成功"); -// this.wp.rb.setSucess(1); -// }else{ -// log.warn(this.code+"执行失败"); -// this.wp.rb.setSucess(0); -// } -// } -// }else{ -// //查询类 -// if(this.isSelfConn){ -// //如果是自身控制事务,则需要对conn进行释放等处理 -// try { -// if(!this.wp.conn.getAutoCommit() && DBConnection.currpooltype != DBConnection.DBPOOLTYPE_SPRING){ -// this.wp.conn.commit(); -// this.wp.rb.setSucess(1); -// this.wp._success = true; -// } -// } catch (SQLException e) { -// e.printStackTrace(); -// this.wp.rb.setSucess(0); -// this.wp._success = false; -// }finally{ -// DBConnection.freeConnection(this.wp.conn,this.dbname); -// } -// } -// -// if(this.wp._success){ -// log.debug(this.code+"执行成功"); -// this.wp.rb.setSucess(1); -// }else{ -// log.warn(this.code+"执行失败"); -// this.wp.rb.setSucess(0); -// } -// } + public JSONObject pageQuery(BaseContext ctx, String orderby) { + int nPageRecordNum = -1; + int nPageStart = -1; + // 分页参数 + String strRows = ctx.getRows();//ctx.getParameter("rows"); + String strPage = ctx.getPage();//ctx.getParameter("page"); + if(null != strRows && !"".equals(strRows.trim())) { + nPageRecordNum = Integer.parseInt(strRows); + } + if(null != strPage && !"".equals(strPage.trim())) { + nPageStart = Integer.parseInt(strPage) - 1; + } + //排序参数 + String orderbyfield = ctx.getOrderbyfield();//ctx.getParameter("orderbyfield"); + if(null != orderbyfield && !"".equals(orderbyfield.trim())) { + orderby = orderbyfield; + } + return this.pageQuery2(nPageStart * nPageRecordNum, nPageRecordNum, orderby); + } - if (this.wp._success) { - log.debug(this.code + "执行成功"); - this.wp.rb.setSucess(1); - } else { - log.warn(this.code + "执行失败"); - this.wp.rb.setSucess(0); - } - DBConnection.freeConnection(this.wp.conn, this.dbname); - this.wp.rb.setInfoDump(this.wp.ALInfoDump); - this.wp.rb.setInfoError(this.wp.ALInfoError); - this.wp.rb.setInfoTrace(this.wp.ALInfoTrace); - return this.wp.rb; - } - } - } + private JSONObject pageQuery2(int startrecord, int pagerecord, String orderby) { + this.setPage_PageStart(startrecord); + this.setPage_PageRecordNum(pagerecord); + this.setPage_OrderByField(orderby); + ResultBean rb = this.process(); + return rb.pageResult(); + } - /** - * 创建临时表 - * - * @return - */ - private boolean CreateTempTable() { - this.wp._state = true; - this.wp.sSQL = ""; - log.debug("------------开始执行 创建临时表 ------------"); - for (Iterator it = this.tempTableList.iterator(); it.hasNext(); ) { - String tempTableName = (String) it.next(); - ArrayList rows = (ArrayList) WQLCore.tempTableMap.get(tempTableName.toUpperCase()); - if (rows == null) { - log.error("临时表[" + tempTableName.toUpperCase() + "]未找到数据字典定义"); - } - if (DataType.MYSQL.equals(dbtype)) { //mysql处理方式 - String pkstr = new String(); - this.wp.sSQL = "CREATE TEMPORARY TABLE IF NOT EXISTS " + tempTableName + " ("; - for (int i = 0; i < rows.size(); i++) { - XLSTableRow xtr = (XLSTableRow) rows.get(i); + /** + * 分页查询 + * + * @param pageStart 开始的记录数 > pageStart 从0开始 + * @param pageEnd 结束的记录数 <= pageEnd + * @param orderby 排序字段 + * @return + */ + public JSONObject pageQuery(int pageStart, int pageEnd, String orderby) { + // 分页参数 + this.setPage_PageStart(pageStart); + this.setPage_PageRecordNum(pageEnd - pageStart); + this.setPage_OrderByField(orderby); + ResultBean rb = this.process(); + return rb.pageResult(); + } - //如果是主键,则增加主键标识 - if ("pk".equalsIgnoreCase(xtr.getParam())) { - pkstr += xtr.getEnname() + ","; + public void init() { + this.wp.init(); + } + + public WO(String code, ArrayList wqlcontent) + throws Exception { + // this.isSelfConn = false; + this.code = code; + //this.dbname = WQLCore.defalutDBName; + this.dbname = this.getDbname(); + // if(this.code.toUpperCase().startsWith("U")){ + // this.isTransation = true; + // } + this.wp = new WP(); + try { + DBConnBean dbb = WQLCore.dbMap.get(dbname); + if(dbb == null) { + throw new Exception("无效的数据库名:" + dbname); + } + this.dbtype = dbb.getDbtype(); + //当前指令作用域 + String cmd = ""; + for(Iterator it = wqlcontent.iterator(); it.hasNext(); ) { + String wql = (String) it.next(); + //log.debug("wql:"+wql); + //删除空格和\t等制表符 + wql = WqlUtil.ltrim(wql); + wql = WqlUtil.rtrim(wql); + //过滤整行的空行、注解和注释 + if("".equals(wql) || wql.startsWith("--") || wql.startsWith("#") || wql.startsWith("//")) { + continue; } - - //字段名 - this.wp.sSQL += xtr.getEnname() + " "; - - //字段属性 - if (-1 != xtr.getType().indexOf("U_")) { - this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); - } else { -// if(null!=xtr.getLen()&&!"".equals(xtr.getLen().trim())){ -// this.wp.sSQL += xtr.getType()+"("+xtr.getLen()+")"; -// }else{ -// this.wp.sSQL += xtr.getType(); //clob或blob没有长度 -// } - this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + //分析当前命令域 + if(wql.startsWith("[")) { + //1、结束上一个指令域 + //2、开启下一个新的指令域 + cmd = wql.substring(wql.indexOf("[") + 1, wql.indexOf("]")); + continue; } - this.wp.sSQL += ","; - } - this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1); - //增加主键 - if (pkstr.length() > 0) { - pkstr = pkstr.substring(0, pkstr.length() - 1); - this.wp.sSQL += ",PRIMARY KEY (" + pkstr + ")"; - } - this.wp.sSQL += " )"; - } else if (DataType.ORACLE.equals(dbtype)) { //oracle处理方式 - String pkstr = new String(); - this.wp.sSQL = "CREATE GLOBAL TEMPORARY TABLE " + tempTableName + " ("; - for (int i = 0; i < rows.size(); i++) { - XLSTableRow xtr = (XLSTableRow) rows.get(i); - - //如果是主键,则增加主键标识 - if ("pk".equalsIgnoreCase(xtr.getParam())) { - pkstr += xtr.getEnname() + ","; + if("数据库".equals(cmd)) { + this.dbname = wql; + dbb = WQLCore.dbMap.get(this.dbname); + if(dbb == null) { + throw new Exception("无效的数据库名:" + dbname); + } + this.dbtype = dbb.getDbtype(); } - - //字段名 - this.wp.sSQL += xtr.getEnname() + " "; - - //字段属性 - if (-1 != xtr.getType().indexOf("U_")) { - this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); - } else { -// if(null!=xtr.getLen()&&!"".equals(xtr.getLen().trim())){ -// this.wp.sSQL += xtr.getType()+"("+xtr.getLen()+")"; -// }else{ -// this.wp.sSQL += xtr.getType(); //clob或blob没有长度 -// } - this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + else if("IO定义".equals(cmd) || "临时变量".equals(cmd)) { + wql = WqlUtil.ctrim(wql); + this.wp.initIOParam(wql); } - this.wp.sSQL += ","; - } - this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1); - //增加主键 - if (pkstr.length() > 0) { - pkstr = pkstr.substring(0, pkstr.length() - 1); - this.wp.sSQL += ",PRIMARY KEY (" + pkstr + ")"; - } - this.wp.sSQL += " ) ON COMMIT PRESERVE ROWS"; - } else if (DataType.DB2.equals(dbtype)) { //db2处理方式 - String pkstr = new String(); - this.wp.sSQL = "DECLARE GLOBAL TEMPORARY TABLE " + tempTableName + " ("; - for (int i = 0; i < rows.size(); i++) { - XLSTableRow xtr = (XLSTableRow) rows.get(i); - - //如果是主键,则增加主键标识 - if ("pk".equalsIgnoreCase(xtr.getParam())) { - pkstr += xtr.getEnname() + ","; + else if("临时表".equals(cmd)) { + this.tempTableList.add(wql); } - - //字段名 - this.wp.sSQL += xtr.getEnname() + " "; - - //字段属性 - if (-1 != xtr.getType().indexOf("U_")) { - this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); - } else { -// if(null!=xtr.getLen()&&!"".equals(xtr.getLen().trim())){ -// this.wp.sSQL += xtr.getType()+"("+xtr.getLen()+")"; -// }else{ -// this.wp.sSQL += xtr.getType(); //clob或blob没有长度 -// } - this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + else if("业务过程".equals(cmd)) { + this.processlist.add(WqlUtil.ctrim(wql)); } - this.wp.sSQL += ","; - } - this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1); - //增加主键 - if (pkstr.length() > 0) { - pkstr = pkstr.substring(0, pkstr.length() - 1); - this.wp.sSQL += ",PRIMARY KEY (" + pkstr + ")"; - } - this.wp.sSQL += " ) on commit preserve rows WITH REPLACE"; - } else if (DataType.MSSQL.equals(dbtype)) { //mssql处理方式 + } + } + catch(Exception e) { + e.printStackTrace(); + log.error("WQL加载失败:" + e.toString()); + throw new Exception("请检查WQL文件【" + code + ".wql】的语法规范!", e); + } + } - } - - log.debug("数据库创建临时表:\n" + this.wp.sSQL); - try { - if (null == this.wp.sSQL || "".equals(this.wp.sSQL)) { - - } else { - if (DataType.MSSQL.equals(dbtype)) { //MS SQLServer 处理方式 - Statement st = this.wp.conn.createStatement(); - st.execute(this.wp.sSQL); - } else { - this.wp.st = this.wp.conn.prepareStatement(this.wp.sSQL); - this.wp.st.execute(); + /** + * 有QU自身建立连接,则QU内部负责对该链接的事务处理 + * + * @return + */ + public ResultBean MainProcess() { + Connection conn = DBConnection.getConnection(this.dbname); + // this.isSelfConn = true; + log.debug(this.code + "执行开始"); + log.debug(this.wp.toString()); + //2、获取数据库连接并处理事务 + this.wp.conn = conn; + synchronized(this.wp.conn) { + try { + //如果是更新类的操作,则开启事务 + // if(this.code.toUpperCase().startsWith("U")){ + // if(this.isSelfConn){ + // this.wp.utx = DBConnection.getTransaction(this.dbname); + // try { + // if(this.wp.utx!=null){ + // this.wp.utx.begin(); + // } + // }catch (Exception ex) { + // this.wp._success = false; + // } + // } + // } + //3、创建临时表 + this.wp._success = CreateTempTable(); + //4、正式处理 + if(this.wp._success) { + this.wp._success = Process(); } - } - } catch (Exception ex) { - // ex.printStackTrace(); - // log.error("创建临时表出错:\n" + wp.sSQL + "\n" + ex.toString()); - // wp.InfoError = new ErrorBean(); - // wp.InfoError.setCode("E0022"); - // wp.InfoError.setDescription("创建临时表出错:\n" + wp.sSQL + "\n" + ex.toString()); - // wp.ALInfoError.add(wp.InfoError); - this.wp._state = false; - } finally { - try { - if (DBConnection.currpooltype != DBConnection.DBPOOLTYPE_SPRING) { - if (this.wp.st != null) this.wp.st.close(); - this.wp.st = null; + } + catch(Exception ex) { + // TODO Auto-generated catch block + ex.printStackTrace(); + this.wp.InfoError = new ErrorBean(); + this.wp.InfoError.setCode("QUERROR"); + this.wp.InfoError.setDescription(ex.toString()); + this.wp.ALInfoError.add(this.wp.InfoError); + this.wp._success = false; + } + finally { + //8、结果处理,事务处理 + //如果是更新类的操作,则关闭事务 + // if(this.code.toUpperCase().startsWith("U")){ + // //如果自身控制事务 + // if(this.isSelfConn){ + // if (this.wp._success) { + // try { + //// if(this.wp.utx!=null){ + //// this.wp.utx.commit(); + //// } + // log.debug(this.code+"执行成功"); + // this.wp.rb.setSucess(1); + // } catch (Exception e) { + // // TODO Auto-generated catch block + // e.printStackTrace(); + // try { + //// if(this.wp.utx!=null){ + //// this.wp.utx.rollback(); + //// } + // log.warn(this.code+"执行失败"); + // this.wp.rb.setSucess(0); + // }catch (Exception e1) { + // this.wp.InfoError = new ErrorBean(); + // this.wp.InfoError.setCode("TXERROR"); + // this.wp.InfoError.setDescription(e1.toString()); + // this.wp.ALInfoError.add(this.wp.InfoError); + // e1.printStackTrace(); + // } + // }finally{ + // DBConnection.freeConnection(this.wp.conn,this.dbname); + // //this.wp.conn = null; + //// this.wp.utx=null; + // } + // + // } else { + // try { + //// if(this.wp.utx!=null){ + //// this.wp.utx.rollback(); + //// } + // }catch (Exception ex) { + // }finally{ + // DBConnection.freeConnection(this.wp.conn,this.dbname); + // //this.wp.conn = null; + //// this.wp.utx=null; + // } + // log.warn(this.code+"执行失败"); + // this.wp.rb.setSucess(0); + // } + // }else{ + // if(this.wp._success){ + // log.debug(this.code+"执行成功"); + // this.wp.rb.setSucess(1); + // }else{ + // log.warn(this.code+"执行失败"); + // this.wp.rb.setSucess(0); + // } + // } + // }else{ + // //查询类 + // if(this.isSelfConn){ + // //如果是自身控制事务,则需要对conn进行释放等处理 + // try { + // if(!this.wp.conn.getAutoCommit() && DBConnection.currpooltype != DBConnection.DBPOOLTYPE_SPRING){ + // this.wp.conn.commit(); + // this.wp.rb.setSucess(1); + // this.wp._success = true; + // } + // } catch (SQLException e) { + // e.printStackTrace(); + // this.wp.rb.setSucess(0); + // this.wp._success = false; + // }finally{ + // DBConnection.freeConnection(this.wp.conn,this.dbname); + // } + // } + // + // if(this.wp._success){ + // log.debug(this.code+"执行成功"); + // this.wp.rb.setSucess(1); + // }else{ + // log.warn(this.code+"执行失败"); + // this.wp.rb.setSucess(0); + // } + // } + if(this.wp._success) { + log.debug(this.code + "执行成功"); + this.wp.rb.setSucess(1); } - } catch (SQLException e) { - log.error("关闭st,rs出错" + e.toString()); - } - } - } - log.debug("------------结束执行 创建临时表 ------------"); -// return this.wp._state; - return true; - } + else{ + log.warn(this.code + "执行失败"); + this.wp.rb.setSucess(0); + } + DBConnection.freeConnection(this.wp.conn, this.dbname); + this.wp.rb.setInfoDump(this.wp.ALInfoDump); + this.wp.rb.setInfoError(this.wp.ALInfoError); + this.wp.rb.setInfoTrace(this.wp.ALInfoTrace); + return this.wp.rb; + } + } + } - /** - * 处理 - * - * @return - */ - private boolean Process() { - this.wp._state = true; - log.debug("------------开始执行 业务主过程 ------------"); - this.wp._state = new Syntax().exec(this, this.processlist); - log.debug("------------结束执行 业务主过程 ------------"); - return this.wp._state; - } + /** + * 创建临时表 + * + * @return + */ + private boolean CreateTempTable() { + this.wp._state = true; + this.wp.sSQL = ""; + log.debug("------------开始执行 创建临时表 ------------"); + for(Iterator it = this.tempTableList.iterator(); it.hasNext(); ) { + String tempTableName = (String) it.next(); + ArrayList rows = (ArrayList) WQLCore.tempTableMap.get(tempTableName.toUpperCase()); + if(rows == null) { + log.error("临时表[" + tempTableName.toUpperCase() + "]未找到数据字典定义"); + } + if(DataType.MYSQL.equals(dbtype)) { //mysql处理方式 + String pkstr = new String(); + this.wp.sSQL = "CREATE TEMPORARY TABLE IF NOT EXISTS " + tempTableName + " ("; + for(int i = 0; i < rows.size(); i++) { + XLSTableRow xtr = (XLSTableRow) rows.get(i); + //如果是主键,则增加主键标识 + if("pk".equalsIgnoreCase(xtr.getParam())) { + pkstr += xtr.getEnname() + ","; + } + //字段名 + this.wp.sSQL += xtr.getEnname() + " "; + //字段属性 + if(-1 != xtr.getType().indexOf("U_")) { + this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + } + else{ + // if(null!=xtr.getLen()&&!"".equals(xtr.getLen().trim())){ + // this.wp.sSQL += xtr.getType()+"("+xtr.getLen()+")"; + // }else{ + // this.wp.sSQL += xtr.getType(); //clob或blob没有长度 + // } + this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + } + this.wp.sSQL += ","; + } + this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1); + //增加主键 + if(pkstr.length() > 0) { + pkstr = pkstr.substring(0, pkstr.length() - 1); + this.wp.sSQL += ",PRIMARY KEY (" + pkstr + ")"; + } + this.wp.sSQL += " )"; + } + else if(DataType.ORACLE.equals(dbtype)) { //oracle处理方式 + String pkstr = new String(); + this.wp.sSQL = "CREATE GLOBAL TEMPORARY TABLE " + tempTableName + " ("; + for(int i = 0; i < rows.size(); i++) { + XLSTableRow xtr = (XLSTableRow) rows.get(i); + //如果是主键,则增加主键标识 + if("pk".equalsIgnoreCase(xtr.getParam())) { + pkstr += xtr.getEnname() + ","; + } + //字段名 + this.wp.sSQL += xtr.getEnname() + " "; + //字段属性 + if(-1 != xtr.getType().indexOf("U_")) { + this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + } + else{ + // if(null!=xtr.getLen()&&!"".equals(xtr.getLen().trim())){ + // this.wp.sSQL += xtr.getType()+"("+xtr.getLen()+")"; + // }else{ + // this.wp.sSQL += xtr.getType(); //clob或blob没有长度 + // } + this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + } + this.wp.sSQL += ","; + } + this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1); + //增加主键 + if(pkstr.length() > 0) { + pkstr = pkstr.substring(0, pkstr.length() - 1); + this.wp.sSQL += ",PRIMARY KEY (" + pkstr + ")"; + } + this.wp.sSQL += " ) ON COMMIT PRESERVE ROWS"; + } + else if(DataType.DB2.equals(dbtype)) { //db2处理方式 + String pkstr = new String(); + this.wp.sSQL = "DECLARE GLOBAL TEMPORARY TABLE " + tempTableName + " ("; + for(int i = 0; i < rows.size(); i++) { + XLSTableRow xtr = (XLSTableRow) rows.get(i); + //如果是主键,则增加主键标识 + if("pk".equalsIgnoreCase(xtr.getParam())) { + pkstr += xtr.getEnname() + ","; + } + //字段名 + this.wp.sSQL += xtr.getEnname() + " "; + //字段属性 + if(-1 != xtr.getType().indexOf("U_")) { + this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + } + else{ + // if(null!=xtr.getLen()&&!"".equals(xtr.getLen().trim())){ + // this.wp.sSQL += xtr.getType()+"("+xtr.getLen()+")"; + // }else{ + // this.wp.sSQL += xtr.getType(); //clob或blob没有长度 + // } + this.wp.sSQL += DataType.getFieldValue(this.dbtype, xtr.getType()); + } + this.wp.sSQL += ","; + } + this.wp.sSQL = this.wp.sSQL.substring(0, this.wp.sSQL.length() - 1); + //增加主键 + if(pkstr.length() > 0) { + pkstr = pkstr.substring(0, pkstr.length() - 1); + this.wp.sSQL += ",PRIMARY KEY (" + pkstr + ")"; + } + this.wp.sSQL += " ) on commit preserve rows WITH REPLACE"; + } + else if(DataType.MSSQL.equals(dbtype)) { //mssql处理方式 + } + log.debug("数据库创建临时表:\n" + this.wp.sSQL); + try { + if(null == this.wp.sSQL || "".equals(this.wp.sSQL)) { + } + else{ + if(DataType.MSSQL.equals(dbtype)) { //MS SQLServer 处理方式 + Statement st = this.wp.conn.createStatement(); + st.execute(this.wp.sSQL); + } + else{ + this.wp.st = this.wp.conn.prepareStatement(this.wp.sSQL); + this.wp.st.execute(); + } + } + } + catch(Exception ex) { + // ex.printStackTrace(); + // log.error("创建临时表出错:\n" + wp.sSQL + "\n" + ex.toString()); + // wp.InfoError = new ErrorBean(); + // wp.InfoError.setCode("E0022"); + // wp.InfoError.setDescription("创建临时表出错:\n" + wp.sSQL + "\n" + ex.toString()); + // wp.ALInfoError.add(wp.InfoError); + this.wp._state = false; + } + finally { + try { + if(DBConnection.currpooltype != DBConnection.DBPOOLTYPE_SPRING) { + if(this.wp.st != null) { + this.wp.st.close(); + } + this.wp.st = null; + } + } + catch(SQLException e) { + log.error("关闭st,rs出错" + e.toString()); + } + } + } + log.debug("------------结束执行 创建临时表 ------------"); + // return this.wp._state; + return true; + } + /** + * 处理 + * + * @return + */ + private boolean Process() { + this.wp._state = true; + log.debug("------------开始执行 业务主过程 ------------"); + this.wp._state = new Syntax().exec(this, this.processlist); + log.debug("------------结束执行 业务主过程 ------------"); + return this.wp._state; + } - /*******************************88 - * 基础方法 - * @return - */ + /*******************************88 + * 基础方法 + * @return + */ + public String getDbtype() { + return dbtype; + } - public String getDbtype() { - return dbtype; - } + public String getDbname() { + return dbname; + } - public String getDbname() { - return dbname; - } + public String getCode() { + return code; + } - public String getCode() { - return code; - } + /** + * 获取更新所影响到的记录数 + * + * @return + */ + public int getRowCount() { + return this.wp.IRowsCount; + } - /** - * 获取更新所影响到的记录数 - * - * @return - */ - public int getRowCount() { - return this.wp.IRowsCount; - } + /** + * 获取处理后的结果集对象 + * + * @return + */ + public ResultBean getResultBean() { + return this.wp.rb; + } - /** - * 获取处理后的结果集对象 - * - * @return - */ - public ResultBean getResultBean() { - return this.wp.rb; - } + /** + * 设置WP输出参数 + * + * @param name + * @param value + */ + public WO setParam(String name, Object value) { + this.wp.setParam(name, value); + return this; + } - /** - * 设置WP输出参数 - * - * @param name - * @param value - */ - public WO setParam(String name, Object value) { - this.wp.setParam(name, value); - return this; - } + /** + * 设置分页信息:开始页数 + * + * @param nPageStart + */ + public WO setPage_PageStart(int nPageStart) { + this.wp.PAGE_PAGESTART = nPageStart; + return this; + } - /** - * 设置分页信息:开始页数 - * - * @param nPageStart - */ - public WO setPage_PageStart(int nPageStart) { - this.wp.PAGE_PAGESTART = nPageStart; - return this; - } + /** + * 设置分页信息:每页记录数 + * + * @param nPageRecordNum + */ + public WO setPage_PageRecordNum(int nPageRecordNum) { + this.wp.PAGE_PAGERECORDNUM = nPageRecordNum; + return this; + } - /** - * 设置分页信息:每页记录数 - * - * @param nPageRecordNum - */ - public WO setPage_PageRecordNum(int nPageRecordNum) { - this.wp.PAGE_PAGERECORDNUM = nPageRecordNum; - return this; - } + /** + * 设置分页信息:排序字段 + * + * @param sOrderByField + */ + public WO setPage_OrderByField(String sOrderByField) { + this.wp.SORT_ORDERBYFIELD = sOrderByField; + return this; + } - /** - * 设置分页信息:排序字段 - * - * @param sOrderByField - */ - public WO setPage_OrderByField(String sOrderByField) { - this.wp.SORT_ORDERBYFIELD = sOrderByField; - return this; - } + /** + * 获取hint方式 + * + * @return + */ + public void setHintMaster() { + this.hint_type = "/!TDDL:MASTER*/"; + } - /** - * 获取hint方式 - * - * @return - */ - public void setHintMaster() { - this.hint_type = "/!TDDL:MASTER*/"; - } + public void setHintSlave() { + this.hint_type = "/!TDDL:SLAVE*/"; + } - public void setHintSlave() { - this.hint_type = "/!TDDL:SLAVE*/"; - } - - public String getHint() { - return this.hint_type; - } - - public boolean isHint() { - if (null == this.hint_type || "".equals(this.hint_type)) { - return false; - } - return true; - } + public String getHint() { + return this.hint_type; + } + public boolean isHint() { + if(null == this.hint_type || "".equals(this.hint_type)) { + return false; + } + return true; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/util/WqlUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/util/WqlUtil.java index 3835e4da..91b80d2f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/util/WqlUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/wql/util/WqlUtil.java @@ -19,33 +19,44 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; @Slf4j -public class WqlUtil { - private static final int[] IA = new int[256]; +public class WqlUtil{ + private static final int[] IA = new int[256]; - public static HttpContext getHttpContext(Pageable pageable) { - HttpContext ctx = new HttpContext(WqlUtil.getUUID()); - ctx.setPage((pageable.getPageNumber() + 1) + ""); - ctx.setRows(pageable.getPageSize() + ""); - return ctx; - } + public static HttpContext getHttpContext(Pageable pageable) { + HttpContext ctx = new HttpContext(WqlUtil.getUUID()); + ctx.setPage((pageable.getPageNumber() + 1) + ""); + ctx.setRows(pageable.getPageSize() + ""); + return ctx; + } + public static HttpContext getHttpContext(Integer pageNumber, Integer pageSize) { + HttpContext ctx = new HttpContext(WqlUtil.getUUID()); + ctx.setPage((pageNumber + 1) + ""); + ctx.setRows(pageSize + ""); + return ctx; + } - public static String getSQLFieldValue(Object o) { - String str = new String(); - if (o == null) { - return ""; - } else { - String classStr = o.getClass().getName(); - if ("java.lang.String".equals(classStr)) { - str = (String) o; - } else if ("java.lang.Long".equals(classStr)) { - Long e = (Long) o; - str = e.toString(); - } else if ("java.lang.Double".equals(classStr)) { - str = String.valueOf(o); - } else if ("java.math.BigInteger".equals(classStr)) { - str = String.valueOf(o); - } else if ("oracle.sql.CLOB".equals(classStr)) { + public static String getSQLFieldValue(Object o) { + String str = new String(); + if(o == null) { + return ""; + } + else{ + String classStr = o.getClass().getName(); + if("java.lang.String".equals(classStr)) { + str = (String) o; + } + else if("java.lang.Long".equals(classStr)) { + Long e = (Long) o; + str = e.toString(); + } + else if("java.lang.Double".equals(classStr)) { + str = String.valueOf(o); + } + else if("java.math.BigInteger".equals(classStr)) { + str = String.valueOf(o); + } + else if("oracle.sql.CLOB".equals(classStr)) { /* CLOB e2 = (CLOB) o; try { @@ -55,56 +66,59 @@ public class WqlUtil { } catch (SQLException arg16) { arg16.printStackTrace(); }*/ - } else if ("java.lang.Integer".equals(classStr)) { - Integer e3 = (Integer) o; - str = e3.toString(); - } else if ("java.lang.Short".equals(classStr)) { - Short e4 = (Short) o; - str = e4.toString(); - } else if ("java.math.BigDecimal".equals(classStr)) { - BigDecimal e5 = (BigDecimal) o; - str = e5.toString(); - } else { - Method e6; - if (classStr.startsWith("com.ibm.db2.jcc")) { - try { - if (o != null) { - e6 = o.getClass().getMethod("getSubString", new Class[]{Long.TYPE, Integer.TYPE}); - Method subo = o.getClass().getMethod("length", new Class[0]); - int subclass = ((Long) subo.invoke(o, new Object[0])).intValue(); - if (subclass > 0) { - str = (String) e6.invoke(o, new Object[]{Long.valueOf(1L), Integer.valueOf(subclass)}); - } - } - } catch (Exception arg15) { - log.error( - "getSQLFieldValue error, class=com.ibm.db2.jcc :" + arg15.getMessage()); - arg15.printStackTrace(); + } + else if("java.lang.Integer".equals(classStr)) { + Integer e3 = (Integer) o; + str = e3.toString(); + } + else if("java.lang.Short".equals(classStr)) { + Short e4 = (Short) o; + str = e4.toString(); + } + else if("java.math.BigDecimal".equals(classStr)) { + BigDecimal e5 = (BigDecimal) o; + str = e5.toString(); + } + else{ + Method e6; + if(classStr.startsWith("com.ibm.db2.jcc")) { + try { + if(o != null) { + e6 = o.getClass().getMethod("getSubString", new Class[]{Long.TYPE, Integer.TYPE}); + Method subo = o.getClass().getMethod("length", new Class[0]); + int subclass = ((Long) subo.invoke(o, new Object[0])).intValue(); + if(subclass > 0) { + str = (String) e6.invoke(o, new Object[]{Long.valueOf(1L), Integer.valueOf(subclass)}); + } + } + } + catch(Exception arg15) { + log.error("getSQLFieldValue error, class=com.ibm.db2.jcc :" + arg15.getMessage()); + arg15.printStackTrace(); + } } - } else if (classStr.startsWith("weblogic.jdbc.wrapper.Clob")) { - try { - e6 = o.getClass().getMethod("getVendorObj", new Class[0]); - Object subo1 = e6.invoke(o, new Object[0]); - String subclass1 = subo1.getClass().getName(); - if (subclass1.startsWith("com.ibm.db2.jcc")) { - try { - if (subo1 != null) { - Method clob = subo1.getClass().getMethod("getSubString", - new Class[]{Long.TYPE, Integer.TYPE}); - Method e1 = subo1.getClass().getMethod("length", new Class[0]); - int length = ((Long) e1.invoke(subo1, new Object[0])).intValue(); - if (length > 0) { - str = (String) clob.invoke(subo1, - new Object[]{Long.valueOf(1L), Integer.valueOf(length)}); - } - } - } catch (Exception arg9) { - log.error( - "getSQLFieldValue error, class=weblogic.jdbc.wrapper.Clob_com.ibm.db2.jcc.* :" - + arg9.getMessage()); - arg9.printStackTrace(); - } - } else if ("oracle.sql.CLOB".equals(subclass1)) { + else if(classStr.startsWith("weblogic.jdbc.wrapper.Clob")) { + try { + e6 = o.getClass().getMethod("getVendorObj", new Class[0]); + Object subo1 = e6.invoke(o, new Object[0]); + String subclass1 = subo1.getClass().getName(); + if(subclass1.startsWith("com.ibm.db2.jcc")) { + try { + if(subo1 != null) { + Method clob = subo1.getClass().getMethod("getSubString", new Class[]{Long.TYPE, Integer.TYPE}); + Method e1 = subo1.getClass().getMethod("length", new Class[0]); + int length = ((Long) e1.invoke(subo1, new Object[0])).intValue(); + if(length > 0) { + str = (String) clob.invoke(subo1, new Object[]{Long.valueOf(1L), Integer.valueOf(length)}); + } + } + } + catch(Exception arg9) { + log.error("getSQLFieldValue error, class=weblogic.jdbc.wrapper.Clob_com.ibm.db2.jcc.* :" + arg9.getMessage()); + arg9.printStackTrace(); + } + } + else if("oracle.sql.CLOB".equals(subclass1)) { /* CLOB clob1 = (CLOB) subo1; try { @@ -114,287 +128,274 @@ public class WqlUtil { } catch (Exception arg8) { arg8.printStackTrace(); }*/ - } - } catch (SecurityException arg10) { - arg10.printStackTrace(); - } catch (IllegalArgumentException arg11) { - arg11.printStackTrace(); - } catch (NoSuchMethodException arg12) { - arg12.printStackTrace(); - } catch (IllegalAccessException arg13) { - arg13.printStackTrace(); - } catch (InvocationTargetException arg14) { - arg14.printStackTrace(); + } + } + catch(SecurityException arg10) { + arg10.printStackTrace(); + } + catch(IllegalArgumentException arg11) { + arg11.printStackTrace(); + } + catch(NoSuchMethodException arg12) { + arg12.printStackTrace(); + } + catch(IllegalAccessException arg13) { + arg13.printStackTrace(); + } + catch(InvocationTargetException arg14) { + arg14.printStackTrace(); + } } - } - } + } + return str; + } + } - return str; - } - } + public static Object cloneObject(Object obj) + throws Exception { + ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); + ObjectOutputStream out = new ObjectOutputStream(byteOut); + out.writeObject(obj); + ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); + ObjectInputStream in = new ObjectInputStream(byteIn); + return in.readObject(); + } - public static Object cloneObject(Object obj) throws Exception { - ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); - ObjectOutputStream out = new ObjectOutputStream(byteOut); - out.writeObject(obj); - ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray()); - ObjectInputStream in = new ObjectInputStream(byteIn); - return in.readObject(); - } + public static boolean isString(Object o) { + return "java.lang.String".equals(o.getClass().getName()); + } - public static boolean isString(Object o) { - return "java.lang.String".equals(o.getClass().getName()); - } + public static String between(String str, String beginStr, String endStr) { + try { + if(str == null || "".equals(str.trim())) { + return ""; + } + str = str.substring(str.indexOf(beginStr) + 1, str.indexOf(endStr)); + } + catch(Exception arg3) { + arg3.printStackTrace(); + } + return str; + } - public static String between(String str, String beginStr, String endStr) { - try { - if (str == null || "".equals(str.trim())) { - return ""; - } + public static String _replaceStr(String source, String oldString, String newString) { + StringBuffer output = new StringBuffer(); + int lengthOfSource = source.length(); + int lengthOfOld = oldString.length(); + int posStart; + int pos; + for(posStart = 0; (pos = source.indexOf(oldString, posStart)) >= 0; posStart = pos + lengthOfOld) { + output.append(source.substring(posStart, pos)); + output.append(newString); + } + if(posStart < lengthOfSource) { + output.append(source.substring(posStart)); + } + return output.toString(); + } - str = str.substring(str.indexOf(beginStr) + 1, str.indexOf(endStr)); - } catch (Exception arg3) { - arg3.printStackTrace(); - } + public static boolean isNotBlank(String str) { + int length; + if(str != null && (length = str.length()) != 0) { + for(int i = 0; i < length; ++i) { + if(!Character.isWhitespace(str.charAt(i))) { + return true; + } + } + return false; + } + else{ + return false; + } + } - return str; - } + public static boolean contains(String s1, String s2) { + boolean ishas = false; + if(-1 != s1.indexOf(s2)) { + ishas = true; + } + return ishas; + } - public static String _replaceStr(String source, String oldString, String newString) { - StringBuffer output = new StringBuffer(); - int lengthOfSource = source.length(); - int lengthOfOld = oldString.length(); + public static String rtrim(String str) { + Pattern pat = Pattern.compile("[\t\n ]$"); + for(Matcher mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { + str = mat.replaceAll(""); + } + return str; + } - int posStart; - int pos; - for (posStart = 0; (pos = source.indexOf(oldString, posStart)) >= 0; posStart = pos + lengthOfOld) { - output.append(source.substring(posStart, pos)); - output.append(newString); - } - - if (posStart < lengthOfSource) { - output.append(source.substring(posStart)); - } - - return output.toString(); - } - - public static boolean isNotBlank(String str) { - int length; - if (str != null && (length = str.length()) != 0) { - for (int i = 0; i < length; ++i) { - if (!Character.isWhitespace(str.charAt(i))) { - return true; - } - } - - return false; - } else { - return false; - } - } - - public static boolean contains(String s1, String s2) { - boolean ishas = false; - if (-1 != s1.indexOf(s2)) { - ishas = true; - } - - return ishas; - } - - public static String rtrim(String str) { - Pattern pat = Pattern.compile("[\t\n ]$"); - - for (Matcher mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { - str = mat.replaceAll(""); - } - - return str; - } - - public static String getUUID() { + public static String getUUID() { /*String primaryKey = UUIDGenerator.getInstance().generateRandomBasedUUID().toString(); primaryKey = primaryKey.replaceAll("-", ""); primaryKey = primaryKey.toUpperCase(); return primaryKey;*/ - return "11"; - } + return "11"; + } - public static String ctrim(String str) { - Pattern pat = Pattern.compile("[\t]"); + public static String ctrim(String str) { + Pattern pat = Pattern.compile("[\t]"); + Matcher mat; + for(mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { + str = mat.replaceAll(" "); + } + pat = Pattern.compile("[ ]{2,}"); + for(mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { + str = mat.replaceAll(" "); + } + return str; + } - Matcher mat; - for (mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { - str = mat.replaceAll(" "); - } - - pat = Pattern.compile("[ ]{2,}"); - - for (mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { - str = mat.replaceAll(" "); - } - - return str; - } - - /** - * 获取实体类和表的映射关系 - * - * @param instance - * @return - */ - public static Map getDeclaredFieldsInfo(Object instance) { - Map map = new HashMap(); - Class clazz = instance.getClass(); - Field[] fields = clazz.getDeclaredFields(); - boolean b = false; - for (int i = 0; i < fields.length; i++) { - fields[i].setAccessible(true); - boolean annotationPresent = fields[i].isAnnotationPresent(Column.class); - if (annotationPresent) { - // 获取注解值 - String name = fields[i].getAnnotation(Column.class).name(); - // map.put(name, fields[i].getName()); - try { - //实例值 - String value = StrUtil.toString(fields[i].get(instance)); - if (!"null".equals(value)) { - map.put(name, value); + /** + * 获取实体类和表的映射关系 + * + * @param instance + * @return + */ + public static Map getDeclaredFieldsInfo(Object instance) { + Map map = new HashMap(); + Class clazz = instance.getClass(); + Field[] fields = clazz.getDeclaredFields(); + boolean b = false; + for(int i = 0; i < fields.length; i++) { + fields[i].setAccessible(true); + boolean annotationPresent = fields[i].isAnnotationPresent(Column.class); + if(annotationPresent) { + // 获取注解值 + String name = fields[i].getAnnotation(Column.class).name(); + // map.put(name, fields[i].getName()); + try { + //实例值 + String value = StrUtil.toString(fields[i].get(instance)); + if(!"null".equals(value)) { + map.put(name, value); + } } - - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - return map; - } - public static String getTableNameByInstance(Class clazz){ - Table anno = (Table) clazz.getAnnotation(Table.class); - //返回实体类表名 - return anno.name(); - - } - - - public static String ltrim(String str) { - Pattern pat = Pattern.compile("^[\t\n ]"); - - for (Matcher mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { - str = mat.replaceAll(""); - } - - return str; - } - - - public static byte[] getFileBytes(String strFileNameAndPath) throws Exception { - File file = new File(strFileNameAndPath); - return getFileBytes(file); - } - - public static byte[] getFileBytes(File file) throws Exception { - FileInputStream fileStream = new FileInputStream(file); - byte[] bfile = new byte[(int) file.length()]; - fileStream.read(bfile, 0, (int) file.length()); - fileStream.close(); - return bfile; - } - - public static byte[] getFileBytes(InputStream is, long l) throws Exception { - byte[] bfile = new byte[(int) l]; - is.read(bfile, 0, bfile.length); - is.close(); - return bfile; - } - - public static byte[] getFileBytes(URI uri) throws Exception { - File file = new File(uri); - FileInputStream fileStream = new FileInputStream(file); - byte[] bfile = new byte[(int) file.length()]; - fileStream.read(bfile, 0, (int) file.length()); - fileStream.close(); - return bfile; - } - - public static final String decode2String(byte[] sArr) throws UnsupportedEncodingException { - byte[] bytes = decode(sArr); - String str = new String(bytes, "UTF-8"); - return str; - } - - public static final byte[] decode(byte[] sArr) { - int sLen = sArr.length; - int sepCnt = 0; - - int pad; - for (pad = 0; pad < sLen; ++pad) { - if (IA[sArr[pad] & 255] < 0) { - ++sepCnt; - } - } - - if ((sLen - sepCnt) % 4 != 0) { - return null; - } else { - pad = 0; - int len = sLen; - - while (len > 1) { - --len; - if (IA[sArr[len] & 255] > 0) { - break; - } - - if (sArr[len] == 126) { - ++pad; - } - } - - len = ((sLen - sepCnt) * 6 >> 3) - pad; - byte[] dArr = new byte[len]; - int s = 0; - int d = 0; - - while (d < len) { - int i = 0; - - for (int j = 0; j < 4; ++j) { - int c = IA[sArr[s++] & 255]; - if (c >= 0) { - i |= c << 18 - j * 6; - } else { - --j; + catch(IllegalAccessException e) { + e.printStackTrace(); } - } + } + } + return map; + } - dArr[d++] = (byte) (i >> 16); - if (d < len) { - dArr[d++] = (byte) (i >> 8); - if (d < len) { - dArr[d++] = (byte) i; + public static String getTableNameByInstance(Class clazz) { + Table anno = (Table) clazz.getAnnotation(Table.class); + //返回实体类表名 + return anno.name(); + } + + public static String ltrim(String str) { + Pattern pat = Pattern.compile("^[\t\n ]"); + for(Matcher mat = pat.matcher(str); mat.find(); mat = pat.matcher(str)) { + str = mat.replaceAll(""); + } + return str; + } + + public static byte[] getFileBytes(String strFileNameAndPath) + throws Exception { + File file = new File(strFileNameAndPath); + return getFileBytes(file); + } + + public static byte[] getFileBytes(File file) + throws Exception { + FileInputStream fileStream = new FileInputStream(file); + byte[] bfile = new byte[(int) file.length()]; + fileStream.read(bfile, 0, (int) file.length()); + fileStream.close(); + return bfile; + } + + public static byte[] getFileBytes(InputStream is, long l) + throws Exception { + byte[] bfile = new byte[(int) l]; + is.read(bfile, 0, bfile.length); + is.close(); + return bfile; + } + + public static byte[] getFileBytes(URI uri) + throws Exception { + File file = new File(uri); + FileInputStream fileStream = new FileInputStream(file); + byte[] bfile = new byte[(int) file.length()]; + fileStream.read(bfile, 0, (int) file.length()); + fileStream.close(); + return bfile; + } + + public static final String decode2String(byte[] sArr) + throws UnsupportedEncodingException { + byte[] bytes = decode(sArr); + String str = new String(bytes, "UTF-8"); + return str; + } + + public static final byte[] decode(byte[] sArr) { + int sLen = sArr.length; + int sepCnt = 0; + int pad; + for(pad = 0; pad < sLen; ++pad) { + if(IA[sArr[pad] & 255] < 0) { + ++sepCnt; + } + } + if((sLen - sepCnt) % 4 != 0) { + return null; + } + else{ + pad = 0; + int len = sLen; + while(len > 1) { + --len; + if(IA[sArr[len] & 255] > 0) { + break; } - } - } - - return dArr; - } - } - - public static boolean isBlank(String str) { - int length; - if (str != null && (length = str.length()) != 0) { - for (int i = 0; i < length; ++i) { - if (!Character.isWhitespace(str.charAt(i))) { - return false; - } - } - - return true; - } else { - return true; - } - } + if(sArr[len] == 126) { + ++pad; + } + } + len = ((sLen - sepCnt) * 6 >> 3) - pad; + byte[] dArr = new byte[len]; + int s = 0; + int d = 0; + while(d < len) { + int i = 0; + for(int j = 0; j < 4; ++j) { + int c = IA[sArr[s++] & 255]; + if(c >= 0) { + i |= c << 18 - j * 6; + } + else{ + --j; + } + } + dArr[d++] = (byte) (i >> 16); + if(d < len) { + dArr[d++] = (byte) (i >> 8); + if(d < len) { + dArr[d++] = (byte) i; + } + } + } + return dArr; + } + } + public static boolean isBlank(String str) { + int length; + if(str != null && (length = str.length()) != 0) { + for(int i = 0; i < length; ++i) { + if(!Character.isWhitespace(str.charAt(i))) { + return false; + } + } + return true; + } + else{ + return true; + } + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java index 95b983cd..002262c9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/rest/CacheLineHandController.java @@ -39,7 +39,7 @@ import java.util.Map; public class CacheLineHandController{ private final CacheLineHandService cacheLineHandService; - @PostMapping("/queryMaterial") + @PostMapping("/materialQuery") @Log("物料查询") @ApiOperation("物料查询") public ResponseEntity> queryMaterial(@RequestBody JSONObject form) { @@ -48,14 +48,14 @@ public class CacheLineHandController{ if(StringUtils.isNotEmpty(params)) { //限制查询参数过短,模糊力度大 int length = params.getBytes().length; - if(length < 3) { - throw new BizCoreException("您输入的条件所匹配的范围太大,请输入大于2个字的内容。"); + if(length < 4) { + throw new BizCoreException("输入条件所查询的内容过多,请输入大于3个字的查询条件。"); } } return new ResponseEntity<>(cacheLineHandService.queryMaterial(params), HttpStatus.OK); } - @PostMapping("/materialQuery") + @PostMapping("/queryMaterial") @Log("物料模糊查询") @ApiOperation("物料模糊查询") public ResponseEntity materialQuery(@RequestBody JSONObject form) { @@ -64,8 +64,8 @@ public class CacheLineHandController{ if(StringUtils.isNotEmpty(params)) { //限制查询参数过短,模糊力度大 int length = params.getBytes().length; - if(length < 3) { - throw new BizCoreException("您输入的条件所匹配的范围太大,请输入大于2个字的内容。"); + if(length < 4) { + throw new BizCoreException("输入条件所查询的内容过多,请输入大于3个字的查询条件。"); } } return new ResponseEntity<>(cacheLineHandService.materialQuery(form.getString("search_bar")), HttpStatus.OK); @@ -117,7 +117,7 @@ public class CacheLineHandController{ @PostMapping("/instOperation") @Log("任务操作") @ApiOperation("任务操作") - public ResponseEntity instOperation(@RequestBody JSONObject param) { + public ResponseEntity instOperation(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [任务操作] 接口被请求, 请求参数-{}", param); //任务类型和任务ID校验,instruct_uuid为前端参数命名,本来应为task_id if(StringUtils.isEmpty(param.getString("instruct_uuid")) || StringUtils.isEmpty(param.getString("opt_type"))) { @@ -141,7 +141,7 @@ public class CacheLineHandController{ @PostMapping("/cacheLineOutBoxExceptionConfirm") @Log("缓存线出入箱异常-确认") @ApiOperation("缓存线出入箱异常-确认") - public ResponseEntity cacheLineOutBoxExceptionConfirm(@RequestBody JSONObject param) { + public ResponseEntity cacheLineOutBoxExceptionConfirm(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [缓存线出箱异常-确认] 接口被请求, 请求参数-{}", param); //参数校验 if(StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("position_code")) || StringUtils.isEmpty(param.getString("vehicle_code"))) { @@ -161,7 +161,7 @@ public class CacheLineHandController{ @PostMapping("/inOutEmptyBox") @Log("空箱初始化--出入空箱") @ApiOperation("空箱初始化--出入空箱") - public ResponseEntity inOutEmptyBox(@RequestBody JSONObject param) { + public ResponseEntity inOutEmptyBox(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [空箱初始化--出入空箱] 接口被请求, 请求参数-{}", param); //参数校验 if(StringUtils.isEmpty(param.getString("inOut_type")) || StringUtils.isEmpty(param.getString("wcsdevice_code")) || StringUtils.isEmpty(param.getString("vehicle_code"))) { @@ -179,7 +179,7 @@ public class CacheLineHandController{ } @PostMapping("/inOutExceptionInstConfirm") - @Log("缓存线出入箱异常指令确认") + @Log("扫码异常确认") @ApiOperation("缓存线出入箱异常指令确认") public ResponseEntity inOutExceptionInstConfirm(@RequestBody JSONObject param) { log.info("海亮缓存线手持服务 [缓存线出入箱异常指令确认] 接口被请求, 请求参数-{}", param); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/CacheLineHandService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/CacheLineHandService.java index a9ca25a9..8ee3bdb1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/CacheLineHandService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/CacheLineHandService.java @@ -2,6 +2,7 @@ package org.nl.wms.pda.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.nl.common.utils.api.CommonResult; import org.nl.wms.pda.dto.MaterialDto; import org.springframework.data.domain.Pageable; @@ -128,10 +129,11 @@ public interface CacheLineHandService{ * 缓存线出入箱异常指令确认 * * @param param 查询参数 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码 + * @return * @author gbx * @date 2023/3/24 */ - Map inOutExceptionInstConfirm(JSONObject param); + Object inOutExceptionInstConfirm(JSONObject param); /** * 任务操作 @@ -141,7 +143,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/23 */ - String instOperation(JSONObject param); + CommonResult instOperation(JSONObject param); /** * 缓存线出箱异常-确认 @@ -151,16 +153,17 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - String cacheLineOutBoxExceptionConfirm(JSONObject param); + CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param); /** * 空箱初始化--出入空箱 * * @param param 查询参数 inOut_type:1 入空箱 2 出空箱 vehicle_code:载具编码 + * @return * @author gbx * @date 2023/3/24 */ - String inOutEmptyBox(JSONObject param); + CommonResult inOutEmptyBox(JSONObject param); /** * 设置满框 @@ -245,7 +248,7 @@ public interface CacheLineHandService{ * @author gbx * @date 2023/3/24 */ - Map cacheLineExcepOpt(JSONObject param); + CommonResult cacheLineExcepOpt(JSONObject param); /** * 倒料操作 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java index c6736a3e..09f3efbf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java @@ -14,18 +14,18 @@ import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.*; +import org.nl.common.utils.api.CommonResult; +import org.nl.common.utils.api.RestBusinessTemplate; import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; -import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.pda.dto.MaterialDto; import org.nl.wms.pda.service.CacheLineHandService; import org.nl.wms.sch.tasks.SpeMachineryTask; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.scheduling.annotation.Async; @@ -53,6 +53,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ private final RedisUtils redisUtils; @Autowired private LocalCache cache; + @Override public JSONArray dropdownListQuery(String param, String type) { //初始化下拉框列表1.物料规格2.工序3.指令状态4.设备 @@ -142,6 +143,8 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ public Map instPageQuery(Map param, Pageable page) { HashMap map = new HashMap<>(); map.put("flag", "10"); + Integer pageNumber = 0; + Integer pageSize = 20; JSONObject whereJson = JSONObject.parseObject(JSON.toJSONString(param)); //任务状态 String task_status = whereJson.getString("status"); @@ -182,25 +185,35 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ if(StrUtil.isNotEmpty(whereJson.getString("end_date"))) { map.put("end_date", whereJson.getString("end_date")); } - return WQL.getWO("PDA_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "task.update_time desc"); + //分页参数 + if(StrUtil.isNotEmpty(whereJson.getString("page")) && StrUtil.isNotEmpty(whereJson.getString("size"))) { + pageNumber = whereJson.getInteger("page"); + pageSize = whereJson.getInteger("size"); + } + JSONObject jsonObject = WQL.getWO("PDA_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageNumber, pageSize), "task.update_time desc"); + String size = jsonObject.getString("totalElements"); + jsonObject.put("size", size); + //适配前端分页条件 + jsonObject.remove("totalElements"); + return jsonObject; } @Override - public String instOperation(JSONObject param) { + public CommonResult instOperation(JSONObject param) { String optType = param.getString("opt_type"); SpeMachineryTask SpeMachineryTask = new SpeMachineryTask(); WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); JSONObject taskObject = taskTab.query("task_id =" + param.getString("instruct_uuid")).uniqueResult(0); //1-取消、2-完成、3-任务下发,根据操作类型执行相关操作 if(StatusEnum.TASK_CANNEL.getCode().equals(optType) || StatusEnum.TASK_FINISH.getCode().equals(optType)) { - return updateTaskStatus(taskObject, optType); + return RestBusinessTemplate.execute(() -> updateTaskStatus(taskObject, optType)); } //任务下发 else if(StatusEnum.TASK_PUBLISH.getCode().equals(optType)) { - return SpeMachineryTask.createTask(taskObject); + return RestBusinessTemplate.execute(() -> SpeMachineryTask.createTask(taskObject)); } else{ - return null; + return RestBusinessTemplate.execute(() -> "1"); } } @@ -216,7 +229,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ map.put("update_optname", nickName); map.put("update_time", DateUtil.now()); int result = (WQLObject.getWQLObject("sch_base_task").update(map, "task_id = '" + taskObj.getString("task_id") + "'").getSucess()); - return Integer.toString(result); + return String.valueOf(result); } @Override @@ -358,9 +371,6 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ json.put("vehicle_code", vehicle_code); json.put("cacheLine_code", cacheLine_code); json.put("material_id", meObj.getString("material_id")); - json.put("material_code", meObj.getString("material_code")); - json.put("material_spec", meObj.getString("material_spec")); - json.put("material_name", meObj.getString("material_name")); json.put("weight", weight); json.put("quantity", quantity); json.put("workprocedure_code", wpObj.getString("workprocedure_code")); @@ -395,9 +405,6 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ JSONObject json = ivtTab.query("vehicle_code = '" + vehicle_code + "'").uniqueResult(0); json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); json.put("material_id", ""); - json.put("material_code", ""); - json.put("material_spec", ""); - json.put("material_name", ""); json.put("weight", "0"); json.put("quantity", "0"); json.put("workprocedure_code", ""); @@ -425,9 +432,11 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ /** * 出入空箱,出入类型 inOut_type 1 入空箱 2 出空箱 缓存线编码 wcsdevice_code 料箱码 vehicle_code + * + * @return */ @Override - public String inOutEmptyBox(JSONObject param) { + public CommonResult inOutEmptyBox(JSONObject param) { String inOut_type = param.getString("inOut_type"); String cacheLine_code = param.getString("wcsdevice_code"); String vehicle_code = param.getString("vehicle_code"); @@ -469,7 +478,8 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ // 删除掉出库的箱子及关联物料 result = vehMaterTab.delete("cacheLine_code = '" + cacheLine_code + "' and vehicle_code = '" + vehicle_code + "'").getSucess(); } - return Integer.toString(result); + int finalResult = result; + return RestBusinessTemplate.execute(() -> finalResult); } /** @@ -538,9 +548,11 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ * 缓存线编码 wcsdevice_code * 缓存线位置编码 position_code * 料箱码 vehicle_code + * + * @return */ @Override - public Map inOutExceptionInstConfirm(JSONObject param) { + public CommonResult inOutExceptionInstConfirm(JSONObject param) { // 1 扫码异常-入箱扫码 2 扫码异常-出箱扫码 String inOut_type = param.getString("inOut_type"); // 缓存线编码 @@ -563,12 +575,8 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ jsonArray.add(jsonObject); try { //TOFIX 等确定api后,换成下发的url - //return AcsUtil.notifyAcs("/api/cacheLineHand", jsonArray); - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "操作成功!"); - result.put("data", new JSONObject()); - return result; + // return AcsUtil.notifyAcs("/api/cacheLineHand", jsonArray); + return RestBusinessTemplate.execute(() -> new JSONObject()); } catch(NullPointerException e) { throw new BadRequestException(e.toString()); @@ -576,7 +584,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ } @Override - public Map cacheLineExcepOpt(JSONObject param) { + public CommonResult cacheLineExcepOpt(JSONObject param) { // 缓存线编码 String wcsdevice_code = param.getString("wcsdevice_code"); // opt_type 1-暂停、2-启动,默认为1暂停 @@ -595,11 +603,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ try { //TOFIX 等确定api后,换成下发的url //return AcsUtil.notifyAcs("/api/cacheLineHand", jsonArray); - JSONObject result = new JSONObject(); - result.put("status", HttpStatus.OK.value()); - result.put("message", "操作成功!"); - result.put("data", new JSONObject()); - return result; + return RestBusinessTemplate.execute(() -> new JSONObject()); } catch(NullPointerException e) { throw new BadRequestException(e.toString()); @@ -634,7 +638,13 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ if(StringUtils.isEmpty(posiObj.getString("task_id"))) { throw new BadRequestException("未找到该缓存线的点位的任务信息!"); } - return WQL.getWO("PDA_QUERY").addParam("flag", "10").addParam("task_id", posiObj.getString("task_id")).process().getResultJSONArray(0); + JSONArray jsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "10").addParam("task_id", posiObj.getString("task_id")).process().getResultJSONArray(0); + //缓存线编码 + for(int i = 0; i < jsonArray.size(); i++) { + JSONObject row = jsonArray.getJSONObject(i); + row.put("wcsdevice_code", wcsdevice_code); + } + return jsonArray; } /** @@ -643,9 +653,11 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ * 缓存线位置编码 wcsdevice_code * 缓存线点位编码 position_code * 料箱码 vehicle_code + * + * @return */ @Override - public String cacheLineOutBoxExceptionConfirm(JSONObject param) { + public CommonResult cacheLineOutBoxExceptionConfirm(JSONObject param) { String inOut_type = param.getString("inOut_type"); String cacheLine_code = param.getString("wcsdevice_code"); String position_code = param.getString("position_code"); @@ -655,11 +667,11 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ // 缓存线载具物料表 WQLObject ivtTab = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); //1.确定缓存线点位 - JSONObject vehiobj = positionTab.query("position_code = " + position_code + " and cacheLine_code like '%" + cacheLine_code + "%'").uniqueResult(0); + JSONObject vehiobj = positionTab.query("vehicle_code = '" + vehicle_code + "' and cacheLine_code = '" + cacheLine_code + "'").uniqueResult(0); //2.绑定新料箱条码(入满箱或者入空箱),设置缓存线点位不为空 vehiobj.put("vehicle_code", vehicle_code); vehiobj.put("is_empty", "0"); - positionTab.update(vehiobj); + positionTab.update(vehiobj, "position_code = '" + position_code + "'"); //3.删除入料箱之前的所有关联信息,包括物料,工序,生产区域 ivtTab.delete("vehicle_code = '" + vehicle_code + "'"); //4.初始化料箱 @@ -690,9 +702,6 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ } //6.重新新建该缓存线位置上的料箱为满箱及所属工序,生产区域等信息 json.put("material_id", meObj.getString("material_id")); - json.put("material_code", meObj.getString("material_code")); - json.put("material_spec", meObj.getString("material_spec")); - json.put("material_name", meObj.getString("material_name")); json.put("quantity", instructObj.getString("material_qty")); json.put("product_area", instructObj.getString("product_area")); json.put("vehicle_status", StatusEnum.CACHE_VEL_EMT.getCode()); @@ -701,18 +710,14 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ if(StatusEnum.OUT_VEHICLE.getCode().equals(inOut_type)) { //5.重新新建该缓存线位置上的料箱为空箱子,是空料箱没有放物料等其他信息 json.put("vehicle_status", StatusEnum.STATUS_TRUE.getCode()); - json.put("material_uuid", ""); - json.put("material_code", ""); - json.put("material_spec", ""); - json.put("material_name", ""); + json.put("material_id", ""); json.put("weight", "0"); json.put("quantity", "0"); json.put("workprocedure_code", ""); json.put("workprocedure_name", ""); json.put("product_area", ""); } - int result = ivtTab.insert(json).getSucess(); - return Integer.toString(result); + return RestBusinessTemplate.execute(() -> ivtTab.insert(json).getSucess()); } /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql index ea2b333f..b752e9b5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/wql/PDA_QUERY.wql @@ -230,7 +230,7 @@ task.task_id as instruct_uuid, task.task_code as instructoperate_num, task.task_name as mes_no, - task.vehicle_code as invehicle_code, + task.vehicle_code, task.vehicle_code2 as outvehicle_code, task.create_time, dict.label as status_name, @@ -246,7 +246,7 @@ left join md_me_materialbase mater on task.material_id = mater.material_id left join sys_dict dict on dict.`value` = task.task_status and dict.`code` = 'task_status' - WHERE task.is_delete = '0' + WHERE task.is_delete = '0' OPTION 输入.status <> "" find_in_set(task.task_status,输入.status) ENDOPTION @@ -270,7 +270,7 @@ ENDOPTION OPTION 输入.end_date <> "" task.create_time <= 输入.end_date - ENDOPTION + ENDOPTION ORDER BY task.create_time ENDSELECT ENDPAGEQUERY ENDIF diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml index 1e901c3b..86ba9ddd 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -172,6 +172,7 @@ sa-token: cookie: # 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com domain: + is-read-cookie: false #jetcache: # defaultCacheType: LOCAL