Commit 7cac6acc by ghxdhr

Merge branch 'master' of git.patzn.com:wangweidong/patzn-cloud-service-hmhj

 Conflicts:
	src/main/java/com/patzn/cloud/service/lims/hmhj/service/IEntrustService.java
	src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/EntrustServiceImpl.java
parents 6769ef02 56276086
package com.patzn.cloud.service.lims.common;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.converters.DateConverter;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import java.beans.PropertyDescriptor;
import java.util.HashSet;
import java.util.Set;
public class BeanUtils {
public static String[] getNullPropertyNames(Object source) {
final BeanWrapper src = new BeanWrapperImpl(source);
PropertyDescriptor[] pds = src.getPropertyDescriptors();
Set<String> emptyNames = new HashSet<>();
for (PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue(pd.getName());
if (srcValue == null)
emptyNames.add(pd.getName());
}
String[] result = new String[emptyNames.size()];
return emptyNames.toArray(result);
}
public static void copyProperties(Object source, Object target) {
copyProperties(source, target, null);
}
public static void copyProperties(Object source, Object target, Boolean ignoreNull) {
ConvertUtils.register(new DateConverter(null), java.util.Date.class);
String[] ignoreArr = null != ignoreNull && ignoreNull.booleanValue() ? getNullPropertyNames(source) : null;
org.springframework.beans.BeanUtils.copyProperties(source, target, ignoreArr);
}
}
package com.patzn.cloud.service.lims.hmhj.common;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
public class LabreOfficeUtil {
private static final Logger logger = LoggerFactory.getLogger(LabreOfficeUtil.class);
public static void main(String[] args) {
convertOffice2PDF("D:/program/libreoffice",new File("D:/二氧化碳.xlsx"));
}
public static File inputStream2File (InputStream is) {
File file = null;
try {
file = File.createTempFile("original",".xlsx");
} catch (IOException e) {
e.printStackTrace();
}
OutputStream os = null;
try {
try {
os = new FileOutputStream(file);
int len = 0;
byte[] buffer = new byte[8192];
while ((len = is.read(buffer)) != -1) {
os.write(buffer, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} finally {
try {
if (null!=os)
os.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null!=is)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
public static synchronized File convertOffice2PDF(String url,File inputFile){
long start = System.currentTimeMillis();
boolean flag;
String parent= inputFile.getParent();
String pdfFile = parent+"/"+(inputFile.getName().replace(".xlsx",".pdf"));
// String osName = System.getProperty("os.name");
// if (osName.contains("Windows")) {
// }else {
// command = "libreoffice --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + pdfFile;
// }
String osName = System.getProperty("os.name");
String command="";
if(osName.contains("win")||osName.contains("Win")){
command = "cmd /c soffice --headless --invisible --convert-to pdf " + inputFile.getPath() + " --outdir " + parent;
flag = executeLibreOfficeCommand(command,url);
}else{
command = "libreoffice6.2 --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile.getPath() + " --outdir " + parent;
flag = executeLibreOfficeCommand(command);
}
long end = System.currentTimeMillis();
logger.debug("用时:{} ms", end - start);
if (true){
return new File(pdfFile);
}
return null;
}
public static synchronized File convertOfficeWord2PDF(String url,File inputFile){
long start = System.currentTimeMillis();
boolean flag;
String parent= inputFile.getParent();
String pdfFile = parent+"/"+(inputFile.getName().replace(".docx",".pdf"));
// String osName = System.getProperty("os.name");
// if (osName.contains("Windows")) {
// }else {
// command = "libreoffice --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile + " --outdir " + pdfFile;
// }
String osName = System.getProperty("os.name");
String command="";
if(osName.contains("win")||osName.contains("Win")){
command = "cmd /c soffice --headless --invisible --convert-to pdf " + inputFile.getPath() + " --outdir " + parent;
flag = executeLibreOfficeCommand(command,url);
}else{
command = "libreoffice6.2 --headless --invisible --convert-to pdf:writer_pdf_Export " + inputFile.getPath() + " --outdir " + parent;
flag = executeLibreOfficeCommand(command);
}
long end = System.currentTimeMillis();
logger.debug("用时:{} ms", end - start);
if (true){
return new File(pdfFile);
}
return null;
}
/**
* 执行command指令
* @param command
* @return
*/
public static boolean executeLibreOfficeCommand(String command,String url) {
logger.info("开始进行转化.......");
Process process;// Process可以控制该子进程的执行或获取该子进程的信息
try {
logger.debug("convertOffice2PDF cmd : {}", command);
process = Runtime.getRuntime().exec(command,null,new File(url+"/program"));// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
// 下面两个可以获取输入输出流
// InputStream errorStream = process.getErrorStream();
// InputStream inputStream = process.getInputStream();
} catch (IOException e) {
logger.error(" convertOffice2PDF {} error", command, e);
return false;
}
int exitStatus = 0;
try {
exitStatus = process.waitFor();// 等待子进程完成再往下执行,返回值是子线程执行完毕的返回值,返回0表示正常结束
// 第二种接受返回值的方法
int i = process.exitValue(); // 接收执行完毕的返回值
logger.debug("i----" + i);
} catch (InterruptedException e) {
logger.error("InterruptedException convertOffice2PDF {}", command, e);
return false;
}
if (exitStatus != 0) {
logger.error("convertOffice2PDF cmd exitStatus {}", exitStatus);
} else {
logger.debug("convertOffice2PDF cmd exitStatus {}", exitStatus);
}
process.destroy(); // 销毁子进程
logger.info("转化结束.......");
return true;
}
public static boolean executeLibreOfficeCommand(String command) {
logger.info("开始进行转化.......");
Process process;// Process可以控制该子进程的执行或获取该子进程的信息
try {
logger.debug("convertOffice2PDF cmd : {}", command);
process = Runtime.getRuntime().exec(command);// exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。
// 下面两个可以获取输入输出流
// InputStream errorStream = process.getErrorStream();
// InputStream inputStream = process.getInputStream();
} catch (IOException e) {
logger.error(" convertOffice2PDF {} error", command, e);
return false;
}
int exitStatus = 0;
try {
exitStatus = process.waitFor();// 等待子进程完成再往下执行,返回值是子线程执行完毕的返回值,返回0表示正常结束
// 第二种接受返回值的方法
int i = process.exitValue(); // 接收执行完毕的返回值
logger.debug("i----" + i);
} catch (InterruptedException e) {
logger.error("InterruptedException convertOffice2PDF {}", command, e);
return false;
}
if (exitStatus != 0) {
logger.error("convertOffice2PDF cmd exitStatus {}", exitStatus);
} else {
logger.debug("convertOffice2PDF cmd exitStatus {}", exitStatus);
}
process.destroy(); // 销毁子进程
logger.info("转化结束.......");
return true;
}
}
......@@ -584,4 +584,13 @@ public class ContractSampleController extends ServiceController {
return success(contractSampleService.passToSecondJudgeCheck(dto,getAccount()));
}
@ApiOperation("任务判定增加")
@PostMapping("/add_judgement_type")
public RestResult<Boolean> addJudgementType(@RequestParam("ids")Long[] ids, @RequestParam("judgement") String judgement) {
return success(contractSampleService.addJudgementType(ids,judgement,getAccount()));
}
}
......@@ -168,6 +168,32 @@ public class EntrustController extends ServiceController {
return success(entrustService.page(getPage(), entrust));
}
@ApiOperation("委托修改审批分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_change_approve")
public RestResult<Page<Entrust>> getPageChangeApprove(Entrust entrust) {
entrust.setApproveStatus(EntrustApproveStatusEnum.APPROVE);
return success(entrustService.page(getPage(), entrust));
}
@ApiOperation("委托修改审批历史分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_change_approve_his")
public RestResult<Page<Entrust>> getPageChangeApproveHis(Entrust entrust) {
return success(entrustService.pageChangeApproveHis(getPage(), entrust));
}
@ApiOperation("委托样品待制备分页列表")
@ApiImplicitParams({
......@@ -306,6 +332,18 @@ public class EntrustController extends ServiceController {
return success(entrustService.backFromCheck(ids, getAccount(), reason));
}
@ApiOperation("委托制备退回")
@PostMapping("/back_from_make")
public RestResult<Boolean> backFromMake(@RequestParam("ids") Long[] ids, @RequestParam("reason") String reason) {
return success(entrustService.backFromMake(ids, getAccount(), reason));
}
@ApiOperation("委托接收退回")
@PostMapping("/back_from_receive")
public RestResult<Boolean> backFromReceive(@RequestParam("ids") Long[] ids, @RequestParam("reason") String reason) {
return success(entrustService.backFromReceive(ids, getAccount(), reason));
}
@ApiOperation("提交至样品制备")
@PostMapping("/submit_to_make")
......@@ -320,6 +358,25 @@ public class EntrustController extends ServiceController {
return success(entrustService.registerSubmitToMake(ids, getAccount()));
}
@ApiOperation("提交修改审批申请")
@PostMapping("/submit_change_apply")
public RestResult<Boolean> submitChangeApply(@RequestParam("id") Long id, @RequestParam("approveId") Long approveId,
@RequestParam("reason") String reason) {
return success(entrustService.submitChangeApply(id, approveId, reason, getAccount()));
}
@ApiOperation("审批修改申请")
@PostMapping("/approve_submit_apply")
public RestResult<Boolean> approveSubmitApply(@RequestParam("id") Long id) {
return success(entrustService.approveSubmitApply(id, getAccount()));
}
@ApiOperation("驳回修改申请")
@PostMapping("/reject_submit_apply")
public RestResult<Boolean> rejectSubmitApply(@RequestParam("id") Long id, @RequestParam("reason") String reason) {
return success(entrustService.rejectSubmitApply(id, reason, getAccount()));
}
@ApiOperation("复制委托信息")
@PostMapping("/clone_entrust")
public RestResult<Boolean> clone(@RequestParam("ids") Long[] ids) {
......@@ -338,7 +395,7 @@ public class EntrustController extends ServiceController {
public RestResult<Page<EntrustVO>> getPageEntrustSampleReceive(EntrustVO entrust) {
entrust.setPrepareStatus(EntrustSamplePrepareStatusEnum.RECEIVE);
// 设置用户编组
//entrust.setGroupNameList(userInfoService.getCurGroupNameList());
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustSampleReceive(getPage(), entrust));
}
......@@ -370,7 +427,7 @@ public class EntrustController extends ServiceController {
public RestResult<Page<EntrustVO>> getPageTaskAllot(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.ALLOT);
// 获取当前用户分组
//entrust.setGroupNameList(userInfoService.getCurGroupNameList());
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItem(getPage(), entrust));
}
......
......@@ -81,7 +81,7 @@ public class EntrustSampleBackupController extends ServiceController {
public RestResult<Page<EntrustSampleBackupVO>> getPageManage(EntrustSampleBackupVO entrustSampleBackup) {
entrustSampleBackup.setStatus(EntrustSampleBackupStatusEnum.MANAGE_ING);
entrustSampleBackup.setType("YP");
return success(entrustSampleBackupService.pageVO(getPage(), entrustSampleBackup));
return success(entrustSampleBackupService.pageManage(getPage(), entrustSampleBackup));
}
@ApiOperation("样品管理历史分页列表")
......
......@@ -100,6 +100,58 @@ public class EntrustSampleController extends ServiceController {
return success(entrustSampleService.page(getPage(), entrustSample));
}
@ApiOperation("报告审核样品分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_report_check")
public RestResult<Page<EntrustSample>> getPageReportCheck(EntrustSample entrustSample) {
entrustSample.setStatus(EntrustSampleStatusEnum.REPORT_CHECK);
return success(entrustSampleService.page(getPage(), entrustSample));
}
@ApiOperation("报告签发样品分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_report_issue")
public RestResult<Page<EntrustSample>> getPageReportIssue(EntrustSample entrustSample) {
entrustSample.setStatus(EntrustSampleStatusEnum.REPORT_ISSUE);
return success(entrustSampleService.page(getPage(), entrustSample));
}
@ApiOperation("报告批准样品分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_report_allow")
public RestResult<Page<EntrustSample>> getPageReportAllow(EntrustSample entrustSample) {
entrustSample.setStatus(EntrustSampleStatusEnum.REPORT_ALLOW);
return success(entrustSampleService.page(getPage(), entrustSample));
}
@ApiOperation("报告发放样品分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataTypeClass = String.class),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
})
@PostMapping("/page_report_send")
public RestResult<Page<EntrustSample>> getPageReportSend(EntrustSample entrustSample) {
entrustSample.setStatus(EntrustSampleStatusEnum.REPORT_SEND);
return success(entrustSampleService.page(getPage(), entrustSample));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
......@@ -120,6 +172,12 @@ public class EntrustSampleController extends ServiceController {
return success(entrustSampleService.updateById(entrustSample));
}
@ApiOperation("根据 id 修改信息")
@PutMapping("/edit_sample")
public RestResult<Boolean> editSample(EntrustSample entrustSample,String source) {
return success(entrustSampleService.updateSample(entrustSample,source,getAccount()));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(EntrustSample entrustSample) {
......
......@@ -6,6 +6,8 @@ import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -582,4 +584,18 @@ public class EntrustSampleItemController extends ServiceController {
return success(entrustSampleItemService.updateQualityJudge(ids, getAccount()));
}
@ApiOperation(value = "分页列表", notes = "分页查询数据列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/page_group_user")
public RestResult<Page<LmsUserRelGroupVO>> getPageGroupUser(LmsUserRelGroup soilExperiment) {
return success(entrustSampleItemService.pageGroupUser(getPage(), soilExperiment));
}
}
package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 样品操作日志表 前端控制器
*
* @author meazty
* @since 2021-07-08
*/
@Api(tags = "样品操作日志表")
@RestController
@RequestMapping("/v1/entrust_sample_record")
public class EntrustSampleRecordController extends ServiceController {
@Autowired
private IEntrustSampleRecordService entrustSampleRecordService;
@ApiOperation("分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
})
@PostMapping("/page")
public RestResult<Page<EntrustSampleRecord>> getPage(EntrustSampleRecord entrustSampleRecord) {
return success(entrustSampleRecordService.page(getPage(), entrustSampleRecord));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<EntrustSampleRecord> get(@PathVariable("id") Long id) {
return success(entrustSampleRecordService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, EntrustSampleRecord entrustSampleRecord) {
entrustSampleRecord.setId(id);
return success(entrustSampleRecordService.updateById(entrustSampleRecord));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(EntrustSampleRecord entrustSampleRecord) {
return success(entrustSampleRecordService.save(entrustSampleRecord));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(entrustSampleRecordService.removeByIds(ids));
}
}
package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.service.hmhj.entity.OriginalRecordVersion;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalRecordVersionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.util.List;
/**
* ${table.comment} 前端控制器
*
* @author wwd
* @since 2021-07-08
*/
@Api(tags = "${table.comment}")
@RestController
@RequestMapping("/v1/record_version")
public class OriginalRecordVersionController extends ServiceController {
@Autowired
private IOriginalRecordVersionService originalRecordVersionService;
@ApiOperation("分页列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
})
@PostMapping("/page")
public RestResult<Page<OriginalRecordVersion>> getPage(OriginalRecordVersion originalRecordVersion) {
return success(originalRecordVersionService.page(getPage(), originalRecordVersion));
}
@ApiOperation("查询 id 信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@GetMapping("/{id}")
public RestResult<OriginalRecordVersion> get(@PathVariable("id") Long id) {
return success(originalRecordVersionService.getById(id));
}
@ApiOperation("根据 id 修改信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
})
@PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, OriginalRecordVersion originalRecordVersion) {
originalRecordVersion.setId(id);
return success(originalRecordVersionService.updateById(originalRecordVersion));
}
@ApiOperation("添加")
@PostMapping("/")
public RestResult<Boolean> add(OriginalRecordVersion originalRecordVersion) {
return success(originalRecordVersionService.save(originalRecordVersion));
}
@ApiOperation("根据 ids 删除")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
})
@DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(originalRecordVersionService.removeByIds(ids));
}
}
......@@ -20,4 +20,6 @@ import java.util.List;
public interface EntrustSampleBackupMapper extends BatchMapper<EntrustSampleBackup> {
List<EntrustSampleBackupVO> selectVOList(RowBounds rowBounds, @Param("vo") EntrustSampleBackupVO entrustSampleBackup);
List<EntrustSampleBackupVO> selectManageList(Page<EntrustSampleBackupVO> page, @Param("vo") EntrustSampleBackupVO entrustSampleBackup);
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
/**
* <p>
* 样品操作日志表 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-08
*/
public interface EntrustSampleRecordMapper extends BatchMapper<EntrustSampleRecord> {
}
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.entity.OriginalRecordVersion;
/**
* <p>
* Mapper 接口
* </p>
*
* @author wwd
* @since 2021-07-08
*/
public interface OriginalRecordVersionMapper extends BatchMapper<OriginalRecordVersion> {
}
......@@ -65,4 +65,6 @@ public interface IContractSampleService extends IBaseService<ContractSample> {
boolean backSecondJudgeCheck(Long[] ids, String reason, Account account);
boolean passToSecondJudgeCheck(ContractSampleVODTO dto, Account account);
boolean addJudgementType(Long[] ids, String judgement, Account account);
}
......@@ -25,4 +25,6 @@ public interface IEntrustSampleBackupService extends IBaseService<EntrustSampleB
Page<EntrustSampleBackupVO> pageVO(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup);
boolean submitToHandle(Long[] ids, Account account);
Page<EntrustSampleBackupVO> pageManage(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup);
}
......@@ -7,6 +7,8 @@ import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import java.util.List;
......@@ -69,4 +71,7 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
List<EntrustSampleItemVO> listMinStatusBySampleIds(List<Long> entrustIds);
public boolean isAllocatedByEntrustId(Long entrustId);
Page<LmsUserRelGroupVO> pageGroupUser(Page<LmsUserRelGroupVO> page, LmsUserRelGroup soilExperiment);
}
......@@ -28,4 +28,6 @@ public interface IEntrustSamplePrepareService extends IBaseService<EntrustSample
boolean submitSampleReceive(Long[] ids, Account account);
boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum);
boolean removeBySampleIds(Long[] sampleIds);
}
package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
import java.util.Collection;
import java.util.List;
/**
* 样品操作日志表 服务类
*
* @author meazty
* @since 2021-07-08
*/
public interface IEntrustSampleRecordService extends IBaseService<EntrustSampleRecord> {
Page<EntrustSampleRecord> page(Page<EntrustSampleRecord> page, EntrustSampleRecord entrustSampleRecord);
boolean removeByIds(List<Long> ids);
void record(Long[] ids, String from, String to, int type, Account account, String remark);
void record(Collection<Long> ids, String from, String to, int type, Account account, String remark);
}
......@@ -74,4 +74,10 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
boolean updateSamplePrevFlowInfo(Entrust entrust, EntrustFlowEnum prevFlowStatus, Account account);
boolean addStandardSampleDTO(EntrustSampleDTO dto, Account account);
List<EntrustSample> getByEntrustId(Long entrustId);
List<Long> getIdsByEntrustId(Long entrustId);
boolean updateSample(EntrustSample entrustSample, String source, Account account);
}
......@@ -80,5 +80,17 @@ public interface IEntrustService extends IBaseService<Entrust> {
boolean cloneEntrust(Long[] ids, Account account);
boolean backFromMake(Long[] ids, Account account, String reason);
boolean backFromReceive(Long[] ids, Account account, String reason);
boolean submitChangeApply(Long id, Long approveId, String reason, Account account);
Page<Entrust> pageChangeApproveHis(Page<Entrust> page, Entrust entrust);
boolean approveSubmitApply(Long id, Account account);
boolean rejectSubmitApply(Long id,String reason, Account account);
Boolean exportEntrust(List<Long> ids, HttpServletResponse response);
}
package com.patzn.cloud.service.lims.hmhj.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.entity.OriginalRecordVersion;
import java.util.List;
/**
* 服务类
*
* @author wwd
* @since 2021-07-08
*/
public interface IOriginalRecordVersionService extends IBaseService<OriginalRecordVersion> {
Page<OriginalRecordVersion> page(Page<OriginalRecordVersion> page, OriginalRecordVersion originalRecordVersion);
boolean removeByIds(List<Long> ids);
}
......@@ -379,5 +379,24 @@ public class ContractSampleServiceImpl extends BaseServiceImpl<ContractSampleMap
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean addJudgementType(Long[] ids, String judgement, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择数据!");
RestAssert.fail(StringUtils.isBlank(judgement),"请选择判定类型");
List<ContractSample> updateList = new ArrayList<>();
for (Long id : ids) {
ContractSample sample = new ContractSample();
sample.setId(id);
sample.setJudgmentType(judgement);
updateList.add(sample);
}
if (CollectionUtils.isNotEmpty(updateList)){
return updateBatchById(updateList);
}
return false;
}
}
......@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.Entrust;
......@@ -17,6 +18,7 @@ import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustReportStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustReportMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportRelSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportService;
......@@ -26,6 +28,7 @@ import com.patzn.cloud.service.lims.hmhj.service.IEntrustService;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
......@@ -33,10 +36,12 @@ import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
/**
......@@ -56,7 +61,11 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustService entrustService;
@Autowired
private Executor executor1;
@Value("${libreOffice.url}")
private String libreOfficeUrl;
@Override
public Page<EntrustReport> page(Page<EntrustReport> page, EntrustReport entrustReport) {
......@@ -143,9 +152,47 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
//转化PDF
executor1.execute(new Runnable() {
@Override
public void run() {
changeExcelReportToPdf(ids);
}
});
return super.update(report, Condition.create().in("id", ids));
}
private void changeExcelReportToPdf(Long[] ids) {
List<EntrustReport> reportList = list(Condition.create().in("id",ids).isNotNull("object_key"));
if (CollectionUtils.isEmpty(reportList)){
return;
}
List<File> deleteFileList = new ArrayList<>();
List<EntrustReport> updateReportList = new ArrayList<>();
for (EntrustReport report : reportList) {
InputStream io= ossClient.download(report.getObjectKey());
if (null == io)
continue;
File file = LabreOfficeUtil.inputStream2File(io);
File filePdf =LabreOfficeUtil.convertOffice2PDF(libreOfficeUrl,file);
deleteFileList.add(file);
deleteFileList.add(filePdf);
OssFileResult fileResult = ossClient.upload(filePdf);
EntrustReport u = new EntrustReport();
u.setPdfObjectKey(fileResult.getObjectKey());
u.setId(report.getId());
updateReportList.add(u);
}
if (CollectionUtils.isNotEmpty(updateReportList)){
updateBatchById(updateReportList);
}
FileUtils.deleteFiles(deleteFileList);
}
private Entrust getByReportId(Long reportId) {
EntrustReport report = getById(reportId);
if (null == report) {
......@@ -155,7 +202,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
}
private boolean executeSubmitOperation(Entrust entrust, Account account) {
if (null == entrust || StringUtils.isBlank(entrust.getStatusPath())) {
if (StringUtils.isBlank(entrust.getStatusPath())) {
logger.error("委托为空,或者委托路径为空不进行下一步操作");
return false;
}
......@@ -222,7 +269,10 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
Entrust entrust = getByReportId(ids[0]);
entrust.setTestTimeE(new Date());
entrustService.updateById(entrust);
executeSubmitOperation(entrust, account);
return super.update(report, Condition.create().in("id", ids));
}
......@@ -254,7 +304,12 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
}
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
Entrust entrust = getByReportId(ids[0]);
// 报告批准,获取当前时间为检测结束时间
entrust.setTestTimeE(new Date());
entrustService.updateById(entrust);
executeSubmitOperation(entrust, account);
return super.update(report, Condition.create().in("id", ids));
}
......
......@@ -64,4 +64,9 @@ public class EntrustSampleBackupServiceImpl extends BaseServiceImpl<EntrustSampl
return super.update(backup,Condition.create().in("id",ids));
}
@Override
public Page<EntrustSampleBackupVO> pageManage(Page<EntrustSampleBackupVO> page, EntrustSampleBackupVO entrustSampleBackup) {
return page.setRecords(baseMapper.selectManageList(page,entrustSampleBackup));
}
}
......@@ -8,16 +8,21 @@ import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.feign.lims.base.client.LmsUserRelGroupClient;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.lims.common.CompareUtils;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper;
import com.patzn.cloud.service.lims.hmhj.original.*;
import com.patzn.cloud.service.lims.hmhj.service.*;
......@@ -26,19 +31,18 @@ import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.*;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.Executor;
import java.util.stream.Collectors;
/**
......@@ -78,6 +82,11 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
@Autowired
private IItemDeviateService itemDeviateService;
@Autowired
private IItemRelOriginalRecordService itemRelOriginalRecordService;
@Autowired
private IGradingStandardService gradingStandardService;
......@@ -90,6 +99,17 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
@Autowired
private OssClient ossClient;
@Autowired
private Executor executor1;
@Autowired
private LmsUserRelGroupClient lmsUserRelGroupClient;
@Value("${libreOffice.url}")
private String libreOfficeUrl;
@Override
public Page<EntrustSampleItem> page(Page<EntrustSampleItem> page, EntrustSampleItem entrustSampleItem) {
String name = entrustSampleItem.getName();
......@@ -254,9 +274,62 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 添加委托日志
entrustRecordService.record(new Long[]{entrustId}, EntrustStatusEnum.TEST.getDisplay(), EntrustStatusEnum.TEST.getDisplay(), 0, account, "提交至报告编制");
//执行转PDF操作
executor1.execute(new Runnable() {
@Override
public void run() {
changeExcelToPdf(ids,list);
}
});
return true;
}
public void changeExcelToPdf(Long[] ids,List<EntrustSampleItem> list){
List<ItemRelOriginalRecord> recordList = itemRelOriginalRecordService.list(Condition.create().setSqlSelect("record_id").in("item_id",ids).isNotNull("record_id").groupBy("record_id"));
if (CollectionUtils.isEmpty(recordList))
return;
List<Long> recordsList= recordList.stream().map(r->{
return r.getRecordId();
}).collect(Collectors.toList());
List<OriginalRecord> originalRecordList = originalRecordService.list(Condition.create().in("id",recordList).isNull("pdf_object_key"));
if (CollectionUtils.isEmpty(originalRecordList))
return;
excelToPdf(originalRecordList);
}
private void excelToPdf(List<OriginalRecord> originalRecordList) {
List<OriginalRecord> updateList = new ArrayList<>();
List<File> deleteFileList = new ArrayList<>();
for (OriginalRecord record : originalRecordList) {
InputStream io = ossClient.download(record.getObjectKey());
File file = LabreOfficeUtil.inputStream2File(io);
File filePdf= LabreOfficeUtil.convertOffice2PDF(libreOfficeUrl,file);
OssFileResult fileResult = ossClient.upload(filePdf);
OriginalRecord u = new OriginalRecord();
u.setId(record.getId());
u.setPdfObjectKey(fileResult.getObjectKey());
updateList.add(u);
deleteFileList.add(file);
deleteFileList.add(filePdf);
}
if (CollectionUtils.isNotEmpty(updateList)){
originalRecordService.updateBatchById(updateList);
}
FileUtils.deleteFiles(deleteFileList);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitCheck(Long[] ids, Account account) {
......@@ -746,4 +819,40 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
private boolean isConfigureStatusPath(Entrust entrust){
return StringUtils.isBlank(entrust.getStatusPath()) ? false : true;
}
@Override
public Page<LmsUserRelGroupVO> pageGroupUser(Page<LmsUserRelGroupVO> page, LmsUserRelGroup userRelGroup) {
Page<LmsUserRelGroup> relGroupPage = lmsUserRelGroupClient.getPageUser(userRelGroup).serviceData();
List<LmsUserRelGroup> groupList = relGroupPage.getRecords();
if (CollectionUtils.isEmpty(groupList)){
return page;
}
List<Long> userIdsList = groupList.stream().map(r->{
return r.getUserId();
}).collect(Collectors.toList());
List<EntrustSampleItem> experimentList = super.list(Condition.create().in("tester_id",userIdsList).eq("status",EntrustSampleItemStatusEnum.TEST));
List<LmsUserRelGroupVO> groupVOS = new ArrayList<>();
for (LmsUserRelGroup group:groupList) {
LmsUserRelGroupVO vo = group.convert(LmsUserRelGroupVO.class);
int num = 0;
for (EntrustSampleItem experiment:experimentList) {
if (experiment.getTesterId().equals(group.getUserId())){
num++;
}
}
vo.setTotal(num);
groupVOS.add(vo);
}
page.setRecords(groupVOS);
page.setCurrent(relGroupPage.getCurrent());
page.setSize(relGroupPage.getSize());
page.setTotal(relGroupPage.getTotal());
return page;
}
}
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.*;
......@@ -64,6 +65,17 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public boolean removeBySampleIds(Long[] sampleIds) {
if(null == sampleIds || sampleIds.length == 0){
return false;
}
Account account = LoginHelper.getAccount();
EntrustSamplePrepare samplePrepare = new EntrustSamplePrepare();
samplePrepare.setDeleted(1).setLid(account.getUserId()).setLtime(new Date());
return update(samplePrepare,Condition.create().in("entrust_sample_id",sampleIds).eq("deleted",0));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean makeEnd(SamplePrepareDTO dto, Account account) {
......@@ -76,14 +88,32 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
List<Long> sampleIdsList = new ArrayList<>();
List<EntrustSampleBackup> saveBackupList = new ArrayList<>();
for (EntrustSampleVO vo : sampleVOList) {
EntrustSamplePrepare prepare = vo.convert(EntrustSamplePrepare.class);
prepare.setEntrustSampleId(vo.getEntrustSampleId());
prepare.setStatus(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setProgress(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setId(null);
savePrepare.add(prepare);
sampleIdsList.add(vo.getEntrustSampleId());
if ("送检样".equalsIgnoreCase(vo.getMakeType())){
EntrustSamplePrepare prepare = vo.convert(EntrustSamplePrepare.class);
prepare.setEntrustSampleId(vo.getEntrustSampleId());
prepare.setStatus(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setProgress(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setId(null);
savePrepare.add(prepare);
sampleIdsList.add(vo.getEntrustSampleId());
// 主要用来修改委托的复合型检测信息
EntrustSample entrustSample = vo.convert(EntrustSample.class);
entrustSampleService.updateById(entrustSample);
}else if ("备样".equalsIgnoreCase(vo.getMakeType())){
EntrustSampleBackup backup = new EntrustSampleBackup();
backup.setEntrustId(vo.getEntrustId());
backup.setSampleId(vo.getId());
backup.setStatus(EntrustSampleBackupStatusEnum.BACKUP_ING);
backup.setProgress(EntrustSampleBackupStatusEnum.BACKUP_ING);
backup.setReceiveTime(new Date());
// 添加类型,区分样品管理
// 类型:备样
backup.setType("BY");
saveBackupList.add(backup);
}
}
......@@ -98,11 +128,13 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
}).collect(Collectors.toList());
List<EntrustSampleBackup> saveBackupList = new ArrayList<>();
for (EntrustSample sample : sampleList) {
if (haveSampleIds.contains(sample.getId())) {
continue;
}
//由制备的时候选择备样
EntrustSampleBackup backup = new EntrustSampleBackup();
backup.setEntrustId(sample.getEntrustId());
backup.setSampleId(sample.getId());
......@@ -112,7 +144,12 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
// 添加类型,区分样品管理
// 类型:备样
backup.setType("BY");
saveBackupList.add(backup);
//由制备的时候选择备样
// saveBackupList.add(backup);
// 添加样品管理数据
EntrustSampleBackup manage = new EntrustSampleBackup();
BeanUtils.copyProperties(backup, manage);
......@@ -154,6 +191,7 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
Entrust updateEntrust = new Entrust();
updateEntrust.setStatus(EntrustStatusEnum.TEST);
updateEntrust.setProgress(EntrustStatusEnum.TEST);
updateEntrust.setFlowStatus(EntrustFlowEnum.RECEIVE.getName());
updateEntrust.setId(entrust.getId());
entrustService.updateById(updateEntrust);
// String remark = "提交至样品接收", title = "新的样品接收任务!";
......@@ -183,6 +221,12 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
sampleIdsList.add(prepare.getEntrustSampleId());
}
EntrustSample entrustSample = entrustSampleService.getById(prepareList.get(0).getEntrustSampleId());
Entrust entrust = entrustService.getById(entrustSample.getEntrustId());
if(null == entrust.getTestAddress()){
// entrust.setReceiveTime(new Date());
}
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
......@@ -214,10 +258,13 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
}
if (CollectionUtils.isEmpty(notOkSampleIds)) {
EntrustSample entrustSample = entrustSampleService.getById(prepareList.get(0).getEntrustSampleId());
Entrust entrust = entrustService.getById(entrustSample.getEntrustId());
// 检测开始时间为接收时间
entrust.setTestTimeS(new Date());
if (StringUtils.isNotEmpty(entrust.getStatusPath())) {
entrustService.submitToNextNode(entrust, account);
}else{
entrust.setFlowStatus(EntrustFlowEnum.TEST.getName());
entrustService.updateById(entrust);
}
}
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleRecord;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleRecordMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleRecordService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
/**
* 样品操作日志表 服务实现类
*
* @author meazty
* @since 2021-07-08
*/
@Service
public class EntrustSampleRecordServiceImpl extends BaseServiceImpl<EntrustSampleRecordMapper, EntrustSampleRecord> implements IEntrustSampleRecordService {
@Override
public Page<EntrustSampleRecord> page(Page<EntrustSampleRecord> page, EntrustSampleRecord entrustSampleRecord) {
Wrapper wrapper = new EntityWrapper<>(entrustSampleRecord);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
@Override
public void record(Long[] ids, String from, String to, int type, Account account, String remark) {
record(Arrays.asList(ids), from, to, type, account, remark);
}
@Override
public void record(Collection<Long> ids, String from, String to, int type, Account account, String remark) {
RestAssert.fail(CollectionUtils.isEmpty(ids), "样品ID不能为空");
List<EntrustSampleRecord> saveRecord = new ArrayList<>();
for (Long entrustId : ids) {
EntrustSampleRecord sampleRecord = new EntrustSampleRecord();
sampleRecord.setSampleId(entrustId);
sampleRecord.setOperator(account.getUserName());
sampleRecord.setOperatorId(account.getUserId());
sampleRecord.setOrigin(from);
sampleRecord.setTarget(to);
sampleRecord.setType(type);
sampleRecord.setRemark(remark);
saveRecord.add(sampleRecord);
}
if (CollectionUtils.isNotEmpty(saveRecord)) {
saveBatch(saveRecord);
}
}
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.feign.base.client.SysFileTemplateClient;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.service.base.entity.SysFileTemplate;
import com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO;
......@@ -18,16 +20,14 @@ import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.lims.common.BeanUtils;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleMapper;
import com.patzn.cloud.service.lims.hmhj.original.OriginalUtil;
import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.poibox.xwpf.PoiUtil2007;
import com.patzn.poibox.xwpf.XWPFTemplate;
import org.apache.commons.collections.ListUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.util.CellRangeAddress;
......@@ -38,9 +38,6 @@ import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
......@@ -48,7 +45,6 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
......@@ -63,6 +59,9 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Autowired
private SysFileTemplateClient sysFileTemplateClient;
@Autowired
private IEntrustSampleRecordService entrustSampleRecordService;
@Autowired
private IEntrustReportTemplateService entrustReportTemplateService;
......@@ -101,7 +100,6 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Override
public Page<EntrustSample> page(Page<EntrustSample> page, EntrustSample entrustSample) {
Wrapper wrapper = new EntityWrapper<>(entrustSample);
return this.page(page, wrapper);
}
......@@ -376,7 +374,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Override
public boolean updateSamplePrevFlowInfo(Entrust entrust, EntrustFlowEnum prevFlowStatus, Account account) {
EntrustStatusEnum statusEnum = entrust.getStatus();
List<EntrustSample> sampleList = list(Condition.create().eq("entrust_id", entrust.getId()).eq("deleted", 0));
List<EntrustSample> sampleList = getByEntrustId(entrust.getId());
RestAssert.fail(CollectionUtils.isEmpty(sampleList), String.format("编号为【%s】委托下样品为空", entrust.getCode()));
Long[] sampleIds = sampleList.stream().map(t -> t.getId()).toArray(size -> new Long[size]);
//
......@@ -433,12 +431,18 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
sampleStatus = EntrustSampleStatusEnum.REPORT_SEND;
}
if (statusEnum == EntrustStatusEnum.TEST && prevFlowStatus.getValue() < 5) {
entrustSamplePrepareService.removeBySampleIds(sampleIds);
}
if (null != sampleStatus) {
updateSample.setStatus(sampleStatus);
updateSample.setProgress(sampleStatus);
update(updateSample, Condition.create().eq("entrust_id", entrust.getId()));
}
if (null != itemStatus) {
updateItem.setStatus(itemStatus);
updateItem.setProgress(itemStatus);
entrustSampleItemService.update(updateItem, Condition.create().in("entrust_sample_id", sampleIds));
}
return false;
......@@ -480,6 +484,20 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
}
@Override
public List<EntrustSample> getByEntrustId(Long entrustId) {
return list(Condition.create().eq("entrust_id", entrustId).eq("deleted", 0));
}
@Override
public List<Long> getIdsByEntrustId(Long entrustId) {
List<EntrustSample> list = getByEntrustId(entrustId);
if (CollectionUtils.isEmpty(list)) {
return new ArrayList<>();
}
return list.stream().map(t -> t.getId()).collect(Collectors.toList());
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
......@@ -534,6 +552,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
sampleVO.setId(null);
sampleVO.setGroupId(g.getKey());
sampleVO.setGroupName(g.getValue());
sampleVO.setMakeType("送检样");
Set<String> itemNameSet = new HashSet<>();
for (EntrustSampleItem item : itemList) {
......@@ -545,6 +564,12 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
sampleVO.setEntrustSampleId(sample.getId());
list.add(sampleVO);
}
//备样
EntrustSampleVO sampleVO = sample.convert(EntrustSampleVO.class);
sampleVO.setMakeType("备样");
list.add(sampleVO);
}
return list;
}
......@@ -1104,7 +1129,39 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
cell.setText(StringHandleUtils.getFieldValueByFieldName(StringHandleUtils.getObjectFromMap(itemCellMap, k), object));
}
}
}
}
@Override
public boolean updateSample(EntrustSample entrustSample, String source, Account account) {
RestAssert.fail(StringUtils.isBlank(source), "来源节点不能为空");
EntrustFlowEnum flowStatus = EntrustFlowEnum.convert(source.toUpperCase());
EntrustSample sourceSample = getById(entrustSample.getId());
EntrustSample updateSample = new EntrustSample();
BeanUtils.copyProperties(sourceSample, updateSample);
BeanUtils.copyProperties(entrustSample, updateSample, true);
updateById(updateSample);
String sampleShape = entrustSample.getSampleShape();
String sampleFrom = entrustSample.getSampleFrom();
Integer complianceTest = entrustSample.getComplianceTest();
StringBuffer sb = new StringBuffer();
String remark = "";
if (StringUtils.isNotBlank(sampleShape) && !sourceSample.getSampleShape().equals(sampleShape)) {
sb.append(String.format("样品状态:由【%s】 修改为 【%s】,", sourceSample.getSampleShape(), sampleShape));
}
if (StringUtils.isNotBlank(sampleFrom) && !sourceSample.getSampleFrom().equals(sampleFrom)) {
sb.append(String.format("样品来源:由【%s】 修改为 【%s】,", sourceSample.getSampleFrom(), sampleFrom));
}
if (null != complianceTest && sourceSample.getComplianceTest() != complianceTest) {
sb.append(String.format("现场见证:由【%s】 修改为 【%s】,", sourceSample.getComplianceTest(), complianceTest));
}
if (sb.length() > 0) {
remark = sb.substring(0, sb.length() - 1);
}
entrustSampleRecordService.record(new Long[]{entrustSample.getId()}, flowStatus.getDisplay(), flowStatus.getDisplay(), 2, account, remark);
return true;
}
}
\ No newline at end of file
......@@ -2,31 +2,30 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplateConfig;
import com.patzn.cloud.service.hmhj.vo.CollectionVO;
import com.patzn.cloud.service.hmhj.vo.OriginalRecordInfoVO;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.collection.entity.OriginalAtlas;
import com.patzn.cloud.service.lims.hmhj.mapper.LmsOriginalRecordInfoMapper;
import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemIndexService;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalTemplateConfigService;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 原始记录解析后的数据存储表 服务实现类
......@@ -38,21 +37,12 @@ import java.util.stream.Collectors;
public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOriginalRecordInfoMapper, LmsOriginalRecordInfo> implements ILmsOriginalRecordInfoService {
@Autowired
private IEntrustService entrustService;
@Autowired
private IOriginalTemplateService originalTemplateService;
@Autowired
private IOriginalTemplateConfigService originalTemplateConfigService;
@Autowired
private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustSampleItemService entrustSampleItemService;
@Autowired
private IEntrustSampleItemIndexService entrustSampleItemIndexService;
@Override
......@@ -73,7 +63,7 @@ public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOrigina
OriginalTemplate template = originalTemplateService.getById(templateId);
RestAssert.fail(null == template, "原始记录模板为空");
String tempName = template.getName();
// String tempName = template.getName();
// 需要采集的指标项
List<OriginalTemplateConfig> configList = originalTemplateConfigService.list(Condition.create()
.eq("template_id", template).eq("itemed", 1).eq("deleted", 0));
......@@ -84,8 +74,6 @@ public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOrigina
RestAssert.fail(CollectionUtils.isEmpty(originalRecordInfoList), "所选检测项目对应的采集数据不存在");
List<EntrustSampleItemIndex> itemIndexList = new ArrayList<>();
// 具体逻辑需要额外处理
// 目前不清楚字段content和abs代表的含义
// and so on ...
//
for (OriginalRecordInfoVO vo : originalRecordInfoList) {
// OriginalAtlas data = JSONObject.parseObject(vo.getData(),OriginalAtlas.class);
......@@ -128,11 +116,6 @@ public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOrigina
itemIndexList.add(itemIndex);
}
// 曲线信息
if (CollectionUtils.isNotEmpty(data.getCurveData())) {
}
}
if (CollectionUtils.isNotEmpty(itemIndexList)) {
......
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.patzn.cloud.service.hmhj.entity.OriginalRecordVersion;
import com.patzn.cloud.service.lims.hmhj.mapper.OriginalRecordVersionMapper;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalRecordVersionService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import java.util.List;
/**
* 服务实现类
*
* @author wwd
* @since 2021-07-08
*/
@Service
public class OriginalRecordVersionServiceImpl extends BaseServiceImpl<OriginalRecordVersionMapper, OriginalRecordVersion> implements IOriginalRecordVersionService {
@Override
public Page<OriginalRecordVersion> page(Page<OriginalRecordVersion> page, OriginalRecordVersion originalRecordVersion) {
Wrapper wrapper = new EntityWrapper<>(originalRecordVersion);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
}
......@@ -56,6 +56,11 @@ public class OriginalTemplateServiceImpl extends BaseServiceImpl<OriginalTemplat
@Autowired
private IEntrustSampleItemService entrustSampleItemService;
@Autowired
private IOriginalRecordVersionService originalRecordVersionService;
@Autowired
private IOriginalTemplateConfigService originalTemplateConfigService;
......@@ -227,6 +232,14 @@ public class OriginalTemplateServiceImpl extends BaseServiceImpl<OriginalTemplat
return true;
}
public void addVersionRecord( OriginalRecord report){
OriginalRecordVersion recordVersion =report.convert(OriginalRecordVersion.class);
recordVersion.setId(null);
recordVersion.setOriginalRecordId(report.getId());
originalRecordVersionService.save(recordVersion);
}
@Override
public boolean editOriginal(String someParam, OssFileResult obsFileResult) {
RestAssert.fail(StringUtils.isBlank(someParam), "业务ID不能为空");
......@@ -243,6 +256,7 @@ public class OriginalTemplateServiceImpl extends BaseServiceImpl<OriginalTemplat
if (null == report) {
RestAssert.fail("数据有误");
}
addVersionRecord(report);
OriginalRecord originalRecord = new OriginalRecord();
originalRecord.setId(businessId);
originalRecord.setObjectKey(obsFileResult.getObjectKey());
......
package com.patzn.cloud.service.lims.hmhj.threadpool;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
@Configuration
@EnableAsync
public class ExecutorConfig {
@Bean
public Executor executor1() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setThreadNamePrefix("executor1-thread-");
executor.setMaxPoolSize(20);
executor.setCorePoolSize(15);
executor.setQueueCapacity(0);
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
return executor;
}
}
......@@ -47,4 +47,51 @@
</where>
order by b.ctime desc
</select>
<select id="selectManageList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO">
SELECT
b.ID,
b.receive_time,
b.storage_location,
b.storage_method,
b.storage_period,
b.sample_id,
b.handler,
b.handle_time,
s.NAME AS "sampleName",
s.code AS "sampleCode" ,
e.client ,
e.code AS "entrustCode",
(case when e.sample_handle_advise = '检测完毕退还' and s.status &gt;20 then 1 else 0 end) "weights"
FROM
entrust_sample_backup b
JOIN entrust_sample s ON b.sample_id = s.ID
JOIN entrust e ON s.entrust_id = e.ID
<where>
AND b.deleted = 0 AND s.deleted = 0 AND e.deleted = 0
<if test="null!=vo.sampleCode">
AND s.code LIKE CONCAT('%',#{vo.sampleCode},'%')
</if>
<if test="null!=vo.status">
AND b.status =#{vo.status}
</if>
<if test="null!=vo.notStatus">
AND b.status !=#{vo.notStatus}
</if>
<if test="null!=vo.sampleName">
AND s.name LIKE CONCAT('%',#{vo.sampleName},'%')
</if>
<if test="null!=vo.client">
AND e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null!=vo.entrustCode">
AND e.code LIKE CONCAT('%',#{vo.entrustCode},'%')
</if>
</where>
order by (case when e.sample_handle_advise = '检测完毕退还' and s.status &gt;20 then 1 else 0 end) desc, b.ctime desc
</select>
</mapper>
......@@ -91,7 +91,9 @@
</if>
)
SELECT i.*,s.name AS "sampleName",e.test_side "testSide",s.code AS "sampleCode",l.record_id,r.object_key AS "recordObjectKey" FROM i
SELECT i.*,s.name AS "sampleName",e.test_side "testSide",s.code AS "sampleCode",l.record_id,r.object_key AS "recordObjectKey",
s.compliance_test
FROM i
JOIN entrust_sample s ON i.entrust_sample_id = s.id
LEFT JOIN ( SELECT id,item_id,record_id FROM item_rel_original_record WHERE deleted = 0 ) l ON i.id = l.item_id
LEFT JOIN ( SELECT id,object_key FROM original_record WHERE deleted = 0 ) r ON l.record_id = r.id
......@@ -156,7 +158,8 @@
</if>
)
SELECT i.*,s.name AS "sampleName",s.code AS "sampleCode",e.test_side "testSide",l.record_id,r.object_key AS "recordObjectKey"
SELECT i.*,s.name AS "sampleName",s.code AS "sampleCode",e.test_side "testSide",l.record_id,r.object_key AS "recordObjectKey",
s.compliance_test
FROM i
JOIN entrust_sample s ON i.entrust_sample_id = s.id
JOIN (select t.id,t.code,t.test_side from entrust t where t.deleted = 0 ) e on s.entrust_id = e.id
......
......@@ -6,8 +6,7 @@
SELECT
p.id, p.entrust_sample_id,s.code,s.name,s.product_code,s.product_basis_name,s.compose_judge,s.product_standard_id,s.name_code,
p.group_id,p.group_name,p.make_type,p.make_quantity,p.store_way,p.store_location,p.maker,p.make_time
s.compliance_test,p.group_id,p.group_name,p.make_type,p.make_quantity,p.store_way,p.store_location,p.maker,p.make_time
FROM
entrust_sample_prepare
P JOIN entrust_sample s ON P.entrust_sample_id = s.ID
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleRecordMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.OriginalRecordVersionMapper">
</mapper>
CREATE TABLE "public"."original_record_version" (
CREATE TABLE "public"."original_record_version" (
"id" int8 NOT NULL,
"original_record_id" int8,
"entrust_id" int8,
"template_id" int8,
"title" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"company_id" int8,
"uid" int8,
"ctime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"lid" int8,
"ltime" timestamp(6) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"uname" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"remark" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"object_key" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"version" int2
)
;
COMMENT ON COLUMN "public"."original_record_version"."id" IS '主键';
COMMENT ON COLUMN "public"."original_record_version"."original_record_id" IS '原始记录ID';
COMMENT ON COLUMN "public"."original_record_version"."entrust_id" IS '试验委托单ID';
COMMENT ON COLUMN "public"."original_record_version"."template_id" IS '原始记录模板ID';
COMMENT ON COLUMN "public"."original_record_version"."title" IS '标题';
COMMENT ON COLUMN "public"."original_record_version"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."original_record_version"."uid" IS '创建人';
COMMENT ON COLUMN "public"."original_record_version"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."original_record_version"."lid" IS '最后修改时间';
COMMENT ON COLUMN "public"."original_record_version"."ltime" IS '最后修改人ID';
COMMENT ON COLUMN "public"."original_record_version"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."original_record_version"."object_key" IS '原始记录key';
COMMENT ON COLUMN "public"."original_record_version"."version" IS '版本';
-- ----------------------------
-- Primary Key structure for table original_record_version
-- ----------------------------
ALTER TABLE "public"."original_record_version" ADD CONSTRAINT "original_record_version_pkey" PRIMARY KEY ("id");
ALTER TABLE "public"."original_record"
ADD COLUMN "pdf_object_key" varchar(255);
COMMENT ON COLUMN "public"."original_record"."pdf_object_key" IS 'PDF原始记录key';
ALTER TABLE "public"."original_record_version"
ADD COLUMN "pdf_object_key" varchar(255) COLLATE "pg_catalog"."default";
COMMENT ON COLUMN "public"."original_record_version"."pdf_object_key" IS 'PDF原始记录key';
ALTER TABLE "public"."qualification"
ALTER TABLE "public"."qualification"
ADD COLUMN "price" decimal(10,1);
COMMENT ON COLUMN "public"."qualification"."price" IS '单价';
ALTER TABLE "public"."material_item"
ADD COLUMN "price" decimal(10,1);
COMMENT ON COLUMN "public"."material_item"."price" IS '单价';
ALTER TABLE "public"."entrust_sample_item"
ADD COLUMN "price" decimal(10,1);
COMMENT ON COLUMN "public"."entrust_sample_item"."price" IS '单价';
ALTER TABLE "public"."entrust"
ADD COLUMN "total_fee" decimal(10,1);
COMMENT ON COLUMN "public"."entrust"."total_fee" IS '委托费用';
\ No newline at end of file
CREATE TABLE "public"."entrust_sample_record" (
CREATE TABLE "public"."entrust_sample_record" (
"id" int8 NOT NULL,
"sample_id" int8,
"remark" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"ctime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"uid" int8,
"lid" int8,
"ltime" timestamp(0) DEFAULT NULL::timestamp without time zone,
"deleted" int2 DEFAULT 0,
"company_id" int8,
"type" int2 DEFAULT 0,
"origin" varchar(50) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"target" varchar(50) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"operator" varchar(50) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying,
"operator_id" int8
)
;
COMMENT ON COLUMN "public"."entrust_sample_record"."id" IS '主键';
COMMENT ON COLUMN "public"."entrust_sample_record"."sample_id" IS '样品ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."remark" IS '操作原因';
COMMENT ON COLUMN "public"."entrust_sample_record"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."entrust_sample_record"."uid" IS '创建人ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."lid" IS '最后修改人ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."entrust_sample_record"."deleted" IS '是否删除0否1是';
COMMENT ON COLUMN "public"."entrust_sample_record"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."entrust_sample_record"."type" IS '类型 0流转 1回退 2更新';
COMMENT ON COLUMN "public"."entrust_sample_record"."origin" IS '操作阶段';
COMMENT ON COLUMN "public"."entrust_sample_record"."target" IS '目标阶段';
COMMENT ON COLUMN "public"."entrust_sample_record"."operator" IS '操作人';
COMMENT ON COLUMN "public"."entrust_sample_record"."operator_id" IS '操作人ID';
COMMENT ON TABLE "public"."entrust_sample_record" IS '样品操作日志表';
-- ----------------------------
-- Primary Key structure for table entrust_sample_record
-- ----------------------------
ALTER TABLE "public"."entrust_sample_record" ADD CONSTRAINT "entrust_sample_record_pkey" PRIMARY KEY ("id");
-- 新增委托字段 --
ALTER TABLE "public"."entrust"
ADD COLUMN "expect_send_time" timestamp(6),
ADD COLUMN "live_witness" int2,
ADD COLUMN "sample_size" varchar(64) COLLATE "pg_catalog"."default",
ADD COLUMN "priority" varchar(32) COLLATE "pg_catalog"."default",
ADD COLUMN "test_time_s" timestamp(6),
ADD COLUMN "test_time_e" timestamp(6);
COMMENT ON COLUMN "public"."entrust"."expect_send_time" IS '客户期望报告发出日期';
COMMENT ON COLUMN "public"."entrust"."live_witness" IS '现场见证【0:否,1:是】';
COMMENT ON COLUMN "public"."entrust"."sample_size" IS '样品尺寸';
COMMENT ON COLUMN "public"."entrust"."priority" IS '优先级';
COMMENT ON COLUMN "public"."entrust"."test_time_s" IS '检测开始日期';
COMMENT ON COLUMN "public"."entrust"."test_time_e" IS '检测结束日期';
-- 新增样品字段 --
ALTER TABLE "public"."entrust_sample"
ADD COLUMN "compliance_test" int2;
COMMENT ON COLUMN "public"."entrust_sample"."compliance_test" IS '符合性检测【0:否,1:是】';
-- 新增样品检测项目字段 --
ALTER TABLE "public"."entrust_sample_item"
ADD COLUMN "price" numeric(10,2) default 0.00;
COMMENT ON COLUMN "public"."entrust_sample_item"."price" IS '单价';
ALTER TABLE "public"."material_item"
ADD COLUMN "price" numeric(10,2) default 0.00;
COMMENT ON COLUMN "public"."material_item"."price" IS '单价';
ALTER TABLE "public"."contract_sample"
ALTER TABLE "public"."contract_sample"
ADD COLUMN "judgment_type" varchar(50);
COMMENT ON COLUMN "public"."contract_sample"."judgment_type" IS '判定类型';
\ No newline at end of file
-- 新增委托字段 --
-- 新增委托字段 --
ALTER TABLE "public"."entrust"
ADD COLUMN "proposer_id" int8,
ADD COLUMN "approver_id" int8,
ADD COLUMN "proposer" varchar(64) COLLATE "pg_catalog"."default",
ADD COLUMN "approver" varchar(64) COLLATE "pg_catalog"."default",
-- ADD COLUMN "total_fee" numeric(10,2),
ADD COLUMN "approve_time" timestamp(6);
COMMENT ON COLUMN "public"."entrust"."proposer_id" IS '修改申请人ID';
COMMENT ON COLUMN "public"."entrust"."approver_id" IS '修改审批人ID';
COMMENT ON COLUMN "public"."entrust"."proposer" IS '修改申请人';
COMMENT ON COLUMN "public"."entrust"."approver" IS '修改审批人';
COMMENT ON COLUMN "public"."entrust"."approve_time" IS '审批日期';
-- COMMENT ON COLUMN "public"."entrust"."total_fee" IS '检测费用';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment