Merge remote-tracking branch 'origin/master'

This commit is contained in:
lSun 2024-07-24 21:28:24 +08:00
commit 80c4e804aa
10 changed files with 152 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.DecryptAndVerify;
import com.bonus.aqgqj.annotation.LogAnnotation; import com.bonus.aqgqj.annotation.LogAnnotation;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto; 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.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo; import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo;
import com.bonus.aqgqj.basis.service.ExamineService; import com.bonus.aqgqj.basis.service.ExamineService;
@ -53,4 +54,12 @@ public class ExamineController {
PageInfo<ExperimentalDetailVo> pageInfo = new PageInfo<>(list); PageInfo<ExperimentalDetailVo> pageInfo = new PageInfo<>(list);
return ServerResponse.createSuccessPage(pageInfo, data.getData().getPage(), data.getData().getLimit()); 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

@ -1,6 +1,7 @@
package com.bonus.aqgqj.basis.dao; package com.bonus.aqgqj.basis.dao;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto; 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.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo; import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo;
import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.MapKey;
@ -40,6 +41,7 @@ public interface ExamineMapper {
/** /**
* 查询试验设备数量 * 查询试验设备数量
*
* @param experId * @param experId
* @return List<Map < String, String>> * @return List<Map < String, String>>
* @author cwchen * @author cwchen
@ -47,4 +49,13 @@ public interface ExamineMapper {
*/ */
@MapKey("id") @MapKey("id")
List<Map<String, String>> getExperDevItemsNum(Long experId); List<Map<String, String>> getExperDevItemsNum(Long experId);
/**
* 添加审核数据
* @param vo
* @return void
* @author cwchen
* @date 2024/7/24 20:49
*/
void checkData(AuditHistoryVo vo);
} }

View File

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

View File

@ -0,0 +1,48 @@
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[] experIds;
/**审核时间*/
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;
private Long experId;
public interface Query {
}
}

View File

@ -1,8 +1,10 @@
package com.bonus.aqgqj.basis.service; package com.bonus.aqgqj.basis.service;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto; 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.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo; import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo;
import com.bonus.aqgqj.utils.ServerResponse;
import java.util.List; import java.util.List;
@ -26,10 +28,20 @@ public interface ExamineService {
/** /**
* 审查详情列表 * 审查详情列表
*
* @param data * @param data
* @return List<ExperimentalDetailVo> * @return List<ExperimentalDetailVo>
* @author cwchen * @author cwchen
* @date 2024/7/23 17:57 * @date 2024/7/23 17:57
*/ */
List<ExperimentalDetailVo> getDetailList(ParamsDto data); 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; package com.bonus.aqgqj.basis.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.bonus.aqgqj.advice.ValidatorsUtils;
import com.bonus.aqgqj.basis.dao.ExamineMapper; import com.bonus.aqgqj.basis.dao.ExamineMapper;
import com.bonus.aqgqj.basis.entity.dto.ParamsDto; 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.ExperimentalDetailVo;
import com.bonus.aqgqj.basis.entity.vo.ExperimentalVo; 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.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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -28,6 +38,9 @@ public class ExamineServiceImpl implements ExamineService {
@Resource(name = "ExamineMapper") @Resource(name = "ExamineMapper")
private ExamineMapper mapper; private ExamineMapper mapper;
@Resource(name = "ValidatorsUtils")
private ValidatorsUtils validatorsUtils;
@Override @Override
public List<ExperimentalVo> getList(ParamsDto dto) { public List<ExperimentalVo> getList(ParamsDto dto) {
@ -67,4 +80,28 @@ public class ExamineServiceImpl implements ExamineService {
} }
return list; return list;
} }
@Override
@Transactional(rollbackFor = Exception.class)
public ServerResponse checkData(AuditHistoryVo vo) {
try {
if(vo.getExperIds() == null || vo.getExperIds().length == 0){
return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "参数不完整");
}
String validResult = validatorsUtils.valid(vo, AuditHistoryVo.Query.class);
if (StringUtils.isNotBlank(validResult)) {
return ServerResponse.createByErrorMsg(HttpStatus.ERROR, validResult);
}
for (Long experId : vo.getExperIds()) {
vo.setExperId(experId);
mapper.checkData(vo);
}
} catch (Exception e) {
log.error(e.toString(), e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ServerResponse.createByErrorMsg(HttpStatus.ERROR, "操作失败");
}
return ServerResponse.createBySuccessMsg("操作成功");
}
} }

View File

@ -2,6 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.bonus.aqgqj.basis.dao.ExamineMapper"> <mapper namespace="com.bonus.aqgqj.basis.dao.ExamineMapper">
<!--添加审核数据-->
<insert id="checkData">
INSERT INTO tb_audit_history(id,exper_id,audit_time,audit_user_id,audit_user_name,audit_status,audit_remark,audit_type) VALUES
(null,#{experId},#{auditTime},#{auditUserId},#{auditUserName},#{auditStatus},#{auditRemark},#{auditType})
</insert>
<!--试验审查列表--> <!--试验审查列表-->
<select id="getList" resultType="com.bonus.aqgqj.basis.entity.vo.ExperimentalVo"> <select id="getList" resultType="com.bonus.aqgqj.basis.entity.vo.ExperimentalVo">

View File

@ -1,5 +1,5 @@
let form, layer, table, tableIns, laydate; let form, layer, table, tableIns, laydate;
let pageNum = 1, limitSize = 1; // 默认第一页分页数量为10 let pageNum = 1, limitSize = 10; // 默认第一页分页数量为10
let deviceTypeList = []; let deviceTypeList = [];
let idParam = null, statusParam = null; let idParam = null, statusParam = null;
let temp_table_list = []; // 临时保存每页的所有数据 let temp_table_list = []; // 临时保存每页的所有数据
@ -58,7 +58,7 @@ function laypages(total, page, limit) {
count: total, count: total,
curr: page, curr: page,
limit: limit, limit: limit,
limits: [1, 20, 50, 100, 200, 500], limits: [10, 20, 50, 100, 200, 500],
layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'], layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
groups: 5, groups: 5,
jump: function (obj, first) { jump: function (obj, first) {
@ -113,9 +113,10 @@ function initTable(dataList, limit, page) {
title: "操作", unresize: true, width: 180, align: "center", title: "操作", unresize: true, width: 180, align: "center",
templet: function (d) { templet: function (d) {
let html = ''; let html = '';
html += "<a title='通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "',1)\">通过</a>"; if(checkNameArr.indexOf(d.status) > -1){
html += "<a style='margin: 0 0 0 10px' title='不通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "',2)\">不通过</a>"; html += "<a title='通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "','" + d.status + "',1)\">通过</a>";
// html += setButtonName(d.id, d.roleCode, d.status); html += "<a style='margin: 0 0 0 10px' title='不通过' onclick=\"passData('" + d.experId + "','" + d.sampleId + "','" + d.status + "',2)\">不通过</a>";
}
return html; 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"]').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().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().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) { temp_table_list.forEach(function (o, i) {
@ -221,7 +223,7 @@ function getReqParams(page, limit, type) {
} else { } else {
obj = { obj = {
page: '1', page: '1',
limit: '1', limit: '10',
keyWord: '', keyWord: '',
accessType: '', accessType: '',
startTime: '', startTime: '',
@ -251,6 +253,7 @@ function query() {
} }
function reloadData() { function reloadData() {
temp_all_list.splice(0, temp_all_list.length);
pages(pageNum, limitSize); 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 title = type === 1 ? '通过确认' : '驳回确认';
let param = { let param = {
'experId': experId, 'experId': experId,
'sampleId': sampleId, 'sampleId': sampleId,
'type': type 'type': type,
'auditType':checkNameArr.indexOf(status) + 1
} }
openIframe3("passData", title, "passDataForm.html", '600px', '325px', param); openIframe3("passData", title, "passDataForm.html", '600px', '325px', param);
} }
/*1.批量通过 2.批量不通过*/ /*1.批量通过 2.批量不通过*/
function batchAudit(type) { function batchAudit(type) {
// const tableStatus = table.checkStatus('testData');
const size = temp_all_list.length const size = temp_all_list.length
if (size === 0) { if (size === 0) {
return layer.msg('未选择数据', {icon: 7}); return layer.msg('未选择数据', {icon: 7});
} }
let experIdArr = [], sampleId = null; let experIdArr = [], sampleId = null,auditType = 1;
$.each(temp_all_list, function (index, item) { $.each(temp_all_list, function (index, item) {
if (index === 0) { if (index === 0) {
sampleId = item.sampleId; sampleId = item.sampleId;
status =item.status;
} }
experIdArr.push(item.experId) experIdArr.push(item.experId)
}) })
@ -295,7 +299,7 @@ function batchAudit(type) {
move: false move: false
}, function () { }, function () {
layer.close(index); 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) { function setParams(params) {
experIdParam = JSON.parse(params).experId; experIdParam = JSON.parse(params).experId;
sampleIdParam = JSON.parse(params).sampleId; sampleIdParam = JSON.parse(params).sampleId;
typeParam = JSON.parse(params).type; typeParam = JSON.parse(params).type;
auditTypeParam = JSON.parse(params).auditType;
if(typeParam === 2) { if(typeParam === 2) {
$('#auditRemakr').attr('lay-verify', 'required'); $('#auditRemakr').attr('lay-verify', 'required');
$('#labelTitle').html('<i style="padding: 0 10px;">*</i>备注'); $('#labelTitle').html('<i style="padding: 0 10px;">*</i>备注');
@ -12,23 +13,11 @@ function setParams(params) {
form = layui.form; form = layui.form;
form.render(); form.render();
form.on('submit(formData)', function (data) { 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() { function saveData2() {
$('#formSubmit').trigger('click') $('#formSubmit').trigger('click')
} }
@ -36,8 +25,13 @@ function saveData2() {
// 保存数据 // 保存数据
function saveData(data) { function saveData(data) {
let loadingMsg = layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0}); 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; let obj = data.field;
obj.experIds = experIdParam.split(",");
obj.sampleId = parseInt(sampleIdParam);
obj.auditStatus = typeParam;
obj.auditType = auditTypeParam;
console.log(obj)
let params = { let params = {
encryptedData: encryptCBC(JSON.stringify(obj)) encryptedData: encryptCBC(JSON.stringify(obj))
} }

View File

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