feat(order):投递、清运订单统计导出功能前后端代码提交;

master
jiyufei 4 months ago
parent d8dd43f767
commit 70be5b2306

@ -1,5 +1,6 @@
package jnpf.service;
import jnpf.base.vo.DownloadVO;
import jnpf.model.recyclecleanorder.*;
import jnpf.entity.*;
import java.util.*;
@ -7,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jnpf.model.recycledeliveryorder.OrderStatisticsRequest;
import jnpf.model.recycledeliveryorder.OrderStatisticsResponse;
import jnpf.model.recycledeliveryorder.OrderStatisticsVO;
/**
*
@ -44,4 +46,12 @@ public interface RecycleCleanOrderService extends IService<RecycleCleanOrderEnti
* @return list
*/
List<OrderStatisticsResponse> cleanCount(OrderStatisticsRequest request);
/**
*
*
* @param dataList
* @return vo
*/
DownloadVO export(List<OrderStatisticsVO> dataList);
}

@ -1,12 +1,18 @@
package jnpf.service;
import jnpf.base.vo.DownloadVO;
import jnpf.model.recycledeliveryorder.*;
import jnpf.entity.*;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jnpf.permission.model.user.vo.UserExportVO;
import javax.servlet.http.HttpServletResponse;
/**
*
@ -56,4 +62,12 @@ public interface RecycleDeliveryOrderService extends IService<RecycleDeliveryOrd
* @return list
*/
List<OrderStatisticsResponse> deliveryCount(OrderStatisticsRequest request);
/**
*
*
* @param dataList
* @return vo
*/
DownloadVO export(List<OrderStatisticsVO> dataList);
}

@ -2,10 +2,12 @@ package jnpf.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import jnpf.base.vo.DownloadVO;
import jnpf.entity.*;
import jnpf.mapper.RecycleCleanOrderMapper;
import jnpf.model.recycledeliveryorder.OrderStatisticsRequest;
import jnpf.model.recycledeliveryorder.OrderStatisticsResponse;
import jnpf.model.recycledeliveryorder.OrderStatisticsVO;
import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.recyclecleanorder.*;
@ -423,4 +425,9 @@ public class RecycleCleanOrderServiceImpl extends ServiceImpl<RecycleCleanOrderM
}
return responses;
}
@Override
public DownloadVO export(List<OrderStatisticsVO> dataList) {
return recycleDeliveryOrderService.exportUtil("date,weight,adjustWeight,price,adjustPrice", "清运清单统计", dataList);
}
}

@ -1,7 +1,11 @@
package jnpf.service.impl;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSON;
import cn.xuyanwu.spring.file.storage.FileInfo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -12,20 +16,27 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import jnpf.base.UserInfo;
import jnpf.base.model.ColumnDataModel;
import jnpf.base.vo.DownloadVO;
import jnpf.config.ConfigValueUtil;
import jnpf.database.model.superQuery.SuperJsonModel;
import jnpf.entity.*;
import jnpf.mapper.*;
import jnpf.mapper.RecycleDeliveryOrderMapper;
import jnpf.model.QueryModel;
import jnpf.model.recycledeliveryorder.*;
import jnpf.permission.entity.UserEntity;
import jnpf.permission.model.user.vo.UserExportVO;
import jnpf.service.*;
import jnpf.util.*;
import lombok.Cleanup;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.lang.reflect.Field;
@ -66,6 +77,8 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
private EnterpriseAccountBillService enterpriseAccountBillService;
@Resource
private RecycleDeviceService recycleDeviceService;
@Autowired
private ConfigValueUtil configValueUtil;
@Override
@ -706,6 +719,55 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
return responses;
}
@Override
public DownloadVO export(List<OrderStatisticsVO> dataList) {
return exportUtil("date,weight,adjustWeight,price,adjustPrice", "投递清单统计", dataList);
}
public DownloadVO exportUtil(String selectKey, String explain, List<OrderStatisticsVO> modeList) {
List<OrderStatisticsVO> list = JsonUtil.listToJsonField(JsonUtil.getJsonToList(modeList, OrderStatisticsVO.class));
List<ExcelExportEntity> entitys = new ArrayList<>();
String[] splitData = selectKey.split(",");
if (splitData.length > 0) {
for (int i = 0; i < splitData.length; i++) {
if (splitData[i].equals("date")) {
entitys.add(new ExcelExportEntity("日期", "date"));
}
if (splitData[i].equals("weight")) {
entitys.add(new ExcelExportEntity("总重量(kg)", "weight"));
}
if (splitData[i].equals("price")) {
entitys.add(new ExcelExportEntity("总金额(元)", "price"));
}
if (splitData[i].equals("adjustWeight")) {
entitys.add(new ExcelExportEntity("审核后总重量(kg)", "adjustWeight"));
}
if (splitData[i].equals("adjustPrice")) {
entitys.add(new ExcelExportEntity("审核后总金额(元)", "adjustPrice"));
}
}
}
ExportParams exportParams = new ExportParams(null, explain);
exportParams.setType(ExcelType.XSSF);
DownloadVO vo = DownloadVO.builder().build();
try {
@Cleanup Workbook workbook = new HSSFWorkbook();
if (entitys.size() > 0) {
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
}
String name = explain + DateUtil.dateNow("yyyyMMdd") + "_" + RandomUtil.uuId() + ".xlsx";
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, name);
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, name);
vo.setName(fileInfo.getFilename());
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + name);
} catch (Exception e) {
log.error("用户信息导出Excel错误:" + e.getMessage());
}
return vo;
}
/**
*
*

@ -3,17 +3,18 @@ package jnpf.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.vo.DownloadVO;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.entity.RecycleCleanOrderEntity;
import jnpf.model.recyclecleanorder.*;
import jnpf.model.recycledeliveryorder.OrderStatisticsRequest;
import jnpf.model.recycledeliveryorder.OrderStatisticsVO;
import jnpf.service.RecycleCleanOrderService;
import jnpf.service.RecycleDeviceService;
import jnpf.util.GeneraterSwapUtil;
import jnpf.util.JsonUtil;
import jnpf.util.StringUtil;
import jnpf.util.UserProvider;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -46,9 +47,6 @@ public class RecycleCleanOrderController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private RecycleCleanOrderService recycleCleanOrderService;
@ -245,4 +243,13 @@ public class RecycleCleanOrderController {
return ActionResult.success(recycleCleanOrderService.cleanCount(request));
}
@Operation(summary = "导出")
@PostMapping("/export")
public ActionResult<DownloadVO> export(@RequestBody OrderStatisticsVO exportVO) {
List<OrderStatisticsVO> dataList = JsonUtil.getJsonToList(exportVO.getData(), OrderStatisticsVO.class);
//生成Excel
DownloadVO vo = recycleCleanOrderService.export(dataList);
return ActionResult.success(vo);
}
}

@ -3,6 +3,7 @@ package jnpf.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jnpf.base.ActionResult;
import jnpf.base.vo.DownloadVO;
import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO;
import jnpf.entity.RecycleDeliveryOrderEntity;
@ -12,7 +13,6 @@ import jnpf.service.RecycleDeviceService;
import jnpf.util.GeneraterSwapUtil;
import jnpf.util.JsonUtil;
import jnpf.util.StringUtil;
import jnpf.util.UserProvider;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -45,9 +45,6 @@ public class RecycleDeliveryOrderController {
@Autowired
private GeneraterSwapUtil generaterSwapUtil;
@Autowired
private UserProvider userProvider;
@Autowired
private RecycleDeliveryOrderService recycleDeliveryOrderService;
@ -237,4 +234,13 @@ public class RecycleDeliveryOrderController {
return ActionResult.success(recycleDeliveryOrderService.deliveryCount(request));
}
@Operation(summary = "导出")
@PostMapping("/export")
public ActionResult<DownloadVO> export(@RequestBody OrderStatisticsVO exportVO) {
List<OrderStatisticsVO> dataList = JsonUtil.getJsonToList(exportVO.getData(), OrderStatisticsVO.class);
//生成Excel
DownloadVO vo = recycleDeliveryOrderService.export(dataList);
return ActionResult.success(vo);
}
}

@ -1,6 +1,7 @@
package jnpf.model.recycledeliveryorder;
import lombok.Data;
import org.apache.poi.hpsf.Blob;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@ -42,4 +43,8 @@ public class OrderStatisticsRequest {
*/
private int auditStatus;
/**
*
*/
List<OrderStatisticsResponse> data;
}

@ -0,0 +1,49 @@
package jnpf.model.recycledeliveryorder;
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
public class OrderStatisticsVO implements Serializable {
/**
* YYYY-mm-dd
*/
@Excel(name = "日期", isImportField = "true")
private String date;
/**
*
*/
@Excel(name = "总重量", isImportField = "true")
private BigDecimal weight;
/**
*
*/
@Excel(name = "审核后总重量", isImportField = "true")
private BigDecimal adjustWeight;
/**
*
*/
@Excel(name = "总金额", isImportField = "true")
private BigDecimal price;
/**
*
*/
@Excel(name = "审核后总金额", isImportField = "true")
private BigDecimal adjustPrice;
List<OrderStatisticsVO> data;
}

@ -0,0 +1,18 @@
import request from "@/utils/request";
export function ExportDeliveryOrderData(data) {
return request({
url: '/api/scm/RecycleDeliveryOrder/export',
method: 'post',
data
})
}
export function ExportCleanOrderData(data) {
return request({
url: '/api/scm/RecycleCleanOrder/export',
method: 'post',
data
})
}

@ -45,6 +45,7 @@
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="success" icon="el-icon-download" :disabled="!hasData" @click="exportData"></el-button>
</el-form-item>
</el-col>
</el-form>
@ -64,11 +65,7 @@
</JNPF-table>
</div>
</div>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
<ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
<ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail" @close="toFormDetailVisible = false" />
<SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson" @superQuery="superQuery" />
</div>
</template>
@ -76,20 +73,12 @@
import request from "@/utils/request";
import { mapGetters } from "vuex";
import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
import ExportBox from "@/components/ExportBox";
import ToFormDetail from "@/views/basic/dynamicModel/list/detail";
import { getDataInterfaceRes } from "@/api/systemData/dataInterface";
import { getConfigData } from "@/api/onlineDev/visualDev";
import { getDefaultCurrentValueUserIdAsync } from "@/api/permission/user";
import { getDefaultCurrentValueDepartmentIdAsync } from "@/api/permission/organize";
import { thousandsFormat } from "@/components/Generator/utils/index";
import SuperQuery from "@/components/SuperQuery";
import { ExportCleanOrderData } from "@/api/orderStatistics";
export default {
components: {
ExportBox,
ToFormDetail,
SuperQuery
},
data() {
const currentYear = new Date().getFullYear();
@ -107,10 +96,10 @@ export default {
superQueryVisible: false,
uploadBoxVisible: false,
query: {
companyId:"543048783756268357",
stationIds:[],
deviceCodes:[],
auditStatus: undefined,
companyId: "543048783756268357",
stationIds: [],
deviceCodes: [],
auditStatus: "1",
year: currentYear,
month: currentMonth
},
@ -142,6 +131,9 @@ export default {
},
computed: {
...mapGetters(["userInfo"]),
hasData() {
return this.list.length > 0;
},
menuId() {
return this.$route.meta.modelId || "";
}
@ -308,10 +300,9 @@ export default {
},
exportData() {
this.exportBoxVisible = true;
this.$nextTick(() => {
this.$refs.ExportBox.init(this.exportList);
});
ExportCleanOrderData({ data: this.list }).then(res => {
this.jnpf.downloadFile(res.data.url)
})
},
search() {
if (this.query.companyId == null) {

@ -45,6 +45,7 @@
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="search()"></el-button>
<el-button icon="el-icon-refresh-right" @click="reset()"></el-button>
<el-button type="success" icon="el-icon-download" :disabled="!hasData" @click="exportData"></el-button>
</el-form-item>
</el-col>
</el-form>
@ -64,11 +65,7 @@
</JNPF-table>
</div>
</div>
<ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
<ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
<ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail" @close="toFormDetailVisible = false" />
<SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson" @superQuery="superQuery" />
</div>
</template>
@ -76,20 +73,12 @@
import request from "@/utils/request";
import { mapGetters } from "vuex";
import { getDictionaryDataSelector } from "@/api/systemData/dictionary";
import ExportBox from "@/components/ExportBox";
import ToFormDetail from "@/views/basic/dynamicModel/list/detail";
import { getDataInterfaceRes } from "@/api/systemData/dataInterface";
import { getConfigData } from "@/api/onlineDev/visualDev";
import { getDefaultCurrentValueUserIdAsync } from "@/api/permission/user";
import { getDefaultCurrentValueDepartmentIdAsync } from "@/api/permission/organize";
import { thousandsFormat } from "@/components/Generator/utils/index";
import SuperQuery from "@/components/SuperQuery";
import { ExportDeliveryOrderData } from "@/api/orderStatistics";
export default {
components: {
ExportBox,
ToFormDetail,
SuperQuery
},
data() {
const currentYear = new Date().getFullYear();
@ -110,7 +99,7 @@ export default {
companyId: "543048783756268357",
stationIds: [],
deviceCodes: [],
auditStatus: undefined,
auditStatus: "1",
year: currentYear,
month: currentMonth
},
@ -134,7 +123,6 @@ export default {
flowVisible: false,
flowListVisible: false,
flowList: [],
exportBoxVisible: false,
adjustStatusOptions: [],
adjustStatusProps: { label: "fullName", value: "enCode" },
interfaceRes: {}
@ -142,6 +130,9 @@ export default {
},
computed: {
...mapGetters(["userInfo"]),
hasData() {
return this.list.length > 0;
},
menuId() {
return this.$route.meta.modelId || "";
}
@ -306,12 +297,10 @@ export default {
this.listQuery.currentPage = 1;
this.initData();
},
exportData() {
this.exportBoxVisible = true;
this.$nextTick(() => {
this.$refs.ExportBox.init(this.exportList);
});
ExportDeliveryOrderData({ data: this.list }).then(res => {
this.jnpf.downloadFile(res.data.url)
})
},
search() {
if (this.query.companyId == null) {

Loading…
Cancel
Save