package com.ycsoft.business.service.impl; import static com.ycsoft.commons.constants.SystemConstants.ACCTITEM_TJ; import static com.ycsoft.commons.constants.SystemConstants.ACCT_CHANGE_PROMOTION_CANCEL; import static com.ycsoft.commons.constants.SystemConstants.ACCT_FEETYPE_PRESENT; import static com.ycsoft.commons.constants.SystemConstants.BILLING_TYPE_MONTH; import static com.ycsoft.commons.constants.SystemConstants.BILL_COME_FROM_MUCH; import static com.ycsoft.commons.constants.SystemConstants.BOOLEAN_FALSE; import static com.ycsoft.commons.constants.SystemConstants.BOOLEAN_TRUE; import static com.ycsoft.commons.constants.SystemConstants.COUNTY_9005; import static com.ycsoft.commons.constants.SystemConstants.DEVICE_TYPE_MODEM; import static com.ycsoft.commons.constants.SystemConstants.FEE_DISCT_PROM; import static com.ycsoft.commons.constants.SystemConstants.PRESENT_TYPE_FEE; import static com.ycsoft.commons.constants.SystemConstants.PRESENT_TYPE_TIME; import static com.ycsoft.commons.constants.SystemConstants.PROD_ORDER_TYPE_PRESENT; import static com.ycsoft.commons.constants.SystemConstants.PROD_TYPE_BASE; import static com.ycsoft.commons.constants.SystemConstants.REFRESH_TYPE_TERMINAL; import static com.ycsoft.commons.constants.SystemConstants.USER_TYPE_BAND; import static com.ycsoft.commons.helper.LoggerHelper.debug; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.RandomStringUtils; import com.google.gson.reflect.TypeToken; import com.ycsoft.beans.config.TBusiFee; import com.ycsoft.beans.config.TDeviceChangeReason; import com.ycsoft.beans.config.TOpenTemp; import com.ycsoft.beans.core.acct.CAcct; import com.ycsoft.beans.core.acct.CAcctAcctitem; import com.ycsoft.beans.core.acct.CAcctAcctitemInactive; import com.ycsoft.beans.core.acct.CAcctBank; import com.ycsoft.beans.core.bill.BBill; import com.ycsoft.beans.core.common.CDoneCode; import com.ycsoft.beans.core.common.CDoneCodeDetail; import com.ycsoft.beans.core.common.ExtCDoneCode; import com.ycsoft.beans.core.cust.CCust; import com.ycsoft.beans.core.cust.CCustDevice; import com.ycsoft.beans.core.fee.CFee; import com.ycsoft.beans.core.job.JUserStop; import com.ycsoft.beans.core.prod.CProd; import com.ycsoft.beans.core.prod.CProdPropChange; import com.ycsoft.beans.core.prod.CancelUserDto; import com.ycsoft.beans.core.promotion.CPromotion; import com.ycsoft.beans.core.promotion.CPromotionAcct; import com.ycsoft.beans.core.promotion.CPromotionHis; import com.ycsoft.beans.core.user.CUser; import com.ycsoft.beans.core.user.CUserAtv; import com.ycsoft.beans.core.user.CUserBroadband; import com.ycsoft.beans.core.user.CUserDtv; import com.ycsoft.beans.core.user.CUserPropChange; import com.ycsoft.beans.prod.PPackageProd; import com.ycsoft.beans.prod.PProd; import com.ycsoft.beans.prod.PProdTariff; import com.ycsoft.beans.prod.PProdUserRes; import com.ycsoft.beans.prod.PPromotionAcct; import com.ycsoft.beans.prod.PRes; import com.ycsoft.beans.prod.PSpkgOpenbusifee; import com.ycsoft.beans.prod.PSpkgOpenuser; import com.ycsoft.beans.system.SOptr; import com.ycsoft.business.commons.pojo.BusiParameter; import com.ycsoft.business.component.config.BusiConfigComponent; import com.ycsoft.business.component.config.ExpressionUtil; import com.ycsoft.business.component.core.UserPromComponent; import com.ycsoft.business.component.resource.DeviceComponent; import com.ycsoft.business.component.resource.PromComponent; import com.ycsoft.business.dto.core.acct.AcctitemDto; import com.ycsoft.business.dto.core.acct.PayDto; import com.ycsoft.business.dto.core.fee.FeeBusiFormDto; import com.ycsoft.business.dto.core.fee.FeeInfoDto; import com.ycsoft.business.dto.core.prod.CProdDto; import com.ycsoft.business.dto.core.prod.DisctFeeDto; import com.ycsoft.business.dto.core.prod.ProdResDto; import com.ycsoft.business.dto.core.prod.PromotionDto; import com.ycsoft.business.dto.core.prod.ResGroupDto; import com.ycsoft.business.dto.core.user.UserDto; import com.ycsoft.business.dto.core.user.UserInfo; import com.ycsoft.business.dto.core.user.UserRes; import com.ycsoft.business.dto.device.DeviceDto; import com.ycsoft.business.service.IUserService; import com.ycsoft.commons.constants.BusiCmdConstants; import com.ycsoft.commons.constants.BusiCodeConstants; import com.ycsoft.commons.constants.DictKey; import com.ycsoft.commons.constants.StatusConstants; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.exception.ComponentException; import com.ycsoft.commons.exception.ServicesException; import com.ycsoft.commons.helper.CnToSpell; import com.ycsoft.commons.helper.CollectionHelper; import com.ycsoft.commons.helper.DateHelper; import com.ycsoft.commons.helper.JsonHelper; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.commons.store.MemoryDict; import com.ycsoft.daos.core.JDBCException; public class UserService extends BaseBusiService implements IUserService { private PromComponent promComponent; private UserPromComponent userPromComponent; protected BusiConfigComponent busiConfigComponent; private ExpressionUtil expressionUtil; protected DeviceComponent deviceComponent; @Override public void createUserBatch(List<UserInfo> userList, String stopType, String isHand) throws Exception { // TODO Auto-generated method stub } @Override public void createUser(CUser user, String deviceId, String deviceType, String deviceModel, String deviceBuyMode, FeeInfoDto deviceFee) throws Exception { // TODO Auto-generated method stub } public void createUser(CUser user,String deviceBuyMode,FeeInfoDto deviceFee) throws Exception { //获取客户信息 CCust cust = getBusiParam().getCust(); String custId = cust.getCust_id(); String stbId = user.getStb_id(); String cardId = user.getCard_id(); String modemMac = user.getModem_mac(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); String user_id = userComponent.gUserId(); //创建账户信息 //String acctId = acctComponent.createAcct(custId,user_id, ACCT_TYPE_SPEC, null); //创建用户信息 user.setUser_id(user_id); user.setAcct_id(acctComponent.gAcctId()); user.setCust_id(custId); userComponent.createUser(user); //处理客户设备 if (StringHelper.isNotEmpty(cardId)){ //非居民开户用户多,多个操作员同时开户,同个客户下会出现同个设备开出多个用户来 CCustDevice custDevice = custComponent.queryCustDeviceByCodeAndCustId(custId, cardId); if(custDevice != null && custDevice.getStatus().equals(StatusConstants.USE)) throw new ServicesException("该设备正在开户中,卡号: "+cardId); updateDevice(doneCode,cardId, custId,StatusConstants.USE); } if (StringHelper.isNotEmpty(stbId)){ CCustDevice custDevice = custComponent.queryCustDeviceByCodeAndCustId(custId, stbId); if(custDevice != null && custDevice.getStatus().equals(StatusConstants.USE)) throw new ServicesException("该设备正在开户中,机顶盒号: "+stbId); updateDevice(doneCode,stbId, custId,StatusConstants.USE); } updateDevice(doneCode,modemMac, custId,StatusConstants.USE); //修改客户状态为正常状态 if (cust.getStatus().equals(StatusConstants.PREOPEN)){ custComponent.updateCustStatus(doneCode,custId,StatusConstants.PREOPEN,StatusConstants.ACTIVE); } //生成'创建用户'JOB createUserJob(user, custId, doneCode); getBusiParam().setBusiConfirmParam("user", user); // if (user instanceof CUserDtv ){ // //TODO 如果是双向用户自动订购按次点播节目 // if(DTV_SERV_TYPE_DOUBLE.equals(((CUserDtv) user).getServ_type())){ // if(BOOLEAN_TRUE.equals(userComponent.queryTemplateConfig(TemplateConfigDto.Config.AUTO_ORDER_VOD.toString()))){ // orderVodProd(user,doneCode); // } // } // } // 更新巡检标志 // this.updateUserCheckFlag(user.getCard_id()); // // 保存打印信息 // if (user instanceof CUserAtv) {//模拟电视 // Map<String, String> map = new HashMap<String, String>(); // map.put("terminal_type", MemoryDict.getDictName(DictKey.TERMINAL_TYPE, ((CUserAtv) user).getTerminal_type())); // map.put("user_type", user.getUser_type_text()); // doneCodeComponent.saveDoneCodeInfo(doneCode, custId,user.getUser_id(), map); // }else if (user instanceof CUserDtv) {// 数字电视 // Map<String, String> map = new HashMap<String, String>(); // map.put("terminal_type", MemoryDict.getDictName(DictKey.TERMINAL_TYPE, ((CUserDtv) user).getTerminal_type())); // map.put("user_type", user.getUser_type_text()); // map.put("card_id", user.getCard_id()); // map.put("stb_id", user.getStb_id()); // doneCodeComponent.saveDoneCodeInfo(doneCode, custId,user.getUser_id(), map); // }else if (user instanceof CUserBroadband) {// 宽带 // // 保存打印信息 // Map<String, String> map = new HashMap<String, String>(); // map.put("user_type", user.getUser_type_text()); // map.put("modem_mac", user.getModem_mac()); // map.put("login_name", ((UserDto) user).getLogin_name()); // map.put("login_password", ((UserDto) user).getLogin_password()); // doneCodeComponent.saveDoneCodeInfo(doneCode, custId, user.getUser_id(),map); // } //设置拦截器所需要的参数 getBusiParam().resetUser(); getBusiParam().addUser(user); // saveAllPublic(doneCode,getBusiParam(),busiInfo); saveAllPublic(doneCode,getBusiParam()); } public void editUser(List<CUserPropChange> propChangeList) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); userComponent.editUser(doneCode, getBusiParam().getSelectedUserIds().get(0), propChangeList); //生成计算用户信用度的JOB jobComponent.createCreditCalJob(doneCode, getBusiParam().getCust().getCust_id(), null,BOOLEAN_TRUE); Map<String,CUserPropChange> map = CollectionHelper.converToMapSingle(propChangeList, "column_name"); //如果包含用户密码修改 if(map.containsKey("password")){ String custId = getBusiParam().getCust().getCust_id(); CUser user = getBusiParam().getSelectedUsers().get(0); CUser userDto = queryUserById(user.getUser_id()); CUserPropChange change = map.get("password"); userDto.setPassword(change.getOld_value()); userDto.setNewPassword(change.getNew_value()); //发送用户修改指令 jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.CHANGE_USER, custId, userDto.getUser_id(), userDto.getStb_id(), userDto.getCard_id(), userDto.getModem_mac(), null, null,JsonHelper.fromObject(userDto)); //支付密码同步 jobComponent.saveDataSyncJob(BusiCmdConstants.PSWD_SYNC, JsonHelper.fromObject(userDto), "C_USER"); } // //宽带修改密码 // if(map.containsKey("login_password")){ // String custId = getBusiParam().getCust().getCust_id(); // CUser user = getBusiParam().getSelectedUsers().get(0); // UserDto userDto = queryUserById(user.getUser_id()); // CUserPropChange change = map.get("login_password"); // userDto.setLogin_password(change.getOld_value()); // userDto.setNewPassword(change.getNew_value()); // jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.BAND_EDIT_PWD, custId, user.getUser_id(), null, null, user.getModem_mac(), null, null, JsonHelper.fromObject(userDto)); // } //宽带修改最大连接数 if(map.containsKey("max_connection")){ String custId = getBusiParam().getCust().getCust_id(); CUser user = getBusiParam().getSelectedUsers().get(0); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.BAND_EDIT_CONNECT, custId, user.getUser_id(), null, null, user.getModem_mac(), null, null, JsonHelper.fromObject(user)); } saveAllPublic(doneCode,getBusiParam()); } /** * @param propChangeList */ public void editUserStatus(List<CUserPropChange> propChangeList) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); CUser user = getBusiParam().getSelectedUsers().get(0); userComponent.editUser(doneCode,user.getUser_id() , propChangeList); saveAllPublic(doneCode,getBusiParam()); } /** * 第二终端转副机 * @param propChangeList * @param prodSn * @throws Exception */ public void saveEzdtoFzd(List<CUserPropChange> propChangeList,String prodSn,String newTariffId) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); userComponent.editUser(doneCode, getBusiParam().getSelectedUserIds().get(0), propChangeList); //生成计算用户信用度的JOB jobComponent.createCreditCalJob(doneCode, getBusiParam().getCust().getCust_id(), null,BOOLEAN_TRUE); if(StringHelper.isNotEmpty(prodSn)){ changeTariff(prodSn, newTariffId, DateHelper.formatNow(), null, true,false, doneCode); } saveAllPublic(doneCode,getBusiParam()); } public void editStb(String stbId,String cardId) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); CUser user = getBusiParam().getSelectedUsers().get(0); String custId = getBusiParam().getCust().getCust_id(); //修改设备状态 updateDevice(doneCode,stbId, custId, StatusConstants.USE); updateDevice(doneCode,cardId, custId, StatusConstants.USE); List<CUserPropChange> propChangeList = new ArrayList<CUserPropChange>(); if(StringHelper.isNotEmpty(stbId)){ CUserPropChange propChange = new CUserPropChange(); propChange.setColumn_name("stb_id"); propChange.setOld_value(user.getStb_id()); propChange.setNew_value(stbId); propChangeList.add(propChange); } if(StringHelper.isNotEmpty(cardId)){ CUserPropChange propChange = new CUserPropChange(); propChange.setColumn_name("card_id"); propChange.setOld_value(""); propChange.setNew_value(cardId); propChangeList.add(propChange); } userComponent.editUser(doneCode, getBusiParam().getSelectedUserIds().get(0), propChangeList); user.setStb_id(stbId); user.setCard_id(cardId); //如果卡号为空,需发指令,修改到期日 if(StringHelper.isNotEmpty(cardId)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_USER, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), null, null,JsonHelper.fromObject(user)); List<CProdDto> prodList = userProdComponent.queryByUserId(user.getUser_id()); for (CProd prod:prodList){ //生成激活产品任务 if (isProdOpen(prod.getStatus())){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, custId, user.getUser_id(),user.getStb_id(), user.getCard_id(), user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); } //报开后更新到期日 userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), DateHelper.getDiffDays(prod.getStatus_date(), new Date()), 0, new CAcctAcctitem()); } } //发送用户修改指令 jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.CHANGE_USER, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), null, null,JsonHelper.fromObject(user)); //生成计算用户信用度的JOB jobComponent.createCreditCalJob(doneCode, custId, null,BOOLEAN_TRUE); saveAllPublic(doneCode,getBusiParam()); } public void saveAtvToDtv(CUser user,int curMonthFee,int payFee) throws Exception { // //获取业务流水 // String custId = getBusiParam().getCust().getCust_id(); // Integer doneCode = doneCodeComponent.gDoneCode(); // String busiCode = getBusiParam().getBusiCode(); // CUser oldUser = getBusiParam().getSelectedUsers().get(0); // String oldAcctId = oldUser.getAcct_id(); // // //模拟产品 // List<CProdDto> prodList = userProdComponent.queryByUserId(oldUser.getUser_id()); // CProdDto prod = null; // if(null != prodList && prodList.size() > 0){ // prod = prodList.get(0); // CAcct custAcct = acctComponent.queryCustAcctByCustId(custId); // //保存缴费信息 // if (payFee>0){ // PayDto pay = new PayDto(); // pay.setUser_id(prod.getUser_id()); // pay.setAcct_id(prod.getAcct_id()); // pay.setAcctitem_id(prod.getProd_id()); // pay.setFee(payFee); // pay.setTariff_id(prod.getTariff_id()); // pay.setInvalid_date(DateHelper.dateToStr(prod.getInvalid_date())); // this.saveAcctPay(doneCode, pay); // } // // //修改当月账单,出帐金额为curMonthFee // if (billComponent.updateBill(prod.getProd_sn(), curMonthFee) ==0){ // //没有当月账单 // String billingCycle = DateHelper.format(new Date(), DateHelper.FORMAT_YM); // billComponent.createBill(prod, doneCode, // billingCycle, curMonthFee, curMonthFee, BILL_COME_FROM_MANUAL); // } // //终止模拟产品 // terminateProd(custId, oldUser, doneCode, busiCode, prod, "TRANS", custAcct.getAcct_id(), ACCTITEM_PUBLIC_ID); // } // // //注销模拟用户 // userComponent.removeUserWithHis(doneCode,oldUser); // //生成终止用户的业务指令 // delUserJob(user, custId, doneCode); //// acctComponent.removeAcctWithoutHis(oldUser.getAcct_id()); // // String userId = userComponent.gUserId(); // //创建用户账户 // String acctId = acctComponent.createAcct(custId,userId, ACCT_TYPE_SPEC, null); // //创建新用户 // user.setUser_id(userId); // user.setCust_id(custId); // user.setAcct_id(acctId); // userComponent.createUser(user); // // //处理客户设备 // if (StringHelper.isNotEmpty(user.getStb_id())){ // updateDevice(doneCode,user.getStb_id(), custId,StatusConstants.USE); // } // if (StringHelper.isNotEmpty(user.getCard_id())){ // updateDevice(doneCode,user.getCard_id(), custId,StatusConstants.USE); // } // if (StringHelper.isNotEmpty(user.getModem_mac())){ // updateDevice(doneCode,user.getModem_mac(), custId,StatusConstants.USE); // } // getBusiParam().setBusiConfirmParam("user", user); // //// if (prod!=null){ // //生成销帐任务 // int jobId = jobComponent.createCustWriteOffJob(doneCode, custId,BOOLEAN_TRUE); // jobComponent.terminateAcct(jobId, oldAcctId,null,doneCode); //// } // //生成'创建用户'JOB // createUserJob(user,custId,doneCode); // // getBusiParam().getSelectedAtvs().clear(); // getBusiParam().addUser(user); // //// saveAllPublic(doneCode, getBusiParam(), busiInfo); // saveAllPublic(doneCode, getBusiParam()); } public void saveCancelOpenInteractive() throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //获取操作的客户、用户信息 String custId = getBusiParam().getCust().getCust_id(); CUserDtv user = (CUserDtv) getBusiParam().getSelectedUsers().get(0); CUser userDto = queryUserById(user.getUser_id()); userComponent.saveCancelOpenInteractive(user.getUser_id(), doneCode); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.CANCEL_INTERACTIVE, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), "", null,null,JsonHelper.fromObject(userDto)); String modemMac = user.getModem_mac(); CCustDevice custDevice = custComponent.queryCustDeviceByCodeAndCustId(custId, modemMac); if(custDevice != null){ //单modem CUserBroadband band = userComponent.queryBandByDeviceId(modemMac); //单modem 双向、宽带共用一个modem if(band == null){ custComponent.updateDeviceStatusByCode(custId, modemMac, StatusConstants.IDLE); } } if (StringHelper.isNotEmpty(modemMac)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_TERMINAL, custId, user.getUser_id(), null, null, modemMac, null, null); } saveAllPublic(doneCode, getBusiParam()); } public void saveOpenInteractive(String netType, String modemMac, String password, String vodUserType,String remainReplacoverDate) throws Exception { /* //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //获取操作的客户、用户信息 String custId = getBusiParam().getCust().getCust_id(); CUserDtv user = (CUserDtv) getBusiParam().getSelectedUsers().get(0); //修改用户信息 List<CUserPropChange> changeList = new ArrayList<CUserPropChange>(); if(!netType.equals(user.getNet_type())){//user.getNet_type().equals(netType) CUserPropChange netTypeChange = new CUserPropChange(); netTypeChange.setColumn_name("net_type"); netTypeChange.setOld_value(user.getNet_type()); netTypeChange.setNew_value(netType); changeList.add(netTypeChange); } getBusiParam().setBusiConfirmParam("net_type", netType); if (StringHelper.isNotEmpty(modemMac)){ CUserPropChange modemChange =new CUserPropChange(); modemChange.setColumn_name("modem_mac"); modemChange.setOld_value(user.getModem_mac()); modemChange.setNew_value(modemMac); changeList.add(modemChange); } if(StringHelper.isNotEmpty(password)){ CUserPropChange passwordChange =new CUserPropChange(); passwordChange.setColumn_name("password"); passwordChange.setOld_value(user.getPassword()); passwordChange.setNew_value(password); changeList.add(passwordChange); } if(StringHelper.isNotEmpty(vodUserType)){ CUserPropChange vodUserTypeChange =new CUserPropChange(); vodUserTypeChange.setColumn_name("str11"); vodUserTypeChange.setOld_value(user.getStr11()); vodUserTypeChange.setNew_value(vodUserType); changeList.add(vodUserTypeChange); } CUserPropChange servChange =new CUserPropChange(); servChange.setColumn_name("serv_type"); servChange.setOld_value(DTV_SERV_TYPE_SINGLE); servChange.setNew_value(DTV_SERV_TYPE_DOUBLE); changeList.add(servChange); userComponent.editUser(doneCode, user.getUser_id(), changeList); //处理客户设备 updateDevice(doneCode,modemMac, custId,StatusConstants.USE); if(StringHelper.isNotEmpty(remainReplacoverDate) && SystemConstants.BOOLEAN_TRUE.equals(remainReplacoverDate)){ CCustDevice stb = custComponent.queryCustDeviceByCodeAndCustId(user.getCust_id(), user.getStb_id()); List<CCustDeviceChange> changes = new ArrayList<CCustDeviceChange>(); CCustDeviceChange change = new CCustDeviceChange(); change.setColumn_name("replacover_date"); change.setDevice_id(stb.getDevice_id()); Date oldDate = stb.getReplacover_date(); String oldValue = DateHelper.format(oldDate, DateHelper.FORMAT_YMD); String newValue = null; Calendar newDate = Calendar.getInstance(); if(oldDate !=null && oldDate.after(newDate.getTime())){ newDate.setTime(oldDate); } newDate.add(Calendar.YEAR, 3); newValue = DateHelper.format(newDate.getTime(), DateHelper.FORMAT_YMD); change.setOld_value(oldValue); change.setNew_value(newValue); changes.add(change); this.custComponent.editCustDevice(doneCode, stb.getDevice_id(), changes); } //生成信用计算、修改用户信息、激活设备任务 jobComponent.createCreditCalJob(doneCode, custId, null,BOOLEAN_TRUE); CUser userDto = queryUserById(user.getUser_id()); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.OPEN_INTERACTIVE, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), modemMac, null, null,JsonHelper.fromObject(userDto)); //支付密码同步 userDto.setPassword(password); jobComponent.saveDataSyncJob(BusiCmdConstants.PSWD_SYNC, JsonHelper.fromObject(userDto), "C_USER"); if (StringHelper.isNotEmpty(modemMac)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_TERMINAL, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), modemMac, null, null); } //TODO 如果是双向用户自动订购按次点播节目 if(DTV_SERV_TYPE_DOUBLE.equals(userDto.getServ_type())){ if(BOOLEAN_TRUE.equals(userComponent.queryTemplateConfig(TemplateConfigDto.Config.AUTO_ORDER_VOD.toString()))){ orderVodProd(user,doneCode); } } user.setNet_type(netType); user.setModem_mac(modemMac); // getBusiParam().setBusiConfirmParam("user", user); saveAllPublic(doneCode,getBusiParam()); doneCodeComponent.saveDoneCodeInfo(doneCode, custId, null, getBusiParam().getBusiConfirmParamInfo()); */ } /** * @param user */ private void orderVodProd(CUser user,Integer doneCode) throws Exception { //根据产品和资费id获取产品和资费的基本信息 PProdTariff tariff = prodComponent.queryVodProdTariff(); if(null != tariff){ PProd prod = prodComponent.queryProdById(tariff.getProd_id()); CProd cprod = userProdComponent.queryByProdId(user.getUser_id(), prod.getProd_id()); if(cprod == null){ String sn = userProdComponent.addProd(doneCode,user.getCust_id(), user.getAcct_id(), user.getUser_id(), null,null, prod.getProd_id(),prod.getProd_type(), PROD_ORDER_TYPE_PRESENT, DateHelper.formatNow(),null, user.getStop_type(),tariff,null,"F",prod.getIs_base(),null,SystemConstants.BOOLEAN_FALSE); CAcctAcctitem acctitem = acctComponent.createAcctItem(user.getAcct_id(), prod.getProd_id()); List<CAcctAcctitem> acctItemList = new ArrayList<CAcctAcctitem>(); acctItemList.add(acctitem); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, user.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), sn,prod.getProd_id()); jobComponent.createCreditCalJob(doneCode, user.getCust_id(), acctItemList,BOOLEAN_FALSE); } } } public void saveEditNetType(String netType,String modemMac) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); CCust cust = getBusiParam().getCust(); CUser user = getBusiParam().getSelectedUsers().get(0); String custId = cust.getCust_id(); //修改用户信息 List<CUserPropChange> changeList = new ArrayList<CUserPropChange>(); CUserPropChange netTypeChange = new CUserPropChange(); netTypeChange.setColumn_name("net_type"); netTypeChange.setOld_value(user.getNet_type()); netTypeChange.setNew_value(netType); changeList.add(netTypeChange); if(StringHelper.isNotEmpty(modemMac)){ CUserPropChange macChange = new CUserPropChange(); macChange.setColumn_name("modem_mac"); macChange.setOld_value(""); macChange.setNew_value(modemMac); changeList.add(macChange); }else{ CUserPropChange macChange = new CUserPropChange(); macChange.setColumn_name("modem_mac"); macChange.setOld_value(user.getModem_mac()); macChange.setNew_value(""); changeList.add(macChange); } //记录用户异动信息 userComponent.editUser(doneCode, user.getUser_id(), changeList); //新接入方式需要modem if(StringHelper.isNotEmpty(modemMac)){ //处理客户设备 updateDevice(doneCode,modemMac, custId, StatusConstants.USE); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_TERMINAL, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), modemMac, null, null); }else{ //旧接入方式modem改空闲,待回收 List<CUser> userList = userComponent.queryUserByDevice(DEVICE_TYPE_MODEM, user.getModem_mac()); if(userList != null && userList.size() == 0){ custComponent.updateDeviceStatusByCode(custId, user.getModem_mac(), StatusConstants.IDLE); } } saveAllPublic(doneCode, getBusiParam()); } public void saveStop(String effectiveDate,int tjFee) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //获取操作的客户、用户信息 CCust cust = getBusiParam().getCust(); String busiCode = getBusiParam().getBusiCode(); List<CUser> users = getBusiParam().getSelectedUsers(); // if (effectiveDate.equals(DateHelper.getDate("-"))){ // //当天报停 // for(CUser user:users){ // //清除原有未执行的预报停 // removeStopByUserId(user.getUser_id()); // //修改客户设备状态 // custComponent.updateDeviceStatusByCode(cust.getCust_id(), user.getStb_id(), StatusConstants.REQSTOP); // custComponent.updateDeviceStatusByCode(cust.getCust_id(), user.getCard_id(), StatusConstants.REQSTOP); // custComponent.updateDeviceStatusByCode(cust.getCust_id(), user.getModem_mac(), StatusConstants.REQSTOP); // CUser userDto = queryUserById(user.getUser_id()); // if(userDto.getStatus().equals(StatusConstants.REQSTOP)){ // throw new ServicesException("该用户已经报停!请重新查询该客户!"); // } // //修改用户状态 // updateUserStatus(doneCode, user.getUser_id(), user.getStatus(), StatusConstants.REQSTOP); // //生成钝化用户JOB // jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_USER, cust.getCust_id(), // user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), null, null,JsonHelper.fromObject(userDto)); // //修改用户产品状态为报停 // List<CProdDto> prodList = userProdComponent.queryAllProdsByUserId(user.getUser_id()); // for (CProdDto prod:prodList){ // List<CProdPropChange> changeList = new ArrayList<CProdPropChange>(); // changeList.add(new CProdPropChange("status", // prod.getStatus(),StatusConstants.REQSTOP)); // changeList.add(new CProdPropChange("status_date", // DateHelper.dateToStr(prod.getStatus_date()),DateHelper.dateToStr(new Date()))); // // userProdComponent.editProd(doneCode,prod.getProd_sn(),changeList); // // //生成钝化产品任务 // if (isProdOpen(prod.getStatus())){ // jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_PROD, cust.getCust_id(), // user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); // } // } //// busiInfo += "终端类型:"+user.getUser_type_text()+" 设备号:"+user.getStb_id(); // } // } else { // getBusiParam().setBusiCode(BusiCodeConstants.USER_PRE_REQUIRE_STOP); // //预报停 // for(CUser user:users){ // //清除原有未执行的预报停 // removeStopByUserId(user.getUser_id()); // jobComponent.createUserStopJob(doneCode, user.getUser_id(), effectiveDate); // } // } // //保存停机费 // saveTjFee(doneCode,busiCode, cust.getCust_id(), tjFee); // saveAllPublic(doneCode,getBusiParam()); // // // 保存打印数据 // int atvCount = 0; // String stopReason=""; // CUser atvUserPrint = new CUser(); // ExtCDoneCode[] extInfo = getBusiParam().getBusiExtAttr() ; // if(extInfo != null){ // for( ExtCDoneCode info :extInfo ){ // if(info.getAttribute_id().equals("411")){ // stopReason = info.getAttribute_value(); // } // } // } // List<Object> udl = new ArrayList<Object>(); // for (CUser user : users) { // Map<String,Object> map = new HashMap<String,Object>(); // map.put("busiName", MemoryDict.getDictName(DictKey.BUSI_CODE, getBusiParam().getBusiCode())); // if (("ATV").equals(user.getUser_type())) { // atvCount ++; // atvUserPrint = user; // } else if (("DTV").equals(user.getUser_type())) { // // map.put("user_type", user.getUser_type()); // CUserDtv dtv = (CUserDtv) user; // map.put("terminal_type", dtv.getTerminal_type_text()); // map.put("card_id", user.getCard_id()); // map.put("stb_id", user.getStb_id()); // map.put("effective_date", effectiveDate); // map.put("stop_reason", stopReason); // map.put("ext_info", extInfo); // udl.add(map); // } else if(("BAND").equals(user.getUser_type())){ // map.put("user_type", user.getUser_type()); // CUserBroadband band = (CUserBroadband) user; // map.put("login_name", band.getLogin_name()); // map.put("modem_mac", user.getModem_mac()); // map.put("recycle", "Modem及配件已回收"); // map.put("effective_date", effectiveDate); // map.put("stop_reason", stopReason); // map.put("ext_info", extInfo); // udl.add(map); // } // } // //保存模拟的打印信息 // if(atvCount > 0){ // Map<String,Object> map = new HashMap<String,Object>(); // map.put("user_type", atvUserPrint.getUser_type()); // map.put("terminal_type", ((CUserAtv) atvUserPrint).getTerminal_type_text()); // map.put("user_count", getBusiParam().getSelectedUsers().size()); // map.put("stop_count", atvCount); // map.put("effective_date", effectiveDate); // map.put("stop_reason", stopReason); // map.put("ext_info", extInfo); // udl.add(map); // } // getBusiParam().setBusiConfirmParam("users", udl); // doneCodeComponent.saveDoneCodeInfo(doneCode, cust.getCust_id(), null, getBusiParam().getBusiConfirmParamInfo()); } //续报停 public void editUserStop() throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); CUser user = getBusiParam().getSelectedUsers().get(0); List<CUserPropChange> changeList = new ArrayList<CUserPropChange>(); CUserPropChange change = new CUserPropChange(); change.setColumn_name("status_date"); change.setOld_value(DateHelper.dateToStr(user.getStatus_date())); change.setNew_value(DateHelper.dateToStr(new Date())); changeList.add(change); userComponent.editUser(doneCode, user.getUser_id(), changeList); saveAllPublic(doneCode,getBusiParam()); } public void cancelStopUser() throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); List<CUser> users = getBusiParam().getSelectedUsers(); String[] userall = CollectionHelper.converValueToArray(users, "user_id"); jobComponent.cancelStopUser(userall); saveAllPublic(doneCode,getBusiParam()); // 保存打印数据 int atvCount = 0; String stopReason=""; CUser atvUserPrint = new CUser(); List<Object> udl = new ArrayList<Object>(); for(CUser user:users){ Map<String,Object> map = new HashMap<String,Object>(); map.put("busiName", MemoryDict.getDictName(DictKey.BUSI_CODE, getBusiParam().getBusiCode())); if (("ATV").equals(user.getUser_type())) { atvCount ++; atvUserPrint = user; } else if (("DTV").equals(user.getUser_type())) { map.put("user_type", user.getUser_type()); CUserDtv dtv = (CUserDtv) user; map.put("terminal_type", dtv.getTerminal_type_text()); map.put("card_id", user.getCard_id()); map.put("stb_id", user.getStb_id()); udl.add(map); } else if(("BAND").equals(user.getUser_type())){ map.put("user_type", user.getUser_type()); CUserBroadband band = (CUserBroadband) user; map.put("login_name", band.getLogin_name()); map.put("modem_mac", user.getModem_mac()); map.put("recycle", "Modem及配件已回收"); udl.add(map); } } //保存模拟的打印信息 if(atvCount > 0){ Map<String,Object> map = new HashMap<String,Object>(); map.put("user_type", atvUserPrint.getUser_type()); map.put("terminal_type", ((CUserAtv) atvUserPrint).getTerminal_type_text()); map.put("user_count", getBusiParam().getSelectedUsers().size()); map.put("stop_count", atvCount); map.put("stop_reason", stopReason); udl.add(map); } getBusiParam().setBusiConfirmParam("users", udl); doneCodeComponent.saveDoneCodeInfo(doneCode, getBusiParam().getCust().getCust_id(), null, getBusiParam().getBusiConfirmParamInfo()); } public Object queryStopByUsers(String userLists) throws Exception{ List<CUser> userList = null; String str = ""; if(StringHelper.isNotEmpty(userLists)){ Type type = new TypeToken<List<CUser>>(){}.getType(); userList = JsonHelper.gson.fromJson( userLists , type); } for(CUser user :userList){ List<JUserStop> list = jobComponent.queryStopByUserId(user.getUser_id()); for(JUserStop dto : list){ if(StringHelper.isNotEmpty(user.getStb_id())){ str +="机顶盒号为:"+user.getStb_id()+"的用户预报停日期为【"+DateHelper.dateToStr(dto.getStop_date())+"】;"; }else if(StringHelper.isNotEmpty(user.getModem_mac())){ str +="MODEM号为:"+user.getModem_mac()+"的用户预报停日期为【"+DateHelper.dateToStr(dto.getStop_date())+"】;"; }else{ str +="用户预报停日期为【"+DateHelper.dateToStr(dto.getStop_date())+"】;"; } } } if(StringHelper.isEmpty(str)){return null;} return str; } /** * 清除预报停,并且使得操作流水失效 * @param userId * @throws Exception */ public void removeStopByUserId(String userId) throws Exception{ List<JUserStop> userList = jobComponent.queryStopByUserId(userId); if(userList.size()>0){ //预报停需要修改费用,受理记录不失效 /*for(JUserStop stop:userList){ CDoneCode cDoneCode = doneCodeComponent.queryByKey(stop.getDone_code()); //更新流水状态 if (cDoneCode!=null) doneCodeComponent.updateStatus(cDoneCode.getDone_code(),cDoneCode.getBusi_code()); }*/ jobComponent.removeByUserId(userId); } } public void saveOpen(String stbId,String cardId,String modemMac,int tjFee) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //获取操作的客户、用户信息 CCust cust = getBusiParam().getCust(); String custId = cust.getCust_id(); String busiCode = getBusiParam().getBusiCode(); List<CUser> users = getBusiParam().getSelectedUsers(); //修改客户设备状态 custComponent.updateDeviceStatusByCode(custId, stbId, StatusConstants.USE); custComponent.updateDeviceStatusByCode(custId, cardId, StatusConstants.USE); custComponent.updateDeviceStatusByCode(custId, modemMac, StatusConstants.USE); List<Object> udl = new ArrayList<Object>(); int atvCount = 0; CUser atvUserPrint = new CUser(); for(CUser user:users){ //更新设备状态 custComponent.updateDeviceStatusByCode(custId, user.getStb_id(), StatusConstants.USE); custComponent.updateDeviceStatusByCode(custId, user.getCard_id(), StatusConstants.USE); custComponent.updateDeviceStatusByCode(custId, user.getModem_mac(), StatusConstants.USE); // userComponent.updateDevice(doneCode,user, // StringHelper.isNotEmpty(user.getStb_id())?user.getStb_id():stbId, // StringHelper.isNotEmpty(user.getCard_id())?user.getCard_id():cardId, // StringHelper.isNotEmpty(user.getModem_mac())?user.getModem_mac():modemMac); // //修改用户状态 // String userOldStatus = userComponent.queryUserLastStatus(user.getUser_id()); // if(StringHelper.isNotEmpty(userOldStatus)){ // updateUserStatus(doneCode, user.getUser_id(), user.getStatus(), userOldStatus); // }else{ // updateUserStatus(doneCode, user.getUser_id(), user.getStatus(), StatusConstants.ACTIVE); // } updateUserStatus(doneCode, user.getUser_id(), user.getStatus(), StatusConstants.ACTIVE); //生成激活用户JOB CUser userDto = queryUserById(user.getUser_id()); // if(USER_TYPE_BAND.equals(userDto.getUser_type()) || StringHelper.isNotEmpty(userDto.getCard_id())){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_USER, custId, user.getUser_id(), StringHelper.isNotEmpty(user.getStb_id())?user.getStb_id():stbId, StringHelper.isNotEmpty(user.getCard_id())?user.getCard_id():cardId, StringHelper.isNotEmpty(user.getModem_mac())?user.getModem_mac():modemMac, null, null,JsonHelper.fromObject(userDto)); // } //修改用户产品状态为报停前的状态 List<CProdDto> prodList = userProdComponent.queryAllProdsByUserId(user.getUser_id()); for (CProdDto prod:prodList){ String oldStatus = userProdComponent.queryLastStatus(prod.getProd_sn()); // if (StringHelper.isEmpty(oldStatus)) { // if (prod.getInvalid_date().after(prod.getStatus_date())) // oldStatus = StatusConstants.ACTIVE; // else // oldStatus = StatusConstants.OWESTOP; // }else if(oldStatus.equals(StatusConstants.REQSTOP)){ // oldStatus = StatusConstants.ACTIVE; // } // String oldStatus = StatusConstants.ACTIVE; userProdComponent.updateProdStatus(doneCode,prod.getProd_sn(),prod.getStatus(), oldStatus); //生成激活产品任务 // if(StringHelper.isNotEmpty(userDto.getCard_id())){ if (isProdOpen(oldStatus)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, cust.getCust_id(), user.getUser_id(), StringHelper.isNotEmpty(user.getStb_id())?user.getStb_id():stbId, StringHelper.isNotEmpty(user.getCard_id())?user.getCard_id():cardId, StringHelper.isNotEmpty(user.getModem_mac())?user.getModem_mac():modemMac, prod.getProd_sn(),prod.getProd_id()); } Date invalidDate = userProdComponent.getInvalidDateByFeePro(prod.getProd_sn(), 0); //报开后更新到期日 userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), invalidDate); // userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), DateHelper.getDiffDays(prod.getStatus_date(), new Date()), 0, new CAcctAcctitem()); // } } // busiInfo += "终端类型:"+user.getUser_type_text()+" 设备号:"+user.getStb_id(); //更新用户产品的出帐日期 //next_bill_date已作废 // userProdComponent.updateNextBillDate(user.getUser_id(), DateHelper.dateToStr(user.getStatus_date())); Map<String,Object> map = new HashMap<String,Object>(); map.put("busiName", MemoryDict.getDictName(DictKey.BUSI_CODE, getBusiParam().getBusiCode())); if (("ATV").equals(user.getUser_type())) { atvCount ++; atvUserPrint = user; } else if (("DTV").equals(user.getUser_type())) { map.put("user_type", user.getUser_type()); CUserDtv dtv = (CUserDtv) user; map.put("terminal_type", dtv.getTerminal_type_text()); map.put("card_id", user.getCard_id()); map.put("stb_id", user.getStb_id()); udl.add(map); } else if(("BAND").equals(user.getUser_type())){ map.put("user_type", user.getUser_type()); CUserBroadband band = (CUserBroadband) user; map.put("login_name", band.getLogin_name()); map.put("modem_mac", user.getModem_mac()); map.put("recycle", "Modem及配件已回收"); udl.add(map); } } jobComponent.createCustWriteOffJob(doneCode, custId, SystemConstants.BOOLEAN_TRUE);//销帐会自动查信控 jobComponent.createCreditExecJob(doneCode, custId); //生成账务模式判断任务 jobComponent.createAcctModeCalJob(doneCode, custId); //生成计算到期日任务 jobComponent.createInvalidCalJob(doneCode, custId); //保存停机费 saveTjFee(doneCode,busiCode, custId, tjFee); this.updateUserCheckFlag(cardId); //保存模拟的打印信息 if(atvCount > 0){ Map<String,Object> map = new HashMap<String,Object>(); map.put("user_type", atvUserPrint.getUser_type()); map.put("terminal_type", ((CUserAtv) atvUserPrint).getTerminal_type_text()); map.put("user_count", getBusiParam().getSelectedUsers().size()); map.put("stop_count", atvCount); udl.add(map); } getBusiParam().setBusiConfirmParam("users", udl); doneCodeComponent.saveDoneCodeInfo(doneCode, cust.getCust_id(), null, getBusiParam().getBusiConfirmParamInfo()); saveAllPublic(doneCode,getBusiParam()); } /** * 保存用户销户 */ public void saveRemoveUser(String userId ,String banlanceDealType,String reclaim,Integer cancelFee, String transAcctId, String transAcctItemId) throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); List<CUser> userList = getBusiParam().getSelectedUsers(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); String busiCode = getBusiParam().getBusiCode(); //生成销帐任务 int jobId = jobComponent.createCustWriteOffJob(doneCode, custId,BOOLEAN_TRUE); List<String> stbList = CollectionHelper.converValueToList(userList, "stb_id"); List<String> cardList = CollectionHelper.converValueToList(userList, "card_id"); List<String> modemList = CollectionHelper.converValueToList(userList, "modem_mac"); List<String> devoceList = new ArrayList<String>(); devoceList.addAll(stbList); devoceList.addAll(cardList); devoceList.addAll(modemList); List<CCustDevice> buyModeList = null; if(devoceList.size()>0){ buyModeList = custComponent.findBuyModeById(custId, devoceList.toArray(new String[devoceList.size()])); } Map<String, CCustDevice> map = CollectionHelper.converToMapSingle(buyModeList, "device_code"); Map<String, UserDto> userMap = new HashMap<String, UserDto>(); if(CollectionHelper.isNotEmpty(userList)){ List<UserDto> allUsers = userComponent.queryUser(custId); userMap = CollectionHelper.converToMapSingle(allUsers, "user_id"); } List<Map<String, Object>> userInfos = new ArrayList<Map<String,Object>>(); //处理用户销户 for (CUser user:userList){ Map<String, Object> info = new HashMap<String, Object>(); info.put("user_type", user.getUser_type_text()); info.put("user", userMap.get(user.getUser_id())); //销户后保存原来的设备购买方式 user.setStb_buy(map.get(user.getStb_id()) != null?map.get(user.getStb_id()).getBuy_mode():null); user.setCard_buy(map.get(user.getCard_id()) != null?map.get(user.getCard_id()).getBuy_mode():null); user.setModem_buy(map.get(user.getModem_mac()) != null?map.get(user.getModem_mac()).getBuy_mode():null); //终止用户的产品 List<CProdDto> prodList = userProdComponent.queryByUserId(user.getUser_id()); info.put("prods", prodList ); for (CProd prod:prodList){ terminateProd(custId,user, doneCode, busiCode, prod, banlanceDealType, transAcctId, transAcctItemId); } //终止用户对应的账户 jobComponent.terminateAcct(jobId, user.getAcct_id(), null,doneCode); //更新用户对应的设备为空闲 custComponent.updateDeviceStatusByCode(custId, user.getStb_id(), StatusConstants.IDLE); custComponent.updateDeviceStatusByCode(custId, user.getCard_id(), StatusConstants.IDLE); if(StringHelper.isNotEmpty(user.getModem_mac())){ List<CUser> userDevice = userComponent.queryUserByDevice(DEVICE_TYPE_MODEM, user.getModem_mac()); if(userDevice != null && userDevice.size() == 1){ custComponent.updateDeviceStatusByCode(custId, user.getModem_mac(), StatusConstants.IDLE); } } //生成终止用户的业务指令 delUserJob(user, custId, doneCode); //记录用户到历史表 userComponent.removeUserWithHis(doneCode, user); userInfos.add(info); } Map<String, Object> info = new HashMap<String, Object>(); info.put("users", userInfos); doneCodeComponent.saveDoneCodeInfo(doneCode, custId, null, info); saveAllPublic(doneCode,getBusiParam()); } public void saveResendCa() throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); List<CUser> userList = getBusiParam().getSelectedUsers(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); for (CUser user:userList){ //重发加授权指令 List<CProdDto> prodList = userProdComponent.queryAllProdsByUserId(user.getUser_id()); for (CProd prod:prodList){ //正常状态的产品,重复指令 if (isProdOpen(prod.getStatus())){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); }else{ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_PROD, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); } } } saveAllPublic(doneCode,getBusiParam()); } /** * 重发开户指令 */ public void saveResendUserCmd() throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); List<CUser> userList = getBusiParam().getSelectedUsers(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); for (CUser user:userList){ //宽带 if(USER_TYPE_BAND.equals(user.getUser_type())){ List<CProdDto> prodList = userProdComponent.queryByUserId(user.getUser_id()); if(null != prodList && prodList.size() > 0){ //宽带必须订购产品后,才能开户,且已发送开户后不再发送开户,必须先删除原来的开户指令 jobComponent.deleteUserBand(user.getUser_id(),BusiCmdConstants.CREAT_USER); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, user.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prodList.get(0).getProd_sn(),prodList.get(0).getProd_id()); } }else{ CUser userDto = queryUserById(user.getUser_id()); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.CREAT_USER, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), userDto.getModem_mac(), null, null,JsonHelper.fromObject(userDto)); } } saveAllPublic(doneCode,getBusiParam()); } public void saveRefreshCa(String refreshType) throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); List<CUser> userList = getBusiParam().getSelectedUsers(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); for (CUser user:userList){ if (REFRESH_TYPE_TERMINAL.equals(refreshType)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_TERMINAL, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(),null,null); } else { //重发加授权指令 jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.REFRESH_TERMINAL, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(),null,null); } } saveAllPublic(doneCode,getBusiParam()); } public void saveClearBind() throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); CUser user = getBusiParam().getSelectedUsers().get(0); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.BAND_CLEAR_BIND, custId, user.getUser_id(), null, null, user.getModem_mac(), null, null, null); saveAllPublic(doneCode,getBusiParam()); } public void saveEditConnect(int maxConn) throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); CUser user = getBusiParam().getSelectedUsers().get(0); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.BAND_EDIT_CONNECT, custId, user.getUser_id(), null, null, user.getModem_mac(), null, null, "max_connect:''"+maxConn+"''"); saveAllPublic(doneCode,getBusiParam()); } /** * 修改宽带密码 */ public void saveEditPwd(String newPwd) throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); CUser user = getBusiParam().getSelectedUsers().get(0); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //生成计算用户信用度的JOB jobComponent.createCreditCalJob(doneCode, custId, null,BOOLEAN_TRUE); List<CUserPropChange> propChangeList = new ArrayList<CUserPropChange>(); CUser userDto = queryUserById(user.getUser_id()); userDto.setNewPassword(newPwd); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.BAND_EDIT_PWD, custId, user.getUser_id(), null, null, user.getModem_mac(), null, null, JsonHelper.fromObject(userDto)); CUserPropChange propChange = new CUserPropChange(); propChange.setColumn_name("password"); propChange.setOld_value(userDto.getPassword()); propChange.setNew_value(newPwd); propChangeList.add(propChange); userComponent.editUser(doneCode, getBusiParam().getSelectedUserIds().get(0), propChangeList); saveAllPublic(doneCode,getBusiParam()); } public void saveOffLine() throws Exception { //获取客户用户信息 String custId = getBusiParam().getCust().getCust_id(); CUser user = getBusiParam().getSelectedUsers().get(0); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.BAND_OFFLINE, custId, user.getUser_id(), null, null, user.getModem_mac(), null, null, null); saveAllPublic(doneCode,getBusiParam()); } /** * lxr:当促销资费和产品资费不一致时,且产品是包月产品时,原资费生效日期使用促销金额/促销资费 计算得到,非包月则取赠送时长 */ private String addPromotion(Integer doneCode, int times, String promotionId, List<DisctFeeDto> feeList, List<PPromotionAcct> acctList,int changeDays,String changeCreateSn) throws Exception { //获取客户用户信息 CUser user= getBusiParam().getSelectedUsers().get(0); CCust cust = getBusiParam().getCust(); List<PProdUserRes> userResList = prodComponent.queryUserResByCountyId(); if(acctList == null || acctList.size()==0){ List<PPromotionAcct> promotionAcctList = promComponent.queryPromotionAcct(promotionId); if(promotionAcctList != null && promotionAcctList.size() > 0){ throw new ServicesException("促销产品赠送数据异常,请重新选择"); } } //判断更换促销是否跨月 boolean monthchange=false; if(changeDays<0){ String monthsone= DateHelper.getFirstDateInCurrentMonth();//当月1号 CPromotionHis cph = userPromComponent.queryPromotionHis(changeCreateSn); if(cph == null){ throw new ComponentException("数据异常,请联系管理员"); } Date change_create_date=cph.getCreate_time();//原始促销日期 if(change_create_date.before(DateHelper.strToDate(monthsone))){ monthchange=true; } } //保存促销信息 String promSn = userPromComponent.addPromotion(changeCreateSn,cust.getCust_id(), user.getUser_id(), user.getAcct_id(), promotionId, doneCode,times,acctList); //判断是否有费用优惠,如果有,修改费用优惠信息 if (feeList != null && feeList.size()>0){ for (DisctFeeDto fee:feeList){ feeComponent.saveDisctFee(fee.getFee_sn(), FEE_DISCT_PROM, null, promSn, fee.getDisct_fee()); } } for (PPromotionAcct acct:acctList){ //如果配置的重复次数比允许的小,取配置重复次数 int repeatTimes = times; if(acct.getRepetition_times()*10 < repeatTimes){ repeatTimes = acct.getRepetition_times()*10 ; } if (PRESENT_TYPE_FEE.equals(acct.getPresent_type())) acct.setFee((int)(acct.getFee()*repeatTimes/10.0)); else acct.setPresent_month(acct.getPresent_month()*repeatTimes); } //判断是否有账户优惠,如果有需要修改账户余额 if (acctList != null){ //公用账户 CAcct acct = acctComponent.queryCustAcctByCustId(cust.getCust_id()); for (PPromotionAcct promAcct: acctList ){ String prodSn=""; CAcctAcctitem acctItem = null; Date beginDate = new Date(); //判断促销账目是否公用账目,根据促销账目提取客户账户下的公用账目信息(acct.getAcct_id() 是 客户账目ID) acctItem = acctComponent.queryAcctItemByAcctitemId(acct.getAcct_id(),promAcct.getAcctitem_id()); //是公用账目 if(acctItem != null){ //增加冻结余额 CAcctAcctitemInactive inactiveItem =new CAcctAcctitemInactive(); inactiveItem.setPromotion_sn(promSn); inactiveItem.setCust_id(cust.getCust_id()); inactiveItem.setAcct_id(acctItem.getAcct_id()); inactiveItem.setAcctitem_id(promAcct.getAcctitem_id()); inactiveItem.setCycle(promAcct.getCycle()); inactiveItem.setActive_amount(promAcct.getActive_amount()); inactiveItem.setInit_amount(promAcct.getFee()); inactiveItem.setBalance(promAcct.getFee()); inactiveItem.setCounty_id(user.getCounty_id()); inactiveItem.setArea_id(user.getArea_id()); inactiveItem.setDone_code(doneCode); acctComponent.addAcctItemInactive(inactiveItem); }else{//不是公用账目 PProdTariff newTariff = prodComponent.queryTariffById(promAcct.getTariff_id()); //判断用户账目是否存在 acctItem = acctComponent.queryAcctItemByAcctitemId(promAcct.getAcct_id(),promAcct.getAcctitem_id()); boolean oldprodsign=true; if (acctItem == null){ oldprodsign=false; //用户还没有订购此产品 PProd prod = prodComponent.queryProdById(promAcct.getAcctitem_id()); if (prod!=null){ String stopByInvalidDate = prodComponent.stopByInvaliddate(prod, newTariff); if (newTariff == null) throw new ServicesException("资费"+promAcct.getTariff_id()+"不存在"); CAcctBank acctBank = getBusiParam().getCustFullInfo().getAcctBank(); String isBankPay = SystemConstants.BOOLEAN_FALSE; //有银行账户且产品可以使用银行扣款 if(acctBank != null && StringHelper.isNotEmpty(acctBank.getBank_account())){ if(prod.getIs_bank_pay().equals(SystemConstants.BOOLEAN_TRUE) && acctBank.getStatus().equalsIgnoreCase(StatusConstants.ACTIVE)){ isBankPay = SystemConstants.BOOLEAN_TRUE; } } if (prod.getProd_type().equals(PROD_TYPE_BASE)){ prodSn = userProdComponent.addProd(doneCode,cust.getCust_id(), user.getAcct_id(), user.getUser_id(),null,null, prod.getProd_id(), prod.getProd_type(), PROD_ORDER_TYPE_PRESENT, DateHelper.getDate("-"),null,user.getStop_type(), newTariff, null,stopByInvalidDate,prod.getIs_base(),null,isBankPay); } else { // List<PPackageProd> childList = prodComponent.queryPackageProd(prod.getProd_id()); List<PPackageProd> childList = prodComponent.queryPackageProd(prod.getProd_id(),newTariff.getTariff_id()); prodSn = userProdComponent.addPackage(doneCode,cust.getCust_id(), user.getAcct_id(), user.getUser_id(), prod.getProd_id(), prod.getProd_type(), PROD_ORDER_TYPE_PRESENT ,DateHelper.getDate("-"),null, user.getStop_type(),newTariff, childList, null,stopByInvalidDate,prod.getIs_base(),null,isBankPay); } expressionUtil.setCcust(cust); expressionUtil.setCuser(user); for (PProdUserRes userRes:userResList){ if (userRes.getProd_id().equals(prod.getProd_id())){ if (StringHelper.isEmpty(userRes.getRule_id_text()) || expressionUtil.parseBoolean(userRes.getRule_id_text())){ String[] res = userRes.getRes_id().split(","); for (String resId:res){ userProdComponent.addUserProdres(prodSn, resId); } } } } jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, cust.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prodSn,prod.getProd_id()); //创建产品账目 acctComponent.createAcctItem(user.getAcct_id(), prod.getProd_id()); acctItem = acctComponent.queryAcctItemByAcctitemId(user.getAcct_id(),promAcct.getAcctitem_id()); } } CProd userProd = userProdComponent.queryByAcctItem(promAcct.getAcct_id(),promAcct.getAcctitem_id()); beginDate = userProd.getInvalid_date(); prodSn = userProd.getProd_sn(); if (!userProd.getTariff_id().equals(promAcct.getTariff_id())){ //用户已经订购了该产品情况下促销资费和已存在产品资费不一致,则换算成已存在产品资费促销 //按实际资费换算赠送金额 PProdTariff oldTariff = prodComponent.queryTariffById(userProd.getTariff_id()); //提取促销赠送的月数 float present_months=0; if (PRESENT_TYPE_FEE.equals(promAcct.getPresent_type())){ present_months=promAcct.getFee()*newTariff.getBilling_cycle()*1.0f/newTariff.getRent(); }else{ present_months=promAcct.getPresent_month()/10.0f; } if(oldTariff.getRent()==0){ //0资费情况 promAcct.setPresent_type(PRESENT_TYPE_TIME); promAcct.setPresent_month(Math.round(present_months*10)); }else { //非0资费,按赠送月数换算赠送金额 promAcct.setPresent_type(PRESENT_TYPE_FEE); promAcct.setFee( Math.round(present_months*oldTariff.getRent()*1.0F/oldTariff.getBilling_cycle())); promAcct.setPresent_month(Math.round(present_months*10)); promAcct.setActive_amount(oldTariff.getRent()); promAcct.setCycle(oldTariff.getBilling_cycle()); } //把促销资费更好成实际资费 newTariff=oldTariff; }else{ promAcct.setPresent_month(Math.round(promAcct.getPresent_month()*10)); } if (PRESENT_TYPE_FEE.equals(promAcct.getPresent_type())){ if(promAcct.getFee() > 0){ //增加冻结余额 CAcctAcctitemInactive inactiveItem =new CAcctAcctitemInactive(); inactiveItem.setPromotion_sn(promSn); inactiveItem.setCust_id(cust.getCust_id()); inactiveItem.setAcct_id(promAcct.getAcct_id()); inactiveItem.setAcctitem_id(promAcct.getAcctitem_id()); inactiveItem.setCycle(promAcct.getCycle()); if(newTariff.getBilling_cycle() == 1){ inactiveItem.setActive_amount(promAcct.getActive_amount()); }else if(newTariff.getBilling_cycle() > 1){ //包多月一次性激活完 inactiveItem.setActive_amount(!oldprodsign&&changeDays<0&&newTariff.getBilling_cycle()==1? promAcct.getFee()+changeDays*newTariff.getRent()/30:promAcct.getFee()); } inactiveItem.setInit_amount(!oldprodsign&&changeDays<0&&newTariff.getBilling_cycle()==1? promAcct.getFee()+changeDays*newTariff.getRent()/30:promAcct.getFee()); inactiveItem.setBalance(!oldprodsign&&changeDays<0&&newTariff.getBilling_cycle()==1? promAcct.getFee()+changeDays*newTariff.getRent()/30:promAcct.getFee()); inactiveItem.setCounty_id(user.getCounty_id()); inactiveItem.setArea_id(user.getArea_id()); inactiveItem.setDone_code(doneCode); if(monthchange){ //跨月更换促销时,赠送金额一次性解冻 inactiveItem.setActive_amount(inactiveItem.getInit_amount()); } acctComponent.addAcctItemInactive(inactiveItem); //修改产品到期日 if(newTariff.getBilling_cycle()==1){//包月情况 userProdComponent.updateInvalidDate(doneCode, prodSn, 0,changeDays<0&&newTariff.getBilling_cycle()==1? promAcct.getFee()+changeDays*newTariff.getRent()/30:promAcct.getFee(), acctItem); }else{//包多月情况 int allbill_fee=promAcct.getFee(), months = 0; if(promAcct.getPresent_month()==null||promAcct.getPresent_month()==0){ promAcct.setPresent_month(Math.round(promAcct.getFee()*newTariff.getBilling_cycle()*10.0f/newTariff.getRent())); months = promAcct.getPresent_month()/10; }else{ int m = promAcct.getPresent_month()/10; months = (int)(m*times/10.0); } int bill_rent=promAcct.getFee()/months; int first_bill_month=bill_rent+allbill_fee-bill_rent*months; int bill_month_index=0,bill_fee; while(allbill_fee>0){ bill_fee=(bill_month_index==0?first_bill_month:bill_rent); if(bill_fee>=allbill_fee){ bill_fee=allbill_fee; allbill_fee=0; }else{ allbill_fee=allbill_fee-bill_fee; } //按到期日来判断开始账单的账期 String billingCycle = DateHelper.format( DateHelper.getNextMonthByNum(userProd.getInvalid_date().after(new Date())?userProd.getInvalid_date():new Date(),bill_month_index) , DateHelper.FORMAT_YM); billComponent.saveMuchMonthBill(userProd, doneCode, billingCycle, bill_fee, bill_fee); bill_month_index++; } //账户欠费金额修改和直接修改到期日 acctComponent.changeAcctItemOwefee(false, userProd.getAcct_id(), userProd.getProd_id(), promAcct.getFee()); if (beginDate.before(new Date())){ beginDate =DateHelper.today(); } userProdComponent.updateInvalidDate(doneCode, prodSn, userProdComponent.getDate(beginDate,months,(promAcct.getPresent_month()%10) *3+changeDays)); } } } else { if (beginDate.before(new Date())) beginDate = new Date(); if (newTariff.getRent() ==0 && newTariff.getBilling_type().equals(BILLING_TYPE_MONTH) ){ //新资费为零资费 //更新产品到期日 if (StringHelper.isNotEmpty(prodSn)){ int m = promAcct.getPresent_month()/100; int d = (promAcct.getPresent_month()%10) *3; userProdComponent.updateInvalidDate(doneCode, prodSn, userProdComponent.getDate(beginDate,m,d+changeDays )); } } else { } //创建销帐任务 jobComponent.createCustWriteOffJob(doneCode, cust.getCust_id(),BOOLEAN_TRUE); } } } } PromotionDto basic = promComponent.queryPromotionSimpleInfoByKey(promotionId); PromotionDto param = queryPromInfoById(cust.getCust_id(), user.getUser_id(), promotionId); param.setTheme_name(basic.getTheme_name()); String promotion_desc = basic.getPromotion_desc(); if(StringHelper.isEmpty(promotion_desc)){ promotion_desc = ""; } promotion_desc = promotion_desc.replaceAll("\r", "").replaceAll("\n", "</br>").replaceAll("\"", ""); param.setPromotion_desc(promotion_desc); getBusiParam().setBusiConfirmParam("promotion", param); Map<String,Object> map = new HashMap<String,Object>(); map.put("busiName", MemoryDict.getDictName(DictKey.BUSI_CODE, getBusiParam().getBusiCode())); map.put("promotion_desc", promotion_desc); map.put("promotion_name", basic.getPromotion_name()); map.put("user", user); doneCodeComponent.saveDoneCodeInfo(doneCode, cust.getCust_id(),user.getUser_id(), map); return promSn; } public void savePromotion(int times,String promotionId, List<DisctFeeDto> feeList,List<PPromotionAcct> acctList) throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); addPromotion(doneCode, times, promotionId, feeList, acctList,0,null); String custId = getBusiParam().getCust().getCust_id(); //生成账务模式判断 jobComponent.createAcctModeCalJob(doneCode, custId); //生成计算到期日任务 jobComponent.createInvalidCalJob(doneCode, custId); saveAllPublic(doneCode,getBusiParam()); } public void saveChangePromotion(int times, String promotionSn, String promotionId, List<PPromotionAcct> newAcctList) throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); //先前促销产品已赠送一部分冻结金额,现变更促销后,加上这部分赠送冻结金额 CPromotion promotion = userPromComponent.queryBySn(promotionSn); //原始促销日期 Date change_create_date=promotion.getCreate_time(); if(!promotion.getPromotion_sn().equals(promotion.getPromotion_create_sn()) &&StringHelper.isNotEmpty(promotion.getPromotion_create_sn())){ change_create_date=userPromComponent.queryPromotionHis(promotion.getPromotion_create_sn()).getCreate_time(); } //提取变更天数 int changeDays=DateHelper.getDiffDays(DateHelper.today(),DateHelper.strToDate( DateHelper.dateToStr(change_create_date))); //取消促销 cancelPromotion(doneCode, BusiCodeConstants.CHANGE_PROMOTION, promotionSn); //新增促销 String newPromotionSn = addPromotion(doneCode, times, promotionId, null, newAcctList,changeDays,promotion.getPromotion_create_sn()); //将原冻结已赠送金额返还 String custId = getBusiParam().getCust().getCust_id(); jobComponent.createCustWriteOffJob(doneCode, custId, BOOLEAN_TRUE); jobComponent.createAcctModeCalJob(doneCode, custId); //生成计算到期日任务 jobComponent.createInvalidCalJob(doneCode, custId); saveAllPublic(doneCode,getBusiParam()); } /** * lxr:当产品是促销订购时,回退删除日租、作废实时账单、删除资费变更job;促销回退时,恢复原始资费 */ private void cancelPromotion(Integer doneCode,String busiCode,String promotionSn) throws Exception { //查找促销账户信息 CPromotion promotion = userPromComponent.queryBySn(promotionSn); List<CPromotionAcct> acctPromList = userPromComponent.queryAcctBySn(promotionSn); List<CAcctAcctitemInactive> inactiveList = acctComponent.queryInactiveByPromSn(promotionSn); CUser user = userComponent.queryUserById(promotion.getUser_id()); //遍历账户,判断产品是否为新订购产品,如果是,则直接删除相信的信息,如果不是则恢复产品信息到促销前状态 CAcctAcctitemInactive acctItemInactive = new CAcctAcctitemInactive(); for (CPromotionAcct promAcct :acctPromList){ //查找账目对应的产品 CProd prod = userProdComponent.queryByAcctItem(promAcct.getAcct_id(), promAcct.getAcctitem_id()); CAcctAcctitem acctItem= acctComponent.queryAcctItemByAcctitemId(promAcct.getAcct_id(), promAcct.getAcctitem_id()); for (CAcctAcctitemInactive inactive:inactiveList){ if (inactive.getAcctitem_id().equals(promAcct.getAcctitem_id())){ acctItemInactive = inactive; break; } } if (prod !=null){ //原来的判断,当天的促销,账目金额都是解冻金额,且订购方式为赠送 // if (DateHelper.dateToStr(prod.getOrder_date()).equals(DateHelper.formatNow()) && // acctItem.getActive_balance().compareTo(acctItemInactive.getUse_amount())==0 && // PROD_ORDER_TYPE_PRESENT.equals(prod.getOrder_type())){ //现改成:促销订购的产品,且订购方式仍为赠送(缴费后会变成订购) if (promotion.getDone_code().equals(prod.getDone_code()) && PROD_ORDER_TYPE_PRESENT.equals(prod.getOrder_type())){ //当天新订购产品,且帐目余额全部为解冻资金,直接删除产品以及账目 //生成钝化产品的指令 jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_PROD, user.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); //删除产品 userProdComponent.removeProdWithHis(doneCode, prod); //删除产品对应的账目 acctComponent.removeAcctItemWithoutHis(user.getCust_id(),user.getAcct_id(),prod.getProd_id(), doneCode,this.getBusiParam().getBusiCode()); //删除实时账单和日租 billComponent.cancelBill(prod.getProd_sn(),DateHelper.nowYearMonth()); billComponent.deleteRentfee(prod.getProd_sn(),prod.getCounty_id()); //删除资费job jobComponent.deleteNewProdTariffJob(prod.getProd_sn()); } else { PProdTariff Tariff = prodComponent.queryTariffById(prod.getTariff_id()); if (Tariff!=null&&Tariff.getRent()>0&&promAcct.getFee()>0){ int initAmount = 0; //冻结初始金额 if(acctItemInactive != null){ //参加促销的产品退订了再订购,然后回退促销时,账目冻结明细不存在了 acctItemInactive = acctComponent.queryByPromotionSn( promotionSn,acctItemInactive.getAcct_id(),acctItemInactive.getAcctitem_id()); if(acctItemInactive != null){ initAmount = acctItemInactive.getInit_amount(); if (acctItemInactive.getUse_amount()>0){ //已经有返回 acctComponent.changeAcctItemBanlance(doneCode, busiCode, promotion.getCust_id(), promAcct.getAcct_id(), promAcct.getAcctitem_id(), ACCT_CHANGE_PROMOTION_CANCEL, ACCT_FEETYPE_PRESENT, acctItemInactive.getUse_amount()*-1, null); } acctComponent.removeInactiveWithHis(acctItemInactive, doneCode); } } //修改用户产品的到期日 if(Tariff.getBilling_cycle()>1){ //包多月情况处理:删除账单,修改到期日 List<BBill> muchbills=billComponent.queryMuchMonthProdBill(prod.getProd_sn(),promotion.getDone_code() , DateHelper.format(new Date(), DateHelper.FORMAT_YM), BILL_COME_FROM_MUCH); if(muchbills!=null&&muchbills.size()>0){ int owefee=0; int billfee=0; for(BBill bill:muchbills){ owefee=owefee+bill.getOwe_fee(); billfee=billfee+bill.getFinal_bill_fee(); billComponent.cancelBill(bill.getBill_sn()); } acctComponent.changeAcctItemOwefee(false, prod.getAcct_id(), prod.getProd_id(), owefee*-1); } int months=Math.round(initAmount*Tariff.getBilling_cycle()*10.0F/Tariff.getRent()); int m = months/10; int d = (months%10) *3; userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), userProdComponent.getDate(prod.getInvalid_date(),m*-1,d*-1)); }else{ userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(),0, initAmount*-1, acctItem); } } else { if(promAcct.getMonths() != null) userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), userProdComponent.getDate(prod.getInvalid_date(), promAcct.getMonths()*-1, 0)); } } }else{ //公用账目 if (promAcct.getAcctitem_id().equals(acctItemInactive.getAcctitem_id()) && promAcct.getFee()>0){ if (acctItemInactive.getUse_amount()>0){ //已经有返回 acctComponent.changeAcctItemBanlance(doneCode, busiCode, promotion.getCust_id(), acctItemInactive.getAcct_id(), acctItemInactive.getAcctitem_id(), ACCT_CHANGE_PROMOTION_CANCEL, ACCT_FEETYPE_PRESENT, acctItemInactive.getUse_amount()*-1, null); } acctComponent.removeInactiveWithHis(acctItemInactive, doneCode); } } } //删除促销 userPromComponent.removeBySn(doneCode,promotionSn); //调用返销帐接口 jobComponent.createCustWriteOffJob(doneCode, promotion.getCust_id(), BOOLEAN_FALSE); //生成销账任务 jobComponent.createCustWriteOffJob(doneCode, promotion.getCust_id(), BOOLEAN_TRUE); } public void saveCancelPromotion(String promotionSn) throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); String busiCode = getBusiParam().getBusiCode(); cancelPromotion(doneCode, busiCode, promotionSn); saveDoneCode(doneCode, busiCode, getBusiParam().getCust().getCust_id()); String custId = getBusiParam().getCust().getCust_id(); //生成计算账目模式判断任务 jobComponent.createAcctModeCalJob(doneCode, custId); //生成计算到期日任务 jobComponent.createInvalidCalJob(doneCode, custId); } //模拟剪线 public void saveAtvCustLine() throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //获取操作的客户、用户信息 String custId = getBusiParam().getCust().getCust_id(); CUserAtv user = (CUserAtv) getBusiParam().getSelectedUsers().get(0); CUser userDto = queryUserById(user.getUser_id()); String userId = user.getUser_id(); //修改用户状态 updateUserStatus(doneCode, user.getUser_id(), user.getStatus(), StatusConstants.CUSTLINE); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_USER, custId, user.getUser_id(), null, null, null, null, null, JsonHelper.fromObject(userDto)); List<CProdDto> prodList = userProdComponent.queryByUserId(userId); for(CProdDto prod : prodList){ List<CProdPropChange> changeList = new ArrayList<CProdPropChange>(); changeList.add(new CProdPropChange("status", prod.getStatus(),StatusConstants.CUSTLINE)); changeList.add(new CProdPropChange("status_date", DateHelper.dateToStr(prod.getStatus_date()),DateHelper.dateToStr(new Date()))); userProdComponent.editProd(doneCode,prod.getProd_sn(),changeList); //生成钝化产品任务 if (isProdOpen(prod.getStatus())){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.PASSVATE_PROD, custId, user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); } } // String busiInfo = "终端类型:"+user.getUser_type_text()+" 设备号:"+user.getStb_id(); getBusiParam().setBusiConfirmParam("user", user); // saveAllPublic(doneCode,getBusiParam(),busiInfo); saveAllPublic(doneCode,getBusiParam()); } //模拟剪线 恢复 public void saveAtvActive() throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //获取操作的客户、用户信息 String custId = getBusiParam().getCust().getCust_id(); CUserAtv user = (CUserAtv) getBusiParam().getSelectedUsers().get(0); String userId = user.getUser_id(); //修改用户状态 updateUserStatus(doneCode, userId, user.getStatus(), StatusConstants.ACTIVE); List<CProdDto> prodList = userProdComponent.queryByUserId(userId); for (CProd prod:prodList){ String oldStatus = userProdComponent.queryLastStatus(prod.getProd_sn()); if (StringHelper.isEmpty(oldStatus)) { if (prod.getInvalid_date().after(prod.getStatus_date())) oldStatus = StatusConstants.ACTIVE; else oldStatus = StatusConstants.OWESTOP; }else if(oldStatus.equals(StatusConstants.REQSTOP)){ oldStatus = StatusConstants.ACTIVE; }/*else if(oldStatus.equals(StatusConstants.CUSTLINE)){ oldStatus = StatusConstants.ACTIVE; }*/ userProdComponent.updateProdStatus(doneCode,prod.getProd_sn(),prod.getStatus(), oldStatus); //生成激活产品任务 if (isProdOpen(oldStatus)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, custId, userId, null, null, null, prod.getProd_sn(),prod.getProd_id()); } //报开后更新到期日 userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), DateHelper.getDiffDays(prod.getStatus_date(), new Date()), 0, new CAcctAcctitem()); } //生成计算到期日任务 jobComponent.createInvalidCalJob(doneCode, custId); //生成信用计算、修改用户信息、激活设备任务 jobComponent.createCreditCalJob(doneCode, custId, null,BOOLEAN_TRUE); //更新用户产品的出帐日期 //next_bill_date已作废 // userProdComponent.updateNextBillDate(user.getUser_id(), DateHelper.dateToStr(user.getStatus_date())); saveAllPublic(doneCode,getBusiParam()); } /* * 查询用户可以选择的促销 */ public List<PromotionDto> querySelectableProm() throws Exception { String userId = getBusiParam().getSelectedUserIds().get(0); String custId = getBusiParam().getCust().getCust_id(); List<PromotionDto> promotions = promComponent.queryManualPromotion(userId); List<CFee> feeList = feeComponent.queryUserFee(custId,userId); List<AcctitemDto> balanceList = acctComponent.queryAcctAndAcctItemByUserId(custId,userId); List<CProdDto> prodList = userProdComponent.queryByUserId(userId); expressionUtil.setAllValue(getBusiParam(), feeList, balanceList,prodList); expressionUtil.setCuserStb(userComponent.queryUserStbByUserId(userId)); for (int i = promotions.size() - 1; i >= 0; i--) { PromotionDto promotionDto = promotions.get(i); Integer times = expressionUtil.parsePromotion(promotionDto .getRule_str(), promotionDto.getRepetition_times()); debug(getClass(), "手动促销"+promotionDto.getPromotion_name()+promotionDto .getRule_str()+"结果="+times); if (times ==0) { // 一次促销都不满足 promotions.remove(i); } promotionDto.setRepetition_times(times); } return promotions; } /** * 根据促销ID查询促销详细信息 * * @param promotionId * 促销ID * @return * @throws Exception */ public PromotionDto queryPromInfoById(String custId,String userId,String promotionId) throws Exception{ PromotionDto promotionDto = promComponent.queryById(promotionId); List<PPromotionAcct> acctItemList = promotionDto.getAcctList(); for(PPromotionAcct acctItem : acctItemList){ if(StringHelper.isEmpty(acctItem.getTariff_id())){ AcctitemDto acctitemDto = null; List<AcctitemDto> acctitemDtolist = acctComponent.queryAcctAndAcctItemByUserId(custId, userId); for (AcctitemDto dto : acctitemDtolist) { if(dto.getAcctitem_id().equals(acctItem.getAcctitem_id())){ acctitemDto = dto; } } if(null == acctitemDto){ throw new ServicesException("参加该促销,需先订购产品"+acctItem.getAcctitem_name()); } } List<ProdResDto> resList = prodComponent.queryProdRes(acctItem.getAcctitem_id()); if(resList != null && resList.size() > 0){ for(ProdResDto prod : resList){ List<ResGroupDto> rgdList = prod.getDynamicResList(); CProd cProd = userProdComponent.queryByProdId(userId, acctItem.getAcctitem_id()); if(rgdList.size() > 0 && cProd == null){ throw new ServicesException("参加该促销,需先订购产品"+prod.getProd_name()); } } } } promotionDto.setUserFeeList(feeComponent.queryPromotionFee(custId, userId, promotionId)); return promotionDto; } private void updateDevice(Integer doneCode,String deviceCode, String CustId,String status) throws JDBCException, Exception { if (StringHelper.isNotEmpty(deviceCode)){ DeviceDto device = deviceComponent.queryDeviceByDeviceCode(deviceCode); custComponent.transDevice(doneCode,CustId, device); custComponent.updateDeviceStatus(CustId, device.getDevice_id(), status); } } /** * 批量临时授权. * @throws Exception */ public void saveOpenTempBatch() throws Exception { try{ Integer doneCode = doneCodeComponent.gDoneCode(); String custId = getBusiParam().getCust().getCust_id(); List<CUser> users = getBusiParam().getSelectedUsers(); for(CUser user:users){ saveOpenTempSingle(doneCode,custId,user); } saveAllPublic(doneCode,getBusiParam()); }catch (Exception e) { throw new ServicesException(e); } } public void saveOpenTemp() throws Exception { try{ Integer doneCode = doneCodeComponent.gDoneCode(); String custId = getBusiParam().getCust().getCust_id(); CUser user= getBusiParam().getSelectedUsers().get(0); saveOpenTempSingle(doneCode,custId,user); saveAllPublic(doneCode,getBusiParam()); }catch (Exception e) { throw new ServicesException(e); } } /** * 用户临时授权 * 20140416 by wqy 0001234: 临时授权BUG;月包:改阈值,通过信控改状态为临时开通;年包:根据配置天数,延长到期日,并前台改状态为临时开通,发加授权 * @param userId * @throws Exception */ private void saveOpenTempSingle(Integer doneCode,String custId,CUser user) throws Exception { //获取业务流水 //String busiCode = getBusiParam().getBusiCode(); //获取临时授权的配置信息 TOpenTemp openTempCfg = busiConfigComponent.queryOpenTempCfg(user.getUser_type()); if (openTempCfg == null) throw new ServicesException("该地区没有配置 "+ user.getUser_type_text() +" 临时授权"); //获取用户最近一个周期内的临时授权次数,判断是否可以临时授权 int openTempTimes = doneCodeComponent.queryOpenTempTimes(user.getUser_id(), openTempCfg.getCycle()); if (openTempTimes >= openTempCfg.getTimes()) throw new ServicesException("该用户在"+openTempCfg.getCycle()+"个月内已经有过"+openTempTimes+"次临时授权,不能再做临时授权"); //查找用户基本包 List<CProdDto> prodList = userProdComponent.queryUserDtvBaseProd(user.getUser_id()); if (prodList == null || prodList.size() == 0) throw new ServicesException("该用户没有 "+user.getUser_type_text()+" 基本包,不能临时授权"); List<UserDto> allUsersOfCust = userComponent.queryUser(custId);//当前客户所有的用户 UserDto zzd = null; for (UserDto userDto : allUsersOfCust) {//allUsersOfCust 如果为空就进不来这里了... if(userDto.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD)){ zzd = userDto; break; } } CProdDto prod = new CProdDto(); Date date = null; //busicode : 1033 从机临时开通时须判断主机状态(主机符合临时开通的状态)。 //检查主终端的条件 if(zzd != null && !zzd.getUser_id().equals(user.getUser_id()) ){ prod = new CProdDto(); List<CProdDto> zzdBaseProdList = userProdComponent.queryUserDtvBaseProd(zzd.getUser_id()); if(CollectionHelper.isEmpty(zzdBaseProdList)){ throw new ServicesException("该客户没有 "+user.getUser_type_text()+" 基本包,不能临时授权"); } for(CProdDto dto:zzdBaseProdList){ if(!dto.getStatus().equals(StatusConstants.OWESTOP)){ throw new ServicesException("该客户主终端基本包【"+dto.getProd_name()+"】的状态不是欠费停,不能临时授权"); } } } for(CProdDto dto:prodList){ if(!dto.getStatus().equals(StatusConstants.OWESTOP)){ throw new ServicesException("该用户基本包【"+dto.getProd_name()+"】的状态不是欠费停,不能临时授权"); } Date statusDate = DateHelper.strToDate(DateHelper.dateToStr(dto.getStatus_date())); if(date == null || statusDate.compareTo(date)>0){ date = statusDate; prod = dto; }else if(statusDate.compareTo(date)==0 && dto.getBilling_cycle()==1){ //同一天的优先月包 date = statusDate; prod = dto; } } //获取产品的资费信息 PProdTariff tariff = userProdComponent.queryProdTariffById(prod.getTariff_id()); //包多月或零资费基本包,修改到期日,发送加授权,改状态为临时开通 if(prod.getStop_by_invalid_date().equals(BOOLEAN_TRUE)){ if(prod.getBilling_cycle()>1 || tariff.getRent() == 0){ Date invalidDate = DateHelper.addDate(new Date(),openTempCfg.getDays()); //修改到期日,并修改产品状态为正常 userProdComponent.updateInvalidDateStatus(doneCode, prod.getProd_sn(), invalidDate,BusiCodeConstants.USER_OPEN_TEMP); jobComponent.createCreditExecJob(doneCode, user.getCust_id()); }else{ //包月产品临时授权按阈值处理,修改停机类型为账务模式 List<CProdPropChange> propChangeList = new ArrayList<CProdPropChange>(); CProdPropChange prop = new CProdPropChange(); prop.setProd_sn(prod.getProd_sn()); prop.setDone_code(doneCode); prop.setColumn_name("stop_by_invalid_date"); prop.setOld_value(BOOLEAN_TRUE); prop.setNew_value(BOOLEAN_FALSE); prop.setArea_id(prod.getArea_id()); prop.setCounty_id(prod.getCounty_id()); propChangeList.add(prop); userProdComponent.editProd(doneCode, prod.getProd_sn(), propChangeList); updateThread(doneCode, custId, prod.getAcct_id(), prod.getProd_id(), tariff.getRent(), openTempCfg.getDays()); } }else{ updateThread(doneCode, custId, prod.getAcct_id(), prod.getProd_id(), tariff.getRent(), openTempCfg.getDays()); } } private void updateThread(Integer doneCode, String custId, String acctId, String acctItemdId, int rent, int days) throws Exception { //查找产品对应的账目信息 CAcctAcctitem acctitem = acctComponent.queryAcctItemByAcctitemId(acctId, acctItemdId); int ownFee = acctitem.getOwe_fee() + acctitem.getReal_fee() - acctitem.getActive_balance() - acctitem.getOrder_balance(); int thresholdFee =rent/30*days; int tempThreshold = ownFee>0?ownFee+thresholdFee:thresholdFee; //更新账目的临时阈值 acctComponent.updateTempThreshold(acctitem.getAcct_id(),acctitem.getAcctitem_id(),tempThreshold); //生成销帐任务 jobComponent.createCustWriteOffJob(doneCode, custId,BOOLEAN_TRUE); } private void saveTjFee(int doneCode,String busiCode,String custId,int tjFee) throws Exception{ if (tjFee>0){ //查找客户公用账户 CAcct acct = acctComponent.queryCustAcctByCustId(custId); //保存缴费记录 PayDto pay = new PayDto(); pay.setAcct_id(acct.getAcct_id()); pay.setAcctitem_id(ACCTITEM_TJ); pay.setFee(tjFee); this.saveAcctPay(doneCode, pay); } } /* (non-Javadoc) * @see com.ycsoft.business.service.IUserService#queryValidRes(java.lang.String) */ public List<UserRes> queryValidRes(String userId) throws Exception { return queryValidRes(userId.split(",")); } /** * 保存用户排斥的资源 * @param userId * @param custId * @param resIds * @throws Exception */ public void saveRejectRes(String userId,String custId,String resIds) throws Exception{ CUser user= getBusiParam().getSelectedUsers().get(0); //查找原有的排斥资源 List<PRes> oldRejRes= userProdComponent.queryRejectRes(user.getUser_id(), user.getCust_id()); String[] resIdsArr = null; Integer doneCode = doneCodeComponent.gDoneCode(); userComponent.saveRejectRes(userId, custId, resIds); if(StringHelper.isNotEmpty(resIds)){ resIdsArr = resIds.split(","); } //生成排斥资源的任务 String addRejRes=""; String delRejRes=""; for (PRes res:oldRejRes){ boolean exits = false; if(resIdsArr!=null){ for (String resId:resIdsArr){ if (res.getRes_id().equals(resId)){ exits = true; break; } } } if (!exits) delRejRes +=","+res.getRes_id(); } if(resIdsArr!=null){ for (String resId:resIdsArr){ boolean exits = false; for (PRes res:oldRejRes){ if (res.getRes_id().equals(resId)){ exits = true; break; } } if (!exits) addRejRes +=","+resId; } } if (StringHelper.isNotEmpty(addRejRes)){ addRejRes = addRejRes.substring(1); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ADD_REJECT_RES, user.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(),null, null,"RES_ID:''"+addRejRes+"''"); } if (StringHelper.isNotEmpty(delRejRes)){ delRejRes = delRejRes.substring(1); jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.DEL_REJECT_RES, user.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), user.getModem_mac(),null, null,"RES_ID:''"+delRejRes+"''"); } saveAllPublic(doneCode,getBusiParam()); } /** * 部门下的是所有操作员 * @param deptId * @return * @throws JDBCException */ public List<SOptr> getByDeptId(String deptId) throws JDBCException{ return userComponent.getByDeptId(deptId); } public TBusiFee queryZlFeeById() throws Exception { return busiConfigComponent.queryZlFeeById(); } /** * 保存租赁费用 * @param feeId * @param amount * @return * @throws Exception */ public void saveLeaseFee(String feeId, String amount) throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); List<FeeBusiFormDto> feeslist = new ArrayList<FeeBusiFormDto>(); FeeBusiFormDto fees = new FeeBusiFormDto(); fees.setFee_id(feeId); fees.setReal_pay(Integer.parseInt(amount)); fees.setCount(0); feeslist.add(fees); getBusiParam().setFees(feeslist); saveAllPublic(doneCode,getBusiParam()); } /* (non-Javadoc) * @see com.ycsoft.business.service.IUserService#checkLoginName(java.lang.String) */ public void checkLoginName(String loginName) throws Exception { if(StringHelper.isNotEmpty(loginName)){ if(getOptr().getCounty_id().equals(COUNTY_9005)){ Pattern p = Pattern.compile("^gd[0-9]{4,5}$"); Matcher matcher = p.matcher(loginName); if(!matcher.find()){ throw new ServicesException("潜江宽带登录账号以gd开头,后面接4或5位数字"); } } CUser user = userComponent.queryUserByLoginName(loginName); if(null != user){ throw new ServicesException("宽带登录账号不能重复"); } } } //充值卡充值 @Deprecated public void saveRechargeCard(String icCard,String rechargeCard) throws Exception { // java.net.URL endpointURL = new java.net.URL(RECHARFE_CARD_URL); // javax.xml.rpc.Service service = new org.apache.axis.client.Service(); // RechargeServiceHttpBindingStub drcom = new RechargeServiceHttpBindingStub(endpointURL, service); // // RechargeReq req = new RechargeReq(); // req.setUserName(CARD_USER_NAME); // req.setPassword(CARD_RECHARGE_CARD); // req.setIcCard(icCard); // req.setRechargeCard(rechargeCard); // return drcom.recharge(req); } /* (non-Javadoc) * @see com.ycsoft.business.service.IUserService#saveToSingleCard(java.lang.String, java.lang.String, java.lang.String, boolean, java.lang.String) */ public void saveToSingleCard(String newCardId, String str4, String str5, boolean reclaim, String deviceStatus) throws Exception { /* Integer doneCode = doneCodeComponent.gDoneCode(); CCust cust = getBusiParam().getCust(); CUser user = getBusiParam().getSelectedUsers().get(0); String busiCode = getBusiParam().getBusiCode(); //取消原来的双向,变成单向 CUser userDto = queryUserById(user.getUser_id()); if(DTV_SERV_TYPE_DOUBLE.equals(userDto.getServ_type())){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.CANCEL_INTERACTIVE, user.getCust_id(), user.getUser_id(), user.getStb_id(), user.getCard_id(), "", null,null,JsonHelper.fromObject(userDto)); String modemMac = user.getModem_mac(); CCustDevice custDevice = custComponent.queryCustDeviceByCodeAndCustId(user.getCust_id(), modemMac); if(custDevice != null){ //单modem CUserBroadband band = userComponent.queryBandByDeviceId(modemMac); //单modem 双向、宽带共用一个modem if(band == null){ custComponent.updateDeviceStatusByCode(user.getCust_id(), modemMac, StatusConstants.IDLE); } } } //更换设备 changeStbCard(true,user.getStb_id(), user.getCard_id(), null, null, newCardId, null, user.getCust_id(), doneCode,busiCode); //回收设备 if(reclaim){ DeviceDto device = null; //回收机顶盒 device = deviceComponent.queryDeviceByDeviceCode(user.getStb_id()); reclaimDevice(device.getDevice_id(), deviceStatus,SystemConstants.RECLAIM_REASON_XHTH, 0, cust, doneCode, busiCode); //回收卡 if(!newCardId.equals(user.getCard_id())){ device = deviceComponent.queryDeviceByDeviceCode(user.getCard_id()); reclaimDevice(device.getDevice_id(), deviceStatus,SystemConstants.RECLAIM_REASON_XHTH, 0, cust, doneCode, busiCode); } } //修改用户属性 List<CUserPropChange> propChangeList = new ArrayList<CUserPropChange>(); if(StringHelper.isNotEmpty(str4) && !str4.equals(user.getStr4())){ CUserPropChange change = new CUserPropChange(); change.setUser_id(user.getUser_id()); change.setColumn_name("str4"); change.setOld_value(user.getStr4()); change.setNew_value(str4); propChangeList.add(change); } if(StringHelper.isNotEmpty(str5) && !str5.equals(user.getStr5())){ CUserPropChange change = new CUserPropChange(); change.setUser_id(user.getUser_id()); change.setColumn_name("str5"); change.setOld_value(user.getStr5()); change.setNew_value(str5); propChangeList.add(change); } //取消双向 if(DTV_SERV_TYPE_DOUBLE.equals(userDto.getServ_type())){ if (StringHelper.isNotEmpty(user.getNet_type())){ CUserPropChange change = new CUserPropChange(); change.setUser_id(user.getUser_id()); change.setColumn_name("net_type"); change.setOld_value(user.getNet_type()); change.setNew_value(""); propChangeList.add(change); } //双向用户类型 if (StringHelper.isNotEmpty(user.getStr11())){ CUserPropChange change = new CUserPropChange(); change.setUser_id(user.getUser_id()); change.setColumn_name("str11"); change.setOld_value(user.getStr11()); change.setNew_value(""); propChangeList.add(change); } if (StringHelper.isNotEmpty(userDto.getPassword())){ CUserPropChange change = new CUserPropChange(); change.setUser_id(user.getUser_id()); change.setColumn_name("password"); change.setOld_value(userDto.getPassword()); change.setNew_value(""); propChangeList.add(change); } if (userDto.getServ_type().equals(DTV_SERV_TYPE_DOUBLE)){ CUserPropChange change = new CUserPropChange(); change.setUser_id(user.getUser_id()); change.setColumn_name("serv_type"); change.setOld_value(userDto.getServ_type()); change.setNew_value(DTV_SERV_TYPE_SINGLE); propChangeList.add(change); } } userComponent.editUser(doneCode, user.getUser_id(), propChangeList); saveAllPublic(doneCode,getBusiParam()); */ } public void updateUserStatus(List<String> userIds,String userStatus) throws Exception { List<CUser> userList = userComponent.queryUserByUserIds(userIds); if(userList == null || userList.size()==0) throw new Exception("未查询到用户,请确定用户ID是否正确"); List<CUser> users = new ArrayList<CUser>(); // if(userStatus.equals(StatusConstants.ATVCLOSE)){//关模隔离 只针对模拟用户 // for(CUser user : userList){ // if(user.getUser_type().equals(USER_TYPE_ATV)){ // users.add(user); // } // } // if(users.size() == 0){ // throw new Exception("关模隔离只针对模拟用户,请重新确认用户ID"); // } // }else{ users = userList; // } BusiParameter bp = getBusiParam(); List<CUserPropChange> upcList = new ArrayList<CUserPropChange>(); List<CDoneCode> dcList = new ArrayList<CDoneCode>(); List<CDoneCodeDetail> dcdList = new ArrayList<CDoneCodeDetail>(); for(CUser user : users){ String status = user.getStatus(); if(StatusConstants.REQSTOP.equals(status)){ throw new ServicesException("报停用户不能操作"); } if(!status.equals(StatusConstants.DORMANCY) && !status.equals(StatusConstants.ATVCLOSE)){ Integer doneCode = doneCodeComponent.gDoneCode(); String countyId = user.getCounty_id(); String areaId = user.getArea_id(); String userId = user.getUser_id(); CUserPropChange upc = new CUserPropChange(); upc.setUser_id(userId); upc.setColumn_name("status"); upc.setOld_value(user.getStatus()); upc.setNew_value(userStatus); upc.setCounty_id(countyId); upc.setArea_id(areaId); upc.setDone_code(doneCode); upcList.add(upc); Date date = new Date(); upc = new CUserPropChange(); upc.setUser_id(userId); upc.setColumn_name("status_date"); upc.setOld_value(DateHelper.dateToStr(user.getStatus_date())); upc.setNew_value(DateHelper.dateToStr(date)); upc.setCounty_id(countyId); upc.setArea_id(areaId); upc.setDone_code(doneCode); upcList.add(upc); user.setStatus(userStatus); user.setStatus_date(date); CDoneCode cDoneCode = new CDoneCode(); cDoneCode.setDone_code(doneCode); cDoneCode.setBusi_code(bp.getBusiCode()); cDoneCode.setStatus(StatusConstants.ACTIVE); cDoneCode.setCounty_id(countyId); cDoneCode.setArea_id(areaId); cDoneCode.setDept_id(getOptr().getDept_id()); cDoneCode.setOptr_id(getOptr().getOptr_id()); dcList.add(cDoneCode); CDoneCodeDetail detail = new CDoneCodeDetail(); detail.setDone_code(doneCode); detail.setCust_id(user.getCust_id()); detail.setUser_id(userId); detail.setArea_id(areaId); detail.setCounty_id(countyId); dcdList.add(detail); } } userComponent.updateUserStatus(users, upcList,dcList,dcdList); } public void renewUser(String userId) throws Exception { Integer doneCode = doneCodeComponent.gDoneCode(); CUser user = queryUserById(userId); //恢复用户状态,取最近状态异动:如果最近状态异动为报停,则新状态为报停,否则均为正常 userComponent.renewUser(doneCode, userId); //直接修改用户状态为正常 // updateUserStatus(doneCode, user.getUser_id(), user.getStatus(), StatusConstants.ACTIVE); //生成激活用户JOB jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_USER, user.getCust_id(), user.getUser_id(), user.getStb_id(),user.getCard_id(),user.getModem_mac(), null, null,JsonHelper.fromObject(user)); //修改隔离用户产品状态为正常 List<CProdDto> prodList = userProdComponent.queryByUserId(user.getUser_id()); for (CProdDto prod:prodList){ //修改信控不处理的状态,报停、不计算、暂停不处理 if(StatusConstants.ISOLATED.equals(prod.getStatus())){ // String oldStatus = userProdComponent.queryLastStatus(prod.getProd_sn()); // if (StringHelper.isEmpty(oldStatus)) { // if (prod.getInvalid_date().after(prod.getStatus_date())) // oldStatus = StatusConstants.ACTIVE; // else // oldStatus = StatusConstants.OWESTOP; // } String oldStatus = StatusConstants.ACTIVE; userProdComponent.updateProdStatus(doneCode,prod.getProd_sn(),prod.getStatus(), oldStatus); /*List<CProdPropChange> changeList = new ArrayList<CProdPropChange>(); changeList.add(new CProdPropChange("status", prod.getStatus(),StatusConstants.ACTIVE)); changeList.add(new CProdPropChange("status_date", DateHelper.dateToStr(prod.getStatus_date()),DateHelper.dateToStr(new Date()))); userProdComponent.editProd(doneCode,prod.getProd_sn(),changeList);*/ if (isProdOpen(oldStatus)){ jobComponent.createBusiCmdJob(doneCode, BusiCmdConstants.ACCTIVATE_PROD, user.getCust_id(), user.getUser_id(), user.getStb_id(),user.getCard_id(),user.getModem_mac(), prod.getProd_sn(),prod.getProd_id()); } //更新到期日 userProdComponent.updateInvalidDate(doneCode, prod.getProd_sn(), DateHelper.getDiffDays(prod.getStatus_date(), new Date()), 0, new CAcctAcctitem()); } } jobComponent.createCreditExecJob(doneCode, user.getCust_id()); jobComponent.createAcctModeCalJob(doneCode, user.getCust_id()); saveAllPublic(doneCode, getBusiParam()); } public void setPromComponent(PromComponent promComponent) { this.promComponent = promComponent; } public void setUserPromComponent(UserPromComponent userPromComponent) { this.userPromComponent = userPromComponent; } /** * @param expressionUtil the expressionUtil to set */ public void setExpressionUtil(ExpressionUtil expressionUtil) { this.expressionUtil = expressionUtil; } /** * @param busiConfigComponent the busiConfigComponent to set */ public void setBusiConfigComponent(BusiConfigComponent busiConfigComponent) { this.busiConfigComponent = busiConfigComponent; } public String createLoginName(String loginName, String countyId) { String name = ""; while(true){ if ("0501".equals(countyId)){ Random random = new Random(System.currentTimeMillis()); name = "yc"+new CnToSpell().getPinYinHeadChar(loginName)+(Math.abs(random.nextInt())%900+100); }else if ("9004".equals(countyId)){ Random random = new Random(System.currentTimeMillis()); name = "xt"+new CnToSpell().getPinYinHeadChar(loginName)+(Math.abs(random.nextInt())%900+100)+"@xttv"; }else if (COUNTY_9005.equals(countyId)){ name = "gd" + RandomStringUtils.randomNumeric(5); //"gd" + 5位数字 }else if ("9006".equals(countyId)){ name = "tm" + new CnToSpell().getPinYinHeadChar(loginName) + RandomStringUtils.randomNumeric(3); } if(StringHelper.isEmpty(name)) break; try { this.checkLoginName(name); break; } catch (Exception e) { } } return name; } /* (non-Javadoc)取消授权 * @see com.ycsoft.business.service.IUserService#CancelAuth() */ public void saveCancelCaAuth() throws Exception { //获取客户用户信息 List<CUser> userList = getBusiParam().getSelectedUsers(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //保存取消授权 jobComponent.saveCancelCaAuth(userList.get(0),doneCode); saveAllPublic(doneCode,getBusiParam()); } /* (non-Javadoc) * @see com.ycsoft.business.service.IUserService#userInvalid() */ public void saveUserInvalid() throws Exception { //获取客户用户信息 CCust cust = getBusiParam().getCust(); //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); //保存到期日期计算任务 jobComponent.saveCustInvalidCal(doneCode,cust.getCust_id()); saveAllPublic(doneCode,getBusiParam()); } /* (non-Javadoc) * @see com.ycsoft.business.service.IUserService#batchLogoffUser(java.util.List) */ public void batchLogoffUser(List<String> userIdList,String isReclaimDevice,String deviceStatus,String remark) throws Exception { //获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); String busiCode = getBusiParam().getBusiCode(); if(null != userIdList && userIdList.size() == 0){ throw new ServicesException("表格数据为空"); } List<String> userIds = new ArrayList<String>(); for(String userId : userIdList){ if(!userIds.contains(userId)){ userIds.add(userId); } } userComponent.batchLogoffUser(doneCode,remark,userIds,isReclaimDevice,deviceStatus); saveDoneCode(doneCode, busiCode, null,remark); } /* (non-Javadoc) * @see com.ycsoft.business.service.IUserService#editFreeUser(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.Date) */ public void editFreeUser(String userId, String prodSn, String newTariffId,String type,Date tariffStartDate )throws Exception { /* // 获取业务流水 Integer doneCode = doneCodeComponent.gDoneCode(); String custId = getBusiParam().getCust().getCust_id(); CUser user = userComponent.queryUserById(userId); String newValue = ""; if(type.equals("OUT")){ newValue = "F"; }else{ newValue = "T"; } List<CUserPropChange> changeList = new ArrayList<CUserPropChange>(); CUserPropChange change =new CUserPropChange(); change.setColumn_name("str19"); change.setNew_value(newValue); changeList.add(change); userComponent.editUser(doneCode, userId, changeList); //如果原来就有prodSn,变更基本包资费资费 if(StringHelper.isNotEmpty(prodSn)){ changeTariff(prodSn, newTariffId, DateHelper.format(tariffStartDate, "yyyy-MM-dd"), null, true, true, doneCode); PProdTariff newTariff = prodComponent.queryTariffById(newTariffId); PProd prod = prodComponent.queryProdByProdSn(prodSn); getBusiParam().setBusiConfirmParam("prod", prod); getBusiParam().setBusiConfirmParam("new_tariff", newTariff); //生成计算到期日任务 jobComponent.createInvalidCalJob(doneCode, custId); } saveAllPublic(doneCode, getBusiParam()); */ } /* * (non-Javadoc) * * @see com.ycsoft.business.service.IUserService#transferUsers(java.lang.String) */ public void transferUsers(String toCustId) throws Exception { // Integer doneCode = doneCodeComponent.gDoneCode(); // String busiCode = this.getBusiParam().getBusiCode(); // List<CUser> cuserList = this.getBusiParam().getSelectedUsers(); // CUser cuser = cuserList.get(0); // String userId = cuser.getUser_id(); // CCust oldCust = this.getBusiParam().getCust(); // if(StringHelper.isEmpty(toCustId)){ // throw new ServicesException("转户失败:目标客户不存在!"); // } // CCust newCust = custComponent.queryCustById(toCustId); // String custId = oldCust.getCust_id(); // List<CProdDoneInfo> prodDoneInfoList = new ArrayList<CProdDoneInfo>(); // // if(!oldCust.getCust_type().equals(SystemConstants.CUST_TYPE_RESIDENT) || !newCust.getCust_type().equals(SystemConstants.CUST_TYPE_RESIDENT)){ // throw new ServicesException("转户失败:原客户与目标客户必须都是居民客户!"); // } // // List<UserDto> userList = userComponent.queryUser(toCustId); // // if(!newCust.getStatus().equals(StatusConstants.PREOPEN)&&!newCust.getStatus().equals(StatusConstants.ACTIVE)){ // throw new ServicesException("转户失败:目标客户非正常客户或者预开户客户!"); // } // UserDto oldUser = userComponent.queryUserById(userId); // if(StringHelper.isNotEmpty(oldUser.getCard_id())){ // RDevice device = deviceComponent.findByDeviceCode(oldUser.getCard_id()); // if(null != device && SystemConstants.OWNERSHIP_GD.equals(device.getOwnership())){ // throw new ServicesException("数字用户转户失败:智能卡"+oldUser.getCard_id()+",属于广电!"); // } // } // if(StringHelper.isNotEmpty(oldUser.getStb_id())){ // RDevice device = deviceComponent.findByDeviceCode(oldUser.getStb_id()); // if(null != device && SystemConstants.OWNERSHIP_GD.equals(device.getOwnership())){ // throw new ServicesException("数字用户转户失败:机顶盒号"+oldUser.getStb_id()+",属于广电!"); // } // } // if(oldUser.getUser_type().equals("BAND") && StringHelper.isNotEmpty(oldUser.getModem_mac())){ // RDevice device = deviceComponent.findByDeviceCode(oldUser.getModem_mac()); // if(null != device && SystemConstants.OWNERSHIP_GD.equals(device.getOwnership())){ // throw new ServicesException("宽带用户转户失败:Modem号"+oldUser.getModem_mac()+",属于广电!"); // } // } // // // String fromflag = acctComponent.queryWhetherUserOwnfee(userId); // String zZDflag = "0"; // if(cuser.getUser_type().equals("DTV")){ // List<CUser> fromUserList = userComponent.queryUserByCustId(cuser.getCust_id()); // for(CUser user : fromUserList){ // if(user.getUser_type().equals("DTV")){ // UserDto fromUser = userComponent.queryUserById(user.getUser_id()); // if(!userId.equals(fromUser.getUser_id()) && fromUser.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD)) { // zZDflag = acctComponent.queryWhetherUserOwnfee(userId); // } // } // } // } // //主机和转出用户不能欠费 // if(!"0".equals(fromflag) || !"0".equals(zZDflag)){ // throw new ServicesException("数字用户转户失败:主机和转出用户不能欠费!"); // } // // // //标准目标客户无数字用户 // boolean toCustNoDtvFlag=true; //// 标识宽带用户,必须有一个用户状态正常 // boolean normalUserFlag=false; // Integer freeNum = 0; //免费终端 // for(UserDto user : userList){ // if(oldUser.getUser_type().equals("DTV")){ // if(user.getUser_type().equals("DTV")){ // toCustNoDtvFlag=false; // if(oldUser.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD) && user.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD)){ // throw new ServicesException("数字用户转户失败:目标客户名下数字用户已经是主机,不能同是主机!"); // } // if(oldUser.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_FZD)){ // if(user.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD)){ // if(!user.getStatus().equals(StatusConstants.ACTIVE) && !user.getStatus().equals(StatusConstants.OWENOTSTOP)){ // throw new ServicesException("数字用户转户失败:目标客户名下数字用户主机状态必须是正常或欠费未停!"); // } // }else{ // if("T".equals(user.getStr19())){ // freeNum++; // } // } // } // normalUserFlag=true; // // if (user.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD)){ // List<CProdDto> prodList = userProdComponent.queryByUserId(user.getUser_id()); // for (CProdDto prod : prodList) { // if (!prod.getStatus().equals(StatusConstants.ACTIVE)&& !prod.getStatus().equals(StatusConstants.OWENOTSTOP)&& prod.getIs_base().equals("T")) { // throw new ServicesException( // "数字用户转户失败:转户时目标客户名下所有用户基本产品状态必须是正常或欠费未停!"); // } // } // } // } // // }else if(oldUser.getUser_type().equals("BAND") || oldUser.getUser_type().equals("ATV")){ // //宽带转户时,目标客户而状态必须正常 // if(user.getStatus().equals(StatusConstants.ACTIVE)){ // normalUserFlag=true; // } // } // } //// if("T".equals(oldUser.getStr19()) && freeNum>1){ //// throw new ServicesException("数字用户转户失败:目标客户名下已经有2个免费终端!"); //// } // // if(oldUser.getUser_type().equals("BAND") && !normalUserFlag&&userList.size()>0){ // throw new ServicesException("宽带用户转户失败:目标客户名下用户状态不正常,转户时目标客户名下至少有一个用户状态正常!"); // } // if(toCustNoDtvFlag&& oldUser.getUser_type().equals(SystemConstants.USER_TYPE_DTV) && !oldUser.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_ZZD)){ // throw new ServicesException("数字用户转户失败:转户用户是非主机,目标客户名下无主机!"); // } // // List<CProdDto> prodList = userProdComponent.queryByUserId(userId); //// 3. 副机过户,目标客户主机有空余位置挂载。 // if (cuser instanceof CUserDtv || cuser instanceof CUserBroadband) { // if("DTV".equals(oldUser.getUser_type())){ // List<UserDto> oldUserList = userComponent.queryUser(oldUser.getCust_id()); // //超额终端 // UserDto outUser = new UserDto(); // if("T".equals(oldUser.getStr19())){ // //目标客户已经有2台免费终端,转户用户由免费转为超额 // if(freeNum>1){ // updateUserDyn(doneCode,userId,"str19",oldUser.getStr19(),"T".equals(oldUser.getStr19())?"F":"T"); // } // for(UserDto dto:oldUserList){ // if("DTV".equals(dto.getUser_type()) && dto.getTerminal_type().equals(SystemConstants.USER_TERMINAL_TYPE_FZD) && !"T".equals(dto.getStr19())){ // BeanUtils.copyProperties(dto, outUser); // break; // } // } // //原客户其中一台超额终端变成免费终端 // if(StringHelper.isNotEmpty(outUser.getUser_id())){ // updateUserDyn(doneCode,outUser.getUser_id(),"str19",outUser.getStr19(),"T".equals(outUser.getStr19())?"F":"T"); // } // }else{ // //目标客户已经没满2台免费终端,转户用户由超额转为免费 // if(freeNum<2){ // updateUserDyn(doneCode,userId,"str19",oldUser.getStr19(),"F".equals(oldUser.getStr19())?"T":"F"); // } // } // if(StringHelper.isNotEmpty(outUser.getUser_id())){ // List<CProdDto> outProdList = userProdComponent.queryByUserId(outUser.getUser_id()); // for(CProdDto prod : outProdList){ // List<ProdTariffDto> tariffList = prodComponent.queryTariffByProd(prod.getProd_id()); // if("T".equals(prod.getIs_base())){ // //删除资费job // userProdComponent.removeNextByProdSn(prod.getProd_sn()); // } // // tId "F":不能操作;"T":用原来的资费;"**":变更成适合新客户条件的资费 // String tId = userComponent.toUtilValue(outUser.getCust_id(), outUser.getUser_id(), prod.getTariff_id(),tariffList); // if(tId.equals("F")){ // throw new ServicesException("转户失败:原客户的超额终端不能转为免费终端!"); // }else if(!tId.equals("T")){ // //如果原来就有prodSn,变更基本包资费资费 // changeTariff(prod.getProd_sn(), tId, DateHelper.format(DateHelper.getNextMonth(new Date()), "yyyy-MM-dd"), null, true, true, doneCode); //// userProdComponent.updateProdTariff(doneCode, prod.getProd_sn(), tId); // } // } // } // // } // for(CProdDto prod : prodList){ //// 4. 目标客户能否使用 被过户用户产品资费的权限。 // List<ProdTariffDto> tariffList = prodComponent.queryTariffByProd(prod.getProd_id()); // if("T".equals(prod.getIs_base())){ // //删除资费job // userProdComponent.removeNextByProdSn(prod.getProd_sn()); // } // if(tariffList.size() == 0){ // throw new ServicesException("转户失败:请检查本操作员是否具有使用["+prod.getProd_name()+"]资费的权限或者该资费是否适用本地区!"); // } // // tId "F":不能操作;"T":用原来的资费;"**":变更成适合新客户条件的资费 // String tId = userComponent.toUtilValue(toCustId, cuser.getUser_id(), prod.getTariff_id(),tariffList); // if(tId.equals("F")){ // throw new ServicesException("转户失败:目标客户不能使用原产品:"+prod.getProd_name()+"的资费:"+prod.getTariff_name()+"!"); // }else if(!tId.equals("T")){ // //如果原来就有prodSn,变更基本包资费资费 // changeTariff(prod.getProd_sn(), tId, DateHelper.format(DateHelper.getNextMonth(new Date()), "yyyy-MM-dd"), null, true, true, doneCode); //// userProdComponent.updateProdTariff(doneCode, prod.getProd_sn(), tId); // } // } // } // //修改状体为正常 // if (newCust.getStatus().equals(StatusConstants.PREOPEN)){ // custComponent.updateCustStatus(doneCode,toCustId,StatusConstants.PREOPEN,StatusConstants.ACTIVE); // } // // //更新产品账单状态为出帐 // for(CProdDto prod : prodList){ // CProdDoneInfo prodDoneInfo = new CProdDoneInfo(); // prodDoneInfo.setProd_name(prod.getProd_name()); // prodDoneInfo.setTariff_name(prod.getTariff_name()); // prodDoneInfoList.add(prodDoneInfo); // billComponent.confirmBill(prod.getProd_sn(), doneCode); // } // //将账目的实时费用更新为欠费和同时清空实时费用 // List<AcctitemDto> userAcctItemList = acctComponent.queryAcctItemByUserId(userId); // for(AcctitemDto acctitem : userAcctItemList){ // acctComponent.changeAcctItemOwefee(true, acctitem.getAcct_id(), acctitem.getAcctitem_id(),acctitem.getReal_bill()); // } // //销账 // jobComponent.createCustWriteOffJob(doneCode, custId, SystemConstants.BOOLEAN_TRUE);//销帐会自动查信控 // // jobComponent.createCreditExecJob(doneCode, custId); // //生成账务模式判断任务 // jobComponent.createAcctModeCalJob(doneCode, custId); // //生成计算到期日任务 // jobComponent.createInvalidCalJob(doneCode, custId); // // //信控任务 // jobComponent.createCreditExecJob(doneCode, custId); // // getBusiParam().getTempVar().put(SystemConstants.EXTEND_ATTR_KEY_NEWADDR, newCust.getAddress()); // String deviceId = StringHelper.isEmpty(oldUser.getStb_id())?(StringHelper.isEmpty(oldUser.getModem_mac())?"":oldUser.getModem_mac()):oldUser.getStb_id(); // if(StringHelper.isNotEmpty(deviceId)){ // deviceId = ",设备号:"+deviceId; // } // //1. 生成施工单, 3. 杂费收取 // String info = "新受理编号:"+newCust.getCust_no()+",新客户名称:"+newCust.getCust_name()+deviceId; // getBusiParam().setRemark(StringHelper.isEmpty(getBusiParam().getRemark())?info:getBusiParam().getRemark()+"("+info+")"); // saveAllPublic(doneCode,getBusiParam()); // // 保存打印信息 // Map<String, Object> map = new HashMap<String, Object>(); // // //进行用户转户 // userComponent.changeCust(userId, toCustId, doneCode, busiCode); // // //生成计算到期日任务 // jobComponent.createInvalidCalJob(doneCode, toCustId); // // map.put("old_cust_name",oldCust.getCust_name() ); // map.put("new_cust_name",newCust.getCust_name() ); // map.put("old_cust_no", oldCust.getCust_no()); // map.put("new_cust_no", newCust.getCust_no()); //// map.put("old_address", oldCust.getAddress()); //// map.put("new_address", newCust.getAddress()); // map.put("user_type", cuser.getUser_type_text()); // map.put("modem_mac", cuser.getModem_mac()); // // 数字电视 // if (cuser instanceof CUserDtv) { // map.put("terminal_type", MemoryDict.getDictName(DictKey.TERMINAL_TYPE, ((CUserDtv) cuser).getTerminal_type())); // map.put("card_id", cuser.getCard_id()); // map.put("stb_id", cuser.getStb_id()); // } // // 宽带 // else if (cuser instanceof CUserBroadband) { // map.put("login_name", ((UserDto) cuser).getLogin_name()); // map.put("login_password", ((UserDto) cuser).getLogin_password()); // } //// map.put("prodList", prodDoneInfoList); // doneCodeComponent.saveDoneCodeInfo(doneCode, custId,null, map); // Integer toDoneCode = doneCodeComponent.gDoneCode(); // saveDoneCode(toDoneCode, busiCode, toCustId,"原受理编号:"+oldCust.getCust_no()+",原客户流水号:"+doneCode); } @Override public void checkStopUser(String[] userIds) throws Exception { // TODO Auto-generated method stub } @Override public void saveRemoveUser(String userId, Integer cancelFee, Integer refundFee) throws Exception { // TODO Auto-generated method stub } @Override public void validAccount(String name) throws Exception { // TODO Auto-generated method stub } @Override public void saveChangeDevice(String userId, String deviceCode, String changeReason, String deviceBuyMode, FeeInfoDto deviceFee) throws Exception { // TODO Auto-generated method stub } @Override public List<TDeviceChangeReason> queryDeviceChangeReason() throws Exception { // TODO Auto-generated method stub return null; } @Override public List<PSpkgOpenuser> querySpkgUser(String custId,String spkgSn) throws Exception { // TODO Auto-generated method stub return null; } @Override public List<PSpkgOpenbusifee> querySpkgOpenFee(String custId) throws Exception { // TODO Auto-generated method stub return null; } @Override public void cancelInstallTask(String taskId) throws Exception { // TODO Auto-generated method stub } @Override public void untuckUsers() throws Exception { // TODO Auto-generated method stub } @Override public void saveEditPwd(String loginName, String newPwd) throws Exception { // TODO Auto-generated method stub } @Override public void batchLogoffUser(List<CancelUserDto> cancelUserList) throws Exception { // TODO Auto-generated method stub } }