diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleCleanOrderService.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleCleanOrderService.java index 7cf2bc1..2fb3e6c 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleCleanOrderService.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleCleanOrderService.java @@ -5,6 +5,8 @@ import jnpf.entity.*; import java.util.*; import com.baomidou.mybatisplus.extension.service.IService; 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 cleanCount(OrderStatisticsRequest request); } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeliveryOrderService.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeliveryOrderService.java index 752c7d4..7ca3a3b 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeliveryOrderService.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeliveryOrderService.java @@ -48,4 +48,12 @@ public interface RecycleDeliveryOrderService extends IService getList(); + + /** + * 投递统计 + * + * @param request 请求参数 + * @return list + */ + List deliveryCount(OrderStatisticsRequest request); } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeviceService.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeviceService.java index 54acc80..eac1463 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeviceService.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/RecycleDeviceService.java @@ -41,7 +41,6 @@ public interface RecycleDeviceService extends IService { List queryRecycleSaffDeviceList(RecycleDevicePagination recycleDevicePagination); - /** * 根据设备编码查询信息 * @@ -49,4 +48,17 @@ public interface RecycleDeviceService extends IService { */ List getInfoByDeviceCode(List deviceCodes); + /** + * 根据回收站id查询设备编码 + * + * @param stationIds 回收站id + */ + List getCodeByStationIds(List stationIds); + + /** + * 根据商户id查询回收站 + * + * @param companyId 商户id + */ + List getStationByCompanyId(String companyId); } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleCleanOrderServiceImpl.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleCleanOrderServiceImpl.java index e4b442e..b9fdbf7 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleCleanOrderServiceImpl.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleCleanOrderServiceImpl.java @@ -1,8 +1,11 @@ package jnpf.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import jnpf.entity.*; import jnpf.mapper.RecycleCleanOrderMapper; +import jnpf.model.recycledeliveryorder.OrderStatisticsRequest; +import jnpf.model.recycledeliveryorder.OrderStatisticsResponse; import jnpf.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jnpf.model.recyclecleanorder.*; @@ -28,6 +31,9 @@ import jnpf.model.QueryModel; import java.util.stream.Collectors; 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.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -56,6 +62,7 @@ import javax.annotation.Resource; * 日期: 2024-06-18 */ @Service +@Slf4j public class RecycleCleanOrderServiceImpl extends ServiceImpl implements RecycleCleanOrderService { @Autowired private GeneraterSwapUtil generaterSwapUtil; @@ -66,6 +73,12 @@ public class RecycleCleanOrderServiceImpl extends ServiceImpl getList(RecycleCleanOrderPagination recycleCleanOrderPagination) { return getTypeList(recycleCleanOrderPagination, recycleCleanOrderPagination.getDataType()); @@ -359,4 +372,47 @@ public class RecycleCleanOrderServiceImpl extends ServiceImpl cleanCount(OrderStatisticsRequest request) { + log.info("查询清运统计,request:{}", request); + List finalDeviceCodes = Lists.newArrayList(); + //只勾选了商户 则查询商户底下的所有设备编码 + if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) { + List stationIds = recycleDeviceService.getStationByCompanyId(request.getCompanyId()); + List deviceCodes = recycleDeviceService.getCodeByStationIds(stationIds); + finalDeviceCodes.addAll(deviceCodes); + } else if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isNotEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) { + //勾选了回收站 但是没勾选设备 + List deviceCodes = recycleDeviceService.getCodeByStationIds(request.getStationIds()); + finalDeviceCodes.addAll(deviceCodes); + } else { + finalDeviceCodes.addAll(request.getDeviceCodes()); + } + Date[] date = recycleDeliveryOrderService.getMonthStartAndEndDate(request.getYear(), request.getMonth()); + LambdaQueryWrapper 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 list = this.list(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + List responses = recycleDeliveryOrderService.fillMonthWithDays(request.getYear(), request.getMonth()); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); + //根据创建时间分类 + Map> dateCollect = list.stream().collect(Collectors.groupingBy(entity -> dateFormat.format(entity.getCreatorTime()))); + for (OrderStatisticsResponse response : responses) { + if (dateCollect.containsKey(response.getDate())) { + List 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; + } } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeliveryOrderServiceImpl.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeliveryOrderServiceImpl.java index ef42b9b..537a36b 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeliveryOrderServiceImpl.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeliveryOrderServiceImpl.java @@ -1,6 +1,7 @@ package jnpf.service.impl; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSON; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; import jnpf.base.UserInfo; import jnpf.base.model.ColumnDataModel; import jnpf.database.model.superQuery.SuperJsonModel; @@ -19,6 +21,7 @@ import jnpf.permission.entity.UserEntity; import jnpf.service.*; import jnpf.util.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -31,6 +34,8 @@ import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.YearMonth; +import java.time.ZoneId; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -59,6 +64,8 @@ public class RecycleDeliveryOrderServiceImpl extends ServiceImpl deliveryCount(OrderStatisticsRequest request) { + log.info("查询投递统计,request:{}", request); + List finalDeviceCodes = Lists.newArrayList(); + //只勾选了商户 则查询商户底下的所有设备编码 + if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) { + List stationIds = recycleDeviceService.getStationByCompanyId(request.getCompanyId()); + List deviceCodes = recycleDeviceService.getCodeByStationIds(stationIds); + finalDeviceCodes.addAll(deviceCodes); + } else if (StringUtils.isNoneBlank(request.getCompanyId()) && CollectionUtils.isNotEmpty(request.getStationIds()) && CollectionUtils.isEmpty(request.getDeviceCodes())) { + //勾选了商户和回收站 但是没勾选设备 + List deviceCodes = recycleDeviceService.getCodeByStationIds(request.getStationIds()); + finalDeviceCodes.addAll(deviceCodes); + } else { + finalDeviceCodes.addAll(request.getDeviceCodes()); + } + //处理时间查询条件 + Date[] date = this.getMonthStartAndEndDate(request.getYear(), request.getMonth()); + LambdaQueryWrapper 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 list = this.list(wrapper); + if (CollectionUtils.isEmpty(list)) { + return Collections.emptyList(); + } + List responses = this.fillMonthWithDays(request.getYear(), request.getMonth()); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); + //根据创建时间分类 + Map> dateCollect = list.stream().collect(Collectors.groupingBy(entity -> dateFormat.format(entity.getCreatorTime()))); + for (OrderStatisticsResponse response : responses) { + if (dateCollect.containsKey(response.getDate())) { + List 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 fillMonthWithDays(int year, int month) { + List 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}; + } + /** * 获取业务唯一编号 * diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeviceServiceImpl.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeviceServiceImpl.java index 3d40d92..089f99d 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeviceServiceImpl.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-biz/src/main/java/jnpf/service/impl/RecycleDeviceServiceImpl.java @@ -481,4 +481,24 @@ public class RecycleDeviceServiceImpl extends ServiceImpl getCodeByStationIds(List stationIds) { + List 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 getStationByCompanyId(String companyId) { + List 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()); + } } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleCleanOrderController.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleCleanOrderController.java index fbdb82b..b793023 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleCleanOrderController.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleCleanOrderController.java @@ -7,6 +7,7 @@ import jnpf.base.vo.PageListVO; import jnpf.base.vo.PaginationVO; import jnpf.entity.RecycleCleanOrderEntity; import jnpf.model.recyclecleanorder.*; +import jnpf.model.recycledeliveryorder.OrderStatisticsRequest; import jnpf.service.RecycleCleanOrderService; import jnpf.service.RecycleDeviceService; import jnpf.util.GeneraterSwapUtil; @@ -17,6 +18,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -237,4 +239,10 @@ public class RecycleCleanOrderController { else return ActionResult.fail("审核失败"); } + @Operation(summary = "清运统计") + @PostMapping("/cleanCount") + public ActionResult cleanCount(@RequestBody @Validated OrderStatisticsRequest request) { + return ActionResult.success(recycleCleanOrderService.cleanCount(request)); + } + } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeliveryOrderController.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeliveryOrderController.java index 6f318df..5dc186f 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeliveryOrderController.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleDeliveryOrderController.java @@ -17,6 +17,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -230,4 +231,10 @@ public class RecycleDeliveryOrderController { return ActionResult.success("审核成功"); } + @Operation(summary = "投递统计") + @PostMapping("/deliveryCount") + public ActionResult deliveryCount(@RequestBody @Validated OrderStatisticsRequest request) { + return ActionResult.success(recycleDeliveryOrderService.deliveryCount(request)); + } + } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleOrderController.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleOrderController.java index b24af66..fd7b979 100644 --- a/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleOrderController.java +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-controller/src/main/java/jnpf/controller/RecycleOrderController.java @@ -211,8 +211,7 @@ public class RecycleOrderController { @Operation(summary = "统计计算") @PostMapping("/compute") public ActionResult compute(@RequestBody RecycleOrderRequest request) { - List list = recycleOrderService.compute(request); - return ActionResult.success(list); + return ActionResult.success(recycleOrderService.compute(request)); } } diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledeliveryorder/OrderStatisticsRequest.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledeliveryorder/OrderStatisticsRequest.java new file mode 100644 index 0000000..7df03f4 --- /dev/null +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledeliveryorder/OrderStatisticsRequest.java @@ -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 stationIds; + + /** + * 设备编码 + */ + private List deviceCodes; + + /** + * 统计年份 + */ + @NotNull(message = "统计年份不能为空") + private int year; + + /** + * 统计月份 + */ + @NotNull(message = "统计月份不能为空") + private int month; + + /** + * 审核状态 + */ + private int auditStatus; + +} diff --git a/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledeliveryorder/OrderStatisticsResponse.java b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledeliveryorder/OrderStatisticsResponse.java new file mode 100644 index 0000000..3eab176 --- /dev/null +++ b/jnpf-java-boot/jnpf-scm/jnpf-scm-entity/src/main/java/jnpf/model/recycledeliveryorder/OrderStatisticsResponse.java @@ -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; + +} diff --git a/jnpf-java-boot/jnpf-web/src/api/device.js b/jnpf-java-boot/jnpf-web/src/api/device.js index 6c595fb..65a9ecd 100644 --- a/jnpf-java-boot/jnpf-web/src/api/device.js +++ b/jnpf-java-boot/jnpf-web/src/api/device.js @@ -2,7 +2,7 @@ import request from "@/utils/request"; // 远程设备指令 export function recycleDeviceCmd(data) { - data.optTime = new Date(); + data.optTime = Date.now(); return request({ url: `/api/scm/RecycleDevice/command`, 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) { let data = { @@ -72,21 +96,15 @@ export function cmdSnapshot(deviceCode) { }; 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) { switch (cmd) { + case "apply": + return cmdApply(deviceCode); + break; + case "exit": + return cmdExit(deviceCode); + break; case "change": return cmdChange(deviceCode); break; @@ -102,9 +120,6 @@ export function cmdDevice(cmd, deviceCode) { case "snapshot": return cmdSnapshot(deviceCode); break; - case "status": - return cmdStatus(deviceCode); - break; default: break; } @@ -172,6 +187,18 @@ export function cmdClear(deviceCode, bucketCode) { }; 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) { switch (cmd) { @@ -190,6 +217,9 @@ export function cmdBucket(cmd, deviceCode, bucketCode) { case "clear": return cmdClear(deviceCode, bucketCode); break; + case "status": + return cmdStatus(deviceCode, bucketCode); + break; default: break; } diff --git a/jnpf-java-boot/jnpf-web/src/views/recyclebucket/form.vue b/jnpf-java-boot/jnpf-web/src/views/recyclebucket/form.vue index 2b98095..5cb2c13 100644 --- a/jnpf-java-boot/jnpf-web/src/views/recyclebucket/form.vue +++ b/jnpf-java-boot/jnpf-web/src/views/recyclebucket/form.vue @@ -98,7 +98,27 @@ - + + @@ -703,8 +723,8 @@ export default { ], doorNumProps: { label: "fullName", value: "id" }, deviceCodecolumnOptions: [ - { label: "设备编码", value: "device_code" }, - { label: "设备名称", value: "device_name" } + { label: "设备编码", value: "deviceCode" }, + { label: "设备名称", value: "deviceName" } ], isShowOptions: [ { fullName: "关闭", id: "0" }, @@ -1056,35 +1076,35 @@ export default { // 表单提交 dataFormSubmit(type) { if (this.dataForm.price == null && !this.useUnifiedConfig) { - this.$message.error('请选择配置或输入回收单价'); + this.$message.error("请选择配置或输入回收单价"); return; } if (this.useUnifiedConfig) { this.dataForm.price = null; } if (this.dataForm.fullSet == null && !this.usefullSetConfig) { - this.$message.error('请选择配置或选择满溢报警'); + this.$message.error("请选择配置或选择满溢报警"); return; } if (this.usefullSetConfig) { this.dataForm.fullSet = "-1"; } if (this.dataForm.smogSet == null && !this.useSmogSetConfig) { - this.$message.error('请选择配置或选择烟雾报警'); + this.$message.error("请选择配置或选择烟雾报警"); return; } if (this.useSmogSetConfig) { this.dataForm.smogSet = "-1"; } if (this.dataForm.warningWeight == null && !this.warningWeightConfig) { - this.$message.error('请选择配置或输入重量上限'); + this.$message.error("请选择配置或输入重量上限"); return; } if (this.warningWeightConfig) { this.dataForm.warningWeight = null; } if (this.dataForm.closeDelay == null && !this.closeDelayConfig) { - this.$message.error('请选择配置或输入关门延时'); + this.$message.error("请选择配置或输入关门延时"); return; } if (this.closeDelayConfig) { diff --git a/jnpf-java-boot/jnpf-web/src/views/recycledevice/DeviceInfo.vue b/jnpf-java-boot/jnpf-web/src/views/recycledevice/DeviceInfo.vue index 9335517..948b4dd 100644 --- a/jnpf-java-boot/jnpf-web/src/views/recycledevice/DeviceInfo.vue +++ b/jnpf-java-boot/jnpf-web/src/views/recycledevice/DeviceInfo.vue @@ -11,7 +11,15 @@ -
投递柜({{ row.deviceCode }})
+
+ 投递柜({{ row.deviceCode }}) + 提醒:如不发起指令页面将在{{ countdown }}秒后退出 +
@@ -66,16 +74,6 @@
- - -
获取状态
-
-
-
@@ -165,6 +163,22 @@
+ + +
获取状态
+
+
+
@@ -183,15 +197,39 @@ export default { visible: false, detailVisible: false, loading: false, - row: {} + row: {}, + countdown: 60, + intervalId: null }; }, computed: {}, - watch: {}, - created() {}, + watch: { + 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() {}, methods: { fnCmdDeviceDo(cmdName) { + this.countdown = 60; cmdDevice(cmdName, this.row.deviceCode).then(res => { if (res.code == 200) { this.$message({ @@ -207,6 +245,7 @@ export default { }); }, fnCmdBucketDo(cmd, deviceCode, bucketCode) { + this.countdown = 60; cmdBucket(cmd, deviceCode, bucketCode).then(res => { if (res.code == 200) { this.$message({ diff --git a/jnpf-java-boot/jnpf-web/src/views/recycledevice/index.vue b/jnpf-java-boot/jnpf-web/src/views/recycledevice/index.vue index 6c2ddca..93ef24b 100644 --- a/jnpf-java-boot/jnpf-web/src/views/recycledevice/index.vue +++ b/jnpf-java-boot/jnpf-web/src/views/recycledevice/index.vue @@ -262,15 +262,16 @@ - + @@ -747,7 +748,7 @@ export default { smogStatus.title = "投递柜内有桶烟雾报警"; } o1.progress = Math.ceil( - (o1.currentWeight / o1.warningWeight) * 100 + (parseInt(o1.currentWeight) / parseInt(o1.warningWeight)) * 100 ); return o1; });