diff --git a/lab-gateway/src/main/resources/application-dev.yml b/lab-gateway/src/main/resources/application-dev.yml deleted file mode 100644 index c3b17c7..0000000 --- a/lab-gateway/src/main/resources/application-dev.yml +++ /dev/null @@ -1,20 +0,0 @@ -#服务器端口 -server: - port: 8001 -blade: - #多团队协作服务配置 - ribbon: - rule: - #开启配置 - enabled: true - #负载均衡优先调用的ip段 - prior-ip-pattern: - - 192.168.0.112 -static-rewrite: - static-resources: - # 路径需要转译 - '[/static/**]': file:D:/QRCode/ - # 配置物理路径地址 - '[/summarize/**]': file:/root/peacetrue/document-antora/public/ - # 配置类路径地址 - '[/classpath/**]': classpath:public/ \ No newline at end of file diff --git a/lab-ops/lab-xxljob-admin/src/main/resources/application-dev.yml b/lab-ops/lab-xxljob-admin/src/main/resources/application-dev.yml deleted file mode 100644 index c7f2ad4..0000000 --- a/lab-ops/lab-xxljob-admin/src/main/resources/application-dev.yml +++ /dev/null @@ -1,7 +0,0 @@ -#数据源配置 -spring: - datasource: - url: ${blade.datasource.job.dev.url} - username: ${blade.datasource.job.dev.username} - password: ${blade.datasource.job.dev.password} - diff --git a/lab-ops/lab-xxljob-admin/src/main/resources/application-prod.yml b/lab-ops/lab-xxljob-admin/src/main/resources/application-prod.yml deleted file mode 100644 index 396d0b9..0000000 --- a/lab-ops/lab-xxljob-admin/src/main/resources/application-prod.yml +++ /dev/null @@ -1,7 +0,0 @@ -#数据源配置 -spring: - datasource: - url: ${blade.datasource.job.prod.url} - username: ${blade.datasource.job.prod.username} - password: ${blade.datasource.job.prod.password} - diff --git a/lab-ops/lab-xxljob-admin/src/main/resources/application-test.yml b/lab-ops/lab-xxljob-admin/src/main/resources/application-test.yml deleted file mode 100644 index 3fdf586..0000000 --- a/lab-ops/lab-xxljob-admin/src/main/resources/application-test.yml +++ /dev/null @@ -1,6 +0,0 @@ -#数据源配置 -spring: - datasource: - url: ${blade.datasource.job.test.url} - username: ${blade.datasource.job.test.username} - password: ${blade.datasource.job.test.password} diff --git a/lab-service-api/lab-capital-api/pom.xml b/lab-service-api/lab-capital-api/pom.xml index da83f7e..5d9a3ea 100644 --- a/lab-service-api/lab-capital-api/pom.xml +++ b/lab-service-api/lab-capital-api/pom.xml @@ -12,7 +12,7 @@ lab-capital-api ${project.artifactId} ${bladex.project.version} - jar + jar diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Entrust.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Entrust.java index 600e704..be7bbb9 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Entrust.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/Entrust.java @@ -76,9 +76,12 @@ public class Entrust extends BaseEntity implements Serializable { // 13.报告发送方式 public String reportSendType; - // 14.邮寄地址(省、市、区、详细地址之间用英文逗号隔开) + // 14.邮寄地址(省、市、区) public String mailAddr; + // 详细地址 + public String detailAddr; + // 15.养殖情况 public String breedingSituation; @@ -165,6 +168,4 @@ public class Entrust extends BaseEntity implements Serializable { // 备注(报告发送方式其他) private String remarks; - // 邮寄地址 - private String postAddr; } diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/RepairApplication.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/RepairApplication.java index 9ab9464..1b561ab 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/RepairApplication.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/RepairApplication.java @@ -1,5 +1,6 @@ package org.springblade.lims.entry; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import org.springblade.core.mp.base.BaseEntity; @@ -17,9 +18,6 @@ public class RepairApplication extends BaseEntity implements Serializable { private static final long serialVersionUID = 1L; - @Id - private Long id; - // 仪器/设备id private Long instrumentId; // 仪器/设备编号 @@ -33,7 +31,8 @@ public class RepairApplication extends BaseEntity implements Serializable { // 制造商 private String manufacturer; // 型号 - private String model; + @TableField("model") + private String version; // 出厂日期 private Date productionDate; // 启用日期 diff --git a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TaskBlueprint.java b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TaskBlueprint.java index f3524bb..c220534 100644 --- a/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TaskBlueprint.java +++ b/lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/TaskBlueprint.java @@ -68,10 +68,10 @@ public class TaskBlueprint extends BaseEntity implements Serializable { private Integer isContinue; // 正样数量 - @TableField(exist = false) - private Integer examineNum; +// @TableField(exist = false) +// private Integer examineNum; // 留样数量 - @TableField(exist = false) - private Integer reagentNum; +// @TableField(exist = false) +// private Integer reagentNum; } diff --git a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Teacher.java b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Teacher.java index f008fbd..e8441ac 100644 --- a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Teacher.java +++ b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Teacher.java @@ -45,6 +45,11 @@ public class Teacher extends BaseEntity { * 部门名称 */ private String deptName; + + /** + * 好评量化 + */ + private Integer praise; /** * 培训次数 */ @@ -56,7 +61,7 @@ public class Teacher extends BaseEntity { /** * 学历 */ - private Integer education; + private String education; /** * 联系方式 */ diff --git a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Train.java b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Train.java index 214c666..1d64489 100644 --- a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Train.java +++ b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/Train.java @@ -9,6 +9,7 @@ import org.springblade.core.mp.base.BaseEntity; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; +import java.util.Date; /** * 培训计划表实体类 @@ -53,21 +54,11 @@ public class Train extends BaseEntity { @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss" ) - private LocalDateTime startTime; - /** - * 培训结束时间 - */ - @DateTimeFormat( - pattern = "yyyy-MM-dd HH:mm:ss" - ) - @JsonFormat( - pattern = "yyyy-MM-dd HH:mm:ss" - ) - private LocalDateTime endTime; + private Date startTime; /** * 时长 */ - private String duration; + private Integer duration; /** * 培训地点 */ @@ -83,8 +74,6 @@ public class Train extends BaseEntity { */ private String remark; - - /** * 主讲人id */ @@ -95,10 +84,21 @@ public class Train extends BaseEntity { */ private String teacherName; - /** * 参训人员 */ @TableField(exist = false) private String trainPerson; + + // 是否参加 + @TableField(exist = false) + private Integer isJoin; + + // 是否评价 + @TableField(exist = false) + private Integer isEvaluate; + + // 评价分数 + @TableField(exist = false) + private Integer evaluateScore; } diff --git a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java index eadc01a..fed2de5 100644 --- a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java +++ b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/TrainPerson.java @@ -5,6 +5,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springblade.core.mp.base.BaseEntity; +import java.util.Date; + /** * 计划参训人员关系表实体类 * @author litao @@ -45,6 +47,10 @@ public class TrainPerson extends BaseEntity { * 部门id */ private Long deptId; + /** + * 部门名称 + */ + private String deptName; /** * 联系电话 */ @@ -52,4 +58,13 @@ public class TrainPerson extends BaseEntity { private Integer isDeleted; + // 是否评价 + private Integer isEvaluate; + + // 评价分数 + private Integer evaluateScore; + + // 签到时间 + private Date signInTime; + } diff --git a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/User.java b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/User.java index f65a2ad..329c8f5 100644 --- a/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/User.java +++ b/lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/entity/User.java @@ -67,7 +67,7 @@ public class User extends TenantEntity { /** * 学历 */ - private Integer education; + private String education; /** * 角色id */ diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ApplyController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ApplyController.java index 0cfd34d..237b224 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ApplyController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ApplyController.java @@ -1,25 +1,16 @@ - package org.springblade.lims.goods.controller; -import cn.afterturn.easypoi.word.WordExportUtil; -import com.alibaba.nacos.common.utils.UuidUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; -import io.swagger.models.auth.In; import lombok.AllArgsConstructor; -import oracle.jdbc.proxy.annotation.Post; -import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.springblade.common.utils.App; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; -import org.springblade.lims.capital.entity.ApplyOrder; -import org.springblade.lims.capital.entity.ApplyOrderDetail; import org.springblade.lims.goods.entity.Apply; import org.springblade.lims.goods.entity.ApplyDetail; import org.springblade.lims.goods.entity.Goods; @@ -35,11 +26,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; -import java.io.FileOutputStream; -import java.io.IOException; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.time.LocalDateTime; import java.util.*; /** @@ -88,43 +74,34 @@ public class ApplyController extends BladeController { */ @GetMapping("/getEveryStatusAndCount") public Map getEveryStatusAndCount() { - Map map = new HashMap<>(6); QueryWrapper queryWrapper = new QueryWrapper<>(); - + // 驳回 queryWrapper.eq("status", -1); queryWrapper.eq("create_dept", AuthUtil.getDeptId()); map.put("bh", applyService.count(queryWrapper)); queryWrapper.clear(); - + // 待审核 queryWrapper.eq("status", 0); queryWrapper.eq("create_dept", AuthUtil.getDeptId()); map.put("dsh", applyService.count(queryWrapper)); queryWrapper.clear(); - - + // 待出库 queryWrapper.eq("status", 1); queryWrapper.eq("create_dept", AuthUtil.getDeptId()); map.put("dck", applyService.count(queryWrapper)); queryWrapper.clear(); - - - queryWrapper.eq("status", 3); - if ("kg".equals(AuthUtil.getUserRole())) { - - } else { - queryWrapper.eq("create_dept", AuthUtil.getDeptId()); - } - map.put("dgh", applyService.count(queryWrapper)); - queryWrapper.clear(); - - + // 待确定 queryWrapper.eq("status", 2); queryWrapper.eq("create_dept", AuthUtil.getDeptId()); map.put("dqd", applyService.count(queryWrapper)); queryWrapper.clear(); - - + // 待归还 + queryWrapper.eq("status", 3); + queryWrapper.eq("create_dept", AuthUtil.getDeptId()); + map.put("dgh", applyService.count(queryWrapper)); + queryWrapper.clear(); + // 申领完成 queryWrapper.eq("status", 4); queryWrapper.eq("create_dept", AuthUtil.getDeptId()); map.put("slwc", applyService.count(queryWrapper)); @@ -156,7 +133,7 @@ public class ApplyController extends BladeController { for (User user : userList) { if ("1542095624162525185".equals(user.getRoleId())) { messageClient.event(SysTypeEnum.INFORM.getValue(), "申领审核", - "你有新的申领单待审核,请及时处理", 1, 5, user.getId().toString(),"/capital/shenlingList"); + "你有新的申领单待审核,请及时处理", 1, 5, user.getId().toString(), "/capital/shenlingList"); } } } @@ -167,6 +144,8 @@ public class ApplyController extends BladeController { for (ApplyDetail applyDetail : detailList) { applyDetail.setApplyId(apply.getId()); applyDetail.setIsCk(0); + applyDetail.setReturnNum(0); + applyDetail.setOutNum(0); if (applyDetail.getReturnTime() != null) { applyDetail.setIsReturn(0); } @@ -202,13 +181,14 @@ public class ApplyController extends BladeController { if (apply.getStatus() == 1) { // 消息通知 messageClient.event(SysTypeEnum.INFORM.getValue(), "申领出库", - "你有新的申领单待出库,请及时处理", 1, 5, "1533753689484058625","/capital/shenlingList"); + "你有新的申领单待出库,请及时处理", 1, 5, "1533753689484058625", "/capital/shenlingList"); } //驳回 if (apply.getStatus() == -1) { + Apply byId = applyService.getById(apply.getId()); // 消息通知 messageClient.event(SysTypeEnum.INFORM.getValue(), "申领驳回", - "你有申领单被驳回,请重新下单", 1, 5, apply.getApplyUserId().toString(),"/capital/shenlingList"); + "你有申领单被驳回,请重新下单", 1, 5, byId.getApplyUserId().toString(), "/capital/shenlingList"); if (detailList != null && detailList.size() > 0) { for (ApplyDetail applyDetail : detailList) { // 加回库存 @@ -237,7 +217,7 @@ public class ApplyController extends BladeController { if (detailList != null && detailList.size() > 0) { for (ApplyDetail applyDetail : detailList) { applyDetail.setIsCk(1); - applyDetail.setReturnNum(0); + applyDetail.setCkTime(new Date()); Goods goods = goodsService.getById(applyDetail.getProductId()); goods.setNum(goods.getNum() + (applyDetail.getApplyNum() - applyDetail.getOutNum())); goodsService.updateById(goods); @@ -256,7 +236,7 @@ public class ApplyController extends BladeController { // 消息通知 Apply byId = applyService.getById(apply.getId()); messageClient.event(SysTypeEnum.INFORM.getValue(), "领取确认", - "你有新的申领单待确认,请及时处理", 1, 5, byId.getApplyUserId().toString(),"/capital/shenlingList"); + "你有新的申领单待确认,请及时处理", 1, 5, byId.getApplyUserId().toString(), "/capital/shenlingList"); } } @@ -271,7 +251,7 @@ public class ApplyController extends BladeController { applyService.updateById(apply); // 消息通知 messageClient.event(SysTypeEnum.INFORM.getValue(), "异常变更", - "你申领的物品数量有变动,请及时核对", 1, 5, apply.getApplyUserId().toString(),"/capital/shenlingList"); + "你申领的物品数量有变动,请及时核对", 1, 5, apply.getApplyUserId().toString(), "/capital/shenlingList"); List detailList = applyVO.getDetailList(); if (detailList != null && detailList.size() > 0) { for (ApplyDetail applyDetail : detailList) { @@ -400,7 +380,7 @@ public class ApplyController extends BladeController { } /** - * 出库单打印 + * 10.出库单打印 */ @GetMapping("/print") public void print(String id, HttpServletResponse response) { @@ -408,5 +388,4 @@ public class ApplyController extends BladeController { } - } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java index d4c5e53..f4c8552 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ContractController.java @@ -228,7 +228,7 @@ public class ContractController extends BladeController { contractDetailService.saveBatch(details); contractService.save(contract1); } else { - throw new Exception("系统内无此供应商,请录入供应商后重新导入!"); + throw new Exception("系统内无" + contractExcels.get(0).getSupplierName() + "此供应商,请录入供应商后重新导入!"); } } } diff --git a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java index 972b040..0d55a63 100644 --- a/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java +++ b/lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java @@ -18,18 +18,17 @@ import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; -import org.springblade.lims.capital.entity.GoodsCheckLog; -import org.springblade.lims.capital.entity.Product; -import org.springblade.lims.capital.entity.ProductClass; -import org.springblade.lims.capital.entity.ProductStoreDetial; +import org.springblade.lims.capital.entity.*; import org.springblade.lims.capital.excel.GoodsExcel; import org.springblade.lims.capital.excel.ProductExcel; import org.springblade.lims.capital.service.IGoodsCheckLogService; import org.springblade.lims.capital.service.IProductClassService; import org.springblade.lims.capital.service.IProductStoreDetialService; import org.springblade.lims.common.OrderUtils; +import org.springblade.lims.goods.entity.ApplyDetail; import org.springblade.lims.goods.entity.Goods; import org.springblade.lims.goods.entity.Report; +import org.springblade.lims.goods.service.IApplyDetailService; import org.springblade.lims.goods.service.IGoodsService; import org.springblade.lims.goods.service.IReportService; import org.springblade.resource.enums.SysTypeEnum; @@ -42,9 +41,9 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; /** * 物品表 控制器 @@ -69,6 +68,8 @@ public class GoodsController extends BladeController { private final IUserClient userClient; + private final IApplyDetailService applyDetailService; + //物品列表 分页 @GetMapping("/list") public IPage list(Goods goods, Query query) { @@ -267,7 +268,6 @@ public class GoodsController extends BladeController { productStoreDetialService.updateById(detial); } - /** * 质检详情 */ @@ -307,4 +307,217 @@ public class GoodsController extends BladeController { } } } + + /** + * 实验室物资种类及本周出入库统计 + */ + @GetMapping("/classAndInOut") + public R> classAndInOut() throws ParseException { + Map map = new HashMap<>(); + // 物资种类数量 + int count = productClassService.count(); + map.put("classCount", count); + // 本周每天出入库数量 + List week = new ArrayList<>(); + List out = new ArrayList<>(); + List in = new ArrayList<>(); + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Calendar cld = Calendar.getInstance(Locale.CHINA); + //以周一为首日 + cld.setFirstDayOfWeek(Calendar.MONDAY); + + + // 周一开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); + Date mondayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date mondayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周一出库数量 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,mondayStart,mondayEnd); + List applyDetails1 = applyDetailService.list(wrapper); + int mondayOut = 0; + for (ApplyDetail applyDetail : applyDetails1) { + mondayOut += applyDetail.getOutNum(); + } + // 周一入库数量 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,mondayStart,mondayEnd); + List storeDetials1 = productStoreDetialService.list(queryWrapper); + int mondayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials1) { + mondayIn += storeDetial.getNum(); + } + week.add("周一"); + out.add(mondayOut); + in.add(mondayIn); + + + // 周二开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); + Date tuesdayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date tuesdayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周二出库数量 + wrapper.clear(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,tuesdayStart,tuesdayEnd); + List applyDetails2 = applyDetailService.list(wrapper); + int tuesdayOut = 0; + for (ApplyDetail applyDetail : applyDetails2) { + tuesdayOut += applyDetail.getOutNum(); + } + // 周二入库数量 + queryWrapper.clear(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,tuesdayStart,tuesdayEnd); + List storeDetials2 = productStoreDetialService.list(queryWrapper); + int tuesdayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials2) { + tuesdayIn += storeDetial.getNum(); + } + week.add("周二"); + out.add(tuesdayOut); + in.add(tuesdayIn); + + + // 周三开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); + Date wednedayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date wednedayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周三出库数量 + wrapper.clear(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,wednedayStart,wednedayEnd); + List applyDetails3 = applyDetailService.list(wrapper); + int wednedayOut = 0; + for (ApplyDetail applyDetail : applyDetails3) { + wednedayOut += applyDetail.getOutNum(); + } + // 周三入库数量 + queryWrapper.clear(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,wednedayStart,wednedayEnd); + List storeDetials3 = productStoreDetialService.list(queryWrapper); + int wednedayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials3) { + wednedayIn += storeDetial.getNum(); + } + week.add("周三"); + out.add(wednedayOut); + in.add(wednedayIn); + + + // 周四开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY); + Date thursdayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date thursdayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周四出库数量 + wrapper.clear(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,thursdayStart,thursdayEnd); + List applyDetails4 = applyDetailService.list(wrapper); + int thursdayOut = 0; + for (ApplyDetail applyDetail : applyDetails4) { + thursdayOut += applyDetail.getOutNum(); + } + // 周四入库数量 + queryWrapper.clear(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,thursdayStart,thursdayEnd); + List storeDetials4 = productStoreDetialService.list(queryWrapper); + int thursdayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials4) { + thursdayIn += storeDetial.getNum(); + } + week.add("周四"); + out.add(thursdayOut); + in.add(thursdayIn); + + + // 周五开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); + Date fridayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date fridayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周五出库数量 + wrapper.clear(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,fridayStart,fridayEnd); + List applyDetails5 = applyDetailService.list(wrapper); + int fridayOut = 0; + for (ApplyDetail applyDetail : applyDetails5) { + fridayOut += applyDetail.getOutNum(); + } + // 周五入库数量 + queryWrapper.clear(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,fridayStart,fridayEnd); + List storeDetials5 = productStoreDetialService.list(queryWrapper); + int fridayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials5) { + fridayIn += storeDetial.getNum(); + } + week.add("周五"); + out.add(fridayOut); + in.add(fridayIn); + + + // 周六开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY); + Date saturdayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date saturdayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周六出库数量 + wrapper.clear(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,saturdayStart,saturdayEnd); + List applyDetails6 = applyDetailService.list(wrapper); + int saturdayOut = 0; + for (ApplyDetail applyDetail : applyDetails6) { + saturdayOut += applyDetail.getOutNum(); + } + // 周六入库数量 + queryWrapper.clear(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,saturdayStart,saturdayEnd); + List storeDetials6 = productStoreDetialService.list(queryWrapper); + int saturdayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials6) { + saturdayIn += storeDetial.getNum(); + } + week.add("周六"); + out.add(saturdayOut); + in.add(saturdayIn); + + + // 周日开始时间和结束时间 + cld.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); + Date sundayStart = df2.parse(df.format(cld.getTime()) + " 00:00:00"); + Date sundayEnd = df2.parse(df.format(cld.getTime()) + " 23:59:59"); + // 周日出库数量 + wrapper.clear(); + wrapper.eq(ApplyDetail::getIsCk, 1); + wrapper.between(ApplyDetail::getCkTime,sundayStart,sundayEnd); + List applyDetails7 = applyDetailService.list(wrapper); + int sundayOut = 0; + for (ApplyDetail applyDetail : applyDetails7) { + sundayOut += applyDetail.getOutNum(); + } + // 周日入库数量 + queryWrapper.clear(); + queryWrapper.eq(ProductStoreDetial::getStatus, 1); + queryWrapper.between(ProductStoreDetial::getUpdateTime,sundayStart,sundayEnd); + List storeDetials7 = productStoreDetialService.list(queryWrapper); + int sundayIn = 0; + for (ProductStoreDetial storeDetial : storeDetials7) { + sundayIn += storeDetial.getNum(); + } + week.add("周日"); + out.add(sundayOut); + in.add(sundayIn); + map.put("week", week); + map.put("out", out); + map.put("in", in); + return R.data(map); + } } diff --git a/lab-service/lab-iot/src/main/java/org/springblade/iot/config/ModbusReader.java b/lab-service/lab-iot/src/main/java/org/springblade/iot/config/ModbusReader.java index 779773f..1f4335f 100644 --- a/lab-service/lab-iot/src/main/java/org/springblade/iot/config/ModbusReader.java +++ b/lab-service/lab-iot/src/main/java/org/springblade/iot/config/ModbusReader.java @@ -12,6 +12,7 @@ import org.springblade.iot.entry.SensorHistory; import org.springblade.iot.service.ISensorAlertService; import org.springblade.iot.service.ISensorHistoryService; import org.springblade.iot.service.ISensorService; +import org.springblade.iot.tools.RedisUtil; import org.springblade.iot.utils.ReadModBusUtil; import org.springblade.system.feign.ISysClient; import org.springframework.boot.CommandLineRunner; @@ -35,6 +36,8 @@ public class ModbusReader implements CommandLineRunner { private final ISensorAlertService sensorAlertService; + private final RedisUtil redisUtil; + /** * 项目启动读取传感器数据 相关逻辑 */ @@ -62,24 +65,16 @@ public class ModbusReader implements CommandLineRunner { if (floats.get(0) != null) { sensor.setCurrData(String.valueOf(floats.get(0))); } -// System.out.println(sensor.getIp() + ":" + sensor.getSignalName() + ":" + floats); // 加入缓存 - String tempStr = CacheUtil.get(BIZ_CACHE, "sensor:id", sensor.getId(), () -> JSONObject.toJSONString(sensor)); - System.out.println("tempStr" + tempStr); + redisUtil.set(BIZ_CACHE + "sensor:id" + sensor.getId(), JSONObject.toJSONString(sensor)); + String tempStr = (String)redisUtil.get(BIZ_CACHE + "sensor:id" + sensor.getId()); Sensor result = JSONObject.parseObject(tempStr, Sensor.class); - System.out.println("result" + result); - - String str = (String) CacheUtil.get(BIZ_CACHE, "sensor:id", sensor.getId()); - System.out.println("str" + str); - Sensor result1 = JSONObject.parseObject(str, Sensor.class); - System.out.println("result" + result1); SensorHistory resultHistory = new SensorHistory(); BeanUtil.copy(result, resultHistory); resultHistory.setId(null); resultHistory.setCreateTime(new Date()); tempList.add(resultHistory); -// System.out.println("resultHistory:" + resultHistory); // 报警信息 if (sensor.getWarningValue() != null && !"".equals(sensor.getWarningValue()) && diff --git a/lab-service/lab-iot/src/main/java/org/springblade/iot/config/RedisConfig.java b/lab-service/lab-iot/src/main/java/org/springblade/iot/config/RedisConfig.java new file mode 100644 index 0000000..9d54965 --- /dev/null +++ b/lab-service/lab-iot/src/main/java/org/springblade/iot/config/RedisConfig.java @@ -0,0 +1,39 @@ +package org.springblade.iot.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +@Configuration +@EnableCaching //开启注解 +public class RedisConfig extends CachingConfigurerSupport { + /** + * retemplate相关配置 + * 序列化配置,如果没有配置序列化的话可能会出现往redis存了值,但是获取不到 + */ + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory factory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(factory); + Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); + ObjectMapper om = new ObjectMapper(); + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jacksonSeial.setObjectMapper(om); + template.setValueSerializer(jacksonSeial); + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(jacksonSeial); + template.afterPropertiesSet(); + return template; + } +} + diff --git a/lab-service/lab-iot/src/main/java/org/springblade/iot/config/RedisToolConfig.java b/lab-service/lab-iot/src/main/java/org/springblade/iot/config/RedisToolConfig.java new file mode 100644 index 0000000..7e2603e --- /dev/null +++ b/lab-service/lab-iot/src/main/java/org/springblade/iot/config/RedisToolConfig.java @@ -0,0 +1,21 @@ +package org.springblade.iot.config; + +import lombok.RequiredArgsConstructor; +import org.springblade.iot.tools.RedisUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.RedisTemplate; + +@Configuration +@RequiredArgsConstructor(onConstructor = @__(@Autowired)) +public class RedisToolConfig { + + private final RedisTemplate redisTemplate; + + @Bean(name = "redisUtil") + public RedisUtil redisUtil() { + return new RedisUtil(redisTemplate); + } + +} diff --git a/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorAlertController.java b/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorAlertController.java index 456fc00..3b2c634 100644 --- a/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorAlertController.java +++ b/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorAlertController.java @@ -4,6 +4,7 @@ package org.springblade.iot.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; +import oracle.jdbc.proxy.annotation.Post; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.tool.api.R; import org.springblade.iot.entry.SensorAlert; @@ -31,6 +32,13 @@ public class SensorAlertController extends BladeController { public R> abnormal() { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SensorAlert::getIsRead, 0); + wrapper.orderByDesc(SensorAlert::getCreateTime); return R.data(sensorAlertService.list(wrapper)); } + + @PostMapping("/read") + public R read(@RequestBody SensorAlert sensorAlert) { + sensorAlert.setIsRead(1); + return R.status(sensorAlertService.updateById(sensorAlert)); + } } diff --git a/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorController.java b/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorController.java index fa1aca6..71fa0e1 100644 --- a/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorController.java +++ b/lab-service/lab-iot/src/main/java/org/springblade/iot/controller/SensorController.java @@ -20,6 +20,7 @@ import org.springblade.iot.entry.Sensor; import org.springblade.iot.entry.SensorHistory; import org.springblade.iot.service.ISensorHistoryService; import org.springblade.iot.service.ISensorService; +import org.springblade.iot.tools.RedisUtil; import org.springframework.web.bind.annotation.*; import java.text.DecimalFormat; @@ -43,6 +44,8 @@ public class SensorController extends BladeController { private final ISensorHistoryService sensorHistoryService; + private final RedisUtil redisUtil; + /** * 分页 */ @@ -565,20 +568,45 @@ public class SensorController extends BladeController { System.out.println("sensors" + sensors); if (sensors != null && sensors.size() > 0) { for (Sensor sensor : sensors) { - System.out.println("sensor.getId()" + sensor.getId()); - String str = (String) CacheUtil.get(BIZ_CACHE, "sensor:id", sensor.getId()); - System.out.println("str:" + str); + String str = (String) redisUtil.get(BIZ_CACHE + "sensor:id" + sensor.getId()); Sensor result = JSONObject.parseObject(str, Sensor.class); - System.out.println("result" + result); - System.out.println("result.getType()" + result.getType()); + double v = Double.parseDouble(result.getCurrData()); + double v1 = Double.parseDouble(sensor.getWarningValue()); + // 温度 if ("温度".equals(result.getType())) { map.put("temperature", result.getCurrData()); + if (v > v1) { + map.put("temperatureStatus", "0"); + } else { + map.put("temperatureStatus", "1"); + } + } else { + map.put("temperature", "-"); + map.put("temperatureStatus", "1"); } + // 湿度 if ("湿度".equals(result.getType())) { map.put("humidity", result.getCurrData()); + if (v > v1) { + map.put("humidityStatus", "0"); + } else { + map.put("humidityStatus", "1"); + } + } else { + map.put("humidity", "-"); + map.put("humidityStatus", "1"); } + // 压差 if ("压差".equals(result.getType())) { map.put("pressure", result.getCurrData()); + if (v < v1) { + map.put("pressureStatus", "0"); + } else { + map.put("pressureStatus", "1"); + } + } else { + map.put("pressure", "-"); + map.put("pressureStatus", "1"); } } } diff --git a/lab-service/lab-iot/src/main/java/org/springblade/iot/tools/RedisUtil.java b/lab-service/lab-iot/src/main/java/org/springblade/iot/tools/RedisUtil.java new file mode 100644 index 0000000..cb46b9d --- /dev/null +++ b/lab-service/lab-iot/src/main/java/org/springblade/iot/tools/RedisUtil.java @@ -0,0 +1,569 @@ +package org.springblade.iot.tools; + +import org.springframework.data.redis.core.BoundListOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.util.CollectionUtils; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +public class RedisUtil { + + private RedisTemplate redisTemplate; + + public RedisUtil(RedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + /** + * 指定缓存失效时间 + * @param key 键 + * @param time 时间(秒) + * @return + */ + public boolean expire(String key,long time){ + try { + if(time>0){ + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key 获取过期时间 + * @param key 键 不能为null + * @return 时间(秒) 返回0代表为永久有效 + */ + public long getExpire(String key){ + return redisTemplate.getExpire(key,TimeUnit.SECONDS); + } + + /** + * 判断key是否存在 + * @param key 键 + * @return true 存在 false不存在 + */ + public boolean hasKey(String key){ + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除缓存 + * @param key 可以传一个值 或多个 + */ + @SuppressWarnings("unchecked") + public void del(String ... key){ + if(key!=null&&key.length>0){ + if(key.length==1){ + redisTemplate.delete(key[0]); + }else{ + redisTemplate.delete(CollectionUtils.arrayToList(key)); + } + } + } + + /** + * 普通缓存获取 + * @param key 键 + * @return 值 + */ + public Object get(String key){ + return key==null?null:redisTemplate.opsForValue().get(key); + } + + /** + * 普通缓存放入 + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public boolean set(String key,Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 普通缓存放入并设置时间 + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public boolean set(String key,Object value,long time){ + try { + if(time>0){ + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + }else{ + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 递增 + * @param key 键 + * @param delta 要增加几(大于0) + * @return + */ + public long incr(String key, long delta){ + if(delta<0){ + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + + /** + * 递减 + * @param key 键 + * @param delta 要减少几(小于0) + * @return + */ + public long decr(String key, long delta){ + if(delta<0){ + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + + /** + * HashGet + * @param key 键 不能为null + * @param item 项 不能为null + * @return 值 + */ + public Object hget(String key,String item){ + return redisTemplate.opsForHash().get(key, item); + } + + /** + * 获取hashKey对应的所有键值 + * @param key 键 + * @return 对应的多个键值 + */ + public Map hmget(String key){ + return redisTemplate.opsForHash().entries(key); + } + + /** + * HashSet + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public boolean hmset(String key, Map map){ + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * HashSet 并设置时间 + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public boolean hmset(String key, Map map, long time){ + try { + redisTemplate.opsForHash().putAll(key, map); + if(time>0){ + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public boolean hset(String key,String item,Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public boolean hset(String key,String item,Object value,long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if(time>0){ + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除hash表中的值 + * @param key 键 不能为null + * @param item 项 可以使多个 不能为null + */ + public void hdel(String key, Object... item){ + redisTemplate.opsForHash().delete(key,item); + } + + /** + * 判断hash表中是否有该项的值 + * @param key 键 不能为null + * @param item 项 不能为null + * @return true 存在 false不存在 + */ + public boolean hHasKey(String key, String item){ + return redisTemplate.opsForHash().hasKey(key, item); + } + + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return + */ + public double hincr(String key, String item,double by){ + return redisTemplate.opsForHash().increment(key, item, by); + } + + /** + * hash递减 + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return + */ + public double hdecr(String key, String item,double by){ + return redisTemplate.opsForHash().increment(key, item,-by); + } + + /** + * 根据key获取Set中的所有值 + * @param key 键 + * @return + */ + public Set sGet(String key){ + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 根据value从一个set中查询,是否存在 + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public boolean sHasKey(String key,Object value){ + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将数据放入set缓存 + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSet(String key, Object...values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 将set数据放入缓存 + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public long sSetAndTime(String key,long time,Object...values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if(time>0) { + expire(key, time); + } + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 获取set缓存的长度 + * @param key 键 + * @return + */ + public long sGetSetSize(String key){ + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 移除值为value的 + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public long setRemove(String key, Object ...values) { + try { + Long count = redisTemplate.opsForSet().remove(key, values); + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 获取list缓存的内容 + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return + */ + public List lGet(String key, long start, long end){ + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 获取list缓存的长度 + * @param key 键 + * @return + */ + public long lGetListSize(String key){ + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 通过索引 获取list中的值 + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return + */ + public Object lGetIndex(String key,long index){ + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, Object value, long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @return + */ + public boolean lSet(String key, List value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return + */ + public boolean lSet(String key, List value, long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据索引修改list中的某条数据 + * @param key 键 + * @param index 索引 + * @param value 值 + * @return + */ + public boolean lUpdateIndex(String key, long index,Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 移除N个值为value + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public long lRemove(String key,long count,Object value) { + try { + Long remove = redisTemplate.opsForList().remove(key, count, value); + return remove; + } catch (Exception e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 模糊查询获取key值 + * @param pattern + * @return + */ + public Set keys(String pattern){ + return redisTemplate.keys(pattern); + } + + /** + * 使用Redis的消息队列 + * @param channel + * @param message 消息内容 + */ + public void convertAndSend(String channel, Object message){ + redisTemplate.convertAndSend(channel,message); + } + + /** + * 根据起始结束序号遍历Redis中的list + * @param listKey + * @param start 起始序号 + * @param end 结束序号 + * @return + */ + public List rangeList(String listKey, long start, long end) { + //绑定操作 + BoundListOperations boundValueOperations = redisTemplate.boundListOps(listKey); + //查询数据 + return boundValueOperations.range(start, end); + } + + /** + * 弹出右边的值 --- 并且移除这个值 + * @param listKey + */ + public Object rifhtPop(String listKey){ + //绑定操作 + BoundListOperations boundValueOperations = redisTemplate.boundListOps(listKey); + return boundValueOperations.rightPop(); + } + +} diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java index a04741e..a5500e8 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/EntrustController.java @@ -485,8 +485,6 @@ public class EntrustController extends BladeController { queryWrapper.eq("entrust_id", id); TaskBlueprint taskBlueprint = blueprintService.getOne(queryWrapper); - List examineList = new ArrayList<>(); - //任务 List eTaskList = new ArrayList<>(); if (taskBlueprint != null) { @@ -509,6 +507,7 @@ public class EntrustController extends BladeController { examineLambdaQueryWrapper.eq(Examine::getETaskId, eTask.getId()); List examines = examineService.list(examineLambdaQueryWrapper); if (examines != null && examines.size() > 0) { + List examineList = new ArrayList<>(); for (Examine examine : examines) { if (examine.getExperieNum() != null && !"".equals(examine.getExperieNum())) { ExamineItem examineItem = examineItemService.getById(examine.getExamineItemId()); @@ -687,6 +686,12 @@ public class EntrustController extends BladeController { if (examineBasis != null) { examine.setExamineBasisName(examineBasis.getName()); } + if (!"".equals(examine.getExamineBy()) && examine.getExamineBy() != null) { + User user = userClient.userInfoById(Long.parseLong(examine.getExamineBy())).getData(); + if (user != null) { + examine.setExamineByName(user.getName()); + } + } map.put("examine", examine); return R.data(map); // //已分配的检测数据 @@ -1445,7 +1450,6 @@ public class EntrustController extends BladeController { @GetMapping("/reportPrint") public void reportPrint(String examineId, HttpServletResponse response) throws IOException { service.reportPrint(examineId, response); - } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java index 87f5636..57a4ea4 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineController.java @@ -17,6 +17,7 @@ import org.springblade.lims.entry.*; import org.springblade.lims.service.*; import org.springblade.resource.enums.SysTypeEnum; import org.springblade.resource.feign.IMessageClient; +import org.springblade.system.feign.ISysClient; import org.springblade.system.user.entity.User; import org.springblade.system.user.feign.IUserClient; import org.springframework.web.bind.annotation.*; @@ -56,6 +57,8 @@ public class ExamineController extends BladeController { private final IMessageClient messageClient; + private final ISysClient sysClient; + /** * 新增 */ @@ -207,7 +210,10 @@ public class ExamineController extends BladeController { @GetMapping("/examineList") public R> list(Examine examine, Query query) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Examine::getDeptId, examine.getDeptId()); + String dept = sysClient.getParamValue("is_limit_by_dept").getData(); + if ("1".equals(dept) || dept == null) { + wrapper.eq(Examine::getDeptId, examine.getDeptId()); + } //待领取 if ("000".equals(examine.getEntrustStatus())) { wrapper.eq(Examine::getIsDistribute, 0) diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java index 60c4db0..40fdb39 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/ExamineResultController.java @@ -584,7 +584,7 @@ public class ExamineResultController extends BladeController { } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ExamineResult::getExamineId, examineId); + wrapper.eq(ExamineResult::getExamineId, examine.getId()); ExamineResult result = service.getOne(wrapper); if (result != null) { result.setOriginRecordData(JSON.toJSONString(mapList)); @@ -593,7 +593,7 @@ public class ExamineResultController extends BladeController { service.updateById(result); } else { ExamineResult examineResult = new ExamineResult(); - examineResult.setExamineId(Long.valueOf(examineId)); + examineResult.setExamineId(Long.valueOf(examine.getId())); examineResult.setOriginRecordData(JSON.toJSONString(mapList)); examineResult.setOriginRecordResult(JSON.toJSONString(mapList)); examineResult.setExamineDataArr(JSON.toJSONString(list)); @@ -959,7 +959,7 @@ public class ExamineResultController extends BladeController { } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ExamineResult::getExamineId, examineId); + wrapper.eq(ExamineResult::getExamineId, examine.getId()); ExamineResult result = service.getOne(wrapper); if (result != null) { result.setOriginRecordData(JSON.toJSONString(map)); @@ -968,7 +968,7 @@ public class ExamineResultController extends BladeController { service.updateById(result); } else { ExamineResult examineResult = new ExamineResult(); - examineResult.setExamineId(Long.valueOf(examineId)); + examineResult.setExamineId(Long.valueOf(examine.getId())); examineResult.setOriginRecordData(JSON.toJSONString(map)); examineResult.setOriginRecordResult(JSON.toJSONString(map1)); examineResult.setExamineDataArr(JSON.toJSONString(list)); @@ -1339,7 +1339,7 @@ public class ExamineResultController extends BladeController { map1.put("g" + (i + 1), mapList); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ExamineResult::getExamineId, examineId); + wrapper.eq(ExamineResult::getExamineId, examine.getId()); ExamineResult result = service.getOne(wrapper); if (result != null) { result.setOriginRecordData(JSON.toJSONString(map)); @@ -1348,7 +1348,7 @@ public class ExamineResultController extends BladeController { service.updateById(result); } else { ExamineResult examineResult = new ExamineResult(); - examineResult.setExamineId(Long.valueOf(examineId)); + examineResult.setExamineId(Long.valueOf(examine.getId())); examineResult.setOriginRecordData(JSON.toJSONString(map)); examineResult.setOriginRecordResult(JSON.toJSONString(map1)); examineResult.setExamineDataArr(JSON.toJSONString(list)); @@ -1356,7 +1356,6 @@ public class ExamineResultController extends BladeController { } return R.data(map1); } - } /** @@ -1543,7 +1542,6 @@ public class ExamineResultController extends BladeController { } } - /** * 删除 */ diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java index b96a25f..e919b99 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/LargeScreenController.java @@ -1,9 +1,13 @@ package org.springblade.lims.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import lombok.AllArgsConstructor; +import org.openxmlformats.schemas.drawingml.x2006.chart.STErrBarType; import org.springblade.core.boot.ctrl.BladeController; +import org.springblade.core.mp.support.Condition; +import org.springblade.core.mp.support.Query; import org.springblade.core.tool.api.R; import org.springblade.lims.entry.*; import org.springblade.lims.service.*; @@ -16,7 +20,6 @@ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; - /** * @author swj * @since 2022年6月1日19:49:10 @@ -475,7 +478,7 @@ public class LargeScreenController extends BladeController { * 仪器使用次数统计 */ @GetMapping("/instrument") - public R> instrument() { + public R> instrument(Query query) { Map map = new HashMap<>(); // 仪器设备运行中数量 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -498,25 +501,40 @@ public class LargeScreenController extends BladeController { // 仪器设备使用记录 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByDesc(InstrumentUseLog::getCreateTime); - List useLogs = instrumentUseLogService.list(queryWrapper); - if (useLogs.size() > 0 && useLogs.size() < 4) { - map.put("useLogs", useLogs); - } else { - List useLogList = new ArrayList<>(); - for (int i = 0; i < 3; i++) { - useLogList.add(useLogs.get(i)); - } - map.put("useLogs", useLogList); - } + IPage page = instrumentUseLogService.page(Condition.getPage(query), queryWrapper); + map.put("page", page); return R.data(map); } /** - * 定时往前端选择性推送 + * 仪器设备维修情况 */ - @GetMapping("/message") - public void message() { - + @GetMapping("/maintenance") + public R> maintenance(Query query) { + Map map = new HashMap<>(); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 待审核 + wrapper.eq(RepairApplication::getStatus, 0).or() + .eq(RepairApplication::getStatus, 1).or() + .eq(RepairApplication::getStatus, 2); + int dsh = repairApplicationService.count(wrapper); + wrapper.clear(); + // 维修中 + wrapper.eq(RepairApplication::getStatus, 3); + int wxz = repairApplicationService.count(wrapper); + wrapper.clear(); + // 已完成 + wrapper.eq(RepairApplication::getStatus, 4); + int ywc = repairApplicationService.count(wrapper); + wrapper.clear(); + // 分页数据 + wrapper.orderByDesc(RepairApplication::getCreateTime); + IPage page = repairApplicationService.page(Condition.getPage(query), wrapper); + map.put("dsh", dsh); + map.put("wxz", wxz); + map.put("ywc", ywc); + map.put("page", page); + return R.data(map); } } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/SimpleRelController.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/SimpleRelController.java index 89eaab5..2e3a877 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/SimpleRelController.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/controller/SimpleRelController.java @@ -25,7 +25,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; - /** * @author swj * @since 2022年6月1日19:49:10 @@ -67,7 +66,6 @@ public class SimpleRelController extends BladeController { String s = simpleRel.getExamineExperieNum().substring(0, 13); // 实验检测编号 for (SimpleRel rel : rels) { - String num = ""; for (Integer i = 0; i < rel.getExamineNum(); i++) { num += s + a + ","; diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java index 4723952..829b57c 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/EntrustServiceImpl.java @@ -219,7 +219,6 @@ public class EntrustServiceImpl extends BaseServiceImpl simpleRel.setEntrustId(id); } simpleRel.setSimpleName(name); - simpleRel.setReagentNum(1); // simpleRel.setReagentExperieNum(s + sum); // sum++; @@ -227,7 +226,6 @@ public class EntrustServiceImpl extends BaseServiceImpl simpleRel.setExamineNum(1); // simpleRel.setExamineExperieNum(s + (i + a)); simpleRel.setExamineExperieNum(s + ((a - 1) * 2 + i + 1)); - simpleRel.setRecessiveNum((i + a) + ""); simpleRel.setOriginalNum((i + a) + ""); simpleRel.setStatus(0); @@ -1051,7 +1049,7 @@ public class EntrustServiceImpl extends BaseServiceImpl } for (int i = 0; i < (list.size() / 96); i++) { - int start = i * 96 - 1; + int start = i * 96; if (i == 0) { start = 0; } @@ -1236,7 +1234,7 @@ public class EntrustServiceImpl extends BaseServiceImpl if (list.size() % 96 != 0) { for (int i = 0; i < (list.size() / 96 + 1); i++) { - int start = i * 96 - 1; + int start = i * 96; if (i == 0) { start = 0; } @@ -1335,7 +1333,7 @@ public class EntrustServiceImpl extends BaseServiceImpl } } else { for (int i = 0; i < (list.size() / 96); i++) { - int start = i * 96 - 1; + int start = i * 96; if (i == 0) { start = 0; } diff --git a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java index 514b07f..0bd1f90 100644 --- a/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java +++ b/lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/ExamineResultServiceImpl.java @@ -158,8 +158,7 @@ public class ExamineResultServiceImpl extends BaseServiceImpl imp simple1.setIsDistribution(0); resultList.add(simple1); } - simple.setStatus(1); } - simpleRelService.updateBatchById(rels); + this.saveBatch(resultList); } // 生成样品集编号 @@ -148,7 +144,6 @@ public class SimpleServiceImpl extends BaseServiceImpl imp simpleSet.setSimpleState(simple.getSimpleState()); simpleSet.setSamplingDate(new Date()); simpleSet.setIsDistribution(0); -// simpleSet.setStatus(0); simpleSetList.add(simpleSet); for (Simple simple1 : simples) { simple1.setSetId(simpleSet.getId()); @@ -159,11 +154,6 @@ public class SimpleServiceImpl extends BaseServiceImpl imp } catch (ParseException e) { e.printStackTrace(); } - this.saveBatch(resultList); - - // 发送提示消息 -// messageClient.event(SysTypeEnum.INFORM.getValue(), "计划书", -// "你有新的计划待分配,请及时查看", 1, 5, "1542330472226856962"); return R.data(simpleAo.getIsContinue()); } } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TeacherController.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TeacherController.java index 48d4f4e..7ad3530 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TeacherController.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TeacherController.java @@ -73,14 +73,9 @@ public class TeacherController extends BladeController { teacher.setDeptId(user.getDeptId()); teacher.setDeptName(sysClient.getDeptName(Long.valueOf(user.getDeptId())).getData()); teacher.setTrainCount(0); - // 讲师相关培训 - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(Train::getTeacher, teacher.getTeacherId()); - wrapper.orderByDesc(Train::getCreateTime); - List list = trainService.list(wrapper); - teacher.setRecentTrain(list.get(0).getName()); teacher.setEducation(user.getEducation()); teacher.setTel(user.getPhone()); + teacher.setPraise(0); return R.status(teacherService.save(teacher)); } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java index ea5a120..5483963 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainController.java @@ -7,20 +7,26 @@ import lombok.AllArgsConstructor; import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Query; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.BeanUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springblade.resource.enums.SysTypeEnum; +import org.springblade.system.entity.AuthClient; +import org.springblade.system.user.entity.Teacher; import org.springblade.system.user.entity.Train; import org.springblade.system.user.entity.TrainPerson; import org.springblade.system.user.entity.TrainSpeak; +import org.springblade.system.user.service.ITeacherService; import org.springblade.system.user.service.ITrainPersonService; import org.springblade.system.user.service.ITrainService; import org.springblade.system.user.service.ITrainSpeakService; import org.springblade.system.user.vo.TrainVO; import org.springframework.web.bind.annotation.*; +import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -36,6 +42,8 @@ public class TrainController extends BladeController { private final ITrainService trainService; + private final ITrainPersonService trainPersonService; + /** * 详情 */ @@ -58,17 +66,43 @@ public class TrainController extends BladeController { .like(Train::getPlace, train.getName()).or() .like(Train::getContent, train.getName()); } - // 添加根据培训计划编号模糊查询 -// if (StringUtil.isNoneBlank(train.getCode())) { -// wrapper.like(Train::getCode, train.getCode()); -// } - // 添加根据主讲人模糊查询 -// if (train.getTeacher() != null) { -// wrapper.eq(Train::getTeacher, train.getTeacher()); -// } wrapper.orderByDesc(Train::getCreateTime); - IPage page = trainService.page(Condition.getPage(query), wrapper); + List trains = page.getRecords(); + if (trains != null && trains.size() > 0) { + for (Train train1 : trains) { + long time = System.currentTimeMillis(); + long startTime = train1.getStartTime().getTime(); + long endTime = 1000 * 60 * 60 * train1.getDuration() + startTime; + if (time >= startTime && time <= endTime) { + train1.setStatus(1); + } + if (time > endTime) { + train1.setStatus(2); + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TrainPerson::getTrainId, train1.getId()); + queryWrapper.eq(TrainPerson::getPersonId, AuthUtil.getUserId()); + TrainPerson trainPerson = trainPersonService.getOne(queryWrapper); + if (trainPerson != null) { + if (trainPerson.getStatus() == 0) { + train1.setIsJoin(0); + train1.setIsEvaluate(0); + } else { + if (trainPerson.getIsEvaluate() == 0) { + train1.setIsEvaluate(0); + } else { + train1.setIsEvaluate(1); + } + train1.setIsJoin(1); + } + } else { + train1.setIsJoin(0); + train1.setIsEvaluate(0); + } + } + trainService.updateBatchById(trains); + } return R.data(page); } @@ -104,4 +138,12 @@ public class TrainController extends BladeController { trainService.messageNotice(train); } + /** + * 评价提交 + */ + @PostMapping("/evaluateSubmit") + public void evaluateSubmit(@RequestBody Train train) { + trainService.evaluateSubmit(train); + } + } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java index d9382a6..76395f1 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/controller/TrainPersonController.java @@ -11,9 +11,9 @@ import org.springblade.system.user.entity.Train; import org.springblade.system.user.entity.TrainPerson; import org.springblade.system.user.service.ITrainPersonService; import org.springblade.system.user.service.ITrainService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; /** * 计划参训人员关系表 控制器 @@ -41,4 +41,10 @@ public class TrainPersonController extends BladeController { wrapper.orderByDesc(TrainPerson::getCreateTime); return R.data(trainPersonService.page(Condition.getPage(query), wrapper)); } + + @PostMapping("/update") + public R update(@RequestBody TrainPerson trainPerson) { + trainPerson.setSignInTime(new Date()); + return R.status(trainPersonService.updateById(trainPerson)); + } } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITeacherService.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITeacherService.java index 9fd60d1..6c03877 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITeacherService.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITeacherService.java @@ -2,6 +2,7 @@ package org.springblade.system.user.service; import com.baomidou.mybatisplus.extension.service.IService; import org.springblade.system.user.entity.Teacher; +import org.springblade.system.user.entity.Train; import org.springblade.system.user.entity.TrainSpeak; /** diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainService.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainService.java index 9b2713b..c27c641 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainService.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/ITrainService.java @@ -18,4 +18,6 @@ public interface ITrainService extends BaseService { boolean delete(String ids); void messageNotice(Train train); + + void evaluateSubmit(Train train); } diff --git a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java index 351a07f..4eeea92 100644 --- a/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java +++ b/lab-service/lab-user/src/main/java/org/springblade/system/user/service/impl/TrainServiceImpl.java @@ -3,16 +3,16 @@ package org.springblade.system.user.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.AllArgsConstructor; import org.springblade.core.mp.base.BaseServiceImpl; +import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.utils.Func; import org.springblade.resource.enums.SysTypeEnum; import org.springblade.resource.feign.IMessageClient; -import org.springblade.system.user.entity.Train; -import org.springblade.system.user.entity.TrainPerson; -import org.springblade.system.user.entity.TrainSpeak; -import org.springblade.system.user.entity.User; +import org.springblade.system.feign.ISysClient; +import org.springblade.system.user.entity.*; import org.springblade.system.user.feign.IUserClient; import org.springblade.system.user.mapper.TrainMapper; +import org.springblade.system.user.service.ITeacherService; import org.springblade.system.user.service.ITrainPersonService; import org.springblade.system.user.service.ITrainService; import org.springblade.system.user.service.ITrainSpeakService; @@ -20,10 +20,12 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** * 培训计划服务实现类 + * * @author litao * @since 2022-06-10 */ @@ -39,13 +41,19 @@ public class TrainServiceImpl extends BaseServiceImpl implem private final IMessageClient messageClient; + private final ITeacherService teacherService; + + private final ISysClient sysClient; + @Override @Transactional(rollbackFor = Exception.class) public boolean saveTrain(Train train) { + User user1 = userClient.userInfoById(train.getTeacher()).getData(); + train.setTeacherName(user1.getName()); String[] split = train.getTrainPerson().split(","); train.setNum(split.length); train.setStatus(0); - + this.save(train); // 参训人员入库 if (train.getTrainPerson() != null && !"".equals(train.getTrainPerson())) { List personList = new ArrayList<>(); @@ -58,19 +66,21 @@ public class TrainServiceImpl extends BaseServiceImpl implem trainPerson.setPersonId(Long.parseLong(s)); trainPerson.setPersonName(user.getName()); trainPerson.setDeptId(Long.parseLong(user.getDeptId())); + String deptName = sysClient.getDeptName(Long.parseLong(user.getDeptId())).getData(); + trainPerson.setDeptName(deptName); trainPerson.setTel(user.getPhone()); trainPerson.setStatus(0); + trainPerson.setIsEvaluate(0); + trainPerson.setCreateTime(new Date()); personList.add(trainPerson); messageClient.event(SysTypeEnum.INFORM.getValue(), "培训会议", - "您有新的培训会议待参加,请及时查看详情", 1, 5, s,"/train/project"); + "您有新的培训会议待参加,请及时查看详情", 1, 5, s, "/train/project"); } trainPersonService.saveBatch(personList); } // 讲师入库 if (train.getTeacher() != null) { - User user1 = userClient.userInfoById(train.getTeacher()).getData(); - train.setTeacherName(user1.getName()); TrainSpeak trainSpeak = new TrainSpeak(); trainSpeak.setTrainId(train.getId()); trainSpeak.setTrainName(train.getName()); @@ -78,13 +88,28 @@ public class TrainServiceImpl extends BaseServiceImpl implem trainSpeak.setSpeakName(user1.getName()); trainSpeak.setDeptId(Long.parseLong(user1.getDeptId())); trainSpeak.setTel(user1.getPhone()); + trainSpeak.setStatus(0); + trainSpeak.setCreateTime(new Date()); trainSpeakService.save(trainSpeak); messageClient.event(SysTypeEnum.INFORM.getValue(), "培训会议", - "您有新的培训会议待参加,请及时查看详情", 1, 5, train.getTeacher().toString(),"/train/project"); + "您有新的培训会议待参加,请及时查看详情", 1, 5, train.getTeacher().toString(), "/train/project"); } // 讲师培训次数 - return this.save(train); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Teacher::getTeacherId, train.getTeacher()); + Teacher teacher = teacherService.getOne(wrapper); + Integer count = teacher.getTrainCount(); + teacher.setTrainCount(count + 1); + // 讲师相关培训 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Train::getTeacher, teacher.getTeacherId()); + queryWrapper.orderByDesc(Train::getCreateTime); + List list = this.list(queryWrapper); + if (list != null && list.size() > 0) { + teacher.setRecentTrain(list.get(0).getName()); + } + return teacherService.updateById(teacher); } @Override @@ -154,7 +179,7 @@ public class TrainServiceImpl extends BaseServiceImpl implem Train byId = this.getById(train.getId()); // 通知主讲人 messageClient.event(SysTypeEnum.INFORM.getValue(), "培训会议", - "您有培训会议待参加,请及时查看详情", 1, 5, byId.getTeacher().toString(),"/train/project"); + "您有培训会议待参加,请及时查看详情", 1, 5, byId.getTeacher().toString(), "/train/project"); // 通知参训人员 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); @@ -163,8 +188,29 @@ public class TrainServiceImpl extends BaseServiceImpl implem if (personList != null && personList.size() > 0) { for (TrainPerson trainPerson : personList) { messageClient.event(SysTypeEnum.INFORM.getValue(), "培训会议", - "您有培训会议待参加,请及时查看详情", 1, 5, trainPerson.getPersonId().toString(),"/train/project"); + "您有培训会议待参加,请及时查看详情", 1, 5, trainPerson.getPersonId().toString(), "/train/project"); } } } + + @Override + public void evaluateSubmit(Train train) { + Train byId = this.getById(train.getId()); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TrainPerson::getTrainId, train.getId()); + wrapper.eq(TrainPerson::getPersonId, AuthUtil.getUserId()); + TrainPerson trainPerson = trainPersonService.getOne(wrapper); + if (trainPerson != null) { + trainPerson.setIsEvaluate(1); + trainPerson.setEvaluateScore(train.getEvaluateScore()); + trainPersonService.updateById(trainPerson); + // 讲师加分入库 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Teacher::getTeacherId, byId.getTeacher()); + Teacher teacher = teacherService.getOne(queryWrapper); + Integer praise = teacher.getPraise(); + teacher.setPraise(praise + train.getEvaluateScore()); + teacherService.updateById(teacher); + } + } } diff --git a/pom.xml b/pom.xml index 7e23dbb..62007fb 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,6 @@ lab-plugin lab-plugin-api lab-service - lab-service-api