diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ac61d38 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,148 @@ +kind: pipeline +type: docker +name: default + +# workspace,path可设定默认的拉取目录和每个step中docker镜像的chdir目录,通常不需要设置 +# workspace官方说明:https://docs.drone.io/yaml/docker/#the-workspace-object +# 可在repo->setting中设置secret,使用from_secret引用密钥 +# 常量值 +constants: + - &SERVER_HOST test.tall.wiki + - &SERVER_PORT 30022 + - &BUILD_CMDER + - ls + - mvn -version + - java -version + - mvn clean package -Dmaven.test.skip=true + - &SCP_TARGET /home/cloud/carbasics + - &SCP_SOURCE target/*.jar + - &SCP_STRIP_DIR_LEVEL 1 + - &SSH_CMDER + - cd /home/cloud/carbasics + - pwd + - ./carbasics.sh > /dev/null 2> /dev/null & + #- &NOTIFY_EMAIL weizezhao@ccsens.com + - &NOTIFY_WECHATROBOT_WEBHOOK https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=b2b93e9a-128b-41d4-8dce-12004e3f48b9 + +# 挂载的主机卷,可以映射到docker容器中 +volumes: + - name: ssh_key + host: + path: /root/.ssh/ + - name: cache + host: + path: /var/lib/cache + +# 执行触发器 +trigger: + branch: + - master + - drone + +# 构建阶段 +steps: + - name: build-maven + image: maven:3.8.4-jdk-8 + pull: if-not-exists # default always + volumes: + - name: cache + path: /root/.m2 + commands: *BUILD_CMDER + + - name: deploy-scp + image: appleboy/drone-scp + pull: if-not-exists + volumes: + - name: ssh_key + path: /root/.ssh/ + settings: + host: *SERVER_HOST + port: *SERVER_PORT + username: root + key_path: /root/.ssh/id_rsa + rm: false # true则会删除目标目录重建 + target: *SCP_TARGET + source: *SCP_SOURCE + strip_components: *SCP_STRIP_DIR_LEVEL # 去除的目录层数,如果没有该选项,则拷贝过去是 target/xxx.jar,1代表去除target + + - name: run-ssh + image: appleboy/drone-ssh + pull: if-not-exists + volumes: + - name: ssh_key + path: /root/.ssh/ + settings: + settings: + host: *SERVER_HOST + port: *SERVER_PORT + username: root + key_path: /root/.ssh/id_rsa + script_stop: true # stop script after first failure + #command_timeout: 30s # 30seconds, the maximum amount of time for the execute commands, default is 10 minutes. + script: *SSH_CMDER + #- cd /home/cloud/carbasics + #- ./re.sh > /dev/null 2> /dev/null & + + - name: notify-wechatwork + image: fifsky/drone-wechat-work + pull: if-not-exists + settings: + url: *NOTIFY_WECHATROBOT_WEBHOOK + msgtype: markdown + content: | + {{if eq .Status "success" }} + #### 🎉 ${DRONE_REPO} 构建成功 + > Commit: [${DRONE_COMMIT_MESSAGE}](${DRONE_COMMIT_LINK}) + > Author: ${DRONE_COMMIT_AUTHOR} + > [点击查看](${DRONE_BUILD_LINK}) + {{else}} + #### ❌ ${DRONE_REPO} 构建失败 + > Commit: [${DRONE_COMMIT_MESSAGE}](${DRONE_COMMIT_LINK}) + > Author: ${DRONE_COMMIT_AUTHOR} + > 请立即修复!!! + > [点击查看](${DRONE_BUILD_LINK}) + {{end}} + when: + status: + - failure + - success + + # - name: notify-email + # image: drillster/drone-email + # pull: if-not-exists + # settings: + # host: smtp.qiye.aliyun.com #例如 smtp.qq.com + # port: 465 #例如QQ邮箱端口465 + # username: devops@ccsens.com #邮箱用户名 + # password: #邮箱密码 + # from_secret: orgsecret_password_mail_devops + # from: devops@ccsens.com + # recipients: *NOTIFY_EMAIL #收件人,多个用,隔开 + # when: #执行条件 + # status: + # - success + # - changed + # - failure + + # - name: notify-dingtalk + # image: lddsb/drone-dingtalk-message + # environment: + # PASSWORD: + # from_secret: password_mail_devops + # settings: + # token: your-dingtalk-robot-access-token + # type: markdown + # message_color: true + # message_pic: true + # sha_link: true + + # -name: notify-slack + # image: plugins/slack + # webhook: https://hooks.slack.com/ www.dijiuyy.com services/xxx/xxx/xxx + # channel: dev + # template: > + # {{#success build.status}} + # build {{build.number}} succeeded. Good job. + # {{else}} + # build {{build.number}} failed. Fix me please. + # {{/success}} \ No newline at end of file diff --git a/src/main/java/com/ccsens/carbasics/api/QuestionnaireController.java b/src/main/java/com/ccsens/carbasics/api/QuestionnaireController.java index 1817f3c..5050ed7 100644 --- a/src/main/java/com/ccsens/carbasics/api/QuestionnaireController.java +++ b/src/main/java/com/ccsens/carbasics/api/QuestionnaireController.java @@ -127,7 +127,15 @@ public class QuestionnaireController { // 未添加时间条件 Workbook workbook = questionnaireService.export(export); log.info("导出问卷记录结束"); - String fileName = "山西省缺血性脑卒中数据汇总表"+ DateUtil.format(new Date(), "yyyyMMddHHmmss") +".xlsx"; + String str = ""; + if (1L == export.getQid()) { + str = "2021年1-6月"; + }else if (3L == export.getQid()) { + str = "2021年7-11月"; + }else if (4L == export.getQid()) { + str = "2021年7-12月"; + } + String fileName = str+"山西省缺血性脑卒中数据汇总表"+ DateUtil.format(new Date(), "yyyyMMddHHmmss") +".xlsx"; response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, CharsetUtil.UTF_8)); workbook.write(response.getOutputStream()); } diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java index f45eb30..e143663 100644 --- a/src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java +++ b/src/main/java/com/ccsens/carbasics/bean/vo/OrganizationVo.java @@ -2,7 +2,6 @@ package com.ccsens.carbasics.bean.vo; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import javafx.geometry.Pos; import lombok.Data; import java.util.List; diff --git a/src/main/java/com/ccsens/carbasics/bean/vo/message/RemindMessageVo.java b/src/main/java/com/ccsens/carbasics/bean/vo/message/RemindMessageVo.java index fed9969..432bd1d 100644 --- a/src/main/java/com/ccsens/carbasics/bean/vo/message/RemindMessageVo.java +++ b/src/main/java/com/ccsens/carbasics/bean/vo/message/RemindMessageVo.java @@ -3,7 +3,9 @@ package com.ccsens.carbasics.bean.vo.message; import com.ccsens.carbasics.util.Constant; import com.ccsens.util.message.BaseMessageDto; import lombok.Data; +import lombok.EqualsAndHashCode; +@EqualsAndHashCode(callSuper = true) @Data public class RemindMessageVo extends BaseMessageDto { private Data data; diff --git a/src/main/java/com/ccsens/carbasics/service/AccountManageService.java b/src/main/java/com/ccsens/carbasics/service/AccountManageService.java index c359b2d..b1725f1 100644 --- a/src/main/java/com/ccsens/carbasics/service/AccountManageService.java +++ b/src/main/java/com/ccsens/carbasics/service/AccountManageService.java @@ -84,7 +84,7 @@ public class AccountManageService implements IAccountManageService { boolean flag = true; //1.校验字段是否都填写 Integer num = questionnaireDetailDao.countCodeNumber(detailId); - if (num < 22) { + if (num < 24) { flag = false; } String answer = questionnaireDetailDao.queryXGZL(detailId); diff --git a/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java b/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java index b969d94..a0bdf79 100644 --- a/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java +++ b/src/main/java/com/ccsens/carbasics/service/QuestionnaireService.java @@ -104,14 +104,14 @@ public class QuestionnaireService implements IQuestionnaireService{ @Override public void saveQuestionnaire(QuestionnaireDto.SaveQuestionnaire param, Long userId) throws Exception { //redis判断是否已有 - Object o = redisUtil.get(param.getDetailId() + "" + userId); + Object o = redisUtil.get(param.getDetailId() + "" + userId + param.getCode()); log.info("redis保存问卷用户{},{}",param.getDetailId() + "" + userId,o); if (ObjectUtil.isNull(o)) { - redisUtil.set(param.getDetailId() + "" + userId,param.getCode()); + redisUtil.set(param.getDetailId() + "" + userId + param.getCode(),userId); //查询是否已经提交,已提交不能保存修改 QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(param.getDetailId()); if (Constant.SubmitStatus.submit.status == questionnaireDetail.getSubmitStatus()) { - redisUtil.del(param.getDetailId() + "" + userId); + redisUtil.del(param.getDetailId() + "" + userId + param.getCode()); throw new BaseException(DefaultCodeError.HOSPITAL_REPEAT_SUBMIT); } Long recordId = recordDao.queryIsExist(param.getDetailId(),param.getCode()); @@ -129,7 +129,7 @@ public class QuestionnaireService implements IQuestionnaireService{ record.setAnswer(param.getAnswer()); recordDao.insertSelective(record); } - redisUtil.del(param.getDetailId() + "" + userId); + redisUtil.del(param.getDetailId() + "" + userId + param.getCode()); } @@ -177,7 +177,8 @@ public class QuestionnaireService implements IQuestionnaireService{ List stringList = new ArrayList<>(); stringList.add("QXXWJ"); List qxxwj = codeDictionariesDao.query(stringList); - if (num < qxxwj.size()-1) { + log.info("QXXWJ数量:{}",qxxwj.size()); + if (num < qxxwj.size()) { throw new BaseException(DefaultCodeError.QUESTIONNAIRE_INFO_INCOMPLETE); } String answer = questionnaireDetailDao.queryXGZL(param.getDetailId());