package com.miniframe.bisiness.system; import java.util.Date; import java.util.List; import java.util.Map; import com.fasterxml.jackson.core.JsonProcessingException; import com.miniframe.core.ExecProcessFlow; import com.miniframe.core.exception.BusinessException; import com.miniframe.core.ext.UtilTools; import com.miniframe.generate.business.system.model.C00003BaseModel; import com.miniframe.model.system.AdiSolver; import com.miniframe.model.system.AdiSolverConfig; import com.miniframe.model.system.AdiSolverConfigSQLBuilder; import com.miniframe.model.system.AdiSolverSQLBuilder; import com.miniframe.model.system.dao.AdiProjectMapper; import com.miniframe.model.system.dao.AdiSolverConfigMapper; import com.miniframe.model.system.dao.AdiSolverMapper; import com.miniframe.solveconfig.SolverParam; import com.miniframe.solveconfig.hcfd.HcfdParam; import com.miniframe.tools.XIDateTimeUtils; import com.miniframe.tools.XiJsonUtil; /** * 基础系统,“项目求解查询”逻辑处理(重新生成不覆盖)。 */ public class C00003Service extends C00003BaseModel implements ExecProcessFlow { private static final long serialVersionUID = -7051358269847459502L; /** * 基础系统,“项目求解查询”业务核心处理 */ public void transExecute() throws Exception { String pid =getA_c00003().getPid(); String uid =getA_systemhead().getUserId(); String company =getA_c00003().getCompany(); String solverModel =getA_c00003().getSolverModel(); AdiSolverMapper solverMapper = UtilTools.getBean(AdiSolverMapper.class); AdiSolverSQLBuilder solversb= new AdiSolverSQLBuilder(); AdiSolverSQLBuilder.Criteria solversc = solversb.createCriteria(); solversc.andPidEqualTo(pid); solversc.andCompanyEqualTo(company); solversc.andSolverModelEqualTo(solverModel); List solverList =solverMapper.selectByExample(solversb); Date now = XIDateTimeUtils.getNowDate(); AdiSolverConfigMapper configMapper = UtilTools.getBean(AdiSolverConfigMapper.class); AdiSolverConfigSQLBuilder configsb = new AdiSolverConfigSQLBuilder(); AdiSolverConfigSQLBuilder.Criteria configsc = configsb.createCriteria(); AdiSolver solver; AdiSolverConfig solverConfig = null; if(solverList.isEmpty()){ solver = initAdiSolver(pid, uid, company, solverModel, solverMapper, now); solverConfig=initSolverConfig(pid, company, solverModel, now, configMapper, solver); }else if(solverList.size()==1){ solver =solverList.get(0); configsc.andPidEqualTo(pid); configsc.andSolveridEqualTo(solver.getId()); List configList =configMapper.selectByExample(configsb); if(configList.isEmpty()){ initSolverConfig(pid, company, solverModel, now, configMapper, solver); }else if(configList.size()==1){ solverConfig = configList.get(0); }else{ //统一求解多条配置 目前不支持 throw new BusinessException("EB4000005"); } }else{ throw new BusinessException("EB4000004"); } getD_c00003().setSolverConfigid(solverConfig.getId()); getD_c00003().setCompany(company); getD_c00003().setParameterObj(solverConfig.getParameterObj()); getD_c00003().setPid(pid); getD_c00003().setSolverid(solver.getId()); getD_c00003().setSolverModel(solverModel); } private AdiSolverConfig initSolverConfig(String pid, String company, String solverModel, Date now, AdiSolverConfigMapper configMapper, AdiSolver solver) throws BusinessException { AdiSolverConfig solverConfig; solverConfig =new AdiSolverConfig(); solverConfig.setPid(pid); solverConfig.setId(UtilTools.getUUid()); solverConfig.setSolverid(solver.getId()); try { if(company.equals("ADI.SimWork")&& solverModel.equals("HCFDLab")){ SolverParam param =new HcfdParam(); solverConfig.setParameterObj(param.paramJson()); } }catch (JsonProcessingException e){ throw new BusinessException("EB4000006"); } solverConfig.setCreateTime(now); solverConfig.setUpdateTime(now); configMapper.insert(solverConfig); return solverConfig; } private AdiSolver initAdiSolver(String pid, String uid, String company, String solverModel, AdiSolverMapper solverMapper, Date now) { AdiSolver solver; solver =new AdiSolver(); solver.setId(UtilTools.getUUid()); solver.setPid(pid); solver.setCompany(company); solver.setSolverModel(solverModel); solver.setUid(uid); solver.setState(new Short("0")); solver.setCreateTime(now); solver.setUpdateTime(now); solverMapper.insert(solver); return solver; } /** * 基础系统,“项目求解查询”业务前处理 */ public void preTransFlow() throws Exception { this.validater(); } /** * 基础系统,“项目求解查询”业务后处理 */ public void afterTransFlow() throws Exception { } /** * 基础系统,“项目求解查询”逻辑入口处理方法 */ @SuppressWarnings("rawtypes") @Override public Map execute(Map vars) throws Exception { this.setTransMap(vars); preTransFlow();// 执行业务开始的规则检查和校验 transExecute();// 执行核心业务段 afterTransFlow();// 执行核心逻辑完成后的收尾逻辑 return this.getTransMap(); } }