From 6a3bb2d68efeaf0e6609a14e29412c3805730ce8 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 12 十二月 2024 18:41:09 +0800
Subject: [PATCH] 转运箱管理
---
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwStagingRoomDTO.java | 32 +
medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwBoxPageQuery.java | 39 +
medicalWaste-system/src/main/java/com/sinata/system/service/MwBoxService.java | 37 +
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwBoxVO.java | 34 +
medicalWaste-system/src/main/java/com/sinata/system/service/MwStagingRoomService.java | 44 ++
medicalWaste-system/src/main/java/com/sinata/system/domain/query/StorageRecordQuery.java | 39 +
medicalWaste-system/src/main/resources/mapper/system/MwStagingRoomMapper.xml | 27 +
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwStagingRoomController.java | 98 ++++
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java | 107 +++++
medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwBoxController.java | 91 ++++
medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwStagingRoomQuery.java | 22 +
medicalWaste-system/src/main/java/com/sinata/system/domain/MwBox.java | 42 +
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwStagingRoomVO.java | 38 +
medicalWaste-system/src/main/java/com/sinata/system/domain/vo/BoxStatisticsVO.java | 32 +
medicalWaste-common/src/main/java/com/sinata/common/enums/BoxProcessEnum.java | 25 +
medicalWaste-common/src/main/java/com/sinata/common/enums/BoxStatusEnum.java | 24 +
medicalWaste-system/src/main/java/com/sinata/system/mapper/MwStagingRoomMapper.java | 13
medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java | 89 ++++
medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwBoxDTO.java | 28 +
medicalWaste-admin/src/main/resources/sql-error-codes.xml | 311 +++++++++++++++
20 files changed, 1,166 insertions(+), 6 deletions(-)
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwBoxController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwBoxController.java
index d377d12..c3f093d 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwBoxController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwBoxController.java
@@ -1,7 +1,29 @@
package com.sinata.web.controller.backend;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.system.domain.dto.MwBoxDTO;
+import com.sinata.system.domain.query.MwBoxPageQuery;
+import com.sinata.system.domain.vo.BoxStatisticsVO;
+import com.sinata.system.domain.vo.MwBoxVO;
+import com.sinata.system.service.MwBoxService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
/**
* <p>
@@ -11,8 +33,77 @@
* @author mitao
* @since 2024-12-02
*/
+@Api(tags = {"转运箱管理相关接口"})
+@Validated
@RestController
+@RequiredArgsConstructor
@RequestMapping("/backend/mwBox")
public class MwBoxController {
+ private final MwBoxService boxService;
+
+ /**
+ * 转运箱数据统计
+ *
+ * @return
+ */
+ @GetMapping("/statistics")
+ @ApiOperation("转运箱数据统计")
+ public R<BoxStatisticsVO> getBoxStatistics() {
+ return R.ok(boxService.getBoxStatistics());
+ }
+
+ /**
+ * 转运箱分页列表
+ *
+ * @param query
+ * @return
+ */
+ @PostMapping("/page")
+ @ApiOperation("转运箱分页列表")
+ public R<PageDTO<MwBoxVO>> pageList(@Valid @RequestBody MwBoxPageQuery query) {
+ return R.ok(boxService.pageList(query));
+ }
+
+ /**
+ * 新增转运箱
+ *
+ * @param boxNumberStart
+ * @param boxNumberEnd
+ * @return
+ */
+ @PostMapping("/add")
+ @ApiOperation("新增转运箱")
+ @ApiImplicitParams({@ApiImplicitParam(name = "boxNumberStart", value = "转运箱编号开始", required = true),
+ @ApiImplicitParam(name = "boxNumberEnd", value = "转运箱编号结束", required = true)})
+ public R<?> add(@RequestParam String boxNumberStart, @RequestParam String boxNumberEnd) {
+ boxService.add(boxNumberStart, boxNumberEnd);
+ return R.ok();
+ }
+
+ /**
+ * 编辑转运箱状态
+ *
+ * @param dtoList
+ * @return
+ */
+ @PostMapping("/editBatch")
+ @ApiOperation("批量修改转运箱状态")
+ public R<?> editBatch(@Valid @RequestBody List<MwBoxDTO> dtoList) {
+ boxService.editBatch(dtoList);
+ return R.ok();
+ }
+
+ /**
+ * 批量删除
+ *
+ * @param idList
+ * @return
+ */
+ @PostMapping("/delBatch")
+ @ApiOperation("批量删除")
+ public R<?> delBatch(@ApiParam(name = "idList", value = "转运箱id列表", required = true, allowMultiple = true) @NotEmpty(message = "转运箱列表不能为空") @RequestBody List<Long> idList) {
+ boxService.removeByIds(idList);
+ return R.ok();
+ }
}
diff --git a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwStagingRoomController.java b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwStagingRoomController.java
index 35d4d47..1c2ba42 100644
--- a/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwStagingRoomController.java
+++ b/medicalWaste-admin/src/main/java/com/sinata/web/controller/backend/MwStagingRoomController.java
@@ -1,7 +1,27 @@
package com.sinata.web.controller.backend;
+import com.sinata.common.core.domain.R;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.system.domain.dto.MwStagingRoomDTO;
+import com.sinata.system.domain.query.MwStagingRoomQuery;
+import com.sinata.system.domain.query.StorageRecordQuery;
+import com.sinata.system.domain.vo.MwCollectRecordVO;
+import com.sinata.system.domain.vo.MwStagingRoomVO;
+import com.sinata.system.service.MwStagingRoomService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
/**
* <p>
@@ -11,8 +31,86 @@
* @author mitao
* @since 2024-12-02
*/
+@Api(tags = {"暂存间管理相关接口"})
+@Validated
@RestController
+@RequiredArgsConstructor
@RequestMapping("/backend/mwStagingRoom")
public class MwStagingRoomController {
+ private final MwStagingRoomService mwStagingRoomService;
+ /**
+ * 暂存间分页列表
+ *
+ * @param query
+ * @return
+ */
+ @PostMapping("/page")
+ @ApiOperation("暂存间分页列表")
+ public R<PageDTO<MwStagingRoomVO>> pageList(@Valid @RequestBody MwStagingRoomQuery query) {
+ return R.ok(mwStagingRoomService.pageList(query));
+ }
+
+ /**
+ * 新增暂存间
+ *
+ * @param dto
+ * @return
+ */
+ @PostMapping("/add")
+ @ApiOperation("新增暂存间")
+ public R<?> add(@Valid @RequestBody MwStagingRoomDTO dto) {
+ mwStagingRoomService.add(dto);
+ return R.ok();
+ }
+
+ /**
+ * 编辑暂存间
+ *
+ * @param dto
+ * @return
+ */
+ @PostMapping("/edit")
+ @ApiOperation("编辑暂存间")
+ public R<?> edit(@Valid @RequestBody MwStagingRoomDTO dto) {
+ mwStagingRoomService.edit(dto);
+ return R.ok();
+ }
+
+ /**
+ * 删除暂存间
+ *
+ * @param id
+ * @return
+ */
+ @DeleteMapping("/{id}")
+ @ApiOperation("删除暂存间")
+ public R<?> delete(@ApiParam(name = "id", value = "暂存间id", required = true) @PathVariable("id") Long id) {
+ mwStagingRoomService.removeById(id);
+ return R.ok();
+ }
+
+ /**
+ * 根据医院id查询暂存间
+ *
+ * @param departmentId
+ * @return
+ */
+ @GetMapping("/getByHospitalId/{departmentId}")
+ @ApiOperation(value = "根据医院id查询暂存间", notes = "入库、出库记录暂存间筛选级联数据")
+ public R<MwStagingRoomVO> getByHospitalId(@ApiParam(name = "departmentId", value = "医院id", required = true) @PathVariable("departmentId") Long departmentId) {
+ return R.ok(mwStagingRoomService.getByHospitalId(departmentId));
+ }
+
+ /**
+ * 暂存间入库记录
+ *
+ * @param query
+ * @return
+ */
+ @PostMapping("/storageRecord")
+ @ApiOperation("暂存间入库记录")
+ public R<PageDTO<MwCollectRecordVO>> storageRecord(@Valid @RequestBody StorageRecordQuery query) {
+ return R.ok(mwStagingRoomService.storageRecord(query));
+ }
}
diff --git a/medicalWaste-admin/src/main/resources/sql-error-codes.xml b/medicalWaste-admin/src/main/resources/sql-error-codes.xml
new file mode 100644
index 0000000..c7599d1
--- /dev/null
+++ b/medicalWaste-admin/src/main/resources/sql-error-codes.xml
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "https://www.springframework.org/dtd/spring-beans-2.0.dtd">
+
+<!--
+ - Default SQL error codes for well-known databases.
+ - Can be overridden by definitions in a "sql-error-codes.xml" file
+ - in the root of the class path.
+ -
+ - If the Database Product Name contains characters that are invalid
+ - to use in the id attribute (like a space) then we need to add a property
+ - named "databaseProductName"/"databaseProductNames" that holds this value.
+ - If this property is present, then it will be used instead of the id for
+ - looking up the error codes based on the current database.
+ -->
+<beans>
+
+ <bean id="DB2" name="Db2" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductName">
+ <value>DB2*</value>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>-007,-029,-097,-104,-109,-115,-128,-199,-204,-206,-301,-408,-441,-491</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>-803</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>-407,-530,-531,-532,-543,-544,-545,-603,-667</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>-904,-971</value>
+ </property>
+ <property name="transientDataAccessResourceCodes">
+ <value>-1035,-1218,-30080,-30081</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>-911,-913</value>
+ </property>
+ </bean>
+
+ <bean id="Derby" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductName">
+ <value>Apache Derby</value>
+ </property>
+ <property name="useSqlStateForTranslation">
+ <value>true</value>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>42802,42821,42X01,42X02,42X03,42X04,42X05,42X06,42X07,42X08</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>23505</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>22001,22005,23502,23503,23513,X0Y32</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>04501,08004,42Y07</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>40XL1</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>40001</value>
+ </property>
+ </bean>
+
+ <bean id="H2" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="badSqlGrammarCodes">
+ <value>42000,42001,42101,42102,42111,42112,42121,42122,42132</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>23001,23505</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>22001,22003,22012,22018,22025,23000,23002,23003,23502,23503,23506,23507,23513</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>90046,90100,90117,90121,90126</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>50200</value>
+ </property>
+ </bean>
+
+ <!-- https://help.sap.com/saphelp_hanaplatform/helpdata/en/20/a78d3275191014b41bae7c4a46d835/content.htm -->
+ <bean id="HDB" name="Hana" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductNames">
+ <list>
+ <value>SAP HANA</value>
+ <value>SAP DB</value>
+ </list>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>
+ 257,259,260,261,262,263,264,267,268,269,270,271,272,273,275,276,277,278,
+ 278,279,280,281,282,283,284,285,286,288,289,290,294,295,296,297,299,308,309,
+ 313,315,316,318,319,320,321,322,323,324,328,329,330,333,335,336,337,338,340,
+ 343,350,351,352,362,368
+ </value>
+ </property>
+ <property name="permissionDeniedCodes">
+ <value>10,258</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>301</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>461,462</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>-813,-709,-708,1024,1025,1026,1027,1029,1030,1031</value>
+ </property>
+ <property name="invalidResultSetAccessCodes">
+ <value>-11210,582,587,588,594</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>131</value>
+ </property>
+ <property name="cannotSerializeTransactionCodes">
+ <value>138,143</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>133</value>
+ </property>
+ </bean>
+
+ <bean id="HSQL" name="Hsql" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductName">
+ <value>HSQL Database Engine</value>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>-22,-28</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>-104</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>-9</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>-80</value>
+ </property>
+ </bean>
+
+ <bean id="Informix" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductName">
+ <value>Informix Dynamic Server</value>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>-201,-217,-696</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>-239,-268,-6017</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>-692,-11030</value>
+ </property>
+ </bean>
+
+ <bean id="MS-SQL" name="SqlServer" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductName">
+ <value>Microsoft SQL Server</value>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>156,170,207,208,209</value>
+ </property>
+ <property name="permissionDeniedCodes">
+ <value>229</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>2601,2627</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>544,2628,8114,8115</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>4060</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>1222</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>1205</value>
+ </property>
+ </bean>
+
+ <bean id="MySQL" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductNames">
+ <list>
+ <value>MySQL</value>
+ <value>MariaDB</value>
+ </list>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>1054,1064,1146</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>1062</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>630,839,840,893,1169,1215,1216,1217,1364,1451,1452,1557</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>1</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>1205,3572</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>1213</value>
+ </property>
+ </bean>
+
+ <bean id="Oracle" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="badSqlGrammarCodes">
+ <value>900,903,904,917,936,942,17006,6550</value>
+ </property>
+ <property name="invalidResultSetAccessCodes">
+ <value>17003</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>1</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>1400,1722,2291,2292</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>17002,17447</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>54,30006</value>
+ </property>
+ <property name="cannotSerializeTransactionCodes">
+ <value>8177</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>60</value>
+ </property>
+ </bean>
+
+ <bean id="PostgreSQL" name="Postgres" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="useSqlStateForTranslation">
+ <value>true</value>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>03000,42000,42601,42602,42622,42804,42P01</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>21000,23505</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>23000,23502,23503,23514</value>
+ </property>
+ <property name="dataAccessResourceFailureCodes">
+ <value>53000,53100,53200,53300</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>55P03</value>
+ </property>
+ <property name="cannotSerializeTransactionCodes">
+ <value>40001</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>40P01</value>
+ </property>
+ </bean>
+
+ <bean id="Sybase" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductNames">
+ <list>
+ <value>Sybase SQL Server</value>
+ <value>Adaptive Server Enterprise</value>
+ <value>ASE</value> <!-- name as returned by jTDS driver -->
+ <value>SQL Server</value>
+ <value>sql server</value> <!-- name as returned by jTDS driver -->
+ </list>
+ </property>
+ <property name="badSqlGrammarCodes">
+ <value>101,102,103,104,105,106,107,108,109,110,111,112,113,116,120,121,123,207,208,213,257,512</value>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>2601,2615,2626</value>
+ </property>
+ <property name="dataIntegrityViolationCodes">
+ <value>233,511,515,530,546,547,2615,2714</value>
+ </property>
+ <property name="transientDataAccessResourceCodes">
+ <value>921,1105</value>
+ </property>
+ <property name="cannotAcquireLockCodes">
+ <value>12205</value>
+ </property>
+ <property name="deadlockLoserCodes">
+ <value>1205</value>
+ </property>
+ </bean>
+
+ <!-- 支持达梦数据库错误码-->
+ <bean id="DM" class="org.springframework.jdbc.support.SQLErrorCodes">
+ <property name="databaseProductNames">
+ <list>
+ <!-- 数据源名称存在空格不能像Oracle一样直接作为beanId -->
+ <value>DM DBMS</value>
+ </list>
+ </property>
+ <property name="duplicateKeyCodes">
+ <value>-6602</value>
+ </property>
+ </bean>
+</beans>
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/enums/BoxProcessEnum.java b/medicalWaste-common/src/main/java/com/sinata/common/enums/BoxProcessEnum.java
new file mode 100644
index 0000000..c728d71
--- /dev/null
+++ b/medicalWaste-common/src/main/java/com/sinata/common/enums/BoxProcessEnum.java
@@ -0,0 +1,25 @@
+package com.sinata.common.enums;
+
+import lombok.Getter;
+import lombok.AllArgsConstructor;
+
+@Getter
+@AllArgsConstructor
+public enum BoxProcessEnum {
+ HOSPITAL_USING(1, "医院在用"),
+ TRANSITING(2, "医疗废物车载"),
+ READY_TO_DISPOSAL(3, "待处置"),
+ DISPOSAL(4, "处置消毒");
+
+ private final Integer code;
+ private final String desc;
+
+ public static BoxProcessEnum getEnumByCode(Integer code) {
+ for (BoxProcessEnum e : BoxProcessEnum.values()) {
+ if (e.code.equals(code)) {
+ return e;
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/medicalWaste-common/src/main/java/com/sinata/common/enums/BoxStatusEnum.java b/medicalWaste-common/src/main/java/com/sinata/common/enums/BoxStatusEnum.java
new file mode 100644
index 0000000..defbb65
--- /dev/null
+++ b/medicalWaste-common/src/main/java/com/sinata/common/enums/BoxStatusEnum.java
@@ -0,0 +1,24 @@
+package com.sinata.common.enums;
+
+import lombok.Getter;
+import lombok.AllArgsConstructor;
+
+@Getter
+@AllArgsConstructor
+public enum BoxStatusEnum {
+ NORMAL(1, "正常"),
+ LOST(2, "丢失"),
+ BROKEN(3, "破坏");
+
+ private final Integer code;
+ private final String desc;
+
+ public static BoxStatusEnum getEnumByCode(Integer code) {
+ for (BoxStatusEnum e : BoxStatusEnum.values()) {
+ if (e.code.equals(code)) {
+ return e;
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwBox.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwBox.java
index eb8fc4c..5b98b38 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/domain/MwBox.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/MwBox.java
@@ -1,15 +1,17 @@
package com.sinata.system.domain;
+import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
-import com.sinata.common.entity.BaseModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
+import java.io.Serializable;
import java.util.Date;
/**
@@ -24,7 +26,7 @@
@Setter
@TableName("MW_BOX")
@ApiModel(value = "MwBox对象", description = "转运箱")
-public class MwBox extends BaseModel {
+public class MwBox implements Serializable {
private static final long serialVersionUID = 1L;
@@ -36,7 +38,7 @@
@TableField("BOX_NUMBER")
private String boxNumber;
- @ApiModelProperty("转运箱状态 1:正常 2:丢失 3:破坏 4:正常")
+ @ApiModelProperty("转运箱状态 1:正常 2:丢失 3:破坏")
@TableField("STATUS")
private Integer status;
@@ -52,5 +54,39 @@
@TableField("LINK")
private Integer link;
+ /**
+ * 创建者
+ */
+ @ApiModelProperty(value = "记录创建人,前端忽略")
+ @TableField(value = "create_by", fill = FieldFill.INSERT)
+ private Long createBy;
+ /**
+ * 创建时间
+ */
+ @ApiModelProperty(value = "记录创建时间,前端忽略")
+ @TableField(value = "create_time", fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /**
+ * 更新者
+ */
+ @ApiModelProperty(value = "记录修改人,前端忽略")
+ @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE)
+ private Long updateBy;
+
+ /**
+ * 更新时间
+ */
+ @ApiModelProperty(value = "记录修改时间,前端忽略")
+ @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
+
+ /**
+ * 是否删除 0未删除 1已删除
+ */
+ @TableField("del_flag")
+ @ApiModelProperty(value = "是否删除 0未删除 1已删除")
+ @TableLogic(value = "0", delval = "NULL")
+ private Integer delFlag;
}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwBoxDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwBoxDTO.java
new file mode 100644
index 0000000..0ff04a5
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwBoxDTO.java
@@ -0,0 +1,28 @@
+package com.sinata.system.domain.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@ApiModel("转运箱数据传输对象")
+public class MwBoxDTO {
+
+ @ApiModelProperty("转运箱id")
+ @NotNull(message = "转运箱id不能为空")
+ private Long id;
+
+ @ApiModelProperty("转运箱状态 1:正常 2:丢失 3:破坏")
+ @NotNull(message = "转运箱状态不能为空")
+ private Integer status;
+
+ @ApiModelProperty("备注")
+ private String remark;
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwStagingRoomDTO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwStagingRoomDTO.java
new file mode 100644
index 0000000..84b07cc
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/dto/MwStagingRoomDTO.java
@@ -0,0 +1,32 @@
+package com.sinata.system.domain.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@ApiOperation("暂存间数据传输对象")
+public class MwStagingRoomDTO {
+
+ @ApiModelProperty("暂存间id")
+ private Long id;
+
+ @ApiModelProperty("区域id(医院id)")
+ @NotNull(message = "医院id不能为空")
+ private Long departmentId;
+
+ @ApiModelProperty("暂存间名称")
+ @NotBlank(message = "暂存间名称不能为空")
+ private String roomName;
+
+ @ApiModelProperty("最大容量(箱)")
+ @NotNull(message = "最大容量不能为空")
+ private Integer maxCapacity;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwBoxPageQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwBoxPageQuery.java
new file mode 100644
index 0000000..5d4e42a
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwBoxPageQuery.java
@@ -0,0 +1,39 @@
+package com.sinata.system.domain.query;
+
+import com.sinata.common.entity.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("转运箱查询数据传输对象")
+public class MwBoxPageQuery extends BasePage {
+
+ private static final long serialVersionUID = -5341744240105838832L;
+ @ApiModelProperty("编号-开始")
+ private String boxNumberStart;
+
+ @ApiModelProperty("编号-结束")
+ private String boxNumberEnd;
+
+ @ApiModelProperty("转运箱状态 1:正常 2:丢失 3:破坏")
+ private Integer status;
+
+ @ApiModelProperty("转运箱环节 1:医院在用 2:医疗废物车载 3:待处置 4:处置消毒")
+ private Integer link;
+
+ @ApiModelProperty("最后使用时间-开始")
+ private Date lastUseTimeStart;
+
+ @ApiModelProperty("最后使用时间-结束")
+ private Date lastUseTimeEnd;
+
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwStagingRoomQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwStagingRoomQuery.java
new file mode 100644
index 0000000..c5f8e82
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/MwStagingRoomQuery.java
@@ -0,0 +1,22 @@
+package com.sinata.system.domain.query;
+
+import com.sinata.common.entity.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("暂存间查询数据传输对象")
+public class MwStagingRoomQuery extends BasePage {
+
+ private static final long serialVersionUID = -4437483386027508070L;
+
+ @ApiModelProperty("医院id")
+ private Long departmentId;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/query/StorageRecordQuery.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/StorageRecordQuery.java
new file mode 100644
index 0000000..1893024
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/query/StorageRecordQuery.java
@@ -0,0 +1,39 @@
+package com.sinata.system.domain.query;
+
+import com.sinata.common.entity.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("暂存间入库记录查询数据传输对象")
+public class StorageRecordQuery extends BasePage {
+
+ private static final long serialVersionUID = 3037481981686862175L;
+
+ @ApiModelProperty("机构id")
+ private Long departmentId;
+
+ @ApiModelProperty("暂存间id")
+ private Long stagingRoomId;
+
+ @ApiModelProperty("医废编号")
+ private String medicalWasteNumber;
+
+ @ApiModelProperty("箱子编号")
+ private String boxNumber;
+
+ @ApiModelProperty("医废类型")
+ private Integer wasteType;
+
+ @ApiModelProperty("入库时间")
+ private Date collectTime;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/BoxStatisticsVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/BoxStatisticsVO.java
new file mode 100644
index 0000000..5859442
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/BoxStatisticsVO.java
@@ -0,0 +1,32 @@
+package com.sinata.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/12/11
+ */
+@Data
+@ApiModel("转运箱统计视图对象")
+public class BoxStatisticsVO {
+
+ @ApiModelProperty("转运箱总数")
+ private Integer total = 0;
+
+ @ApiModelProperty("转运箱破坏总数")
+ private Long brokenCount = 0L;
+
+ @ApiModelProperty("转运箱丢失总数")
+ private Long lostCount = 0L;
+
+ @ApiModelProperty("处置消毒转运箱总数")
+ private Long disposeCount = 0L;
+
+ @ApiModelProperty("医院在用转运箱总数")
+ private Long hospitalUsingCount = 0L;
+
+ @ApiModelProperty("医疗废物车载转运箱总数")
+ private Long transitingCount = 0L;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwBoxVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwBoxVO.java
new file mode 100644
index 0000000..abb80e3
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwBoxVO.java
@@ -0,0 +1,34 @@
+package com.sinata.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@ApiModel("转运箱视图对象")
+public class MwBoxVO {
+
+ @ApiModelProperty("转运箱id")
+ private Long id;
+
+ @ApiModelProperty("转运箱编号")
+ private String boxNumber;
+
+ @ApiModelProperty("转运箱状态 1:正常 2:丢失 3:破坏")
+ private Integer status;
+
+ @ApiModelProperty("最后使用时间")
+ private Date lastUseTime;
+
+ @ApiModelProperty("备注")
+ private String remark;
+
+ @ApiModelProperty("转运箱环节 1:医院在用 2:医疗废物车载 3:待处置 4:处置消毒")
+ private Integer link;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwStagingRoomVO.java b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwStagingRoomVO.java
new file mode 100644
index 0000000..b761679
--- /dev/null
+++ b/medicalWaste-system/src/main/java/com/sinata/system/domain/vo/MwStagingRoomVO.java
@@ -0,0 +1,38 @@
+package com.sinata.system.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author mitao
+ * @date 2024/12/12
+ */
+@Data
+@ApiModel("暂存间视图对象")
+public class MwStagingRoomVO {
+
+ @ApiModelProperty("暂存间id")
+ private Long id;
+
+ @ApiModelProperty("区域id(医院id)")
+ private Long departmentId;
+
+ @ApiModelProperty("医院名称")
+ private String hospitalName;
+
+ @ApiModelProperty("暂存间名称")
+ private String roomName;
+
+ @ApiModelProperty("最大容量(箱)")
+ private Integer maxCapacity;
+
+ @ApiModelProperty("已使用数量")
+ private Integer usedNum;
+
+ @ApiModelProperty("未使用数量")
+ private Integer unused;
+
+ @ApiModelProperty("添加时间")
+ private String createTime;
+}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwStagingRoomMapper.java b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwStagingRoomMapper.java
index 67c0f75..4866822 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwStagingRoomMapper.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/mapper/MwStagingRoomMapper.java
@@ -1,8 +1,11 @@
package com.sinata.system.mapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sinata.system.domain.MwStagingRoom;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.sinata.system.domain.vo.MwStagingRoomVO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
/**
* <p>
@@ -14,5 +17,13 @@
*/
@Mapper
public interface MwStagingRoomMapper extends BaseMapper<MwStagingRoom> {
-
+ /**
+ * 暂存间分页列表
+ *
+ * @param objectPage
+ * @param departmentId
+ * @param treeCode
+ * @return
+ */
+ Page<MwStagingRoomVO> pagelist(Page<Object> objectPage, @Param("departmentId") Long departmentId, @Param("treeCode") String treeCode);
}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwBoxService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwBoxService.java
index b4fc2dc..9160a56 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwBoxService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwBoxService.java
@@ -1,7 +1,14 @@
package com.sinata.system.service;
+import com.sinata.common.entity.PageDTO;
import com.sinata.system.domain.MwBox;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.sinata.system.domain.dto.MwBoxDTO;
+import com.sinata.system.domain.query.MwBoxPageQuery;
+import com.sinata.system.domain.vo.BoxStatisticsVO;
+import com.sinata.system.domain.vo.MwBoxVO;
+
+import java.util.List;
/**
* <p>
@@ -12,5 +19,35 @@
* @since 2024-12-02
*/
public interface MwBoxService extends IService<MwBox> {
+ /**
+ * 转运箱数据统计
+ *
+ * @return
+ */
+ BoxStatisticsVO getBoxStatistics();
+ /**
+ * 转运箱分页列表
+ *
+ * @param query
+ * @return
+ */
+ PageDTO<MwBoxVO> pageList(MwBoxPageQuery query);
+
+ /**
+ * 新增转运箱
+ *
+ * @param boxNumberStart
+ * @param boxNumberEnd
+ * @return
+ */
+ void add(String boxNumberStart, String boxNumberEnd);
+
+ /**
+ * 编辑转运箱状态
+ *
+ * @param dtoList
+ * @return
+ */
+ void editBatch(List<MwBoxDTO> dtoList);
}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/MwStagingRoomService.java b/medicalWaste-system/src/main/java/com/sinata/system/service/MwStagingRoomService.java
index 69619bc..b305589 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/MwStagingRoomService.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/MwStagingRoomService.java
@@ -1,7 +1,13 @@
package com.sinata.system.service;
+import com.sinata.common.entity.PageDTO;
import com.sinata.system.domain.MwStagingRoom;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.sinata.system.domain.dto.MwStagingRoomDTO;
+import com.sinata.system.domain.query.MwStagingRoomQuery;
+import com.sinata.system.domain.query.StorageRecordQuery;
+import com.sinata.system.domain.vo.MwCollectRecordVO;
+import com.sinata.system.domain.vo.MwStagingRoomVO;
/**
* <p>
@@ -12,5 +18,43 @@
* @since 2024-12-02
*/
public interface MwStagingRoomService extends IService<MwStagingRoom> {
+ /**
+ * 暂存间分页列表
+ *
+ * @param query
+ * @return
+ */
+ PageDTO<MwStagingRoomVO> pageList(MwStagingRoomQuery query);
+ /**
+ * 新增暂存间
+ *
+ * @param dto
+ * @return
+ */
+ void add(MwStagingRoomDTO dto);
+
+ /**
+ * 编辑暂存间
+ *
+ * @param dto
+ * @return
+ */
+ void edit(MwStagingRoomDTO dto);
+
+ /**
+ * 根据医院id查询暂存间
+ *
+ * @param departmentId
+ * @return
+ */
+ MwStagingRoomVO getByHospitalId(Long departmentId);
+
+ /**
+ * 暂存间入库记录
+ *
+ * @param query
+ * @return
+ */
+ PageDTO<MwCollectRecordVO> storageRecord(StorageRecordQuery query);
}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java
index c2ea591..8706682 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwBoxServiceImpl.java
@@ -1,10 +1,29 @@
package com.sinata.system.service.impl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.enums.BoxProcessEnum;
+import com.sinata.common.enums.BoxStatusEnum;
+import com.sinata.common.exception.ServiceException;
+import com.sinata.common.utils.BeanUtils;
+import com.sinata.common.utils.CollUtils;
+import com.sinata.common.utils.StringUtils;
import com.sinata.system.domain.MwBox;
+import com.sinata.system.domain.dto.MwBoxDTO;
+import com.sinata.system.domain.query.MwBoxPageQuery;
+import com.sinata.system.domain.vo.BoxStatisticsVO;
+import com.sinata.system.domain.vo.MwBoxVO;
import com.sinata.system.mapper.MwBoxMapper;
import com.sinata.system.service.MwBoxService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.dao.DuplicateKeyException;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
/**
* <p>
@@ -16,5 +35,91 @@
*/
@Service
public class MwBoxServiceImpl extends ServiceImpl<MwBoxMapper, MwBox> implements MwBoxService {
+ /**
+ * 转运箱数据统计
+ *
+ * @return
+ */
+ @Override
+ public BoxStatisticsVO getBoxStatistics() {
+ BoxStatisticsVO boxStatisticsVO = new BoxStatisticsVO();
+ List<MwBox> boxList = this.list();
+ if (CollUtils.isNotEmpty(boxList)) {
+ boxStatisticsVO.setTotal(boxList.size());
+ boxStatisticsVO.setBrokenCount(boxList.stream().filter(box -> BoxStatusEnum.BROKEN.getCode().equals(box.getStatus())).count());
+ boxStatisticsVO.setLostCount(boxList.stream().filter(box -> BoxStatusEnum.LOST.getCode().equals(box.getStatus())).count());
+ boxStatisticsVO.setDisposeCount(boxList.stream().filter(box -> BoxProcessEnum.DISPOSAL.getCode().equals(box.getStatus())).count());
+ boxStatisticsVO.setHospitalUsingCount(boxList.stream().filter(box -> BoxProcessEnum.HOSPITAL_USING.getCode().equals(box.getStatus())).count());
+ boxStatisticsVO.setTransitingCount(boxList.stream().filter(box -> BoxProcessEnum.TRANSITING.getCode().equals(box.getStatus())).count());
+ }
+ return boxStatisticsVO;
+ }
+ /**
+ * 转运箱分页列表
+ *
+ * @param query
+ * @return
+ */
+ @Override
+ public PageDTO<MwBoxVO> pageList(MwBoxPageQuery query) {
+ Page<MwBox> page = this.lambdaQuery()
+ .between(StringUtils.isNotBlank(query.getBoxNumberStart())
+ && StringUtils.isNotBlank(query.getBoxNumberEnd()),
+ MwBox::getBoxNumber, query.getBoxNumberStart(), query.getBoxNumberEnd())
+ .eq(Objects.nonNull(query.getStatus()), MwBox::getStatus, query.getStatus())
+ .eq(Objects.nonNull(query.getLink()), MwBox::getLink, query.getLink())
+ .between(Objects.nonNull(query.getLastUseTimeStart())
+ && Objects.nonNull(query.getLastUseTimeEnd()),
+ MwBox::getLastUseTime, query.getLastUseTimeStart(), query.getLastUseTimeEnd())
+ .orderByDesc(MwBox::getBoxNumber)
+ .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+ return PageDTO.of(page, MwBoxVO.class);
+ }
+
+ /**
+ * 新增转运箱
+ *
+ * @param boxNumberStart
+ * @param boxNumberEnd
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void add(String boxNumberStart, String boxNumberEnd) {
+ String regx = "\\d+";
+ if (boxNumberStart.length() != 11 || boxNumberEnd.length() != 11 || !boxNumberStart.matches(regx) || !boxNumberEnd.matches(regx)) {
+ throw new ServiceException("请输入有效的11位数字编号!");
+ }
+ BigDecimal start = new BigDecimal(boxNumberStart);
+ BigDecimal end = new BigDecimal(boxNumberEnd);
+ if (start.compareTo(end) > 0) {
+ throw new ServiceException("开始编号不能大于结束编号");
+ }
+ List<MwBox> boxList = new ArrayList<>();
+ for (BigDecimal i = start; i.compareTo(end) <= 0; i = i.add(BigDecimal.ONE)) {
+ MwBox mwBox = new MwBox();
+ mwBox.setBoxNumber(i.toString());
+ mwBox.setStatus(BoxStatusEnum.NORMAL.getCode());
+ boxList.add(mwBox);
+ }
+ try {
+ this.saveBatch(boxList);
+ } catch (DuplicateKeyException e) {
+ throw new ServiceException("转运箱编号重复");
+ }
+ }
+
+ /**
+ * 编辑转运箱状态
+ *
+ * @param dto
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void editBatch(List<MwBoxDTO> dtoList) {
+ List<MwBox> mwBoxes = BeanUtils.copyToList(dtoList, MwBox.class);
+ this.updateBatchById(mwBoxes);
+ }
}
diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java
index 9644ef3..f687b10 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwStagingRoomServiceImpl.java
@@ -1,10 +1,24 @@
package com.sinata.system.service.impl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.common.entity.PageDTO;
+import com.sinata.common.exception.ServiceException;
+import com.sinata.common.utils.BeanUtils;
import com.sinata.system.domain.MwStagingRoom;
+import com.sinata.system.domain.SysDepartment;
+import com.sinata.system.domain.dto.MwStagingRoomDTO;
+import com.sinata.system.domain.query.MwStagingRoomQuery;
+import com.sinata.system.domain.query.StorageRecordQuery;
+import com.sinata.system.domain.vo.MwCollectRecordVO;
+import com.sinata.system.domain.vo.MwStagingRoomVO;
import com.sinata.system.mapper.MwStagingRoomMapper;
import com.sinata.system.service.MwStagingRoomService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sinata.system.service.SysDepartmentService;
+import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+
+import java.util.Objects;
/**
* <p>
@@ -15,6 +29,79 @@
* @since 2024-12-02
*/
@Service
+@RequiredArgsConstructor
public class MwStagingRoomServiceImpl extends ServiceImpl<MwStagingRoomMapper, MwStagingRoom> implements MwStagingRoomService {
+ private final SysDepartmentService sysDepartmentService;
+ /**
+ * 暂存间分页列表
+ *
+ * @param query
+ * @return
+ */
+ @Override
+ public PageDTO<MwStagingRoomVO> pageList(MwStagingRoomQuery query) {
+ String treeCode = "";
+ if (Objects.nonNull(query.getDepartmentId())) {
+ SysDepartment department = sysDepartmentService.getById(query.getDepartmentId());
+ if (Objects.isNull(department)) {
+ return PageDTO.empty(0L, 0L);
+ }
+ treeCode = department.getTreeCode();
+ }
+ Page<MwStagingRoomVO> page = baseMapper.pagelist(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), treeCode);
+ return PageDTO.of(page);
+ }
+
+ /**
+ * 新增暂存间
+ *
+ * @param dto
+ * @return
+ */
+ @Override
+ public void add(MwStagingRoomDTO dto) {
+ MwStagingRoom mwStagingRoom = BeanUtils.copyBean(dto, MwStagingRoom.class);
+ Long count = this.lambdaQuery().eq(MwStagingRoom::getDepartmentId, mwStagingRoom.getDepartmentId()).count();
+ if (count > 0) {
+ throw new ServiceException("当前医院已存在暂存间,请勿重复添加");
+ }
+ save(mwStagingRoom);
+ }
+
+ /**
+ * 编辑暂存间
+ *
+ * @param dto
+ * @return
+ */
+ @Override
+ public void edit(MwStagingRoomDTO dto) {
+ if (Objects.isNull(dto.getId())) {
+ throw new ServiceException("暂存间id不能为空");
+ }
+ }
+
+ /**
+ * 根据医院id查询暂存间
+ *
+ * @param departmentId
+ * @return
+ */
+ @Override
+ public MwStagingRoomVO getByHospitalId(Long departmentId) {
+ MwStagingRoom one = this.lambdaQuery().eq(MwStagingRoom::getDepartmentId, departmentId).one();
+ return BeanUtils.copyBean(one, MwStagingRoomVO.class);
+ }
+
+ /**
+ * 暂存间入库记录
+ *
+ * @param query
+ * @return
+ */
+ @Override
+ public PageDTO<MwCollectRecordVO> storageRecord(StorageRecordQuery query) {
+ return null;
+ }
}
diff --git a/medicalWaste-system/src/main/resources/mapper/system/MwStagingRoomMapper.xml b/medicalWaste-system/src/main/resources/mapper/system/MwStagingRoomMapper.xml
index 2175a80..d260d75 100644
--- a/medicalWaste-system/src/main/resources/mapper/system/MwStagingRoomMapper.xml
+++ b/medicalWaste-system/src/main/resources/mapper/system/MwStagingRoomMapper.xml
@@ -24,5 +24,32 @@
UPDATE_TIME,
ID, DEPARTMENT_ID, ROOM_NAME, MAX_CAPACITY
</sql>
+ <select id="pagelist" resultType="com.sinata.system.domain.vo.MwStagingRoomVO">
+ SELECT msr.ID,
+ msr.DEPARTMENT_ID,
+ msr.ROOM_NAME,
+ msr.MAX_CAPACITY,
+ msr.CREATE_TIME,
+ COUNT(mr.ID) AS usedNum,
+ (msr.MAX_CAPACITY - COUNT(mr.ID)) AS unUsedNum,
+ sd.DEPARTMENT_NAME AS hospitalName
+ FROM MW_STAGING_ROOM msr
+ LEFT JOIN (SELECT ID,
+ BOX_ID,
+ STAGING_ROOM_ID
+ FROM MW_COLLECT_RECORD
+ WHERE STATUS != 4
+ GROUP BY BOX_ID) mr
+ ON msr.ID = mr.STAGING_ROOM_ID
+ LEFT JOIN SYS_DEPARTMENT sd ON msr.DEPARTMENT_ID = sd.ID
+ <where>
+ <if test="departmentId != null and departmentId != ''">
+ msr.DEPARTMENT_ID = #{departmentId}
+ </if>
+ <if test="treeCode != null and treeCode != ''">
+ sd.TREE_CODE LIKE CONCAT('%', #{tree})
+ </if>
+ </where>
+ </select>
</mapper>
--
Gitblit v1.7.1