From 8675eb4f0e674e6a5785292d1ea72959ff90c0d2 Mon Sep 17 00:00:00 2001 From: chenhao <852066789@qq.com> Date: Fri, 30 May 2025 16:27:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(sip):=20=E6=96=B0=E5=A2=9E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加订单管理相关的 HTML 模板文件 - 实现订单管理的前端页面,包括列表、添加和编辑功能 - 新增订单管理的后端接口和实现类 - 在项目信息中集成订单管理功能,增加生成订单的判断逻辑 --- .../manage/delivery/selectOrder.html | 4 + .../templates/project/order/add.html | 213 +++++++++++++++ .../templates/project/order/edit.html | 214 +++++++++++++++ .../templates/project/order/order.html | 250 ++++++++++++++++++ .../ProjectOrderInfoController.java | 128 +++++++++ .../com/ruoyi/sip/domain/ProjectInfo.java | 7 + .../ruoyi/sip/domain/ProjectOrderInfo.java | 170 ++++++++++++ .../sip/mapper/ProjectOrderInfoMapper.java | 63 +++++ .../sip/service/IProjectOrderInfoService.java | 71 +++++ .../service/impl/ProjectInfoServiceImpl.java | 21 +- .../impl/ProjectOrderInfoServiceImpl.java | 101 +++++++ .../mapper/sip/ProjectInfoMapper.xml | 41 +++ .../mapper/sip/ProjectOrderInfoMapper.xml | 204 ++++++++++++++ 13 files changed, 1481 insertions(+), 6 deletions(-) create mode 100644 ruoyi-admin/src/main/resources/templates/project/order/add.html create mode 100644 ruoyi-admin/src/main/resources/templates/project/order/edit.html create mode 100644 ruoyi-admin/src/main/resources/templates/project/order/order.html create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderInfoService.java create mode 100644 ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java create mode 100644 ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml diff --git a/ruoyi-admin/src/main/resources/templates/manage/delivery/selectOrder.html b/ruoyi-admin/src/main/resources/templates/manage/delivery/selectOrder.html index 27774c6f..ae215ba3 100644 --- a/ruoyi-admin/src/main/resources/templates/manage/delivery/selectOrder.html +++ b/ruoyi-admin/src/main/resources/templates/manage/delivery/selectOrder.html @@ -53,6 +53,10 @@ { field: 'orderCode', title: '合同编号' + }, + { + field: 'versionCode', + title: '版本号' }, { field: 'orderName', diff --git a/ruoyi-admin/src/main/resources/templates/project/order/add.html b/ruoyi-admin/src/main/resources/templates/project/order/add.html new file mode 100644 index 00000000..03be2bb9 --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/project/order/add.html @@ -0,0 +1,213 @@ +<!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-order-add"> + <div class="col-xs-12"> + <div class="form-group"> + <label class="col-sm-3 control-label is-required">项目主键:</label> + <div class="col-sm-8"> + <input name="projectId" class="form-control" type="text" required> + </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="city" 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="businessPerson" 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="businessEmail" 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="businessPhone" 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="orderCode" 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="shipmentAmount" 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="actualPurchaseAmount" 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="orderEndTime" 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="deliveryTime" 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="companyDelivery" 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="notifier" 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="notifierEmail" 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="notifierPhone" 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="duty" 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="dutyEmail" 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="dutyPhone" 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="orderChannel" 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="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="supplier" 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="remark" 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 + "project/order" + $("#form-order-add").validate({ + focusCleanup: true + }); + + function submitHandler() { + if ($.validate.form()) { + $.operate.save(prefix + "/add", $('#form-order-add').serialize()); + } + } + + $("input[name='orderEndTime']").datetimepicker({ + format: "yyyy-mm-dd", + minView: "month", + autoclose: true + }); + + $("input[name='deliveryTime']").datetimepicker({ + format: "yyyy-mm-dd", + minView: "month", + autoclose: true + }); + </script> +</body> +</html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/project/order/edit.html b/ruoyi-admin/src/main/resources/templates/project/order/edit.html new file mode 100644 index 00000000..60d0f2ef --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/project/order/edit.html @@ -0,0 +1,214 @@ +<!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-order-edit" th:object="${projectOrderInfo}"> + <input name="id" th:field="*{id}" type="hidden"> + <div class="col-xs-12"> + <div class="form-group"> + <label class="col-sm-3 control-label is-required">项目主键:</label> + <div class="col-sm-8"> + <input name="projectId" th:field="*{projectId}" class="form-control" type="text" required> + </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="city" th:field="*{city}" 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="businessPerson" th:field="*{businessPerson}" 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="businessEmail" th:field="*{businessEmail}" 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="businessPhone" th:field="*{businessPhone}" 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="orderCode" th:field="*{orderCode}" 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="shipmentAmount" th:field="*{shipmentAmount}" 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="actualPurchaseAmount" th:field="*{actualPurchaseAmount}" 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="orderEndTime" th:value="${#dates.format(projectOrderInfo.orderEndTime, '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="deliveryTime" th:value="${#dates.format(projectOrderInfo.deliveryTime, '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="companyDelivery" th:field="*{companyDelivery}" 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="notifier" th:field="*{notifier}" 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="notifierEmail" th:field="*{notifierEmail}" 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="notifierPhone" th:field="*{notifierPhone}" 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="duty" th:field="*{duty}" 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="dutyEmail" th:field="*{dutyEmail}" 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="dutyPhone" th:field="*{dutyPhone}" 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="orderChannel" th:field="*{orderChannel}" 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="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="supplier" th:field="*{supplier}" 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="remark" th:field="*{remark}" 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 + "project/order"; + $("#form-order-edit").validate({ + focusCleanup: true + }); + + function submitHandler() { + if ($.validate.form()) { + $.operate.save(prefix + "/edit", $('#form-order-edit').serialize()); + } + } + + $("input[name='orderEndTime']").datetimepicker({ + format: "yyyy-mm-dd", + minView: "month", + autoclose: true + }); + + $("input[name='deliveryTime']").datetimepicker({ + format: "yyyy-mm-dd", + minView: "month", + autoclose: true + }); + </script> +</body> +</html> \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/project/order/order.html b/ruoyi-admin/src/main/resources/templates/project/order/order.html new file mode 100644 index 00000000..b33331ff --- /dev/null +++ b/ruoyi-admin/src/main/resources/templates/project/order/order.html @@ -0,0 +1,250 @@ +<!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="projectId"/> + </li> + <li> + <label>地市:</label> + <input type="text" name="city"/> + </li> + <li> + <label>进货商商务接口人姓名:</label> + <input type="text" name="businessPerson"/> + </li> + <li> + <label>邮箱:</label> + <input type="text" name="businessEmail"/> + </li> + <li> + <label>电话:</label> + <input type="text" name="businessPhone"/> + </li> + <li> + <label>合同编号:</label> + <input type="text" name="orderCode"/> + </li> + <li> + <label>出货金额:</label> + <input type="text" name="shipmentAmount"/> + </li> + <li> + <label>实际进货金额:</label> + <input type="text" name="actualPurchaseAmount"/> + </li> + <li> + <label>执行单有效截止时间:</label> + <input type="text" class="time-input" placeholder="请选择执行单有效截止时间" name="orderEndTime"/> + </li> + <li> + <label>要求到货时间:</label> + <input type="text" class="time-input" placeholder="请选择要求到货时间" name="deliveryTime"/> + </li> + <li> + <label>公司直发:</label> + <input type="text" name="companyDelivery"/> + </li> + <li> + <label>通知人:</label> + <input type="text" name="notifier"/> + </li> + <li> + <label>通知人邮箱:</label> + <input type="text" name="notifierEmail"/> + </li> + <li> + <label>通知人电话:</label> + <input type="text" name="notifierPhone"/> + </li> + <li> + <label>责任人:</label> + <input type="text" name="duty"/> + </li> + <li> + <label>责任人邮箱:</label> + <input type="text" name="dutyEmail"/> + </li> + <li> + <label>责任人电话:</label> + <input type="text" name="dutyPhone"/> + </li> + <li> + <label>下单通路:</label> + <input type="text" name="orderChannel"/> + </li> + <li> + <label>进货商:</label> + <input type="text" name="partnerCode"/> + </li> + <li> + <label>供货商:</label> + <input type="text" name="supplier"/> + </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="product:order:add"> + <i class="fa fa-plus"></i> 添加 + </a> + <a class="btn btn-primary single disabled" onclick="$.operate.edit()" shiro:hasPermission="product:order:edit"> + <i class="fa fa-edit"></i> 修改 + </a> + <a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="product:order:remove"> + <i class="fa fa-remove"></i> 删除 + </a> + <a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="product:order: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('product:order:edit')}]]; + var removeFlag = [[${@permission.hasPermi('product:order:remove')}]]; + var prefix = ctx + "project/order"; + + $(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: 'projectId', + title: '项目主键' + }, + { + field: 'city', + title: '地市' + }, + { + field: 'businessPerson', + title: '进货商商务接口人姓名' + }, + { + field: 'businessEmail', + title: '邮箱' + }, + { + field: 'businessPhone', + title: '电话' + }, + { + field: 'orderCode', + title: '合同编号' + }, + { + field: 'currencyType', + title: '币种' + }, + { + field: 'shipmentAmount', + title: '出货金额' + }, + { + field: 'actualPurchaseAmount', + title: '实际进货金额' + }, + { + field: 'orderEndTime', + title: '执行单有效截止时间' + }, + { + field: 'deliveryTime', + title: '要求到货时间' + }, + { + field: 'companyDelivery', + title: '公司直发' + }, + { + field: 'notifier', + title: '通知人' + }, + { + field: 'notifierEmail', + title: '通知人邮箱' + }, + { + field: 'notifierPhone', + title: '通知人电话' + }, + { + field: 'duty', + title: '责任人' + }, + { + field: 'dutyEmail', + title: '责任人邮箱' + }, + { + field: 'dutyPhone', + title: '责任人电话' + }, + { + field: 'orderChannel', + title: '下单通路' + }, + { + field: 'partnerCode', + title: '进货商' + }, + { + field: 'supplier', + title: '供货商' + }, + { + field: 'remark', + title: '其它特别说明' + }, + { + field: 'orderStatus', + 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> \ No newline at end of file diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java new file mode 100644 index 00000000..49896873 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/controller/ProjectOrderInfoController.java @@ -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.ProjectOrderInfo; +import com.ruoyi.sip.service.IProjectOrderInfoService; +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-30 + */ +@Controller +@RequestMapping("/project/order") +public class ProjectOrderInfoController extends BaseController +{ + private String prefix = "project/order"; + + @Autowired + private IProjectOrderInfoService projectOrderInfoService; + + @RequiresPermissions("project:order:view") + @GetMapping() + public String order() + { + return prefix + "/order"; + } + + /** + * 查询订单管理列表 + */ + @RequiresPermissions("project:order:list") + @PostMapping("/list") + @ResponseBody + public TableDataInfo list(ProjectOrderInfo projectOrderInfo) + { + startPage(); + List<ProjectOrderInfo> list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); + return getDataTable(list); + } + + /** + * 导出订单管理列表 + */ + @RequiresPermissions("project:order:export") + @Log(title = "订单管理", businessType = BusinessType.EXPORT) + @PostMapping("/export") + @ResponseBody + public AjaxResult export(ProjectOrderInfo projectOrderInfo) + { + List<ProjectOrderInfo> list = projectOrderInfoService.selectProjectOrderInfoList(projectOrderInfo); + ExcelUtil<ProjectOrderInfo> util = new ExcelUtil<ProjectOrderInfo>(ProjectOrderInfo.class); + return util.exportExcel(list, "订单管理数据"); + } + + /** + * 新增订单管理 + */ + @RequiresPermissions("project:order:add") + @GetMapping("/add") + public String add() + { + return prefix + "/add"; + } + + /** + * 新增保存订单管理 + */ + @RequiresPermissions("project:order:add") + @Log(title = "订单管理", businessType = BusinessType.INSERT) + @PostMapping("/add") + @ResponseBody + public AjaxResult addSave(ProjectOrderInfo projectOrderInfo) + { + return toAjax(projectOrderInfoService.insertProjectOrderInfo(projectOrderInfo)); + } + + /** + * 修改订单管理 + */ + @RequiresPermissions("project:order:edit") + @GetMapping("/edit/{id}") + public String edit(@PathVariable("id") Long id, ModelMap mmap) + { + ProjectOrderInfo projectOrderInfo = projectOrderInfoService.selectProjectOrderInfoById(id); + mmap.put("projectOrderInfo", projectOrderInfo); + return prefix + "/edit"; + } + + /** + * 修改保存订单管理 + */ + @RequiresPermissions("project:order:edit") + @Log(title = "订单管理", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + @ResponseBody + public AjaxResult editSave(ProjectOrderInfo projectOrderInfo) + { + return toAjax(projectOrderInfoService.updateProjectOrderInfo(projectOrderInfo)); + } + + /** + * 删除订单管理 + */ + @RequiresPermissions("project:order:remove") + @Log(title = "订单管理", businessType = BusinessType.DELETE) + @PostMapping( "/remove") + @ResponseBody + public AjaxResult remove(String ids) + { + return toAjax(projectOrderInfoService.deleteProjectOrderInfoByIds(ids)); + } +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java index c382a653..61a7cd95 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectInfo.java @@ -87,11 +87,17 @@ public class ProjectInfo extends BaseEntity @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @Excel(name = "预计下单时间", width = 30, dateFormat = "yyyy-MM-dd") private Date estimatedOrderTime; + private Date estimatedOrderTimeStart; + private Date estimatedOrderTimeEnd; /** 预计发货时间 */ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @Excel(name = "预计发货时间", width = 30, dateFormat = "yyyy-MM-dd") private Date estimatedDeliverTime; + private Date estimatedDeliverTimeStart; + private Date estimatedDeliverTimeEnd; + private Date updateTimeStart; + private Date updateTimeEnd; /** 竞争对手 */ @Excel(name = "竞争对手") @@ -113,6 +119,7 @@ public class ProjectInfo extends BaseEntity @Excel(name = "项目描述") private String projectDesc; private Boolean highlight; + private Boolean canGenerate; /** 软件项目产品信息 */ private List<ProjectProductInfo> softwareProjectProductInfoList; /** 硬件项目产品信息 */ diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java new file mode 100644 index 00000000..69eeb2e0 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/domain/ProjectOrderInfo.java @@ -0,0 +1,170 @@ +package com.ruoyi.sip.domain; + +import java.math.BigDecimal; +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_order_info + * + * @author ruoyi + * @date 2025-05-30 + */ +@Data +public class ProjectOrderInfo extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * + */ + private Long id; + + /** + * 项目主键 + */ + + private Long projectId; + private String projectCode; + private String projectName; + private String customerName; + private String industryType; + private String province; + + /** + * 地市 + */ + @Excel(name = "地市") + private String city; + + /** + * 进货商商务接口人姓名 + */ + @Excel(name = "进货商商务接口人姓名") + private String businessPerson; + + /** + * 邮箱 + */ + @Excel(name = "邮箱") + private String businessEmail; + + /** + * 电话 + */ + @Excel(name = "电话") + private String businessPhone; + + /** + * 合同编号 + */ + @Excel(name = "合同编号") + private String orderCode; + + /** + * 币种 + */ + @Excel(name = "币种") + private String currencyType; + + /** + * 出货金额 + */ + @Excel(name = "出货金额") + private BigDecimal shipmentAmount; + + /** + * 实际进货金额 + */ + @Excel(name = "实际进货金额") + private BigDecimal actualPurchaseAmount; + + /** + * 执行单有效截止时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "执行单有效截止时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date orderEndTime; + + /** + * 要求到货时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @Excel(name = "要求到货时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date deliveryTime; + + /** + * 公司直发 + */ + @Excel(name = "公司直发") + private String companyDelivery; + + /** + * 通知人 + */ + @Excel(name = "通知人") + private String notifier; + + /** + * 通知人邮箱 + */ + @Excel(name = "通知人邮箱") + private String notifierEmail; + + /** + * 通知人电话 + */ + @Excel(name = "通知人电话") + private String notifierPhone; + + /** + * 责任人 + */ + @Excel(name = "责任人") + private String duty; + + /** + * 责任人邮箱 + */ + @Excel(name = "责任人邮箱") + private String dutyEmail; + + /** + * 责任人电话 + */ + @Excel(name = "责任人电话") + private String dutyPhone; + + /** + * 下单通路 + */ + @Excel(name = "下单通路") + private String orderChannel; + + /** + * 进货商 + */ + @Excel(name = "进货商") + private String partnerCode; + private String partnerName; + private String level; + + + /** + * 供货商 + */ + @Excel(name = "供货商") + private String supplier; + + /** + * 订单状态 + */ + @Excel(name = "订单状态") + private String orderStatus; + +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java new file mode 100644 index 00000000..3d3d7137 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/mapper/ProjectOrderInfoMapper.java @@ -0,0 +1,63 @@ +package com.ruoyi.sip.mapper; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOrderInfo; + +/** + * 订单管理Mapper接口 + * + * @author ruoyi + * @date 2025-05-30 + */ +public interface ProjectOrderInfoMapper +{ + /** + * 查询订单管理 + * + * @param id 订单管理主键 + * @return 订单管理 + */ + public ProjectOrderInfo selectProjectOrderInfoById(Long id); + + /** + * 查询订单管理列表 + * + * @param projectOrderInfo 订单管理 + * @return 订单管理集合 + */ + public List<ProjectOrderInfo> selectProjectOrderInfoList(ProjectOrderInfo projectOrderInfo); + + /** + * 新增订单管理 + * + * @param projectOrderInfo 订单管理 + * @return 结果 + */ + public int insertProjectOrderInfo(ProjectOrderInfo projectOrderInfo); + + /** + * 修改订单管理 + * + * @param projectOrderInfo 订单管理 + * @return 结果 + */ + public int updateProjectOrderInfo(ProjectOrderInfo projectOrderInfo); + + /** + * 删除订单管理 + * + * @param id 订单管理主键 + * @return 结果 + */ + public int deleteProjectOrderInfoById(Long id); + + /** + * 批量删除订单管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteProjectOrderInfoByIds(String[] ids); + + List<ProjectOrderInfo> selectProjectOrderInfoByProjectId(List<Long> projectId); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderInfoService.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderInfoService.java new file mode 100644 index 00000000..3eba2b26 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/IProjectOrderInfoService.java @@ -0,0 +1,71 @@ +package com.ruoyi.sip.service; + +import java.util.List; +import com.ruoyi.sip.domain.ProjectOrderInfo; + +/** + * 订单管理Service接口 + * + * @author ruoyi + * @date 2025-05-30 + */ +public interface IProjectOrderInfoService +{ + /** + * 查询订单管理 + * + * @param id 订单管理主键 + * @return 订单管理 + */ + public ProjectOrderInfo selectProjectOrderInfoById(Long id); + + /** + * 查询订单管理列表 + * + * @param projectOrderInfo 订单管理 + * @return 订单管理集合 + */ + public List<ProjectOrderInfo> selectProjectOrderInfoList(ProjectOrderInfo projectOrderInfo); + + /** + * 新增订单管理 + * + * @param projectOrderInfo 订单管理 + * @return 结果 + */ + public int insertProjectOrderInfo(ProjectOrderInfo projectOrderInfo); + + /** + * 修改订单管理 + * + * @param projectOrderInfo 订单管理 + * @return 结果 + */ + public int updateProjectOrderInfo(ProjectOrderInfo projectOrderInfo); + + /** + * 批量删除订单管理 + * + * @param ids 需要删除的订单管理主键集合 + * @return 结果 + */ + public int deleteProjectOrderInfoByIds(String ids); + + /** + * 删除订单管理信息 + * + * @param id 订单管理主键 + * @return 结果 + */ + public int deleteProjectOrderInfoById(Long id); + + /** + * 根据projectId查询订单信息 + * @param projectId + * @return java.util.List<com.ruoyi.sip.domain.ProjectOrderInfo> + * @author ch + * @date 2025/05/30 16:13 + */ + + List< ProjectOrderInfo> selectProjectOrderInfoByProjectId(List<Long> projectId); +} diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java index 6321134d..5a700af8 100644 --- a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectInfoServiceImpl.java @@ -3,15 +3,13 @@ package com.ruoyi.sip.service.impl; import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.text.Convert; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.sip.domain.*; import com.ruoyi.sip.mapper.ProjectInfoMapper; -import com.ruoyi.sip.service.IProjectInfoService; -import com.ruoyi.sip.service.IProjectOperateLogService; -import com.ruoyi.sip.service.IProjectProductInfoService; -import com.ruoyi.sip.service.IProjectWorkProgressService; +import com.ruoyi.sip.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +18,7 @@ import java.time.LocalDate; import java.time.Period; import java.time.ZoneId; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -41,6 +40,8 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { @Autowired private IProjectOperateLogService operateLogService; + @Autowired + private IProjectOrderInfoService orderInfoService; private static final String PROJECT_CODE_PREFIX = "V"; private static final Integer PROJECT_CODE_LENGTH = 5; @@ -80,13 +81,17 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { */ @Override public List<ProjectInfo> selectProjectInfoList(ProjectInfo projectInfo) { - //todo 生成订单按钮置灰查询 List<ProjectInfo> projectInfos = projectInfoMapper.selectProjectInfoList(projectInfo); + + List<Long> idList = projectInfos.stream().map(ProjectInfo::getId).collect(Collectors.toList()); + List<ProjectOrderInfo> projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(idList); + Map<Long, ProjectOrderInfo> orderInfoMap = projectOrderInfos.stream().collect(Collectors.toMap(ProjectOrderInfo::getProjectId, Function.identity(), (v1, v2) -> v1)); LocalDate now = LocalDate.now(); for (ProjectInfo info : projectInfos) { LocalDate localDate = info.getUpdateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); Period between = Period.between(localDate, now); info.setHighlight(between.getMonths() >= 2); + info.setCanGenerate(orderInfoMap.get(info.getId()) == null); } return projectInfos; } @@ -161,7 +166,11 @@ public class ProjectInfoServiceImpl implements IProjectInfoService { ProjectInfo oldProjectInfo = this.selectProjectInfoById(projectInfo.getId()); //变更属地校验 if (!projectInfo.getProvince().equals(oldProjectInfo.getProvince())) { - //todo 查询订单信息 如果有抛出异常 + //查询订单信息 如果有抛出异常 + List<ProjectOrderInfo> projectOrderInfos = orderInfoService.selectProjectOrderInfoByProjectId(Collections.singletonList(projectInfo.getId())); + if (CollUtil.isNotEmpty(projectOrderInfos)) { + throw new ServiceException("该项目存在订单流转,无法更改属地"); + } //如果没有 变更编码 是否考虑高并发加锁 setProjectCode(projectInfo); } diff --git a/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java new file mode 100644 index 00000000..1e7afe82 --- /dev/null +++ b/ruoyi-sip/src/main/java/com/ruoyi/sip/service/impl/ProjectOrderInfoServiceImpl.java @@ -0,0 +1,101 @@ +package com.ruoyi.sip.service.impl; + +import java.util.Collections; +import java.util.List; + +import cn.hutool.core.collection.CollUtil; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.sip.mapper.ProjectOrderInfoMapper; +import com.ruoyi.sip.domain.ProjectOrderInfo; +import com.ruoyi.sip.service.IProjectOrderInfoService; +import com.ruoyi.common.core.text.Convert; + +/** + * 订单管理Service业务层处理 + * + * @author ruoyi + * @date 2025-05-30 + */ +@Service +public class ProjectOrderInfoServiceImpl implements IProjectOrderInfoService { + @Autowired + private ProjectOrderInfoMapper projectOrderInfoMapper; + + /** + * 查询订单管理 + * + * @param id 订单管理主键 + * @return 订单管理 + */ + @Override + public ProjectOrderInfo selectProjectOrderInfoById(Long id) { + return projectOrderInfoMapper.selectProjectOrderInfoById(id); + } + + /** + * 查询订单管理列表 + * + * @param projectOrderInfo 订单管理 + * @return 订单管理 + */ + @Override + public List<ProjectOrderInfo> selectProjectOrderInfoList(ProjectOrderInfo projectOrderInfo) { + return projectOrderInfoMapper.selectProjectOrderInfoList(projectOrderInfo); + } + + /** + * 新增订单管理 + * + * @param projectOrderInfo 订单管理 + * @return 结果 + */ + @Override + public int insertProjectOrderInfo(ProjectOrderInfo projectOrderInfo) { + projectOrderInfo.setCreateTime(DateUtils.getNowDate()); + return projectOrderInfoMapper.insertProjectOrderInfo(projectOrderInfo); + } + + /** + * 修改订单管理 + * + * @param projectOrderInfo 订单管理 + * @return 结果 + */ + @Override + public int updateProjectOrderInfo(ProjectOrderInfo projectOrderInfo) { + projectOrderInfo.setUpdateTime(DateUtils.getNowDate()); + return projectOrderInfoMapper.updateProjectOrderInfo(projectOrderInfo); + } + + /** + * 批量删除订单管理 + * + * @param ids 需要删除的订单管理主键 + * @return 结果 + */ + @Override + public int deleteProjectOrderInfoByIds(String ids) { + return projectOrderInfoMapper.deleteProjectOrderInfoByIds(Convert.toStrArray(ids)); + } + + /** + * 删除订单管理信息 + * + * @param id 订单管理主键 + * @return 结果 + */ + @Override + public int deleteProjectOrderInfoById(Long id) { + return projectOrderInfoMapper.deleteProjectOrderInfoById(id); + } + + @Override + public List<ProjectOrderInfo> selectProjectOrderInfoByProjectId(List<Long> projectId) { + if (CollUtil.isNotEmpty(projectId)) { + return Collections.emptyList(); + } + return projectOrderInfoMapper.selectProjectOrderInfoByProjectId(projectId); + } +} diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml index 7103415a..dda78f1a 100644 --- a/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectInfoMapper.xml @@ -58,7 +58,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <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="estimatedOrderTimeStart != null or estimatedOrderTimeEnd != null"> + <choose> + <when test="estimatedOrderTimeStart != null"> + and estimated_order_time <![CDATA[ >= ]]> #{estimatedOrderTimeStart} + </when> + <when test="estimatedOrderTimeEnd != null"> + and estimated_order_time <![CDATA[ <= ]]> #{estimatedOrderTimeEnd} + </when> + <otherwise> + and estimated_order_time between #{estimatedOrderTimeStart} and #{estimatedOrderTimeEnd} + </otherwise> + </choose> + </if> <if test="estimatedDeliverTime != null "> and estimated_deliver_time = #{estimatedDeliverTime}</if> + <if test="estimatedDeliverTimeStart != null or estimatedDeliverTimeEnd != null"> + <choose> + <when test="estimatedDeliverTimeStart != null"> + and estimated_deliver_time <![CDATA[ >= ]]> #{estimatedDeliverTimeStart} + </when> + <when test="estimatedDeliverTimeEnd != null"> + and estimated_deliver_time <![CDATA[ <= ]]> #{estimatedDeliverTimeEnd} + </when> + <otherwise> + and estimated_deliver_time between #{estimatedDeliverTimeStart} and #{estimatedDeliverTimeEnd} + </otherwise> + </choose> + + </if> + <if test="updateTimeStart != null or updateTimeEnd != null"> + <choose> + <when test="updateTimeStart != null"> + and update_time <![CDATA[ >= ]]> #{updateTimeStart} + </when> + <when test="updateTimeEnd != null"> + and update_time <![CDATA[ <= ]]> #{updateTimeEnd} + </when> + <otherwise> + and update_time between #{updateTimeStart} and #{updateTimeEnd} + </otherwise> + </choose> + + </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> diff --git a/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml new file mode 100644 index 00000000..acb155c4 --- /dev/null +++ b/ruoyi-sip/src/main/resources/mapper/sip/ProjectOrderInfoMapper.xml @@ -0,0 +1,204 @@ +<?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.ProjectOrderInfoMapper"> + + <resultMap type="ProjectOrderInfo" id="ProjectOrderInfoResult"> + <result property="id" column="id" /> + <result property="projectId" column="project_id" /> + <result property="city" column="city" /> + <result property="businessPerson" column="business_person" /> + <result property="businessEmail" column="business_email" /> + <result property="businessPhone" column="business_phone" /> + <result property="orderCode" column="order_code" /> + <result property="currencyType" column="currencyType" /> + <result property="shipmentAmount" column="shipment_amount" /> + <result property="actualPurchaseAmount" column="actual_purchase_amount" /> + <result property="orderEndTime" column="order_end_time" /> + <result property="deliveryTime" column="delivery_time" /> + <result property="companyDelivery" column="company_delivery" /> + <result property="notifier" column="notifier" /> + <result property="notifierEmail" column="notifier_email" /> + <result property="notifierPhone" column="notifier_phone" /> + <result property="duty" column="duty" /> + <result property="dutyEmail" column="duty_email" /> + <result property="dutyPhone" column="duty_phone" /> + <result property="orderChannel" column="order_channel" /> + <result property="partnerCode" column="partner_code" /> + <result property="supplier" column="supplier" /> + <result property="remark" column="remark" /> + <result property="orderStatus" column="order_status" /> + <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="selectProjectOrderInfoVo"> + select id, project_id, city, business_person, business_email, business_phone, order_code, currencyType, + shipment_amount, actual_purchase_amount, order_end_time, delivery_time, company_delivery, notifier, + notifier_email, notifier_phone, duty, duty_email, duty_phone, order_channel, partner_code, supplier, + remark, order_status, create_by, create_time, update_by, update_time from project_order_info t1 + </sql> + <sql id="selectProjectOrderInfoRelationVo"> + select t1.id, t1.project_id, t1.city, t1.business_person, t1.business_email, t1.business_phone, t1.order_code, t1.currencyType, + t1.shipment_amount, t1.actual_purchase_amount, t1.order_end_time, t1.delivery_time, t1.company_delivery, t1.notifier, + t1.notifier_email, t1.notifier_phone, t1.duty, t1.duty_email, t1.duty_phone, t1.order_channel, t1.partner_code, t1.supplier, + t1.remark, t1.order_status, t1.create_by, t1.create_time, t1.update_by, t1.update_time + ,t2.project_code,t2.project_name,t2.province,t2.customer_name,t2.industry_type + ,t3.partner_name,t3.level + from project_order_info t1 + left join project_info t2 on t1.project_id = t2.id + left join partner_info t3 on t1.partner_code=t3.partner_code + </sql> + + <select id="selectProjectOrderInfoList" parameterType="ProjectOrderInfo" resultMap="ProjectOrderInfoResult"> + <include refid="selectProjectOrderInfoRelationVo"/> + <where> + <if test="projectId != null "> and t1.project_id = #{projectId}</if> + <if test="city != null and city != ''"> and t1.city = #{city}</if> + <if test="businessPerson != null and businessPerson != ''"> and t1.business_person = #{businessPerson}</if> + <if test="businessEmail != null and businessEmail != ''"> and t1.business_email = #{businessEmail}</if> + <if test="businessPhone != null and businessPhone != ''"> and t1.business_phone = #{businessPhone}</if> + <if test="orderCode != null and orderCode != ''"> and t1.order_code = #{orderCode}</if> + <if test="currencyType != null and currencyType != ''"> and t1.currencyType = #{currencyType}</if> + <if test="shipmentAmount != null "> and t1.shipment_amount = #{shipmentAmount}</if> + <if test="actualPurchaseAmount != null "> and t1.actual_purchase_amount = #{actualPurchaseAmount}</if> + <if test="orderEndTime != null "> and t1.order_end_time = #{orderEndTime}</if> + <if test="deliveryTime != null "> and t1.delivery_time = #{deliveryTime}</if> + <if test="companyDelivery != null and companyDelivery != ''"> and t1.company_delivery = #{companyDelivery}</if> + <if test="notifier != null and notifier != ''"> and t1.notifier = #{notifier}</if> + <if test="notifierEmail != null and notifierEmail != ''"> and t1.notifier_email = #{notifierEmail}</if> + <if test="notifierPhone != null and notifierPhone != ''"> and t1.notifier_phone = #{notifierPhone}</if> + <if test="duty != null and duty != ''"> and t1.duty = #{duty}</if> + <if test="dutyEmail != null and dutyEmail != ''"> and t1.duty_email = #{dutyEmail}</if> + <if test="dutyPhone != null and dutyPhone != ''"> and t1.duty_phone = #{dutyPhone}</if> + <if test="orderChannel != null and orderChannel != ''"> and t1.order_channel = #{orderChannel}</if> + <if test="partnerCode != null and partnerCode != ''"> and t1.partner_code = #{partnerCode}</if> + <if test="supplier != null and supplier != ''"> and t1.supplier = #{supplier}</if> + <if test="orderStatus != null and orderStatus != ''"> and t1.order_status = #{orderStatus}</if> + </where> + </select> + + <select id="selectProjectOrderInfoById" parameterType="Long" resultMap="ProjectOrderInfoResult"> + <include refid="selectProjectOrderInfoRelationVo"/> + where t1.id = #{id} + </select> + <select id="selectProjectOrderInfoByProjectId" resultType="com.ruoyi.sip.domain.ProjectOrderInfo"> + <include refid="selectProjectOrderInfoVo"/> + where t1.project_id in ( + <foreach item="item" collection="list" separator=","> + #{item} + </foreach> + ) + </select> + + <insert id="insertProjectOrderInfo" parameterType="ProjectOrderInfo" useGeneratedKeys="true" keyProperty="id"> + insert into project_order_info + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="projectId != null">project_id,</if> + <if test="city != null">city,</if> + <if test="businessPerson != null">business_person,</if> + <if test="businessEmail != null">business_email,</if> + <if test="businessPhone != null">business_phone,</if> + <if test="orderCode != null">order_code,</if> + <if test="currencyType != null">currencyType,</if> + <if test="shipmentAmount != null">shipment_amount,</if> + <if test="actualPurchaseAmount != null">actual_purchase_amount,</if> + <if test="orderEndTime != null">order_end_time,</if> + <if test="deliveryTime != null">delivery_time,</if> + <if test="companyDelivery != null">company_delivery,</if> + <if test="notifier != null">notifier,</if> + <if test="notifierEmail != null">notifier_email,</if> + <if test="notifierPhone != null">notifier_phone,</if> + <if test="duty != null">duty,</if> + <if test="dutyEmail != null">duty_email,</if> + <if test="dutyPhone != null">duty_phone,</if> + <if test="orderChannel != null">order_channel,</if> + <if test="partnerCode != null">partner_code,</if> + <if test="supplier != null">supplier,</if> + <if test="remark != null">remark,</if> + <if test="orderStatus != null">order_status,</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="projectId != null">#{projectId},</if> + <if test="city != null">#{city},</if> + <if test="businessPerson != null">#{businessPerson},</if> + <if test="businessEmail != null">#{businessEmail},</if> + <if test="businessPhone != null">#{businessPhone},</if> + <if test="orderCode != null">#{orderCode},</if> + <if test="currencyType != null">#{currencyType},</if> + <if test="shipmentAmount != null">#{shipmentAmount},</if> + <if test="actualPurchaseAmount != null">#{actualPurchaseAmount},</if> + <if test="orderEndTime != null">#{orderEndTime},</if> + <if test="deliveryTime != null">#{deliveryTime},</if> + <if test="companyDelivery != null">#{companyDelivery},</if> + <if test="notifier != null">#{notifier},</if> + <if test="notifierEmail != null">#{notifierEmail},</if> + <if test="notifierPhone != null">#{notifierPhone},</if> + <if test="duty != null">#{duty},</if> + <if test="dutyEmail != null">#{dutyEmail},</if> + <if test="dutyPhone != null">#{dutyPhone},</if> + <if test="orderChannel != null">#{orderChannel},</if> + <if test="partnerCode != null">#{partnerCode},</if> + <if test="supplier != null">#{supplier},</if> + <if test="remark != null">#{remark},</if> + <if test="orderStatus != null">#{orderStatus},</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="updateProjectOrderInfo" parameterType="ProjectOrderInfo"> + update project_order_info + <trim prefix="SET" suffixOverrides=","> + <if test="projectId != null">project_id = #{projectId},</if> + <if test="city != null">city = #{city},</if> + <if test="businessPerson != null">business_person = #{businessPerson},</if> + <if test="businessEmail != null">business_email = #{businessEmail},</if> + <if test="businessPhone != null">business_phone = #{businessPhone},</if> + <if test="orderCode != null">order_code = #{orderCode},</if> + <if test="currencyType != null">currencyType = #{currencyType},</if> + <if test="shipmentAmount != null">shipment_amount = #{shipmentAmount},</if> + <if test="actualPurchaseAmount != null">actual_purchase_amount = #{actualPurchaseAmount},</if> + <if test="orderEndTime != null">order_end_time = #{orderEndTime},</if> + <if test="deliveryTime != null">delivery_time = #{deliveryTime},</if> + <if test="companyDelivery != null">company_delivery = #{companyDelivery},</if> + <if test="notifier != null">notifier = #{notifier},</if> + <if test="notifierEmail != null">notifier_email = #{notifierEmail},</if> + <if test="notifierPhone != null">notifier_phone = #{notifierPhone},</if> + <if test="duty != null">duty = #{duty},</if> + <if test="dutyEmail != null">duty_email = #{dutyEmail},</if> + <if test="dutyPhone != null">duty_phone = #{dutyPhone},</if> + <if test="orderChannel != null">order_channel = #{orderChannel},</if> + <if test="partnerCode != null">partner_code = #{partnerCode},</if> + <if test="supplier != null">supplier = #{supplier},</if> + <if test="remark != null">remark = #{remark},</if> + <if test="orderStatus != null">order_status = #{orderStatus},</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="deleteProjectOrderInfoById" parameterType="Long"> + delete from project_order_info where id = #{id} + </delete> + + <delete id="deleteProjectOrderInfoByIds" parameterType="String"> + delete from project_order_info where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + </delete> + +</mapper> \ No newline at end of file