|
@ -0,0 +1,152 @@
|
|
|
package com.yihu.iot.service.device;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fasterxml.jackson.core.type.TypeReference;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.google.gson.JsonObject;
|
|
|
import com.yihu.iot.dao.device.IotDeviceDao;
|
|
|
import com.yihu.iot.dao.device.IotDeviceInventoryLogDao;
|
|
|
import com.yihu.iot.dao.device.IotDeviceOrderDao;
|
|
|
import com.yihu.jw.entity.iot.device.IotDeviceDO;
|
|
|
import com.yihu.jw.entity.iot.device.IotDeviceInventoryLogDO;
|
|
|
import com.yihu.jw.entity.iot.device.IotDeviceOrderDO;
|
|
|
import com.yihu.jw.entity.specialist.rehabilitation.RehabilitationTemplateDetailDO;
|
|
|
import com.yihu.jw.restmodel.iot.device.IotDeviceVO;
|
|
|
import com.yihu.jw.restmodel.web.MixEnvelop;
|
|
|
import com.yihu.jw.rm.iot.IotRequestMapping;
|
|
|
import com.yihu.mysql.query.BaseJpaService;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.jdbc.core.BeanPropertyRowMapper;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
|
//create by hmf on 2020.4.29
|
|
|
@Service
|
|
|
public class IotDeviceInventoryService extends BaseJpaService<IotDeviceInventoryLogDO, IotDeviceInventoryLogDao> {
|
|
|
|
|
|
@Autowired
|
|
|
private JdbcTemplate jdbcTempalte;
|
|
|
@Autowired
|
|
|
private IotDeviceDao iotDeviceDao;
|
|
|
@Autowired
|
|
|
private IotDeviceInventoryLogDao deviceInventoryLogDao;
|
|
|
@Autowired
|
|
|
private IotDeviceOrderDao deviceOrderDao;
|
|
|
@Autowired
|
|
|
private ObjectMapper objectMapper;
|
|
|
|
|
|
/**
|
|
|
* 获取库存列表接口
|
|
|
*
|
|
|
* @param name
|
|
|
* @param categoryCode
|
|
|
* @param hospitalName
|
|
|
* @param page
|
|
|
* @param pageSize
|
|
|
* @return
|
|
|
*/
|
|
|
public MixEnvelop<IotDeviceVO, IotDeviceVO> getDeviceInventoryList(String name, String categoryCode, String hospitalName, Integer page, Integer pageSize) {
|
|
|
String sql = "select d.id,d.product_id,d.`name`,d.category_code,d.category_name,d.manufacturer_id,d.manufacturer_name,d.hospital,d.hospital_name,count(id) inventoryCount FROM `iot_device` d where del=1 ";
|
|
|
if (StringUtils.isNotBlank(name)) {
|
|
|
sql += "and name like '%" + name + "%' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(categoryCode)) {
|
|
|
sql += "and category_code = '" + categoryCode + "' ";
|
|
|
}
|
|
|
if (StringUtils.isNotBlank(hospitalName)) {
|
|
|
sql += "and hospital_name like '%" + hospitalName + "%' ";
|
|
|
}
|
|
|
sql += "GROUP BY d.product_id, d.manufacturer_id, d.hospital, d.category_code ";
|
|
|
//判断是否需要分页
|
|
|
if (page != null && pageSize != null) {
|
|
|
Long count = Long.valueOf(jdbcTempalte.queryForList(sql).size());
|
|
|
sql += "limit " + (page - 1) * pageSize + "," + pageSize;
|
|
|
List<IotDeviceVO> deviceVOList = jdbcTempalte.query(sql, new BeanPropertyRowMapper<>(IotDeviceVO.class));
|
|
|
return MixEnvelop.getSuccessListWithPage(IotRequestMapping.Common.message_success_find, deviceVOList, page, pageSize, count);
|
|
|
} else {
|
|
|
List<IotDeviceVO> deviceVOList = jdbcTempalte.query(sql, new BeanPropertyRowMapper<>(IotDeviceVO.class));
|
|
|
return MixEnvelop.getSuccessList(IotRequestMapping.Common.message_success_find, deviceVOList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public Integer updateInventory(String jsonData) {
|
|
|
List<IotDeviceDO> deviceDOList = new ArrayList<>();
|
|
|
JSONArray jsonArray = JSONArray.parseArray(jsonData);
|
|
|
for (Object object : jsonArray) {
|
|
|
JSONObject jsonObject = (JSONObject) object;
|
|
|
String orderId = null;
|
|
|
if (jsonObject.containsKey("orderNo") && StringUtils.isNotBlank(jsonObject.getString("orderNo"))) {
|
|
|
String orderNo = jsonObject.getString("orderNo");//订单编号
|
|
|
//根据订单编号获取订单id
|
|
|
IotDeviceOrderDO deviceOrderDO = deviceOrderDao.findByOrderNoAndDel(orderNo, 1);
|
|
|
orderId = deviceOrderDO.getId();
|
|
|
}
|
|
|
String deviceList = jsonObject.getString("deviceList");//需进行操作的设备列表
|
|
|
IotDeviceInventoryLogDO deviceInventoryLogDO = null;
|
|
|
List<IotDeviceDO> deviceDOS = new ArrayList<>();
|
|
|
try {
|
|
|
deviceInventoryLogDO = objectMapper.readValue(jsonObject.toString(), IotDeviceInventoryLogDO.class);
|
|
|
deviceDOS = new ObjectMapper().readValue(deviceList, new TypeReference<List<IotDeviceDO>>() {
|
|
|
});
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
//保存出入库日志
|
|
|
deviceInventoryLogDO.setSaasId(getCode());
|
|
|
deviceInventoryLogDO.setOrderId(orderId);
|
|
|
deviceInventoryLogDO.setCreateTime(new Date());
|
|
|
deviceInventoryLogDO.setUpdateTime(new Date());
|
|
|
// deviceInventoryLogDO.setNum(deviceDOS.size());
|
|
|
deviceInventoryLogDao.save(deviceInventoryLogDO);
|
|
|
|
|
|
//根据类型处理出入库
|
|
|
for (IotDeviceDO deviceDO : deviceDOS) {
|
|
|
String deviceSn = deviceDO.getDeviceSn();
|
|
|
String type = deviceInventoryLogDO.getType();//调拨类型(1入库 2设备调拨出库 3核销出库)
|
|
|
//设备出库,更换相关信息
|
|
|
if(type.equals("1")){
|
|
|
deviceDO.setSaasId(getCode());
|
|
|
}else {
|
|
|
deviceDO = iotDeviceDao.findByDeviceSn(deviceSn);
|
|
|
if(type.equals("3")){
|
|
|
deviceDO.setDel(0);
|
|
|
deviceDO.setStatus("2");
|
|
|
deviceDO.setInventoryLogId(deviceInventoryLogDO.getId());
|
|
|
deviceDO.setUpdateTime(new Date());
|
|
|
deviceDOList.add(deviceDO);
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
deviceDO.setProductId(jsonObject.getString("productId"));
|
|
|
deviceDO.setName(jsonObject.getString("name"));
|
|
|
deviceDO.setCategoryCode(jsonObject.getString("categoryCode"));
|
|
|
deviceDO.setCategoryName(jsonObject.getString("categoryName"));
|
|
|
deviceDO.setManufacturerId(jsonObject.getString("manufacturerId"));
|
|
|
deviceDO.setManufacturerName(jsonObject.getString("manufacturerName"));
|
|
|
deviceDO.setHospital(jsonObject.getString("hospital"));
|
|
|
deviceDO.setHospitalName(jsonObject.getString("hospitalName"));
|
|
|
if (StringUtils.isNotBlank(orderId)) {
|
|
|
deviceInventoryLogDO.setOrderId(orderId);
|
|
|
}
|
|
|
if (jsonObject.containsKey("orderNo") && StringUtils.isNotBlank(jsonObject.getString("orderNo"))) {
|
|
|
deviceInventoryLogDO.setOrderNo(jsonObject.getString("orderNo"));
|
|
|
}
|
|
|
deviceDO.setDel(1);
|
|
|
deviceDO.setStatus("1");
|
|
|
deviceDO.setInventoryLogId(deviceInventoryLogDO.getId());
|
|
|
deviceDO.setCreateTime(new Date());
|
|
|
deviceDO.setUpdateTime(new Date());
|
|
|
deviceDOList.add(deviceDO);
|
|
|
}
|
|
|
}
|
|
|
iotDeviceDao.save(deviceDOList);
|
|
|
return deviceDOList.size();
|
|
|
}
|
|
|
}
|