package com.ycsoft.sysmanager.component.config; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import com.ycsoft.beans.config.TAcctFeeType; import com.ycsoft.beans.config.TBusiCode; import com.ycsoft.beans.config.TBusiCodeFee; import com.ycsoft.beans.config.TBusiDoc; import com.ycsoft.beans.config.TBusiFee; import com.ycsoft.beans.config.TDeviceBuyMode; import com.ycsoft.beans.config.TDeviceBuyModeFee; import com.ycsoft.beans.system.SSysChange; import com.ycsoft.business.dao.config.TAcctFeeTypeDao; import com.ycsoft.business.dao.config.TAcctitemToProdDao; import com.ycsoft.business.dao.config.TBusiCodeDao; import com.ycsoft.business.dao.config.TBusiCodeFeeDao; import com.ycsoft.business.dao.config.TBusiDocDao; import com.ycsoft.business.dao.config.TBusiFeeDao; import com.ycsoft.business.dao.config.TBusiFeeStdDao; import com.ycsoft.business.dao.config.TDeviceBuyModeDao; import com.ycsoft.business.dao.config.TDeviceBuyModeFeeDao; import com.ycsoft.business.dao.system.SSysChangeDao; import com.ycsoft.business.dto.config.TBusiFeeDto; import com.ycsoft.business.dto.core.fee.BusiFeeDto; import com.ycsoft.commons.abstracts.BaseComponent; import com.ycsoft.commons.constants.StatusConstants; import com.ycsoft.commons.constants.SysChangeType; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.helper.CollectionHelper; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.core.Pager; import com.ycsoft.daos.helper.BeanHelper; import com.ycsoft.sysmanager.dto.config.VewAcctitemDto; import com.ycsoft.sysmanager.web.commons.interceptor.WebOptr; @Component public class BusiFeeComponent extends BaseComponent { private TBusiFeeDao tBusiFeeDao; private TBusiFeeStdDao tBusiFeeStdDao; private TAcctitemToProdDao tAcctitemToProdDao; private TBusiDocDao tBusiDocDao; private TAcctFeeTypeDao tAcctFeeTypeDao; private TBusiCodeDao tBusiCodeDao; private TBusiCodeFeeDao tBusiCodeFeeDao; private TDeviceBuyModeFeeDao tDeviceBuyModeFeeDao; private TDeviceBuyModeDao tDeviceBuyModeDao; private SSysChangeDao sSysChangeDao; /** * 查询当个费用项目 * @param fee_id * @return * @throws Exception */ public TBusiFeeDto queryTBusiFeeDto(String fee_id) throws Exception{ if(StringHelper.isNotEmpty(fee_id)){ Map<String,TBusiFeeDto> map= CollectionHelper.converToMapSingle(this.queryFee("",""), "fee_id") ; return map.get(fee_id); } return null; } /** * 保存费用项异动 * @param oldBean * @param newBean * @throws Exception */ public void saveChangeTBusiFeeDto(TBusiFeeDto oldBean,TBusiFeeDto newBean) throws Exception{ String change_text=BeanHelper.beanchange(oldBean, newBean); if(StringHelper.isNotEmpty(change_text)){ SSysChange change=new SSysChange(); change.setContent(change_text); change.setCreate_time(new Date()); change.setOptr_id(WebOptr.getOptr().getOptr_id()); change.setChange_type(SysChangeType.BUSIFEE.name()); change.setKey(oldBean==null?newBean.getFee_id():oldBean.getFee_id()); change.setKey_desc(oldBean==null?newBean.getFee_name():oldBean.getFee_name()); change.setChange_desc("费用项定义"); sSysChangeDao.save(change); } } /** * 查询销售类型改为BUSI的销售信息 * @return * @throws Exception */ public List<TDeviceBuyMode> queryBusiDeviceBuyMode() throws Exception { return tDeviceBuyModeDao.queryDeviceBuyModeByBuyType(SystemConstants.BUY_TYPE_BUSI); } /** * 根据业务类型查询业务编号定义 * @return * @throws Exception */ public List<TBusiCode> queryBusiCodeByBusiType() throws Exception { return tBusiCodeDao.queryBusiCodeByBusiFee(SystemConstants.BOOLEAN_TRUE); } //保存、修改TBusiDoc public void updateBusiDoc(TBusiDoc busiDoc) throws Exception{ String doc_type = busiDoc.getDoc_type(); if(StringHelper.isEmpty(doc_type)){ busiDoc.setDoc_type(null); tBusiDocDao.save(busiDoc); }else{ tBusiDocDao.update(busiDoc); } } //所有专项公用账目查询 public Pager<VewAcctitemDto> queryAllVewAcctitem(Integer start,Integer limit,String key) throws Exception{ return tAcctitemToProdDao.queryAllVewAcctitem(start,limit,key); } /** * @Description:查询配置信息并分页 * @param status 状态 * @param feeType * @return * @throws Exception * @return List<TBusiFee> */ public List<TBusiFeeDto> queryFee(String query, String status)throws Exception{ List<TBusiFeeDto> busiFeeList = tBusiFeeDao.queryFee(query, WebOptr.getOptr().getCounty_id(),status) ; Map<String,List<TBusiFeeDto>> map = CollectionHelper.converToMap(busiFeeList, "fee_id"); for(String feeId : map.keySet()){ List<TBusiFeeDto> list = map.get(feeId); if(list.size()>1){ String busiCode="",busiName="",buyMode="",buyModeName=""; for(TBusiFeeDto dto : list){ if(StringHelper.isNotEmpty(dto.getBusi_code())){ busiCode += dto.getBusi_code()+","; busiName += dto.getBusi_name()+","; }else if(StringHelper.isNotEmpty(dto.getBuy_mode())){ buyMode += dto.getBuy_mode()+","; buyModeName += dto.getBuy_mode_name()+","; } } TBusiFeeDto feeDto = list.get(0); if(StringHelper.isNotEmpty(busiCode)){ feeDto.setBusi_code(busiCode.substring(0, busiCode.length()-1)); feeDto.setBusi_name(busiName.substring(0, busiName.length()-1)); } if(StringHelper.isNotEmpty(buyMode)){ feeDto.setBuy_mode(buyMode.substring(0, buyMode.length()-1)); feeDto.setBuy_mode_name(buyModeName.substring(0, buyModeName.length()-1)); } List<TBusiFeeDto> newList = new ArrayList<TBusiFeeDto>(); newList.add(feeDto); map.put(feeId, newList);//覆盖当前key对应的值,将list中的多个对象覆盖成一个对象 } } List<TBusiFeeDto> allList = new ArrayList<TBusiFeeDto>(); for(String key : map.keySet()){ allList.addAll(map.get(key));//合并 } return allList; } public void setTAcctitemToProdDao(TAcctitemToProdDao acctitemToProdDao) { tAcctitemToProdDao = acctitemToProdDao; } /** * @Description:保存费用配置 * @param busiFee * @return * @throws Exception * @return boolean */ public boolean saveFee(TBusiFeeDto busiFeeDto) throws Exception{ String feeIdSEQ = tBusiFeeDao.findSequence().toString(); String busiCode = busiFeeDto.getBusi_code(); String buyMode = busiFeeDto.getBuy_mode(); TBusiFee busiFee = new TBusiFee(); BeanUtils.copyProperties(busiFeeDto, busiFee); String feeId = busiFee.getFee_id();//前台传递的feeId if(StringHelper.isEmpty(feeId)){//保存 busiFee.setFee_id(feeIdSEQ); busiFee.setStatus(StatusConstants.ACTIVE); busiFee.setCounty_id(WebOptr.getOptr().getCounty_id()); busiFee.setArea_id(WebOptr.getOptr().getArea_id()); busiFee.setOptr_id(WebOptr.getOptr().getOptr_id()); tBusiFeeDao.save(busiFee); //异动记录需要 busiFeeDto.setFee_id(feeIdSEQ); } else{//修改 tBusiFeeDao.update(busiFee); } //当费用配置类型为“服务费”时 if(StringHelper.isNotEmpty(busiCode)){ String busiFeeId = feeIdSEQ;//添加到t_busi_code_fee中的fee_id,默认为添加 if(StringHelper.isNotEmpty(feeId)){//修改时,先删除 tBusiCodeFeeDao.deleteByFeeId(feeId); busiFeeId = feeId; } String[] busiCodeArr = busiCode.split(",");//业务为多选,值用","隔开 List<TBusiCodeFee> codeFeeList = new ArrayList<TBusiCodeFee>(); TBusiCodeFee codeFee = null; for(String code : busiCodeArr){ codeFee = new TBusiCodeFee(); codeFee.setBusi_code(code); codeFee.setFee_id(busiFeeId); codeFeeList.add(codeFee); } tBusiCodeFeeDao.save(codeFeeList.toArray(new TBusiCodeFee[codeFeeList.size()])); }else if(StringHelper.isNotEmpty(buyMode)){//当费用配置为"设备费"时 String buyFeeId = feeIdSEQ;//添加到t_device_buy_mode_fee中的fee_id,默认为添加 if(StringHelper.isNotEmpty(feeId)){ tDeviceBuyModeFeeDao.deleteByFeeId(feeId); buyFeeId = feeId; } String[] buyModeArr = buyMode.split(",");//销售方式为多选,值用","隔开 tDeviceBuyModeFeeDao.deleteBach(buyModeArr);//t_device_buy_mode_fee中buy_mode为PK List<TDeviceBuyModeFee> modeFeeList = new ArrayList<TDeviceBuyModeFee>(); TDeviceBuyModeFee modeFee = null; for(String mode : buyModeArr){ modeFee = new TDeviceBuyModeFee(); modeFee.setBuy_mode(mode); modeFee.setFee_id(buyFeeId); modeFeeList.add(modeFee); } tDeviceBuyModeFeeDao.save(modeFeeList.toArray(new TDeviceBuyModeFee[modeFeeList.size()])); } // int sues = tBusiFeeDao.save(busiFee)[0]; // // if(sues >= 0 || sues == -2){ // return true; // } return true; } /** * @Description:更新费用配置 * @param busiFee * @return * @throws Exception * @return boolean */ public boolean updateFee(TBusiFee busiFeeDto) throws Exception{ TBusiFee busiFee = new TBusiFee(); BeanUtils.copyProperties(busiFeeDto, busiFee); int sues = tBusiFeeDao.update(busiFee)[0]; if(sues >= 0 || sues == -2){ return true; } return false; } /** * @Description: 删除费用配置 * @param busiFee * @return * @throws Exception * @return boolean */ public boolean updateFeeStatus(String feeId, String status) throws Exception{ return tBusiFeeDao.updateFeeStatus(feeId, status)>0; } /** * ------------------------------------------------------------------------ * 费用金额组件 */ /** * @Description: 查询金额信息 * @param start * @param limit * @param feeType * @return * @throws Exception * @return Pager<BusiFeeDto> */ public Pager<BusiFeeDto> queryFeeValue(Integer start , Integer limit , String feeType)throws Exception{ return tBusiFeeStdDao.queryFeeValue(start, limit, feeType) ; } /** * 查询所有的设备费用 * * @return * @throws Exception */ public List<TBusiFee> queryDeviceFee() throws Exception { return tBusiFeeDao.queryFeeByFeeType(SystemConstants.FEE_TYPE_DEVICE); } /** * 查询所有费用类型数据 * @return * @throws Exception */ public List<TAcctFeeType> queryAllFeeType() throws Exception{ return tAcctFeeTypeDao.findAll(); } /** * 更新费用类型数据 * @param feeTypeList * @throws Exception */ public void updateFeeType(List<TAcctFeeType> feeTypeList)throws Exception{ if(feeTypeList != null && feeTypeList.size() > 0){ tAcctFeeTypeDao.update(feeTypeList.toArray(new TAcctFeeType[feeTypeList.size()])); } } public void setTBusiFeeDao(TBusiFeeDao busiFeeDao) { tBusiFeeDao = busiFeeDao; } public void setTBusiDocDao(TBusiDocDao busiDocDao) { tBusiDocDao = busiDocDao; } public TAcctFeeTypeDao getTAcctFeeTypeDao() { return tAcctFeeTypeDao; } public void setTAcctFeeTypeDao(TAcctFeeTypeDao acctFeeTypeDao) { tAcctFeeTypeDao = acctFeeTypeDao; } /** * @param busiFeeStdDao the tBusiFeeStdDao to set */ public void setTBusiFeeStdDao(TBusiFeeStdDao busiFeeStdDao) { tBusiFeeStdDao = busiFeeStdDao; } public void setTBusiCodeDao(TBusiCodeDao busiCodeDao) { tBusiCodeDao = busiCodeDao; } public void setTBusiCodeFeeDao(TBusiCodeFeeDao busiCodeFeeDao) { tBusiCodeFeeDao = busiCodeFeeDao; } public void setTDeviceBuyModeFeeDao(TDeviceBuyModeFeeDao deviceBuyModeFeeDao) { tDeviceBuyModeFeeDao = deviceBuyModeFeeDao; } public void setTDeviceBuyModeDao(TDeviceBuyModeDao deviceBuyModeDao) { tDeviceBuyModeDao = deviceBuyModeDao; } public SSysChangeDao getSSysChangeDao() { return sSysChangeDao; } public void setSSysChangeDao(SSysChangeDao sysChangeDao) { sSysChangeDao = sysChangeDao; } }