导出报表完善,页面增加序号。

master
yangwl 4 years ago
parent c8acd6d009
commit f6c260ae58

@ -0,0 +1,66 @@
package com.ruoyi.web.controller.common;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class DemoData {
private String BarCode;
private Map<String, List<Map<String,String>>> map;
private String date;
public void setDate(String date) {
this.date = date;
}
public String getBarCode() {
return BarCode;
}
public void setBarCode(String barCode) {
BarCode = barCode;
}
public Map<String, List<Map<String,String>>> getMap() {
return map;
}
public void setMap(Map<String, List<Map<String,String>>> map) {
this.map = map;
}
public DemoData(String barCode) {
BarCode = barCode;
}
public String getDate() {
return date;
}
public DemoData() {
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
DemoData demoData = (DemoData) o;
return Objects.equals(BarCode, demoData.BarCode);
}
@Override
public int hashCode() {
return Objects.hash(BarCode);
}
@Override
public String toString() {
return "DemoData{" +
BarCode + '\'' +
", map=" + map +
'}';
}
}

@ -1,11 +1,23 @@
package com.ruoyi.web.controller.nanjing;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mysql.cj.xdevapi.JsonArray;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.nanjing.domain.Demo;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.nanjing.domain.ReportData;
import com.ruoyi.nanjing.domain.TBdProductinfo;
import com.ruoyi.nanjing.service.ITBdProducttypeService;
import com.ruoyi.web.controller.common.DemoData;
import org.apache.catalina.User;
import org.apache.poi.ss.formula.functions.T;
import org.apache.poi.xssf.usermodel.*;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -15,6 +27,12 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@ -25,24 +43,64 @@ public class ReportDataController extends BaseController {
private String prefix = "nanjing/Report";
@Autowired
private ITBdProducttypeService producttypeService;
@RequiresPermissions("nanjing:report:view")
@GetMapping()
public String reportData(ModelMap map)
{
public String reportData(ModelMap map) {
return prefix + "/Report";
// return "redirect:"+"http://127.0.0.1:18080/RDP-SERVER/rdppage/main/d354a3beb6dae7938155b3f9a962e479";
}
@PostMapping("/report")
@ResponseBody
public String reportData(String begin,String end,String barcode)
{
public TableDataInfo reportData(String begin, String end, String barcode) {
Map map = new HashMap<String, Object>();
map.put("begin", begin);
map.put("end", end);
map.put("barcode", barcode);
List<ReportData> reportDataList = producttypeService.selectReport(map);
// List<DemoData> list = new ArrayList<>();
// for (ReportData data : reportDataList) {
// DemoData demoData = new DemoData(data.getBarcode());
// String datetime= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(data.getBeginTime());
// demoData.setDate(datetime);
// Map<String, String> v_map = new HashMap<>();
// v_map.put(data.getParameaning(), data.getValue());//最后一层添加值
// if (list.contains(demoData)) {
// //包含的情况继续判断Map的key是否存在
// //真实值
// DemoData demoData_r = list.get(list.indexOf(demoData));
// //huoqu
// Map<String, List<Map<String, String>>> map1 = demoData_r.getMap();
// if (map1 == null) map1 = new HashMap<>();
// //包不包含都要添加主要是看v的创建方式
//
// List<Map<String, String>> strings;
// if (map1.containsKey(data.getStationName())) {
// //包含压装工位的情况就用v的集合添加
// strings = map1.get(data.getStationName());
//
// } else {
// strings = new ArrayList<>();
//
// }
// strings.add(v_map);
// map1.put(data.getStationName(), strings);
//
// } else {
// Map<String, List<Map<String,String>>> map1 = new HashMap<>();
// List<Map<String,String>> list1 = new ArrayList<>();
// list1.add(v_map);
// map1.put(data.getStationName(), list1);
// demoData.setMap(map1);
// list.add(demoData);
//
// }
// }
// JSONObject jsonObject=new JSONObject();
// System.out.println(jsonObject.toJSONString(list));
List<String> paraName = new ArrayList<>();
List<String> barcodes = new ArrayList<>();
List<String> stations = new ArrayList<>();
@ -53,7 +111,6 @@ public class ReportDataController extends BaseController {
//去重
//条码List
List<String> barcodeList = barcodes.stream().distinct().collect(Collectors.toList());
//参数List
List<String> paraNameList = paraName.stream().distinct().collect(Collectors.toList());
//工位名集合
@ -63,21 +120,23 @@ public class ReportDataController extends BaseController {
List<Map<String,Object>> list = new ArrayList<>();
//定义结果集map
Map<String,Object> map1 = new HashMap<>();
int number=0;
for(String item:barcodeList){
map1.put("barcode",item);
number=number+1;
map1.put("产品条码",item);
map1.put("序号",number);
for (String station:stationList) {
for(String param:paraNameList){
for (ReportData rpd:reportDataList) {
// if (rpd.getBarcode().equals(item)&&rpd.getStationName().equals(station)){
// map1.put(station,rpd.getStationName());
// }
map1.put("时间",rpd.getBeginTime());
map1.put("状态",rpd.getState());
if (rpd.getBarcode().equals(item)&&rpd.getStationName().equals(station)&&rpd.getParameaning().equals(param)){
if(rpd.getValue()==null){
rpd.setValue("-");
}
map1.put(station,param);
map1.put(param,rpd.getValue());
String paramName = rpd.getStationName()+"-"+rpd.getParameaning();
// map1.put(station,param);
map1.put(paramName,rpd.getValue());
break;
}
}
@ -102,6 +161,120 @@ public class ReportDataController extends BaseController {
String info = JSONArray.toJSONString(list);
// System.out.println(info);
System.out.println("条码信息查询Json格式"+info);
return info;
return getDataTable(list);
}
@PostMapping("/export")
@ResponseBody
public AjaxResult export(String begin, String end, String barcode){
Map map = new HashMap<String, Object>();
map.put("begin", begin);
map.put("end", end);
map.put("barcode", barcode);
AjaxResult ajaxResult=new AjaxResult();
List<ReportData> reportDataList = producttypeService.selectReport(map);
List<String> paraName = new ArrayList<>();
List<String> barcodes = new ArrayList<>();
List<String> stations = new ArrayList<>();
//取出参数名
reportDataList.forEach(x->barcodes.add(x.getBarcode()));
reportDataList.forEach(x->paraName.add(x.getParameaning()));
reportDataList.forEach(x->stations.add(x.getStationName()));
//去重
//条码List
List<String> barcodeList = barcodes.stream().distinct().collect(Collectors.toList());
//参数List
List<String> paraNameList = paraName.stream().distinct().collect(Collectors.toList());
//工位名集合
List<String> stationList = stations.stream().distinct().collect(Collectors.toList());
//定义结果集合
List<Map<String,Object>> list = new ArrayList<>();
//定义结果集map
Map<String,Object> map1 = new HashMap<>();
int number=0;
for(String item:barcodeList){
number=number+1;
map1.put("序号",String.valueOf(number));
map1.put("产品条码",item);
for (String station:stationList) {
for(String param:paraNameList){
for (ReportData rpd:reportDataList) {
map1.put("时间",rpd.getBeginTime());
if (rpd.getBarcode().equals(item)&&rpd.getStationName().equals(station)&&rpd.getParameaning().equals(param)){
if(rpd.getValue()==null){
rpd.setValue("-");
}
String paramName = rpd.getStationName()+"-"+rpd.getParameaning();
// map1.put(station,param);
map1.put(paramName,rpd.getValue());
break;
}
}
}
}
//排序的作用
TreeMap<String,Object> treeMap = new TreeMap<>(map1);
list.add(treeMap);
}
List<String> arrayList=new ArrayList();
if (list!=null) {
Set<String> k = list.get(0).keySet();
Iterator<String> it = k.iterator();
while (it.hasNext()) {
String key = it.next();
//有了键就可以通过map集合的get方法获取对应的值
// if (key=="barcode"){
// key="产品条码";
// }if (key=="beginTime"){
// key="时间";
// }
arrayList.add(key);
}
}
// ExcelUtil.createWorkBook(list,list1);
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("First sheet");
sheet.setDefaultRowHeight((short) (2 * 256));
XSSFFont font = wb.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 16);
XSSFRow row = sheet.createRow(0);
String targetFile=null;
for (int s=0;s<arrayList.size();s++){
row.createCell(s);
XSSFCell cell = row.createCell(s);
cell.setCellValue(arrayList.get(s));
sheet.setColumnWidth(s, 4000);
}
XSSFRow rows ;
XSSFCell cells;
for (int i=0;i<list.size();i++){
rows = sheet.createRow(i + 1);
for (int j = 0; j < arrayList.size(); j++) {
cells = rows.createCell(j);
String value = (String) list.get(i).get(arrayList.get(j));
cells.setCellValue(value);
}
}
try {
targetFile="条码信息"+ new SimpleDateFormat("yyyyMMdd").format(new Date()) + ".xlsx";
// File file = new File();
FileOutputStream fileOutputStream = new FileOutputStream(ExcelUtil.getAbsoluteFilew(targetFile));
wb.write(fileOutputStream);
wb.close();
fileOutputStream.close();
}catch (IOException e){
e.printStackTrace();
}
return ajaxResult.success(targetFile);
}
}

@ -1,23 +1,13 @@
package com.ruoyi.web.controller.nanjing;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.nanjing.domain.ParaAllShow;
import com.ruoyi.nanjing.domain.ProRpList;
import com.ruoyi.nanjing.domain.TBdProductinfo;
import com.ruoyi.nanjing.domain.TBdSubstation;
import com.ruoyi.nanjing.service.ITBdSubstationService;
import com.ruoyi.nanjing.service.ITSyTracestateService;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
@ -28,8 +18,6 @@ import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@ -24,11 +24,11 @@
<div class="nav-close">
<i class="fa fa-times-circle"></i>
</div>
<a th:href="@{/index}">
<!-- <a th:href="@{/index}">-->
<li class="logo hidden-xs">
<span class="logo-lg">Refresh</span>
<span class="logo-lg">生产线数据采集</span>
</li>
</a>
<!-- </a>-->
<div class="sidebar-collapse">
<ul class="nav" id="side-menu">
<li>

@ -49,6 +49,7 @@
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-export-js" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('nanjing:LineType:edit')}]];
var removeFlag = [[${@permission.hasPermi('nanjing:LineType:remove')}]];
@ -62,10 +63,21 @@
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
modalName: "主支线管理",
search: false,
showExport: true,//工具栏上显示导出按钮
exportOptions: {
ignoreColumn: [-1, 5] //忽略最后一列
},
columns: [
// {
// checkbox: true
// },
{
title:'序号',
formatter: function (value, row, index) {
return index+1;
}
},
{
field: 'lineID',
title: '编号',

@ -33,6 +33,7 @@
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-export-js" />
<script th:inline="javascript">
var prefix = ctx + "nanjing/selectParaAll";
function searc() {
@ -86,12 +87,13 @@
pageSize: 50,
pageNumber: 1,
pageList: "[10, 15,25, 50, All]",
showToggle: true,
showRefresh: true,
showColumns: true,
showToggle: false,
showRefresh: false,
showColumns: false,
search: false,
pagination: true,
showExport: false,//工具栏上显示导出按钮
showExport: true,//工具栏上显示导出按钮
exportDataType: 'all',
columns: columnsArray1
});
@ -106,12 +108,13 @@
pageSize: 50,
pageNumber: 1,
pageList: "[10, 15,25, 50, All]",
showToggle: true,
showRefresh: true,
showColumns: true,
showToggle: false,
showRefresh: false,
showExport:true,
showColumns: false,
search: false,
pagination: true,
showExport: false,//工具栏上显示导出按钮
exportDataType: 'all',
columns: columnsArray2
});
},

@ -43,7 +43,7 @@
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;查询全部</a>
<!-- <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;查询全部</a>-->
<a class="btn btn-info btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="nanjing:ProRpList:export"><i class="fa fa-download"></i> 导出</a>
</li>
</ul>
@ -56,6 +56,7 @@
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-export-js" />
<script th:inline="javascript">
var prefix = ctx + "nanjing/selectProRpList";
$(function() {
@ -64,6 +65,10 @@
exportUrl: prefix + "/export",
modalName: "ProRpList",
pagination:false,
showExport: false,//工具栏上显示导出按钮
exportOptions: {
ignoreColumn: false //忽略第一列和最后一列
},
pageSize:100,
columns: [
{

@ -38,6 +38,7 @@
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-export-js" />
<script th:inline="javascript">
var prefix = ctx + "nanjing/SelectProductChangeInfo";
$(function() {
@ -45,10 +46,14 @@
url: prefix + "/list",
exportUrl: prefix + "/export",
modalName: "机种更换信息查询",
// showExport: true,//工具栏上显示导出按钮
// exportOptions: {
// ignoreColumn: false //忽略第一列和最后一列
// },
columns: [
{
field: 'id',
title: 'id'
title: '序号'
},
{
field: 'tBdProductinfo.productName',

@ -87,6 +87,13 @@
// {
// checkbox: true
// },
{
title: '序号',
formatter: function (value, row, index) {
return index+1;
}
},
{
field: 'id',
title: 'id',

@ -22,6 +22,7 @@
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="searchpara()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<!-- <a class="btn btn-warning btn-rounded btn-sm" onclick="expro()"><i class="fa fa-download"></i>&nbsp;导出</a>-->
</li>
</ul>
</div>
@ -33,10 +34,13 @@
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-export-js" />
<script th:inline="javascript">
var stateDatas = [[${@dict.getType('is_not_yx')}]];
function searchpara(){
// console.log("点击查询按钮事件执行...");
// //方式1行转列
var formData = new FormData();
formData.append("begin",$('#beginTime').val());
formData.append("end",$('#endTime').val());
@ -51,31 +55,62 @@
processData: false,
contentType: false,
success: function (json) {
var coulmnsData = [];
console.log(json)
// var coulmnsData = [];
var columnsArray = [];
columnsArray.push({field : "barcode",title : "产品条码",colspan: 1,rowspan: 2});
var columns = [];
if(json.length>0){
// console.log(Object.keys(json[0]).length);
for (var i = 0; i < (Object.keys(json[0])).length; i++) {//Object.keys(obj) 获取key名称
var property = (Object.keys(json[0]))[i];
if(property!='barcode'){
columnsArray.push({field : "序号",title : "序号",colspan: 1,rowspan: 1});
columnsArray.push({field : "产品条码",title : "产品条码",colspan: 1,rowspan: 1});
columnsArray.push({field : "状态",title : "状态",colspan: 1,rowspan: 1,
formatter: function (value, row, index) {
return $.table.selectDictLabel(stateDatas, value);
}
});
columnsArray.push({field : "时间",title : "开始时间",colspan: 1,rowspan: 1});
// columnsArray.push({field : "barCode",title : "产品条码",colspan: 1,rowspan: 1});
// var columns = [];
console.log(json.total)
if(json.total>0){
for (var i = 0; i < (Object.keys(json.rows[0])).length; i++) {//Object.keys(obj) 获取key名称
var property = (Object.keys(json.rows[0]))[i];
if(property!='产品条码'&&property!='时间'&&property!='序号'&&property!='状态'){
columnsArray.push({
"title": property,
"field": property,
switchable: true,
align:"center",
}
columns.push({
"title": property,
"field": property,
})
);
}
}
// for (var i = 0;i<json.rows.length;i++){
// // console.log(json.rows[i].map)
// console.log(Object.keys(json.rows[i].map))
//
// // columnsArray.push(
// // [{
// //
// // }]
// // )
// }
// console.log(Object.keys(json[0]).length);
// for (var i = 0; i < (Object.keys(json[0])).length; i++) {//Object.keys(obj) 获取key名称
// var property = (Object.keys(json[0]))[i];
// if(property!='barcode'){
// columnsArray.push({
// "title": property,
// "field": property,
// switchable: true,
// align:"center",
// }
// );
// }
//
// }
}
coulmnsData.push(columnsArray);
coulmnsData.push(columns);
// coulmnsData.push(columnsArray);
// coulmnsData.push(columns);
// console.log(columnsArray);
$('#bootstrap-table').bootstrapTable('destroy').bootstrapTable({
id: "bootstrap-table",
@ -89,11 +124,15 @@
pageNumber: 1,
pageList: "[10, 15,25, 50, 100, All]",
// showToggle: true,
showRefresh: true,
showColumns: true,
// showRefresh: true,
// showColumns: true,
search: false,
pagination: true,
showExport: false,//工具栏上显示导出按钮
showExport: true,//工具栏上显示导出按钮
exportOptions: {
ignoreColumn: false //忽略第一列和最后一列
},
exportDataType: 'all',
fixedColumns: true,
fixedNumber: 4,
fixedLeftNumber: 4,
@ -141,6 +180,31 @@
// })
}
function expro() {
var formData = new FormData();
formData.append("begin",$('#beginTime').val());
formData.append("end",$('#endTime').val());
formData.append("barcode",$('#barcode').val());
$.modal.confirm("确定导出所有" + "信息" + "吗?", function() {
$.modal.loading("正在导出数据,请稍后...");
$.ajax({
type: "post",
url: ctx + "nanjing/reportData/export",
data: formData,
contentType: "application/json;charset=utf-8",
dataType: "json",
json: 'callback',
processData: false,
contentType: false,
success: function (result){
if (result.code == web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
}
$.modal.closeLoading();
}
})
})
}
</script>
</body>
</html>

@ -41,6 +41,7 @@
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: bootstrap-table-export-js" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('nanjing:WorkTrayHistoryInfo:edit')}]];
var removeFlag = [[${@permission.hasPermi('nanjing:WorkTrayHistoryInfo:remove')}]];
@ -146,7 +147,10 @@
showColumns: true,
search: false,
pagination: true,
showExport: false,//工具栏上显示导出按钮
showExport: true,//工具栏上显示导出按钮
exportOptions: {
ignoreColumn: false //忽略第一列和最后一列
},
columns: columnsArray1
});

@ -26,6 +26,10 @@
托盘RFID码
<input type="text" name="rfidNO" id="rfidno"/>
</li>
<li>
<label> 部件码:</label>
<input type="text" class="text-input" id="productBarcode" name="productBarcode"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset()"><i class="fa fa-refresh"></i>&nbsp;查询全部</a>

@ -16,7 +16,12 @@
</description>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
<!-- Spring框架基本的核心工具 -->
<dependency>
<groupId>org.springframework</groupId>

@ -521,6 +521,17 @@ public class ExcelUtil<T>
}
}
public static String getAbsoluteFilew(String filename)
{
String downloadPath = Global.getDownloadPath() + filename;
File desc = new File(downloadPath);
if (!desc.getParentFile().exists())
{
desc.getParentFile().mkdirs();
}
return downloadPath;
}
/**
*
*/

@ -7,13 +7,23 @@ import java.util.Date;
public class ReportData extends BaseEntity {
private static final long serialVersionUID = 1L;
private String barcode;
private String parameaning;
private String value;
private long id;
private Date beginTime;
private Date endTime;
private String beginTime;
private String endTime;
private String stationName;
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getStationName() {
return stationName;
@ -55,19 +65,19 @@ public class ReportData extends BaseEntity {
this.id = id;
}
public Date getBeginTime() {
public String getBeginTime() {
return beginTime;
}
public void setBeginTime(Date beginTime) {
public void setBeginTime(String beginTime) {
this.beginTime = beginTime;
}
public Date getEndTime() {
public String getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
public void setEndTime(String endTime) {
this.endTime = endTime;
}

@ -78,7 +78,7 @@ public class TRpWorktrayhistoryinfo extends BaseEntity
}
/** 质量品级 */
@Excel(name = "状态")
@Excel(name = "状态", dictType="proState")
private String state;
@Excel(name = "记录时间",width = 30, dateFormat = "yyyy-MM-dd")
private Date insertTime;

@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join T_BD_SubStation t3 on t1.StationID=t3.StationID
<where>
<if test="rfidNO != '' and rfidNO != null "> t1.RFIDNO = ${rfidNO}</if>
<if test="productBarcode != '' and productBarcode != null "> t2.ProductBarcode = ${productBarcode}</if>
<if test="beginTime != null and beginTime != ''"><!-- 开始时间检索 -->
AND t1.InsertTime >= '${beginTime}'
</if>

Loading…
Cancel
Save