This commit is contained in:
cwchen 2024-07-24 20:48:30 +08:00
parent 0c11f0b931
commit 1ae03b6b81
8 changed files with 126 additions and 27 deletions

View File

@ -3,6 +3,7 @@ package com.bonus.aqgqj.basis.controller;
import com.bonus.aqgqj.annotation.DecryptAndVerify;
import com.bonus.aqgqj.annotation.LogAnnotation;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto;
import com.bonus.aqgqj.basis.entity.vo.AuditHistoryVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo;
import com.bonus.aqgqj.basis.service.ExamineService;
@ -53,4 +54,12 @@ public class ExamineController {
PageInfo<ExperimentalDetailVo> pageInfo = new PageInfo<>(list);
return ServerResponse.createSuccessPage(pageInfo, data.getData().getPage(), data.getData().getLimit());
}
@PostMapping(value = "checkData")
@DecryptAndVerify(decryptedClass = AuditHistoryVo.class)//加解密统一管理
// @PreAuthorize("@pms.hasPermission('sys:examine:checkData')" )
@LogAnnotation(operModul = "审查管理", operation = "试验审查", operDesc = "系统级事件", operType = "审查")
public ServerResponse checkData(EncryptedReq<AuditHistoryVo> dto) {
return service.checkData(dto.getData());
}
}

View File

@ -20,6 +20,11 @@ public class ParamsDto extends PageEntity {
*/
private Long id;
/**
* 收样ID
*/
private Long sampleId;
/**
* 设备类型
*/

View File

@ -0,0 +1,46 @@
package com.bonus.aqgqj.basis.entity.vo;
import com.bonus.aqgqj.utils.UserUtil;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @className:AuditHistoryVo
* @author:cwchen
* @date:2024-07-24-19:58
* @version:1.0
* @description:审核-vo
*/
@Data
public class AuditHistoryVo {
/**审核ID*/
private Long id;
/**收样ID*/
@NotNull(message = "收样ID不能为空", groups = {Query.class})
private Long sampleId;
/**试验信息表id*/
private Long[] experId;
/**审核时间*/
private Date auditTime = new Date();
/**审核人*/
private Long auditUserId = UserUtil.getLoginUser() !=null ? UserUtil.getLoginUser().getId() : -10L;
/**审核人名称*/
private String auditUserName = UserUtil.getLoginUser() !=null ? UserUtil.getLoginUser().getUsername() : null;
/**审核结果 2 不通过 1通过*/
@NotNull(message = "审核结果不能为空", groups = {Query.class})
private Integer auditStatus;
/**审核备注*/
@Length(max = 256, message = "备注字符长度不能超过256", groups = {Query.class})
private String auditRemark;
/**审核类型 1 审阅 2 审核 3 审批*/
@NotNull(message = "审批类型不能为空", groups = {Query.class})
private Integer auditType;
public interface Query {
}
}

View File

@ -1,8 +1,10 @@
package com.bonus.aqgqj.basis.service;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto;
import com.bonus.aqgqj.basis.entity.vo.AuditHistoryVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo;
import com.bonus.aqgqj.utils.ServerResponse;
import java.util.List;
@ -26,10 +28,20 @@ public interface ExamineService {
/**
* 审查详情列表
*
* @param data
* @return List<ExperimentalDetailVo>
* @author cwchen
* @date 2024/7/23 17:57
*/
List<ExperimentalDetailVo> getDetailList(ParamsDto data);
/**
* 试验-审查
* @param vo
* @return ServerResponse
* @author cwchen
* @date 2024/7/24 19:39
*/
ServerResponse checkData(AuditHistoryVo vo);
}

View File

@ -1,17 +1,27 @@
package com.bonus.aqgqj.basis.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.bonus.aqgqj.advice.ValidatorsUtils;
import com.bonus.aqgqj.basis.dao.ExamineMapper;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto;
import com.bonus.aqgqj.basis.entity.vo.AuditHistoryVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo;
import com.bonus.aqgqj.basis.entity.vo.TestVo;
import com.bonus.aqgqj.basis.service.ExamineService;
import com.bonus.aqgqj.utils.ServerResponse;
import com.bonus.aqgqj.utils.SystemUtils;
import com.bonus.aqgqj.webResult.HttpStatus;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@ -28,6 +38,9 @@ public class ExamineServiceImpl implements ExamineService {
@Resource(name = "ExamineMapper")
private ExamineMapper mapper;
@Resource(name = "ValidatorsUtils")
private ValidatorsUtils validatorsUtils;
@Override
public List<ExperimentalVo> getList(ParamsDto dto) {
@ -67,4 +80,20 @@ public class ExamineServiceImpl implements ExamineService {
}
return list;
}
@Override
@Transactional(rollbackFor = Exception.class)
public ServerResponse checkData(AuditHistoryVo vo) {
try {
String validResult = validatorsUtils.valid(vo, AuditHistoryVo.Query.class);
if (StringUtils.isNotBlank(validResult)) {
return ServerResponse.createByErrorMsg(HttpStatus.ERROR, validResult);
}
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "操作失败");
}
return ServerResponse.createBySuccessMsg("操作成功");
}
}

View File

@ -1,5 +1,5 @@
let form, layer, table, tableIns, laydate;
let pageNum = 1, limitSize = 1; // 默认第一页分页数量为10
let pageNum = 1, limitSize = 10; // 默认第一页分页数量为10
let deviceTypeList = [];
let idParam = null, statusParam = null;
let temp_table_list = []; // 临时保存每页的所有数据
@ -58,7 +58,7 @@ function laypages(total, page, limit) {
count: total,
curr: page,
limit: limit,
limits: [1, 20, 50, 100, 200, 500],
limits: [10, 20, 50, 100, 200, 500],
layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
groups: 5,
jump: function (obj, first) {
@ -113,9 +113,10 @@ function initTable(dataList, limit, page) {
title: "操作", unresize: true, width: 180, align: "center",
templet: function (d) {
let html = '';
html += "<a title='通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "',1)\">通过</a>";
html += "<a style='margin: 0 0 0 10px' title='不通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "',2)\">不通过</a>";
// html += setButtonName(d.id, d.roleCode, d.status);
if(checkNameArr.indexOf(d.status) > -1){
html += "<a title='通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "','" + d.status + "',1)\">通过</a>";
html += "<a style='margin: 0 0 0 10px' title='不通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "','" + d.status + "',2)\">不通过</a>";
}
return html;
}
},
@ -133,6 +134,7 @@ function initTable(dataList, limit, page) {
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').attr('disabled','disabled');
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().removeClass("layui-form-checked");
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().addClass("layui-disabled");
$('.layui-table tr[data-index=' + index + '] input[type="checkbox"]').next().find('i').css("background-color",'#c7c5c5');
}
})
temp_table_list.forEach(function (o, i) {
@ -221,7 +223,7 @@ function getReqParams(page, limit, type) {
} else {
obj = {
page: '1',
limit: '1',
limit: '10',
keyWord: '',
accessType: '',
startTime: '',
@ -251,6 +253,7 @@ function query() {
}
function reloadData() {
temp_all_list.splice(0, temp_all_list.length);
pages(pageNum, limitSize);
}
@ -265,27 +268,28 @@ function viewData(experId, devTypeCode) {
}
/**/
function passData(experId, sampleId, type) {
function passData(experId, sampleId,status, type) {
let title = type === 1 ? '通过确认' : '驳回确认';
let param = {
'experId': experId,
'sampleId': sampleId,
'type': type
'type': type,
'auditType':checkNameArr.indexOf(status) + 1
}
openIframe3("passData", title, "passDataForm.html", '600px', '325px', param);
}
/*1.批量通过 2.批量不通过*/
function batchAudit(type) {
// const tableStatus = table.checkStatus('testData');
const size = temp_all_list.length
if (size === 0) {
return layer.msg('未选择数据', {icon: 7});
}
let experIdArr = [], sampleId = null;
let experIdArr = [], sampleId = null,auditType = 1;
$.each(temp_all_list, function (index, item) {
if (index === 0) {
sampleId = item.sampleId;
status =item.status;
}
experIdArr.push(item.experId)
})
@ -295,7 +299,7 @@ function batchAudit(type) {
move: false
}, function () {
layer.close(index);
passData(experIdArr, sampleId, type);
passData(experIdArr.toString(), sampleId,status, type);
})
}

View File

@ -1,8 +1,9 @@
let form, layer, experIdParam,sampleIdParam,typeParam;
let form, layer, experIdParam,sampleIdParam,typeParam,auditTypeParam;
function setParams(params) {
experIdParam = JSON.parse(params).experId;
sampleIdParam = JSON.parse(params).sampleId;
typeParam = JSON.parse(params).type;
auditTypeParam = JSON.parse(params).auditType;
if(typeParam === 2) {
$('#auditRemakr').attr('lay-verify', 'required');
$('#labelTitle').html('<i style="padding: 0 10px;">*</i>备注');
@ -12,23 +13,11 @@ function setParams(params) {
form = layui.form;
form.render();
form.on('submit(formData)', function (data) {
// saveData(data);
saveData(data);
});
});
}
// 设置表单内容
function setFormData(data) {
if (data) {
$('#id').val(data.lockNumber)
$('#lockNumber').val(data.lockNumber).attr('readonly', 'readonly').css('backgroundColor', '#eee')
$('#lockName').val(data.lockName)
lockNumberParam = data.lockNumber;
lockNameParam = data.lockName;
layui.form.render();
}
}
function saveData2() {
$('#formSubmit').trigger('click')
}
@ -36,8 +25,13 @@ function saveData2() {
// 保存数据
function saveData(data) {
let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0});
let url = lockNumberParam ? dataUrl + "/sys/doorLock/addDoorLock" : dataUrl + "/sys/doorLock/updateDoorLock";
let url = dataUrl + "/examine/checkData";
let obj = data.field;
obj.experId = experIdParam.split(",");
obj.sampleId = parseInt(sampleIdParam);
obj.auditStatus = typeParam;
obj.auditType = auditTypeParam;
console.log(obj)
let params = {
encryptedData: encryptCBC(JSON.stringify(obj))
}

View File

@ -18,7 +18,7 @@
<div class="layui-form-item" style="margin-top: 4%;">
<label class="layui-form-label" style="width: 80px;" id="labelTitle">备注</label>
<div class="layui-input-inline" style="width: 340px;">
<textarea class="layui-textarea" id="auditRemakr" name="auditRemakr" autocomplete="off"
<textarea class="layui-textarea" id="auditRemark" name="auditRemark" autocomplete="off"
maxlength="256"></textarea>
</div>
</div>