添加抓拍,修改项目大屏
This commit is contained in:
@ -297,7 +297,7 @@ dxf2GeoJson:
|
||||
file-name: main.exe
|
||||
ys7:
|
||||
app-key: 3acf9f1a43dc4209841e0893003db0a2
|
||||
app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36
|
||||
app-secret: 09e29c70ae1161fbc3ce2030fc09ba2e
|
||||
#ys7:
|
||||
# app-key: 081b0d6d5f7f4de8bc5c7fa350fb26ec
|
||||
# app-secret: caa37b9f60ef02deb57e563bc190e6db
|
||||
|
||||
@ -167,7 +167,7 @@ public class ProjectBigScreenController extends BaseController {
|
||||
// vo.setContent(event.getContent());
|
||||
// return vo;
|
||||
// }).toList());
|
||||
return R.ok(projectNewsService.getLimtVoByProjectId(projectId));
|
||||
return R.ok(projectBigScreenService.getProjectNews(projectId));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -221,7 +221,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
return vo;
|
||||
}
|
||||
// 子项目id列表
|
||||
List<Long> subProjectIds = subProjectList.stream().map(BusProject::getId).toList();
|
||||
List<Long> projectIds = new ArrayList<>(subProjectList.stream().map(BusProject::getId).toList());
|
||||
// 计算集电线路
|
||||
vo.setCollectorLinePercentage(BigDecimal.valueOf(0.00));
|
||||
// 计算送出线路
|
||||
@ -235,8 +235,9 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
// 计算箱变
|
||||
vo.setBoxTransformerPercentage(BigDecimal.ZERO);
|
||||
// 获取集电线路、送出线路、升压站数据
|
||||
projectIds.add(projectId);
|
||||
List<PgsProgressCategory> progressCategoryList = progressCategoryService.lambdaQuery()
|
||||
.in(PgsProgressCategory::getProjectId, subProjectIds)
|
||||
.in(PgsProgressCategory::getProjectId, projectIds)
|
||||
.in(PgsProgressCategory::getName, "集电线路", "送出线路", "升压站", "光伏场区")
|
||||
.eq(PgsProgressCategory::getParentId, 0L)
|
||||
.list();
|
||||
@ -304,7 +305,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
}
|
||||
// 计算道路
|
||||
List<PgsProgressCategory> roadCategoryList = progressCategoryService.lambdaQuery()
|
||||
.in(PgsProgressCategory::getProjectId, subProjectIds)
|
||||
.in(PgsProgressCategory::getProjectId, projectIds)
|
||||
.like(PgsProgressCategory::getName, "道路")
|
||||
.ne(PgsProgressCategory::getUnitType, PgsProgressUnitTypeEnum.NULL.getValue())
|
||||
.list();
|
||||
@ -316,7 +317,7 @@ public class ProjectBigScreenServiceImpl implements ProjectBigScreenService {
|
||||
}
|
||||
// 计算箱变
|
||||
List<PgsProgressCategory> boxTransformerCategoryList = progressCategoryService.lambdaQuery()
|
||||
.in(PgsProgressCategory::getProjectId, subProjectIds)
|
||||
.in(PgsProgressCategory::getProjectId, projectIds)
|
||||
.like(PgsProgressCategory::getName, "箱变")
|
||||
.ne(PgsProgressCategory::getUnitType, PgsProgressUnitTypeEnum.NULL.getValue())
|
||||
.list();
|
||||
|
||||
@ -26,7 +26,7 @@ import java.util.stream.Collectors;
|
||||
* @date 2025/6/18 15:59
|
||||
*/
|
||||
@Slf4j
|
||||
//@Component
|
||||
@Component
|
||||
public class IncSyncYs7DeviceCapturePicData {
|
||||
|
||||
@Resource
|
||||
@ -43,8 +43,8 @@ public class IncSyncYs7DeviceCapturePicData {
|
||||
|
||||
private final ExecutorService executorService = Executors.newFixedThreadPool(5);
|
||||
|
||||
// 每 30 分钟执行一次
|
||||
@Scheduled(cron = "0 */30 7-19 * * ?")
|
||||
// 每 15 分钟执行一次
|
||||
@Scheduled(cron = "0 */15 7-19 * * ?")
|
||||
public void run() {
|
||||
// 查询所有在线的摄像头设备,仅获取必要字段
|
||||
List<OthYs7Device> deviceList = ys7DeviceService.lambdaQuery()
|
||||
|
||||
@ -102,7 +102,7 @@ public class OthYs7DeviceController extends BaseController {
|
||||
/**
|
||||
* 修改萤石摄像头所属项目
|
||||
*/
|
||||
@SaCheckPermission("other:ys7Device:withProject")
|
||||
@SaCheckPermission("other:ys7Device:edit")
|
||||
@Log(title = "萤石摄像头", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/with/project")
|
||||
@ -113,7 +113,7 @@ public class OthYs7DeviceController extends BaseController {
|
||||
/**
|
||||
* 修改萤石摄像头视频加密
|
||||
*/
|
||||
@SaCheckPermission("other:ys7Device:videoEncrypted")
|
||||
@SaCheckPermission("other:ys7Device:edit")
|
||||
@Log(title = "萤石摄像头", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping("/video/encrypted")
|
||||
|
||||
@ -12,6 +12,7 @@ import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCaptureReq;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgQueryReq;
|
||||
import org.dromara.other.domain.vo.ys7deviceimg.OthYs7DeviceImgVo;
|
||||
import org.dromara.other.service.IOthYs7DeviceImgService;
|
||||
@ -66,6 +67,16 @@ public class OthYs7DeviceImgController extends BaseController {
|
||||
return R.ok(othYs7DeviceImgService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 萤石摄像头图片抓图
|
||||
*/
|
||||
@SaCheckPermission("other:ys7DeviceImg:capture")
|
||||
@Log(title = "萤石摄像头图片", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/capture")
|
||||
public R<Void> capture(@RequestBody OthYs7DeviceImgCaptureReq req) {
|
||||
return toAjax(othYs7DeviceImgService.capturePic(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除萤石摄像头图片
|
||||
*
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
package org.dromara.other.domain.dto.ys7deviceimg;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025-10-10 19:14
|
||||
*/
|
||||
@Data
|
||||
public class OthYs7DeviceImgCaptureReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 678123111752523000L;
|
||||
|
||||
/**
|
||||
* 设备序列号
|
||||
*/
|
||||
@NotBlank(message = "设备序列号不能为空")
|
||||
private String deviceSerial;
|
||||
}
|
||||
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.other.domain.OthYs7DeviceImg;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCaptureReq;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCreateByCapture;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgQueryReq;
|
||||
import org.dromara.other.domain.vo.ys7deviceimg.OthYs7DeviceImgVo;
|
||||
@ -93,4 +94,12 @@ public interface IOthYs7DeviceImgService extends IService<OthYs7DeviceImg> {
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids);
|
||||
|
||||
/**
|
||||
* 抓拍图片
|
||||
*
|
||||
* @param req 抓拍图片参数
|
||||
* @return 是否抓拍成功
|
||||
*/
|
||||
Boolean capturePic(OthYs7DeviceImgCaptureReq req);
|
||||
}
|
||||
|
||||
@ -20,13 +20,17 @@ import org.dromara.manager.recognizermanager.enums.RecognizerTypeEnum;
|
||||
import org.dromara.manager.recognizermanager.vo.RecognizeImageStreamResult;
|
||||
import org.dromara.manager.recognizermanager.vo.RecognizeTargetVo;
|
||||
import org.dromara.manager.recognizermanager.vo.RecognizeVo;
|
||||
import org.dromara.manager.ys7manager.Ys7Manager;
|
||||
import org.dromara.other.constant.Ys7DeviceImgConstant;
|
||||
import org.dromara.other.domain.OthYs7Device;
|
||||
import org.dromara.other.domain.OthYs7DeviceImg;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCaptureReq;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgCreateByCapture;
|
||||
import org.dromara.other.domain.dto.ys7deviceimg.OthYs7DeviceImgQueryReq;
|
||||
import org.dromara.other.domain.vo.ys7deviceimg.OthYs7DeviceImgVo;
|
||||
import org.dromara.other.mapper.OthYs7DeviceImgMapper;
|
||||
import org.dromara.other.service.IOthYs7DeviceImgService;
|
||||
import org.dromara.other.service.IOthYs7DeviceService;
|
||||
import org.dromara.safety.domain.dto.recognizerecord.HseRecognizeRecordCreateDto;
|
||||
import org.dromara.safety.domain.enums.HseRecordCategoryEnum;
|
||||
import org.dromara.safety.service.IHseRecognizeRecordService;
|
||||
@ -62,6 +66,12 @@ public class OthYs7DeviceImgServiceImpl extends ServiceImpl<OthYs7DeviceImgMappe
|
||||
@Resource
|
||||
private IHseRecognizeRecordService recognizeRecordService;
|
||||
|
||||
@Resource
|
||||
private IOthYs7DeviceService ys7DeviceService;
|
||||
|
||||
@Resource
|
||||
private Ys7Manager ys7Manager;
|
||||
|
||||
/**
|
||||
* 查询萤石摄像头图片
|
||||
*
|
||||
@ -317,6 +327,40 @@ public class OthYs7DeviceImgServiceImpl extends ServiceImpl<OthYs7DeviceImgMappe
|
||||
return this.removeBatchByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 抓拍图片
|
||||
*
|
||||
* @param req 抓拍图片参数
|
||||
* @return 是否抓拍成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean capturePic(OthYs7DeviceImgCaptureReq req) {
|
||||
OthYs7Device ys7Device = ys7DeviceService.lambdaQuery()
|
||||
.eq(OthYs7Device::getDeviceSerial, req.getDeviceSerial())
|
||||
.last("limit 1")
|
||||
.one();
|
||||
if (ys7Device == null) {
|
||||
throw new ServiceException("设备不存在", HttpStatus.ERROR);
|
||||
}
|
||||
String deviceSerial = ys7Device.getDeviceSerial();
|
||||
// 如果没有预置位,则直接对默认通道抓图
|
||||
OthYs7DeviceImgCreateByCapture img = new OthYs7DeviceImgCreateByCapture();
|
||||
img.setProjectId(ys7Device.getProjectId());
|
||||
img.setDeviceSerial(deviceSerial);
|
||||
img.setDeviceName(ys7Device.getDeviceName());
|
||||
try {
|
||||
String url = ys7Manager.getCaptureDevicePic(deviceSerial, 1, 2);
|
||||
img.setCreateTime(new Date());
|
||||
img.setUrl(url);
|
||||
} catch (Exception e) {
|
||||
log.error("摄像头 {} 抓图失败:{}", deviceSerial, e.getMessage());
|
||||
throw new ServiceException("摄像头 " + deviceSerial + " 抓图失败:" + e.getMessage(), HttpStatus.ERROR);
|
||||
}
|
||||
this.saveCapturePic(List.of(img));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提取文件名
|
||||
*
|
||||
|
||||
@ -189,30 +189,34 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
List<HseTeamMeeting> teamMeetings = teamMeetingService.lambdaQuery()
|
||||
.eq(HseTeamMeeting::getProjectId, projectId)
|
||||
.list();
|
||||
if (CollUtil.isEmpty(teamMeetings)) {
|
||||
return gisVo;
|
||||
if (CollUtil.isNotEmpty(teamMeetings)) {
|
||||
// 获取最新的班组列表
|
||||
List<HseTeamMeeting> topList = teamMeetings.stream()
|
||||
.sorted(Comparator.comparing(HseTeamMeeting::getCreateTime).reversed())
|
||||
.limit(Optional.ofNullable(req.getPageSize()).orElse(20))
|
||||
.toList();
|
||||
List<Long> teamIds = topList.stream().map(HseTeamMeeting::getTeamId).toList();
|
||||
Map<Long, List<BusProjectTeam>> teamMap = projectTeamService.lambdaQuery()
|
||||
.in(BusProjectTeam::getId, teamIds)
|
||||
.list().stream().collect(Collectors.groupingBy(BusProjectTeam::getId));
|
||||
List<HseTeamMeetingGis> gisList = topList.stream().map(teamMeeting -> {
|
||||
HseTeamMeetingGis gis = new HseTeamMeetingGis();
|
||||
BeanUtils.copyProperties(teamMeeting, gis);
|
||||
gis.setName("站班会");
|
||||
if (teamMap.containsKey(teamMeeting.getTeamId())) {
|
||||
gis.setTeamName(teamMap.get(teamMeeting.getTeamId()).getFirst().getTeamName());
|
||||
}
|
||||
return gis;
|
||||
}).toList();
|
||||
gisVo.setTeamMeetingList(gisList);
|
||||
} else {
|
||||
gisVo.setTeamMeetingList(new ArrayList<>());
|
||||
}
|
||||
// 获取最新的班组列表
|
||||
List<HseTeamMeeting> topList = teamMeetings.stream()
|
||||
.sorted(Comparator.comparing(HseTeamMeeting::getCreateTime).reversed())
|
||||
.limit(Optional.ofNullable(req.getPageSize()).orElse(20))
|
||||
.toList();
|
||||
List<Long> teamIds = topList.stream().map(HseTeamMeeting::getTeamId).toList();
|
||||
Map<Long, List<BusProjectTeam>> teamMap = projectTeamService.lambdaQuery()
|
||||
.in(BusProjectTeam::getId, teamIds)
|
||||
.list().stream().collect(Collectors.groupingBy(BusProjectTeam::getId));
|
||||
List<HseTeamMeetingGis> gisList = topList.stream().map(teamMeeting -> {
|
||||
HseTeamMeetingGis gis = new HseTeamMeetingGis();
|
||||
BeanUtils.copyProperties(teamMeeting, gis);
|
||||
gis.setName("站班会");
|
||||
if (teamMap.containsKey(teamMeeting.getTeamId())) {
|
||||
gis.setTeamName(teamMap.get(teamMeeting.getTeamId()).getFirst().getTeamName());
|
||||
}
|
||||
return gis;
|
||||
}).toList();
|
||||
// 获取整改情况
|
||||
List<HseSafetyInspection> safetyInspectionList = this.lambdaQuery()
|
||||
.eq(HseSafetyInspection::getProjectId, projectId).list();
|
||||
.select(HseSafetyInspection::getId, HseSafetyInspection::getStatus, HseSafetyInspection::getIsReply)
|
||||
.eq(HseSafetyInspection::getProjectId, projectId)
|
||||
.list();
|
||||
long passCount = 0L;
|
||||
for (HseSafetyInspection safetyInspection : safetyInspectionList) {
|
||||
if (HseSafetyInspectionStatusEnum.REVIEW.getValue().equals(safetyInspection.getStatus())
|
||||
@ -220,11 +224,18 @@ public class HseSafetyInspectionServiceImpl extends ServiceImpl<HseSafetyInspect
|
||||
passCount++;
|
||||
}
|
||||
}
|
||||
gisVo.setTeamMeetingList(gisList);
|
||||
int safetyInspectionCount = safetyInspectionList.stream()
|
||||
.filter(inspection -> inspection.getIsReply().equals("2"))
|
||||
.toList()
|
||||
.size();
|
||||
int correctSituationCount = safetyInspectionList.stream()
|
||||
.filter(inspection -> inspection.getIsReply().equals("1") && !inspection.getStatus().equals("1"))
|
||||
.toList()
|
||||
.size();
|
||||
gisVo.setTeamMeetingCount((long) teamMeetings.size());
|
||||
gisVo.setSafetyInspectionCount((long) safetyInspectionList.size());
|
||||
gisVo.setCorrectSituationCount(passCount);
|
||||
gisVo.setCorrectSituation(String.format("%.2f", passCount * 100.0 / safetyInspectionList.size()));
|
||||
gisVo.setSafetyInspectionCount((long) safetyInspectionCount);
|
||||
gisVo.setCorrectSituationCount((long) correctSituationCount);
|
||||
gisVo.setCorrectSituation(String.format("%.2f", correctSituationCount * 100.0 / safetyInspectionCount));
|
||||
return gisVo;
|
||||
}
|
||||
|
||||
|
||||
0
xinnengyuan/script/sql/bhbzj.sql
Normal file
0
xinnengyuan/script/sql/bhbzj.sql
Normal file
297
xinnengyuan/script/sql/lxjcb.sql
Normal file
297
xinnengyuan/script/sql/lxjcb.sql
Normal file
@ -0,0 +1,297 @@
|
||||
use xinnengyuandev;
|
||||
|
||||
CREATE TABLE `xzd_project_manager_approval`
|
||||
(
|
||||
`id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
`document_number` VARCHAR(50) NOT NULL COMMENT '单据编号',
|
||||
`title` VARCHAR(255) NULL COMMENT '标题',
|
||||
`record_date` DATE NULL COMMENT '日期',
|
||||
`project_name` VARCHAR(255) NOT NULL COMMENT '项目名称',
|
||||
`customer_name` VARCHAR(255) NULL COMMENT '客户名称',
|
||||
`project_scale` VARCHAR(255) NULL COMMENT '项目规模',
|
||||
`contract_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '合同金额',
|
||||
`prospective_manager_name` VARCHAR(100) NULL COMMENT '拟任项目经理',
|
||||
`id_card_number` VARCHAR(30) NULL COMMENT '身份证号',
|
||||
`education_level` VARCHAR(50) NULL COMMENT '教育程度',
|
||||
`work_experience_years` DECIMAL(5, 1) NULL COMMENT '工作年限',
|
||||
`professional_experience_years` DECIMAL(5, 1) NULL COMMENT '专业年限',
|
||||
`contract_employment_type` VARCHAR(100) NULL COMMENT '合同用工形式',
|
||||
`qualification_certificates` TEXT NULL COMMENT '资格证书',
|
||||
`is_historical_data` varchar(16) NULL COMMENT '是否属于历史数据补录',
|
||||
`file_id` varchar(1024) NULL COMMENT '文件ID',
|
||||
`remark` TEXT NULL COMMENT '备注',
|
||||
`audit_status` VARCHAR(32) default 'draft' NULL COMMENT '审核状态',
|
||||
`create_by` bigint NULL COMMENT '创建者',
|
||||
`update_by` bigint NULL COMMENT '更新者',
|
||||
`create_dept` bigint NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间'
|
||||
) COMMENT ='项目经理推荐及审批';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project`
|
||||
(
|
||||
`id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
|
||||
`project_number` VARCHAR(100) NOT NULL COMMENT '项目编号',
|
||||
`project_name` VARCHAR(512) NOT NULL COMMENT '项目名称',
|
||||
`project_abbreviation` VARCHAR(255) NULL COMMENT '项目简称',
|
||||
`project_type` BIGINT NULL COMMENT '项目类型',
|
||||
`project_status` VARCHAR(50) NULL COMMENT '项目状态',
|
||||
`planned_start_date` DATE NULL COMMENT '计划开工日期',
|
||||
`planned_completion_date` DATE NULL COMMENT '计划竣工日期',
|
||||
`actual_start_date` DATE NULL COMMENT '实际开工日期',
|
||||
`actual_completion_date` DATE NULL COMMENT '实际竣工日期',
|
||||
`management_organization` VARCHAR(255) NULL COMMENT '管理组织',
|
||||
`project_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '项目金额',
|
||||
`filing_manager` BIGINT NULL COMMENT '项目备案经理',
|
||||
`manager_execution` BIGINT NULL COMMENT '项目执行经理',
|
||||
`manager_responsible` BIGINT NULL COMMENT '项目责任人',
|
||||
`winning_bid_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '项目中标金额',
|
||||
`planned_duration` INT NULL COMMENT '计划工期',
|
||||
`actual_duration` INT NULL COMMENT '实际工期',
|
||||
`default_financial_organization` VARCHAR(255) NULL COMMENT '默认财务组织',
|
||||
`contracting_method` VARCHAR(100) NULL COMMENT '承包方式',
|
||||
`involved_financial_organization` VARCHAR(255) NULL COMMENT '涉及财务组织',
|
||||
`business_model` VARCHAR(64) NULL COMMENT '经营模式',
|
||||
`construction_unit` VARCHAR(255) NULL COMMENT '建设单位',
|
||||
`project_attribute` VARCHAR(64) NULL COMMENT '项目属性',
|
||||
`group_project` VARCHAR(64) NULL COMMENT '集团项目',
|
||||
`description` TEXT NULL COMMENT '说明',
|
||||
`project_establishment_date` DATE NULL COMMENT '立项日期',
|
||||
`planned_total_investment` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '计划总投资',
|
||||
`gov_filing_project_name` VARCHAR(255) NULL COMMENT '政府备案项目名称',
|
||||
`manager_execution_phone` VARCHAR(50) NULL COMMENT '项目执行经理电话',
|
||||
`sharing_organization` VARCHAR(255) NULL COMMENT '共享组织',
|
||||
`target_winning_bid_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '目标中标金额',
|
||||
`target_contract_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '目标合同金额',
|
||||
`target_output_value_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '目标产值金额',
|
||||
`target_collection_amount` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '目标收款金额',
|
||||
`file_id` VARCHAR(1024) NULL COMMENT '文件ID',
|
||||
`remark` TEXT NULL COMMENT '备注',
|
||||
`audit_status` VARCHAR(32) default 'draft' NULL COMMENT '审核状态',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间'
|
||||
) COMMENT ='项目信息';
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_profile`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`country` VARCHAR(128) NULL COMMENT '国家',
|
||||
`province` VARCHAR(128) NULL COMMENT '省',
|
||||
`city` VARCHAR(128) NULL COMMENT '城市',
|
||||
`district` VARCHAR(128) NULL COMMENT '区县',
|
||||
`project_address` VARCHAR(255) NOT NULL COMMENT '项目地址',
|
||||
`building_area` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '建筑面积',
|
||||
`building_area_unit` VARCHAR(64) NULL COMMENT '建筑面积单位',
|
||||
`floor_count` DECIMAL(16, 2) DEFAULT 0.00 NULL COMMENT '层数',
|
||||
`height` DECIMAL(20, 2) DEFAULT 0.0000 NULL COMMENT '高度(米)',
|
||||
`parent_project_id` BIGINT NULL COMMENT '所属父级项目',
|
||||
`contract_amount` DECIMAL(20, 2) DEFAULT 0.0000 NULL COMMENT '合同金额',
|
||||
`quality_evaluation_grade` VARCHAR(128) NULL COMMENT '质量评价等级',
|
||||
`safety_production_grade` VARCHAR(128) NULL COMMENT '安全生产等级',
|
||||
`project_contract_record_number` VARCHAR(128) NULL COMMENT '工程合同备案号',
|
||||
`project_profile` TEXT NULL COMMENT '项目概括',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-项目概况';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_personnel`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`employee_id` VARCHAR(128) NULL COMMENT '员工号',
|
||||
`employee_name` VARCHAR(128) NULL COMMENT '人员姓名',
|
||||
`gender` VARCHAR(10) NULL COMMENT '性别',
|
||||
`project_role` VARCHAR(128) NULL COMMENT '项目角色',
|
||||
`project_post` VARCHAR(128) NULL COMMENT '项目岗位',
|
||||
`archival_post` VARCHAR(128) NULL COMMENT '备案岗位',
|
||||
`dept` VARCHAR(128) NULL COMMENT '部门',
|
||||
`mobile_phone` VARCHAR(30) NULL COMMENT '手机',
|
||||
`id_card_number` VARCHAR(64) NULL COMMENT '身份证',
|
||||
`certificate_number` VARCHAR(128) NULL COMMENT '员工证书编号',
|
||||
`certificate_name` VARCHAR(128) NULL COMMENT '员工证书名称',
|
||||
`issuing_authority` VARCHAR(128) NULL COMMENT '发证机关',
|
||||
`is_summary_flag` VARCHAR(16) NULL COMMENT '摘要标志',
|
||||
`is_salary_paid` VARCHAR(16) NULL COMMENT '是否到薪',
|
||||
`organization` VARCHAR(128) NULL COMMENT '组织',
|
||||
`file_id` VARCHAR(1024) NULL COMMENT '文件ID',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-项目人员';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_tax_info`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`tax_levy_method` VARCHAR(128) NULL COMMENT '计征方式',
|
||||
`tax_levy_area` VARCHAR(128) NULL COMMENT '计征区域',
|
||||
`advance_levy_rate` DECIMAL(5, 2) DEFAULT 0.00 NULL COMMENT '预征率',
|
||||
`prepay_tax_organization` VARCHAR(255) NULL COMMENT '预缴税务机构',
|
||||
`tax_organization` VARCHAR(255) NULL COMMENT '税务机构',
|
||||
`invoice_type_issued` VARCHAR(128) NULL COMMENT '开具发票类型',
|
||||
`receiving_email_account` VARCHAR(100) NULL COMMENT '收票邮箱账号',
|
||||
`receiving_email_password` VARCHAR(255) NULL COMMENT '收票邮箱密码',
|
||||
`is_realty_project` VARCHAR(16) NULL COMMENT '房地产项目',
|
||||
`cumulative_invoicing` DECIMAL(20, 2) DEFAULT 0.00 NULL COMMENT '累计开票',
|
||||
`cumulative_output_tax_amount` DECIMAL(5, 2) DEFAULT 0.00 NULL COMMENT '累计销项税额',
|
||||
`already_deducted` DECIMAL(20, 2) DEFAULT 0.00 NULL COMMENT '已抵扣进项',
|
||||
`value_add_tax` DECIMAL(5, 2) DEFAULT 0.00 NULL COMMENT '应缴纳增值税',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-税务信息';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_accounting_info`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`fill_mode` VARCHAR(255) NULL COMMENT '填报模式',
|
||||
`boq_mode` VARCHAR(16) NULL COMMENT '承包合同启用工程量清单模式控制',
|
||||
`boq_control_subitem` VARCHAR(16) NULL COMMENT '工程量清单管控到定额子目',
|
||||
`cost_calculation` VARCHAR(16) NULL COMMENT '是否启用成本测算',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-核算信息';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_warehouses`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`warehouse_code` VARCHAR(100) NULL COMMENT '编号',
|
||||
`warehouse_name` VARCHAR(255) NULL COMMENT '仓库名称',
|
||||
`is_default` VARCHAR(16) NULL COMMENT '是否默认',
|
||||
`remark` TEXT NULL COMMENT '备注',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-项目仓库';
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_internal_accounts`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`account_code` VARCHAR(100) NULL COMMENT '内部资金账户编码',
|
||||
`account_name` VARCHAR(255) NULL COMMENT '内部资金账户名称',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-内部资金账户';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_participating_units`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`unit_type` VARCHAR(128) NULL COMMENT '单位性质',
|
||||
`unit_name` VARCHAR(255) NULL COMMENT '单位名称',
|
||||
`total_investment` DECIMAL(20, 4) NULL COMMENT '投资总额',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX `idx_project_id` (`xzd_project_id`)
|
||||
) COMMENT ='项目信息-参建单位';
|
||||
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_cbs`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`cbs_code` VARCHAR(128) NOT NULL COMMENT 'CBS编码',
|
||||
`cbs_name` VARCHAR(255) NULL COMMENT 'CBS名称',
|
||||
`subject_description` TEXT NULL COMMENT '科目说明',
|
||||
`subject_short_code` VARCHAR(50) NULL COMMENT '科目简码',
|
||||
`subject_attribute` VARCHAR(128) NULL COMMENT '科目属性',
|
||||
`financial_subject_code` VARCHAR(128) NULL COMMENT '对应财务科目编码',
|
||||
`financial_subject` VARCHAR(255) NULL COMMENT '对应财务科目',
|
||||
`parent_cbs_id` BIGINT DEFAULT 0 NOT NULL COMMENT '父项目CBS编码',
|
||||
`is_non_leaf` VARCHAR(16) NULL COMMENT '非末级编制标志',
|
||||
`is_frozen` VARCHAR(16) NULL COMMENT '科目冻结标志',
|
||||
`measurement_unit` VARCHAR(50) NULL COMMENT '计量单位',
|
||||
`remark` TEXT NULL COMMENT '备注',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_project_cbs_code` (`xzd_project_id`, `cbs_code`)
|
||||
) COMMENT ='项目CBS (成本分解结构)';
|
||||
|
||||
|
||||
CREATE TABLE `xzd_project_wbs`
|
||||
(
|
||||
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '唯一ID',
|
||||
`xzd_project_id` BIGINT NOT NULL COMMENT '关联的项目表ID',
|
||||
`wbs_code` VARCHAR(128) NOT NULL COMMENT 'WBS编码',
|
||||
`wbs_name` VARCHAR(255) NOT NULL COMMENT 'WBS名称',
|
||||
`total_quantity` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '工程总量',
|
||||
`measurement_unit` VARCHAR(64) NULL COMMENT '单位',
|
||||
`unit_price` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '单价',
|
||||
`total_price` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '工程总价',
|
||||
`planned_start_time` DATE NULL COMMENT '计划开始时间',
|
||||
`planned_end_time` DATE NULL COMMENT '计划结束时间',
|
||||
`actual_start_time` DATE NULL COMMENT '实际开始时间',
|
||||
`actual_end_time` DATE NULL COMMENT '实际结束时间',
|
||||
`status` VARCHAR(64) NULL COMMENT '状态',
|
||||
`progress` DECIMAL(5, 2) DEFAULT 0.00 NOT NULL COMMENT '进度',
|
||||
`parent_wbs_id` BIGINT DEFAULT 0 NOT NULL COMMENT '父级WBS',
|
||||
`enterprise_wbs_code` VARCHAR(128) NULL COMMENT '企业级WBS编码',
|
||||
`enterprise_wbs_name` VARCHAR(255) NULL COMMENT '企业级WBS名称',
|
||||
`accounting_type` VARCHAR(100) NULL COMMENT '核算类型',
|
||||
`financial_account` VARCHAR(100) NULL COMMENT '对应财务科目',
|
||||
`attribute` VARCHAR(100) NULL COMMENT '属性',
|
||||
`income` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '收入',
|
||||
`cost` DECIMAL(20, 4) DEFAULT 0.0000 NULL COMMENT '成本',
|
||||
`national_standard_code` VARCHAR(100) NULL COMMENT '国标码',
|
||||
`remark` TEXT NULL COMMENT '备注',
|
||||
`create_by` BIGINT NULL COMMENT '创建者',
|
||||
`update_by` BIGINT NULL COMMENT '更新者',
|
||||
`create_dept` BIGINT NULL COMMENT '创建部门',
|
||||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间',
|
||||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_project_wbs_code` (`xzd_project_id`, `wbs_code`)
|
||||
) COMMENT ='项目WBS (工作分解结构)';
|
||||
Reference in New Issue
Block a user