Browse Source

项目模板

master
陈裕财 3 years ago
parent
commit
12bff6a185
  1. 95
      xm-core/src/main/java/com/xm/core/service/XmProductService.java
  2. 34
      xm-core/src/main/java/com/xm/core/service/XmProjectService.java
  3. 4
      xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectMapper.xml

95
xm-core/src/main/java/com/xm/core/service/XmProductService.java

@ -249,6 +249,101 @@ public class XmProductService extends BaseService {
return xmProductTo; return xmProductTo;
} }
@Transactional
public Map<String,XmProduct> copyTo(User user, List<XmTask> xmTasks) {
Set<String> products = xmTasks.stream().map(i->i.getProductId()).collect(Collectors.toSet());
products.remove(null);
Map<String,XmProduct> productsMap=new HashMap<>();
if(products==null || products.size()==0){
return productsMap;
}
for (String productId : products) {
XmProductCopyVo xmProduct=new XmProductCopyVo();
xmProduct.setId(productId);
xmProduct.setCode(this.createProductCode(user.getBranchId()));
xmProduct.setCopyMenu("1");
XmProduct pq=new XmProduct();
pq.setId(xmProduct.getId());
XmProduct xmProductDb=this.selectOneObject(pq);
if(xmProductDb==null){
throw new BizException("产品不存在");
}
xmProduct.setProductName(xmProductDb.getProductName()+"(复制)");
String isTpl=xmProduct.getIsTpl();
XmProduct xmProductTo=new XmProduct();
BeanUtils.copyProperties(xmProductDb,xmProductTo);
xmProductTo.setProductName(xmProduct.getProductName());
xmProductTo.setCode(xmProduct.getCode());
if(!StringUtils.hasText(xmProduct.getCode())){
xmProductTo.setCode(createProductCode(user.getBranchId()));
}
xmProductTo.setId(this.createProductId(xmProductTo.getCode()));
xmProductTo.setBranchId(user.getBranchId());
xmProductTo.setDeptid(user.getDeptid());
xmProductTo.setDeptName(user.getDeptName());
xmProductTo.setAdmUserid(user.getUserid());
xmProductTo.setAdmUsername(user.getUsername());
xmProductTo.setPmUserid(user.getUserid());
xmProductTo.setPmUsername(user.getUsername());
xmProductTo.setCtime(new Date());
xmProductTo.setPstatus("0");
xmProductTo.setIsTpl(isTpl);
xmProductTo.setAssUserid(user.getUserid());
xmProductTo.setAssUsername(user.getUsername());
xmProductTo.setBizProcInstId(null);
xmProductTo.setBizFlowState("0");
xmProductTo.setLtime(new Date());
xmProductTo.setDel("0");
xmProductTo.setLocked("0");
if(xmProduct.getProductName().equals(xmProductDb.getProductName())){
xmProductTo.setProductName(xmProduct.getProductName()+"(复制)");
}
this.insert(xmProductTo);
productsMap.put(productId,xmProductTo);
Map<String,String> newMenuIdMap=new HashMap<>();
Map<String,XmMenu> menusMap=new HashMap<>();
if("1".equals(xmProduct.getCopyMenu())){
XmMenu mq=new XmMenu();
mq.setProductId(xmProduct.getId());
List<XmMenu> xmMenus=this.xmMenuService.selectListByWhere(mq);
if(xmMenus!=null && xmMenus.size()>0){
for (XmMenu node : xmMenus) {
newMenuIdMap.put(node.getMenuId(),this.xmMenuService.createKey("id"));
}
for (XmMenu node : xmMenus) {
String oldId=node.getMenuId();
String newId=newMenuIdMap.get(oldId);
node.setMenuId(newId);
node.setProductId(xmProductTo.getId());
node.setPmenuId(newMenuIdMap.get(node.getPmenuId()));
node.setCtime(new Date());
node.setMmUserid(user.getUserid());
node.setMmUsername(user.getUsername());
node.setIterationId(null);
menusMap.put(node.getMenuId(),node);
}
this.xmMenuService.parentIdPathsCalcBeforeSave(xmMenus);
this.xmMenuService.doBatchInsert(xmMenus);
}
}
if(xmTasks!=null && xmTasks.size()>0){
for (XmTask node : xmTasks) {
if(StringUtils.hasText(node.getMenuId()) && newMenuIdMap.containsKey(node.getMenuId())){
node.setProductId(xmProductTo.getId());
node.setMenuId(newMenuIdMap.get(node.getMenuId()));
XmMenu xmMenu=menusMap.get(node.getMenuId());
node.setMenuName(xmMenu.getMenuName());
}
}
}
}
return productsMap;
}
public String createProductCode(String branchId){ public String createProductCode(String branchId){
XmProduct product=new XmProduct(); XmProduct product=new XmProduct();
product.setBranchId(branchId); product.setBranchId(branchId);

34
xm-core/src/main/java/com/xm/core/service/XmProjectService.java

@ -65,6 +65,9 @@ public class XmProjectService extends BaseService {
@Autowired @Autowired
XmGroupUserService groupUserService; XmGroupUserService groupUserService;
@Autowired
XmProductService xmProductService;
public XmProject getProjectFromCache(String projectId) { public XmProject getProjectFromCache(String projectId) {
XmProject projectCahce=xmProjectCacheService.getProject(projectId); XmProject projectCahce=xmProjectCacheService.getProject(projectId);
@ -88,7 +91,7 @@ public class XmProjectService extends BaseService {
} }
}else{ }else{
if(!user.getBranchId().equals(xmProjectDb.getBranchId())){ if(!user.getBranchId().equals(xmProjectDb.getBranchId())){
if(!platformBranchId.equals(xmProjectDb.getBranchId())){
if(!platformBranchId.equals(xmProjectDb.getBranchId()) && !"1".equals(xmProjectDb.getTplType())){
throw new BizException("您无权复制其它组织的项目"); throw new BizException("您无权复制其它组织的项目");
} }
} }
@ -113,8 +116,9 @@ public class XmProjectService extends BaseService {
xmProjectTo.setAssUsername(user.getUsername()); xmProjectTo.setAssUsername(user.getUsername());
xmProjectTo.setPmUserid(user.getUserid()); xmProjectTo.setPmUserid(user.getUserid());
xmProjectTo.setPmUsername(user.getUsername()); xmProjectTo.setPmUsername(user.getUsername());
xmProjectTo.setTplType(xmProject.getTplType());
this.saveProject(xmProjectTo); this.saveProject(xmProjectTo);
Map<String,XmProduct> productsMap=new HashMap<>();
if("1".equals(xmProject.getCopyTask())){ if("1".equals(xmProject.getCopyTask())){
XmTask taskQ=new XmTask(); XmTask taskQ=new XmTask();
taskQ.setProjectId(xmProjectDb.getId()); taskQ.setProjectId(xmProjectDb.getId());
@ -137,9 +141,12 @@ public class XmProjectService extends BaseService {
node.setCreateTime(new Date()); node.setCreateTime(new Date());
node.setPreTaskid(newTaskIdMap.get(node.getPreTaskid())); node.setPreTaskid(newTaskIdMap.get(node.getPreTaskid()));
node.setIsTpl(isTpl); node.setIsTpl(isTpl);
if(!"1".equals(xmProject.getCopyProduct())){
node.setMenuId(null); node.setMenuId(null);
node.setMenuName(null); node.setMenuName(null);
node.setProductId(null); node.setProductId(null);
}
node.setExeUsernames(null); node.setExeUsernames(null);
node.setExeUserids(null); node.setExeUserids(null);
node.setRate(0); node.setRate(0);
@ -148,11 +155,30 @@ public class XmProjectService extends BaseService {
node.setExecutorUserid(null); node.setExecutorUserid(null);
node.setExecutorUsername(null); node.setExecutorUsername(null);
} }
if("1".equals(xmProject.getCopyProduct())){
productsMap=this.xmProductService.copyTo(user,xmTasks);
}
this.xmTaskService.parentIdPathsCalcBeforeSave(xmTasks); this.xmTaskService.parentIdPathsCalcBeforeSave(xmTasks);
this.xmTaskService.batchImportFromTemplate(xmTasks); this.xmTaskService.batchImportFromTemplate(xmTasks);
} }
} }
if(productsMap!=null && productsMap.size()>0){
//构建项目与产品的关联关系
List<XmProductProjectLink> links=new ArrayList<>();
for (XmProduct product : productsMap.values()) {
XmProductProjectLink link=new XmProductProjectLink();
link.setSeq(999);
link.setProductId(product.getId());
link.setProjectId(xmProjectTo.getId());
link.setLinkStatus("1");
link.setCtime(new Date());
link.setCusername(user.getUsername());
link.setCuserid(user.getUserid());
links.add(link);
}
this.linkService.batchInsert(links);
}
List<XmGroup> groupsDb=new ArrayList<>(); List<XmGroup> groupsDb=new ArrayList<>();
Map<String, String> newGroupIdMap = new HashMap<>(); Map<String, String> newGroupIdMap = new HashMap<>();
if( "1".equals(xmProject.getCopyGroup())||"1".equals(xmProject.getCopyGroupUser())) { if( "1".equals(xmProject.getCopyGroup())||"1".equals(xmProject.getCopyGroupUser())) {
@ -199,6 +225,8 @@ public class XmProjectService extends BaseService {
this.groupUserService.batchInsert(usersDb); this.groupUserService.batchInsert(usersDb);
} }
} }
return xmProjectTo; return xmProjectTo;
} }

4
xm-core/src/main/resources/mybatis/mapper/xm/core/dao/XmProjectMapper.xml

@ -11,6 +11,9 @@
( #{item}) ( #{item})
</foreach> </foreach>
</if><!-- 筛选属于当前年份的项目 --> </if><!-- 筛选属于当前年份的项目 -->
<if test='tplType!="1" and linkBranchId !=null and linkBranchId!=""'>
and ( res.branch_id=#{linkBranchId})
</if>
<if test="startYear != null and startYear != ''" >and ( <if test="startYear != null and startYear != ''" >and (
date_format(start_time,'%Y') = #{startYear} date_format(start_time,'%Y') = #{startYear}
or date_format(end_time,'%Y') = #{startYear} or date_format(end_time,'%Y') = #{startYear}
@ -57,6 +60,7 @@
<if test='isTpl!=null and isTpl=="1" and tplType=="2"'> <if test='isTpl!=null and isTpl=="1" and tplType=="2"'>
and (res.branch_id =#{linkBranchId} and res.is_tpl='1' and res.tpl_type='2') and (res.branch_id =#{linkBranchId} and res.is_tpl='1' and res.tpl_type='2')
</if> </if>
<if test='isTpl!=null and isTpl=="1" and tplType=="1"'> <if test='isTpl!=null and isTpl=="1" and tplType=="1"'>
and ( res.is_tpl='1' and res.tpl_type='1') and ( res.is_tpl='1' and res.tpl_type='1')
</if> </if>

Loading…
Cancel
Save