Merge remote-tracking branch 'origin/master'

master
guochaojie 4 months ago
commit 857f57d62d

@ -5,6 +5,8 @@ import jnpf.entity.*;
import java.util.*; import java.util.*;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import jnpf.model.recycledeliveryorder.OrderStatisticsRequest;
import jnpf.model.recycledeliveryorder.OrderStatisticsResponse;
/** /**
* *
@ -35,4 +37,11 @@ public interface RecycleCleanOrderService extends IService<RecycleCleanOrderEnti
void saveOrUpdate(RecycleCleanOrderForm recycleCleanOrderForm,String id, boolean isSave) throws Exception; void saveOrUpdate(RecycleCleanOrderForm recycleCleanOrderForm,String id, boolean isSave) throws Exception;
/**
*
*
* @param request
* @return list
*/
List<OrderStatisticsResponse> cleanCount(OrderStatisticsRequest request);
} }

@ -48,4 +48,12 @@ public interface RecycleDeliveryOrderService extends IService<RecycleDeliveryOrd
* @return list * @return list
*/ */
List<RecycleDeliveryOrderEntity> getList(); List<RecycleDeliveryOrderEntity> getList();
/**
*
*
* @param request
* @return list
*/
List<OrderStatisticsResponse> deliveryCount(OrderStatisticsRequest request);
} }

@ -41,7 +41,6 @@ public interface RecycleDeviceService extends IService<RecycleDeviceEntity> {
List<RecycleDeviceEntity> queryRecycleSaffDeviceList(RecycleDevicePagination recycleDevicePagination); List<RecycleDeviceEntity> queryRecycleSaffDeviceList(RecycleDevicePagination recycleDevicePagination);
/** /**
* *
* *
@ -49,4 +48,17 @@ public interface RecycleDeviceService extends IService<RecycleDeviceEntity> {
*/ */
List<String> getInfoByDeviceCode(List<String> deviceCodes); List<String> getInfoByDeviceCode(List<String> deviceCodes);
/**
* id
*
* @param stationIds id
*/
List<String> getCodeByStationIds(List<String> stationIds);
/**
* id
*
* @param companyId id
*/
List<String> getStationByCompanyId(String companyId);
} }

@ -1,8 +1,11 @@
package jnpf.service.impl; package jnpf.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import jnpf.entity.*; import jnpf.entity.*;
import jnpf.mapper.RecycleCleanOrderMapper; import jnpf.mapper.RecycleCleanOrderMapper;
import jnpf.model.recycledeliveryorder.OrderStatisticsRequest;
import jnpf.model.recycledeliveryorder.OrderStatisticsResponse;
import jnpf.service.*; import jnpf.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jnpf.model.recyclecleanorder.*; import jnpf.model.recyclecleanorder.*;
@ -28,6 +31,9 @@ import jnpf.model.QueryModel;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jnpf.base.model.ColumnDataModel; import jnpf.base.model.ColumnDataModel;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -56,6 +62,7 @@ import javax.annotation.Resource;
* 2024-06-18 * 2024-06-18
*/ */
@Service @Service
@Slf4j
public class RecycleCleanOrderServiceImpl extends ServiceImpl<RecycleCleanOrderMapper, RecycleCleanOrderEntity> implements RecycleCleanOrderService { public class RecycleCleanOrderServiceImpl extends ServiceImpl<RecycleCleanOrderMapper, RecycleCleanOrderEntity> implements RecycleCleanOrderService {
@Autowired @Autowired
private GeneraterSwapUtil generaterSwapUtil; private GeneraterSwapUtil generaterSwapUtil;
@ -66,6 +73,12 @@ public class RecycleCleanOrderServiceImpl extends ServiceImpl<RecycleCleanOrderM
@Resource @Resource
private RecycleCleanOrderMapper cleanOrderMapper; private RecycleCleanOrderMapper cleanOrderMapper;
@Resource
private RecycleDeliveryOrderServiceImpl recycleDeliveryOrderService;
@Resource
private RecycleDeviceService recycleDeviceService;
@Override @Override
public List<RecycleCleanOrderEntity> getList(RecycleCleanOrderPagination recycleCleanOrderPagination) { public List<RecycleCleanOrderEntity> getList(RecycleCleanOrderPagination recycleCleanOrderPagination) {
return getTypeList(recycleCleanOrderPagination, recycleCleanOrderPagination.getDataType()); return getTypeList(recycleCleanOrderPagination, recycleCleanOrderPagination.getDataType());
@ -359,4 +372,47 @@ public class RecycleCleanOrderServiceImpl extends ServiceImpl<RecycleCleanOrderM
this.saveOrUpdate(entity); this.saveOrUpdate(entity);
} }
@Override
public List<OrderStatisticsResponse> cleanCount(OrderStatisticsRequest request) {
log.info("查询清运统计request:{}", request);
List<String> finalDeviceCodes = Lists.newArrayList();
//只勾选了商户 则查询商户底下的所有设备编码
if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) {
List<String> stationIds = recycleDeviceService.getStationByCompanyId(request.getCompanyId());
List<String> deviceCodes = recycleDeviceService.getCodeByStationIds(stationIds);
finalDeviceCodes.addAll(deviceCodes);
} else if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isNotEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) {
//勾选了回收站 但是没勾选设备
List<String> deviceCodes = recycleDeviceService.getCodeByStationIds(request.getStationIds());
finalDeviceCodes.addAll(deviceCodes);
} else {
finalDeviceCodes.addAll(request.getDeviceCodes());
}
Date[] date = recycleDeliveryOrderService.getMonthStartAndEndDate(request.getYear(), request.getMonth());
LambdaQueryWrapper<RecycleCleanOrderEntity> wrapper = new LambdaQueryWrapper<>(RecycleCleanOrderEntity.class)
.between(RecycleCleanOrderEntity::getCreatorTime, date[0], date[1]);
wrapper.in(RecycleCleanOrderEntity::getDeviceCode, finalDeviceCodes);
if (ObjectUtil.isNotEmpty(request.getAuditStatus())) {
wrapper.eq(RecycleCleanOrderEntity::getAdjustStatus, request.getAuditStatus());
}
List<RecycleCleanOrderEntity> list = this.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
List<OrderStatisticsResponse> responses = recycleDeliveryOrderService.fillMonthWithDays(request.getYear(), request.getMonth());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
//根据创建时间分类
Map<String, List<RecycleCleanOrderEntity>> dateCollect = list.stream().collect(Collectors.groupingBy(entity -> dateFormat.format(entity.getCreatorTime())));
for (OrderStatisticsResponse response : responses) {
if (dateCollect.containsKey(response.getDate())) {
List<RecycleCleanOrderEntity> orderEntities = dateCollect.get(response.getDate());
response.setWeight(orderEntities.stream().map(RecycleCleanOrderEntity::getWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
response.setAdjustWeight(orderEntities.stream().map(RecycleCleanOrderEntity::getAdjustWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
response.setPrice(orderEntities.stream().map(RecycleCleanOrderEntity::getTotalPrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
response.setAdjustPrice(orderEntities.stream().map(RecycleCleanOrderEntity::getAdjustPrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
}
}
return responses;
}
} }

@ -1,6 +1,7 @@
package jnpf.service.impl; package jnpf.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSON;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import jnpf.base.UserInfo; import jnpf.base.UserInfo;
import jnpf.base.model.ColumnDataModel; import jnpf.base.model.ColumnDataModel;
import jnpf.database.model.superQuery.SuperJsonModel; import jnpf.database.model.superQuery.SuperJsonModel;
@ -19,6 +21,7 @@ import jnpf.permission.entity.UserEntity;
import jnpf.service.*; import jnpf.service.*;
import jnpf.util.*; import jnpf.util.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -31,6 +34,8 @@ import java.math.RoundingMode;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.YearMonth;
import java.time.ZoneId;
import java.util.*; import java.util.*;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -59,6 +64,8 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
private CompanyService companyService; private CompanyService companyService;
@Resource @Resource
private EnterpriseAccountBillService enterpriseAccountBillService; private EnterpriseAccountBillService enterpriseAccountBillService;
@Resource
private RecycleDeviceService recycleDeviceService;
@Override @Override
@ -646,6 +653,91 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl<RecycleDelivery
return this.list(wrapper); return this.list(wrapper);
} }
@Override
public List<OrderStatisticsResponse> deliveryCount(OrderStatisticsRequest request) {
log.info("查询投递统计request:{}", request);
List<String> finalDeviceCodes = Lists.newArrayList();
//只勾选了商户 则查询商户底下的所有设备编码
if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) {
List<String> stationIds = recycleDeviceService.getStationByCompanyId(request.getCompanyId());
List<String> deviceCodes = recycleDeviceService.getCodeByStationIds(stationIds);
finalDeviceCodes.addAll(deviceCodes);
} else if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isNotEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) {
//勾选了商户和回收站 但是没勾选设备
List<String> deviceCodes = recycleDeviceService.getCodeByStationIds(request.getStationIds());
finalDeviceCodes.addAll(deviceCodes);
} else {
finalDeviceCodes.addAll(request.getDeviceCodes());
}
//处理时间查询条件
Date[] date = this.getMonthStartAndEndDate(request.getYear(), request.getMonth());
LambdaQueryWrapper<RecycleDeliveryOrderEntity> wrapper = new LambdaQueryWrapper<>(RecycleDeliveryOrderEntity.class)
.between(RecycleDeliveryOrderEntity::getCreatorTime, date[0], date[1]);
wrapper.in(RecycleDeliveryOrderEntity::getDeviceCode, finalDeviceCodes);
//查询条件
if (ObjectUtil.isNotEmpty(request.getAuditStatus())) {
wrapper.eq(RecycleDeliveryOrderEntity::getAdjustStatus, request.getAuditStatus());
}
List<RecycleDeliveryOrderEntity> list = this.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
List<OrderStatisticsResponse> responses = this.fillMonthWithDays(request.getYear(), request.getMonth());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());
//根据创建时间分类
Map<String, List<RecycleDeliveryOrderEntity>> dateCollect = list.stream().collect(Collectors.groupingBy(entity -> dateFormat.format(entity.getCreatorTime())));
for (OrderStatisticsResponse response : responses) {
if (dateCollect.containsKey(response.getDate())) {
List<RecycleDeliveryOrderEntity> orderEntities = dateCollect.get(response.getDate());
response.setWeight(orderEntities.stream().map(RecycleDeliveryOrderEntity::getReportWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
response.setAdjustWeight(orderEntities.stream().map(RecycleDeliveryOrderEntity::getAdjustWeight).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
response.setPrice(orderEntities.stream().map(RecycleDeliveryOrderEntity::getTotalPrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
response.setAdjustPrice(orderEntities.stream().map(RecycleDeliveryOrderEntity::getAdjustPrice).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add));
}
}
return responses;
}
/**
*
*
* @param year
* @param month
* @return list
*/
public List<OrderStatisticsResponse> fillMonthWithDays(int year, int month) {
List<OrderStatisticsResponse> result = Lists.newArrayList();
YearMonth yearMonth = YearMonth.of(year, month);
LocalDate startOfMonth = yearMonth.atDay(1);
LocalDate endOfMonth = yearMonth.atEndOfMonth();
while (!startOfMonth.isAfter(endOfMonth)) {
OrderStatisticsResponse response = new OrderStatisticsResponse();
response.setDate(startOfMonth.toString());
result.add(response);
startOfMonth = startOfMonth.plusDays(1);
}
return result;
}
/**
*
*
* @param year
* @param month
* @return
*/
public Date[] getMonthStartAndEndDate(int year, int month) {
LocalDate startDate = LocalDate.of(year, month, 1);
LocalDate endDate = startDate.plusMonths(1).minusDays(1);
Date startDateAsDate = Date.from(startDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date endDateAsDate = Date.from(endDate.atTime(23, 59, 59).atZone(ZoneId.systemDefault()).toInstant()); // 可选:包含该天的最后一秒钟
return new Date[]{startDateAsDate, endDateAsDate};
}
/** /**
* *
* *

@ -481,4 +481,24 @@ public class RecycleDeviceServiceImpl extends ServiceImpl<RecycleDeviceMapper, R
} }
return list.stream().map(RecycleDeviceEntity::getBeLongCompanyId).collect(Collectors.toList()); return list.stream().map(RecycleDeviceEntity::getBeLongCompanyId).collect(Collectors.toList());
} }
@Override
public List<String> getCodeByStationIds(List<String> stationIds) {
List<RecycleDeviceEntity> list = this.list(new LambdaQueryWrapper<>(RecycleDeviceEntity.class)
.in(RecycleDeviceEntity::getBeLongStationId, stationIds));
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
return list.stream().map(RecycleDeviceEntity::getDeviceCode).distinct().collect(Collectors.toList());
}
@Override
public List<String> getStationByCompanyId(String companyId) {
List<RecycleDeviceEntity> list = this.list(new LambdaQueryWrapper<>(RecycleDeviceEntity.class)
.eq(RecycleDeviceEntity::getBeLongCompanyId, companyId));
if (CollectionUtils.isEmpty(list)) {
return Collections.emptyList();
}
return list.stream().map(RecycleDeviceEntity::getBeLongStationId).distinct().collect(Collectors.toList());
}
} }

@ -7,6 +7,7 @@ import jnpf.base.vo.PageListVO;
import jnpf.base.vo.PaginationVO; import jnpf.base.vo.PaginationVO;
import jnpf.entity.RecycleCleanOrderEntity; import jnpf.entity.RecycleCleanOrderEntity;
import jnpf.model.recyclecleanorder.*; import jnpf.model.recyclecleanorder.*;
import jnpf.model.recycledeliveryorder.OrderStatisticsRequest;
import jnpf.service.RecycleCleanOrderService; import jnpf.service.RecycleCleanOrderService;
import jnpf.service.RecycleDeviceService; import jnpf.service.RecycleDeviceService;
import jnpf.util.GeneraterSwapUtil; import jnpf.util.GeneraterSwapUtil;
@ -17,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -237,4 +239,10 @@ public class RecycleCleanOrderController {
else return ActionResult.fail("审核失败"); else return ActionResult.fail("审核失败");
} }
@Operation(summary = "清运统计")
@PostMapping("/cleanCount")
public ActionResult cleanCount(@RequestBody @Validated OrderStatisticsRequest request) {
return ActionResult.success(recycleCleanOrderService.cleanCount(request));
}
} }

@ -17,6 +17,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -230,4 +231,10 @@ public class RecycleDeliveryOrderController {
return ActionResult.success("审核成功"); return ActionResult.success("审核成功");
} }
@Operation(summary = "投递统计")
@PostMapping("/deliveryCount")
public ActionResult deliveryCount(@RequestBody @Validated OrderStatisticsRequest request) {
return ActionResult.success(recycleDeliveryOrderService.deliveryCount(request));
}
} }

@ -211,8 +211,7 @@ public class RecycleOrderController {
@Operation(summary = "统计计算") @Operation(summary = "统计计算")
@PostMapping("/compute") @PostMapping("/compute")
public ActionResult compute(@RequestBody RecycleOrderRequest request) { public ActionResult compute(@RequestBody RecycleOrderRequest request) {
List<RecycleOrderResponse> list = recycleOrderService.compute(request); return ActionResult.success(recycleOrderService.compute(request));
return ActionResult.success(list);
} }
} }

@ -0,0 +1,45 @@
package jnpf.model.recycledeliveryorder;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
public class OrderStatisticsRequest {
/**
* id
*/
@NotBlank(message = "商户id 不能为空")
private String companyId;
/**
* id
*/
private List<String> stationIds;
/**
*
*/
private List<String> deviceCodes;
/**
*
*/
@NotNull(message = "统计年份不能为空")
private int year;
/**
*
*/
@NotNull(message = "统计月份不能为空")
private int month;
/**
*
*/
private int auditStatus;
}

@ -0,0 +1,45 @@
package jnpf.model.recycledeliveryorder;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OrderStatisticsResponse implements Serializable {
/**
* YYYY-mm-dd
*/
private String date;
/**
*
*/
private BigDecimal weight;
/**
*
*/
private BigDecimal adjustWeight;
/**
*
*/
private BigDecimal price;
/**
*
*/
private BigDecimal adjustPrice;
}

@ -2,7 +2,7 @@ import request from "@/utils/request";
// 远程设备指令 // 远程设备指令
export function recycleDeviceCmd(data) { export function recycleDeviceCmd(data) {
data.optTime = new Date(); data.optTime = Date.now();
return request({ return request({
url: `/api/scm/RecycleDevice/command`, url: `/api/scm/RecycleDevice/command`,
method: "POST", method: "POST",
@ -12,6 +12,30 @@ export function recycleDeviceCmd(data) {
/* /*
** 设备指令 ** 设备指令
*/ */
// 申请控制
export function cmdApply(deviceCode) {
let data = {
orderNo: "",
deviceCode: deviceCode,
cmd: "apply",
data: "",
optTime: "",
remark: "申请控制"
};
return recycleDeviceCmd(data);
}
// 结束控制
export function cmdExit(deviceCode) {
let data = {
orderNo: "",
deviceCode: deviceCode,
cmd: "exit",
data: "",
optTime: "",
remark: "结束控制"
};
return recycleDeviceCmd(data);
}
// 配置更新 // 配置更新
export function cmdChange(deviceCode) { export function cmdChange(deviceCode) {
let data = { let data = {
@ -72,21 +96,15 @@ export function cmdSnapshot(deviceCode) {
}; };
return recycleDeviceCmd(data); return recycleDeviceCmd(data);
} }
// 获取状态
export function cmdStatus(deviceCode) {
let data = {
orderNo: "",
deviceCode: deviceCode,
cmd: "status",
data: "",
optTime: "",
remark: "获取状态"
};
return recycleDeviceCmd(data);
}
// 设备指令 // 设备指令
export function cmdDevice(cmd, deviceCode) { export function cmdDevice(cmd, deviceCode) {
switch (cmd) { switch (cmd) {
case "apply":
return cmdApply(deviceCode);
break;
case "exit":
return cmdExit(deviceCode);
break;
case "change": case "change":
return cmdChange(deviceCode); return cmdChange(deviceCode);
break; break;
@ -102,9 +120,6 @@ export function cmdDevice(cmd, deviceCode) {
case "snapshot": case "snapshot":
return cmdSnapshot(deviceCode); return cmdSnapshot(deviceCode);
break; break;
case "status":
return cmdStatus(deviceCode);
break;
default: default:
break; break;
} }
@ -172,6 +187,18 @@ export function cmdClear(deviceCode, bucketCode) {
}; };
return recycleDeviceCmd(data); return recycleDeviceCmd(data);
} }
// 获取状态
export function cmdStatus(deviceCode, bucketCode) {
let data = {
orderNo: "",
deviceCode: deviceCode,
cmd: "status",
data: bucketCode,
optTime: "",
remark: "获取状态"
};
return recycleDeviceCmd(data);
}
// 桶指令 // 桶指令
export function cmdBucket(cmd, deviceCode, bucketCode) { export function cmdBucket(cmd, deviceCode, bucketCode) {
switch (cmd) { switch (cmd) {
@ -190,6 +217,9 @@ export function cmdBucket(cmd, deviceCode, bucketCode) {
case "clear": case "clear":
return cmdClear(deviceCode, bucketCode); return cmdClear(deviceCode, bucketCode);
break; break;
case "status":
return cmdStatus(deviceCode, bucketCode);
break;
default: default:
break; break;
} }

@ -98,7 +98,27 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<jnpf-form-tip-item label="所属设备" prop="deviceCode"> <jnpf-form-tip-item label="所属设备" prop="deviceCode">
<JnpfPopupSelect <PopupSelectDeviceCode
v-model="dataForm.deviceCode"
@change="changeData('deviceCode', -1)"
:rowIndex="null"
:formData="dataForm"
:templateJson="interfaceRes.deviceCode"
placeholder="请选择"
propsValue="deviceCode"
popupWidth="800px"
popupTitle="选择数据"
popupType="dialog"
relationField="deviceName"
field="deviceCode"
interfaceId="564713894723988869"
:pageSize="20"
:columnOptions="deviceCodecolumnOptions"
clearable
:style="{ width: '100%' }"
>
</PopupSelectDeviceCode>
<!-- <JnpfPopupSelect
v-model="dataForm.deviceCode" v-model="dataForm.deviceCode"
@change="changeData('deviceCode', -1)" @change="changeData('deviceCode', -1)"
:rowIndex="null" :rowIndex="null"
@ -117,7 +137,7 @@
clearable clearable
:style="{ width: '100%' }" :style="{ width: '100%' }"
> >
</JnpfPopupSelect> </JnpfPopupSelect> -->
</jnpf-form-tip-item> </jnpf-form-tip-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
@ -703,8 +723,8 @@ export default {
], ],
doorNumProps: { label: "fullName", value: "id" }, doorNumProps: { label: "fullName", value: "id" },
deviceCodecolumnOptions: [ deviceCodecolumnOptions: [
{ label: "设备编码", value: "device_code" }, { label: "设备编码", value: "deviceCode" },
{ label: "设备名称", value: "device_name" } { label: "设备名称", value: "deviceName" }
], ],
isShowOptions: [ isShowOptions: [
{ fullName: "关闭", id: "0" }, { fullName: "关闭", id: "0" },
@ -1056,35 +1076,35 @@ export default {
// //
dataFormSubmit(type) { dataFormSubmit(type) {
if (this.dataForm.price == null && !this.useUnifiedConfig) { if (this.dataForm.price == null && !this.useUnifiedConfig) {
this.$message.error('请选择配置或输入回收单价'); this.$message.error("请选择配置或输入回收单价");
return; return;
} }
if (this.useUnifiedConfig) { if (this.useUnifiedConfig) {
this.dataForm.price = null; this.dataForm.price = null;
} }
if (this.dataForm.fullSet == null && !this.usefullSetConfig) { if (this.dataForm.fullSet == null && !this.usefullSetConfig) {
this.$message.error('请选择配置或选择满溢报警'); this.$message.error("请选择配置或选择满溢报警");
return; return;
} }
if (this.usefullSetConfig) { if (this.usefullSetConfig) {
this.dataForm.fullSet = "-1"; this.dataForm.fullSet = "-1";
} }
if (this.dataForm.smogSet == null && !this.useSmogSetConfig) { if (this.dataForm.smogSet == null && !this.useSmogSetConfig) {
this.$message.error('请选择配置或选择烟雾报警'); this.$message.error("请选择配置或选择烟雾报警");
return; return;
} }
if (this.useSmogSetConfig) { if (this.useSmogSetConfig) {
this.dataForm.smogSet = "-1"; this.dataForm.smogSet = "-1";
} }
if (this.dataForm.warningWeight == null && !this.warningWeightConfig) { if (this.dataForm.warningWeight == null && !this.warningWeightConfig) {
this.$message.error('请选择配置或输入重量上限'); this.$message.error("请选择配置或输入重量上限");
return; return;
} }
if (this.warningWeightConfig) { if (this.warningWeightConfig) {
this.dataForm.warningWeight = null; this.dataForm.warningWeight = null;
} }
if (this.dataForm.closeDelay == null && !this.closeDelayConfig) { if (this.dataForm.closeDelay == null && !this.closeDelayConfig) {
this.$message.error('请选择配置或输入关门延时'); this.$message.error("请选择配置或输入关门延时");
return; return;
} }
if (this.closeDelayConfig) { if (this.closeDelayConfig) {

@ -11,7 +11,15 @@
<el-row class="cmd"> <el-row class="cmd">
<el-col class="cmd-device"> <el-col class="cmd-device">
<el-row style="padding: 15px;"> <el-row style="padding: 15px;">
<div>投递柜({{ row.deviceCode }})</div> <div>
投递柜({{ row.deviceCode }})
<span style="color: #F05E1C;"
>提醒如不发起指令页面将在<span
style="color:#E83015;padding: 0px 5px;font-size:large;"
>{{ countdown }}</span
>秒后退出</span
>
</div>
</el-row> </el-row>
<el-row style="padding: 15px;"> <el-row style="padding: 15px;">
<el-col :span="6"> <el-col :span="6">
@ -66,16 +74,6 @@
<div><i class="el-icon-camera-solid el-icon--right"></i></div> <div><i class="el-icon-camera-solid el-icon--right"></i></div>
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="6">
<el-button
type="primary"
style="width: 80%;"
@click="fnCmdDeviceDo('status')"
>
<div>获取状态</div>
<div><i class="el-icon-s-data el-icon--right"></i></div>
</el-button>
</el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-col v-for="(bucketItem, index) in row.buckets" class="cmd-bucket"> <el-col v-for="(bucketItem, index) in row.buckets" class="cmd-bucket">
@ -165,6 +163,22 @@
<div><i class="el-icon-refresh-left el-icon--right"></i></div> <div><i class="el-icon-refresh-left el-icon--right"></i></div>
</el-button> </el-button>
</el-col> </el-col>
<el-col :span="4">
<el-button
type="success"
style="width: 80%;"
@click="
fnCmdBucketDo(
'status',
bucketItem.deviceCode,
bucketItem.bucketCode
)
"
>
<div>获取状态</div>
<div><i class="el-icon-refresh-left el-icon--right"></i></div>
</el-button>
</el-col>
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
@ -183,15 +197,39 @@ export default {
visible: false, visible: false,
detailVisible: false, detailVisible: false,
loading: false, loading: false,
row: {} row: {},
countdown: 60,
intervalId: null
}; };
}, },
computed: {}, computed: {},
watch: {}, watch: {
created() {}, visible: function(isShow) {
if (isShow) {
this.fnCmdDeviceDo('apply')
this.countdown = 60;
this.intervalId = setInterval(() => {
if (this.countdown < 1) {
this.visible = false;
}
this.countdown = this.countdown - 1;
}, 1000);
} else {
this.fnCmdDeviceDo('exit')
if (this.intervalId) {
clearInterval(this.intervalId);
this.countdown = 0;
}
}
}
},
created() {
console.log("hi2");
},
mounted() {}, mounted() {},
methods: { methods: {
fnCmdDeviceDo(cmdName) { fnCmdDeviceDo(cmdName) {
this.countdown = 60;
cmdDevice(cmdName, this.row.deviceCode).then(res => { cmdDevice(cmdName, this.row.deviceCode).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$message({ this.$message({
@ -207,6 +245,7 @@ export default {
}); });
}, },
fnCmdBucketDo(cmd, deviceCode, bucketCode) { fnCmdBucketDo(cmd, deviceCode, bucketCode) {
this.countdown = 60;
cmdBucket(cmd, deviceCode, bucketCode).then(res => { cmdBucket(cmd, deviceCode, bucketCode).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$message({ this.$message({

@ -262,15 +262,16 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="投口状态" width="200" algin="center"> <el-table-column label="投口状态" width="280" algin="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-for="(item, index) in scope.row.buckets"> <div v-for="(item, index) in scope.row.buckets">
<el-row> <el-row>
<el-col :span="14"> <el-col :span="24">
<div>{{ item.showName }} {{ item.currentWeight }} KG</div> <div>桶名称{{ item.showName }} 当前{{ item.currentWeight }} KG 预警{{ item.warningWeightWeight }} KG</div>
</el-col> </el-col>
<el-col :span="10"> <!-- <el-col :span="10">
<div> <div>
{{ item.progress }}
<el-progress <el-progress
:percentage="item.progress" :percentage="item.progress"
:color="[ :color="[
@ -280,7 +281,7 @@
]" ]"
></el-progress> ></el-progress>
</div> </div>
</el-col> </el-col> -->
</el-row> </el-row>
</div> </div>
</template> </template>
@ -747,7 +748,7 @@ export default {
smogStatus.title = "投递柜内有桶烟雾报警"; smogStatus.title = "投递柜内有桶烟雾报警";
} }
o1.progress = Math.ceil( o1.progress = Math.ceil(
(o1.currentWeight / o1.warningWeight) * 100 (parseInt(o1.currentWeight) / parseInt(o1.warningWeight)) * 100
); );
return o1; return o1;
}); });

Loading…
Cancel
Save