Commit 71465f8d by wangweidong

Merge remote-tracking branch 'origin/master'

parents 8e3005c1 3b7593eb
...@@ -8,6 +8,7 @@ import org.springframework.cache.annotation.EnableCaching; ...@@ -8,6 +8,7 @@ import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import springfox.documentation.swagger2.annotations.EnableSwagger2; import springfox.documentation.swagger2.annotations.EnableSwagger2;
...@@ -20,6 +21,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; ...@@ -20,6 +21,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableAsync @EnableAsync
@EnableCaching @EnableCaching
@EnableSwagger2 @EnableSwagger2
@EnableScheduling
@EnableDiscoveryClient @EnableDiscoveryClient
@SpringBootApplication @SpringBootApplication
@EnableTransactionManagement @EnableTransactionManagement
......
package com.patzn.cloud.service.lims.hmhj.common;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.List;
/**
* 委托流程控制(状态控制)
*/
public class EntrustFlowUtils {
public static final String SEQ = "->";
public static List<String> getFlowStatusList(String statusPath) {
if (StringUtils.isBlank(statusPath)) {
return null;
}
return Arrays.asList(statusPath.split(SEQ));
}
public static EntrustFlowEnum getPrevFlowStatus(String name, String statusPath) {
if (StringUtils.isBlank(name)) {
return null;
}
List<String> list = getFlowStatusList(statusPath);
if (CollectionUtils.isEmpty(list)) {
return null;
}
int index = list.indexOf(name);
if (0 == index) {
return null;
}
return EntrustFlowEnum.convert(list.get(index - 1));
}
public static EntrustStatusEnum getPrevStatus(String name, String statusPath) {
EntrustFlowEnum prevFlowEnum = getPrevFlowStatus(name, statusPath);
return null == prevFlowEnum ? null : getStatus(prevFlowEnum.getValue().intValue());
}
public static EntrustStatusEnum getStatus(EntrustFlowEnum flowEnum) {
return null == flowEnum ? null : getStatus(flowEnum.getValue().intValue());
}
public static EntrustFlowEnum getNextFlowStatus(String name, String statusPath) {
if (StringUtils.isBlank(name)) {
return null;
}
List<String> list = getFlowStatusList(statusPath);
if (CollectionUtils.isEmpty(list)) {
return null;
}
int index = list.indexOf(name);
if (list.size() - 1 == index) {
return null;
}
return EntrustFlowEnum.convert(list.get(index + 1));
}
public static EntrustStatusEnum getNextStatus(String name, String statusPath) {
EntrustFlowEnum flowEnum = getNextFlowStatus(name, statusPath);
return null == flowEnum ? null : getStatus(flowEnum.getValue().intValue());
}
/**
* 根据流程状态值获取委托状态
*
* @param flowValue
* @return
*/
public static EntrustStatusEnum getStatus(int flowValue) {
EntrustStatusEnum statusEnum = null;
switch (flowValue) {
case 1:
statusEnum = EntrustStatusEnum.DRAFT;
break;
case 2:
statusEnum = EntrustStatusEnum.OUT_DRAFT;
break;
case 3:
statusEnum = EntrustStatusEnum.CHECK;
break;
case 4:
statusEnum = EntrustStatusEnum.MAKE;
break;
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
statusEnum = EntrustStatusEnum.TEST;
break;
case 13:
statusEnum = EntrustStatusEnum.OUT_INPUT;
break;
case 14:
statusEnum = EntrustStatusEnum.QUALITY_CHECK;
break;
}
return statusEnum;
}
}
...@@ -47,10 +47,10 @@ public class EntrustController extends ServiceController { ...@@ -47,10 +47,10 @@ public class EntrustController extends ServiceController {
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class), @ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataTypeClass = String.class),
}) })
@PostMapping("/page") @PostMapping("/page")
public RestResult<Page<Entrust>> getPage(Entrust entrust) { public RestResult<Page<Entrust>> getPage(Entrust entrust) {
entrust.setStatus(EntrustStatusEnum.DRAFT); entrust.setStatus(EntrustStatusEnum.DRAFT);
return success(entrustService.page(getPage(), entrust)); return success(entrustService.page(getPage(), entrust));
} }
@ApiOperation("外委登记分页列表") @ApiOperation("外委登记分页列表")
...@@ -84,8 +84,6 @@ public class EntrustController extends ServiceController { ...@@ -84,8 +84,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("委托登记历史分页列表") @ApiOperation("委托登记历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -105,8 +103,6 @@ public class EntrustController extends ServiceController { ...@@ -105,8 +103,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("委托评审历史分页列表") @ApiOperation("委托评审历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -125,9 +121,6 @@ public class EntrustController extends ServiceController { ...@@ -125,9 +121,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("外委数据录入分页列表") @ApiOperation("外委数据录入分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -142,7 +135,6 @@ public class EntrustController extends ServiceController { ...@@ -142,7 +135,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("外委数据录入历史分页列表") @ApiOperation("外委数据录入历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -163,7 +155,6 @@ public class EntrustController extends ServiceController { ...@@ -163,7 +155,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("委托审核分页列表") @ApiOperation("委托审核分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -178,7 +169,6 @@ public class EntrustController extends ServiceController { ...@@ -178,7 +169,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("委托样品待制备分页列表") @ApiOperation("委托样品待制备分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -193,7 +183,6 @@ public class EntrustController extends ServiceController { ...@@ -193,7 +183,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("委托制备历史分页列表") @ApiOperation("委托制备历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -208,7 +197,6 @@ public class EntrustController extends ServiceController { ...@@ -208,7 +197,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("查询 id 信息") @ApiOperation("查询 id 信息")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class), @ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
...@@ -223,26 +211,25 @@ public class EntrustController extends ServiceController { ...@@ -223,26 +211,25 @@ public class EntrustController extends ServiceController {
@ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class), @ApiImplicitParam(name = "id", value = "主键", required = true, paramType = "path", dataTypeClass = Long.class),
}) })
@PutMapping("/{id}") @PutMapping("/{id}")
public RestResult<Boolean> edit(@PathVariable("id") Long id, Entrust entrust) { public RestResult<Boolean> edit(@PathVariable("id") Long id, Entrust entrust) {
entrust.setId(id); entrust.setId(id);
return success(entrustService.updateById(entrust)); return success(entrustService.updateById(entrust));
} }
@ApiOperation("添加") @ApiOperation("添加")
@PostMapping("/") @PostMapping("/")
public RestResult<Boolean> add(Entrust entrust) { public RestResult<Boolean> add(Entrust entrust) {
return success(entrustService.save(entrust)); return success(entrustService.save(entrust));
} }
@ApiOperation("根据 ids 删除") @ApiOperation("根据 ids 删除")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class), @ApiImplicitParam(name = "ids", value = "主键列表", required = true, paramType = "query", allowMultiple = true, dataTypeClass = Long.class),
}) })
@DeleteMapping("/") @DeleteMapping("/")
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) { public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(entrustService.removeByIds(ids)); return success(entrustService.removeByIds(ids));
} }
@ApiOperation(value = "添加委托单", notes = "添加委托单") @ApiOperation(value = "添加委托单", notes = "添加委托单")
...@@ -250,24 +237,23 @@ public class EntrustController extends ServiceController { ...@@ -250,24 +237,23 @@ public class EntrustController extends ServiceController {
public RestResult<Boolean> addEntrust(@RequestBody EntrustDTO dto) { public RestResult<Boolean> addEntrust(@RequestBody EntrustDTO dto) {
dto.setStatus(EntrustStatusEnum.DRAFT); dto.setStatus(EntrustStatusEnum.DRAFT);
dto.setProgress(EntrustStatusEnum.DRAFT); dto.setProgress(EntrustStatusEnum.DRAFT);
return success(entrustService.saveEntrustDTO(dto,getAccount())); return success(entrustService.saveEntrustDTO(dto, getAccount()));
} }
@ApiOperation(value = "添加外委登记委托单", notes = "添加委托单") @ApiOperation(value = "添加外委登记委托单", notes = "添加委托单")
@PostMapping("/add_out_entrust") @PostMapping("/add_out_entrust")
public RestResult<Boolean> addOutEntrust(@RequestBody EntrustDTO dto) { public RestResult<Boolean> addOutEntrust(@RequestBody EntrustDTO dto) {
dto.setStatus(EntrustStatusEnum.OUT_DRAFT); dto.setStatus(EntrustStatusEnum.OUT_DRAFT);
dto.setProgress(EntrustStatusEnum.OUT_DRAFT); dto.setProgress(EntrustStatusEnum.OUT_DRAFT);
return success(entrustService.saveEntrustDTO(dto,getAccount())); return success(entrustService.saveEntrustDTO(dto, getAccount()));
} }
@ApiOperation(value = "编辑委托单", notes = "编辑报价单") @ApiOperation(value = "编辑委托单", notes = "编辑报价单")
@PostMapping("/edit_entrust") @PostMapping("/edit_entrust")
public RestResult<Boolean> editEntrust(@RequestBody EntrustDTO entrustDTO) { public RestResult<Boolean> editEntrust(@RequestBody EntrustDTO entrustDTO) {
return success(entrustService.editEntrust(entrustDTO,getAccount())); return success(entrustService.editEntrust(entrustDTO, getAccount()));
} }
...@@ -281,52 +267,60 @@ public class EntrustController extends ServiceController { ...@@ -281,52 +267,60 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("提交至外委数据录入") @ApiOperation("提交至外委数据录入")
@PostMapping("/submit_to_out_input") @PostMapping("/submit_to_out_input")
public RestResult<Boolean> submitToOutInput(@RequestParam("ids")Long [] ids) { public RestResult<Boolean> submitToOutInput(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToOutInput(ids,getAccount())); return success(entrustService.submitToOutInput(ids, getAccount()));
} }
@ApiOperation("提交质量判定") @ApiOperation("提交质量判定")
@PostMapping("/out_input_submit_to_quality_check") @PostMapping("/out_input_submit_to_quality_check")
public RestResult<Boolean> outInputSubmitToQualityCheck(@RequestParam("ids")Long [] ids) { public RestResult<Boolean> outInputSubmitToQualityCheck(@RequestParam("ids") Long[] ids) {
return success(entrustService.outInputSubmitToQualityCheck(ids,getAccount())); return success(entrustService.outInputSubmitToQualityCheck(ids, getAccount()));
} }
@ApiOperation("提交至委托评审") @ApiOperation("提交至委托评审")
@PostMapping("/submit_to_check") @PostMapping("/submit_to_check")
public RestResult<Boolean> submitToCheck(@RequestParam("ids")Long [] ids) { public RestResult<Boolean> submitToCheck(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToCheck(ids,getAccount())); return success(entrustService.submitToCheck(ids, getAccount()));
}
@ApiOperation("提交至下一节点")
@PostMapping("/submit_to_next_node")
public RestResult<Boolean> submitToNextNode(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToNextNode(ids, getAccount()));
}
@ApiOperation("退回至上一节点")
@PostMapping("/reject_to_prev_node")
public RestResult<Boolean> rejectToPrevNode(@RequestParam("id") Long id, String reason) {
return success(entrustService.rejectToPrevNode(id, reason, getAccount()));
} }
@ApiOperation("委托评审退回") @ApiOperation("委托评审退回")
@PostMapping("/back_from_check") @PostMapping("/back_from_check")
public RestResult<Boolean> backFromCheck(@RequestParam("ids")Long [] ids,@RequestParam("reason") String reason) { public RestResult<Boolean> backFromCheck(@RequestParam("ids") Long[] ids, @RequestParam("reason") String reason) {
return success(entrustService.backFromCheck(ids,getAccount(),reason)); return success(entrustService.backFromCheck(ids, getAccount(), reason));
} }
@ApiOperation("提交至样品制备") @ApiOperation("提交至样品制备")
@PostMapping("/submit_to_make") @PostMapping("/submit_to_make")
public RestResult<Boolean> submitToMake(@RequestParam("ids")Long [] ids) { public RestResult<Boolean> submitToMake(@RequestParam("ids") Long[] ids) {
return success(entrustService.submitToMake(ids,getAccount())); return success(entrustService.submitToMake(ids, getAccount()));
} }
@ApiOperation("委托登记提交至委托评审") @ApiOperation("委托登记提交至委托评审")
@PostMapping("/register_submit_to_make") @PostMapping("/register_submit_to_make")
public RestResult<Boolean> registerSubmitToMake(@RequestParam("ids")Long [] ids) { public RestResult<Boolean> registerSubmitToMake(@RequestParam("ids") Long[] ids) {
return success(entrustService.registerSubmitToMake(ids,getAccount())); return success(entrustService.registerSubmitToMake(ids, getAccount()));
} }
@ApiOperation("样品接收委托分页列表") @ApiOperation("样品接收委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -343,7 +337,6 @@ public class EntrustController extends ServiceController { ...@@ -343,7 +337,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("样品接收历史委托分页列表") @ApiOperation("样品接收历史委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -360,7 +353,6 @@ public class EntrustController extends ServiceController { ...@@ -360,7 +353,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("任务分配委托分页列表") @ApiOperation("任务分配委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -410,10 +402,25 @@ public class EntrustController extends ServiceController { ...@@ -410,10 +402,25 @@ public class EntrustController extends ServiceController {
public RestResult<Page<EntrustVO>> getPageTaskTest(EntrustVO entrust) { public RestResult<Page<EntrustVO>> getPageTaskTest(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST); entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST);
// 获取当前用户分组 // 获取当前用户分组
// entrust.setGroupNameList(userInfoService.getCurGroupNameList()); entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItem(getPage(), entrust)); return success(entrustService.pageEntrustByItem(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_entrust_test_data")
public RestResult<Page<EntrustVO>> getPageTaskTestData(EntrustVO entrust) {
entrust.setItemStatus(EntrustSampleItemStatusEnum.TEST);
// 获取当前用户分组
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItemData(getPage(), entrust));
}
@ApiOperation("数据录入历史委托分页列表") @ApiOperation("数据录入历史委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
...@@ -435,6 +442,25 @@ public class EntrustController extends ServiceController { ...@@ -435,6 +442,25 @@ public class EntrustController extends ServiceController {
return success(entrustService.pageEntrustByItemHis(getPage(), entrust)); return success(entrustService.pageEntrustByItemHis(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_entrust_test_data_his")
public RestResult<Page<EntrustVO>> getPageTaskTestDataHis(EntrustVO entrust) {
entrust.setItemStatusEnumList(Lists.newArrayList(
EntrustSampleItemStatusEnum.UPDATE_APPLY,
EntrustSampleItemStatusEnum.CHECK,
EntrustSampleItemStatusEnum.AUDIT,
EntrustSampleItemStatusEnum.END
));
// 获取当前用户分组
entrust.setGroupNameList(userInfoService.getCurGroupNameList());
return success(entrustService.pageEntrustByItemDataHis(getPage(), entrust));
}
@ApiOperation("数据复核委托分页列表") @ApiOperation("数据复核委托分页列表")
...@@ -468,7 +494,6 @@ public class EntrustController extends ServiceController { ...@@ -468,7 +494,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("数据审核委托分页列表") @ApiOperation("数据审核委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -497,8 +522,6 @@ public class EntrustController extends ServiceController { ...@@ -497,8 +522,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("报告编制委托分页列表") @ApiOperation("报告编制委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -513,7 +536,6 @@ public class EntrustController extends ServiceController { ...@@ -513,7 +536,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("报告编制历史委托分页列表") @ApiOperation("报告编制历史委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -528,9 +550,6 @@ public class EntrustController extends ServiceController { ...@@ -528,9 +550,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("报告审核委托分页列表") @ApiOperation("报告审核委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -565,7 +584,7 @@ public class EntrustController extends ServiceController { ...@@ -565,7 +584,7 @@ public class EntrustController extends ServiceController {
} }
/***********************************************************************************/ /***********************************************************************************/
@ApiOperation(value = "报告批准委托分页列表",notes = "报告批准委托分页列表") @ApiOperation(value = "报告批准委托分页列表", notes = "报告批准委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @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_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -579,7 +598,7 @@ public class EntrustController extends ServiceController { ...@@ -579,7 +598,7 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation(value = "报告批准历史委托分页列表",notes = "报告批准历史委托分页列表") @ApiOperation(value = "报告批准历史委托分页列表", notes = "报告批准历史委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @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_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -597,7 +616,7 @@ public class EntrustController extends ServiceController { ...@@ -597,7 +616,7 @@ public class EntrustController extends ServiceController {
return success(entrustService.pageEntrustByReportHis(getPage(), entrust)); return success(entrustService.pageEntrustByReportHis(getPage(), entrust));
} }
@ApiOperation(value = "报告发放委托分页列表",notes = "报告发放委托分页列表") @ApiOperation(value = "报告发放委托分页列表", notes = "报告发放委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @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_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -611,7 +630,7 @@ public class EntrustController extends ServiceController { ...@@ -611,7 +630,7 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation(value = "报告发放历史分页列表",notes = "报告发放历史分页列表") @ApiOperation(value = "报告发放历史分页列表", notes = "报告发放历史分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @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_ROWS, value = "每页条数", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -630,7 +649,6 @@ public class EntrustController extends ServiceController { ...@@ -630,7 +649,6 @@ public class EntrustController extends ServiceController {
/******************************************************************/ /******************************************************************/
@ApiOperation("报告签发委托分页列表") @ApiOperation("报告签发委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -662,7 +680,6 @@ public class EntrustController extends ServiceController { ...@@ -662,7 +680,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("质量判定委托分页列表") @ApiOperation("质量判定委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -689,7 +706,7 @@ public class EntrustController extends ServiceController { ...@@ -689,7 +706,7 @@ public class EntrustController extends ServiceController {
public RestResult<Page<EntrustVO>> getPageEntrustJudgeHis(EntrustVO entrust) { public RestResult<Page<EntrustVO>> getPageEntrustJudgeHis(EntrustVO entrust) {
entrust.setSampleStatus(EntrustSampleStatusEnum.END); entrust.setSampleStatus(EntrustSampleStatusEnum.END);
entrust.setJudgeStatusList(Lists.newArrayList( entrust.setJudgeStatusList(Lists.newArrayList(
1,2 1, 2
)); ));
return success(entrustService.pageEntrustJudgeHis(getPage(), entrust)); return success(entrustService.pageEntrustJudgeHis(getPage(), entrust));
} }
...@@ -725,7 +742,6 @@ public class EntrustController extends ServiceController { ...@@ -725,7 +742,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("电子档案委托分页列表") @ApiOperation("电子档案委托分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -741,9 +757,6 @@ public class EntrustController extends ServiceController { ...@@ -741,9 +757,6 @@ public class EntrustController extends ServiceController {
} }
@ApiOperation("委托进度查询") @ApiOperation("委托进度查询")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -756,5 +769,10 @@ public class EntrustController extends ServiceController { ...@@ -756,5 +769,10 @@ public class EntrustController extends ServiceController {
return success(entrustService.pageEntrustProgress(getPage(), entrust)); return success(entrustService.pageEntrustProgress(getPage(), entrust));
} }
@ApiOperation("获取委托状态列表")
@GetMapping("/statusList")
public RestResult<EntrustFlowEnum[]> getStatusList() {
return success(EntrustFlowEnum.values());
}
} }
...@@ -3,12 +3,17 @@ package com.patzn.cloud.service.lims.hmhj.controller; ...@@ -3,12 +3,17 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO; import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -24,6 +29,7 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -24,6 +29,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 委托单样品 前端控制器 * 委托单样品 前端控制器
...@@ -447,4 +453,21 @@ public class EntrustSampleController extends ServiceController { ...@@ -447,4 +453,21 @@ public class EntrustSampleController extends ServiceController {
return success(entrustSampleService.pageTestResultQuery(getPage(), entrustSample)); return success(entrustSampleService.pageTestResultQuery(getPage(), entrustSample));
} }
@ApiOperation("原铝品味统计查询")
@PostMapping("/al_taste_stats_query")
public RestResult<List<AlTasteStatsVO>> getAlTasteStatsQuery(StatsQueryDTO statsQueryDTO) {
return success(entrustSampleService.getAlTasteStatsQuery(statsQueryDTO));
}
@ApiOperation("电解质分子比统计查询")
@PostMapping("/electrolyte_ratio_stats_query")
public RestResult<List<ElectrolyteRatioStatsVO>> getElectrolyteRatioStatsQuery(QueryDTO queryDTO) {
return success(entrustSampleService.getElectrolyteRatioStatsQuery(queryDTO));
}
@ApiOperation("磷生铁统计查询")
@PostMapping("/p_make_fe_stats_query")
public RestResult<Map> getPMakeFeStatsQuery(QueryDTO queryDTO) {
return success(entrustSampleService.getPMakeFeStatsQuery(queryDTO));
}
} }
package com.patzn.cloud.service.lims.hmhj.controller; package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.service.hmhj.entity.Material; import com.patzn.cloud.service.hmhj.entity.Material;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.DeleteMapping;
...@@ -38,6 +39,9 @@ public class MaterialController extends ServiceController { ...@@ -38,6 +39,9 @@ public class MaterialController extends ServiceController {
@Autowired @Autowired
private IMaterialService materialService; private IMaterialService materialService;
@Autowired
private LmsChemicalCategoryClient lmsChemicalCategoryClient;
@ApiOperation("分页列表") @ApiOperation("分页列表")
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class), @ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataTypeClass = Integer.class),
...@@ -83,4 +87,5 @@ public class MaterialController extends ServiceController { ...@@ -83,4 +87,5 @@ public class MaterialController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) { public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(materialService.removeByIds(ids)); return success(materialService.removeByIds(ids));
} }
} }
...@@ -61,6 +61,7 @@ public class UserInspectionCodeController extends ServiceController { ...@@ -61,6 +61,7 @@ public class UserInspectionCodeController extends ServiceController {
@ApiOperation("添加") @ApiOperation("添加")
@PostMapping("/") @PostMapping("/")
public RestResult<Boolean> add(UserInspectionCode userInspectionCode) { public RestResult<Boolean> add(UserInspectionCode userInspectionCode) {
userInspectionCode.setCreator(getAccount().getUserName());
return success(userInspectionCodeService.save(userInspectionCode)); return success(userInspectionCodeService.save(userInspectionCode));
} }
......
...@@ -27,4 +27,6 @@ public interface EntrustMapper extends BatchMapper<Entrust> { ...@@ -27,4 +27,6 @@ public interface EntrustMapper extends BatchMapper<Entrust> {
List<EntrustVO> selectVOList(RowBounds rowBounds, @Param("vo")EntrustVO entrust); List<EntrustVO> selectVOList(RowBounds rowBounds, @Param("vo")EntrustVO entrust);
List<EntrustVO> selectEntrustProgressList(RowBounds rowBounds, @Param("vo")EntrustVO entrust); List<EntrustVO> selectEntrustProgressList(RowBounds rowBounds, @Param("vo")EntrustVO entrust);
List<EntrustVO> selectVOListByItem(Page<EntrustVO> page, @Param("vo") EntrustVO entrust);
} }
...@@ -42,4 +42,6 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem> ...@@ -42,4 +42,6 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
List<EntrustSampleItemVO> selectMinStatusBySampleIds(@Param("sampleIds")List<Long> sampleIds); List<EntrustSampleItemVO> selectMinStatusBySampleIds(@Param("sampleIds")List<Long> sampleIds);
List<EntrustSampleItemVO> selectByEntrustId(@Param("entrustId") Long entrustId); List<EntrustSampleItemVO> selectByEntrustId(@Param("entrustId") Long entrustId);
int selectUnallocatedCountByEntrustId(@Param("entrustId") Long entrustId);
} }
package com.patzn.cloud.service.lims.hmhj.mapper; package com.patzn.cloud.service.lims.hmhj.mapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.commons.mapper.BatchMapper; import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
...@@ -26,4 +31,10 @@ public interface EntrustSampleMapper extends BatchMapper<EntrustSample> { ...@@ -26,4 +31,10 @@ public interface EntrustSampleMapper extends BatchMapper<EntrustSample> {
List<EntrustSampleVO> selectMinStatusByEntrustIds(@Param("entrustIds") List<Long> entrustIds); List<EntrustSampleVO> selectMinStatusByEntrustIds(@Param("entrustIds") List<Long> entrustIds);
List<EntrustSampleVO> selectTestResultQuery(RowBounds rowBounds,@Param("vo") EntrustSampleVO entrustSample); List<EntrustSampleVO> selectTestResultQuery(RowBounds rowBounds,@Param("vo") EntrustSampleVO entrustSample);
List<AlTasteStatsVO> selectAlTasteStats(@Param("vo") StatsQueryDTO queryDTO);
List<ElectrolyteRatioStatsVO> selectElectrolyteRatioStats(@Param("vo") QueryDTO queryDTO);
List<PMakeFeStatsVO> selectPMakeFeStats(@Param("vo") QueryDTO queryDTO);
} }
package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import java.util.List;
import java.util.Map;
/**
* <p>
* 原始记录解析后的数据存储表 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-04
*/
public interface LmsOriginalRecordInfoMapper extends BatchMapper<LmsOriginalRecordInfo> {
/**
* @return
*/
List<LmsOriginalRecordInfo> selectUnGeneratedEntrustData();
List<LmsOriginalRecordInfo> selectUnGeneratedSampleData();
}
...@@ -67,4 +67,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte ...@@ -67,4 +67,6 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
boolean updateQualityJudge(Long[] ids, Account account); boolean updateQualityJudge(Long[] ids, Account account);
List<EntrustSampleItemVO> listMinStatusBySampleIds(List<Long> entrustIds); List<EntrustSampleItemVO> listMinStatusBySampleIds(List<Long> entrustIds);
public boolean isAllocatedByEntrustId(Long entrustId);
} }
...@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.plugins.Page; ...@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO; import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.entity.EntrustSamplePrepare; import com.patzn.cloud.service.hmhj.entity.EntrustSamplePrepare;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum;
import java.util.List; import java.util.List;
...@@ -23,4 +26,6 @@ public interface IEntrustSamplePrepareService extends IBaseService<EntrustSample ...@@ -23,4 +26,6 @@ public interface IEntrustSamplePrepareService extends IBaseService<EntrustSample
boolean makeEnd(SamplePrepareDTO dto, Account account); boolean makeEnd(SamplePrepareDTO dto, Account account);
boolean submitSampleReceive(Long[] ids, Account account); boolean submitSampleReceive(Long[] ids, Account account);
boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum);
} }
...@@ -4,11 +4,19 @@ import com.baomidou.mybatisplus.mapper.Wrapper; ...@@ -4,11 +4,19 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO; import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 服务类 * 服务类
...@@ -53,4 +61,14 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> { ...@@ -53,4 +61,14 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
Page<EntrustSampleVO> pageTestResultQuery(Page<EntrustSampleVO> page, EntrustSampleVO entrustSample); Page<EntrustSampleVO> pageTestResultQuery(Page<EntrustSampleVO> page, EntrustSampleVO entrustSample);
int countByEntrustId(Long id); int countByEntrustId(Long id);
List<AlTasteStatsVO> getAlTasteStatsQuery(StatsQueryDTO queryDTO);
List<ElectrolyteRatioStatsVO> getElectrolyteRatioStatsQuery(QueryDTO queryDTO);
Map<String,Object> getPMakeFeStatsQuery(QueryDTO queryDTO);
boolean updateSampleNextFlowInfo(Entrust entrust, EntrustFlowEnum nextFlowStatus, Account account);
boolean updateSamplePrevFlowInfo(Entrust entrust, EntrustFlowEnum prevFlowStatus, Account account);
} }
...@@ -43,8 +43,12 @@ public interface IEntrustService extends IBaseService<Entrust> { ...@@ -43,8 +43,12 @@ public interface IEntrustService extends IBaseService<Entrust> {
Page<EntrustVO> pageEntrustByItem(Page<EntrustVO> page, EntrustVO entrust); Page<EntrustVO> pageEntrustByItem(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByItemData(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust); Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByItemDataHis(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustBySample(Page<EntrustVO> page, EntrustVO entrust); Page<EntrustVO> pageEntrustBySample(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustByNotSample(Page<EntrustVO> page, EntrustVO entrust); Page<EntrustVO> pageEntrustByNotSample(Page<EntrustVO> page, EntrustVO entrust);
...@@ -64,4 +68,12 @@ public interface IEntrustService extends IBaseService<Entrust> { ...@@ -64,4 +68,12 @@ public interface IEntrustService extends IBaseService<Entrust> {
Page<EntrustVO> pageVO(Page<EntrustVO> page, EntrustVO entrust); Page<EntrustVO> pageVO(Page<EntrustVO> page, EntrustVO entrust);
Page<EntrustVO> pageEntrustProgress(Page<EntrustVO> page, EntrustVO entrust); Page<EntrustVO> pageEntrustProgress(Page<EntrustVO> page, EntrustVO entrust);
boolean submitToNextNode(Long[] ids, Account account);
boolean submitToNextNode(Entrust entrust, Account account);
boolean rejectToPrevNode(Long id,String reason, Account account);
boolean rejectToPrevNode(Entrust entrust,String reason, Account account);
} }
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.lims.collection.entity.LmsOriginalRecordInfo;
import java.util.List;
/**
* 原始记录解析后的数据存储表 服务类
*
* @author meazty
* @since 2021-07-04
*/
public interface ILmsOriginalRecordInfoService extends IBaseService<LmsOriginalRecordInfo> {
Page<LmsOriginalRecordInfo> page(Page<LmsOriginalRecordInfo> page, LmsOriginalRecordInfo lmsOriginalRecordInfo);
boolean removeByIds(List<Long> ids);
boolean generateOriginalRelData();
}
...@@ -3,21 +3,28 @@ package com.patzn.cloud.service.lims.hmhj.service.impl; ...@@ -3,21 +3,28 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.ArrayUtils; import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.oss.starter.OssClient; import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.oss.starter.OssFileResult; import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.Entrust; import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustReport; import com.patzn.cloud.service.hmhj.entity.EntrustReport;
import com.patzn.cloud.service.hmhj.entity.EntrustReportRelSample; import com.patzn.cloud.service.hmhj.entity.EntrustReportRelSample;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustReportStatusEnum; 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.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustReportMapper; 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.IEntrustReportRelSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportService; import com.patzn.cloud.service.lims.hmhj.service.IEntrustReportService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleService; import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleService;
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.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
...@@ -27,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -27,6 +34,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -46,6 +54,8 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -46,6 +54,8 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
private IEntrustReportRelSampleService entrustReportRelSampleService; private IEntrustReportRelSampleService entrustReportRelSampleService;
@Autowired @Autowired
private IEntrustSampleService entrustSampleService; private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustService entrustService;
@Override @Override
...@@ -58,24 +68,24 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -58,24 +68,24 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Override @Override
public Page<EntrustReport> pageStatus(Page<EntrustReport> page, List<EntrustReportStatusEnum> reportStatusList, EntrustReport entrustReport) { public Page<EntrustReport> pageStatus(Page<EntrustReport> page, List<EntrustReportStatusEnum> reportStatusList, EntrustReport entrustReport) {
Wrapper wrapper = new EntityWrapper<>(entrustReport); Wrapper wrapper = new EntityWrapper<>(entrustReport);
if (CollectionUtils.isNotEmpty(reportStatusList)){ if (CollectionUtils.isNotEmpty(reportStatusList)) {
wrapper.in("status",reportStatusList); wrapper.in("status", reportStatusList);
} }
return this.page(page, wrapper); return this.page(page, wrapper);
} }
@Override @Override
public boolean removeByIds(List<Long> ids) { public boolean removeByIds(List<Long> ids) {
entrustReportRelSampleService.remove(Condition.create().in("report_id",ids)); entrustReportRelSampleService.remove(Condition.create().in("report_id", ids));
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }
@Override @Override
public void uploadReportGenerateDocx(Entrust entrust, Long[] ids, Account account, String name,String remark, File file) { public void uploadReportGenerateDocx(Entrust entrust, Long[] ids, Account account, String name, String remark, File file) {
OssFileResult fileResult = ossClient.upload(file); OssFileResult fileResult = ossClient.upload(file);
if (null !=fileResult){ if (null != fileResult) {
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setEntrustId(entrust.getId()); report.setEntrustId(entrust.getId());
report.setRemark(remark); report.setRemark(remark);
...@@ -86,10 +96,10 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -86,10 +96,10 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
report.setObjectKey(fileResult.getObjectKey()); report.setObjectKey(fileResult.getObjectKey());
report.setVersionId(fileResult.getVersionId()); report.setVersionId(fileResult.getVersionId());
report.setSampleName(name); report.setSampleName(name);
if (save(report)){ if (save(report)) {
List<EntrustReportRelSample> saveRel = new ArrayList<>(); List<EntrustReportRelSample> saveRel = new ArrayList<>();
for (Long sampleId:ids) { for (Long sampleId : ids) {
EntrustReportRelSample reportRelSample = new EntrustReportRelSample(); EntrustReportRelSample reportRelSample = new EntrustReportRelSample();
reportRelSample.setReportId(report.getId()); reportRelSample.setReportId(report.getId());
reportRelSample.setSampleId(sampleId); reportRelSample.setSampleId(sampleId);
...@@ -97,7 +107,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -97,7 +107,7 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
saveRel.add(reportRelSample); saveRel.add(reportRelSample);
} }
if (CollectionUtils.isNotEmpty(saveRel)){ if (CollectionUtils.isNotEmpty(saveRel)) {
entrustReportRelSampleService.saveBatch(saveRel); entrustReportRelSampleService.saveBatch(saveRel);
} }
} }
...@@ -108,228 +118,305 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe ...@@ -108,228 +118,305 @@ public class EntrustReportServiceImpl extends BaseServiceImpl<EntrustReportMappe
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitReportMake(Long[] ids, Account account) { public boolean submitReportMake(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.CHECK); report.setStatus(EntrustReportStatusEnum.CHECK);
report.setProgress(EntrustReportStatusEnum.CHECK); report.setProgress(EntrustReportStatusEnum.CHECK);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids)); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){ if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s->{ List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId(); return s.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){ if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_CHECK); sample.setStatus(EntrustSampleStatusEnum.REPORT_CHECK);
sample.setProgress(EntrustSampleStatusEnum.REPORT_CHECK); sample.setProgress(EntrustSampleStatusEnum.REPORT_CHECK);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds)); entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
} }
} }
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
return super.update(report, Condition.create().in("id",ids)); private Entrust getByReportId(Long reportId) {
EntrustReport report = getById(reportId);
if (null == report) {
return null;
}
return entrustService.getById(report.getEntrustId());
}
private boolean executeSubmitOperation(Entrust entrust, Account account) {
if (null == entrust || StringUtils.isBlank(entrust.getStatusPath())) {
logger.error("委托为空,或者委托路径为空不进行下一步操作");
return false;
}
entrustService.submitToNextNode(entrust, account);
return true;
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitReportCheck(Long[] ids, Account account) { public boolean submitReportCheck(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ALLOW); report.setStatus(EntrustReportStatusEnum.ALLOW);
report.setProgress(EntrustReportStatusEnum.ALLOW); report.setProgress(EntrustReportStatusEnum.ALLOW);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids)); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){ if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s->{ List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId(); return s.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){ if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_ALLOW); sample.setStatus(EntrustSampleStatusEnum.REPORT_ALLOW);
sample.setProgress(EntrustSampleStatusEnum.REPORT_ALLOW); sample.setProgress(EntrustSampleStatusEnum.REPORT_ALLOW);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds)); entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
} }
} }
return super.update(report, Condition.create().in("id",ids)); // 存在的状态路径时,方可进入处理操作
} executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitFromAllowToSend(Long[] ids, Account account) { public boolean submitFromAllowToSend(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.SEND); report.setStatus(EntrustReportStatusEnum.SEND);
report.setProgress(EntrustReportStatusEnum.SEND); report.setProgress(EntrustReportStatusEnum.SEND);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids)); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){ if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s->{ List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId(); return s.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){ if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_SEND); sample.setStatus(EntrustSampleStatusEnum.REPORT_SEND);
sample.setProgress(EntrustSampleStatusEnum.REPORT_SEND); sample.setProgress(EntrustSampleStatusEnum.REPORT_SEND);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds)); entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
} }
} }
return super.update(report, Condition.create().in("id",ids)); // 存在的状态路径时,方可进入处理操作
} executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
}
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitFromAllowToIssue(Long[] ids, Account account) { public boolean submitFromAllowToIssue(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ISSUE); report.setStatus(EntrustReportStatusEnum.ISSUE);
report.setProgress(EntrustReportStatusEnum.ISSUE); report.setProgress(EntrustReportStatusEnum.ISSUE);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids)); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){ if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s->{ List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId(); return s.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){ if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.REPORT_ISSUE); sample.setStatus(EntrustSampleStatusEnum.REPORT_ISSUE);
sample.setProgress(EntrustSampleStatusEnum.REPORT_ISSUE); sample.setProgress(EntrustSampleStatusEnum.REPORT_ISSUE);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds)); entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
} }
} }
return super.update(report, Condition.create().in("id",ids)); // 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitFromSendToJudge(Long[] ids, Account account) { public boolean submitFromSendToJudge(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.END); report.setStatus(EntrustReportStatusEnum.END);
report.setProgress(EntrustReportStatusEnum.END); report.setProgress(EntrustReportStatusEnum.END);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids)); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){ if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s->{ List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId(); return s.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){ if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.END); sample.setStatus(EntrustSampleStatusEnum.END);
sample.setProgress(EntrustSampleStatusEnum.END); sample.setProgress(EntrustSampleStatusEnum.END);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds)); entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
} }
} }
return super.update(report, Condition.create().in("id",ids)); // 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitReportIssue(Long[] ids, Account account) { public boolean submitReportIssue(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要提交的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.END); report.setStatus(EntrustReportStatusEnum.END);
report.setProgress(EntrustReportStatusEnum.END); report.setProgress(EntrustReportStatusEnum.END);
List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id",ids)); List<EntrustReportRelSample> relSamples = entrustReportRelSampleService.list(Condition.create().in("report_id", ids));
if (CollectionUtils.isNotEmpty(relSamples)){ if (CollectionUtils.isNotEmpty(relSamples)) {
List<Long> sampleIds = relSamples.stream().map(s->{ List<Long> sampleIds = relSamples.stream().map(s -> {
return s.getSampleId(); return s.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sampleIds)){ if (CollectionUtils.isNotEmpty(sampleIds)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.END); sample.setStatus(EntrustSampleStatusEnum.END);
sample.setProgress(EntrustSampleStatusEnum.END); sample.setProgress(EntrustSampleStatusEnum.END);
entrustSampleService.update(sample,Condition.create().in("id",sampleIds)); entrustSampleService.update(sample, Condition.create().in("id", sampleIds));
} }
} }
return super.update(report, Condition.create().in("id",ids));
// 存在的状态路径时,方可进入处理操作
executeSubmitOperation(getByReportId(ids[0]), account);
return super.update(report, Condition.create().in("id", ids));
} }
@Override @Override
public boolean backReportCheck(Long[] ids, String reason, Account account) { public boolean backReportCheck(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.MAKING); report.setStatus(EntrustReportStatusEnum.MAKING);
report.setProgress(EntrustReportStatusEnum.BACK_CHECK); report.setProgress(EntrustReportStatusEnum.BACK_CHECK);
return super.update(report, Condition.create().in("id",ids)); rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.MAKING, account);
return super.update(report, Condition.create().in("id", ids));
}
private void rejectEntrustInfo(Long[] reportIds, String reason, EntrustReportStatusEnum reportStatusEnum, Account account) {
List<EntrustReport> reports = baseMapper.selectBatchIds(Arrays.asList(reportIds));
List<Long> entrustIds = reports.stream().map(t -> t.getEntrustId()).collect(Collectors.toList());
List<Entrust> entrustList = entrustService.getBatchIds(entrustIds);
entrustList.stream().forEach(t -> {
if (StringUtils.isNotBlank(t.getStatusPath())) {
entrustService.rejectToPrevNode(t, reason, account);
} else {
rejectByReportStatus(t, reportStatusEnum, account);
}
});
}
/**
* 通过报告状态更改驳回的委托样品状态
*
* @param entrust
* @param reportStatus
* @param account
*/
private void rejectByReportStatus(Entrust entrust, EntrustReportStatusEnum reportStatus, Account account) {
EntrustSample entrustSample = new EntrustSample();
EntrustSampleStatusEnum sampleStatusEnum = null;
if (reportStatus == EntrustReportStatusEnum.MAKING) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_MAKE;
} else if (reportStatus == EntrustReportStatusEnum.CHECK) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_CHECK;
} else if (reportStatus == EntrustReportStatusEnum.ALLOW) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_ALLOW;
} else if (reportStatus == EntrustReportStatusEnum.ISSUE) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_ISSUE;
} else if (reportStatus == EntrustReportStatusEnum.SEND) {
sampleStatusEnum = EntrustSampleStatusEnum.REPORT_SEND;
}
if (null != sampleStatusEnum) {
entrustSample.setStatus(sampleStatusEnum);
entrustSample.setProgress(sampleStatusEnum);
entrustSampleService.update(entrustSample, Condition.create().eq("entrust_id", entrust.getId()));
}
} }
@Override @Override
public boolean backReportIssue(Long[] ids, String reason, Account account) { public boolean backReportIssue(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.MAKING); report.setStatus(EntrustReportStatusEnum.MAKING);
report.setProgress(EntrustReportStatusEnum.BACK_ISSUE); report.setProgress(EntrustReportStatusEnum.BACK_ISSUE);
return super.update(report, Condition.create().in("id",ids)); rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.MAKING, account);
return super.update(report, Condition.create().in("id", ids));
} }
@Override @Override
public boolean backFromReportSendToAllow(Long[] ids, String reason, Account account) { public boolean backFromReportSendToAllow(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ALLOW); report.setStatus(EntrustReportStatusEnum.ALLOW);
report.setProgress(EntrustReportStatusEnum.BACK_SEND); report.setProgress(EntrustReportStatusEnum.BACK_SEND);
return super.update(report, Condition.create().in("id",ids)); rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.ALLOW, account);
return super.update(report, Condition.create().in("id", ids));
} }
@Override @Override
public boolean backFromReportAllowToCheck(Long[] ids, String reason, Account account) { public boolean backFromReportAllowToCheck(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.CHECK); report.setStatus(EntrustReportStatusEnum.CHECK);
report.setProgress(EntrustReportStatusEnum.BACK_ALLOW); report.setProgress(EntrustReportStatusEnum.BACK_ALLOW);
return super.update(report, Condition.create().in("id",ids)); rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.CHECK, account);
return super.update(report, Condition.create().in("id", ids));
} }
@Override @Override
public boolean backFromReportIssueToAllow(Long[] ids, String reason, Account account) { public boolean backFromReportIssueToAllow(Long[] ids, String reason, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择要退回的报告"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要退回的报告");
EntrustReport report = new EntrustReport(); EntrustReport report = new EntrustReport();
report.setStatus(EntrustReportStatusEnum.ALLOW); report.setStatus(EntrustReportStatusEnum.ALLOW);
report.setProgress(EntrustReportStatusEnum.BACK_ISSUE); report.setProgress(EntrustReportStatusEnum.BACK_ISSUE);
return super.update(report, Condition.create().in("id",ids)); rejectEntrustInfo(ids, reason, EntrustReportStatusEnum.ALLOW, account);
return super.update(report, Condition.create().in("id", ids));
} }
......
...@@ -16,6 +16,7 @@ import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum; ...@@ -16,6 +16,7 @@ import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.lims.common.CompareUtils; 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.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemMapper;
import com.patzn.cloud.service.lims.hmhj.original.*; import com.patzn.cloud.service.lims.hmhj.original.*;
...@@ -131,9 +132,30 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -131,9 +132,30 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
super.update(item, Condition.create().in("id", ids)); super.update(item, Condition.create().in("id", ids));
entrustSampleItemRecordService.record(ids, EntrustSampleItemStatusEnum.ALLOT.getDisplay(), EntrustSampleItemStatusEnum.TEST.getDisplay(), 0, "任务分配", account); entrustSampleItemRecordService.record(ids, EntrustSampleItemStatusEnum.ALLOT.getDisplay(), EntrustSampleItemStatusEnum.TEST.getDisplay(), 0, "任务分配", account);
// 判定是否委托下的检测项目都已分配
Entrust entrust = getEntrustByItemId(ids[0]);
if(null != entrust && isAllocatedByEntrustId(entrust.getId()) && StringUtils.isNotBlank(entrust.getStatusPath())){
entrustService.submitToNextNode(entrust,account);
}
return true; return true;
} }
private Entrust getEntrustByItemId(Long itemId){
if(null == itemId){
return null;
}
EntrustSampleItem entrustSampleItem = baseMapper.selectById(itemId);
if(null == entrustSampleItem){
return null;
}
EntrustSample entrustSample = entrustSampleService.getById(entrustSampleItem.getEntrustSampleId());
if(null == entrustSample || null == entrustSample.getEntrustId()){
return null;
}
return entrustService.getById(entrustSample.getEntrustId());
}
@Override @Override
public Page<EntrustSampleItemVO> pageByItemLeft(Page<EntrustSampleItemVO> page, EntrustSampleItemVO itemVO) { public Page<EntrustSampleItemVO> pageByItemLeft(Page<EntrustSampleItemVO> page, EntrustSampleItemVO itemVO) {
...@@ -214,13 +236,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -214,13 +236,20 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
// 提交为报告编制 // 提交为报告编制
EntrustSample sample = new EntrustSample().setStatus(EntrustSampleStatusEnum.REPORT_MAKE).setLid(account.getUserId()).setLtime(new Date()); EntrustSample sample = new EntrustSample().setStatus(EntrustSampleStatusEnum.REPORT_MAKE).setLid(account.getUserId()).setLtime(new Date());
entrustSampleService.update(sample, Condition.create().eq("entrust_id", entrustId)); entrustSampleService.update(sample, Condition.create().eq("entrust_id", entrustId));
// 提交到下一节点,可能是不更改状态
if(isConfigureStatusPath(entrust)){
entrustService.submitToNextNode(entrust,account);
return true;
}
// 样品操作日志 // 样品操作日志
// 暂时不提供 // 暂时不提供
/// 修改委托信息 // 修改委托信息
entrust.setLid(account.getUserId()).setLtime(new Date()).setProgress(EntrustStatusEnum.MAKE).setStatus(EntrustStatusEnum.MAKE); entrust.setLid(account.getUserId()).setLtime(new Date()).setProgress(EntrustStatusEnum.TEST).setStatus(EntrustStatusEnum.TEST);
entrustService.updateById(entrust); entrustService.updateById(entrust);
// 添加委托日志 // 添加委托日志
entrustRecordService.record(new Long[]{entrustId}, EntrustStatusEnum.TEST.getDisplay(), EntrustStatusEnum.TEST.getDisplay(), 0, account, "提交至报告编制"); entrustRecordService.record(new Long[]{entrustId}, EntrustStatusEnum.TEST.getDisplay(), EntrustStatusEnum.TEST.getDisplay(), 0, account, "提交至报告编制");
return true; return true;
} }
...@@ -702,5 +731,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI ...@@ -702,5 +731,15 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.selectVOListByIds(ids); return baseMapper.selectVOListByIds(ids);
} }
@Override
public boolean isAllocatedByEntrustId(Long entrustId){
if(null == entrustId || 0l== entrustId.longValue()){
return false;
}
return baseMapper.selectUnallocatedCountByEntrustId(entrustId) == 0;
}
private boolean isConfigureStatusPath(Entrust entrust){
return StringUtils.isBlank(entrust.getStatusPath()) ? false : true;
}
} }
package com.patzn.cloud.service.lims.hmhj.service.impl; package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition; import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.ArrayUtils; import com.baomidou.mybatisplus.toolkit.ArrayUtils;
import com.baomidou.mybatisplus.toolkit.CollectionUtils; import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.StringUtils;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO; import com.patzn.cloud.service.hmhj.dto.SamplePrepareDTO;
...@@ -9,6 +11,7 @@ import com.patzn.cloud.service.hmhj.entity.*; ...@@ -9,6 +11,7 @@ import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.*; import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleBackupVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSamplePrepareMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSamplePrepareMapper;
import com.patzn.cloud.service.lims.hmhj.service.*; import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
...@@ -21,12 +24,13 @@ import com.baomidou.mybatisplus.plugins.Page; ...@@ -21,12 +24,13 @@ import com.baomidou.mybatisplus.plugins.Page;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* 服务实现类 * 服务实现类
* *
* @author wwd * @author wwd
* @since 2021-02-22 * @since 2021-02-22
...@@ -63,23 +67,23 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp ...@@ -63,23 +67,23 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean makeEnd(SamplePrepareDTO dto, Account account) { public boolean makeEnd(SamplePrepareDTO dto, Account account) {
RestAssert.fail(null == dto,"请填写制备信息"); RestAssert.fail(null == dto, "请填写制备信息");
List<EntrustSampleVO> sampleVOList = dto.getSampleVOList(); List<EntrustSampleVO> sampleVOList = dto.getSampleVOList();
RestAssert.fail(CollectionUtils.isEmpty(sampleVOList),"请填写制备信息"); RestAssert.fail(CollectionUtils.isEmpty(sampleVOList), "请填写制备信息");
List<EntrustSamplePrepare> savePrepare = new ArrayList<>(); List<EntrustSamplePrepare> savePrepare = new ArrayList<>();
List<Long> sampleIdsList = new ArrayList<>(); List<Long> sampleIdsList = new ArrayList<>();
for (EntrustSampleVO vo: sampleVOList) { for (EntrustSampleVO vo : sampleVOList) {
EntrustSamplePrepare prepare = vo.convert(EntrustSamplePrepare.class); EntrustSamplePrepare prepare = vo.convert(EntrustSamplePrepare.class);
prepare.setEntrustSampleId(vo.getEntrustSampleId()); prepare.setEntrustSampleId(vo.getEntrustSampleId());
prepare.setStatus(EntrustSamplePrepareStatusEnum.RECEIVE); prepare.setStatus(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setProgress(EntrustSamplePrepareStatusEnum.RECEIVE); prepare.setProgress(EntrustSamplePrepareStatusEnum.RECEIVE);
prepare.setId(null); prepare.setId(null);
savePrepare.add(prepare); savePrepare.add(prepare);
sampleIdsList.add(vo.getEntrustSampleId()); sampleIdsList.add(vo.getEntrustSampleId());
} }
...@@ -88,16 +92,15 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp ...@@ -88,16 +92,15 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
Entrust entrust = entrustService.getById(sampleList.get(0).getEntrustId()); Entrust entrust = entrustService.getById(sampleList.get(0).getEntrustId());
List<EntrustSampleBackup> backupList = entrustSampleBackupService.list(Condition.create().in("sample_id", sampleIdsList));
List<EntrustSampleBackup> backupList = entrustSampleBackupService.list(Condition.create().in("sample_id",sampleIdsList)); List<Long> haveSampleIds = backupList.stream().map(b -> {
List<Long> haveSampleIds = backupList.stream().map(b->{
return b.getSampleId(); return b.getSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
List<EntrustSampleBackup> saveBackupList = new ArrayList<>(); List<EntrustSampleBackup> saveBackupList = new ArrayList<>();
for (EntrustSample sample:sampleList) { for (EntrustSample sample : sampleList) {
if (haveSampleIds.contains(sample.getId())){ if (haveSampleIds.contains(sample.getId())) {
continue; continue;
} }
EntrustSampleBackup backup = new EntrustSampleBackup(); EntrustSampleBackup backup = new EntrustSampleBackup();
...@@ -112,30 +115,40 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp ...@@ -112,30 +115,40 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
saveBackupList.add(backup); saveBackupList.add(backup);
// 添加样品管理数据 // 添加样品管理数据
EntrustSampleBackup manage = new EntrustSampleBackup(); EntrustSampleBackup manage = new EntrustSampleBackup();
BeanUtils.copyProperties(backup,manage); BeanUtils.copyProperties(backup, manage);
// 类型:样品 // 类型:样品
manage.setType("YP"); manage.setType("YP");
manage.setStatus(EntrustSampleBackupStatusEnum.MANAGE_ING); manage.setStatus(EntrustSampleBackupStatusEnum.MANAGE_ING);
manage.setProgress(EntrustSampleBackupStatusEnum.MANAGE_ING); manage.setProgress(EntrustSampleBackupStatusEnum.MANAGE_ING);
saveBackupList.add(manage); saveBackupList.add(manage);
} }
if (CollectionUtils.isNotEmpty(saveBackupList)){ if (CollectionUtils.isNotEmpty(saveBackupList)) {
entrustSampleBackupService.saveBatch(saveBackupList); entrustSampleBackupService.saveBatch(saveBackupList);
} }
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.RECEIVE); sample.setStatus(EntrustSampleStatusEnum.RECEIVE);
sample.setProgress(EntrustSampleStatusEnum.RECEIVE); sample.setProgress(EntrustSampleStatusEnum.RECEIVE);
entrustSampleService.update(sample,Condition.create().in("id",sampleIdsList)); entrustSampleService.update(sample, Condition.create().in("id", sampleIdsList));
saveBatch(savePrepare); saveBatch(savePrepare);
List<EntrustSample> checkMakeList = entrustSampleService.list(Condition.create().eq("entrust_id",entrust.getId()).eq("status",EntrustSampleStatusEnum.DRAFT)); List<EntrustSample> checkMakeList = entrustSampleService.list(Condition.create().eq("entrust_id", entrust.getId()).eq("status", EntrustSampleStatusEnum.DRAFT));
if (CollectionUtils.isEmpty(checkMakeList)){ if (CollectionUtils.isEmpty(checkMakeList) && StringUtils.isNotEmpty(entrust.getStatusPath())) {
Entrust updateEntrust = new Entrust(); // String flowStatus = entrust.getFlowStatus();
updateEntrust.setStatus(EntrustStatusEnum.TEST); // String statusPath = entrust.getStatusPath();
updateEntrust.setProgress(EntrustStatusEnum.TEST); // // 获取委托的状态
updateEntrust.setId(entrust.getId()); // EntrustStatusEnum nextStatus = EntrustFlowUtils.getNextStatus(flowStatus,statusPath);
entrustService.updateById(updateEntrust); // Entrust updateEntrust = new Entrust();
// updateEntrust.setStatus(EntrustStatusEnum.TEST);
// updateEntrust.setProgress(EntrustStatusEnum.TEST);
// if(null != nextStatus){
// updateEntrust.setStatus(nextStatus);
// updateEntrust.setProgress(nextStatus);
// }
// updateEntrust.setId(entrust.getId());
// entrustService.updateById(updateEntrust);
// 根据流程状态提交
entrustService.submitToNextNode(entrust, account);
} }
...@@ -145,17 +158,17 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp ...@@ -145,17 +158,17 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean submitSampleReceive(Long[] ids, Account account) { public boolean submitSampleReceive(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids),"请选择检测样品"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择检测样品");
List<EntrustSamplePrepare> prepareList = super.list(Condition.create().in("id",ids)); List<EntrustSamplePrepare> prepareList = super.list(Condition.create().in("id", ids));
RestAssert.fail(CollectionUtils.isEmpty(prepareList),"请选择检测样品"); RestAssert.fail(CollectionUtils.isEmpty(prepareList), "请选择检测样品");
List<Long> sampleIdsList = new ArrayList<>(); List<Long> sampleIdsList = new ArrayList<>();
for (EntrustSamplePrepare prepare:prepareList) { for (EntrustSamplePrepare prepare : prepareList) {
if (null != prepare.getEntrustSampleId() && null != prepare.getGroupId() ){ if (null != prepare.getEntrustSampleId() && null != prepare.getGroupId()) {
EntrustSampleItem item = new EntrustSampleItem(); EntrustSampleItem item = new EntrustSampleItem();
item.setStatus(EntrustSampleItemStatusEnum.ALLOT); item.setStatus(EntrustSampleItemStatusEnum.ALLOT);
item.setProgress(EntrustSampleItemStatusEnum.ALLOT); item.setProgress(EntrustSampleItemStatusEnum.ALLOT);
entrustSampleItemService.update(item,Condition.create().eq("entrust_sample_id",prepare.getEntrustSampleId()).eq("group_id",prepare.getGroupId())); entrustSampleItemService.update(item, Condition.create().eq("entrust_sample_id", prepare.getEntrustSampleId()).eq("group_id", prepare.getGroupId()));
} }
sampleIdsList.add(prepare.getEntrustSampleId()); sampleIdsList.add(prepare.getEntrustSampleId());
} }
...@@ -164,32 +177,72 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp ...@@ -164,32 +177,72 @@ public class EntrustSamplePrepareServiceImpl extends BaseServiceImpl<EntrustSamp
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST); prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST); prepare.setStatus(EntrustSamplePrepareStatusEnum.TEST);
super.update(prepare,Condition.create().in("id",ids)); super.update(prepare, Condition.create().in("id", ids));
List<EntrustSamplePrepareStatusEnum> statusNotOkList = new ArrayList<>(); List<EntrustSamplePrepareStatusEnum> statusNotOkList = new ArrayList<>();
statusNotOkList.add(EntrustSamplePrepareStatusEnum.RECEIVE); statusNotOkList.add(EntrustSamplePrepareStatusEnum.RECEIVE);
statusNotOkList.add(EntrustSamplePrepareStatusEnum.RECEIVE_OK); statusNotOkList.add(EntrustSamplePrepareStatusEnum.RECEIVE_OK);
List<EntrustSamplePrepare> preparesNotOkList =super.list(Condition.create().in("id",sampleIdsList).in("status",statusNotOkList)); List<EntrustSamplePrepare> preparesNotOkList = super.list(Condition.create().in("id", sampleIdsList).in("status", statusNotOkList));
List<Long> notOkSampleIds = preparesNotOkList.stream().map(i->{ List<Long> notOkSampleIds = preparesNotOkList.stream().map(i -> {
return i.getEntrustSampleId(); return i.getEntrustSampleId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
List<Long> changeList = new ArrayList<>(); List<Long> changeList = new ArrayList<>();
for (Long id:sampleIdsList) { for (Long id : sampleIdsList) {
if (!notOkSampleIds.contains(id)){ if (!notOkSampleIds.contains(id)) {
changeList.add(id); changeList.add(id);
} }
} }
if (CollectionUtils.isNotEmpty(changeList)){ if (CollectionUtils.isNotEmpty(changeList)) {
EntrustSample sample = new EntrustSample(); EntrustSample sample = new EntrustSample();
sample.setStatus(EntrustSampleStatusEnum.TEST); sample.setStatus(EntrustSampleStatusEnum.TEST);
sample.setProgress(EntrustSampleStatusEnum.TEST); sample.setProgress(EntrustSampleStatusEnum.TEST);
entrustSampleService.update(sample,Condition.create().in("id",changeList)); entrustSampleService.update(sample, Condition.create().in("id", changeList));
}
if (CollectionUtils.isEmpty(notOkSampleIds)) {
EntrustSample entrustSample = entrustSampleService.getById(prepareList.get(0).getEntrustSampleId());
Entrust entrust = entrustService.getById(entrustSample.getEntrustId());
if (StringUtils.isNotEmpty(entrust.getStatusPath())) {
entrustService.submitToNextNode(entrust, account);
}
} }
return true; return true;
} }
@Override
public boolean addOrUpdateToSetStatus(Long[] sampleIds, EntrustSamplePrepareStatusEnum statusEnum) {
List<EntrustSample> sampleList = entrustSampleService.getBatchIds(Arrays.asList(sampleIds));
if (CollectionUtils.isEmpty(sampleList)) {
return false;
}
// 默认为:待接收
statusEnum = null == statusEnum ? EntrustSamplePrepareStatusEnum.RECEIVE : statusEnum;
List<EntrustSamplePrepare> prepareList = list(Condition.create().in("entrust_sample_id", sampleIds).eq("deleted", 0));
// 判定是否为空,为空新建数据并设置状态保存,不为空更改状态更新
if (CollectionUtils.isEmpty(prepareList)) {
EntrustSamplePrepareStatusEnum finalStatusEnum = statusEnum;
prepareList = sampleList.stream().map(t -> {
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setEntrustSampleId(t.getId()).setStatus(finalStatusEnum)
//.setGroupId(1401433878527459329l).setGroupName("化验室")
.setProgress(finalStatusEnum)
.setCompanyId(t.getCompanyId()).setPrintNum(1).setMakeType("送检样");
return prepare;
}).collect(Collectors.toList());
saveBatch(prepareList);
} else {
EntrustSamplePrepare prepare = new EntrustSamplePrepare();
prepare.setStatus(statusEnum).setStatus(statusEnum);
update(prepare,Condition.create().in("entrust_sample_id",sampleIds).eq("deleted", 0));
}
return false;
}
} }
...@@ -10,12 +10,12 @@ import com.patzn.cloud.commons.toolkit.FileUtils; ...@@ -10,12 +10,12 @@ import com.patzn.cloud.commons.toolkit.FileUtils;
import com.patzn.cloud.feign.base.client.SysFileTemplateClient; import com.patzn.cloud.feign.base.client.SysFileTemplateClient;
import com.patzn.cloud.oss.starter.OssClient; import com.patzn.cloud.oss.starter.OssClient;
import com.patzn.cloud.service.base.entity.SysFileTemplate; import com.patzn.cloud.service.base.entity.SysFileTemplate;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO; import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.*; import com.patzn.cloud.service.hmhj.entity.*;
import com.patzn.cloud.service.hmhj.enums.ContractSampleStatusEnum; import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO; import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.lims.common.StringHandleUtils; import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil; 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.mapper.EntrustSampleMapper;
...@@ -24,6 +24,8 @@ import com.patzn.cloud.service.lims.hmhj.service.*; ...@@ -24,6 +24,8 @@ import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.poibox.xwpf.PoiUtil2007; import com.patzn.poibox.xwpf.PoiUtil2007;
import com.patzn.poibox.xwpf.XWPFTemplate; 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.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellRangeAddress;
...@@ -44,6 +46,7 @@ import java.io.FileOutputStream; ...@@ -44,6 +46,7 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -89,6 +92,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe ...@@ -89,6 +92,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Autowired @Autowired
private IContractSampleService contractSampleService; private IContractSampleService contractSampleService;
@Autowired @Autowired
private IEntrustSamplePrepareService entrustSamplePrepareService;
@Autowired
private IContractSampleRecordService contractSampleRecordService; private IContractSampleRecordService contractSampleRecordService;
@Override @Override
...@@ -141,39 +146,282 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe ...@@ -141,39 +146,282 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Override @Override
public Page<EntrustSampleVO> pageTestResultQuery(Page<EntrustSampleVO> page, EntrustSampleVO entrustSample) { public Page<EntrustSampleVO> pageTestResultQuery(Page<EntrustSampleVO> page, EntrustSampleVO entrustSample) {
List<EntrustSampleVO> voList = baseMapper.selectTestResultQuery(page,entrustSample); List<EntrustSampleVO> voList = baseMapper.selectTestResultQuery(page, entrustSample);
if (CollectionUtils.isEmpty(voList)){ if (CollectionUtils.isEmpty(voList)) {
return page; return page;
} }
List<Long> sampleIds = voList.stream().map(s->{ List<Long> sampleIds = voList.stream().map(s -> {
return s.getId(); return s.getId();
}).collect(Collectors.toList()); }).collect(Collectors.toList());
List<EntrustSampleItemIndexVO> indexList = entrustSampleItemIndexService.listVOBySampleIds(sampleIds); List<EntrustSampleItemIndexVO> indexList = entrustSampleItemIndexService.listVOBySampleIds(sampleIds);
if (CollectionUtils.isEmpty(indexList)){ if (CollectionUtils.isEmpty(indexList)) {
return page.setRecords(voList); return page.setRecords(voList);
} }
Map<Long,List<EntrustSampleItemIndex>> sampleIndexMap = new HashMap<>(); Map<Long, List<EntrustSampleItemIndex>> sampleIndexMap = new HashMap<>();
for (EntrustSampleItemIndexVO entrustSampleItemIndex : indexList) { for (EntrustSampleItemIndexVO entrustSampleItemIndex : indexList) {
if (sampleIndexMap.containsKey(entrustSampleItemIndex.getSampleId())){ if (sampleIndexMap.containsKey(entrustSampleItemIndex.getSampleId())) {
List<EntrustSampleItemIndex> itemIndexList = sampleIndexMap.get(entrustSampleItemIndex.getSampleId()); List<EntrustSampleItemIndex> itemIndexList = sampleIndexMap.get(entrustSampleItemIndex.getSampleId());
itemIndexList.add(entrustSampleItemIndex); itemIndexList.add(entrustSampleItemIndex);
sampleIndexMap.put(entrustSampleItemIndex.getSampleId(),itemIndexList); sampleIndexMap.put(entrustSampleItemIndex.getSampleId(), itemIndexList);
}else { } else {
List<EntrustSampleItemIndex> itemIndexList = Lists.newArrayList(); List<EntrustSampleItemIndex> itemIndexList = Lists.newArrayList();
itemIndexList.add(entrustSampleItemIndex); itemIndexList.add(entrustSampleItemIndex);
sampleIndexMap.put(entrustSampleItemIndex.getSampleId(),itemIndexList); sampleIndexMap.put(entrustSampleItemIndex.getSampleId(), itemIndexList);
} }
} }
for (EntrustSampleVO vo : voList) { for (EntrustSampleVO vo : voList) {
vo.setIndexList(sampleIndexMap.get(vo.getId())); vo.setIndexList(sampleIndexMap.get(vo.getId()));
} }
return page.setRecords(voList); return page.setRecords(voList);
} }
@Override @Override
public int countByEntrustId(Long id) { public int countByEntrustId(Long id) {
return super.count(Condition.create().eq("entrust_id",id)); return super.count(Condition.create().eq("entrust_id", id));
}
private Long getValSum(Long val1, Long val2) {
return (null == val1 ? 0l : val1) + (null == val2 ? 0l : val2);
}
private Double getValSum(Double val1, Double val2) {
return (null == val1 ? 0.0000 : val1) + (null == val2 ? 0.0000 : val2);
}
private AlTasteStatsVO getTotalData(List<AlTasteStatsVO> voList) {
AlTasteStatsVO bpStatsVO = new AlTasteStatsVO();
bpStatsVO.setPlant("合计");
bpStatsVO.setBranch(voList.get(0).getBranch());
for (AlTasteStatsVO t : voList) {
bpStatsVO.setTotal(getValSum(bpStatsVO.getTotal(), t.getTotal()));
bpStatsVO.setSlotsNum(getValSum(bpStatsVO.getSlotsNum(), t.getSlotsNum()));
bpStatsVO.setAl85Num(getValSum(bpStatsVO.getAl85Num(), t.getAl85Num()));
bpStatsVO.setAl85Per(getValSum(bpStatsVO.getAl85Per(), t.getAl85Per()));
bpStatsVO.setAl85SlotsNum(getValSum(bpStatsVO.getAl85SlotsNum(), t.getAl85SlotsNum()));
bpStatsVO.setAl70Num(getValSum(bpStatsVO.getAl70Num(), t.getAl70Num()));
bpStatsVO.setAl70Per(getValSum(bpStatsVO.getAl70Per(), t.getAl70Per()));
bpStatsVO.setAl70SlotsNum(getValSum(bpStatsVO.getAl70SlotsNum(), t.getAl70SlotsNum()));
bpStatsVO.setFe10Num(getValSum(bpStatsVO.getFe10Num(), t.getFe10Num()));
bpStatsVO.setFe10Per(getValSum(bpStatsVO.getFe10Per(), t.getFe10Per()));
bpStatsVO.setFe10SlotsNum(getValSum(bpStatsVO.getFe10SlotsNum(), t.getFe10SlotsNum()));
bpStatsVO.setFe08Num(getValSum(bpStatsVO.getFe08Num(), t.getFe08Num()));
bpStatsVO.setFe08Per(getValSum(bpStatsVO.getFe08Per(), t.getFe08Per()));
bpStatsVO.setFe08SlotsNum(getValSum(bpStatsVO.getFe08SlotsNum(), t.getFe08SlotsNum()));
}
return bpStatsVO;
}
@Override
public List<AlTasteStatsVO> getAlTasteStatsQuery(StatsQueryDTO queryDTO) {
RestAssert.fail(null == queryDTO.getTimeS() || null == queryDTO.getTimeE(), "开始或结束时间为空");
long days = DateUtils.getDaysBetweenTwoDate(queryDTO.getTimeS(), queryDTO.getTimeE());
queryDTO.setDays(days);
List<AlTasteStatsVO> list = baseMapper.selectAlTasteStats(queryDTO);
List<AlTasteStatsVO> resultList = new ArrayList<>();
if (CollectionUtils.isEmpty(list)) {
return resultList;
}
Map<String, List<AlTasteStatsVO>> dataMap = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
AlTasteStatsVO vo = list.get(i);
String key = vo.getBranch() + vo.getPlant();
if (dataMap.isEmpty()) {
List<AlTasteStatsVO> newList = new ArrayList<>();
newList.add(vo);
dataMap.put(key, newList);
if (i == list.size() - 1) {
resultList.add(vo);
resultList.add(getTotalData(list));
}
continue;
}
if (!dataMap.containsKey(key)) {
AlTasteStatsVO prevVO = list.get(i - 1);
List<AlTasteStatsVO> prevList = dataMap.get(prevVO.getBranch() + prevVO.getPlant());
resultList.addAll(prevList);
resultList.add(getTotalData(prevList));
} else {
List<AlTasteStatsVO> lists = dataMap.get(key);
lists.add(vo);
if (i == list.size() - 1) {
resultList.addAll(lists);
resultList.add(getTotalData(lists));
}
}
}
// 汇总所有
AlTasteStatsVO alTasteStatsVO = getTotalData(list);
alTasteStatsVO.setBranch(null);
resultList.add(alTasteStatsVO);
return resultList;
}
@Override
public List<ElectrolyteRatioStatsVO> getElectrolyteRatioStatsQuery(QueryDTO queryDTO) {
RestAssert.fail(null == queryDTO.getTimeS() || null == queryDTO.getTimeE(), "开始或结束时间为空");
return baseMapper.selectElectrolyteRatioStats(queryDTO);
}
@Override
public Map<String, Object> getPMakeFeStatsQuery(QueryDTO queryDTO) {
RestAssert.fail(null == queryDTO.getTimeS() || null == queryDTO.getTimeE(), "开始或结束时间为空");
List<PMakeFeStatsVO> list = baseMapper.selectPMakeFeStats(queryDTO);
Map<String, Object> result = new HashMap<>();
if (CollectionUtils.isEmpty(list)) {
return result;
}
for (PMakeFeStatsVO vo : list) {
PMakeFeVO val = new PMakeFeVO(), per = new PMakeFeVO(), ltNum = new PMakeFeVO(), gtNum = new PMakeFeVO(), inNum = new PMakeFeVO();
val.setCVal(vo.getCVal() + "").setMnVal(vo.getMnVal() + "").setSiVal(vo.getSiVal() + "").setPVal(vo.getPVal() + "").setSVal(vo.getSVal() + "");
per.setCVal(vo.getCPer() + "").setMnVal(vo.getMnPer() + "").setSiVal(vo.getSiPer() + "").setPVal(vo.getPPer() + "").setSVal(vo.getSPer() + "");
ltNum.setCVal(vo.getCLtNum() + "").setMnVal(vo.getMnLtNum() + "").setSiVal(vo.getSiLtNum() + "").setPVal(vo.getPLtNum() + "");
inNum.setCVal(vo.getCInNum() + "").setMnVal(vo.getMnInNum() + "").setSiVal(vo.getSiInNum() + "").setPVal(vo.getPInNum() + "").setSVal(vo.getSInNum() + "");
gtNum.setCVal(vo.getCGtNum() + "").setMnVal(vo.getMnGtNum() + "").setSiVal(vo.getSiGtNum() + "").setPVal(vo.getPGtNum() + "").setSVal(vo.getSGtNum() + "");
result.put(vo.getPeriod(), Lists.newArrayList(val, per, ltNum, inNum, gtNum));
}
return result;
}
@Override
public boolean updateSampleNextFlowInfo(Entrust entrust, EntrustFlowEnum nextFlowStatus, Account account) {
List<EntrustSample> sampleList = list(Condition.create().eq("entrust_id", entrust.getId()).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isEmpty(sampleList), String.format("编号为【%s】委托下样品为空", entrust.getCode()));
Long[] sampleIds = sampleList.stream().map(t -> t.getId()).toArray(size -> new Long[size]);
//
EntrustSample updateSample = new EntrustSample();
EntrustSampleItem updateItem = new EntrustSampleItem();
EntrustSampleStatusEnum sampleStatus = null;
EntrustSampleItemStatusEnum itemStatus = null;
if (nextFlowStatus == EntrustFlowEnum.CHECK || nextFlowStatus == EntrustFlowEnum.MAKE) {
sampleStatus = EntrustSampleStatusEnum.DRAFT;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
} else if (nextFlowStatus == EntrustFlowEnum.RECEIVE) {
sampleStatus = EntrustSampleStatusEnum.RECEIVE;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.RECEIVE);
} else if (nextFlowStatus == EntrustFlowEnum.ALLOT) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.ALLOT;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.RECEIVE_OK);
} else if (nextFlowStatus == EntrustFlowEnum.TEST) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.TEST;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.TEST);
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_MAKE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_MAKE;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_CHECK) {
sampleStatus = EntrustSampleStatusEnum.REPORT_CHECK;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_ALLOW) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ALLOW;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_ISSUE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ISSUE;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_SEND) {
sampleStatus = EntrustSampleStatusEnum.REPORT_SEND;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.QUALITY_JUDGE) {
sampleStatus = EntrustSampleStatusEnum.END;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (nextFlowStatus == EntrustFlowEnum.QUALITY_CHECK) {
sampleStatus = EntrustSampleStatusEnum.END;
itemStatus = EntrustSampleItemStatusEnum.END;
}
if (null != sampleStatus) {
updateSample.setStatus(sampleStatus);
update(updateSample, Condition.create().eq("entrust_id", entrust.getId()));
}
if (null != itemStatus) {
updateItem.setStatus(itemStatus);
entrustSampleItemService.update(updateItem, Condition.create().in("entrust_sample_id", sampleIds));
}
return false;
}
@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));
RestAssert.fail(CollectionUtils.isEmpty(sampleList), String.format("编号为【%s】委托下样品为空", entrust.getCode()));
Long[] sampleIds = sampleList.stream().map(t -> t.getId()).toArray(size -> new Long[size]);
//
EntrustSample updateSample = new EntrustSample();
EntrustSampleItem updateItem = new EntrustSampleItem();
EntrustSampleStatusEnum sampleStatus = null;
EntrustSampleItemStatusEnum itemStatus = null;
// 驳回样品状态
// DRAFT(1, "委托登记"),
// CHECK(3, "委托评审"),
// MAKE(4, "样品制备"),
// RECEIVE(5, "样品接收"),
// ALLOT(6, "任务分配"),
// TEST(7, "项目检测"),
// REPORT_MAKE(8, "报告编制"),
// REPORT_CHECK(9, "报告审核"),
// REPORT_ALLOW(10, "报告批准"),
// REPORT_ISSUE(11, "报告签发"),
// REPORT_SEND(12, "报告发放"),
// QUALITY_JUDGE(14, "质量判定"),
// 驳回检测项目状态
// DRAFT(0, "草稿"),
// ALLOT(10, "任务分配"),
// TEST(20, "检测中"),
// UPDATE_APPLY(15, "偏离申请"),
// CHECK(30, "数据复核"),
// AUDIT(40, "数据审核"),
// END(50, "检测完成"),
// BACK_CHECK(-30, "数据复核退回"),
// BACK_AUDIT(-40, "数据审核退回"),
// UPDATE_APPLY_BACK(-15, "偏离申请退回"),
// UPDATE_APPLY_PASS(-16, "偏离申请通过");
if (prevFlowStatus == EntrustFlowEnum.DRAFT || prevFlowStatus == EntrustFlowEnum.CHECK || prevFlowStatus == EntrustFlowEnum.MAKE) {
sampleStatus = EntrustSampleStatusEnum.DRAFT;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
} else if (prevFlowStatus == EntrustFlowEnum.RECEIVE) {
sampleStatus = EntrustSampleStatusEnum.RECEIVE;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
} else if (prevFlowStatus == EntrustFlowEnum.ALLOT || prevFlowStatus == EntrustFlowEnum.TEST) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.TEST;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_MAKE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_MAKE;
itemStatus = EntrustSampleItemStatusEnum.END;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_CHECK) {
sampleStatus = EntrustSampleStatusEnum.REPORT_CHECK;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_ALLOW) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ALLOW;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_ISSUE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_ISSUE;
} else if (prevFlowStatus == EntrustFlowEnum.REPORT_SEND) {
sampleStatus = EntrustSampleStatusEnum.REPORT_SEND;
}
if (null != sampleStatus) {
updateSample.setStatus(sampleStatus);
update(updateSample, Condition.create().eq("entrust_id", entrust.getId()));
}
if (null != itemStatus) {
updateItem.setStatus(itemStatus);
entrustSampleItemService.update(updateItem, Condition.create().in("entrust_sample_id", sampleIds));
}
return false;
} }
@Override @Override
...@@ -413,8 +661,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe ...@@ -413,8 +661,8 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
Map<String, String> mapReplace = new HashMap<>(); Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{nowDate}", DateUtils.toYearMonthDay(new Date())); mapReplace.put("#{nowDate}", DateUtils.toYearMonthDay(new Date()));
mapReplace.put("#{sampleNum}", countByEntrustId(entrust.getId())+""); mapReplace.put("#{sampleNum}", countByEntrustId(entrust.getId()) + "");
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,0); HSSFWorkbookUtil.replaceModel(mapReplace, xssfWorkbook, 0);
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0); XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0);
String sheetName = sheetOne.getSheetName(); String sheetName = sheetOne.getSheetName();
System.out.println(sheetName); System.out.println(sheetName);
...@@ -473,22 +721,22 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe ...@@ -473,22 +721,22 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
} else { } else {
if (null!=sysFileTemplate.getMoreSheet()&&sysFileTemplate.getMoreSheet()==1){ if (null != sysFileTemplate.getMoreSheet() && sysFileTemplate.getMoreSheet() == 1) {
int total= sampleVOList.size(); int total = sampleVOList.size();
int totalSheetSize = (total+templateSampleNum-1)/templateSampleNum; int totalSheetSize = (total + templateSampleNum - 1) / templateSampleNum;
List<List<EntrustSampleVO>> listList = Lists.partition(sampleVOList,templateSampleNum); List<List<EntrustSampleVO>> listList = Lists.partition(sampleVOList, templateSampleNum);
for (int i = 1; i < totalSheetSize; i++) { for (int i = 1; i < totalSheetSize; i++) {
xssfWorkbook.cloneSheet(0,sheetOne.getSheetName()+(i+1)); xssfWorkbook.cloneSheet(0, sheetOne.getSheetName() + (i + 1));
} }
for (int k = 0; k < listList.size(); k++) { for (int k = 0; k < listList.size(); k++) {
Integer beginRow = sysFileTemplate.getSampleBeginRow(); Integer beginRow = sysFileTemplate.getSampleBeginRow();
List<EntrustSampleVO> sampleVOListIndex = listList.get(k); List<EntrustSampleVO> sampleVOListIndex = listList.get(k);
for (EntrustSampleVO vo : sampleVOListIndex) { for (EntrustSampleVO vo : sampleVOListIndex) {
List<EntrustSampleItemIndex> indexList = entrustSampleItemIndexService.listBySampleId(vo.getId()); List<EntrustSampleItemIndex> indexList = entrustSampleItemIndexService.listBySampleId(vo.getId());
vo.setIndexList(indexList); vo.setIndexList(indexList);
XSSFSheet sheetOneIndex= xssfWorkbook.getSheetAt(k); XSSFSheet sheetOneIndex = xssfWorkbook.getSheetAt(k);
XSSFRow xssfRow = sheetOneIndex.getRow(beginRow); XSSFRow xssfRow = sheetOneIndex.getRow(beginRow);
for (EntrustReportTemplateConfig config : configList) { for (EntrustReportTemplateConfig config : configList) {
...@@ -507,7 +755,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe ...@@ -507,7 +755,7 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
} }
}else { } else {
Integer beginRow = sysFileTemplate.getSampleBeginRow(); Integer beginRow = sysFileTemplate.getSampleBeginRow();
int insertRow = beginRow + sampleMergerNum * templateSampleNum; int insertRow = beginRow + sampleMergerNum * templateSampleNum;
XSSFRow zeroRow = sheetOne.getRow(beginRow); XSSFRow zeroRow = sheetOne.getRow(beginRow);
...@@ -803,7 +1051,5 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe ...@@ -803,7 +1051,5 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
} }
} }
} }
}
} \ No newline at end of file
...@@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.toolkit.IdWorker; ...@@ -5,9 +5,9 @@ import com.baomidou.mybatisplus.toolkit.IdWorker;
import com.patzn.cloud.commons.api.RestAssert; import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper; import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.StringHandleUtils; import com.patzn.cloud.commons.toolkit.StringHandleUtils;
import com.patzn.cloud.feign.base.client.SysOrgClient; import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.service.base.entity.SysOrg; import com.patzn.cloud.service.base.entity.SysOrg;
import com.patzn.cloud.service.hmhj.dto.EntrustDTO; import com.patzn.cloud.service.hmhj.dto.EntrustDTO;
import com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO; import com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO;
...@@ -16,14 +16,15 @@ import com.patzn.cloud.service.hmhj.enums.*; ...@@ -16,14 +16,15 @@ import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.EntrustVO; import com.patzn.cloud.service.hmhj.vo.EntrustVO;
import com.patzn.cloud.service.lims.chemical.entity.LmsChemicalCategory;
import com.patzn.cloud.service.lims.common.service.ILmsMsgService; import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
import com.patzn.cloud.service.lims.hmhj.common.EntrustFlowUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper;
import com.patzn.cloud.service.lims.hmhj.service.*; import com.patzn.cloud.service.lims.hmhj.service.*;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl; import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jfree.data.DataUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
...@@ -73,11 +74,15 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -73,11 +74,15 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
@Autowired @Autowired
private SysOrgClient sysOrgClient; private SysOrgClient sysOrgClient;
@Autowired
private LmsChemicalCategoryClient lmsChemicalCategoryClient;
@Override @Override
public Page<Entrust> page(Page<Entrust> page, Entrust entrust) { public Page<Entrust> page(Page<Entrust> page, Entrust entrust) {
Wrapper wrapper = new EntityWrapper<>(entrust); Wrapper wrapper = new EntityWrapper<>(entrust);
wrapper.orderBy("entrust_time", false); wrapper.orderBy("entrust_time", false);
wrapper.orderBy("code", false);
return this.page(page, wrapper); return this.page(page, wrapper);
} }
...@@ -97,47 +102,87 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -97,47 +102,87 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
public void initSampleCode(EntrustSample sample) { public void initSampleCode(EntrustSample sample) {
// 样品类型
String category = sample.getCategory();
RestAssert.fail(StringUtils.isBlank(category), "样品类型不能为空");
String parentCategory = "";
if (StringUtils.isNotBlank(category)) {
LmsChemicalCategory chemicalCategory = lmsChemicalCategoryClient.getTopCategory(category).getData();
RestAssert.fail(null == chemicalCategory, "样品(物资)类型不能为空");
parentCategory = chemicalCategory.getName();
}
Account account = LoginHelper.getAccount(); Account account = LoginHelper.getAccount();
int codeTypeNo = 0; int codeTypeNo = 0;
List<SysOrg> orgList = sysOrgClient.getListByUserId(account.getUserId()).getData(); List<SysOrg> orgList = sysOrgClient.getListByUserId(account.getUserId()).getData();
// 是否包含二期部门 // 具体是哪一期
boolean secondPhase = orgList.stream().filter(t -> t.getName().contains("二期")).count() > 0; String phase = orgList.stream().filter(t -> t.getName().contains("二期")).count() > 0 ? "Z" : "F";
// 默认样品初始编号 // 默认样品初始编号
CodeTypeEnum codeType = null; CodeTypeEnum codeType = null;
switch (sample.getName()) { switch (parentCategory) {
case "原铝": case "原铝":
codeType = CodeTypeEnum.SAMPLE_YL_CODE; codeType = CodeTypeEnum.SAMPLE_YL_CODE;
break; break;
case "电解质": case "电解质":
codeType = CodeTypeEnum.SAMPLE_DJZ_CODE; codeType = CodeTypeEnum.SAMPLE_DJZ_CODE;
break; break;
case "外委检测": case "外委检测物资":
codeType = CodeTypeEnum.SAMPLE_WWJC_CODE; codeType = CodeTypeEnum.SAMPLE_WWJC_CODE;
break; break;
case "三级编码物资":
codeType = CodeTypeEnum.SAMPLE_YFL_CODE;
break;
default: default:
codeType = CodeTypeEnum.SAMPLE_CODE; codeType = CodeTypeEnum.SAMPLE_CODE;
break; break;
} }
String sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample); String sampleCode = null;
String replaceStr = "XX", inspectNo = "", secondCode = "", thirdCode = "";
if ("已有编码物资".equals(parentCategory)) {
sampleCode = sample.getCode();
} else {
sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample);
// 若为外委检测和三级编码,则查询质检编号
if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType || CodeTypeEnum.SAMPLE_YFL_CODE == codeType) {
List<UserInspectionCode> userInspectionCodeList = userInspectionCodeService.list(Condition.create().eq("user_id", account.getUserId()).eq("type", "ZJ").eq("deleted", 0));
if (CollectionUtils.isNotEmpty(userInspectionCodeList)) {
inspectNo = userInspectionCodeList.get(0).getNo();
}
}
if (CodeTypeEnum.SAMPLE_YL_CODE == codeType || CodeTypeEnum.SAMPLE_DJZ_CODE == codeType) { if (CodeTypeEnum.SAMPLE_YL_CODE == codeType || CodeTypeEnum.SAMPLE_DJZ_CODE == codeType) {
sampleCode += sample.getSlotNo(); sampleCode += sample.getSlotNo();
} else if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType) { }
sampleCode = (secondPhase ? "Z" : "F") + sampleCode.substring(1); // 外委检测样品编号
// XX替换成质检员编号 else if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType) {
// sampleCode = sampleCode.replace("XX", "01"); sampleCode = phase + sampleCode.substring(1);
List<UserInspectionCode> userInspectionCodeList = userInspectionCodeService.list(Condition.create().eq("user_id",account.getUserId()).eq("type","ZJ").eq("deleted",0)); secondCode = sampleCode.replace(replaceStr, "");
if(CollectionUtils.isNotEmpty(userInspectionCodeList)){ sampleCode = sampleCode.replace(replaceStr, inspectNo);
sampleCode = sampleCode.replace("XX",userInspectionCodeList.get(0).getNo()); }
// 三级编码默认使用第一级别的委托的编码,也就是默认为A
else if (CodeTypeEnum.SAMPLE_YFL_CODE == codeType) {
sampleCode = phase + sampleCode.substring(1);
secondCode = sampleCode.replace("A", "B").replace(replaceStr, inspectNo);
thirdCode = sampleCode.replace("A", "C").replace(replaceStr, "HY");
sampleCode = sampleCode.replace(replaceStr, inspectNo);
} }
} }
if (StringUtils.isNotBlank(sampleCode)) { if (StringUtils.isNotBlank(sampleCode)) {
sample.setCode(sampleCode); sample.setCode(sampleCode);
// 现只有一级编码
sample.setCodeType(codeTypeNo);
sample.setFirstCode(sampleCode); sample.setFirstCode(sampleCode);
// 默认一级编码
sample.setCodeType(codeTypeNo);
// 若为三级编号,修改对应类别
if (codeType == CodeTypeEnum.SAMPLE_WWJC_CODE) {
sample.setCodeType(2);
sample.setSecondCode(secondCode);
} else if (codeType == CodeTypeEnum.SAMPLE_YFL_CODE) {
sample.setCodeType(3);
sample.setSecondCode(secondCode);
sample.setThirdCode(thirdCode);
}
} }
} }
...@@ -151,6 +196,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -151,6 +196,12 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
if (null == entrust.getEntrustTime()) { if (null == entrust.getEntrustTime()) {
entrust.setEntrustTime(new Date()); entrust.setEntrustTime(new Date());
} }
// 配置初始状态
String flowStatus = EntrustFlowEnum.DRAFT.getName();
if (StringUtils.isNotBlank(entrust.getStatusPath())) {
flowStatus = entrust.getStatusPath().split("->")[0];
}
entrust.setFlowStatus(flowStatus);
if (saveEntrust(entrust)) { if (saveEntrust(entrust)) {
if (CollectionUtils.isNotEmpty(sampleDTOList)) { if (CollectionUtils.isNotEmpty(sampleDTOList)) {
...@@ -229,13 +280,23 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -229,13 +280,23 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要驳回的委托"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要驳回的委托");
int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.CHECK)); int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.CHECK));
RestAssert.fail(ids.length != count, "请选择退回委托审核的委托"); RestAssert.fail(ids.length != count, "请选择退回委托审核的委托");
Entrust entrust = new Entrust(); List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
entrust.setStatus(EntrustStatusEnum.DRAFT); boolean hasSendMessage = false;
entrust.setProgress(EntrustStatusEnum.BACK_CHECK); for (Entrust e : entrustList) {
if (update(entrust, Condition.create().in("id", ids))) { if (StringUtils.isNotBlank(e.getStatusPath())) {
entrustRecordService.record(ids, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.DRAFT.getDisplay(), 1, account, reason); rejectToPrevNode(e, reason, account);
hasSendMessage = true;
} else {
e.setStatus(EntrustStatusEnum.DRAFT);
e.setProgress(EntrustStatusEnum.BACK_CHECK);
updateById(e);
entrustRecordService.record(new Long[]{e.getId()}, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.DRAFT.getDisplay(), 1, account, reason);
}
}
if (!hasSendMessage) {
lmsMsgService.sendMsg("/hmhj/entrust_manage/entrust_register", "有委托从委托审核驳回,请及时查看退回原因并处理", "新的委托审核退回任务!", account, null); lmsMsgService.sendMsg("/hmhj/entrust_manage/entrust_register", "有委托从委托审核驳回,请及时查看退回原因并处理", "新的委托审核退回任务!", account, null);
} }
return true; return true;
} }
...@@ -244,29 +305,50 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -244,29 +305,50 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交到制备的委托"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交到制备的委托");
int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.CHECK)); int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.CHECK));
RestAssert.fail(ids.length != count, "请选择委托审核的委托"); RestAssert.fail(ids.length != count, "请选择委托审核的委托");
Entrust entrust = new Entrust(); List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
entrust.setStatus(EntrustStatusEnum.MAKE); boolean hasSendMessage = false;
entrust.setProgress(EntrustStatusEnum.MAKE); for (Entrust e : entrustList) {
if (update(entrust, Condition.create().in("id", ids))) { // 若存在路径,根据状态路径处理数据
entrustRecordService.record(ids, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "提交至样品待制备"); if (StringUtils.isNotBlank(e.getStatusPath())) {
submitToNextNode(e, account);
hasSendMessage = true;
} else {
e.setStatus(EntrustStatusEnum.MAKE);
e.setProgress(EntrustStatusEnum.MAKE);
updateById(e);
entrustRecordService.record(new Long[]{e.getId()}, EntrustStatusEnum.CHECK.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "提交至样品待制备");
}
}
if (!hasSendMessage) {
lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托审核通过,请及时进行样品的制备", "新的样品制备任务!", account, null); lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托审核通过,请及时进行样品的制备", "新的样品制备任务!", account, null);
} }
return true; return true;
} }
@Override @Override
public boolean registerSubmitToMake(Long[] ids, Account account) { public boolean registerSubmitToMake(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交到制备的委托"); RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交到制备的委托");
int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.DRAFT)); int count = super.count(Condition.create().in("id", ids).eq("status", EntrustStatusEnum.DRAFT));
RestAssert.fail(ids.length != count, "请选择委托登记的委托"); RestAssert.fail(ids.length != count, "请选择委托登记的委托");
Entrust entrust = new Entrust(); List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
entrust.setStatus(EntrustStatusEnum.MAKE); boolean hasSendMessage = false;
entrust.setProgress(EntrustStatusEnum.MAKE); for (Entrust e : entrustList) {
if (update(entrust, Condition.create().in("id", ids))) { // 若存在路径,根据状态路径处理数据
entrustRecordService.record(ids, EntrustStatusEnum.DRAFT.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "委托登记提交至样品待制备"); if (StringUtils.isNotBlank(e.getStatusPath())) {
submitToNextNode(e, account);
hasSendMessage = true;
} else {
e.setStatus(EntrustStatusEnum.MAKE);
e.setProgress(EntrustStatusEnum.MAKE);
updateById(e);
entrustRecordService.record(new Long[]{e.getId()}, EntrustStatusEnum.DRAFT.getDisplay(), EntrustStatusEnum.MAKE.getDisplay(), 0, account, "委托登记提交至样品待制备");
}
}
if (!hasSendMessage) {
lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托登记提交至样品待制备,请及时进行样品的制备", "新的样品制备任务!", account, null); lmsMsgService.sendMsg("/hmhj/sample_manage/sample_prepare", "有委托登记提交至样品待制备,请及时进行样品的制备", "新的样品制备任务!", account, null);
} }
return true; return true;
} }
...@@ -486,6 +568,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -486,6 +568,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return page.setRecords(baseMapper.selectVOList(page, entrust)); return page.setRecords(baseMapper.selectVOList(page, entrust));
} }
@Override
public Page<EntrustVO> pageEntrustByItemData(Page<EntrustVO> page, EntrustVO entrust) {
if (null == entrust.getItemStatus()) {
return page;
}
return page.setRecords(baseMapper.selectVOListByItem(page, entrust));
}
@Override @Override
public Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust) { public Page<EntrustVO> pageEntrustByItemHis(Page<EntrustVO> page, EntrustVO entrust) {
...@@ -519,6 +609,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -519,6 +609,14 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return page.setRecords(baseMapper.selectVOList(page, entrust)); return page.setRecords(baseMapper.selectVOList(page, entrust));
} }
@Override
public Page<EntrustVO> pageEntrustByItemDataHis(Page<EntrustVO> page, EntrustVO entrust) {
if (CollectionUtils.isEmpty(entrust.getItemStatusEnumList())) {
return page;
}
return page.setRecords(baseMapper.selectVOListByItem(page, entrust));
}
@Override @Override
public Page<EntrustVO> pageEntrustBySample(Page<EntrustVO> page, EntrustVO entrust) { public Page<EntrustVO> pageEntrustBySample(Page<EntrustVO> page, EntrustVO entrust) {
...@@ -764,5 +862,111 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -764,5 +862,111 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return page.setRecords(voList); return page.setRecords(voList);
} }
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitToNextNode(Long[] ids, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择要提交的委托");
List<Entrust> entrustList = super.list(Condition.create().in("id", ids).eq("deleted", 0));
RestAssert.fail(CollectionUtils.isEmpty(entrustList), "请选择要提交的委托");
for (Entrust e : entrustList) {
submitToNextNode(e, account);
}
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean submitToNextNode(Entrust entrust, Account account) {
String statusPath = entrust.getStatusPath(), flowStatus = entrust.getFlowStatus();
RestAssert.fail(StringUtils.isBlank(statusPath), String.format("编号为【%s】的委托,未配置流程状态路径信息!", entrust.getCode()));
// 只有初始状态才进行赋值
if (StringUtils.isBlank(flowStatus) && entrust.getStatus() == EntrustStatusEnum.DRAFT) {
flowStatus = EntrustFlowEnum.DRAFT.getName();
}
RestAssert.fail(StringUtils.isBlank(flowStatus), String.format("编号为【%s】的委托,未配置流程状态信息!", entrust.getCode()));
EntrustFlowEnum nextFlowStatus = EntrustFlowUtils.getNextFlowStatus(flowStatus, statusPath);
EntrustStatusEnum nextStatus = EntrustFlowUtils.getStatus(nextFlowStatus);
RestAssert.fail(null == nextStatus, String.format("编号为【%s】的委托,未配置下一流程状态信息!", entrust.getCode()));
// 当前委托状态
EntrustStatusEnum status = entrust.getStatus();
// 是否特殊需求
boolean isSpecAsk = null == entrust.getSpecialAsk() ? false : ("是".equals(entrust.getSpecialAsk()));
// 若为特殊需求,必须要走评审
String uri = "";
if (isSpecAsk || nextStatus == EntrustStatusEnum.CHECK) {
uri = "/hmhj/entrust_manage/entrust_review";
} else if (nextStatus == EntrustStatusEnum.MAKE) {
uri = "/hmhj/sample_manage/sample_prepare";
} else if (nextStatus == EntrustStatusEnum.OUT_INPUT) {
uri = "/hmhj/accept_manage/sub_input";
} else if (nextStatus == EntrustStatusEnum.QUALITY_CHECK) {
uri = "/hmhj/quality_manage/quality_decide";
}
// 处理样品以及检测项目的流程状态
entrustSampleService.updateSampleNextFlowInfo(entrust, nextFlowStatus, account);
entrust.setStatus(nextStatus);
entrust.setProgress(nextStatus);
entrust.setFlowStatus(nextFlowStatus.getName());
updateById(entrust);
//
String remark = "提交至" + nextFlowStatus.getDisplay(),
title = String.format("新的%s任务!", nextFlowStatus.getDisplay()),
content = String.format("有%s提交过来,请及时%s", EntrustFlowEnum.convert(flowStatus).getDisplay(), nextFlowStatus.getDisplay());
entrustRecordService.record(new Long[]{entrust.getId()}, status.getDisplay(), nextStatus.getDisplay(), 0, account, remark);
if (StringUtils.isNotBlank(uri)) {
lmsMsgService.sendMsg(uri, content, title, account, null);
}
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean rejectToPrevNode(Long id, String reason, Account account) {
RestAssert.fail(null == id, "请选择要驳回的委托");
Entrust entrust = super.getById(id);
return rejectToPrevNode(entrust, reason, account);
}
@Transactional(rollbackFor = Exception.class)
@Override
public boolean rejectToPrevNode(Entrust entrust, String reason, Account account) {
RestAssert.fail(null == entrust, "请选择要驳回的委托");
String statusPath = entrust.getStatusPath(), flowStatus = entrust.getFlowStatus();
// 为空不进行下一步处理
if (StringUtils.isBlank(statusPath)) {
return false;
}
RestAssert.fail(StringUtils.isBlank(statusPath), String.format("编号为【%s】的委托,未配置流程状态路径信息!", entrust.getCode()));
EntrustFlowEnum prevFlowStatus = EntrustFlowUtils.getPrevFlowStatus(flowStatus, statusPath);
EntrustStatusEnum prevStatus = EntrustFlowUtils.getStatus(prevFlowStatus);
RestAssert.fail(null == prevStatus, String.format("编号为【%s】的委托,未配置上一流程状态信息!", entrust.getCode()));
// 当前委托状态
EntrustStatusEnum status = entrust.getStatus();
String uri = "";
if (prevStatus == EntrustStatusEnum.DRAFT) {
uri = "/hmhj/entrust_manage/entrust_register";
} else if (prevStatus == EntrustStatusEnum.CHECK) {
} else if (prevStatus == EntrustStatusEnum.MAKE) {
} else if (prevStatus == EntrustStatusEnum.OUT_INPUT) {
} else if (prevStatus == EntrustStatusEnum.QUALITY_CHECK) {
uri = "/hmhj/quality_manage/quality_decide";
}
entrust.setStatus(prevStatus);
entrust.setProgress(EntrustStatusEnum.BACK_CHECK);
entrust.setFlowStatus(prevFlowStatus.getName());
updateById(entrust);
// 更新委托样品信息
entrustSampleService.updateSamplePrevFlowInfo(entrust, prevFlowStatus, account);
String title = String.format("新的%s任务!", prevFlowStatus.getDisplay()),
content = String.format("有%s驳回过来,请及时%s", EntrustFlowEnum.convert(flowStatus).getDisplay(), prevFlowStatus.getDisplay());
entrustRecordService.record(new Long[]{entrust.getId()}, status.getDisplay(), prevStatus.getDisplay(), 1, account, reason);
if (StringUtils.isNotBlank(uri)) {
lmsMsgService.sendMsg(uri, content, title, account, null);
}
return true;
}
} }
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustStatusEnum;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.hmhj.mapper.LmsOriginalRecordInfoMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleService;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustService;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
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.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 原始记录解析后的数据存储表 服务实现类
*
* @author meazty
* @since 2021-07-04
*/
@Service
public class LmsOriginalRecordInfoServiceImpl extends BaseServiceImpl<LmsOriginalRecordInfoMapper, LmsOriginalRecordInfo> implements ILmsOriginalRecordInfoService {
@Autowired
private IEntrustService entrustService;
@Autowired
private IEntrustSampleService entrustSampleService;
@Autowired
private IEntrustSampleItemService entrustSampleItemService;
@Override
public Page<LmsOriginalRecordInfo> page(Page<LmsOriginalRecordInfo> page, LmsOriginalRecordInfo lmsOriginalRecordInfo) {
Wrapper wrapper = new EntityWrapper<>(lmsOriginalRecordInfo);
return this.page(page, wrapper);
}
@Override
public boolean removeByIds(List<Long> ids) {
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 生成从委托到原始记录相关数据
*
* @return
*/
@Override
public boolean generateOriginalRelData() {
Account account = LoginHelper.getAccount();
// 查询未生成的委托数据
List<LmsOriginalRecordInfo> entrustList = baseMapper.selectUnGeneratedEntrustData();
if (CollectionUtils.isNotEmpty(entrustList)) {
List<Entrust> entrusts = entrustList.stream().map(t -> {
return new Entrust().setStatus(EntrustStatusEnum.TEST).setProgress(EntrustStatusEnum.TEST)
.setCode(t.getContractCode()).setCompanyId(account.getCompanyId()).setUid(account.getUserId());
}).collect(Collectors.toList());
entrustService.saveBatch(entrusts);
}
// 查询未生成的样品数据
List<LmsOriginalRecordInfo> sampleList = baseMapper.selectUnGeneratedSampleData();
if (CollectionUtils.isNotEmpty(sampleList)) {
List<EntrustSample> samples = sampleList.stream().map(t -> {
return new EntrustSample().setStatus(EntrustSampleStatusEnum.TEST).setProgress(EntrustSampleStatusEnum.TEST)
.setCode(t.getSampleNum()).setCompanyId(account.getCompanyId()).setUid(account.getUserId());
}).collect(Collectors.toList());
List<Entrust> entrusts = entrustService.list(Condition.create().setSqlSelect(new String[]{"id","code"})
.eq("status", EntrustStatusEnum.TEST.getValue())
.eq("deleted", 0));
entrustSampleService.saveBatch(samples);
}
return false;
}
}
package com.patzn.cloud.service.lims.schedule;
import com.patzn.cloud.service.lims.hmhj.service.ILmsOriginalRecordInfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class LmsOriginalRecordInfoSchedule {
private Logger logger = LoggerFactory.getLogger(LmsOriginalRecordInfoSchedule.class);
@Autowired
private ILmsOriginalRecordInfoService lmsOriginalRecordInfoService;
/**
* 每隔5分钟,执行生成委托->样品->检测项目->原始记录数据
*/
@Scheduled(cron = "0 */50 * * * ?")
public void execute(){
logger.info("------每隔5分钟,执行生成委托->样品->检测项目->原始记录数据------");
// lmsOriginalRecordInfoService.generateOriginalRelData();
}
}
...@@ -58,6 +58,38 @@ ...@@ -58,6 +58,38 @@
order by entrust_time desc order by entrust_time desc
</select> </select>
<select id="selectVOListByItem" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
SELECT distinct e.* FROM
entrust e,entrust_sample s,entrust_sample_item i
WHERE e.deleted = 0 and s.deleted = 0 and i.deleted = 0
and s.entrust_id = e.id and i.entrust_sample_id = s.id
<if test="null!=vo.itemStatus">
and i.status = #{vo.itemStatus}
</if>
<if test="null!=vo.itemStatusEnumList">
AND i.status IN
<foreach collection="vo.itemStatusEnumList" index="index" item="status" open="(" separator="," close=")">
#{status}
</foreach>
</if>
<if test="null!=vo.groupNameList">
AND e.test_side IN
<foreach collection="vo.groupNameList" index="index" item="groupName" open="(" separator="," close=")">
#{groupName}
</foreach>
</if>
<if test="null!=vo.client">
AND e.client LIKE CONCAT('%',#{vo.client},'%')
</if>
<if test="null!=vo.code">
AND e.code LIKE CONCAT('%',#{vo.code},'%')
</if>
<if test="null!=vo.testSide">
AND e.test_side LIKE CONCAT('%',#{vo.testSide},'%')
</if>
order by e.entrust_time desc,e.code desc
</select>
<select id="selectEntrustProgressList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO"> <select id="selectEntrustProgressList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustVO">
SELECT id,code,client,client_tel,entrust_time,assignor,test_side,status,progress, SELECT id,code,client,client_tel,entrust_time,assignor,test_side,status,progress,
......
...@@ -35,15 +35,18 @@ ...@@ -35,15 +35,18 @@
<select id="selectByItemLeftRight" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO"> <select id="selectByItemLeftRight" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO">
WITH i AS ( WITH i AS (
SELECT SELECT
id, id,
entrust_sample_id, entrust_sample_id,
name, name,
status, status,
company_id, company_id,
standard, standard,
group_name, group_name,
test_value, test_value,
group_id group_id,
tester,
tester_id,
test_time
FROM FROM
entrust_sample_item entrust_sample_item
WHERE WHERE
...@@ -312,4 +315,12 @@ ...@@ -312,4 +315,12 @@
WHERE i.deleted = 0 AND s.deleted = 0 WHERE i.deleted = 0 AND s.deleted = 0
AND s.entrust_id = #{entrustId} AND s.entrust_id = #{entrustId}
</select> </select>
<select id="selectUnallocatedCountByEntrustId" resultType="int">
select count(1) from entrust_sample_item i
join entrust_sample s ON i.entrust_sample_id = s.ID
where i.deleted = 0 AND s.deleted = 0
and i.status = 0
AND s.entrust_id = #{entrustId}
</select>
</mapper> </mapper>
...@@ -124,4 +124,231 @@ ...@@ -124,4 +124,231 @@
</select> </select>
<!--原铝品味统计查询-->
<select id="selectAlTasteStats" resultType="com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO">
with ix as (
SELECT
i.company_id,
i.entrust_sample_id,
(case when sum(to_number(ii.test_value,'9999.99')) &lt;= 1.5 then 1 else 0 end) "al_85_num",
(case when sum(to_number(ii.test_value,'9999.99')) &gt; 1.5 and sum(to_number(ii.test_value,'9999.99')) &lt;= 3 then 1 else 0 end) "al_70_num",
sum(case when ii."name" = 'Fe%' and to_number(ii.test_value,'9999.99') &lt;= 0.1 then 1 else 0 end) "fe_10_num",
sum(case when ii."name" = 'Fe%' and to_number(ii.test_value,'9999.99') &lt;= 0.08 then 1 else 0 end) "fe_08_num"
FROM
entrust_sample_item i,
entrust_sample_item_index ii
WHERE
i.ID = ii.entrust_sample_item_id
AND i.deleted = 0
AND ii.deleted = 0
and ii.test_value is not null
GROUP BY i.company_id,i.entrust_sample_id
)
SELECT
e.model "branch",
e.plant,
COUNT ( 1 ) "total",
( CASE WHEN COUNT ( 1 ) / ${vo.days} > 1 THEN ( COUNT ( 1 ) / ${vo.days} / 2 ) ELSE 1 END ) "slots_num",
sum(ix.al_85_num) "al_85_num",
round(coalesce(sum(ix.al_85_num),0) / COUNT ( 1 ),4) "al_85_per",
round(coalesce(sum(ix.al_85_num),0) / ${vo.days} / 2) "al_85_slots_num",
sum(ix.al_70_num) "al_70_num",
round(coalesce(sum(ix.al_70_num),0) / COUNT ( 1 ),4) "al_70_per",
round(coalesce(sum(ix.al_70_num),0) / ${vo.days} / 2) "al_70_slots_num",
sum(ix.fe_10_num) "fe_10_num",
round(coalesce(sum(ix.fe_10_num),0) / COUNT ( 1 ),4) "fe_10_per",
round(coalesce(sum(ix.fe_10_num),0) / ${vo.days} / 2) "fe_10_slots_num",
sum(ix.fe_08_num) "fe_08_num",
round(coalesce(sum(ix.fe_08_num),0) / COUNT ( 1 ),4) "fe_08_per",
round(coalesce(sum(ix.fe_08_num),0) / ${vo.days} / 2) "fe_08_slots_num"
FROM
entrust_sample s
JOIN electrolyzer e ON s.electrolyzer_id = e.ID
LEFT JOIN ix ix ON ix.entrust_sample_id = s.id
WHERE
s.deleted = 0 and e.deleted = 0 and s.name = '原铝'
<if test="null != vo.timeS and null != vo.timeE">
AND EXISTS (
select 1 from entrust_sample_item si where si.deleted = 0 and si.entrust_sample_id = s.id
and to_char(si.test_time, 'YYYY-MM-dd HH24:MI:SS') BETWEEN #{vo.timeS} AND #{vo.timeE}
)
</if>
GROUP BY e.model, e.plant
</select>
<!--电解质分子比统计查询-->
<select id="selectElectrolyteRatioStats" resultType="com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO">
with ix as (
SELECT
i.company_id,
i.entrust_sample_id,
sum(case when ii.name = '电解质-MgF2' then 1 else 0 end) "mgf_num",
sum(case when ii.name = '电解质-MgF2' then to_number(ii.test_value,'9999.99') else 0.00 end) "mgf_val",
sum(case when ii.name = '电解质-氧化铝' then 1 else 0 end) "alo_num",
sum(case when ii.name = '电解质-氧化铝' then to_number(ii.test_value,'9999.99') else 0.00 end) "alo_val",
sum(case when ii.name = '电解质-氟化钙' then 1 else 0 end) "caf_num",
sum(case when ii.name = '电解质-氟化钙' then to_number(ii.test_value,'9999.99') else 0.00 end) "caf_val",
sum(case when ii.name = '电解质-分子比' then 1 else 0 end) "fzb_num",
sum(case when ii.name = '电解质-分子比' then to_number(ii.test_value,'9999.99') else 0.00 end) "fzb_val",
sum(case when ii.name = '电解质-分子比' and to_number(ii.test_value,'9999.99') &lt;= 2.15 then 1 else 0 end) "lt216_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'9999.99') &gt; 2.15 and to_number(ii.test_value,'9999.99') &lt;= 2.20
then 1 else 0 end
) "gt215_lte220_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'9999.99') &gt; 2.20 and to_number(ii.test_value,'9999.99') &lt;= 2.25
then 1 else 0 end
) "gt220_lte225_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'999.99') &gt; 2.25 and to_number(ii.test_value,'9999.99') &lt;= 2.30
then 1 else 0 end
) "gt225_lte230_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'999.99') &gt; 2.30 and to_number(ii.test_value,'9999.99') &lt;= 2.35
then 1 else 0 end
) "gt230_lte235_num",
sum(case when ii.name = '电解质-分子比' and
to_number(ii.test_value,'999.99') &gt; 2.35 and to_number(ii.test_value,'9999.99') &lt;= 2.40
then 1 else 0 end
) "gt235_lte240_num",
sum(case when ii.name = '电解质-分子比' and to_number(ii.test_value,'999.99') &gt; 2.40 then 1 else 0 end ) "gt240_num"
FROM
entrust_sample_item i,
entrust_sample_item_index ii
WHERE
i.ID = ii.entrust_sample_item_id
and ii.name like '%电解质-%'
AND i.deleted = 0
AND ii.deleted = 0
and ii.test_value is not null
GROUP BY i.company_id,i.entrust_sample_id
)
SELECT
e.model "branch", count(1) "total",
coalesce(round(sum(ix.mgf_val) / sum(ix.mgf_num)),0) "mgf_avg_num",
coalesce(round(sum(ix.alo_val) / sum(ix.alo_num)),0) "alo_avg_num",
coalesce(round(sum(ix.caf_val) / sum(ix.caf_num)),0) "caf_avg_num",
coalesce(round(sum(ix.fzb_val) / sum(ix.fzb_num)),0) "fzb_avg_num",
coalesce(sum(ix.lt216_num),0) "lt216_num",
coalesce(sum(ix.gt215_lte220_num),0) "gt215_lte220_num",
coalesce(sum(ix.gt220_lte225_num),0) "gt220_lte225_num",
coalesce(sum(ix.gt225_lte230_num),0) "gt225_lte230_num",
coalesce(sum(ix.gt230_lte235_num),0) "gt230_lte235_num",
coalesce(sum(ix.gt235_lte240_num),0) "gt235_lte240_num",
coalesce(sum(ix.gt240_num),0) "gt240_num",
coalesce(round(sum(ix.lt216_num) / count(1),2),0.00) "lt216_per",
coalesce(round(sum(ix.gt215_lte220_num) / count(1),2),0.00) "gt215_lte220_per",
coalesce(round(sum(ix.gt220_lte225_num) / count(1),2),0.00) "gt220_lte225_per",
coalesce(round(sum(ix.gt225_lte230_num) / count(1),2),0.00) "gt225_lte230_per",
coalesce(round(sum(ix.gt230_lte235_num) / count(1),2),0.00) "gt230_lte235_per",
coalesce(round(sum(ix.gt235_lte240_num) / count(1),2),0.00) "gt235_lte240_per",
coalesce(round(sum(ix.gt240_num) / count(1),2),0.00) "gt240_per"
FROM
entrust_sample s
JOIN electrolyzer e ON s.electrolyzer_id = e.ID
LEFT JOIN ix ix ON ix.entrust_sample_id = s.id
WHERE
s.deleted = 0 and e.deleted = 0
and s.name = '电解质'
<if test="null != vo.timeS and null != vo.timeE">
AND EXISTS (
select 1 from entrust_sample_item si where si.deleted = 0 and si.entrust_sample_id = s.id
and to_char(si.test_time, 'YYYY-MM-dd HH24:MI:SS') BETWEEN #{vo.timeS} AND #{vo.timeE}
)
</if>
GROUP BY e.model
</select>
<!--磷生铁统计查询-->
<select id="selectPMakeFeStats" resultType="com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO">
with pi as (
SELECT
PI.*,
(CASE WHEN PI.C_VAL &gt;= 2.50 AND PI.C_VAL &lt;= 3.10 THEN 1 ELSE 0 END) "c_in_num",
(CASE WHEN PI.C_VAL &gt;= 2.00 AND PI.C_VAL &lt;= 3.00 THEN 1 ELSE 0 END) "si_in_num",
(CASE WHEN PI.C_VAL &gt;= 0.60 AND PI.C_VAL &lt;= 0.90 THEN 1 ELSE 0 END) "mn_in_num",
(CASE WHEN PI.C_VAL &gt;= 0.80 AND PI.C_VAL &lt;= 1.40 THEN 1 ELSE 0 END) "p_in_num",
(CASE WHEN PI.C_VAL &gt; 0.15 THEN 1 ELSE 0 END) "s_in_num",
(CASE WHEN PI.C_VAL &lt; 2.50 THEN 1 ELSE 0 END) "c_lt_num",
(CASE WHEN PI.C_VAL &lt; 2.00 THEN 1 ELSE 0 END) "si_lt_num",
(CASE WHEN PI.C_VAL &lt; 0.60 THEN 1 ELSE 0 END) "mn_lt_num",
(CASE WHEN PI.C_VAL &lt; 0.80 THEN 1 ELSE 0 END) "p_lt_num",
(CASE WHEN PI.C_VAL &gt; 3.10 THEN 1 ELSE 0 END) "c_gt_num",
(CASE WHEN PI.C_VAL &gt; 3.00 THEN 1 ELSE 0 END) "si_gt_num",
(CASE WHEN PI.C_VAL &gt; 0.90 THEN 1 ELSE 0 END) "mn_gt_num",
(CASE WHEN PI.C_VAL &gt; 1.40 THEN 1 ELSE 0 END) "p_gt_num",
(CASE WHEN PI.C_VAL &gt;= 0.15 THEN 1 ELSE 0 END) "s_gt_num"
FROM (
SELECT
i.company_id,
u.period,
i.entrust_sample_id,
round(sum(case when ii.name = '磷生铁-C' then to_number(ii.test_value,'9999.99') else 0.00 end) / coalesce(sum(case when ii.name = '磷生铁-C' then 1 else null end),1),2) "c_val",
round(sum(case when ii.name = '磷生铁-Si' then to_number(ii.test_value,'9999.99') else 0.00 end) / coalesce(sum(case when ii.name = '磷生铁-Si' then 1 else null end),1),2) "si_val",
round(sum(case when ii.name = '磷生铁-Mn' then to_number(ii.test_value,'9999.99') else 0.00 end) / coalesce(sum(case when ii.name = '磷生铁-Mn' then 1 else null end),1),2) "mn_val",
round(sum(case when ii.name = '磷生铁-P' then to_number(ii.test_value,'9999.99') else 0.00 end) / coalesce(sum(case when ii.name = '磷生铁-P' then 1 else null end),1),2) "p_val",
round(sum(case when ii.name = '磷生铁-S' then to_number(ii.test_value,'9999.99') else 0.00 end) / coalesce(sum(case when ii.name = '磷生铁-S' then 1 else null end),1),2) "s_val"
FROM
entrust_sample_item i,
entrust_sample_item_index ii,
-- 此视图需要关联base数据库查询,具体查看设计视图
v_sys_user_period U
WHERE
i.ID = ii.entrust_sample_item_id
AND I.TESTER_ID = u.USER_ID
-- and ii.name like '%磷生铁-%'
AND i.deleted = 0
AND ii.deleted = 0
AND ii.test_value is not null
<if test="null != vo.timeS and null != vo.timeE">
and to_char(i.test_time, 'YYYY-MM-dd HH24:MI:SS') BETWEEN #{vo.timeS} AND #{vo.timeE}
</if>
GROUP BY i.company_id,u.period,i.entrust_sample_id
) PI
)
select
pi.period,
round(sum(pi.c_val) / count(1),2) "c_val",
round(sum(pi.si_val) / count(1),2) "si_val",
round(sum(pi.mn_val) / count(1),2) "mn_val",
round(sum(pi.p_val) / count(1),2) "p_val",
round(sum(pi.s_val) / count(1),2) "s_val",
round(sum(pi.c_in_num) / count(1),2) "c_per",
round(sum(pi.si_in_num) / count(1),2) "si_per",
round(sum(pi.mn_in_num) / count(1),2) "mn_per",
round(sum(pi.p_in_num) / count(1),2) "p_per",
round(sum(pi.s_in_num) / count(1),2) "s_per",
sum(pi.c_lt_num) "c_lt_num",
sum(pi.si_lt_num) "si_lt_num",
sum(pi.mn_lt_num) "mn_lt_num",
sum(pi.p_lt_num) "p_lt_num",
sum(pi.c_in_num) "c_in_num",
sum(pi.si_in_num) "si_in_num",
sum(pi.mn_in_num) "mn_in_num",
sum(pi.p_in_num) "p_in_num",
sum(pi.s_in_num) "s_in_num",
sum(pi.c_gt_num) "c_gt_num",
sum(pi.si_gt_num) "si_gt_num",
sum(pi.mn_gt_num) "mn_gt_num",
sum(pi.p_gt_num) "p_gt_num",
sum(pi.s_gt_num) "s_gt_num"
from entrust_sample s
join pi pi on pi.entrust_sample_id = s.id
where s.deleted = 0
group by pi.period
</select>
</mapper> </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.LmsOriginalRecordInfoMapper">
<!--获取未生成的委托数据-->
<select id="selectUnGeneratedEntrustData"
resultType="com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo">
select o.file_id,o.contract_code from lms_original_record_info o
where o.deleted = 0
and o.contract_code is not null
and not exists (select 1 from entrust e where e.deleted = 0 and e.code = o.contract_code)
group by o.file_id, o.contract_code order by o.file_id
</select>
<select id="selectUnGeneratedSampleData"
resultType="com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo">
select o.file_id,o.contract_code,o.sample_num from lms_original_record_info o
where o.deleted = 0
and o.contract_code is not null
and o.sample_num is not null
and not exists (
select 1 from entrust e,entrust_sample s
where
e.deleted = 0
and e.code = o.contract_code
and s.entrust_id = e.id
and s.code = o.sample_num
)
group by o.file_id, o.contract_code, o.sample_num order by o.file_id
</select>
</mapper>
ALTER TABLE "public"."entrust_sample"
ALTER TABLE "public"."entrust_sample"
ADD COLUMN "category" varchar(64) COLLATE "pg_catalog"."default",
ADD COLUMN "electrolyzer_id" int8;
COMMENT ON COLUMN "public"."entrust_sample"."category" IS '样品类型';
COMMENT ON COLUMN "public"."entrust_sample"."electrolyzer_id" IS '电解质ID';
\ No newline at end of file
-- 开启dblink拓展
-- 开启dblink拓展
--执行:create extension dblink;
create extension dblink;
-------------------------------------------------------------------------------------------------
-- 创建获取数据库信息函数
CREATE OR REPLACE FUNCTION "public"."func_db_info"("db_name" varchar='pc_base'::character varying)
RETURNS "pg_catalog"."varchar" AS $BODY$BEGIN
-- Routine body goes here...
IF(strpos(db_name,'dev_') > 0) then
RETURN 'host=127.0.0.1 dbname='|| db_name || ' user=postgres password=post123';
ELSE
RETURN 'host=127.0.0.1 dbname='|| db_name || ' user=hjhmdb password=hm57hj6';
END IF;
END$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
--- 新增视图 :系统用户所属期数 ---
create or replace view v_sys_user_period
as
SELECT u.user_id,
u.period
FROM dblink(func_db_info('dev_base'::character varying)::text, ' SELECT rel.user_id, CASE WHEN sum(strpos(r.name::text, ''三期''::text)) > 0 THEN ''三期'' ELSE ''二期'' END AS period FROM sys_user_rel_role rel JOIN sys_role r ON r.id = rel.role_id WHERE r.status = 1 GROUP BY rel.user_id'::text) u(user_id bigint, period character varying)
ALTER TABLE "public"."material"
ALTER TABLE "public"."material"
ADD COLUMN "entrust_status_path" varchar(255) COLLATE "pg_catalog"."default";
COMMENT ON COLUMN "public"."material"."entrust_status_path" IS '委托状态范围';
ALTER TABLE "public"."entrust"
ADD COLUMN "status_path" varchar(255) COLLATE "pg_catalog"."default";
COMMENT ON COLUMN "public"."entrust"."status_path" IS '状态范围';
\ No newline at end of file
ALTER TABLE "public"."entrust"
ALTER TABLE "public"."entrust"
ADD COLUMN "flow_status" varchar(32) COLLATE "pg_catalog"."default";
COMMENT ON COLUMN "public"."entrust"."flow_status" IS '流程状态';
-- 新增表
DROP TABLE IF EXISTS "public"."lms_original_record_file";
CREATE TABLE "public"."lms_original_record_file" (
"id" int8 NOT NULL,
"company_id" int8 NOT NULL,
"deleted" int2 NOT NULL DEFAULT 0,
"origin_file_name" varchar(200) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"successful" int2 DEFAULT 0,
"origin_object_key" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"origin_bucket_name" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"origin_version_id" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"target_object_key" varchar(255) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"target_bucket_name" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"target_version_id" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"ctime" timestamp(0) NOT NULL,
"ltime" timestamp(0),
"target_file_name" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"resolver_name" varchar(200) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"extractor_name" varchar(200) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"client_file_path" varchar(300) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"target_file_type" varchar(20) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"origin_file_type" varchar(20) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"aaa" varchar(20) COLLATE "pg_catalog"."default",
"head" text COLLATE "pg_catalog"."default",
"ds_path" text COLLATE "pg_catalog"."default",
"analysis_date" text COLLATE "pg_catalog"."default"
)
;
COMMENT ON COLUMN "public"."lms_original_record_file"."id" IS 'ID';
COMMENT ON COLUMN "public"."lms_original_record_file"."company_id" IS '企业ID';
COMMENT ON COLUMN "public"."lms_original_record_file"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."lms_original_record_file"."origin_file_name" IS '源文件名称';
COMMENT ON COLUMN "public"."lms_original_record_file"."successful" IS '是否解析成功';
COMMENT ON COLUMN "public"."lms_original_record_file"."origin_object_key" IS '源文件的objectKey';
COMMENT ON COLUMN "public"."lms_original_record_file"."origin_bucket_name" IS '源文件的桶名称';
COMMENT ON COLUMN "public"."lms_original_record_file"."origin_version_id" IS '源文件的版本号';
COMMENT ON COLUMN "public"."lms_original_record_file"."target_object_key" IS '解析后文件的objectKey';
COMMENT ON COLUMN "public"."lms_original_record_file"."target_bucket_name" IS '解析后文件的桶名称';
COMMENT ON COLUMN "public"."lms_original_record_file"."target_version_id" IS '解析后文件的版本号';
COMMENT ON COLUMN "public"."lms_original_record_file"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."lms_original_record_file"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."lms_original_record_file"."target_file_name" IS '解析后的文件名称';
COMMENT ON COLUMN "public"."lms_original_record_file"."resolver_name" IS '解析器类的名称';
COMMENT ON COLUMN "public"."lms_original_record_file"."extractor_name" IS '转换器类名称';
COMMENT ON COLUMN "public"."lms_original_record_file"."client_file_path" IS '客户端配置的文件所在路径';
COMMENT ON COLUMN "public"."lms_original_record_file"."target_file_type" IS '转换后的文件的类型';
COMMENT ON COLUMN "public"."lms_original_record_file"."origin_file_type" IS '源文件的类型';
COMMENT ON COLUMN "public"."lms_original_record_file"."head" IS '表头信息';
COMMENT ON COLUMN "public"."lms_original_record_file"."ds_path" IS 'head中的ds_path';
COMMENT ON COLUMN "public"."lms_original_record_file"."analysis_date" IS '分析时间';
COMMENT ON TABLE "public"."lms_original_record_file" IS '原始记录文件存储表';
-- ----------------------------
-- Table structure for lms_original_record_info
-- ----------------------------
DROP TABLE IF EXISTS "public"."lms_original_record_info";
CREATE TABLE "public"."lms_original_record_info" (
"id" int8 NOT NULL,
"file_id" int8,
"contract_code" varchar(30) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"sample_num" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"item_name" varchar(50) COLLATE "pg_catalog"."default" DEFAULT ''::character varying,
"company_id" int8 NOT NULL,
"deleted" int2 NOT NULL DEFAULT 0,
"ctime" timestamp(0) NOT NULL,
"ltime" timestamp(0),
"data" text COLLATE "pg_catalog"."default" DEFAULT ''::text,
"revision_request" varchar(255) COLLATE "pg_catalog"."default",
"detection" varchar(255) COLLATE "pg_catalog"."default",
"min_response_factor" varchar(30) COLLATE "pg_catalog"."default",
"bar_num" text COLLATE "pg_catalog"."default" DEFAULT ''::character varying
)
;
COMMENT ON COLUMN "public"."lms_original_record_info"."id" IS 'ID';
COMMENT ON COLUMN "public"."lms_original_record_info"."file_id" IS '源文件id';
COMMENT ON COLUMN "public"."lms_original_record_info"."contract_code" IS '检测任务编号';
COMMENT ON COLUMN "public"."lms_original_record_info"."sample_num" IS '样品编号';
COMMENT ON COLUMN "public"."lms_original_record_info"."item_name" IS '项目名称';
COMMENT ON COLUMN "public"."lms_original_record_info"."company_id" IS '企业id';
COMMENT ON COLUMN "public"."lms_original_record_info"."deleted" IS '是否删除';
COMMENT ON COLUMN "public"."lms_original_record_info"."ctime" IS '创建时间';
COMMENT ON COLUMN "public"."lms_original_record_info"."ltime" IS '最后修改时间';
COMMENT ON COLUMN "public"."lms_original_record_info"."data" IS '数据信息';
COMMENT ON COLUMN "public"."lms_original_record_info"."revision_request" IS '修约要求';
COMMENT ON COLUMN "public"."lms_original_record_info"."detection" IS '检出限';
COMMENT ON COLUMN "public"."lms_original_record_info"."min_response_factor" IS '最小相对相应因子';
COMMENT ON COLUMN "public"."lms_original_record_info"."bar_num" IS '分装编号';
COMMENT ON TABLE "public"."lms_original_record_info" IS '原始记录解析后的数据存储表';
-- ----------------------------
-- Primary Key structure for table lms_original_record_file
-- ----------------------------
ALTER TABLE "public"."lms_original_record_file" ADD CONSTRAINT "env_original_record_file_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Primary Key structure for table lms_original_record_info
-- ----------------------------
ALTER TABLE "public"."lms_original_record_info" ADD CONSTRAINT "env_original_record_info_pkey" PRIMARY KEY ("id");
-- ----------------------------
-- Foreign Keys structure for table lms_original_record_info
-- ----------------------------
ALTER TABLE "public"."lms_original_record_info" ADD CONSTRAINT "fk_origin_file_id" FOREIGN KEY ("file_id") REFERENCES "public"."lms_original_record_file" ("id") ON DELETE NO ACTION ON UPDATE NO ACTION;
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