feat(sip): 添加项目管理功能
- 新增项目管理相关的 HTML 模板文件 - 实现项目管理的前端页面逻辑 - 添加项目管理的后端接口和服务 - 集成项目管理到现有的系统中master
parent
82c78d9b23
commit
3ef4149d83
|
@ -36,6 +36,10 @@
|
|||
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<label>合同名称:</label>
|
||||
<input type="text" name="orderName"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a>
|
||||
|
|
|
@ -0,0 +1,197 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<head>
|
||||
<th:block th:include="include :: header('新增项目管理')" />
|
||||
<th:block th:include="include :: datetimepicker-css" />
|
||||
</head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-product-add">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目编码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectCode" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectName" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">客户code:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="customerCode" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">客户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="customerName" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">属地:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="province" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目阶段:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectStage" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目把握度:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectGraspDegree" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">汇智支撑人员id:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="hzSupportUser" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">运作机构:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="operateInstitution" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">代理商code:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="partnerCode" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">联系方式:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="contactWay" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">预计金额:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="estimatedAmount" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">预计下单时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group date">
|
||||
<input name="estimatedOrderTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
|
||||
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">预计发货时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group date">
|
||||
<input name="estimatedDeliverTime" class="form-control" placeholder="yyyy-MM-dd" type="text">
|
||||
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">竞争对手:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="competitor" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">是否国产:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="countryProduct" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">服务器配置:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="serverConfiguration" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">关键技术问题:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="keyProblem" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目描述:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectDesc" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<th:block th:include="include :: datetimepicker-js" />
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "sip/project"
|
||||
$("#form-product-add").validate({
|
||||
focusCleanup: true
|
||||
});
|
||||
|
||||
function submitHandler() {
|
||||
if ($.validate.form()) {
|
||||
$.operate.save(prefix + "/add", $('#form-product-add').serialize());
|
||||
}
|
||||
}
|
||||
|
||||
$("input[name='estimatedOrderTime']").datetimepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
minView: "month",
|
||||
autoclose: true
|
||||
});
|
||||
|
||||
$("input[name='estimatedDeliverTime']").datetimepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
minView: "month",
|
||||
autoclose: true
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,198 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<head>
|
||||
<th:block th:include="include :: header('修改项目管理')" />
|
||||
<th:block th:include="include :: datetimepicker-css" />
|
||||
</head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-product-edit" th:object="${projectInfo}">
|
||||
<input name="id" th:field="*{id}" type="hidden">
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目编码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectCode" th:field="*{projectCode}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectName" th:field="*{projectName}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">客户code:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="customerCode" th:field="*{customerCode}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">客户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="customerName" th:field="*{customerName}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">属地:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="province" th:field="*{province}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目阶段:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectStage" th:field="*{projectStage}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目把握度:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectGraspDegree" th:field="*{projectGraspDegree}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">汇智支撑人员id:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="hzSupportUser" th:field="*{hzSupportUser}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">运作机构:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="operateInstitution" th:field="*{operateInstitution}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">代理商code:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="partnerCode" th:field="*{partnerCode}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">联系方式:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="contactWay" th:field="*{contactWay}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">预计金额:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="estimatedAmount" th:field="*{estimatedAmount}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">预计下单时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group date">
|
||||
<input name="estimatedOrderTime" th:value="${#dates.format(projectInfo.estimatedOrderTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
|
||||
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">预计发货时间:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group date">
|
||||
<input name="estimatedDeliverTime" th:value="${#dates.format(projectInfo.estimatedDeliverTime, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">
|
||||
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">竞争对手:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="competitor" th:field="*{competitor}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">是否国产:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="countryProduct" th:field="*{countryProduct}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">服务器配置:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="serverConfiguration" th:field="*{serverConfiguration}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">关键技术问题:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="keyProblem" th:field="*{keyProblem}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">项目描述:</label>
|
||||
<div class="col-sm-8">
|
||||
<input name="projectDesc" th:field="*{projectDesc}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<th:block th:include="include :: datetimepicker-js" />
|
||||
<script th:inline="javascript">
|
||||
var prefix = ctx + "sip/project";
|
||||
$("#form-product-edit").validate({
|
||||
focusCleanup: true
|
||||
});
|
||||
|
||||
function submitHandler() {
|
||||
if ($.validate.form()) {
|
||||
$.operate.save(prefix + "/edit", $('#form-product-edit').serialize());
|
||||
}
|
||||
}
|
||||
|
||||
$("input[name='estimatedOrderTime']").datetimepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
minView: "month",
|
||||
autoclose: true
|
||||
});
|
||||
|
||||
$("input[name='estimatedDeliverTime']").datetimepicker({
|
||||
format: "yyyy-mm-dd",
|
||||
minView: "month",
|
||||
autoclose: true
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,238 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<head>
|
||||
<th:block th:include="include :: header('项目管理列表')" />
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 search-collapse">
|
||||
<form id="formId">
|
||||
<div class="select-list">
|
||||
<ul>
|
||||
<li>
|
||||
<label>项目编码:</label>
|
||||
<input type="text" name="projectCode"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>项目名称:</label>
|
||||
<input type="text" name="projectName"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>客户code:</label>
|
||||
<input type="text" name="customerCode"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>客户名称:</label>
|
||||
<input type="text" name="customerName"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>属地:</label>
|
||||
<input type="text" name="province"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>项目阶段:</label>
|
||||
<input type="text" name="projectStage"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>项目把握度:</label>
|
||||
<input type="text" name="projectGraspDegree"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>汇智支撑人员id:</label>
|
||||
<input type="text" name="hzSupportUser"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>运作机构:</label>
|
||||
<input type="text" name="operateInstitution"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>代理商code:</label>
|
||||
<input type="text" name="partnerCode"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>联系方式:</label>
|
||||
<input type="text" name="contactWay"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>预计金额:</label>
|
||||
<input type="text" name="estimatedAmount"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>预计下单时间:</label>
|
||||
<input type="text" class="time-input" placeholder="请选择预计下单时间" name="estimatedOrderTime"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>预计发货时间:</label>
|
||||
<input type="text" class="time-input" placeholder="请选择预计发货时间" name="estimatedDeliverTime"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>竞争对手:</label>
|
||||
<input type="text" name="competitor"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>是否国产:</label>
|
||||
<input type="text" name="countryProduct"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>服务器配置:</label>
|
||||
<input type="text" name="serverConfiguration"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>关键技术问题:</label>
|
||||
<input type="text" name="keyProblem"/>
|
||||
</li>
|
||||
<li>
|
||||
<label>项目描述:</label>
|
||||
<input type="text" name="projectDesc"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i> 重置</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group-sm" id="toolbar" role="group">
|
||||
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="sip:product:add">
|
||||
<i class="fa fa-plus"></i> 添加
|
||||
</a>
|
||||
<a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="sip:product:edit">
|
||||
<i class="fa fa-edit"></i> 修改
|
||||
</a>
|
||||
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="sip:product:remove">
|
||||
<i class="fa fa-remove"></i> 删除
|
||||
</a>
|
||||
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="sip:product:export">
|
||||
<i class="fa fa-download"></i> 导出
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 select-table table-striped">
|
||||
<table id="bootstrap-table"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permission.hasPermi('sip:product:edit')}]];
|
||||
var removeFlag = [[${@permission.hasPermi('sip:product:remove')}]];
|
||||
var prefix = ctx + "sip/project";
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
modalName: "项目管理",
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'id',
|
||||
title: '',
|
||||
visible: false
|
||||
},
|
||||
{
|
||||
field: 'projectCode',
|
||||
title: '项目编码'
|
||||
},
|
||||
{
|
||||
field: 'projectName',
|
||||
title: '项目名称'
|
||||
},
|
||||
{
|
||||
field: 'customerCode',
|
||||
title: '客户code'
|
||||
},
|
||||
{
|
||||
field: 'customerName',
|
||||
title: '客户名称'
|
||||
},
|
||||
{
|
||||
field: 'industryType',
|
||||
title: '行业'
|
||||
},
|
||||
{
|
||||
field: 'province',
|
||||
title: '属地'
|
||||
},
|
||||
{
|
||||
field: 'projectStage',
|
||||
title: '项目阶段'
|
||||
},
|
||||
{
|
||||
field: 'projectGraspDegree',
|
||||
title: '项目把握度'
|
||||
},
|
||||
{
|
||||
field: 'hzSupportUser',
|
||||
title: '汇智支撑人员id'
|
||||
},
|
||||
{
|
||||
field: 'operateInstitution',
|
||||
title: '运作机构'
|
||||
},
|
||||
{
|
||||
field: 'partnerCode',
|
||||
title: '代理商code'
|
||||
},
|
||||
{
|
||||
field: 'contactWay',
|
||||
title: '联系方式'
|
||||
},
|
||||
{
|
||||
field: 'estimatedAmount',
|
||||
title: '预计金额'
|
||||
},
|
||||
{
|
||||
field: 'currencyType',
|
||||
title: '币种'
|
||||
},
|
||||
{
|
||||
field: 'estimatedOrderTime',
|
||||
title: '预计下单时间'
|
||||
},
|
||||
{
|
||||
field: 'estimatedDeliverTime',
|
||||
title: '预计发货时间'
|
||||
},
|
||||
{
|
||||
field: 'competitor',
|
||||
title: '竞争对手'
|
||||
},
|
||||
{
|
||||
field: 'countryProduct',
|
||||
title: '是否国产'
|
||||
},
|
||||
{
|
||||
field: 'serverConfiguration',
|
||||
title: '服务器配置'
|
||||
},
|
||||
{
|
||||
field: 'keyProblem',
|
||||
title: '关键技术问题'
|
||||
},
|
||||
{
|
||||
field: 'projectDesc',
|
||||
title: '项目描述'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,128 @@
|
|||
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.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import com.ruoyi.common.annotation.Log;
|
||||
import com.ruoyi.common.enums.BusinessType;
|
||||
import com.ruoyi.sip.domain.ProjectInfo;
|
||||
import com.ruoyi.sip.service.IProjectInfoService;
|
||||
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 2025-05-29
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/sip/project")
|
||||
public class ProjectInfoController extends BaseController
|
||||
{
|
||||
private String prefix = "/project/info";
|
||||
|
||||
@Autowired
|
||||
private IProjectInfoService projectInfoService;
|
||||
|
||||
@RequiresPermissions("sip:project:view")
|
||||
@GetMapping()
|
||||
public String product()
|
||||
{
|
||||
return prefix + "/project";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目管理列表
|
||||
*/
|
||||
@RequiresPermissions("sip:project:list")
|
||||
@PostMapping("/list")
|
||||
@ResponseBody
|
||||
public TableDataInfo list(ProjectInfo projectInfo)
|
||||
{
|
||||
startPage();
|
||||
List<ProjectInfo> list = projectInfoService.selectProjectInfoList(projectInfo);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出项目管理列表
|
||||
*/
|
||||
@RequiresPermissions("sip:project:export")
|
||||
@Log(title = "项目管理", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
@ResponseBody
|
||||
public AjaxResult export(ProjectInfo projectInfo)
|
||||
{
|
||||
List<ProjectInfo> list = projectInfoService.selectProjectInfoList(projectInfo);
|
||||
ExcelUtil<ProjectInfo> util = new ExcelUtil<ProjectInfo>(ProjectInfo.class);
|
||||
return util.exportExcel(list, "项目管理数据");
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目管理
|
||||
*/
|
||||
@RequiresPermissions("sip:project:add")
|
||||
@GetMapping("/add")
|
||||
public String add()
|
||||
{
|
||||
return prefix + "/add";
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增保存项目管理
|
||||
*/
|
||||
@RequiresPermissions("sip:project:add")
|
||||
@Log(title = "项目管理", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/add")
|
||||
@ResponseBody
|
||||
public AjaxResult addSave(ProjectInfo projectInfo)
|
||||
{
|
||||
return toAjax(projectInfoService.insertProjectInfo(projectInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目管理
|
||||
*/
|
||||
@RequiresPermissions("sip:project:edit")
|
||||
@GetMapping("/edit/{id}")
|
||||
public String edit(@PathVariable("id") Long id, ModelMap mmap)
|
||||
{
|
||||
ProjectInfo projectInfo = projectInfoService.selectProjectInfoById(id);
|
||||
mmap.put("projectInfo", projectInfo);
|
||||
return prefix + "/edit";
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改保存项目管理
|
||||
*/
|
||||
@RequiresPermissions("sip:project:edit")
|
||||
@Log(title = "项目管理", businessType = BusinessType.UPDATE)
|
||||
@PostMapping("/edit")
|
||||
@ResponseBody
|
||||
public AjaxResult editSave(ProjectInfo projectInfo)
|
||||
{
|
||||
return toAjax(projectInfoService.updateProjectInfo(projectInfo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目管理
|
||||
*/
|
||||
@RequiresPermissions("sip:project:remove")
|
||||
@Log(title = "项目管理", businessType = BusinessType.DELETE)
|
||||
@PostMapping( "/remove")
|
||||
@ResponseBody
|
||||
public AjaxResult remove(String ids)
|
||||
{
|
||||
return toAjax(projectInfoService.deleteProjectInfoByIds(ids));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,122 @@
|
|||
package com.ruoyi.sip.domain;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 项目管理对象 project_info
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Data
|
||||
public class ProjectInfo extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 项目编码 */
|
||||
@Excel(name = "项目编码")
|
||||
private String projectCode;
|
||||
|
||||
/** 项目名称 */
|
||||
@Excel(name = "项目名称")
|
||||
private String projectName;
|
||||
|
||||
/** 客户code */
|
||||
@Excel(name = "客户code")
|
||||
private String customerCode;
|
||||
|
||||
/** 客户名称 */
|
||||
@Excel(name = "客户名称")
|
||||
private String customerName;
|
||||
|
||||
/** 行业 */
|
||||
@Excel(name = "行业")
|
||||
private String industryType;
|
||||
|
||||
/** 属地 */
|
||||
@Excel(name = "属地")
|
||||
private String province;
|
||||
|
||||
/** 项目阶段 */
|
||||
@Excel(name = "项目阶段")
|
||||
private String projectStage;
|
||||
|
||||
/** 项目把握度 */
|
||||
@Excel(name = "项目把握度")
|
||||
private String projectGraspDegree;
|
||||
|
||||
/** 汇智支撑人员id */
|
||||
@Excel(name = "汇智支撑人员id")
|
||||
private String hzSupportUser;
|
||||
|
||||
/** 运作机构 */
|
||||
@Excel(name = "运作机构")
|
||||
private String operateInstitution;
|
||||
|
||||
/** 代理商code */
|
||||
@Excel(name = "代理商code")
|
||||
private String partnerCode;
|
||||
|
||||
/** 联系方式 */
|
||||
@Excel(name = "联系方式")
|
||||
private String contactWay;
|
||||
|
||||
/** 预计金额 */
|
||||
@Excel(name = "预计金额")
|
||||
private BigDecimal estimatedAmount;
|
||||
|
||||
/** 币种 */
|
||||
@Excel(name = "币种")
|
||||
private String currencyType;
|
||||
|
||||
/** 预计下单时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
@Excel(name = "预计下单时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date estimatedOrderTime;
|
||||
|
||||
/** 预计发货时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
@Excel(name = "预计发货时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date estimatedDeliverTime;
|
||||
|
||||
/** 竞争对手 */
|
||||
@Excel(name = "竞争对手")
|
||||
private String competitor;
|
||||
|
||||
/** 是否国产 */
|
||||
@Excel(name = "是否国产")
|
||||
private String countryProduct;
|
||||
|
||||
/** 服务器配置 */
|
||||
@Excel(name = "服务器配置")
|
||||
private String serverConfiguration;
|
||||
|
||||
/** 关键技术问题 */
|
||||
@Excel(name = "关键技术问题")
|
||||
private String keyProblem;
|
||||
|
||||
/** 项目描述 */
|
||||
@Excel(name = "项目描述")
|
||||
private String projectDesc;
|
||||
/** 软件项目产品信息 */
|
||||
private List<ProjectProductInfo> softwareProjectProductInfoList;
|
||||
/** 硬件项目产品信息 */
|
||||
private List<ProjectProductInfo> hardwareProjectProductInfoList;
|
||||
/** 项目操作日志信息 */
|
||||
private List<ProjectOperateLog> projectOperateLogList;
|
||||
/** 项目工作进度信息 */
|
||||
private List<ProjectWorkProgress> projectWorkProgressList;
|
||||
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
package com.ruoyi.sip.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 项目操作日志对象 project_operate_log
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public class ProjectOperateLog extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 操作内容 */
|
||||
@Excel(name = "操作内容")
|
||||
private String operateLog;
|
||||
|
||||
/** 操作人员 */
|
||||
@Excel(name = "操作人员")
|
||||
private String operateUser;
|
||||
|
||||
/** 操作时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
@Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date operateTime;
|
||||
|
||||
/** 项目id */
|
||||
@Excel(name = "项目id")
|
||||
private Long projectId;
|
||||
|
||||
public void setId(Long id)
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Long getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setOperateLog(String operateLog)
|
||||
{
|
||||
this.operateLog = operateLog;
|
||||
}
|
||||
|
||||
public String getOperateLog()
|
||||
{
|
||||
return operateLog;
|
||||
}
|
||||
|
||||
public void setOperateUser(String operateUser)
|
||||
{
|
||||
this.operateUser = operateUser;
|
||||
}
|
||||
|
||||
public String getOperateUser()
|
||||
{
|
||||
return operateUser;
|
||||
}
|
||||
|
||||
public void setOperateTime(Date operateTime)
|
||||
{
|
||||
this.operateTime = operateTime;
|
||||
}
|
||||
|
||||
public Date getOperateTime()
|
||||
{
|
||||
return operateTime;
|
||||
}
|
||||
|
||||
public void setProjectId(Long projectId)
|
||||
{
|
||||
this.projectId = projectId;
|
||||
}
|
||||
|
||||
public Long getProjectId()
|
||||
{
|
||||
return projectId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
.append("id", getId())
|
||||
.append("operateLog", getOperateLog())
|
||||
.append("operateUser", getOperateUser())
|
||||
.append("operateTime", getOperateTime())
|
||||
.append("projectId", getProjectId())
|
||||
.toString();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package com.ruoyi.sip.domain;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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;
|
||||
|
||||
/**
|
||||
* 项目产品信息对象 project_product_info
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Data
|
||||
public class ProjectProductInfo extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 项目id */
|
||||
@Excel(name = "项目id")
|
||||
private Long projectId;
|
||||
|
||||
/** 产品编码 */
|
||||
@Excel(name = "产品编码")
|
||||
private String productCode;
|
||||
|
||||
/** 数量 */
|
||||
@Excel(name = "数量")
|
||||
private Long quantity;
|
||||
|
||||
private String type;
|
||||
|
||||
private String model;
|
||||
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
package com.ruoyi.sip.domain;
|
||||
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
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;
|
||||
|
||||
/**
|
||||
* 项目工作进度对象 project_work_progress
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Data
|
||||
public class ProjectWorkProgress extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** */
|
||||
private Long id;
|
||||
|
||||
/** 变更内容 */
|
||||
@Excel(name = "变更内容")
|
||||
private String workContent;
|
||||
|
||||
/** 更新人 */
|
||||
@Excel(name = "更新人")
|
||||
private String workUser;
|
||||
|
||||
/** 更新时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
|
||||
private Date workTime;
|
||||
|
||||
/** 项目id */
|
||||
@Excel(name = "项目id")
|
||||
private Long projectId;
|
||||
|
||||
private String userName;
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.sip.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectInfo;
|
||||
|
||||
/**
|
||||
* 项目管理Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface ProjectInfoMapper
|
||||
{
|
||||
/**
|
||||
* 查询项目管理
|
||||
*
|
||||
* @param id 项目管理主键
|
||||
* @return 项目管理
|
||||
*/
|
||||
public ProjectInfo selectProjectInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目管理列表
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 项目管理集合
|
||||
*/
|
||||
public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo);
|
||||
|
||||
/**
|
||||
* 新增项目管理
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectInfo(ProjectInfo projectInfo);
|
||||
|
||||
/**
|
||||
* 修改项目管理
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectInfo(ProjectInfo projectInfo);
|
||||
|
||||
/**
|
||||
* 删除项目管理
|
||||
*
|
||||
* @param id 项目管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除项目管理
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectInfoByIds(String[] ids);
|
||||
|
||||
String selectMaxProjectCode(ProjectInfo projectInfo);
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.sip.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectOperateLog;
|
||||
|
||||
/**
|
||||
* 项目操作日志Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface ProjectOperateLogMapper
|
||||
{
|
||||
/**
|
||||
* 查询项目操作日志
|
||||
*
|
||||
* @param id 项目操作日志主键
|
||||
* @return 项目操作日志
|
||||
*/
|
||||
public ProjectOperateLog selectProjectOperateLogById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目操作日志列表
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 项目操作日志集合
|
||||
*/
|
||||
public List<ProjectOperateLog> selectProjectOperateLogList(ProjectOperateLog projectOperateLog);
|
||||
|
||||
/**
|
||||
* 新增项目操作日志
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectOperateLog(ProjectOperateLog projectOperateLog);
|
||||
|
||||
/**
|
||||
* 修改项目操作日志
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectOperateLog(ProjectOperateLog projectOperateLog);
|
||||
|
||||
/**
|
||||
* 删除项目操作日志
|
||||
*
|
||||
* @param id 项目操作日志主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectOperateLogById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除项目操作日志
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectOperateLogByIds(String[] ids);
|
||||
|
||||
List<ProjectOperateLog> selectProjectOperateLogListByProjectId(Long id);
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package com.ruoyi.sip.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectProductInfo;
|
||||
|
||||
/**
|
||||
* 项目产品信息Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface ProjectProductInfoMapper
|
||||
{
|
||||
/**
|
||||
* 查询项目产品信息
|
||||
*
|
||||
* @param id 项目产品信息主键
|
||||
* @return 项目产品信息
|
||||
*/
|
||||
public ProjectProductInfo selectProjectProductInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目产品信息列表
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 项目产品信息集合
|
||||
*/
|
||||
public List<ProjectProductInfo> selectProjectProductInfoList(ProjectProductInfo projectProductInfo);
|
||||
|
||||
/**
|
||||
* 新增项目产品信息
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectProductInfo(ProjectProductInfo projectProductInfo);
|
||||
|
||||
/**
|
||||
* 修改项目产品信息
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectProductInfo(ProjectProductInfo projectProductInfo);
|
||||
|
||||
/**
|
||||
* 删除项目产品信息
|
||||
*
|
||||
* @param id 项目产品信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectProductInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除项目产品信息
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectProductInfoByIds(String[] ids);
|
||||
|
||||
List<ProjectProductInfo> selectProjectProductInfoListByProjectId(Long projectId);
|
||||
|
||||
void saveBatch(List<ProjectProductInfo> addList);
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
package com.ruoyi.sip.mapper;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectWorkProgress;
|
||||
|
||||
/**
|
||||
* 项目工作进度Mapper接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface ProjectWorkProgressMapper
|
||||
{
|
||||
/**
|
||||
* 查询项目工作进度
|
||||
*
|
||||
* @param id 项目工作进度主键
|
||||
* @return 项目工作进度
|
||||
*/
|
||||
public ProjectWorkProgress selectProjectWorkProgressById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目工作进度列表
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 项目工作进度集合
|
||||
*/
|
||||
public List<ProjectWorkProgress> selectProjectWorkProgressList(ProjectWorkProgress projectWorkProgress);
|
||||
|
||||
/**
|
||||
* 新增项目工作进度
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectWorkProgress(ProjectWorkProgress projectWorkProgress);
|
||||
|
||||
/**
|
||||
* 修改项目工作进度
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectWorkProgress(ProjectWorkProgress projectWorkProgress);
|
||||
|
||||
/**
|
||||
* 删除项目工作进度
|
||||
*
|
||||
* @param id 项目工作进度主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectWorkProgressById(Long id);
|
||||
|
||||
/**
|
||||
* 批量删除项目工作进度
|
||||
*
|
||||
* @param ids 需要删除的数据主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectWorkProgressByIds(String[] ids);
|
||||
|
||||
List<ProjectWorkProgress> selectProjectWorkProgressListByProjectId(Long projectId);
|
||||
|
||||
void insertIgnoreBatch(List<ProjectWorkProgress> projectWorkProgressList);
|
||||
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
package com.ruoyi.sip.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectInfo;
|
||||
|
||||
/**
|
||||
* 项目管理Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface IProjectInfoService
|
||||
{
|
||||
/**
|
||||
* 查询项目管理
|
||||
*
|
||||
* @param id 项目管理主键
|
||||
* @return 项目管理
|
||||
*/
|
||||
public ProjectInfo selectProjectInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目管理列表
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 项目管理集合
|
||||
*/
|
||||
public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo);
|
||||
|
||||
/**
|
||||
* 新增项目管理
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectInfo(ProjectInfo projectInfo);
|
||||
|
||||
/**
|
||||
* 修改项目管理
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectInfo(ProjectInfo projectInfo);
|
||||
|
||||
/**
|
||||
* 批量删除项目管理
|
||||
*
|
||||
* @param ids 需要删除的项目管理主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectInfoByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除项目管理信息
|
||||
*
|
||||
* @param id 项目管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectInfoById(Long id);
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
package com.ruoyi.sip.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectOperateLog;
|
||||
|
||||
/**
|
||||
* 项目操作日志Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface IProjectOperateLogService
|
||||
{
|
||||
/**
|
||||
* 查询项目操作日志
|
||||
*
|
||||
* @param id 项目操作日志主键
|
||||
* @return 项目操作日志
|
||||
*/
|
||||
public ProjectOperateLog selectProjectOperateLogById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目操作日志列表
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 项目操作日志集合
|
||||
*/
|
||||
public List<ProjectOperateLog> selectProjectOperateLogList(ProjectOperateLog projectOperateLog);
|
||||
|
||||
/**
|
||||
* 新增项目操作日志
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectOperateLog(ProjectOperateLog projectOperateLog);
|
||||
|
||||
/**
|
||||
* 修改项目操作日志
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectOperateLog(ProjectOperateLog projectOperateLog);
|
||||
|
||||
/**
|
||||
* 批量删除项目操作日志
|
||||
*
|
||||
* @param ids 需要删除的项目操作日志主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectOperateLogByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除项目操作日志信息
|
||||
*
|
||||
* @param id 项目操作日志主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectOperateLogById(Long id);
|
||||
|
||||
List<ProjectOperateLog> selectProjectOperateLogListByProjectId(Long id);
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package com.ruoyi.sip.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectProductInfo;
|
||||
|
||||
/**
|
||||
* 项目产品信息Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface IProjectProductInfoService
|
||||
{
|
||||
/**
|
||||
* 查询项目产品信息
|
||||
*
|
||||
* @param id 项目产品信息主键
|
||||
* @return 项目产品信息
|
||||
*/
|
||||
public ProjectProductInfo selectProjectProductInfoById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目产品信息列表
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 项目产品信息集合
|
||||
*/
|
||||
public List<ProjectProductInfo> selectProjectProductInfoList(ProjectProductInfo projectProductInfo);
|
||||
|
||||
/**
|
||||
* 新增项目产品信息
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectProductInfo(ProjectProductInfo projectProductInfo);
|
||||
|
||||
/**
|
||||
* 修改项目产品信息
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectProductInfo(ProjectProductInfo projectProductInfo);
|
||||
|
||||
/**
|
||||
* 批量删除项目产品信息
|
||||
*
|
||||
* @param ids 需要删除的项目产品信息主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectProductInfoByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除项目产品信息信息
|
||||
*
|
||||
* @param id 项目产品信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectProductInfoById(Long id);
|
||||
|
||||
List<ProjectProductInfo> selectProjectProductInfoListByProjectId(Long projectId);
|
||||
|
||||
void saveBatch(List<ProjectProductInfo> addList);
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package com.ruoyi.sip.service;
|
||||
|
||||
import java.util.List;
|
||||
import com.ruoyi.sip.domain.ProjectWorkProgress;
|
||||
|
||||
/**
|
||||
* 项目工作进度Service接口
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
public interface IProjectWorkProgressService
|
||||
{
|
||||
/**
|
||||
* 查询项目工作进度
|
||||
*
|
||||
* @param id 项目工作进度主键
|
||||
* @return 项目工作进度
|
||||
*/
|
||||
public ProjectWorkProgress selectProjectWorkProgressById(Long id);
|
||||
|
||||
/**
|
||||
* 查询项目工作进度列表
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 项目工作进度集合
|
||||
*/
|
||||
public List<ProjectWorkProgress> selectProjectWorkProgressList(ProjectWorkProgress projectWorkProgress);
|
||||
|
||||
/**
|
||||
* 新增项目工作进度
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 结果
|
||||
*/
|
||||
public int insertProjectWorkProgress(ProjectWorkProgress projectWorkProgress);
|
||||
|
||||
/**
|
||||
* 修改项目工作进度
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 结果
|
||||
*/
|
||||
public int updateProjectWorkProgress(ProjectWorkProgress projectWorkProgress);
|
||||
|
||||
/**
|
||||
* 批量删除项目工作进度
|
||||
*
|
||||
* @param ids 需要删除的项目工作进度主键集合
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectWorkProgressByIds(String ids);
|
||||
|
||||
/**
|
||||
* 删除项目工作进度信息
|
||||
*
|
||||
* @param id 项目工作进度主键
|
||||
* @return 结果
|
||||
*/
|
||||
public int deleteProjectWorkProgressById(Long id);
|
||||
|
||||
List<ProjectWorkProgress> selectProjectWorkProgressListByProjectId(Long projectId);
|
||||
|
||||
void insertIgnoreBatch(List<ProjectWorkProgress> projectWorkProgressList);
|
||||
}
|
|
@ -279,9 +279,7 @@ public class OrderInfoServiceImpl implements IOrderInfoService
|
|||
}
|
||||
|
||||
BigDecimal amount = orderList.getPrice().multiply(new BigDecimal(orderList.getQuantity()));
|
||||
if (orderList.getDiscount()!=null){
|
||||
amount = amount.multiply(orderList.getDiscount()).setScale(2, RoundingMode.HALF_UP);
|
||||
}
|
||||
amount = amount.multiply(orderList.getDiscount()).setScale(2, RoundingMode.HALF_UP);
|
||||
orderList.setAmount(amount);
|
||||
}
|
||||
orderInfoMapper.deleteOrderListByOrderId(orderId);
|
||||
|
|
|
@ -0,0 +1,212 @@
|
|||
package com.ruoyi.sip.service.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.ruoyi.common.utils.DateUtils;
|
||||
import com.ruoyi.common.utils.ShiroUtils;
|
||||
import com.ruoyi.sip.domain.*;
|
||||
import com.ruoyi.sip.service.IProjectOperateLogService;
|
||||
import com.ruoyi.sip.service.IProjectProductInfoService;
|
||||
import com.ruoyi.sip.service.IProjectWorkProgressService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.sip.mapper.ProjectInfoMapper;
|
||||
import com.ruoyi.sip.service.IProjectInfoService;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
|
||||
/**
|
||||
* 项目管理Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Service
|
||||
public class ProjectInfoServiceImpl implements IProjectInfoService {
|
||||
@Autowired
|
||||
private ProjectInfoMapper projectInfoMapper;
|
||||
|
||||
@Autowired
|
||||
private IProjectProductInfoService productInfoService;
|
||||
@Autowired
|
||||
private IProjectWorkProgressService workProgressService;
|
||||
@Autowired
|
||||
private IProjectOperateLogService operateLogService;
|
||||
private static final String PROJECT_CODE_PREFIX = "V";
|
||||
private static final Integer PROJECT_CODE_LENGTH = 5;
|
||||
|
||||
/**
|
||||
* 查询项目管理
|
||||
*
|
||||
* @param id 项目管理主键
|
||||
* @return 项目管理
|
||||
*/
|
||||
@Override
|
||||
public ProjectInfo selectProjectInfoById(Long id) {
|
||||
ProjectInfo projectInfo = projectInfoMapper.selectProjectInfoById(id);
|
||||
//查询产品信息
|
||||
List<ProjectProductInfo> projectProductInfos = productInfoService.selectProjectProductInfoListByProjectId(projectInfo.getId());
|
||||
Map<String, List<ProjectProductInfo>> productListMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getType, Collectors.toList()));
|
||||
projectInfo.setHardwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.HARDWARE.getType()));
|
||||
projectInfo.setSoftwareProjectProductInfoList(productListMap.get(ProductInfo.ProductTypeEnum.SOFTWARE.getType()));
|
||||
//查询变更记录信息
|
||||
List<ProjectWorkProgress> projectWorkProgresses = workProgressService.selectProjectWorkProgressListByProjectId((projectInfo.getId()));
|
||||
projectInfo.setProjectWorkProgressList(projectWorkProgresses);
|
||||
//查询操作日志信息
|
||||
List<ProjectOperateLog> projectOperateLogs = operateLogService.selectProjectOperateLogListByProjectId(projectInfo.getId());
|
||||
projectInfo.setProjectOperateLogList(projectOperateLogs);
|
||||
return projectInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目管理列表
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 项目管理
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo) {
|
||||
return projectInfoMapper.selectProjectInfoList(projectInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目管理
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertProjectInfo(ProjectInfo projectInfo) {
|
||||
//生成项目编码
|
||||
String s = projectInfoMapper.selectMaxProjectCode(projectInfo);
|
||||
if (s == null) {
|
||||
projectInfo.setProjectCode(PROJECT_CODE_PREFIX + "00001");
|
||||
}else{
|
||||
projectInfo.setProjectCode(PROJECT_CODE_PREFIX + String.format("%0" + PROJECT_CODE_LENGTH + "d",
|
||||
Integer.parseInt(s.substring(PROJECT_CODE_PREFIX.length())) + 1));
|
||||
}
|
||||
projectInfo.setCreateTime(DateUtils.getNowDate());
|
||||
projectInfo.setCreateBy(ShiroUtils.getUserId().toString());
|
||||
int i = projectInfoMapper.insertProjectInfo(projectInfo);
|
||||
//插入产品信息
|
||||
List<ProjectProductInfo> hardwareProjectProductInfoList = projectInfo.getHardwareProjectProductInfoList();
|
||||
List<ProjectProductInfo> softwareProjectProductInfoList = projectInfo.getSoftwareProjectProductInfoList();
|
||||
List<ProjectProductInfo> addList=new ArrayList<>();
|
||||
addList.addAll(hardwareProjectProductInfoList);
|
||||
addList.addAll(softwareProjectProductInfoList);
|
||||
if (CollUtil.isNotEmpty(addList)){
|
||||
for (ProjectProductInfo projectProductInfo : addList) {
|
||||
projectProductInfo.setProjectId(projectInfo.getId());
|
||||
}
|
||||
productInfoService.saveBatch(addList);
|
||||
}
|
||||
//插入变更记录信息
|
||||
List<ProjectWorkProgress> projectWorkProgressList = projectInfo.getProjectWorkProgressList();
|
||||
if (CollUtil.isNotEmpty(projectWorkProgressList)) {
|
||||
for (ProjectWorkProgress workProgress : projectWorkProgressList) {
|
||||
workProgress.setProjectId(projectInfo.getId());
|
||||
}
|
||||
workProgressService.insertIgnoreBatch(projectWorkProgressList);
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目管理
|
||||
*
|
||||
* @param projectInfo 项目管理
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateProjectInfo(ProjectInfo projectInfo) {
|
||||
// 获取更新前的项目信息
|
||||
ProjectInfo oldProjectInfo = projectInfoMapper.selectProjectInfoById(projectInfo.getId());
|
||||
|
||||
// 更新项目信息
|
||||
projectInfo.setUpdateTime(DateUtils.getNowDate());
|
||||
int result = projectInfoMapper.updateProjectInfo(projectInfo);
|
||||
|
||||
// 记录操作日志
|
||||
StringBuilder logContent = new StringBuilder();
|
||||
int logIndex = 1;
|
||||
|
||||
// 比较字段差异
|
||||
compareField(logContent, logIndex++, "项目名称", oldProjectInfo.getProjectName(), projectInfo.getProjectName());
|
||||
compareField(logContent, logIndex++, "客户名称", oldProjectInfo.getCustomerName(), projectInfo.getCustomerName());
|
||||
compareField(logContent, logIndex++, "行业", oldProjectInfo.getIndustryType(), projectInfo.getIndustryType());
|
||||
compareField(logContent, logIndex++, "属地", oldProjectInfo.getProvince(), projectInfo.getProvince());
|
||||
compareField(logContent, logIndex++, "项目阶段", oldProjectInfo.getProjectStage(), projectInfo.getProjectStage());
|
||||
compareField(logContent, logIndex++, "项目把握度", oldProjectInfo.getProjectGraspDegree(), projectInfo.getProjectGraspDegree());
|
||||
compareField(logContent, logIndex++, "汇智支撑人员", oldProjectInfo.getHzSupportUser(), projectInfo.getHzSupportUser());
|
||||
compareField(logContent, logIndex++, "运作机构", oldProjectInfo.getOperateInstitution(), projectInfo.getOperateInstitution());
|
||||
compareField(logContent, logIndex++, "代理商", oldProjectInfo.getOperateInstitution(), projectInfo.getOperateInstitution());
|
||||
compareField(logContent, logIndex++, "竞争对手", oldProjectInfo.getCompetitor(), projectInfo.getCompetitor());
|
||||
// compareField(logContent, logIndex++, "项目类型", oldProjectInfo.getProjectType(), projectInfo.getProjectType());
|
||||
// compareField(logContent, logIndex++, "项目状态", oldProjectInfo.getProjectStatus(), projectInfo.getProjectStatus());
|
||||
// compareField(logContent, logIndex++, "项目经理", oldProjectInfo.getProjectManager(), projectInfo.getProjectManager());
|
||||
// compareField(logContent, logIndex++, "预期收益", oldProjectInfo.getExpectedRevenue(), projectInfo.getExpectedRevenue());
|
||||
// compareField(logContent, logIndex++, "实际收益", oldProjectInfo.getActualRevenue(), projectInfo.getActualRevenue());
|
||||
// compareField(logContent, logIndex++, "开始日期", oldProjectInfo.getStartDate(), projectInfo.getStartDate());
|
||||
// compareField(logContent, logIndex++, "结束日期", oldProjectInfo.getEndDate(), projectInfo.getEndDate());
|
||||
// compareField(logContent, logIndex++, "风险等级", oldProjectInfo.getRiskLevel(), projectInfo.getRiskLevel());
|
||||
// compareField(logContent, logIndex++, "备注", oldProjectInfo.getRemarks(), projectInfo.getRemarks());
|
||||
|
||||
// 插入操作日志
|
||||
if (logContent.length() > 0) {
|
||||
ProjectOperateLog operateLog = new ProjectOperateLog();
|
||||
operateLog.setProjectId(projectInfo.getId());
|
||||
operateLog.setOperateLog(logContent.toString());
|
||||
operateLog.setOperateTime(DateUtils.getNowDate());
|
||||
operateLog.setOperateUser(ShiroUtils.getUserId().toString());
|
||||
operateLogService.insertProjectOperateLog(operateLog);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 比较字段并生成日志内容
|
||||
*
|
||||
* @param logContent 日志内容构建器
|
||||
* @param index 日志索引
|
||||
* @param fieldName 字段名称
|
||||
* @param oldValue 旧值
|
||||
* @param newValue 新值
|
||||
*/
|
||||
private void compareField(StringBuilder logContent, int index, String fieldName, Object oldValue, Object newValue) {
|
||||
if (!oldValue.equals(newValue)) {
|
||||
logContent.append(index).append(".")
|
||||
.append(fieldName)
|
||||
.append("由‘")
|
||||
.append(oldValue)
|
||||
.append("’变更为‘")
|
||||
.append(newValue)
|
||||
.append("’\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除项目管理
|
||||
*
|
||||
* @param ids 需要删除的项目管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectInfoByIds(String ids) {
|
||||
return projectInfoMapper.deleteProjectInfoByIds(Convert.toStrArray(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目管理信息
|
||||
*
|
||||
* @param id 项目管理主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectInfoById(Long id) {
|
||||
return projectInfoMapper.deleteProjectInfoById(id);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,100 @@
|
|||
package com.ruoyi.sip.service.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.sip.mapper.ProjectOperateLogMapper;
|
||||
import com.ruoyi.sip.domain.ProjectOperateLog;
|
||||
import com.ruoyi.sip.service.IProjectOperateLogService;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
|
||||
/**
|
||||
* 项目操作日志Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Service
|
||||
public class ProjectOperateLogServiceImpl implements IProjectOperateLogService
|
||||
{
|
||||
@Autowired
|
||||
private ProjectOperateLogMapper projectOperateLogMapper;
|
||||
|
||||
/**
|
||||
* 查询项目操作日志
|
||||
*
|
||||
* @param id 项目操作日志主键
|
||||
* @return 项目操作日志
|
||||
*/
|
||||
@Override
|
||||
public ProjectOperateLog selectProjectOperateLogById(Long id)
|
||||
{
|
||||
return projectOperateLogMapper.selectProjectOperateLogById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目操作日志列表
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 项目操作日志
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectOperateLog> selectProjectOperateLogList(ProjectOperateLog projectOperateLog)
|
||||
{
|
||||
return projectOperateLogMapper.selectProjectOperateLogList(projectOperateLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目操作日志
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertProjectOperateLog(ProjectOperateLog projectOperateLog)
|
||||
{
|
||||
return projectOperateLogMapper.insertProjectOperateLog(projectOperateLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目操作日志
|
||||
*
|
||||
* @param projectOperateLog 项目操作日志
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateProjectOperateLog(ProjectOperateLog projectOperateLog)
|
||||
{
|
||||
return projectOperateLogMapper.updateProjectOperateLog(projectOperateLog);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除项目操作日志
|
||||
*
|
||||
* @param ids 需要删除的项目操作日志主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectOperateLogByIds(String ids)
|
||||
{
|
||||
return projectOperateLogMapper.deleteProjectOperateLogByIds(Convert.toStrArray(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目操作日志信息
|
||||
*
|
||||
* @param id 项目操作日志主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectOperateLogById(Long id)
|
||||
{
|
||||
return projectOperateLogMapper.deleteProjectOperateLogById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectOperateLog> selectProjectOperateLogListByProjectId(Long id) {
|
||||
return projectOperateLogMapper.selectProjectOperateLogListByProjectId(id);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,113 @@
|
|||
package com.ruoyi.sip.service.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.sip.mapper.ProjectProductInfoMapper;
|
||||
import com.ruoyi.sip.domain.ProjectProductInfo;
|
||||
import com.ruoyi.sip.service.IProjectProductInfoService;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
|
||||
/**
|
||||
* 项目产品信息Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Service
|
||||
public class ProjectProductInfoServiceImpl implements IProjectProductInfoService {
|
||||
@Autowired
|
||||
private ProjectProductInfoMapper projectProductInfoMapper;
|
||||
|
||||
/**
|
||||
* 查询项目产品信息
|
||||
*
|
||||
* @param id 项目产品信息主键
|
||||
* @return 项目产品信息
|
||||
*/
|
||||
@Override
|
||||
public ProjectProductInfo selectProjectProductInfoById(Long id) {
|
||||
return projectProductInfoMapper.selectProjectProductInfoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目产品信息列表
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 项目产品信息
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectProductInfo> selectProjectProductInfoList(ProjectProductInfo projectProductInfo) {
|
||||
return projectProductInfoMapper.selectProjectProductInfoList(projectProductInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目产品信息
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertProjectProductInfo(ProjectProductInfo projectProductInfo) {
|
||||
return projectProductInfoMapper.insertProjectProductInfo(projectProductInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目产品信息
|
||||
*
|
||||
* @param projectProductInfo 项目产品信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateProjectProductInfo(ProjectProductInfo projectProductInfo) {
|
||||
return projectProductInfoMapper.updateProjectProductInfo(projectProductInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除项目产品信息
|
||||
*
|
||||
* @param ids 需要删除的项目产品信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectProductInfoByIds(String ids) {
|
||||
return projectProductInfoMapper.deleteProjectProductInfoByIds(Convert.toStrArray(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目产品信息信息
|
||||
*
|
||||
* @param id 项目产品信息主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectProductInfoById(Long id) {
|
||||
return projectProductInfoMapper.deleteProjectProductInfoById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectProductInfo> selectProjectProductInfoListByProjectId(Long projectId) {
|
||||
return projectProductInfoMapper.selectProjectProductInfoListByProjectId(projectId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveBatch(List<ProjectProductInfo> addList) {
|
||||
List<ProjectProductInfo> projectProductInfos = projectProductInfoMapper.selectProjectProductInfoListByProjectId(addList.get(0).getProjectId());
|
||||
Set<Long> idSet = addList.stream().map(ProjectProductInfo::getId).collect(Collectors.toSet());
|
||||
String[] deleteIds = projectProductInfos.stream().filter(item -> !idSet.contains(item.getId())).map(item -> item.getId().toString()).toArray(String[]::new);
|
||||
//删除数据
|
||||
if (deleteIds.length > 0) {
|
||||
projectProductInfoMapper.deleteProjectProductInfoByIds(deleteIds);
|
||||
}
|
||||
//新增数据
|
||||
projectProductInfoMapper.saveBatch(addList);
|
||||
//todo 记录变更信息
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
package com.ruoyi.sip.service.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.sip.mapper.ProjectWorkProgressMapper;
|
||||
import com.ruoyi.sip.domain.ProjectWorkProgress;
|
||||
import com.ruoyi.sip.service.IProjectWorkProgressService;
|
||||
import com.ruoyi.common.core.text.Convert;
|
||||
|
||||
/**
|
||||
* 项目工作进度Service业务层处理
|
||||
*
|
||||
* @author ruoyi
|
||||
* @date 2025-05-29
|
||||
*/
|
||||
@Service
|
||||
public class ProjectWorkProgressServiceImpl implements IProjectWorkProgressService
|
||||
{
|
||||
@Autowired
|
||||
private ProjectWorkProgressMapper projectWorkProgressMapper;
|
||||
|
||||
/**
|
||||
* 查询项目工作进度
|
||||
*
|
||||
* @param id 项目工作进度主键
|
||||
* @return 项目工作进度
|
||||
*/
|
||||
@Override
|
||||
public ProjectWorkProgress selectProjectWorkProgressById(Long id)
|
||||
{
|
||||
return projectWorkProgressMapper.selectProjectWorkProgressById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询项目工作进度列表
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 项目工作进度
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectWorkProgress> selectProjectWorkProgressList(ProjectWorkProgress projectWorkProgress)
|
||||
{
|
||||
return projectWorkProgressMapper.selectProjectWorkProgressList(projectWorkProgress);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目工作进度
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insertProjectWorkProgress(ProjectWorkProgress projectWorkProgress)
|
||||
{
|
||||
return projectWorkProgressMapper.insertProjectWorkProgress(projectWorkProgress);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目工作进度
|
||||
*
|
||||
* @param projectWorkProgress 项目工作进度
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updateProjectWorkProgress(ProjectWorkProgress projectWorkProgress)
|
||||
{
|
||||
return projectWorkProgressMapper.updateProjectWorkProgress(projectWorkProgress);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除项目工作进度
|
||||
*
|
||||
* @param ids 需要删除的项目工作进度主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectWorkProgressByIds(String ids)
|
||||
{
|
||||
return projectWorkProgressMapper.deleteProjectWorkProgressByIds(Convert.toStrArray(ids));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目工作进度信息
|
||||
*
|
||||
* @param id 项目工作进度主键
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int deleteProjectWorkProgressById(Long id)
|
||||
{
|
||||
return projectWorkProgressMapper.deleteProjectWorkProgressById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectWorkProgress> selectProjectWorkProgressListByProjectId(Long projectId) {
|
||||
return projectWorkProgressMapper.selectProjectWorkProgressListByProjectId(projectId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertIgnoreBatch(List<ProjectWorkProgress> projectWorkProgressList) {
|
||||
projectWorkProgressMapper.insertIgnoreBatch(projectWorkProgressList);
|
||||
}
|
||||
}
|
|
@ -43,6 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="deliveryType != null and deliveryType != ''"> and t1.delivery_type = #{deliveryType}</if>
|
||||
<if test="logisticsCompany != null and logisticsCompany != ''"> and t1.logistics_company = #{logisticsCompany}</if>
|
||||
<if test="deliveryStatus != null and deliveryStatus != ''"> and t1.delivery_status = #{deliveryStatus}</if>
|
||||
<if test="orderName != null and orderName != ''"> and t2.order_name like concat('%', #{orderName},'%')</if>
|
||||
</where>
|
||||
order by t1.order_id,t1.delivery_date
|
||||
</select>
|
||||
|
|
|
@ -0,0 +1,178 @@
|
|||
<?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.ProjectInfoMapper">
|
||||
|
||||
<resultMap type="ProjectInfo" id="ProjectInfoResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="projectCode" column="project_code" />
|
||||
<result property="projectName" column="project_name" />
|
||||
<result property="customerCode" column="customer_code" />
|
||||
<result property="customerName" column="customer_name" />
|
||||
<result property="industryType" column="industry_type" />
|
||||
<result property="province" column="province" />
|
||||
<result property="projectStage" column="project_stage" />
|
||||
<result property="projectGraspDegree" column="project_grasp_degree" />
|
||||
<result property="hzSupportUser" column="hz_support_user" />
|
||||
<result property="operateInstitution" column="operate_institution" />
|
||||
<result property="partnerCode" column="partner_code" />
|
||||
<result property="contactWay" column="contact_way" />
|
||||
<result property="estimatedAmount" column="estimated_amount" />
|
||||
<result property="currencyType" column="currency_type" />
|
||||
<result property="estimatedOrderTime" column="estimated_order_time" />
|
||||
<result property="estimatedDeliverTime" column="estimated_deliver_time" />
|
||||
<result property="competitor" column="competitor" />
|
||||
<result property="countryProduct" column="country_product" />
|
||||
<result property="serverConfiguration" column="server_configuration" />
|
||||
<result property="keyProblem" column="key_problem" />
|
||||
<result property="projectDesc" column="project_desc" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProjectInfoVo">
|
||||
select id, project_code, project_name, customer_code, customer_name, industry_type, province, project_stage, project_grasp_degree, hz_support_user, operate_institution, partner_code, 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 from project_info
|
||||
</sql>
|
||||
|
||||
<select id="selectProjectInfoList" parameterType="ProjectInfo" resultMap="ProjectInfoResult">
|
||||
<include refid="selectProjectInfoVo"/>
|
||||
<where>
|
||||
<if test="projectCode != null and projectCode != ''"> and project_code = #{projectCode}</if>
|
||||
<if test="projectName != null and projectName != ''"> and project_name like concat('%', #{projectName}, '%')</if>
|
||||
<if test="customerCode != null and customerCode != ''"> and customer_code = #{customerCode}</if>
|
||||
<if test="customerName != null and customerName != ''"> and customer_name like concat('%', #{customerName}, '%')</if>
|
||||
<if test="industryType != null and industryType != ''"> and industry_type = #{industryType}</if>
|
||||
<if test="province != null and province != ''"> and province = #{province}</if>
|
||||
<if test="projectStage != null and projectStage != ''"> and project_stage = #{projectStage}</if>
|
||||
<if test="projectGraspDegree != null and projectGraspDegree != ''"> and project_grasp_degree = #{projectGraspDegree}</if>
|
||||
<if test="hzSupportUser != null and hzSupportUser != ''"> and hz_support_user = #{hzSupportUser}</if>
|
||||
<if test="operateInstitution != null and operateInstitution != ''"> and operate_institution = #{operateInstitution}</if>
|
||||
<if test="partnerCode != null and partnerCode != ''"> and partner_code = #{partnerCode}</if>
|
||||
<if test="contactWay != null and contactWay != ''"> and contact_way = #{contactWay}</if>
|
||||
<if test="estimatedAmount != null "> and estimated_amount = #{estimatedAmount}</if>
|
||||
<if test="currencyType != null and currencyType != ''"> and currency_type = #{currencyType}</if>
|
||||
<if test="estimatedOrderTime != null "> and estimated_order_time = #{estimatedOrderTime}</if>
|
||||
<if test="estimatedDeliverTime != null "> and estimated_deliver_time = #{estimatedDeliverTime}</if>
|
||||
<if test="competitor != null and competitor != ''"> and competitor = #{competitor}</if>
|
||||
<if test="countryProduct != null and countryProduct != ''"> and country_product = #{countryProduct}</if>
|
||||
<if test="serverConfiguration != null and serverConfiguration != ''"> and server_configuration = #{serverConfiguration}</if>
|
||||
<if test="keyProblem != null and keyProblem != ''"> and key_problem = #{keyProblem}</if>
|
||||
<if test="projectDesc != null and projectDesc != ''"> and project_desc = #{projectDesc}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectProjectInfoById" parameterType="Long" resultMap="ProjectInfoResult">
|
||||
<include refid="selectProjectInfoVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
<select id="selectMaxProjectCode" resultType="java.lang.String">
|
||||
select project_code from project_info
|
||||
where province=#{province}
|
||||
order by project_code desc limit 1
|
||||
</select>
|
||||
|
||||
<insert id="insertProjectInfo" parameterType="ProjectInfo" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into project_info
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="projectCode != null">project_code,</if>
|
||||
<if test="projectName != null">project_name,</if>
|
||||
<if test="customerCode != null">customer_code,</if>
|
||||
<if test="customerName != null">customer_name,</if>
|
||||
<if test="industryType != null">industry_type,</if>
|
||||
<if test="province != null">province,</if>
|
||||
<if test="projectStage != null">project_stage,</if>
|
||||
<if test="projectGraspDegree != null">project_grasp_degree,</if>
|
||||
<if test="hzSupportUser != null">hz_support_user,</if>
|
||||
<if test="operateInstitution != null">operate_institution,</if>
|
||||
<if test="partnerCode != null">partner_code,</if>
|
||||
<if test="contactWay != null">contact_way,</if>
|
||||
<if test="estimatedAmount != null">estimated_amount,</if>
|
||||
<if test="currencyType != null">currency_type,</if>
|
||||
<if test="estimatedOrderTime != null">estimated_order_time,</if>
|
||||
<if test="estimatedDeliverTime != null">estimated_deliver_time,</if>
|
||||
<if test="competitor != null">competitor,</if>
|
||||
<if test="countryProduct != null">country_product,</if>
|
||||
<if test="serverConfiguration != null">server_configuration,</if>
|
||||
<if test="keyProblem != null">key_problem,</if>
|
||||
<if test="projectDesc != null">project_desc,</if>
|
||||
<if test="createBy != null">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
<if test="updateBy != null">update_by,</if>
|
||||
<if test="updateTime != null">update_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="projectCode != null">#{projectCode},</if>
|
||||
<if test="projectName != null">#{projectName},</if>
|
||||
<if test="customerCode != null">#{customerCode},</if>
|
||||
<if test="customerName != null">#{customerName},</if>
|
||||
<if test="industryType != null">#{industryType},</if>
|
||||
<if test="province != null">#{province},</if>
|
||||
<if test="projectStage != null">#{projectStage},</if>
|
||||
<if test="projectGraspDegree != null">#{projectGraspDegree},</if>
|
||||
<if test="hzSupportUser != null">#{hzSupportUser},</if>
|
||||
<if test="operateInstitution != null">#{operateInstitution},</if>
|
||||
<if test="partnerCode != null">#{partnerCode},</if>
|
||||
<if test="contactWay != null">#{contactWay},</if>
|
||||
<if test="estimatedAmount != null">#{estimatedAmount},</if>
|
||||
<if test="currencyType != null">#{currencyType},</if>
|
||||
<if test="estimatedOrderTime != null">#{estimatedOrderTime},</if>
|
||||
<if test="estimatedDeliverTime != null">#{estimatedDeliverTime},</if>
|
||||
<if test="competitor != null">#{competitor},</if>
|
||||
<if test="countryProduct != null">#{countryProduct},</if>
|
||||
<if test="serverConfiguration != null">#{serverConfiguration},</if>
|
||||
<if test="keyProblem != null">#{keyProblem},</if>
|
||||
<if test="projectDesc != null">#{projectDesc},</if>
|
||||
<if test="createBy != null">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
<if test="updateBy != null">#{updateBy},</if>
|
||||
<if test="updateTime != null">#{updateTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateProjectInfo" parameterType="ProjectInfo">
|
||||
update project_info
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="projectCode != null">project_code = #{projectCode},</if>
|
||||
<if test="projectName != null">project_name = #{projectName},</if>
|
||||
<if test="customerCode != null">customer_code = #{customerCode},</if>
|
||||
<if test="customerName != null">customer_name = #{customerName},</if>
|
||||
<if test="industryType != null">industry_type = #{industryType},</if>
|
||||
<if test="province != null">province = #{province},</if>
|
||||
<if test="projectStage != null">project_stage = #{projectStage},</if>
|
||||
<if test="projectGraspDegree != null">project_grasp_degree = #{projectGraspDegree},</if>
|
||||
<if test="hzSupportUser != null">hz_support_user = #{hzSupportUser},</if>
|
||||
<if test="operateInstitution != null">operate_institution = #{operateInstitution},</if>
|
||||
<if test="partnerCode != null">partner_code = #{partnerCode},</if>
|
||||
<if test="contactWay != null">contact_way = #{contactWay},</if>
|
||||
<if test="estimatedAmount != null">estimated_amount = #{estimatedAmount},</if>
|
||||
<if test="currencyType != null">currency_type = #{currencyType},</if>
|
||||
<if test="estimatedOrderTime != null">estimated_order_time = #{estimatedOrderTime},</if>
|
||||
<if test="estimatedDeliverTime != null">estimated_deliver_time = #{estimatedDeliverTime},</if>
|
||||
<if test="competitor != null">competitor = #{competitor},</if>
|
||||
<if test="countryProduct != null">country_product = #{countryProduct},</if>
|
||||
<if test="serverConfiguration != null">server_configuration = #{serverConfiguration},</if>
|
||||
<if test="keyProblem != null">key_problem = #{keyProblem},</if>
|
||||
<if test="projectDesc != null">project_desc = #{projectDesc},</if>
|
||||
<if test="createBy != null">create_by = #{createBy},</if>
|
||||
<if test="createTime != null">create_time = #{createTime},</if>
|
||||
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProjectInfoById" parameterType="Long">
|
||||
delete from project_info where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteProjectInfoByIds" parameterType="String">
|
||||
delete from project_info where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
|
@ -0,0 +1,85 @@
|
|||
<?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.ProjectOperateLogMapper">
|
||||
|
||||
<resultMap type="ProjectOperateLog" id="ProjectOperateLogResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="operateLog" column="operate_log" />
|
||||
<result property="operateUser" column="operate_user" />
|
||||
<result property="operateTime" column="operate_time" />
|
||||
<result property="projectId" column="project_id" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProjectOperateLogVo">
|
||||
select id, operate_log, operate_user, operate_time, project_id from project_operate_log
|
||||
</sql>
|
||||
|
||||
<select id="selectProjectOperateLogList" parameterType="ProjectOperateLog" resultMap="ProjectOperateLogResult">
|
||||
<include refid="selectProjectOperateLogVo"/>
|
||||
<where>
|
||||
<if test="operateLog != null and operateLog != ''"> and operate_log = #{operateLog}</if>
|
||||
<if test="operateUser != null and operateUser != ''"> and operate_user = #{operateUser}</if>
|
||||
<if test="operateTime != null "> and operate_time = #{operateTime}</if>
|
||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectProjectOperateLogById" parameterType="Long" resultMap="ProjectOperateLogResult">
|
||||
<include refid="selectProjectOperateLogVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
<select id="selectProjectOperateLogListByProjectId" resultType="com.ruoyi.sip.domain.ProjectOperateLog">
|
||||
select t1.id
|
||||
, t1.operate_log
|
||||
, t1.operate_user
|
||||
, t1.operate_time
|
||||
, t1.project_id
|
||||
, t2.user_name
|
||||
from project_operate_log t1
|
||||
left join sys_user t2 on operate_user = t2.user_id
|
||||
where t1.project_id = #{projectId}
|
||||
</select>
|
||||
|
||||
<insert id="insertProjectOperateLog" parameterType="ProjectOperateLog">
|
||||
insert into project_operate_log
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">id,</if>
|
||||
<if test="operateLog != null">operate_log,</if>
|
||||
<if test="operateUser != null">operate_user,</if>
|
||||
<if test="operateTime != null">operate_time,</if>
|
||||
<if test="projectId != null">project_id,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="id != null">#{id},</if>
|
||||
<if test="operateLog != null">#{operateLog},</if>
|
||||
<if test="operateUser != null">#{operateUser},</if>
|
||||
<if test="operateTime != null">#{operateTime},</if>
|
||||
<if test="projectId != null">#{projectId},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="updateProjectOperateLog" parameterType="ProjectOperateLog">
|
||||
update project_operate_log
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="operateLog != null">operate_log = #{operateLog},</if>
|
||||
<if test="operateUser != null">operate_user = #{operateUser},</if>
|
||||
<if test="operateTime != null">operate_time = #{operateTime},</if>
|
||||
<if test="projectId != null">project_id = #{projectId},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProjectOperateLogById" parameterType="Long">
|
||||
delete from project_operate_log where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteProjectOperateLogByIds" parameterType="String">
|
||||
delete from project_operate_log where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
|
@ -0,0 +1,86 @@
|
|||
<?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.ProjectProductInfoMapper">
|
||||
|
||||
<resultMap type="ProjectProductInfo" id="ProjectProductInfoResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="projectId" column="project_id" />
|
||||
<result property="productCode" column="product_code" />
|
||||
<result property="quantity" column="quantity" />
|
||||
<result property="remark" column="remark" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProjectProductInfoVo">
|
||||
select id, project_id, product_code, quantity, remark from project_product_info
|
||||
</sql>
|
||||
|
||||
<select id="selectProjectProductInfoList" parameterType="ProjectProductInfo" resultMap="ProjectProductInfoResult">
|
||||
<include refid="selectProjectProductInfoVo"/>
|
||||
<where>
|
||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||
<if test="productCode != null and productCode != ''"> and product_code = #{productCode}</if>
|
||||
<if test="quantity != null "> and quantity = #{quantity}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectProjectProductInfoById" parameterType="Long" resultMap="ProjectProductInfoResult">
|
||||
<include refid="selectProjectProductInfoVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
<select id="selectProjectProductInfoListByProjectId" resultType="com.ruoyi.sip.domain.ProjectProductInfo">
|
||||
select t1.id, t1.project_id, t1.product_code, t1.quantity, t1.remark
|
||||
,t2.type,t2.model
|
||||
from project_product_info t1
|
||||
left join product_info t2 on t1.product_code=t2.product_code
|
||||
where t1.project_id=#{projectId}
|
||||
order by t2.type
|
||||
</select>
|
||||
|
||||
<insert id="insertProjectProductInfo" parameterType="ProjectProductInfo" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into project_product_info
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="projectId != null">project_id,</if>
|
||||
<if test="productCode != null">product_code,</if>
|
||||
<if test="quantity != null">quantity,</if>
|
||||
<if test="remark != null">remark,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="projectId != null">#{projectId},</if>
|
||||
<if test="productCode != null">#{productCode},</if>
|
||||
<if test="quantity != null">#{quantity},</if>
|
||||
<if test="remark != null">#{remark},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<insert id="saveBatch">
|
||||
insert into project_product_info (project_id, product_code, quantity, remark) values
|
||||
<foreach item="item" index="index" collection="list" separator=",">
|
||||
(#{item.projectId}, #{item.productCode}, #{item.quantity}, #{item.remark})
|
||||
</foreach>
|
||||
on duplicate key update product_code = values(product_code), quantity = values(quantity), remark = values(remark)
|
||||
</insert>
|
||||
|
||||
<update id="updateProjectProductInfo" parameterType="ProjectProductInfo">
|
||||
update project_product_info
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="projectId != null">project_id = #{projectId},</if>
|
||||
<if test="productCode != null">product_code = #{productCode},</if>
|
||||
<if test="quantity != null">quantity = #{quantity},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProjectProductInfoById" parameterType="Long">
|
||||
delete from project_product_info where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteProjectProductInfoByIds" parameterType="String">
|
||||
delete from project_product_info where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
|
@ -0,0 +1,87 @@
|
|||
<?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.ProjectWorkProgressMapper">
|
||||
|
||||
<resultMap type="ProjectWorkProgress" id="ProjectWorkProgressResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="workContent" column="work_content" />
|
||||
<result property="workUser" column="work_user" />
|
||||
<result property="workTime" column="work_time" />
|
||||
<result property="projectId" column="project_id" />
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectProjectWorkProgressVo">
|
||||
select id, work_content, work_user, work_time, project_id from project_work_progress
|
||||
</sql>
|
||||
|
||||
<select id="selectProjectWorkProgressList" parameterType="ProjectWorkProgress" resultMap="ProjectWorkProgressResult">
|
||||
<include refid="selectProjectWorkProgressVo"/>
|
||||
<where>
|
||||
<if test="workContent != null and workContent != ''"> and work_content = #{workContent}</if>
|
||||
<if test="workUser != null and workUser != ''"> and work_user = #{workUser}</if>
|
||||
<if test="workTime != null "> and work_time = #{workTime}</if>
|
||||
<if test="projectId != null "> and project_id = #{projectId}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectProjectWorkProgressById" parameterType="Long" resultMap="ProjectWorkProgressResult">
|
||||
<include refid="selectProjectWorkProgressVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
<select id="selectProjectWorkProgressListByProjectId"
|
||||
resultMap="ProjectWorkProgressResult">
|
||||
select t1.id, t1.work_content, t1.work_user, t1.work_time, t1.project_id,
|
||||
t2.user_name
|
||||
from project_work_progress t1
|
||||
left join sys_user t2 on t1.work_user = t2.user_id
|
||||
where t1.project_id = #{projectId}
|
||||
order by t1.work_time
|
||||
</select>
|
||||
|
||||
<insert id="insertProjectWorkProgress" parameterType="ProjectWorkProgress" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into project_work_progress
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="workContent != null">work_content,</if>
|
||||
<if test="workUser != null">work_user,</if>
|
||||
<if test="workTime != null">work_time,</if>
|
||||
<if test="projectId != null">project_id,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="workContent != null">#{workContent},</if>
|
||||
<if test="workUser != null">#{workUser},</if>
|
||||
<if test="workTime != null">#{workTime},</if>
|
||||
<if test="projectId != null">#{projectId},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
<insert id="insertIgnoreBatch">
|
||||
insert ignore into project_work_progress (work_content, work_user, work_time, project_id) values
|
||||
<foreach item="item" index="index" collection="list" separator=",">
|
||||
(#{item.workContent}, #{item.workUser}, #{item.workTime}, #{item.projectId})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<update id="updateProjectWorkProgress" parameterType="ProjectWorkProgress">
|
||||
update project_work_progress
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="workContent != null">work_content = #{workContent},</if>
|
||||
<if test="workUser != null">work_user = #{workUser},</if>
|
||||
<if test="workTime != null">work_time = #{workTime},</if>
|
||||
<if test="projectId != null">project_id = #{projectId},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteProjectWorkProgressById" parameterType="Long">
|
||||
delete from project_work_progress where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteProjectWorkProgressByIds" parameterType="String">
|
||||
delete from project_work_progress where id in
|
||||
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
Loading…
Reference in New Issue