diff --git a/src/main/java/com/lz/common/utils/StringUtil.java b/src/main/java/com/lz/common/utils/StringUtil.java index b8fc0456..44765039 100644 --- a/src/main/java/com/lz/common/utils/StringUtil.java +++ b/src/main/java/com/lz/common/utils/StringUtil.java @@ -10,456 +10,446 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; /** - * - * @类描述:字符串工具类 * @author 陈金虎 2017年1月16日 下午11:43:50 + * @类描述:字符串工具类 * @注意:本内容仅限于杭州霖梓网络科技有限公司内部传阅,禁止外泄以及用于其他的商业目的 */ public class StringUtil extends StringUtils { - public static final Long INVITE_START_VALUE = 16796251L; + public static final Long INVITE_START_VALUE = 16796251L; - private static final String COMMA = ","; - private static final String[] DUOTRIKEY = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V" }; - private static final String[] CARDINALNUM = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; - private static final String[] NUMBERS = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; - /** - * 通过StringBuffer来组装字符串 - * - * @param strings - * @return - */ - public static String appendStrs(Object... strings) { - StringBuffer sb = new StringBuffer(); - for (Object str : strings) { - sb.append(str); - } - return sb.toString(); - } + private static final String COMMA = ","; + private static final String[] DUOTRIKEY = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V"}; + private static final String[] CARDINALNUM = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}; + private static final String[] NUMBERS = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}; - /** - * 判断所有传入参数是否非空,当传入参数长度为0,或者任意有一个为空,则返回false,所有都非空,则返回true - * - * @param strArr - * @return - */ - public static boolean isAllNotEmpty(String... strArr) { - boolean isAllNotEmpty = true; - if (strArr == null || strArr.length < 1) { - isAllNotEmpty = false; - return isAllNotEmpty; - } + /** + * 通过StringBuffer来组装字符串 + * + * @param strings + * @return + */ + public static String appendStrs(Object... strings) { + StringBuffer sb = new StringBuffer(); + for (Object str : strings) { + sb.append(str); + } + return sb.toString(); + } - for (String str : strArr) { - if (str == null || str.length() == 0) { - isAllNotEmpty = false; - break; - } - } - return isAllNotEmpty; - } + /** + * 判断所有传入参数是否非空,当传入参数长度为0,或者任意有一个为空,则返回false,所有都非空,则返回true + * + * @param strArr + * @return + */ + public static boolean isAllNotEmpty(String... strArr) { + boolean isAllNotEmpty = true; + if (strArr == null || strArr.length < 1) { + isAllNotEmpty = false; + return isAllNotEmpty; + } - /** - * 把list按分隔符转换成字符串 - * - * @param strList - * list数据 - * @param separator - * 分隔符 - * @return - */ - public static String turnListToStr(Collection strList, String separator) { - String result = ""; - if (strList == null || strList.size() < 1) { - return result; - } - if (separator == null) { - separator = ","; - } + for (String str : strArr) { + if (str == null || str.length() == 0) { + isAllNotEmpty = false; + break; + } + } + return isAllNotEmpty; + } - for (String item : strList) { - result = result + separator + item; - } - return result.substring(separator.length()); - } + /** + * 把list按分隔符转换成字符串 + * + * @param strList list数据 + * @param separator 分隔符 + * @return + */ + public static String turnListToStr(Collection strList, String separator) { + String result = ""; + if (strList == null || strList.size() < 1) { + return result; + } + if (separator == null) { + separator = ","; + } - /** - * 把字符串数组按分隔符转化成字符串 - * - * @param strArr - * 字符串数组 - * @param separator - * 分隔符 - * @return - */ - public static String turnArrayToStr(String separator, String... strArr) { - String result = ""; - if (strArr == null || strArr.length < 1) { - return result; - } - if (separator == null) { - separator = ","; - } + for (String item : strList) { + result = result + separator + item; + } + return result.substring(separator.length()); + } - for (String item : strArr) { - result = result + separator + item; - } - return result.substring(separator.length()); - } + /** + * 把字符串数组按分隔符转化成字符串 + * + * @param strArr 字符串数组 + * @param separator 分隔符 + * @return + */ + public static String turnArrayToStr(String separator, String... strArr) { + String result = ""; + if (strArr == null || strArr.length < 1) { + return result; + } + if (separator == null) { + separator = ","; + } - public static String strToSecret(String str, int left, int right) { - StringBuffer sb = new StringBuffer(); - int len = str.length() - left - right; - if (len > 0) { - sb.append(str.substring(0, left)); - for (int i = 0; i < len; i++) { - sb.append("*"); - } - sb.append(str.substring(str.length() - right)); - } else { - return str; - } - return sb.toString(); - } + for (String item : strArr) { + result = result + separator + item; + } + return result.substring(separator.length()); + } + + public static String strToSecret(String str, int left, int right) { + StringBuffer sb = new StringBuffer(); + int len = str.length() - left - right; + if (len > 0) { + sb.append(str.substring(0, left)); + for (int i = 0; i < len; i++) { + sb.append("*"); + } + sb.append(str.substring(str.length() - right)); + } else { + return str; + } + return sb.toString(); + } - public static String getNotEmptyString(String str) { - return StringUtils.isNotEmpty(str) ? str : StringUtils.EMPTY; - } + public static String getNotEmptyString(String str) { + return StringUtils.isNotEmpty(str) ? str : StringUtils.EMPTY; + } - public static String getLastString(String str, int num) { - int len = str.length(); - if (len <= num) { - return str; - } else { - return str.substring(len - num); - } - } + public static String getLastString(String str, int num) { + int len = str.length(); + if (len <= num) { + return str; + } else { + return str.substring(len - num); + } + } - public static List splitToList(String source, String sep) { - List result = new ArrayList(); - if (isBlank(source)) { - return result; - } - String[] tempResult = source.split(sep); - for (String item : tempResult) { - result.add(item); - } - return result; - } + public static List splitToList(String source, String sep) { + List result = new ArrayList(); + if (isBlank(source)) { + return result; + } + String[] tempResult = source.split(sep); + for (String item : tempResult) { + result.add(item); + } + return result; + } - /** - * @方法描述:将字符串中的emoji符号转换为* - * - * @author huyang 2017年4月6日下午12:38:04 - * @param source - * 待处理字符串 - * @return - * @注意:本内容仅限于杭州霖梓网络科技有限公司内部传阅,禁止外泄以及用于其他的商业目的 - */ - public static String filterEmoji(String source) { - if (source != null) { - Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE); - Matcher emojiMatcher = emoji.matcher(source); - if (emojiMatcher.find()) { - source = emojiMatcher.replaceAll("*"); - return source; - } - return source; - } - return source; - } + /** + * @param source 待处理字符串 + * @return + * @方法描述:将字符串中的emoji符号转换为* + * @author huyang 2017年4月6日下午12:38:04 + * @注意:本内容仅限于杭州霖梓网络科技有限公司内部传阅,禁止外泄以及用于其他的商业目的 + */ + public static String filterEmoji(String source) { + if (source != null) { + Pattern emoji = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE); + Matcher emojiMatcher = emoji.matcher(source); + if (emojiMatcher.find()) { + source = emojiMatcher.replaceAll("*"); + return source; + } + return source; + } + return source; + } - public static String null2Str(Object str) { - return (str != null) ? str.toString() : ""; - } + public static String null2Str(Object str) { + return (str != null) ? str.toString() : ""; + } - public static String logisticsInfoDeal(String str) { - if (str == null || "暂无".equals(str.trim())) { - return ""; - } - return str.trim(); - } + public static String logisticsInfoDeal(String str) { + if (str == null || "暂无".equals(str.trim())) { + return ""; + } + return str.trim(); + } - /** - * @Title: UrlEncoder - * @Description: 字符串编码 - * @param sStr - * @return - */ - public final static String UrlEncoder(String sStr) { - String sReturnCode = ""; - try { - sReturnCode = URLEncoder.encode(null2Str(sStr), "utf-8"); - } catch (Exception ex) { - } - return sReturnCode; - } + /** + * @param sStr + * @return + * @Title: UrlEncoder + * @Description: 字符串编码 + */ + public final static String UrlEncoder(String sStr) { + String sReturnCode = ""; + try { + sReturnCode = URLEncoder.encode(null2Str(sStr), "utf-8"); + } catch (Exception ex) { + } + return sReturnCode; + } - /** - * @Title: UrlDecoder - * @Description: 字符串解码 - * @param sStr - * @return - */ - public static String UrlDecoder(String sStr) { - if (isEmpty(sStr)) { - return ""; - } else { - String sReturnCode = sStr; - try { - sReturnCode = URLDecoder.decode(sStr, "utf-8"); - } catch (Exception e) { - } - return sReturnCode; - } - } + /** + * @param sStr + * @return + * @Title: UrlDecoder + * @Description: 字符串解码 + */ + public static String UrlDecoder(String sStr) { + if (isEmpty(sStr)) { + return ""; + } else { + String sReturnCode = sStr; + try { + sReturnCode = URLDecoder.decode(sStr, "utf-8"); + } catch (Exception e) { + } + return sReturnCode; + } + } - /** - * fmai - * 获取第三方订单号 - * - * @param type 类型标识(固定3位)如:强风控 type="qfk" - * @Param thirdMark 第三方标识,比如风控R,ups为U,YiBao为Y,M為魔蝎 - */ - public static String getThirdNo(String type, String thirdMark, Long userId) { + /** + * fmai + * 获取第三方订单号 + * + * @param type 类型标识(固定3位)如:强风控 type="qfk" + * @Param thirdMark 第三方标识,比如风控R,ups为U,YiBao为Y,M為魔蝎 + */ + public static String getThirdNo(String type, String thirdMark, Long userId) { /*if (StringUtil.isBlank(type) || type.length() != 3) { throw new LtException(LtExceptionCode.UPS_ORDERNO_BUILD_ERROR); }*/ - if(userId != null){ - return StringUtil.appendStrs(type, thirdMark, getTimeStr(), getUniqueCode(userId)); - }else{ - return StringUtil.appendStrs(type, thirdMark, getTimeStr(), getFiveRandomNum()); - } - } + if (userId != null) { + return StringUtil.appendStrs(type, thirdMark, getTimeStr(), getUniqueCode(userId)); + } else { + return StringUtil.appendStrs(type, thirdMark, getTimeStr(), getFiveRandomNum()); + } + } - /** - * 获取唯一编码 - * - * @param userId - * @return - */ - public static String getUniqueCode(Long userId) { - return Long.toString((userId +INVITE_START_VALUE ), 64); - } + /** + * 获取唯一编码 + * + * @param userId + * @return + */ + public static String getUniqueCode(Long userId) { + return Long.toString((userId + INVITE_START_VALUE), 64); + } - /** - * fmai 根据基数产生随机四位数 - * - * @return - */ - public static String getFourRandomNum() { - StringBuilder randomNum = new StringBuilder(); - int length = CARDINALNUM.length; - Random random = new Random(); - for (int i = 0; i < 4; i++) { - randomNum.append(CARDINALNUM[random.nextInt(length)]); - } - return randomNum.toString(); - } + /** + * fmai 根据基数产生随机四位数 + * + * @return + */ + public static String getFourRandomNum() { + StringBuilder randomNum = new StringBuilder(); + int length = CARDINALNUM.length; + Random random = new Random(); + for (int i = 0; i < 4; i++) { + randomNum.append(CARDINALNUM[random.nextInt(length)]); + } + return randomNum.toString(); + } - /** - * fmai 根据基数产生随机5位数 - * - * @return - */ - public static String getFiveRandomNum() { - StringBuilder randomNum = new StringBuilder(); - int length = CARDINALNUM.length; - Random random = new Random(); - for (int i = 0; i < 5; i++) { - randomNum.append(CARDINALNUM[random.nextInt(length)]); - } - return randomNum.toString(); - } + /** + * fmai 根据基数产生随机5位数 + * + * @return + */ + public static String getFiveRandomNum() { + StringBuilder randomNum = new StringBuilder(); + int length = CARDINALNUM.length; + Random random = new Random(); + for (int i = 0; i < 5; i++) { + randomNum.append(CARDINALNUM[random.nextInt(length)]); + } + return randomNum.toString(); + } + /** + * fmai 根据时间数据生产相应的字符串 + * + * @return + */ + public static String getTimeStr() { + StringBuilder timeStr = new StringBuilder(); + timeStr.append(toBinaryByTime()); + timeStr.append(DateUtils.formatDate(new Date(), "mmssSSS")); + return timeStr.toString(); + } - /** - * fmai 根据时间数据生产相应的字符串 - * - * @return - */ - public static String getTimeStr() { - StringBuilder timeStr = new StringBuilder(); - timeStr.append(toBinaryByTime()); - timeStr.append(DateUtils.formatDate(new Date(), "mmssSSS")); - return timeStr.toString(); - } - - /** - * fmai 根据日期年月日时生成对应的32进制字符串 - * - * @return - */ - public static String toBinaryByTime() { - StringBuilder binary = new StringBuilder(); - Calendar cal = Calendar.getInstance(); - int year = (cal.get(Calendar.YEAR) - 2000) % 32; - int month = cal.get(Calendar.MONTH) + 1; - int day = cal.get(Calendar.DATE); - int hour = cal.get(Calendar.HOUR_OF_DAY); - binary.append(DUOTRIKEY[year]).append(DUOTRIKEY[month]).append(DUOTRIKEY[day]).append(DUOTRIKEY[hour]); - return binary.toString(); - } + /** + * fmai 根据日期年月日时生成对应的32进制字符串 + * + * @return + */ + public static String toBinaryByTime() { + StringBuilder binary = new StringBuilder(); + Calendar cal = Calendar.getInstance(); + int year = (cal.get(Calendar.YEAR) - 2000) % 32; + int month = cal.get(Calendar.MONTH) + 1; + int day = cal.get(Calendar.DATE); + int hour = cal.get(Calendar.HOUR_OF_DAY); + binary.append(DUOTRIKEY[year]).append(DUOTRIKEY[month]).append(DUOTRIKEY[day]).append(DUOTRIKEY[hour]); + return binary.toString(); + } - - /** - * 首字母大写 - * - * @param s - * @return - */ - public static String firstCharUpperCase(String s) { - StringBuffer sb = new StringBuffer(s.substring(0, 1).toUpperCase()); - sb.append(s.substring(1, s.length())); - return sb.toString(); - } + /** + * 首字母大写 + * + * @param s + * @return + */ + public static String firstCharUpperCase(String s) { + StringBuffer sb = new StringBuffer(s.substring(0, 1).toUpperCase()); + sb.append(s.substring(1, s.length())); + return sb.toString(); + } - /** - * 字符串空处理,去除首尾空格 如果str为null,返回"",否则返回str - * - * @param str - * @return - */ - public static String isNull(String str) { - if (str == null) { - return ""; - } - return str.trim(); - } + /** + * 字符串空处理,去除首尾空格 如果str为null,返回"",否则返回str + * + * @param str + * @return + */ + public static String isNull(String str) { + if (str == null) { + return ""; + } + return str.trim(); + } - - /** - * 将对象转为字符串 - * - * @param o - * @return - */ - public static String isNull(Object o) { - if (o == null) { - return ""; - } - String str = ""; - if (o instanceof String) { - str = (String) o; - } else { - str = o.toString(); - } - return str.trim(); - } + /** + * 将对象转为字符串 + * + * @param o + * @return + */ + public static String isNull(Object o) { + if (o == null) { + return ""; + } + String str = ""; + if (o instanceof String) { + str = (String) o; + } else { + str = o.toString(); + } + return str.trim(); + } - - public static String removeDoubleChar(String str){ - if(str.indexOf("\"")==0) { - str = str.substring(1, str.length()); //去掉第一个 " - } - if(str.lastIndexOf("\"")==(str.length()-1)) { - str = str.substring(0, str.length() - 1); //去掉最后一个 " - } - return str; - } + public static String removeDoubleChar(String str) { + if (str.indexOf("\"") == 0) { + str = str.substring(1, str.length()); //去掉第一个 " + } + if (str.lastIndexOf("\"") == (str.length() - 1)) { + str = str.substring(0, str.length() - 1); //去掉最后一个 " + } + return str; + } + /** + * 通过请求参数获取键值对 + * + * @param requestParams + * @return + */ + public static Map getRequestParams(Map requestParams) { + Map params = new HashMap(); + for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) { + String name = (String) iter.next(); + String[] values = (String[]) requestParams.get(name); + String valueStr = ""; + for (int i = 0; i < values.length; i++) { + valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ","; + } + params.put(name, valueStr); + } + return params; + } - /** - * 通过请求参数获取键值对 - * @param requestParams - * @return - */ - public static Map getRequestParams(Map requestParams) { - Map params = new HashMap(); - for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { - String name = (String) iter.next(); - String[] values = (String[]) requestParams.get(name); - String valueStr = ""; - for (int i = 0; i < values.length; i++) { - valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ","; - } - params.put(name, valueStr); - } - return params; - } + /** + * 除去数组中的空值和签名参数 + * + * @param sArray 签名参数组 + * @return 去掉空值与签名参数后的新签名参数组 + */ + public static Map paraFilter(Map sArray) { + + Map result = new HashMap(); + + if (sArray == null || sArray.size() <= 0) { + return result; + } + for (String key : sArray.keySet()) { + String value = sArray.get(key); + if (value == null || value.equals("") || key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("signInfo") + || key.equalsIgnoreCase("sign_type")) { + continue; + } + result.put(key, value); + } - /** - * 除去数组中的空值和签名参数 - * @param sArray 签名参数组 - * @return 去掉空值与签名参数后的新签名参数组 - */ - public static Map paraFilter(Map sArray) { + return result; + } - Map result = new HashMap(); + /** + * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串 + * + * @param params 需要排序并参与字符拼接的参数组 + * @return 拼接后字符串 + */ + public static String createLinkString(Map params) { - if (sArray == null || sArray.size() <= 0) { - return result; - } + List keys = new ArrayList(params.keySet()); + Collections.sort(keys); + + String prestr = ""; + + for (int i = 0; i < keys.size(); i++) { + String key = keys.get(i); + String value = params.get(key); + + if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符 + prestr = prestr + key + "=" + value; + } else { + prestr = prestr + key + "=" + value + "&"; + } + } + return prestr; + } - for (String key : sArray.keySet()) { - String value = sArray.get(key); - if (value == null || value.equals("") || key.equalsIgnoreCase("sign") || key.equalsIgnoreCase("signInfo") - || key.equalsIgnoreCase("sign_type")) { - continue; - } - result.put(key, value); - } - - return result; - } - - /** - * 把数组所有元素排序,并按照“参数=参数值”的模式用“&”字符拼接成字符串 - * @param params 需要排序并参与字符拼接的参数组 - * @return 拼接后字符串 - */ - public static String createLinkString(Map params) { - - List keys = new ArrayList(params.keySet()); - Collections.sort(keys); - - String prestr = ""; - - for (int i = 0; i < keys.size(); i++) { - String key = keys.get(i); - String value = params.get(key); - - if (i == keys.size() - 1) {//拼接时,不包括最后一个&字符 - prestr = prestr + key + "=" + value; - } else { - prestr = prestr + key + "=" + value + "&"; - } - } - return prestr; - } - - - /** - * 以逗号隔开的元素 - * - * @param value - * @param i - * @return - */ - public static String getSpitStr(String value, int i) { - String values[] = value.split(",", value.length()); - if (i == 0) { - i = i + 1; - } - if (values.length >= i) { - return values[i - 1]; - } else { - return values[0]; - } - } + /** + * 以逗号隔开的元素 + * + * @param value + * @param i + * @return + */ + public static String getSpitStr(String value, int i) { + String values[] = value.split(",", value.length()); + if (i == 0) { + i = i + 1; + } + if (values.length >= i) { + return values[i - 1]; + } else { + return values[0]; + } + } /** * fmai 根据时间数据生产相应的字符串 @@ -496,182 +486,201 @@ public class StringUtil extends StringUtils { public static StringBuffer appendSb(String... strs) { - StringBuffer stringBuffer = new StringBuffer(); - if (strs!= null && strs.length > 0){ - for (int i =0; i< strs.length; i++) { - stringBuffer.append(strs[i]); - } - } - return stringBuffer; - } + StringBuffer stringBuffer = new StringBuffer(); + if (strs != null && strs.length > 0) { + for (int i = 0; i < strs.length; i++) { + stringBuffer.append(strs[i]); + } + } + return stringBuffer; + } - /** - * 截取一个字符串中两个字符串中间的字符串 - * @param str - * @param strStart - * @param strEnd - * @return - */ - public static String subMidString(String str, String strStart, String strEnd) { + /** + * 截取一个字符串中两个字符串中间的字符串 + * + * @param str + * @param strStart + * @param strEnd + * @return + */ + public static String subMidString(String str, String strStart, String strEnd) { /* 找出指定的2个字符在 该字符串里面的 位置 */ - int strStartIndex = str.indexOf(strStart); - int strEndIndex = str.indexOf(strEnd); + int strStartIndex = str.indexOf(strStart); + int strEndIndex = str.indexOf(strEnd); /* index 为负数 即表示该字符串中 没有该字符 */ - if (strStartIndex < 0) { - return "字符串 :---->" + str + "<---- 中不存在 " + strStart + ", 无法截取目标字符串"; - } - if (strEndIndex < 0) { - return "字符串 :---->" + str + "<---- 中不存在 " + strEnd + ", 无法截取目标字符串"; - } + if (strStartIndex < 0) { + return "字符串 :---->" + str + "<---- 中不存在 " + strStart + ", 无法截取目标字符串"; + } + if (strEndIndex < 0) { + return "字符串 :---->" + str + "<---- 中不存在 " + strEnd + ", 无法截取目标字符串"; + } /* 开始截取 */ - String result = str.substring(strStartIndex, strEndIndex).substring(strStart.length()); - return result; - } + String result = str.substring(strStartIndex, strEndIndex).substring(strStart.length()); + return result; + } - public static boolean getClassName(String className) { - return false; - } + public static boolean getClassName(String className) { + return false; + } - /** - * Object转换String - * @param obj - * @return - */ - public static String objToString(Object obj){ - if (null != obj) { - return String.valueOf(obj); - }else{ - return null; - } - } + /** + * Object转换String + * + * @param obj + * @return + */ + public static String objToString(Object obj) { + if (null != obj) { + return String.valueOf(obj); + } else { + return null; + } + } - /** - * 手机号的粗略校验(要求严谨时,慎用) - * @param inputStr - * @return - */ - public static boolean validateMblNo(String inputStr) { - boolean isValid = false; - Pattern pattern = Pattern.compile(Constant.REGEX_MOBILE); - Matcher matcher = pattern.matcher(inputStr); - if (matcher.matches()) { - isValid = true; - } - return isValid; - } + /** + * 手机号的粗略校验(要求严谨时,慎用) + * + * @param inputStr + * @return + */ + public static boolean validateMblNo(String inputStr) { + boolean isValid = false; + Pattern pattern = Pattern.compile(Constant.REGEX_MOBILE); + Matcher matcher = pattern.matcher(inputStr); + if (matcher.matches()) { + isValid = true; + } + return isValid; + } - public static boolean isMobileNO(String mobiles) { + public static boolean isMobileNO(String mobiles) { - Pattern p = Pattern.compile("^((1[3-9][0-9]))\\d{8}$"); - Matcher m = p.matcher(mobiles); - return m.matches(); - } + Pattern p = Pattern.compile("^((1[3-9][0-9]))\\d{8}$"); + Matcher m = p.matcher(mobiles); + return m.matches(); + } - /** - * 将String转换成列表(分隔符为 ,) - * - * @param strs 字符串 - * @return 列表 - */ - public static List strs2list(String strs) { - return strs2list(strs,","); - } - /** - * 根据分隔符获取Long型的集合 - * @param listStr - * @param symbol - * @return - */ - public static List strs2list(String listStr,String symbol){ - List iddList = CollectionConverterUtil.convertToListFromArray(listStr.split(symbol), new Converter() { - @Override - public Long convert(String source) { - return Long.parseLong(source); - } - }); - return iddList; - } + /** + * 将String转换成列表(分隔符为 ,) + * + * @param strs 字符串 + * @return 列表 + */ + public static List strs2list(String strs) { + return strs2list(strs, ","); + } - public static String mobileEncrypt(String mobile) { - if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) { - return mobile; - } - return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); - } + /** + * 根据分隔符获取Long型的集合 + * + * @param listStr + * @param symbol + * @return + */ + public static List strs2list(String listStr, String symbol) { + List iddList = CollectionConverterUtil.convertToListFromArray(listStr.split(symbol), new Converter() { + @Override + public Long convert(String source) { + return Long.parseLong(source); + } + }); + return iddList; + } - /** - * 将字符串的首字母转大写 - * @param str 需要转换的字符串 - * @return - */ - public static String captureName(String str) { - // 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作 - char[] cs=str.toCharArray(); - cs[0]-=32; - return String.valueOf(cs); - } + public static String mobileEncrypt(String mobile) { + if (StringUtils.isEmpty(mobile) || (mobile.length() != 11)) { + return mobile; + } + return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); + } - public static String decodeBase64(String res) { - if (StringUtil.isBlank(res)) { - return null; - } - try { - return new String(Base64.getDecoder().decode(res), "UTF-8"); - } catch (UnsupportedEncodingException e) { - e.printStackTrace(); - } - return null; - } + /** + * 将字符串的首字母转大写 + * + * @param str 需要转换的字符串 + * @return + */ + public static String captureName(String str) { + // 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作 + char[] cs = str.toCharArray(); + cs[0] -= 32; + return String.valueOf(cs); + } + + public static String decodeBase64(String res) { + if (StringUtil.isBlank(res)) { + return null; + } + try { + return new String(Base64.getDecoder().decode(res), "UTF-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + return null; + } public static String removeHtml(String html) { - if(StringUtil.isBlank(html)){ - return null; - } - return html.replaceAll("\\<.*?>",""); + if (StringUtil.isBlank(html)) { + return null; + } + return html.replaceAll("\\<.*?>", ""); } - public static String realNameTo2(String value) { - if(StringUtil.isBlank(value)){ - return ""; - } - if(value.length() > 2 ){ - return value.substring(value.length()-2); - } - return value; - } - public static void main(String[] args) { + public static String realNameTo2(String value) { + if (StringUtil.isBlank(value)) { + return ""; + } + if (value.length() > 2) { + return value.substring(value.length() - 2); + } + return value; + } - System.out.println(realNameTo2("xxxxx")); - } + public static void main(String[] args) { - /** - * fmai 根据基数产生随机5位数 - * - * @return - */ - public static String getRandomNum(int count) { - StringBuilder randomNum = new StringBuilder(); - int length = NUMBERS.length; - Random random = new Random(); - for (int i = 0; i < count; i++) { - randomNum.append(NUMBERS[random.nextInt(length)]); - } - return randomNum.toString(); - } + System.out.println(realNameTo2("xxxxx")); + } - public static boolean in(Integer status, Integer ... is) { - if(is == null || is.length <= 0){ - return false; - } - for(Integer i:is){ - if(i.equals(status)){ - return true; - } - } - return false; + /** + * fmai 根据基数产生随机5位数 + * + * @return + */ + public static String getRandomNum(int count) { + StringBuilder randomNum = new StringBuilder(); + int length = NUMBERS.length; + Random random = new Random(); + for (int i = 0; i < count; i++) { + randomNum.append(NUMBERS[random.nextInt(length)]); + } + return randomNum.toString(); + } + + public static boolean in(Integer status, Integer... is) { + if (is == null || is.length <= 0) { + return false; + } + for (Integer i : is) { + if (i.equals(status)) { + return true; + } + } + return false; + } + + public static List strToLongs(String roleIds) { + List list = new ArrayList<>(); + if (StringUtil.isEmpty(roleIds)) { + return list; + } + String[] roleId = roleIds.split(","); + for (String r : roleId) { + list.add(NumberUtil.objToLongDefault(r, -1)); + } + return list; } } diff --git a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java index aecc36a3..55c07741 100644 --- a/src/main/java/com/lz/modules/app/controller/ResultRecordController.java +++ b/src/main/java/com/lz/modules/app/controller/ResultRecordController.java @@ -642,4 +642,12 @@ public class ResultRecordController extends AbstractController { } + + + + + + + + } diff --git a/src/main/java/com/lz/modules/app/controller/TestController.java b/src/main/java/com/lz/modules/app/controller/TestController.java index beb4c158..c175c875 100644 --- a/src/main/java/com/lz/modules/app/controller/TestController.java +++ b/src/main/java/com/lz/modules/app/controller/TestController.java @@ -257,4 +257,13 @@ public class TestController { } } + // http://localhost:8080/lz_management/test/resultrecord?resultRecordId=157 + @RequestMapping("/test/resultrecord") + public void resultRecorcd(Long resultRecordId) throws Exception{ + R r = resultRecordService.initFlowRecord(resultRecordId); + + + } + + } diff --git a/src/main/java/com/lz/modules/app/enums/FlowApprovalRoleTypeEnums.java b/src/main/java/com/lz/modules/app/enums/FlowApprovalRoleTypeEnums.java new file mode 100644 index 00000000..850b67b3 --- /dev/null +++ b/src/main/java/com/lz/modules/app/enums/FlowApprovalRoleTypeEnums.java @@ -0,0 +1,36 @@ +package com.lz.modules.app.enums; + +public enum FlowApprovalRoleTypeEnums { + + ME(-1,"自己"), + STAFF(0,"指定员工"), + ONE_SUPPER(1,"一级主管"), + TWO_SUPPER(2,"二级主管"), + THREE_SUPPER(3,"三级主管"), + FOUR_SUPPER(4,"四级主管"), + FIVE_SUPPER(5,"五级主管"); + + private Integer type; + private String desc ; + + FlowApprovalRoleTypeEnums(Integer type, String desc) { + this.type = type; + this.desc = desc; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/src/main/java/com/lz/modules/app/enums/FlowRecordStatusEnums.java b/src/main/java/com/lz/modules/app/enums/FlowRecordStatusEnums.java new file mode 100644 index 00000000..e4e38ece --- /dev/null +++ b/src/main/java/com/lz/modules/app/enums/FlowRecordStatusEnums.java @@ -0,0 +1,33 @@ +package com.lz.modules.app.enums; + +public enum FlowRecordStatusEnums { + + UN_TO_STATUS(0, "流程未到"), + FINISHED_STATUS(1, "流程已走"), + CURRENT_FLOW_STATUS(2, "当前流程"), + SKIP_STATUS(3, "跳过"); + + private Integer status; + private String desc ; + + FlowRecordStatusEnums(Integer name, String desc) { + this.status = name; + this.desc = desc; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/src/main/java/com/lz/modules/flow/dao/FlowApprovalRoleMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowApprovalRoleMapper.java index 434c6244..73b2fc0c 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowApprovalRoleMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowApprovalRoleMapper.java @@ -34,4 +34,6 @@ public interface FlowApprovalRoleMapper extends BaseMapper { Long insertFlowApprovalRoles(@Param("list") List flowApprovalRoles); + + List selectFlowApprovalRoleList(@Param("flowIds") List flowIds); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java index ca0ebd15..6a0f42e1 100644 --- a/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java +++ b/src/main/java/com/lz/modules/flow/dao/FlowRecordMapper.java @@ -58,4 +58,5 @@ public interface FlowRecordMapper extends BaseMapper { List selectFinishTasksByApprovalStaffId(@Param("approvalStaffId") Long approvalStaffId, @Param("page") IPage page); + void insertFlowRecords(@Param("flowRecords") List flowRecords); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/entity/FlowApprovalRole.java b/src/main/java/com/lz/modules/flow/entity/FlowApprovalRole.java index 60b2af53..db0eb52d 100644 --- a/src/main/java/com/lz/modules/flow/entity/FlowApprovalRole.java +++ b/src/main/java/com/lz/modules/flow/entity/FlowApprovalRole.java @@ -37,7 +37,7 @@ public class FlowApprovalRole implements java.io.Serializable { private Integer type; //审批人角色id @ApiModelProperty(value = "审批人角色id", name = "roleId") - private Long roleId; + private String roleId; //流程表id @ApiModelProperty(value = "流程表id", name = "flowId") private Long flowId; @@ -142,14 +142,14 @@ public class FlowApprovalRole implements java.io.Serializable { * 审批人角色id * @return */ - public Long getRoleId() { + public String getRoleId() { return roleId; } /** * 审批人角色id * @param roleId */ - public void setRoleId(Long roleId) { + public void setRoleId(String roleId) { this.roleId = roleId; } diff --git a/src/main/java/com/lz/modules/flow/model/FlowApprovalRoleDto.java b/src/main/java/com/lz/modules/flow/model/FlowApprovalRoleDto.java index f6b66496..85a882ed 100644 --- a/src/main/java/com/lz/modules/flow/model/FlowApprovalRoleDto.java +++ b/src/main/java/com/lz/modules/flow/model/FlowApprovalRoleDto.java @@ -23,7 +23,7 @@ public class FlowApprovalRoleDto { private Integer type; //审批人角色id @ApiModelProperty(value = "审批人角色id", name = "roleId") - private Long roleId; + private String roleId; //流程表id @ApiModelProperty(value = "流程表id", name = "flowId") private Long flowId; @@ -80,14 +80,14 @@ public class FlowApprovalRoleDto { * 审批人角色id * @return */ - public Long getRoleId() { + public String getRoleId() { return roleId; } /** * 审批人角色id * @param roleId */ - public void setRoleId(Long roleId) { + public void setRoleId(String roleId) { this.roleId = roleId; } diff --git a/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java b/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java index 93df5cc5..2b6de6e6 100644 --- a/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java +++ b/src/main/java/com/lz/modules/flow/model/StaffRoleDto.java @@ -28,6 +28,9 @@ public class StaffRoleDto { return JSON.toJSONString(staffRoleDtoList); } + + + public static void main(String[] args) { List staffRoleDtoList = new ArrayList<>(); StaffRoleDto staffRoleDto = new StaffRoleDto(314l,6l); diff --git a/src/main/java/com/lz/modules/flow/model/StaffRoles.java b/src/main/java/com/lz/modules/flow/model/StaffRoles.java new file mode 100644 index 00000000..f7752b2a --- /dev/null +++ b/src/main/java/com/lz/modules/flow/model/StaffRoles.java @@ -0,0 +1,30 @@ +package com.lz.modules.flow.model; + +import com.alibaba.fastjson.JSON; + +import java.util.*; + +public class StaffRoles { + + private Long staffId; + private List roleIds; + + public StaffRoles(Long staffId, List roleIds) { + this.staffId = staffId; + this.roleIds = roleIds; + } + + + public static String getStaffRole(Long staffId, List roloIds) { + Set set = new HashSet<>(); + for (Long roleId : roloIds) { + set.add(roleId); + } + + List list = new ArrayList<>(); + list.addAll(set); + Map> map = new HashMap<>(); + map.put(staffId + "", list ); + return JSON.toJSONString(map); + } +} diff --git a/src/main/java/com/lz/modules/flow/req/FlowApprovalRoleReq.java b/src/main/java/com/lz/modules/flow/req/FlowApprovalRoleReq.java index a938d59c..2a6951ed 100644 --- a/src/main/java/com/lz/modules/flow/req/FlowApprovalRoleReq.java +++ b/src/main/java/com/lz/modules/flow/req/FlowApprovalRoleReq.java @@ -46,7 +46,7 @@ public class FlowApprovalRoleReq implements java.io.Serializable { private Integer type; //审批人角色id @ApiModelProperty(value = "审批人角色id", name = "roleId") - private Long roleId; + private String roleId; //流程表id @ApiModelProperty(value = "流程表id", name = "flowId") private Long flowId; @@ -148,14 +148,14 @@ public class FlowApprovalRoleReq implements java.io.Serializable { * 审批人角色id * @return */ - public Long getRoleId() { + public String getRoleId() { return roleId; } /** * 审批人角色id * @param roleId */ - public void setRoleId(Long roleId) { + public void setRoleId(String roleId) { this.roleId = roleId; } diff --git a/src/main/java/com/lz/modules/flow/service/FlowApprovalRoleService.java b/src/main/java/com/lz/modules/flow/service/FlowApprovalRoleService.java index 7e785e81..776ae114 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowApprovalRoleService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowApprovalRoleService.java @@ -33,4 +33,6 @@ public interface FlowApprovalRoleService extends IService { Long insertFlowApprovalRoles(List flowApprovalRoles); + + List selectFlowApprovalRoleList(List flowIds); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java index 6f8086d9..7317a054 100644 --- a/src/main/java/com/lz/modules/flow/service/FlowRecordService.java +++ b/src/main/java/com/lz/modules/flow/service/FlowRecordService.java @@ -57,4 +57,6 @@ public interface FlowRecordService extends IService { Long copyFlowRecord(FlowRecord flowRecord); PageUtils selectTaskListByApprovalStaffId(AssessTaskReq req, Long approvalStaffId); + + void insertFlowRecords(List flowRecords); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowApprovalRoleServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowApprovalRoleServiceImpl.java index ed9229ed..e47b254f 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowApprovalRoleServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowApprovalRoleServiceImpl.java @@ -89,5 +89,12 @@ public class FlowApprovalRoleServiceImpl extends ServiceImpl selectFlowApprovalRoleList(List flowIds) { + + return flowApprovalRoleMapper.selectFlowApprovalRoleList(flowIds); + + } + } diff --git a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java index 73664d5d..f655c58c 100644 --- a/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/flow/service/impl/FlowRecordServiceImpl.java @@ -158,4 +158,9 @@ public class FlowRecordServiceImpl extends ServiceImpl flowRecords) { + flowRecordMapper.insertFlowRecords(flowRecords); + } } diff --git a/src/main/java/com/lz/modules/flow/service/ResultCalculateServiceImpl.java b/src/main/java/com/lz/modules/flow/service/impl/ResultCalculateServiceImpl.java similarity index 100% rename from src/main/java/com/lz/modules/flow/service/ResultCalculateServiceImpl.java rename to src/main/java/com/lz/modules/flow/service/impl/ResultCalculateServiceImpl.java diff --git a/src/main/java/com/lz/modules/performance/controller/FlowStartController.java b/src/main/java/com/lz/modules/performance/controller/FlowStartController.java index 002b9886..59282836 100644 --- a/src/main/java/com/lz/modules/performance/controller/FlowStartController.java +++ b/src/main/java/com/lz/modules/performance/controller/FlowStartController.java @@ -125,7 +125,8 @@ public class FlowStartController { if(flowStart1 == null){ flowStartService.insertFlowStart(flowStart); }else{ - flowStart = flowStart1; + + flowStart.setId(flowStart1.getId()); } @@ -257,34 +258,49 @@ public class FlowStartController { String[] optIds = flowChartDetailRecord.getOptIds().split(","); for (String id:optIds ) { - String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); + /*String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); for (String roleId:roleIds ) { FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); flowApprovalRole.setFlowId(flow.getId()); flowApprovalRole.setApprovalId(Long.parseLong(id)); flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(Long.parseLong(roleId)); + flowApprovalRole.setRoleId(roleId); flowApprovalRole.setType(flowChartDetailRecord.getOptType()); flowApprovalRoles.add(flowApprovalRole); flowApprovalRole.setStepIndex(stepIndex); - } + }*/ + FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setApprovalId(Long.parseLong(id)); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); } stepIndex++; }else{ - String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); + FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); + flowApprovalRole.setFlowId(flow.getId()); + flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); + flowApprovalRole.setRoleId(flowChartDetailRecord.getRoleIds()); + flowApprovalRole.setType(flowChartDetailRecord.getOptType()); + flowApprovalRoles.add(flowApprovalRole); + flowApprovalRole.setStepIndex(stepIndex); + /*String[] roleIds = flowChartDetailRecord.getRoleIds().split(","); for (String roleId:roleIds ) { FlowApprovalRole flowApprovalRole = new FlowApprovalRole(); flowApprovalRole.setFlowId(flow.getId()); flowApprovalRole.setStepType(flowChartDetailRecord.getStepType()); - flowApprovalRole.setRoleId(Long.parseLong(roleId)); + flowApprovalRole.setRoleId(roleId); flowApprovalRole.setType(flowChartDetailRecord.getOptType()); flowApprovalRoles.add(flowApprovalRole); flowApprovalRole.setStepIndex(stepIndex); - } + }*/ stepIndex++; } diff --git a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java index b6502a4d..15561f23 100644 --- a/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java +++ b/src/main/java/com/lz/modules/sys/service/app/ResultRecordService.java @@ -107,4 +107,5 @@ public interface ResultRecordService extends IService { void batchDeleteByStaffIds(List staffIds); + R initFlowRecord(Long resultRecordId); } \ No newline at end of file diff --git a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java index d4ba637a..d4939318 100644 --- a/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java +++ b/src/main/java/com/lz/modules/sys/service/app/impl/ResultRecordServiceImpl.java @@ -12,6 +12,8 @@ import com.lz.modules.app.dto.GraphicsStatisticalDto; import com.lz.modules.app.entity.DepartmentsEntity; import com.lz.modules.app.entity.DepartmentsStaffRelateEntity; import com.lz.modules.app.entity.StaffEntity; +import com.lz.modules.app.enums.FlowApprovalRoleTypeEnums; +import com.lz.modules.app.enums.FlowRecordStatusEnums; import com.lz.modules.app.req.ResultRecordReq; import com.lz.modules.app.resp.OwnResultResp; import com.lz.modules.app.resp.ResultRecordResp; @@ -21,10 +23,7 @@ import com.lz.modules.app.service.StaffService; import com.lz.modules.app.utils.t.TwoTuple; import com.lz.modules.flow.entity.*; import com.lz.modules.flow.enums.FlowRecordEnum; -import com.lz.modules.flow.model.Auth; -import com.lz.modules.flow.model.StaffRoleDto; -import com.lz.modules.flow.model.TypeFlowDto; -import com.lz.modules.flow.model.TypeRoleDto; +import com.lz.modules.flow.model.*; import com.lz.modules.flow.service.*; import com.lz.modules.job.business.DingtalkBusiness; import com.lz.modules.performance.req.AssessDetailReq; @@ -118,6 +117,9 @@ public class ResultRecordServiceImpl extends ServiceImpl staffIds) { } + + @Override + public R initFlowRecord(Long resultRecordId) { + ResultRecord resultRecord = resultRecordMapper.selectResultRecordById(resultRecordId); + List flows = flowService.selectByFlowId(resultRecord.getEvaluationId()); + List flowIds = new ArrayList<>(); + for(Flow flow:flows){ + flowIds.add(flow.getId()); + } + List flowApprovalRoles =flowApprovalRoleService.selectFlowApprovalRoleList(flowIds); + int i = 0 ; + DepartmentsStaffRelateEntity relateEntity = departmentsStaffRelateService.selectLastDepartmentByStaffId(resultRecord.getStaffId()); + Map map = departmentsService.selectUserAllDepartmentInFo(relateEntity.getDepartmentId()); + List flowRecords = new ArrayList<>(); + for(FlowApprovalRole flowApprovalRole:flowApprovalRoles){ + FlowRecord flowRecord = new FlowRecord(); + flowRecord.setRecordId(resultRecord.getId()); + StaffEntity staffEntity = new StaffEntity(); + if(FlowApprovalRoleTypeEnums.ME.getType().equals(flowApprovalRole.getType())){ + staffEntity = staffService.selectStaffById(resultRecord.getStaffId()); + }else if(FlowApprovalRoleTypeEnums.STAFF.getType().equals(flowApprovalRole.getType())){ + staffEntity = staffService.selectStaffById(flowApprovalRole.getApprovalId()); + }else if(FlowApprovalRoleTypeEnums.ONE_SUPPER.getType().equals(flowApprovalRole.getType())){ + staffEntity = getDepartmentStaff(map,1); + }else if(FlowApprovalRoleTypeEnums.TWO_SUPPER.getType().equals(flowApprovalRole.getType())){ + staffEntity = getDepartmentStaff(map,2); + }else if(FlowApprovalRoleTypeEnums.THREE_SUPPER.getType().equals(flowApprovalRole.getType())){ + staffEntity = getDepartmentStaff(map,3); + }else if(FlowApprovalRoleTypeEnums.FOUR_SUPPER.getType().equals(flowApprovalRole.getType())){ + staffEntity = getDepartmentStaff(map,4); + }else if(FlowApprovalRoleTypeEnums.FOUR_SUPPER.getType().equals(flowApprovalRole.getType())){ + staffEntity = getDepartmentStaff(map,5); + } + flowRecord.setApprovalStaffName(staffEntity.getName()); + flowRecord.setApprovalStaffId(staffEntity.getId()); + flowRecord.setFlowName(getFlow(flows,flowApprovalRole.getFlowId()).getOptDesc()); + flowRecord.setRecordStaffId(resultRecord.getStaffId()); + flowRecord.setFlowId(flowApprovalRole.getFlowId()); + String staffRole = StaffRoles.getStaffRole(staffEntity.getId(), StringUtil.strToLongs(flowApprovalRole.getRoleId())); + if(i == 0 ){ + flowRecord.setStatus(FlowRecordStatusEnums.CURRENT_FLOW_STATUS.getStatus()); + resultRecord.setFlowStaffIdRole(staffRole); + }else{ + flowRecord.setStatus(FlowRecordStatusEnums.UN_TO_STATUS.getStatus()); + } + flowRecord.setFlowStaffIdRole(staffRole); + flowRecord.setFlowIndex(flowApprovalRole.getStepIndex()); + flowRecord.setType(flowApprovalRole.getStepType()); //步骤类型0:依次,1:或签(同时通知,一人通过或拒绝即可),2会签(同时通知,所有人同意才可) + i ++; + flowRecords.add(flowRecord); + } + flowRecordService.insertFlowRecords(flowRecords); + resultRecordService.updateResultRecordById(resultRecord); + return R.ok(); + } + + public StaffEntity getDepartmentStaff(Map map, int level) { + for (int i = 1; i < 6; i++) { + String deparment = map.get("dd" + i ); + if (StringUtil.isNotBlank(deparment)) { + DepartmentsStaffRelateEntity departmentsStaffRelateEntity = departmentsStaffRelateService.selectDepartmentByDepartmentId(deparment); + if (departmentsStaffRelateEntity != null) { + StaffEntity staffEntity = staffService.selectStaffById(departmentsStaffRelateEntity.getStaffId()); + if (level == i) { + return staffEntity; + } + } + } + } + return new StaffEntity(); + + } + + public Flow getFlow(List flows,Long flowId){ + for(Flow flow : flows){ + if(flow.getId().equals(flowId)){ + return flow; + } + } + return new Flow(); + } } diff --git a/src/main/resources/mapper/flow/FlowApprovalRoleMapper.xml b/src/main/resources/mapper/flow/FlowApprovalRoleMapper.xml index 6a9fb89e..550f9995 100644 --- a/src/main/resources/mapper/flow/FlowApprovalRoleMapper.xml +++ b/src/main/resources/mapper/flow/FlowApprovalRoleMapper.xml @@ -118,5 +118,15 @@ ; + + + + diff --git a/src/main/resources/mapper/flow/FlowRecordMapper.xml b/src/main/resources/mapper/flow/FlowRecordMapper.xml index 17152bcf..5dab9091 100644 --- a/src/main/resources/mapper/flow/FlowRecordMapper.xml +++ b/src/main/resources/mapper/flow/FlowRecordMapper.xml @@ -108,6 +108,7 @@ ) + update lz_flow_record @@ -221,5 +222,44 @@ order by r.gmt_modified desc + + + insert into lz_flow_record( + department_level, + record_id, + approval_staff_id, + approval_staff_name, + flow_name, + record_staff_id, + flow_id, + flow_index, + status, + flow_staff_id_role, + status_name, + type, + is_delete, + gmt_create, + gmt_modified + )values + + ( #{ item.departmentLevel}, + #{ item.recordId}, + #{ item.approvalStaffId}, + #{ item.approvalStaffName}, + #{ item.flowName}, + #{ item.recordStaffId}, + #{ item.flowId}, + #{ item.flowIndex}, + #{ item.status}, + #{ item.flowStaffIdRole}, + #{ item.statusName}, + #{ item.type}, + 0, + now(), + now() + ) + + + diff --git a/src/test/java/com/lz/mysql/MysqlMain.java b/src/test/java/com/lz/mysql/MysqlMain.java index b7b7460d..f3e5c41d 100644 --- a/src/test/java/com/lz/mysql/MysqlMain.java +++ b/src/test/java/com/lz/mysql/MysqlMain.java @@ -96,7 +96,7 @@ public class MysqlMain { //list.add(new TablesBean("lz_flow_chart_detail_record")); //list.add(new TablesBean("lz_flow_approval_role")); - list.add(new TablesBean("lz_evaluation_group")); + list.add(new TablesBean("lz_flow_record")); List list2 = new ArrayList(); Map map = MysqlUtil2ShowCreateTable.getComments();