Преглед изворни кода

凌云集团增加二类特殊人员

peiguo пре 5 година
родитељ
комит
cfa0c20d1e

+ 9 - 1
admin-ui/app/whepi/mock/menu.json

@@ -76,6 +76,14 @@
         },
         {
           "id": "ENT101003",
+          "text": "凌云二类特殊人员管理",
+          "href": "/app/whepi/scan/specialPersonnelLY2.js",
+          "iconCls": "icon-blank fa fa-align-justify",
+          "state": "close",
+          "children": []
+        },
+        {
+          "id": "ENT101004",
           "text": "凌云导出报表",
           "href": "/app/whepi/lingyun/lingyunUser.js",
           "iconCls": "icon-blank fa fa-align-justify",
@@ -83,7 +91,7 @@
           "children": []
         },
         {
-          "id": "ENT101004",
+          "id": "ENT101005",
           "text": "凌云六类人员管理",
           "href": "/app/whepi/scan/specialPersonnelLYSix.js",
           "iconCls": "icon-blank fa fa-align-justify",

+ 9 - 1
admin-ui/app/whepi/mock/menu7.json

@@ -28,8 +28,16 @@
     },
     {
       "id": "ENT10004",
+      "text": "二类特殊人员管理",
+      "href": "/app/whepi/scan/specialPersonnelLY.js",
+      "iconCls": "icon-blank fa fa-align-justify",
+      "state": "close",
+      "children": []
+    },
+    {
+      "id": "ENT10005",
       "text": "凌云六类人员管理",
-      "href": "/app/whepi/scan/specialPersonnelLYSix.js",
+      "href": "/app/whepi/scan/specialPersonnelLY2.js",
       "iconCls": "icon-blank fa fa-align-justify",
       "state": "close",
       "children": []

+ 102 - 0
admin-ui/app/whepi/scan/addOutUserLY2.js

@@ -0,0 +1,102 @@
+define(function (require) {
+    return function (context) {
+
+        var $dlg, $form, isEdit = false;
+
+        return {
+            xtype: 'dialog',
+            dialogId: 'dialogEnvLog',
+            title: context.isEdit ? '编辑二类特殊人员信息' : '新增二类特殊人员信息',
+            width: 450,
+            height: 300,
+            onOpen: function () {
+                $dlg = $(this);
+                if (context.isEdit) {
+                    $.yvan.ajax({
+                        loadingMask: false,
+                        url: api('/qrImg/getDoorById'),
+                        type: 'GET',
+                        data: {tuId: context.tuId},
+                        success: function (data) {
+                            $dlg.find('form');
+                            $form.formSet(data.data);
+                        }
+                    });
+                }
+            },
+            center: {
+                items: {
+                    width: 450,
+                    height: 756,
+                    autoSizeColumns: true,
+                    xtype: 'formgroup',
+                    onRender: function () {
+                        $form = $(this);
+                    },
+                    items: [
+                        [
+                            {name: 'tuId', xtype: 'hidden'},
+                            {
+                                name: 'phone',
+                                label: '电话',
+                                required: true,
+                                validType: 'phoneNum',
+                                maxlength: 60,
+                                width: 350,
+                            },
+                            {
+                                name: 'name',
+                                label: '联系人姓名',
+                                required: true,
+                                maxlength: 60,
+                                width: 350,
+                            },
+                        ]
+                    ],
+                }
+            },
+            buttons: [
+                {
+                    text: "检查电话", iconCls: "fa fa-save", onClick: function () {
+                        var queryForm = $form.formGet();
+                        if (queryForm.phone == "") {
+                            $.yvan.msg('请先选输入电话号码');
+                            return;
+                        }
+                        $.yvan.ajax({
+                            url: api('/OutUser/getUptownHomeByPhone'),
+                            data: {phone: queryForm.phone},
+                            method: 'post',
+                            async: false,
+                            success: function (data) {
+                                if (data.data.linkman != null) {
+                                    $form.formSet({name: data.data.linkman});
+                                }
+                            }
+                        });
+                    }
+                },
+                {
+                    text: "保存", iconCls: "fa fa-save", onClick: function () {
+                        $.yvan.postForm($form, {
+                            url: api('/OutUser/saveOutUserLY2'),
+                            success: function (data) {
+                                if (data.data == 1) {
+                                    $.yvan.msg('保存成功');
+                                    $dlg.window('close');
+                                    if ($.type(context.confirm) === 'function') {
+                                        context.confirm();
+                                    }
+                                }
+                            }
+                        });
+                    }
+                }, {
+                    text: "关闭", iconCls: "fa fa-times", onClick: function () {
+                        $dlg.dialog('close');
+                    }
+                }
+            ]
+        };
+    };
+});

+ 218 - 0
admin-ui/app/whepi/scan/specialPersonnelLY2.js

@@ -0,0 +1,218 @@
+define(function (require) {
+        return function (context) {
+
+            var $grid1, $form;
+
+            // 输入搜索文本后点击回车按钮查询列表
+            function enterQueryGrid1(e) {
+                if (e.keyCode === 13) {
+                    var tmp = $(this).val();
+                    $form.formSet({queryProperties: tmp});
+                    queryGrid1();
+                }
+            }
+            function enterQueryGrid2(e) {
+                if (e.keyCode === 13) {
+                    var tmp = $(this).val();
+                    $form.formSet({phone: tmp});
+                    queryGrid1();
+                }
+            }
+
+            // 检索条件查询
+            function queryGrid1() {
+                var queryForm = $form.formGet();
+                queryForm.tuType = 5;
+                $grid1.reload({
+                    mtype: 'POST',
+                    url: api('/OutUser/selectAllOutUserLY'),
+                    queryParams: queryForm
+                }, true);
+            }
+
+            var queryToolbar = {
+                xtype: 'toolbar',
+                title: '特殊人员详情',
+                items: [
+                    {
+                        text: '查询', iconCls: 'fa fa-search', onClick: function () {
+                            queryGrid1();
+                        }
+                    }, {
+                        text: '重置', iconCls: 'fa fa-refresh', onClick: function () {
+                            $form.formClear();
+                            queryGrid1();
+                        }
+                    }, {
+                        text: '关闭', iconCls: 'fa fa-times-circle', onClick: function () {
+                            App.closeMe(this);
+                        }
+                    }
+                ]
+            };
+
+            var queryForm = {
+                onRender: function () {
+                    $form = $(this);
+                },
+                xtype: 'form',
+                items: [[
+                    {
+                        xtype: 'textbox',
+                        label: '检索条件',
+                        name: 'queryProperties',
+                        prompt: "联系人姓名/工号",
+                        labelWidth: 'auto',
+                        events: {keydown: enterQueryGrid1}, width: 350
+                    },
+                    {
+                        xtype: 'textbox',
+                        label: '电话',
+                        name: 'phone',
+                        prompt: "请输入完整的电话号码",
+                        labelWidth: 'auto',
+                        events: {keydown: enterQueryGrid2}, width: 350
+                    },
+                ]]
+            };
+
+            return {
+                north: {
+                    height: 88,
+                    /* split: true,
+                     border: false,*///底框是否可变动
+                    items: [
+                        queryToolbar,
+                        queryForm
+                    ]
+                },
+                center: {
+                    height: '60%',
+                    split: true,
+                    items:
+                        {
+                            onRender: function () {
+                                $grid1 = $(this);
+                                queryGrid1()
+                            },
+                            xtype: 'grid',
+                            toolbar: {
+                                xtype: 'toolbar',
+                                title: '特殊人员详情',
+                                items: [
+                                    {
+                                        text: '添加', iconCls: 'fa fa-plus-circle fa-lg', onClick: function () {
+                                            $.yvan.showDialog(this,
+                                                require('/app/whepi/scan/addOutUserLY2.js')({
+                                                    isEdit: false,
+                                                    confirm: function () {
+                                                        queryGrid1();
+                                                    }
+                                                })
+                                            );
+                                        }
+                                    },
+                                    // {
+                                    //     text: '保存', iconCls: 'fa fa-pencil-square-o', onClick: function () {
+                                    //         var row = $grid1.rowData();
+                                    //         if (!row) {
+                                    //             $.yvan.msg('请选择一条要保存的数据');
+                                    //             return;
+                                    //         }
+                                    //         var startDateStr = row.startDateStr;
+                                    //         var endDateStr = row.endDateStr;
+                                    //         if (startDateStr > endDateStr) {
+                                    //             $.yvan.msg('开始时间必须小于等于结束时间');
+                                    //             return;
+                                    //         }
+                                    //         $.yvan.ajax({
+                                    //             url: api('/OutUser/updateOutUser'),
+                                    //             data: {
+                                    //                 tuId: row.tuId,
+                                    //                 startDate: row.startDateStr,
+                                    //                 endDate: row.endDateStr
+                                    //             },
+                                    //             method: 'post',
+                                    //             async: false,
+                                    //             success: function (data) {
+                                    //                 $.yvan.msg("操作成功");
+                                    //                 $grid1.reload();
+                                    //                 queryGrid1();
+                                    //             }
+                                    //         });
+                                    //     }
+                                    // },
+                                    {
+                                        text: '删除', iconCls: 'fa fa fa-pencil-square-o fa-lg', onClick: function () {
+                                            var row = $grid1.checkedData();
+                                            if (row.length == 0) {
+                                                $.yvan.msg('请至少选择一行数据');
+                                                return;
+                                            }
+                                            var ids = "";
+                                            for (var i=0; i<row.length; i++) {
+                                                ids += row[i].tuId + ","
+                                            }
+                                            $.yvan.confirm('确定删除勾选的这' + row.length + '条二类特殊人员吗?', {
+                                                yes: function (index) {
+                                                    $.yvan.ajax({
+                                                        method: 'post',
+                                                        url: api('/OutUser/deleteOutUser'),
+                                                        data: {ids: ids},
+                                                        success: function (data) {
+                                                            $.yvan.msg("删除成功");
+                                                            $grid1.reload();
+                                                            queryGrid1();
+                                                        }
+                                                    });
+                                                }
+                                            });
+                                        }
+                                    }
+                                ]
+                            },
+                            multiselect: true, /// 表格多选
+                            idField: 'tuId',
+                            editable: true,
+                            editOnSelected: true,
+                            autoSizeColumns: true,
+                            columns:
+                                [
+                                    [
+                                        {field: 'tuId', title: '用户ID', hidden: true},
+                                        {field: 'userId', title: '用户ID', hidden: true},
+                                        {field: 'unit', title: '部门', maxWidth: 200, align: 'left',},
+                                        {field: 'name', title: '名字', maxWidth: 200, align: 'left',},
+                                        {field: 'phone', title: '电话', maxWidth: 200, align: 'left',},
+                                        {field: 'doorplate', title: '工号', maxWidth: 200, align: 'left',},
+                                        {
+                                            field: 'startDateStr', title: '开始时间', minWidth: 120, maxWidth: 300, align: 'left', editor: {
+                                                xtype: 'datebox',
+                                                required: true,
+                                                onChange: function (value) {
+                                                    var row = $grid1.rowData();
+                                                    $.yvan.ajax({
+                                                        url: api('/OutUser/updateOutUserLY2'),
+                                                        data: {
+                                                            tuId: row.tuId,
+                                                            startDate: row.startDateStr,
+                                                        },
+                                                        method: 'post',
+                                                        async: false,
+                                                        success: function (data) {
+                                                            $.yvan.msg("操作成功");
+                                                            return;
+                                                        }
+                                                    });
+                                                },
+                                                maxlength: 50
+                                            }
+                                        },
+                                    ]
+                                ]
+                        }
+                }
+            };
+        };
+    }
+);

+ 1 - 1
whepi-doc/login.sql

@@ -213,7 +213,7 @@ CREATE TABLE out_scan  (
 DROP TABLE IF EXISTS out_user;
 CREATE TABLE out_user  (
   tu_id             bigint(20) NOT NULL DEFAULT 0 COMMENT '特殊ID',
-  tu_type           int(11) NOT NULL DEFAULT 0 COMMENT '特殊人员类型:1凌云,2非凌云,3湖北和昌,4六类人员',
+  tu_type           int(11) NOT NULL DEFAULT 0 COMMENT '特殊人员类型:1凌云,2非凌云,3湖北和昌,4六类人员,5凌云二类',
   name              varchar(100)  NOT NULL DEFAULT '' COMMENT '特殊人员姓名',
   phone             bigint(20) NOT NULL DEFAULT 0 COMMENT '电话号码',
   start_date        date NOT NULL DEFAULT '0000-01-01' COMMENT '开始时间',

+ 13 - 13
whepi-web/src/main/java/com/bofeng/dao/MsReportMapper.java

@@ -133,14 +133,14 @@ public interface MsReportMapper extends BaseMapper<MsReport> {
      * @param userId
      * @return
      */
-    @Select("select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 1 day) and user_create=#{userId}\n" +
-            "union\n" +
-            "select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 2 day) and user_create=#{userId}\n" +
-            "union\n" +
-            "select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 3 day) and user_create=#{userId}\n" +
-            "union\n" +
-            "select * from ms_report where report_status=1 and report_date=curdate() and user_create=#{userId}")
-    List<MsReport> selectMsReportLate(@Param("userId") Long userId);
+//    @Select("select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 1 day) and user_create=#{userId}\n" +
+//            "union\n" +
+//            "select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 2 day) and user_create=#{userId}\n" +
+//            "union\n" +
+//            "select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 3 day) and user_create=#{userId}\n" +
+//            "union\n" +
+//            "select * from ms_report where report_status=1 and report_date=curdate() and user_create=#{userId}")
+    List<MsReport> selectMsReportLate(@Param("userId") Long userId, @Param("reportDate") String reportDate);
 
     /**
      * 最近提交的日报, msStatus 健康状态:1正常,2异常
@@ -151,10 +151,10 @@ public interface MsReportMapper extends BaseMapper<MsReport> {
     @Select("select * from ms_report where user_create=#{userId} and report_status=1 order by report_date desc limit 1")
     MsReport selectMsReportToday(@Param("userId") Long userId);
 
-    @Select("select * from (select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 1 day) and user_create=#{userId}\n" +
-            "union select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 2 day) and user_create=#{userId}\n" +
-            "union select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 3 day) and user_create=#{userId} union select * from ms_report where report_status=1 and report_date=curdate() and user_create=#{userId}) aa where aa.ms_status = 2")
-    List<MsReport> selectMsReportThereError(@Param("userId") Long userId);
+//    @Select("select * from (select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 1 day) and user_create=#{userId}\n" +
+//            "union select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 2 day) and user_create=#{userId}\n" +
+//            "union select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 3 day) and user_create=#{userId} union select * from ms_report where report_status=1 and report_date=curdate() and user_create=#{userId}) aa where aa.ms_status = 2")
+    List<MsReport> selectMsReportThereError(@Param("userId") Long userId, @Param("reportDate") String reportDate);
 
     @Select("select * from ms_report where report_status=1 and report_date > date_sub(curdate(),interval 29 day) and user_create=#{userId} and ms_status = 2")
     List<MsReport> selectMsReportThirtyError(@Param("userId") Long userId);
@@ -182,7 +182,7 @@ public interface MsReportMapper extends BaseMapper<MsReport> {
      * @param userId
      * @return
      */
-    @Select("select * from ms_report a INNER JOIN ms_suspected b on a.report_id=b.report_id where a.report_status=1 and a.user_create=#{userId} and b.is_contact = 1")
+    @Select("select * from ms_report a INNER JOIN ms_suspected b on a.report_id=b.report_id where a.report_status=1 and a.user_create=#{userId} and b.is_contact = 1 ORDER BY a.time_create DESC")
     List<MsReport> queryMsReportIsXGHome(@Param("userId") Long userId);
 
     /**

+ 29 - 0
whepi-web/src/main/java/com/bofeng/wx/controller/ScanAdminController.java

@@ -247,6 +247,16 @@ public class ScanAdminController {
         return Model.newSuccess(outUserMapper.updateById(o));
     }
 
+    @ApiOperation("更改凌云二类特殊人员的时间")
+    @PostMapping("/whepi/OutUser/updateOutUserLY2")
+    public Model updateOutUserLY2(@Pd(name = "tuId") Long tuId,
+                               @Pd(name = "startDate") String startDate) throws ParseException {
+        OutUser o = outUserMapper.selectById(tuId);
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        o.setStartDate(sdf.parse(startDate));
+        return Model.newSuccess(outUserMapper.updateById(o));
+    }
+
     @ApiOperation("保存特殊人员")
     @PostMapping("/whepi/OutUser/saveOutUser")
     public Model saveOutUser(@JsonBody OutUser outUser) {
@@ -285,6 +295,25 @@ public class ScanAdminController {
         return Model.newSuccess(outUserMapper.insert(outUser));
     }
 
+    @ApiOperation("凌云保存二类特殊人员")
+    @PostMapping("/whepi/OutUser/saveOutUserLY2")
+    public Model saveOutUserLY2(@JsonBody OutUser outUser) {
+        OutUser outUser1 = outUserMapper.queryOutUserByPhone(5, outUser.getPhone());
+        if (outUser1 != null) {
+            return Model.newFail("该号码已经添加为特殊人员,请仔细检查该号码。");
+        }
+        List<UptownHome> uptownHomes = uptownHomeMapper.getUptownHomeByPhone(outUser.getPhone().toString());
+        if (uptownHomes.size() > 0) {
+            outUser.setName(uptownHomes.get(0).getLinkman());
+        }
+        outUser.setTuId(IdWorker.getId());
+        outUser.setTuType(5);
+        outUser.setStartDate(new Date());
+        outUser.setEndDate(new Date());
+        outUser.setTime(1);
+        return Model.newSuccess(outUserMapper.insert(outUser));
+    }
+
     @ApiOperation("凌云保存六类人员")
     @PostMapping("/whepi/OutUser/saveOutUserLYSix")
     public Model saveOutUserLYSix(@JsonBody OutUser outUser) {

+ 124 - 49
whepi-web/src/main/java/com/bofeng/wx/controller/ScanController.java

@@ -183,6 +183,17 @@ public class ScanController {
                         scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), 1, "");
                         return new ModelAndView("/user/scan.ftl", model);
                     }
+                    Boolean ly2 = false;
+                    String startDate = "";
+                    Integer intSize = 4;
+                    SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
+                    OutUser outUser2 = outUserMapper.getOutUserByPhone(5, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
+                    if (outUser2 != null) {
+                        ly2 = true;
+                        startDate = s.format(outUser2.getStartDate());
+                        Long day = (new Date().getTime() - outUser2.getStartDate().getTime()) /  (1000 * 60 * 60 * 24);
+                        intSize =  Integer.parseInt(Long.toString(day)) < 4 ? Integer.parseInt(Long.toString(day)) : 4;
+                    }
                     if (!unit.getUptownId().equals(uptownDoor.getUptownId())) {
                         model.put("collor", "red");
                         model.put("collor2", "red");
@@ -192,14 +203,22 @@ public class ScanController {
                         return new ModelAndView("/user/scan.ftl", model);
                     }
                     MsReport msReport = msReportMapper.queryMsReportIsXG(userOpen.getUserId());
-                    SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");
                     if (msReport != null) {
-                        model.put("collor", "red");
-                        model.put("collor2", "red");
-                        model.put("into", "不许进入");
-                        model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不许进入,如有疑问请联系直管领导。");
-                        scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
-                        return new ModelAndView("/user/scan.ftl", model);
+                        if (ly2 && outUser2.getStartDate().getTime() < msReport.getReportDate().getTime()) {
+                            model.put("collor", "red");
+                            model.put("collor2", "red");
+                            model.put("into", "不许进入");
+                            model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不许进入,如有疑问请联系直管领导。");
+                            scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
+                            return new ModelAndView("/user/scan.ftl", model);
+                        } else if (!ly2)  {
+                            model.put("collor", "red");
+                            model.put("collor2", "red");
+                            model.put("into", "不许进入");
+                            model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不许进入,如有疑问请联系直管领导。");
+                            scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
+                            return new ModelAndView("/user/scan.ftl", model);
+                        }
 //                        List<MsReport> msReports1 = msReportMapper.queryLateStatus(userOpen.getUserId(), s.format(msReport.getReportDate()));
 //                        if (msReports1.size() == 0) {
 //                            model.put("collor", "red");
@@ -212,15 +231,24 @@ public class ScanController {
                     }
                     List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userOpen.getUserId());
                     if (msReportList.size() > 0) {
-                        model.put("collor", "red");
-                        model.put("collor2", "red");
-                        model.put("into", "不许进入");
-                        model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
-                        scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
-                        return new ModelAndView("/user/scan.ftl", model);
+                        if (ly2 && outUser2.getStartDate().getTime() < msReportList.get(0).getReportDate().getTime()) {
+                            model.put("collor", "red");
+                            model.put("collor2", "red");
+                            model.put("into", "不许进入");
+                            model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
+                            scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
+                            return new ModelAndView("/user/scan.ftl", model);
+                        } else if (!ly2)  {
+                            model.put("collor", "red");
+                            model.put("collor2", "red");
+                            model.put("into", "不许进入");
+                            model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
+                            scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
+                            return new ModelAndView("/user/scan.ftl", model);
+                        }
                     }
-                    List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
-                    if (msReports.size() < 4) {
+                    List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId(), startDate);
+                    if (msReports.size() < intSize) {
                         model.put("collor", "red");
                         model.put("collor2", "red");
                         model.put("into", "不许进入");
@@ -228,7 +256,7 @@ public class ScanController {
                         scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
                         return new ModelAndView("/user/scan.ftl", model);
                     }
-                    List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userOpen.getUserId());
+                    List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userOpen.getUserId(), startDate);
                     if (msReports2.size() > 0) {
                         model.put("collor", "red");
                         model.put("collor2", "red");
@@ -248,13 +276,24 @@ public class ScanController {
 //                    }
                     String returnWork = msReportMapper.returnWork(userOpen.getUserId());
                     if (returnWork != null) {
-                        if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
-                            model.put("collor", "red");
-                            model.put("collor2", "red");
-                            model.put("into", "不许进入");
-                            model.put("errorMsg", "您返回工作驻地后未满14日,不许进入。" + day15(s.parse(returnWork)) + "起方可进入!");
-                            scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
-                            return new ModelAndView("/user/scan.ftl", model);
+                        if (ly2 && outUser2.getStartDate().getTime() < s.parse(returnWork).getTime()) {
+                            if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
+                                model.put("collor", "red");
+                                model.put("collor2", "red");
+                                model.put("into", "不许进入");
+                                model.put("errorMsg", "您返回工作驻地后未满14日,不许进入。" + day15(s.parse(returnWork)) + "起方可进入!");
+                                scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
+                                return new ModelAndView("/user/scan.ftl", model);
+                            }
+                        } else if (!ly2)  {
+                            if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
+                                model.put("collor", "red");
+                                model.put("collor2", "red");
+                                model.put("into", "不许进入");
+                                model.put("errorMsg", "您返回工作驻地后未满14日,不许进入。" + day15(s.parse(returnWork)) + "起方可进入!");
+                                scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
+                                return new ModelAndView("/user/scan.ftl", model);
+                            }
                         }
                     }
                     MsReport msReport1 = msReportMapper.msAddr(userOpen.getUserId());
@@ -320,7 +359,7 @@ public class ScanController {
                         scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
                         return new ModelAndView("/user/scanHC.ftl", model);
                     }
-                    List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
+                    List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId(), "");
                     if (msReports.size() < 4) {
                         model.put("collor", "red");
                         model.put("collor2", "red");
@@ -329,7 +368,7 @@ public class ScanController {
                         scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
                         return new ModelAndView("/user/scanHC.ftl", model);
                     }
-                    List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userOpen.getUserId());
+                    List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userOpen.getUserId(), "");
                     if (msReports2.size() > 0) {
                         model.put("collor", "red");
                         model.put("collor2", "red");
@@ -379,7 +418,7 @@ public class ScanController {
                     scanService.saveOutScan(userOpen.getUserId(), inType, coord, address, uptownDoor.getUptownId(), uptownDoor.getDoorId(), -1, model.get("errorMsg").toString());
                     return new ModelAndView("/user/scan.ftl", model);
                 }
-                List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
+                List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId(), "");
                 if (msReports.size() == 0) {
                     model.put("collor", "red");
                     model.put("into", "禁止" + getMsg(inType));
@@ -447,7 +486,7 @@ public class ScanController {
                 scanService.saveOutScanEstate(userOpen.getUserId(), -1, model.get("errorMsg").toString());
                 return new ModelAndView("/user/scanEstate.ftl", model);
             }
-            List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
+            List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId(), "");
             if (msReports.size() != 4) {
                 model.put("collor", "red");
                 model.put("into", "禁止通行");
@@ -530,7 +569,7 @@ public class ScanController {
                     model.put("errorMsg", "根据武汉市小区封闭管理规定,非特殊人员禁止出行!");
                     return new ModelAndView("/user/goOut.ftl", model);
                 }
-                List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId());
+                List<MsReport> msReports = msReportMapper.selectMsReportLate(userOpen.getUserId(), "");
                 if (msReports.size() == 0) {
                     model.put("collor", "red");
                     model.put("into", "禁止外出");
@@ -609,13 +648,24 @@ public class ScanController {
                 model.put("errorMsg", "声明:复工许可证是根据员工自主填写健康日报,结合凌云集团复工条件自动产生。原则上代表员工可复工,在厂门口扫描二维码生成绿色复工通行证,并接受检查后,可入厂。");
                 return new ModelAndView("/user/returnWork.ftl", model);
             }
+            Boolean ly2 = false;
+            String startDate = "";
+            int intSize = 4;
+            OutUser outUser2 = outUserMapper.getOutUserByPhone(5, uptownHomes.get(0).getLinkman(), Long.parseLong(uptownHomes.get(0).getPhone()));
+            if (outUser2 != null) {
+                ly2 = true;
+                startDate = s.format(outUser2.getStartDate());
+                Long day = (new Date().getTime() - outUser2.getStartDate().getTime()) /  (1000 * 60 * 60 * 24);
+                intSize =  Integer.parseInt(Long.toString(day)) < 4 ? Integer.parseInt(Long.toString(day)) : 4;
+            }
             MsReport msReport = msReportMapper.queryMsReportIsXG(userId);
             if (msReport != null) {
-                model.put("collor", "red");
-                model.put("collor2", "red");
-                model.put("into", "不可复工");
-                model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不可复工,如有疑问请联系直管领导。");
-                return new ModelAndView("/user/returnWork.ftl", model);
+                if (ly2 && outUser2.getStartDate().getTime() < msReport.getReportDate().getTime()) {
+                    model.put("collor", "red");
+                    model.put("collor2", "red");
+                    model.put("into", "不可复工");
+                    model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不可复工,如有疑问请联系直管领导。");
+                    return new ModelAndView("/user/returnWork.ftl", model);
 //                List<MsReport> msReports1 = msReportMapper.queryLateStatus(userId, s.format(msReport.getReportDate()));
 //                if (msReports1.size() == 0) {
 //                    model.put("collor", "red");
@@ -624,24 +674,39 @@ public class ScanController {
 //                    model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,且未解除医学隔离,不可复工,如有疑问请联系直管领导。");
 //                    return new ModelAndView("/user/returnWork.ftl", model);
 //                }
+                } else if (!ly2) {
+                    model.put("collor", "red");
+                    model.put("collor2", "red");
+                    model.put("into", "不可复工");
+                    model.put("errorMsg", "由于您上报过新冠确诊、新冠疑似或密切接触者,不可复工,如有疑问请联系直管领导。");
+                    return new ModelAndView("/user/returnWork.ftl", model);
+                }
             }
             List<MsReport> msReportList = msReportMapper.queryMsReportIsXGHome(userId);
             if (msReportList.size() > 0) {
-                model.put("collor", "red");
-                model.put("collor2", "red");
-                model.put("into", "不可复工");
-                model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不可复工,如有疑问请联系直管领导。");
-                return new ModelAndView("/user/returnWork.ftl", model);
+                if (ly2 && outUser2.getStartDate().getTime() < msReportList.get(0).getReportDate().getTime()) {
+                    model.put("collor", "red");
+                    model.put("collor2", "red");
+                    model.put("into", "不可复工");
+                    model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不可复工,如有疑问请联系直管领导。");
+                    return new ModelAndView("/user/returnWork.ftl", model);
+                } else if (!ly2)  {
+                    model.put("collor", "red");
+                    model.put("collor2", "red");
+                    model.put("into", "不可复工");
+                    model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不可复工,如有疑问请联系直管领导。");
+                    return new ModelAndView("/user/returnWork.ftl", model);
+                }
             }
-            List<MsReport> msReports = msReportMapper.selectMsReportLate(userId);
-            if (msReports.size() < 4) {
+            List<MsReport> msReports = msReportMapper.selectMsReportLate(userId, startDate);
+            if (msReports.size() < intSize) {
                 model.put("collor", "red");
                 model.put("collor2", "red");
                 model.put("into", "不可复工");
                 model.put("errorMsg", "由于您今日和前3日未连续报告日报,不可复工,如有疑问请联系直管领导。");
                 return new ModelAndView("/user/returnWork.ftl", model);
             }
-            List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId);
+            List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId, startDate);
             if (msReports2.size() > 0) {
                 model.put("collor", "red");
                 model.put("collor2", "red");
@@ -659,12 +724,22 @@ public class ScanController {
 //            }
             String returnWork = msReportMapper.returnWork(userId);
             if (returnWork != null) {
-                if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
-                    model.put("collor", "red");
-                    model.put("collor2", "red");
-                    model.put("into", "不可复工");
-                    model.put("errorMsg", "您返回工作驻地后未满14日,不可复工。" + day15(s.parse(returnWork)) + "起方可进入!");
-                    return new ModelAndView("/user/returnWork.ftl", model);
+                if (ly2 && outUser2.getStartDate().getTime() < s.parse(returnWork).getTime()) {
+                    if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
+                        model.put("collor", "red");
+                        model.put("collor2", "red");
+                        model.put("into", "不可复工");
+                        model.put("errorMsg", "您返回工作驻地后未满14日,不可复工。" + day15(s.parse(returnWork)) + "起方可进入!");
+                        return new ModelAndView("/user/returnWork.ftl", model);
+                    }
+                } else if (!ly2)  {
+                    if (sdf.parse(returnWork + " 00:00:00").getTime() + 1000L * 3600 * 24 * 15 > sdf.parse(s.format(new Date()) + " 00:00:00").getTime()) {
+                        model.put("collor", "red");
+                        model.put("collor2", "red");
+                        model.put("into", "不可复工");
+                        model.put("errorMsg", "您返回工作驻地后未满14日,不可复工。" + day15(s.parse(returnWork)) + "起方可进入!");
+                        return new ModelAndView("/user/returnWork.ftl", model);
+                    }
                 }
             }
             MsReport msReport1 = msReportMapper.msAddr(userId);
@@ -715,7 +790,7 @@ public class ScanController {
                 model.put("errorMsg", "由于您的家庭成员有新冠确诊或密切接触史人员,不许进入,如有疑问请联系直管领导。");
                 return new ModelAndView("/user/returnWorkHC.ftl", model);
             }
-            List<MsReport> msReports = msReportMapper.selectMsReportLate(userId);
+            List<MsReport> msReports = msReportMapper.selectMsReportLate(userId, "");
             if (msReports.size() < 4) {
                 model.put("collor", "red");
                 model.put("collor2", "red");
@@ -723,7 +798,7 @@ public class ScanController {
                 model.put("errorMsg", "由于您今日和前3日未连续报告日报,不可复工,如有疑问请联系直管领导。");
                 return new ModelAndView("/user/returnWorkHC.ftl", model);
             }
-            List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId);
+            List<MsReport> msReports2 = msReportMapper.selectMsReportThereError(userId,"");
             if (msReports2.size() > 0) {
                 model.put("collor", "red");
                 model.put("collor2", "red");

+ 30 - 0
whepi-web/src/main/resources/mapper/MsReport.xml

@@ -70,4 +70,34 @@
             </if>
         </where>
     </select>
+
+    <select id="selectMsReportLate" resultType="com.bofeng.entity.MsReport">
+        select * from (
+            select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 1 day) and user_create=#{userId}
+            union
+            select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 2 day) and user_create=#{userId}
+            union
+            select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 3 day) and user_create=#{userId}
+            union
+            select * from ms_report where report_status=1 and report_date=curdate() and user_create=#{userId}
+        ) aa
+        <where>
+            <if test="reportDate!=null and reportDate!=''">
+                aa.report_date > #{reportDate}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectMsReportThereError" resultType="com.bofeng.entity.MsReport">
+        select * from (select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 1 day) and user_create=#{userId}
+        union select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 2 day) and user_create=#{userId}
+        union select * from ms_report where report_status=1 and report_date=date_sub(curdate(),interval 3 day) and user_create=#{userId}
+        union select * from ms_report where report_status=1 and report_date=curdate() and user_create=#{userId}) aa
+        <where>
+            aa.ms_status = 2
+            <if test="reportDate!=null and reportDate!=''">
+               and aa.report_date > #{reportDate}
+            </if>
+        </where>
+    </select>
 </mapper>