Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
		| @ -300,7 +300,7 @@ dxf2GeoJson: | |||||||
|   file-name: main.exe |   file-name: main.exe | ||||||
| ys7: | ys7: | ||||||
|   app-key: 3acf9f1a43dc4209841e0893003db0a2 |   app-key: 3acf9f1a43dc4209841e0893003db0a2 | ||||||
|   app-secret: 4bbf3e9394f55d3af6e3af27b2d3db36 |   app-secret: 09e29c70ae1161fbc3ce2030fc09ba2e | ||||||
| # 斯巴达算法 | # 斯巴达算法 | ||||||
| sparta: | sparta: | ||||||
|   url: http://119.3.204.120:8040 |   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.contractor.service.ISubUserSalaryDetailService; | ||||||
| import org.dromara.design.service.IDesTechnicalStandardService; | import org.dromara.design.service.IDesTechnicalStandardService; | ||||||
| import org.dromara.facility.domain.FacMatrix; | import org.dromara.facility.domain.FacMatrix; | ||||||
|  | import org.dromara.facility.domain.FacPhotovoltaicPanel; | ||||||
| import org.dromara.facility.service.IFacMatrixService; | import org.dromara.facility.service.IFacMatrixService; | ||||||
| import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService; | import org.dromara.facility.service.IFacPhotovoltaicPanelPartsService; | ||||||
| import org.dromara.facility.service.IFacPhotovoltaicPanelService; | import org.dromara.facility.service.IFacPhotovoltaicPanelService; | ||||||
| @ -101,6 +102,52 @@ public class DemoTest { | |||||||
|     @Resource |     @Resource | ||||||
|     private IOutConstructionValueService constructionValueService; |     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 |     @Test | ||||||
|     void testConstructionValue() { |     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.*; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
|  | import static org.dromara.project.domain.enums.BusAttendanceClockStatusEnum.ATTENDANCE_LIST; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 施工人员Service业务层处理 |  * 施工人员Service业务层处理 | ||||||
|  * |  * | ||||||
| @ -1194,8 +1196,11 @@ public class SubConstructionUserServiceImpl extends ServiceImpl<SubConstructionU | |||||||
|                                 unClockDays++; |                                 unClockDays++; | ||||||
|                             } |                             } | ||||||
|                         } |                         } | ||||||
|  |                         if(ATTENDANCE_LIST.contains(clockInStatus) || ATTENDANCE_LIST.contains(clockOutStatus)){ | ||||||
|  |                             attendanceDays++; | ||||||
|  |                         } | ||||||
|  |  | ||||||
|                     } |                     } | ||||||
|                     attendanceDays = dailyMap.size() - leaveDays; |  | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|             constructionUserAttendanceTotalResp.setAttendanceDays(attendanceDays); |             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.core.utils.StringUtils; | ||||||
| import org.dromara.common.mybatis.core.page.PageQuery; | import org.dromara.common.mybatis.core.page.PageQuery; | ||||||
| import org.dromara.common.mybatis.core.page.TableDataInfo; | 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.SubConstructionUser; | ||||||
| import org.dromara.contractor.domain.SubContractor; | import org.dromara.contractor.domain.SubContractor; | ||||||
| import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; | import org.dromara.contractor.domain.dto.contractor.SubContractorCreateReq; | ||||||
| @ -119,7 +118,10 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S | |||||||
|         // 数据校验 |         // 数据校验 | ||||||
|         validEntityBeforeSave(contractor); |         validEntityBeforeSave(contractor); | ||||||
|         String name = req.getName(); |         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) { |         if (count > 0) { | ||||||
|             throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); |             throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); | ||||||
|         } |         } | ||||||
| @ -160,7 +162,11 @@ public class SubContractorServiceImpl extends ServiceImpl<SubContractorMapper, S | |||||||
|         } |         } | ||||||
|         // 判断名称是否重复 |         // 判断名称是否重复 | ||||||
|         if (!oldContractor.getName().equals(req.getName())) { |         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) { |             if (count > 0) { | ||||||
|                 throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); |                 throw new ServiceException("分包单位名称重复", HttpStatus.BAD_REQUEST); | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -353,6 +353,9 @@ public class BusBillofquantitiesVersionsServiceImpl extends ServiceImpl<BusBillo | |||||||
|         lqw.eq(BusBillofquantitiesVersions::getWorkOrderType, "3"); |         lqw.eq(BusBillofquantitiesVersions::getWorkOrderType, "3"); | ||||||
|         lqw.eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus()); |         lqw.eq(BusBillofquantitiesVersions::getStatus, BusinessStatusEnum.FINISH.getStatus()); | ||||||
|         List<BusBillofquantitiesVersionsVo> result = baseMapper.selectVoList(lqw); |         List<BusBillofquantitiesVersionsVo> result = baseMapper.selectVoList(lqw); | ||||||
|  |         if (CollUtil.isEmpty(result)) { | ||||||
|  |             return Collections.emptyList(); | ||||||
|  |         } | ||||||
|         List<String> versionss = new ArrayList<>(); |         List<String> versionss = new ArrayList<>(); | ||||||
|         result.forEach(v -> versionss.add(v.getVersions())); |         result.forEach(v -> versionss.add(v.getVersions())); | ||||||
|         List<BusBillofquantities> busBillofquantities = busBillofquantitiesService.getBaseMapper().selectList(new LambdaQueryWrapper<BusBillofquantities>() |         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)); |         return toAjax(busAttendanceService.deleteWithValidByIds(List.of(ids), true)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询项目施工人员前14天考勤状况 | ||||||
|  |      */ | ||||||
|     @GetMapping("/list/clockDate/twoWeek") |     @GetMapping("/list/clockDate/twoWeek") | ||||||
|     public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(Long projectId) { |     public R<List<BusAttendanceClockDateForTwoWeekVo>> getClockDateForTwoWeekList(Long projectId) { | ||||||
|         return R.ok(busAttendanceService.getClockDateForTwoWeekList(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") |     @PostMapping("/exportList") | ||||||
|     public void exportList(AttendanceExportDto dto, HttpServletResponse response) { |     public void exportList(AttendanceExportDto dto, HttpServletResponse response) { | ||||||
|  | |||||||
| @ -1,6 +1,7 @@ | |||||||
| package org.dromara.project.controller.app; | package org.dromara.project.controller.app; | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollectionUtil; | import cn.hutool.core.collection.CollectionUtil; | ||||||
|  | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import jakarta.annotation.Resource; | import jakarta.annotation.Resource; | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| @ -128,8 +129,8 @@ public class BusAttendanceAppController extends BaseController { | |||||||
|      * 获取用户打卡异常记录 |      * 获取用户打卡异常记录 | ||||||
|      */ |      */ | ||||||
|     @GetMapping("/getAbnormalAttendance/{projectId}") |     @GetMapping("/getAbnormalAttendance/{projectId}") | ||||||
|     public R<List<BusAttendanceVo>> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId){ |     public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(@NotNull @PathVariable("projectId") Long projectId, PageQuery pageQuery){ | ||||||
|         return R.ok(attendanceService.getAbnormalAttendance(projectId)); |         return attendanceService.getAbnormalAttendance(projectId,pageQuery); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|  | |||||||
| @ -2,6 +2,8 @@ package org.dromara.project.domain.enums; | |||||||
|  |  | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * @author lilemy |  * @author lilemy | ||||||
|  * @date 2025/4/7 11:31 |  * @date 2025/4/7 11:31 | ||||||
| @ -9,6 +11,8 @@ import lombok.Getter; | |||||||
| @Getter | @Getter | ||||||
| public enum BusAttendanceClockStatusEnum { | public enum BusAttendanceClockStatusEnum { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     NORMAL("正常", "1"), |     NORMAL("正常", "1"), | ||||||
|     LATE("迟到", "2"), |     LATE("迟到", "2"), | ||||||
|     LEAVEEARLY("早退", "3"), |     LEAVEEARLY("早退", "3"), | ||||||
| @ -24,5 +28,7 @@ public enum BusAttendanceClockStatusEnum { | |||||||
|         this.text = text; |         this.text = text; | ||||||
|         this.value = value; |         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; | package org.dromara.project.service; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| import jakarta.validation.constraints.NotNull; | import jakarta.validation.constraints.NotNull; | ||||||
| import org.dromara.common.core.domain.R; |  | ||||||
| import org.dromara.project.domain.dto.attendance.*; | import org.dromara.project.domain.dto.attendance.*; | ||||||
| import org.dromara.project.domain.vo.BusAttendanceVo; | import org.dromara.project.domain.vo.BusAttendanceVo; | ||||||
| import org.dromara.project.domain.bo.BusAttendanceBo; | 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 com.baomidou.mybatisplus.extension.service.IService; | ||||||
| import org.dromara.project.domain.vo.BusMonthAttendanceVo; | import org.dromara.project.domain.vo.BusMonthAttendanceVo; | ||||||
| import org.dromara.project.domain.vo.attendance.*; | 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.PathVariable; | ||||||
| import org.springframework.web.bind.annotation.RequestParam; |  | ||||||
| import org.springframework.web.multipart.MultipartFile; | import org.springframework.web.multipart.MultipartFile; | ||||||
|  |  | ||||||
| import java.time.LocalDate; |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| @ -132,9 +129,9 @@ public interface IBusAttendanceService extends IService<BusAttendance>{ | |||||||
|     List<BusMonthAttendanceVo> getMonthAttendance(Long projectId, String  month); |     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); |     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.JSONArray; | ||||||
| import cn.hutool.json.JSONUtil; | import cn.hutool.json.JSONUtil; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.core.metadata.IPage; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; | ||||||
| @ -14,7 +15,6 @@ import jakarta.annotation.Resource; | |||||||
| import jakarta.servlet.http.HttpServletResponse; | import jakarta.servlet.http.HttpServletResponse; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
| import org.apache.poi.hssf.usermodel.HSSFWorkbook; |  | ||||||
| import org.apache.poi.ss.usermodel.*; | import org.apache.poi.ss.usermodel.*; | ||||||
| import org.apache.poi.ss.util.CellRangeAddress; | import org.apache.poi.ss.util.CellRangeAddress; | ||||||
| import org.apache.poi.xssf.usermodel.XSSFWorkbook; | import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||||||
| @ -64,6 +64,8 @@ import java.util.*; | |||||||
| import java.util.concurrent.CompletableFuture; | import java.util.concurrent.CompletableFuture; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
|  | import static org.dromara.project.domain.enums.BusAttendanceClockStatusEnum.ATTENDANCE_LIST; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 考勤Service业务层处理 |  * 考勤Service业务层处理 | ||||||
|  * |  * | ||||||
| @ -707,7 +709,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | |||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public List<BusAttendanceVo> getAbnormalAttendance(Long projectId) { |     public TableDataInfo<BusAttendanceVo> getAbnormalAttendance(Long projectId, PageQuery pageQuery) { | ||||||
|  |  | ||||||
|         List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(), |         List<String> abnormalList = Arrays.asList(BusAttendanceClockStatusEnum.LATE.getValue(), | ||||||
|             BusAttendanceClockStatusEnum.LEAVEEARLY.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())); |         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(BusAttendance::getUserId, userId) | ||||||
|             .eq(b, BusAttendance::getProjectId, projectId) |             .eq(b, BusAttendance::getProjectId, projectId) | ||||||
|             .in(BusAttendance::getClockStatus, abnormalList) |             .in(BusAttendance::getClockStatus, abnormalList) | ||||||
|         ); |         ); | ||||||
|         //转换星期几 |         //转换星期几 | ||||||
|         for (BusAttendanceVo busAttendanceVo : busAttendanceVos) { |         for (BusAttendanceVo busAttendanceVo : busAttendanceVoIPage.getRecords()) { | ||||||
|             busAttendanceVo.setWeek(busAttendanceVo.getClockDate().getDayOfWeek().getValue()); |             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<BusAttendanceClockDateForTwoWeekVo> result = new ArrayList<>(); | ||||||
|         List<String> validStatusList = Arrays.asList("1", "2", "3", "5"); |  | ||||||
|  |  | ||||||
|         LocalDate currentDate = startDate; |         LocalDate currentDate = startDate; | ||||||
|         while (!currentDate.isAfter(now)) { |         while (!currentDate.isAfter(now)) { | ||||||
| @ -1196,7 +1197,7 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | |||||||
|  |  | ||||||
|                 long validCount = records.stream() |                 long validCount = records.stream() | ||||||
|                     .map(BusAttendance::getClockStatus) |                     .map(BusAttendance::getClockStatus) | ||||||
|                     .filter(validStatusList::contains) |                     .filter(ATTENDANCE_LIST::contains) | ||||||
|                     .count(); |                     .count(); | ||||||
|  |  | ||||||
|                 if (validCount >= 2) { |                 if (validCount >= 2) { | ||||||
| @ -1228,6 +1229,65 @@ public class BusAttendanceServiceImpl extends ServiceImpl<BusAttendanceMapper, B | |||||||
|         return result; |         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 |     @Override | ||||||
|     public void getExportList(AttendanceExportDto dto, HttpServletResponse response) { |     public void getExportList(AttendanceExportDto dto, HttpServletResponse response) { | ||||||
|         try (OutputStream outputStream = response.getOutputStream()) { |         try (OutputStream outputStream = response.getOutputStream()) { | ||||||
|  | |||||||
| @ -25,6 +25,8 @@ import org.springframework.web.bind.annotation.*; | |||||||
| import java.util.*; | import java.util.*; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
|  | import static org.dromara.workflow.listener.WorkflowGlobalListener.getType; | ||||||
|  |  | ||||||
| @ConditionalOnEnable | @ConditionalOnEnable | ||||||
| @Validated | @Validated | ||||||
| @RequiredArgsConstructor | @RequiredArgsConstructor | ||||||
| @ -48,7 +50,8 @@ public class FlowAppController { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         List<FlowHisTaskVo>  list= (List<FlowHisTaskVo>) stringObjectMap.get("list"); |         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"); |         Long instanceId = (Long) stringObjectMap.get("instanceId"); | ||||||
| @ -86,9 +89,24 @@ public class FlowAppController { | |||||||
|                 appVo.setFlowStatus(BusinessStatusEnum.WAITING.getStatus()); |                 appVo.setFlowStatus(BusinessStatusEnum.WAITING.getStatus()); | ||||||
|                 if(nodeJson.getNodeType()==1){ |                 if(nodeJson.getNodeType()==1){ | ||||||
|                     String permissionFlag = nodeJson.getPermissionFlag(); |                     String permissionFlag = nodeJson.getPermissionFlag(); | ||||||
|  |                     if(StrUtil.isNotBlank(permissionFlag)){ | ||||||
|  |                         permissionFlag = permissionFlag.replace("@@", ","); | ||||||
|  |                     } | ||||||
|                     List<UserDTO> userDTOS = flwTaskAssigneeService.fetchUsersByStorageIds(permissionFlag, projectId); |                     List<UserDTO> userDTOS = flwTaskAssigneeService.fetchUsersByStorageIds(permissionFlag, projectId); | ||||||
|                     String auditName = userDTOS.stream().map(UserDTO::getNickName).collect(Collectors.joining(",")); |                     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  校审员(系统) |         // 1961314792461586433  校审员(系统) | ||||||
|         // 1961315028017893378  审核员(系统) |         // 1961315028017893378  审核员(系统) | ||||||
|         // 1961315147199041537  审定员(系统) |         // 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 ='分包合同-印章信息'; | ) comment ='分包合同-印章信息'; | ||||||
|  |  | ||||||
| -- 菜单 SQL | -- 菜单 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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692582274809858, '主要信息', '1970690857740615681', '1', 'subcontractMain', 'ctr/subcontractMain/index', 1, 0, 'C', '0', '0', 'ctr:subcontractMain:list', '#', 103, 1, sysdate(), null, null, '主要信息菜单'); |                       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 | -- 按钮 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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692582274809859, '主要信息查询', 1970692582274809858, '1',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:query',        '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692582274809860, '主要信息新增', 1970692582274809858, '2',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:add',          '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692582274809861, '主要信息修改', 1970692582274809858, '3',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:edit',         '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692582274809862, '主要信息删除', 1970692582274809858, '4',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:remove',       '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692582274809863, '主要信息导出', 1970692582274809858, '5',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractMain:export',       '#', 103, 1, sysdate(), null, null, ''); |                       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 | -- 菜单 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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692923594686465, '印章信息', '1970692582274809858', '1', 'subcontractSeal', 'ctr/subcontractSeal/index', 1, 0, 'C', '0', '0', 'ctr:subcontractSeal:list', '#', 103, 1, sysdate(), null, null, '印章信息菜单'); |                       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 | -- 按钮 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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692923594686466, '印章信息查询', 1970692923594686465, '1',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:query',        '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692923594686467, '印章信息新增', 1970692923594686465, '2',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:add',          '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692923594686468, '印章信息修改', 1970692923594686465, '3',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:edit',         '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692923594686469, '印章信息删除', 1970692923594686465, '4',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:remove',       '#', 103, 1, sysdate(), null, null, ''); |                       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) | insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, | ||||||
| values(1970692923594686470, '印章信息导出', 1970692923594686465, '5',  '#', '', 1, 0, 'F', '0', '0', 'ctr:subcontractSeal:export',       '#', 103, 1, sysdate(), null, null, ''); |                       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