diff --git a/src_core/com/tenwa/flow/util/FlowUtil.java b/src_core/com/tenwa/flow/util/FlowUtil.java index f5a3c950e..56d84bfdf 100644 --- a/src_core/com/tenwa/flow/util/FlowUtil.java +++ b/src_core/com/tenwa/flow/util/FlowUtil.java @@ -1,418 +1,114 @@ package com.tenwa.flow.util; -import java.text.DecimalFormat; +import com.amarsoft.app.lc.util.DateAssistant; +import com.amarsoft.are.jbo.*; +import com.amarsoft.are.lang.StringX; +import com.google.common.collect.ImmutableMap; +import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import jbo.com.tenwa.entity.comm.flow.FLOW_WORK_FLAG; +import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_NUMBER; + import java.util.Calendar; import java.util.HashMap; import java.util.Map; - -import com.google.common.collect.ImmutableMap; -import jbo.com.tenwa.entity.comm.flow.FLOW_BUSSINESS_OBJECT; -import jbo.com.tenwa.entity.comm.flow.FLOW_WORK_FLAG; -import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_DISCARD_NUMBER; -import jbo.com.tenwa.entity.comm.serialutil.T_SERIAL_NUMBER; -import jbo.sys.FLOW_OBJECT; - -import com.amarsoft.app.lc.util.DateAssistant; -import com.amarsoft.are.jbo.BizObject; -import com.amarsoft.are.jbo.BizObjectManager; -import com.amarsoft.are.jbo.BizObjectQuery; -import com.amarsoft.are.jbo.JBOFactory; -import com.amarsoft.are.jbo.JBOTransaction; -import com.amarsoft.are.lang.StringX; -import com.amarsoft.awe.Configure; -import com.amarsoft.awe.util.ASResultSet; -import com.amarsoft.awe.util.SqlObject; -import com.amarsoft.awe.util.Transaction; -import com.tenwa.comm.util.jboutil.DataOperatorUtil; +import java.util.Objects; public class FlowUtil { - public static synchronized String getProjectSerialNumber(String orgId,JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("P{year}{month}{day}{maxOrderNumber}",6,null, "项目编号"+orgId, null, tx); - } - - public static synchronized String getEbankSerialNumber(String orgId,JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("E-{year}{month}{maxOrderNumber}",3,null, "网银编号"+orgId, null, tx); - } - - public static synchronized String getOutNoNumber(JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("PF{year}{month}{maxOrderNumber}",4,null, "", null, tx); - } - - public static synchronized String getRentOutNoNumber(JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("PR{year}{month}{maxOrderNumber}",4,null, "", null, tx); - } //获取1位的凭证号(凭证号--1、2、3) - public static synchronized String getVoucher_Number(JBOTransaction tx) throws Exception{ - return String.valueOf(Integer.parseInt(FlowUtil.getSerialNumber("{maxOrderNumber}",6,null, "凭证号", Integer.parseInt("2018"), tx))); + public static String getVoucher_Number(JBOTransaction tx) throws Exception { + return FlowUtil.getSerialNumber("{maxOrderNumber}", 6, null, "凭证号", 2018, tx); } - //获取1位的客户编号(--1、2、3) - public static synchronized String getCustomer_Number(boolean isCompany ,String custType) throws Exception { + //获取客户编号(法人,自然人) + public static String getCustomer_Number(boolean isCompany, String custType) throws Exception { + ImmutableMap model = ImmutableMap.of("custType", custType); + return FlowUtil.getSerialNumber("APZL{custType}{maxOrderNumber}", 15, model, isCompany ? "法人客户编号" : "客户编号", null, null); + } + + //获取经销商编号 + public static String getDistributorSerialNumber(JBOTransaction tx) throws Exception { + return FlowUtil.getSerialNumber("DSTB{year}{month}{day}{maxOrderNumber}",6,null, "经销商编号", null, tx); + } + + + private static String getSerialNumber(String serialNumberPattern, int numberCount, Map model, String type, Integer queryYear, JBOTransaction tx) throws Exception { + String currentDateTime = DateAssistant.getTodayNow(); + String currentYear = currentDateTime.substring(0,4); + String month = currentDateTime.substring(5,7); + String day = currentDateTime.substring(8,10); + String hour = currentDateTime.substring(11,13); + String minute = currentDateTime.substring(14,16); + String second = currentDateTime.substring(17,19); + Integer year = queryYear != null ? queryYear : Integer.valueOf(currentYear); + Map paramMap = new HashMap<>(); + paramMap.put("year", year+""); + paramMap.put("month", month); + paramMap.put("day", day); + paramMap.put("hour", hour); + paramMap.put("minute", minute); + paramMap.put("second", second); + + int maxOrderNumber = getMaxOrderNumber(type, queryYear); + paramMap.put("maxOrderNumber", String.format("%0" + numberCount + "d", maxOrderNumber)); + if(null != model){ + paramMap.putAll(model); + } + for (String key : paramMap.keySet()) { + if (serialNumberPattern.indexOf("{" + key + "}") >= 0) { + serialNumberPattern = serialNumberPattern.replace("{" + key + "}", paramMap.get(key)); + } + } + return serialNumberPattern; + } + + //考虑并发情况必须采用同步机制 + private static synchronized int getMaxOrderNumber(String type, Integer queryYear) throws Exception { JBOTransaction tx = null; try { tx = JBOFactory.createJBOTransaction(); - ImmutableMap model = ImmutableMap.of("custType", custType); - String serial = FlowUtil.getSerialNumber("APZL{custType}{maxOrderNumber}", 15, model, isCompany?"法人客户编号":"客户编号", null, tx); + int currentYear = Calendar.getInstance().get(Calendar.YEAR); + BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_NUMBER.CLASS_NAME); + tx.join(tNumberManager); + Map searchCondtion = new HashMap(); + if (!StringX.isEmpty(type)) { + searchCondtion.put("type_", type); + } + if (null != queryYear) { + searchCondtion.put("year_", queryYear.toString()); + + } + String querySql = DataOperatorUtil.getQuerySql(searchCondtion); + BizObjectQuery bqDest = tNumberManager.createQuery(querySql); + for (String key : searchCondtion.keySet()) { + bqDest.setParameter(key, searchCondtion.get(key).toString()); + } + // 目标JBO,需要做更新操作 + BizObject serialNumber = bqDest.getSingleResult(true); + if (Objects.isNull(serialNumber)) { + serialNumber = tNumberManager.newObject(); + serialNumber.setAttributeValue("year_", queryYear != null ? queryYear : currentYear); + serialNumber.setAttributeValue("type_", type); + serialNumber.setAttributeValue("order_number_", "0"); + } + int maxOrderNumber = serialNumber.getAttribute("order_number_").getInt() + 1; + serialNumber.setAttributeValue("order_number_", maxOrderNumber); + tNumberManager.saveObject(serialNumber); tx.commit(); - return serial; + return maxOrderNumber; } catch (Exception e) { if (tx != null) tx.rollback(); throw e; } } - //获取经销商编号 - public static synchronized String getDistributorSerialNumber(JBOTransaction tx) throws Exception{ - return FlowUtil.getSerialNumber("DSTB{year}{month}{day}{maxOrderNumber}",6,null, "经销商编号", null, tx); + + public static void deleteWorkFlowConflict(String flowUnid, JBOTransaction tx) throws Exception { + Map condtion = new HashMap(); + condtion.put("flow_unid", flowUnid); + DataOperatorUtil.deleteJBOByCondtion(FLOW_WORK_FLAG.CLASS_NAME, condtion, tx); } - - - - protected static synchronized String getSerialNumber(String serialNumberPattern,int numberCount,Map model,String type,Integer queryYear,JBOTransaction tx) throws Exception - { - String currentDateTime = DateAssistant.getTodayNow(); - String currentYear = currentDateTime.substring(0,4); - String month = currentDateTime.substring(5,7); - String day = currentDateTime.substring(8,10); - String hour = currentDateTime.substring(11,13); - String minute = currentDateTime.substring(14,16); - String second = currentDateTime.substring(17,19); - - Integer year = Integer.parseInt(currentYear); - if(null != queryYear){ - year = queryYear; - } - Map paramMap = new HashMap(); - paramMap.put("year", year+""); - paramMap.put("month", month+""); - paramMap.put("day", day+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber = getMaxOrderNumber(type, queryYear, tx); - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;i paramMap,String serialNumberPattern){ - for(String key:paramMap.keySet()){ - if(serialNumberPattern.indexOf("{"+key+"}")>=0){ - serialNumberPattern=serialNumberPattern.replace("{"+key+"}", paramMap.get(key)); - } - } - return serialNumberPattern; - } - /*** - * serialNumberPattern匹配值 - * {year}->年份,如果参数year为空则取当前年 - * {month}->当前月 - * {day}->当前日 - * {hour}->时 - * {minute}->分 - * {second}->秒 - * {maxOrderNumber}->当前最大序号 - * - * **/ - protected static synchronized String getSerialNumberByMonth(String serialNumberPattern,int numberCount,Map model,String type,Integer queryYear,Integer queryMonth,JBOTransaction tx) throws Exception - { - String currentDateTime = DateAssistant.getTodayNow(); - String currentYear = currentDateTime.substring(0,4); - String monthStr = currentDateTime.substring(5,7); - String day = currentDateTime.substring(8,10); - String hour = currentDateTime.substring(11,13); - String minute = currentDateTime.substring(14,16); - String second = currentDateTime.substring(17,19); - - int year = Integer.parseInt(currentYear); - int month = Integer.parseInt(monthStr); - if(null != queryYear){ - year = queryYear; - } - if(null != queryMonth){ - month = queryMonth ; - } - Map paramMap = new HashMap(); - paramMap.put("year", year+""); - paramMap.put("month", monthStr+""); - paramMap.put("day", day+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber = getMaxOrderNumberByMonth(type, year,month, tx); - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;isearchCondtion=new HashMap(); - if(!StringX.isEmpty(type)){ - searchCondtion.put("type_", type); - } - if(null != queryYear){ - searchCondtion.put("year_", queryYear.toString()); - - } - String querySql = DataOperatorUtil.getQuerySql(searchCondtion); - BizObjectQuery bqDest = tNumberManager.createQuery(querySql); - for (String key : searchCondtion.keySet()) { - bqDest.setParameter(key, searchCondtion.get(key)); - } - BizObject serialNumber = null; - serialNumber = bqDest.getSingleResult();// 目标JBO,需要做更新操作 - if(null==serialNumber){ - serialNumber = tNumberManager.newObject(); - if (null != queryYear) { - currentYear = queryYear; - } - serialNumber.setAttributeValue("year_",currentYear); - serialNumber.setAttributeValue("type_",type); - serialNumber.setAttributeValue("order_number_", "1"); - tNumberManager.saveObject(serialNumber); - } else { - Transaction sqlCa = Transaction.createTransaction(tx); - SqlObject sqlObject = new SqlObject("update T_SERIAL_NUMBER set order_number_ = order_number_+1 where " + querySql); - for (String key : searchCondtion.keySet()) { - sqlObject.setParameter(key, searchCondtion.get(key)); - } - sqlCa.executeSQL(sqlObject); - serialNumber = bqDest.getSingleResult(); - } - return serialNumber.getAttribute("order_number_").getInt(); - } - //考虑并发情况必须采用同步机制 - @SuppressWarnings("unchecked") - protected static synchronized int getMaxOrderNumberByMonth(String type,Integer queryYear,Integer queryMonth,JBOTransaction tx) throws Exception - { - - int currentYear = Calendar.getInstance().get(Calendar.YEAR); - int currentMonth = Calendar.getInstance().get(Calendar.MONTH); - BizObjectManager tNumberManager = JBOFactory.getBizObjectManager(T_SERIAL_NUMBER.CLASS_NAME); - tx.join(tNumberManager); - MapsearchCondtion=new HashMap(); - if(!StringX.isEmpty(type)){ - searchCondtion.put("type_", type); - } - if(null != queryYear){ - searchCondtion.put("year_", queryYear.toString()); - - } - if(null != queryMonth){ - searchCondtion.put("month_", queryMonth.toString()); - - } - String querySql = DataOperatorUtil.getQuerySql(searchCondtion); - BizObjectQuery bqDest = tNumberManager.createQuery(querySql); - for (String key : searchCondtion.keySet()) { - bqDest.setParameter(key, searchCondtion.get(key).toString()); - } - BizObject serialNumber = null; - serialNumber = bqDest.getSingleResult(true);// 目标JBO,需要做更新操作 - - - if(null==serialNumber) - { - - serialNumber = tNumberManager.newObject(); - if(null != queryYear) - { - currentYear = queryYear; - } - if(null != queryMonth){ - currentMonth = queryMonth; - } - serialNumber.setAttributeValue("year_",currentYear); - serialNumber.setAttributeValue("month_",currentMonth); - serialNumber.setAttributeValue("type_",type); - serialNumber.setAttributeValue("order_number_", "0"); - } - int maxOrderNumber = Integer.valueOf(serialNumber.getAttribute("order_number_").getInt()) + 1; - serialNumber.setAttributeValue("order_number_",maxOrderNumber); - tNumberManager.saveObject(serialNumber); - return maxOrderNumber; - } - /** - * 优先从号码废弃池中取号,如果号码废弃池中没有待取号吗,则根据序列号生成 - * @param serialNumberPattern - * @param numberCount - * @param model - * @param type - * @param queryYear - * @param hibernateTemplate - * @param jdbcTemplate - * @return - * @throws Exception - */ - protected static synchronized String getSerialNumberFirstDiscard(String serialNumberPattern,int numberCount,Map model,String type,Integer queryYear,JBOTransaction tx) throws Exception - { - String currentDateTime = DateAssistant.getTodayNow(); - String currentYear = currentDateTime.substring(0,4); - String month = currentDateTime.substring(5,7); - String day = currentDateTime.substring(8,10); - String hour = currentDateTime.substring(11,13); - String minute = currentDateTime.substring(14,16); - String second = currentDateTime.substring(17,19); - - int year = Integer.parseInt(currentYear); - if(null != queryYear){ - year = queryYear; - } - Map paramMap = new HashMap(); - paramMap.put("year", year+""); - paramMap.put("month", month+""); - paramMap.put("day", day+""); - paramMap.put("hour", hour+""); - paramMap.put("minute", minute+""); - paramMap.put("second", second+""); - - int maxOrderNumber =0; - //从废弃池查找可用号码 - maxOrderNumber=getMinDiscardNumber(type, queryYear, tx); - if(maxOrderNumber<0){//废弃池中没有数据 - maxOrderNumber=getMaxOrderNumber(type, year, tx); - } - StringBuffer numberFormat = new StringBuffer(); - for(int i=0;isearchCondtion=new HashMap(); - if(!StringX.isEmpty(type)){ - searchCondtion.put("type_", type); - } - if(null != queryYear){ - searchCondtion.put("year_", queryYear.toString()); - - } - - String querySql = DataOperatorUtil.getQuerySql(searchCondtion); - BizObjectQuery bqDest = tNumberManager.createQuery(querySql); - for (String key : searchCondtion.keySet()) { - bqDest.setParameter(key, searchCondtion.get(key).toString()); - } - BizObject serialNumber = null; - serialNumber = bqDest.getSingleResult(true);// 目标JBO,需要做更新操作 - - if(null!=serialNumber) - { - int minOrderNumber = serialNumber.getAttribute("discard_number_").getInt(); - tNumberManager.deleteObject(serialNumber); - return minOrderNumber; - } - return -1; - } - - public static void deleteWorkFlowConflict(String flowUnid,JBOTransaction tx) throws Exception{ - Map condtion=new HashMap(); - condtion.put("flow_unid", flowUnid); - DataOperatorUtil.deleteJBOByCondtion(FLOW_WORK_FLAG.CLASS_NAME, condtion, tx); - } - - public static String checkWorkFlowConflict(String flowUnid,String flowname,String flowkey,JBOTransaction tx)throws Exception{ - String sql="SELECT flow_unid,flow_name FROM flow_work_flag WHERE flow_name IN(" - + "SELECT flow_nameb FROM flow_mutex_config " - + "WHERE flow_namea=:flow_namea ) AND mutex_key=:mutex_key"; - ASResultSet rs = null; - String flow_unid=null; - String flow_name=null; - String username=null; - String res=""; - try { - MapsearchCondtion=new HashMap(); - Configure CurConfig = Configure.getInstance(); - String sDataSource = CurConfig.getDataSource(); - Transaction Sqlca = Transaction.createTransaction(sDataSource); - SqlObject so = new SqlObject(sql); - so.setParameter("flow_namea",flowname); - so.setParameter("mutex_key",flowkey); - rs = Sqlca.getASResultSet(so); - while(rs.next()){ - flow_unid=rs.getString("flow_unid"); - flow_name=rs.getString("flow_name"); - searchCondtion.clear(); - searchCondtion.put("objectno", flow_unid); - BizObject flowobject=DataOperatorUtil.getSingleJBO(FLOW_OBJECT.CLASS_NAME, searchCondtion, tx); - if(res!=""){ - res+=","; - } - res+=flow_name+"[用户名:"+flowobject.getAttribute("username").getString()+"]"; - } - } catch (Exception e) { - e.printStackTrace(); - }finally{ - rs.close(); - } - if(res.length()>0){ - //删除表数据 - Mapcondtion=new HashMap(); - condtion.put("flow_unid", flowUnid); - DataOperatorUtil.deleteJBOByCondtion(FLOW_BUSSINESS_OBJECT.CLASS_NAME, condtion, tx); - return "当前流程和"+res+"互斥,如有疑惑请联系管理员"; - }else{ - /*BizObjectManager bom=JBOFactory.getBizObjectManager(FLOW_BUSSINESS_OBJECT.CLASS_NAME); - tx.join(bom); - BizObject bo=bom.newObject(); - - bo.setAttributeValue("flow_unid", flowUnid); - bo.setAttributeValue("flow_name", flowname); - bo.setAttributeValue("flow_key", flowkey); - bom.saveObject(bo);*/ - return null; - } - - } - - } diff --git a/src_sys/com/tenwa/flow/action/comm/SelectBalance.java b/src_sys/com/tenwa/flow/action/comm/SelectBalance.java index 870f97ee7..7a45fbfce 100644 --- a/src_sys/com/tenwa/flow/action/comm/SelectBalance.java +++ b/src_sys/com/tenwa/flow/action/comm/SelectBalance.java @@ -57,7 +57,7 @@ public class SelectBalance { return "ERROR@剩余额度不足"; } } - return "ERROR@网络异常……"; + return "ERROR@经销商没有保证金"; } } \ No newline at end of file diff --git a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java index f514d5707..32b7210ec 100644 --- a/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java +++ b/src_tenwa/com/tenwa/lease/app/quartzmession/AutoFiveGradeClassification.java @@ -93,8 +93,12 @@ public class AutoFiveGradeClassification implements Job { //更新合同状态为100,105 分类状态 sqlca.executeSQL("update LC_CALC_CONDITION_STATUS LCCS join lb_contract_info lci on LCCS.CONTRACT_ID = lci.ID set LCCS.FIVE_GRADE='ClassifyResult01',LCCS.FIVE_GRADE_DATE= date_format(curdate(),'%Y/%m/%d'),LCCS.FIVE_GRADE_DEMO=concat(date_format(curdate(),'%Y/%m/%d'),'日自动跑批') where lci.CONTRACT_STATUS in ('100','105') and LCCS.FIVE_GRADE <> 'ClassifyResult01'"); - //更新合同状态为31分类状态 + //更新合同状态为31分类状态(逾期) sqlca.executeSQL("{call proc_autoFiveClassify()}"); + + //更新合同状态为31分类状态(未逾期,刚起租) 2022/03/15 + sqlca.executeSQL("{call proc_autoFiveClassify_normal()}"); + sqlca.commit(); List diList = JBOFactory.getBizObjectManager(DISTRIBUTOR_INFO.CLASS_NAME).createQuery("1=1").getResultList(false); for (BizObject bo : diList) {