健康一体机代码上传

This commit is contained in:
liux 2026-01-04 15:31:30 +08:00
parent f4b9e3223b
commit 4f30beeddf
12 changed files with 96 additions and 162 deletions

View File

@ -66,7 +66,7 @@ public interface CookMaterialTypeMapper {
* @param materialTypeId 原料类别ID用于编辑时排除自身
* @return 原料类别
*/
public CookMaterialType selectCookMaterialTypeByMaterialTypeName(@Param("materialTypeName") String materialTypeName,@Param("materialTypeId") Long materialTypeId);
public CookMaterialType selectCookMaterialTypeByMaterialTypeName(@Param("materialTypeName") String materialTypeName,@Param("materialTypeId") Long materialTypeId,@Param("goodsType") Long goodsType);
public CookMaterialType selectCookMaterialTypeByMaterialTypeNameAndParentId(@Param("materialTypeName") String materialTypeName,@Param("parentId") Long parentId);
/**
* 根据原料类别ID查询子类别数量

View File

@ -60,7 +60,7 @@ public class CookMaterialTypeServiceImpl implements ICookMaterialTypeService {
throw new ServiceException("请输入原料类别名称");
}
//判断是否有同名的原料类别
CookMaterialType checkMaterialType = cookMaterialTypeMapper.selectCookMaterialTypeByMaterialTypeName(cookMaterialType.getMaterialTypeName(), null);
CookMaterialType checkMaterialType = cookMaterialTypeMapper.selectCookMaterialTypeByMaterialTypeName(cookMaterialType.getMaterialTypeName(), cookMaterialType.getMaterialTypeId(),cookMaterialType.getGoodsType());
if (checkMaterialType != null) {
throw new ServiceException("已存在同名的原料类别");
}
@ -95,7 +95,7 @@ public class CookMaterialTypeServiceImpl implements ICookMaterialTypeService {
throw new ServiceException("请输入原料类别名称");
}
//判断是否有同名的原料类别
CookMaterialType checkMaterialType = cookMaterialTypeMapper.selectCookMaterialTypeByMaterialTypeName(cookMaterialType.getMaterialTypeName(), cookMaterialType.getMaterialTypeId());
CookMaterialType checkMaterialType = cookMaterialTypeMapper.selectCookMaterialTypeByMaterialTypeName(cookMaterialType.getMaterialTypeName(), cookMaterialType.getMaterialTypeId(),cookMaterialType.getGoodsType());
if (checkMaterialType != null) {
throw new ServiceException("已存在同名的原料类别");
}

View File

@ -461,30 +461,30 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService {
CookMaterial cookMaterial = null;
CookMaterialType cookMaterialType = cookMaterialTypeMapper.selectCookMaterialTypeByMaterialTypeNameAndParentId(materialTypeName,parentId);
if(cookMaterialType ==null){
sb.append(" 类别缺失,请先添加!");
sb.append(" 类别缺失"+materialTypeName+",请先添加!");
tf = false;
}else {
cookMaterial = cookMaterialMapper.selectCookMaterialByNameAndTypeIdAndType(materialName,cookMaterialType.getMaterialTypeId(),type);
}
if(cookMaterial == null){
sb.append(" 原料或商品缺失,请添加");
sb.append(" 原料或商品缺失"+materialName+",请添加");
tf = false;
}
ImsUnit imsUnit = imsUnitMapper.selectImsUnitByUnitName(unitName);
if(imsUnit ==null){
sb.append(" 单位缺失,请添加");
sb.append(" 单位缺失"+materialName+",请添加");
tf = false;
}
if(orderNum ==null){
sb.append(" 数量缺失,请添加");
sb.append(" 数量不能为空,请添加");
tf = false;
}
if(singlePrice ==null){
sb.append(" 单价缺失,请添加");
sb.append(" 单价不能为空,请添加");
tf = false;
}
if(totalPrice ==null){
sb.append(" 总价缺失,请添加");
sb.append(" 总价不能为空,请添加");
tf = false;
}
if(BigDecimal.valueOf(totalPrice).compareTo(orderNum.multiply(BigDecimal.valueOf(singlePrice))) !=0){
@ -505,7 +505,7 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService {
}else{
OrderImportCheckErrorVO orderImportCheckErrorVO = new OrderImportCheckErrorVO();
orderImportCheckErrorVO.setMaterialName(materialName);
orderImportCheckErrorVO.setErrorMsg(sb.toString());
orderImportCheckErrorVO.setErrorMessage(sb.toString());
errorList.add(orderImportCheckErrorVO);
}
}

View File

@ -1,7 +1,11 @@
package com.bonus.canteen.core.ims.vo;
import com.bonus.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author xliu
* @date 2025/12/17 16:09
@ -10,6 +14,25 @@ import lombok.Data;
public class OrderImportCheckErrorVO {
private String materialName;
private String errorMsg;
private String errorMessage;
@Excel(name = "原料id")
@ApiModelProperty(value = "原料id")
private Long materialId;
@Excel(name = "计量单位id")
@ApiModelProperty(value = "计量单位id")
private Long unitId;
@Excel(name = "订货数量")
@ApiModelProperty(value = "订货数量")
private BigDecimal orderNum;
/** 单价 */
@Excel(name = "单价")
@ApiModelProperty(value = "单价")
private Long singlePrice;
/** 总金额 */
@Excel(name = "总金额")
@ApiModelProperty(value = "总金额")
private Long totalPrice;
}

View File

@ -198,6 +198,8 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
//获取门禁设备
if(results !=null && results.length>0){
initServer.Login(initServer.devIp,initServer.devUser,initServer.devPass,(short) 8000,1); //登陆
initServer.Login(initServer.devIp3,initServer.devUser,initServer.devPass,(short) 8000,3); //登陆
List<KitchenDeviceListVO> deviceListVOList = kitchenDeviceInfoMapper.selectKitchenDeviceInfoByDeviceIds(results);
if(faceUrl !=null && !"".equals(faceUrl) ){
if(deviceListVOList !=null && deviceListVOList.size()>0){
@ -218,6 +220,8 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
}
}
}
initServer.logout(initServer.lUserID);
initServer.logout(initServer.lUserID3);
}else{
System.err.println("没有上传人脸信息");
}
@ -245,10 +249,13 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
@Override
@Transactional(rollbackFor = Exception.class)
public int updateKitchenStaffInfo(KitchenStaffInfo kitchenStaffInfo) {
initServer.Login(initServer.devIp,initServer.devUser,initServer.devPass,(short) 8000,1); //登陆
initServer.Login(initServer.devIp3,initServer.devUser,initServer.devPass,(short) 8000,3); //登陆
try {
if(Objects.isNull(kitchenStaffInfo.getStaffId())) {
throw new ServiceException("员工ID不能为空");
}
kitchenStaffInfo.setMobile(StringUtils.defaultIfBlank(kitchenStaffInfo.getMobile(), null));
KitchenStaffInfo staffInfo = kitchenStaffInfoMapper.selectKitchenStaffInfoByStaffId(kitchenStaffInfo.getStaffId());
if(Objects.nonNull(kitchenStaffInfo.getMobile())) {
@ -285,153 +292,29 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
.toArray(Long[]::new);
//判断人脸照片是否改变
boolean tf = newFaceUrl.equals(oldFaceUrl);
boolean isEqual = Arrays.equals(oldResult, result);
//说明门禁权限发生了改变
if(!isEqual){
System.err.println("门禁权限发生了改变====");
//获取门禁设备
List<KitchenDeviceListVO> deviceListVOList = kitchenDeviceInfoMapper.selectKitchenDeviceInfoByDeviceIds(null);
//老的里面有 新的里面没有 需要删除
Long[] inOldNoNew = difference(oldResult,result);
System.err.println("inOldNoNew="+Arrays.toString(inOldNoNew));
//在新的里面有 老的没有 需要新增
Long[] inNewNoOld = difference(result,oldResult);
System.err.println("inNewNoOld="+Arrays.toString(inNewNoOld));
//删除权限
if(deviceListVOList !=null && deviceListVOList.size()>0 && inOldNoNew !=null && inOldNoNew.length>0){
for(Long ls : inOldNoNew){
KitchenDeviceListVO bb = deviceListVOList.stream()
deleteUserInfo(initServer.lUserID,staffInfo.getStaffNo());
deleteUserInfo(initServer.lUserID3,staffInfo.getStaffNo());
KitchenStaffInfo beans = kitchenStaffInfoMapper.selectKitchenStaffInfoByStaffId(kitchenStaffInfo.getStaffId());
List<KitchenDeviceListVO> deviceListVOList = kitchenDeviceInfoMapper.selectKitchenDeviceInfoByDeviceIds(null);
for(Long ls :result){
KitchenDeviceListVO cc = deviceListVOList.stream()
.filter(autyyity->autyyity.getDeviceId().longValue() == ls)
.findFirst()
.orElse(null);
String ids = bb.getIp();
if("192.168.20.51".equals(ids) || ids ==null){
deleteUserInfo(initServer.lUserID,staffInfo.getStaffNo());
}else{
deleteUserInfo(initServer.lUserID3,staffInfo.getStaffNo());
}
}
}
//新增权限
if(inNewNoOld !=null && inNewNoOld.length>0 && newFaceUrl !=null ){
String url = remoteFileService.getFullFileUrl(
FileCommonUtils.getFullFileUrl(kitchenStaffInfo.getFaceUrl()));
File file = BnsUtils.getFile(url,kitchenStaffInfo.getFaceUrl().substring(kitchenStaffInfo.getFaceUrl().indexOf("/")));
for(Long ls : inNewNoOld){
KitchenDeviceListVO cc = deviceListVOList.stream()
.filter(autyyity->autyyity.getDeviceId().longValue() == ls)
.findFirst()
.orElse(null);
String ids = cc.getIp();
AccessAuthority bb = accessAuthorityList.stream()
String ids = cc.getIp();
AccessAuthority bb = accessAuthorityList.stream()
.filter(autyyity->autyyity.getDeviceId().longValue() ==ls)
.findFirst()
.orElse(null);
if("192.168.20.51".equals(ids) || ids ==null){
SearchFaceInfo searchFaceInfo = searchFaceInfoMessage(initServer.lUserID,kitchenStaffInfo.getStaffNo());
if(searchFaceInfo !=null ){
Integer numOfMatches = searchFaceInfo.getNumOfMatches();
if(numOfMatches>0){
System.out.println(file.getAbsolutePath());
FaceManage.AddFaceByBinaryFile(initServer.lUserID,kitchenStaffInfo.getStaffNo(),file);
}else{
addPrivileges(kitchenStaffInfo,initServer.lUserID,initServer.devIp,bb);
}
}else{
addPrivileges(kitchenStaffInfo,initServer.lUserID,initServer.devIp,bb);
}
}else{
SearchFaceInfo searchFaceInfo = searchFaceInfoMessage(initServer.lUserID3,kitchenStaffInfo.getStaffNo());
AccessAuthority dd = accessAuthorityList.stream()
.filter(autyyity->autyyity.getDeviceId().longValue() ==ls)
.findFirst()
.orElse(null);
if(searchFaceInfo !=null ){
Integer numOfMatches = searchFaceInfo.getNumOfMatches();
if(numOfMatches>0){
System.out.println(file.getAbsolutePath());
FaceManage.AddFaceByBinaryFile(initServer.lUserID3,kitchenStaffInfo.getStaffNo(),file);
}else{
addPrivileges(kitchenStaffInfo,initServer.lUserID3,initServer.devIp3,dd);
}
}else{
addPrivileges(kitchenStaffInfo,initServer.lUserID3,initServer.devIp3,dd);
}
}
}
// if(newFaceUrl !=null && oldFaceUrl !=null && !tf ){
// if(deviceListVOList !=null && deviceListVOList.size()>0){
// for(KitchenDeviceListVO beans :deviceListVOList){
// String ids = beans.getIp();
// AccessAuthority bb = accessAuthorityList.stream()
// .filter(autyyity->autyyity.getDeviceId().longValue() ==beans.getDeviceId().longValue())
// .findFirst()
// .orElse(null);
// String url = remoteFileService.getFullFileUrl(
// FileCommonUtils.getFullFileUrl(kitchenStaffInfo.getFaceUrl()));
// File file = BnsUtils.getFile(url,kitchenStaffInfo.getFaceUrl().substring(kitchenStaffInfo.getFaceUrl().indexOf("/")));
// if("192.168.20.51".equals(ids) || ids ==null){
// SearchFaceInfo searchFaceInfo = searchFaceInfoMessage(initServer.lUserID,kitchenStaffInfo.getStaffNo());
// if(searchFaceInfo !=null ){
// Integer numOfMatches = searchFaceInfo.getNumOfMatches();
// if(numOfMatches>0){
// System.out.println(file.getAbsolutePath());
// FaceManage.AddFaceByBinaryFile(initServer.lUserID,kitchenStaffInfo.getStaffNo(),file);
// }else{
// addPrivileges(kitchenStaffInfo,initServer.lUserID,initServer.devIp,bb);
// }
// }else{
// addPrivileges(kitchenStaffInfo,initServer.lUserID,initServer.devIp,bb);
// }
// }else{
// SearchFaceInfo searchFaceInfo = searchFaceInfoMessage(initServer.lUserID3,kitchenStaffInfo.getStaffNo());
// AccessAuthority cc = accessAuthorityList.stream()
// .filter(autyyity->autyyity.getDeviceId().longValue() ==beans.getDeviceId().longValue())
// .findFirst()
// .orElse(null);
// if(searchFaceInfo !=null ){
// Integer numOfMatches = searchFaceInfo.getNumOfMatches();
// if(numOfMatches>0){
// System.out.println(file.getAbsolutePath());
// FaceManage.AddFaceByBinaryFile(initServer.lUserID3,kitchenStaffInfo.getStaffNo(),file);
// }else{
// addPrivileges(kitchenStaffInfo,initServer.lUserID3,initServer.devIp3,cc);
// }
// }else{
// addPrivileges(kitchenStaffInfo,initServer.lUserID3,initServer.devIp3,cc);
// }
// }
// }
// }
// }else{
// System.err.println("没有修改人脸信息");
// }
if("192.168.20.51".equals(ids) || ids ==null){
addPrivileges(kitchenStaffInfo,initServer.lUserID,initServer.devIp,bb);
}else{
System.err.println("没有选择门禁设备,删除原有的");
if(newFaceUrl !=null && oldFaceUrl !=null && !tf ){
for (Long l:oldResult ) {
KitchenStaffInfo beans = kitchenStaffInfoMapper.selectKitchenStaffInfoByStaffId(l);
SearchFaceInfo searchFaceInfo = searchFaceInfoMessage(initServer.lUserID,beans.getStaffNo());
if(searchFaceInfo !=null ){
Integer numOfMatches = searchFaceInfo.getNumOfMatches();
if(numOfMatches>0){
deleteUserInfo(initServer.lUserID,beans.getStaffNo());
}
}
SearchFaceInfo searchFaceInfo3 = searchFaceInfoMessage(initServer.lUserID3,beans.getStaffNo());
if(searchFaceInfo3 !=null ){
Integer numOfMatches = searchFaceInfo.getNumOfMatches();
if(numOfMatches>0){
deleteUserInfo(initServer.lUserID3,beans.getStaffNo());
}
}
}
}
addPrivileges(kitchenStaffInfo,initServer.lUserID3,initServer.devIp,bb);
}
}else{
System.err.println("门禁权限没变++++++++");
}
initServer.logout(initServer.lUserID);
initServer.logout(initServer.lUserID3);
addDevicePrivileges(kitchenStaffInfo);
System.err.println("修改人脸信息了");
KitchenStaffFace kitchenStaffFace = new KitchenStaffFace();
@ -445,7 +328,6 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
return 1;
}
/**
* oldResult 相对于 newResult 的差集在old中但不在new中
*/
@ -549,6 +431,8 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
@Transactional(rollbackFor = Exception.class)
public int deleteKitchenStaffInfoByStaffIds(Long[] staffIds) {
try {
initServer.Login(initServer.devIp,initServer.devUser,initServer.devPass,(short) 8000,1); //登陆
initServer.Login(initServer.devIp3,initServer.devUser,initServer.devPass,(short) 8000,3); //登陆
for (Long l:staffIds ) {
KitchenStaffInfo kitchenStaffInfo = kitchenStaffInfoMapper.selectKitchenStaffInfoByStaffId(l);
System.err.println("kitchenStaffInfo=="+kitchenStaffInfo);
@ -570,7 +454,8 @@ public class KitchenStaffInfoServiceImpl implements IKitchenStaffInfoService {
kitchenStaffDevicePrivilegeMapper.deleteKitchenStaffDevicePrivilegeByStaffIds(staffIds);
kitchenStaffFaceMapper.deleteStaffFaces(staffIds);
kitchenStaffInfoMapper.deleteKitchenStaffInfoByStaffIds(staffIds);
initServer.logout(initServer.lUserID);
initServer.logout(initServer.lUserID3);
DeviceMqPersonalUpdateMessageDTO bean = new DeviceMqPersonalUpdateMessageDTO().setUpdatePersonPhoto(staffIds[0].intValue(),"del");
MqUtil.pushToTenantAllDevice(bean, LeMqConstant.Topic.MORNING_INSPECTION_DEVICE_UPDATE_PERSONAL_CONFIG_V4);
}catch (Exception w){

View File

@ -69,7 +69,9 @@ public class KitchenStaffMorningCheckServiceImpl implements IKitchenStaffMorning
// });
// }
for (KitchenStaffMorningCheck info : kitchenStaffMorningCheckList) {
info.setCheckVideoUrl( remoteFileService.getFullFileUrl(FileCommonUtils.getFullFileUrl(info.getCheckVideoUrl())));
if(info.getCheckVideoUrl() != null){
info.setCheckVideoUrl( remoteFileService.getFullFileUrl(FileCommonUtils.getFullFileUrl(info.getCheckVideoUrl())));
}
}
return kitchenStaffMorningCheckList;

View File

@ -1,7 +1,12 @@
package com.bonus.canteen.core.kitchen.task;
import com.bonus.canteen.core.kitchen.domain.DownloadVideoDTO;
import com.bonus.canteen.core.kitchen.domain.KitchenSampleDishesRecord;
import com.bonus.canteen.core.kitchen.domain.KitchenStaffMorningCheck;
import com.bonus.canteen.core.kitchen.service.IKitchenSampleDishesRecordService;
import com.bonus.canteen.core.kitchen.service.IKitchenStaffDevicePrivilegeService;
import com.bonus.canteen.core.kitchen.service.IKitchenStaffMorningCheckService;
import com.bonus.canteen.core.kitchen.utils.initServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@ -18,6 +23,12 @@ public class KitchenSampleDishesTsak {
@Autowired
private IKitchenSampleDishesRecordService kitchenSampleDishesRecordService;
@Autowired
private IKitchenStaffMorningCheckService kitchenStaffMorningCheckService;
@Autowired
private IKitchenStaffDevicePrivilegeService kitchenStaffDevicePrivilegeService;
@Scheduled(fixedDelay = 12*60*60*1000)
private void sampleDishesStateHandler() {
//传入过期时间可根据数据字典设置查询过期时间
@ -27,9 +38,21 @@ public class KitchenSampleDishesTsak {
//根据自己需要的逻辑处理 设置时间状态
kitchenSampleDishesRecordService.updateKitchenSampleDishesRecord(record);
}
}
// @Scheduled(fixedDelay = 12*60*60*1000)
private void morningCheckTask(){
System.err.println("开始下载并存储晨检视频-------------------------------------------");
KitchenStaffMorningCheck check = new KitchenStaffMorningCheck();
check.setCheckVideoUrl("1");
List<KitchenStaffMorningCheck> list = kitchenStaffMorningCheckService.selectKitchenStaffMorningCheckList(check);
for (KitchenStaffMorningCheck kitchenStaffMorningCheck:list) {
DownloadVideoDTO dto = new DownloadVideoDTO();
dto.setStartTime(kitchenStaffMorningCheck.getStartTime());
dto.setEndTime(kitchenStaffMorningCheck.getEndTime());
dto.setCheckId(kitchenStaffMorningCheck.getCheckId());
kitchenStaffDevicePrivilegeService.downloadByTime(dto);
}
}
}

View File

@ -43,9 +43,9 @@ public class InitDevTask {
System.out.println("设置回调函数成功!");
}
}
initServer.Login(initServer.devIp,initServer.devUser,initServer.devPass,(short) 8000,1); //登陆
// initServer.Login(initServer.devIp,initServer.devUser,initServer.devPass,(short) 8000,1); //登陆
initServer.Login(initServer.devIp2,initServer.devUser,initServer.devPass,(short) 8000,2); //登陆
// initServer.Login(initServer.devIp3,initServer.devUser,initServer.devPass,(short) 8000,3); //登陆
// initServer.Login(initServer.devIp3,initServer.devUser,initServer.devPass,(short) 8000,3); //登陆
// initServer.Login(initServer.devIp4,initServer.devUser,initServer.devPass,(short) 8000,4); //登陆
}
}

View File

@ -59,9 +59,9 @@ public class initServer implements CommandLineRunner {
System.out.println("设置回调函数成功!");
}
}
// Login(devIp,devUser,devPass,(short) 8000,1); //登陆
// Login(devIp2,devUser,devPass,(short) 8000,2); //登陆
// Login(devIp3,devUser,devPass,(short) 8000,3); //登陆
// Login(devIp,devUser,devPass,(short) 8000,1); //登陆
Login(devIp2,devUser,devPass,(short) 8000,2); //登陆
// Login(devIp3,devUser,devPass,(short) 8000,3); //登陆
System.err.println("hCNetSDK1111111111111=="+hCNetSDK);
// Login(devIp4,devUser,devPass,(short) 8000,4); //登陆
// Alarm.SetAlarm(lUserID2);

View File

@ -10,7 +10,7 @@ import java.util.List;
public class FixMP4 {
private static String ffmpegEXE = "D:\\workSoftware\\ffmpeg\\ffmpeg-2025-01-20-git-504df09c34-full_build\\ffmpeg-2025-01-20-git-504df09c34-full_build\\bin\\ffmpeg.exe";
private static String ffmpegLinux = "/usr/local/ffmpeg/bin/ffmpeg";
private static String ffmpegLinux = "/opt/ffmpeg/bin/ffmpeg";
public static void main(String[] args) {
try {

View File

@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<where>
material_type_name = #{materialTypeName}
<if test="materialTypeId != null and materialTypeId != ''">and material_type_id != #{materialTypeId}</if>
<if test="goodsType !=null and goodsType !=''"> and goods_type = #{goodsType}</if>
</where>
</select>

View File

@ -47,7 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="temperatureStatus != null and temperatureStatus != ''"> and temperature_status = #{temperatureStatus}</if>
<if test="checkStatus != null "> and check_status = #{checkStatus}</if>
<if test="recordTime != null "> and record_time = #{recordTime}</if>
<if test="checkVideoUrl != null and checkVideoUrl != ''"> and check_video_url = #{checkVideoUrl}</if>
<!-- <if test="checkVideoUrl != null and checkVideoUrl != ''"> and check_video_url = #{checkVideoUrl}</if>-->
<if test="postName != null and postName != ''"> and post_name like CONCAT('%',#{postName},'%')</if>
<if test="searchValue != null and searchValue != ''">
and (ksi.staff_name like CONCAT('%',#{searchValue},'%')
@ -61,7 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="endDateTime != null">
and ksmc.record_time <![CDATA[ <= ]]> #{endDateTime}
</if>
<if test="checkVideoUrl == 1">
<if test="checkVideoUrl == 1 or checkVideoUrl == '1'">
and check_video_url is null
</if>
</where>