【admin】修复# 1.修复检修订单抢单,接单,退单问题

dev
dabin 2024-08-24 23:40:04 +08:00
parent 27b199adfe
commit a253e2f104
46 changed files with 1527 additions and 377 deletions

View File

@ -1,54 +0,0 @@
package com.hcy.admin.service.order;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.OrderPartParam;
import com.hcy.admin.vo.order.OrderPartDetailVo;
import com.hcy.admin.vo.order.OrderPartListVo;
import com.hcy.common.core.PageResult;
import java.util.Map;
/**
*
*/
public interface IOrderPartService {
/**
*
*
* @param pageParam
* @param params
* @return PageResult<OrderPartVo>
*/
PageResult<OrderPartListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
*
* @param id ID
* @return OrderPart
*/
OrderPartDetailVo detail(Integer id);
/**
*
*
* @param orderPartParam
*/
void add(OrderPartParam orderPartParam);
/**
*
*
* @param orderPartParam
*/
void edit(OrderPartParam orderPartParam);
/**
*
*
* @param id ID
*/
void del(Long id);
}

View File

@ -218,7 +218,14 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
Assert.notNull(model, "数据不存在!");
if(model.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus() ||
model.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){
model.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()
|| model.getOrderStatus() == MaintenanceOrderStatusEnum.CHARGEBACK.getStatus()
|| model.getOrderStatus() == MaintenanceOrderStatusEnum.ORDER_TIMEOUT.getStatus()){
//重新指派员工
if(param.getReceiverId() != null && param.getId() != null){
model.setOrderStatus(MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus());
}
model.setReceiverId(param.getReceiverId());
model.setReceiverType(param.getReceiverType());
model.setOrderDistance(param.getOrderDistance());

View File

@ -1,154 +0,0 @@
package com.hcy.admin.service.order.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.service.order.IOrderPartService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.OrderPartParam;
import com.hcy.admin.vo.order.MaintenanceOrderListVo;
import com.hcy.admin.vo.order.OrderPartDetailVo;
import com.hcy.admin.vo.order.OrderPartListVo;
import com.hcy.common.core.PageResult;
import com.hcy.common.entity.order.MaintenanceOrder;
import com.hcy.common.entity.order.OrderPart;
import com.hcy.common.mapper.order.OrderPartMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.*;
/**
*
*/
@Service
public class OrderPartServiceImpl implements IOrderPartService {
@Resource
OrderPartMapper orderPartMapper;
/**
*
*
* @param pageParam
* @param params
* @return PageResult<OrderPartListVo>
*/
@Override
public PageResult<OrderPartListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<OrderPart> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
orderPartMapper.setSearch(queryWrapper, params, new String[]{
"=:partCode@part_code:str",
"like:partName@part_name:str",
"=:specificationModel@specification_model:str",
"=:unit:str",
"=:price:str",
"=:quantity:long",
"=:totalPrice@total_price:str",
});
IPage<OrderPart> iPage = orderPartMapper.selectPage(new Page<>(page, limit), queryWrapper);
List<OrderPartListVo> list = new LinkedList<>();
for(OrderPart item : iPage.getRecords()) {
OrderPartListVo vo = new OrderPartListVo();
BeanUtils.copyProperties(item, vo);
list.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**
*
*
* @param id
* @return OrderPart
*/
@Override
public OrderPartDetailVo detail(Integer id) {
OrderPart model = orderPartMapper.selectOne(
new QueryWrapper<OrderPart>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
OrderPartDetailVo vo = new OrderPartDetailVo();
BeanUtils.copyProperties(model, vo);
return vo;
}
/**
*
*
* @param orderPartParam
*/
@Override
public void add(OrderPartParam orderPartParam) {
OrderPart model = new OrderPart();
model.setPartCode(orderPartParam.getPartCode());
model.setPartName(orderPartParam.getPartName());
model.setSpecificationModel(orderPartParam.getSpecificationModel());
model.setUnit(orderPartParam.getUnit());
model.setPrice(orderPartParam.getPrice());
model.setQuantity(orderPartParam.getQuantity());
model.setTotalPrice(orderPartParam.getTotalPrice());
orderPartMapper.insert(model);
}
/**
*
*
* @param orderPartParam
*/
@Override
public void edit(OrderPartParam orderPartParam) {
OrderPart model = orderPartMapper.selectOne(
new QueryWrapper<OrderPart>()
.eq("id", orderPartParam.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(orderPartParam.getId());
model.setPartCode(orderPartParam.getPartCode());
model.setPartName(orderPartParam.getPartName());
model.setSpecificationModel(orderPartParam.getSpecificationModel());
model.setUnit(orderPartParam.getUnit());
model.setPrice(orderPartParam.getPrice());
model.setQuantity(orderPartParam.getQuantity());
model.setTotalPrice(orderPartParam.getTotalPrice());
orderPartMapper.updateById(model);
}
/**
*
*
* @param id ID
*/
@Override
public void del(Long id) {
OrderPart model = orderPartMapper.selectOne(
new QueryWrapper<OrderPart>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setIsDelete(1);
orderPartMapper.updateById(model);
}
}

View File

@ -1,54 +0,0 @@
package com.hcy.admin.validate.order;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OrderPartParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
@NotNull(message = "partCode参数缺失", groups = {create.class, update.class})
@Length(max = 100, message = "partCode参数不能超出100个字符", groups = {create.class, update.class})
private String partCode;
@NotNull(message = "partName参数缺失", groups = {create.class, update.class})
@Length(max = 50, message = "partName参数不能超出50个字符", groups = {create.class, update.class})
private String partName;
@NotNull(message = "specificationModel参数缺失", groups = {create.class, update.class})
@Length(max = 50, message = "specificationModel参数不能超出50个字符", groups = {create.class, update.class})
private String specificationModel;
@NotNull(message = "unit参数缺失", groups = {create.class, update.class})
@Length(max = 20, message = "unit参数不能超出20个字符", groups = {create.class, update.class})
private String unit;
@NotNull(message = "price参数缺失", groups = {create.class, update.class})
private BigDecimal price;
@NotNull(message = "quantity参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class})
private Long quantity;
@NotNull(message = "totalPrice参数缺失", groups = {create.class, update.class})
private BigDecimal totalPrice;
}

View File

@ -1,25 +0,0 @@
package com.hcy.admin.vo.order;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* OrderPartVo
*/
@Data
public class OrderPartDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private String partCode; // 备件编码
private String partName; // 备件名称
private String specificationModel; // 规格型号
private String unit; // 单位
private BigDecimal price; // 价格
private Long quantity; // 数量
private BigDecimal totalPrice; // 总价
}

View File

@ -1,25 +0,0 @@
package com.hcy.admin.vo.order;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* OrderPartVo
*/
@Data
public class OrderPartListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private String partCode; // 备件编码
private String partName; // 备件名称
private String specificationModel; // 规格型号
private String unit; // 单位
private BigDecimal price; // 价格
private Long quantity; // 数量
private BigDecimal totalPrice; // 总价
}

View File

@ -0,0 +1,33 @@
package com.hcy.common.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*
*/
@Data
public class SparePartDto implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Long id; // 主键id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号
private String unit; // 单位
private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价
private Integer isDelete; // 是否删除: [0=否, 1=是]
private Long createTime; // 创建时间
private Long updateTime; // 更新时间
private Long deleteTime; // 删除时间
private String keywords; // 关键字
}

View File

@ -58,4 +58,6 @@ public class MaintenanceOrderDto implements Serializable {
private Long equipmentCityId; //设备市id
private double longitude; //经度
private double latitude; //纬度
private String orderStatusIds; //订单状态ids
private String likeWork; //关键字
}

View File

@ -0,0 +1,32 @@
package com.hcy.common.dto.order;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*
*/
@Data
public class OrderSparePart implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Long id; // id
private Long maintenanceOrderId; //检修单id
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private String warehouseName; // 所属仓库名称
private String specificationsModel; // 规格型号
private String unit; // 单位
private BigDecimal price; // 价格
private Long quantity; // 数量
private BigDecimal totalPrice; // 总价
private Integer isDelete; // 是否删除 0-未删除 1-删除
}

View File

@ -35,6 +35,7 @@ public class MaintenanceOrder implements Serializable {
private BigDecimal orderDistance; // 订单距离
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
@TableField(value = "receiver_id",updateStrategy = FieldStrategy.IGNORED)
private Long receiverId; // 接单人id
private Long repairId; // 返修id
private Date receiverTime; // 接单时间

View File

@ -4,6 +4,8 @@ import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import com.hcy.common.entity.client.Client;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -20,4 +22,6 @@ public interface ClientMapper extends IBaseMapper<Client> {
*/
List<ClientLargeDataDto> clientEquipmentList();
@Select("select * from la_client where is_delete = 0 and id = #{id}")
Client findClientById(@Param("id") Long id);
}

View File

@ -4,6 +4,8 @@ import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.largeDataDto.ClientLargeDataDto;
import com.hcy.common.entity.client.Equipment;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@ -19,5 +21,4 @@ public interface EquipmentMapper extends IBaseMapper<Equipment> {
* @return
*/
List<ClientLargeDataDto> provinceEquipment();
}

View File

@ -3,6 +3,8 @@ package com.hcy.common.mapper.fault;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.entity.fault.Fault;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* Mapper
@ -10,4 +12,6 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface FaultMapper extends IBaseMapper<Fault> {
@Select("select * from la_fault where is_delete = 0 and id = #{id}")
Fault findFaultById(@Param("id") Long id);
}

View File

@ -18,12 +18,12 @@ public interface MaintenanceOrderMapper extends IBaseMapper<MaintenanceOrder> {
Page<MaintenanceOrderDto> list(Page page,@Param("param") MaintenanceOrderDto maintenanceOrderDto);
List<MaintenanceOrderDto> list(MaintenanceOrderDto maintenanceOrderDto);
List<MaintenanceOrderDto> list(@Param("param") MaintenanceOrderDto maintenanceOrderDto);
/**
* id
* @return MaintenanceOrder
*/
@Select("select * from lc_maintenance_order where is_delete = 0 and id = #{id}")
@Select("select * from la_maintenance_order where is_delete = 0 and id = #{id}")
MaintenanceOrder findMaintenanceOrderById(@Param("id") Long id);
}

View File

@ -0,0 +1,12 @@
package com.hcy.common.mapper.order;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.order.OrderSparePart;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*/
@Mapper
public interface OrderSparePartMapper extends IBaseMapper<OrderSparePart> {
}

View File

@ -1,13 +1,24 @@
package com.hcy.common.mapper.sparePart;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.page.PageParams;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.SparePartDto;
import com.hcy.common.entity.sparePart.SparePart;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* Mapper
*/
@Mapper
public interface SparePartMapper extends IBaseMapper<SparePart> {
Page<SparePartDto> pageList(Page page,@Param("param") SparePartDto sparePartDto);
@Select("select * from la_spare_part where is_delete = 0 and id = #{id}")
SparePart findSparePart(@Param("id") Long id);
}

View File

@ -7,6 +7,7 @@ import com.hcy.common.dto.largeDataDto.AdminLargeDataDto;
import com.hcy.common.entity.system.SystemAuthAdmin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* Mapper
@ -21,4 +22,7 @@ public interface SystemAuthAdminMapper extends IBaseMapper<SystemAuthAdmin> {
* @return
*/
AdminLargeDataDto personnelStatistics();
@Select("select * from la_system_auth_admin where is_delete = 0 and user_id = #{userId}")
SystemAuthAdmin findSystemAuthAdminByUserId(@Param("userId") Integer userId);
}

View File

@ -4,10 +4,14 @@ package com.hcy.common.mapper.warehouse;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.entity.warehouse.Warehouse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
/**
* Mapper
*/
@Mapper
public interface WarehouseMapper extends IBaseMapper<Warehouse> {
@Select("select * from la_warehouse where is_delete = 0 and id = #{id}")
Warehouse findWarehouseById(Long id);
}

View File

@ -44,6 +44,18 @@
<if test="param.orderStatus != null">
and find_in_set(lmo.order_status,#{param.orderStatus})
</if>
<if test="param.receiverId != null">
and lmo.receiver_id = #{param.receiverId}
</if>
<if test="param.orderStatusIds != null and param.orderStatusIds != ''">
and find_in_set(lmo.order_status,#{param.orderStatusIds})
</if>
<if test="param.likeWork != null and param.likeWork != ''">
and (le.number like concat('%',#{param.likeWork},'%')
or lmo.order_no like concat('%',#{param.likeWork},'%')
or lc.client_name like concat('%',#{param.likeWork},'%'))
</if>
</where>
order by create_time desc
</select>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hcy.common.mapper.sparePart.SparePartMapper">
<select id="pageList" resultType="com.hcy.common.dto.SparePartDto">
SELECT
lsp.*,
lw.warehouse_name as warehouseName
FROM
la_spare_part AS lsp
LEFT JOIN la_warehouse AS lw ON lw.id = lsp.warehouse_id
<where>
lsp.is_delete = 0
<if test="param.keywords != null and param.keywords != ''">
and (lsp.spare_parts_code like concat('%',#{param.keywords},'%') or
lsp.spare_parts_name like concat('%',#{param.keywords},'%') or
lw.warehouse_name like concat('%',#{param.keywords},'%'))
</if>
</where>
</select>
</mapper>

View File

@ -44,6 +44,18 @@
<if test="param.orderStatus != null">
and find_in_set(lmo.order_status,#{param.orderStatus})
</if>
<if test="param.receiverId != null">
and lmo.receiver_id = #{param.receiverId}
</if>
<if test="param.orderStatusIds != null and param.orderStatusIds != ''">
and find_in_set(lmo.order_status,#{param.orderStatusIds})
</if>
<if test="param.likeWork != null and param.likeWork != ''">
and (le.number like concat('%',#{param.likeWork},'%')
or lmo.order_no like concat('%',#{param.likeWork},'%')
or lc.client_name like concat('%',#{param.likeWork},'%'))
</if>
</where>
order by create_time desc
</select>

View File

@ -35,6 +35,11 @@ public class MaintenanceOrderController {
return AjaxResult.success(iMaintenanceOrderService.list(maintenanceOrderParam));
}
@GetMapping("/pageList")
public Object pageList(@Validated PageParam pageParam,MaintenanceOrderParam maintenanceOrderParam) {
return AjaxResult.success(iMaintenanceOrderService.pageList(pageParam,maintenanceOrderParam));
}
/**
*
* @param maintenanceOrderParam
@ -62,9 +67,9 @@ public class MaintenanceOrderController {
* @param maintenanceOrderParam
* @return Object
*/
@PostMapping("/checking")
public Object checking(@RequestBody MaintenanceOrderParam maintenanceOrderParam) {
iMaintenanceOrderService.checking(maintenanceOrderParam);
@PostMapping("/refundOrder")
public Object refundOrder(@RequestBody MaintenanceOrderParam maintenanceOrderParam) {
iMaintenanceOrderService.refundOrder(maintenanceOrderParam);
return AjaxResult.success();
}
@ -74,7 +79,18 @@ public class MaintenanceOrderController {
* @return Object
*/
@GetMapping("/detail")
public Object detail() {
return AjaxResult.success(iMaintenanceOrderService.detail());
public Object detail(Long id) {
return AjaxResult.success(iMaintenanceOrderService.detail(id));
}
/**
*
* @param maintenanceOrderParam
* @return Object
*/
@PostMapping("/serviceOfferPrice")
public Object serviceOfferPrice(@RequestBody MaintenanceOrderParam maintenanceOrderParam) {
iMaintenanceOrderService.serviceOfferPrice(maintenanceOrderParam);
return AjaxResult.success();
}
}

View File

@ -1,14 +1,13 @@
package com.hcy.admin.controller.order;
package com.hcy.front.controller.order;
import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.order.IOrderPartService;
import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.OrderPartParam;
import com.hcy.admin.vo.order.OrderPartDetailVo;
import com.hcy.admin.vo.order.OrderPartListVo;
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.IOrderSparePartService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.OrderSparePartParam;
import com.hcy.front.vo.order.OrderSparePartDetailVo;
import com.hcy.front.vo.order.OrderSparePartListVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@ -20,10 +19,10 @@ import java.util.Map;
*/
@RestController
@RequestMapping("api/part")
public class OrderPartController {
public class OrderSparePartController {
@Resource
IOrderPartService iOrderPartService;
IOrderSparePartService iOrderSparePartService;
/**
*
@ -35,7 +34,7 @@ public class OrderPartController {
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<OrderPartListVo> list = iOrderPartService.list(pageParam, params);
PageResult<OrderSparePartListVo> list = iOrderSparePartService.list(pageParam, params);
return AjaxResult.success(list);
}
/**
@ -46,46 +45,43 @@ public class OrderPartController {
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
OrderPartDetailVo detail = iOrderPartService.detail(id);
OrderSparePartDetailVo detail = iOrderSparePartService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
* @param orderPartParam
* @param orderSparePartParam
* @return Object
*/
@Log(title = "订单配件新增")
@PostMapping("/add")
public Object add(@Validated(value = OrderPartParam.create.class) @RequestBody OrderPartParam orderPartParam) {
iOrderPartService.add(orderPartParam);
public Object add(@Validated(value = OrderSparePartParam.create.class) @RequestBody OrderSparePartParam orderSparePartParam) {
iOrderSparePartService.add(orderSparePartParam);
return AjaxResult.success();
}
/**
*
*
* @param orderPartParam
* @param orderSparePartParam
* @return Object
*/
@Log(title = "订单配件编辑")
@PostMapping("/edit")
public Object edit(@Validated(value = OrderPartParam.update.class) @RequestBody OrderPartParam orderPartParam) {
iOrderPartService.edit(orderPartParam);
public Object edit(@Validated(value = OrderSparePartParam.update.class) @RequestBody OrderSparePartParam orderSparePartParam) {
iOrderSparePartService.edit(orderSparePartParam);
return AjaxResult.success();
}
/**
*
*
* @param orderPartParam
* @param orderSparePartParam
* @return Object
*/
@Log(title = "订单配件删除")
@PostMapping("/del")
public Object del(@Validated(value = OrderPartParam.delete.class) @RequestBody OrderPartParam orderPartParam) {
iOrderPartService.del(orderPartParam.getId());
public Object del(@Validated(value = OrderSparePartParam.delete.class) @RequestBody OrderSparePartParam orderSparePartParam) {
iOrderSparePartService.del(orderSparePartParam.getId());
return AjaxResult.success();
}

View File

@ -0,0 +1,51 @@
package com.hcy.front.controller.warehouse;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.warehouse.ISparePartService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.warehouse.SparePartDetailVo;
import com.hcy.front.vo.warehouse.SparePartListVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
*
*/
@RestController
@RequestMapping("api/sparePart")
public class SparePartController {
@Resource
ISparePartService iSparePartService;
/**
*
*
* @author hcy
* @param pageParam
* @param param
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam, SparePartParam param) {
PageResult<SparePartListVo> list = iSparePartService.list(pageParam, param);
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
SparePartDetailVo detail = iSparePartService.detail(id);
return AjaxResult.success(detail);
}
}

View File

@ -0,0 +1,102 @@
package com.hcy.front.controller.warehouse;
import com.alibaba.fastjson.JSONArray;
import com.hcy.common.core.AjaxResult;
import com.hcy.common.validator.annotation.IDMust;
import com.hcy.front.service.warehouse.IWarehouseService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.warehouse.WarehouseParam;
import com.hcy.front.vo.warehouse.WarehouseDetailVo;
import com.hcy.front.vo.warehouse.WarehouseVo;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
*
*/
@RestController
@RequestMapping("api/warehouse")
public class WarehouseController {
@Resource
IWarehouseService iWarehouseService;
/**
*
*
* @author hcy
* @param params
* @return Object
*/
@GetMapping("/list")
public Object list(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
JSONArray list = iWarehouseService.list(params);
return AjaxResult.success(list);
}
/**
*
*
* @author hcy
* @param id ID
* @return Object
*/
@GetMapping("/detail")
public Object detail(@Validated @IDMust() @RequestParam("id") Integer id) {
WarehouseDetailVo detail = iWarehouseService.detail(id);
return AjaxResult.success(detail);
}
/**
*
*
* @author hcy
* @param warehouseParam
* @return Object
*/
@PostMapping("/add")
public Object add(@Validated(value = WarehouseParam.create.class) @RequestBody WarehouseParam warehouseParam) {
iWarehouseService.add(warehouseParam);
return AjaxResult.success();
}
/**
*
*
* @author hcy
* @param warehouseParam
* @return Object
*/
@PostMapping("/edit")
public Object edit(@RequestBody WarehouseParam warehouseParam) {
iWarehouseService.edit(warehouseParam);
return AjaxResult.success();
}
/**
*
*
* @author hcy
* @param warehouseParam
* @return Object
*/
@PostMapping("/del")
public Object del(@RequestBody WarehouseParam warehouseParam) {
iWarehouseService.del(warehouseParam.getIds());
return AjaxResult.success();
}
//新增接口传入仓库id时查询仓库下的所有子仓库及子仓库的内容
/**
* id
*/
@GetMapping("/selectWarehouseData")
public Object selectSubcolumnData(WarehouseVo warehouseVo) {
WarehouseVo warehouseVo1 = iWarehouseService.selectWarehouseData(warehouseVo);
return AjaxResult.success(warehouseVo1);
}
}

View File

@ -21,6 +21,8 @@ public interface IMaintenanceOrderService {
*/
List<MaintenanceOrderListVo> list(MaintenanceOrderParam maintenanceOrderParam);
PageResult<MaintenanceOrderListVo> pageList(PageParam pageParam,MaintenanceOrderParam maintenanceOrderParam);
/**
*
* @param maintenanceOrderParam
@ -37,11 +39,17 @@ public interface IMaintenanceOrderService {
* 退
* @param maintenanceOrderParam
*/
void checking(MaintenanceOrderParam maintenanceOrderParam);
void refundOrder(MaintenanceOrderParam maintenanceOrderParam);
/**
*
* @return MaintenanceOrderDetailVo
*/
MaintenanceOrderDetailVo detail();
MaintenanceOrderDetailVo detail(Long id);
/**
* 退
* @param maintenanceOrderParam
*/
void serviceOfferPrice(MaintenanceOrderParam maintenanceOrderParam);
}

View File

@ -0,0 +1,54 @@
package com.hcy.front.service.order;
import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.OrderSparePartParam;
import com.hcy.front.vo.order.OrderSparePartDetailVo;
import com.hcy.front.vo.order.OrderSparePartListVo;
import java.util.Map;
/**
*
*/
public interface IOrderSparePartService {
/**
*
*
* @param pageParam
* @param params
* @return PageResult<OrderSparePartVo>
*/
PageResult<OrderSparePartListVo> list(PageParam pageParam, Map<String, String> params);
/**
*
*
* @param id ID
* @return OrderSparePart
*/
OrderSparePartDetailVo detail(Integer id);
/**
*
*
* @param orderSparePartParam
*/
void add(OrderSparePartParam orderSparePartParam);
/**
*
*
* @param orderSparePartParam
*/
void edit(OrderSparePartParam orderSparePartParam);
/**
*
*
* @param id ID
*/
void del(Long id);
}

View File

@ -7,10 +7,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.dto.order.MaintenanceOrderDto;
import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.entity.client.Client;
import com.hcy.common.entity.client.Equipment;
import com.hcy.common.entity.fault.Fault;
import com.hcy.common.entity.order.MaintenanceOrder;
import com.hcy.common.entity.sparePart.SparePart;
import com.hcy.common.entity.system.SystemAuthAdmin;
import com.hcy.common.entity.user.User;
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
@ -20,20 +22,24 @@ import com.hcy.common.mapper.client.ClientMapper;
import com.hcy.common.mapper.client.EquipmentMapper;
import com.hcy.common.mapper.fault.FaultMapper;
import com.hcy.common.mapper.order.MaintenanceOrderMapper;
import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.utils.StringUtil;
import com.hcy.common.utils.ToolsUtil;
import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.order.IMaintenanceOrderService;
import com.hcy.front.service.region.IDevRegionService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.MaintenanceOrderParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.order.MaintenanceOrderDetailVo;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.OrderStaffVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
@ -63,6 +69,12 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
@Resource
UserMapper userMapper;
@Resource
FaultMapper faultMapper;
@Resource
SparePartMapper sparePartMapper;
private final DecimalFormat df = new DecimalFormat ("#.#");
/**
@ -76,25 +88,43 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
MaintenanceOrderDto maintenanceOrderDto = new MaintenanceOrderDto();
BeanUtils.copyProperties(maintenanceOrderParam,maintenanceOrderDto);
//默认查询订单状态
if(maintenanceOrderParam.getOrderStatus() == null){
maintenanceOrderParam.setOrderStatus("1,2,7,8");
}
List<MaintenanceOrderDto> maintenanceOrderList = maintenanceOrderMapper.list(maintenanceOrderDto);
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(FrontThreadLocal.getUserId());
List<MaintenanceOrderListVo> returnData = new LinkedList<>();
for (MaintenanceOrderDto item : maintenanceOrderList) {
//判断抢单距离大于订单距离则返回订单
double distance = ToolsUtil.getDistance(item.getLongitude(), item.getLatitude()
, maintenanceOrderParam.getLongitude(), maintenanceOrderParam.getLatitude());
if(item.getOrderDistance().compareTo(BigDecimal.valueOf((distance / 1000))) >= 0){
// 计算距离
if(maintenanceOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){
//判断抢单距离大于订单距离则返回订单
double distance = ToolsUtil.getDistance(item.getLongitude(), item.getLatitude()
, maintenanceOrderParam.getLongitude(), maintenanceOrderParam.getLatitude());
if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){
if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) &&
item.getEquipmentCityId().equals(systemAuthAdmin.getCityId()) &&
item.getEquipmentDistrictId().equals(systemAuthAdmin.getDistrictId()) ){
// 计算距离
MaintenanceOrderListVo vo = new MaintenanceOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(distance);
returnData.add(vo);
}
}else{
if(item.getOrderDistance().compareTo(BigDecimal.valueOf((distance / 1000))) >= 0){
// 计算距离
MaintenanceOrderListVo vo = new MaintenanceOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(distance);
returnData.add(vo);
}
}
}else{
MaintenanceOrderListVo vo = new MaintenanceOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(String.valueOf(distance));
returnData.add(vo);
}
}
if(maintenanceOrderParam.getQueryType() == MaintenanceOrderStatusEnum.NEAREST_TO_ME.getStatus()){
@ -105,12 +135,14 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
//将米数转换为km
for (MaintenanceOrderListVo maintenanceOrderListVo : returnData) {
double distance = Double.parseDouble(maintenanceOrderListVo.getDistance());
if(distance < 1000){
maintenanceOrderListVo.setDistance(distance + "米");
}else{
double km = distance / 1000;
maintenanceOrderListVo.setDistance(df.format(km) + "km");
if(maintenanceOrderListVo.getDistance() != null){
double distance = maintenanceOrderListVo.getDistance();
if(distance < 1000){
maintenanceOrderListVo.setPracticalDistance(df.format(distance) + "米");
}else{
double km = distance / 1000;
maintenanceOrderListVo.setPracticalDistance(df.format(km) + "km");
}
}
}
}
@ -118,12 +150,35 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
return returnData;
}
@Override
public PageResult<MaintenanceOrderListVo> pageList(PageParam pageParam, MaintenanceOrderParam maintenanceOrderParam) {
MaintenanceOrderDto maintenanceOrderDto = new MaintenanceOrderDto();
BeanUtils.copyProperties(maintenanceOrderParam,maintenanceOrderDto);
maintenanceOrderDto.setReceiverId(FrontThreadLocal.getUserId().longValue());
if(maintenanceOrderParam.getOrderStatus() == null){
maintenanceOrderDto.setOrderStatusIds("1,2,7,8");
}
List<MaintenanceOrderListVo> returnData = new LinkedList<>();
Page<MaintenanceOrderDto> page = maintenanceOrderMapper.list(
new Page<>(pageParam.getPageNo(), pageParam.getPageSize()),maintenanceOrderDto);
for (MaintenanceOrderDto item : page.getRecords()) {
MaintenanceOrderListVo vo = new MaintenanceOrderListVo();
BeanUtils.copyProperties(item, vo);
returnData.add(vo);
}
return PageResult.iPageHandle(page.getTotal(), page.getCurrent(), page.getSize(), returnData);
}
@Override
public void grabTheOrder(MaintenanceOrderParam maintenanceOrderParam) {
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId());
Assert.notNull(maintenanceOrder, "数据不存在");
if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus()){
if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus()
&& maintenanceOrder.getReceiverId() == null){
maintenanceOrder.setReceiverId(FrontThreadLocal.getUserId().longValue());
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHECKING.getStatus());
maintenanceOrder.setReceiverTime(new Date());
@ -149,26 +204,34 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
}
@Override
public void checking(MaintenanceOrderParam maintenanceOrderParam) {
public void refundOrder(MaintenanceOrderParam maintenanceOrderParam) {
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId());
Assert.notNull(maintenanceOrder, "数据不存在");
Assert.notNull(maintenanceOrder.getCancelCause(), "单原因不可为空");
Assert.notNull(maintenanceOrderParam.getCancelCause(), "退单原因不可为空");
if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.CHECKING.getStatus()){
if(maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.CHECKING.getStatus() ||
maintenanceOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){
if(maintenanceOrder.getRepairWorkOrderFlow() == OrderStateEnum.WORK_ORDER_TANK.getStatus()){
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAITING_LIST.getStatus());
maintenanceOrder.setReceiverId(null);
}else{
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHARGEBACK.getStatus());
}
maintenanceOrder.setCancelOrderTime(new Date());
maintenanceOrder.setOrderStatus(MaintenanceOrderStatusEnum.CHARGEBACK.getStatus());
maintenanceOrder.setCancelCause(maintenanceOrderParam.getCancelCause());
maintenanceOrderMapper.updateById(maintenanceOrder);
}else{
throw new OperateException("订单状态不正确");
throw new OperateException("当前订单状态不可退单");
}
}
@Override
public MaintenanceOrderDetailVo detail() {
Integer userId = FrontThreadLocal.getUserId();
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(userId.longValue());
@Override
public MaintenanceOrderDetailVo detail(Long id) {
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(id);
Assert.notNull(maintenanceOrder, "数据不存在");
MaintenanceOrderDetailVo vo = new MaintenanceOrderDetailVo();
@ -182,6 +245,10 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
Equipment equipment = equipmentMapper.selectById(maintenanceOrder.getEquipmentId());
vo.setEquipment(equipment);
//设置故障信息
Fault fault = faultMapper.findFaultById(maintenanceOrder.getFaultId());
vo.setFaultName(fault.getName());
//设置接收人姓名
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.selectById(maintenanceOrder.getCreatorId());
vo.setCreatorName(systemAuthAdmin.getNickname());
@ -194,4 +261,27 @@ public class MaintenanceOrderServiceImpl implements IMaintenanceOrderService {
return vo;
}
@Override
public void serviceOfferPrice(MaintenanceOrderParam maintenanceOrderParam) {
MaintenanceOrder maintenanceOrder = maintenanceOrderMapper.findMaintenanceOrderById(maintenanceOrderParam.getId());
Assert.notNull(maintenanceOrder, "数据不存在");
maintenanceOrder.setFaultDescription(maintenanceOrderParam.getFaultDescription());
maintenanceOrder.setFaultImg(maintenanceOrderParam.getFaultImg());
Client client = clientMapper.findClientById(maintenanceOrder.getClientId());
for (SparePartParam item : maintenanceOrderParam.getSparePartParams()) {
SparePart sparePart = sparePartMapper.findSparePart(item.getId());
OrderSparePart orderSparePart = new OrderSparePart();
BeanUtils.copyProperties(sparePart, orderSparePart);
orderSparePart.setSparePartsId(item.getId());
}
maintenanceOrderMapper.updateById(maintenanceOrder);
}
}

View File

@ -0,0 +1,152 @@
package com.hcy.front.service.order.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.common.core.PageResult;
import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.mapper.order.OrderSparePartMapper;
import com.hcy.front.service.order.IOrderSparePartService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.order.OrderSparePartParam;
import com.hcy.front.vo.order.OrderSparePartDetailVo;
import com.hcy.front.vo.order.OrderSparePartListVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.*;
/**
*
*/
@Service
public class OrderSparePartServiceImpl implements IOrderSparePartService {
@Resource
OrderSparePartMapper orderSparePartMapper;
/**
*
*
* @param pageParam
* @param params
* @return PageResult<OrderSparePartListVo>
*/
@Override
public PageResult<OrderSparePartListVo> list(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<OrderSparePart> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
orderSparePartMapper.setSearch(queryWrapper, params, new String[]{
"=:sparePartsId@spare_parts_id:long",
"=:sparePartsCode@spare_parts_code:str",
"like:sparePartsName@spare_parts_name:str",
"like:warehouseName@warehouse_name:str",
"=:specificationsModel@specifications_model:str",
"=:unit:str",
"=:price:str",
"=:quantity:long",
"=:totalPrice@total_price:str",
});
IPage<OrderSparePart> iPage = orderSparePartMapper.selectPage(new Page<>(page, limit), queryWrapper);
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), null);
}
/**
*
*
* @param id
* @return OrderSparePart
*/
@Override
public OrderSparePartDetailVo detail(Integer id) {
OrderSparePart model = orderSparePartMapper.selectOne(
new QueryWrapper<OrderSparePart>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
OrderSparePartDetailVo vo = new OrderSparePartDetailVo();
BeanUtils.copyProperties(model, vo);
return vo;
}
/**
*
*
* @param orderSparePartParam
*/
@Override
public void add(OrderSparePartParam orderSparePartParam) {
OrderSparePart model = new OrderSparePart();
model.setSparePartsId(orderSparePartParam.getSparePartsId());
model.setSparePartsCode(orderSparePartParam.getSparePartsCode());
model.setSparePartsName(orderSparePartParam.getSparePartsName());
model.setWarehouseName(orderSparePartParam.getWarehouseName());
model.setSpecificationsModel(orderSparePartParam.getSpecificationsModel());
model.setUnit(orderSparePartParam.getUnit());
model.setPrice(orderSparePartParam.getPrice());
model.setQuantity(orderSparePartParam.getQuantity());
model.setTotalPrice(orderSparePartParam.getTotalPrice());
orderSparePartMapper.insert(model);
}
/**
*
*
* @param orderSparePartParam
*/
@Override
public void edit(OrderSparePartParam orderSparePartParam) {
OrderSparePart model = orderSparePartMapper.selectOne(
new QueryWrapper<OrderSparePart>()
.eq("id", orderSparePartParam.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(orderSparePartParam.getId());
model.setSparePartsId(orderSparePartParam.getSparePartsId());
model.setSparePartsCode(orderSparePartParam.getSparePartsCode());
model.setSparePartsName(orderSparePartParam.getSparePartsName());
model.setWarehouseName(orderSparePartParam.getWarehouseName());
model.setSpecificationsModel(orderSparePartParam.getSpecificationsModel());
model.setUnit(orderSparePartParam.getUnit());
model.setPrice(orderSparePartParam.getPrice());
model.setQuantity(orderSparePartParam.getQuantity());
model.setTotalPrice(orderSparePartParam.getTotalPrice());
orderSparePartMapper.updateById(model);
}
/**
*
*
* @param id ID
*/
@Override
public void del(Long id) {
OrderSparePart model = orderSparePartMapper.selectOne(
new QueryWrapper<OrderSparePart>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setIsDelete(1);
orderSparePartMapper.updateById(model);
}
}

View File

@ -0,0 +1,35 @@
package com.hcy.front.service.warehouse;
import com.hcy.common.core.PageResult;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.warehouse.SparePartDetailVo;
import com.hcy.front.vo.warehouse.SparePartListVo;
import java.util.List;
import java.util.Map;
/**
*
*/
public interface ISparePartService {
/**
*
*
* @author hcy
* @param pageParam
* @param param
* @return PageResult<SparePartVo>
*/
PageResult<SparePartListVo> list(PageParam pageParam, SparePartParam param);
/**
*
*
* @author hcy
* @param id ID
* @return SparePart
*/
SparePartDetailVo detail(Integer id);
}

View File

@ -0,0 +1,59 @@
package com.hcy.front.service.warehouse;
import com.alibaba.fastjson.JSONArray;
import com.hcy.front.validate.warehouse.WarehouseParam;
import com.hcy.front.vo.warehouse.WarehouseDetailVo;
import com.hcy.front.vo.warehouse.WarehouseVo;
import java.util.Map;
/**
*
*/
public interface IWarehouseService {
/**
*
*
* @author hcy
* @param params
* @return JSONArray
*/
JSONArray list(Map<String, String> params);
/**
*
*
* @author hcy
* @param id ID
* @return Warehouse
*/
WarehouseDetailVo detail(Integer id);
/**
*
*
* @author hcy
* @param warehouseParam
*/
void add(WarehouseParam warehouseParam);
/**
*
*
* @author hcy
* @param warehouseParam
*/
void edit(WarehouseParam warehouseParam);
/**
*
*
* @author hcy
* @param ids
*/
void del(Long[] ids);
WarehouseVo selectWarehouseData(WarehouseVo warehouseVo);
}

View File

@ -0,0 +1,124 @@
package com.hcy.front.service.warehouse.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.dto.SparePartDto;
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;
import com.hcy.common.utils.TimeUtil;
import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.warehouse.ISparePartService;
import com.hcy.front.validate.PageParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.warehouse.SparePartDetailVo;
import com.hcy.front.vo.warehouse.SparePartListVo;
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.math.BigDecimal;
import java.util.*;
/**
*
*/
@Service
public class SparePartServiceImpl implements ISparePartService {
@Resource
SparePartMapper sparePartMapper;
@Resource
WarehouseMapper warehouseMapper;
@Resource
ClientMapper clientMapper;
@Resource
ClientContactsMapper clientContactsMapper;
/**
*
*
* @author hcy
* @param pageParam
* @param param
* @return PageResult<SparePartListVo>
*/
@Override
public PageResult<SparePartListVo> list(PageParam pageParam, SparePartParam param) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
Assert.notNull(param.getClientId(),"客户id不可为空");
SparePartDto sparePartDto = new SparePartDto();
BeanUtils.copyProperties(param,sparePartDto);
Client client = clientMapper.findClientById(param.getClientId());
Map<Long,String> warehouseMap = new HashMap<>();
List<SparePartListVo> sparePartList = new ArrayList<>();
IPage<SparePartDto> iPage = sparePartMapper.pageList(new Page<>(page, limit),sparePartDto);
for (SparePartDto item : iPage.getRecords()) {
SparePartListVo sparePartListVo = new SparePartListVo();
BeanUtils.copyProperties(item, sparePartListVo);
//设置订单实际价格
BigDecimal practicalPrice = item.getUnitPrice().multiply(client.getPurchaseDivisor());
sparePartListVo.setUnitPrice(practicalPrice);
if(warehouseMap.get(item.getWarehouseId()) == null){
Warehouse warehouse = warehouseMapper.findWarehouseById(item.getWarehouseId());
sparePartListVo.setWarehouseName(warehouse.getWarehouseName());
warehouseMap.put(warehouse.getId(),warehouse.getWarehouseName());
}else{
sparePartListVo.setWarehouseName(warehouseMap.get(item.getWarehouseId()));
}
sparePartList.add(sparePartListVo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), sparePartList);
}
/**
*
*
* @author hcy
* @param id
* @return SparePart
*/
@Override
public SparePartDetailVo detail(Integer id) {
SparePart model = sparePartMapper.selectOne(
new QueryWrapper<SparePart>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
SparePartDetailVo vo = new SparePartDetailVo();
BeanUtils.copyProperties(model, vo);
//获取仓库名
Warehouse warehouse = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", model.getWarehouseId())
.eq("is_delete", 0)
.last("limit 1"));
vo.setWarehouseName(warehouse.getWarehouseName());
return vo;
}
}

View File

@ -0,0 +1,262 @@
package com.hcy.front.service.warehouse.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.entity.sparePart.SparePart;
import com.hcy.common.entity.warehouse.Warehouse;
import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.utils.ArrayUtil;
import com.hcy.common.utils.TimeUtil;
import com.hcy.front.service.warehouse.IWarehouseService;
import com.hcy.front.validate.warehouse.WarehouseParam;
import com.hcy.front.vo.warehouse.SparePartDetailVo;
import com.hcy.front.vo.warehouse.WarehouseDetailVo;
import com.hcy.front.vo.warehouse.WarehouseVo;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
*
*/
@Service
public class WarehouseServiceImpl implements IWarehouseService {
@Resource
WarehouseMapper warehouseMapper;
@Resource
SparePartMapper sparePartMapper;
/**
*
*
* @author hcy
* @param params
* @return JSONArray
*/
@Override
public JSONArray list(Map<String, String> params) {
QueryWrapper<Warehouse> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("is_delete", 0);
queryWrapper.orderByDesc("id");
warehouseMapper.setSearch(queryWrapper, params, new String[]{
"=:parentId@parent_id:long",
"like:warehouseName@warehouse_name:str",
"like:warehouseCoding@warehouse_coding:str",
"=:warehouseAddress@warehouse_address:str",
});
List<Warehouse> array = warehouseMapper.selectList(queryWrapper);
List<WarehouseDetailVo> lists = new LinkedList<>();
for (Warehouse warehouse : array) {
WarehouseDetailVo vo = new WarehouseDetailVo();
BeanUtils.copyProperties(warehouse, vo);
vo.setCreateTime(TimeUtil.timestampToDate(warehouse.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(warehouse.getUpdateTime()));
lists.add(vo);
}
JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(lists));
return ArrayUtil.listToTree(jsonArray, "id", "pid", "children");
}
/**
*
*
* @author hcy
* @param id
* @return Warehouse
*/
@Override
public WarehouseDetailVo detail(Integer id) {
Warehouse model = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在");
WarehouseDetailVo vo = new WarehouseDetailVo();
BeanUtils.copyProperties(model, vo);
return vo;
}
/**
*
*
* @author hcy
* @param warehouseParam
*/
@Override
public void add(WarehouseParam warehouseParam) {
Warehouse model = new Warehouse();
model.setPid(warehouseParam.getPid());
model.setWarehouseName(warehouseParam.getWarehouseName());
model.setWarehouseCoding(warehouseParam.getWarehouseCoding());
model.setWarehouseAddress(warehouseParam.getWarehouseAddress());
model.setCreateTime(System.currentTimeMillis() / 1000);
warehouseMapper.insert(model);
}
/**
*
*
* @author hcy
* @param warehouseParam
*/
@Override
public void edit(WarehouseParam warehouseParam) {
Warehouse model = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.eq("id", warehouseParam.getId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
model.setId(warehouseParam.getId());
model.setPid(warehouseParam.getPid());
model.setWarehouseName(warehouseParam.getWarehouseName());
model.setWarehouseCoding(warehouseParam.getWarehouseCoding());
model.setWarehouseAddress(warehouseParam.getWarehouseAddress());
model.setUpdateTime(System.currentTimeMillis() / 1000);
warehouseMapper.updateById(model);
}
/**
*
*
* @author hcy
* @param ids ID
*/
@Override
public void del(Long[] ids) {
List<Warehouse> modelList = warehouseMapper.selectList(
new QueryWrapper<Warehouse>()
.in("id", ids));
for (Long id : ids) {
//仓库存在配件且配件数量不为0时不允许删除
SparePart sparePart = sparePartMapper.selectOne(
new QueryWrapper<SparePart>()
.eq("warehouse_id", id)
.eq("is_delete", 0)
.last("limit 1"));
if(sparePart != null && sparePart.getQuantity() != 0){
}else{
Warehouse pModel = warehouseMapper.selectOne(
new QueryWrapper<Warehouse>()
.select("id,pid,warehouse_name")
.eq("pid", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.isNull(pModel, "请先删除子级仓库");
}
}
// GlobalConstant.NOT_DELETE 调用未删除常量
// GlobalConstant.DELETE 删除标识
for (Warehouse warehouse : modelList) {
warehouse.setIsDelete(GlobalConstant.DELETE);
warehouse.setDeleteTime(System.currentTimeMillis() / 1000);
warehouseMapper.updateById(warehouse);// 进行伪删除 根据id把is_delete修改成1
}
}
/**
*
* @param pid id
* @return warehousesVo
*/
private List<WarehouseVo> getChildrenWarehouseVo(Long pid){
LambdaQueryWrapper<Warehouse> lambdaQueryWrapper = new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getPid, pid)
.eq(Warehouse::getIsDelete,"0");
List<Warehouse> warehouses = warehouseMapper.selectList(lambdaQueryWrapper);
//将实体类数据转到vo
List<WarehouseVo> list = new LinkedList<>();
for(Warehouse item : warehouses) {
WarehouseVo vo = new WarehouseVo();
BeanUtils.copyProperties(item, vo);
list.add(vo);
}
//
for (WarehouseVo item : list) {
item.setWarehouseVoList(getChildrenWarehouseVo(item.getId()));
//获取栏目的内容信息
LambdaQueryWrapper<SparePart> sparePartLqw = new LambdaQueryWrapper<>();
sparePartLqw.eq(SparePart::getWarehouseId, item.getId());
//sparePartLqw.orderByDesc(AbContent::getReleaseDate);
List<SparePart> sparePartVos = sparePartMapper.selectList(sparePartLqw);
//将实体类数据转到vo
List<SparePartDetailVo> sparePartList = new LinkedList<>();
for(SparePart sparePartItem : sparePartVos) {
SparePartDetailVo vo = new SparePartDetailVo();
BeanUtils.copyProperties(sparePartItem, vo);
sparePartList.add(vo);
}
if(sparePartVos != null){
item.setSparePartVos(sparePartList);
}
}
return list;
}
/**
* id
*
* @param warehouseVo
* @return
*/
public WarehouseVo selectWarehouseData(WarehouseVo warehouseVo) {
Warehouse warehouse = warehouseMapper.selectById(warehouseVo.getId());
WarehouseVo abWarehouseVo = new WarehouseVo();
BeanUtils.copyProperties(warehouse, abWarehouseVo);
//查询子仓库信息
abWarehouseVo.setWarehouseVoList(getChildrenWarehouseVo(abWarehouseVo.getId()));
//获取仓库的备件信息
LambdaQueryWrapper<SparePart> sparePartLqw = new LambdaQueryWrapper<>();
sparePartLqw.eq(SparePart::getWarehouseId, warehouseVo.getId());
//sparePartLqw.orderByDesc(SparePart::getReleaseDate);
List<SparePart> abSparePartVos = sparePartMapper.selectList(sparePartLqw);
//将实体类数据转到vo
List<SparePartDetailVo> sparePartList = new LinkedList<>();
for(SparePart sparePartItem : abSparePartVos) {
SparePartDetailVo vo = new SparePartDetailVo();
BeanUtils.copyProperties(sparePartItem, vo);
sparePartList.add(vo);
}
if(abSparePartVos != null){
abWarehouseVo.setSparePartVos(sparePartList);
}
return abWarehouseVo;
}
}

View File

@ -1,5 +1,6 @@
package com.hcy.front.validate.order;
import com.hcy.front.validate.warehouse.SparePartParam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@ -10,6 +11,7 @@ import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
*
@ -33,7 +35,7 @@ public class MaintenanceOrderParam implements Serializable {
@DecimalMin(value = "0", message = "orderSource参数值不能少于0", groups = {create.class})
private Integer orderSource;
private String orderStatus;
private Integer orderStatus;
@NotNull(message = "clientId参数缺失", groups = {create.class})
@DecimalMin(value = "0", message = "clientId参数值不能少于0", groups = {create.class})
@ -104,8 +106,11 @@ public class MaintenanceOrderParam implements Serializable {
private String creatorName; // 创建人姓名
private String receiverName; // 接单人姓名
private double longitude; // 经度
private double latitude; // 纬度
private Integer queryType; // 查询类型 0-离我最近 1-时间优先
private String likeWork; //关键字
//服务报价列表
private List<SparePartParam> sparePartParams;
}

View File

@ -0,0 +1,62 @@
package com.hcy.front.validate.order;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OrderSparePartParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
@NotNull(message = "sparePartsId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "sparePartsId参数值不能少于0", groups = {create.class, update.class})
private Long sparePartsId;
@NotNull(message = "sparePartsCode参数缺失", groups = {create.class, update.class})
@Length(max = 100, message = "sparePartsCode参数不能超出100个字符", groups = {create.class, update.class})
private String sparePartsCode;
@NotNull(message = "sparePartsName参数缺失", groups = {create.class, update.class})
@Length(max = 50, message = "sparePartsName参数不能超出50个字符", groups = {create.class, update.class})
private String sparePartsName;
@NotNull(message = "warehouseName参数缺失", groups = {create.class, update.class})
@Length(max = 100, message = "warehouseName参数不能超出100个字符", groups = {create.class, update.class})
private String warehouseName;
@NotNull(message = "specificationsModel参数缺失", groups = {create.class, update.class})
@Length(max = 50, message = "specificationsModel参数不能超出50个字符", groups = {create.class, update.class})
private String specificationsModel;
@NotNull(message = "unit参数缺失", groups = {create.class, update.class})
@Length(max = 20, message = "unit参数不能超出20个字符", groups = {create.class, update.class})
private String unit;
@NotNull(message = "price参数缺失", groups = {create.class, update.class})
private BigDecimal price;
@NotNull(message = "quantity参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "quantity参数值不能少于0", groups = {create.class, update.class})
private Long quantity;
@NotNull(message = "totalPrice参数缺失", groups = {create.class, update.class})
private BigDecimal totalPrice;
}

View File

@ -0,0 +1,60 @@
package com.hcy.front.validate.warehouse;
import com.hcy.common.entity.client.Client;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SparePartParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
private Long id;
@NotNull(message = "sparePartsCode参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "sparePartsCode参数不能超出255个字符", groups = {create.class, update.class})
private String sparePartsCode;
@NotNull(message = "sparePartsName参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "sparePartsName参数不能超出255个字符", groups = {create.class, update.class})
private String sparePartsName;
@NotNull(message = "warehouseId参数缺失", groups = {create.class, update.class})
@DecimalMin(value = "0", message = "warehouseId参数值不能少于0", groups = {create.class, update.class})
private Long warehouseId;
@NotNull(message = "specificationsModel参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "specificationsModel参数不能超出255个字符", groups = {create.class, update.class})
private String specificationsModel;
@NotNull(message = "unit参数缺失", groups = {create.class, update.class})
@Length(max = 11, message = "unit参数不能超出11个字符", groups = {create.class, update.class})
private String unit;
private Integer quantity;
private BigDecimal unitPrice;
private List<Integer> ids; //批量删除
private String keywords; //关键字
private Long clientId; //客户id
}

View File

@ -0,0 +1,43 @@
package com.hcy.front.validate.warehouse;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
*
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class WarehouseParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface create{}
public interface update{}
public interface delete{}
@NotNull(message = "id参数缺失", groups = {update.class, delete.class})
private Long id;
private Long pid;
@NotNull(message = "warehouseName参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "warehouseName参数不能超出255个字符", groups = {create.class, update.class})
private String warehouseName;
@NotNull(message = "warehouseCoding参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "warehouseCoding参数不能超出255个字符", groups = {create.class, update.class})
private String warehouseCoding;
@NotNull(message = "warehouseAddress参数缺失", groups = {create.class, update.class})
@Length(max = 255, message = "warehouseAddress参数不能超出255个字符", groups = {create.class, update.class})
private String warehouseAddress;
private Long[] ids;
}

View File

@ -17,8 +17,8 @@ public class MaintenanceOrderDetailVo implements Serializable {
private Long id; // id
private String orderNo; // 订单编号
private Long orderSource; // 订单来源 0-客户上报1-系统创建2-维修员创建3-检修员创建4-客服创建5-维修主管创建
private Long orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Integer orderSource; // 订单来源 0-客户上报1-系统创建2-维修员创建3-检修员创建4-客服创建5-维修主管创建
private Integer orderStatus; // 订单状态 0-待抢单1-待接单2-接单超时3-检测中4-待客户确认5-维修中6-已完成7-已退单8-已关闭
private Long clientId; // 客户id
private Long equipmentId; // 设备id
private Long faultId; // 故障id
@ -43,6 +43,7 @@ public class MaintenanceOrderDetailVo implements Serializable {
private Long familiarFaultId; // 常见维修结论id
private String familiarFaultDescription; // 常见维修结论描述
private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员
private Date createTime; // 创建时间
private String clientName; // 客户姓名
private Equipment equipment; //设备信息

View File

@ -44,7 +44,8 @@ public class MaintenanceOrderListVo implements Serializable {
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private Integer repairWorkOrderFlow; //工单去向 0=工单池 1=检修员
private String distance; //距离
private Double distance; //距离
private String practicalDistance; //实际距离
private String faultName; //故障名称
private String equipmentNo; //设备编号

View File

@ -0,0 +1,27 @@
package com.hcy.front.vo.order;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* OrderSparePartVo
*/
@Data
public class OrderSparePartDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private String warehouseName; // 所属仓库名称
private String specificationsModel; // 规格型号
private String unit; // 单位
private BigDecimal price; // 价格
private Long quantity; // 数量
private BigDecimal totalPrice; // 总价
}

View File

@ -0,0 +1,27 @@
package com.hcy.front.vo.order;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* OrderSparePartVo
*/
@Data
public class OrderSparePartListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // id
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private String warehouseName; // 所属仓库名称
private String specificationsModel; // 规格型号
private String unit; // 单位
private BigDecimal price; // 价格
private Long quantity; // 数量
private BigDecimal totalPrice; // 总价
}

View File

@ -0,0 +1,26 @@
package com.hcy.front.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* SparePartVo
*/
@Data
public class SparePartDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号
private String unit; // 单位
private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价
private String warehouseName; // 所属仓库名
}

View File

@ -0,0 +1,30 @@
package com.hcy.front.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* SparePartVo
*/
@Data
public class SparePartListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库
private String specificationsModel; // 规格型号
private String unit; // 单位
private Integer quantity; // 库存数量
private String createTime; // 创建时间
private String updateTime; // 更新时间
private BigDecimal unitPrice; // 单价
// 备件模糊关键字
private String likeWork;
private String warehouseName; // 所属仓库名
}

View File

@ -0,0 +1,23 @@
package com.hcy.front.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
/**
* WarehouseVo
*/
@Data
public class WarehouseDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private Long pid; // 上级仓库
private String warehouseName; // 仓库名称(唯一)
private String warehouseCoding; // 仓库编码
private String warehouseAddress; // 仓库地址
private String createTime; // 创建时间
private String updateTime; // 更新时间
}

View File

@ -0,0 +1,20 @@
package com.hcy.front.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
/**
* WarehouseVo
*/
@Data
public class WarehouseListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private Long pid; // 上级仓库
private String warehouseName; // 仓库名称(唯一)
private String warehouseCoding; // 仓库编码
private String warehouseAddress; // 仓库地址
}

View File

@ -0,0 +1,27 @@
package com.hcy.front.vo.warehouse;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class WarehouseVo implements Serializable {
private Long id; // 主键id
private Long pid; // 上级仓库
private String warehouseName; // 仓库名称(唯一)
private String warehouseCoding; // 仓库编码
private String warehouseAddress; // 仓库地址
private String createTime; // 创建时间
private String updateTime; // 更新时间
/**
*
*/
private List<WarehouseVo> warehouseVoList;
/**
*
*/
private List<SparePartDetailVo> sparePartVos;
}