From 0bcb8f1cb3379c6d28331785a170f697d1e5b23e Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 19 Nov 2024 11:39:55 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/SysRoleController.java | 2 ++ .../sys/controller/SysUserController.java | 1 + .../modules/thirty/ThirtyVisitController.java | 25 +++++++++++++++--- .../thirty/entity/VisitThemeThirtyParam.java | 12 ++++++++- .../thirty/entity/VisitThemeThirtyVo.java | 24 +++++++++++++++++ .../modules/visit/api/VisitMainOuterApi.java | 16 ++++++------ .../visit/controller/VisitMainController.java | 26 +++++++++++++++++++ .../serve/modules/visit/entity/VisitMain.java | 7 +++++ .../modules/visit/entity/VisitTheme.java | 11 ++++++++ .../service/impl/VisitMainServiceImpl.java | 26 +++++++++++++------ src/main/resources/application-dev.yml | 3 ++- 11 files changed, 131 insertions(+), 22 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyVo.java diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysRoleController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysRoleController.java index 3e55ed5..082cee6 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysRoleController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysRoleController.java @@ -6,6 +6,7 @@ import com.qs.serve.common.model.annotation.SysLog; import com.qs.serve.common.model.dto.PageVo; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.PageUtil; import com.qs.serve.modules.sys.entity.SysRole; import com.qs.serve.modules.sys.entity.SysRoleMenu; @@ -102,6 +103,7 @@ public class SysRoleController { @PreAuthorize("hasRole('sys:role:insert')") public R save(@RequestBody @Valid SysRole param){ param.setIsDefault(null); + param.setTenantId(AuthContextUtils.getTenant()); boolean result = sysRoleService.save(param); return R.isTrue(result); } diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index a721164..3d672e5 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -161,6 +161,7 @@ public class SysUserController { List userRoles = userRoleService.list(new LambdaQueryWrapper() .in(SysUserRole::getRoleId,param.getRoleIds())); List ids = userRoles.stream().map(SysUserRole::getUserId).collect(Collectors.toList()); + ids.add("0"); param.setSelectIds(ids); } PageHelper.startPage(param.getPageNum(),param.getPageSize()); diff --git a/src/main/java/com/qs/serve/modules/thirty/ThirtyVisitController.java b/src/main/java/com/qs/serve/modules/thirty/ThirtyVisitController.java index a889b99..0107687 100644 --- a/src/main/java/com/qs/serve/modules/thirty/ThirtyVisitController.java +++ b/src/main/java/com/qs/serve/modules/thirty/ThirtyVisitController.java @@ -14,15 +14,18 @@ import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysDeptService; import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.thirty.entity.VisitThemeThirtyParam; +import com.qs.serve.modules.thirty.entity.VisitThemeThirtyVo; import com.qs.serve.modules.visit.entity.VisitTheme; import com.qs.serve.modules.visit.service.impl.VisitThemeServiceImpl; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.validation.Valid; /** @@ -31,15 +34,20 @@ import javax.validation.Valid; * @since 2024/11/12 */ @Slf4j -@AllArgsConstructor @RestController @RequestMapping("/thirty") public class ThirtyVisitController { + @Resource private VisitThemeServiceImpl visitThemeService; + @Resource private SysUserService sysUserService; + @Resource private SysDeptService sysDeptService; + @Value("${project.pcvisitThemeUrl}") + private String pcvisitThemeUrl; + /** * 新增 * @param param @@ -47,7 +55,7 @@ public class ThirtyVisitController { */ @PostMapping("/saveTheme") @SysLog(module = SystemModule.VISIT, title = "拜访", biz = BizType.INSERT) - public R save(@RequestBody @Valid VisitThemeThirtyParam param){ + public R save(@RequestBody @Valid VisitThemeThirtyParam param){ VisitTheme entity = new VisitTheme(); entity.setId(param.getId()); SysUser applyUser = sysUserService.getByAccount(param.getUserId()); @@ -80,10 +88,19 @@ public class ThirtyVisitController { entity.setUserRoom(param.getUserRoom()); entity.setVisitStartDate(param.getVisitStartDate()); entity.setVisitEndDate(param.getVisitEndDate()); + entity.setCodeStartDate(param.getVisitStartDate()); + entity.setCodeEndDate(param.getVisitEndDate()); entity.setSkipApprovalFlag(param.getIsNeedVerify()?0:1); entity.setSkipMessageFlag(param.getIsNeedVerifyStatus()?0:1); - boolean result = visitThemeService.saveOrUpdate(entity); - return R.isTrue(result); + entity.setSkipApprovalNumber(param.getSkipApprovalFlag()); + entity.setApprover(param.getApprover()); + visitThemeService.saveOrUpdate(entity); + + String url = pcvisitThemeUrl+entity.getId(); + VisitThemeThirtyVo thirtyVo = new VisitThemeThirtyVo(); + thirtyVo.setThemeQrCode(url); + thirtyVo.setThemeId(entity.getId()); + return R.ok(thirtyVo); } } diff --git a/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyParam.java b/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyParam.java index 39f9ba8..c46ed29 100644 --- a/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyParam.java +++ b/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyParam.java @@ -81,7 +81,7 @@ public class VisitThemeThirtyParam { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime visitStartDate; - /** 来访结束时间 */ + /** 来访结束时间(二维码结束时间) */ @NotNull(message = "visitEndDate is null") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") @@ -99,4 +99,14 @@ public class VisitThemeThirtyParam { @NotNull(message = "isNeedVerifyStatus is null") public Boolean isNeedVerifyStatus; + /** + * 未指明含义,只做接收和传到OA + */ + private Long skipApprovalFlag; + + /** + * 审批人或者知会人 + */ + private String approver; + } diff --git a/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyVo.java b/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyVo.java new file mode 100644 index 0000000..64af135 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/thirty/entity/VisitThemeThirtyVo.java @@ -0,0 +1,24 @@ +package com.qs.serve.modules.thirty.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; + +/** + * @author YenHex + * @since 2024/11/12 + */ +@Data +public class VisitThemeThirtyVo { + + /** + * 用于更新 + */ + public String themeId; + + public String themeQrCode; + +} diff --git a/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java b/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java index 9f3599f..f6dc5cb 100644 --- a/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java +++ b/src/main/java/com/qs/serve/modules/visit/api/VisitMainOuterApi.java @@ -117,10 +117,10 @@ public class VisitMainOuterApi { public R getThemeAndValidById(@PathVariable("id") String id){ VisitTheme visitTheme = visitThemeService.getById(id); LocalDateTime nowTime = LocalDateTime.now(); - if(nowTime.isBefore(visitTheme.getCodeStartDate())){ + if(visitTheme.getCodeStartDate()!=null&&nowTime.isBefore(visitTheme.getCodeStartDate())){ return R.ok(false,"登记时间未开始"); } - if(nowTime.isAfter(visitTheme.getCodeEndDate())){ + if(visitTheme.getCodeEndDate()!=null&&nowTime.isAfter(visitTheme.getCodeEndDate())){ return R.ok(false,"已结束登记"); } return R.ok(true); @@ -186,10 +186,10 @@ public class VisitMainOuterApi { return R.error("主题已停用"); } LocalDateTime nowTime = LocalDateTime.now(); - if(nowTime.isBefore(visitTheme.getCodeStartDate())){ + if(visitTheme.getCodeStartDate()!=null&&nowTime.isBefore(visitTheme.getCodeStartDate())){ return R.error("登记时间未开始"); } - if(nowTime.isAfter(visitTheme.getCodeEndDate())){ + if(visitTheme.getCodeEndDate()!=null&&nowTime.isAfter(visitTheme.getCodeEndDate())){ return R.error("已结束登记"); } @@ -204,7 +204,9 @@ public class VisitMainOuterApi { // 主题相关 entity.setThemeId(visitTheme.getId()); entity.setVisitStartDate(visitTheme.getVisitStartDate()); - entity.setVisitEndDate(visitTheme.getVisitEndDate()); + //entity.setVisitEndDate(visitTheme.getVisitEndDate()); + entity.setVisitEndDate(LocalDateTime.now()); + entity.setSkipApprovalNumber(visitTheme.getSkipApprovalNumber()); //其它 entity.setId(null); entity.setVisitCode(CodeGenUtil.getDataCode(CodeGenUtil.SourceDataKey.VISIT)); @@ -226,9 +228,7 @@ public class VisitMainOuterApi { visitMainService.doFinish(entity.getId(),null); }else { // 申请审批 - if(1==2){ - visitMainService.submitOaFlow(entity.getId()); - } + visitMainService.submitOaFlow(entity.getId()); } return R.ok(param.getId()); } diff --git a/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java b/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java index 886f33a..aa46fff 100644 --- a/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java +++ b/src/main/java/com/qs/serve/modules/visit/controller/VisitMainController.java @@ -169,5 +169,31 @@ public class VisitMainController { return R.isTrue(result); } + + /** + * 成功 + * @param id + * @return + */ + @GetMapping("/doSuccess/{id}") + @SysLog(module = SystemModule.VISIT, title = "拜访", biz = BizType.QUERY) + public R doSuccess(@PathVariable("id") String id){ + visitMainService.doFinish(id,null); + return R.ok(); + } + + + /** + * 拒绝 + * @param id + * @return + */ + @GetMapping("/doRefuse/{id}") + @SysLog(module = SystemModule.VISIT, title = "拜访", biz = BizType.QUERY) + public R doRefuse(@PathVariable("id") String id){ + visitMainService.doRefuse(id,null); + return R.ok(); + } + } diff --git a/src/main/java/com/qs/serve/modules/visit/entity/VisitMain.java b/src/main/java/com/qs/serve/modules/visit/entity/VisitMain.java index 34edf02..c684046 100644 --- a/src/main/java/com/qs/serve/modules/visit/entity/VisitMain.java +++ b/src/main/java/com/qs/serve/modules/visit/entity/VisitMain.java @@ -146,6 +146,13 @@ public class VisitMain implements Serializable { private String remark2; + /** + * 未指明含义,只做接收和传到OA + * 对应 visitMain.skipApprovalNumber + * 传入OA时使用`·`skipApprovalFlag`做参数名 + */ + private Long skipApprovalNumber; + /** 创建时间 */ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") diff --git a/src/main/java/com/qs/serve/modules/visit/entity/VisitTheme.java b/src/main/java/com/qs/serve/modules/visit/entity/VisitTheme.java index 54b437a..3f99c67 100644 --- a/src/main/java/com/qs/serve/modules/visit/entity/VisitTheme.java +++ b/src/main/java/com/qs/serve/modules/visit/entity/VisitTheme.java @@ -169,6 +169,17 @@ public class VisitTheme implements Serializable { @JsonProperty private Boolean delFlag; + /** + * 未指明含义,只做接收和传到OA + * 对应 visitMain.skipApprovalNumber + * 传入OA时使用`·`skipApprovalFlag`做参数名 + */ + private Long skipApprovalNumber; + + /** + * 审批人或者知会人 + */ + private String approver; } diff --git a/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java b/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java index 93d61ce..2db74e9 100644 --- a/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/visit/service/impl/VisitMainServiceImpl.java @@ -7,10 +7,7 @@ import com.qs.serve.common.model.consts.ResultFlag; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.oa.BaseCreateCallbackBo; import com.qs.serve.common.model.oa.OaFormMainProcess; -import com.qs.serve.common.util.Assert; -import com.qs.serve.common.util.CopierUtil; -import com.qs.serve.common.util.DateUtils; -import com.qs.serve.common.util.TianYiYunSmsUtil; +import com.qs.serve.common.util.*; import com.qs.serve.common.util.model.DateFormatString; import com.qs.serve.modules.flow.model.TbsAffairCommitBo; import com.qs.serve.modules.flow.service.SeeYonOptionService; @@ -54,9 +51,12 @@ public class VisitMainServiceImpl extends ServiceImpl @Value("${project.h5visitMainUrl}") private String h5visitMainUrl; + @Value("${project.pcvisitThemeUrl}") + private String pcvisitThemeUrl; + @Override public String loadTemplateCode(){ - return flowDev?"visitApplyForm_Test":"visitApplyForm"; + return flowDev?"visitRegister_Test":"visitRegister"; } @Override @@ -102,6 +102,7 @@ public class VisitMainServiceImpl extends ServiceImpl mainData.put("userCode",visitMain.getUserCode()); mainData.put("userName",visitMain.getUserName()); mainData.put("userRoom",visitMain.getUserRoom()); + mainData.put("skipApprovalFlag",visitTheme.getSkipApprovalFlag()); mainData.put("preVisitDate",visitMain.getPreVisitDate()); mainData.put("submitTime",DateUtils.format(visitMain.getSubmitTime(), DateFormatString.DATE_TIME)); mainData.put("visitorCompany",visitMain.getVisitorCompany()); @@ -114,20 +115,29 @@ public class VisitMainServiceImpl extends ServiceImpl } mainData.put("visitorName",visitMain.getVisitorName()); mainData.put("visitorMobile",visitMain.getVisitorMobile()); - mainData.put("visitorCart",visitMain.getVisitorCar()); + mainData.put("visitorCar",visitMain.getVisitorCar()); mainData.put("visitorSum",visitMain.getVisitorSum()); mainData.put("visitorEmail",visitMain.getVisitorEmail()); mainData.put("visitorContext",visitMain.getVisitorContext()); mainData.put("remark",visitMain.getRemark()); + mainData.put("qrCode",h5visitMainUrl+visitMain.getId()); + mainData.put("skipApprovalFlag",visitMain.getSkipApprovalNumber()); + mainData.put("approver",visitTheme.getApprover()); + + Map mainbody = new HashMap<>(); + mainbody.put("formmain_2282",mainData); + OaFormMainProcess mainProcess = new OaFormMainProcess(); mainProcess.setTargetId(visitMain.getId()); mainProcess.setUploadFiles(new ArrayList<>()); mainProcess.setTableName("formmain_2282"); - mainProcess.setData(mainData); + mainProcess.setData(mainbody); mainProcess.setTemplateCode(templateCode); mainProcess.setUserId(visitMain.getUserId()); mainProcess.setSenderLoginName(visitMain.getUserCode()); + log.warn("创建流程===> {}", JsonUtil.objectToJson(mainProcess)); + R flowIdResult = seeYonService.newCreateProcess(mainProcess); if(flowIdResult==null||flowIdResult.getStatus()!=200){ @@ -180,7 +190,7 @@ public class VisitMainServiceImpl extends ServiceImpl TianYiYunSmsUtil.sendVisitSuccess( visitMain.getVisitorMobile(), h5visitMainUrl + visitMain.getId(), - visitTheme.getCodeStartDate(), + visitMain.getVisitEndDate(), visitMain.getUserName()); } return null; diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 49d6a4b..2e72178 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,6 +1,7 @@ #项目配置 project: - h5visitMainUrl: 'http://192.168.0.9:7350/h5-dev/#/visit-item-check-qrcode?id=' + h5visitMainUrl: 'http://192.168.0.9:7350/h5/#/visit-item-check-qrcode?id=' + pcvisitThemeUrl: 'http://192.168.0.9:7350/pc/#/visit-group-item-invite-qrcode?groupId=' flowTest: true upload: #上传映射地址