Commit a1a0ac88 by wangweidong

土工试验

parent 20109acc
//package com.patzn.cloud.service.lims.common.service.impl;
//import com.patzn.cloud.commons.controller.Account;
//import com.patzn.cloud.mq.MqMsg;
//import com.patzn.cloud.mq.MqProperties;
//import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.amqp.AmqpException;
//import org.springframework.amqp.core.AmqpTemplate;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import java.util.List;
//
//@Service
//public class LmsMsgService implements ILmsMsgService {
//
// private final Logger logger = LoggerFactory.getLogger(getClass());
//
// @Autowired
// private AmqpTemplate amqpTemplate;
// @Autowired
// private MqProperties mqProperties;
// @Value("${spring.application.name}")
// private String service;
//
// @Override
// public void sendMsg(String uri, String content, String title, Account account, List<Long> toUserId) {
// sendMsg(uri, null, content, title, account, toUserId);
package com.patzn.cloud.service.lims.common.service.impl;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.mq.MqMsg;
import com.patzn.cloud.mq.MqProperties;
import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.AmqpException;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class LmsMsgService implements ILmsMsgService {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private AmqpTemplate amqpTemplate;
@Autowired
private MqProperties mqProperties;
@Value("${spring.application.name}")
private String service;
@Override
public void sendMsg(String uri, String content, String title, Account account, List<Long> toUserId) {
sendMsg(uri, null, content, title, account, toUserId);
}
@Override
public void sendMsg(String uri, String msgType, String content, String title, Account account, List<Long> toUserId) {
try {
MqMsg mqMsg = getMqMsg(uri, msgType, content, title, account, toUserId, 0, null);
mqMsg.setService(service);
amqpTemplate.convertAndSend(mqProperties.getTopic().getSoilWorkMsg(), mqMsg);
} catch (AmqpException e) {
logger.error("发送消息异常:", e);
}
}
@Override
public void sendMsg(int businessType, String groupAlias, String content, String title, Account account) {
try {
MqMsg mqMsg = getMqMsg(null, null, content, title, account, null, businessType, groupAlias);
amqpTemplate.convertAndSend(mqProperties.getTopic().getSoilWorkMsg(), mqMsg);
} catch (AmqpException e) {
logger.error("发送消息异常:", e);
}
}
private MqMsg getMqMsg(String uri, String msgType, String content, String title, Account account, List<Long> toUserId, int businessType, String groupAlias) {
MqMsg mqMsg = new MqMsg();
// mqMsg.setUid(account.getUserId());
// // 消息类型
// mqMsg.setMsgType(msgType);
// if (StringUtils.isNotEmpty(msgType) && StringUtils.isEmpty(uri)) {
// // 不是空的并且路由是空的,需要根据 msgType 查询标签的路由
// mqMsg.setUri(EnvMessageTypeEnum.getByValue(msgType));
// } else {
// // 路由
// mqMsg.setUri(uri);
// }
//
// @Override
// public void sendMsg(String uri, String msgType, String content, String title, Account account, List<Long> toUserId) {
// try {
// MqMsg mqMsg = getMqMsg(uri, msgType, content, title, account, toUserId, 0, null);
// // 企业ID
// mqMsg.setCompanyId(account.getCompanyId());
// // 发送人
// mqMsg.setSender(account.getUserName());
// // 标题
// mqMsg.setTitle(title);
// // 内容
// mqMsg.setContent(content);
// // 类型
// mqMsg.setType(1);
// // 服务名称
// mqMsg.setService(service);
// amqpTemplate.convertAndSend(mqProperties.getTopic().getMeterWorkMsg(), mqMsg);
// } catch (AmqpException e) {
// logger.error("发送消息异常:", e);
// }
// }
//
// @Override
// public void sendMsg(int businessType, String groupAlias, String content, String title, Account account) {
// try {
// MqMsg mqMsg = getMqMsg(null, null, content, title, account, null, businessType, groupAlias);
// amqpTemplate.convertAndSend(mqProperties.getTopic().getMeterWorkMsg(), mqMsg);
// } catch (AmqpException e) {
// logger.error("发送消息异常:", e);
// }
// }
//
// private MqMsg getMqMsg(String uri, String msgType, String content, String title, Account account, List<Long> toUserId, int businessType, String groupAlias) {
// MqMsg mqMsg = new MqMsg();
//// mqMsg.setUid(account.getUserId());
//// // 消息类型
//// mqMsg.setMsgType(msgType);
//// if (StringUtils.isNotEmpty(msgType) && StringUtils.isEmpty(uri)) {
//// // 不是空的并且路由是空的,需要根据 msgType 查询标签的路由
//// mqMsg.setUri(EnvMessageTypeEnum.getByValue(msgType));
//// } else {
//// // 路由
//// mqMsg.setUri(uri);
//// }
//// // 企业ID
//// mqMsg.setCompanyId(account.getCompanyId());
//// // 发送人
//// mqMsg.setSender(account.getUserName());
//// // 标题
//// mqMsg.setTitle(title);
//// // 内容
//// mqMsg.setContent(content);
//// // 类型
//// mqMsg.setType(1);
//// // 服务名称
//// mqMsg.setService(service);
//// // 接收人集合
//// mqMsg.setReceiverIds(toUserId);
//// mqMsg.setBusinessType(businessType);
//// mqMsg.setBusiness(groupAlias);
// return mqMsg;
// }
//
//}
//
// // 接收人集合
// mqMsg.setReceiverIds(toUserId);
// mqMsg.setBusinessType(businessType);
// mqMsg.setBusiness(groupAlias);
return mqMsg;
}
}
......@@ -2,17 +2,15 @@ package com.patzn.cloud.service.lims.soil.controller;
import java.util.List;
import com.google.common.collect.Lists;
import com.patzn.cloud.service.lims.soil.service.ISoilEntrustService;
import com.patzn.cloud.service.soil.dto.SoilEntrustDTO;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.patzn.cloud.service.soil.enums.SoilEntrustStatusEnum;
import com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum;
import com.patzn.cloud.service.soil.vo.SoilEntrustVO;
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 org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.plugins.Page;
......@@ -53,10 +51,44 @@ public class SoilEntrustController extends ServiceController {
})
@PostMapping("/page")
public RestResult<Page<SoilEntrust>> getPage(SoilEntrust soilEntrust) {
soilEntrust.setStatus(SoilEntrustStatusEnum.DRAFT);
return success(soilEntrustService.page(getPage(), soilEntrust));
}
@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_sample_receive")
public RestResult<Page<SoilEntrustVO>> getPageSampleReceive(SoilEntrustVO soilEntrust) {
soilEntrust.setSampleStatusList(Lists.newArrayList(
SoilSampleStatusEnum.RECEIVE
));
return success(soilEntrustService.pageVO(getPage(), soilEntrust));
}
@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_review")
public RestResult<Page<SoilEntrust>> getPageReview(SoilEntrust soilEntrust) {
soilEntrust.setStatus(SoilEntrustStatusEnum.REVIEW);
return success(soilEntrustService.page(getPage(), soilEntrust));
}
@ApiOperation(value = "查询列表", notes = "查询数据列表")
@PostMapping("/list")
public RestResult<List<SoilEntrust>> getList(SoilEntrust soilEntrust) {
......@@ -88,10 +120,36 @@ public class SoilEntrustController extends ServiceController {
@ApiOperation(value = "添加", notes = "添加一条数据")
@PostMapping("/")
public RestResult<Boolean> add(SoilEntrust soilEntrust) {
return success(soilEntrustService.save(soilEntrust));
return success(soilEntrustService.saveEntrust(soilEntrust));
}
@ApiOperation(value = "添加委托单", notes = "添加委托单")
@PostMapping("/add_entrust")
public RestResult<Boolean> addEntrust(@RequestBody SoilEntrustDTO dto) {
return success(soilEntrustService.saveEntrustDTO(dto,getAccount()));
}
@ApiOperation(value = "编辑委托单", notes = "编辑报价单")
@PostMapping("/edit_entrust")
public RestResult<Boolean> editEntrust(@RequestBody SoilEntrustDTO entrustDTO) {
return success(soilEntrustService.editEntrust(entrustDTO,getAccount()));
}
@ApiOperation(value = "根据ID查询VO查询 id 信息", notes = "根据ID查询VO查询 id 的数据内容")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataType = "long"),
})
@GetMapping("/vo/{id}")
public RestResult<SoilEntrustDTO> getDTO(@PathVariable("id") Long id) {
return success(soilEntrustService.getDTOById(id));
}
@ApiOperation(value = "根据 ids 删除", notes = "根据 id 数组删除指定的数据内容")
@ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键数组", required = true, paramType = "query", dataType = "array"),
......@@ -101,4 +159,25 @@ public class SoilEntrustController extends ServiceController {
return success(soilEntrustService.remove(Condition.create().in("id", ids)));
}
@ApiOperation(value = "委托单提交评审", notes = "委托单提交评审")
@PostMapping("/submit_to_review")
public RestResult<Boolean> submitToReview(@RequestParam("ids")Long [] ids) {
return success(soilEntrustService.submitToReview(ids,getAccount()));
}
@ApiOperation(value = "试验委托单评审通过", notes = "委托单提交评审")
@PostMapping("/review_pass")
public RestResult<Boolean> reviewPass(@RequestParam("ids")Long [] ids) {
return success(soilEntrustService.reviewPass(ids,getAccount()));
}
@ApiOperation(value = "委托单评审驳回", notes = "委托单评审驳回")
@PostMapping("/review_back")
public RestResult<Boolean> reviewBack(@RequestParam("ids")Long [] ids,@RequestParam("reason") String reason) {
return success(soilEntrustService.reviewBack(ids,reason,getAccount()));
}
}
package com.patzn.cloud.service.lims.soil.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -24,16 +25,17 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.multipart.MultipartFile;
/**
* <p>
* 土工试验-委托附件表 前端控制器
* 土工试验-标准文件附件表 前端控制器
* </p>
*
* @author wwd
* @since 2020-09-11
*/
@Api(description = "土工试验-委托附件表")
@Api(description = "土工试验-标准文件附件表")
@RestController
@RequestMapping("/v1/standard_annex")
public class SoilStandardAnnexController extends ServiceController {
......@@ -99,4 +101,34 @@ public class SoilStandardAnnexController extends ServiceController {
return success(soilStandardAnnexService.remove(Condition.create().in("id", ids)));
}
@ApiOperation(value = "附件上传", notes = "附件上传")
@PostMapping("/upload/{standardId}")
public RestResult<Boolean> upload(@PathVariable("standardId") Long standardId, MultipartFile file) {
return success(soilStandardAnnexService.upload(file, standardId));
}
@ApiOperation(value = "下载附件", notes = "下载指定附件")
@GetMapping("/download/{id}")
public void downloadFile(@PathVariable("id")Long id) {
soilStandardAnnexService.downloadFile(id, response);
}
@ApiOperation(value = "批量下载文件", notes = "批量下载文件")
@GetMapping("/download_batch")
public void downloadBatch(@RequestParam("ids") Long[] ids) {
soilStandardAnnexService.downloadBatch(ids, response);
}
@ApiOperation(value = "预览标准文件的附件", notes = "预览标准文件的附件")
@PostMapping("/preview/{standardId}")
public RestResult<List<SoilStandardAnnex>> preview(@PathVariable("standardId") Long standardId, MultipartFile file) {
List<String>list = new ArrayList<>();
list.add("png");
list.add("jpg");
return success(soilStandardAnnexService.list(Condition.create().in("type",list).eq("standard_id",standardId)));
}
}
package com.patzn.cloud.service.lims.soil.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.service.soil.dto.SoilSampleDTO;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.patzn.cloud.service.soil.entity.SoilSample;
import com.patzn.cloud.service.soil.vo.SoilEntrustVO;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import java.util.List;
/**
* <p>
......@@ -13,4 +21,7 @@ import com.patzn.cloud.service.soil.entity.SoilEntrust;
*/
public interface SoilEntrustMapper extends BaseMapper<SoilEntrust> {
List<SoilSampleDTO> listByContractId(@Param("entrustId") Long id);
List<SoilEntrustVO> selectVOList(RowBounds rowBounds, @Param("vo")SoilEntrustVO soilEntrust);
}
......@@ -2,6 +2,7 @@ package com.patzn.cloud.service.lims.soil.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.patzn.cloud.service.soil.entity.SoilSample;
import org.apache.ibatis.annotations.Param;
/**
* <p>
......@@ -13,4 +14,5 @@ import com.patzn.cloud.service.soil.entity.SoilSample;
*/
public interface SoilSampleMapper extends BaseMapper<SoilSample> {
int selectEntrustCount(@Param("entrustIds") Long[] entrustIds);
}
......@@ -3,6 +3,7 @@ package com.patzn.cloud.service.lims.soil.service;
import java.util.List;
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.soil.entity.SoilEntrustOperation;
......@@ -21,4 +22,9 @@ public interface ISoilEntrustOperationService extends IBaseService<SoilEntrustOp
List<SoilEntrustOperation> list(SoilEntrustOperation soilEntrustOperation);
void recordEntrustSubmitter(Long[] ids, Account account);
void recordEntrustReviewer(Long[] ids, Account account);
}
......@@ -3,8 +3,10 @@ package com.patzn.cloud.service.lims.soil.service;
import java.util.List;
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.soil.entity.SoilEntrustRecord;
import com.patzn.cloud.service.soil.enums.SoilEntrustStatusEnum;
/**
* <p>
......@@ -21,4 +23,7 @@ public interface ISoilEntrustRecordService extends IBaseService<SoilEntrustRecor
List<SoilEntrustRecord> list(SoilEntrustRecord soilEntrustRecord);
void record(SoilEntrustStatusEnum from, SoilEntrustStatusEnum to, Long[] ids, int type, Account account, String remark);
}
......@@ -3,8 +3,11 @@ package com.patzn.cloud.service.lims.soil.service;
import java.util.List;
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.soil.dto.SoilEntrustDTO;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.patzn.cloud.service.soil.vo.SoilEntrustVO;
/**
* <p>
......@@ -21,4 +24,20 @@ public interface ISoilEntrustService extends IBaseService<SoilEntrust> {
List<SoilEntrust> list(SoilEntrust soilEntrust);
boolean saveEntrust(SoilEntrust soilEntrust);
boolean saveEntrustDTO(SoilEntrustDTO dto, Account account);
SoilEntrustDTO getDTOById(Long id);
boolean editEntrust(SoilEntrustDTO entrustDTO, Account account);
boolean submitToReview(Long[] ids, Account account);
boolean reviewBack(Long[] ids, String reason, Account account);
boolean reviewPass(Long[] ids, Account account);
Page<SoilEntrustVO> pageVO(Page<SoilEntrustVO> page, SoilEntrustVO soilEntrust);
}
......@@ -21,4 +21,11 @@ public interface ISoilSampleService extends IBaseService<SoilSample> {
List<SoilSample> list(SoilSample soilSample);
List<SoilSample> listByContractId(Long id);
boolean checkEntrustHaveSample(Long[] ids);
boolean updateToReceiveByEntrustIds(Long[] ids);
}
......@@ -5,6 +5,9 @@ import java.util.List;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.soil.entity.SoilStandardAnnex;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
......@@ -21,4 +24,13 @@ public interface ISoilStandardAnnexService extends IBaseService<SoilStandardAnne
List<SoilStandardAnnex> list(SoilStandardAnnex soilStandardAnnex);
boolean upload(MultipartFile file, Long standardId);
void downloadFile(Long id, HttpServletResponse response);
void downloadBatch(Long[] ids, HttpServletResponse response);
}
package com.patzn.cloud.service.lims.soil.service.impl;
import java.util.Date;
import java.util.List;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.soil.mapper.SoilEntrustOperationMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilEntrustOperationService;
import com.patzn.cloud.service.soil.entity.SoilEntrustOperation;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
......@@ -35,4 +39,29 @@ public class SoilEntrustOperationServiceImpl extends BaseServiceImpl<SoilEntrust
public List<SoilEntrustOperation> list(SoilEntrustOperation soilEntrustOperation) {
return this.list(new EntityWrapper<>(soilEntrustOperation));
}
@Override
public void recordEntrustSubmitter(Long[] ids, Account account) {
if (ArrayUtils.isEmpty(ids)){
return;
}
SoilEntrustOperation operation = new SoilEntrustOperation();
operation.setReSubmitter(account.getUserName());
operation.setReSubmitterId(account.getUserId());
operation.setReSubmitTime(new Date());
super.update(operation, Condition.create().in("entrust_id",ids));
}
@Override
public void recordEntrustReviewer(Long[] ids, Account account) {
if (ArrayUtils.isEmpty(ids)){
return;
}
SoilEntrustOperation operation = new SoilEntrustOperation();
operation.setReviewer(account.getUserName());
operation.setReviewerId(account.getUserId());
operation.setReviewTime(new Date());
super.update(operation, Condition.create().in("entrust_id",ids));
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.lims.soil.service.ISoilEntrustRecordService;
import com.patzn.cloud.service.soil.entity.SoilEntrustRecord;
import com.patzn.cloud.service.lims.soil.mapper.SoilEntrustRecordMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilEntrustRecordService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.soil.mapper.SoilEntrustRecordMapper;
import com.patzn.cloud.service.soil.entity.SoilEntrustRecord;
import com.patzn.cloud.service.soil.enums.SoilEntrustStatusEnum;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
......@@ -38,4 +40,27 @@ public class SoilEntrustRecordServiceImpl extends BaseServiceImpl<SoilEntrustRec
public List<SoilEntrustRecord> list(SoilEntrustRecord soilEntrustRecord) {
return this.list(new EntityWrapper<>(soilEntrustRecord));
}
@Override
public void record(SoilEntrustStatusEnum from, SoilEntrustStatusEnum to, Long[] ids, int type, Account account, String remark) {
if (ArrayUtils.isEmpty(ids)){
return;
}
List<SoilEntrustRecord> saveRecordList = new ArrayList<>();
for (Long id:ids) {
SoilEntrustRecord record = new SoilEntrustRecord();
record.setEntrustId(id);
record.setOperator(account.getUserName());
record.setOperatorId(account.getUserId());
record.setOrigin(from.getDisplay());
record.setTarget(to.getDisplay());
record.setType(type);
record.setRemark(remark);
saveRecordList.add(record);
}
if (CollectionUtils.isNotEmpty(saveRecordList)){
saveBatch(saveRecordList);
}
}
}
package com.patzn.cloud.service.lims.soil.service.impl;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import com.patzn.cloud.service.soil.entity.SoilEntrust;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.IdWorker;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.toolkit.StringHandleUtils;
import com.patzn.cloud.feign.lims.base.client.LmsCodeRuleClient;
import com.patzn.cloud.service.lims.base.dto.CodeTypeDTO;
import com.patzn.cloud.service.lims.base.enums.CodeTypeEnum;
import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
import com.patzn.cloud.service.lims.soil.service.*;
import com.patzn.cloud.service.meter.entity.MeterSampleQuote;
import com.patzn.cloud.service.soil.dto.SoilEntrustDTO;
import com.patzn.cloud.service.soil.dto.SoilSampleDTO;
import com.patzn.cloud.service.soil.entity.*;
import com.patzn.cloud.service.lims.soil.mapper.SoilEntrustMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilEntrustService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.enums.SoilEntrustStatusEnum;
import com.patzn.cloud.service.soil.vo.SoilEntrustVO;
import org.apache.bcel.generic.IF_ACMPEQ;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
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;
/**
* <p>
......@@ -22,6 +43,35 @@ import com.baomidou.mybatisplus.plugins.Page;
@Service
public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, SoilEntrust> implements ISoilEntrustService {
@Autowired
private LmsCodeRuleClient lmsCodeRuleClient;
@Autowired
private ISoilExpItemService soilExpItemService;
@Autowired
private ISoilSampleService soilSampleService;
@Autowired
private ILmsMsgService lmsMsgService;
@Autowired
private ISoilSampleOperationService soilSampleOperationService;
@Autowired
private ISoilEntrustRecordService soilEntrustRecordService;
@Autowired
private ISoilExperimentService soilExperimentService;
@Autowired
private ISoilExperimentOperationService soilExperimentOperationService;
@Autowired
private ISoilItemService soilItemService;
@Autowired
private ISoilEntrustOperationService soilEntrustOperationService;
@Override
public Page<SoilEntrust> page(Page<SoilEntrust> page, SoilEntrust soilEntrust) {
......@@ -35,4 +85,328 @@ public class SoilEntrustServiceImpl extends BaseServiceImpl<SoilEntrustMapper, S
public List<SoilEntrust> list(SoilEntrust soilEntrust) {
return this.list(new EntityWrapper<>(soilEntrust));
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveEntrust(SoilEntrust soilEntrust) {
CodeTypeDTO typeDTO =new CodeTypeDTO();
typeDTO.setBaseEntity(soilEntrust);
typeDTO.setCodeTypeEnum(CodeTypeEnum.SOIL_ENTRUST_CODE);
String entrustCode= lmsCodeRuleClient.getKey(typeDTO).serviceData();
if (StringUtils.isNotEmpty(entrustCode)){
soilEntrust.setEntrustCode(entrustCode);
}
return save(soilEntrust);
}
public void initSampleCode(SoilSample sample ){
CodeTypeDTO typeDTO =new CodeTypeDTO();
typeDTO.setBaseEntity(sample);
typeDTO.setCodeTypeEnum(CodeTypeEnum.SOIL_SAMPLE_CODE);
String sampleCode= lmsCodeRuleClient.getKey(typeDTO).serviceData();
if (StringUtils.isNotBlank(sampleCode)){
sample.setSampleCode(sampleCode);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean saveEntrustDTO(SoilEntrustDTO dto, Account account) {
RestAssert.fail(StringUtils.isBlank(dto.getClient()),"委托商不能为空!");
RestAssert.fail(StringUtils.isBlank(dto.getBoreholeName()),"钻孔名称不能为空!");
SoilEntrust soilEntrust = dto.convert(SoilEntrust.class);
soilEntrust.setStatus(SoilEntrustStatusEnum.DRAFT);
soilEntrust.setProgress(SoilEntrustStatusEnum.DRAFT);
List<SoilSampleDTO> sampleDTOList = dto.getSampleList();
if (saveEntrust(soilEntrust)){
SoilEntrustOperation operation = new SoilEntrustOperation();
operation.setEntrustId(soilEntrust.getId());
soilEntrustOperationService.save(operation);
if (CollectionUtils.isNotEmpty(sampleDTOList)){
Set<Long> aptitudeExpIdList = getAptitudeExpIdList(sampleDTOList);
Map<Long,List<SoilExpItem>> expItemMap = getExpItemMap(aptitudeExpIdList);
List<SoilSample> saveSoilSampleList = new ArrayList<>();
List<SoilSampleOperation> saveSoilSampleOperationList = new ArrayList<>();
List<SoilExperiment> saveSoilExperimentList = new ArrayList<>();
List<SoilExperimentOperation> soilExperimentOperationList = new ArrayList<>();
List<SoilItem> saveSoilItemList = new ArrayList<>();
for (SoilSampleDTO sampleDTO:sampleDTOList) {
SoilSample sample = sampleDTO.convert(SoilSample.class);
sample.setEntrustId(soilEntrust.getId());
//生成样品编号
initSampleCode(sample);
sample.setId(IdWorker.getId());
saveSoilSampleList.add(sample);
SoilSampleOperation soilSampleOperation = new SoilSampleOperation();
soilSampleOperation.setSampleId(sample.getId());
saveSoilSampleOperationList.add(soilSampleOperation);
List<SoilExperiment> experiments = sampleDTO.getExperimentList();
if (CollectionUtils.isEmpty(experiments)){
continue;
}
for (SoilExperiment soilExperiment:experiments) {
soilExperiment.setSampleId(sample.getId());
soilExperiment.setId(IdWorker.getId());
saveSoilExperimentList.add(soilExperiment);
SoilExperimentOperation experimentOperation = new SoilExperimentOperation();
experimentOperation.setExperimentId(soilExperiment.getId());
soilExperimentOperationList.add(experimentOperation);
List<SoilExpItem> expItemList = expItemMap.get(soilExperiment.getAptitudeExpId());
if (CollectionUtils.isNotEmpty(expItemList)){
for (SoilExpItem item:expItemList) {
SoilItem soilItem = item.convert(SoilItem.class);
soilItem.setExperimentId(soilExperiment.getId());
saveSoilItemList.add(soilItem);
}
}
}
}
if (CollectionUtils.isNotEmpty(saveSoilSampleList)){
soilSampleService.saveBatch(saveSoilSampleList);
}
if (CollectionUtils.isNotEmpty(saveSoilSampleOperationList)){
soilSampleOperationService.saveBatch(saveSoilSampleOperationList);
}
if (CollectionUtils.isNotEmpty(saveSoilExperimentList)){
soilExperimentService.saveBatch(saveSoilExperimentList);
}
if (CollectionUtils.isNotEmpty(soilExperimentOperationList)){
soilExperimentOperationService.saveBatch(soilExperimentOperationList);
}
if (CollectionUtils.isNotEmpty(saveSoilItemList)){
soilItemService.saveBatch(saveSoilItemList);
}
}
}
return true;
}
@Override
public SoilEntrustDTO getDTOById(Long id) {
SoilEntrust entrust = getById(id);
if (null != entrust){
SoilEntrustDTO vo =entrust.convert(SoilEntrustDTO.class);
List<SoilSampleDTO> sampleList = baseMapper.listByContractId(id);
vo.setSampleList(sampleList);
return vo;
}
return null;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean editEntrust(SoilEntrustDTO entrustDTO, Account account) {
if (null == entrustDTO.getId()){
return false;
}
List<SoilSampleDTO> sampleList = entrustDTO.getSampleList();
if (CollectionUtils.isEmpty(sampleList)){
// PtAssert.fail("样品不能为空");
}
for (SoilSampleDTO sampleDTO:sampleList) {
RestAssert.fail(StringUtils.isBlank(sampleDTO.getSampleDepth()),"试样深度不能为空");
RestAssert.fail(null == sampleDTO.getSiteNo(),"现场编号不能为空");
}
SoilEntrust entrust =entrustDTO.convert(SoilEntrust.class);
if (updateById(entrust)){
SoilEntrustOperation operation= entrustDTO.getOperation();
if (null !=operation && null != operation.getId()){
soilEntrustOperationService.updateById(operation);
}
List<Long> sampleIdsList = new ArrayList<>();
List<SoilSample> updateSampleList = new ArrayList<>();
List<SoilSample> saveSampleList = new ArrayList<>();
List<SoilSampleOperation> saveSampleOperationList = new ArrayList<>();
List<SoilExperiment> saveItemList = new ArrayList<>();
List<SoilExperimentOperation> saveItemOperationList = new ArrayList<>();
for (SoilSampleDTO dto:sampleList) {
SoilSample sample = dto.convert(SoilSample.class);
if (null != sample.getId()){
updateSampleList.add(sample);
sampleIdsList.add(sample.getId());
}else{
sample.setEntrustId(entrust.getId());
initSampleCode(sample);
sample.setId(IdWorker.getId());
saveSampleList.add(sample);
SoilSampleOperation sampleOperation = new SoilSampleOperation();
sampleOperation.setSampleId(sample.getId());
saveSampleOperationList.add(sampleOperation);
}
List<SoilExperiment> viewItemList= dto.getExperimentList();
if (CollectionUtils.isNotEmpty(viewItemList)){
for (SoilExperiment item:viewItemList) {
if (null == item.getId()){
item.setId(IdWorker.getId());
item.setSampleId(sample.getId());
item.setStatus(0);
item.setProgress(0);
saveItemList.add(item);
SoilExperimentOperation itemOperation = new SoilExperimentOperation();
itemOperation.setExperimentId(item.getId());
saveItemOperationList.add(itemOperation);
}
}
}
}
if (CollectionUtils.isNotEmpty(updateSampleList)){
soilSampleService.updateBatchById(updateSampleList);
}
if (CollectionUtils.isNotEmpty(saveSampleList)){
soilSampleService.saveBatch(saveSampleList);
soilSampleOperationService.saveBatch(saveSampleOperationList);
}
if (CollectionUtils.isNotEmpty(saveItemList)){
soilExperimentService.saveBatch(saveItemList);
}
if (CollectionUtils.isNotEmpty(saveItemOperationList)){
soilExperimentOperationService.saveBatch(saveItemOperationList);
}
}
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitToReview(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交至委托单审批的试验委托单!");
//验证委托是否添加样品
RestAssert.fail(soilSampleService.checkEntrustHaveSample(ids),"委托下含有未添加样品的,请您确认!");
SoilEntrust entrust = new SoilEntrust();
entrust.setStatus(SoilEntrustStatusEnum.REVIEW);
entrust.setProgress(SoilEntrustStatusEnum.REVIEW);
if (update(entrust, Condition.create().in("id",ids))){
List<SoilEntrust> entrustList =list(Condition.create().setSqlSelect("entrust_code").in("id",ids));
lmsMsgService.sendMsg("/soil/entrust/review","委托编号:"+ StringHandleUtils.join(
entrustList.stream().map(i->{
return i.getEntrustCode();
}) .collect(Collectors.toList())
)+"等待评审请及时处理","新的委托评审工作",account,null);
soilEntrustRecordService.record(SoilEntrustStatusEnum.DRAFT,SoilEntrustStatusEnum.REVIEW,ids,0,account,"试验委托单提交至委托评审");
soilEntrustOperationService.recordEntrustSubmitter(ids,account);
}
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean reviewBack(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要驳回的试验委托单");
RestAssert.fail(StringUtils.isBlank(reason),"请填写驳回的原因");
int count = super.count(Condition.create().in("id",ids).ne("status",SoilEntrustStatusEnum.REVIEW));
RestAssert.fail(count>0,"请驳回待委托评审的试验委托单");
SoilEntrust soilEntrust = new SoilEntrust();
soilEntrust.setStatus(SoilEntrustStatusEnum.DRAFT);
soilEntrust.setProgress(SoilEntrustStatusEnum.BACK_REVIEW);
if (update(soilEntrust,Condition.create().in("id",ids))){
//
soilEntrustRecordService.record(SoilEntrustStatusEnum.REVIEW,SoilEntrustStatusEnum.DRAFT,ids,1,account,reason);
List<SoilEntrust> entrustList =list(Condition.create().setSqlSelect("entrust_code").in("id",ids));
lmsMsgService.sendMsg("/soil/entrust/entrust_register","委托编号:"+ StringHandleUtils.join(
entrustList.stream().map(i->{
return i.getEntrustCode();
}) .collect(Collectors.toList())
)+"由委托评审退回,退回原因:"+reason,"新的委托评审退回工作",account,null);
}
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean reviewPass(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要评审通过的试验委托单!");
//验证委托是否添加样品
RestAssert.fail(soilSampleService.checkEntrustHaveSample(ids),"委托下含有未添加样品的,请您确认!");
SoilEntrust entrust = new SoilEntrust();
entrust.setStatus(SoilEntrustStatusEnum.RECEIVE);
entrust.setProgress(SoilEntrustStatusEnum.RECEIVE);
if (update(entrust, Condition.create().in("id",ids))){
List<SoilEntrust> entrustList =list(Condition.create().setSqlSelect("entrust_code").in("id",ids));
lmsMsgService.sendMsg("/soil/sample/receive","委托编号:"+ StringHandleUtils.join(
entrustList.stream().map(i->{
return i.getEntrustCode();
}) .collect(Collectors.toList())
)+"的试验委托单,待收样请做好收样准备","新的待收样工作",account,null);
soilEntrustRecordService.record(SoilEntrustStatusEnum.REVIEW,SoilEntrustStatusEnum.RECEIVE,ids,0,account,"试验委托单评审通过");
soilEntrustOperationService.recordEntrustReviewer(ids,account);
soilSampleService.updateToReceiveByEntrustIds(ids);
}
return true;
}
@Override
public Page<SoilEntrustVO> pageVO(Page<SoilEntrustVO> page, SoilEntrustVO soilEntrust) {
return page.setRecords(baseMapper.selectVOList(page,soilEntrust));
}
public Map<Long,List<SoilExpItem>> getExpItemMap( Set<Long> aptitudeExpIdList){
Map<Long,List<SoilExpItem>> expItemMap= new HashMap<>();
if (CollectionUtils.isNotEmpty(aptitudeExpIdList)){
List<SoilExpItem> expItemList =soilExpItemService.list(Condition.create().in("exp_id",aptitudeExpIdList));
for (SoilExpItem expItem:expItemList) {
List<SoilExpItem> itemList ;
if (!expItemMap.containsKey(expItem.getExpId())){
itemList = new ArrayList<>();
}else{
itemList = expItemMap.get(expItem.getExpId());
}
itemList.add(expItem);
expItemMap.put(expItem.getExpId(),itemList);
}
}
return expItemMap;
}
public Set<Long> getAptitudeExpIdList(List<SoilSampleDTO> sampleDTOList){
Set<Long> aptitudeExpIdList = new HashSet<>();
for (SoilSampleDTO sampleDTO:sampleDTOList) {
List<SoilExperiment> list = sampleDTO.getExperimentList();
if (null == list){
continue;
}
for (SoilExperiment experiment :list) {
if (null!= experiment.getAptitudeExpId()){
aptitudeExpIdList.add(experiment.getAptitudeExpId());
}
}
}
return aptitudeExpIdList;
}
}
......@@ -2,10 +2,13 @@ package com.patzn.cloud.service.lims.soil.service.impl;
import java.util.List;
import com.baomidou.mybatisplus.mapper.Condition;
import com.patzn.cloud.service.soil.entity.SoilSample;
import com.patzn.cloud.service.lims.soil.mapper.SoilSampleMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilSampleService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.soil.enums.SoilSampleStatusEnum;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
......@@ -35,4 +38,32 @@ public class SoilSampleServiceImpl extends BaseServiceImpl<SoilSampleMapper, Soi
public List<SoilSample> list(SoilSample soilSample) {
return this.list(new EntityWrapper<>(soilSample));
}
@Override
public List<SoilSample> listByContractId(Long id) {
return super.list(Condition.create().eq("entrust_id",id));
}
@Override
public boolean checkEntrustHaveSample(Long[] entrustIds) {
if (ArrayUtils.isEmpty(entrustIds)){
return true;
}
int sampleList =baseMapper.selectEntrustCount(entrustIds);
if (sampleList!=entrustIds.length){
return true;
}
return false;
}
@Override
public boolean updateToReceiveByEntrustIds(Long[] ids) {
if (ArrayUtils.isEmpty(ids)){
return false;
}
SoilSample sample = new SoilSample();
sample.setStatus(SoilSampleStatusEnum.RECEIVE);
sample.setProgress(SoilSampleStatusEnum.RECEIVE);
return super.update(sample,Condition.create().in("entrust_id",ids));
}
}
......@@ -2,14 +2,23 @@ package com.patzn.cloud.service.lims.soil.service.impl;
import java.util.List;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.meter.entity.MeterEntrustAttachment;
import com.patzn.cloud.service.soil.entity.SoilStandardAnnex;
import com.patzn.cloud.service.lims.soil.mapper.SoilStandardAnnexMapper;
import com.patzn.cloud.service.lims.soil.service.ISoilStandardAnnexService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.lang3.StringUtils;
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.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
/**
* <p>
......@@ -21,7 +30,8 @@ import com.baomidou.mybatisplus.plugins.Page;
*/
@Service
public class SoilStandardAnnexServiceImpl extends BaseServiceImpl<SoilStandardAnnexMapper, SoilStandardAnnex> implements ISoilStandardAnnexService {
@Autowired
private OssClient ossClient;
@Override
public Page<SoilStandardAnnex> page(Page<SoilStandardAnnex> page, SoilStandardAnnex soilStandardAnnex) {
......@@ -35,4 +45,36 @@ public class SoilStandardAnnexServiceImpl extends BaseServiceImpl<SoilStandardAn
public List<SoilStandardAnnex> list(SoilStandardAnnex soilStandardAnnex) {
return this.list(new EntityWrapper<>(soilStandardAnnex));
}
@Override
public boolean upload(MultipartFile file, Long standardId) {
String fileName = file.getOriginalFilename();
RestAssert.fail(StringUtils.isBlank(fileName), "请上传文件");
SoilStandardAnnex attachment = new SoilStandardAnnex();
attachment.setStandardId(standardId);
OssFileResult result = ossClient.upload(file);
if (null == result) {
return false;
}
attachment.setBucketName(result.getBucketName());
attachment.setType(result.getType());
attachment.setFileName(result.getName());
attachment.setObjectKey(result.getObjectKey());
attachment.setVersionId(result.getVersionId());
return super.save(attachment);
}
@Override
public void downloadFile(Long id, HttpServletResponse response) {
SoilStandardAnnex attachment = super.getById(id);
if (null == attachment) {
RestAssert.fail("抱歉!该附件不存在");
}
ossClient.download(attachment.getObjectKey(), attachment.getFileName() + "." + attachment.getType(), response);
}
@Override
public void downloadBatch(Long[] ids, HttpServletResponse response) {
}
}
......@@ -13,7 +13,7 @@ spring:
# url: jdbc:postgresql://localhost:5432/dev_lims_meter
username: postgres
password: 123456
url: jdbc:postgresql://192.168.0.115:5432/dev_lims_meter
url: jdbc:postgresql://192.168.0.115:5432/dev_lims_soil
driver-class-name: org.postgresql.Driver
dynamic:
enabled: false
......@@ -37,7 +37,7 @@ spring:
chemical-classify-warning: dev.topic.chemical.classify.warning
equip-check-msg: dev.topic.equip.check.msg
report-make-msg: dev.topic.report.make.msg
meter-work-msg: dev.topic.soil.work.msg
soil-work-msg: dev.topic.soil.work.msg
### jobs
jobs:
......
......@@ -2,4 +2,72 @@
<!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.soil.mapper.SoilEntrustMapper">
<select id="listByContractId" resultType="com.patzn.cloud.service.soil.dto.SoilSampleDTO">
SELECT * FROM soil_sample WHERE deleted = 0 AND entrust_id =#{entrustId}
</select>
<sql id="column">
e.id,
e.client,
e.project_no,
e.borehole_name,
e.borehole_location,
e.water_depth,
e.entrust_code,
e.entrust_date,
e.test_type,
e.report_code,
e.tabulate_date,
e.approve_date,
e.tabulater,
e.approver,
e.status,
e.progress
</sql>
<sql id="sqlWhere">
<if test="null!=vo.status">
AND e.status = #{vo.status}
</if>
<if test="null!=vo.noStatus">
AND e.status != #{vo.noStatus}
</if>
<if test="null!=vo.client">
AND e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null!=vo.projectNo">
AND e.project_no LIKE CONCAT('%',#{vo.projectNo},'%')
</if>
<if test="null!=vo.boreholeName">
AND e.borehole_name LIKE CONCAT('%',#{vo.boreholeName},'%')
</if>
<if test="null!=vo.entrustCode">
AND e.entrust_code LIKE CONCAT('%',#{vo.entrustCode},'%')
</if>
</sql>
<select id="selectVOList" resultType="com.patzn.cloud.service.soil.vo.SoilEntrustVO">
WITH s AS (
SELECT entrust_id FROM soil_sample WHERE deleted = 0
<if test="null!=vo.sampleStatus">
AND status = #{vo.sampleStatus}
</if>
<if test="null!=vo.sampleStatusList">
AND status IN
<foreach collection="vo.sampleStatusList" index="index" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</if>
GROUP BY entrust_id
)
SELECT <include refid="column"/> FROM soil_entrust e JOIN s ON e.id = s.entrust_id
WHERE e.deleted = 0
<include refid="sqlWhere"/>
</select>
</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.soil.mapper.SoilSampleMapper">
<select id="selectEntrustCount" resultType="int">
SELECT count(1) FROM (SELECT entrust_id FROM soil_sample
WHERE deleted = 0 AND entrust_id IN
<foreach collection="entrustIds" index="index" item="id" open="(" separator="," close=")">
#{id}
</foreach>
GROUP BY entrust_id) s
</select>
</mapper>
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