Merge remote-tracking branch 'origin/maanshan' into maanshan
| | |
| | | // Date date1 = getISO8601DateByStr("2024-06-14T08:46:36.014+08:00"); |
| | | // System.out.println(DateUtil.afterMinutesDate(-5)); |
| | | |
| | | System.out.println(DateUtil.getWeekZhouOfDate(getDateFromString2("2025-11-06 00:00:00"))); |
| | | System.out.println(DateUtil.getISO8601DateByStr("2025-11-12T09:13:00.000Z")); |
| | | |
| | | // System.out.println(getPlusTime2(DateUtil.addMonthToDate(new Date(),-1))); |
| | | // System.out.println(DateUtil.getBeforMonthStr(new Date(),12)); |
| | |
| | | return getDayEndTime(cal.getTime()); |
| | | } |
| | | |
| | | public static String getDateStrOfUTCStr(String utcDate){ |
| | | ZonedDateTime utcTime = ZonedDateTime.parse(utcDate, |
| | | DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX").withZone(ZoneId.of("UTC"))); |
| | | // 转换为北京时间 |
| | | ZonedDateTime beijingTime = utcTime.withZoneSameInstant(ZoneId.of("Asia/Shanghai")); |
| | | return beijingTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); |
| | | } |
| | | // 获取当天的开始时间 |
| | | public static java.util.Date getDayBegin() { |
| | | Calendar cal = new GregorianCalendar(); |
| | |
| | | @PostMapping("/updateDingTalkTokenOrigin") |
| | | public ApiResponse updateDingTalkTokenOrigin() throws Exception { |
| | | dingTalk.updTokenInfo(); |
| | | return ApiResponse.success("开启定时更新微信公众号accesstoken成功"); |
| | | return ApiResponse.success("定时更新钉钉业务token成功"); |
| | | } |
| | | |
| | | |
| | |
| | | import com.doumee.core.utils.FtpUtil; |
| | | import com.doumee.core.utils.HttpsUtil; |
| | | import com.doumee.core.utils.aliyun.ALiYunUtil; |
| | | import com.doumee.dao.business.model.CarUseBook; |
| | | import com.doumee.dao.business.model.Cars; |
| | | import com.doumee.dao.business.model.JkCabinetLog; |
| | | import com.doumee.dao.web.reqeust.VisitRecordDTO; |
| | | import com.doumee.dao.web.response.VisitRecordVO; |
| | | import com.doumee.service.business.CarUseBookService; |
| | | import com.doumee.service.business.third.model.ApiResponse; |
| | | import com.doumee.service.business.third.model.PageData; |
| | | import com.doumee.service.business.third.model.PageWrap; |
| | |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | @Autowired |
| | | private CarUseBookService carUseBookService; |
| | | |
| | | @LoginNoRequired |
| | | @ApiOperation("简道云推送用车申请") |
| | | @PostMapping("/pushCarApply") |
| | | public void pushCarApply (HttpServletRequest request, HttpServletResponse response) { |
| | | log.error("简道云=========getRequestURI:"+request.getRequestURI()); |
| | | log.error("简道云=========getRequestURL:"+request.getRequestURL()); |
| | | //新建{"data":{"_id":"6912f6d47b4a80933348df31","addr":"豆米科技","appId":"6909d0fbdb93b068192dc4a9","car_category":"专卖管理","car_group":"当涂县局车队","car_no":"皖EU2866","car_statue":"出车","company":{"_id":"6909b792fa9388e2242f497d","dept_no":483166139,"name":"开发部","type":0},"createTime":"2025-11-11T08:41:56.152Z","create_date":"2025-11-10T16:00:00.000Z","creator":{"_id":"6909b792324dc197821895e7","name":"任康","status":1,"type":0,"username":"1568490244651036"},"deleteTime":null,"deleter":null,"driver":{"_id":"6909b792324dc197821895e5","name":"郭际文武","status":1,"type":0,"username":"0115666322451143077815"},"driver_status":"空闲","end_date":"2025-11-11T09:41:00.000Z","entryId":"690ab9085ebd91d2308e595b","flowState":0,"formName":"派车申请","holiday":"否","key_back_date":null,"key_info":"待领取","key_use_date":null,"no":"20251111100004","reason":"测试申请","scope":"市内","start_date":"2025-11-11T08:41:00.000Z","updateTime":"2025-11-11T08:41:56.155Z","updater":{"_id":"6909b792324dc197821895e7","name":"任康","status":1,"type":0,"username":"1568490244651036"},"users":[{"_id":"6909b792324dc197821895e5","name":"郭际文武","status":1,"type":0,"username":"0115666322451143077815"}]},"op":"data_create","opTime":1762850516152} |
| | | //修改{"data":{"_id":"6912f6d47b4a80933348df31","addr":"豆米科技","appId":"6909d0fbdb93b068192dc4a9","car_category":"专卖管理","car_group":"当涂县局车队","car_no":"皖EU2866","car_statue":"出车","company":{"_id":"6909b792fa9388e2242f497d","dept_no":483166139,"name":"开发部","type":0},"createTime":"2025-11-11T08:41:56.152Z","create_date":"2025-11-10T16:00:00.000Z","creator":{"_id":"6909b792324dc197821895e7","name":"任康","status":1,"type":0,"username":"1568490244651036"},"deleteTime":null,"deleter":null,"driver":{"_id":"6909b792324dc197821895e5","name":"郭际文武","status":1,"type":0,"username":"0115666322451143077815"},"driver_status":"空闲","end_date":"2025-11-11T09:41:00.000Z","entryId":"690ab9085ebd91d2308e595b","flowState":0,"formName":"派车申请","holiday":"否","key_back_date":null,"key_info":"待领取","key_use_date":null,"no":"20251111100004","reason":"测试申请","scope":"市内","start_date":"2025-11-11T08:41:00.000Z","updateTime":"2025-11-11T08:43:06.436Z","updater":{"_id":"6909b792324dc197821895e7","name":"任康","status":1,"type":0,"username":"1568490244651036"},"users":[{"_id":"6909b792324dc197821895e5","name":"郭际文武","status":1,"type":0,"username":"0115666322451143077815"}]},"op":"data_update","opTime":1762850586436} |
| | | //修改{"data":{"_id":"6912f6d47b4a80933348df31","addr":"豆米科技","appId":"6909d0fbdb93b068192dc4a9","car_category":"专卖管理","car_group":"当涂县局车队","car_no":"皖EU2866","car_statue":"出车","company":{"_id":"6909b792fa9388e2242f497d","dept_no":483166139,"name":"开发部","type":0},"createTime":"2025-11-11T08:41:56.152Z","create_date":"2025-11-10T16:00:00.000Z","creator":{"_id":"6909b792324dc197821895e7","name":"任康","status":1,"type":0,"username":"1568490244651036"},"deleteTime":null,"deleter":null,"driver":{"_id":"6909b792324dc197821895e5","name":"郭际文武","status":1,"type":0,"username":"0115666322451143077815"},"driver_status":"空闲","end_date":"2025-11-11T09:41:00.000Z","entryId":"690ab9085ebd91d2308e595b","flowState":1,"formName":"派车申请","holiday":"否","key_back_date":null,"key_info":"待领取","key_use_date":null,"no":"20251111100004","reason":"测试申请","scope":"市内","start_date":"2025-11-11T08:41:00.000Z","updateTime":"2025-11-11T08:45:01.231Z","updater":{"_id":"6909b792324dc197821895e4","name":"江萍","status":1,"type":0,"username":"0458340612772735"},"users":[{"_id":"6909b792324dc197821895e5","name":"郭际文武","status":1,"type":0,"username":"0115666322451143077815"}]},"op":"data_update","opTime":1762850701231} |
| | | try { |
| | | String jdy = request.getHeader("x-jdy-signature"); |
| | | StringBuilder json = new StringBuilder(); |
| | |
| | | Map<String, String> parameterMap = parseParameter(request.getQueryString()); |
| | | String nonce = parameterMap.get("nonce"); |
| | | String timestamp = parameterMap.get("timestamp"); |
| | | String signature = getSignature(nonce, payload, SECRET, timestamp); |
| | | String signature = getSignature(nonce, payload, LOCAl_SECRET, timestamp); |
| | | log.error("简道云=========nonce:"+nonce); |
| | | log.error("简道云=========timestamp:"+timestamp); |
| | | log.error("简道云=========payload:"+payload); |
| | |
| | | response.getWriter().close();; |
| | | return ; |
| | | } |
| | | |
| | | carUseBookService.jdyPushCarUseBook(payload); |
| | | |
| | | response.setStatus(200); |
| | | response.getWriter().write("success"); |
| | | response.getWriter().close(); |
| | |
| | | } |
| | | |
| | | public static final String SECRET ="yKSKuO0LoFf06jWGrwwuGudK"; |
| | | public static final String LOCAl_SECRET ="tSoMiqC3GY6tItXY48tSTwY6"; |
| | | |
| | | private static String getSignature(String nonce, String payload, String secret, String timestamp) { |
| | | return DigestUtils.sha1Hex(nonce + ":" + payload + ":" + secret + ":" + timestamp); |
| | | } |
| | |
| | | object.put("create_date","20251104160000"); |
| | | object.put("start_date",System.currentTimeMillis() ); |
| | | object.put("end_date", System.currentTimeMillis() + 24*3600*1000); |
| | | object.put("id","10000020251105"); |
| | | object.put("type",1); |
| | | object.put("id","10000020251105");// |
| | | object.put("type",1);//0=领用;1=归还 |
| | | String result = HttpsUtil.postJson(url,JSONObject.toJSONString(object)); |
| | | System.out.println(result); |
| | | } |
| | |
| | | private String cancelInfo; |
| | | |
| | | @ApiModelProperty(value = "目的地类型 0市内用车 1市外用车", example = "1") |
| | | //@ExcelColumn(name="目的地类型 0市内用车 1市外用车") |
| | | @ExcelColumn(name="目的地类型",index =8,width = 5,valueMapping = "0=市内用车;1=市外用车") |
| | | //@ExcelColumn(name="目的地类型 0市内用车 1市外用车") |
| | | private Integer type; |
| | | |
| | | |
| | | @ApiModelProperty(value = "目的地类型描述", example = "1") |
| | | //@ExcelColumn(name="目的地类型 0市内用车 1市外用车") |
| | | @ExcelColumn(name="目的地类型",index =8,width = 5) |
| | | private String typeInfo; |
| | | |
| | | @ApiModelProperty(value = "乘车人编码集合,多个英文逗号隔开", example = "1") |
| | | //@ExcelColumn(name="乘车人编码集合,多个英文逗号隔开") |
| | |
| | | @ApiModelProperty(value = "钉钉待办任务归属人主键") |
| | | private String ddBelongToUnionId; |
| | | |
| | | @ApiModelProperty(value = "简道云业务主键") |
| | | private String jdyId; |
| | | |
| | | @ApiModelProperty(value = "司机姓名", example = "1") |
| | | @TableField(exist = false) |
| | | private String driverName; |
| | |
| | | List<DateIntervalVO> checkDateUse(Integer cars, String dateDay); |
| | | |
| | | void revoke(Integer id, String info, LoginUserInfo loginUserInfo); |
| | | |
| | | void jdyPushCarUseBook(String dataInfo); |
| | | } |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | |
| | | |
| | | import java.time.LocalDateTime; |
| | | import java.time.ZoneId; |
| | | import java.time.ZonedDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.*; |
| | | import java.util.Date; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 车辆_用车申请信息表Service实现 |
| | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void jdyPushCarUseBook(String dataInfo){ |
| | | JSONObject dataInfoJSON = JSONObject.parseObject(dataInfo); |
| | | if(dataInfoJSON.isEmpty()){ |
| | | return; |
| | | } |
| | | String op = dataInfoJSON.getString("op"); |
| | | //删除:data_remove 新增:data_add 修改:data_update |
| | | if(StringUtils.isEmpty(op)){ |
| | | return; |
| | | } |
| | | |
| | | JSONObject dataJSON = dataInfoJSON.getJSONObject("data"); |
| | | String no = dataJSON.getString("no"); |
| | | if(StringUtils.isEmpty(no)){ |
| | | return; |
| | | } |
| | | if(op.equals("data_remove")){ |
| | | carUseBookJoinMapper.update(new UpdateWrapper<CarUseBook>().lambda() |
| | | .set(CarUseBook::getEditDate,DateUtil.getCurrDateTime()) |
| | | .set(CarUseBook::getIsdeleted,Constants.ONE).eq(CarUseBook::getJdyId,no)); |
| | | return; |
| | | } |
| | | Integer status = dataJSON.getInteger("flowState"); |
| | | if(Objects.isNull(status)||!(Constants.equalsInteger(status,Constants.ONE)||Constants.equalsInteger(status,Constants.TWO))){ |
| | | return; |
| | | } |
| | | |
| | | String carCode = dataJSON.getString("car_no"); |
| | | String startDate = dataJSON.getString("start_date"); |
| | | String endDate = dataJSON.getString("end_date"); |
| | | String typeInfo = dataJSON.getString("scope"); |
| | | String reason = dataJSON.getString("reason"); |
| | | String addr = dataJSON.getString("addr"); |
| | | |
| | | CarUseBook carUseBook = carUseBookJoinMapper.selectOne(new QueryWrapper<CarUseBook>() |
| | | .lambda().eq(CarUseBook::getJdyId,no).last("limit 1")); |
| | | if(Objects.isNull(carUseBook)){ |
| | | carUseBook = new CarUseBook(); |
| | | carUseBook.setCreateDate(new Date()); |
| | | carUseBook.setEditDate(new Date()); |
| | | carUseBook.setJdyId(no); |
| | | }else{ |
| | | carUseBook.setEditDate(new Date()); |
| | | } |
| | | carUseBook.setIsdeleted(Constants.equalsInteger(status,Constants.ONE)?Constants.ZERO:Constants.ONE); |
| | | carUseBook.setCarCode(StringUtils.isBlank(carCode)?null:carCode); |
| | | if(StringUtils.isNotBlank(carCode)){ |
| | | Cars cars = carsMapper.selectOne(new QueryWrapper<Cars>().lambda() |
| | | .eq(Cars::getIsdeleted,Constants.ZERO) |
| | | .eq(Cars::getCode,carCode).last("limit 1")); |
| | | carUseBook.setCarId(Objects.nonNull(cars)?cars.getId():null); |
| | | } |
| | | carUseBook.setStartTime(StringUtils.isBlank(startDate)?null:DateUtil.getISO8601DateByStr(startDate)); |
| | | carUseBook.setEndTime(StringUtils.isBlank(endDate)?null:DateUtil.getISO8601DateByStr(endDate)); |
| | | carUseBook.setTypeInfo(StringUtils.isBlank(typeInfo)?null:typeInfo); |
| | | carUseBook.setContent(StringUtils.isBlank(typeInfo)?null:reason); |
| | | carUseBook.setAddr(StringUtils.isBlank(typeInfo)?null:addr); |
| | | carUseBook.setStatus(Constants.TWO); |
| | | JSONObject driverJSON = dataJSON.getJSONObject("driver"); |
| | | if(!driverJSON.isEmpty()){ |
| | | String driverName = driverJSON.getString("name"); |
| | | String driverUserName = driverJSON.getString("username"); |
| | | if(StringUtils.isNotBlank(driverUserName)){ |
| | | Member driverMember = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getDdId,driverUserName).last("limit 1 ")); |
| | | if(Objects.nonNull(driverMember)){ |
| | | carUseBook.setDriverId(driverMember.getId()); |
| | | } |
| | | } |
| | | } |
| | | JSONObject createJSON = dataJSON.getJSONObject("creator"); |
| | | if(!driverJSON.isEmpty()){ |
| | | String createName = createJSON.getString("name"); |
| | | String createUserName = createJSON.getString("username"); |
| | | if(StringUtils.isNotBlank(createUserName)){ |
| | | Member createMember = memberMapper.selectOne(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).eq(Member::getDdId,createUserName).last("limit 1 ")); |
| | | if(Objects.nonNull(createMember)){ |
| | | carUseBook.setMemberId(createMember.getId()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | JSONArray usersArray = dataJSON.getJSONArray("users"); |
| | | if(!usersArray.isEmpty()){ |
| | | String names = ""; |
| | | List<String> userDDIdList = new ArrayList<>(); |
| | | for (int i = 0; i < usersArray.size(); i++) { |
| | | JSONObject userJSON = usersArray.getJSONObject(i); |
| | | String name = createJSON.getString("name"); |
| | | String userName = createJSON.getString("username"); |
| | | userDDIdList.add(userName); |
| | | names = names + |
| | | (StringUtils.isNotBlank(names)?",":"") |
| | | + name; |
| | | } |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(userDDIdList)){ |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).in(Member::getDdId,userDDIdList)); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){ |
| | | names = String.join(",",memberList.stream().map(i->i.getName()).collect(Collectors.toList())); |
| | | carUseBook.setMemberIds(String.join(",",memberList.stream().map(i->i.getId().toString()).collect(Collectors.toList()))); |
| | | } |
| | | } |
| | | carUseBook.setMemberNames(names); |
| | | } |
| | | carUseBookMapper.insertOrUpdate(carUseBook); |
| | | } |
| | | |
| | | |
| | | } |