Mr.Shi
2023-08-22 961a54152717ed343a6e16e923c67ef4afc1d5f1
大屏
已添加1个文件
已修改20个文件
15366 ■■■■ 文件已修改
platform_web/src/components/business/OperaClientMangerWindow.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/components/business/OperaClientValidDateWindow.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/views/business/clientManger.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/views/system/loginLog.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/yarn.lock 15126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen_standard/src/App.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen_standard/src/components/AppLayout.vue 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/pom.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/api/ext/StatisticsController.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/biz/system/impl/SystemUserBizImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/core/utils/Constants.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/business/dto/CompanyInitDataDTO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/vo/CompanyInfoListVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/system/join/SystemLoginLogJoinMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/business/impl/CompanyOpenServiceImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/StatisticsService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/impl/CompanyExtServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/mappers/CompanyExtMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
platform_web/src/components/business/OperaClientMangerWindow.vue
@@ -54,6 +54,12 @@
        </el-form-item>
      </div>
      <div class="tip-line">
          <el-form-item label="开通用户数" prop="openUserNum">
            <el-input v-model="form.openUserNum" placeholder="请输入开通用户数"   v-trim/>
             æ³¨ï¼šä¸º0不限制人数
          </el-form-item>
        </div>
      <div class="tip-line">
        <el-form-item label="销售人员" prop="salesperson">
          <el-select v-model="form.salesperson" filterable clearable placeholder="请选择类型">
            <el-option
@@ -144,6 +150,7 @@
        linkPhone: '',
        fileStoreAddr: '',
        fileurlfull: '',
        openUserNum:0
        // fileList: [],
      },
      isEdit: false,
@@ -168,7 +175,9 @@
        creditCode: [
          { required: true, validator: creditCode, trigger: 'blur' }
        ],
         openUserNum: [
          { pattern: /^[0-9]+$/, message: '只可以输入数字', trigger: 'change'}
        ]
      }
    }
  },
platform_web/src/components/business/OperaClientValidDateWindow.vue
@@ -20,6 +20,12 @@
          </el-radio-group>
        </el-form-item>
      </div>
      <div class="short-line">
        <el-form-item label="开通用户数" prop="openUserNum">
         <el-input v-model="form.openUserNum" placeholder="请输入开通用户数" v-trim/>
         <span style="display:inline;font-size:10px;color:red">注:为0不限制人数</span>
        </el-form-item>
      </div>
      <div class="item-line">
        <el-form-item label="有效期" prop="oepnValidDate">
          <el-date-picker
@@ -57,12 +63,15 @@
       
        oepnType: '1',
        remark: '',
        oepnValidDate: ''
        oepnValidDate: '',
        openUserNum:0
      },
      types:[],
      // éªŒè¯è§„则
      rules: {
           openUserNum: [
                  { pattern: /^[0-9]+$/, message: '只可以输入数字', trigger: 'change' }
                ]
      }
    }
  },
@@ -99,7 +108,8 @@
        update({
          ...this.form,
          companyId: this.form.id,
          validDate: this.form.oepnValidDate
          validDate: this.form.oepnValidDate,
          userNum:this.form.openUserNum
        })
          .then(() => {
            this.visible = false
platform_web/src/views/business/clientManger.vue
@@ -52,9 +52,11 @@
          </template>
        </el-table-column>
        <el-table-column prop="phone" label="主账号" align="center" min-width="100px"></el-table-column>
        <el-table-column prop="phone" label="人数限制" align="center" min-width="100px"></el-table-column>
        <el-table-column prop="linkName" label="联系人" align="center" min-width="100px"></el-table-column>
        <el-table-column prop="linkPhone" label="联系电话" align="center" min-width="120px"></el-table-column>
        <el-table-column prop="oepnValidDate" label="有效期" align="center" min-width="140px"></el-table-column>
        <el-table-column prop="openUserNum" label="开通用户数" align="center" min-width="140px"></el-table-column>
        <el-table-column prop="salespersonName" label="销售人员" align="center" min-width="100px"></el-table-column>
        <el-table-column prop="createTime" label="创建时间" align="center" min-width="140px"></el-table-column>
        <el-table-column prop="status" label="状态" align="center" min-width="100px">
@@ -68,7 +70,7 @@
          <template slot-scope="{ row }">
            <!-- <el-button type="text" @click="$refs.operaClientMangerWindow.open('编辑客户', row)">编辑</el-button> -->
            <el-button type="text" @click="showDetail(row, true)">编辑</el-button>
            <el-button type="text" @click="$refs.operaClientValidDateWindow.open('调整有效期', row)">调整有效期</el-button>
            <el-button type="text" @click="$refs.operaClientValidDateWindow.open('调整', row)">调整</el-button>
            <el-button type="text" @click="$refs.operaDDSettingWindow.open('钉钉配置', row)">钉钉配置</el-button>
            <el-button type="text" style="color:red" :loading="isWorking.delete"
              @click="deleteById(row, false)">删除</el-button>
platform_web/src/views/system/loginLog.vue
@@ -17,6 +17,15 @@
          <el-option value="false" label="登录失败"/>
        </el-select>
      </el-form-item>
      <el-form-item label="来源" prop="success">
        <el-select v-model="searchForm.orgin" placeholder="请选择登录来源" clearable @change="search">
          <el-option value="0" label="PC登陆"/>
          <el-option value="1" label="钉钉平台"/>
          <el-option value="2" label="羚羊平台"/>
          <el-option value="3" label="EDGP平台"/>
          <el-option value="4" label="微信小程序"/>
        </el-select>
      </el-form-item>
      <el-form-item label="登录时间" prop="loginTime">
        <el-date-picker
          v-model="searchDateRange"
@@ -44,6 +53,12 @@
        :default-sort="{prop: 'loginTime', order: 'descending'}"
        @sort-change="handleSortChange"
      >
        <el-table-column prop="orgin" label="来源" align="center" min-width="100px">
           <template slot-scope="{row}">
            {{row.orgin | orginText}}
          </template>
        </el-table-column>
        <el-table-column prop="companyName" label="企业名称" align="center" min-width="100px"></el-table-column>
        <el-table-column prop="loginUsername" label="登录用户名" align="center" min-width="100px"></el-table-column>
        <el-table-column prop="ip" label="登录IP" align="center" min-width="120px"></el-table-column>
        <el-table-column prop="location" label="登录地址" align="center" min-width="160px"></el-table-column>
@@ -89,7 +104,8 @@
        serverIp: '',
        success: '',
        startTime: null,
        endTime: null
        endTime: null,
        orgin:''
      }
    }
  },
@@ -100,6 +116,19 @@
        return '登录成功'
      }
      return '登录失败'
    },
    orginText (value) {
      if (value ==0) {
        return 'pc平台'
      }else  if (value == 1) {
        return '钉钉平台'
      }else  if (value == 2) {
       return '羚羊平台'
      }else  if (value == 3) {
       return 'EDGP平台'
      }else{
        return 'pc-平台';
      }
    }
  },
  methods: {
platform_web/yarn.lock
ÎļþÌ«´ó
screen_standard/src/App.vue
@@ -1,15 +1,19 @@
<script setup>
import AppLayout from './components/AppLayout.vue'
import { useCounterStore } from '@/stores/counter.js'
import { useRoute } from 'vue-router'
// import { useRoute } from 'vue-router'
const enterprise = useCounterStore()
const route = useRoute()
// const route = useRoute()
let query = window.location.href.split('?')[1].split('&')
let data = { companyId: enterprise.companyId }
query.forEach(item => {
  let subQuery = item.split('=')
  data[subQuery[0]] = subQuery[1]
})
console.log(route.query)
enterprise.setCompanyId(data.companyId)
// enterprise.setCompanyId(8)
// enterprise.setDepartId(111)
</script>
<template>
screen_standard/src/components/AppLayout.vue
@@ -27,7 +27,7 @@
          <div class="time">{{ tempDate.time }}</div>
          <div class="day">{{ `${tempDate.date} ${tempDate.day}` }}</div>
        </div>
        <img src="@/assets/img/title_line@2x.png" class="right-line" alt="">
        <!-- <img src="@/assets/img/title_line@2x.png" class="right-line" alt=""> -->
      </div>
    </div>
    <!-- 'background': `url(${getAssets(item.bgImg)})`, -->
@@ -54,9 +54,10 @@
<script setup>
import { getAssets } from '@/utils'
import { getDepartmentList } from '@/utils/apis.js'
import { reactive, toRefs, onMounted } from 'vue';
import { reactive, toRefs, ref, onMounted } from 'vue';
import { useCounterStore } from '@/stores/counter.js'
import { RouterView } from 'vue-router'
const enterprise = useCounterStore()
const layoutList = [
  { bgImg: 'bg_zhixingzhong@2x.png', name: '执行中计划数(个)', logo: 'ic_zhixingzhong@2x.png' },
  { bgImg: 'bg_yanqijihua@2x.png', name: '延期计划数(个)', logo: 'ic_yanqijihua@2x.png' },
@@ -64,6 +65,7 @@
  { bgImg: 'bg_jinrishebei@2x.png', name: '今日生产设备(台)', logo: 'ic_jinrishebei@2x.png' },
  { bgImg: 'bg_jinribuliang@2x.png', name: '今日不良品率(%)', logo: 'ic_jinribuliang@2x.png' },
]
const data = reactive({
  tempCom: { name: '豆米科技' },
  isFull: false,
@@ -71,16 +73,16 @@
    time: '',
    date: '',
    day: ''
  }
  },
  comList: []
})
let { tempCom, isFull, tempDate } = toRefs(data)
const comList = reactive([])
let { tempCom, isFull, tempDate, comList } = toRefs(data)
const selectCom = (item, index) => {
  console.log(item);
  data.tempCom = item
  enterprise.setDepartId(data.tempCom.id)
}
const fullChange = () => {
@@ -112,13 +114,11 @@
}
onMounted(() => {
  getDepartmentList(8)
  getDepartmentList(enterprise.companyId)
    .then(res => {
      // debugger
      comList = res
      data.comList = res
      data.tempCom = res[0]
      console.log(data.tempCom);
      enterprise.setDepartId(data.tempCom.id)
    })
    .catch(err => {})
  const week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日',]
server/pom.xml
@@ -72,6 +72,12 @@
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.13</version>
            <exclusions>
                <exclusion>
                    <artifactId>mybatis-spring</artifactId>
                    <groupId>org.mybatis</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- è¿žæŽ¥æ±  -->
        <dependency>
@@ -262,6 +268,13 @@
            <systemPath>${project.basedir}/lib/antelope-other-client-20230203.0.1.jar
            </systemPath>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.yulichang/mybatis-plus-join -->
        <dependency>
            <groupId>com.github.yulichang</groupId>
            <artifactId>mybatis-plus-join</artifactId>
            <version>1.4.2.2</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
server/src/main/java/doumeemes/api/ext/StatisticsController.java
@@ -6,6 +6,7 @@
import doumeemes.core.model.PageWrap;
import doumeemes.dao.business.dto.statistics.*;
import doumeemes.dao.ext.dto.*;
import doumeemes.dao.ext.vo.DepartmentExtListVO;
import doumeemes.dao.ext.vo.DeviceCheckExtListVO;
import doumeemes.dao.ext.vo.PlansExtListVO;
import doumeemes.service.ext.StatisticsService;
@@ -39,22 +40,22 @@
    }
    @ApiOperation("数据统计-工序计划,执行中、延期计划数、今日生产人数、今日生产设备数、今日不良品")
    @GetMapping("/getProcedurePlanData/{companyId}/{departId}")
    public ApiResponse<StatisticsPlanDataModel> getProcedurePlanData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
    public ApiResponse<StatisticsPlanDataModel> getProcedurePlanData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam(required = false) Integer procedureId) {
        return ApiResponse.success(statisticsService.getProcedurePlanData(companyId,departId,procedureId));
    }
    @ApiOperation("员工产品统计TOP10")
    @GetMapping("/userProduceTop/{companyId}/{departId}")
    public ApiResponse<List<UserProduceTopModel>> getUserProducceTop(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
    public ApiResponse<List<UserProduceTopModel>> getUserProducceTop(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam(required = false) Integer procedureId) {
        return ApiResponse.success(statisticsService.getUserProduceTopData(companyId,departId,procedureId));
    }
    @ApiOperation("近7天不良品分布-不良品数量统计")
    @GetMapping("/getUnqualified7DayData/{companyId}/{departId}")
    public ApiResponse<List<Unqualified7DayModel>> getUnqualified7DayData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
    public ApiResponse<List<Unqualified7DayModel>> getUnqualified7DayData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam(required = false) Integer procedureId) {
        return ApiResponse.success(statisticsService.getUnqualified7DayData(companyId,departId,procedureId));
    }
    @ApiOperation("近7天不良品分布-不良品数量-按不良项统计")
    @GetMapping("/getUnqualifiedCateData/{companyId}/{departId}")
    public ApiResponse<List<UnqualifiedCateModel>> getUnqualifiedCateData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
    public ApiResponse<List<UnqualifiedCateModel>> getUnqualifiedCateData(@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam(required = false) Integer procedureId) {
        return ApiResponse.success(statisticsService.getUnqualifiedCateData(companyId,departId,procedureId));
    }
    @ApiOperation("报工日志分页查询")
@@ -71,7 +72,7 @@
    }
    @ApiOperation("工序计划进度查询")
    @GetMapping("/getProcedurePlansList/{companyId}/{departId}")
    public ApiResponse<List<ProcedurePlansPageModel>> getProcedurePlansList (@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam Integer procedureId) {
    public ApiResponse<List<ProcedurePlansPageModel>> getProcedurePlansList (@PathVariable Integer companyId, @PathVariable Integer departId,@RequestParam(required = false) Integer procedureId) {
        return ApiResponse.success(statisticsService.getProcedurePlansPage(companyId,departId,procedureId));
    }
    @ApiOperation("成品计划进度查询")
@@ -90,4 +91,11 @@
        return ApiResponse.success(statisticsService.getStockList(companyId,departId));
    }
    @ApiOperation("条件查询企业全部公司部门")
    @GetMapping("/getDepartmentList/{companyId}")
    public ApiResponse<List<DepartmentExtListVO>> getDepartmentList (@PathVariable Integer companyId ) {
        return ApiResponse.success(statisticsService.getDepartmentList(companyId));
    }
}
server/src/main/java/doumeemes/biz/system/impl/SystemUserBizImpl.java
@@ -541,6 +541,14 @@
            CompanyUser cu = new CompanyUser();
            cu.setDeleted(Constants.ZERO);
            cu.setRootDepartId(loginUser.getRootDepartment().getId());
            //限制人数
            int limitUserNum = Constants.formatIntegerNum(loginUser.getCompany().getOpenUserNum());
            if(limitUserNum > 0){
                //人数限制输入0,表示不限制人数
                if(companyUserExtMapper.selectCount(new QueryWrapper<>(cu)) +1 > limitUserNum ){
                    throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户数量超过购买数量,请联系业务经理续购!");
                }
            }
            if(user ==null){
                //如果用户账号不存在,新增用户
                // ç”Ÿæˆå¯†ç ç›
server/src/main/java/doumeemes/core/utils/Constants.java
@@ -14,6 +14,7 @@
public class Constants {
    public static final String LINGYANG_USERNUM_LIMIT = "LINGYANG_USERNUM_LIMIT";
//    public static   String REDIS_VERSION="alks_";
    public static   String REDIS_VERSION="dm_";
    public static final int ZERO = 0 ;
server/src/main/java/doumeemes/dao/business/dto/CompanyInitDataDTO.java
@@ -59,5 +59,6 @@
    @ApiModelProperty(value = "销售人员 ï¼ˆå…³è”system_user表,平台管理员类用户)", example = "1")
    private Integer salesperson;
    @ApiModelProperty(value = "当前开通用户数", example = "1")
    private Integer openUserNum;
}
server/src/main/java/doumeemes/dao/ext/vo/CompanyInfoListVO.java
@@ -55,6 +55,8 @@
    @ApiModelProperty(value = "销售人员")
    private Integer salesperson;
    @ApiModelProperty(value = "开通用户数")
    private Integer openUserNum;
    @ApiModelProperty(value = "销售人员")
    private String salespersonName;
server/src/main/java/doumeemes/dao/system/join/SystemLoginLogJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package doumeemes.dao.system.join;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import doumeemes.dao.system.model.SystemLoginLog;
public interface SystemLoginLogJoinMapper extends MPJJoinMapper<SystemLoginLog> {
}
server/src/main/java/doumeemes/dao/system/model/SystemLoginLog.java
@@ -1,5 +1,6 @@
package doumeemes.dao.system.model;
import com.baomidou.mybatisplus.annotation.TableField;
import doumeemes.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -29,6 +30,8 @@
    @ApiModelProperty(value = "企业编码", example = "1")
    private Integer companyId;
    @ApiModelProperty(value = "来源  0pc 1钉钉 2羚羊平台 3EDGP平台", example = "1")
    @ExcelColumn(name="来源", valueMapping = "0=PC平台;1=钉钉平台;2=羚羊平台;3=EDGP平台;4=微信小程序", align = HorizontalAlignment.CENTER)
    private Integer orgin;
    @ApiModelProperty(value = "企业用户编码", example = "1")
    private Integer companyUserId;
@@ -76,5 +79,9 @@
    @ApiModelProperty(value = "登录时间")
    @ExcelColumn(name="登录时间", dateFormat = "yyyy-MM-dd HH:mm:ss", width = 10)
    private Date loginTime;
    @ApiModelProperty(value = "企业名称")
    @ExcelColumn(name="企业名称", color = IndexedColors.RED, width = 16)
    @TableField(exist = false)
    private String  companyName;
}
server/src/main/java/doumeemes/service/business/impl/CompanyOpenServiceImpl.java
@@ -90,6 +90,7 @@
        LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        UpdateWrapper<CompanyOpen> wrapper = new UpdateWrapper<>();
        wrapper.lambda().eq(CompanyOpen::getCompanyId,companyOpen.getCompanyId())
                        .set(CompanyOpen::getUserNum,companyOpen.getUserNum())
                        .set(CompanyOpen::getValidDate,companyOpen.getValidDate())
                        .set(CompanyOpen::getOepnType,companyOpen.getOepnType());
        companyOpenMapper.update(null,wrapper);
@@ -97,6 +98,7 @@
        company.setId(companyOpen.getCompanyId());
        company.setOepnValidDate(companyOpen.getValidDate());
        company.setOepnType(companyOpen.getOepnType());
        company.setOpenUserNum(companyOpen.getUserNum());
        companyMapper.updateById(company);
        Company company1 = companyMapper.selectById(companyOpen.getCompanyId());
@@ -109,7 +111,8 @@
        companyLog.setRemark("有效期从"+format.format(cyResult.getOepnValidDate())+"日调整至"+format.format(companyOpen.getValidDate()));
        companyLog.setCompanyId(company.getId());
        companyLog.setUpdateType(Constants.CompanyUpdateType.UPDATE_VAIL_DATE.getKey());
        companyLog.setDetail("有效期从"+format.format(cyResult.getOepnValidDate())+"日调整至"+format.format(companyOpen.getValidDate()));
        companyLog.setDetail("有效期从"+format.format(cyResult.getOepnValidDate())+"日调整至"+format.format(companyOpen.getValidDate())+"\n"+
                "用户开通人数从"+format.format(cyResult.getOpenUserNum())+"调整至"+format.format(companyOpen.getUserNum()));
        companyLogService.create(companyLog);
        initRedisCache(company1);
server/src/main/java/doumeemes/service/ext/StatisticsService.java
@@ -38,4 +38,6 @@
    List<ProcedureProcessModel> getProcedureProcessList(Integer companyId, Integer departId);
    List<StockDataModel> getStockList(Integer companyId, Integer departId);
    List<DepartmentExtListVO> getDepartmentList(Integer companyId);
}
server/src/main/java/doumeemes/service/ext/impl/CompanyExtServiceImpl.java
@@ -276,6 +276,7 @@
        com.setOepnValidDate(user.getOepnValidDate());
        com.setLinker(user.getLinkName());
        com.setLinkPhone(user.getLinkPhone());
        com.setOpenUserNum(user.getOpenUserNum());
        com.setAddr(user.getAddr());
        com.setFileStoreAddr(user.getFileStoreAddr());
        com.setShortName(user.getRemark());
@@ -362,13 +363,23 @@
                com.setName(user.getOrgName());
                com.setLingyangInfo(user.getUserinfo());
                com.setLegalPersonPhone(user.getPhone());
                //默认限制人员10
                if(user.getOrigin() == Constants.COMPANY_ORIGIN.lingyang){
                    int userNum = 10;
                    try {
                        userNum =Integer.parseInt(systemDictDataBiz.queryByCode(Constants.LINGYANG_PARAM, Constants.LINGYANG_USERNUM_LIMIT).getCode());
                    }catch (Exception e){
                    }
                    com.setOpenUserNum(userNum);
                }else{
                com.setOpenUserNum(-1);
                }
                com.setOpenModules(Constants.ONE+"");
                com.setOepnValidDate(DateUtil.StringToDate("2099-12-31 09:25:09"));
                com.setOepnType(Constants.ONE);
                com.setStatus(Constants.ONE);
                com.setChannelId(Constants.TWO);
                com.setOrigin(user.getOrigin());
//                com.setDingdingId(user.getco);
                //插入企业信息
                companyExtMapper.insert(com);
server/src/main/java/doumeemes/service/ext/impl/StatisticsServiceImpl.java
@@ -45,6 +45,10 @@
    @Autowired
    private WorkPlansExtMapper workPlansExtMapper;
    @Autowired
    private CompanyExtService companyExtService;
    @Autowired
    private DepartmentExtService departmentExtService;
    @Autowired
    private RouteProcedureExtMapper routeProcedureExtMapper;
    @Autowired
    private PlansExtMapper plansExtMapper;
@@ -52,8 +56,6 @@
    private WStockExtMapper stockExtMapper;
    @Autowired
    private WorkorderRecordExtMapper workorderRecordExtMapper;
    @Autowired
    private DepartmentExtService departmentExtService;
    @Autowired
    private DeviceCheckExtService deviceCheckExtService;
    @Autowired
@@ -150,6 +152,19 @@
        return  result;
    }
    @Override
    public  List<DepartmentExtListVO> getDepartmentList(Integer companyId){
        CompanyExtListVO companyExtListVO = companyExtService.getModelById(companyId);
        if(companyExtListVO == null || Constants.equalsInteger(companyExtListVO.getDeleted(), Constants.ONE)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,企业或者部门信息不合法,如有疑问,请联系系统管理员");
        }
        QueryDepartmentExtDTO param = new QueryDepartmentExtDTO();
        param.setDeleted(Constants.ZERO);
        param.setCompanyId(companyId);
        param.setType(Constants.DEPART_TYPE.com);
        List<DepartmentExtListVO> result = departmentExtService.findList(param);
        return  result;
    }
    @Override
    public List<Unqualified7DayModel> getUnqualified7DayData(Integer companyId, Integer departId, Integer procedureId) {
        DepartmentExtListVO department =   departmentExtService.getModelById(companyId,departId);
        if(department == null || Constants.equalsInteger(department.getDeleted(), Constants.ONE)){
server/src/main/java/doumeemes/service/system/impl/SystemLoginLogServiceImpl.java
@@ -1,10 +1,13 @@
package doumeemes.service.system.impl;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import doumeemes.core.model.PageData;
import doumeemes.core.model.PageWrap;
import doumeemes.core.utils.Utils;
import doumeemes.dao.business.model.Company;
import doumeemes.dao.system.SystemLoginLogMapper;
import doumeemes.dao.system.dto.QuerySystemLoginLogDTO;
import doumeemes.dao.system.join.SystemLoginLogJoinMapper;
import doumeemes.dao.system.model.SystemLoginLog;
import doumeemes.dao.system.model.SystemTraceLog;
import doumeemes.service.system.SystemLoginLogService;
@@ -30,6 +33,8 @@
    @Autowired
    private SystemLoginLogMapper systemLoginLogMapper;
    @Autowired
    private SystemLoginLogJoinMapper systemLoginLogJoinMapper;
    @Override
    public Integer create(SystemLoginLog systemLoginLog) {
@@ -87,41 +92,41 @@
    @Override
    public PageData<SystemLoginLog> findPage(PageWrap<QuerySystemLoginLogDTO> pageWrap) {
        IPage<SystemLoginLog> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<SystemLoginLog> queryWrapper = new QueryWrapper<>();
        MPJLambdaWrapper<SystemLoginLog> mpjLambdaWrapper = new MPJLambdaWrapper<>();
        mpjLambdaWrapper.selectAll(SystemLoginLog.class);
        mpjLambdaWrapper.leftJoin(Company.class,Company::getId,SystemLoginLog::getCompanyId);
        mpjLambdaWrapper.selectAs(Company::getName, SystemLoginLog::getCompanyName);
        // ç™»å½•用户名
        if (StringUtils.isNotBlank(pageWrap.getModel().getLoginUsername())) {
            queryWrapper.lambda().like(SystemLoginLog::getLoginUsername, pageWrap.getModel().getLoginUsername());
            mpjLambdaWrapper.like(SystemLoginLog::getLoginUsername, pageWrap.getModel().getLoginUsername());
        }
        // ç™»å½•IP
        if (StringUtils.isNotBlank(pageWrap.getModel().getIp())) {
            queryWrapper.lambda().eq(SystemLoginLog::getIp, pageWrap.getModel().getIp());
            mpjLambdaWrapper.eq(SystemLoginLog::getIp, pageWrap.getModel().getIp());
        }
        if ( pageWrap.getModel().getOrgin() !=null) {
            mpjLambdaWrapper.eq(SystemLoginLog::getOrgin, pageWrap.getModel().getOrgin());
        }
        // æœåС噍IP
        if (StringUtils.isNotBlank(pageWrap.getModel().getServerIp())) {
            queryWrapper.lambda().eq(SystemLoginLog::getServerIp, pageWrap.getModel().getServerIp());
            mpjLambdaWrapper.eq(SystemLoginLog::getServerIp, pageWrap.getModel().getServerIp());
        }
        // ç™»å½•状态
        if (pageWrap.getModel().getSuccess() != null) {
            queryWrapper.lambda().eq(SystemLoginLog::getSuccess, pageWrap.getModel().getSuccess());
            mpjLambdaWrapper.eq(SystemLoginLog::getSuccess, pageWrap.getModel().getSuccess());
        }
        // ç™»å½•开始时间
        if (pageWrap.getModel().getStartTime() != null) {
            queryWrapper.lambda().ge(SystemLoginLog::getLoginTime, pageWrap.getModel().getStartTime());
            mpjLambdaWrapper.ge(SystemLoginLog::getLoginTime, pageWrap.getModel().getStartTime());
        }
        // ç™»å½•结束时间
        if (pageWrap.getModel().getStartTime() != null) {
            queryWrapper.lambda().lt(SystemLoginLog::getLoginTime, pageWrap.getModel().getEndTime());
            mpjLambdaWrapper.lt(SystemLoginLog::getLoginTime, pageWrap.getModel().getEndTime());
        }
        // å­—段排序
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase("DESC")) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(systemLoginLogMapper.selectPage(page, queryWrapper));
        mpjLambdaWrapper.orderByDesc(SystemLoginLog::getLoginTime);
        return PageData.from(systemLoginLogJoinMapper.selectJoinPage(page, SystemLoginLog.class,mpjLambdaWrapper));
    }
    @Override
server/src/main/resources/mappers/CompanyExtMapper.xml
@@ -209,6 +209,7 @@
  <select id="selectCompanyInfoList" parameterType="doumeemes.dao.ext.dto.QueryCompanyExtDTO" resultType="doumeemes.dao.ext.vo.CompanyInfoListVO" >
    SELECT
      comp.ID,
      comp.OPEN_USER_NUM as openUserNum,
      comp.NAME as companyName,
      dept.name AS remark,
      comp.ADDR,