结算模块修改

This commit is contained in:
bonus 2025-11-15 15:47:05 +08:00
parent d8ee1d4c68
commit 992897b829
13 changed files with 1317 additions and 801 deletions

View File

@ -1,5 +1,8 @@
package com.bonus.material.push.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.bonus.common.biz.utils.HttpHelper;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult;
@ -177,6 +180,46 @@ public class PushProDataUseInfoController extends BaseController {
}
}
// 检验临期和检验超期数量
@GetMapping(value = "getHyCheckingTimeout")
public AjaxResult getHyCheckTimeout(ProIdsBean bean) {
try {
List<StaticsNumsBean> results = new ArrayList<>();
Map<String, String> map = new HashMap<String, String>();
map.put("keyWord", "");
String body = JSONObject.toJSONString(map);
String url = "http://10.138.55.101:21021/iws/hystw/getHyCheckingCounts";
//String url = "http://192.168.1.134:8036/micro-server/zzaqgjf/syncSafetyTool";
String data = HttpHelper.sendHttpPost(url, body);
JSONObject object = JSONObject.parseObject(data);
System.err.println(data);
String code = object.getString("code");
if ("200".equals(code)) {
String dataResultString = object.getString("data");
JSONArray dataArray = JSONArray.parseArray(dataResultString);
if (dataArray != null && !dataArray.isEmpty()) {
// 有数据
for (int i = 0; i < dataArray.size(); i++) {
JSONObject dataObject = dataArray.getJSONObject(i);
String counts = dataObject.getString("counts");
StaticsNumsBean rs = new StaticsNumsBean();
rs.setTimeoutNum(BigDecimal.valueOf(Integer.parseInt(counts)));
results.add(rs);
}
}
}
return AjaxResult.success(results);
} catch (Exception e) {
logger.error(e.toString(), e);
throw new ServiceException("数据查询异常,请联系运维人员查询日志处理");
}
}
// 临期超期设备详情
@GetMapping(value = "getApproachingDetails")
public TableDataInfo getApproachingDetails(ProIdsBean bean) {

View File

@ -195,6 +195,7 @@ public class SltAgreementInfoController extends BaseController {
vo.setReductionList(Collections.emptyList());
vo.setRelations(Collections.emptyList());
}
dataList.add(vo);
if (info.getAgreementId() != null) {
agreementId = info.getAgreementId();
@ -208,6 +209,8 @@ public class SltAgreementInfoController extends BaseController {
TmTask tmTask = taskMapper.selectTaskById(agreementId, list.get(0).getSettlementType());
if (tmTask != null) {
bean.setApplyTime(tmTask.getCreateTime());
bean.setSltSignUrl(tmTask.getSltSignUrl());
bean.setAuditorSignUrl(tmTask.getAuditorSignUrl());
}
return AjaxResult.success(bean);
@ -404,7 +407,7 @@ public class SltAgreementInfoController extends BaseController {
* 结算记录查询--导出全部明细
*/
private void expOutExcelAlls(HttpServletResponse response, List<SltLeaseInfo> lease,List<SltLeaseInfo> lose,List<SltLeaseInfo> repair,List<SltLeaseInfo> scrap,List<SltLeaseInfo> reduction,
String filename,String projectName,String unitName,BigDecimal totalCostLease,BigDecimal totalCostLose,BigDecimal totalCostRepair,BigDecimal totalCostScrap,BigDecimal totalCostReduction)
String filename,String projectName,String unitName,BigDecimal totalCostLease,BigDecimal totalCostLose,BigDecimal totalCostRepair,BigDecimal totalCostScrap,BigDecimal totalCostReduction)
throws Exception {
List<Map<String, Object>> resultsLease = new ArrayList<>();
List<Map<String, Object>> resultsLose = new ArrayList<>();
@ -478,6 +481,7 @@ public class SltAgreementInfoController extends BaseController {
maps.put("endTime", bean.getEndTime()==null ? null:dateFormat.format(bean.getEndTime()));
maps.put("leaseDays", bean.getLeaseDays());
maps.put("costs", bean.getCosts().setScale(2, RoundingMode.HALF_UP));
maps.put("unitName", bean.getUnitName());
}else {
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
@ -488,7 +492,8 @@ public class SltAgreementInfoController extends BaseController {
maps.put("endTime", bean.getEndTime()==null ? null:dateFormat.format(bean.getEndTime()));
maps.put("leaseDays", bean.getLeaseDays());
maps.put("costs", bean.getCosts().setScale(2, RoundingMode.HALF_UP));
maps.put("t1", "");
maps.put("unitName", bean.getUnitName());
maps.put("t2", "");
}
} else if(type == 2) {
if(flag==0){
@ -498,6 +503,7 @@ public class SltAgreementInfoController extends BaseController {
maps.put("buyPrice", bean.getBuyPrice());
maps.put("num", bean.getNum());
maps.put("costs", bean.getCosts());
maps.put("unitName", bean.getUnitName());
}else{
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
@ -505,10 +511,11 @@ public class SltAgreementInfoController extends BaseController {
maps.put("buyPrice", bean.getBuyPrice());
maps.put("num", bean.getNum());
maps.put("costs", bean.getCosts());
maps.put("t1", "");
maps.put("unitName", bean.getUnitName());
maps.put("t2", "");
maps.put("t3", "");
maps.put("t4", "");
maps.put("t5", "");
}
} else if (type == 3) {
if (flag==0) {
@ -518,6 +525,7 @@ public class SltAgreementInfoController extends BaseController {
maps.put("num", bean.getNum());
maps.put("partType", bean.getPartType());
maps.put("costs", bean.getCosts());
maps.put("unitName", bean.getUnitName());
} else {
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
@ -525,10 +533,11 @@ public class SltAgreementInfoController extends BaseController {
maps.put("num", bean.getNum());
maps.put("partType", bean.getPartType());
maps.put("costs", bean.getCosts());
maps.put("t1", "");
maps.put("unitName", bean.getUnitName());
maps.put("t2", "");
maps.put("t3", "");
maps.put("t4", "");
maps.put("t5", "");
}
} else if (type == 4) {
if (flag == 0) {
@ -539,6 +548,7 @@ public class SltAgreementInfoController extends BaseController {
maps.put("num", bean.getNum());
maps.put("partType", bean.getPartType());
maps.put("costs", bean.getCosts());
maps.put("unitName", bean.getUnitName());
} else {
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
@ -547,21 +557,23 @@ public class SltAgreementInfoController extends BaseController {
maps.put("num", bean.getNum());
maps.put("partType", bean.getPartType());
maps.put("costs", bean.getCosts());
maps.put("t1", "");
maps.put("unitName", bean.getUnitName());
maps.put("t2", "");
maps.put("t3", "");
maps.put("t4", "");
}
} else if (type == 5) {
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
maps.put("mtUnitName", bean.getUnitName());
maps.put("leasePrice", bean.getLeasePrice());
maps.put("num", bean.getReduceNum());
maps.put("startTime", bean.getStartTime()==null ? null:dateFormat.format(bean.getStartTime()));
maps.put("endTime", bean.getEndTime()==null ? null:dateFormat.format(bean.getEndTime()));
maps.put("leaseDays", bean.getDays());
maps.put("remark", bean.getRemark());
maps.put("costs", bean.getLeaseMoney().setScale(2, RoundingMode.HALF_UP));
maps.put("typeName", bean.getTypeName());
maps.put("modelName", bean.getModelName());
maps.put("mtUnitName", bean.getUnitName());
maps.put("leasePrice", bean.getLeasePrice());
maps.put("num", bean.getReduceNum());
maps.put("startTime", bean.getStartTime()==null ? null:dateFormat.format(bean.getStartTime()));
maps.put("endTime", bean.getEndTime()==null ? null:dateFormat.format(bean.getEndTime()));
maps.put("leaseDays", bean.getDays());
maps.put("remark", bean.getRemark());
maps.put("costs", bean.getLeaseMoney().setScale(2, RoundingMode.HALF_UP));
maps.put("t4", "");
}
return maps;
}
@ -583,6 +595,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("归还日期");
list.add("租赁天数");
list.add("租赁费用(元)");
list.add("备注");
}else {
list.add("设备名称");
list.add("规格型号");
@ -593,6 +606,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("归还日期");
list.add("租赁天数");
list.add("租赁费用(元)");
list.add("备注");
list.add(" ");
}
}else if(type==2){
@ -603,6 +617,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("扣款单价");
list.add("丢失数量");
list.add("丢失费用(元)");
list.add("备注");
}else{
list.add("设备名称");
list.add("规格型号");
@ -610,6 +625,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("扣款单价");
list.add("丢失数量");
list.add("丢失费用(元)");
list.add("备注");
list.add(" ");
list.add(" ");
list.add(" ");
@ -624,6 +640,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("维修数量");
list.add("是否收费");
list.add("维修费用(元)");
list.add("备注");
}else{
list.add("设备名称");
list.add("规格型号");
@ -631,9 +648,10 @@ public class SltAgreementInfoController extends BaseController {
list.add("维修数量");
list.add("是否收费");
list.add("维修费用(元)");
list.add("备注");
list.add("");
list.add("");
list.add("");
list.add(" ");
list.add(" ");
}
}else if(type==4){
@ -645,6 +663,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("报废数量");
list.add("是否收费");
list.add("报废费用(元)");
list.add("备注");
}else{
list.add("设备名称");
list.add("规格型号");
@ -653,6 +672,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("报废数量");
list.add("是否收费");
list.add("报废费用(元)");
list.add("备注");
list.add("");
list.add("");
list.add("");
@ -668,6 +688,7 @@ public class SltAgreementInfoController extends BaseController {
list.add("减免天数");
list.add("减免原因");
list.add("减免费用(元)");
list.add("备注");
}
return list;
}
@ -690,7 +711,14 @@ public class SltAgreementInfoController extends BaseController {
for (SltAgreementInfo info : sltAgreementInfo) {
projectNames.add(info.getProjectName());
unitNames.add(info.getUnitName());
List<SltAgreementInfo> oneOfList = sltAgreementInfoMapper.getLeaseList(info);
List<SltAgreementInfo> oneOfList = new ArrayList<>();
// 如果开启了查询已结算数据那么就从结算记录📝里面查询已结算的租赁费用明细
if (info != null && info.getEnableQuerySltData() != null && info.getEnableQuerySltData()) {
oneOfList = sltAgreementInfoMapper.getLeaseSltDetails(info);
} else {
oneOfList = sltAgreementInfoMapper.getLeaseList(info);
}
leaseList.addAll(oneOfList);
}
String projectName = handleData(projectNames);
@ -743,7 +771,14 @@ public class SltAgreementInfoController extends BaseController {
for (SltAgreementInfo info : sltAgreementInfo) {
projectNames.add(info.getProjectName());
unitNames.add(info.getUnitName());
List<SltAgreementInfo> oneOfList = sltAgreementInfoMapper.getLoseList(info);
List<SltAgreementInfo> oneOfList =new ArrayList<>();
if ( info.getEnableQuerySltData()) {
oneOfList = sltAgreementInfoMapper.getSltLoseList(info);
}else{
oneOfList = sltAgreementInfoMapper.getLoseList(info);
}
loseList.addAll(oneOfList);
}
String projectName = handleData(projectNames);
@ -792,7 +827,14 @@ public class SltAgreementInfoController extends BaseController {
projectNames.add(info.getProjectName());
unitNames.add(info.getUnitName());
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(info, taskList);
repairList.addAll(repairDetailsList);
}
@ -816,6 +858,23 @@ public class SltAgreementInfoController extends BaseController {
}
}
private List<TmTask> checkTeamAgreementInfo(SltAgreementInfo info) {
List<TmTask> teamTaskList = new ArrayList<>();
try{
SltAgreementInfo bean = sltAgreementInfoMapper.getAgreementInfo(info);
List<SltAgreementInfo> agreementInfoList = sltAgreementInfoMapper.selectAgreementInfoList(bean);
if (null != agreementInfoList && !agreementInfoList.isEmpty()) {
teamTaskList = taskMapper.getTaskIdListByAgreementList(agreementInfoList);
}
}catch (Exception e){
e.printStackTrace();
}
return teamTaskList;
}
/**
* 导出减免费用明细
*/
@ -883,7 +942,16 @@ public class SltAgreementInfoController extends BaseController {
projectNames.add(info.getProjectName());
unitNames.add(info.getUnitName());
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(info, taskList);
scrapList.addAll(scrapDetailsList);
}
@ -1015,7 +1083,16 @@ public class SltAgreementInfoController extends BaseController {
BigDecimal totalCostRepair = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> repairList = new ArrayList<>();
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(info, taskList);
repairList.addAll(repairDetailsList);
}
@ -1031,7 +1108,15 @@ public class SltAgreementInfoController extends BaseController {
BigDecimal totalCostScrap = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> scrapList = new ArrayList<>();
List<TmTask> taskListScrap = taskMapper.getTaskIdList(info);
List<TmTask> taskScrapList2 = new ArrayList<>();
taskScrapList2 = checkTeamAgreementInfo(info);
if (null != taskListScrap && !taskListScrap.isEmpty()) {
if (null != taskScrapList2 && !taskScrapList2.isEmpty()) {
taskListScrap.addAll(taskScrapList2);
}
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(info, taskListScrap);
scrapList.addAll(scrapDetailsList);
}
@ -1118,7 +1203,7 @@ public class SltAgreementInfoController extends BaseController {
PoiOutPage.excelForcheckEach(workbook, sheet, resultsLease,resultsLose,resultsRepair,resultsScrap,resultsReduction, headersLease,headersLose,headersRepair,headersScrap,headersReduction,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction);
// expOutExcelAll(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction);
// expOutExcelAll(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction);
sheetIndex++;
}
OutputStream out = null;
@ -1146,110 +1231,137 @@ public class SltAgreementInfoController extends BaseController {
@PostMapping("/exportAll")
public void exportAll(HttpServletResponse response, @RequestParam("params") String params) {
try {
String fileName = "结算费用明细";
List<SltAgreementInfo> sltAgreementInfo = JSONObject.parseArray(params,SltAgreementInfo.class);
List<String> projectNames = new ArrayList<>();
List<String> unitNames = new ArrayList<>();
String fileName = "结算费用明细";
List<SltAgreementInfo> sltAgreementInfo = JSONObject.parseArray(params,SltAgreementInfo.class);
List<String> projectNames = new ArrayList<>();
List<String> unitNames = new ArrayList<>();
// String projectName = sltAgreementInfo.getProjectName();
// String unitName = sltAgreementInfo.getUnitName();
//租赁费用明细
BigDecimal totalCostLease = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> leaseList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
projectNames.add(info.getProjectName());
unitNames.add(info.getUnitName());
List<SltAgreementInfo> oneOfList = sltAgreementInfoMapper.getLeaseList(info);
leaseList.addAll(oneOfList);
}
for (SltAgreementInfo bean : leaseList) {
if (null == bean.getLeasePrice()) {
bean.setLeasePrice(BigDecimal.valueOf(0.00));
}
if (null == bean.getNum()) {
bean.setNum(BigDecimal.valueOf(0L));
}
if (null == bean.getLeaseDays()) {
bean.setLeaseDay(0L);
}
BigDecimal leasePrice = bean.getLeasePrice();
BigDecimal num = bean.getNum();
BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays());
BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays);
if(costs!=null){
totalCostLease = totalCostLease.add(costs);
}
bean.setCosts(costs);
}
List<SltLeaseInfo> lease = Convert.toList(SltLeaseInfo.class, leaseList);
//丢失费用明细
BigDecimal totalCostLose = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> loseList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
List<SltAgreementInfo> oneOfList = sltAgreementInfoMapper.getLoseList(info);
loseList.addAll(oneOfList);
//租赁费用明细
BigDecimal totalCostLease = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> leaseList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
projectNames.add(info.getProjectName());
unitNames.add(info.getUnitName());
List<SltAgreementInfo> oneOfList = new ArrayList<>();
if (info != null && info.getEnableQuerySltData() != null && info.getEnableQuerySltData()) {
oneOfList = sltAgreementInfoMapper.getLeaseSltDetails(info);
} else {
oneOfList = sltAgreementInfoMapper.getLeaseList(info);
}
for (SltAgreementInfo bean : loseList) {
if (null == bean.getBuyPrice()) {
bean.setBuyPrice(BigDecimal.valueOf(0.00));
}
if (null == bean.getNum()) {
bean.setNum(BigDecimal.valueOf(0L));
}
BigDecimal buyPrice = bean.getBuyPrice();
BigDecimal num = bean.getNum();
// 原价 x 数量
BigDecimal costs = buyPrice.multiply(num);
if(costs!=null){
totalCostLose = totalCostLose.add(costs);
}
//计算租赁费用
bean.setCosts(costs);
}
List<SltLeaseInfo> lose = Convert.toList(SltLeaseInfo.class, loseList);
//维修费用明细
BigDecimal totalCostRepair = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> repairList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
List<TmTask> taskList = taskMapper.getTaskIdList(info);
if (null != taskList && !taskList.isEmpty()) {
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(info, taskList);
repairList.addAll(repairDetailsList);
}
leaseList.addAll(oneOfList);
}
for (SltAgreementInfo bean : leaseList) {
if (null == bean.getLeasePrice()) {
bean.setLeasePrice(BigDecimal.valueOf(0.00));
}
for (SltAgreementInfo bean : repairList) {
if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) {
totalCostRepair = totalCostRepair.add(bean.getCosts());
}
if (null == bean.getNum()) {
bean.setNum(BigDecimal.valueOf(0L));
}
List<SltLeaseInfo> repair = Convert.toList(SltLeaseInfo.class, repairList);
if (null == bean.getLeaseDays()) {
bean.setLeaseDay(0L);
}
BigDecimal leasePrice = bean.getLeasePrice();
BigDecimal num = bean.getNum();
BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays());
BigDecimal costs = leasePrice.multiply(num).multiply(leaseDays);
if(costs!=null){
totalCostLease = totalCostLease.add(costs);
}
bean.setCosts(costs);
}
List<SltLeaseInfo> lease = Convert.toList(SltLeaseInfo.class, leaseList);
//报废费用明细
BigDecimal totalCostScrap = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> scrapList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
List<TmTask> taskList = taskMapper.getTaskIdList(info);
if (null != taskList && !taskList.isEmpty()) {
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(info, taskList);
scrapList.addAll(scrapDetailsList);
}
//丢失费用明细
BigDecimal totalCostLose = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> loseList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
List<SltAgreementInfo> oneOfList = new ArrayList<>();
if ( info.getEnableQuerySltData()) {
oneOfList = sltAgreementInfoMapper.getSltLoseList(info);
}else{
oneOfList = sltAgreementInfoMapper.getLoseList(info);
}
for (SltAgreementInfo bean : scrapList) {
if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) {
totalCostScrap = totalCostScrap.add(bean.getCosts());
}
}
List<SltLeaseInfo> scrap = Convert.toList(SltLeaseInfo.class, scrapList);
//减免费用明细
BigDecimal totalCostReduction = BigDecimal.valueOf(0.00);
List<SltAgreementReduce> reductionList = new ArrayList<>();
loseList.addAll(oneOfList);
}
for (SltAgreementInfo bean : loseList) {
if (null == bean.getBuyPrice()) {
bean.setBuyPrice(BigDecimal.valueOf(0.00));
}
if (null == bean.getNum()) {
bean.setNum(BigDecimal.valueOf(0L));
}
BigDecimal buyPrice = bean.getBuyPrice();
BigDecimal num = bean.getNum();
// 原价 x 数量
BigDecimal costs = buyPrice.multiply(num);
if(costs!=null){
totalCostLose = totalCostLose.add(costs);
}
//计算租赁费用
bean.setCosts(costs);
}
List<SltLeaseInfo> lose = Convert.toList(SltLeaseInfo.class, loseList);
//维修费用明细
BigDecimal totalCostRepair = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> repairList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(info, taskList);
repairList.addAll(repairDetailsList);
}
}
for (SltAgreementInfo bean : repairList) {
if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) {
totalCostRepair = totalCostRepair.add(bean.getCosts());
}
}
List<SltLeaseInfo> repair = Convert.toList(SltLeaseInfo.class, repairList);
//报废费用明细
BigDecimal totalCostScrap = BigDecimal.valueOf(0.00);
List<SltAgreementInfo> scrapList = new ArrayList<>();
for (SltAgreementInfo info : sltAgreementInfo) {
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(info, taskList);
scrapList.addAll(scrapDetailsList);
}
}
for (SltAgreementInfo bean : scrapList) {
if (bean.getCosts()!=null && (bean.getPartType().equals("收费"))) {
totalCostScrap = totalCostScrap.add(bean.getCosts());
}
}
List<SltLeaseInfo> scrap = Convert.toList(SltLeaseInfo.class, scrapList);
//减免费用明细
BigDecimal totalCostReduction = BigDecimal.valueOf(0.00);
List<SltAgreementReduce> reductionList = new ArrayList<>();
// if (sltAgreementInfo.getAgreementId()!=null){
// SltAgreementReduce bean =new SltAgreementReduce();
// bean.setAgreementId(sltAgreementInfo.getAgreementId());
@ -1261,24 +1373,24 @@ public class SltAgreementInfoController extends BaseController {
// }
// }
for (SltAgreementInfo info : sltAgreementInfo) {
if (info.getAgreementId() != null){
SltAgreementReduce bean =new SltAgreementReduce();
bean.setAgreementId(info.getAgreementId());
List<SltAgreementReduce> oneOfList = sltAgreementRecudceMapper.getReductionList(bean);
reductionList.addAll(oneOfList);
}
for (SltAgreementInfo info : sltAgreementInfo) {
if (info.getAgreementId() != null){
SltAgreementReduce bean =new SltAgreementReduce();
bean.setAgreementId(info.getAgreementId());
List<SltAgreementReduce> oneOfList = sltAgreementRecudceMapper.getReductionList(bean);
reductionList.addAll(oneOfList);
}
}
for (SltAgreementReduce reduction : reductionList) {
if(reduction.getLeaseMoney()!=null){
totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney());
}
for (SltAgreementReduce reduction : reductionList) {
if(reduction.getLeaseMoney()!=null){
totalCostReduction = totalCostReduction.add(reduction.getLeaseMoney());
}
}
List<SltLeaseInfo> reduction = Convert.toList(SltLeaseInfo.class, reductionList);
String projectName = handleData(projectNames);
String unitName = handleData(unitNames);
expOutExcelAll(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction);
}
List<SltLeaseInfo> reduction = Convert.toList(SltLeaseInfo.class, reductionList);
String projectName = handleData(projectNames);
String unitName = handleData(unitNames);
expOutExcelAll(response,lease,lose,repair,scrap,reduction,fileName,projectName,unitName,totalCostLease,totalCostLose,totalCostRepair,totalCostScrap,totalCostReduction);
} catch (Exception e) {
log.error(e.toString(), e);
}
@ -1347,7 +1459,14 @@ public class SltAgreementInfoController extends BaseController {
BigDecimal totalCostRepair = BigDecimal.ZERO;
List<SltAgreementInfo> repairList = new ArrayList<>();
List<TmTask> taskListRepair = taskMapper.getTaskIdList(sltAgreementInfo);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(sltAgreementInfo);
if (null != taskListRepair && !taskListRepair.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskListRepair.addAll(taskList2);
}
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(sltAgreementInfo, taskListRepair);
repairList.addAll(repairDetailsList);
}
@ -1362,7 +1481,14 @@ public class SltAgreementInfoController extends BaseController {
BigDecimal totalCostScrap = BigDecimal.ZERO;
List<SltAgreementInfo> scrapList = new ArrayList<>();
List<TmTask> taskListScrap = taskMapper.getTaskIdList(sltAgreementInfo);
List<TmTask> taskListScrap2 = new ArrayList<>();
taskListScrap2 = checkTeamAgreementInfo(sltAgreementInfo);
if (null != taskListScrap && !taskListScrap.isEmpty()) {
if (null != taskListScrap2 && !taskListScrap2.isEmpty()) {
taskListScrap.addAll(taskListScrap2);
}
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(sltAgreementInfo, taskListScrap);
scrapList.addAll(scrapDetailsList);
}
@ -1417,7 +1543,7 @@ public class SltAgreementInfoController extends BaseController {
@PreventRepeatSubmit
@RequiresPermissions("settlement:info:remove")
@SysLog(title = "结算信息", businessType = OperaType.DELETE, logType = 1,module = "仓储管理->删除结算信息")
@DeleteMapping("/{ids}")
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(sltAgreementInfoService.deleteSltAgreementInfoByIds(ids));
}
@ -1449,6 +1575,8 @@ public class SltAgreementInfoController extends BaseController {
@GetMapping("/getSltList")
public TableDataInfo getSltList(SltAgreementInfo bean) {
startPage();
List<SltAgreementInfo> list = sltAgreementInfoService.getSltList(bean);
return getDataTable(list);
}
@ -1460,6 +1588,7 @@ public class SltAgreementInfoController extends BaseController {
@GetMapping("/getLostReportList")
public TableDataInfo getLostReportList(SltAgreementInfo bean) {
startPage();
List<SltAgreementInfo> list = sltAgreementInfoService.getLostReportList(bean);
return getDataTable(list);
}
@ -1566,9 +1695,9 @@ public class SltAgreementInfoController extends BaseController {
// --------- 拿到list中所有的agreementId存成集合给每个info赋值 ------------------
List<Long> agreementIdsArray = list.stream()
.map(SltAgreementInfo::getAgreementId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
.map(SltAgreementInfo::getAgreementId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (agreementIdsArray.isEmpty()) {
return getDataTable(Collections.emptyList());
@ -1577,7 +1706,7 @@ public class SltAgreementInfoController extends BaseController {
// --------- 定义返回集合 ------------------
List<SltInfoVo> dataList = new ArrayList<>(list.size());
// 清空缓存确保每次请求都使用最新的数据避免缓存污染
// 清空缓存确保每次定时任务都使用最新的数据避免缓存污染
sltAgreementInfoService.clearCache();
// 批量处理减少单个查询
@ -1659,26 +1788,24 @@ public class SltAgreementInfoController extends BaseController {
// 批量处理减少单个查询
list.forEach(info -> {
info.setSettlementType(settlementType);
info.setAgreementIds(agreementIdsArray);
info.setSettlementType(settlementType);
info.setAgreementIds(agreementIdsArray);
// 查询每个协议的各项费用明细
SltInfoVo vo = sltAgreementInfoService.getSltInfoReportBatch(info);
if (vo != null) {
vo.setAgreementId(info.getAgreementId());
vo.setAgreementCode(info.getAgreementCode());
vo.setSettlementType(settlementType);
vo.setTotalCostAll(vo.getLeaseCost().add(vo.getRepairCost())
.add(vo.getScrapCost()).add(vo.getLoseCost())
.subtract(vo.getReductionCost()).setScale(GlobalConstants.INT_2, RoundingMode.DOWN));
dataList.add(vo);
}
// 查询每个协议的各项费用明细
SltInfoVo vo = sltAgreementInfoService.getSltInfoReportBatch(info);
if (vo != null) {
vo.setAgreementId(info.getAgreementId());
vo.setAgreementCode(info.getAgreementCode());
vo.setSettlementType(settlementType);
vo.setTotalCostAll(vo.getLeaseCost().add(vo.getRepairCost())
.add(vo.getScrapCost()).add(vo.getLoseCost())
.subtract(vo.getReductionCost()).setScale(GlobalConstants.INT_2, RoundingMode.DOWN));
dataList.add(vo);
}
});
// 清空缓存防止内存泄漏
sltAgreementInfoService.clearCache();
ExcelUtil<SltInfoVo> util = new ExcelUtil<>(SltInfoVo.class);
util.exportExcel(response, dataList, "导出未结算报表列表");
}
@ -1984,7 +2111,12 @@ public class SltAgreementInfoController extends BaseController {
List<TmTask> taskRepairList = taskMapper.getTaskIdList(info);
List<TmTask> taskRepairList2 = new ArrayList<>();
taskRepairList2 = checkTeamAgreementInfo(info);
if (null != taskRepairList && !taskRepairList.isEmpty()) {
if (null != taskRepairList2 && !taskRepairList2.isEmpty()) {
taskRepairList.addAll(taskRepairList2);
}
repairList = sltAgreementInfoMapper.getRepairDetailsList(info, taskRepairList);
}
@ -2000,7 +2132,15 @@ public class SltAgreementInfoController extends BaseController {
List<SltAgreementInfo> scrapList = new ArrayList<>();
List<TmTask> taskScrapList = taskMapper.getTaskIdList(info);
List<TmTask> taskScrapList2 = new ArrayList<>();
taskScrapList2 = checkTeamAgreementInfo(info);
if (null != taskScrapList && !taskScrapList.isEmpty()) {
if (null != taskScrapList2 && !taskScrapList2.isEmpty()) {
taskScrapList.addAll(taskScrapList2);
}
scrapList = sltAgreementInfoMapper.getScrapDetailsList(info, taskScrapList);
}

View File

@ -270,5 +270,16 @@ public class SltAgreementInfo extends BaseEntity {
@ApiModelProperty("年月")
private String yearMonth;
/** 核算员签字 */
@ApiModelProperty(value = "核算员签字")
private String sltSignUrl;
/** 审核签字 */
@ApiModelProperty(value = "审核签字")
private String auditorSignUrl;
/** 审核签字 */
@ApiModelProperty(value = "签字类型")
private String signType;
}

View File

@ -113,7 +113,7 @@ public class SltAgreementInfoLose extends BaseEntity {
private BigDecimal leasePrice;
/** 原值 */
@Excel(name = "单价(元)",sort = 8)
@Excel(name = "单价(元)",sort = 8, cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty(value = "原值")
private BigDecimal buyPrice;
@ -234,7 +234,7 @@ public class SltAgreementInfoLose extends BaseEntity {
private BigDecimal repairCost;
private BigDecimal scrapCost;
@Excel(name = "丢失费用(元)",sort = 9)
@Excel(name = "丢失费用(元)",sort = 9, cellType = Excel.ColumnType.NUMERIC)
private BigDecimal loseCost;
private BigDecimal reductionCost;

View File

@ -150,7 +150,7 @@ public class SltAgreementInfoScrap extends BaseEntity {
* 租赁费用
*/
@ApiModelProperty(value = "租赁费用")
@Excel(name = "报废费用(元)",sort = 9)
@Excel(name = "报废费用(元)",sort = 9, cellType = Excel.ColumnType.NUMERIC)
private BigDecimal costs;
/**
@ -185,6 +185,7 @@ public class SltAgreementInfoScrap extends BaseEntity {
/**
* 是否收费
*/
@Excel(name = "是否收费",sort = 10)
private String partType;
/**

View File

@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import java.math.BigDecimal;
import java.util.Date;
@ -58,35 +59,35 @@ public class SltInfoVo {
/**
* 租赁费用小计
*/
@Excel(name = "租赁费用",sort = 5)
@Excel(name = "租赁费用",sort = 5,align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty(value = "租赁费用小计")
private BigDecimal leaseCost;
/**
* 维修费用小计
*/
@Excel(name = "维修费用",sort = 6)
@Excel(name = "维修费用",sort = 6,align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty(value = "维修费用小计")
private BigDecimal repairCost;
/**
* 报废费用小计
*/
@Excel(name = "报废费用",sort = 8)
@Excel(name = "报废费用",sort = 8,align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty(value = "报废费用小计")
private BigDecimal scrapCost;
/**
* 丢失费用小计
*/
@Excel(name = "丢失费用",sort = 7)
@Excel(name = "丢失费用",sort = 7,align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty(value = "丢失费用小计")
private BigDecimal loseCost;
/**
* 减免费用小计
*/
@Excel(name = "减免费用",sort = 9)
@Excel(name = "减免费用",sort = 9,align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
@ApiModelProperty(value = "减免费用小计")
private BigDecimal reductionCost;
@ -94,7 +95,7 @@ public class SltInfoVo {
* 合计
*/
@ApiModelProperty(value = "合计")
@Excel(name = "合计费用",sort = 10)
@Excel(name = "合计费用",sort = 10,align = HorizontalAlignment.RIGHT, cellType = Excel.ColumnType.NUMERIC)
private BigDecimal totalCostAll;
private String createBy;
@ -144,4 +145,20 @@ public class SltInfoVo {
private String yearMonth;
/** 核算员签字 */
@ApiModelProperty(value = "核算员签字")
private String sltSignUrl;
/** 审核签字 */
@ApiModelProperty(value = "审核签字")
private String auditorSignUrl;
/** 承租负责人签字 */
@ApiModelProperty(value = "承租负责人签字")
private String managerSignUrl;
/** 签字类型 */
@ApiModelProperty(value = "签字类型")
private long signType;
}

View File

@ -337,4 +337,10 @@ public interface SltAgreementInfoMapper {
List<SltAgreementInfo> getRepairCodeList(SltAgreementInfo bean);
SltAgreementInfo getUnitAndProjectByAgreementId(Long agreementId);
SltAgreementInfo getAgreementInfo(SltAgreementInfo info);
List<SltAgreementInfo> selectAgreementInfoList(SltAgreementInfo bean);
List<SltAgreementInfo> getSltLoseList(SltAgreementInfo info);
}

View File

@ -168,6 +168,8 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
@Override
public SltInfoVo getSltInfo(SltAgreementInfo info) {
SltInfoVo sltInfoVo = new SltInfoVo();
sltInfoVo.setUnitName(info.getUnitName());
sltInfoVo.setProjectName(info.getProjectName());
@ -202,13 +204,14 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
}
//丢失费用列表
List<SltAgreementInfo> loseList = getLoseList(info);
//费用减免列表
List<SltAgreementReduce> reductionList = getReductionList(info);
if (CollectionUtils.isEmpty(leaseList) && CollectionUtils.isEmpty(repairList)
&& CollectionUtils.isEmpty(scrapList) && CollectionUtils.isEmpty(loseList)
&& CollectionUtils.isEmpty(reductionList))
&& CollectionUtils.isEmpty(scrapList) && CollectionUtils.isEmpty(loseList)
&& CollectionUtils.isEmpty(reductionList))
{
return null;
}
@ -443,10 +446,11 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
bean.setNum(BigDecimal.ZERO);
}
if (null == bean.getLeaseDays()) {
bean.setLeaseDay(0L);
bean.setLeaseDays("0");
}
BigDecimal leasePrice = bean.getLeasePrice();
BigDecimal num = bean.getNum();
log.info("协议:"+bean.getAgreementId());
BigDecimal leaseDays = new BigDecimal(bean.getLeaseDays());
if (leaseDays.compareTo(BigDecimal.ZERO) < 0) {
leaseDays = BigDecimal.ZERO;
@ -497,13 +501,41 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
public List<SltAgreementInfo> getRepairList(SltAgreementInfo info) {
List<SltAgreementInfo> repairList = new ArrayList<>();
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(info, taskList);
repairList.addAll(repairDetailsList);
}else{
List<SltAgreementInfo> repairDetailsList = sltAgreementInfoMapper.getRepairDetailsList(info, taskList2);
repairList.addAll(repairDetailsList);
}
return repairList;
}
private List<TmTask> checkTeamAgreementInfo(SltAgreementInfo info) {
List<TmTask> teamTaskList = new ArrayList<>();
try{
SltAgreementInfo bean = sltAgreementInfoMapper.getAgreementInfo(info);
List<SltAgreementInfo> agreementInfoList = sltAgreementInfoMapper.selectAgreementInfoList(bean);
if(null != agreementInfoList && !agreementInfoList.isEmpty()){
teamTaskList = taskMapper.getTaskIdListByAgreementList(agreementInfoList);
}
}catch (Exception e){
e.printStackTrace();
}
return teamTaskList;
}
public List<SltAgreementInfo> getRepairListBatch(SltAgreementInfo info) {
return repairListCache.get()
.stream()
@ -514,9 +546,20 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
public List<SltAgreementInfo> getScrapList(SltAgreementInfo info) {
List<SltAgreementInfo> scrapList = new ArrayList<>();
List<TmTask> taskList = taskMapper.getTaskIdList(info);
List<TmTask> taskList2 = new ArrayList<>();
taskList2 = checkTeamAgreementInfo(info);
if (null != taskList && !taskList.isEmpty()) {
if (null != taskList2 && !taskList2.isEmpty()) {
taskList.addAll(taskList2);
}
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(info, taskList);
scrapList.addAll(scrapDetailsList);
}else{
List<SltAgreementInfo> scrapDetailsList = sltAgreementInfoMapper.getScrapDetailsList(info, taskList2);
scrapList.addAll(scrapDetailsList);
}
return scrapList;
}
@ -532,7 +575,13 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
}
public List<SltAgreementInfo> getLoseList(SltAgreementInfo info) {
List<SltAgreementInfo> oneOfList = sltAgreementInfoMapper.getLoseList(info);
List<SltAgreementInfo> oneOfList = new ArrayList<>();
if ( info.getEnableQuerySltData()) {
oneOfList = sltAgreementInfoMapper.getSltLoseList(info);
}else{
oneOfList = sltAgreementInfoMapper.getLoseList(info);
}
List<SltAgreementInfo> loseList = new ArrayList<>(oneOfList);
for (SltAgreementInfo bean : loseList) {
@ -608,18 +657,26 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
leaseCost = leaseCost.add(cost);
}
}
for (SltAgreementInfo repair : repairList) {
if (repair.getAgreementId().equals(sltInfo.getAgreementId())) {
BigDecimal cost = repair.getCosts();
repairCost = repairCost.add(cost);
if(repairList != null) {
for (SltAgreementInfo repair : repairList) {
if(repair !=null){
BigDecimal cost = repair.getCosts();
repairCost = repairCost.add(cost);
}
}
}
for (SltAgreementInfo scrap : scrapList) {
if (scrap.getAgreementId().equals(sltInfo.getAgreementId())) {
BigDecimal cost = scrap.getCosts();
scrapCost = scrapCost.add(cost);
if(scrapList != null) {
for (SltAgreementInfo scrap : scrapList) {
if(scrap !=null){
BigDecimal cost = scrap.getCosts();
scrapCost = scrapCost.add(cost);
}
}
}
for (SltAgreementInfo lose : loseList) {
if (lose.getAgreementId().equals(sltInfo.getAgreementId())) {
relation.setAgreementId(String.valueOf(lose.getAgreementId()));
@ -824,10 +881,12 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
*/
@Override
public List<SltAgreementInfo> getSltList(SltAgreementInfo bean) {
Boolean enableQuerySltData = bean.getEnableQuerySltData();
List<SltAgreementInfo> list = sltAgreementInfoMapper.getSltList(bean);
if (CollectionUtils.isNotEmpty(list)) {
for (SltAgreementInfo row : list) {
SltInfoVo sltInfoVo;
row.setEnableQuerySltData(enableQuerySltData);
sltInfoVo = getSltInfo(row);
if (sltInfoVo != null) {
row.setCosts(sum(sltInfoVo.getLeaseCost(), sltInfoVo.getRepairCost(), sltInfoVo.getScrapCost(), sltInfoVo.getLoseCost()));
@ -850,9 +909,9 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
sltReportedList.removeIf(obj -> Objects.isNull(obj.getSltStatus()) || !Objects.equals("2", obj.getSltStatus()));
sltReportedList.forEach(sltAgreementInfo -> sltAgreementInfo.setCosts(
sltAgreementInfo.getLeaseCost()
.add(sltAgreementInfo.getRepairCost())
.add(sltAgreementInfo.getScrapCost())
.add(sltAgreementInfo.getLoseCost())
.add(sltAgreementInfo.getRepairCost())
.add(sltAgreementInfo.getScrapCost())
.add(sltAgreementInfo.getLoseCost())
));
}
return sltReportedList;
@ -889,12 +948,12 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
// 使用并行流处理大数据量当数据量大于1000时
if (list.size() > 1000) {
list.parallelStream()
.filter(Objects::nonNull)
.forEach(obj -> {
if (obj.getIsSlt() == null) {
obj.setIsSlt("0");
}
});
.filter(Objects::nonNull)
.forEach(obj -> {
if (obj.getIsSlt() == null) {
obj.setIsSlt("0");
}
});
} else {
// 小数据量使用普通流
list.removeIf(Objects::isNull);
@ -918,6 +977,8 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
*/
@Override
public List<SltAgreementInfo> getLostReportList(SltAgreementInfo info) {
int loginUserSettlementTypePermission = this.checkLoginUserHasSettlementPermission();
info.setSettlementType(loginUserSettlementTypePermission);
List<SltAgreementInfo> loseList = sltAgreementInfoMapper.getLostReportList(info);
loseList.removeIf(Objects::isNull);
@ -938,6 +999,9 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
*/
@Override
public List<SltAgreementInfoLose> getLostReportListExport(SltAgreementInfoLose info) {
int loginUserSettlementTypePermission = this.checkLoginUserHasSettlementPermission();
info.setSettlementType(loginUserSettlementTypePermission);
List<SltAgreementInfoLose> loseList = sltAgreementInfoMapper.getLostReportListExport(info);
loseList.removeIf(Objects::isNull);
@ -1068,18 +1132,18 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
// 修改slt_agreement_info的结算状态
int countThree = sltAgreementInfoMapper.updateSltInfoByAgreementIdType(new SltAgreementInfo()
.setAgreementId(sltAgreementApply.getAgreementId())
.setSettlementType(sltAgreementApplyFromDb.getSettlementType())
.setAgreementId(sltAgreementApply.getAgreementId())
.setSettlementType(sltAgreementApplyFromDb.getSettlementType())
);
if (countThree == 0) {
/* if (countThree == 0) {
log.error("slt_agreement_info修改失败" + "协议ID" + sltAgreementApply.getAgreementId() + "" + "结算类型:" + sltAgreementApplyFromDb.getSettlementType());
throw new ServiceException("slt_agreement_info修改失败");
}
*/
// 修改未退还设备状态为丢失
int countFour = sltAgreementInfoMapper.updateMaStatusLoseByAgreementIdType(new SltAgreementInfo()
.setAgreementId(sltAgreementApply.getAgreementId())
.setSettlementType(sltAgreementApplyFromDb.getSettlementType())
.setAgreementId(sltAgreementApply.getAgreementId())
.setSettlementType(sltAgreementApplyFromDb.getSettlementType())
);
if (countFour == 0) {
log.warn("协议ID" + sltAgreementApply.getAgreementId() + ",结算类型:" + sltAgreementApplyFromDb.getSettlementType() + ",无未归还设备,无需更新为丢失状态");
@ -1241,7 +1305,7 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
*/
@Override
public AjaxResult getAgreementInfoById(SelectDto dto) {
List<AgreementVo> vo;
List<AgreementVo> vo;
try {
List<AgreementVo> list = sltAgreementInfoMapper.getAgreementInfoById(dto.getUnitIds(), Integer.parseInt(dto.getProjectId()));
if (CollectionUtils.isNotEmpty(list)) {
@ -1379,7 +1443,7 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
// 情况4跨区间租赁领料在区间前退料/结算在区间后
if (leaseStartTime != null && leaseStartTime.before(inputStartDate)) {
if ((returnTime != null && returnTime.after(inputEndDate)) ||
(settlementTime != null && settlementTime.after(inputEndDate))) {
(settlementTime != null && settlementTime.after(inputEndDate))) {
return true;
}
}
@ -1674,10 +1738,10 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
* @return 汇总结果列表
*/
private List<PeriodCostSummaryVo> aggregateByAgreement(List<PeriodCostResultVo> detailList,
Date queryStartDate, Date queryEndDate) {
Date queryStartDate, Date queryEndDate) {
// 按协议ID分组
Map<Long, List<PeriodCostResultVo>> groupedByAgreement = detailList.stream()
.collect(Collectors.groupingBy(PeriodCostResultVo::getAgreementId));
.collect(Collectors.groupingBy(PeriodCostResultVo::getAgreementId));
List<PeriodCostSummaryVo> summaryList = new ArrayList<>();
@ -1707,16 +1771,16 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
// 计算汇总数据
int equipmentTypeCount = agreementDetails.size(); // 设备种类数量
BigDecimal totalEquipmentCount = agreementDetails.stream()
.map(detail -> detail.getNum() != null ? detail.getNum() : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add); // 设备总数量
.map(detail -> detail.getNum() != null ? detail.getNum() : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add); // 设备总数量
long totalLeaseDays = agreementDetails.stream()
.mapToLong(detail -> detail.getLeaseDays() != null ? detail.getLeaseDays() : 0L)
.sum(); // 总租赁天数
.mapToLong(detail -> detail.getLeaseDays() != null ? detail.getLeaseDays() : 0L)
.sum(); // 总租赁天数
BigDecimal totalLeaseCost = agreementDetails.stream()
.map(detail -> detail.getLeaseCost() != null ? detail.getLeaseCost() : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add); // 总租赁费用
.map(detail -> detail.getLeaseCost() != null ? detail.getLeaseCost() : BigDecimal.ZERO)
.reduce(BigDecimal.ZERO, BigDecimal::add); // 总租赁费用
BigDecimal totalConsumeCost = agreementDetails.stream()
.map(detail -> detail.getConsumeCost() != null ? detail.getConsumeCost() : BigDecimal.ZERO)
@ -1730,22 +1794,22 @@ public class SltAgreementInfoServiceImpl implements ISltAgreementInfoService {
// 找出最早领料时间和最晚退料时间
Date earliestLeaseTime = agreementDetails.stream()
.map(PeriodCostResultVo::getStartTime)
.filter(Objects::nonNull)
.min(Date::compareTo)
.orElse(null);
.map(PeriodCostResultVo::getStartTime)
.filter(Objects::nonNull)
.min(Date::compareTo)
.orElse(null);
Date latestReturnTime = agreementDetails.stream()
.map(PeriodCostResultVo::getEndTime)
.filter(Objects::nonNull)
.max(Date::compareTo)
.orElse(null);
.map(PeriodCostResultVo::getEndTime)
.filter(Objects::nonNull)
.max(Date::compareTo)
.orElse(null);
Date settlementTime = agreementDetails.stream()
.map(PeriodCostResultVo::getSettlementTime)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
.map(PeriodCostResultVo::getSettlementTime)
.filter(Objects::nonNull)
.findFirst()
.orElse(null);
summary.setEquipmentTypeCount(equipmentTypeCount);
summary.setTotalEquipmentCount(totalEquipmentCount);

View File

@ -51,6 +51,14 @@ public class TmTask extends BaseEntity {
@ApiModelProperty(value = "任务编号,如新购单号,领料单号,退料单号等")
private String code;
/** 核算员签字 */
@ApiModelProperty(value = "核算员签字")
private String sltSignUrl;
/** 审核签字 */
@ApiModelProperty(value = "审核签字")
private String auditorSignUrl;
/** 数据所属组织 */
@Excel(name = "数据所属组织")
@ApiModelProperty(value = "数据所属组织")

View File

@ -214,4 +214,5 @@ public interface TmTaskMapper {
*/
List<Long> selectRepairInfo(TmTask info);
List<TmTask> getTaskIdListByAgreementList(@Param("agreementInfoList") List<SltAgreementInfo> agreementInfoList);
}

View File

@ -22,6 +22,9 @@
LEFT JOIN bm_project bp ON bp.pro_id = bai.project_id
LEFT JOIN bm_unit bui ON bui.unit_id = bai.unit_id
WHERE saa.status in ('1', '2', '3')
<if test="keyWord != null and keyWord != ''">
AND (
su.user_name LIKE concat('%', #{keyWord}, '%') or
@ -31,8 +34,8 @@
saa.remark LIKE concat('%', #{keyWord}, '%')
)
</if>
<if test="startTime != null and endTime != ''">
AND DATE_FORMAT( saa.create_time, '%Y-%m-%d' ) BETWEEN #{startTime} AND #{endTime}
<if test="startTime != null and endTime != null ">
AND saa.create_time BETWEEN #{startTime} AND #{endTime}
</if>
<if test="startDate != null and endDate != ''">
AND DATE_FORMAT( saa.create_time, '%Y-%m-%d' ) BETWEEN #{startDate} AND #{endDate}

View File

@ -176,17 +176,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectTaskById" resultType="com.bonus.material.task.domain.TmTask">
SELECT
creator as createBy,
create_time as createTime
saa.creator as createBy,
saa.create_time as createTime,
sur.sign_url AS sltSignUrl,
sur2.sign_url AS auditorSignUrl
FROM
slt_agreement_apply
slt_agreement_apply saa
LEFT JOIN sys_user sur on saa.creator = sur.user_id
LEFT JOIN sys_user sur2 on saa.auditor = sur2.user_id
WHERE
1 =1
<if test="agreementId != null">
and agreement_id = #{agreementId}
and saa.agreement_id = #{agreementId}
</if>
<if test="settlementType != null and settlementType != 0">
and settlement_type = #{settlementType}
and saa.settlement_type = #{settlementType}
</if>
</select>
@ -355,4 +359,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if>
</select>
<select id="getTaskIdListByAgreementList" resultType="com.bonus.material.task.domain.TmTask">
select tta.task_id as taskId
from tm_task_agreement tta
where tta.agreement_id in
<foreach item="item" collection="agreementInfoList" open="(" separator="," close=")">
#{item.agreementId}
</foreach>
</select>
</mapper>