Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
		| @ -300,7 +300,7 @@ dxf2GeoJson: | ||||
|   file-name: main.exe | ||||
| ys7: | ||||
|   app-key: 3acf9f1a43dc4209841e0893003db0a2 | ||||
|   app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36 | ||||
|   app-secret: 09e29c70ae1161fbc3ce2030fc09ba2e | ||||
| # 斯巴达算法 | ||||
| sparta: | ||||
|   url: http://119.3.204.120:8040 | ||||
|  | ||||
| @ -18,6 +18,7 @@ import org.dromara.contractor.service.ISubConstructionUserService; | ||||
| import org.dromara.contractor.service.ISubUserSalaryDetailService; | ||||
| import org.dromara.design.service.IDesTechnicalStandardService; | ||||
| import org.dromara.facility.domain.FacMatrix; | ||||
| import org.dromara.facility.domain.FacPhotovoltaicPanel; | ||||
| import org.dromara.facility.service.IFacMatrixService; | ||||
| import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService; | ||||
| import org.dromara.facility.service.IFacPhotovoltaicPanelService; | ||||
| @ -101,6 +102,52 @@ public class DemoTest { | ||||
|     @Resource | ||||
|     private IOutConstructionValueService constructionValueService; | ||||
|  | ||||
|     @Test | ||||
|     void syncTest() { | ||||
|         List<BusProject> projects = projectService.lambdaQuery() | ||||
|             .eq(BusProject::getPId, 1968506669544656898L) | ||||
|             .list(); | ||||
|         Set<Long> projectIds = projects.stream().map(BusProject::getId).collect(Collectors.toSet()); | ||||
|         List<FacPhotovoltaicPanel> zujian = photovoltaicPanelService.lambdaQuery() | ||||
|             .eq(FacPhotovoltaicPanel::getProgressCategoryName, "组件安装") | ||||
|             .in(FacPhotovoltaicPanel::getProjectId, projectIds) | ||||
|             .list(); | ||||
|         Map<Long, List<FacPhotovoltaicPanel>> zujianMap = zujian.stream() | ||||
|             .collect(Collectors.groupingBy(FacPhotovoltaicPanel::getMatrixId)); | ||||
|         List<PgsProgressCategory> zhijia = progressCategoryService.lambdaQuery() | ||||
|             .eq(PgsProgressCategory::getName, "支架安装") | ||||
|             .in(PgsProgressCategory::getProjectId, projectIds) | ||||
|             .list(); | ||||
|         Map<Long, List<PgsProgressCategory>> zhijiaMap = zhijia.stream() | ||||
|             .collect(Collectors.groupingBy(PgsProgressCategory::getMatrixId)); | ||||
|         List<FacPhotovoltaicPanel> newP = new ArrayList<>(); | ||||
|         for (Map.Entry<Long, List<FacPhotovoltaicPanel>> entry : zujianMap.entrySet()) { | ||||
|             Long key = entry.getKey(); | ||||
|             List<FacPhotovoltaicPanel> panels = entry.getValue(); | ||||
|             List<PgsProgressCategory> list = zhijiaMap.getOrDefault(key, new ArrayList<>()); | ||||
|             if (CollUtil.isEmpty(list)) { | ||||
|                 continue; | ||||
|             } | ||||
|             PgsProgressCategory zhi = list.getFirst(); | ||||
|             List<FacPhotovoltaicPanel> panelList = panels.stream().map(panel -> { | ||||
|                 FacPhotovoltaicPanel p = new FacPhotovoltaicPanel(); | ||||
|                 p.setProjectId(panel.getProjectId()); | ||||
|                 p.setMatrixId(panel.getMatrixId()); | ||||
|                 p.setName(panel.getName()); | ||||
|                 p.setPositions(panel.getPositions()); | ||||
|                 p.setProgressCategoryId(zhi.getId()); | ||||
|                 p.setProgressCategoryName(zhi.getName()); | ||||
|                 p.setRemark(panel.getRemark()); | ||||
|                 p.setCreateDept(panel.getCreateDept()); | ||||
|                 p.setCreateBy(panel.getCreateBy()); | ||||
|                 p.setUpdateBy(panel.getUpdateBy()); | ||||
|                 return p; | ||||
|             }).toList(); | ||||
|             newP.addAll(panelList); | ||||
|         } | ||||
|         photovoltaicPanelService.saveBatch(newP); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Test | ||||
|     void testConstructionValue() { | ||||
|  | ||||
| @ -0,0 +1,160 @@ | ||||
| package org.dromara.cailiaoshebei.controller.app; | ||||
|  | ||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import jakarta.validation.constraints.NotEmpty; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.dromara.cailiaoshebei.domain.bo.BusMrpBaseBo; | ||||
| import org.dromara.cailiaoshebei.domain.dto.BusMrpDto; | ||||
| import org.dromara.cailiaoshebei.domain.dto.BusMrpExportDto; | ||||
| import org.dromara.cailiaoshebei.domain.vo.BusMrpBaseVo; | ||||
| import org.dromara.cailiaoshebei.domain.vo.BusMrpVo; | ||||
| import org.dromara.cailiaoshebei.service.IBusMrpBaseService; | ||||
| import org.dromara.common.core.domain.R; | ||||
| import org.dromara.common.core.enums.BusinessStatusEnum; | ||||
| import org.dromara.common.core.exception.ServiceException; | ||||
| import org.dromara.common.core.validate.AddGroup; | ||||
| import org.dromara.common.core.validate.EditGroup; | ||||
| import org.dromara.common.excel.utils.ExcelUtil; | ||||
| import org.dromara.common.idempotent.annotation.RepeatSubmit; | ||||
| import org.dromara.common.log.annotation.Log; | ||||
| 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.design.domain.BusBillofquantities; | ||||
| import org.dromara.design.domain.BusBillofquantitiesVersions; | ||||
| import org.dromara.design.domain.bo.CoryObtainTheListReq; | ||||
| import org.dromara.design.domain.bo.ObtainAllVersionNumbersReq; | ||||
| import org.dromara.design.domain.vo.BusBillofquantitiesVo; | ||||
| import org.dromara.design.domain.vo.ObtainTheListRes; | ||||
| import org.dromara.design.service.IBusBillofquantitiesService; | ||||
| import org.dromara.design.service.IBusBillofquantitiesVersionsService; | ||||
| import org.springframework.util.CollectionUtils; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  * app物资-批次需求计划基础信息 | ||||
|  * | ||||
|  * @author Lion Li | ||||
|  * @date 2025-08-13 | ||||
|  */ | ||||
| @Validated | ||||
| @RequiredArgsConstructor | ||||
| @RestController | ||||
| @RequestMapping("/app/cailiaoshebei/mrpBase") | ||||
| public class BusMrpBaseAppController extends BaseController { | ||||
|  | ||||
|     private final IBusMrpBaseService busMrpBaseService; | ||||
|  | ||||
|     private final IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService; | ||||
|  | ||||
|     private final IBusBillofquantitiesService busBillofquantitiesService; | ||||
|  | ||||
|     /** | ||||
|      * 查询物资-批次需求计划基础信息列表 | ||||
|      */ | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo<BusMrpBaseVo> list(BusMrpBaseBo bo, PageQuery pageQuery) { | ||||
|         return busMrpBaseService.queryPageList(bo, pageQuery); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 获取物资-批次需求计划基础信息详细信息 | ||||
|      * | ||||
|      * @param id 主键 | ||||
|      */ | ||||
|     @GetMapping("/{id}") | ||||
|     public R<BusMrpVo> getInfo(@NotNull(message = "主键不能为空") | ||||
|                                      @PathVariable Long id) { | ||||
|         return R.ok(busMrpBaseService.queryById(id)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 删除物资-批次需求计划基础信息 | ||||
|      * | ||||
|      * @param ids 主键串 | ||||
|      */ | ||||
|     @Log(title = "物资-批次需求计划基础信息", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{ids}") | ||||
|     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||
|                           @PathVariable Long[] ids) { | ||||
|         return toAjax(busMrpBaseService.deleteWithValidByIds(List.of(ids), true)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 批量新增或修改 | ||||
|      */ | ||||
|     @RepeatSubmit() | ||||
|     @PostMapping("/batch") | ||||
|     public R<Void> batchAddOrUpdate(@RequestBody BusMrpDto dto) { | ||||
|         return toAjax(busMrpBaseService.batchAddOrUpdate(dto)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取剩余量 | ||||
|      */ | ||||
|     @GetMapping("/remaining") | ||||
|     public R<Map<String,Object>> remaining(Long projectId, String suppliespriceName,String specification,Long mrpBaseId) { | ||||
|         return R.ok(busMrpBaseService.remaining(projectId,suppliespriceName,specification,mrpBaseId)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 获取所有大类 | ||||
|      */ | ||||
|     @GetMapping("/obtainAllClassification") | ||||
|     public R<List<BusBillofquantitiesVo>> obtainAllClassification(ObtainAllVersionNumbersReq bo) { | ||||
|         return R.ok(busBillofquantitiesVersionsService.obtainAllClassification(bo)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 获取工程量清单列表 | ||||
|      */ | ||||
|     @GetMapping("/coryEngineeringList") | ||||
|     public R<List<BusBillofquantities>> obtainTheList(CoryObtainTheListReq req) { | ||||
|         List<BusBillofquantities> busBillofquantities = busBillofquantitiesService.getBaseMapper() | ||||
|             .selectList(new LambdaQueryWrapper<BusBillofquantities>() | ||||
|                 .eq(BusBillofquantities::getProjectId, req.getProjectId()) | ||||
|                 .eq(BusBillofquantities::getName, req.getSid())); | ||||
|         List<String> sids = new ArrayList<>(); | ||||
|         busBillofquantities.forEach(busBillofquantities1 -> { | ||||
|             sids.add(busBillofquantities1.getSid()); | ||||
|         }); | ||||
|         return R.ok(busBillofquantitiesService | ||||
|             .getBaseMapper() | ||||
|             .selectList(new LambdaQueryWrapper<BusBillofquantities>() | ||||
|                 .eq(BusBillofquantities::getProjectId, req.getProjectId()) | ||||
|                 .in(BusBillofquantities::getPid, sids))); | ||||
|     } | ||||
|  | ||||
|     private List<ObtainTheListRes> buildTree(String parentId, Map<String, List<ObtainTheListRes>> parentMap) { | ||||
|         // 获取当前父节点的所有直接子节点 | ||||
|         List<ObtainTheListRes> children = parentMap.getOrDefault(parentId, Collections.emptyList()); | ||||
|         if (children.isEmpty()) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|  | ||||
|         // 为每个子节点递归设置其下一级子节点 | ||||
|         for (ObtainTheListRes child : children) { | ||||
|             // 递归查询当前子节点的子节点,设置为它的子树 | ||||
|             List<ObtainTheListRes> subChildren = buildTree(child.getSid(), parentMap); | ||||
|             // 注意:需要在Vo中添加子节点列表字段,用于存储子树 | ||||
|             child.setChildren(subChildren); | ||||
|         } | ||||
|  | ||||
|         return children; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,214 @@ | ||||
| package org.dromara.cailiaoshebei.controller.app; | ||||
|  | ||||
| import cn.dev33.satoken.annotation.SaCheckPermission; | ||||
| import cn.hutool.core.collection.CollectionUtil; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import jakarta.validation.constraints.NotEmpty; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import org.dromara.cailiaoshebei.domain.BusPlanDocAssociation; | ||||
| import org.dromara.cailiaoshebei.domain.bo.BusMaterialbatchdemandplanBo; | ||||
| import org.dromara.cailiaoshebei.domain.bo.BusPurchaseDocBo; | ||||
| import org.dromara.cailiaoshebei.domain.bo.FeedbackDto; | ||||
| import org.dromara.cailiaoshebei.domain.vo.BusMaterialbatchdemandplanVo; | ||||
| import org.dromara.cailiaoshebei.domain.vo.BusPurchaseDocVo; | ||||
| import org.dromara.cailiaoshebei.service.IBusMaterialbatchdemandplanService; | ||||
| import org.dromara.cailiaoshebei.service.IBusPlanDocAssociationService; | ||||
| import org.dromara.cailiaoshebei.service.IBusPurchaseDocService; | ||||
| import org.dromara.common.core.domain.R; | ||||
| import org.dromara.common.core.validate.AddGroup; | ||||
| import org.dromara.common.core.validate.EditGroup; | ||||
| import org.dromara.common.excel.utils.ExcelUtil; | ||||
| import org.dromara.common.idempotent.annotation.RepeatSubmit; | ||||
| import org.dromara.common.log.annotation.Log; | ||||
| 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.design.service.IBusBillofquantitiesService; | ||||
| import org.dromara.design.service.IBusBillofquantitiesVersionsService; | ||||
| import org.dromara.tender.domain.bo.TenderSupplierInputBo; | ||||
| import org.dromara.tender.domain.vo.TenderSupplierInputVo; | ||||
| import org.dromara.tender.service.ITenderSupplierInputService; | ||||
| import org.springframework.validation.annotation.Validated; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| /** | ||||
|  * app物资-采购联系单 | ||||
|  * | ||||
|  * @author Lion Li | ||||
|  * @date 2025-08-13 | ||||
|  */ | ||||
| @Validated | ||||
| @RequiredArgsConstructor | ||||
| @RestController | ||||
| @RequestMapping("/app/cailiaoshebei/purchaseDoc") | ||||
| public class BusPurchaseDocAppController extends BaseController { | ||||
|  | ||||
|     private final IBusPurchaseDocService busPurchaseDocService; | ||||
|  | ||||
|     private final IBusMaterialbatchdemandplanService materialbatchdemandplanService; | ||||
|  | ||||
|     private final IBusPlanDocAssociationService planDocAssociationService; | ||||
|  | ||||
|     private final IBusBillofquantitiesVersionsService busBillofquantitiesVersionsService; | ||||
|  | ||||
|     private final IBusBillofquantitiesService busBillofquantitiesService; | ||||
|  | ||||
|     private final ITenderSupplierInputService tenderSupplierInputService; | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查询物资-采购联系单列表 | ||||
|      */ | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo<BusPurchaseDocVo> list(BusPurchaseDocBo bo, PageQuery pageQuery) { | ||||
|         return busPurchaseDocService.queryPageList(bo, pageQuery); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询供应商入库列表 | ||||
|      */ | ||||
|     @GetMapping("/supList") | ||||
|     public TableDataInfo<TenderSupplierInputVo> list(TenderSupplierInputBo bo, PageQuery pageQuery) { | ||||
|         return tenderSupplierInputService.queryPageList(bo, pageQuery); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询物资-批次需求计划列表 | ||||
|      */ | ||||
|     @GetMapping("/planList") | ||||
|     public TableDataInfo<BusMaterialbatchdemandplanVo> list(BusMaterialbatchdemandplanBo bo, PageQuery pageQuery) { | ||||
|         return materialbatchdemandplanService.queryPageList(bo, pageQuery); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 获取物资-采购联系单详细信息 | ||||
|      * | ||||
|      * @param id 主键 | ||||
|      */ | ||||
|     @GetMapping("/{id}") | ||||
|     public R<BusPurchaseDocVo> getInfo(@NotNull(message = "主键不能为空") | ||||
|                                        @PathVariable Long id) { | ||||
|         return R.ok(busPurchaseDocService.queryById(id)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取物资-采购联系单详细PDF | ||||
|      * | ||||
|      * @param id 主键 | ||||
|      */ | ||||
|     @SaCheckPermission("cailiaoshebei:purchaseDoc:pdf") | ||||
|     @GetMapping("/pdf/{id}") | ||||
|     public R<String> getPic(@NotNull(message = "主键不能为空") | ||||
|                             @PathVariable Long id) { | ||||
|         return R.ok("操作成功", busPurchaseDocService.queryPicBase64ById(id)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增物资-采购联系单 | ||||
|      */ | ||||
|     @SaCheckPermission("cailiaoshebei:purchaseDoc:add") | ||||
|     @Log(title = "物资-采购联系单", businessType = BusinessType.INSERT) | ||||
|     @RepeatSubmit() | ||||
|     @PostMapping() | ||||
|     public R<Void> add(@Validated(AddGroup.class) @RequestBody BusPurchaseDocBo bo) { | ||||
|         return toAjax(busPurchaseDocService.insertByBo(bo)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改物资-采购联系单 | ||||
|      */ | ||||
|     @SaCheckPermission("cailiaoshebei:purchaseDoc:edit") | ||||
|     @Log(title = "物资-采购联系单", businessType = BusinessType.UPDATE) | ||||
|     @RepeatSubmit() | ||||
|     @PutMapping() | ||||
|     public R<Void> edit(@Validated(EditGroup.class) @RequestBody BusPurchaseDocBo bo) { | ||||
|         return toAjax(busPurchaseDocService.updateByBo(bo)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除物资-采购联系单 | ||||
|      * | ||||
|      * @param ids 主键串 | ||||
|      */ | ||||
|     @SaCheckPermission("cailiaoshebei:purchaseDoc:remove") | ||||
|     @Log(title = "物资-采购联系单", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{ids}") | ||||
|     public R<Void> remove(@NotEmpty(message = "主键不能为空") | ||||
|                           @PathVariable Long[] ids) { | ||||
|         return toAjax(busPurchaseDocService.deleteWithValidByIds(List.of(ids), true)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查询采购单关联的计划 | ||||
|      */ | ||||
|     @GetMapping("/planList/{id}") | ||||
|     public R<List<BusMaterialbatchdemandplanVo>> list(@NotNull(message = "主键不能为空") | ||||
|                                                       @PathVariable("id") Long id) { | ||||
|         List<BusPlanDocAssociation> list = planDocAssociationService.list(Wrappers.lambdaQuery(BusPlanDocAssociation.class) | ||||
|             .eq(BusPlanDocAssociation::getDocId, id)); | ||||
|         if (CollectionUtil.isEmpty(list)) { | ||||
|             return R.ok(new ArrayList<>()); | ||||
|         } | ||||
|         Map<Long, BigDecimal> collect = list.stream() | ||||
|             .filter(Objects::nonNull) // 过滤空对象 | ||||
|             .collect(Collectors.toMap( | ||||
|                 BusPlanDocAssociation::getPlanId, | ||||
|                 BusPlanDocAssociation::getDemandQuantity, | ||||
|                 (existing, replacement) -> existing // 保留第一个遇到的重复键 | ||||
|             )); | ||||
|         BusMaterialbatchdemandplanBo bo = new BusMaterialbatchdemandplanBo(); | ||||
|         bo.setIds(new ArrayList<>(collect.keySet())); | ||||
|         List<BusMaterialbatchdemandplanVo> busMaterialbatchdemandplanVos = materialbatchdemandplanService.queryList(bo); | ||||
|         for (BusMaterialbatchdemandplanVo busMaterialbatchdemandplanVo : busMaterialbatchdemandplanVos) { | ||||
|              busMaterialbatchdemandplanVo.setDemandQuantity(collect.get(busMaterialbatchdemandplanVo.getId())); | ||||
|         } | ||||
|         return R.ok(busMaterialbatchdemandplanVos); | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 修改回单 | ||||
|      */ | ||||
|     @Log(title = "物资-采购联系单", businessType = BusinessType.UPDATE) | ||||
|     @RepeatSubmit() | ||||
|     @PutMapping("/updateFeedback") | ||||
|     public R<Void> edit(@Validated(EditGroup.class) @RequestBody FeedbackDto bo) { | ||||
|         return toAjax(busPurchaseDocService.updateFeedback(bo)); | ||||
|     } | ||||
|  | ||||
| // | ||||
| //    /** | ||||
| //     * 获取工程量清单列表 | ||||
| //     */ | ||||
| //    @SaCheckPermission("cailiaoshebei:purchaseDoc:add") | ||||
| //    @GetMapping("/engineeringList") | ||||
| //    public R<List<BusBillofquantities>> obtainTheList(Long projectId) { | ||||
| //        BusBillofquantitiesVersions one = busBillofquantitiesVersionsService.getOne(Wrappers.<BusBillofquantitiesVersions>lambdaQuery() | ||||
| //            .eq(BusBillofquantitiesVersions::getWorkOrderType, "3") //物资工程量清单 | ||||
| //            .eq(BusBillofquantitiesVersions::getProjectId, projectId) | ||||
| //            .eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus()) | ||||
| //            .last("limit 1") | ||||
| //        ); | ||||
| //        if (one == null) { | ||||
| //            throw new ServiceException("请先完成物资工程量清单"); | ||||
| //        } | ||||
| //        List<BusBillofquantities> list = busBillofquantitiesService.list(Wrappers.<BusBillofquantities>lambdaQuery() | ||||
| //            .eq(BusBillofquantities::getVersions, one.getVersions()) | ||||
| //        ); | ||||
| // | ||||
| //        return R.ok(list); | ||||
| //    } | ||||
| } | ||||
| @ -76,6 +76,8 @@ import java.time.temporal.ChronoUnit; | ||||
| import java.util.*; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import static org.dromara.project.domain.enums.BusAttendanceClockStatusEnum.ATTENDANCE_LIST; | ||||
|  | ||||
| /** | ||||
|  * 施工人员Service业务层处理 | ||||
|  * | ||||
| @ -1194,8 +1196,11 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU | ||||
|                                 unClockDays++; | ||||
|                             } | ||||
|                         } | ||||
|                         if(ATTENDANCE_LIST.contains(clockInStatus) || ATTENDANCE_LIST.contains(clockOutStatus)){ | ||||
|                             attendanceDays++; | ||||
|                         } | ||||
|  | ||||
|                     } | ||||
|                     attendanceDays = dailyMap.size() - leaveDays; | ||||
|                 } | ||||
|             } | ||||
|             constructionUserAttendanceTotalResp.setAttendanceDays(attendanceDays); | ||||
|  | ||||
| @ -14,7 +14,6 @@ import org.dromara.common.core.utils.ObjectUtils; | ||||
| import org.dromara.common.core.utils.StringUtils; | ||||
| import org.dromara.common.mybatis.core.page.PageQuery; | ||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | ||||
| import org.dromara.common.satoken.utils.LoginHelper; | ||||
| import org.dromara.contractor.domain.SubConstructionUser; | ||||
| import org.dromara.contractor.domain.SubContractor; | ||||
| import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; | ||||
| @ -119,7 +118,10 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S | ||||
|         // 数据校验 | ||||
|         validEntityBeforeSave(contractor); | ||||
|         String name = req.getName(); | ||||
|         Long count = this.lambdaQuery().eq(SubContractor::getName, name).count(); | ||||
|         Long count = this.lambdaQuery() | ||||
|             .eq(SubContractor::getName, name) | ||||
|             .eq(SubContractor::getProjectId, req.getProjectId()) | ||||
|             .count(); | ||||
|         if (count > 0) { | ||||
|             throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); | ||||
|         } | ||||
| @ -160,7 +162,11 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S | ||||
|         } | ||||
|         // 判断名称是否重复 | ||||
|         if (!oldContractor.getName().equals(req.getName())) { | ||||
|             Long count = this.lambdaQuery().eq(SubContractor::getName, req.getName()).count(); | ||||
|             Long count = this.lambdaQuery() | ||||
|                 .eq(SubContractor::getName, req.getName()) | ||||
|                 .eq(SubContractor::getProjectId, req.getProjectId()) | ||||
|                 .ne(SubContractor::getId, contractor.getId()) | ||||
|                 .count(); | ||||
|             if (count > 0) { | ||||
|                 throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); | ||||
|             } | ||||
|  | ||||
| @ -353,6 +353,9 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo | ||||
|         lqw.eq(BusBillofquantitiesVersions::getWorkOrderType, "3"); | ||||
|         lqw.eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus()); | ||||
|         List<BusBillofquantitiesVersionsVo> result = baseMapper.selectVoList(lqw); | ||||
|         if (CollUtil.isEmpty(result)) { | ||||
|             return Collections.emptyList(); | ||||
|         } | ||||
|         List<String> versionss = new ArrayList<>(); | ||||
|         result.forEach(v -> versionss.add(v.getVersions())); | ||||
|         List<BusBillofquantities> busBillofquantities = busBillofquantitiesService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBillofquantities>() | ||||
|  | ||||
| @ -114,11 +114,20 @@ public class BusAttendanceController extends BaseController { | ||||
|         return toAjax(busAttendanceService.deleteWithValidByIds(List.of(ids), true)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 查询项目施工人员前14天考勤状况 | ||||
|      */ | ||||
|     @GetMapping("/list/clockDate/twoWeek") | ||||
|     public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(Long projectId) { | ||||
|         return R.ok(busAttendanceService.getClockDateForTwoWeekList(projectId)); | ||||
|     } | ||||
|     /** | ||||
|      * 查询项目施工人员当天考勤状况 | ||||
|      */ | ||||
|     @GetMapping("/list/clockDate/today") | ||||
|     public R<BusAttendanceClockDateForTwoWeekVo> getTodayAttendanceData(Long projectId) { | ||||
|         return R.ok(busAttendanceService.getTodayAttendanceData(projectId)); | ||||
|     } | ||||
|  | ||||
|     @PostMapping("/exportList") | ||||
|     public void exportList(AttendanceExportDto dto, HttpServletResponse response) { | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| package org.dromara.project.controller.app; | ||||
|  | ||||
| import cn.hutool.core.collection.CollectionUtil; | ||||
| import com.baomidou.mybatisplus.core.metadata.IPage; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import jakarta.annotation.Resource; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| @ -128,8 +129,8 @@ public class BusAttendanceAppController extends BaseController { | ||||
|      * 获取用户打卡异常记录 | ||||
|      */ | ||||
|     @GetMapping("/getAbnormalAttendance/{projectId}") | ||||
|     public R<List<BusAttendanceVo>> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId){ | ||||
|         return R.ok(attendanceService.getAbnormalAttendance(projectId)); | ||||
|     public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery){ | ||||
|         return attendanceService.getAbnormalAttendance(projectId,pageQuery); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|  | ||||
| @ -2,6 +2,8 @@ package org.dromara.project.domain.enums; | ||||
|  | ||||
| import lombok.Getter; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * @author lilemy | ||||
|  * @date 2025/4/7 11:31 | ||||
| @ -9,6 +11,8 @@ import lombok.Getter; | ||||
| @Getter | ||||
| public enum BusAttendanceClockStatusEnum { | ||||
|  | ||||
|  | ||||
|  | ||||
|     NORMAL("正常", "1"), | ||||
|     LATE("迟到", "2"), | ||||
|     LEAVEEARLY("早退", "3"), | ||||
| @ -24,5 +28,7 @@ public enum BusAttendanceClockStatusEnum { | ||||
|         this.text = text; | ||||
|         this.value = value; | ||||
|     } | ||||
|     //算出勤状态 | ||||
|     public static final List<String> ATTENDANCE_LIST = List.of(NORMAL.value, LATE.value, LEAVEEARLY.value, REISSUE.value); | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -1,8 +1,8 @@ | ||||
| package org.dromara.project.service; | ||||
|  | ||||
| import com.baomidou.mybatisplus.core.metadata.IPage; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import jakarta.validation.constraints.NotNull; | ||||
| import org.dromara.common.core.domain.R; | ||||
| import org.dromara.project.domain.dto.attendance.*; | ||||
| import org.dromara.project.domain.vo.BusAttendanceVo; | ||||
| import org.dromara.project.domain.bo.BusAttendanceBo; | ||||
| @ -13,12 +13,9 @@ import org.dromara.common.mybatis.core.page.PageQuery; | ||||
| import com.baomidou.mybatisplus.extension.service.IService; | ||||
| import org.dromara.project.domain.vo.BusMonthAttendanceVo; | ||||
| import org.dromara.project.domain.vo.attendance.*; | ||||
| import org.springframework.format.annotation.DateTimeFormat; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
|  | ||||
| import java.time.LocalDate; | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
|  | ||||
| @ -132,9 +129,9 @@ public interface IBusAttendanceService extends IService<BusAttendance>{ | ||||
|     List<BusMonthAttendanceVo> getMonthAttendance(Long projectId, String  month); | ||||
|  | ||||
|     /** | ||||
|      * 获取用户指定月份的打卡记录 | ||||
|      * 获取用户打卡异常记录 | ||||
|      */ | ||||
|     List<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId); | ||||
|     TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery); | ||||
|  | ||||
|     /** | ||||
|      * 统计指定日期的打卡人员 | ||||
| @ -167,6 +164,11 @@ public interface IBusAttendanceService extends IService<BusAttendance>{ | ||||
|      */ | ||||
|     List<BusAttendanceClockDateForTwoWeekVo> getClockDateForTwoWeekList(Long projectId); | ||||
|  | ||||
|     /** | ||||
|      * 获取项目当天的考勤数据 | ||||
|      */ | ||||
|     BusAttendanceClockDateForTwoWeekVo getTodayAttendanceData(Long projectId); | ||||
|  | ||||
|     /** | ||||
|      * 获取导出的考勤数据 | ||||
|      */ | ||||
|  | ||||
| @ -6,6 +6,7 @@ import cn.hutool.core.util.StrUtil; | ||||
| import cn.hutool.json.JSONArray; | ||||
| import cn.hutool.json.JSONUtil; | ||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
| import com.baomidou.mybatisplus.core.metadata.IPage; | ||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||
| @ -14,7 +15,6 @@ import jakarta.annotation.Resource; | ||||
| import jakarta.servlet.http.HttpServletResponse; | ||||
| import lombok.RequiredArgsConstructor; | ||||
| import lombok.extern.slf4j.Slf4j; | ||||
| import org.apache.poi.hssf.usermodel.HSSFWorkbook; | ||||
| import org.apache.poi.ss.usermodel.*; | ||||
| import org.apache.poi.ss.util.CellRangeAddress; | ||||
| import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||||
| @ -64,6 +64,8 @@ import java.util.*; | ||||
| import java.util.concurrent.CompletableFuture; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import static org.dromara.project.domain.enums.BusAttendanceClockStatusEnum.ATTENDANCE_LIST; | ||||
|  | ||||
| /** | ||||
|  * 考勤Service业务层处理 | ||||
|  * | ||||
| @ -707,7 +709,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | ||||
|  | ||||
|  | ||||
|     @Override | ||||
|     public List<BusAttendanceVo> getAbnormalAttendance(Long projectId) { | ||||
|     public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(Long projectId, PageQuery pageQuery) { | ||||
|  | ||||
|         List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(), | ||||
|             BusAttendanceClockStatusEnum.LEAVEEARLY.getValue(), | ||||
| @ -722,16 +724,16 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | ||||
|  | ||||
|         boolean b = relevancyList.stream().allMatch(relevancy -> "1".equals(relevancy.getUserType())); | ||||
|  | ||||
|         List<BusAttendanceVo> busAttendanceVos = baseMapper.selectVoList(Wrappers.lambdaQuery(BusAttendance.class) | ||||
|         IPage<BusAttendanceVo> busAttendanceVoIPage = baseMapper.selectVoPage(pageQuery.build(), Wrappers.lambdaQuery(BusAttendance.class) | ||||
|             .eq(BusAttendance::getUserId, userId) | ||||
|             .eq(b, BusAttendance::getProjectId, projectId) | ||||
|             .in(BusAttendance::getClockStatus, abnormalList) | ||||
|         ); | ||||
|         //转换星期几 | ||||
|         for (BusAttendanceVo busAttendanceVo : busAttendanceVos) { | ||||
|         for (BusAttendanceVo busAttendanceVo : busAttendanceVoIPage.getRecords()) { | ||||
|             busAttendanceVo.setWeek(busAttendanceVo.getClockDate().getDayOfWeek().getValue()); | ||||
|         } | ||||
|         return busAttendanceVos; | ||||
|         return TableDataInfo.build(busAttendanceVoIPage); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @ -1183,7 +1185,6 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | ||||
|  | ||||
|         // 统计全勤、半勤、缺卡人数 | ||||
|         List<BusAttendanceClockDateForTwoWeekVo> result = new ArrayList<>(); | ||||
|         List<String> validStatusList = Arrays.asList("1", "2", "3", "5"); | ||||
|  | ||||
|         LocalDate currentDate = startDate; | ||||
|         while (!currentDate.isAfter(now)) { | ||||
| @ -1196,7 +1197,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | ||||
|  | ||||
|                 long validCount = records.stream() | ||||
|                     .map(BusAttendance::getClockStatus) | ||||
|                     .filter(validStatusList::contains) | ||||
|                     .filter(ATTENDANCE_LIST::contains) | ||||
|                     .count(); | ||||
|  | ||||
|                 if (validCount >= 2) { | ||||
| @ -1228,6 +1229,65 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @Override | ||||
|     public BusAttendanceClockDateForTwoWeekVo getTodayAttendanceData(Long projectId) { | ||||
|  | ||||
|         LocalDate now = LocalDate.now(); | ||||
|  | ||||
|         //查询所有管理员和分包人员 排除 | ||||
|         List<Long> excludeUserIds = constructionUserService.list(Wrappers.<SubConstructionUser>lambdaQuery() | ||||
|             .ne(SubConstructionUser::getUserRole, "0") | ||||
|         ).stream().map(SubConstructionUser::getSysUserId).toList(); | ||||
|  | ||||
|         List<Long> allUserIds = constructionUserService.list(Wrappers.<SubConstructionUser>lambdaQuery() | ||||
|             .eq(SubConstructionUser::getUserRole, "0") | ||||
|             .eq(SubConstructionUser::getProjectId,projectId) | ||||
|         ).stream().map(SubConstructionUser::getSysUserId).toList(); | ||||
|  | ||||
|  | ||||
|         List<BusAttendance> list = list(Wrappers.<BusAttendance>lambdaQuery() | ||||
|             .eq(BusAttendance::getProjectId, projectId) | ||||
|             .notIn(CollectionUtil.isNotEmpty(excludeUserIds),BusAttendance::getUserId, excludeUserIds) | ||||
|             .eq(BusAttendance::getClockDate, now) | ||||
|             .orderByAsc(BusAttendance::getClockDate) | ||||
|         ); | ||||
|  | ||||
|         Map<Long, List<BusAttendance>> collect = list.stream().collect(Collectors.groupingBy(BusAttendance::getUserId)); | ||||
|  | ||||
|         int full = 0, half = 0, absent = 0; | ||||
|  | ||||
|         for (Map.Entry<Long, List<BusAttendance>> userEntry : collect.entrySet()) { | ||||
|             List<BusAttendance> records = userEntry.getValue(); | ||||
|  | ||||
|             long validCount = records.stream() | ||||
|                 .map(BusAttendance::getClockStatus) | ||||
|                 .filter(ATTENDANCE_LIST::contains) | ||||
|                 .count(); | ||||
|  | ||||
|             if (validCount >= 2) { | ||||
|                 full++; | ||||
|             } else if (validCount == 1) { | ||||
|                 half++; | ||||
|             } else { | ||||
|                 absent++; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         BusAttendanceClockDateForTwoWeekVo vo = new BusAttendanceClockDateForTwoWeekVo(); | ||||
|         vo.setClockDate(now); | ||||
|         vo.setAttendance(full); | ||||
|         vo.setHalfAttendance(half); | ||||
|         vo.setAbsenteeism(absent); | ||||
|         //计算考勤率 | ||||
|         vo.setAllUserNum(allUserIds.size()); | ||||
|         vo.setClockNum(full+half); | ||||
|         vo.setAttendanceRate(BigDecimalUtil.toPercentage(new BigDecimal(full+half), | ||||
|                 new BigDecimal(allUserIds.size()))); | ||||
|  | ||||
|         return vo; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void getExportList(AttendanceExportDto dto, HttpServletResponse response) { | ||||
|         try (OutputStream outputStream = response.getOutputStream()) { | ||||
|  | ||||
| @ -25,6 +25,8 @@ import org.springframework.web.bind.annotation.*; | ||||
| import java.util.*; | ||||
| import java.util.stream.Collectors; | ||||
|  | ||||
| import static org.dromara.workflow.listener.WorkflowGlobalListener.getType; | ||||
|  | ||||
| @ConditionalOnEnable | ||||
| @Validated | ||||
| @RequiredArgsConstructor | ||||
| @ -48,7 +50,8 @@ public class FlowAppController { | ||||
|         } | ||||
|  | ||||
|         List<FlowHisTaskVo>  list= (List<FlowHisTaskVo>) stringObjectMap.get("list"); | ||||
|         Map<String, FlowHisTaskVo> map = list.stream().collect(Collectors.toMap(FlowHisTaskVo::getNodeCode, vo -> vo)); | ||||
|         Map<String, FlowHisTaskVo> map = list.stream().filter(vo -> !"copy".equals(vo.getFlowStatus())) | ||||
|             .collect(Collectors.toMap(FlowHisTaskVo::getNodeCode, vo -> vo)); | ||||
|  | ||||
|  | ||||
|         Long instanceId = (Long) stringObjectMap.get("instanceId"); | ||||
| @ -86,9 +89,24 @@ public class FlowAppController { | ||||
|                 appVo.setFlowStatus(BusinessStatusEnum.WAITING.getStatus()); | ||||
|                 if(nodeJson.getNodeType()==1){ | ||||
|                     String permissionFlag = nodeJson.getPermissionFlag(); | ||||
|                     if(StrUtil.isNotBlank(permissionFlag)){ | ||||
|                         permissionFlag = permissionFlag.replace("@@", ","); | ||||
|                     } | ||||
|                     List<UserDTO> userDTOS = flwTaskAssigneeService.fetchUsersByStorageIds(permissionFlag, projectId); | ||||
|                     String auditName = userDTOS.stream().map(UserDTO::getNickName).collect(Collectors.joining(",")); | ||||
|                     appVo.setAuditName(auditName); | ||||
|                     String type = getType(permissionFlag); | ||||
|                     if(type != null){ | ||||
|                         try { | ||||
|                             String flowCode = defJson.getFlowCode(); | ||||
|                             List<String> longs = userService.selectUserByProfession(flowCode.split("_")[1], businessId, type,projectId); | ||||
|                             String s = userService.selectNicknameByIds(longs.stream().map(String::valueOf).collect(Collectors.joining(","))); | ||||
|                             appVo.setAuditName(s); | ||||
|                         }catch (Exception e) { | ||||
|                             appVo.setAuditName(auditName); | ||||
|                         } | ||||
|                     }else { | ||||
|                         appVo.setAuditName(auditName); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|  | ||||
| @ -187,7 +187,7 @@ public class WorkflowGlobalListener implements GlobalListener { | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public  String  getType(String permissionFlag){ | ||||
|     public static String  getType(String permissionFlag){ | ||||
|         // 1961314792461586433  校审员(系统) | ||||
|         // 1961315028017893378  审核员(系统) | ||||
|         // 1961315147199041537  审定员(系统) | ||||
|  | ||||
							
								
								
									
										411
									
								
								xinnengyuan/script/sql/tbgl.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										411
									
								
								xinnengyuan/script/sql/tbgl.sql
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,411 @@ | ||||
|  | ||||
|  | ||||
|  | ||||
| drop table if exists xzd_project_risk_assessment; | ||||
| CREATE TABLE `xzd_project_risk_assessment` | ||||
| ( | ||||
|     `id`                        BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `document_number`           VARCHAR(64)                    NOT NULL COMMENT '单据编号', | ||||
|     `project_name`              VARCHAR(255)                   NOT NULL COMMENT '项目名称', | ||||
|     `project_business_owner`    VARCHAR(255)                   NOT NULL COMMENT '项目业主', | ||||
|     `joint_body_members`        VARCHAR(500)                   NULL COMMENT '联合体成员方', | ||||
|     `estimated_contract_amount` DECIMAL(20, 4) default 0.0000  NOT NULL COMMENT '预计合同额(万元)', | ||||
|     `unit_price_index`          VARCHAR(255)                   NULL COMMENT '单价指标', | ||||
|     `engineering_risk`          VARCHAR(16)                    NULL COMMENT '工期风险', | ||||
|     `technical_risk`            VARCHAR(16)                    NULL COMMENT '技术风险', | ||||
|     `economic_risk`             VARCHAR(16)                    NULL COMMENT '经济风险', | ||||
|     `contract_risk`             VARCHAR(16)                    NULL COMMENT '合同风险', | ||||
|     `personnel_risk`            VARCHAR(16)                    NULL COMMENT '人员风险', | ||||
|     `construction_risk`         VARCHAR(16)                    NULL COMMENT '施工风险', | ||||
|     `management_risk`           VARCHAR(16)                    NULL COMMENT '管理风险', | ||||
|     `subcontract_risk`          VARCHAR(16)                    NULL COMMENT '分包风险', | ||||
|     `other_risks`               TEXT                           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 COMMENT '创建时间', | ||||
|     `update_time`               DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
| ) COMMENT ='项目风险评估签审意见'; | ||||
|  | ||||
| drop table if exists xzd_bid_pre_project; | ||||
|  | ||||
| CREATE TABLE xzd_bid_pre_project | ||||
| ( | ||||
|     `id`                 BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `project_number`     VARCHAR(64)                    NOT NULL COMMENT '项目编码', | ||||
|     `project_name`       VARCHAR(255)                   NOT NULL COMMENT '项目名称', | ||||
|     `country`            VARCHAR(100)                   NOT NULL COMMENT '国家', | ||||
|     `province`           VARCHAR(100)                   NOT NULL COMMENT '省', | ||||
|     `city`               VARCHAR(100)                   NOT NULL COMMENT '城市', | ||||
|     `district`           VARCHAR(100)                   NOT NULL COMMENT '区县', | ||||
|     `project_location`   VARCHAR(255)                   null COMMENT '工程地点', | ||||
|     `capital_source`     VARCHAR(255)                   null COMMENT '资金来源', | ||||
|     `contracting_method` VARCHAR(16)                    null COMMENT '承包方式', | ||||
|     `operation_mode`     VARCHAR(16)                    null COMMENT '经营模式', | ||||
|     `project_type_id`    BIGINT                         NOT NULL COMMENT '项目类型', | ||||
|     `bidding_method`     VARCHAR(100)                   null COMMENT '招标方式', | ||||
|     `liaison_method`     VARCHAR(100)                   null COMMENT '联系方法', | ||||
|     `investment_unit`    VARCHAR(255)                   null COMMENT '投资单位', | ||||
|     `project_cost`       DECIMAL(20, 2) DEFAULT 0.0000  not null COMMENT '工程造价(万元)', | ||||
|     `information_cost`   DECIMAL(20, 2) DEFAULT 0.0000  not 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 COMMENT '创建时间', | ||||
|     `update_time`        DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
| ) COMMENT ='标前立项'; | ||||
|  | ||||
| drop table if exists xzd_bqlx_project_info; | ||||
|  | ||||
| CREATE TABLE xzd_bqlx_project_info | ||||
| ( | ||||
|     `id`                               BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bid_pre_project_id`               BIGINT                         NOT NULL COMMENT '关联标前立项ID', | ||||
|     `expected_start_date`              DATE COMMENT '预计开工日期', | ||||
|     `qualification_requirement`        VARCHAR(512) COMMENT '资质要求', | ||||
|     `bid_start_date`                   DATE COMMENT '报名开始时间', | ||||
|     `bid_end_date`                     DATE                           NOT NULL COMMENT '报名截止时间', | ||||
|     `submission_deadline`              DATE COMMENT '投标截止时间', | ||||
|     `design_description`               VARCHAR(512) COMMENT '设计情况', | ||||
|     `project_status`                   TEXT COMMENT '工程概况', | ||||
|     `bidding_announcement_address`     VARCHAR(512) COMMENT '招标公告地址', | ||||
|     `quality_requirement`              VARCHAR(255) COMMENT '质量要求', | ||||
|     `duration_days`                    DECIMAL(10, 1) default 0.0 COMMENT '工期要求(天)', | ||||
|     `lowest_qualification_requirement` VARCHAR(512) COMMENT '最低资质要求', | ||||
|     `project_manager_requirement`      VARCHAR(512) COMMENT '项目经理要求', | ||||
|     `performance_requirement`          VARCHAR(512) COMMENT '业绩要求', | ||||
|     `start_date`                       DATE COMMENT '开标时间', | ||||
|     `evaluation_method`                VARCHAR(128) COMMENT '评标方式', | ||||
|     `bidding_deposit_form`             VARCHAR(255) COMMENT '投标保证金形式', | ||||
|     `bidding_deposit`                  DECIMAL(20, 4) default 0.0000 COMMENT '投标保证金', | ||||
|     `construction_unit`                VARCHAR(255) COMMENT '建设单位', | ||||
|     `construction_person`              VARCHAR(100) COMMENT '建设单位联系人', | ||||
|     `construction_method`              VARCHAR(100) COMMENT '建设单位联系方式', | ||||
|     `bidding_unit`                     VARCHAR(255) COMMENT '招标单位', | ||||
|     `bidding_person`                   VARCHAR(100) COMMENT '招标单位联系人', | ||||
|     `bidding_method`                   VARCHAR(100) COMMENT '招标单位联系方式', | ||||
|     `cost_price`                       DECIMAL(20, 4) default 0.0000 COMMENT '成本价', | ||||
|     `bidding_price_control`            DECIMAL(20, 4) default 0.0000 COMMENT '招标控制价', | ||||
|     `project_number`                   VARCHAR(64)                    NOT NULL COMMENT '项目编码', | ||||
|     `default_finance`                  varchar(255)                   NULL COMMENT '默认财务组织', | ||||
|     `involve_finance`                  varchar(255)                   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 COMMENT '创建时间', | ||||
|     `update_time`                      DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
| ) COMMENT ='标前立项-项目信息'; | ||||
|  | ||||
| drop table if exists xzd_project_type; | ||||
|  | ||||
| CREATE TABLE xzd_project_type | ||||
| ( | ||||
|     `id`          BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `parent_id`   BIGINT   DEFAULT 0 NOT NULL COMMENT '父节点ID', | ||||
|     `type_name`   VARCHAR(100)       NOT NULL COMMENT '项目类型名称', | ||||
|     `sort_order`  INT      DEFAULT 0 COMMENT '排序', | ||||
|     `remark`      VARCHAR(255) COMMENT '备注', | ||||
|     -- 公共字段 | ||||
|     `create_by`   bigint             NULL COMMENT '创建者', | ||||
|     `update_by`   bigint             NULL COMMENT '更新者', | ||||
|     `create_dept` bigint             null comment '创建部门', | ||||
|     `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||||
|     `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
| ) COMMENT ='项目类型'; | ||||
|  | ||||
| drop table if exists xzd_bidding_file_estimate; | ||||
|  | ||||
| CREATE TABLE xzd_bidding_file_estimate | ||||
| ( | ||||
|     `id`                          BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `document_code`               VARCHAR(50)                    NOT NULL COMMENT '单据编码', | ||||
|     `document_date`               DATE                           NOT NULL COMMENT '单据日期', | ||||
|     `project_name`                VARCHAR(255)                   NOT NULL COMMENT '项目名称', | ||||
|     `title`                       VARCHAR(255) COMMENT '标题', | ||||
|     `project_location`            VARCHAR(255) COMMENT '工程地点', | ||||
|     `bidding_unit`                VARCHAR(255) COMMENT '招标单位', | ||||
|     `bidding_method`              VARCHAR(16) COMMENT '招标方式', | ||||
|     `contracting_method`          VARCHAR(16) COMMENT '承包方式', | ||||
|     `start_date`                  DATE COMMENT '开标时间', | ||||
|     `project_overview`            TEXT COMMENT '工程概况', | ||||
|     `bidding_date`                DATE COMMENT '投标时间', | ||||
|     `bidding_address`             VARCHAR(255) COMMENT '投标地址', | ||||
|     `bidding_control_price`       DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '招标控制价', | ||||
|     `evaluation_method`           VARCHAR(100) COMMENT '评标方法', | ||||
|     `bidding_scope`               VARCHAR(255) COMMENT '招标范围', | ||||
|  | ||||
|     `project_manager_requirement` varchar(1024) 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 COMMENT '创建时间', | ||||
|     `update_time`                 DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
|  | ||||
| ) COMMENT ='招标文件审估'; | ||||
|  | ||||
|  | ||||
| drop table if exists xzd_bidding_agency_fee_payment; | ||||
|  | ||||
| CREATE TABLE xzd_bidding_agency_fee_payment | ||||
| ( | ||||
|     `id`                 BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `document_code`      VARCHAR(50)                    NOT NULL COMMENT '单据编码', | ||||
|     `document_date`      DATE                           NOT NULL COMMENT '单据日期', | ||||
|     `title`              VARCHAR(255) COMMENT '标题', | ||||
|  | ||||
|     `project_name`       VARCHAR(255)                   NOT NULL COMMENT '项目', | ||||
|     `project_location`   VARCHAR(512) COMMENT '工程地点', | ||||
|     `contact_person`     VARCHAR(100) COMMENT '联系人', | ||||
|     `contact_method`     VARCHAR(100) COMMENT '联系方式', | ||||
|     `bidding_date`       DATE COMMENT '投标时间', | ||||
|  | ||||
|     `agency_name`        VARCHAR(255)                   NOT NULL COMMENT '代理机构名称', | ||||
|  | ||||
|  | ||||
|     `application_amount` DECIMAL(20, 4) DEFAULT 0.0000  NOT NULL COMMENT '申请金额', | ||||
|     `payment_method`     VARCHAR(16)                    NOT NULL COMMENT '支付方式', | ||||
|     `receiving_bank`     VARCHAR(255) COMMENT '收款银行', | ||||
|     `receiving_account`  VARCHAR(100) COMMENT '收款', | ||||
|     `reason`             varchar(1024) 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 COMMENT '创建时间', | ||||
|     `update_time`        DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
|  | ||||
| ) COMMENT ='招标代理服务费支付申请'; | ||||
|  | ||||
| drop table if exists xzd_bid_deposit_payment; | ||||
|  | ||||
| CREATE TABLE `xzd_bid_deposit_payment` | ||||
| ( | ||||
|     `id`                     BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `document_code`          VARCHAR(50)                    NOT NULL COMMENT '单据编码', | ||||
|     `document_date`          DATE                           NOT NULL COMMENT '单据日期', | ||||
|     `project_name`           VARCHAR(255)                   NOT NULL COMMENT '项目名称', | ||||
|     `project_cost`           DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '工程造价(万元)', | ||||
|     `business_mode`          VARCHAR(100)   DEFAULT NULL COMMENT '经营模式', | ||||
|     `deposit_amount`         DECIMAL(20, 4) DEFAULT 0.0000  NOT NULL COMMENT '保证金金额', | ||||
|     `deposit_amount_capital` VARCHAR(512)                   NOT NULL COMMENT '保证金金额大写', | ||||
|     `remittance_method`      VARCHAR(128)   DEFAULT NULL COMMENT '汇款方式', | ||||
|     `payment_deadline`       DATETIME       DEFAULT NULL COMMENT '支付截止时间', | ||||
|     `receiving_unit`         VARCHAR(255)   DEFAULT NULL COMMENT '收款单位', | ||||
|     `receiving_account_name` VARCHAR(255)   DEFAULT NULL COMMENT '收款账户名称', | ||||
|     `receiving_bank`         VARCHAR(255)   DEFAULT NULL COMMENT '收款账户银行', | ||||
|     `receiving_bank_account` VARCHAR(100)   DEFAULT NULL COMMENT '收款银行账号', | ||||
|     `request_recovery_days`  INT            DEFAULT '0' COMMENT '招标结束后要求工作日收回', | ||||
|     `deposit_type`           VARCHAR(16)                    NOT NULL COMMENT '保证金类型', | ||||
|     `receipt_requirement`    VARCHAR(16)    DEFAULT NULL COMMENT '回单要求', | ||||
|     `is_mail`                TINYINT(1)     DEFAULT '0' COMMENT '是否邮寄(0否 1是)', | ||||
|     `deposit_ratio`          DECIMAL(5, 2)  default 0.00 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 COMMENT '创建时间', | ||||
|     `update_time`            DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
| ) COMMENT = '投标保证金缴纳'; | ||||
|  | ||||
| drop table if exists xzd_bid_deposit_recovery; | ||||
|  | ||||
| CREATE TABLE `xzd_bid_deposit_recovery` | ||||
| ( | ||||
|     `id`                             BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `document_code`                  VARCHAR(50)                    NOT NULL COMMENT '单据编码', | ||||
|     `document_date`                  DATE                           NOT NULL COMMENT '单据日期', | ||||
|     `project_name`                   VARCHAR(255)                   NOT NULL COMMENT '项目名称', | ||||
|     `project_type`                   BIGINT         DEFAULT NULL COMMENT '项目类型', | ||||
|     `business_mode`                  VARCHAR(255)   DEFAULT NULL COMMENT '经营模式', | ||||
|     `project_cost`                   DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '工程造价', | ||||
|     `recovery_amount`                DECIMAL(20, 4) DEFAULT 0.0000  NOT NULL COMMENT '收回金额', | ||||
|     `recovery_amount_capital`        VARCHAR(255)                   NOT NULL COMMENT '收回金额大写', | ||||
|     `data_fee`                       DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '资料费', | ||||
|     `data_fee_capital`               VARCHAR(255)   DEFAULT NULL COMMENT '资料费大写', | ||||
|     `refund_amount`                  DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '退款金额', | ||||
|     `recovery_date`                  DATE           DEFAULT NULL COMMENT '收回日期', | ||||
|     `deposit_status`                 VARCHAR(50)    DEFAULT NULL COMMENT '保证金状态', | ||||
|     `deposit_amount`                 DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '保证金金额', | ||||
|     `deposit_amount_capital`         VARCHAR(100)   DEFAULT NULL COMMENT '保证金金额大写', | ||||
|     `deposit_remittance_method`      VARCHAR(255)   DEFAULT NULL COMMENT '保证金汇款方式', | ||||
|     `payment_deadline`               DATETIME       DEFAULT NULL COMMENT '支付截止时间', | ||||
|     `receiving_unit`                 VARCHAR(255)   DEFAULT NULL COMMENT '收款单位', | ||||
|     `deposit_receiving_account_name` VARCHAR(255)   DEFAULT NULL COMMENT '保证金收款账户名称', | ||||
|     `receiving_bank`                 VARCHAR(255)   DEFAULT NULL COMMENT '收款账户银行', | ||||
|     `receiving_bank_account`         VARCHAR(255)   DEFAULT NULL COMMENT '收款账户账号', | ||||
|     `applicant`                      VARCHAR(100)   DEFAULT NULL COMMENT '申请人', | ||||
|     `application_unit`               VARCHAR(255)   DEFAULT NULL COMMENT '申请单位', | ||||
|     `application_date`               DATE           DEFAULT 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 COMMENT '创建时间', | ||||
|     `update_time`                    DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' | ||||
| ) COMMENT = '投标保证金收回'; | ||||
|  | ||||
| drop table if exists xzd_bidding_document; | ||||
|  | ||||
| CREATE TABLE `xzd_bidding_document` | ||||
| ( | ||||
|     `id`               BIGINT                       NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `document_number`  VARCHAR(50)                  NOT NULL COMMENT '单据编号', | ||||
|     `title`            VARCHAR(255) DEFAULT NULL COMMENT '标题', | ||||
|     `bidding_time`     DATETIME                     NOT NULL COMMENT '投标时间', | ||||
|     `project_name`     VARCHAR(255)                 NOT NULL COMMENT '项目名称', | ||||
|     `project_type`     BIGINT       DEFAULT NULL COMMENT '项目类型ID', | ||||
|     `bid_unit`         VARCHAR(255) DEFAULT NULL COMMENT '投标单位', | ||||
|     `document_date`    DATE                         NOT NULL COMMENT '单据日期', | ||||
|     `project_manager`  VARCHAR(100) DEFAULT NULL COMMENT '项目经理', | ||||
|     `project_overview` TEXT         DEFAULT NULL COMMENT '工程概况', | ||||
|     `organization`     VARCHAR(255) DEFAULT 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 COMMENT '创建时间', | ||||
|     `update_time`      DATETIME     DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | ||||
|     PRIMARY KEY (`id`) | ||||
| ) COMMENT ='投标文件'; | ||||
|  | ||||
| drop table if exists xzd_tbwj_business_bid; | ||||
|  | ||||
| CREATE TABLE `xzd_tbwj_business_bid` | ||||
| ( | ||||
|     `id`                  BIGINT                        NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bidding_document_id` BIGINT                        NOT NULL COMMENT '投标文件ID', | ||||
|     `bid_price`           DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '标底价', | ||||
|     `discount_rate`       DECIMAL(5, 2)  DEFAULT 0.00 COMMENT '折扣率', | ||||
|     `ceiling_price`       DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '最高限价', | ||||
|     `cost_price`          DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '成本价', | ||||
|     `total_bid_price`     DECIMAL(20, 4) DEFAULT 0.0000 NOT NULL COMMENT '投标报价', | ||||
|     `fee_rate`            DECIMAL(5, 2)  DEFAULT 0.00 COMMENT '毛利率', | ||||
|     `bid_tax_rate`        DECIMAL(5, 2)  DEFAULT 0.00 COMMENT '投标税率', | ||||
|     `petty_cash`          DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '备用金', | ||||
|     `compilation_dept`    VARCHAR(512)                  NULL COMMENT '编制部门', | ||||
|     `estimated_profit`    VARCHAR(512)                  NULL COMMENT '报价说明', | ||||
|     PRIMARY KEY (`id`), | ||||
|     INDEX `idx_bidding_document_id` (`bidding_document_id`) | ||||
| ) COMMENT ='投标文件-商务标'; | ||||
|  | ||||
| drop table if exists xzd_tbwj_technical_bid; | ||||
|  | ||||
| CREATE TABLE `xzd_tbwj_technical_bid` | ||||
| ( | ||||
|     `id`                     BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bidding_document_id`    BIGINT NOT NULL COMMENT '投标文件ID', | ||||
|     `quality_requirements`   TEXT         DEFAULT NULL COMMENT '质量要求', | ||||
|     `technical_requirements` TEXT         DEFAULT NULL COMMENT '技术要求', | ||||
|     `compilation_dept`       VARCHAR(255) DEFAULT NULL COMMENT '编制部门', | ||||
|     `compilation_explain`    VARCHAR(255) DEFAULT NULL COMMENT '编制说明', | ||||
|     PRIMARY KEY (`id`), | ||||
|     INDEX `idx_bidding_document_id` (`bidding_document_id`) | ||||
| ) COMMENT ='投标文件-技术标'; | ||||
|  | ||||
| drop table if exists xzd_tbwj_qualification_requirements; | ||||
| CREATE TABLE `xzd_tbwj_qualification_requirements` | ||||
| ( | ||||
|     `id`                        BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bidding_document_id`       BIGINT       NOT NULL COMMENT '投标文件ID', | ||||
|     `qualification_requirement` VARCHAR(512) NOT NULL COMMENT '资审要求', | ||||
|     `compilation_points`        TEXT DEFAULT NULL COMMENT '编制要点', | ||||
|     `provide_time`              DATETIME     NOT NULL COMMENT '提供时间', | ||||
|     `remark`                    TEXT         null COMMENT '备注', | ||||
|     PRIMARY KEY (`id`), | ||||
|     INDEX `idx_bidding_document_id` (`bidding_document_id`) | ||||
| ) COMMENT ='投标文件-资审要求'; | ||||
|  | ||||
| drop table if exists xzd_tbwj_business_bid_requirements; | ||||
| CREATE TABLE `xzd_tbwj_business_bid_requirements` | ||||
| ( | ||||
|     `id`                       BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bidding_document_id`      BIGINT       NOT NULL COMMENT '投标文件ID', | ||||
|     `business_bid_requirement` VARCHAR(512) NOT NULL COMMENT '商务标要求', | ||||
|     `compilation_points`       TEXT DEFAULT NULL COMMENT '编制要点', | ||||
|     `provide_time`             DATETIME     NOT NULL COMMENT '提供时间', | ||||
|     `remark`                   TEXT         null COMMENT '备注', | ||||
|     PRIMARY KEY (`id`), | ||||
|     INDEX `idx_bidding_document_id` (`bidding_document_id`) | ||||
| ) COMMENT ='投标文件-商务标要求'; | ||||
|  | ||||
| drop table if exists xzd_tbwj_technical_bid_requirements; | ||||
| CREATE TABLE `xzd_tbwj_technical_bid_requirements` | ||||
| ( | ||||
|     `id`                        BIGINT       NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bidding_document_id`       BIGINT       NOT NULL COMMENT '投标文件ID', | ||||
|     `technical_bid_requirement` VARCHAR(512) NOT NULL COMMENT '技术标要求', | ||||
|     `compilation_points`        TEXT DEFAULT NULL COMMENT '编制要点', | ||||
|     `provide_time`              DATETIME     NOT NULL COMMENT '提供时间', | ||||
|     `remark`                    TEXT         null COMMENT '备注', | ||||
|     PRIMARY KEY (`id`), | ||||
|     INDEX `idx_bidding_document_id` (`bidding_document_id`) | ||||
| ) COMMENT ='投标文件-技术标要求'; | ||||
|  | ||||
| drop table if exists xzd_post_bid_analysis; | ||||
| CREATE TABLE `xzd_post_bid_analysis` | ||||
| ( | ||||
|     `id`                  BIGINT                         NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `project_code`        VARCHAR(100)                   NOT NULL COMMENT '项目编码', | ||||
|     `project_name`        VARCHAR(255)                   NOT NULL COMMENT '项目名称', | ||||
|     `project_cost`        DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '工程造价(万元)', | ||||
|     `project_type`        BIGINT         DEFAULT NULL COMMENT '项目类型ID', | ||||
|     `project_address`     VARCHAR(255)   DEFAULT NULL COMMENT '项目地址', | ||||
|     `project_overview`    TEXT           DEFAULT NULL COMMENT '工程概况', | ||||
|     `construction_unit`   VARCHAR(255)   DEFAULT NULL COMMENT '建设单位', | ||||
|     `bid_opening_date`    DATE           DEFAULT NULL COMMENT '开标日期', | ||||
|     `business_model`      VARCHAR(100)   DEFAULT NULL COMMENT '经营模式', | ||||
|     `control_price`       DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '招标控制价(万元)', | ||||
|     `final_quote`         DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '最终报价(万元)', | ||||
|     `bidding_result`      VARCHAR(16)                    NOT NULL COMMENT '投标结果', | ||||
|     `bid_record_link`     VARCHAR(500)   DEFAULT NULL COMMENT '开标记录链接', | ||||
|     `analysis_summary`    TEXT           DEFAULT NULL COMMENT '投标分析与总结', | ||||
|     `final_quote_yuan`    DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '最终报价(元)', | ||||
|     `final_quote_chinese` VARCHAR(255)   DEFAULT 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 COMMENT '创建时间', | ||||
|     `update_time`         DATETIME       DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | ||||
|     PRIMARY KEY (`id`) | ||||
| ) COMMENT ='标后分析'; | ||||
|  | ||||
| drop table if exists xzd_bidding_unit_ranking; | ||||
| CREATE TABLE `xzd_bidding_unit_ranking` | ||||
| ( | ||||
|     `id`                BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', | ||||
|     `bid_analysis_id`   BIGINT NOT NULL COMMENT '标后分析ID', | ||||
|     `bidding_unit_name` VARCHAR(255)   DEFAULT NULL COMMENT '参与投标单位', | ||||
|     `bid_price`         DECIMAL(20, 4) DEFAULT 0.0000 COMMENT '投标报价(万元)', | ||||
|     `ranking`           INT    NOT NULL COMMENT '排名', | ||||
|     `remark`            TEXT   null COMMENT '备注', | ||||
|     PRIMARY KEY (`id`), | ||||
|     INDEX `idx_bid_analysis_id` (`bid_analysis_id`) | ||||
| ) COMMENT ='标后分析-投标单位排名'; | ||||
| @ -380,42 +380,66 @@ create table ctr_subcontract_seal | ||||
| ) comment ='分包合同-印章信息'; | ||||
|  | ||||
| -- 菜单 SQL | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692582274809858, '主要信息', '1970690857740615681', '1', 'subcontractMain', 'ctr/subcontractMain/index', 1, 0, 'C', '0', '0', 'ctr:subcontractMain:list', '#', 103, 1, sysdate(), null, null, '主要信息菜单'); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692582274809858, '主要信息', '1970690857740615681', '1', 'subcontractMain', 'ctr/subcontractMain/index', 1, | ||||
|         0, 'C', '0', '0', 'ctr:subcontractMain:list', '#', 103, 1, sysdate(), null, null, '主要信息菜单'); | ||||
|  | ||||
| -- 按钮 SQL | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692582274809859, '主要信息查询', 1970692582274809858, '1',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:query',        '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692582274809859, '主要信息查询', 1970692582274809858, '1', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractMain:query', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692582274809860, '主要信息新增', 1970692582274809858, '2',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:add',          '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692582274809860, '主要信息新增', 1970692582274809858, '2', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractMain:add', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692582274809861, '主要信息修改', 1970692582274809858, '3',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:edit',         '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692582274809861, '主要信息修改', 1970692582274809858, '3', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractMain:edit', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692582274809862, '主要信息删除', 1970692582274809858, '4',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:remove',       '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692582274809862, '主要信息删除', 1970692582274809858, '4', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractMain:remove', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692582274809863, '主要信息导出', 1970692582274809858, '5',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:export',       '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692582274809863, '主要信息导出', 1970692582274809858, '5', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractMain:export', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
|  | ||||
| -- 菜单 SQL | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692923594686465, '印章信息', '1970692582274809858', '1', 'subcontractSeal', 'ctr/subcontractSeal/index', 1, 0, 'C', '0', '0', 'ctr:subcontractSeal:list', '#', 103, 1, sysdate(), null, null, '印章信息菜单'); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692923594686465, '印章信息', '1970692582274809858', '1', 'subcontractSeal', 'ctr/subcontractSeal/index', 1, | ||||
|         0, 'C', '0', '0', 'ctr:subcontractSeal:list', '#', 103, 1, sysdate(), null, null, '印章信息菜单'); | ||||
|  | ||||
| -- 按钮 SQL | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692923594686466, '印章信息查询', 1970692923594686465, '1',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:query',        '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692923594686466, '印章信息查询', 1970692923594686465, '1', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractSeal:query', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692923594686467, '印章信息新增', 1970692923594686465, '2',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:add',          '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692923594686467, '印章信息新增', 1970692923594686465, '2', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractSeal:add', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692923594686468, '印章信息修改', 1970692923594686465, '3',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:edit',         '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692923594686468, '印章信息修改', 1970692923594686465, '3', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractSeal:edit', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692923594686469, '印章信息删除', 1970692923594686465, '4',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:remove',       '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692923594686469, '印章信息删除', 1970692923594686465, '4', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractSeal:remove', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values(1970692923594686470, '印章信息导出', 1970692923594686465, '5',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:export',       '#', 103, 1, sysdate(), null, null, ''); | ||||
| insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||
|                       status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark) | ||||
| values (1970692923594686470, '印章信息导出', 1970692923594686465, '5', '#', '', 1, 0, 'F', '0', '0', | ||||
|         'ctr:subcontractSeal:export', '#', 103, 1, sysdate(), null, null, ''); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user