package com.zy.asrs.controller;
|
|
import com.baomidou.mybatisplus.plugins.Page;
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.R;
|
import com.zy.asrs.entity.MonthlySettle;
|
import com.zy.asrs.entity.MonthlySettleDetail;
|
import com.zy.asrs.entity.param.DateRangeParam;
|
import com.zy.asrs.entity.param.MonthlySettleQueryParam;
|
import com.zy.asrs.entity.result.MonthlySettleStatisticsVO;
|
import com.zy.asrs.service.MonthlySettleService;
|
import com.zy.common.web.BaseController;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
@RestController
|
public class MonthlySettleController extends BaseController {
|
|
@Autowired
|
private MonthlySettleService monthlySettleService;
|
|
/**
|
* 获取月结信息
|
*/
|
@RequestMapping(value = "/monthlySettle/{id}/auth")
|
@ManagerAuth
|
public R get(@PathVariable("id") Long id) {
|
return R.ok(monthlySettleService.selectById(id));
|
}
|
|
/**
|
* 分页查询月结列表
|
*/
|
@RequestMapping(value = "/monthlySettle/list/auth")
|
@ManagerAuth
|
public R list(MonthlySettleQueryParam param) {
|
Page<MonthlySettle> page = new Page<>(param.getCurr(), param.getLimit());
|
java.util.Map<String, Object> condition = new java.util.HashMap<>();
|
if (param.getSettleNo() != null && !param.getSettleNo().trim().isEmpty()) {
|
condition.put("settleNo", param.getSettleNo());
|
}
|
if (param.getStatus() != null) {
|
condition.put("status", param.getStatus());
|
}
|
if (param.getStartDate() != null && !param.getStartDate().trim().isEmpty()
|
&& param.getEndDate() != null && !param.getEndDate().trim().isEmpty()) {
|
condition.put("startDate", param.getStartDate());
|
condition.put("endDate", param.getEndDate());
|
}
|
page.setCondition(condition);
|
return R.ok(monthlySettleService.getPage(page));
|
}
|
|
/**
|
* 获取最近的月结记录
|
*/
|
@RequestMapping(value = "/monthlySettle/latest/auth")
|
@ManagerAuth
|
public R getLatest() {
|
MonthlySettle latest = monthlySettleService.getLatestSettle();
|
return R.ok(latest);
|
}
|
|
/**
|
* 获取下一个月结的起始日期
|
*/
|
@RequestMapping(value = "/monthlySettle/nextStartDate/auth")
|
@ManagerAuth
|
public R getNextStartDate() {
|
Date nextStartDate = monthlySettleService.getNextStartDate();
|
if (nextStartDate != null) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
return R.ok(sdf.format(nextStartDate));
|
}
|
return R.ok(null);
|
}
|
|
/**
|
* 获取最晚月结记录的结束日期
|
*/
|
@RequestMapping(value = "/monthlySettle/latestEndDate/auth")
|
@ManagerAuth
|
public R getLatestEndDate() {
|
Date latestEndDate = monthlySettleService.getLatestEndDate();
|
if (latestEndDate != null) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
return R.ok(sdf.format(latestEndDate));
|
}
|
return R.ok(null);
|
}
|
|
/**
|
* 检查月结时间范围内是否有未完成的订单
|
*/
|
@RequestMapping(value = "/monthlySettle/checkUnfinished/auth")
|
@ManagerAuth
|
public R checkUnfinished(DateRangeParam param) {
|
boolean hasUnfinished = monthlySettleService.hasUnfinishedOrders(param.getStartDate(), param.getEndDate());
|
if (hasUnfinished) {
|
return R.error("月结时间范围内存在未完成的订单,无法进行月结");
|
}
|
return R.ok();
|
}
|
|
/**
|
* 发起月结
|
*/
|
@RequestMapping(value = "/monthlySettle/start/auth")
|
@ManagerAuth
|
public R startSettle(DateRangeParam param) {
|
return R.ok(monthlySettleService.startSettle(param.getStartDate(), param.getEndDate(), getUserId()));
|
}
|
|
/**
|
* 获取月结统计信息
|
*/
|
@RequestMapping(value = "/monthlySettle/statistics/{id}/auth")
|
@ManagerAuth
|
public R getStatistics(@PathVariable("id") Long id) {
|
return R.ok(monthlySettleService.getSettleStatistics(id));
|
}
|
|
/**
|
* 删除月结记录
|
*/
|
@RequestMapping(value = "/monthlySettle/{id}/auth", method = RequestMethod.DELETE)
|
@ManagerAuth
|
public R delete(@PathVariable("id") Long id) {
|
monthlySettleService.deleteSettle(id);
|
return R.ok("删除成功");
|
}
|
|
/**
|
* 导出月结明细
|
*/
|
@RequestMapping(value = "/monthlySettle/detail/export/{id}/auth")
|
@ManagerAuth(memo = "导出月结明细")
|
public R exportDetail(@PathVariable("id") Long id) {
|
// 获取月结统计信息
|
MonthlySettleStatisticsVO statistics = monthlySettleService.getSettleStatistics(id);
|
if (statistics == null || statistics.getDetails() == null) {
|
return R.error("月结明细不存在");
|
}
|
|
List<MonthlySettleDetail> details = statistics.getDetails();
|
|
// 定义导出字段
|
List<String> fields = new ArrayList<>();
|
fields.add("matnr");
|
fields.add("maktx");
|
fields.add("batch");
|
fields.add("brand");
|
fields.add("beginningQty");
|
fields.add("endingQty");
|
fields.add("diffQty");
|
fields.add("inQty");
|
fields.add("outQty");
|
|
return R.ok(exportSupport(details, fields));
|
}
|
|
}
|