弄餐检测功能上传

This commit is contained in:
lizhenhua 2025-09-24 15:52:24 +08:00
parent 45ab22e797
commit b8cdc9d125
8 changed files with 170 additions and 26 deletions

View File

@ -0,0 +1,58 @@
package com.bonus.canteen.core.device.controller;
import com.bonus.canteen.core.device.domain.SampleDetail;
import com.bonus.canteen.core.device.domain.UploadModel;
import com.bonus.canteen.core.device.service.IDeviceInfoService;
import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.page.TableDataInfo;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/**
* @author 10752
*/
@Api(tags = "食品安全检测接口")
@RestController
@RequestMapping("/detection")
public class DeviceDetectionController extends BaseController {
@Resource
private IDeviceInfoService deviceInfoService;
private final ObjectMapper objectMapper = new ObjectMapper();
@PostMapping("/uploadData")
public String uploadData(@RequestParam("modelJson") String modelJson) {
try {
// 将字符串反序列化为对象
UploadModel model = objectMapper.readValue(modelJson, UploadModel.class);
// 保存 details
deviceInfoService.saveDetails(model.getDetails());
// TODO: 保存数据库 业务处理
System.out.println("接收到的数据:" + model.getUsername() + " - " + model.getDwmc());
if (model.getDetails() != null) {
model.getDetails().forEach(d -> {
System.out.println("样品:" + d.getYangpinmingcheng() + " -> 检测结果:" + d.getJiancejieguo());
});
}
return "{\"code\":200, \"msg\":\"上传成功\"}";
} catch (Exception e) {
e.printStackTrace();
return "{\"code\":500, \"msg\":\"数据解析失败\"}";
}
}
// 根据条件查询
@GetMapping("/listByCondition")
public TableDataInfo listByCondition(SampleDetail sampleDetail) {
startPage();
List<SampleDetail> detailsByCondition = deviceInfoService.getDetailsByCondition(sampleDetail);
return getDataTable(detailsByCondition);
}
}

View File

@ -0,0 +1,20 @@
package com.bonus.canteen.core.device.domain;
import lombok.Data;
@Data
public class SampleDetail {
private String yangpinmingcheng;
private String jiancejieguo;
private String jiancejieguoCode;
private String jianceleixingCode;
private String lianxidianhua;
private String jianceren;
private String jiancezhi;
private String jiancedidian;
private String jiancexiangmu;
private String yangpinbianhao;
private String jianceriqi;
private String shanghumingcheng;
}

View File

@ -0,0 +1,14 @@
package com.bonus.canteen.core.device.domain;
import lombok.Data;
import java.util.List;
@Data
public class UploadModel {
private String yqbh;
private String password;
private String dwmc;
private String username;
private List<SampleDetail> details;
}

View File

@ -2,18 +2,19 @@ package com.bonus.canteen.core.device.mapper;
import java.util.List;
import com.bonus.canteen.core.device.domain.DeviceInfo;
import com.bonus.canteen.core.device.domain.SampleDetail;
import org.apache.ibatis.annotations.Param;
/**
* 设备资料Mapper接口
*
*
* @author xsheng
* @date 2025-05-25
*/
public interface DeviceInfoMapper {
/**
* 查询设备资料
*
*
* @param deviceId 设备资料主键
* @return 设备资料
*/
@ -21,7 +22,7 @@ public interface DeviceInfoMapper {
/**
* 查询设备资料列表
*
*
* @param deviceInfo 设备资料
* @return 设备资料集合
*/
@ -29,7 +30,7 @@ public interface DeviceInfoMapper {
/**
* 新增设备资料
*
*
* @param deviceInfo 设备资料
* @return 结果
*/
@ -37,7 +38,7 @@ public interface DeviceInfoMapper {
/**
* 修改设备资料
*
*
* @param deviceInfo 设备资料
* @return 结果
*/
@ -45,7 +46,7 @@ public interface DeviceInfoMapper {
/**
* 删除设备资料
*
*
* @param deviceId 设备资料主键
* @return 结果
*/
@ -53,7 +54,7 @@ public interface DeviceInfoMapper {
/**
* 批量删除设备资料
*
*
* @param deviceIds 需要删除的数据主键集合
* @return 结果
*/
@ -146,4 +147,8 @@ public interface DeviceInfoMapper {
int updateTimeBySn(String sn);
int updateTimeByKitchenSn(String sn);
void saveDetails(List<SampleDetail> details);
List<SampleDetail> getDetailsByCondition(SampleDetail sampleDetail);
}

View File

@ -2,17 +2,18 @@ package com.bonus.canteen.core.device.service;
import java.util.List;
import com.bonus.canteen.core.device.domain.DeviceInfo;
import com.bonus.canteen.core.device.domain.SampleDetail;
/**
* 设备资料Service接口
*
*
* @author xsheng
* @date 2025-05-25
*/
public interface IDeviceInfoService {
/**
* 查询设备资料
*
*
* @param deviceId 设备资料主键
* @return 设备资料
*/
@ -20,7 +21,7 @@ public interface IDeviceInfoService {
/**
* 查询设备资料列表
*
*
* @param deviceInfo 设备资料
* @return 设备资料集合
*/
@ -28,7 +29,7 @@ public interface IDeviceInfoService {
/**
* 新增设备资料
*
*
* @param deviceInfo 设备资料
* @return 结果
*/
@ -36,7 +37,7 @@ public interface IDeviceInfoService {
/**
* 修改设备资料
*
*
* @param deviceInfo 设备资料
* @return 结果
*/
@ -44,7 +45,7 @@ public interface IDeviceInfoService {
/**
* 批量删除设备资料
*
*
* @param deviceIds 需要删除的设备资料主键集合
* @return 结果
*/
@ -52,7 +53,7 @@ public interface IDeviceInfoService {
/**
* 删除设备资料信息
*
*
* @param deviceId 设备资料主键
* @return 结果
*/
@ -65,4 +66,8 @@ public interface IDeviceInfoService {
void updateTimeBySn(String deviceSn);
void updateTimeByKitchenSn(String deviceSn);
void saveDetails(List<SampleDetail> details);
List<SampleDetail> getDetailsByCondition(SampleDetail sampleDetail);
}

View File

@ -1,6 +1,9 @@
package com.bonus.canteen.core.device.service.impl;
import java.util.Collections;
import java.util.List;
import com.bonus.canteen.core.device.domain.SampleDetail;
import com.bonus.common.core.exception.ServiceException;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.StringUtils;
@ -15,7 +18,7 @@ import javax.annotation.Resource;
/**
* 设备资料Service业务层处理
*
*
* @author xsheng
* @date 2025-05-25
*/
@ -28,7 +31,7 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
/**
* 查询设备资料
*
*
* @param deviceId 设备资料主键
* @return 设备资料
*/
@ -39,7 +42,7 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
/**
* 查询设备资料列表
*
*
* @param deviceInfo 设备资料
* @return 设备资料
*/
@ -50,7 +53,7 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
/**
* 新增设备资料
*
*
* @param deviceInfo 设备资料
* @return 结果
*/
@ -70,7 +73,7 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
/**
* 修改设备资料
*
*
* @param deviceInfo 设备资料
* @return 结果
*/
@ -140,7 +143,7 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
/**
* 批量删除设备资料
*
*
* @param deviceIds 需要删除的设备资料主键
* @return 结果
*/
@ -154,7 +157,7 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
/**
* 删除设备资料信息
*
*
* @param deviceId 设备资料主键
* @return 结果
*/
@ -183,4 +186,14 @@ public class DeviceInfoServiceImpl implements IDeviceInfoService {
}
}
@Override
public void saveDetails(List<SampleDetail> details) {
deviceInfoMapper.saveDetails(details);
}
@Override
public List<SampleDetail> getDetailsByCondition(SampleDetail sampleDetail) {
return deviceInfoMapper.getDetailsByCondition(sampleDetail);
}
}

View File

@ -35,9 +35,9 @@ public class ZhhqCookRecipeController extends BaseController {
@ApiOperation("获取一周菜谱详情")
@PostMapping({"/getWeekRecipe"})
public AjaxResult getWeekRecipeDetailList(@RequestHeader Map<String, String> requestHeader, @RequestBody @Valid WeekRecipeDTO dto) {
/* if (!(GlobalConstants.JYY + getCurrentDateStr()).equals(Sm4Utils.decrypt(HeaderFetchUtil.getSign(requestHeader)))) {
if (!(GlobalConstants.JYY + getCurrentDateStr()).equals(Sm4Utils.decrypt(HeaderFetchUtil.getSign(requestHeader)))) {
throw new ServiceException("访问缺少认证信息");
}*/
}
try {
return AjaxResult.success(this.zhhqCookRecipeService.getWeekRecipeDetailList(dto));
} catch (Exception e) {

View File

@ -94,7 +94,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where>
order by di.create_time desc
</select>
<select id="selectDeviceInfoByDeviceId" parameterType="Long" resultMap="DeviceInfoResult">
<include refid="selectDeviceInfoVo"/>
where di.device_id = #{deviceId}
@ -115,6 +115,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select recipe_id from cook_recipe_bind_device where stall_id = #{stallId} and recipe_id is not null
limit 1
</select>
<select id="getDetailsByCondition" resultType="com.bonus.canteen.core.device.domain.SampleDetail">
SELECT *
FROM kitchen_device_detection
WHERE 1=1
<if test="yangpinmingcheng != null and yangpinmingcheng != ''">
AND yangpinmingcheng LIKE CONCAT('%', #{yangpinmingcheng}, '%')
</if>
<if test="jiancejieguo != null and jiancejieguo != ''">
AND jiancejieguo = #{jiancejieguo}
</if>
ORDER BY jianceriqi DESC
</select>
<insert id="insertDeviceInfo" parameterType="com.bonus.canteen.core.device.domain.DeviceInfo" useGeneratedKeys="true" keyProperty="deviceId">
insert into device_info
@ -217,6 +229,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
values (#{deviceId}, #{canteenId}, #{stallId},#{recipeId},
#{createBy}, #{createTime})
</insert>
<insert id="saveDetails" parameterType="java.util.List">
INSERT INTO kitchen_device_detection (
yangpinbianhao, yangpinmingcheng, shanghumingcheng,
jianceleixing_code, jiancexiangmu, jiancezhi,
jiancejieguo, jiancejieguo_code, jianceren,
lianxidianhua, jiancedidian, jianceriqi
)
VALUES
<foreach collection="list" item="item" separator=",">
(
#{item.yangpinbianhao}, #{item.yangpinmingcheng}, #{item.shanghumingcheng},
#{item.jianceleixingCode}, #{item.jiancexiangmu}, #{item.jiancezhi},
#{item.jiancejieguo}, #{item.jiancejieguoCode}, #{item.jianceren},
#{item.lianxidianhua}, #{item.jiancedidian}, #{item.jianceriqi}
)
</foreach>
</insert>
<update id="updateDeviceInfo" parameterType="com.bonus.canteen.core.device.domain.DeviceInfo">
update device_info
@ -299,7 +328,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<delete id="deleteDeviceInfoByDeviceIds" parameterType="String">
delete from device_info where device_id in
delete from device_info where device_id in
<foreach item="deviceId" collection="deviceIds" open="(" separator="," close=")">
#{deviceId}
</foreach>
@ -322,4 +351,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
set last_update_time = unix_timestamp()
where device_sn = #{sn}
</update>
</mapper>
</mapper>