jiangping
2024-12-02 2b72be7962e44d251fdecc8fdc6465ed7237536e
最新版本541200007
已添加3个文件
已修改28个文件
701 ■■■■ 文件已修改
admin/src/api/workbench/index.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/index.vue 195 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/admin_timer/src/main/java/com/doumee/api/HkNoticeTimerController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WmsPushCloudController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunActController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/GetTodoListRequest.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/GetTodoListResponse.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/wms/model/request/WmsBaseRequest.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/core/wms/model/response/WmsInventoryJsonResponse.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/BoardStockListVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/WmsService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/api/workbench/index.js
@@ -2,7 +2,7 @@
// é¡¶éƒ¨å¯¼èˆª
export function getAppHeaderNav (data) {
  return request.get('/visitsAdmin/cloudService/business/hksync/getHkMenuLink?type='+ data)
  return request.post('/visitsAdmin/cloudService/business/hksync/getHkMenuLink/'+data+'?time='+Math.random())
}
// ä¸»ä½“数据
export function getWorkbenchBody (data) {
@@ -24,9 +24,13 @@
export function getWorkbenchTaskHead (data) {
  return request.post('/visitsAdmin/cloudService/business/staging/taskCenterHeadPC', data)
}
// åŒæ­¥æµ·åº·ä»£åŠžæ•°æ®
export function syncHkNotice (data) {
  return request.post('/visitsAdmin/cloudService/business/hksync/notice/getList', data)
}
// pc工作台
export function getWorkbenchData (data) {
  return request.get('/visitsAdmin/cloudService/business/staging/pCWorkPlatformData', {
    params: {...data  }
  })
}
}
admin/src/views/index.vue
@@ -133,7 +133,7 @@
        <div class="task">
          <div class="header df_sb">
            <div class="home_title df">
              <span @click="handleTest">待办事项</span>
              <span @click="getNoticeList">待办事项</span>
              <span class="num" v-if="taskTotal">{{ taskTotal }}</span>
            </div>
            <div class="df_ac more" @click="jumpPage('/task/index')">
@@ -202,7 +202,7 @@
import { weeks } from '@/utils/config'
import {
  getWorkbenchData,
  getAppHeaderNav
  getAppHeaderNav, syncHkNotice
} from '@/api'
import { level } from '@/api/business/visits'
import TaskDetail from '@/views/task/visSubDetail.vue'
@@ -223,7 +223,7 @@
    OperaHiddenDangerWindow,
    OperaVisitsDesWindow
  },
  data() {
  data () {
    return {
      colors,
      nowDate: '',
@@ -244,122 +244,131 @@
      isShowDetail: false,
      isShowReport: false,
      isShowDanger: false,
      isShowDriver: false,
      isShowDriver: false
    }
  },
  computed: {
    userInfo() {
    userInfo () {
      return this.$store.state.userInfo
    }
  },
  created() {
  created () {
    this.updateDate()
    setInterval(() => {
      this.updateDate()
    }, 1000 * 60 * 60)
  },
  mounted() {
  mounted () {
    this.initData()
  },
  methods: {
    handleTest() {
      const myWindow = window.open('https://10.50.250.253/portal/ui/index?componentId=dfe&componentMenuId=process_apply')
      setTimeout(() => {
        const params = {
          componentId: 'dfe',
          componentMenuId: 'process_apply',
          callback: {
            method: 'dealTlncMsg', argument: {
              "msgId": "98c256b9-aaff-11ef-8347-fa163ee2c57c",
              "moduleId": "dfeFlowTodoModuleId",
              "msgTitle": "请及时处理13856591439发起的请假申请",
              "msgStatus": "0",
              "msgCreateTime": "今天 15:33",
              "msgCreateTimeIso": "2024-11-25T15:33:42.000+08:00",
              "serverTime": 1732531014591,
              "menuCode": "process_apply",
              "msgStatusStr": "待处理",
              "comId": "dfe",
              "userId": "13856591439",
              "extendNoShow": "{\"processInstanceId\":\"98a57fe0-aaff-11ef-8347-fa163ee2c57c\",\"processId\":\"process_dabcfdd39f1b6f46d36a9f4ff6ce1080\",\"param\":{\"sourceType\":\"todo\",\"modelCode\":\"tb_leave_dfe_for_dfe_runtime\",\"processNodeId\":\"UserTask_dde7d83377343a2d5fa1f60c23b023ef\",\"taskId\":\"98c256b9-aaff-11ef-8347-fa163ee2c57c\"},\"process.param.appId\":\"32ca8770-6f85-11ec-b5a3-991864da52a6\",\"appId\":\"32ca8770-6f85-11ec-b5a3-991864da52a6\",\"name\":\"请假申请\",\"taskId\":\"98c256b9-aaff-11ef-8347-fa163ee2c57c\",\"taskNodeId\":\"UserTask_dde7d83377343a2d5fa1f60c23b023ef\",\"url\":\"/dfe-form/process/tlnc/apply\"}",
              "targetComId": "dfe",
              "moduleName": "流程待办",
              "tid": "99cad778-aaff-11ef-9dbf-ff08ba71965c",
              "msgEndTime": null,
              "msgEndTimeIso": "",
              "picUrl": "",
              "extendJson": "{\"key1\":\"请及时处理陈鸿飞发起的请假申请\"}",
              "extendParam": null,
              "extendCascade": null,
              "createUser": "13856591439",
              "webCascadeUrl": null,
              "h5CascadeUrl": null,
              "cascadeTodoOpenType": null,
              "cascadeSourceConfigId": null,
              "h5Url": "/h5/pages/form-page/form-page?returnPath=-1&appId=32ca8770-6f85-11ec-b5a3-991864da52a6&taskId=98c256b9-aaff-11ef-8347-fa163ee2c57c&processNodeId=UserTask_dde7d83377343a2d5fa1f60c23b023ef&modelCode=tb_leave_dfe_for_dfe_runtime&type=flowHandle&component=form-apply&_sn=true",
              "segmentId": "dfe-form",
              "lastUsers": "陈鸿飞",
              "currentUsers": "陈鸿飞",
              "todoTypeCode": "dfe@@tlnc_placeholder_tlnc@@dfeFlowTodoModuleId",
              "currentUserIds": "13856591439",
              "lastUserIds": "13856591439",
              "msgDesc": null,
              "widgetUrl": null,
              "detailType": null,
              "widgetWidth": null,
              "widgetHeight": null,
              "userIdList": null,
              "statusName": null,
              "arriveTime": null,
              "stayTime": null,
              "todoType": null,
              "cascadePort": null,
              "openMode": null
            }
          },
          msgType: 'tlnc'
        }
        let argus = JSON.stringify(params)
        myWindow.postMessage('{"method":"goToApp","argument":' + argus + '}', '*')
      }, 3000)
    getNoticeList(){
      syncHkNotice().then(res => {
      })
    },
    SubSuccess(str) {
    handleTest (row) {
      getAppHeaderNav(5).then(res => {
        if (res == undefined || res == null) {
          return
        }
        const myWindow = window.open(res)
        setTimeout(() => {
          const params = {
            componentId: 'dfe',
            componentMenuId: 'process_apply',
            callback: {
              method: 'dealTlncMsg',
              argument: {
                msgId: '98c256b9-aaff-11ef-8347-fa163ee2c57c',
                moduleId: 'dfeFlowTodoModuleId',
                msgTitle: '请及时处理13856591439发起的请假申请',
                msgStatus: '0',
                msgCreateTime: '今天 15:33',
                msgCreateTimeIso: '2024-11-25T15:33:42.000+08:00',
                serverTime: 1732531014591,
                menuCode: 'process_apply',
                msgStatusStr: '待处理',
                comId: 'dfe',
                userId: '13856591439',
                extendNoShow: '{"processInstanceId":"98a57fe0-aaff-11ef-8347-fa163ee2c57c","processId":"process_dabcfdd39f1b6f46d36a9f4ff6ce1080","param":{"sourceType":"todo","modelCode":"tb_leave_dfe_for_dfe_runtime","processNodeId":"UserTask_dde7d83377343a2d5fa1f60c23b023ef","taskId":"98c256b9-aaff-11ef-8347-fa163ee2c57c"},"process.param.appId":"32ca8770-6f85-11ec-b5a3-991864da52a6","appId":"32ca8770-6f85-11ec-b5a3-991864da52a6","name":"请假申请","taskId":"98c256b9-aaff-11ef-8347-fa163ee2c57c","taskNodeId":"UserTask_dde7d83377343a2d5fa1f60c23b023ef","url":"/dfe-form/process/tlnc/apply"}',
                targetComId: 'dfe',
                moduleName: '流程待办',
                tid: '99cad778-aaff-11ef-9dbf-ff08ba71965c',
                msgEndTime: null,
                msgEndTimeIso: '',
                picUrl: '',
                extendJson: '{"key1":"请及时处理陈鸿飞发起的请假申请"}',
                extendParam: null,
                extendCascade: null,
                createUser: '13856591439',
                webCascadeUrl: null,
                h5CascadeUrl: null,
                cascadeTodoOpenType: null,
                cascadeSourceConfigId: null,
                h5Url: '/h5/pages/form-page/form-page?returnPath=-1&appId=32ca8770-6f85-11ec-b5a3-991864da52a6&taskId=98c256b9-aaff-11ef-8347-fa163ee2c57c&processNodeId=UserTask_dde7d83377343a2d5fa1f60c23b023ef&modelCode=tb_leave_dfe_for_dfe_runtime&type=flowHandle&component=form-apply&_sn=true',
                segmentId: 'dfe-form',
                lastUsers: '陈鸿飞',
                currentUsers: '陈鸿飞',
                todoTypeCode: 'dfe@@tlnc_placeholder_tlnc@@dfeFlowTodoModuleId',
                currentUserIds: '13856591439',
                lastUserIds: '13856591439',
                msgDesc: null,
                widgetUrl: null,
                detailType: null,
                widgetWidth: null,
                widgetHeight: null,
                userIdList: null,
                statusName: null,
                arriveTime: null,
                stayTime: null,
                todoType: null,
                cascadePort: null,
                openMode: null
              }
            },
            msgType: 'tlnc'
          }
          // const argus = JSON.stringify(params)
          myWindow.postMessage('{"method":"goToApp","argument":' + row.param5 + '}', '*')
        }, 3000)
      })
    },
    SubSuccess (str) {
      this[str] = false
      this.getTaskList()
    },
    funcClick(item) {
    funcClick (item) {
      if (item.name == '考勤工作台') {
        getAppHeaderNav(4).then(res => {
          window.open(res, "_blank")
          return
          window.open(res, '_blank')
        })
      }
      this.$router.push(item.path)
    },
    updateDate() {
    updateDate () {
      this.nowDate = dayjs().format('YYYYå¹´M月D日')
      this.nowWeek = weeks[new Date().getDay()]
    },
    initData() {
    initData () {
      this.getWorkHead()
      this.getWorkBody()
      this.getTaskList()
      this.getWarningList()
    },
    getWarningList() {
    getWarningList () {
      getWorkbenchData({ queryType: 4 }).then(res => {
        this.warningList = res.timeOutVisitList || []
        this.warningTotal = res.timeOutVisitNum || 0
      })
    },
    getTaskList() {
    getTaskList () {
      getWorkbenchData({ queryType: 3 }).then(res => {
        this.taskList = res.noticesList || []
        this.taskTotal = res.noticesNum || 0
      })
    },
    getWorkBody() {
    getWorkBody () {
      getWorkbenchData({ queryType: 2 }).then(res => {
        this.staticData = res || {}
        this.initEchart2()
@@ -367,10 +376,10 @@
        this.initEchart4()
      })
    },
    getWorkHead() {
    getWorkHead () {
      getWorkbenchData({ queryType: 1 }).then(res => {
        this.headerData = res || {}
        let arr = []
        const arr = []
        arr.push({ name: '访客', value: this.headerData.inParkVisitUserNum })
        arr.push({ name: '内部员工', value: this.headerData.todayInParkUserNum - this.headerData.inParkLwUserNum - this.headerData.inParkVisitUserNum })
        arr.push({ name: '长期相关方', value: this.headerData.inParkLwUserNum })
@@ -379,10 +388,10 @@
        this.initEchart1()
      })
    },
    jumpPage(page) {
    jumpPage (page) {
      this.$router.push(page)
    },
    departure(id) {
    departure (id) {
      this.$confirm('确定离厂吗, æ˜¯å¦ç»§ç»­?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
@@ -396,7 +405,11 @@
      })
    },
    handleDetail(row) {
    handleDetail (row) {
      if (row.type === 7) {
       this.handleTest(row);
        return
      }
      if (row.objType === 2) {
        this.$refs.OperaDetailsWindow.open('公务车申请详情', { ...row, id: row.objId })
        return
@@ -437,9 +450,9 @@
        })
      }
    },
    initEchart1() {
    initEchart1 () {
      const myChart = echarts.init(document.getElementById('echart1'))
      let that = this
      const that = this
      const option = {
        tooltip: {
@@ -471,9 +484,9 @@
        myChart.resize()
      })
    },
    initEchart2() {
    initEchart2 () {
      const myChart = echarts.init(document.getElementById('echart2'))
      let that = this
      const that = this
      myChart.setOption({
        grid: {
          top: '4%',
@@ -516,7 +529,7 @@
                    { offset: 0, color: '#56abf8' },
                    { offset: 1, color: '#407ff0' }
                  ]
                ),
                )
                // barBorderRadius: [0, 10, 10, 0]
              }
            }
@@ -527,9 +540,9 @@
        myChart.resize()
      })
    },
    initEchart3() {
    initEchart3 () {
      const myChart = echarts.init(document.getElementById('echart3'))
      let that = this
      const that = this
      myChart.setOption({
        tooltip: {
          trigger: 'axis',
@@ -627,9 +640,9 @@
        myChart.resize()
      })
    },
    initEchart4() {
    initEchart4 () {
      const myChart = echarts.init(document.getElementById('echart4'))
      let that = this
      const that = this
      myChart.setOption({
        tooltip: {
          trigger: 'axis',
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -144,6 +144,7 @@
    public static final String MYSQL_BACKUP_DIR ="MYSQL_BACKUP_DIR" ;
    public static final String EVENT_FILES_PRIVATE_DOMAIN ="EVENT_FILES_PRIVATE_DOMAIN" ;
    public static final String EVENT_FILES_PUBLIC_DOMAIN ="EVENT_FILES_PUBLIC_DOMAIN" ;
    public static final String WMS_TOTAL_STOCK_NUM ="WMS_TOTAL_STOCK_NUM" ;
    public static  boolean DEALING_HK_SYNCPRIVILEGE= false;
    public static  boolean DEALING_HK_SYNCDEVICE = false;
    public static  boolean DEALING_HK_SYNCPLATFORM = false;
@@ -156,6 +157,7 @@
    public static  boolean DEALING_HK_DEL_USER = false;
    public static  boolean DEALING_HK_VISIT = false;
    public static  boolean DEALING_HK_VISIT_EXPIRE = false;
    public static  boolean DEALING_HK_NOTICE_LIST = false;
    public static  boolean DEALING_FROM_HK_VISIT = false;
    public static  boolean DEALING_HK_EMPOWER = false;
    public static  boolean DEALING_HK_EMPOWER_DETAIL = false;
@@ -562,6 +564,7 @@
    int logisticsCarUse = 4;//物流车审批
    int system = 5;//系统消息
    int reason = 6;//入园原因
    int hknotice = 7;//海康考勤代办
}
server/system_service/src/main/java/com/doumee/dao/system/model/Notices.java
@@ -79,8 +79,8 @@
    @ExcelColumn(name="关联对象名称")
    private String objName;
    @ApiModelProperty(value = "类型 0访客审批 1访客报备 2用车审批 3隐患处理 4物流车审批 5系统系统")
    @ExcelColumn(name="类型 0访客审批 1访客报备 2用车审批 3隐患处理 4物流车审批 5系统系统")
    @ApiModelProperty(value = "类型 0访客审批 1访客报备 2用车审批 3隐患处理 4物流车审批 5系统系统 6入园原因  7海康考勤代办")
    @ExcelColumn(name="类型 0访客审批 1访客报备 2用车审批 3隐患处理 4物流车审批 5系统系统  6入园原因 7海康考勤代办")
    private Integer type;
    @ApiModelProperty(value = "类型描述")
server/visits/admin_timer/src/main/java/com/doumee/api/HkNoticeTimerController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,40 @@
package com.doumee.api;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.utils.Constants;
import com.doumee.service.business.VisitsService;
import com.doumee.service.business.impl.hksync.HkSyncVisitServiceImpl;
import com.doumee.service.business.impl.hksync.fhk.HkSyncVisitFromHKServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Api(tags = "海康代办定时抓取接口")
@RestController
@RequestMapping("/timer/hkNotice")
public class HkNoticeTimerController extends BaseController {
    @Autowired
    private HkSyncVisitServiceImpl hkSyncVisitService;
    @Autowired
    private HkSyncVisitFromHKServiceImpl hkSyncVisitFromHKService;
    @Autowired
    private VisitsService visitsService;
    @ApiOperation("开启定时查询最新人员代办数据状态")
    @GetMapping("/getNoticeList")
    public ApiResponse getNoticeList() {
        hkSyncVisitService.syncVisitData();
        return ApiResponse.success("开启定时下发访客预约申请成功");
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/HkSyncCloudController.java
@@ -33,6 +33,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.Cacheable;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -60,6 +61,8 @@
    private HkSyncPrivilegeServiceImpl hkSyncPrivilegeService;
    @Autowired
    private HkSyncPushServiceImpl hkSyncPushService;
    @Autowired
    private HkSyncNoticeServiceImpl hkSyncNoticeService;
    @Autowired
    private HkSyncLoginAuthServiceImpl hkSyncLoginAuthService;
@@ -231,11 +234,11 @@
     * @return
     */
    @ApiOperation(value = "获取安防平台系统免密菜单调整地址" )
    @GetMapping("/getHkMenuLink")
    @PostMapping("/getHkMenuLink/{type}")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type",example = "0",value = "菜单类型", required = true),
    })
    public ApiResponse<String> getHkMenuLink(Integer type,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
    public ApiResponse<String> getHkMenuLink(@PathVariable Integer type,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        LoginUserInfo loginUserInfo = this.getLoginUser(token);
        String hkToken = DESUtil.generateTokenToHk(loginUserInfo.getUsername(),Integer.valueOf(
          systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_TOKEN_VALIDITY).getCode()
@@ -267,7 +270,12 @@
    }
    @ApiOperation("【海康】代办消息数据集合对接处理接口")
    @PostMapping("/notice/getList")
    public ApiResponse getNoticeList( HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token ){
        String result = hkSyncNoticeService.syncHkNotices(this.getLoginUser(token).getUsername());
        return ApiResponse.success(result);
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/PlatformJobCloudController.java
@@ -12,6 +12,7 @@
import com.doumee.dao.web.reqeust.JobDetailDTO;
import com.doumee.dao.web.reqeust.SignInDTO;
import com.doumee.service.business.PlatformJobService;
import com.doumee.service.business.third.WmsService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -32,6 +33,8 @@
    @Autowired
    private PlatformJobService platformJobService;
    @Autowired
    private WmsService wmsService;
    @PreventRepeat
    @ApiOperation("新建")
@@ -56,6 +59,13 @@
        platformJobService.deleteByIdInBatch(this.getIdList(ids));
        return ApiResponse.success(null);
    }
    @ApiOperation("批量更新wms合同总运输量")
    @GetMapping("/updateTotalNum")
    @CloudRequiredPermission("business:platformjob:update")
    public ApiResponse updateTotalNum(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        wmsService.computjobTotalNum(this.getIdList(ids));
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/WmsPushCloudController.java
@@ -42,6 +42,7 @@
        WmsBaseResponse result =null;
        try {
            result = wmsService.inboundNotice(param);
            wmsService.computjobTotalNum(param.getJobIdList());
        }catch (BusinessException e){
            log.error("【WMS】推送入库单通知任务===失败:"+e.getMessage());
            success = Constants.ONE;
@@ -64,6 +65,7 @@
        WmsBaseResponse result =null;
        try {
            result = wmsService.outboundNotice(param);
            wmsService.computjobTotalNum(param.getJobIdList());
        }catch (BusinessException e){
            log.error("【WMS】推送出库单通知任务===失败:"+e.getMessage());
            success = Constants.ONE;
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunActController.java
@@ -141,15 +141,8 @@
    @LoginNoRequired
    @ApiOperation("库存情况")
    @GetMapping("/stockList")
    public ApiResponse<List<GeneralVO>> stockList() {
        List<GeneralVO> list = new ArrayList<>();
        for (int i = 1; i < 10; i++) {
            Random random = new Random();
            GeneralVO data = new GeneralVO();
            data.setName("名称"+i);
            data.setNum(BigDecimal.valueOf(random.nextInt(1000)));
            list.add(data);
        }
    public ApiResponse< BoardStockListVO > stockList() {
         BoardStockListVO list =  boardService.stockList();
        return ApiResponse.success(list);
    }
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/board/PlatformJobRunController.java
@@ -88,7 +88,7 @@
        }
        for (String str:dayList) {
            TransportMeasureVO data = new TransportMeasureVO();
            data.setPlanDate(str);
            data.setPlanDateStr(str);
            data.setPlanTimes(random.nextInt(200));
            data.setPlanTaskNum(new BigDecimal(random.nextInt(1000)));
            data.setFinishTaskNum(new BigDecimal(data.getPlanTaskNum().intValue()));
server/visits/dmvisit_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: pro
    active: dev
  application:
    name: visitsAdmin
    # å®‰å…¨é…ç½®
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKConstants.java
@@ -39,11 +39,13 @@
     * 3、能管中心:ngzx
     */
    public interface MenuPageId{
        String[] componentIds = new String[]{"Infovision iPark Platform","dfe"};
        String afzx = "afzx";//安防中心
        String xkzx = "xkzx";//消控中心
        String ngzx = "ngzx";//能管中心
        String jsc = "jsc";//物业后勤
        String kqgzt = "attendance_workstand";//考勤管理
        String kqdbcl = "process_apply";//考勤代办处理
    }
    /**
@@ -126,7 +128,8 @@
        String[] iccmAppointmentRecords= new String[]{"/api/iccm/v2/appointment/records","iccm查询已预约登记"};//iccm查询已预约登记
        String[] wxAccessToken= new String[]{"/api/wx/v1/oa/get/accessToken","根据微信公众号信息获取AccessToken"};//1.9.1根据微信公众号信息获取AccessToken
        String[] getWxConfig= new String[]{"/api/wx/v1/oa/get/config","根据配置微信公众号编号查询微信公众号信息"};//根据配置微信公众号编号查询微信公众号信息
        String[] goMenuUrl= new String[]{"/xauthplus-plugin/thirdLogin?type=third&componentId=Infovision iPark Platform&componentMenuId=${menuId}&token=${token}","工作台菜单跳转地址"};
        String[] goMenuUrl= new String[]{"/xauthplus-plugin/thirdLogin?type=third&componentId=${componentId}&componentMenuId=${menuId}&token=${token}","工作台菜单跳转地址"};
//        String[] goNoticeMenuUrl= new String[]{"/xauthplus-plugin/thirdLogin?type=third&componentId=dfe&componentMenuId={menuId}&token=${token}","工作台考勤代办处理跳转地址"};
        String[] nhEventPageList= new String[]{"/api/ecm/warning/event/v1/pageList","分页获取告警事件"};//分页获取告警事件
        String[] nhRegionDataRanking= new String[]{"/api/ecm/v1/energy/regionDataRanking","根据时间维度获取区域用量排名"};//1.8.5根据时间维度获取区域用量排名
        String[] nhEnergyDistribution= new String[]{"/api/ecm/v1/energy/energyDistribution","根据时间维度获取能耗分布"};// æ ¹æ®æ—¶é—´ç»´åº¦èŽ·å–èƒ½è€—åˆ†å¸ƒ
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/HKTools.java
@@ -994,9 +994,9 @@
        return startDoPostStringArtemis(HKConstants.InterfacePath.applyST,body);
    }
    public static String getMenuUrl(String menuId, String token) {
    public static String getMenuUrl(String componentId,String menuId, String token) {
        String url = HKConstants.InterfacePath.goMenuUrl[0];
        url = url.replace("${menuId}", menuId).replace("${token}",token);
        url = url.replace("${componentId}",componentId).replace("${menuId}", menuId).replace("${token}",token);
        return  url;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/request/GetTodoListRequest.java
@@ -6,12 +6,12 @@
public class GetTodoListRequest {
    private String  comId;//        Query    String    false    ç»„ä»¶id
    private int  pageSize    ;//    Query    Number    false    åˆ†é¡µå¤§å°ï¼ˆ1~999)
    private int cascade    ;//    Query    Number    false    çº§è”数据来源0:下级平台来源;1:非下级平台来源,为空默认查询所有数据来源
    private Integer  pageSize    ;//    Query    Number    false    åˆ†é¡µå¤§å°ï¼ˆ1~999)
    private Integer cascade    ;//    Query    Number    false    çº§è”数据来源0:下级平台来源;1:非下级平台来源,为空默认查询所有数据来源
    private String  messageId;//        Query    String    false    messageId
    private int  pageNo;//        Query    Number    false    å½“前页码(1~100000)
    private Integer  pageNo;//        Query    Number    false    å½“前页码(1~100000)
    private String  localeType;//        Query    String    false    è¯­è¨€ç±»åž‹zh_CN:中文en_US:英文
    private int status;//        Query    Number    false    ä¸šåŠ¡çŠ¶æ€ç±»åž‹,1-待处理,2-审批中,3-已完成,4-抄送我,5-我审批,默认待处理
    private Integer status;//        Query    Number    false    ä¸šåŠ¡çŠ¶æ€ç±»åž‹,1-待处理,2-审批中,3-已完成,4-抄送我,5-我审批,默认待处理
    private String userId;//        Query    String    false    ç”¨æˆ·id
    private String clientType;//        Query    String    false    è°ƒç”¨æ–¹ç±»åž‹0:其他;1:APP,为空时默认为1;2:门户
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/model/param/respose/GetTodoListResponse.java
@@ -10,7 +10,7 @@
      private String comId;//    String    false    ç»„件标识
      private String moduleId;//    String    false    æ¨¡å—标识
      private String msgTitle;//    String    false    ä¿¡æ¯æ ‡é¢˜
      private String msgStatus    ;//String    false    ä¿¡æ¯çŠ¶æ€
      private String msgStatus    ;//String    false    ä¿¡æ¯çŠ¶æ€ ä¸šåŠ¡çŠ¶æ€ç±»åž‹,1-待处理,2-审批中,3-已完成,4-抄送我,5-我审批,默认待处理
      private String msgStatusStr;//    String    false    ä¿¡æ¯çŠ¶æ€åç§°
      private String msgCreateTime;//    String    false    æ¶ˆæ¯åˆ›å»ºæ—¶é—´,优先使用msgCreateTimeIso
      private String msgCreateTimeIso;//    String    false    æ¶ˆæ¯åˆ›å»ºæ—¶é—´,ISO时间
server/visits/dmvisit_service/src/main/java/com/doumee/core/haikang/service/HKService.java
@@ -1086,6 +1086,7 @@
     * @return
     */
    public  static  String   getMenuUrl(Integer type,String token){
        String componentId = HKConstants.MenuPageId.componentIds[0];
        String menuId = HKConstants.MenuPageId.afzx;
        if(Constants.equalsInteger(type,Constants.ONE)){
            menuId = HKConstants.MenuPageId.xkzx;
@@ -1095,10 +1096,13 @@
            menuId = HKConstants.MenuPageId.jsc;
        }else  if(Constants.equalsInteger(type,Constants.FOUR)){
            menuId = HKConstants.MenuPageId.kqgzt;
        }else  if(Constants.equalsInteger(type,Constants.FIVE)){
            componentId = HKConstants.MenuPageId.componentIds[1];
            menuId = HKConstants.MenuPageId.kqdbcl;
        }
        log.info("【海康获取工作台菜单免密登陆调整地址】================开始====menuId:"+menuId+"==token:"+token);
        try {
            String res = HKTools.getMenuUrl(menuId,token);
            String res = HKTools.getMenuUrl(componentId,menuId,token);
            return  res;
        }catch (Exception e){
            log.error("【海康获取工作台菜单免密登陆调整地址】================失败====:\n"+ e.getMessage());
@@ -1404,7 +1408,9 @@
        Class<?> clazz = obj.getClass();
        for (Field field : clazz.getDeclaredFields()) {
            field.setAccessible(true); // ä½¿å¾—私有字段也可以访问
            map.put(field.getName(), (String) field.get(obj));
            if(field.get(obj)!=null){
                map.put(field.getName(), String.valueOf( field.get(obj)));
            }
        }
        return map;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/core/wms/model/request/WmsBaseRequest.java
@@ -1,5 +1,6 @@
package com.doumee.core.wms.model.request;
import com.doumee.dao.business.model.PlatformJob;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -16,5 +17,5 @@
    @ApiModelProperty(value = "data"  )
    private List<T> data;
    private List<Integer> jobIdList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/core/wms/model/response/WmsInventoryJsonResponse.java
@@ -19,9 +19,9 @@
    private String item_code;
    @ApiModelProperty(value = "消息描述" ,example = "1")
    private String item_name;
    @ApiModelProperty(value = "内容详情集合" ,example = "1")
    @ApiModelProperty(value = "qty" ,example = "1")
    private BigDecimal qty;
    @ApiModelProperty(value = "内容详情集合" ,example = "1")
    @ApiModelProperty(value = "supplier_code" ,example = "1")
    private String  supplier_code;
    @ApiModelProperty(value = "g" ,example = "1")
    private String  supplier_name;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -43,6 +43,8 @@
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    private Integer isdeleted;
    @ApiModelProperty(value = "作业来源:0自建 1wms推送", example = "1")
    private Integer origin;
    @ApiModelProperty(value = "名称")
    private String name;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformWmsJob.java
@@ -51,6 +51,9 @@
    @ApiModelProperty(value = "是否删除0否 1是", example = "1")
    @ExcelColumn(name="是否删除0否 1是")
    private Integer isdeleted;
    @ApiModelProperty(value = "作业来源:0自建 1wms推送", example = "1")
    @ExcelColumn(name="作业来源:0自建 1wms推送")
    private Integer origin;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/BoardStockListVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package com.doumee.dao.web.response.platformReport;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * é€šç”¨
 *
 * @Author : Rk
 * @create 2024/10/25 10:59
 */
@Data
public class BoardStockListVO {
    @ApiModelProperty(value = "库存明细集合")
    private List<GeneralVO> stockList;
    @ApiModelProperty(value = "区域库存汇总集合")
    private List<GeneralVO> areaTotalList;
    @ApiModelProperty(value = "库存已利用")
    private BigDecimal num;
    @ApiModelProperty(value = "库存利用率")
    private BigDecimal useRate;
    @ApiModelProperty(value = "库存总量")
    private BigDecimal totalNum;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/platformReport/TransportMeasureVO.java
@@ -26,5 +26,7 @@
    @ApiModelProperty(value = "日期")
    private Date planDate;
    @ApiModelProperty(value = "日期Str")
    private String planDateStr;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/HkSyncService.java
@@ -26,6 +26,7 @@
     * @return
     */
    String syncHkDevices(Device param);
    String syncHkNotices(String username);
    /**
     * åŒæ­¥æµ·åº·åœè½¦åº“
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -1661,25 +1661,28 @@
            pcWorkPlatformDataVO.setLwList(lwList   );
        }else if(Constants.equalsInteger(queryType,Constants.THREE)) {
            MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
            queryWrapper.selectAll(Notices.class);
            if (Objects.isNull(loginUserInfo.getMemberId())) {
                queryWrapper.eq("1", "2");
                pcWorkPlatformDataVO.setNoticesList(new ArrayList<>());
                pcWorkPlatformDataVO.setNoticesNum(0);
//                queryWrapper.eq("1", "2");
            } else {
                MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
                queryWrapper.selectAll(Notices.class);
                queryWrapper.eq(Notices::getStatus, Constants.ZERO);
                queryWrapper.eq(Notices::getSendacopy, Constants.ZERO);
                queryWrapper.eq(Notices::getParam2, Constants.ZERO);
                queryWrapper.eq(Notices::getUserId, loginUserInfo.getMemberId());
            }
            queryWrapper.orderByDesc(Notices::getCreateDate);
            List<Notices> noticesList = noticesJoinMapper.selectList(queryWrapper);
            pcWorkPlatformDataVO.setNoticesList(noticesList);
            pcWorkPlatformDataVO.setNoticesNum(noticesList.size());
            if(noticesList.size() > 5 ){
                pcWorkPlatformDataVO.setNoticesList(noticesList.subList(0,5));
            }else{
                queryWrapper.orderByDesc(Notices::getCreateDate);
                List<Notices> noticesList = noticesJoinMapper.selectList(queryWrapper);
                pcWorkPlatformDataVO.setNoticesList(noticesList);
                pcWorkPlatformDataVO.setNoticesNum(noticesList.size());
                if(noticesList.size() > 5 ){
                    pcWorkPlatformDataVO.setNoticesList(noticesList.subList(0,5));
                }else{
                    pcWorkPlatformDataVO.setNoticesList(noticesList);
                }
            }
        }else{
            String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_WARNING).getCode();
            MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncBaseServiceImpl.java
@@ -67,6 +67,11 @@
        return null;
    }
    @Override
    public    String syncHkNotices(String username){
        return null;
    }
    @Override
    public String syncHkLed(Device param){
        return null;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java
@@ -48,10 +48,10 @@
            List<Device> deleteList = new ArrayList<>();
            List<Device> addList = new ArrayList<>();
            List<Device> editList = new ArrayList<>();
            List<DoorsInfoResponse> allHkList = new ArrayList<>();
            Date date = new Date();
            //查询全部门禁设备数据
            List<Device> allList = deviceMapper.selectList(null);
            List<DoorsInfoResponse> allHkList = new ArrayList<>();
            boolean hasNext = true;
            int curTotal = 0;
            int curPage = 1;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncNoticeServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,163 @@
package com.doumee.service.business.impl.hksync;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.*;
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DESUtil;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.ImageBase64Util;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.DeviceRoleMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.RetentionMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.DeviceRole;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.Retention;
import com.doumee.dao.business.model.Visits;
import com.doumee.dao.system.SystemUserMapper;
import com.doumee.dao.system.join.NoticesJoinMapper;
import com.doumee.dao.system.model.Notices;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.system.NoticesService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
 * æµ·åº·è®¿å®¢ä¸šåŠ¡Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2023/11/30 15:33
 */
@Service
@Slf4j
public class HkSyncNoticeServiceImpl extends HkSyncBaseServiceImpl {
    @Autowired
    private NoticesJoinMapper noticesJoinMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Override
    public String syncHkNotices(String username){
        if(Constants.DEALING_HK_NOTICE_LIST){
            return   null;
        }
        Constants.DEALING_HK_NOTICE_LIST =true;
        try {
            Date date = new Date();
            List<GetTodoListResponse> allHkList = new ArrayList<>();
            boolean hasNext = true;
            int curTotal = 0;
            int curPage = 1;
            while (hasNext){
                //分页遍历循环查询所有门禁设备数据
                GetTodoListRequest param = new GetTodoListRequest();
                param.setComId("dfe");
                param.setUserId(username);
                param.setStatus(1);//只查待处理的数据
                param.setPageNo(curPage);
                param.setLocaleType("zh_CN");
                param.setPageSize(100);
                BaseResponse<BaseListPageResponse<GetTodoListResponse>>   response = HKService.getTodoListPage(param);
                if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
                }
                BaseListPageResponse<GetTodoListResponse> r = response.getData();
                curTotal += 100;
                if(curTotal >= r.getTotal()){
                    hasNext = false;
                }
                if(r.getList() == null || r.getList().size()==0){
                    hasNext =false;
                }else{
                    allHkList.addAll(r.getList());
                }
                curPage++;
            }
             if(allHkList!=null && allHkList.size()>0){
                List<Notices> list = new ArrayList<>();
                List<String> users = new ArrayList<>();
                for(GetTodoListResponse data :allHkList){
                    users.add(data.getUserId());
                }
                List<Integer> userIds = new ArrayList<>();
                List<Member > userList = memberMapper.selectList(new QueryWrapper<Member>().lambda()
                        .in(Member::getPhone,users)
                        .eq(Member::getIsdeleted,Constants.ZERO));
                for(GetTodoListResponse data :allHkList){
                   Member u = getFromUserList(data.getUserId(),userList);
                   if(u==null){
                       continue;
                   }
                    userIds.add(u.getId());
                    JSONObject param = new JSONObject();
                    param.put("componentId","dfe");
                    param.put("msgType","tlnc");
                    param.put("componentMenuId", data.getMenuCode());
                    JSONObject c = new JSONObject();
                    c.put("method","dealTlncMsg");
                    c.put("argument",JSONObject.toJSONString(data));
                    param.put("callback",c);
                    Notices notices = new Notices();
                    notices.setCreateDate(DateUtil.getISO8601DateByStr(data.getMsgCreateTimeIso()));
                    notices.setUserId(u.getId());
                    notices.setStatus(Constants.ZERO);
                    notices.setSendacopy(Constants.ZERO);
                    //业务状态信息 0 =待处理;1=已同意/已处理;2=已拒绝/已退回;3=已转交;4=已撤销
                    notices.setParam1(JSONObject.toJSONString(data));
                    notices.setParam2(Constants.ZERO+"");
                    notices.setTitle(data.getMsgTitle());
                    if(notices.getCreateDate() == null){
                        notices.setCreateDate(date);
                    }
                    notices.setIsdeleted(Constants.ZERO);
                    notices.setParam4(data.getMsgCreateTimeIso());
                    notices.setParam3(data.getMsgCreateTime());
                    notices.setParam5(JSONObject.toJSONString(param));
                    notices.setType(Constants.noticesObjectType.hknotice);
                    list.add(notices);
                }
                if(list.size()>0){
                    //清空海康全部的代办数据
                    noticesJoinMapper.delete(new UpdateWrapper<Notices>().lambda()
                            .eq(Notices::getType, Constants.noticesObjectType.hknotice)
                            .in(Notices::getUserId, userIds));
                    noticesJoinMapper.insert(list);//批量插入记录
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            Constants.DEALING_HK_NOTICE_LIST =false;
        }
        return  null;
    }
    private Member getFromUserList(String userId, List<Member> userList) {
        if(userList!=null ){
            for(Member u :userList){
                if(StringUtils.equals(u.getPhone(),userId)){
                    return  u;
                }
            }
        }
        return null;
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -20,6 +20,9 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wms.model.response.WmsBaseResponse;
import com.doumee.core.wms.model.response.WmsInventoryDataResponse;
import com.doumee.core.wms.model.response.WmsInventoryJsonResponse;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
@@ -30,6 +33,7 @@
import com.doumee.service.business.impl.PlatformJobServiceImpl;
import com.doumee.service.business.impl.VisitsServiceImpl;
import com.doumee.service.business.third.BoardService;
import com.doumee.service.business.third.WmsService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
@@ -55,6 +59,8 @@
    @Autowired
    private PlatformLogMapper platformLogMapper;
    @Autowired
    private WmsService wmsService;
    @Autowired
    private HiddenDangerMapper hiddenDangerMapper;
    @Autowired
    private PlatformWaterGasMapper platformWaterGasMapper;
@@ -76,6 +82,44 @@
    private RetentionMapper retentionMapper;
    @Autowired
    private PlatformGroupMapper platformGroupMapper;
    /**
     * èŽ·å–åŒºåŸŸæ ‘å½¢ç»“æž„æ•°æ®
     * @return
     */
    @Override
    public BoardStockListVO stockList( ){
        BoardStockListVO data = new BoardStockListVO();
        double toatalNum = 1d;
        BigDecimal num = new BigDecimal(0);
        List<GeneralVO> list = new ArrayList<>();
        try {
            toatalNum =Double.parseDouble(systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_TOTAL_STOCK_NUM).getCode()) ;
        }catch (Exception e){
        }
        WmsBaseResponse<WmsInventoryDataResponse> response =  wmsService.getInventoryList();
        if(response!=null && response.getData()!=null && response.getData().size()>=0){
            List<WmsInventoryJsonResponse> t= response.getData().get(0).getJson();
            if(t!=null &&t.size()>0){
                for(WmsInventoryJsonResponse j :t){
                    num = num.add (Constants.formatBigdecimal( j.getQty()));
                    GeneralVO d = new GeneralVO();
                    d.setNum(Constants.formatBigdecimal(j.getQty()));
                    d.setName(j.getItem_name());
                    list.add(d);
                }
            }
        }
        data.setStockList(list);
        data.setNum(num);
        if(toatalNum<=0){
            toatalNum =1;
        }
        data.setTotalNum(new BigDecimal(toatalNum));
        data.setUseRate(data.getTotalNum().divide(data.getNum(),2,BigDecimal.ROUND_UP));
        return data;
    }
    /**
     * èŽ·å–åŒºåŸŸæ ‘å½¢ç»“æž„æ•°æ®
     * @return
@@ -551,7 +595,7 @@
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .apply(queryType==0,"to_days(create_date) >= to_days(now()) -7")
                        .apply(queryType==1,"year(create_date) = year(now()) and month(create_date) = month(now())")
@@ -559,9 +603,35 @@
        for (Date date : dayList) {
            TransportMeasureVO data = new TransportMeasureVO();
            data.setPlanDate(date);
            data.setPlanTimes(random.nextInt(200));
            data.setPlanTaskNum(new BigDecimal(random.nextInt(1000)));
            data.setFinishTaskNum(new BigDecimal(data.getPlanTaskNum().intValue()));
            data.setPlanTimes(0);
            data.setPlanTaskNum(new BigDecimal(random.nextInt(0)));
            data.setFinishTaskNum(new BigDecimal(0));
            for(PlatformJob job :dataList){
                if(queryType == 2){
                    if(DateUtil.formatDate(date,"yyyy-MM").equals(DateUtil.formatDate(job.getCreateDate(),"yyyy-MM"))){
                        data.setPlanTimes( data.getPlanTimes() +1);
                        data.setPlanTaskNum( data.getPlanTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){
                            //完成数
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        }
                    }
                }else{
                    if(DateUtil.formatDate(date,"yyyy-MM-dd").equals(DateUtil.formatDate(job.getCreateDate(),"yyyy-MM-dd"))){
                        data.setPlanTimes( data.getPlanTimes() +1);
                        data.setPlanTaskNum( data.getPlanTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){
                            //完成数
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        }
                    }
                }
            }
            list.add(data);
        }
        return list;
@@ -704,7 +774,7 @@
                new MPJLambdaWrapper<PlatformJob>()
                .selectAs(PlatformJob::getId,PlatformJob::getId)
                .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
//                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
@@ -712,7 +782,7 @@
        List<PlatformJob>  monthLastNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
@@ -722,7 +792,7 @@
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .selectCount(PlatformJob::getPlatformId,PlatformJob::getCountum)
                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
@@ -731,7 +801,7 @@
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
@@ -751,7 +821,7 @@
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .selectAs(PlatformJob::getType,PlatformJob::getType)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),Constants.PlatformJobStatus.CALLED.getKey())
                        .apply(" and to_days(create_date) <to_days(now())"));
@@ -763,7 +833,7 @@
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .selectAs(PlatformJob::getType,PlatformJob::getType)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",PlatformJob::getIoQty)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())
                        .apply("year(create_date) = year("+DateUtil.getPlusTime2(lastYear)+")  and to_days(create_date)<= "+DateUtil.getPlusTime2(lastYear)));
@@ -866,11 +936,11 @@
                    ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()))){
                continue;
            }
            if(Constants.formatBigdecimal(job.getIoQty()).compareTo(new BigDecimal(0)) >0){
                r.add( job.getIoQty());
            }else{
//            if(Constants.formatBigdecimal(job.getIoQty()).compareTo(new BigDecimal(0)) >0){
//                r.add( job.getIoQty());
//            }else{
                r.add(Constants.formatBigdecimal(job.getTotalNum()));
            }
//            }
        }
        return Constants.formatBigdecimal0Float(r);
    }
@@ -1442,7 +1512,7 @@
        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
        List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                .selectAll( PlatformJob.class)
                .select("(select sum(ifnull(a.io_qty,0)) from platform_wms_detail a where a.isdeleted=0 and a.job_id =t.id )", PlatformJob::getIoQty)
//                .select("(select sum(ifnull(a.io_qty,0)) from platform_wms_detail a where a.isdeleted=0 and a.job_id =t.id )", create_date)
                .apply("to_days(t.create_date) = to_days(now())")
                .eq(Platform::getIsdeleted, Constants.ZERO)
                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/WmsServiceImpl.java
@@ -28,6 +28,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@@ -261,6 +262,7 @@
                    job.setPlateNumber(param.getPlateNumber());
                    job.setType(Constants.ZERO);
                    job.setIoCreatedate(param.getCreateDate());
                    job.setOrigin(Constants.ONE);
                    job.setJobId(model.getId());
                    job.setDriverPhone(param.getDriverPhone());
                    platformWmsJobMapper.insert(job);
@@ -416,6 +418,7 @@
                return returnFailReuslt("请求参数不正确,参数不能为空");
            }
            List<PlatformJob> jobList = new ArrayList<>();
            List<Integer> jobIdList = new ArrayList<>();
            List<PlatformWmsDetail> details = new ArrayList<>();
            List<String> iocodeList = new ArrayList<>();
            for(WmsOutboundNoticeRequest param : list.getData()){
@@ -450,9 +453,10 @@
                    job.setContractNum(param.getContractNum());
                    job.setDriverPhone(param.getDriverPhone());
                    job.setDriverName(param.getDriverName());
                    job.setOrigin(Constants.ONE);
                    platformWmsJobMapper.insert(job);
                    jobList.add(model);
                }
                jobIdList.add(job.getId());
                if(param.getDetails()!=null && param.getDetails().size()>0){
                    for(WmsOutboundDetailRequest d :param.getDetails()){
                        PlatformWmsDetail entity = new PlatformWmsDetail();
@@ -479,12 +483,14 @@
                                .in(PlatformWmsDetail::getIocode,iocodeList)
                        );
                    }
                    jobIdList.add(job.getId());
                }
            }
            if(details.size()>0){
                platformWmsDetailMapper.insert(details);
            }
            if(jobList.size()>0){
                list.setJobIdList(jobIdList);
                startEndNoticeToDriver(jobList);
            }
        }catch (Exception e){
@@ -616,6 +622,33 @@
        return returnSuccessReuslt(null);
    }
    /**
     * å¤„理作业行数据的运输总量信息
     * @param jobList å‚æ•°
     * @return
     */
    @Override
    public void computjobTotalNum(List<Integer> jobList) {
        if(jobList==null || jobList.size()==0){
            return;
        }
        for(Integer jobId : jobList){
            BigDecimal num = new BigDecimal(0);
            List<PlatformWmsDetail> details =   platformWmsDetailMapper.selectList( new QueryWrapper<PlatformWmsDetail>().lambda()
                    .eq(PlatformWmsDetail::getJobId,jobId)
                    .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO));
            if(details!=null && details.size()>0){
                for(PlatformWmsDetail d :details){
                   num.add(Constants.formatBigdecimal(d.getIoQty()));
                }
                platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                        .set(PlatformJob::getTotalNum,num)
                        .eq(PlatformJob::getOrigin, Constants.ZERO)
                        .eq(PlatformJob::getId, jobId));
            }
        }
    }
    /**
     * ä½œä¸šå®Œæˆé€šçŸ¥ä»»åŠ¡ä¸šåŠ¡å¤„ç†
     * @param list å‚æ•°
     * @return
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/BoardService.java
@@ -90,4 +90,6 @@
    CarsJobAndContractVO getCarsJobDetails(CarsJobAndContractDTO param);
    List<TransportMeasureVO> transportMeasure(Integer queryType);
    BoardStockListVO stockList();
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/third/WmsService.java
@@ -5,6 +5,7 @@
import com.doumee.core.wms.model.request.WmsInboundNoticeRequest;
import com.doumee.core.wms.model.request.WmsOutboundNoticeRequest;
import com.doumee.core.wms.model.response.WmsBaseResponse;
import com.doumee.core.wms.model.response.WmsInventoryDataResponse;
import com.doumee.dao.business.model.PlatformJob;
import java.util.List;
@@ -21,7 +22,7 @@
     * @return WmsBaseResponse
     */
    WmsBaseResponse orderPlatformBind(PlatformJob job);
    WmsBaseResponse getInventoryList();
    WmsBaseResponse<WmsInventoryDataResponse> getInventoryList();
    void  saveInterfaceLog(String url,String name,String  param,Integer success,String respone,int type);
    /**
     * å…¥åº“单批量通知
@@ -57,4 +58,5 @@
    WmsBaseResponse doneTask(WmsBaseRequest<WmsActionNoticeRequest> list);
    void computjobTotalNum(List<Integer> jobList);
}