feat(project): 添加项目收藏和会审功能

- 在项目信息页面添加是否收藏和是否会审的筛选条件
- 在项目表格中添加收藏和会审状态显示列
- 实现项目收藏状态的修改功能
- 实现项目会审状态的修改功能
- 添加权限控制,无权限用户无法修改会审状态
- 生成订单时增加会审状态判断,只有会审通过的项目才能生成订单
- 添加项目用户收藏信息的数据表和相关服务
- 在项目列表查询时关联用户收藏状态
- 修复代理处变更校验的逻辑错误
- 更新项目导出功能,添加收藏和会审字段的导出
dev_1.0.1
chenhao 2026-01-06 20:49:27 +08:00
parent 4ce68abe84
commit b1cbbec237
13 changed files with 585 additions and 7 deletions

View File

@ -52,3 +52,22 @@ export function exportProject(query) {
params: query params: query
}) })
} }
// 项目收藏
export function addCollect(data) {
return request({
url: '/project/collect/add',
method: 'post',
data: data,
needLoading:true
})
}
export function editJoinTrial(data) {
return request({
url: '/sip/project/vue/joinTrial',
method: 'put',
data: data,
needLoading:true
})
}

View File

@ -84,6 +84,18 @@
<el-option label="否" value="0" /> <el-option label="否" value="0" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="是否收藏" prop="collect">
<el-select v-model="queryParams.collect" placeholder="请选择" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
</el-select>
</el-form-item>
<el-form-item label="是否会审" prop="jointTrial">
<el-select v-model="queryParams.jointTrial" placeholder="请选择" clearable>
<el-option label="是" value="1" />
<el-option label="否" value="0" />
</el-select>
</el-form-item>
<el-form-item label="时间选择" prop="timeType"> <el-form-item label="时间选择" prop="timeType">
<el-select v-model="queryParams.timeType" placeholder="请选择时间类型" @change="handleTimeTypeChange"> <el-select v-model="queryParams.timeType" placeholder="请选择时间类型" @change="handleTimeTypeChange">
<el-option label="预计下单时间" value="0" /> <el-option label="预计下单时间" value="0" />
@ -190,6 +202,17 @@
<span>{{ parseTime(scope.row.lastWorkUpdateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span> <span>{{ parseTime(scope.row.lastWorkUpdateTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="收藏" align="center" prop="collect" width="60">
<template slot-scope="scope">
<el-checkbox v-model="scope.row.collect" true-label="1" false-label="0" @change="handleCollectChange(scope.row)" />
</template>
</el-table-column>
<el-table-column label="会审" align="center" prop="jointTrial" width="60">
<template slot-scope="scope">
<el-checkbox v-if="!canUpdateJoinTrial" :value="scope.row.jointTrial === '1'" @change="()=>{ $modal.msgError('无权限修改');return false;}" />
<el-checkbox v-else v-model="scope.row.jointTrial" true-label="1" false-label="0" @change="handleJoinTrialChange(scope.row)"/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300" fixed="right"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -204,7 +227,7 @@
type="text" type="text"
icon="el-icon-refresh" icon="el-icon-refresh"
@click="openOrder(scope.row.id, scope.row.canGenerate)" @click="openOrder(scope.row.id, scope.row.canGenerate)"
:disabled="!scope.row.canGenerate" :disabled="!scope.row.canGenerate || scope.row.jointTrial !== '1'"
v-hasPermi="['sip:project:add']" v-hasPermi="['sip:project:add']"
>生成订单</el-button> >生成订单</el-button>
<el-button <el-button
@ -242,10 +265,11 @@
</template> </template>
<script> <script>
import { listProject, delProject, exportProject } from "@/api/project/info"; import {listProject, delProject, exportProject, addCollect, updateProject, editJoinTrial} from "@/api/project/info";
import ProjectDetailDrawer from "./ProjectDetailDrawer.vue"; import ProjectDetailDrawer from "./ProjectDetailDrawer.vue";
import ProjectForm from "./ProjectForm.vue"; import ProjectForm from "./ProjectForm.vue";
import OrderDetail from "../order/OrderDetail.vue"; import OrderDetail from "../order/OrderDetail.vue";
import store from "@/store";
export default { export default {
name: "Project", name: "Project",
@ -259,6 +283,7 @@ export default {
return { return {
// //
loading: true, loading: true,
canUpdateJoinTrial: false,
// //
ids: [], ids: [],
// //
@ -293,6 +318,8 @@ export default {
bgProperty: null, bgProperty: null,
industryType: null, industryType: null,
agentName: null, agentName: null,
jointTrial: null,
collect: null,
projectGraspDegree: null, projectGraspDegree: null,
projectStage: [], projectStage: [],
hzSupportUserName: null, hzSupportUserName: null,
@ -308,6 +335,14 @@ export default {
}, },
created() { created() {
this.getList(); this.getList();
const permissions = store.getters && store.getters.permissions
console.log(permissions)
const all_permission = "*:*:*"
debugger
this.canUpdateJoinTrial = permissions.some(permission => {
return all_permission === permission || "sip:project:jointTrial"===permission
})
console.log(this.canUpdateJoinTrial)
}, },
watch: { watch: {
dateRange(val) { dateRange(val) {
@ -461,6 +496,47 @@ export default {
this.openOrderDialog = false; this.openOrderDialog = false;
this.getList(); this.getList();
}, },
/** 项目收藏状态修改 */
handleCollectChange(row) {
let params={
"projectId":row.id,
"collect":row.collect
}
addCollect(params).then(response => {
this.$modal.msgSuccess("操作成功");
})
},
/** 项目会审状态修改 */
handleJoinTrialChange(row) {
if (row.jointTrial === '0'){
this.$modal.confirm('是否确认取消会审?').then(function() {
let params={
"id":row.id,
"partnerCode":row.partnerCode,
"jointTrial":row.jointTrial
}
editJoinTrial(params).then(response => {
this.$modal.msgSuccess("取消成功");
})
}).catch((err)=>{
row.jointTrial = row.jointTrial === '1' ? '0' : '1';
})
}else{
let params={
"id":row.id,
"partnerCode":row.partnerCode,
"jointTrial":row.jointTrial
}
editJoinTrial(params).then(response => {
this.$modal.msgSuccess("操作成功");
}).catch(() => {
row.jointTrial = row.jointTrial === '1' ? '0' : '1';
});
}
},
} }
}; };
</script> </script>

View File

@ -0,0 +1,102 @@
package com.ruoyi.sip.controller;
import java.util.List;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.sip.domain.ProjectUserCollectInfo;
import com.ruoyi.sip.service.IProjectUserCollectInfoService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* Controller
*
* @author ruoyi
* @date 2026-01-06
*/
@Controller
@RequestMapping("/project/collect")
public class ProjectUserCollectInfoController extends BaseController
{
@Autowired
private IProjectUserCollectInfoService projectUserCollectInfoService;
/**
*
*/
@RequiresPermissions("sip:projectCollect:list")
@PostMapping("/list")
@ResponseBody
public TableDataInfo list(ProjectUserCollectInfo projectUserCollectInfo)
{
startPage();
List<ProjectUserCollectInfo> list = projectUserCollectInfoService.selectProjectUserCollectInfoList(projectUserCollectInfo);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("sip:projectCollect:export")
@Log(title = "产品库存", businessType = BusinessType.EXPORT)
@PostMapping("/export")
@ResponseBody
public AjaxResult export(ProjectUserCollectInfo projectUserCollectInfo)
{
List<ProjectUserCollectInfo> list = projectUserCollectInfoService.selectProjectUserCollectInfoList(projectUserCollectInfo);
ExcelUtil<ProjectUserCollectInfo> util = new ExcelUtil<ProjectUserCollectInfo>(ProjectUserCollectInfo.class);
return util.exportExcel(list, "产品库存数据");
}
/**
*
*/
@Log(title = "产品库存", businessType = BusinessType.INSERT)
@PostMapping("/add")
@ResponseBody
public AjaxResult addSave( @RequestBody ProjectUserCollectInfo projectUserCollectInfo)
{
projectUserCollectInfo.setUserId(getUserId());
return toAjax(projectUserCollectInfoService.insertProjectUserCollectInfo(projectUserCollectInfo));
}
/**
*
*/
@RequiresPermissions("sip:projectCollect:edit")
@Log(title = "产品库存", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
@ResponseBody
public AjaxResult editSave(ProjectUserCollectInfo projectUserCollectInfo)
{
return toAjax(projectUserCollectInfoService.updateProjectUserCollectInfo(projectUserCollectInfo));
}
/**
*
*/
@RequiresPermissions("sip:projectCollect:remove")
@Log(title = "产品库存", businessType = BusinessType.DELETE)
@PostMapping( "/remove")
@ResponseBody
public AjaxResult remove(String ids)
{
return toAjax(projectUserCollectInfoService.deleteProjectUserCollectInfoByIds(ids));
}
}

View File

@ -42,6 +42,7 @@ public class VueProjectInfoController extends BaseController {
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(ProjectInfo projectInfo) { public TableDataInfo list(ProjectInfo projectInfo) {
startPage(); startPage();
projectInfo.setCurrentUserId(getUserId());
List<ProjectInfo> list = projectInfoService.selectProjectInfoList(projectInfo); List<ProjectInfo> list = projectInfoService.selectProjectInfoList(projectInfo);
return getDataTable(list); return getDataTable(list);
} }
@ -91,6 +92,12 @@ public class VueProjectInfoController extends BaseController {
public AjaxResult edit(@RequestBody ProjectInfo projectInfo) { public AjaxResult edit(@RequestBody ProjectInfo projectInfo) {
return toAjax(projectInfoService.updateProjectInfo(projectInfo)); return toAjax(projectInfoService.updateProjectInfo(projectInfo));
} }
@RequiresPermissions("sip:project:edit")
@Log(title = "项目管理", businessType = BusinessType.UPDATE)
@PutMapping("/joinTrial")
public AjaxResult editJoinTrial(@RequestBody ProjectInfo projectInfo) {
return toAjax(projectInfoService.editJoinTrial(projectInfo));
}
/** /**
* *

View File

@ -140,6 +140,12 @@ public class ProjectInfo extends BaseEntity
@Excel(name = "服务器配置") @Excel(name = "服务器配置")
private String serverConfiguration; private String serverConfiguration;
/** 会审 0 否 1是*/
@Excel(name = "会审")
private String jointTrial;
/** 个人收藏 0 否 1是*/
private String collect;
private Long currentUserId;

View File

@ -0,0 +1,38 @@
package com.ruoyi.sip.domain;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.List;
/**
* project_user_collect_info
*
* @author ruoyi
* @date 2026-01-06
*/
@Data
public class ProjectUserCollectInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** */
private Long id;
/** */
@Excel(name = "")
private Long projectId;
private List<Long> projectIdList;
/** */
@Excel(name = "")
private Long userId;
/** 是否收藏 0:未 1:已收藏 */
@Excel(name = "是否收藏 0:未 1:已收藏")
private String collect;
}

View File

@ -0,0 +1,61 @@
package com.ruoyi.sip.mapper;
import java.util.List;
import com.ruoyi.sip.domain.ProjectUserCollectInfo;
/**
* Mapper
*
* @author ruoyi
* @date 2026-01-06
*/
public interface ProjectUserCollectInfoMapper
{
/**
*
*
* @param id
* @return
*/
public ProjectUserCollectInfo selectProjectUserCollectInfoById(Long id);
/**
*
*
* @param projectUserCollectInfo
* @return
*/
public List<ProjectUserCollectInfo> selectProjectUserCollectInfoList(ProjectUserCollectInfo projectUserCollectInfo);
/**
*
*
* @param projectUserCollectInfo
* @return
*/
public int insertProjectUserCollectInfo(ProjectUserCollectInfo projectUserCollectInfo);
/**
*
*
* @param projectUserCollectInfo
* @return
*/
public int updateProjectUserCollectInfo(ProjectUserCollectInfo projectUserCollectInfo);
/**
*
*
* @param id
* @return
*/
public int deleteProjectUserCollectInfoById(Long id);
/**
*
*
* @param ids
* @return
*/
public int deleteProjectUserCollectInfoByIds(String[] ids);
}

View File

@ -68,4 +68,6 @@ public interface IProjectInfoService
ProjectInfo selectProjectInfoByOrderCode(String orderCode); ProjectInfo selectProjectInfoByOrderCode(String orderCode);
int editJoinTrial(ProjectInfo projectInfo);
} }

View File

@ -0,0 +1,61 @@
package com.ruoyi.sip.service;
import java.util.List;
import com.ruoyi.sip.domain.ProjectUserCollectInfo;
/**
* Service
*
* @author ruoyi
* @date 2026-01-06
*/
public interface IProjectUserCollectInfoService
{
/**
*
*
* @param id
* @return
*/
public ProjectUserCollectInfo selectProjectUserCollectInfoById(Long id);
/**
*
*
* @param projectUserCollectInfo
* @return
*/
public List<ProjectUserCollectInfo> selectProjectUserCollectInfoList(ProjectUserCollectInfo projectUserCollectInfo);
/**
*
*
* @param projectUserCollectInfo
* @return
*/
public int insertProjectUserCollectInfo(ProjectUserCollectInfo projectUserCollectInfo);
/**
*
*
* @param projectUserCollectInfo
* @return
*/
public int updateProjectUserCollectInfo(ProjectUserCollectInfo projectUserCollectInfo);
/**
*
*
* @param ids
* @return
*/
public int deleteProjectUserCollectInfoByIds(String ids);
/**
*
*
* @param id
* @return
*/
public int deleteProjectUserCollectInfoById(Long id);
}

View File

@ -67,6 +67,8 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
@Autowired @Autowired
private ICustomerInfoService customerInfoService; private ICustomerInfoService customerInfoService;
@Autowired
private IProjectUserCollectInfoService projectUserCollectInfoService;
@Autowired @Autowired
private IProjectOrderInfoService orderInfoService; private IProjectOrderInfoService orderInfoService;
private static final String PROJECT_CODE_PREFIX = "V"; private static final String PROJECT_CODE_PREFIX = "V";
@ -143,13 +145,20 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
List<Long> idList = projectInfos.stream().map(ProjectInfo::getId).collect(Collectors.toList()); List<Long> idList = projectInfos.stream().map(ProjectInfo::getId).collect(Collectors.toList());
List<ProjectOrderInfo> projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(idList); List<ProjectOrderInfo> projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(idList);
Map<Long, ProjectOrderInfo> orderInfoMap = projectOrderInfos.stream().collect(Collectors.toMap(ProjectOrderInfo::getProjectId, Function.identity(), (v1, v2) -> v1)); Map<Long, ProjectOrderInfo> orderInfoMap = projectOrderInfos.stream().collect(Collectors.toMap(ProjectOrderInfo::getProjectId, Function.identity(), (v1, v2) -> v1));
ProjectUserCollectInfo queryInfo = new ProjectUserCollectInfo();
queryInfo.setUserId(ShiroUtils.getUserId());
queryInfo.setProjectIdList(idList);
List<ProjectUserCollectInfo> projectUserCollectInfos = projectUserCollectInfoService.selectProjectUserCollectInfoList(queryInfo);
Map<Long, String> projectCollectMap = projectUserCollectInfos.stream().collect(
Collectors.toMap(ProjectUserCollectInfo::getProjectId, ProjectUserCollectInfo::getCollect, (v1, v2) -> v1));
LocalDate now = LocalDate.now(); LocalDate now = LocalDate.now();
for (ProjectInfo info : projectInfos) { for (ProjectInfo info : projectInfos) {
CustomerInfo customerInfo = customerInfoMap.get(info.getCustomerCode()); CustomerInfo customerInfo = customerInfoMap.get(info.getCustomerCode());
if (customerInfo != null) { if (customerInfo != null) {
info.setCustomerAddress(customerInfo.getAddress()); info.setCustomerAddress(customerInfo.getAddress());
} }
info.setCanGenerate(orderInfoMap.get(info.getId()) == null); info.setCanGenerate(orderInfoMap.get(info.getId()) == null && "1".equals(info.getJointTrial()));
if (info.getLastWorkUpdateTime() != null) { if (info.getLastWorkUpdateTime() != null) {
LocalDate localDate = info.getLastWorkUpdateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate localDate = info.getLastWorkUpdateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
Period between = Period.between(localDate, now); Period between = Period.between(localDate, now);
@ -157,8 +166,7 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
} else { } else {
info.setHighlight(false); info.setHighlight(false);
} }
info.setCollect(projectCollectMap.getOrDefault(info.getId(),"0"));
} }
return projectInfos; return projectInfos;
} }
@ -244,7 +252,7 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
} }
//变更属地校验 //变更属地校验
List<ProjectOrderInfo> projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(Collections.singletonList(projectInfo.getId())); List<ProjectOrderInfo> projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(Collections.singletonList(projectInfo.getId()));
if (!projectInfo.getAgentCode().equals(oldProjectInfo.getAgentCode())) { if (!oldProjectInfo.getAgentCode().equals(projectInfo.getAgentCode())) {
//查询订单信息 如果有抛出异常 //查询订单信息 如果有抛出异常
if (CollUtil.isNotEmpty(projectOrderInfos)) { if (CollUtil.isNotEmpty(projectOrderInfos)) {
throw new ServiceException("该项目存在订单流转,无法更改代表处"); throw new ServiceException("该项目存在订单流转,无法更改代表处");
@ -594,11 +602,26 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
return projectInfoMapper.selectProjectInfoByOrderCode(orderCode); return projectInfoMapper.selectProjectInfoByOrderCode(orderCode);
} }
@Override
public int editJoinTrial(ProjectInfo projectInfo) {
return projectInfoMapper.updateProjectInfo(projectInfo);
}
private List<ProjectInfo> fetchProjectInfos(ProjectInfo projectInfo) { private List<ProjectInfo> fetchProjectInfos(ProjectInfo projectInfo) {
projectInfo.setCurrentUserId(ShiroUtils.getUserId());
List<ProjectInfo> projectInfos = projectInfoMapper.selectProjectInfoList(projectInfo); List<ProjectInfo> projectInfos = projectInfoMapper.selectProjectInfoList(projectInfo);
if (CollUtil.isEmpty(projectInfos)) { if (CollUtil.isEmpty(projectInfos)) {
throw new ServiceException("未找到符合条件的项目信息"); throw new ServiceException("未找到符合条件的项目信息");
} }
ProjectUserCollectInfo queryInfo = new ProjectUserCollectInfo();
queryInfo.setUserId(ShiroUtils.getUserId());
queryInfo.setProjectIdList(projectInfos.stream().map(ProjectInfo::getId).collect(Collectors.toList()));
List<ProjectUserCollectInfo> projectUserCollectInfos = projectUserCollectInfoService.selectProjectUserCollectInfoList(queryInfo);
Map<Long, String> projectCollectMap = projectUserCollectInfos.stream().collect(
Collectors.toMap(ProjectUserCollectInfo::getProjectId, ProjectUserCollectInfo::getCollect, (v1, v2) -> v1));
projectInfos.forEach(item -> {
item.setCollect(projectCollectMap.getOrDefault(item.getId(),"0"));
});
return projectInfos; return projectInfos;
} }
@ -728,6 +751,8 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
headerList.add(Collections.singletonList("项目描述")); headerList.add(Collections.singletonList("项目描述"));
headerList.add(Collections.singletonList("服务器配置")); headerList.add(Collections.singletonList("服务器配置"));
headerList.add(Collections.singletonList("更新时间")); headerList.add(Collections.singletonList("更新时间"));
headerList.add(Collections.singletonList("收藏"));
headerList.add(Collections.singletonList("会审"));
// 添加软件产品列 // 添加软件产品列
@ -796,6 +821,8 @@ public class ProjectInfoServiceImpl implements IProjectInfoService {
row.add(info.getProjectDesc()); row.add(info.getProjectDesc());
row.add(info.getServerConfiguration()); row.add(info.getServerConfiguration());
row.add(DateUtil.format(info.getUpdateTime(), "yyyy-MM-dd")); row.add(DateUtil.format(info.getUpdateTime(), "yyyy-MM-dd"));
row.add("1".equals(info.getCollect())?"是":"否");
row.add("1".equals(info.getJointTrial())?"是":"否");
BigDecimal totalPrice = BigDecimal.ZERO; BigDecimal totalPrice = BigDecimal.ZERO;
// 添加软件产品列 // 添加软件产品列

View File

@ -0,0 +1,94 @@
package com.ruoyi.sip.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.sip.mapper.ProjectUserCollectInfoMapper;
import com.ruoyi.sip.domain.ProjectUserCollectInfo;
import com.ruoyi.sip.service.IProjectUserCollectInfoService;
import com.ruoyi.common.core.text.Convert;
/**
* Service
*
* @author ruoyi
* @date 2026-01-06
*/
@Service
public class ProjectUserCollectInfoServiceImpl implements IProjectUserCollectInfoService
{
@Autowired
private ProjectUserCollectInfoMapper projectUserCollectInfoMapper;
/**
*
*
* @param id
* @return
*/
@Override
public ProjectUserCollectInfo selectProjectUserCollectInfoById(Long id)
{
return projectUserCollectInfoMapper.selectProjectUserCollectInfoById(id);
}
/**
*
*
* @param projectUserCollectInfo
* @return
*/
@Override
public List<ProjectUserCollectInfo> selectProjectUserCollectInfoList(ProjectUserCollectInfo projectUserCollectInfo)
{
return projectUserCollectInfoMapper.selectProjectUserCollectInfoList(projectUserCollectInfo);
}
/**
*
*
* @param projectUserCollectInfo
* @return
*/
@Override
public int insertProjectUserCollectInfo(ProjectUserCollectInfo projectUserCollectInfo)
{
return projectUserCollectInfoMapper.insertProjectUserCollectInfo(projectUserCollectInfo);
}
/**
*
*
* @param projectUserCollectInfo
* @return
*/
@Override
public int updateProjectUserCollectInfo(ProjectUserCollectInfo projectUserCollectInfo)
{
return projectUserCollectInfoMapper.updateProjectUserCollectInfo(projectUserCollectInfo);
}
/**
*
*
* @param ids
* @return
*/
@Override
public int deleteProjectUserCollectInfoByIds(String ids)
{
return projectUserCollectInfoMapper.deleteProjectUserCollectInfoByIds(Convert.toStrArray(ids));
}
/**
*
*
* @param id
* @return
*/
@Override
public int deleteProjectUserCollectInfoById(Long id)
{
return projectUserCollectInfoMapper.deleteProjectUserCollectInfoById(id);
}
}

View File

@ -32,12 +32,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="bgProperty" column="bg_property" /> <result property="bgProperty" column="bg_property" />
<result property="jointTrial" column="joint_trial" />
</resultMap> </resultMap>
<sql id="selectProjectInfoVo"> <sql id="selectProjectInfoVo">
select id, project_code, project_name,bg_property, customer_code, customer_name, industry_type, agent_code, project_stage, project_grasp_degree, hz_support_user, operate_institution select id, project_code, project_name,bg_property, customer_code, customer_name, industry_type, agent_code, project_stage, project_grasp_degree, hz_support_user, operate_institution
, partner_code, partner_name, contact_way, estimated_amount, currency_type, estimated_order_time, estimated_deliver_time, competitor, country_product, server_configuration , partner_code, partner_name, contact_way, estimated_amount, currency_type, estimated_order_time, estimated_deliver_time, competitor, country_product, server_configuration
, key_problem, project_desc, create_by, create_time, update_by, update_time,customer_user_name,customer_phone,partner_email,partner_user_name,h3c_person,h3c_phone,poc from project_info t1 , key_problem, project_desc, create_by, create_time, update_by, update_time,customer_user_name,customer_phone,partner_email,partner_user_name,h3c_person,h3c_phone,poc,joint_trial from project_info t1
</sql> </sql>
<sql id="selectRelationProjectInfoVo"> <sql id="selectRelationProjectInfoVo">
select t1.id, select t1.id,
@ -68,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t1.create_time, t1.create_time,
t1.update_by, t1.update_by,
t1.update_time, t1.update_time,
t1.joint_trial,
t1.customer_user_name,t1.customer_phone,t1.partner_user_name,t1.h3c_person,t1.poc,t1.h3c_phone, t1.customer_user_name,t1.customer_phone,t1.partner_user_name,t1.h3c_person,t1.poc,t1.h3c_phone,
t2.agent_name,t2.contact_email,t2.contact_phone,t2.contact_person, t2.agent_name,t2.contact_email,t2.contact_phone,t2.contact_person,
t3.user_name as hz_support_user_name, t3.user_name as hz_support_user_name,
@ -96,6 +98,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="customerName != null and customerName != ''"> and t1.customer_name like concat('%', #{customerName}, '%')</if> <if test="customerName != null and customerName != ''"> and t1.customer_name like concat('%', #{customerName}, '%')</if>
<if test="industryType != null and industryType != ''"> and t1.industry_type = #{industryType}</if> <if test="industryType != null and industryType != ''"> and t1.industry_type = #{industryType}</if>
<if test="bgProperty != null and bgProperty != ''"> and t1.bg_property = #{bgProperty}</if> <if test="bgProperty != null and bgProperty != ''"> and t1.bg_property = #{bgProperty}</if>
<if test="jointTrial != null and jointTrial != ''"> and t1.joint_trial = #{jointTrial}</if>
<if test="collect != null and collect != ''">
<choose>
<when test="'1'.toString()==collect">
and t1.id in (select project_id from project_user_collect_info where user_id=#{currentUserId} and collect = '1')
</when>
<otherwise>
and t1.id not in (select project_id from project_user_collect_info where user_id=#{currentUserId} and collect = '1')
</otherwise>
</choose>
</if>
<if test="projectStage != null and projectStage != ''"> and find_in_set(t1.project_stage , #{projectStage})</if> <if test="projectStage != null and projectStage != ''"> and find_in_set(t1.project_stage , #{projectStage})</if>
<if test="projectGraspDegree != null and projectGraspDegree != ''"> and t1.project_grasp_degree = #{projectGraspDegree}</if> <if test="projectGraspDegree != null and projectGraspDegree != ''"> and t1.project_grasp_degree = #{projectGraspDegree}</if>
@ -244,6 +257,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if> <if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if> <if test="updateTime != null">update_time,</if>
<if test="jointTrial != null and jointTrial != ''"> joint_trial ,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectCode != null">#{projectCode},</if> <if test="projectCode != null">#{projectCode},</if>
@ -280,6 +294,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if> <if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if> <if test="updateTime != null">#{updateTime},</if>
<if test="jointTrial != null and jointTrial != ''"> #{jointTrial},</if>
</trim> </trim>
</insert> </insert>
<update id="updateCustomerCodeByCode"> <update id="updateCustomerCodeByCode">
@ -322,6 +337,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if> <if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if>
<if test="jointTrial != null and jointTrial != ''"> joint_trial = #{jointTrial},</if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.sip.mapper.ProjectUserCollectInfoMapper">
<resultMap type="ProjectUserCollectInfo" id="ProjectUserCollectInfoResult">
<result property="id" column="id" />
<result property="projectId" column="project_id" />
<result property="userId" column="user_id" />
<result property="collect" column="collect" />
</resultMap>
<sql id="selectProjectUserCollectInfoVo">
select id, project_id, user_id, collect from project_user_collect_info
</sql>
<select id="selectProjectUserCollectInfoList" parameterType="ProjectUserCollectInfo" resultMap="ProjectUserCollectInfoResult">
<include refid="selectProjectUserCollectInfoVo"/>
<where>
<if test="projectId != null "> and project_id = #{projectId}</if>
<if test="userId != null "> and user_id = #{userId}</if>
<if test="collect != null and collect != ''"> and collect = #{collect}</if>
</where>
</select>
<select id="selectProjectUserCollectInfoById" parameterType="Long" resultMap="ProjectUserCollectInfoResult">
<include refid="selectProjectUserCollectInfoVo"/>
where id = #{id}
</select>
<insert id="insertProjectUserCollectInfo" parameterType="ProjectUserCollectInfo" useGeneratedKeys="true" keyProperty="id">
insert into project_user_collect_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="projectId != null">project_id,</if>
<if test="userId != null">user_id,</if>
<if test="collect != null">collect,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectId != null">#{projectId},</if>
<if test="userId != null">#{userId},</if>
<if test="collect != null">#{collect},</if>
</trim>
on duplicate key update collect=values(collect)
</insert>
<update id="updateProjectUserCollectInfo" parameterType="ProjectUserCollectInfo">
update project_user_collect_info
<trim prefix="SET" suffixOverrides=",">
<if test="projectId != null">project_id = #{projectId},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="collect != null">collect = #{collect},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteProjectUserCollectInfoById" parameterType="Long">
delete from project_user_collect_info where id = #{id}
</delete>
<delete id="deleteProjectUserCollectInfoByIds" parameterType="String">
delete from project_user_collect_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>