diff --git a/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java b/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java index e887c67..7fe162f 100644 --- a/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java +++ b/admin/src/main/java/com/hcy/admin/controller/sparePart/SparePartController.java @@ -95,4 +95,18 @@ public class SparePartController { return AjaxResult.success(); } + /** + * 采购备件信息列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/purchaseList") + public Object purchaseList(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iSparePartService.purchaseList(pageParam, params); + return AjaxResult.success(list); + } } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java b/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java index 62e43f0..40f8d96 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePart/ISparePartService.java @@ -57,4 +57,11 @@ public interface ISparePartService { */ void del(List ids); + /** + * 采购备件信息列表 + * @param pageParam + * @param params + * @return + */ + PageResult purchaseList(PageParam pageParam, Map params); } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java index a1deeed..3b8d812 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePart/impl/SparePartServiceImpl.java @@ -3,6 +3,7 @@ package com.hcy.admin.service.sparePart.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.hcy.admin.AdminThreadLocal; import com.hcy.admin.service.sparePart.ISparePartService; import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.sparePart.SparePartParam; @@ -10,11 +11,13 @@ import com.hcy.admin.vo.sparePart.SparePartListVo; import com.hcy.admin.vo.sparePart.SparePartDetailVo; import com.hcy.common.constant.GlobalConstant; import com.hcy.common.core.PageResult; -import com.hcy.common.dto.UserDto; -import com.hcy.common.entity.activity.Activity; +import com.hcy.common.entity.client.Client; +import com.hcy.common.entity.client.ClientContacts; import com.hcy.common.entity.sparePart.SparePart; import com.hcy.common.entity.warehouse.Warehouse; import com.hcy.common.exception.OperateException; +import com.hcy.common.mapper.client.ClientContactsMapper; +import com.hcy.common.mapper.client.ClientMapper; import com.hcy.common.mapper.sparePart.SparePartMapper; import com.hcy.common.mapper.warehouse.WarehouseMapper; import com.hcy.common.utils.StringUtil; @@ -25,6 +28,7 @@ import org.springframework.util.Assert; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; /** @@ -39,6 +43,12 @@ public class SparePartServiceImpl implements ISparePartService { @Resource WarehouseMapper warehouseMapper; + @Resource + ClientMapper clientMapper; + + @Resource + ClientContactsMapper clientContactsMapper; + /** * 备件信息列表 * @@ -229,4 +239,87 @@ public class SparePartServiceImpl implements ISparePartService { } } + /** + * 采购备件信息列表 + * + * @param pageParam + * @param params + * @return + */ + @Override + public PageResult purchaseList(PageParam pageParam, Map params) { + Integer page = pageParam.getPageNo(); + Integer limit = pageParam.getPageSize(); + + // 取得查询页的条件 + SparePartListVo pageDto = new SparePartListVo(); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + // 取得查询页的条件 + if (StringUtil.isNotEmpty(params.get("likeWork"))) { + pageDto.setLikeWork(params.get("likeWork")); + queryWrapper.like("spare_parts_code", pageDto.getLikeWork()); + queryWrapper.or(); + queryWrapper.like("spare_parts_name", pageDto.getLikeWork()); + } + + queryWrapper.eq("is_delete", 0); + queryWrapper.orderByDesc("id"); + + sparePartMapper.setSearch(queryWrapper, params, new String[]{ + "=:warehouseId@warehouse_id:long", + "=:specificationsModel@specifications_model:str", + "=:unit:str", + "=:quantity:long", + }); + IPage iPage = sparePartMapper.selectPage(new Page<>(page, limit), queryWrapper); + + //获取当前用户id + Integer adminId = AdminThreadLocal.getAdminId(); + ClientContacts clientId = clientContactsMapper.selectOne( + new QueryWrapper() + .eq("admin_id", adminId) + .eq("is_delete", 0) + .last("limit 1")); + Assert.notNull(clientId, "数据不存在!"); + //当前用户所属客户的配件采购价格因子 + Client model = clientMapper.selectOne( + new QueryWrapper() + .eq("id", clientId.getClientId()) + .eq("is_delete", 0) + .last("limit 1")); + Assert.notNull(model, "数据不存在!"); + + BigDecimal purchaseDivisor = model.getPurchaseDivisor(); // 配件采购价格因子 + + List list = new LinkedList<>(); + for(SparePart item : iPage.getRecords()) { + SparePartListVo vo = new SparePartListVo(); + BeanUtils.copyProperties(item, vo); + //采购员采购时的销售价(配件采购里的销售价)=配件价格*配件采购价格因子(当前用户所属客户的配件采购价格因子) + vo.setUnitPrice(vo.getUnitPrice().multiply(purchaseDivisor)); // 采购员采购时的销售价 + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); + vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); + Warehouse warehouse = warehouseMapper.selectOne( + new QueryWrapper() + .eq("id", item.getWarehouseId()) + .eq("is_delete", 0) + .last("limit 1")); + if(warehouse != null){ + vo.setWarehouseName(warehouse.getWarehouseName()); + } + + //出库和调拨,选配件的时候,库存数量为0的不应出现 查询要加个字段 + String s = params.get("outAllotType"); + if(s != null && s.equals("0") && item.getQuantity() == 0){ + System.out.println("出库和调拨时,库存数量为0的不应出现!!!"); + }else{ + list.add(vo); + } + + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + } diff --git a/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java b/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java index 3849398..96d70a4 100644 --- a/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java +++ b/admin/src/main/java/com/hcy/admin/service/sparePartPurchase/impl/SparePartPurchaseServiceImpl.java @@ -168,6 +168,7 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { sparePartAudit1.setSparePartsId(sparePart.getId()); // 备件id sparePartAudit1.setStockAuditId(sparePartAudit.getStockAuditId()); // 出入库审核id sparePartAudit1.setUnit(sparePart.getUnit()); //单位 + sparePartAudit1.setUnitPrice(sparePartAudit.getUnitPrice()); //销售价 sparePartAudit1.setCount(sparePartAudit.getCount()); // 出库数量 sparePartAudit1.setQuantity(sparePart.getQuantity()); //库存数量 Warehouse warehouse = warehouseMapper.selectOne( @@ -254,7 +255,7 @@ public class SparePartPurchaseServiceImpl implements ISparePartPurchaseService { SparePartAudit insertSparePartAudit = new SparePartAudit(); insertSparePartAudit.setSparePartsId(sparePartAudit.getId()); //备件id sb.append(sparePartAudit.getId()).append(","); - + insertSparePartAudit.setUnitPrice(sparePartAudit.getUnitPrice()); insertSparePartAudit.setCount(sparePartAudit.getCount()); //备件出库数量 insertSparePartAudit.setStockAuditId(model.getId()); // 出入库审核id insertSparePartAudit.setCreateTime(System.currentTimeMillis() / 1000); diff --git a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java index 5cb689b..4052ece 100644 --- a/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/order/RoutingInspectionOrderListVo.java @@ -19,9 +19,6 @@ public class RoutingInspectionOrderListVo implements Serializable { private Long orderSource; // 订单来源 1-系统创建;4-客服创建 private Long receiverType; // 接单类型 0-区域派单;1-距离派单 private Long repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 - private Long provinceId; // 省id - private Long cityId; // 市id - private Long districtId; // 区id private String remark; // 备注 private Date orderAccomplishTime; // 订单完成时间 private Long clientId; // 客户id diff --git a/admin/src/main/java/com/hcy/admin/vo/sparePartPurchase/SparePartPurchaseListVo.java b/admin/src/main/java/com/hcy/admin/vo/sparePartPurchase/SparePartPurchaseListVo.java index 5a8007b..e8b9805 100644 --- a/admin/src/main/java/com/hcy/admin/vo/sparePartPurchase/SparePartPurchaseListVo.java +++ b/admin/src/main/java/com/hcy/admin/vo/sparePartPurchase/SparePartPurchaseListVo.java @@ -4,6 +4,7 @@ import com.hcy.admin.vo.SparePartAudit.SparePartAuditListVo; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; import java.util.List; /** diff --git a/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java b/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java index 95b7744..5a58385 100644 --- a/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java +++ b/common/src/main/java/com/hcy/common/dto/RoutingInspectionOrderDto.java @@ -13,9 +13,6 @@ public class RoutingInspectionOrderDto implements Serializable { private Long orderSource; // 订单来源 1-系统创建;4-客服创建 private Long repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 private Long receiverType; // 接单类型 0-区域派单;1-距离派单 - private Long provinceId; // 省id - private Long cityId; // 市id - private Long districtId; // 区id private String remark; // 备注 private Date orderAccomplishTime; // 订单完成时间 private Long clientId; // 客户id @@ -33,4 +30,5 @@ public class RoutingInspectionOrderDto implements Serializable { private Long receiverId; // 接单人id private String receiverName; // 接单人名称 private Date receiverTime; // 接单时间 + private String likeWork; // 模糊查询(工单编号/客户名称/设备编号) } diff --git a/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java b/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java index 1de0c24..b667cdf 100644 --- a/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java +++ b/common/src/main/java/com/hcy/common/entity/order/RoutingInspectionOrder.java @@ -50,5 +50,6 @@ public class RoutingInspectionOrder implements Serializable { private Date createTime; // 创建时间 private Date updateTime; // 更新时间 private Integer isDelete; // 是否删除 0-未删除 1-删除 - + private Long maintenanceId; //检修单id + private Integer InspectionResult; //巡检结果(0=正常 1=异常) } \ No newline at end of file diff --git a/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java b/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java index a25ed5b..29d27df 100644 --- a/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java +++ b/common/src/main/java/com/hcy/common/entity/sparePartStockAudit/SparePartStockAudit.java @@ -56,5 +56,4 @@ public class SparePartStockAudit implements Serializable { private Integer recipientNumber; //领用数量 private Integer purchaseStatus; //配件领用状态(0=待审核,1=未通过,2=待管理员审核,3=待发货,4=待收货,5=已完成,6=填写中,7=收货超期) private String purchaseIdea; //采购意见 - } \ No newline at end of file diff --git a/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java b/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java index f6d42cb..595f776 100644 --- a/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java +++ b/common/src/main/java/com/hcy/common/enums/order/OrderStateEnum.java @@ -33,7 +33,11 @@ public enum OrderStateEnum { //是否删除 0-未删除 1-删除 NOTDELETED(0,"未删除"), - DELETE(1, "删除"); + DELETE(1, "删除"), + + //巡检结果(0=正常 1=异常) + NORMAL(0,"正常"), + ABNORMAL(1, "异常"); private final int status; private final String desc; diff --git a/common/src/main/java/com/hcy/common/mapper/order/RoutingInspectionOrderMapper.java b/common/src/main/java/com/hcy/common/mapper/order/RoutingInspectionOrderMapper.java index dd831ab..cd5d721 100644 --- a/common/src/main/java/com/hcy/common/mapper/order/RoutingInspectionOrderMapper.java +++ b/common/src/main/java/com/hcy/common/mapper/order/RoutingInspectionOrderMapper.java @@ -21,4 +21,12 @@ public interface RoutingInspectionOrderMapper extends IBaseMapper pageList(@Param("page") Page page, @Param("form") RoutingInspectionOrderDto form); + + /** + * 小程序巡检单列表 + * @param page + * @param form + * @return + */ + Page frontPageList(@Param("page") Page page, @Param("form") RoutingInspectionOrderDto form); } diff --git a/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml b/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml index 384264c..975ca65 100644 --- a/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml +++ b/common/src/main/resources/mapper/RoutingInspectionOrderMapper.xml @@ -43,4 +43,35 @@ ORDER BY i.id DESC + diff --git a/common/target/classes/mapper/RoutingInspectionOrderMapper.xml b/common/target/classes/mapper/RoutingInspectionOrderMapper.xml index 384264c..975ca65 100644 --- a/common/target/classes/mapper/RoutingInspectionOrderMapper.xml +++ b/common/target/classes/mapper/RoutingInspectionOrderMapper.xml @@ -43,4 +43,35 @@ ORDER BY i.id DESC + diff --git a/front/src/main/java/com/hcy/front/controller/configuration/SystemConfigurationController.java b/front/src/main/java/com/hcy/front/controller/configuration/SystemConfigurationController.java new file mode 100644 index 0000000..b1f9070 --- /dev/null +++ b/front/src/main/java/com/hcy/front/controller/configuration/SystemConfigurationController.java @@ -0,0 +1,35 @@ +package com.hcy.front.controller.configuration; + + + +import com.hcy.common.core.AjaxResult; +import com.hcy.front.service.configuration.ISystemConfigurationService; +import com.hcy.front.vo.configuration.SystemConfigurationDetailVo; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * 系统配置管理管理 + */ +@RestController +@RequestMapping("api/configuration") +public class SystemConfigurationController { + + @Resource + ISystemConfigurationService iSystemConfigurationService; + + /** + * 系统配置管理详情 + * + * @author hcy + * @return Object + */ + @GetMapping("/detail") + public Object detail() { + SystemConfigurationDetailVo detail = iSystemConfigurationService.detail(); + return AjaxResult.success(detail); + } + + +} diff --git a/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java b/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java new file mode 100644 index 0000000..0bbb0c2 --- /dev/null +++ b/front/src/main/java/com/hcy/front/controller/order/RoutingInspectionOrderController.java @@ -0,0 +1,93 @@ +package com.hcy.front.controller.order; + + +import com.hcy.common.core.AjaxResult; +import com.hcy.common.core.PageResult; +import com.hcy.common.validator.annotation.IDMust; +import com.hcy.front.service.order.IRoutingInspectionOrderService; +import com.hcy.front.validate.PageParam; +import com.hcy.front.validate.order.RoutingInspectionOrderParam; +import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; +import com.hcy.front.vo.order.RoutingInspectionOrderListVo; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; + +/** + * 巡检订单管理 + */ +@RestController +@RequestMapping("api/routingInspectionOrder") +public class RoutingInspectionOrderController { + + @Resource + IRoutingInspectionOrderService iRoutingInspectionOrderService; + + /** + * 巡检订单列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return Object + */ + @GetMapping("/list") + public Object list(@Validated PageParam pageParam, + @RequestParam Map params) { + PageResult list = iRoutingInspectionOrderService.list(pageParam, params); + return AjaxResult.success(list); + } + /** + * 巡检订单详情 + * + * @author hcy + * @param id 主键ID + * @return Object + */ + @GetMapping("/detail") + public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) { + RoutingInspectionOrderDetailVo detail = iRoutingInspectionOrderService.detail(id); + return AjaxResult.success(detail); + } + + /** + * 接单 + * + * @author hcy + * @param routingInspectionOrderParam 参数 + * @return Object + */ + @PostMapping("/orderReceiving") + public Object orderReceiving(@RequestBody RoutingInspectionOrderParam routingInspectionOrderParam) { + iRoutingInspectionOrderService.orderReceiving(routingInspectionOrderParam); + return AjaxResult.success(); + } + + /** + * 开始巡检 + * + * @author hcy + * @param routingInspectionOrderParam 参数 + * @return Object + */ + @PostMapping("/startInspection") + public Object startInspection(@RequestBody RoutingInspectionOrderParam routingInspectionOrderParam) { + iRoutingInspectionOrderService.startInspection(routingInspectionOrderParam); + return AjaxResult.success(); + } + + /** + * 故障检测 + * + * @author hcy + * @param routingInspectionOrderParam 参数 + * @return Object + */ + @PostMapping("/faultDetect") + public Object faultDetect(@RequestBody RoutingInspectionOrderParam routingInspectionOrderParam) { + iRoutingInspectionOrderService.faultDetect(routingInspectionOrderParam); + return AjaxResult.success(); + } +} diff --git a/front/src/main/java/com/hcy/front/service/configuration/ISystemConfigurationService.java b/front/src/main/java/com/hcy/front/service/configuration/ISystemConfigurationService.java new file mode 100644 index 0000000..e722079 --- /dev/null +++ b/front/src/main/java/com/hcy/front/service/configuration/ISystemConfigurationService.java @@ -0,0 +1,20 @@ +package com.hcy.front.service.configuration; + + +import com.hcy.front.vo.configuration.SystemConfigurationDetailVo; + +/** + * 系统配置管理服务接口类 + */ +public interface ISystemConfigurationService { + + + /** + * 系统配置管理详情 + * + * @author hcy + * @return SystemConfiguration + */ + SystemConfigurationDetailVo detail(); + +} diff --git a/front/src/main/java/com/hcy/front/service/configuration/impl/SystemConfigurationServiceImpl.java b/front/src/main/java/com/hcy/front/service/configuration/impl/SystemConfigurationServiceImpl.java new file mode 100644 index 0000000..71d352a --- /dev/null +++ b/front/src/main/java/com/hcy/front/service/configuration/impl/SystemConfigurationServiceImpl.java @@ -0,0 +1,42 @@ +package com.hcy.front.service.configuration.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +import com.hcy.common.entity.configuration.SystemConfiguration; +import com.hcy.common.mapper.configuration.SystemConfigurationMapper; +import com.hcy.front.service.configuration.ISystemConfigurationService; +import com.hcy.front.vo.configuration.SystemConfigurationDetailVo; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 系统配置管理实现类 + */ +@Service +public class SystemConfigurationServiceImpl implements ISystemConfigurationService { + + @Resource + SystemConfigurationMapper systemConfigurationMapper; + + /** + * 系统配置管理详情 + * + * @author hcy + * @return SystemConfiguration + */ + @Override + public SystemConfigurationDetailVo detail() { + SystemConfiguration model = systemConfigurationMapper.selectOne( + new QueryWrapper() + .eq("id", 1) + .last("limit 1")); + + SystemConfigurationDetailVo vo = new SystemConfigurationDetailVo(); + BeanUtils.copyProperties(model, vo); + return vo; + } + + +} diff --git a/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java b/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java new file mode 100644 index 0000000..1efd2b7 --- /dev/null +++ b/front/src/main/java/com/hcy/front/service/order/IRoutingInspectionOrderService.java @@ -0,0 +1,52 @@ +package com.hcy.front.service.order; + +import com.hcy.common.core.PageResult; +import com.hcy.front.validate.PageParam; +import com.hcy.front.validate.order.RoutingInspectionOrderParam; +import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; +import com.hcy.front.vo.order.RoutingInspectionOrderListVo; + +import java.util.Map; + +/** + * 巡检订单服务接口类 + */ +public interface IRoutingInspectionOrderService { + + /** + * 巡检订单列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + PageResult list(PageParam pageParam, Map params); + + /** + * 巡检订单详情 + * + * @author hcy + * @param id 主键ID + * @return RoutingInspectionOrder + */ + RoutingInspectionOrderDetailVo detail(Integer id); + + /** + * 接单 + * @param routingInspectionOrderParam + */ + void orderReceiving(RoutingInspectionOrderParam routingInspectionOrderParam); + + /** + * 开始巡检 + * @param routingInspectionOrderParam + */ + void startInspection(RoutingInspectionOrderParam routingInspectionOrderParam); + + /** + * 故障检测 + * @param routingInspectionOrderParam + */ + void faultDetect(RoutingInspectionOrderParam routingInspectionOrderParam); +} diff --git a/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java new file mode 100644 index 0000000..9a31a81 --- /dev/null +++ b/front/src/main/java/com/hcy/front/service/order/impl/RoutingInspectionOrderServiceImpl.java @@ -0,0 +1,192 @@ +package com.hcy.front.service.order.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.hcy.common.core.PageResult; +import com.hcy.common.dto.RoutingInspectionOrderDto; +import com.hcy.common.entity.client.Client; +import com.hcy.common.entity.client.Equipment; +import com.hcy.common.entity.order.RoutingInspectionOrder; +import com.hcy.common.entity.system.SystemAuthAdmin; +import com.hcy.common.enums.order.OrderStateEnum; +import com.hcy.common.mapper.client.ClientMapper; +import com.hcy.common.mapper.client.EquipmentMapper; +import com.hcy.common.mapper.order.RoutingInspectionOrderMapper; +import com.hcy.common.mapper.system.SystemAuthAdminMapper; +import com.hcy.front.service.order.IRoutingInspectionOrderService; +import com.hcy.front.validate.PageParam; +import com.hcy.front.validate.order.RoutingInspectionOrderParam; +import com.hcy.front.vo.order.RoutingInspectionOrderDetailVo; +import com.hcy.front.vo.order.RoutingInspectionOrderListVo; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.util.Assert; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * 巡检订单实现类 + */ +@Service +public class RoutingInspectionOrderServiceImpl implements IRoutingInspectionOrderService { + + @Resource + RoutingInspectionOrderMapper routingInspectionOrderMapper; + + @Resource + EquipmentMapper equipmentMapper; + + @Resource + ClientMapper clientMapper; + + @Resource + SystemAuthAdminMapper systemAuthAdminMapper; + + /** + * 巡检订单列表 + * + * @author hcy + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult + */ + @Override + public PageResult list(PageParam pageParam, Map params) { + + Page page = new Page<>(pageParam.getPageNo(), pageParam.getPageSize()); + RoutingInspectionOrderDto inspectionOrderDto = new RoutingInspectionOrderDto(); + + inspectionOrderDto.setLikeWork(StringUtils.isEmpty(params.get("likeWork")) ? null : params.get("likeWork")); + //默认查询待接单的巡检单 + if(StringUtils.isNotEmpty(params.get("inspectionOrderStatus"))){ + inspectionOrderDto.setInspectionOrderStatus(Long.valueOf(params.get("inspectionOrderStatus"))); + }else{ + inspectionOrderDto.setInspectionOrderStatus(Long.valueOf(OrderStateEnum.PENDINGORDER.getStatus())); + } + + Page iPage = routingInspectionOrderMapper.frontPageList(page, inspectionOrderDto); + + + + List list = new LinkedList<>(); + for(RoutingInspectionOrderDto item : iPage.getRecords()) { + RoutingInspectionOrderListVo vo = new RoutingInspectionOrderListVo(); + BeanUtils.copyProperties(item, vo); + vo.setCreateTime(String.valueOf(item.getCreateTime())); + + list.add(vo); + } + + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + } + + /** + * 巡检订单详情 + * + * @author hcy + * @param id 主键参数 + * @return RoutingInspectionOrder + */ + @Override + public RoutingInspectionOrderDetailVo detail(Integer id) { + RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( + new QueryWrapper() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在"); + + RoutingInspectionOrderDetailVo vo = new RoutingInspectionOrderDetailVo(); + BeanUtils.copyProperties(model, vo); + //客户名称 + Client client = clientMapper.selectOne( + new QueryWrapper() + .eq("id", model.getClientId()) + .last("limit 1")); + vo.setClientName(client.getClientName()); + //设备编号、名称、地址 + Equipment equipment = equipmentMapper.selectOne( + new QueryWrapper() + .eq("id", model.getDeviceId()) + .last("limit 1")); + vo.setDeviceNumber(equipment.getNumber()); + vo.setDeviceName(equipment.getName()); + vo.setDetailedAddress(equipment.getDetailedAddress()); + //接单人 + SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne( + new QueryWrapper() + .eq("id", model.getReceiverId()) + .last("limit 1")); + if(authAdmin != null){ + vo.setReceiverName(authAdmin.getUsername()); + } + + return vo; + } + + /** + * 接单 + * + * @param routingInspectionOrderParam + */ + @Override + public void orderReceiving(RoutingInspectionOrderParam routingInspectionOrderParam) { + RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( + new QueryWrapper() + .eq("id", routingInspectionOrderParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setInspectionOrderStatus(OrderStateEnum.TOBEINSPECTED.getStatus()); //用户接单后工单状态为待巡检 + routingInspectionOrderMapper.updateById(model); + } + + /** + * 开始巡检 + * + * @param routingInspectionOrderParam + */ + @Override + public void startInspection(RoutingInspectionOrderParam routingInspectionOrderParam) { + RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( + new QueryWrapper() + .eq("id", routingInspectionOrderParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setInspectionOrderStatus(OrderStateEnum.DURINGINSPECTION.getStatus()); //用户开始巡检后工单状态为巡检中 + routingInspectionOrderMapper.updateById(model); + } + + /** + * 故障检测 + * + * @param routingInspectionOrderParam + */ + @Override + public void faultDetect(RoutingInspectionOrderParam routingInspectionOrderParam) { + RoutingInspectionOrder model = routingInspectionOrderMapper.selectOne( + new QueryWrapper() + .eq("id", routingInspectionOrderParam.getId()) + .eq("is_delete", 0) + .last("limit 1")); + + Assert.notNull(model, "数据不存在!"); + + model.setInspectionResult(routingInspectionOrderParam.getInspectionResult()); //巡检结果(0=正常 1=异常) + model.setInspectionOrderStatus(OrderStateEnum.COMPLETED.getStatus()); //故障检测完工单状态就为已完成 + routingInspectionOrderMapper.updateById(model); + } + + +} diff --git a/front/src/main/java/com/hcy/front/service/order/impl/teststes.java b/front/src/main/java/com/hcy/front/service/order/impl/teststes.java deleted file mode 100644 index 81a09de..0000000 --- a/front/src/main/java/com/hcy/front/service/order/impl/teststes.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hcy.front.service.order.impl; - -import java.math.BigDecimal; - -public class teststes { - public static void main(String[] args) { - int userInteger = 62; // 用户积分 - int integer = 0; // 用户使用了多少积分 - BigDecimal p = BigDecimal.valueOf(166.66); // 商品价格 - BigDecimal p2 = BigDecimal.valueOf(5.66); // 商品价格 - BigDecimal orderAmount = p2; //应付金额 - BigDecimal deductionMoney = BigDecimal.valueOf(0); //抵扣金额 - - int num = userInteger % 10; //用户剩余积分 - int monery = userInteger / 10; // 用户积分抵扣金额 - - BigDecimal subtract = p2.subtract(BigDecimal.valueOf(monery)); // 积分抵扣金额 - integer = monery * 10; // 已使用积分 - deductionMoney = BigDecimal.valueOf(monery); // 抵扣金额 - - if(subtract.intValue() <= 0){ - num = num + (Math.abs(subtract.intValue()) * 10); // 剩余积分返还用户 - orderAmount = BigDecimal.valueOf(0); // 应付金额 - }else{ - orderAmount = subtract; // 应付金额 - } - - System.out.println("-------------------------------"); - System.out.println("用户剩余积分:" + num); - System.out.println("用户使用了:" + integer); - System.out.println("用户应付金额:" + orderAmount); - System.out.println("用户抵扣金额:" + deductionMoney); - } -} diff --git a/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java b/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java new file mode 100644 index 0000000..1dd23b1 --- /dev/null +++ b/front/src/main/java/com/hcy/front/validate/order/RoutingInspectionOrderParam.java @@ -0,0 +1,67 @@ +package com.hcy.front.validate.order; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.DecimalMin; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 巡检订单参数 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class RoutingInspectionOrderParam implements Serializable { + + private static final long serialVersionUID = 1L; + + public interface create{} + public interface update{} + public interface delete{} + + private Long id; + + + private String orderNo; + + @DecimalMin(value = "0", message = "orderSource参数值不能少于0", groups = {create.class, update.class}) + private Integer orderSource; + + private Integer inspectionOrderStatus; + + @DecimalMin(value = "0", message = "clientId参数值不能少于0", groups = {create.class, update.class}) + private Long clientId; + + @DecimalMin(value = "0", message = "deviceId参数值不能少于0", groups = {create.class, update.class}) + private Long deviceId; + + @DecimalMin(value = "0", message = "provinceId参数值不能少于0", groups = {create.class, update.class}) + private Long provinceId; + + @DecimalMin(value = "0", message = "cityId参数值不能少于0", groups = {create.class, update.class}) + private Long cityId; + + @DecimalMin(value = "0", message = "districtId参数值不能少于0", groups = {create.class, update.class}) + private Long districtId; + + + @DecimalMin(value = "0", message = "receiverId参数值不能少于0", groups = {create.class, update.class}) + private Long receiverId; + + private String receiverTime; + + @Length(max = 250, message = "remark参数不能超出250个字符", groups = {create.class, update.class}) + private String remark; + + @DecimalMin(value = "0", message = "creatorId参数值不能少于0", groups = {create.class, update.class}) + private Long creatorId; + private Integer receiverType; // 接单类型 0-区域派单;1-距离派单 + private BigDecimal orderDistance; // 订单距离 + private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 + private Integer InspectionResult; //巡检结果(0=正常 1=异常) + +} diff --git a/front/src/main/java/com/hcy/front/vo/configuration/SystemConfigurationDetailVo.java b/front/src/main/java/com/hcy/front/vo/configuration/SystemConfigurationDetailVo.java new file mode 100644 index 0000000..3a342da --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/configuration/SystemConfigurationDetailVo.java @@ -0,0 +1,28 @@ +package com.hcy.front.vo.configuration; + +import lombok.Data; + +import java.io.Serializable; + +/** + * SystemConfigurationVo + */ +@Data +public class SystemConfigurationDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 主键id + private Integer repairerLocation; // 检修员位置(每隔几分钟刷新) + /*private Integer repairerMaxMileage; // 检修员自动抢单最大公里数(公里) + private Integer repairerAutoOrderTime; // 检修员自动抢单时间(分钟) + private Integer repairerRemind; // 检修员系统提醒客服(0=开启,1=关闭) + private Integer repairerCommissionRate; // 检修员提成比例*/ + private Integer maintenanceLocation; // 维修员位置(每隔几分钟刷新) + /* private Integer maintenanceMaxMileage; // 维修员自动抢单最大公里数(公里) + private Integer maintenanceAutoOrderTime; // 维修员自动抢单时间(分钟) + private Integer maintenanceRemind; // 维修员系统提现客服(0=开启,1-关闭) + private Integer maintenanceCommissionRate; // 维修员提成比例*/ + private String servicePhone; // 客服电话 + +} diff --git a/front/src/main/java/com/hcy/front/vo/configuration/SystemConfigurationListVo.java b/front/src/main/java/com/hcy/front/vo/configuration/SystemConfigurationListVo.java new file mode 100644 index 0000000..55e8690 --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/configuration/SystemConfigurationListVo.java @@ -0,0 +1,27 @@ +package com.hcy.front.vo.configuration; + +import lombok.Data; + +import java.io.Serializable; + +/** + * SystemConfigurationVo + */ +@Data +public class SystemConfigurationListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 主键id + private Integer repairerLocation; // 检修员位置(每隔几分钟刷新) + private Integer repairerMaxMileage; // 检修员自动抢单最大公里数(公里) + private Integer repairerAutoOrderTime; // 检修员自动抢单时间(分钟) + private Integer repairerRemind; // 检修员系统提醒客服(0=开启,1=关闭) + private Integer repairerCommissionRate; // 检修员提成比例 + private Integer maintenanceLocation; // 维修员位置(每隔几分钟刷新) + private Integer maintenanceMaxMileage; // 维修员自动抢单最大公里数(公里) + private Integer maintenanceAutoOrderTime; // 维修员自动抢单时间(分钟) + private Integer maintenanceRemind; // 维修员系统提现客服(0=开启,1-关闭) + private Integer maintenanceCommissionRate; // 维修员提成比例 + +} diff --git a/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java new file mode 100644 index 0000000..a056f13 --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderDetailVo.java @@ -0,0 +1,36 @@ +package com.hcy.front.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * RoutingInspectionOrderVo + */ +@Data +public class RoutingInspectionOrderDetailVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 主键id + private String orderNo; // 订单编号 + private Integer orderSource; // 订单来源 1-系统创建;4-客服创建 + private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员 + private Integer inspectionOrderStatus; // 订单状态 0-待抢单;1-待接单;2-接单超时;3-巡检中;4-已完成;5-已退单;6-待巡检 + private Long clientId; // 客户id + private Long deviceId; // 设备id + private Long receiverId; // 接单人id + private Date receiverTime; // 接单时间 + private String remark; // 备注 + private Integer creatorId; // 创建人id + private Integer receiverType; // 接单类型 0-区域派单;1-距离派单 + private BigDecimal orderDistance; // 订单距离 + private String clientName; // 客户名称 + private String deviceNumber; //设备编号 + private String deviceName; //设备名称 + private String detailedAddress; // 设备详细地址 + private String receiverName; // 接单人名称 + +} diff --git a/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java new file mode 100644 index 0000000..56a3b50 --- /dev/null +++ b/front/src/main/java/com/hcy/front/vo/order/RoutingInspectionOrderListVo.java @@ -0,0 +1,27 @@ +package com.hcy.front.vo.order; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * RoutingInspectionOrderVo + */ +@Data +public class RoutingInspectionOrderListVo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; // 主键id + private String orderNo; // 订单编号 + private Date orderAccomplishTime; // 订单完成时间 + private Long clientId; // 客户id + private String clientName; // 客户名称 + private Long deviceId; // 设备id + private String deviceNumber; //设备编号 + private String deviceName; //设备名称 + private String detailedAddress; // 设备详细地址 + private String createTime; // 创建时间 + private Long inspectionOrderStatus; // 订单状态 0-待抢单;1-待接单;2-接单超时;3-巡检中;4-已完成;5-已退单;6-待巡检 +} diff --git a/front/src/main/resources/application-dev.yml b/front/src/main/resources/application-dev.yml index 3ad8ab0..b7edb76 100644 --- a/front/src/main/resources/application-dev.yml +++ b/front/src/main/resources/application-dev.yml @@ -6,7 +6,7 @@ like: spring: # 数据源配置 datasource: - url: jdbc:mysql://192.168.4.107:3306/homemaking?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false + url: jdbc:mysql://192.168.4.107:3306/charging_pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false type: com.zaxxer.hikari.HikariDataSource # 数据源类型 driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 diff --git a/front/src/main/resources/application.yml b/front/src/main/resources/application.yml index 89ed893..c2b234d 100644 --- a/front/src/main/resources/application.yml +++ b/front/src/main/resources/application.yml @@ -20,7 +20,7 @@ spring: static-path-pattern: /api/static/** # 数据源配置 datasource: - url: jdbc:mysql://192.168.4.107:3306/homemaking?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false + url: jdbc:mysql://192.168.4.107:3306/charging_pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false type: com.zaxxer.hikari.HikariDataSource # 数据源类型 driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 diff --git a/front/target/classes/application-dev.yml b/front/target/classes/application-dev.yml index 3ad8ab0..b7edb76 100644 --- a/front/target/classes/application-dev.yml +++ b/front/target/classes/application-dev.yml @@ -6,7 +6,7 @@ like: spring: # 数据源配置 datasource: - url: jdbc:mysql://192.168.4.107:3306/homemaking?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false + url: jdbc:mysql://192.168.4.107:3306/charging_pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false type: com.zaxxer.hikari.HikariDataSource # 数据源类型 driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号 diff --git a/front/target/classes/application.yml b/front/target/classes/application.yml index 89ed893..c2b234d 100644 --- a/front/target/classes/application.yml +++ b/front/target/classes/application.yml @@ -20,7 +20,7 @@ spring: static-path-pattern: /api/static/** # 数据源配置 datasource: - url: jdbc:mysql://192.168.4.107:3306/homemaking?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false + url: jdbc:mysql://192.168.4.107:3306/charging_pile?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false type: com.zaxxer.hikari.HikariDataSource # 数据源类型 driver-class-name: com.mysql.jdbc.Driver # MySql的驱动 username: root # 数据库账号