package com.ycsoft.sysmanager.web.action.system; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.ycsoft.beans.prod.PPackageProd; import com.ycsoft.beans.prod.PProdCountyPrice; import com.ycsoft.beans.prod.PProdDict; import com.ycsoft.beans.prod.PProdTariffDisct; import com.ycsoft.business.dto.core.prod.ProdTariffDto; import com.ycsoft.commons.abstracts.BaseAction; import com.ycsoft.commons.constants.DictKey; import com.ycsoft.commons.constants.StatusConstants; import com.ycsoft.commons.constants.SystemConstants; 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.commons.tree.TreeBuilder; import com.ycsoft.commons.tree.TreeNode; import com.ycsoft.sysmanager.component.prod.ProdComponent; import com.ycsoft.sysmanager.dto.prod.ProdDto; /** * 产品信息查询 */ @Controller public class ProdAction extends BaseAction{ /** * @Description: * @date Aug 3, 2010 10:48:38 AM */ private static final long serialVersionUID = 3107387446745748960L; private ProdComponent prodComponent; private ProdDto prodDto; private ProdTariffDto prodTariffDto; private String doneId; private String prod_id; private String ServId; private String query; private String dynamicResList; private String staticResList; private String packList; private String records; private String [] dictProdIds; private String[] prodCountyIds; private String[] disctCountyIds; private PProdTariffDisct PProdTariffDisct; private String areaId; private String acctItemId; private String showAll; private String countyId; private PProdDict prodDict; public String queryPackageByProdId()throws Exception{ getRoot().setRecords( prodComponent.queryPackageByProdId(prod_id) ); return JSON_RECORDS; } public String queryProdOrderByServ() throws Exception { getRoot().setOthers(prodComponent.queryProdOrderByServ()); return JSON_OTHER; } /** *产品树 */ public String getProdTree() throws Exception{ String startEffDate = request.getParameter("start_eff_date"); String endEffDate = request.getParameter("end_eff_date"); String startExpDate = request.getParameter("start_exp_date"); String endExpDate = request.getParameter("end_exp_date"); getRoot().setRecords( prodComponent.getProdTree(optr, showAll, startEffDate, endEffDate, startExpDate, endExpDate)); return JSON_RECORDS; } /** *地市资源树 */ public String getDistrictResTree()throws Exception{ getRoot().setRecords( prodComponent.getDistrictResTree(ServId,areaId) ); return JSON_RECORDS; } /** *产品目录树 */ @SuppressWarnings("unchecked") public String getPordDictTree() throws Exception{ List<TreeNode> prodtree = TreeBuilder.createTreeCheck((List)prodComponent.getPordDictTree(doneId)); getRoot().setRecords(prodtree); return JSON_RECORDS; } @SuppressWarnings("unchecked") public String getCountyTree() throws Exception{ String[] type = {"COUNTY","TARIFF"}; List<TreeNode> prodtree = TreeBuilder.createTreeCheck((List)prodComponent.getCountyTree(optr,type,query)); getRoot().setRecords(prodtree); return JSON_RECORDS; } @SuppressWarnings("unchecked") public String getProdCountyTree() throws Exception{ String[] type = {"COUNTY","PROD"}; List<TreeNode> prodtree = TreeBuilder.createTreeCheck((List)prodComponent.getCountyTree(optr,type,query)); getRoot().setRecords(prodtree); return JSON_RECORDS; } public String getTariffDisctCountyTree() throws Exception{ String[] type = {"COUNTY","DISCT"}; List<TreeNode> prodtree = TreeBuilder.createTreeCheck((List)prodComponent.getCountyTree(optr,type,query)); getRoot().setRecords(prodtree); return JSON_RECORDS; } @SuppressWarnings("unchecked") public String getRoleCountyTree() throws Exception{ String[] type = {"COUNTY","ROLE"}; List<TreeNode> prodtree = TreeBuilder.createTreeCheck((List)prodComponent.getCountyTree(optr,type,query)); getRoot().setRecords(prodtree); return JSON_RECORDS; } @SuppressWarnings("unchecked") public String getCustCountyTree() throws Exception{ String[] type = {"CHOOSE","COLONY"}; List<TreeNode> prodtree = TreeBuilder.createTreeCheck((List)prodComponent.getCountyTree(optr,type,query)); getRoot().setRecords(prodtree); return JSON_RECORDS; } /** * 产品目录树 * @return * @throws Exception */ @SuppressWarnings("unchecked") public String getDictCountyTree() throws Exception{ String[] type = {"CHOOSE","DICT"}; List<TreeNode> countys = TreeBuilder.createTreeCheck((List)prodComponent.getCountyTree(optr,type,query)); getRoot().setRecords(countys); return JSON_RECORDS; } @SuppressWarnings("unchecked") public String queryProdDictByCountyId() throws Exception{ List list = prodComponent.queryProdDictByCountyId(optr); getRoot().setRecords(TreeBuilder.createTree(list)); return JSON_RECORDS; } /** * 删除产品目录信息 */ public String removeDict() throws Exception{ getRoot().setSimpleObj(prodComponent.deleteDict(doneId)); return JSON; } /** * 添加修改产品目录信息 */ public String saveProdDict() throws Exception{ if(StringHelper.isNotEmpty(prodDict.getNode_id())){ prodComponent.updateProdDict(prodDict,countyId); }else{ prodComponent.saveProdDict(prodDict,countyId); } getRoot().setSimpleObj(prodDict); return JSON; } /** * 根据账目id查询产品信息 * @param acctItemId * @return * @throws Exception */ public String queryProdByAcctItemId() throws Exception{ getRoot().setRecords(prodComponent.queryProdByAcctItemId(acctItemId)); return JSON_RECORDS; } /** * 初始化状态 * @return */ public String queryIsstatus(){ getRoot().setRecords(MemoryDict.getDicts(DictKey.STATUS_P_PROD)); return JSON_RECORDS; } /** * 根据地区查询产品信息 */ public String queryProdAll() throws Exception{ getRoot().setRecords(prodComponent.queryProdAll(optr)); return JSON_RECORDS; } public String getProdByCounty() throws Exception{ if(StringHelper.isEmpty(countyId)){ countyId = optr.getCounty_id(); } getRoot().setRecords(prodComponent.getProdByCounty(countyId)); return JSON_RECORDS; } /** * 根据产品编号和地区编号查询产品信息 */ public String queryProdById() throws Exception{ getRoot().setSimpleObj(prodComponent.queryProdById(doneId,optr)); return JSON; } /** * 根据套餐id和产品资费查询子产品 */ public String queryPackProdById() throws Exception{ getRoot().setRecords(prodComponent.queryPackProdById(doneId,query)); return JSON_RECORDS; } /** * 根据套餐ID查询子产品 * @return * @throws Exception */ public String queryPackById() throws Exception{ getRoot().setRecords(prodComponent.queryPackById(doneId)); return JSON_RECORDS; } /** * 查询套餐分成值操作记录 */ public String queryProdPackageHis() throws Exception{ getRoot().setRecords(prodComponent.queryByPackId(doneId)); return JSON_RECORDS; } /** * @Description:查询操作员可以操作的地区 * @return * @throws Exception * @return String */ public String queryArea() throws Exception{ getRoot().setRecords(prodComponent.queryArea(optr)); return JSON_RECORDS; } /** * @Description:根据产品编号查询资费信息 */ public String queryTariffByProdId() throws Exception{ getRoot().setRecords(prodComponent.queryTariffByProdId(doneId,prodCountyIds)); return JSON_RECORDS; } /** * @Description:根据资费编号查询折扣信息 */ public String queryDisct() throws Exception{ getRoot().setRecords(prodComponent.queryDisct(doneId, optr)); return JSON_RECORDS; } public String queryResByServId() throws Exception{ getRoot().setSimpleObj(prodComponent.queryResByServId(ServId,doneId,query)); return JSON; } public String queryResByCountyId() throws Exception{ getRoot().setRecords(prodComponent.getStaticByServId(SystemConstants.USER_TYPE_DTT,countyId)); return JSON_RECORDS; } /** * 保存产品信息 */ public String save() throws Exception { ProdDto proddto = new ProdDto(); BeanUtils.copyProperties(prodDto, proddto); proddto.setStatus(StatusConstants.ACTIVE); if(StringHelper.isNotEmpty(prodDto.getProd_id())){ getRoot().setSimpleObj(prodComponent.updateProd(proddto,dictProdIds,dynamicResList,staticResList,prodCountyIds)); }else{ proddto.setArea_id(optr.getArea_id()); proddto.setCounty_id(optr.getCounty_id()); proddto.setOptr_id(optr.getOptr_id()); proddto.setCreate_time( new Date() ); getRoot().setSimpleObj(prodComponent.saveProd(proddto,dictProdIds,dynamicResList,staticResList,prodCountyIds)); } return JSON; } /** * 保存套餐产品信息 */ public String savePack() throws Exception { ProdDto proddto = new ProdDto(); // List<PPackageProd> PacksList = new ArrayList<PPackageProd>(); BeanUtils.copyProperties(prodDto, proddto); if(StringHelper.isNotEmpty(packList)){ Type type = new TypeToken<List<PPackageProd>>(){}.getType(); List<PPackageProd> pack = JsonHelper.gson.fromJson(packList, type); // for (PPackageProd dto:pack){ // PPackageProd packdto = new PPackageProd(); //// packdto.setProd_id(dto.getProd_id()); // PacksList.add(packdto); // } proddto.setPackList(pack); } proddto.setStatus(StatusConstants.ACTIVE); if(StringHelper.isNotEmpty(prodDto.getProd_id())){ getRoot().setSimpleObj(prodComponent.updateProdPack(proddto,dictProdIds,prodCountyIds)); }else{ proddto.setArea_id(optr.getArea_id()); proddto.setCounty_id(optr.getCounty_id()); proddto.setOptr_id(optr.getOptr_id()); proddto.setCreate_time( DateHelper.now()); getRoot().setSimpleObj(prodComponent.saveProdPack(proddto,dictProdIds,prodCountyIds)); } return JSON; } /** * 修改已生效的产品 * @return * @throws Exception */ public String editProd() throws Exception{ ProdDto proddto = new ProdDto(); BeanUtils.copyProperties(prodDto, proddto); getRoot().setSimpleObj(prodComponent.editProd(proddto,dictProdIds,prodCountyIds)); return JSON; } /** * @Description:保存资费 * @return * @throws Exception * @return String */ public String saveTariff() throws Exception { ProdTariffDto dto = new ProdTariffDto(); BeanUtils.copyProperties(prodTariffDto, dto); dto.setStatus(StatusConstants.ACTIVE); prodComponent.saveTariff(dto,packList,dictProdIds,optr); return JSON; } /** * @Description:保存折扣 */ public String saveDisct() throws Exception { PProdTariffDisct dto = new PProdTariffDisct(); BeanUtils.copyProperties(PProdTariffDisct, dto); dto.setTrans(dto.getRefund()); dto.setStatus(StatusConstants.ACTIVE); prodComponent.saveDisct(dto, disctCountyIds, optr); return JSON; } /** * @Description:根据折扣编号删除折扣 */ public String deleteDisct() throws Exception { getRoot().setSuccess(prodComponent.deleteDisct(doneId)); return JSON; } public String deleteTariff() throws Exception { getRoot().setSuccess(prodComponent.deleteTariff(doneId)); return JSON; } public String deletePord() throws Exception { getRoot().setSimpleObj(prodComponent.deletePord(doneId)); return JSON; } public String checkGroupRes() throws Exception { getRoot().setSuccess(prodComponent.checkGroupRes(doneId,query)); return JSON; } /** * 验证资源组是否适合该地市 * @return * @throws Exception */ public String validRes() throws Exception { getRoot().setSimpleObj(prodComponent.validRes(records,doneId)); return JSON; } /** * 查询可用地区的最低定价grid(含有未配置的地市) * @return * @throws Exception */ public String queryLowestPrice() throws Exception { getRoot().setRecords(prodComponent.queryLowestPrice(doneId,getOptr())); return JSON_RECORDS; } public String saveLowestPrice() throws Exception{ List<PProdCountyPrice> valueList = null; if(StringHelper.isNotEmpty(records)){ Type type = new TypeToken<List<PProdCountyPrice>>(){}.getType(); Gson gson = new Gson(); valueList = gson.fromJson(records, type); } prodComponent.saveLowestPrice(valueList,doneId); return JSON; } public String getStaticResList() { return staticResList; } public void setStaticResList(String staticResList) { this.staticResList = staticResList; } public String getDynamicResList() { return dynamicResList; } public void setDynamicResList(String dynamicResList) { this.dynamicResList = dynamicResList; } public ProdComponent getProdComponent() { return prodComponent; } public void setProdComponent(ProdComponent prodComponent) { this.prodComponent = prodComponent; } public ProdDto getProdDto() { return prodDto; } public void setProdDto(ProdDto prodDto) { this.prodDto = prodDto; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } public String getRecords() { return records; } public void setRecords(String records) { this.records = records; } public String getDoneId() { return doneId; } public void setDoneId(String doneId) { this.doneId = doneId; } public String getPackList() { return packList; } public void setPackList(String packList) { this.packList = packList; } public void setAcctItemId(String acctItemId) { this.acctItemId = acctItemId; } public String getAreaId() { return areaId; } public void setAreaId(String areaId) { this.areaId = areaId; } public ProdTariffDto getProdTariffDto() { return prodTariffDto; } public void setProdTariffDto(ProdTariffDto prodTariffDto) { this.prodTariffDto = prodTariffDto; } public String[] getDictProdIds() { return dictProdIds; } public void setDictProdIds(String[] dictProdIds) { this.dictProdIds = dictProdIds; } public String getServId() { return ServId; } public void setServId(String servId) { ServId = servId; } public void setShowAll(String showAll) { this.showAll = showAll; } public void setCountyId(String countyId) { this.countyId = countyId; } public PProdTariffDisct getPProdTariffDisct() { return PProdTariffDisct; } public void setPProdTariffDisct(PProdTariffDisct pProdTariffDisct) { PProdTariffDisct = pProdTariffDisct; } /** * @param prodCountyIds the prodCountyIds to set */ public void setProdCountyIds(String[] prodCountyIds) { this.prodCountyIds = prodCountyIds; } public PProdDict getProdDict() { return prodDict; } public void setProdDict(PProdDict prodDict) { this.prodDict = prodDict; } public void setDisctCountyIds(String[] disctCountyIds) { this.disctCountyIds = disctCountyIds; } public String getProd_id() { return prod_id; } public void setProd_id(String prod_id) { this.prod_id = prod_id; } }