JcdBus.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace app\api\business;
  3. use app\api\exception\ApiException;
  4. use app\api\model\Ccjc;
  5. use app\api\model\Cyd;
  6. use app\api\model\SamplePesticides;
  7. use app\api\model\TestPesticides;
  8. class JcdBus
  9. {
  10. public function getJcdList($data)
  11. {
  12. $jcd_info = (new Cyd())->getCydListByUndertakeId($data['undertake_id'], $data['pageNum'], $data['pageSize']);
  13. $jcd_info_count = (new Cyd())->countCydListByUndertakeId($data['undertake_id']);
  14. return ['rows'=>$jcd_info,'total'=>$jcd_info_count];
  15. }
  16. public function getJcdObjectItem($sampel_id)
  17. {
  18. //根据模型,需要先获取到task_id才能获取到model_id,最后获取检测项
  19. $task_id = (new Cyd())->getCydInfoBySampleId($sampel_id)['task_id'];
  20. $test_model_id = (new Ccjc())->getTaskInfoByTaskID($task_id)['test_model_id'];
  21. $model_item = (new TestPesticides())->getInfoByTestModelId($test_model_id)->toArray();
  22. //检索数据库中是否保存检测项信息,如果为空进行创建操作,如果存在进行读取操作
  23. $data = [];
  24. $data_num = 0;
  25. $create_jcd_item=[];
  26. foreach ($model_item as $k=>$v) {
  27. //检索 是否存在,不存在则$item_is_set==null
  28. $item_is_set = (new SamplePesticides())->getItemByTestIdAndSampleId($v['test_id'],$sampel_id);
  29. if ($item_is_set==null){
  30. $data[$k]['test_id'] = $v['test_id'];
  31. $data[$k]['test_name'] = $v['test_name'];
  32. $data[$k]['sample_id'] = $sampel_id;
  33. }
  34. }
  35. //创建不存在的检测项
  36. $create_jcd_item = (new SamplePesticides())->saveItem($data);
  37. //获取检测单的信息
  38. $item_info = (new SamplePesticides())->getItemBySampleId($sampel_id);
  39. return $item_info;
  40. }
  41. //修改检测单状态,就是修改cyd表中的,test_status
  42. public function upJcdItem($sample_id)
  43. {
  44. $jcd_status = ['test_status' => '1'];
  45. $result = (new Cyd())->updateCydDataBySampleID($sample_id, $jcd_status);
  46. return $result;
  47. }
  48. //保存检测单
  49. public function saveJcdItem($sample_id, $pesticides){
  50. //格式化数据
  51. $data = [];//需要保存的数据
  52. $data_num =0;//一共有多少个需要保存的数据
  53. foreach ($pesticides as $k0 =>$v0) {
  54. if ($pesticides[$k0]['test_value'] != '') {
  55. $data [$k0]['test_id'] = $pesticides[$k0]['test_id'];
  56. $data [$k0]['test_value'] = $pesticides[$k0]['test_value'];
  57. $data [$k0]['state_value'] = $pesticides[$k0]['state_value'];
  58. $data [$k0]['unit'] = $pesticides[$k0]['unit'];
  59. $data [$k0]['creattime'] = $pesticides[$k0]['creattime'];
  60. $data [$k0]['sample_id'] = $sample_id;
  61. $data [$k0]['LOD'] = $pesticides[$k0]['LOD'];
  62. $data [$k0]['LOQ'] = $pesticides[$k0]['LOQ'];
  63. $data [$k0]['test_result'] = $pesticides[$k0]['test_result'];
  64. $data_num = $k0;
  65. }
  66. }
  67. $disable_save_data=$enable_save_data=[];
  68. //查找数据,如果enable_save==0,则无法保存,为null则可以保存
  69. for ($i = 0; $i < ($data_num+1); $i++) {
  70. $save_data = (new SamplePesticides())->getItemByTestIdAndSampleId($data[$i]['test_id'], $sample_id);
  71. //如果enable_save为1不可以保存
  72. if ($save_data['enable_save']==1) {
  73. $disable_save_data[] = ['test_id' => $data[$i]['test_id'], 'sample_id' => $sample_id];
  74. }
  75. //如果enable_save为null可以保存
  76. else if ($save_data['enable_save'] == null && $save_data['test_value']=='') {
  77. //添加数据
  78. (new SamplePesticides())->saveItemByTestIdAndSampleId($data[$i]['test_id'], $sample_id, $data[$i]);
  79. //根据item_id将对应的enable_save字段置1,禁止二次保存
  80. (new SamplePesticides())->saveItemByTestIdAndSampleId($data[$i]['test_id'], $sample_id,['enable_save' => 1]);
  81. $enable_save_data[] = ['test_id' => $data[$i]['test_id'], 'sample_id' => $sample_id];
  82. }
  83. else{
  84. throw new ApiException(config('status.err_none_auth_upload_data'));
  85. }
  86. }
  87. //将检测单的判定结果(整体合格还是不合格)存到cyd的test_result
  88. $test_result=(new SamplePesticides())->getItemBySampleId($sample_id)->toArray();
  89. $test_result_true=$test_result_false=$test_result_null=0;//三个统计项目,分别是检测合格、不合格、为空
  90. foreach ($test_result as $key => $value) {
  91. if ($test_result[$key]['test_result'] == '合格') $test_result_true+=1;
  92. if ($test_result[$key]['test_result'] == '不合格') $test_result_false+=1;
  93. if ($test_result[$key]['test_result'] == '') $test_result_null+=1;
  94. }
  95. //所有项目都有检测值,且没有不合格,则总的检测结果为合格
  96. if ($test_result_null == 0 && $test_result_false==0) {
  97. (new Cyd())->updateCydDataBySampleID($sample_id,['test_result'=>1]);
  98. }
  99. //所有项目都有检测值,且有不合格,则总的检测结果为不合格
  100. if ($test_result_null == 0 && $test_result_false!=0) {
  101. (new Cyd())->updateCydDataBySampleID($sample_id,['test_result'=>0]);
  102. }
  103. return ['enable_upload_data'=>$enable_save_data,'disable_upload_data'=>$disable_save_data];
  104. }
  105. //生成检测报告单
  106. public function createTestValue($sample_id)
  107. {
  108. $result_detail = (new SamplePesticides())->getItemBySampleId($sample_id);
  109. $result = (new Cyd())->getCydDetailBySampleID($sample_id);
  110. return ['result_detail'=>$result_detail,'result'=>$result];
  111. }
  112. }