package com.cabletech.business.base.service.impl; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.cabletech.baseinfo.base.BaseUtil; import com.cabletech.baseinfo.base.DateUtil; import com.cabletech.business.base.dao.CommonOrderCodeDao; import com.cabletech.business.base.service.CommonOrderCodeService; /** * * 通用户生成(根据 中国移动网络代维管理平台技术规范 编码规范分册.doc) * 包括: * 工单编号 * 公告编号 * 公文编号 * 代维资料编号 * @author wj * */ @Service @Transactional public class CommonOrderCodeServiceImpl implements CommonOrderCodeService{ @Resource(name = "commonOrderCodeDao") private CommonOrderCodeDao commonOrderCodeDao; /** * 私有方法--添加工单编号记录 * @param parameter 参数 */ private void addOrderCode(Map<String, Object> parameter) { commonOrderCodeDao.deleteOrderCode(parameter); commonOrderCodeDao.addOrderCode(parameter); } /** * 私有方法--查询工单编号记录 * @param parameter 参数 */ private int queryOrderCode(Map<String, Object> parameter) { int index = ORDER_CODE_SERIAL_NUMBER_INITIAL; Map<String, Object> ret = commonOrderCodeDao.queryOrderCode(parameter); if(null==ret){ parameter.put(ORDER_CODE_SERIAL_NUMBER, new BigDecimal(index)); addOrderCode(parameter); ret = parameter; }else{ commonOrderCodeDao.updateOrderCode(ret); } index = BaseUtil.intValue(ret.get(ORDER_CODE_SERIAL_NUMBER)); return index; } @Override public String generatorWorkOrderCode(String regionId, String businessType,String taskType) { //初始化查询参数 Map<String, Object> parameter = new HashMap<String, Object>(); parameter.put(ORDER_CODE_TASK_TYPE, MODULE_TYPE_WORK_ORDER); parameter.put(ORDER_CODE_SYS_DATE, DateUtil.getNowDateString("yyyy-MM-dd")); parameter.put(ORDER_CODE_REGION_ID, regionId); String index = String.valueOf(queryOrderCode(parameter)); String prefix = ""; for(int i=0;i<(ORDER_CODE_LENGTH-index.length());i++)prefix=prefix+"0"; index = prefix+index; StringBuffer orderCode = new StringBuffer(); orderCode.append(commonOrderCodeDao.queryProvinceShort(parameter)); //省份编码 orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(getnNewBusinessType(businessType));//代维工作类型(专业类型) orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(taskType);//代维工单流程类型 orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(DateUtil.getNowDateString("yyMMdd"));//日期 orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(index);//每日流水号 return orderCode.toString(); } @Override public String generatorLetterCode(String regionId) { //初始化查询参数 Map<String, Object> parameter = new HashMap<String, Object>(); parameter.put(ORDER_CODE_TASK_TYPE,MODULE_TYPE_LETTER); parameter.put(ORDER_CODE_SYS_DATE, DateUtil.getNowDateString("yyyy-MM-dd")); parameter.put(ORDER_CODE_REGION_ID, regionId); String index = String.valueOf(queryOrderCode(parameter)); String prefix = ""; for(int i=0;i<(ORDER_CODE_LENGTH-index.length());i++)prefix=prefix+"0"; index = prefix+index; StringBuffer orderCode = new StringBuffer(); orderCode.append(commonOrderCodeDao.queryProvinceShort(parameter)); //省份编码 orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(ORDER_CODE_LETTER_MARKING); //公文标识 orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(DateUtil.getNowDateString("yyMMdd"));//日期 orderCode.append(ORDER_CODE_SEPARATOR); orderCode.append(index);//每日流水号 return orderCode.toString(); } /** * 私有方法--获取专业类型与新规范的对应关系 * @param oldType 专业类型 */ public String getnNewBusinessType(String oldType){ for(String temp:newBusinessTypes){ if(temp.startsWith(oldType)){ return temp.split("-")[1]; } } return ""; } }