diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseController.java new file mode 100644 index 00000000..77db5bb4 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTestCaseController.java @@ -0,0 +1,307 @@ +package com.xm.core.ctrl; + +import java.util.*; +import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.*; + +import static com.mdp.core.utils.ResponseHelper.*; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; +import com.mdp.mybatis.PageUtils; +import com.mdp.core.utils.RequestUtils; +import com.mdp.core.utils.NumberUtil; +import com.mdp.safe.client.entity.User; +import com.mdp.safe.client.utils.LoginUtils; +import com.mdp.swagger.ApiEntityParams; +import springfox.documentation.annotations.ApiIgnore; + +import com.xm.core.service.XmTestCaseService; +import com.xm.core.entity.XmTestCase; + +/** + * url编制采用rest风格,如对xm_test_case 测试用例的操作有增删改查,对应的url分别为:
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestCase 表 xm_test_case 当前主键(包括多主键): id; + ***/ +@RestController("xm.core.xmTestCaseController") +@RequestMapping(value="/**/core/xmTestCase") +@Api(tags={"测试用例操作接口"}) +public class XmTestCaseController { + + static Logger logger =LoggerFactory.getLogger(XmTestCaseController.class); + + @Autowired + private XmTestCaseService xmTestCaseService; + + + Map fieldsMap = toMap(new XmTestCase()); + + + @ApiOperation( value = "查询测试用例信息列表",notes=" ") + @ApiEntityParams( XmTestCase.class ) + @ApiImplicitParams({ + @ApiImplicitParam(name="pageSize",value="每页大小,默认20条",required=false), + @ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false), + @ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false), + @ApiImplicitParam(name="count",value="是否计算总记录条数,如果count=true,则计算计算总条数,如果count=false 则不计算",required=false), + @ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student desc",required=false), + }) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}") + }) + @RequestMapping(value="/list",method=RequestMethod.GET) + public Map listXmTestCase( @ApiIgnore @RequestParam Map xmTestCase){ + Map m = new HashMap<>(); + Tips tips=new Tips("查询成功"); + RequestUtils.transformArray(xmTestCase, "ids"); + RequestUtils.transformArray(xmTestCase, "menuIds"); + PageUtils.startPage(xmTestCase); + String id= (String) xmTestCase.get("id"); + String menuId= (String) xmTestCase.get("menuId"); + Object ids= xmTestCase.get("ids"); + Object menuIds= xmTestCase.get("menuIds"); + String productId= (String) xmTestCase.get("productId"); + String myUserid= (String) xmTestCase.get("myUserid"); + String projectId= (String) xmTestCase.get("projectId"); + if( !( StringUtils.hasText(myUserid) ||StringUtils.hasText(id) || StringUtils.hasText(menuId) || StringUtils.hasText(productId)|| StringUtils.hasText(projectId)||menuIds!=null||ids!=null ) ){ + xmTestCase.put("compete", LoginUtils.getCurrentUserInfo().getUserid()); + } + List> xmTestCaseList = xmTestCaseService.selectListMapByWhere(xmTestCase); //列出XmTestCase列表 + PageUtils.responePage(m, xmTestCaseList); + m.put("data",xmTestCaseList); + + m.put("tips", tips); + return m; + } + + + + /** + @ApiOperation( value = "新增一条测试用例信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/add",method=RequestMethod.POST) + public Map addXmTestCase(@RequestBody XmTestCase xmTestCase) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功新增一条数据"); + try{ + boolean createPk=false; + if(!StringUtils.hasText(xmTestCase.getId())) { + createPk=true; + xmTestCase.setId(xmTestCaseService.createKey("id")); + } + if(createPk==false){ + if(xmTestCaseService.selectOneObject(xmTestCase) !=null ){ + return failed("pk-exists","编号重复,请修改编号再提交"); + } + } + xmTestCaseService.insert(xmTestCase); + m.put("data",xmTestCase); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "删除一条测试用例信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") + }) + @RequestMapping(value="/del",method=RequestMethod.POST) + public Map delXmTestCase(@RequestBody XmTestCase xmTestCase){ + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除一条数据"); + try{ + if(!StringUtils.hasText(xmTestCase.getId())) { + return failed("pk-not-exists","请上送主键参数id"); + } + XmTestCase xmTestCaseDb = xmTestCaseService.selectOneObject(xmTestCase); + if( xmTestCaseDb == null ){ + return failed("data-not-exists","数据不存在,无法删除"); + } + xmTestCaseService.deleteByPk(xmTestCase); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键修改一条测试用例信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCase.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/edit",method=RequestMethod.POST) + public Map editXmTestCase(@RequestBody XmTestCase xmTestCase) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + if(!StringUtils.hasText(xmTestCase.getId())) { + return failed("pk-not-exists","请上送主键参数id"); + } + XmTestCase xmTestCaseDb = xmTestCaseService.selectOneObject(xmTestCase); + if( xmTestCaseDb == null ){ + return failed("data-not-exists","数据不存在,无法修改"); + } + xmTestCaseService.updateSomeFieldByPk(xmTestCase); + m.put("data",xmTestCase); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "批量修改某些字段",notes="") + @ApiEntityParams( value = XmTestCase.class, props={ }, remark = "测试用例", paramType = "body" ) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCase.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/editSomeFields",method=RequestMethod.POST) + public Map editSomeFields( @ApiIgnore @RequestBody Map xmTestCaseMap) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + List ids= (List) xmTestCaseMap.get("ids"); + if(ids==null || ids.size()==0){ + return failed("ids-0","ids不能为空"); + } + + Set fields=new HashSet<>(); + fields.add("id"); + for (String fieldName : xmTestCaseMap.keySet()) { + if(fields.contains(fieldName)){ + return failed(fieldName+"-no-edit",fieldName+"不允许修改"); + } + } + Set fieldKey=xmTestCaseMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet()); + fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTestCaseMap.get(i) )).collect(Collectors.toSet()); + + if(fieldKey.size()<=0) { + return failed("fieldKey-0","没有需要更新的字段"); + } + XmTestCase xmTestCase = fromMap(xmTestCaseMap,XmTestCase.class); + List xmTestCasesDb=xmTestCaseService.selectListByIds(ids); + if(xmTestCasesDb==null ||xmTestCasesDb.size()==0){ + return failed("data-0","记录已不存在"); + } + List can=new ArrayList<>(); + List no=new ArrayList<>(); + User user = LoginUtils.getCurrentUserInfo(); + for (XmTestCase xmTestCaseDb : xmTestCasesDb) { + Tips tips2 = new Tips("检查通过"); + if(!tips2.isOk()){ + no.add(xmTestCaseDb); + }else{ + can.add(xmTestCaseDb); + } + } + if(can.size()>0){ + xmTestCaseMap.put("ids",can.stream().map(i->i.getId()).collect(Collectors.toList())); + xmTestCaseService.editSomeFields(xmTestCaseMap); + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + msgs.add(String.format("成功更新以下%s条数据",can.size())); + } + if(no.size()>0){ + msgs.add(String.format("以下%s个数据无权限更新",no.size())); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + //m.put("data",xmMenu); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键列表批量删除测试用例信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") + }) + @RequestMapping(value="/batchDel",method=RequestMethod.POST) + public Map batchDelXmTestCase(@RequestBody List xmTestCases) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除"); + try{ + if(xmTestCases.size()<=0){ + return failed("data-0","请上送待删除数据列表"); + } + List datasDb=xmTestCaseService.selectListByIds(xmTestCases.stream().map(i-> i.getId() ).collect(Collectors.toList())); + + List can=new ArrayList<>(); + List no=new ArrayList<>(); + for (XmTestCase data : datasDb) { + if(true){ + can.add(data); + }else{ + no.add(data); + } + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + xmTestCaseService.batchDelete(can); + msgs.add(String.format("成功删除%s条数据.",can.size())); + } + + if(no.size()>0){ + msgs.add(String.format("以下%s条数据不能删除.【%s】",no.size(),no.stream().map(i-> i.getId() ).collect(Collectors.joining(",")))); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ +} diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTestCasedbController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTestCasedbController.java new file mode 100644 index 00000000..7c76f65e --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTestCasedbController.java @@ -0,0 +1,296 @@ +package com.xm.core.ctrl; + +import java.util.*; +import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.*; + +import static com.mdp.core.utils.ResponseHelper.*; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; +import com.mdp.mybatis.PageUtils; +import com.mdp.core.utils.RequestUtils; +import com.mdp.core.utils.NumberUtil; +import com.mdp.safe.client.entity.User; +import com.mdp.safe.client.utils.LoginUtils; +import com.mdp.swagger.ApiEntityParams; +import springfox.documentation.annotations.ApiIgnore; + +import com.xm.core.service.XmTestCasedbService; +import com.xm.core.entity.XmTestCasedb; + +/** + * url编制采用rest风格,如对xm_test_casedb 测试用例库的操作有增删改查,对应的url分别为:
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestCasedb 表 xm_test_casedb 当前主键(包括多主键): id; + ***/ +@RestController("xm.core.xmTestCasedbController") +@RequestMapping(value="/**/core/xmTestCasedb") +@Api(tags={"测试用例库操作接口"}) +public class XmTestCasedbController { + + static Logger logger =LoggerFactory.getLogger(XmTestCasedbController.class); + + @Autowired + private XmTestCasedbService xmTestCasedbService; + + + Map fieldsMap = toMap(new XmTestCasedb()); + + + @ApiOperation( value = "查询测试用例库信息列表",notes=" ") + @ApiEntityParams( XmTestCasedb.class ) + @ApiImplicitParams({ + @ApiImplicitParam(name="pageSize",value="每页大小,默认20条",required=false), + @ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false), + @ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false), + @ApiImplicitParam(name="count",value="是否计算总记录条数,如果count=true,则计算计算总条数,如果count=false 则不计算",required=false), + @ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student desc",required=false), + }) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCasedb.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}") + }) + @RequestMapping(value="/list",method=RequestMethod.GET) + public Map listXmTestCasedb( @ApiIgnore @RequestParam Map xmTestCasedb){ + Map m = new HashMap<>(); + Tips tips=new Tips("查询成功"); + RequestUtils.transformArray(xmTestCasedb, "ids"); + PageUtils.startPage(xmTestCasedb); + List> xmTestCasedbList = xmTestCasedbService.selectListMapByWhere(xmTestCasedb); //列出XmTestCasedb列表 + PageUtils.responePage(m, xmTestCasedbList); + m.put("data",xmTestCasedbList); + + m.put("tips", tips); + return m; + } + + + + /** + @ApiOperation( value = "新增一条测试用例库信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCasedb.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/add",method=RequestMethod.POST) + public Map addXmTestCasedb(@RequestBody XmTestCasedb xmTestCasedb) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功新增一条数据"); + try{ + boolean createPk=false; + if(!StringUtils.hasText(xmTestCasedb.getId())) { + createPk=true; + xmTestCasedb.setId(xmTestCasedbService.createKey("id")); + } + if(createPk==false){ + if(xmTestCasedbService.selectOneObject(xmTestCasedb) !=null ){ + return failed("pk-exists","编号重复,请修改编号再提交"); + } + } + xmTestCasedbService.insert(xmTestCasedb); + m.put("data",xmTestCasedb); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "删除一条测试用例库信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") + }) + @RequestMapping(value="/del",method=RequestMethod.POST) + public Map delXmTestCasedb(@RequestBody XmTestCasedb xmTestCasedb){ + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除一条数据"); + try{ + if(!StringUtils.hasText(xmTestCasedb.getId())) { + return failed("pk-not-exists","请上送主键参数id"); + } + XmTestCasedb xmTestCasedbDb = xmTestCasedbService.selectOneObject(xmTestCasedb); + if( xmTestCasedbDb == null ){ + return failed("data-not-exists","数据不存在,无法删除"); + } + xmTestCasedbService.deleteByPk(xmTestCasedb); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键修改一条测试用例库信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCasedb.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/edit",method=RequestMethod.POST) + public Map editXmTestCasedb(@RequestBody XmTestCasedb xmTestCasedb) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + if(!StringUtils.hasText(xmTestCasedb.getId())) { + return failed("pk-not-exists","请上送主键参数id"); + } + XmTestCasedb xmTestCasedbDb = xmTestCasedbService.selectOneObject(xmTestCasedb); + if( xmTestCasedbDb == null ){ + return failed("data-not-exists","数据不存在,无法修改"); + } + xmTestCasedbService.updateSomeFieldByPk(xmTestCasedb); + m.put("data",xmTestCasedb); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "批量修改某些字段",notes="") + @ApiEntityParams( value = XmTestCasedb.class, props={ }, remark = "测试用例库", paramType = "body" ) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestCasedb.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/editSomeFields",method=RequestMethod.POST) + public Map editSomeFields( @ApiIgnore @RequestBody Map xmTestCasedbMap) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + List ids= (List) xmTestCasedbMap.get("ids"); + if(ids==null || ids.size()==0){ + return failed("ids-0","ids不能为空"); + } + + Set fields=new HashSet<>(); + fields.add("id"); + for (String fieldName : xmTestCasedbMap.keySet()) { + if(fields.contains(fieldName)){ + return failed(fieldName+"-no-edit",fieldName+"不允许修改"); + } + } + Set fieldKey=xmTestCasedbMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet()); + fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTestCasedbMap.get(i) )).collect(Collectors.toSet()); + + if(fieldKey.size()<=0) { + return failed("fieldKey-0","没有需要更新的字段"); + } + XmTestCasedb xmTestCasedb = fromMap(xmTestCasedbMap,XmTestCasedb.class); + List xmTestCasedbsDb=xmTestCasedbService.selectListByIds(ids); + if(xmTestCasedbsDb==null ||xmTestCasedbsDb.size()==0){ + return failed("data-0","记录已不存在"); + } + List can=new ArrayList<>(); + List no=new ArrayList<>(); + User user = LoginUtils.getCurrentUserInfo(); + for (XmTestCasedb xmTestCasedbDb : xmTestCasedbsDb) { + Tips tips2 = new Tips("检查通过"); + if(!tips2.isOk()){ + no.add(xmTestCasedbDb); + }else{ + can.add(xmTestCasedbDb); + } + } + if(can.size()>0){ + xmTestCasedbMap.put("ids",can.stream().map(i->i.getId()).collect(Collectors.toList())); + xmTestCasedbService.editSomeFields(xmTestCasedbMap); + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + msgs.add(String.format("成功更新以下%s条数据",can.size())); + } + if(no.size()>0){ + msgs.add(String.format("以下%s个数据无权限更新",no.size())); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + //m.put("data",xmMenu); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键列表批量删除测试用例库信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") + }) + @RequestMapping(value="/batchDel",method=RequestMethod.POST) + public Map batchDelXmTestCasedb(@RequestBody List xmTestCasedbs) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除"); + try{ + if(xmTestCasedbs.size()<=0){ + return failed("data-0","请上送待删除数据列表"); + } + List datasDb=xmTestCasedbService.selectListByIds(xmTestCasedbs.stream().map(i-> i.getId() ).collect(Collectors.toList())); + + List can=new ArrayList<>(); + List no=new ArrayList<>(); + for (XmTestCasedb data : datasDb) { + if(true){ + can.add(data); + }else{ + no.add(data); + } + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + xmTestCasedbService.batchDelete(can); + msgs.add(String.format("成功删除%s条数据.",can.size())); + } + + if(no.size()>0){ + msgs.add(String.format("以下%s条数据不能删除.【%s】",no.size(),no.stream().map(i-> i.getId() ).collect(Collectors.joining(",")))); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ +} diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanCaseController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanCaseController.java new file mode 100644 index 00000000..b78e11f3 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanCaseController.java @@ -0,0 +1,307 @@ +package com.xm.core.ctrl; + +import java.util.*; +import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.*; + +import static com.mdp.core.utils.ResponseHelper.*; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; +import com.mdp.mybatis.PageUtils; +import com.mdp.core.utils.RequestUtils; +import com.mdp.core.utils.NumberUtil; +import com.mdp.safe.client.entity.User; +import com.mdp.safe.client.utils.LoginUtils; +import com.mdp.swagger.ApiEntityParams; +import springfox.documentation.annotations.ApiIgnore; + +import com.xm.core.service.XmTestPlanCaseService; +import com.xm.core.entity.XmTestPlanCase; + +/** + * url编制采用rest风格,如对xm_test_plan_case 测试计划与用例关系表的操作有增删改查,对应的url分别为:
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestPlanCase 表 xm_test_plan_case 当前主键(包括多主键): case_id,plan_id; + ***/ +@RestController("xm.core.xmTestPlanCaseController") +@RequestMapping(value="/**/core/xmTestPlanCase") +@Api(tags={"测试计划与用例关系表操作接口"}) +public class XmTestPlanCaseController { + + static Logger logger =LoggerFactory.getLogger(XmTestPlanCaseController.class); + + @Autowired + private XmTestPlanCaseService xmTestPlanCaseService; + + + Map fieldsMap = toMap(new XmTestPlanCase()); + + + @ApiOperation( value = "查询测试计划与用例关系表信息列表",notes=" ") + @ApiEntityParams( XmTestPlanCase.class ) + @ApiImplicitParams({ + @ApiImplicitParam(name="pageSize",value="每页大小,默认20条",required=false), + @ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false), + @ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false), + @ApiImplicitParam(name="count",value="是否计算总记录条数,如果count=true,则计算计算总条数,如果count=false 则不计算",required=false), + @ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student desc",required=false), + }) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlanCase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}") + }) + @RequestMapping(value="/list",method=RequestMethod.GET) + public Map listXmTestPlanCase( @ApiIgnore @RequestParam Map xmTestPlanCase){ + Map m = new HashMap<>(); + Tips tips=new Tips("查询成功"); + RequestUtils.transformArray(xmTestPlanCase, "pkList"); + PageUtils.startPage(xmTestPlanCase); + List> xmTestPlanCaseList = xmTestPlanCaseService.selectListMapByWhere(xmTestPlanCase); //列出XmTestPlanCase列表 + PageUtils.responePage(m, xmTestPlanCaseList); + m.put("data",xmTestPlanCaseList); + + m.put("tips", tips); + return m; + } + + + + /** + @ApiOperation( value = "新增一条测试计划与用例关系表信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlanCase.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/add",method=RequestMethod.POST) + public Map addXmTestPlanCase(@RequestBody XmTestPlanCase xmTestPlanCase) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功新增一条数据"); + try{ + boolean createPk=false; + if(!StringUtils.hasText(xmTestPlanCase.getCaseId())) { + createPk=true; + xmTestPlanCase.setCaseId(xmTestPlanCaseService.createKey("caseId")); + } + if(!StringUtils.hasText(xmTestPlanCase.getPlanId())) { + createPk=true; + xmTestPlanCase.setPlanId(xmTestPlanCaseService.createKey("planId")); + } + if(createPk==false){ + if(xmTestPlanCaseService.selectOneObject(xmTestPlanCase) !=null ){ + return failed("pk-exists","编号重复,请修改编号再提交"); + } + } + xmTestPlanCaseService.insert(xmTestPlanCase); + m.put("data",xmTestPlanCase); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "删除一条测试计划与用例关系表信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") + }) + @RequestMapping(value="/del",method=RequestMethod.POST) + public Map delXmTestPlanCase(@RequestBody XmTestPlanCase xmTestPlanCase){ + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除一条数据"); + try{ + if(!StringUtils.hasText(xmTestPlanCase.getCaseId())) { + return failed("pk-not-exists","请上送主键参数caseId"); + } + if(!StringUtils.hasText(xmTestPlanCase.getPlanId())) { + return failed("pk-not-exists","请上送主键参数planId"); + } + XmTestPlanCase xmTestPlanCaseDb = xmTestPlanCaseService.selectOneObject(xmTestPlanCase); + if( xmTestPlanCaseDb == null ){ + return failed("data-not-exists","数据不存在,无法删除"); + } + xmTestPlanCaseService.deleteByPk(xmTestPlanCase); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键修改一条测试计划与用例关系表信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlanCase.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/edit",method=RequestMethod.POST) + public Map editXmTestPlanCase(@RequestBody XmTestPlanCase xmTestPlanCase) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + if(!StringUtils.hasText(xmTestPlanCase.getCaseId())) { + return failed("pk-not-exists","请上送主键参数caseId"); + } + if(!StringUtils.hasText(xmTestPlanCase.getPlanId())) { + return failed("pk-not-exists","请上送主键参数planId"); + } + XmTestPlanCase xmTestPlanCaseDb = xmTestPlanCaseService.selectOneObject(xmTestPlanCase); + if( xmTestPlanCaseDb == null ){ + return failed("data-not-exists","数据不存在,无法修改"); + } + xmTestPlanCaseService.updateSomeFieldByPk(xmTestPlanCase); + m.put("data",xmTestPlanCase); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "批量修改某些字段",notes="") + @ApiEntityParams( value = XmTestPlanCase.class, props={ }, remark = "测试计划与用例关系表", paramType = "body" ) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlanCase.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/editSomeFields",method=RequestMethod.POST) + public Map editSomeFields( @ApiIgnore @RequestBody Map xmTestPlanCaseMap) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + List> pkList= (List>) xmTestPlanCaseMap.get("pkList"); + if(pkList==null || pkList.size()==0){ + return failed("pkList-0","pkList不能为空"); + } + + Set fields=new HashSet<>(); + fields.add("caseId"); + fields.add("planId"); + for (String fieldName : xmTestPlanCaseMap.keySet()) { + if(fields.contains(fieldName)){ + return failed(fieldName+"-no-edit",fieldName+"不允许修改"); + } + } + Set fieldKey=xmTestPlanCaseMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet()); + fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTestPlanCaseMap.get(i) )).collect(Collectors.toSet()); + + if(fieldKey.size()<=0) { + return failed("fieldKey-0","没有需要更新的字段"); + } + XmTestPlanCase xmTestPlanCase = fromMap(xmTestPlanCaseMap,XmTestPlanCase.class); + List xmTestPlanCasesDb=xmTestPlanCaseService.selectListByIds(pkList); + if(xmTestPlanCasesDb==null ||xmTestPlanCasesDb.size()==0){ + return failed("data-0","记录已不存在"); + } + List can=new ArrayList<>(); + List no=new ArrayList<>(); + User user = LoginUtils.getCurrentUserInfo(); + for (XmTestPlanCase xmTestPlanCaseDb : xmTestPlanCasesDb) { + Tips tips2 = new Tips("检查通过"); + if(!tips2.isOk()){ + no.add(xmTestPlanCaseDb); + }else{ + can.add(xmTestPlanCaseDb); + } + } + if(can.size()>0){ + xmTestPlanCaseMap.put("pkList",can.stream().map(i->map( "caseId",i.getCaseId(), "planId",i.getPlanId())).collect(Collectors.toList())); + xmTestPlanCaseService.editSomeFields(xmTestPlanCaseMap); + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + msgs.add(String.format("成功更新以下%s条数据",can.size())); + } + if(no.size()>0){ + msgs.add(String.format("以下%s个数据无权限更新",no.size())); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + //m.put("data",xmMenu); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键列表批量删除测试计划与用例关系表信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") + }) + @RequestMapping(value="/batchDel",method=RequestMethod.POST) + public Map batchDelXmTestPlanCase(@RequestBody List xmTestPlanCases) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除"); + try{ + if(xmTestPlanCases.size()<=0){ + return failed("data-0","请上送待删除数据列表"); + } + List datasDb=xmTestPlanCaseService.selectListByIds(xmTestPlanCases.stream().map(i->map( "caseId",i.getCaseId() , "planId",i.getPlanId() )).collect(Collectors.toList())); + + List can=new ArrayList<>(); + List no=new ArrayList<>(); + for (XmTestPlanCase data : datasDb) { + if(true){ + can.add(data); + }else{ + no.add(data); + } + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + xmTestPlanCaseService.batchDelete(can); + msgs.add(String.format("成功删除%s条数据.",can.size())); + } + + if(no.size()>0){ + msgs.add(String.format("以下%s条数据不能删除.【%s】",no.size(),no.stream().map(i-> i.getCaseId() +" "+ i.getPlanId() ).collect(Collectors.joining(",")))); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ +} diff --git a/xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanController.java b/xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanController.java new file mode 100644 index 00000000..f791d29e --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/ctrl/XmTestPlanController.java @@ -0,0 +1,296 @@ +package com.xm.core.ctrl; + +import java.util.*; +import java.util.stream.Collectors; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import io.swagger.annotations.*; + +import static com.mdp.core.utils.ResponseHelper.*; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; +import com.mdp.mybatis.PageUtils; +import com.mdp.core.utils.RequestUtils; +import com.mdp.core.utils.NumberUtil; +import com.mdp.safe.client.entity.User; +import com.mdp.safe.client.utils.LoginUtils; +import com.mdp.swagger.ApiEntityParams; +import springfox.documentation.annotations.ApiIgnore; + +import com.xm.core.service.XmTestPlanService; +import com.xm.core.entity.XmTestPlan; + +/** + * url编制采用rest风格,如对xm_test_plan 测试计划的操作有增删改查,对应的url分别为:
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestPlan 表 xm_test_plan 当前主键(包括多主键): id; + ***/ +@RestController("xm.core.xmTestPlanController") +@RequestMapping(value="/**/core/xmTestPlan") +@Api(tags={"测试计划操作接口"}) +public class XmTestPlanController { + + static Logger logger =LoggerFactory.getLogger(XmTestPlanController.class); + + @Autowired + private XmTestPlanService xmTestPlanService; + + + Map fieldsMap = toMap(new XmTestPlan()); + + + @ApiOperation( value = "查询测试计划信息列表",notes=" ") + @ApiEntityParams( XmTestPlan.class ) + @ApiImplicitParams({ + @ApiImplicitParam(name="pageSize",value="每页大小,默认20条",required=false), + @ApiImplicitParam(name="pageNum",value="当前页码,从1开始",required=false), + @ApiImplicitParam(name="total",value="总记录数,服务器端收到0时,会自动计算总记录数,如果上传>0的不自动计算",required=false), + @ApiImplicitParam(name="count",value="是否计算总记录条数,如果count=true,则计算计算总条数,如果count=false 则不计算",required=false), + @ApiImplicitParam(name="orderBy",value="排序列 如性别、学生编号排序 orderBy = sex desc,student desc",required=false), + }) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlan.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'错误码'},total:总记录数,data:[数据对象1,数据对象2,...]}") + }) + @RequestMapping(value="/list",method=RequestMethod.GET) + public Map listXmTestPlan( @ApiIgnore @RequestParam Map xmTestPlan){ + Map m = new HashMap<>(); + Tips tips=new Tips("查询成功"); + RequestUtils.transformArray(xmTestPlan, "ids"); + PageUtils.startPage(xmTestPlan); + List> xmTestPlanList = xmTestPlanService.selectListMapByWhere(xmTestPlan); //列出XmTestPlan列表 + PageUtils.responePage(m, xmTestPlanList); + m.put("data",xmTestPlanList); + + m.put("tips", tips); + return m; + } + + + + /** + @ApiOperation( value = "新增一条测试计划信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlan.class,message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/add",method=RequestMethod.POST) + public Map addXmTestPlan(@RequestBody XmTestPlan xmTestPlan) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功新增一条数据"); + try{ + boolean createPk=false; + if(!StringUtils.hasText(xmTestPlan.getId())) { + createPk=true; + xmTestPlan.setId(xmTestPlanService.createKey("id")); + } + if(createPk==false){ + if(xmTestPlanService.selectOneObject(xmTestPlan) !=null ){ + return failed("pk-exists","编号重复,请修改编号再提交"); + } + } + xmTestPlanService.insert(xmTestPlan); + m.put("data",xmTestPlan); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "删除一条测试计划信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") + }) + @RequestMapping(value="/del",method=RequestMethod.POST) + public Map delXmTestPlan(@RequestBody XmTestPlan xmTestPlan){ + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除一条数据"); + try{ + if(!StringUtils.hasText(xmTestPlan.getId())) { + return failed("pk-not-exists","请上送主键参数id"); + } + XmTestPlan xmTestPlanDb = xmTestPlanService.selectOneObject(xmTestPlan); + if( xmTestPlanDb == null ){ + return failed("data-not-exists","数据不存在,无法删除"); + } + xmTestPlanService.deleteByPk(xmTestPlan); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键修改一条测试计划信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlan.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/edit",method=RequestMethod.POST) + public Map editXmTestPlan(@RequestBody XmTestPlan xmTestPlan) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + if(!StringUtils.hasText(xmTestPlan.getId())) { + return failed("pk-not-exists","请上送主键参数id"); + } + XmTestPlan xmTestPlanDb = xmTestPlanService.selectOneObject(xmTestPlan); + if( xmTestPlanDb == null ){ + return failed("data-not-exists","数据不存在,无法修改"); + } + xmTestPlanService.updateSomeFieldByPk(xmTestPlan); + m.put("data",xmTestPlan); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "批量修改某些字段",notes="") + @ApiEntityParams( value = XmTestPlan.class, props={ }, remark = "测试计划", paramType = "body" ) + @ApiResponses({ + @ApiResponse(code = 200,response=XmTestPlan.class, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'},data:数据对象}") + }) + @RequestMapping(value="/editSomeFields",method=RequestMethod.POST) + public Map editSomeFields( @ApiIgnore @RequestBody Map xmTestPlanMap) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功更新一条数据"); + try{ + List ids= (List) xmTestPlanMap.get("ids"); + if(ids==null || ids.size()==0){ + return failed("ids-0","ids不能为空"); + } + + Set fields=new HashSet<>(); + fields.add("id"); + for (String fieldName : xmTestPlanMap.keySet()) { + if(fields.contains(fieldName)){ + return failed(fieldName+"-no-edit",fieldName+"不允许修改"); + } + } + Set fieldKey=xmTestPlanMap.keySet().stream().filter(i-> fieldsMap.containsKey(i)).collect(Collectors.toSet()); + fieldKey=fieldKey.stream().filter(i->!StringUtils.isEmpty(xmTestPlanMap.get(i) )).collect(Collectors.toSet()); + + if(fieldKey.size()<=0) { + return failed("fieldKey-0","没有需要更新的字段"); + } + XmTestPlan xmTestPlan = fromMap(xmTestPlanMap,XmTestPlan.class); + List xmTestPlansDb=xmTestPlanService.selectListByIds(ids); + if(xmTestPlansDb==null ||xmTestPlansDb.size()==0){ + return failed("data-0","记录已不存在"); + } + List can=new ArrayList<>(); + List no=new ArrayList<>(); + User user = LoginUtils.getCurrentUserInfo(); + for (XmTestPlan xmTestPlanDb : xmTestPlansDb) { + Tips tips2 = new Tips("检查通过"); + if(!tips2.isOk()){ + no.add(xmTestPlanDb); + }else{ + can.add(xmTestPlanDb); + } + } + if(can.size()>0){ + xmTestPlanMap.put("ids",can.stream().map(i->i.getId()).collect(Collectors.toList())); + xmTestPlanService.editSomeFields(xmTestPlanMap); + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + msgs.add(String.format("成功更新以下%s条数据",can.size())); + } + if(no.size()>0){ + msgs.add(String.format("以下%s个数据无权限更新",no.size())); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + //m.put("data",xmMenu); + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ + + /** + @ApiOperation( value = "根据主键列表批量删除测试计划信息",notes=" ") + @ApiResponses({ + @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}") + }) + @RequestMapping(value="/batchDel",method=RequestMethod.POST) + public Map batchDelXmTestPlan(@RequestBody List xmTestPlans) { + Map m = new HashMap<>(); + Tips tips=new Tips("成功删除"); + try{ + if(xmTestPlans.size()<=0){ + return failed("data-0","请上送待删除数据列表"); + } + List datasDb=xmTestPlanService.selectListByIds(xmTestPlans.stream().map(i-> i.getId() ).collect(Collectors.toList())); + + List can=new ArrayList<>(); + List no=new ArrayList<>(); + for (XmTestPlan data : datasDb) { + if(true){ + can.add(data); + }else{ + no.add(data); + } + } + List msgs=new ArrayList<>(); + if(can.size()>0){ + xmTestPlanService.batchDelete(can); + msgs.add(String.format("成功删除%s条数据.",can.size())); + } + + if(no.size()>0){ + msgs.add(String.format("以下%s条数据不能删除.【%s】",no.size(),no.stream().map(i-> i.getId() ).collect(Collectors.joining(",")))); + } + if(can.size()>0){ + tips.setOkMsg(msgs.stream().collect(Collectors.joining())); + }else { + tips.setFailureMsg(msgs.stream().collect(Collectors.joining())); + } + }catch (BizException e) { + tips=e.getTips(); + logger.error("",e); + }catch (Exception e) { + tips.setFailureMsg(e.getMessage()); + logger.error("",e); + } + m.put("tips", tips); + return m; + } + */ +} diff --git a/xm-core/src/main/java/com/xm/core/entity/XmTestCasedb.java b/xm-core/src/main/java/com/xm/core/entity/XmTestCasedb.java new file mode 100644 index 00000000..bd9ab075 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/entity/XmTestCasedb.java @@ -0,0 +1,59 @@ +package com.xm.core.entity; + +import lombok.Data; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; + +/** + * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestCasedb所有属性名:
+ * "id","主键","name","用例库名称","cuserid","创建人","cusername","创建人姓名","ctime","创建日期","cbranchId","归属机构编号","productId","产品编号","productName","产品名称";
+ * 当前主键(包括多主键):
+ * id;
+ */ + @Data +@ApiModel(description="测试用例库") +public class XmTestCasedb implements java.io.Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(notes="主键,主键",allowEmptyValue=true,example="",allowableValues="") + String id; + + + @ApiModelProperty(notes="用例库名称",allowEmptyValue=true,example="",allowableValues="") + String name; + + @ApiModelProperty(notes="创建人",allowEmptyValue=true,example="",allowableValues="") + String cuserid; + + @ApiModelProperty(notes="创建人姓名",allowEmptyValue=true,example="",allowableValues="") + String cusername; + + @ApiModelProperty(notes="创建日期",allowEmptyValue=true,example="",allowableValues="") + Date ctime; + + @ApiModelProperty(notes="归属机构编号",allowEmptyValue=true,example="",allowableValues="") + String cbranchId; + + @ApiModelProperty(notes="产品编号",allowEmptyValue=true,example="",allowableValues="") + String productId; + + @ApiModelProperty(notes="产品名称",allowEmptyValue=true,example="",allowableValues="") + String productName; + + /** + *主键 + **/ + public XmTestCasedb(String id) { + this.id = id; + } + + /** + * 测试用例库 + **/ + public XmTestCasedb() { + } + +} \ No newline at end of file diff --git a/xm-core/src/main/java/com/xm/core/entity/XmTestPlan.java b/xm-core/src/main/java/com/xm/core/entity/XmTestPlan.java new file mode 100644 index 00000000..c63d4235 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/entity/XmTestPlan.java @@ -0,0 +1,98 @@ +package com.xm.core.entity; + +import lombok.Data; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; + +/** + * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestPlan所有属性名:
+ * "id","测试计划编号","name","计划名称","casedbId","用例库编号","casedbName","用例库名称","projectId","项目编号","projectName","项目名称","cuserid","创建人编号","cusername","创建人名称","ctime","创建时间","stime","开始时间","etime","结束时间","status","状态0-未开始,1-进行中,2已结束","tcode","测试结果0未通过,1已通过","totalCases","总用例数","okCases","通过用例数","errCases","失败用例数","igCases","忽略用例数","blCases","阻塞用例数","productId","产品编号","productName","产品名称","flowState","评审结果0-待评审,1-已评审通过,2-已拒绝";
+ * 当前主键(包括多主键):
+ * id;
+ */ + @Data +@ApiModel(description="测试计划") +public class XmTestPlan implements java.io.Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(notes="测试计划编号,主键",allowEmptyValue=true,example="",allowableValues="") + String id; + + + @ApiModelProperty(notes="计划名称",allowEmptyValue=true,example="",allowableValues="") + String name; + + @ApiModelProperty(notes="用例库编号",allowEmptyValue=true,example="",allowableValues="") + String casedbId; + + @ApiModelProperty(notes="用例库名称",allowEmptyValue=true,example="",allowableValues="") + String casedbName; + + @ApiModelProperty(notes="项目编号",allowEmptyValue=true,example="",allowableValues="") + String projectId; + + @ApiModelProperty(notes="项目名称",allowEmptyValue=true,example="",allowableValues="") + String projectName; + + @ApiModelProperty(notes="创建人编号",allowEmptyValue=true,example="",allowableValues="") + String cuserid; + + @ApiModelProperty(notes="创建人名称",allowEmptyValue=true,example="",allowableValues="") + String cusername; + + @ApiModelProperty(notes="创建时间",allowEmptyValue=true,example="",allowableValues="") + Date ctime; + + @ApiModelProperty(notes="开始时间",allowEmptyValue=true,example="",allowableValues="") + Date stime; + + @ApiModelProperty(notes="结束时间",allowEmptyValue=true,example="",allowableValues="") + Date etime; + + @ApiModelProperty(notes="状态0-未开始,1-进行中,2已结束",allowEmptyValue=true,example="",allowableValues="") + String status; + + @ApiModelProperty(notes="测试结果0未通过,1已通过",allowEmptyValue=true,example="",allowableValues="") + String tcode; + + @ApiModelProperty(notes="总用例数",allowEmptyValue=true,example="",allowableValues="") + Integer totalCases; + + @ApiModelProperty(notes="通过用例数",allowEmptyValue=true,example="",allowableValues="") + Integer okCases; + + @ApiModelProperty(notes="失败用例数",allowEmptyValue=true,example="",allowableValues="") + Integer errCases; + + @ApiModelProperty(notes="忽略用例数",allowEmptyValue=true,example="",allowableValues="") + Integer igCases; + + @ApiModelProperty(notes="阻塞用例数",allowEmptyValue=true,example="",allowableValues="") + Integer blCases; + + @ApiModelProperty(notes="产品编号",allowEmptyValue=true,example="",allowableValues="") + String productId; + + @ApiModelProperty(notes="产品名称",allowEmptyValue=true,example="",allowableValues="") + String productName; + + @ApiModelProperty(notes="评审结果0-待评审,1-已评审通过,2-已拒绝",allowEmptyValue=true,example="",allowableValues="") + String flowState; + + /** + *测试计划编号 + **/ + public XmTestPlan(String id) { + this.id = id; + } + + /** + * 测试计划 + **/ + public XmTestPlan() { + } + +} \ No newline at end of file diff --git a/xm-core/src/main/java/com/xm/core/entity/XmTestPlanCase.java b/xm-core/src/main/java/com/xm/core/entity/XmTestPlanCase.java new file mode 100644 index 00000000..9ef9b1a3 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/entity/XmTestPlanCase.java @@ -0,0 +1,72 @@ +package com.xm.core.entity; + +import lombok.Data; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; + +/** + * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestPlanCase所有属性名:
+ * "bugs","bug数目","execUserid","执行人","caseId","测试用例编号","ltime","更新时间","ctime","创建时间","execStatus","0-未测,1-通过,2-受阻,3-忽略,4-失败","execUsername","执行人姓名","planId","计划编号","caseName","用例名称","priority","优先级","remark","执行备注","testStep","测试步骤";
+ * 当前主键(包括多主键):
+ * case_id,plan_id;
+ */ + @Data +@ApiModel(description="测试计划与用例关系表") +public class XmTestPlanCase implements java.io.Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(notes="测试用例编号,主键",allowEmptyValue=true,example="",allowableValues="") + String caseId; + + @ApiModelProperty(notes="计划编号,主键",allowEmptyValue=true,example="",allowableValues="") + String planId; + + + @ApiModelProperty(notes="bug数目",allowEmptyValue=true,example="",allowableValues="") + Integer bugs; + + @ApiModelProperty(notes="执行人",allowEmptyValue=true,example="",allowableValues="") + String execUserid; + + @ApiModelProperty(notes="更新时间",allowEmptyValue=true,example="",allowableValues="") + Date ltime; + + @ApiModelProperty(notes="创建时间",allowEmptyValue=true,example="",allowableValues="") + Date ctime; + + @ApiModelProperty(notes="0-未测,1-通过,2-受阻,3-忽略,4-失败",allowEmptyValue=true,example="",allowableValues="") + String execStatus; + + @ApiModelProperty(notes="执行人姓名",allowEmptyValue=true,example="",allowableValues="") + String execUsername; + + @ApiModelProperty(notes="用例名称",allowEmptyValue=true,example="",allowableValues="") + String caseName; + + @ApiModelProperty(notes="优先级",allowEmptyValue=true,example="",allowableValues="") + String priority; + + @ApiModelProperty(notes="执行备注",allowEmptyValue=true,example="",allowableValues="") + String remark; + + @ApiModelProperty(notes="测试步骤",allowEmptyValue=true,example="",allowableValues="") + String testStep; + + /** + *测试用例编号,计划编号 + **/ + public XmTestPlanCase(String caseId,String planId) { + this.caseId = caseId; + this.planId = planId; + } + + /** + * 测试计划与用例关系表 + **/ + public XmTestPlanCase() { + } + +} \ No newline at end of file diff --git a/xm-core/src/main/java/com/xm/core/service/XmTestCasedbService.java b/xm-core/src/main/java/com/xm/core/service/XmTestCasedbService.java new file mode 100644 index 00000000..76e38492 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/service/XmTestCasedbService.java @@ -0,0 +1,24 @@ +package com.xm.core.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Service; +import com.mdp.core.service.BaseService; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; + +import com.xm.core.entity.XmTestCasedb; +/** + * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestCasedb 表 xm_test_casedb 当前主键(包括多主键): id; + ***/ +@Service("xm.core.xmTestCasedbService") +public class XmTestCasedbService extends BaseService { + static Logger logger =LoggerFactory.getLogger(XmTestCasedbService.class); + +} + diff --git a/xm-core/src/main/java/com/xm/core/service/XmTestPlanCaseService.java b/xm-core/src/main/java/com/xm/core/service/XmTestPlanCaseService.java new file mode 100644 index 00000000..8e056618 --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/service/XmTestPlanCaseService.java @@ -0,0 +1,24 @@ +package com.xm.core.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Service; +import com.mdp.core.service.BaseService; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; + +import com.xm.core.entity.XmTestPlanCase; +/** + * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestPlanCase 表 xm_test_plan_case 当前主键(包括多主键): case_id,plan_id; + ***/ +@Service("xm.core.xmTestPlanCaseService") +public class XmTestPlanCaseService extends BaseService { + static Logger logger =LoggerFactory.getLogger(XmTestPlanCaseService.class); + +} + diff --git a/xm-core/src/main/java/com/xm/core/service/XmTestPlanService.java b/xm-core/src/main/java/com/xm/core/service/XmTestPlanService.java new file mode 100644 index 00000000..63ca9d0c --- /dev/null +++ b/xm-core/src/main/java/com/xm/core/service/XmTestPlanService.java @@ -0,0 +1,24 @@ +package com.xm.core.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import java.util.List; +import java.util.Map; +import org.springframework.stereotype.Service; +import com.mdp.core.service.BaseService; +import static com.mdp.core.utils.BaseUtils.*; +import com.mdp.core.entity.Tips; +import com.mdp.core.err.BizException; + +import com.xm.core.entity.XmTestPlan; +/** + * 父类已经支持增删改查操作,因此,即使本类什么也不写,也已经可以满足一般的增删改查操作了.
+ * 组织 com 顶级模块 xm 大模块 core 小模块
+ * 实体 XmTestPlan 表 xm_test_plan 当前主键(包括多主键): id; + ***/ +@Service("xm.core.xmTestPlanService") +public class XmTestPlanService extends BaseService { + static Logger logger =LoggerFactory.getLogger(XmTestPlanService.class); + +} + diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestCasedbMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestCasedbMapper.xml new file mode 100644 index 00000000..2637151a --- /dev/null +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestCasedbMapper.xml @@ -0,0 +1,188 @@ + + + + + + + + + and (res.id) in + + ( #{item}) + + + + + + + + + + + + + + + + + + + + + + + + + + insert into xm_test_casedb( + + ) values ( + #{id},#{name},#{cuserid},#{cusername},#{ctime},#{cbranchId},#{productId},#{productName} + ) + + + + + delete from xm_test_casedb res + + + + + + + + delete from xm_test_casedb + where id = #{id} + + + + + update xm_test_casedb + + + + where id = #{id} + + + + + update xm_test_casedb + + + + where id = #{id} + + + + + + + + update xm_test_casedb + set + + where id = #{item.id} + + + + + + update xm_test_casedb + + + + where (id) in + + ( #{item}) + + + + + delete from xm_test_casedb + where + (id) in + + ( #{item.id} ) + + + + + + + id,name,cuserid,cusername,ctime,cbranch_id,product_id,product_name + + + + + and res.id = #{id} + and res.name = #{name} + and res.cuserid = #{cuserid} + and res.cusername = #{cusername} + and date_format(res.ctime,'%Y-%m-%d') = date_format(#{ctime},'%Y-%m-%d') + and res.cbranch_id = #{cbranchId} + and res.product_id = #{productId} + and res.product_name = #{productName} + + + + name = #{name}, + cuserid = #{cuserid}, + cusername = #{cusername}, + ctime = #{ctime}, + cbranch_id = #{cbranchId}, + product_id = #{productId}, + product_name = #{productName} + + + name = #{name}, + cuserid = #{cuserid}, + cusername = #{cusername}, + ctime = #{ctime}, + cbranch_id = #{cbranchId}, + product_id = #{productId}, + product_name = #{productName}, + + + + name = #{item.name}, + cuserid = #{item.cuserid}, + cusername = #{item.cusername}, + ctime = #{item.ctime}, + cbranch_id = #{item.cbranchId}, + product_id = #{item.productId}, + product_name = #{item.productName} + + \ No newline at end of file diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestPlanCaseMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestPlanCaseMapper.xml new file mode 100644 index 00000000..788c7d06 --- /dev/null +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestPlanCaseMapper.xml @@ -0,0 +1,203 @@ + + + + + + + + + and (res.case_id, res.plan_id) in + + ( #{item.caseId}, #{item.planId}) + + + + + + + + + + + + + + + + + + + + + + + + + + insert into xm_test_plan_case( + + ) values ( + #{bugs},#{execUserid},#{caseId},#{ltime},#{ctime},#{execStatus},#{execUsername},#{planId},#{caseName},#{priority},#{remark},#{testStep} + ) + + + + + delete from xm_test_plan_case res + + + + + + + + delete from xm_test_plan_case + where case_id = #{caseId} and plan_id = #{planId} + + + + + update xm_test_plan_case + + + + where case_id = #{caseId} and plan_id = #{planId} + + + + + update xm_test_plan_case + + + + where case_id = #{caseId} and plan_id = #{planId} + + + + + + + + update xm_test_plan_case + set + + where case_id = #{item.caseId} and plan_id = #{item.planId} + + + + + + update xm_test_plan_case + + + + where (case_id, plan_id) in + + ( #{item.caseId}, #{item.planId}) + + + + + delete from xm_test_plan_case + where + (case_id, plan_id) in + + ( #{item.caseId}, #{item.planId} ) + + + + + + + bugs,exec_userid,case_id,ltime,ctime,exec_status,exec_username,plan_id,case_name,priority,remark,test_step + + + + + and res.bugs = #{bugs} + and res.exec_userid = #{execUserid} + and res.case_id = #{caseId} + and date_format(res.ltime,'%Y-%m-%d') = date_format(#{ltime},'%Y-%m-%d') + and date_format(res.ctime,'%Y-%m-%d') = date_format(#{ctime},'%Y-%m-%d') + and res.exec_status = #{execStatus} + and res.exec_username = #{execUsername} + and res.plan_id = #{planId} + and res.case_name = #{caseName} + and res.priority = #{priority} + and res.remark = #{remark} + and res.test_step = #{testStep} + + + + bugs = #{bugs}, + exec_userid = #{execUserid}, + ltime = #{ltime}, + ctime = #{ctime}, + exec_status = #{execStatus}, + exec_username = #{execUsername}, + case_name = #{caseName}, + priority = #{priority}, + remark = #{remark}, + test_step = #{testStep} + + + bugs = #{bugs}, + exec_userid = #{execUserid}, + ltime = #{ltime}, + ctime = #{ctime}, + exec_status = #{execStatus}, + exec_username = #{execUsername}, + case_name = #{caseName}, + priority = #{priority}, + remark = #{remark}, + test_step = #{testStep}, + + + + bugs = #{item.bugs}, + exec_userid = #{item.execUserid}, + ltime = #{item.ltime}, + ctime = #{item.ctime}, + exec_status = #{item.execStatus}, + exec_username = #{item.execUsername}, + case_name = #{item.caseName}, + priority = #{item.priority}, + remark = #{item.remark}, + test_step = #{item.testStep} + + \ No newline at end of file diff --git a/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestPlanMapper.xml b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestPlanMapper.xml new file mode 100644 index 00000000..d81d20d6 --- /dev/null +++ b/xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmTestPlanMapper.xml @@ -0,0 +1,240 @@ + + + + + + + + + and (res.id) in + + ( #{item}) + + + + + + + + + + + + + + + + + + + + + + + + + + insert into xm_test_plan( + + ) values ( + #{id},#{name},#{casedbId},#{casedbName},#{projectId},#{projectName},#{cuserid},#{cusername},#{ctime},#{stime},#{etime},#{status},#{tcode},#{totalCases},#{okCases},#{errCases},#{igCases},#{blCases},#{productId},#{productName},#{flowState} + ) + + + + + delete from xm_test_plan res + + + + + + + + delete from xm_test_plan + where id = #{id} + + + + + update xm_test_plan + + + + where id = #{id} + + + + + update xm_test_plan + + + + where id = #{id} + + + + + + + + update xm_test_plan + set + + where id = #{item.id} + + + + + + update xm_test_plan + + + + where (id) in + + ( #{item}) + + + + + delete from xm_test_plan + where + (id) in + + ( #{item.id} ) + + + + + + + id,name,casedb_id,casedb_name,project_id,project_name,cuserid,cusername,ctime,stime,etime,status,tcode,total_cases,ok_cases,err_cases,ig_cases,bl_cases,product_id,product_name,flow_state + + + + + and res.id = #{id} + and res.name = #{name} + and res.casedb_id = #{casedbId} + and res.casedb_name = #{casedbName} + and res.project_id = #{projectId} + and res.project_name = #{projectName} + and res.cuserid = #{cuserid} + and res.cusername = #{cusername} + and date_format(res.ctime,'%Y-%m-%d') = date_format(#{ctime},'%Y-%m-%d') + and date_format(res.stime,'%Y-%m-%d') = date_format(#{stime},'%Y-%m-%d') + and date_format(res.etime,'%Y-%m-%d') = date_format(#{etime},'%Y-%m-%d') + and res.status = #{status} + and res.tcode = #{tcode} + and res.total_cases = #{totalCases} + and res.ok_cases = #{okCases} + and res.err_cases = #{errCases} + and res.ig_cases = #{igCases} + and res.bl_cases = #{blCases} + and res.product_id = #{productId} + and res.product_name = #{productName} + and res.flow_state = #{flowState} + + + + name = #{name}, + casedb_id = #{casedbId}, + casedb_name = #{casedbName}, + project_id = #{projectId}, + project_name = #{projectName}, + cuserid = #{cuserid}, + cusername = #{cusername}, + ctime = #{ctime}, + stime = #{stime}, + etime = #{etime}, + status = #{status}, + tcode = #{tcode}, + total_cases = #{totalCases}, + ok_cases = #{okCases}, + err_cases = #{errCases}, + ig_cases = #{igCases}, + bl_cases = #{blCases}, + product_id = #{productId}, + product_name = #{productName}, + flow_state = #{flowState} + + + name = #{name}, + casedb_id = #{casedbId}, + casedb_name = #{casedbName}, + project_id = #{projectId}, + project_name = #{projectName}, + cuserid = #{cuserid}, + cusername = #{cusername}, + ctime = #{ctime}, + stime = #{stime}, + etime = #{etime}, + status = #{status}, + tcode = #{tcode}, + total_cases = #{totalCases}, + ok_cases = #{okCases}, + err_cases = #{errCases}, + ig_cases = #{igCases}, + bl_cases = #{blCases}, + product_id = #{productId}, + product_name = #{productName}, + flow_state = #{flowState}, + + + + name = #{item.name}, + casedb_id = #{item.casedbId}, + casedb_name = #{item.casedbName}, + project_id = #{item.projectId}, + project_name = #{item.projectName}, + cuserid = #{item.cuserid}, + cusername = #{item.cusername}, + ctime = #{item.ctime}, + stime = #{item.stime}, + etime = #{item.etime}, + status = #{item.status}, + tcode = #{item.tcode}, + total_cases = #{item.totalCases}, + ok_cases = #{item.okCases}, + err_cases = #{item.errCases}, + ig_cases = #{item.igCases}, + bl_cases = #{item.blCases}, + product_id = #{item.productId}, + product_name = #{item.productName}, + flow_state = #{item.flowState} + + \ No newline at end of file