Bläddra i källkod

Merge branch 'dev' of http://47.101.143.145:8090/77975466/pco into dev

# Conflicts:
#	sp-admin/sa-view/tb-item/tb-item-list.html
#	sp-admin/sa-view/tb-partner/tb-business-item-list.html
#	sp-server/app.pid
#	sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java
qzyReal 3 år sedan
förälder
incheckning
cf0376abb9

+ 179 - 37
sp-admin/sa-view/tb-business/print.html

@@ -1,21 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-    <title>打印申请单</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    <title>打印单</title>
     <style type="text/css">
-        body {
-            left: 0px;
-            top: 0px;
-            right: 0px;
-            bottom: 0px;
-            margin: 0px;
-            font-family: Arial, Helvetica, sans-serif;
-            font-size: 12px;
-            overflow: hidden;
-            white-space: nowrap;
-        }
+        body{left:0px;top:0px;right:0px;bottom:0px;margin:0px;font-family: Arial, Helvetica, sans-serif;font-size: 12px;overflow: hidden;white-space: nowrap;}
 
 
     </style>
@@ -28,28 +17,60 @@
 
 <div>
 
-    <input type="button" style="height: 30;" id="print_button" value="打印"/>
+    <input type="button" style="height: 30;" id="print_button" value="打印" />
 
     <fieldset align="">
         <legend>打印区</legend>
         <div id="myPrintArea" style="height: 1500;">
             <div align="center">
-                <SPAN style="TEXT-DECORATION: underline;font-size:25px">进口食品冷链申报信息表</SPAN>
+                <SPAN style="TEXT-DECORATION: underline;font-size:25px">收费单据证明</SPAN>
                 <br/><br/>
             </div>
-            <div style="text-align:center; font-size:15px;he">
+            <div align="left">
+                单号: <span id="no"></span>
+            </div>
+            <div style="text-align:center; font-size:15px;">
                 <table width="100%" style="border-collapse:collapse;border:none;">
-					
-
+                    <tr height="40">
+                        <td style="border:solid #000 1px; width: 20%;">越南车牌</td>
+                        <td style="border:solid #000 1px;" colspan="2"><div id="cardNo"></div></td>
+                        <td style="border:solid #000 1px; width: 20%;" rowspan="2">支付时间</td>
+                        <td style="border:solid #000 1px;" rowspan="2"><div id="payTime"></div></td>
+                    </tr>
+                    <tr height="40">
+                        <td style="border:solid #000 1px; width: 20%;">中国车牌</td>
+                        <td style="border:solid #000 1px;" colspan="2"><div id="chinaCarNo"></div></td>
+                    </tr>
+                    <tr height="40">
+                        <td style="border:solid #000 1px; width: 20%;">总金额大写(元)</td>
+                        <td style="border:solid #000 1px;" colspan="2"><div id="chinessMoney"></div></td>
+                        <td style="border:solid #000 1px; width: 20%;">总金额小写(元)</td>
+                        <td style="border:solid #000 1px;"><div id="totalMoney"></div></td>
+                    </tr>
                 </table>
-
-
-            </div>
-            <div align="right">
                 <br/><br/>
-                <SPAN style=";font-size:15px">      &nbsp&nbsp&nbsp&nbsp  年  &nbsp&nbsp&nbsp&nbsp 月   &nbsp&nbsp&nbsp&nbsp 日</SPAN>
+                <table width="100%" style="border-collapse:collapse;border:none;">
+                    <tr height="40">
+                        <td style="border:solid #000 1px; width: 10%;" >序号</td>
+                        <td style="border:solid #000 1px; width: 20%;" >车牌</td>
+                        <td style="border:solid #000 1px; width: 20%;" >类型</td>
+                        <td style="border:solid #000 1px; width: 30%;" >项目</td>
+                        <td style="border:solid #000 1px; width: 20%;" >金额(元)</td>
+                    <tr>
+                    <tbody id="items"></tbody>
+                </table>
+                <br/>
+                <div align="center">
+                    收费员: <span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp</span>
+                    客户: <span id="customerName"></span>
+                </div>
 
             </div>
+<!--            <div align="right">-->
+<!--                <br/><br/>-->
+<!--                <SPAN style=";font-size:15px">      &nbsp&nbsp&nbsp&nbsp  年  &nbsp&nbsp&nbsp&nbsp 月   &nbsp&nbsp&nbsp&nbsp 日</SPAN>-->
+
+<!--            </div>-->
 
         </div>
     </fieldset>
@@ -57,29 +78,150 @@
 </div>
 
 <script type="text/javascript">
-    $(function () {
-        $("#print_button").click(function () {
+    $(function(){
+        $("#print_button").click(function(){
             $("#myPrintArea").printArea();
         });
-
-        function getUrlParam(name) {
-            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
+        function getUrlParam(name)
+        {
+            var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
             var r = window.location.search.substr(1).match(reg);  //匹配目标参数
-            if (r != null) return unescape(r[2]);
-            return null; //返回参数值
+            if (r!=null) return unescape(r[2]); return null; //返回参数值
         }
-
         var id = getUrlParam('id');
         $.ajax({
-            url: 'http://192.168.3.74:8099/pro/TbDeclare/getById?id=' + id,
-            type: 'post',     // 请求类型,常用的有 GET 和 POST
-            success: function (data) { // 接口调用成功回调函数
-
+            url: 'https://dxkaa1.bgigc.com/pro/TbBusiness/getById?id=' + id,
+            type: 'post',
+            success: function(data) {
+                $("#no").html(data.data.no);
+                $("#payTime").html(data.data.payTime);
+                $("#cardNo").html(data.data.cardNo);
+                $("#chinaCarNo").html(data.data.chinaCarNo);
+                $("#totalMoney").html(data.data.totalMoney);
+                $("#customerName").html(data.data.customerName);
+                var chinessMoney = changeNumMoneyToChinese(data.data.totalMoney);
+                $("#chinessMoney").html(chinessMoney);
+                var itemList = data.data.items;
+                var itemStr = '';
+                $.each(itemList, function(index, item) {
+                    var i = index + 1;
+                    var carNo = data.data.cardNo;
+                    var itemTypeName = item.itemTypeName;
+                    var itemName = item.itemName;
+                    var itemPrice = item.itemPrice;
+                    itemStr += "<tr height=\"40\">"
+                        + "<td style=\"border:solid #000 1px; width: 10%;\">" + i + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 20%;\">" + carNo + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 20%;\">" + itemTypeName + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 30%;\">" + itemName + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 20%;\">" + itemPrice + "</td>"
+                        + "<tr>";
+                })
+                var carList = data.data.cars;
+                $.each(carList, function(index, item) {
+                    var i = index + 1;
+                    var carNo = item.carNo;
+                    var itemTypeName = "停车费";
+                    var itemName = "停车费";
+                    var itemPrice = item.pay == 0 ? item.basePartMoney : item.money;
+                    itemStr += "<tr height=\"40\">"
+                        + "<td style=\"border:solid #000 1px; width: 10%;\">" + i + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 20%;\">" + carNo + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 20%;\">" + itemTypeName + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 30%;\">" + itemName + "</td>"
+                        + "<td style=\"border:solid #000 1px; width: 20%;\">" + itemPrice + "</td>"
+                        + "<tr>";
+                })
+                $('#items').html(itemStr);
                 $("#myPrintArea").printArea();
             }
         });
 
     });
+    function changeNumMoneyToChinese(money)
+    {
+        var cnNums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); //汉字的数字
+        var cnIntRadice = new Array("", "拾", "佰", "仟"); //基本单位
+        var cnIntUnits = new Array("", "万", "亿", "兆"); //对应整数部分扩展单位
+        var cnDecUnits = new Array("角", "分", "毫", "厘"); //对应小数部分单位
+        var cnInteger = "整"; //整数金额时后面跟的字符
+        var cnIntLast = "元"; //整型完以后的单位
+        var maxNum = 999999999999999.9999; //最大处理的数字
+        var IntegerNum; //金额整数部分
+        var DecimalNum; //金额小数部分
+        var ChineseStr = ""; //输出的中文金额字符串
+        var parts; //分离金额后用的数组,预定义
+        var Symbol="";//正负值标记
+        if (money == "") {
+            return "";
+        }
+
+        money = parseFloat(money);
+        if (money >= maxNum) {
+            alert('超出最大处理数字');
+            return "";
+        }
+        if (money == 0) {
+            ChineseStr = cnNums[0] + cnIntLast + cnInteger;
+            return ChineseStr;
+        }
+        if(money<0)
+        {
+            money=-money;
+            Symbol="负 ";
+        }
+        money = money.toString(); //转换为字符串
+        if (money.indexOf(".") == -1) {
+            IntegerNum = money;
+            DecimalNum = '';
+        } else {
+            parts = money.split(".");
+            IntegerNum = parts[0];
+            DecimalNum = parts[1].substr(0, 4);
+        }
+        if (parseInt(IntegerNum, 10) > 0) { //获取整型部分转换
+            var zeroCount = 0;
+            var IntLen = IntegerNum.length;
+            for (var i = 0; i < IntLen; i++) {
+                var n = IntegerNum.substr(i, 1);
+                var p = IntLen - i - 1;
+                var q = p / 4;
+                var m = p % 4;
+                if (n == "0") {
+                    zeroCount++;
+                }
+                else {
+                    if (zeroCount > 0) {
+                        ChineseStr += cnNums[0];
+                    }
+                    zeroCount = 0; //归零
+                    ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
+                }
+                if (m == 0 && zeroCount < 4) {
+                    ChineseStr += cnIntUnits[q];
+                }
+            }
+            ChineseStr += cnIntLast;
+            //整型部分处理完毕
+        }
+        if (DecimalNum != '') { //小数部分
+            var decLen = DecimalNum.length;
+            for (var i = 0; i < decLen; i++) {
+                var n = DecimalNum.substr(i, 1);
+                if (n != '0') {
+                    ChineseStr += cnNums[Number(n)] + cnDecUnits[i];
+                }
+            }
+        }
+        if (ChineseStr == '') {
+            ChineseStr += cnNums[0] + cnIntLast + cnInteger;
+        } else if (DecimalNum == '') {
+            ChineseStr += cnInteger;
+        }
+        ChineseStr = Symbol +ChineseStr;
+
+        return ChineseStr;
+    }
 </script>
 
 

+ 4 - 0
sp-admin/sa-view/tb-business/tb-business-info.html

@@ -141,6 +141,7 @@
 			</div>
 			<!-- ------- 底部按钮 ------- -->
 			<div class="s-foot">
+				<el-button class="c-btn" type="success" icon="el-icon" @click="print()">打印单据</el-button>
 				<el-button type="success" @click="sa.closeCurrIframe()">关闭</el-button>
 			</div>
 
@@ -176,6 +177,9 @@
 					}
 				},
 				methods: {
+					print: function() {
+						sa.showIframe('打印收费单据', 'print.html?id=' + this.id, '1000px', '100%');
+					},
 					uploadFn(data) {
 						Object.assign(this.upload, {
 							visible: true,

+ 1 - 1
sp-admin/sa-view/tb-business/tb-business-list.html

@@ -70,7 +70,7 @@
 								&&s.row.complete==1
 								&&sa.isAuth('tb-business-confirm')
 								&&currentCustomerId!='1'" @click="confirmFn(s.row)">确认账单</el-button>
-							<el-button class="c-btn" type="success" 
+							<el-button class="c-btn" type="success"
 							v-if="sa.isAuth('tb-business-pay')
 								&&s.row.payStatus==1
 								&&s.row.confirmInput==1

+ 38 - 28
sp-admin/sa-view/tb-partner/customer-admin-add.html

@@ -1,12 +1,13 @@
 <!DOCTYPE html>
 <html>
 	<head>
-	    <title>添加管理员</title>
-	    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
+		<title>添加管理员</title>
+		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+		<meta name="viewport"
+			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 		<!-- 所有的 css & js 资源 -->
 		<link rel="stylesheet" href="../../static/kj/element-ui/theme-chalk/index.css">
-		<link rel="stylesheet" href="../../static/sa.css"> 
+		<link rel="stylesheet" href="../../static/sa.css">
 		<script src="../../static/kj/vue.min.js"></script>
 		<script src="../../static/kj/element-ui/index.js"></script>
 		<script src="https://unpkg.com/http-vue-loader@1.4.2/src/httpVueLoader.js"></script>
@@ -29,67 +30,76 @@
 					<sa-item type="text" name="用户名" v-model="m.name" placeholder="请输入用户名" br></sa-item>
 					<sa-item type="password" name="密码" v-model="m.password" placeholder="请输入密码" br></sa-item>
 					<sa-item type="password" name="再输一次" v-model="m.againPassword" placeholder="请再输一次密码" br></sa-item>
+					<div class="c-item">
+						<label class="c-label"><span style="color: red;">*</span>角色:</label>
+						<el-select v-model="m.roleIds" multiple>
+							<el-option label="请选择" :value="0" disabled></el-option>
+							<el-option v-for="role in roleList" :key="role.id" :label="role.name" :value="role.id">
+							</el-option>
+						</el-select>
+					</div>
 					<sa-item name="" br>
 						<el-button type="primary" icon="el-icon-plus" @click="ok()">保存</el-button>
 					</sa-item>
 				</el-form>
 			</div>
 		</div>
-	
-        <script>
-			
+
+		<script>
 			var app = new Vue({
 				components: {
 					"sa-item": httpVueLoader('../../sa-frame/com/sa-item.vue')
 				},
 				el: '.vue-box',
 				data: {
-					sa: sa, 	// 超级对象
+					sa: sa, // 超级对象
 					m: {
 						id: 0,
-						customerId:sa.p('customerId',''),
+						customerId: sa.p('customerId', ''),
 						name: '',
 						avatar: '',
 						password: '',
-						againPassword:'',
+						againPassword: '',
 						roleIds: []
 					},
 					roleList: []
 				},
 				methods: {
 					// 修改
-					ok: function(){
+					ok: function() {
 						console.log(this.m)
 						// 表单校验 
 						let m = this.m;
 						sa.checkNull(m.name, '请输入用户名');
 						sa.checkNull(m.password, '请输入密码');
-						if(m.password!==m.againPassword){
+						if (m.password !== m.againPassword) {
 							sa.error('两次输入密码不一致');
-							return ;
+							return;
 						}
-						m.roleId=3;
+						m.roleId = m.roleIds.join(',')
 						// 添加
-						sa.ajax('/admin/addPartnerAdmin', m, function(res){
-							sa.alert('增加成功', this.clean); 
-						
+						sa.ajax('/admin/addPartnerAdmin', m, function(res) {
+							sa.alert('增加成功', this.clean);
+
 						}.bind(this));
-						
+
 					},
-					clean(){
-						parent.app.f5();		// 刷新父页面列表
-						sa.closeCurrIframe();	// 关闭本页 
+					clean() {
+						parent.app.f5(); // 刷新父页面列表
+						sa.closeCurrIframe(); // 关闭本页 
 					}
 				},
-				mounted: function(){
-					console.log(this.m);
+				mounted: function() {
 					// 加载角色 
-					sa.ajax('/role/getCustomerRoleList',{customerId:this.m.customerId}, function(res){
-						this.roleList = res.data;	// 数据  
-					}.bind(this), {msg: null});
+					sa.ajax('/role/getCustomerRoleList', {
+						customerId: this.m.customerId
+					}, function(res) {
+						this.roleList = res.data; // 数据  
+					}.bind(this), {
+						msg: null
+					});
 				}
 			})
-			
 		</script>
 	</body>
-</html>
+</html>

+ 46 - 2
sp-admin/sa-view/tb-partner/tb-business-item-list.html

@@ -27,7 +27,10 @@
 					</el-button>
 				</el-form>
 				<!-- ------------- 快捷按钮 ------------- -->
-				<sa-item type="fast-btn" show="export"></sa-item>
+				<div class="fast-btn">
+					<el-button type="warning" icon="el-icon-download" @click="exportFn()">导出</el-button>
+					<slot></slot>
+				</div>
 				<!-- ------------- 数据列表 ------------- -->
 				<el-table class="data-table" ref="data-table" :data="dataList">
 					<sa-td name="单号" prop="no" width="160"></sa-td>
@@ -66,6 +69,21 @@
 					<el-button type="primary" @click="sureConfirm">确 定</el-button>
 				</span>
 			</el-dialog>
+			<el-dialog title="提示" :visible.sync="emodel.visible" width="30%">
+				<span>日期范围:</span>
+				<el-form size="mini">
+					<div class="c-item">
+						<el-date-picker size="mini" v-model="dataTime" type="daterange" unlink-panels="false"
+							range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
+							format="yyyy 年 MM 月 dd 日" value-format="yyyy-MM-dd">
+						</el-date-picker>
+					</div>
+				</el-form>
+				<span slot="footer" class="dialog-footer">
+					<el-button @click="emodel.visible = false">取 消</el-button>
+					<el-button type="primary" @click="sureExport">确 定</el-button>
+				</span>
+			</el-dialog>
 		</div>
 		<script>
 			var app = new Vue({
@@ -90,9 +108,35 @@
 						form: {
 							id: ''
 						}
-					}
+					},
+					emodel: {
+						visible: false,
+						form: {
+							beginTime: '',
+							endTime: ''
+						}
+					},
+					dataTime: [],
 				},
 				methods: {
+					exportFn() {
+						Object.assign(this.emodel, {
+							visible: true,
+						})
+					},
+					sureExport() {
+						if (this.dataTime.length != 0) {
+							this.emodel.form.beginTime = this.dataTime[0];
+							this.emodel.form.endTime = this.dataTime[1];
+						} else{
+							sa.msg("请选择日期范围");
+							return;
+						}
+						sa.ajax('/TbBusinessItem/export/items', this.emodel.form,  function(resp) {
+							window.open(resp.data);
+							this.emodel.visible = false;
+						}.bind(this));
+					},
 					confirmFn(data) {
 						Object.assign(this.confirm, {
 							visible: true,

+ 6 - 0
sp-server/pom.xml

@@ -123,6 +123,12 @@
 			<artifactId>jackson-dataformat-xml</artifactId>
 			<version>2.9.7</version>
 		</dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
 	</dependencies>
 
 	<!-- 构建配置 -->

+ 64 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/ExportItemsDTO.java

@@ -0,0 +1,64 @@
+package com.pj.project.tb_business_item;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.Date;
+
+/**
+ * Created with IntelliJ IDEA.
+ * @Auther: lzm*/
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+public class ExportItemsDTO {
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","单号"},index = 0)
+    private String no;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","货物"},index = 1)
+    private String goodsName;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","越南车"},index = 2)
+    private String cardNo;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","中国车"},index = 3)
+    private String chinaCarNo;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","作业公司"},index = 4)
+    private String pickCustomerName;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","项目"},index = 5)
+    private String itemName;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","类型"},index = 6)
+    private String itemTypeName;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","计费标准"},index = 7)
+    private String unit;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","创建时间"},index = 8)
+    private String createTime;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","接单时间"},index = 9)
+    private String pickTime;
+
+    @ColumnWidth(15)
+    @ExcelProperty(value = {"作业订单","确认时间"},index = 10)
+    private String confirmTime;
+
+}

+ 11 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemController.java

@@ -16,6 +16,8 @@ import com.pj.project4sp.SP;
 import com.pj.current.satoken.StpUserUtil;
 import cn.dev33.satoken.annotation.SaCheckPermission;
 
+import javax.servlet.http.HttpServletResponse;
+
 
 /**
  * Controller: tb_business_item -- 业务作业项
@@ -76,6 +78,15 @@ public class TbBusinessItemController {
         return AjaxJson.getPageData(so.getDataCount(), list);
     }
 
+    @RequestMapping("export/items")
+    public AjaxJson exportItems(HttpServletResponse response) throws Exception{
+        SoMap so = SoMap.getRequestSoMap();
+        String beginTime = so.getString("beginTime");
+        String endTime = so.getString("endTime");
+        String result = tbBusinessItemService.exportItems(beginTime, endTime);
+        return AjaxJson.getSuccessData(result);
+    }
+
 
 
 

+ 4 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemMapper.xml

@@ -67,6 +67,10 @@
 			<if test=' this.has("operateTime") '> and a.operate_time = #{operateTime} </if>
 			<if test=' this.has("operaror") '> and a.operaror = #{operaror} </if>
 			<if test=' this.has("typeFlag") '> and a.business_type !='0' </if>
+            <if test=' this.has("beginTime") and this.has("endTime") '>
+                 and date_format(a.create_time,'%Y-%m-%d') >= #{beginTime}
+                 and date_format(a.create_time,'%Y-%m-%d')  &lt;= #{endTime}
+            </if>
 		order by
 		<choose>
 			<when test='sortType == 1'> a.id desc </when>

+ 36 - 0
sp-server/src/main/java/com/pj/project/tb_business_item/TbBusinessItemService.java

@@ -1,10 +1,14 @@
 package com.pj.project.tb_business_item;
 
+import java.io.File;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -16,6 +20,7 @@ import com.pj.project.tb_business.TbBusiness;
 import com.pj.project.tb_business.TbBusinessService;
 import com.pj.project4sp.admin.SpAdmin;
 import com.pj.project4sp.admin.SpAdminService;
+import com.pj.project4sp.uploadfile.UploadUtil;
 import com.pj.utils.so.SoMap;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
@@ -113,4 +118,35 @@ public class TbBusinessItemService extends ServiceImpl<TbBusinessItemMapper, TbB
             wxService.sendTemplateMsg(wxConfig.getBusinessConfirmTemplate(), admin.getOpenid(), msgDataBO, detailUrl);
         });
     }
+
+    public String exportItems(String beginTime, String endTime) {
+        SoMap so = SoMap.getRequestSoMap();
+        so.put("typeFlag",1);
+        so.put("beginTime", beginTime);
+        so.put("endTime", endTime);
+        List<TbBusinessItem> itemList = this.getList(so);
+        List<ExportItemsDTO> itemDTOList = new ArrayList<>();
+        for (TbBusinessItem item : itemList) {
+            ExportItemsDTO itemsDTO = new ExportItemsDTO();
+            BeanUtil.copyProperties(item, itemsDTO,"createTime", "pickTime", "confirmTime");
+            itemsDTO.setUnit(item.getItemPrice() + item.getUnit())
+                .setCreateTime(DateUtil.format(item.getCreateTime(), "yyyy/MM/dd HH:mm:ss"))
+                .setPickTime(DateUtil.format(item.getPickTime(), "yyyy/MM/dd HH:mm:ss"))
+                .setConfirmTime(DateUtil.format(item.getConfirmTime(), "yyyy/MM/dd HH:mm:ss"));
+            itemDTOList.add(itemsDTO);
+        }
+        String separator = File.separator;
+        String today = DateUtil.today();
+        String rootPath = UploadUtil.uploadConfig.rootFolder + separator + UploadUtil.uploadConfig.httpPrefix;
+        String prefix = myConfig.getDomain() + UploadUtil.uploadConfig.httpPrefix;
+        String extPath = "businessItem" + separator + today + separator;
+        String fileName = "items_" + beginTime + "--" + endTime + ".xlsx";
+        String savePath = rootPath + separator + extPath;
+        File saveFIle = new File(savePath);
+        if (!saveFIle.exists()) {
+            saveFIle.mkdirs();
+        }
+        EasyExcel.write(savePath+fileName, ExportItemsDTO.class).sheet("作业订单").doWrite(itemDTOList);
+        return prefix + "/businessItem/" + today + "/items_" + beginTime + "--" + endTime + ".xlsx";
+    }
 }

+ 9 - 0
sp-server/src/main/java/com/pj/project/tb_fee_statistics/TbFeeStatistics.java

@@ -121,6 +121,15 @@ public class TbFeeStatistics implements Serializable {
         private String desc;
     }
 
+    @Getter
+    @AllArgsConstructor
+    public static enum taxRate{
+        PARK(0.09, "停车费税率"),
+        BUSINESS(0.06, "业务费税率");
+        private Double value;
+        private String desc;
+    }
+
 
 
 

+ 1 - 1
sp-server/src/main/java/com/pj/project/tb_fee_statistics/TbFeeStatisticsService.java

@@ -153,7 +153,7 @@ public class TbFeeStatisticsService extends ServiceImpl<TbFeeStatisticsMapper, T
             TbFeeStatistics businessFee = this.getByDayAndFeeType(toDay, feeType);
             if (businessFee == null) {
                 businessFee = new TbFeeStatistics();
-                businessFee.setTaxRate(new BigDecimal(0.06));
+                businessFee.setTaxRate(new BigDecimal(TbFeeStatistics.taxRate.BUSINESS.getValue()));
             }
             businessFee.setTaxMoney(businessFee.getTaxMoney().add(item.getItemPrice()));
             businessFee.setNum(businessFee.getNum() + 1);