소스 검색

优化核酸混采标签的生成和打印,一条龙服务。

lighter 3 년 전
부모
커밋
44cfb51aa2

+ 1 - 1
pom.xml

@@ -10,7 +10,7 @@
     </parent>
     <groupId>thyyxxk</groupId>
     <artifactId>web-server</artifactId>
-    <version>2</version>
+    <version>1</version>
     <name>web-server</name>
     <description>server for yibao-web</description>
     <properties>

+ 30 - 10
src/main/java/thyyxxk/webserver/controller/examinations/MixLabelPrintController.java

@@ -2,11 +2,13 @@ package thyyxxk.webserver.controller.examinations;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import thyyxxk.webserver.config.auth.PassToken;
 import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.entity.examinations.MixLabelPrinter;
+import thyyxxk.webserver.entity.examinations.mixlabel.MixLabel;
+import thyyxxk.webserver.entity.examinations.mixlabel.MixLabelRange;
 import thyyxxk.webserver.service.examinations.MixLabelPrintService;
 
-import java.util.Map;
+import java.util.List;
 
 @RestController
 @RequestMapping("/mixLabelPrint")
@@ -18,23 +20,41 @@ public class MixLabelPrintController {
         this.service = service;
     }
 
-    @GetMapping("/selectMaxLabelRange")
-    public ResultVo<Map<String, String>> selectMaxLabelRange() {
-        return service.selectMaxLabelRange();
+    @PassToken
+    @PostMapping("/createMixLabel")
+    public ResultVo<String> createMixLabel(@RequestBody MixLabelRange labelRange) {
+        return service.createMixLabel(labelRange);
+    }
+
+    @GetMapping("/selectLabelRanges")
+    public ResultVo<List<MixLabelRange>> selectLabelRanges() {
+        return service.selectLabelRanges();
+    }
+
+    @GetMapping("/selectBeginLabel")
+    public ResultVo<String> selectBeginLabel(@RequestParam("tableName") String tableName) {
+        return service.selectBeginLabel(tableName);
     }
 
     @GetMapping("/selectLabelPrinter")
-    public ResultVo<MixLabelPrinter> selectLabelPrinter(@RequestParam("label") String label) {
-        return service.selectLabelPrinter(label);
+    public ResultVo<MixLabel> selectLabelPrinter(@RequestParam("tableName") String tableName,
+                                                 @RequestParam("label") String label) {
+        return service.selectLabelPrinter(tableName, label);
     }
 
     @GetMapping("/printLabel")
-    public ResultVo<MixLabelPrinter> printLabel(@RequestParam("label") String label) {
-        return service.printLabel(label);
+    public ResultVo<MixLabel> printLabel(@RequestParam("tableName") String tableName,
+                                         @RequestParam("label") String label) {
+        return service.printLabel(tableName, label);
     }
 
     @PostMapping("/reprintLabel")
-    public ResultVo<MixLabelPrinter> reprintLabel(@RequestBody MixLabelPrinter printer) {
+    public ResultVo<MixLabel> reprintLabel(@RequestBody MixLabel printer) {
         return service.reprintLabel(printer);
     }
+
+    @GetMapping("/allPrinted")
+    public ResultVo<String> allPrinted(@RequestParam("tableName") String tableName) {
+        return service.allPrinted(tableName);
+    }
 }

+ 47 - 9
src/main/java/thyyxxk/webserver/dao/his/examinations/MixLabelPrintDao.java

@@ -1,16 +1,54 @@
 package thyyxxk.webserver.dao.his.examinations;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-import thyyxxk.webserver.entity.examinations.MixLabelPrinter;
+import org.apache.ibatis.annotations.*;
+import thyyxxk.webserver.entity.examinations.mixlabel.MixLabel;
+import thyyxxk.webserver.entity.examinations.mixlabel.MixLabelRange;
+
+import java.util.List;
 
 @Mapper
-public interface MixLabelPrintDao extends BaseMapper<MixLabelPrinter> {
+public interface MixLabelPrintDao {
+
+    @Update("create table dbo.${table} (label varchar(32) not null constraint ${table}_pk primary key, " +
+            "status tinyint default 0 not null, reprint tinyint default 0 not null, " +
+            "print_staff varchar(12), print_datetime datetime, " +
+            "reprint_staff varchar(12), reprint_datetime datetime);" +
+            "exec sp_addextendedproperty 'MS_Description', '核酸混采标签打印', 'SCHEMA', 'dbo', 'TABLE', '${table}';" +
+            "exec sp_addextendedproperty 'MS_Description', '标签编号', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'label';" +
+            "exec sp_addextendedproperty 'MS_Description', '状态:0-未打印,1-已打印', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'status';" +
+            "exec sp_addextendedproperty 'MS_Description', '是否重复打印过:0-否,1-是', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'reprint';" +
+            "exec sp_addextendedproperty 'MS_Description', '打印操作人', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'print_staff';" +
+            "exec sp_addextendedproperty 'MS_Description', '打印时间', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'print_datetime';" +
+            "exec sp_addextendedproperty 'MS_Description', '重复打印操作人', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'reprint_staff';" +
+            "exec sp_addextendedproperty 'MS_Description', '重复打印操作时间', 'SCHEMA', 'dbo', 'TABLE', '${table}', 'COLUMN', 'reprint_datetime';")
+    void createTable(@Param("table") String table);
+
+    @Insert("insert into ${table} (label,status,reprint) values (#{label},0,0)")
+    void insertNewLabel(@Param("table") String table, @Param("label") String label);
+
+    @Insert("insert into t_mix_label_ranges(table_name, min_label, max_label, prefix, slice_index, end_number) values " +
+            "(#{tableName},#{minLabel},#{maxLabel},#{prefix},#{sliceIndex},#{endNumber})")
+    void insertNewLabelRange(MixLabelRange labelRange);
+
+    @Select("select * from t_mix_label_ranges")
+    List<MixLabelRange> selectLabelRanges();
+
+    @Select("select top 1 label from ${table} where status=0 order by label")
+    String selectMinUnprintedLabel(@Param("table") String table);
+
+    @Select("select * from ${table} where label=#{label}")
+    MixLabel selectSingleLabel(@Param("table") String table, @Param("label") String label);
+
+    @Update("update ${tableName} set status=1,print_staff=#{printStaff},print_datetime=#{printDatetime} where label=#{label}")
+    void updatePrinted(MixLabel printer);
+
+    @Update("update ${tableName} set reprint=1,reprint_staff=#{reprintStaff}, " +
+            "reprint_datetime=#{reprintDatetime} where label=#{label}")
+    void updateReprinted(MixLabel printer);
 
-    @Select("select min(label) + ' - ' + max(label) from t_mix_label_printer")
-    String selectMaxLabelRange();
+    @Select("select count(1) from ${table} where status=0")
+    Integer selectNotPrintedCount(@Param("table") String table);
 
-    @Select("select top 1 label from t_mix_label_printer where status=0 order by label")
-    String selectMinUnprintedLabel();
+    @Update("update t_mix_label_ranges set finish_flag=1 where table_name=#{tableName}")
+    void updateAllPrinted(@Param("table") String table);
 }

+ 6 - 9
src/main/java/thyyxxk/webserver/entity/examinations/MixLabelPrinter.java → src/main/java/thyyxxk/webserver/entity/examinations/mixlabel/MixLabel.java

@@ -1,23 +1,20 @@
-package thyyxxk.webserver.entity.examinations;
+package thyyxxk.webserver.entity.examinations.mixlabel;
 
-import java.io.Serializable;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import java.util.Date;
 
 @Data
-@TableName(value = "t_mix_label_printer")
-public class MixLabelPrinter implements Serializable {
+public class MixLabel {
 
-	private static final long serialVersionUID =  7579493938296836947L;
+	/**
+	 * 号段表名
+	 * */
+	private String tableName;
 
 	/**
 	 * 标签编号
 	 */
-	@TableId(type= IdType.ASSIGN_UUID)
 	private String label;
 
 	/**

+ 20 - 0
src/main/java/thyyxxk/webserver/entity/examinations/mixlabel/MixLabelRange.java

@@ -0,0 +1,20 @@
+package thyyxxk.webserver.entity.examinations.mixlabel;
+
+import lombok.Data;
+
+@Data
+public class MixLabelRange {
+    private String tableName;
+    private String minLabel;
+    private String maxLabel;
+    private String prefix;
+    private Integer sliceIndex;
+    private Integer beginNumber;
+    private Integer endNumber;
+    private Integer finishFlag;
+    private String labelRange;
+
+    public String getLabelRange() {
+        return minLabel + " - " + maxLabel;
+    }
+}

+ 37 - 15
src/main/java/thyyxxk/webserver/service/examinations/MixLabelPrintService.java

@@ -6,13 +6,13 @@ import org.springframework.stereotype.Service;
 import thyyxxk.webserver.config.exception.ExceptionEnum;
 import thyyxxk.webserver.dao.his.examinations.MixLabelPrintDao;
 import thyyxxk.webserver.entity.ResultVo;
-import thyyxxk.webserver.entity.examinations.MixLabelPrinter;
+import thyyxxk.webserver.entity.examinations.mixlabel.MixLabel;
+import thyyxxk.webserver.entity.examinations.mixlabel.MixLabelRange;
 import thyyxxk.webserver.utils.ResultVoUtil;
 import thyyxxk.webserver.utils.TokenUtil;
 
 import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
 
 @Slf4j
 @Service
@@ -24,36 +24,58 @@ public class MixLabelPrintService {
         this.dao = dao;
     }
 
-    public ResultVo<Map<String, String>> selectMaxLabelRange() {
-        Map<String, String> map = new HashMap<>();
-        map.put("range", dao.selectMaxLabelRange());
-        map.put("advise", dao.selectMinUnprintedLabel());
-        return ResultVoUtil.success(map);
+    public ResultVo<String> createMixLabel(MixLabelRange labelRange) {
+        dao.createTable(labelRange.getTableName());
+        for (int i = labelRange.getBeginNumber(); i <= labelRange.getEndNumber(); i++) {
+            String label = labelRange.getPrefix() + i;
+            dao.insertNewLabel(labelRange.getTableName(), label);
+        }
+        dao.insertNewLabelRange(labelRange);
+        return ResultVoUtil.success("成功。");
+    }
+
+    public ResultVo<List<MixLabelRange>> selectLabelRanges() {
+        return ResultVoUtil.success(dao.selectLabelRanges());
+    }
+
+    public ResultVo<String> selectBeginLabel(String tableName) {
+        return ResultVoUtil.success(dao.selectMinUnprintedLabel(tableName));
     }
 
-    public ResultVo<MixLabelPrinter> selectLabelPrinter(String label) {
-        MixLabelPrinter printer = dao.selectById(label);
+    public ResultVo<MixLabel> selectLabelPrinter(String tableName, String label) {
+        MixLabel printer = dao.selectSingleLabel(tableName, label);
+        log.info("select label: {}, {}, {}", tableName, label, printer);
         if (null == printer) {
             return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "请输入正确的起始标签!");
         }
         return ResultVoUtil.success(printer);
     }
 
-    public ResultVo<MixLabelPrinter> printLabel(String label) {
-        MixLabelPrinter printer = new MixLabelPrinter();
+    public ResultVo<MixLabel> printLabel(String tableName, String label) {
+        MixLabel printer = new MixLabel();
+        printer.setTableName(tableName);
         printer.setLabel(label);
         printer.setStatus(1);
         printer.setPrintStaff(TokenUtil.getTokenUserId());
         printer.setPrintDatetime(new Date());
-        dao.updateById(printer);
+        dao.updatePrinted(printer);
         return ResultVoUtil.success(printer);
     }
 
-    public ResultVo<MixLabelPrinter> reprintLabel(MixLabelPrinter printer) {
+    public ResultVo<MixLabel> reprintLabel(MixLabel printer) {
         printer.setReprint(1);
         printer.setReprintStaff(TokenUtil.getTokenUserId());
         printer.setReprintDatetime(new Date());
-        dao.updateById(printer);
+        dao.updateReprinted(printer);
         return ResultVoUtil.success(printer);
     }
+
+    public ResultVo<String> allPrinted(String tableName) {
+        Integer notPrintedCount = dao.selectNotPrintedCount(tableName);
+        if (null != notPrintedCount && notPrintedCount == 0) {
+            dao.updateAllPrinted(tableName);
+            return ResultVoUtil.success("打印完成。");
+        }
+        return ResultVoUtil.success("当前号段还有未打印的条码。");
+    }
 }