承包合同,安全质量大屏

This commit is contained in:
lcj
2025-10-21 18:29:06 +08:00
parent ceecec97c7
commit a5f661b558
8 changed files with 96 additions and 13 deletions

View File

@ -5,7 +5,6 @@ import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdcardUtil; import cn.hutool.core.util.IdcardUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@ -129,7 +128,7 @@ public class DemoTest {
log.info("执行定时任务:同步 {}至{} 计划详情到施工产值", lastMonday, lastSunday); log.info("执行定时任务:同步 {}至{} 计划详情到施工产值", lastMonday, lastSunday);
Boolean synced = progressPlanDetailService.syncPlanDetail2ConstructionValue(lastMonday, lastSunday, null);*/ Boolean synced = progressPlanDetailService.syncPlanDetail2ConstructionValue(lastMonday, lastSunday, null);*/
LocalDate start = LocalDate.of(2024, 1, 1); // 起始时间2024-01-01 LocalDate start = LocalDate.of(2024, 1, 1); // 起始时间2024-01-01
LocalDate end = LocalDate.of(2025, 10, 13); // 截止时间2025-09-15 LocalDate end = LocalDate.of(2025, 10, 20); // 截止时间2025-09-15
// 如果起始不是周一,调整到当周的周一 // 如果起始不是周一,调整到当周的周一
if (start.getDayOfWeek() != DayOfWeek.MONDAY) { if (start.getDayOfWeek() != DayOfWeek.MONDAY) {
@ -149,7 +148,7 @@ public class DemoTest {
.ge(PgsProgressPlanDetail::getDate, monday) .ge(PgsProgressPlanDetail::getDate, monday)
.le(PgsProgressPlanDetail::getDate, sunday) .le(PgsProgressPlanDetail::getDate, sunday)
.ne(PgsProgressPlanDetail::getFinishedNumber, BigDecimal.ZERO) .ne(PgsProgressPlanDetail::getFinishedNumber, BigDecimal.ZERO)
.eq(PgsProgressPlanDetail::getStatus, "1") // .eq(PgsProgressPlanDetail::getStatus, "1")
.list(); .list();
if (CollUtil.isEmpty(planDetailList)) { if (CollUtil.isEmpty(planDetailList)) {
// 下一周 // 下一周
@ -244,8 +243,8 @@ public class DemoTest {
value.setOutValue(constructionValue); value.setOutValue(constructionValue);
value.setOwnerValue(ownerValue); value.setOwnerValue(ownerValue);
// 统计总产值 // 统计总产值
allConstructionValue = allConstructionValue.add(constructionValue).setScale(4, RoundingMode.HALF_UP); allConstructionValue = allConstructionValue.add(constructionValue);
allOwnerValue = allOwnerValue.add(ownerValue).setScale(4, RoundingMode.HALF_UP); allOwnerValue = allOwnerValue.add(ownerValue);
// 添加需要修改状态的计划详情 // 添加需要修改状态的计划详情
PgsProgressPlanDetail update = new PgsProgressPlanDetail(); PgsProgressPlanDetail update = new PgsProgressPlanDetail();
update.setId(planDetail.getId()); update.setId(planDetail.getId());
@ -253,8 +252,8 @@ public class DemoTest {
updateList.add(update); updateList.add(update);
saveList.add(value); saveList.add(value);
} }
range.setOutValue(allConstructionValue); range.setOutValue(allConstructionValue.setScale(4, RoundingMode.HALF_UP));
range.setOwnerValue(allOwnerValue); range.setOwnerValue(allOwnerValue.setScale(4, RoundingMode.HALF_UP));
// 如果产值都为0则不保存 // 如果产值都为0则不保存
if (allConstructionValue.compareTo(BigDecimal.ZERO) == 0 && allOwnerValue.compareTo(BigDecimal.ZERO) == 0) { if (allConstructionValue.compareTo(BigDecimal.ZERO) == 0 && allOwnerValue.compareTo(BigDecimal.ZERO) == 0) {
return null; return null;

View File

@ -6,7 +6,6 @@ import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
@ -17,6 +16,7 @@ import org.dromara.common.web.core.BaseController;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo; import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq; import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq; import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementTotalVo;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import org.dromara.ctr.service.ICtrContractProgressSettlementService; import org.dromara.ctr.service.ICtrContractProgressSettlementService;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -92,6 +92,15 @@ public class CtrContractProgressSettlementController extends BaseController {
return toAjax(ctrContractProgressSettlementService.updateByBo(req)); return toAjax(ctrContractProgressSettlementService.updateByBo(req));
} }
/**
* 查询金额合计
*/
@SaCheckPermission("ctr:contractProgressSettlement:query")
@GetMapping("/queryMoneyTotal")
public R<CtrContractProgressSettlementTotalVo> queryMoneyTotal(CtrContractProgressSettlementBo bo) {
return R.ok(ctrContractProgressSettlementService.queryMoneyTotal(bo));
}
/** /**
* 删除承包合同进度结算 * 删除承包合同进度结算
* *

View File

@ -0,0 +1,23 @@
package org.dromara.ctr.domain.vo;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author lilemy
* @date 2025-10-21 11:01
*/
@Data
public class CtrContractProgressSettlementTotalVo implements Serializable {
@Serial
private static final long serialVersionUID = 1537548228169684228L;
/**
* 总金额
*/
private BigDecimal moneyTotal;
}

View File

@ -7,6 +7,7 @@ import org.dromara.ctr.domain.CtrContractProgressSettlement;
import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo; import org.dromara.ctr.domain.bo.CtrContractProgressSettlementBo;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq; import org.dromara.ctr.domain.dto.CtrContractProgressSettlementCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq; import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementTotalVo;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import java.util.Collection; import java.util.Collection;
@ -45,6 +46,14 @@ public interface ICtrContractProgressSettlementService extends IService<CtrContr
*/ */
List<CtrContractProgressSettlementVo> queryList(CtrContractProgressSettlementBo bo); List<CtrContractProgressSettlementVo> queryList(CtrContractProgressSettlementBo bo);
/**
* 查询金额统计
*
* @param bo 查询条件
* @return 金额统计
*/
CtrContractProgressSettlementTotalVo queryMoneyTotal(CtrContractProgressSettlementBo bo);
/** /**
* 新增承包合同进度结算 * 新增承包合同进度结算
* *

View File

@ -22,6 +22,7 @@ import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemCreateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemUpdateReq; import org.dromara.ctr.domain.dto.CtrContractProgressSettlementItemUpdateReq;
import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq; import org.dromara.ctr.domain.dto.CtrContractProgressSettlementUpdateReq;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo; import org.dromara.ctr.domain.vo.CtrContractProgressSettlementItemVo;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementTotalVo;
import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo; import org.dromara.ctr.domain.vo.CtrContractProgressSettlementVo;
import org.dromara.ctr.mapper.CtrContractProgressSettlementMapper; import org.dromara.ctr.mapper.CtrContractProgressSettlementMapper;
import org.dromara.ctr.service.ICtrContractProgressSettlementItemService; import org.dromara.ctr.service.ICtrContractProgressSettlementItemService;
@ -32,6 +33,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
@ -104,6 +106,47 @@ public class CtrContractProgressSettlementServiceImpl extends ServiceImpl<CtrCon
return baseMapper.selectVoList(lqw); return baseMapper.selectVoList(lqw);
} }
/**
* 查询金额统计
*
* @param bo 查询条件
* @return 金额统计
*/
@Override
public CtrContractProgressSettlementTotalVo queryMoneyTotal(CtrContractProgressSettlementBo bo) {
LambdaQueryWrapper<CtrContractProgressSettlement> lqw = Wrappers.lambdaQuery();
Long deptId = bo.getDeptId();
String type = bo.getType();
if (ObjectUtils.isNotEmpty(deptId) && StringUtils.isNotBlank(type) && !LoginHelper.isSuperAdmin()) {
SysDeptVo sysDeptVo = deptService.selectDeptById(deptId);
List<Long> list = StringUtils.splitTo(sysDeptVo.getAncestors(), Convert::toLong);
if (list.size() == 2 && Objects.equals(type, "1")) {
lqw.eq(CtrContractProgressSettlement::getDeptId, deptId);
} else if (list.size() == 2 && Objects.equals(type, "2")) {
lqw.eq(CtrContractProgressSettlement::getSettlementUnit, deptId);
} else if (list.size() > 2 && Objects.equals(type, "1")) {
lqw.eq(CtrContractProgressSettlement::getDeptId, list.get(2));
} else if (list.size() > 2 && Objects.equals(type, "2")) {
lqw.eq(CtrContractProgressSettlement::getSettlementUnit, list.get(2));
}
}
List<CtrContractProgressSettlement> settlementList = this.list(lqw);
CtrContractProgressSettlementTotalVo vo = new CtrContractProgressSettlementTotalVo();
if (CollUtil.isEmpty(settlementList)) {
return vo;
}
if (Objects.equals(type, "1")) {
vo.setMoneyTotal(settlementList.stream().map(CtrContractProgressSettlement::getSettlementMoney)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add));
} else if (Objects.equals(type, "2")) {
vo.setMoneyTotal(settlementList.stream().map(CtrContractProgressSettlement::getDeductionMoney)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add));
}
return vo;
}
private LambdaQueryWrapper<CtrContractProgressSettlement> buildQueryWrapper(CtrContractProgressSettlementBo bo) { private LambdaQueryWrapper<CtrContractProgressSettlement> buildQueryWrapper(CtrContractProgressSettlementBo bo) {
Map<String, Object> params = bo.getParams(); Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CtrContractProgressSettlement> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<CtrContractProgressSettlement> lqw = Wrappers.lambdaQuery();

View File

@ -254,7 +254,7 @@ public class PgsConstructionSchedulePlanServiceImpl extends ServiceImpl<PgsConst
} }
// 主 Sheet 设置表头 // 主 Sheet 设置表头
Row sheetRow = mainSheet.createRow(0); Row sheetRow = mainSheet.createRow(0);
String[] headers = {"编号格式11-11-1-1。用于进行父子结构关联", "节点名称", "对应项目结构", "对应项目结构编码", String[] headers = {"编号格式11.11.1.1。用于进行父子结构关联", "节点名称", "对应项目结构", "对应项目结构编码",
"预计开始时间输入格式2025-09-06", "预计结束时间", "实际开始时间", "实际结束时间", "状态", "状态编码", "备注"}; "预计开始时间输入格式2025-09-06", "预计结束时间", "实际开始时间", "实际结束时间", "状态", "状态编码", "备注"};
for (int i = 0; i < headers.length; i++) { for (int i = 0; i < headers.length; i++) {
Cell cell = sheetRow.createCell(i); Cell cell = sheetRow.createCell(i);

View File

@ -145,7 +145,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
} }
// 获取巡检情况 // 获取巡检情况
List<QltQualityInspectionGis> list = qualityInspectionList.stream() List<QltQualityInspectionGis> list = qualityInspectionList.stream()
.filter(q -> "2".equals(q.getIsReply())) // .filter(q -> "2".equals(q.getIsReply()))
.toList().stream().map(q -> { .toList().stream().map(q -> {
QltQualityInspectionGis gis = new QltQualityInspectionGis(); QltQualityInspectionGis gis = new QltQualityInspectionGis();
BeanUtils.copyProperties(q, gis); BeanUtils.copyProperties(q, gis);
@ -153,7 +153,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
}).toList(); }).toList();
gisVo.setList(list.stream() gisVo.setList(list.stream()
.sorted(Comparator.comparing(QltQualityInspectionGis::getCreateTime).reversed()) .sorted(Comparator.comparing(QltQualityInspectionGis::getCreateTime).reversed())
.limit(Optional.ofNullable(req.getPageSize()).orElse(20)) // .limit(Optional.ofNullable(req.getPageSize()).orElse(20))
.toList()); .toList());
gisVo.setCount((long) list.size()); gisVo.setCount((long) list.size());
// 获取整改情况 // 获取整改情况
@ -168,7 +168,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl<QltQualityInspe
gisVo.setCorrectSituation((long) correctList.size()); gisVo.setCorrectSituation((long) correctList.size());
gisVo.setCorrectList(correctList.stream() gisVo.setCorrectList(correctList.stream()
.sorted(Comparator.comparing(QltQualityInspectionGis::getCreateTime).reversed()) .sorted(Comparator.comparing(QltQualityInspectionGis::getCreateTime).reversed())
.limit(Optional.ofNullable(req.getPageSize()).orElse(20)) // .limit(Optional.ofNullable(req.getPageSize()).orElse(20))
.toList()); .toList());
// gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / qualityInspectionList.size())); // gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / qualityInspectionList.size()));
return gisVo; return gisVo;

View File

@ -232,7 +232,7 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
return gis; return gis;
}).toList(); }).toList();
List<HseSafetyInspectionGis> inspections = safetyInspectionList.stream() List<HseSafetyInspectionGis> inspections = safetyInspectionList.stream()
.filter(q -> "2".equals(q.getIsReply())) // .filter(q -> "2".equals(q.getIsReply()))
.toList() .toList()
.stream().map(p -> { .stream().map(p -> {
HseSafetyInspectionGis gis = new HseSafetyInspectionGis(); HseSafetyInspectionGis gis = new HseSafetyInspectionGis();