From 956b93414462fedab40194d6e5860dc8134681d8 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Thu, 5 Sep 2024 17:40:44 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"angang=E4=BF=AE=E6=94=B9=20=E5=90=88?= =?UTF-8?q?=E5=B9=B6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ff2f335a --- .../xmgl/modules/project/entity/Project.java | 4 +- .../quality/entity/QualityRectifyRecord.java | 2 +- .../impl/QualityRectifyRecordServiceImpl.java | 54 +-- ...AnalyseHardWareAlarmRecordServiceImpl.java | 9 - .../impl/EnterpriseInfoServiceImpl.java | 2 +- .../impl/UserEnterpriseServiceImpl.java | 3 +- ...InspectionStandardBigScreenController.java | 70 ++-- ...zSupplierQualificationApplyController.java | 342 +----------------- .../XzSecurityQualityRectifyRecord.java | 2 +- .../xz/security/entity/vo/FiveScore.java | 15 + .../xz/security/entity/vo/FiveScoresVo.java | 2 +- .../xz/security/entity/vo/TenScore.java | 31 -- ...curityQualityRectifyRecordServiceImpl.java | 51 ++- .../IXzSupplierQualificationApplyService.java | 11 - ...SupplierQualificationApplyServiceImpl.java | 5 - .../zhgd/xmgl/security/WebSecurityConfig.java | 9 - .../java/com/zhgd/xmgl/util/FlowUtil.java | 88 ----- .../java/com/zhgd/xmgl/util/PathUtil.java | 28 +- .../application-gsx-t-dev.properties | 2 - .../lib/wflow-server-1.0-SNAPSHOT.jar | Bin 497605 -> 507229 bytes 20 files changed, 133 insertions(+), 597 deletions(-) create mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScore.java delete mode 100644 src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/TenScore.java delete mode 100644 src/main/java/com/zhgd/xmgl/util/FlowUtil.java diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java index c5e5cc335..ea879027e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/Project.java @@ -325,8 +325,8 @@ public class Project implements Serializable { private Integer enableWorkerSafeWatch; @ApiModelProperty(value = "安全履职报警推送时间") private String workerSafeWatchTime; - @ApiModelProperty(value = "是否需要项目管理员做AI抓拍初筛") - private Integer aiAlarmNeedManageApprove; + + /** * runde平台token */ diff --git a/src/main/java/com/zhgd/xmgl/modules/quality/entity/QualityRectifyRecord.java b/src/main/java/com/zhgd/xmgl/modules/quality/entity/QualityRectifyRecord.java index 708071b96..d223ef69f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/quality/entity/QualityRectifyRecord.java +++ b/src/main/java/com/zhgd/xmgl/modules/quality/entity/QualityRectifyRecord.java @@ -82,7 +82,7 @@ public class QualityRectifyRecord implements Serializable { */ @Excel(name = "违章人员", width = 15) @ApiModelProperty(value = "违章人员") - private String violatorId; + private Long violatorId; @TableField(exist = false) private String realName; diff --git a/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRectifyRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRectifyRecordServiceImpl.java index d7a4ab420..357ac99ad 100644 --- a/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRectifyRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/quality/service/impl/QualityRectifyRecordServiceImpl.java @@ -18,6 +18,7 @@ import com.zhgd.redis.lock.redisson.DistributedLock; import com.zhgd.redis.lock.redisson.RedissonDistributedLock; import com.zhgd.xmgl.call.SanjiangDataCall; import com.zhgd.xmgl.constant.Cts; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper; import com.zhgd.xmgl.modules.basicdata.service.INoticeService; import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; @@ -39,6 +40,7 @@ import com.zhgd.xmgl.modules.worker.mapper.WorkerInfoMapper; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; import com.zhgd.xmgl.modules.xz.entity.XzDeductScoreRecord; import com.zhgd.xmgl.modules.xz.mapper.XzDeductScoreRecordMapper; +import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityRectifyRecord; import com.zhgd.xmgl.push.config.PushPayloads; import com.zhgd.xmgl.util.TimeUtil; import org.apache.commons.collections.CollectionUtils; @@ -214,36 +216,34 @@ public class QualityRectifyRecordServiceImpl extends ServiceImpl map = new HashMap<>(16); - map.put("id", workerInfo.getId()); - map.put("deductScore", ds); - workerInfoService.updateScoreSendAuth(map); - - - //存记录 - XzDeductScoreRecord vo = new XzDeductScoreRecord(); - vo.setProjectSn(qualityInspectionRecord.getProjectSn()); - vo.setWorkerId(workerInfo.getId()); - vo.setTypeName(item.getContent()); - vo.setDeductScore(-item.getDeductScore()); - vo.setType(3); - vo.setCreateDate(new Date()); - vo.setCurScore(workerInfo.getSafeScore() - item.getDeductScore() >= 0 ? workerInfo.getSafeScore() - item.getDeductScore() : 0); - vo.setDeductReason(StrUtil.format("您在{}发现质量隐患({}-{})扣{}分", DateUtil.format(vo.getCreateDate(), "yyyy年MM月dd日HH:mm:ss"), "质量检査", vo.getTypeName() == null ? "无" : vo.getTypeName(), item.getDeductScore())); - vo.setTypeTableId(qualityInspectionRecord.getId()); - xzDeductScoreRecordMapper.insert(vo); + WorkerInfo workerInfo = workerInfoMapper.selectById(changeUser); + if (workerInfo == null) { + return; } + + //扣分 + HashMap map = new HashMap<>(16); + map.put("id", workerInfo.getId()); + map.put("deductScore", ds); + workerInfoService.updateScoreSendAuth(map); + + + //存记录 + XzDeductScoreRecord vo = new XzDeductScoreRecord(); + vo.setProjectSn(qualityInspectionRecord.getProjectSn()); + vo.setWorkerId(workerInfo.getId()); + vo.setTypeName(item.getContent()); + vo.setDeductScore(-item.getDeductScore()); + vo.setType(3); + vo.setCreateDate(new Date()); + vo.setCurScore(workerInfo.getSafeScore() - item.getDeductScore() >= 0 ? workerInfo.getSafeScore() - item.getDeductScore() : 0); + vo.setDeductReason(StrUtil.format("您在{}发现质量隐患({}-{})扣{}分", DateUtil.format(vo.getCreateDate(), "yyyy年MM月dd日HH:mm:ss"), "质量检査", vo.getTypeName() == null ? "无" : vo.getTypeName(), item.getDeductScore())); + vo.setTypeTableId(qualityInspectionRecord.getId()); + xzDeductScoreRecordMapper.insert(vo); } diff --git a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java index d2dde6474..9acf15250 100644 --- a/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/video/service/impl/AiAnalyseHardWareAlarmRecordServiceImpl.java @@ -35,7 +35,6 @@ import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.entity.ProjectJqmDev; import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo; -import com.zhgd.xmgl.modules.project.service.IProjectConfigService; import com.zhgd.xmgl.modules.project.service.IProjectService; import com.zhgd.xmgl.modules.project.service.ProjectJqmDevService; import com.zhgd.xmgl.modules.video.entity.AiAnalyseHardWareAlarmRecord; @@ -134,11 +133,6 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl queryAiAnalyseHardWareAlarmPageList(Map map) { @@ -258,9 +252,6 @@ public class AiAnalyseHardWareAlarmRecordServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(UserEnterprise::getUserId, userId); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java index bd5e179ad..0364875c2 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/SafetyInspectionStandardBigScreenController.java @@ -11,8 +11,8 @@ import com.zhgd.xmgl.modules.xz.entity.vo.SafetyTypeScore; import com.zhgd.xmgl.modules.xz.entity.vo.SafetyTypeScoreVo; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityDangerItemRecord; import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityDangerTypeRecord; +import com.zhgd.xmgl.modules.xz.security.entity.vo.FiveScore; import com.zhgd.xmgl.modules.xz.security.entity.vo.FiveScoresVo; -import com.zhgd.xmgl.modules.xz.security.entity.vo.TenScore; import com.zhgd.xmgl.modules.xz.security.entity.vo.XzSecurityQualityInspectionRecordVo; import com.zhgd.xmgl.modules.xz.security.enums.TenSafetyTypeEnum; import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityDangerItemRecordService; @@ -67,32 +67,58 @@ public class SafetyInspectionStandardBigScreenController { SafetyTypeScoreVo thisMonthScoreVo = this.getScores(new MapBuilder().put("projectSn", projectSn).put("month", DateUtil.format(new Date(), "yyyy-MM")).build()).getResult(); SafetyTypeScoreVo lastMonthScoreVo = this.getScores(new MapBuilder().put("projectSn", projectSn).put("month", DateUtil.format(DateUtil.offsetMonth(new Date(), -1), "yyyy-MM")).build()).getResult(); List safetyTypeScores = thisMonthScoreVo.getSafetyTypeScores(); - TenScore tenScore = new TenScore(); + FiveScore fiveScore = new FiveScore(); + Map> fiveTypeScoreMap = new HashMap<>(16); + //5种:1安全管理、2文明施工、3施工支具【脚手架、模版支架】、4工程器械【物料提升机与施工升降机、塔式起重吊装、施工用具】、5危险作业【基坑工程、高处作业、施工用电】 for (SafetyTypeScore safetyTypeScore : safetyTypeScores) { - BigDecimal score = safetyTypeScore.getScore(); + int fiveType; if (Objects.equals(safetyTypeScore.getTenType(), 1)) { - tenScore.setAqgl(score); + fiveType = 1; } else if (Objects.equals(safetyTypeScore.getTenType(), 2)) { - tenScore.setWmsg(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 3)) { - tenScore.setJsj(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 4)) { - tenScore.setGczy(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 5)) { - tenScore.setJkgc(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 6)) { - tenScore.setMbzj(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 7)) { - tenScore.setSgyd(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 8)) { - tenScore.setWltsj(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 9)) { - tenScore.setTsqzj(score); - } else if (Objects.equals(safetyTypeScore.getTenType(), 10)) { - tenScore.setSgjj(score); + fiveType = 2; + } else if (Objects.equals(safetyTypeScore.getTenType(), 3) + || Objects.equals(safetyTypeScore.getTenType(), 6) + ) { + fiveType = 3; + } else if (Objects.equals(safetyTypeScore.getTenType(), 8) + || Objects.equals(safetyTypeScore.getTenType(), 9) + || Objects.equals(safetyTypeScore.getTenType(), 10) + ) { + fiveType = 4; + } else { + fiveType = 5; + } + List typeScores = fiveTypeScoreMap.get(fiveType); + if (typeScores == null) { + typeScores = new ArrayList<>(); + } + typeScores.add(safetyTypeScore); + fiveTypeScoreMap.putIfAbsent(fiveType, typeScores); + } + for (Map.Entry> entry : fiveTypeScoreMap.entrySet()) { + List list = entry.getValue(); + if (list.size() == 0) { + continue; + } + BigDecimal score = list.stream().map(SafetyTypeScore::getScore).reduce(BigDecimal.ZERO, BigDecimal::add); + switch (entry.getKey()) { + case 1: + fiveScore.setAqgl(score); + break; + case 2: + fiveScore.setWmsg(score); + break; + case 3: + fiveScore.setSgzj(score); + break; + case 4: + fiveScore.setGcqx(score); + break; + default: + fiveScore.setWxzy(score); } } - vo.setThisMonthScores(tenScore); + vo.setThisMonthScores(fiveScore); vo.setMonthScore(thisMonthScoreVo.getScore()); vo.setLastMonthScore(lastMonthScoreVo.getScore()); vo.setDifferScoreRate(vo.getLastMonthScore().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO : vo.getMonthScore().subtract(vo.getLastMonthScore()).divide(vo.getLastMonthScore(), 4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100")).setScale(2, BigDecimal.ROUND_HALF_UP)); diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzSupplierQualificationApplyController.java b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzSupplierQualificationApplyController.java index 44165dace..6b9725d57 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzSupplierQualificationApplyController.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/controller/XzSupplierQualificationApplyController.java @@ -1,39 +1,11 @@ package com.zhgd.xmgl.modules.xz.controller; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.convert.Convert; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.zhgd.annotation.OperLog; import com.zhgd.jeecg.common.api.vo.Result; -import com.zhgd.jeecg.common.execption.OpenAlertException; -import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; -import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService; -import com.zhgd.xmgl.modules.basicdata.service.impl.NoticeServiceImpl; -import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise; -import com.zhgd.xmgl.modules.project.service.impl.ProjectEnterpriseServiceImpl; -import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo; -import com.zhgd.xmgl.modules.worker.entity.EnterpriseQualification; -import com.zhgd.xmgl.modules.worker.entity.ProjectEnterpriseSupplierInfo; -import com.zhgd.xmgl.modules.worker.service.IProjectEnterpriseSupplierInfoService; -import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseInfoServiceImpl; -import com.zhgd.xmgl.modules.worker.service.impl.EnterpriseQualificationServiceImpl; import com.zhgd.xmgl.modules.xz.entity.XzSupplierQualificationApply; -import com.zhgd.xmgl.modules.xz.entity.XzSupplierQualificationRecord; -import com.zhgd.xmgl.modules.xz.entity.XzSupplierRecord; import com.zhgd.xmgl.modules.xz.entity.vo.XzSupplierQualificationApplyDto; import com.zhgd.xmgl.modules.xz.service.IXzSupplierQualificationApplyService; -import com.zhgd.xmgl.modules.xz.service.IXzSupplierQualificationRecordService; -import com.zhgd.xmgl.modules.xz.service.impl.XzSupplierRecordServiceImpl; -import com.zhgd.xmgl.security.JwtTokenProvider; -import com.zhgd.xmgl.util.EmailUtils; -import com.zhgd.xmgl.util.FlowUtil; -import com.zhgd.xmgl.util.MessageUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -42,15 +14,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.MapUtils; import org.simpleframework.xml.core.Validate; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Lazy; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; -import java.util.*; -import java.util.stream.Collectors; +import java.util.HashMap; +import java.util.List; /** @@ -65,43 +33,8 @@ import java.util.stream.Collectors; @Slf4j @Api(tags = "星纵-承包商-入场申请相关Api") public class XzSupplierQualificationApplyController { - @Lazy - @Autowired - IProjectEnterpriseSupplierInfoService projectEnterpriseSupplierInfoService; - @Lazy - @Autowired - IXzSupplierQualificationRecordService xzSupplierQualificationRecordService; - @Lazy - @Autowired - XzSupplierRecordServiceImpl xzSupplierRecordService; - @Lazy - @Autowired - NoticeServiceImpl noticeService; - @Lazy - @Autowired - ProjectEnterpriseServiceImpl projectEnterpriseService; - @Lazy - @Autowired - private EnterpriseQualificationServiceImpl enterpriseQualificationService; @Autowired private IXzSupplierQualificationApplyService xzSupplierQualificationApplyService; - @Lazy - @Autowired - private EnterpriseInfoServiceImpl enterpriseInfoService; - @Lazy - @Autowired - private EmailUtils emailUtils; - @Lazy - @Autowired - private ISystemUserService systemUserService; - @Lazy - @Autowired - private AuthenticationManager authenticationManager; - @Lazy - @Autowired - private JwtTokenProvider jwtTokenProvider; - @Value("${supplierResubmitApplicationUrl}") - private String supplierResubmitApplicationUrl; /** * 分页列表查询 @@ -203,263 +136,6 @@ public class XzSupplierQualificationApplyController { return Result.ok(); } - @OperLog(operModul = "承包商-入场申请管理", operType = "编辑", operDesc = "工作流保存承包商-入场申请") - @ApiOperation(value = "工作流保存星纵-承包商-入场申请信息", notes = "工作流保存星纵-承包商-入场申请信息", httpMethod = "POST") - @PostMapping(value = "/flow/saveInfo") - public Result saveInfoFromFlow(@RequestBody Map map) { - String paramStr = JSON.toJSONString(map); - log.info("工作流保存星纵承包商入场申请信息:{}", paramStr); - String instanceId = MapUtils.getString(map, "instanceId"); - String title = "承包商入场申请"; - try { - String enterpriseName = MapUtils.getString(map, "enterpriseName"); - String description = MapUtils.getString(map, "description"); - String enterpriseAddress = MapUtils.getString(map, "enterpriseAddress"); - String enterpriseLegalPerson = MapUtils.getString(map, "enterpriseLegalPerson"); - String legalPersonIdCard = MapUtils.getString(map, "legalPersonIdCard"); - String enterpriseSafeAllow = MapUtils.getString(map, "enterpriseSafeAllow"); - String legalPersonTel = MapUtils.getString(map, "legalPersonTel"); - String socialCode = MapUtils.getString(map, "socialCode"); - String businessNumber = MapUtils.getString(map, "businessNumber"); - String qualificationNumber = MapUtils.getString(map, "qualificationNumber"); - String enterpriseEmail = MapUtils.getString(map, "enterpriseEmail"); - String registeredCapital = MapUtils.getString(map, "registeredCapital"); - String bankname = MapUtils.getString(map, "bankname"); - String bankcardnumber = MapUtils.getString(map, "bankcardnumber"); - String bankcode = MapUtils.getString(map, "bankcode"); - String enterpriseQualificationUrl = FlowUtil.getFileUrlWithHost(map, "enterpriseQualificationUrl"); - String businessLicenseEndDate = MapUtils.getString(map, "businessLicenseEndDate"); - String registerPersonName = MapUtils.getString(map, "registerPersonName"); - String registerPersonPhoneTel = MapUtils.getString(map, "registerPersonPhoneTel"); - String enterpriseSn = MapUtils.getString(map, "enterpriseSn"); - String logo = FlowUtil.getFileUrl(map, "logo"); - String registDate = MapUtils.getString(map, "registDate"); - String businessLicenseUrl = FlowUtil.getFileUrl(map, "businessLicenseUrl"); - String projectDirectorName = MapUtils.getString(map, "projectDirectorName"); - String projectDirectorPhone = MapUtils.getString(map, "projectDirectorPhone"); - String projectSn = MapUtils.getString(map, "projectSn"); - String noticeEmail = MapUtils.getString(map, "noticeEmail"); - String ancestors = MapUtils.getString(map, "ancestors"); - Long enterpriseTypeId = Optional.ofNullable(map.get("enterpriseTypeId")).map(o -> Convert.toLong(((List) o).get(0))).orElse(null); - Long parentEnterpriseId = FlowUtil.getPullDownLong(map, "parentEnterpriseId"); - Integer enterpriseProperty = Optional.ofNullable(map.get("enterpriseProperty")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - Integer applyStatus = MapUtils.getInteger(map, "applyStatus"); - String applyContent = Optional.ofNullable(map.get("applyContent")).map(o -> StrUtil.join(",", ((List) o).stream().map(o1 -> JSON.parseObject(o1.toString()).getString("text")).collect(Collectors.toList()))).orElse(null); - String applyUser = Optional.ofNullable(map.get("applyUser")).map(o -> { - List users = systemUserService.list(new LambdaQueryWrapper().in(SystemUser::getUserId, ((List) o).stream().distinct().collect(Collectors.toList()))); - if (CollUtil.isEmpty(users)) { - return ""; - } - return StrUtil.join(",", users.stream().map(SystemUser::getRealName).collect(Collectors.toList())); - }).orElse(""); - -// XzSupplierQualificationApply apply = new XzSupplierQualificationApply(); -// apply.setApplyTime(new Date()); -// apply.setProjectSn(projectSn); -// apply.setReplyTime(new Date()); -// apply.setApplyStatus(applyStatus); -// apply.setApplyUser(applyUser); -// apply.setApplyContent(applyContent); -// apply.setNoticeEmail(noticeEmail); -// xzSupplierQualificationApplyService.add(apply); - String sub = enterpriseName + "(信用代码:" + socialCode + ")"; - - List enterpriseSupplierInfos = Optional.ofNullable(map.get("enterpriseSupplierInfos")).map(o -> ((List) o)).orElse(null); - List qualificationRecords = Optional.ofNullable(map.get("qualificationRecords")).map(o -> ((List) o)).orElse(null); - List enterpriseSupplierInfoList = new ArrayList<>(); - if (CollUtil.isNotEmpty(enterpriseSupplierInfos)) { - for (Object supplierInfo : enterpriseSupplierInfos) { - Map map1 = (Map) supplierInfo; - String projectManage = MapUtils.getString(map1, "field1889813380500"); - String longitude = FlowUtil.getLongitude(map1, "field5527613416017"); - String latitude = FlowUtil.getLongitude(map1, "field5527613416017"); - String projectNumber = MapUtils.getString(map1, "field3597413394967"); - String projectAcreage = MapUtils.getString(map1, "field8382113460000"); - String startWorkDate = MapUtils.getString(map1, "field3279513473516"); - String projectTel = MapUtils.getString(map1, "field3163913488700"); - String layoutImage = FlowUtil.getJSONString(map1, "field7572613509085"); - String constructionMapUrl = FlowUtil.getJSONString(map1, "field7824213496616"); - String cbsName = MapUtils.getString(map1, "field4214913364183"); - String projectBuildArea = MapUtils.getString(map1, "field8585413374585"); - Integer projectType = Optional.ofNullable(map1.get("field5423413438783")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - Integer structureType = Optional.ofNullable(map1.get("field7147513453452")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - Integer bulidStatus = Optional.ofNullable(map1.get("field9109313465100")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - Integer constructionStage = Optional.ofNullable(map1.get("field7511013402167")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - Integer cbsProjectType = Optional.ofNullable(map1.get("field6358113386450")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - Date completionDate = Optional.ofNullable(map1.get("field5019213481082")).map(o -> DateUtil.parse(o.toString())).orElse(null); - - ProjectEnterpriseSupplierInfo enterpriseSupplierInfo = new ProjectEnterpriseSupplierInfo(); - enterpriseSupplierInfo.setProjectSn(projectSn); - enterpriseSupplierInfo.setProjectManage(projectManage); - enterpriseSupplierInfo.setLongitude(longitude); - enterpriseSupplierInfo.setLatitude(latitude); - enterpriseSupplierInfo.setProjectNumber(projectNumber); - enterpriseSupplierInfo.setProjectAcreage(projectAcreage); - enterpriseSupplierInfo.setStartWorkDate(startWorkDate); - enterpriseSupplierInfo.setProjectTel(projectTel); - enterpriseSupplierInfo.setProjectType(projectType); - enterpriseSupplierInfo.setStructureType(structureType); - enterpriseSupplierInfo.setBulidStatus(bulidStatus); - enterpriseSupplierInfo.setConstructionStage(constructionStage); - enterpriseSupplierInfo.setLayoutImage(layoutImage); - enterpriseSupplierInfo.setConstructionMapUrl(constructionMapUrl); - enterpriseSupplierInfo.setCbsName(cbsName); - enterpriseSupplierInfo.setProjectBuildArea(projectBuildArea); - enterpriseSupplierInfo.setCompletionDate(completionDate); - enterpriseSupplierInfo.setCbsProjectType(cbsProjectType); - enterpriseSupplierInfo.setType(2); -// enterpriseSupplierInfo.setXzSupplierQualificationApplyId(apply.getId()); - enterpriseSupplierInfoList.add(enterpriseSupplierInfo); - } - } - - List qualificationRecordList = new ArrayList<>(); - if (CollUtil.isNotEmpty(qualificationRecords)) { - for (Object qr : qualificationRecords) { - Map map1 = (Map) qr; - String fileName = MapUtils.getString(map1, "field1715913568733"); - String fileNumber = MapUtils.getString(map1, "field1910713590018"); - String fileUrl = FlowUtil.getFileUrl(map1, "field1080013606067"); - String remarks = MapUtils.getString(map1, "field2502513615584"); - String originFileName = FlowUtil.getFileOriginFileName(map1, "field1080013606067"); - Integer qualificationType = Optional.ofNullable(map1.get("field4809313565733")).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - - XzSupplierQualificationRecord qualificationRecord = new XzSupplierQualificationRecord(); -// qualificationRecord.setXzSupplierQualificationApplyId(apply.getId()); - qualificationRecord.setFileName(fileName); - qualificationRecord.setFileNumber(fileNumber); - qualificationRecord.setFileUrl(fileUrl); - qualificationRecord.setRemarks(remarks); - qualificationRecord.setOriginFileName(originFileName); - qualificationRecord.setQualificationType(qualificationType); - qualificationRecordList.add(qualificationRecord); - } - } - - EnterpriseInfo existEnterpriseInfo = enterpriseInfoService.getOne(new LambdaQueryWrapper().eq(EnterpriseInfo::getSocialCode, socialCode)); - if (existEnterpriseInfo != null) { - List projectEnterpriseList = projectEnterpriseService.list(new LambdaQueryWrapper() - .eq(ProjectEnterprise::getEnterpriseId, existEnterpriseInfo.getId()) - .eq(ProjectEnterprise::getProjectSn, projectSn)); - if (CollUtil.isNotEmpty(projectEnterpriseList)) { - String msg = sub + "已存在"; - noticeService.addProjectLevelNotice(projectSn, title, msg, "1", null); - emailUtils.sendSimpleMail(noticeEmail, sub + "入场审批不通过", msg); - return Result.ok(); - } - } - -// List mustHave = Arrays.asList(1, 2, 3); -// Set set = qualificationRecordList.stream().filter(x -> mustHave.contains(x.getQualificationType())).map(XzSupplierQualificationRecord::getQualificationType).collect(Collectors.toSet()); -// int i = 3; -// if (CollUtil.isEmpty(qualificationRecordList) || set.size() < i) { -// throw new OpenAlertException("资质文件的资质类型的(安全协议、劳务分包合同、施工合同必须都要上传"); -// } - -// List supplierApprovalList = xzSupplierQualificationApplyService.getSupplierApprovalList(projectSn, socialCode); -// long c1 = supplierApprovalList.stream().filter(apply1 -> Objects.equals(apply1.getApplyStatus(), 1)).count(); -// if (c1 > 0) { -// String msg = "该承包商(信用代码:" + socialCode + ")待审核中"; -// noticeService.addProjectLevelNotice(projectSn, "承包商入场审核", msg, "1", null); -// return Result.ok(); -// } -// long c2 = supplierApprovalList.stream().filter(apply1 -> Objects.equals(apply1.getApplyStatus(), 2)).count(); -// if (c2 > 0) { -// String msg = "该承包商(信用代码:" + socialCode + ")已审核通过"; -// noticeService.addProjectLevelNotice(projectSn, "承包商入场审核", msg, "1", null); -// return Result.ok(); -// } - - XzSupplierRecord supplierRecord = new XzSupplierRecord(); - supplierRecord.setEnterpriseName(enterpriseName); - supplierRecord.setDescription(description); - supplierRecord.setEnterpriseAddress(enterpriseAddress); - supplierRecord.setEnterpriseLegalPerson(enterpriseLegalPerson); - supplierRecord.setLegalPersonIdCard(legalPersonIdCard); - supplierRecord.setEnterpriseSafeAllow(enterpriseSafeAllow); - supplierRecord.setEnterpriseProperty(enterpriseProperty); - supplierRecord.setLegalPersonTel(legalPersonTel); - supplierRecord.setSocialCode(socialCode); - supplierRecord.setBusinessNumber(businessNumber); - supplierRecord.setQualificationNumber(qualificationNumber); - supplierRecord.setEnterpriseEmail(enterpriseEmail); - supplierRecord.setRegisteredCapital(registeredCapital); - supplierRecord.setBankname(bankname); - supplierRecord.setBankcardnumber(bankcardnumber); - supplierRecord.setBankcode(bankcode); - supplierRecord.setEnterpriseQualificationUrl(enterpriseQualificationUrl); - supplierRecord.setBusinessLicenseEndDate(businessLicenseEndDate); - supplierRecord.setRegisterPersonName(registerPersonName); - supplierRecord.setRegisterPersonPhoneTel(registerPersonPhoneTel); - supplierRecord.setEnterpriseSn(enterpriseSn); - supplierRecord.setLogo(logo); - supplierRecord.setRegistDate(registDate); - supplierRecord.setBusinessLicenseUrl(businessLicenseUrl); -// supplierRecord.setXzSupplierQualificationApplyId(apply.getId()); - supplierRecord.setEnterpriseTypeId(enterpriseTypeId); - supplierRecord.setProjectDirectorName(projectDirectorName); - supplierRecord.setProjectDirectorPhone(projectDirectorPhone); - supplierRecord.setAncestors(ancestors); - supplierRecord.setType(1); - supplierRecord.setParentEnterpriseId(parentEnterpriseId); - supplierRecord.setSortNum(0); - supplierRecord.setDepartmentType(2); - xzSupplierRecordService.save(supplierRecord); - -// if (CollUtil.isNotEmpty(qualificationRecords)) { -// xzSupplierQualificationRecordService.saveBatch(qualificationRecordList); -// } - - String url = supplierResubmitApplicationUrl + "?token=" + getFlowStartUserToken().getResult() + "&sn=" + projectSn + "&instanceId=" + instanceId; - if (Objects.equals(applyStatus, 2)) { - //通过,添加到正式的数据中 - EnterpriseInfo enterpriseInfo = BeanUtil.copyProperties(supplierRecord, EnterpriseInfo.class); - enterpriseInfo.setProjectSn(projectSn); - try { - enterpriseInfoService.saveEnterpriseInfo(enterpriseInfo); - } catch (OpenAlertException e) { - log.error("工作流保存星纵承包商入场申请信息校验异常:", e); - noticeService.addProjectLevelNotice(projectSn, title, sub + "审核不通过," + e.getMessage(), "1", null); - emailUtils.sendSimpleMail(noticeEmail, sub + "入场审批不通过", - StrUtil.format(e.getMessage() + ",重新提交申请链接(点击链接补充资质):{}", applyContent, url)); - return Result.ok(); - } - if (CollUtil.isNotEmpty(qualificationRecordList)) { - List copyToList = BeanUtil.copyToList(qualificationRecordList, EnterpriseQualification.class); - for (EnterpriseQualification qualification : copyToList) { - qualification.setId(null); - qualification.setEnterpriseId(enterpriseInfo.getId()); - } - enterpriseQualificationService.saveBatch(copyToList); - } - if (CollUtil.isNotEmpty(enterpriseSupplierInfos)) { - enterpriseSupplierInfoList.stream().forEach(projectEnterpriseSupplierInfo -> projectEnterpriseSupplierInfo.setEnterpriseId(enterpriseInfo.getId())); -// projectEnterpriseSupplierInfoService.saveBatch(enterpriseSupplierInfoList); - List copyToList = BeanUtil.copyToList(enterpriseSupplierInfoList, ProjectEnterpriseSupplierInfo.class); - for (ProjectEnterpriseSupplierInfo info : copyToList) { - info.setId(null); - info.setXzSupplierQualificationApplyId(null); - info.setType(2); - info.setEnterpriseId(enterpriseInfo.getId()); - } - projectEnterpriseSupplierInfoService.saveBatch(copyToList); - } - noticeService.addProjectLevelNotice(projectSn, title, sub + "审核通过", "1", null); - emailUtils.sendSimpleMail(noticeEmail, sub + "入场审批通过", sub + "入场审批通过"); - } else if (Objects.equals(applyStatus, 3)) { - //驳回 - String msg = sub + "审核不通过"; - noticeService.addProjectLevelNotice(projectSn, title, msg, "1", null); - emailUtils.sendSimpleMail(noticeEmail, sub + "入场审批不通过", - StrUtil.format(msg + ",审批回复:{}\r\n重新提交申请链接(点击链接补充资质):{}", applyContent, url)); - } - } catch (Exception e) { - log.error("工作流保存星纵承包商入场申请信息异常:", e); -// emailUtils.saveExceptionAndSendFlowEmail(paramStr, e, "工作流保存星纵承包商入场申请信息异常", "/xmgl/xzSupplierQualificationApply/flow/saveInfo", instanceId); - } - return Result.ok(); - } - @OperLog(operModul = "承包商-入场申请管理", operType = "审批通过", operDesc = "审批通过") @ApiOperation(value = "审批通过", notes = "审批通过", httpMethod = "POST") @PostMapping(value = "/pass") @@ -476,19 +152,5 @@ public class XzSupplierQualificationApplyController { return Result.ok(); } - @OperLog(operModul = "承包商-入场申请管理", operType = "查询", operDesc = "工作流发起人的查询token") - @ApiOperation(value = "工作流发起人的查询token", notes = "工作流发起人的查询token", httpMethod = "GET") - @GetMapping(value = "/flow/start/token") - public Result getFlowStartUserToken() { - String account = "工作流发起人勿删"; - SystemUser systemUser = systemUserService.getOne(new LambdaUpdateWrapper().eq(SystemUser::getAccount, account)); - if (systemUser == null) { - throw new OpenAlertException(MessageUtil.get("notFindErr")); - } - authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(systemUser.getAccount(), systemUser.getShowPassword())); - String token = jwtTokenProvider.createToken(systemUser.getAccount(), 60 * 60 * 24); - return Result.success(token); - } - } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/XzSecurityQualityRectifyRecord.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/XzSecurityQualityRectifyRecord.java index 0b499988b..47c05d57a 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/XzSecurityQualityRectifyRecord.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/XzSecurityQualityRectifyRecord.java @@ -83,7 +83,7 @@ public class XzSecurityQualityRectifyRecord implements Serializable { */ @Excel(name = "违章人员", width = 15) @ApiModelProperty(value = "违章人员") - private String violatorId; + private Long violatorId; @TableField(exist = false) private String realName; diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScore.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScore.java new file mode 100644 index 000000000..8cf30d874 --- /dev/null +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScore.java @@ -0,0 +1,15 @@ +package com.zhgd.xmgl.modules.xz.security.entity.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public +class FiveScore { + private BigDecimal aqgl; + private BigDecimal wmsg; + private BigDecimal sgzj; + private BigDecimal gcqx; + private BigDecimal wxzy; +} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScoresVo.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScoresVo.java index 69e4ce6db..b496fea40 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScoresVo.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/FiveScoresVo.java @@ -10,5 +10,5 @@ class FiveScoresVo { private BigDecimal monthScore; private BigDecimal lastMonthScore; private BigDecimal differScoreRate; - private TenScore thisMonthScores; + private FiveScore thisMonthScores; } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/TenScore.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/TenScore.java deleted file mode 100644 index b5713bd78..000000000 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/entity/vo/TenScore.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.zhgd.xmgl.modules.xz.security.entity.vo; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.math.BigDecimal; - -@Data -public -class TenScore { - @ApiModelProperty("安全管理") - private BigDecimal aqgl; - @ApiModelProperty("文明施工") - private BigDecimal wmsg; - @ApiModelProperty("脚手架") - private BigDecimal jsj; - @ApiModelProperty("基坑工程") - private BigDecimal jkgc; - @ApiModelProperty("模板支架") - private BigDecimal mbzj; - @ApiModelProperty("物料提升机") - private BigDecimal wltsj; - @ApiModelProperty("塔式起重机") - private BigDecimal tsqzj; - @ApiModelProperty("高处作业") - private BigDecimal gczy; - @ApiModelProperty("施工用电") - private BigDecimal sgyd; - @ApiModelProperty("施工机具") - private BigDecimal sgjj; -} diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityRectifyRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityRectifyRecordServiceImpl.java index 49b668b55..3c68bbc45 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityRectifyRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/security/service/impl/XzSecurityQualityRectifyRecordServiceImpl.java @@ -17,6 +17,7 @@ import com.gexin.fastjson.JSONObject; import com.zhgd.redis.lock.redisson.DistributedLock; import com.zhgd.xmgl.call.SanjiangDataCall; import com.zhgd.xmgl.constant.Cts; +import com.zhgd.xmgl.modules.basicdata.entity.SystemUser; import com.zhgd.xmgl.modules.basicdata.mapper.SystemUserMapper; import com.zhgd.xmgl.modules.basicdata.service.INoticeService; import com.zhgd.xmgl.modules.basicdata.service.impl.SystemUserServiceImpl; @@ -208,35 +209,33 @@ public class XzSecurityQualityRectifyRecordServiceImpl extends ServiceImpl map = new HashMap<>(16); - map.put("id", workerInfo.getId()); - map.put("deductScore", ds); - workerInfoService.updateScoreSendAuth(map); - - //存记录 - XzDeductScoreRecord vo = new XzDeductScoreRecord(); - vo.setProjectSn(hiddenDangerInspectRecord.getProjectSn()); - vo.setWorkerId(workerInfo.getId()); - vo.setTypeName(item.getContent()); - vo.setDeductScore(-item.getDeductScore()); - vo.setType(1); - vo.setCreateDate(new Date()); - vo.setCurScore(workerInfo.getSafeScore() - item.getDeductScore() >= 0 ? workerInfo.getSafeScore() - item.getDeductScore() : 0); - vo.setDeductReason(StrUtil.format("您在{}发现安全隐患({}-{})扣{}分", DateUtil.format(vo.getCreateDate(), "yyyy年MM月dd日HH:mm:ss"), "安全检査", vo.getTypeName() == null ? "无" : vo.getTypeName(), item.getDeductScore())); - vo.setTypeTableId(hiddenDangerInspectRecord.getId()); - xzDeductScoreRecordMapper.insert(vo); + WorkerInfo workerInfo = workerInfoMapper.selectById(changeUser); + if (workerInfo == null) { + return; } + + //扣分 + HashMap map = new HashMap<>(16); + map.put("id", workerInfo.getId()); + map.put("deductScore", ds); + workerInfoService.updateScoreSendAuth(map); + + //存记录 + XzDeductScoreRecord vo = new XzDeductScoreRecord(); + vo.setProjectSn(hiddenDangerInspectRecord.getProjectSn()); + vo.setWorkerId(workerInfo.getId()); + vo.setTypeName(item.getContent()); + vo.setDeductScore(-item.getDeductScore()); + vo.setType(1); + vo.setCreateDate(new Date()); + vo.setCurScore(workerInfo.getSafeScore() - item.getDeductScore() >= 0 ? workerInfo.getSafeScore() - item.getDeductScore() : 0); + vo.setDeductReason(StrUtil.format("您在{}发现安全隐患({}-{})扣{}分", DateUtil.format(vo.getCreateDate(), "yyyy年MM月dd日HH:mm:ss"), "安全检査", vo.getTypeName() == null ? "无" : vo.getTypeName(), item.getDeductScore())); + vo.setTypeTableId(hiddenDangerInspectRecord.getId()); + xzDeductScoreRecordMapper.insert(vo); } @Override diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzSupplierQualificationApplyService.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzSupplierQualificationApplyService.java index 41bf8b915..167431b1b 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzSupplierQualificationApplyService.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/IXzSupplierQualificationApplyService.java @@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.zhgd.xmgl.modules.xz.entity.XzSupplierQualificationApply; import com.zhgd.xmgl.modules.xz.entity.vo.XzSupplierQualificationApplyDto; -import org.apache.ibatis.annotations.Param; import java.util.HashMap; import java.util.List; @@ -73,14 +72,4 @@ public interface IXzSupplierQualificationApplyService extends IService getSupplierApprovalList(String projectSn, String socialCode); - } diff --git a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java index 737b6b9d5..a10d3ef94 100644 --- a/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/xz/service/impl/XzSupplierQualificationApplyServiceImpl.java @@ -287,9 +287,4 @@ public class XzSupplierQualificationApplyServiceImpl extends ServiceImpl getSupplierApprovalList(String projectSn, String socialCode) { - return baseMapper.getSupplierApprovalList(projectSn, socialCode); - } - } diff --git a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java index a2f2ba21e..7fad43e86 100644 --- a/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java +++ b/src/main/java/com/zhgd/xmgl/security/WebSecurityConfig.java @@ -80,15 +80,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { http.authorizeRequests() //请求路径允许访问 - .antMatchers("/xmgl/constructionEquipmentTool/flow/add").permitAll() - .antMatchers("/xmgl/xzSupplierQualificationApply/flow/start/token").permitAll() - .antMatchers("/xmgl/xzSupplierQualificationApply/flow/saveInfo").permitAll() - .antMatchers("/xmgl/pouringOrderLedger/flow/add").permitAll() - .antMatchers("/xmgl/qualityCommonProblemRecord/flow/add").permitAll() - .antMatchers("/xmgl/liftingOperation/flow/add").permitAll() - .antMatchers("/xmgl/confinedSpaceOperation/flow/add").permitAll() - .antMatchers("/xmgl/firstOrderFire/flow/add").permitAll() - .antMatchers("/xmgl/heightPermit/flow/add").permitAll() .antMatchers("/xmgl/dangerEnvironmentEvaluate/flow/add").permitAll() .antMatchers("/xmgl/firstExampleManage/flow/add").permitAll() .antMatchers("/actuator/**").permitAll() diff --git a/src/main/java/com/zhgd/xmgl/util/FlowUtil.java b/src/main/java/com/zhgd/xmgl/util/FlowUtil.java deleted file mode 100644 index e73bb9b7d..000000000 --- a/src/main/java/com/zhgd/xmgl/util/FlowUtil.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.zhgd.xmgl.util; - -import cn.hutool.core.convert.Convert; -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSON; -import org.apache.commons.collections.MapUtils; - -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -public class FlowUtil { - - - /** - * 获取文件url - * - * @param map - * @param key - * @return - */ - public static String getFileUrl(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> ((Map) ((List) o).get(0)).get("url").toString()).orElse(null); - } - - /** - * 获取文件url完整链接 - * - * @param map - * @param key - * @return - */ - public static String getFileUrlWithHost(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> PathUtil.getServerUrl() + "/image/" + ((Map) ((List) o).get(0)).get("url").toString()).orElse(null); - } - - /** - * 获取文件原来的名称 - * - * @param map - * @param key - * @return - */ - public static String getFileOriginFileName(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> ((Map) ((List) o).get(0)).get("name").toString()).orElse(null); - } - - /** - * 获取下拉Long - * - * @param map - * @param key - * @return - */ - public static Long getPullDownLong(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> Convert.toLong(((List) o).get(0))).orElse(null); - } - - public static Date getDate(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> DateUtil.parse(o.toString())).orElse(null); - } - - public static String getJSONString(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(JSON::toJSONString).orElse(null); - } - - public static List getList(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> ((List) o)).orElse(null); - } - - public static String getString(Map map, String key) { - return MapUtils.getString(map, key); - } - - public static Integer getPullDownInteger(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> Convert.toInt(((List) o).get(0))).orElse(null); - } - - public static String getLongitude(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> JSON.parseObject(o.toString()).getString("lng")).orElse(null); - } - - public static String getLatitude(Map map, String key) { - return Optional.ofNullable(map.get(key)).map(o -> JSON.parseObject(o.toString()).getString("lat")).orElse(null); - } - -} diff --git a/src/main/java/com/zhgd/xmgl/util/PathUtil.java b/src/main/java/com/zhgd/xmgl/util/PathUtil.java index 7209289c8..cd774d541 100644 --- a/src/main/java/com/zhgd/xmgl/util/PathUtil.java +++ b/src/main/java/com/zhgd/xmgl/util/PathUtil.java @@ -8,7 +8,6 @@ import org.springframework.stereotype.Component; public class PathUtil { private static String basePath; - private static String serverUrl; /** * 删除多余的斜杠 @@ -19,25 +18,6 @@ public class PathUtil { return path.replaceAll("([^:])(//+)", "$1/"); } - public static String getBasePath() { - return StrUtil.removeSuffix(basePath, "/"); - } - - @Value("${basePath}") - public void setBasePath(String basePath) { - PathUtil.basePath = basePath; - } - - public static String getServerUrl() { - return StrUtil.removeSuffix(serverUrl, "/"); - } - - @Value("${serverUrl}") - public void setServerUrl(String serverUrl) { - PathUtil.serverUrl = serverUrl; - } - - public static void main(String[] args) { System.out.println(reviseSlash("/home//foo/")); System.out.println(reviseSlash("/home/foo/")); @@ -47,4 +27,12 @@ public class PathUtil { System.out.println(reviseSlash("http://192.168.34.221:9111/image//65e5733735f013f4cc322278.jpg")); } + public static String getBasePath() { + return StrUtil.removeSuffix(basePath, "/"); + } + + @Value("${basePath}") + public void setBasePath(String basePath) { + PathUtil.basePath = basePath; + } } diff --git a/src/main/resources/application-gsx-t-dev.properties b/src/main/resources/application-gsx-t-dev.properties index 93a2eb0dd..03eff3d7b 100644 --- a/src/main/resources/application-gsx-t-dev.properties +++ b/src/main/resources/application-gsx-t-dev.properties @@ -100,5 +100,3 @@ magic-api.resource.location=C:/jxj/prod/backEnd/itbgpImage/data/magic-api upload.image.url.prefix=http://182.90.224.237:51234/image/ #内网的服务图片的url前缀 xingzong.inner.upload.image.url.prefix=http://10.168.2.104:9809/image/ -#承包商重新提交申请链接(点击链接补充资质) -supplierResubmitApplicationUrl=http://192.168.34.175:88/#/workspace/contractorApply diff --git a/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar b/src/main/resources/lib/wflow-server-1.0-SNAPSHOT.jar index ed0b7825f34267d1e56eea7ecbe3647f29c9244e..997c0b23a331a7e535c27b79161a64fb397f0752 100644 GIT binary patch delta 53230 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 S}yalaVI&=HF}=up+=2X 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