【admin&front】新增&修复# 1、优化小程序维修单故障检测 2、优化维修单列表、详情 、确认报废 3、新增维修单配件领用、确认收货

dev
renfan 2024-08-30 11:34:17 +08:00
parent 119f12ceda
commit 30a2c159c6
29 changed files with 799 additions and 160 deletions

View File

@ -23,4 +23,21 @@ public interface IOrderOperateRecordService {
* @param description
*/
void addMaintenanceOrder(Long orderId,String titleDsc,Integer dscType,String description);
/**
*
* @param orderId id
* @param titleDsc
* @param description
*/
void addRepairOrder(Long orderId,String titleDsc,String description);
/**
*
* @param orderId id
* @param titleDsc
* @param dscType
* @param description
*/
void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description);
}

View File

@ -39,4 +39,25 @@ public class OrderOperateRecordServiceImpl implements IOrderOperateRecordService
orderOperateRecord.setDescription(description);
orderOperateRecordMapper.insert(orderOperateRecord);
}
@Override
public void addRepairOrder(Long orderId,String titleDsc,String description) {
OrderOperateRecord orderOperateRecord = new OrderOperateRecord();
orderOperateRecord.setOrderId(orderId);
orderOperateRecord.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
orderOperateRecord.setTitle(titleDsc);
orderOperateRecord.setDescription(description);
orderOperateRecordMapper.insert(orderOperateRecord);
}
@Override
public void addRepairOrder(Long orderId,String titleDsc,Integer dscType,String description) {
OrderOperateRecord orderOperateRecord = new OrderOperateRecord();
orderOperateRecord.setOrderId(orderId);
orderOperateRecord.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
orderOperateRecord.setTitle(titleDsc);
orderOperateRecord.setDscType(dscType);
orderOperateRecord.setDescription(description);
orderOperateRecordMapper.insert(orderOperateRecord);
}
}

View File

@ -13,20 +13,27 @@ import com.hcy.admin.validate.order.RepairOrderParam;
import com.hcy.admin.validate.order.RoutingInspectionOrderParam;
import com.hcy.admin.vo.address.UserAddressListVo;
import com.hcy.admin.vo.client.EquipmentListVo;
import com.hcy.admin.vo.order.OrderSparePartListVo;
import com.hcy.admin.vo.order.RepairOrderListVo;
import com.hcy.admin.vo.order.RepairOrderDetailVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult;
import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.dto.order.RepairOrderDto;
import com.hcy.common.entity.address.UserAddress;
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.order.RepairOrder;
import com.hcy.common.entity.order.RoutingInspectionOrder;
import com.hcy.common.entity.plant.Plant;
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
import com.hcy.common.entity.system.SystemAuthAdmin;
import com.hcy.common.entity.user.User;
import com.hcy.common.entity.warehouse.Warehouse;
import com.hcy.common.enums.SparePartStockAuditEnum;
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
import com.hcy.common.enums.order.OrderStateEnum;
import com.hcy.common.enums.order.RepairOrderStatusEnum;
@ -34,10 +41,14 @@ import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.address.UserAddressMapper;
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.OrderSparePartMapper;
import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.plant.PlantMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.utils.ArrayUtil;
import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.UrlUtil;
@ -75,12 +86,24 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
@Resource
UserAddressMapper userAddressMapper;
@Resource
WarehouseMapper warehouseMapper;
@Resource
FaultMapper faultMapper;
@Resource
EquipmentMapper equipmentMapper;
@Resource
private IDevRegionService regionService;
@Resource
OrderSparePartMapper orderSparePartMapper;
@Resource
SparePartStockAuditMapper sparePartStockAuditMapper;
/**
*
*
@ -129,6 +152,22 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
if(equipment != null){
vo.setEquipmentName(equipment.getName());
}
//故障类型名称
Fault faultName = faultMapper.selectOne(
new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, vo.getFaultId()));
if(faultName != null){
vo.setFaultName(faultName.getName());
}
//设置备件领用信息
SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(item.getId()
, SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
if(sparePartStockAudit != null){
SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo();
BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo);
vo.setSparePartStockAudit(sparePartStockAuditDetailVo);
}
vo.setCreateTime(item.getCreateTime());
vo.setUpdateTime(item.getUpdateTime());
@ -158,12 +197,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
RepairOrderDetailVo vo = new RepairOrderDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setUpdateTime(model.getUpdateTime());
//客户名称
//客户名称 负责人 联系电话
Client clientName = clientMapper.selectOne(
new QueryWrapper<Client>()
.eq("id", model.getClientId()));
if(clientName != null){
vo.setClientName(clientName.getClientName());
vo.setDirector(clientName.getDirector());
vo.setPhone(clientName.getPhone());
vo.setMaintainType(clientName.getMaintainType());
}
//创建人名称
User creatorName = userMapper.selectOne(
@ -172,12 +214,13 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
if(creatorName != null){
vo.setCreatorName(creatorName.getUsername());
}
//接单人名称
//接单人名称 接单人联系电话
User user = userMapper.selectOne(
new QueryWrapper<User>()
.eq("id", model.getReceiverId()));
if(user != null){
vo.setReceiverName(user.getUsername());
vo.setReceiverPhone(user.getMobile());
}
//管辖工厂
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne(
@ -196,39 +239,90 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
UserAddress userAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getAddressId()));
UserAddressListVo userAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(userAddress, userAddressListVo);
Map<Long, String> regionMap = regionService.getRegionMap();
userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId()));
userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId()));
userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId()));
if(userAddress != null){
UserAddressListVo userAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(userAddress, userAddressListVo);
userAddressListVo.setProvince(regionMap.get(userAddressListVo.getProvinceId()));
userAddressListVo.setCity(regionMap.get(userAddressListVo.getCityId()));
userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId()));
vo.setAddress(userAddressListVo);
}
//报废地址
UserAddress scrapAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getScrapAddressId()));
UserAddressListVo scrapAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(scrapAddress, scrapAddressListVo);
scrapAddressListVo.setProvince(regionMap.get(scrapAddressListVo.getProvinceId()));
scrapAddressListVo.setCity(regionMap.get(scrapAddressListVo.getCityId()));
scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId()));
if(scrapAddress != null){
UserAddressListVo scrapAddressListVo = new UserAddressListVo();
BeanUtils.copyProperties(scrapAddress, scrapAddressListVo);
scrapAddressListVo.setProvince(regionMap.get(scrapAddressListVo.getProvinceId()));
scrapAddressListVo.setCity(regionMap.get(scrapAddressListVo.getCityId()));
scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId()));
vo.setScrapAddress(scrapAddressListVo);
}
//设备信息
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
.eq("id", model.getEquipmentId()));
EquipmentListVo equipmentListVo = new EquipmentListVo();
equipmentListVo.setProvince(regionMap.get(equipment.getProvinceId()));
equipmentListVo.setCity(regionMap.get(equipment.getCityId()));
equipmentListVo.setDistrict(regionMap.get(equipment.getDistrictId()));
BeanUtils.copyProperties(equipment, equipmentListVo);
if(equipment != null){
EquipmentListVo equipmentListVo = new EquipmentListVo();
equipmentListVo.setProvince(regionMap.get(equipment.getProvinceId()));
equipmentListVo.setCity(regionMap.get(equipment.getCityId()));
equipmentListVo.setDistrict(regionMap.get(equipment.getDistrictId()));
BeanUtils.copyProperties(equipment, equipmentListVo);
vo.setEquipment(equipmentListVo);
}
//故障类型名称
Fault faultName = faultMapper.selectOne(
new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, vo.getFaultId()));
if(faultName != null){
vo.setFaultName(faultName.getName());
}
//设置配件清单
List<OrderSparePart> orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper<OrderSparePart>()
.eq(OrderSparePart::getRepairOrderId, model.getId()));
List<OrderSparePartListVo> orderSparePartListVos = new ArrayList<>();
for (OrderSparePart item : orderSpareParts) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(item, orderSparePartListVo);
//仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, item.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
orderSparePartListVos.add(orderSparePartListVo);
}
vo.setSparePartList(orderSparePartListVos);
//确认报废 收件地址
UserAddress clientScrapAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getClientScrapAddressId()));
if(clientScrapAddress != null){
UserAddressListVo clientScrapAddressVo = new UserAddressListVo();
BeanUtils.copyProperties(clientScrapAddress, clientScrapAddressVo);
clientScrapAddressVo.setProvince(regionMap.get(clientScrapAddressVo.getProvinceId()));
clientScrapAddressVo.setCity(regionMap.get(clientScrapAddressVo.getCityId()));
clientScrapAddressVo.setDistrict(regionMap.get(clientScrapAddressVo.getDistrictId()));
vo.setClientScrapAddress(clientScrapAddressVo);
}
//设置备件领用信息
SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(model.getId()
, SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
if(sparePartStockAudit != null){
SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo();
BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo);
vo.setSparePartStockAudit(sparePartStockAuditDetailVo);
}
//常见维修结论名称
Fault familiarFaultName = faultMapper.selectOne(
new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, vo.getFamiliarFaultId()));
if(familiarFaultName != null){
vo.setFamiliarFaultName(familiarFaultName.getName());
}
return vo;
}
@ -434,7 +528,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void updateServiceOfferPrice(RepairOrderParam repairOrderParam) {
RepairOrder model = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder model = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(model, "数据不存在!");
Assert.notNull(repairOrderParam.getActualAmount(),"服务报价不能为空");
@ -455,7 +549,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void returnRepair(RepairOrderParam repairOrderParam) {
RepairOrder model = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder model = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(model, "数据不存在!");
Assert.notNull(repairOrderParam.getReturnCause(),"退回原因不可为空");

View File

@ -1,5 +1,6 @@
package com.hcy.admin.service.plant.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;
@ -27,6 +28,7 @@ import com.hcy.common.utils.UrlUtil;
import com.hcy.common.config.GlobalConfig;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import javax.annotation.Resource;
@ -75,23 +77,22 @@ public class PlantServiceImpl implements IPlantService {
PlantListVo vo = new PlantListVo();
BeanUtils.copyProperties(item, vo);
vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime()));
if(item.getAuthAdminId() != null){
//字符串拆分获取用户id
String[] userid = item.getAuthAdminId().split(",");
List<SystemAuthAdmin> authAdminList = new ArrayList<>();
for (String uid : userid) {
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>()
.eq("id", uid)
.eq("is_delete", 0)
.last("limit 1"));
if(authAdmin != null){
authAdmin.setAvatar(UrlUtil.toAbsoluteUrl(authAdmin.getAvatar()));
authAdminList.add(authAdmin);
}
//获取当前工厂的管理员
List<SystemAuthAdmin> systemAuthAdmins = systemAuthAdminMapper.selectList(new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(SystemAuthAdmin::getPlantId, item.getId()));
if(systemAuthAdmins != null){
//转换头像路径
for (SystemAuthAdmin systemAuthAdmin : systemAuthAdmins) {
systemAuthAdmin.setAvatar(UrlUtil.toAbsoluteUrl(systemAuthAdmin.getAvatar()));
}
vo.setAuthAdminList(authAdminList);
vo.setAuthAdminList(systemAuthAdmins);
}
//获取当前工厂管理员数量
Integer numberUsers = systemAuthAdminMapper.selectCount(new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(SystemAuthAdmin::getPlantId, item.getId()));
vo.setNumberUsers(numberUsers);// 管理员人数
list.add(vo);
}
@ -124,21 +125,25 @@ public class PlantServiceImpl implements IPlantService {
vo.setProvince(regionMap.get(model.getProvinceId()));
vo.setCity(regionMap.get(model.getCityId()));
vo.setDistrict(regionMap.get(model.getDistrictId()));
if(model.getAuthAdminId() != null){
//字符串拆分获取用户id
String[] userid = model.getAuthAdminId().split(",");
List<SystemAuthAdmin> authAdminList = new ArrayList<>();
for (String uid : userid) {
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>()
.eq("id", uid)
.eq("is_delete", 0)
.last("limit 1"));
authAdmin.setAvatar(UrlUtil.toAbsoluteUrl(authAdmin.getAvatar()));
authAdminList.add(authAdmin);
//获取当前工厂的管理员
List<SystemAuthAdmin> systemAuthAdmins = systemAuthAdminMapper.selectList(
new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(SystemAuthAdmin::getPlantId, model.getId()));
if(systemAuthAdmins != null){
//转换头像路径
for (SystemAuthAdmin systemAuthAdmin : systemAuthAdmins) {
systemAuthAdmin.setAvatar(UrlUtil.toAbsoluteUrl(systemAuthAdmin.getAvatar()));
}
vo.setAuthAdminList(authAdminList);
vo.setAuthAdminList(systemAuthAdmins);
}
//获取当前工厂管理员数量
Integer numberUsers = systemAuthAdminMapper.selectCount(
new LambdaQueryWrapper<SystemAuthAdmin>()
.eq(SystemAuthAdmin::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(SystemAuthAdmin::getPlantId, model.getId()));
vo.setNumberUsers(numberUsers);// 管理员人数
return vo;
}
@ -227,6 +232,7 @@ public class PlantServiceImpl implements IPlantService {
* @param plantParam
*/
@Override
@Transactional
public void boundUser(PlantParam plantParam) {
Plant model = plantMapper.selectOne(
new QueryWrapper<Plant>()
@ -238,19 +244,10 @@ public class PlantServiceImpl implements IPlantService {
List<SystemAuthAdmin> authAdminList = plantParam.getAuthAdminList();
if(authAdminList != null){
int userNumber = 0;
// 使用StringBuilder来拼接id值
StringBuilder sb = new StringBuilder();
for (SystemAuthAdmin authAdmin : authAdminList) {
sb.append(authAdmin.getId()).append(",");
userNumber = userNumber + 1;
authAdmin.setPlantId(Math.toIntExact(model.getId()));
systemAuthAdminMapper.updateById(authAdmin);
}
model.setNumberUsers((long) userNumber);
sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号
model.setAuthAdminId(String.valueOf(sb));// 备件审核id
}else{
model.setNumberUsers(null);
model.setAuthAdminId(null);// 备件审核id
}
model.setUpdateTime(System.currentTimeMillis() / 1000);
@ -263,6 +260,7 @@ public class PlantServiceImpl implements IPlantService {
* @param plantParam
*/
@Override
@Transactional
public void plantUnbound(PlantParam plantParam) {
Plant model = plantMapper.selectOne(
new QueryWrapper<Plant>()
@ -274,18 +272,10 @@ public class PlantServiceImpl implements IPlantService {
List<SystemAuthAdmin> authAdminList = plantParam.getAuthAdminList();
if(authAdminList != null){
int userNumber = 0;
// 使用StringBuilder来拼接id值
StringBuilder sb = new StringBuilder();
for (SystemAuthAdmin authAdmin : authAdminList) {
sb.append(authAdmin.getId()).append(",");
userNumber = userNumber + 1;
authAdmin.setPlantId(null);
systemAuthAdminMapper.updateById(authAdmin);
}
model.setNumberUsers((long) userNumber);
sb.deleteCharAt(sb.length() - 1); // 删除最后一个逗号
model.setAuthAdminId(String.valueOf(sb));// 备件审核id
}
model.setUpdateTime(System.currentTimeMillis() / 1000);

View File

@ -18,6 +18,7 @@ import com.hcy.common.core.PageResult;
import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.entity.SparePartAudit.SparePartAudit;
import com.hcy.common.entity.order.MaintenanceOrder;
import com.hcy.common.entity.order.RepairOrder;
import com.hcy.common.entity.sparePart.SparePart;
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
import com.hcy.common.entity.system.SystemAuthAdmin;
@ -32,6 +33,7 @@ import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.SparePartAudit.SparePartAuditMapper;
import com.hcy.common.mapper.order.MaintenanceOrderMapper;
import com.hcy.common.mapper.order.OrderSparePartMapper;
import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
@ -69,6 +71,9 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
@Resource
MaintenanceOrderMapper maintenanceOrderMapper;
@Resource
RepairOrderMapper repairOrderMapper;
@Resource
UserMapper userMapper;
@ -180,6 +185,29 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
vo.setRecipient(user.getUsername());
vo.setRecipientPhone(user.getMobile());
}
} else if (item.getOrderType() != null && item.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) {
RepairOrder repairOrder = maintenanceOrderMapper.findRepairOrderById(item.getOrderId());
List<OrderSparePartListVo> orderSparePartListVoList = new ArrayList<>();
List<OrderSparePart> orderSparePartList = orderSparePartMapper.findOrderSparePartByRepairOrderId(item.getOrderId());
for (OrderSparePart orderSparePart : orderSparePartList) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(orderSparePart, orderSparePartListVo);
orderSparePartListVoList.add(orderSparePartListVo);
number += orderSparePart.getQuantity();
}
vo.setOrderSparePartListVoList(orderSparePartListVoList);
vo.setWorkOrderNo(repairOrder.getOrderNo());
vo.setOrderId(repairOrder.getId());
vo.setRecipientNumber(number);
User user = userMapper.selectById(repairOrder.getReceiverId());
if(user != null){
vo.setRecipient(user.getUsername());
vo.setRecipientPhone(user.getMobile());
}
} else {
//获取待审核备件信息
List<SparePartAudit> stockAuditId = sparePartAuditMapper.selectList(
@ -267,12 +295,35 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
for (OrderSparePart orderSparePart : orderSparePartList) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(orderSparePart, orderSparePartListVo);
//配件清单仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, orderSparePartListVo.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
orderSparePartListVoList.add(orderSparePartListVo);
}
vo.setOrderSparePartListVoList(orderSparePartListVoList);
vo.setWorkOrderNo(maintenanceOrder.getOrderNo());
vo.setRecipient(user.getUsername());
vo.setRecipientPhone(user.getMobile());
} else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) {
RepairOrder repairOrder = maintenanceOrderMapper.findRepairOrderById(model.getOrderId());
User user = userMapper.selectById(repairOrder.getReceiverId());
List<OrderSparePartListVo> orderSparePartListVoList = new ArrayList<>();
List<OrderSparePart> orderSparePartList = orderSparePartMapper.findOrderSparePartByRepairOrderId(model.getOrderId());
for (OrderSparePart orderSparePart : orderSparePartList) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(orderSparePart, orderSparePartListVo);
//配件清单仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, orderSparePartListVo.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
orderSparePartListVoList.add(orderSparePartListVo);
}
vo.setOrderSparePartListVoList(orderSparePartListVoList);
vo.setWorkOrderNo(repairOrder.getOrderNo());
vo.setRecipient(user.getUsername());
vo.setRecipientPhone(user.getMobile());
} else {
//获取待审核备件信息
List<SparePartAudit> sparePartAuditList = sparePartAuditMapper.findSparePartAuditByStockAuditId(model.getId());
@ -503,6 +554,12 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_TWO.getDesc()
,OrderOperateRecordEnum.AUDIT.getStatus()
,"管理员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过。");
} else if (model.getOrderId() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) {
//新增维修单操作记录
orderOperateRecordService.addRepairOrder(model.getOrderId()
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_TWO.getDesc()
,OrderOperateRecordEnum.AUDIT.getStatus()
,"管理员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过。");
}
} else if (model.getReceiptType() == AuditStateEnum.ALLOT.getStatus()
&& model.getAuditResult() == AuditStateEnum.ALREADY_PASSED.getStatus()) {
@ -570,6 +627,26 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
}
model.setAuditResult(null); // 审核结果0=已通过1=未通过)
model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());
} else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus() &&
sparePartStockAuditParam.getAuditResult() == AuditStateEnum.NOT_PASS.getStatus()) {
//管理员维修单审核不通过
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(model.getOrderId());
if(repairOrder != null){
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus());
repairOrder.setReturnCause(sparePartStockAuditParam.getAuditIdea());
repairOrderMapper.updateById(repairOrder);
User user = userMapper.selectById(repairOrder.getReceiverId());
if(user != null){
//新增检修单操作记录
orderOperateRecordService.addRepairOrder(model.getOrderId()
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_TWO.getDesc()
,OrderOperateRecordEnum.AUDIT.getStatus()
,"管理员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getAuditIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。");
}
}
model.setAuditResult(null); // 审核结果0=已通过1=未通过)
model.setAuditState(AuditStateEnum.UNREVIEWED.getStatus());
}
sparePartStockAuditMapper.updateById(model);
@ -633,6 +710,24 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
,"仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。");
}
}
} else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus() &&
sparePartStockAuditParam.getPurchaseStatus() == AuditStateEnum.NOT_PASS_STATE.getStatus()) {
//仓管员维修单审核不通过
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(model.getOrderId());
if(repairOrder != null){
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.RETURNED.getStatus());
repairOrder.setReturnCause(sparePartStockAuditParam.getPurchaseIdea());
repairOrderMapper.updateById(repairOrder);
User user = userMapper.selectById(repairOrder.getReceiverId());
if(user != null){
//新增检修单操作记录
orderOperateRecordService.addMaintenanceOrder(model.getOrderId()
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc()
,OrderOperateRecordEnum.AUDIT.getStatus()
,"仓管员【"+AdminThreadLocal.get("username")+"】完成审核,审核结果:不通过,审核意见:"+sparePartStockAuditParam.getPurchaseIdea()+"。系统会自动退回到检修员【"+user.getUsername()+"】重新报价。");
}
}
}
// 出库时需要判断库存数量是否大于出库数量,大于才允许出库;反之,提示备件库存数量不足
@ -667,6 +762,12 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc()
,OrderOperateRecordEnum.AUDIT.getStatus()
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核。");
} else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) {
//新增维修单操作记录
orderOperateRecordService.addRepairOrder(model.getOrderId()
, OrderOperateRecordEnum.SPARE_PARTS_AUDIT_ONE.getDesc()
,OrderOperateRecordEnum.AUDIT.getStatus()
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成审核,审核通过;等待管理员审核");
}
}
@ -808,6 +909,13 @@ public class SparePartStockAuditServiceImpl implements ISparePartStockAuditServi
, OrderOperateRecordEnum.DELIVER_GOODS.getDesc()
,OrderOperateRecordEnum.DELIVER_GOODS_TYPE.getStatus()
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+ LogisticsModeEnum.getMsgByStatus(model.getDeliveryMethod())+"。");
} else if (model.getOrderType() != null && model.getOrderType() == SparePartStockAuditEnum.REPAIR_ORDER.getStatus()) {
//新增维修单操作记录
orderOperateRecordService.addMaintenanceOrder(model.getOrderId()
, OrderOperateRecordEnum.DELIVER_GOODS.getDesc()
,OrderOperateRecordEnum.DELIVER_GOODS_TYPE.getStatus()
,"仓管员【"+AdminThreadLocal.get("username")+"】已经完成发货。配送方式:"+ LogisticsModeEnum.getMsgByStatus(model.getDeliveryMethod())+"。");
}
}

View File

@ -166,41 +166,9 @@ public class SystemAuthAdminServiceImpl implements ISystemAuthAdminService {
vo.setReceiveOrderStatus(user.getReceiveOrderStatus());
}
//只查询没有被该工厂绑定的用户
if(param.getPlantId() != null){
Plant model = plantMapper.selectOne(
new QueryWrapper<Plant>()
.eq("id", param.getPlantId())
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(model, "数据不存在!");
if(model.getAuthAdminId() != null){
//字符串拆分获取用户id
String[] userid = model.getAuthAdminId().split(",");
// 查询没有被任何工厂绑定的用户
QueryWrapper<SystemAuthAdmin> userQueryWrapper = new QueryWrapper<>();
userQueryWrapper.notIn("id", userid);
List<SystemAuthAdmin> systemAuthAdmins = systemAuthAdminMapper.selectList(userQueryWrapper);
for (SystemAuthAdmin systemAuthAdmin : systemAuthAdmins) {
if(item.getId() == systemAuthAdmin.getId()){
list.add(vo);
total = total + 1;
}
}
}else{
list.add(vo);
total = total + 1;
}
}else {
list.add(vo);
total = total + 1;
}
}
return PageResult.iPageHandle(total, iPage.getCurrent(), iPage.getSize(), list);
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
}
/**

View File

@ -18,7 +18,7 @@ public class OrderSparePartListVo implements Serializable {
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库名称
private Long warehouseId; // 所属仓库id
private String specificationsModel; // 规格型号
private String unit; // 单位
private BigDecimal unitPrice; // 价格

View File

@ -1,7 +1,11 @@
package com.hcy.admin.vo.order;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.TableField;
import com.hcy.admin.vo.address.UserAddressListVo;
import com.hcy.admin.vo.client.EquipmentListVo;
import com.hcy.admin.vo.client.EquipmentModelDetailVo;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import com.hcy.common.entity.address.UserAddress;
import com.hcy.common.entity.client.Equipment;
import lombok.Data;
@ -9,6 +13,7 @@ import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* RepairOrderVo
@ -28,6 +33,7 @@ public class RepairOrderDetailVo implements Serializable {
private String clientContacts; // 客户联系人
private String clientPhone; // 客户联系电话
private Long faultId; // 故障id
private String faultCode; // 故障代码
private String faultDescription; // 故障描述
private String moduleNumber; // 模块号
private String brand; // 品牌
@ -43,22 +49,68 @@ public class RepairOrderDetailVo implements Serializable {
private Integer priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private String expressNo; // 快递单号
private Integer returnOrNot; // 是否回寄0=是 1=否)
private Long addressId; // 回寄地址
private String siteImg; // 现场照片
private Long plantId; // 管辖工厂
private Long plantId; // 管辖工厂
private String plantName; //管辖工厂名
private Integer receiverType; // 接单类型 0-区域派单1-距离派单
private BigDecimal orderDistance; // 订单距离
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private UserAddressListVo address; //地址信息
private EquipmentListVo equipment; //设备信息
private Integer scrapAddressId; // 报废地址
private Long scrapAddressId; // 报废地址
private UserAddressListVo scrapAddress; //报废地址信息
private String returnCause; //退回原因
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private UserAddressListVo consigneeAddress; //收件地址
private String clientScrapRemark; // 客户报废备注
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
private String faultName; //故障名称
private Integer scrapOrNot; // 是否报废0=是1=否)
private String preMaintenanceImg; // 维修前照片
private String faultPointImg; // 故障点照片
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private Date orderAccomplishTime; // 订单完成时间
private Date quotationTime; // 报价时间
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
private String refuseMaintenanceCause; // 拒绝维修原因
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
private List<OrderSparePartListVo> sparePartList; // 备件清单
private EquipmentModelDetailVo equipmentModel; //设备模块信息
private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息
private String director; // 负责人
private String phone; // 联系电话
private String receiverPhone; // 接单人联系电话
private Long scrapFaultId; // 报废类型id
private String scrapExplain; // 报废说明
private Long clientScrapAddressId; // 客户报废收货地址id
private UserAddressListVo clientScrapAddress; //客户报废收货地址
private Long scrapConfirmation; // 报废确认0=是1=否)
private Integer warehouseType; // 仓库类型 0-我的仓库 1-公共仓库
private Long repairId; // 返修id
private Long familiarFaultId; // 常见维修结论id
private String familiarFaultName; // 常见维修结论名称
private String familiarFaultDescription; // 常见维修结论描述
private Integer isMaintain; // 是否维修 0-维修 1-不维修
private Long userId; // 送修人
private Integer maintainType; // 客户维修类型 模块维修类型 0-全包 1-半包
}

View File

@ -1,5 +1,6 @@
package com.hcy.admin.vo.order;
import com.hcy.admin.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import lombok.Data;
import java.io.Serializable;
@ -50,4 +51,28 @@ public class RepairOrderListVo implements Serializable {
private Integer scrapAddressId; // 报废地址
private String returnCause; //退回原因
private String faultName; //故障名称
private String equipmentNo; //设备编号
private String detailedAddress; //设备详情地址
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private String completeImg; // 完工照片
private Integer scrapOrNot; // 是否报废0=是1=否)
private String preMaintenanceImg; // 维修前照片
private String faultPointImg; // 故障点照片
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private Date orderAccomplishTime; // 订单完成时间
private Date quotationTime; // 报价时间
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
private String refuseMaintenanceCause; // 拒绝维修原因
private Long clientScrapAddressId; // 客户报废收货地址id
private Long scrapConfirmation; // 报废确认0=是1=否)
private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息
}

View File

@ -2,6 +2,7 @@ package com.hcy.admin.vo.plant;
import com.hcy.common.entity.system.SystemAuthAdmin;
import com.hcy.common.entity.user.User;
import io.swagger.models.auth.In;
import lombok.Data;
import java.io.Serializable;
@ -16,9 +17,8 @@ public class PlantDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String authAdminId; // 用户id
private String name; // 工厂名称
private Long numberUsers; // 管理员人数
private Integer numberUsers; // 管理员人数
private Long sort; // 排序
private String remark; // 备注
private String longitude; // 经度

View File

@ -16,9 +16,8 @@ public class PlantListVo implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键id
private String authAdminId; // 用户id
private String name; // 工厂名称
private Long numberUsers; // 管理员人数
private Integer numberUsers; // 管理员人数
private Long sort; // 排序
private String remark; // 备注
private String createTime; // 创建时间

View File

@ -67,5 +67,20 @@ public class RepairOrderDto implements Serializable {
private String returnCause; //退回原因
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
private Integer scrapOrNot; // 是否报废0=是1=否)
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private String preMaintenanceImg; // 维修前照片
private String faultPointImg; // 故障点照片
private Date orderAccomplishTime; // 订单完成时间
private Date quotationTime; // 报价时间
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
private String refuseMaintenanceCause; // 拒绝维修原因
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
private Long clientScrapAddressId; // 客户报废收货地址
private Long scrapConfirmation; // 报废确认0=是1=否)
}

View File

@ -81,4 +81,6 @@ public class RepairOrder implements Serializable {
private String clientScrapRemark; // 客户报废备注
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
private Long clientScrapAddressId; // 客户报废收货地址
private Long scrapConfirmation; // 报废确认0=是1=否)
}

View File

@ -19,11 +19,7 @@ public class Plant implements Serializable {
@TableId(value="id", type= IdType.AUTO)
private Long id; // 主键id
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String authAdminId; // 管理员id
private String name; // 工厂名称
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Long numberUsers; // 管理员人数
private Long sort; // 排序
private String remark; // 备注
private String longitude; // 经度

View File

@ -28,6 +28,7 @@ public class SystemAuthAdmin implements Serializable {
private String role; // 角色主键
private Integer sort; // 排序编号
private String phone; // 联系电话
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Integer plantId; // 管辖工厂
private Long provinceId; //省id
private Long cityId; //市id

View File

@ -6,8 +6,11 @@ public enum ClientStatusEnum {
* 0- 1-
*/
PLIE_POINT_ALL_WRAPPED(0, "桩点全包"),
PLIE_POINT_HALF_BALE(1,"桩点半包");
PLIE_POINT_HALF_BALE(1,"桩点半包"),
// 模块维修类型 0-全包 1-半包
MODULE_MAINTENANCE_ALL_WRAPPED(0, "模块维修全包"),
MODULE_MAINTENANCE_HALF_BALE(1, "模块维修半包");
/**
*
*/

View File

@ -31,7 +31,11 @@ public enum RepairOrderStatusEnum {
NOT_MAINTAIN(1,"不维修"),
MY_WAREHOUSE(0,"我的仓库"),
PUBLIC_WAREHOUSE(1,"全部仓库"),;
PUBLIC_WAREHOUSE(1,"全部仓库"),
// 是否报废0=是1=否)
YES(0,"是"),
NO(1, "否");
private final int status;
private final String desc;

View File

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.order.MaintenanceOrderDto;
import com.hcy.common.entity.order.MaintenanceOrder;
import com.hcy.common.entity.order.RepairOrder;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -30,6 +31,16 @@ public interface MaintenanceOrderMapper extends IBaseMapper<MaintenanceOrder> {
@Select("select * from la_maintenance_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1")
MaintenanceOrder findLastMaintenanceOrderByTime(@Param("time") String time);
/**
* id
* @return MaintenanceOrder
*/
@Select("select * from la_repair_order where is_delete = 0 and id = #{id}")
RepairOrder findRepairOrderById(@Param("id") Long id);
@Select("select * from la_repair_order where is_delete = 0 and order_no like concat('%',#{time},'%') order by order_no desc limit 1")
RepairOrder findRepairOrderByTime(@Param("time") String time);
/**
*
* @return

View File

@ -41,7 +41,7 @@ public interface RepairOrderMapper extends IBaseMapper<RepairOrder> {
* @return MaintenanceOrder
*/
@Select("select * from la_repair_order where is_delete = 0 and id = #{id}")
RepairOrder findMaintenanceOrderById(@Param("id") Long id);
RepairOrder findRepairOrderById(@Param("id") Long id);
/**
*

View File

@ -3,11 +3,17 @@ package com.hcy.common.mapper.plant;
import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.entity.plant.Plant;
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
*/
@Mapper
public interface PlantMapper extends IBaseMapper<Plant> {
@Select("select * from la_plant where is_delete = 0 and id = #{adminId}")
Plant findPlantByAdminId(@Param("adminId") Integer adminId);
}

View File

@ -23,6 +23,9 @@
<if test="param.nickname != null and param.nickname != ''">
and t.nickname like concat('%',#{param.nickname},'%')
</if>
<if test="param.plantId != null">
and t.plant_id IS NULL
</if>
</where>
ORDER BY
t.id DESC,

View File

@ -186,4 +186,26 @@ public class RepairOrderController {
iRepairOrderService.fillInReceipt(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/sparePartsRequisition")
public Object sparePartsRequisition(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.sparePartsRequisition(repairOrderParam);
return AjaxResult.success();
}
/**
*
* @param repairOrderParam
* @return Object
*/
@PostMapping("/confirmReceipt")
public Object confirmReceipt(@RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.confirmReceipt(repairOrderParam);
return AjaxResult.success();
}
}

View File

@ -109,4 +109,16 @@ public interface IRepairOrderService {
* @param repairOrderParam
*/
void fillInReceipt(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void sparePartsRequisition(RepairOrderParam repairOrderParam);
/**
*
* @param repairOrderParam
*/
void confirmReceipt(RepairOrderParam repairOrderParam);
}

View File

@ -12,26 +12,37 @@ import com.hcy.common.dto.order.RepairOrderDto;
import com.hcy.common.entity.address.UserAddress;
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.order.RepairOrder;
import com.hcy.common.entity.plant.Plant;
import com.hcy.common.entity.sparePart.SparePart;
import com.hcy.common.entity.sparePartStockAudit.SparePartStockAudit;
import com.hcy.common.entity.system.SystemAuthAdmin;
import com.hcy.common.entity.user.User;
import com.hcy.common.entity.warehouse.Warehouse;
import com.hcy.common.enums.ClientStatusEnum;
import com.hcy.common.enums.SparePartStockAuditEnum;
import com.hcy.common.enums.audit.AuditStateEnum;
import com.hcy.common.enums.order.MaintenanceOrderStatusEnum;
import com.hcy.common.enums.order.OrderOperateRecordEnum;
import com.hcy.common.enums.order.OrderStateEnum;
import com.hcy.common.enums.order.RepairOrderStatusEnum;
import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.address.UserAddressMapper;
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.OrderSparePartMapper;
import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.plant.PlantMapper;
import com.hcy.common.mapper.sparePart.SparePartMapper;
import com.hcy.common.mapper.sparePartStockAudit.SparePartStockAuditMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.mapper.user.UserMapper;
import com.hcy.common.mapper.warehouse.WarehouseMapper;
import com.hcy.common.utils.OrderUtil;
import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.ToolsUtil;
import com.hcy.front.FrontThreadLocal;
import com.hcy.front.service.order.IRepairOrderService;
@ -42,14 +53,13 @@ import com.hcy.front.validate.order.RepairOrderParam;
import com.hcy.front.validate.warehouse.SparePartParam;
import com.hcy.front.vo.address.UserAddressListVo;
import com.hcy.front.vo.client.EquipmentListVo;
import com.hcy.front.vo.order.MaintenanceOrderListVo;
import com.hcy.front.vo.order.OrderStatusCountVo;
import com.hcy.front.vo.order.RepairOrderDetailVo;
import com.hcy.front.vo.order.RepairOrderListVo;
import com.hcy.front.vo.order.*;
import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import com.sun.xml.internal.ws.resources.AddressingMessages;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import javax.annotation.Resource;
@ -80,6 +90,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
@Resource
ClientMapper clientMapper;
@Resource
FaultMapper faultMapper;
@Resource
private IDevRegionService regionService;
@ -95,6 +108,15 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
@Resource
OrderSparePartMapper orderSparePartMapper;
@Resource
SparePartStockAuditMapper sparePartStockAuditMapper;
@Resource
WarehouseMapper warehouseMapper;
@Resource
OrderOperateRecordServiceImpl orderOperateRecordService;
private final DecimalFormat df = new DecimalFormat ("#.#");
/**
@ -111,6 +133,8 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
List<RepairOrderDto> repairOrderDtoList = repairOrderMapper.list(repairOrderDto);
SystemAuthAdmin systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(FrontThreadLocal.getUserId());
//获取工厂
Plant plant = plantMapper.findPlantByAdminId(systemAuthAdmin.getPlantId());
List<RepairOrderListVo> returnData = new LinkedList<>();
for (RepairOrderDto item : repairOrderDtoList) {
@ -121,10 +145,20 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
, repairOrderParam.getLongitude(), repairOrderParam.getLatitude());
if(item.getReceiverType() == OrderStateEnum.REGIONAL_DISPATCH.getStatus()){
if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) &&
/*if(item.getEquipmentProvinceId().equals(systemAuthAdmin.getProvinceId()) &&
item.getEquipmentCityId().equals(systemAuthAdmin.getCityId()) &&
item.getEquipmentDistrictId().equals(systemAuthAdmin.getDistrictId()) ){
// 计算距离
RepairOrderListVo vo = new RepairOrderListVo();
BeanUtils.copyProperties(item, vo);
vo.setDistance(distance);
returnData.add(vo);
}*/
if(item.getEquipmentProvinceId().equals(plant.getProvinceId()) &&
item.getEquipmentCityId().equals(plant.getCityId()) &&
item.getEquipmentDistrictId().equals(plant.getDistrictId()) ){
// 计算距离
RepairOrderListVo vo = new RepairOrderListVo();
BeanUtils.copyProperties(item, vo);
@ -242,7 +276,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void confirmServiceOfferPrice(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
Assert.isTrue(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus(), "订单状态错误");
@ -266,15 +300,17 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void confirmedScrap(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废0=是1=否)
repairOrder.setScrapConfirmation(repairOrderParam.getScrapConfirmation()); // 报废确认0=是1=否)
repairOrder.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄0=是 1=否)
repairOrder.setDeliveryMethod(repairOrderParam.getDeliveryMethod()); // 收件方式0=物流快递 1-上门取件 2-送货上门)
repairOrder.setConsigneeAddressId(repairOrderParam.getConsigneeAddressId()); // 收件地址
repairOrder.setClientScrapAddressId(repairOrderParam.getClientScrapAddressId()); // 客户报废收件地址
repairOrder.setClientScrapRemark(repairOrderParam.getClientScrapRemark()); // 客户报废备注
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.FINISHED.getStatus());
repairOrder.setOrderAccomplishTime(new Date()); //订单完成时间
repairOrderMapper.updateById(repairOrder);
}
@ -285,7 +321,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void uploadPictures(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
if(repairOrderParam.getInMaintenanceImg() != null){
repairOrder.setInMaintenanceImg(repairOrderParam.getInMaintenanceImg()); // 维修中照片
@ -302,11 +338,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void scrapForm(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
repairOrder.setScrapOrNot(repairOrderParam.getScrapOrNot()); // 是否报废0=是1=否)
repairOrder.setReturnOrNot(repairOrderParam.getReturnOrNot()); // 是否回寄0=是 1=否)
repairOrder.setExpressName(repairOrderParam.getExpressName()); // 快递名称
repairOrder.setExpressNo(repairOrderParam.getExpressNo()); // 快递单号
repairOrderMapper.updateById(repairOrder);
@ -319,7 +353,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void fillInReceipt(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
Assert.notNull(repairOrderParam.getFamiliarFaultId(), "结论类型不可为空");
Assert.notNull(repairOrderParam.getFamiliarFaultDescription(), "结论描述不可为空");
@ -341,6 +375,128 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
}
}
/**
*
*
* @param repairOrderParam
*/
@Override
@Transactional
public void sparePartsRequisition(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
//我的仓库领用
if(repairOrder.getWarehouseType() == MaintenanceOrderStatusEnum.MY_WAREHOUSE.getStatus()){
//获取领用备件列表
List<OrderSparePart> orderSpareParts = orderSparePartMapper.findOrderSparePartByRepairOrderId(repairOrder.getId());
for (OrderSparePart item : orderSpareParts) {
//获取备件信息
SparePart sparePart = sparePartMapper.findSparePartById(item.getSparePartsId());
if(sparePart.getQuantity() >= item.getQuantity()){
//扣除对应的数量
sparePart.setQuantity(sparePart.getQuantity() - item.getQuantity());
sparePartMapper.updateById(sparePart);
}else{
throw new OperateException("仓库中【" + sparePart.getSparePartsName() + "】备件数量不足" + item.getQuantity() + sparePart.getUnit() + ",配件领用失败");
}
}
repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus());
repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus());
repairOrderMapper.updateById(repairOrder);
//我的仓库也要新增配件领用记录 并且状态是已完成
/*SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(maintenanceOrderParam);
sparePartStockAudit.setPurchaseStatus(AuditStateEnum.DONE.getStatus());
sparePartStockAuditMapper.insert(sparePartStockAudit);*/
}else{
SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(repairOrder.getId()
, SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
if(resultSps != null){
//已有领取记录但被拒绝则重新审核
resultSps.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus());
resultSps.setCreateTime(new Date());
sparePartStockAuditMapper.updateById(resultSps);
}else{
//没领过配件则创建新的领用单
SparePartStockAudit sparePartStockAudit = getSparePartStockAudit(repairOrderParam);
sparePartStockAudit.setPurchaseStatus(AuditStateEnum.UNREVIEWED.getStatus());
sparePartStockAuditMapper.insert(sparePartStockAudit);
}
}
}
/**
*
*
* @param repairOrderParam
*/
@Override
@Transactional
public void confirmReceipt(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
SparePartStockAudit resultSps = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(repairOrder.getId()
,SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
if(resultSps != null){
if(resultSps.getPurchaseStatus() == AuditStateEnum.WAIT_FOR_RECEIVING.getStatus()){
//确认收货后可进行填写回单操作
repairOrder.setIsConfirmReceipt(MaintenanceOrderStatusEnum.CONFIRM_RECEIPT.getStatus());
repairOrderMapper.updateById(repairOrder);
//将对应的配件领用订单改成已完成
resultSps.setPurchaseStatus(AuditStateEnum.DONE.getStatus());
sparePartStockAuditMapper.updateById(resultSps);
//新增检修单操作记录
orderOperateRecordService.addMaintenanceOrder(repairOrder.getId()
, OrderOperateRecordEnum.RECEIVE_GOODS.getDesc()
,"检修员【"+FrontThreadLocal.get("username")+"】已确认收货");
orderOperateRecordService.addMaintenanceOrder(repairOrder.getId()
,OrderOperateRecordEnum.SPARE_PARTS_RECEIVE.getDesc()
,"【"+FrontThreadLocal.get("username")+"】已完成配件领用");
}else{
throw new OperateException("当前订单状态无法进行确认收货");
}
}else{
throw new OperateException("配件领用订单未生成,不可进行确认收货");
}
}
/**
*
* @param repairOrderParam
* @return SparePartStockAudit
*/
private SparePartStockAudit getSparePartStockAudit(RepairOrderParam repairOrderParam) {
User user = userMapper.selectById(FrontThreadLocal.getUserId());
//没领过配件则创建新的领用单
SparePartStockAudit lastSparePartStockAudit = sparePartStockAuditMapper.findLastSparePartStockAuditByTime(TimeUtil.getCurrentTimeYYYYMMDD());
SparePartStockAudit sparePartStockAudit = new SparePartStockAudit();
sparePartStockAudit.setReceiptNumber(OrderUtil.getOrderNo(lastSparePartStockAudit == null ? "" :lastSparePartStockAudit.getReceiptNumber()));
sparePartStockAudit.setOrderId(repairOrderParam.getId());
sparePartStockAudit.setOrderType(SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
sparePartStockAudit.setReceiptType(AuditStateEnum.OUT_WAREHOUSE.getStatus());
sparePartStockAudit.setOutInWarehouseType(AuditStateEnum.STAFF_MATERIALS.getStatus());
sparePartStockAudit.setConsignee(user.getUsername());
sparePartStockAudit.setPhone(user.getMobile());
sparePartStockAudit.setCreatorId(FrontThreadLocal.getUserId());
//获取维修员选择地址
if(repairOrderParam.getAddressId() != null){
UserAddress userAddress = userAddressMapper.findUserAddressById(Math.toIntExact(repairOrderParam.getAddressId()));
Map<Long, String> regionMap = regionService.getRegionMap();
sparePartStockAudit.setShippingAddress(regionMap.get(userAddress.getProvinceId()) +
regionMap.get(userAddress.getCityId()) +
regionMap.get(userAddress.getDistrictId()) +
userAddress.getAddress());
}
sparePartStockAudit.setDeliveryMethod(repairOrderParam.getDeliveryMethod());
sparePartStockAudit.setRemark(repairOrderParam.getRemark());
return sparePartStockAudit;
}
/**
*
*
@ -388,7 +544,22 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
vo.setPlantName(plant.getName());
}
}
//故障类型名称
Fault faultName = faultMapper.selectOne(
new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, vo.getFaultId()));
if(faultName != null){
vo.setFaultName(faultName.getName());
}
//设置备件领用信息
SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(item.getId()
,SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
if(sparePartStockAudit != null){
SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo();
BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo);
vo.setSparePartStockAudit(sparePartStockAuditDetailVo);
}
vo.setCreateTime(item.getCreateTime());
vo.setUpdateTime(item.getUpdateTime());
list.add(vo);
@ -417,13 +588,16 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
RepairOrderDetailVo vo = new RepairOrderDetailVo();
BeanUtils.copyProperties(model, vo);
vo.setUpdateTime(model.getUpdateTime());
//客户名称
//客户名称 负责人 联系电话
Client clientName = clientMapper.selectOne(
new QueryWrapper<Client>()
.eq("id", model.getClientId()));
if(clientName != null){
vo.setClientName(clientName.getClientName());
vo.setDirector(clientName.getDirector());
vo.setPhone(clientName.getPhone());
}
//创建人名称
User creatorName = userMapper.selectOne(
new QueryWrapper<User>()
@ -431,13 +605,16 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
if(creatorName != null){
vo.setCreatorName(creatorName.getUsername());
}
//接单人名称
//接单人名称 接单人联系电话
User user = userMapper.selectOne(
new QueryWrapper<User>()
.eq("id", model.getReceiverId()));
if(user != null){
vo.setReceiverName(user.getUsername());
vo.setReceiverPhone(user.getMobile());
}
//管辖工厂
SystemAuthAdmin authAdmin = systemAuthAdminMapper.selectOne(
new QueryWrapper<SystemAuthAdmin>()
@ -451,6 +628,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
vo.setPlantName(plant.getName());
}
}
//回寄地址
UserAddress userAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
@ -464,6 +642,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
userAddressListVo.setDistrict(regionMap.get(userAddressListVo.getDistrictId()));
vo.setAddress(userAddressListVo);
}
//报废地址
UserAddress scrapAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
@ -476,6 +655,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
scrapAddressListVo.setDistrict(regionMap.get(scrapAddressListVo.getDistrictId()));
vo.setScrapAddress(scrapAddressListVo);
}
//设备信息
Equipment equipment = equipmentMapper.selectOne(
new QueryWrapper<Equipment>()
@ -488,6 +668,51 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
BeanUtils.copyProperties(equipment, equipmentListVo);
vo.setEquipment(equipmentListVo);
}
//故障类型名称
Fault faultName = faultMapper.selectOne(
new LambdaQueryWrapper<Fault>()
.eq(Fault::getId, vo.getFaultId()));
if(faultName != null){
vo.setFaultName(faultName.getName());
}
//设置配件清单
List<OrderSparePart> orderSpareParts = orderSparePartMapper.selectList(new LambdaQueryWrapper<OrderSparePart>()
.eq(OrderSparePart::getRepairOrderId, model.getId()));
List<OrderSparePartListVo> orderSparePartListVos = new ArrayList<>();
for (OrderSparePart item : orderSpareParts) {
OrderSparePartListVo orderSparePartListVo = new OrderSparePartListVo();
BeanUtils.copyProperties(item, orderSparePartListVo);
//仓库名称
Warehouse warehouse = warehouseMapper.selectOne(new LambdaQueryWrapper<Warehouse>()
.eq(Warehouse::getId, item.getWarehouseId()));
orderSparePartListVo.setWarehouseName(warehouse.getWarehouseName());
orderSparePartListVos.add(orderSparePartListVo);
}
vo.setSparePartList(orderSparePartListVos);
//确认报废 收件地址
UserAddress clientScrapAddress = userAddressMapper.selectOne(
new QueryWrapper<UserAddress>()
.eq("id", model.getClientScrapAddressId()));
if(clientScrapAddress != null){
UserAddressListVo clientScrapAddressVo = new UserAddressListVo();
BeanUtils.copyProperties(clientScrapAddress, clientScrapAddressVo);
clientScrapAddressVo.setProvince(regionMap.get(clientScrapAddressVo.getProvinceId()));
clientScrapAddressVo.setCity(regionMap.get(clientScrapAddressVo.getCityId()));
clientScrapAddressVo.setDistrict(regionMap.get(clientScrapAddressVo.getDistrictId()));
vo.setClientScrapAddress(clientScrapAddressVo);
}
//设置备件领用信息
SparePartStockAudit sparePartStockAudit = sparePartStockAuditMapper.findSparePartStockAuditByOrderId(model.getId()
,SparePartStockAuditEnum.REPAIR_ORDER.getStatus());
if(sparePartStockAudit != null){
SparePartStockAuditDetailVo sparePartStockAuditDetailVo = new SparePartStockAuditDetailVo();
BeanUtils.copyProperties(sparePartStockAudit,sparePartStockAuditDetailVo);
vo.setSparePartStockAudit(sparePartStockAuditDetailVo);
}
return vo;
}
@ -535,7 +760,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void grabTheOrder(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.WAITING_LIST.getStatus()
@ -555,7 +780,7 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
*/
@Override
public void receivingOrder(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
if(repairOrder.getOrderStatus() == MaintenanceOrderStatusEnum.PENDING_ORDER.getStatus()){
@ -572,8 +797,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
* @param repairOrderParam
*/
@Override
@Transactional
public void refundOrder(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
Assert.notNull(repairOrderParam.getCancelCause(), "退单原因不可为空");
@ -613,8 +839,9 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
* @param repairOrderParam
*/
@Override
@Transactional
public void faultDetect(RepairOrderParam repairOrderParam) {
RepairOrder repairOrder = repairOrderMapper.findMaintenanceOrderById(repairOrderParam.getId());
RepairOrder repairOrder = repairOrderMapper.findRepairOrderById(repairOrderParam.getId());
Assert.notNull(repairOrder, "数据不存在");
repairOrder.setWarehouseType(repairOrderParam.getWarehouseType()); // 仓库类型 0-我的仓库 1-公共仓库
@ -622,8 +849,10 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
Client client = clientMapper.findClientById(repairOrder.getClientId());
//判断当前客户是全包还是半包
if(client.getClientType() == ClientStatusEnum.PLIE_POINT_ALL_WRAPPED.getStatus()){
if(client.getMaintainType() == ClientStatusEnum.MODULE_MAINTENANCE_ALL_WRAPPED.getStatus()){
//全包直接变成维修中状态,需要更改是否维修状态为是
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.MAINTENANCE_ING.getStatus());
repairOrder.setIsMaintain(MaintenanceOrderStatusEnum.MAINTAIN.getStatus());
}else{
repairOrder.setOrderStatus(MaintenanceOrderStatusEnum.WAIT_CONFIRMATION.getStatus());
}
@ -637,33 +866,36 @@ public class RepairOrderServiceImpl implements IRepairOrderService {
orderSparePartMapper.deleteById(orderSparePart);
}
for (SparePartParam item : repairOrderParam.getSparePartParams()) {
SparePart sparePart = sparePartMapper.findSparePartById(item.getId());
//确认报废不用填配件数据
if(repairOrderParam.getScrapOrNot() == RepairOrderStatusEnum.NO.getStatus()){
for (SparePartParam item : repairOrderParam.getSparePartParams()) {
SparePart sparePart = sparePartMapper.findSparePartById(item.getId());
Assert.notNull(sparePart, "配件数据不存在");
OrderSparePart orderSparePart = new OrderSparePart();
BeanUtils.copyProperties(sparePart, orderSparePart);
OrderSparePart orderSparePart = new OrderSparePart();
BeanUtils.copyProperties(sparePart, orderSparePart);
orderSparePart.setId(null);
orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id
orderSparePart.setSparePartsId(item.getId()); // 备件id
orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id
orderSparePart.setQuantity(item.getQuantity()); // 数量
orderSparePart.setId(null);
orderSparePart.setRepairOrderId(repairOrder.getId()); //维修单id
orderSparePart.setSparePartsId(item.getId()); // 备件id
orderSparePart.setWarehouseId(sparePart.getWarehouseId()); // 所属仓库id
orderSparePart.setQuantity(item.getQuantity()); // 数量
//设置订单实际价格
BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPurchaseDivisor());
orderSparePart.setUnitPrice(practicalPrice); // 价格
//设置订单实际价格 = 单价 * 配件维修价格因子
BigDecimal practicalPrice = sparePart.getUnitPrice().multiply(client.getPartMaintainDivisor());
orderSparePart.setUnitPrice(practicalPrice); // 价格
// 总价 = 订单实际价格 * 数量
BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity()));
actualAmount = actualAmount.add(totalPrice);
BigDecimal totalPrice = practicalPrice.multiply(BigDecimal.valueOf(item.getQuantity()));
actualAmount = actualAmount.add(totalPrice);
orderSparePart.setTotalPrice(totalPrice); // 总价
orderSparePart.setTotalPrice(totalPrice); // 总价
orderSparePartMapper.insert(orderSparePart);
orderSparePartMapper.insert(orderSparePart);
}
repairOrder.setTotalAmount(actualAmount); // 总金额
repairOrder.setActualAmount(actualAmount); // 实际金额
}
repairOrder.setTotalAmount(actualAmount); // 总金额
repairOrder.setActualAmount(actualAmount); // 实际金额
repairOrder.setFaultId(repairOrderParam.getFaultId()); //故障原因id
repairOrder.setFaultCode(repairOrderParam.getFaultCode()); //故障代码
repairOrder.setPreMaintenanceImg(repairOrderParam.getPreMaintenanceImg()); // 维修前图片

View File

@ -101,7 +101,7 @@ public class SparePartServiceImpl implements ISparePartService {
if(param.getOrderType() == SparePartStockAuditEnum.MAINTENANCE_ORDER.getStatus()){
practicalPrice = item.getUnitPrice().multiply(client.getPointMaintainDivisor());
}else{
practicalPrice = item.getUnitPrice().multiply(client.getPurchaseDivisor());
practicalPrice = item.getUnitPrice().multiply(client.getPartMaintainDivisor());
}
sparePartListVo.setUnitPrice(practicalPrice);

View File

@ -133,6 +133,7 @@ public class RepairOrderParam implements Serializable {
private String familiarFaultDescription; // 常见维修结论描述
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
private Long clientScrapAddressId; // 客户报废收货地址
private Long scrapConfirmation; // 报废确认0=是1=否)
}

View File

@ -19,7 +19,8 @@ public class OrderSparePartListVo implements Serializable {
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库名称
private Long warehouseId; // 所属仓库名id
private String warehouseName; // 所属仓库名称
private String specificationsModel; // 规格型号
private String unit; // 单位
private BigDecimal unitPrice; // 价格

View File

@ -4,11 +4,14 @@ import com.hcy.common.entity.address.UserAddress;
import com.hcy.common.entity.client.Equipment;
import com.hcy.front.vo.address.UserAddressListVo;
import com.hcy.front.vo.client.EquipmentListVo;
import com.hcy.front.vo.client.EquipmentModelDetailVo;
import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* RepairOrderVo
@ -44,6 +47,7 @@ public class RepairOrderDetailVo implements Serializable {
private Integer priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private String expressNo; // 快递单号
private Integer returnOrNot; // 是否回寄0=是 1=否)
private Long addressId; // 回寄地址
private String siteImg; // 现场照片
@ -54,13 +58,47 @@ public class RepairOrderDetailVo implements Serializable {
private Integer repairWorkOrderFlow; // 工单去向 0=工单池 1=检修员
private UserAddressListVo address; //地址信息
private EquipmentListVo equipment; //设备信息
private Integer scrapAddressId; // 报废地址
private Long scrapAddressId; // 报废地址
private UserAddressListVo scrapAddress; //报废地址信息
private String returnCause; //退回原因
private Integer deliveryMethod; // 收件方式0=物流快递 1-上门取件 2-送货上门)
private Long consigneeAddressId; // 收件地址
private UserAddressListVo consigneeAddress; //收件地址
private String clientScrapRemark; // 客户报废备注
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private String completeImg; // 完工照片
private String faultName; //故障名称
private Integer scrapOrNot; // 是否报废0=是1=否)
private String preMaintenanceImg; // 维修前照片
private String faultPointImg; // 故障点照片
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private Date orderAccomplishTime; // 订单完成时间
private Date quotationTime; // 报价时间
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
private String refuseMaintenanceCause; // 拒绝维修原因
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
private List<OrderSparePartListVo> sparePartList; // 备件清单
private EquipmentModelDetailVo equipmentModel; //设备模块信息
private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息
private String director; // 负责人
private String phone; // 联系电话
private String receiverPhone; // 接单人联系电话
private Long scrapFaultId; // 报废类型id
private String scrapExplain; // 报废说明
private Long clientScrapAddressId; // 客户报废收货地址id
private UserAddressListVo clientScrapAddress; //客户报废收货地址
private Long scrapConfirmation; // 报废确认0=是1=否)
private Integer warehouseType; // 仓库类型 0-我的仓库 1-公共仓库
}

View File

@ -1,8 +1,10 @@
package com.hcy.front.vo.order;
import com.hcy.front.vo.sparePartStockAudit.SparePartStockAuditDetailVo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -36,7 +38,7 @@ public class RepairOrderListVo implements Serializable {
private Date createTime; // 创建时间
private Date updateTime; // 更新时间
private Long maintenanceOrderId; // 检修单id
private Long priorityId; // 优先级 0-普通 1-加急
private Integer priorityId; // 优先级 0-普通 1-加急
private Integer logisticsMode; // 物流方式 0-物流快递 1=自领带回
private String expressName; // 快递名称
private Integer returnOrNot; // 是否回寄0=是 1=否)
@ -53,6 +55,12 @@ public class RepairOrderListVo implements Serializable {
private Integer isConfirmReceipt; //是否确认收货 0-未收货 1-已收货
private Date quotationTime; // 报价时间
private Date cancelOrderTime; // 取消订单时间
private String cancelCause; // 取消原因
private String refuseMaintenanceCause; // 拒绝维修原因
private String returnCause; //退回原因
private String faultName; //故障名称
private String equipmentNo; //设备编号
private String equipmentName; //设备名称
@ -62,5 +70,15 @@ public class RepairOrderListVo implements Serializable {
private Long consigneeAddressId; // 收件地址
private String clientScrapRemark; // 客户报废备注
private String completeImg; // 完工照片
private Integer scrapOrNot; // 是否报废0=是1=否)
private String inMaintenanceImg; // 维修中照片
private String afterRepairImg; // 维修后照片
private Date orderAccomplishTime; // 订单完成时间
private BigDecimal totalAmount; // 总金额
private BigDecimal actualAmount; // 实际金额
private Long clientScrapAddressId; // 客户报废收货地址
private Long scrapConfirmation; // 报废确认0=是1=否)
private SparePartStockAuditDetailVo sparePartStockAudit; //备件领用信息
}