dev1.0
renfan 2024-10-15 12:42:50 +08:00
commit 575cee7125
20 changed files with 259 additions and 6 deletions

View File

@ -4,15 +4,18 @@ import com.hcy.admin.config.aop.Log;
import com.hcy.admin.service.order.IParentRepairOrderService; import com.hcy.admin.service.order.IParentRepairOrderService;
import com.hcy.admin.validate.order.ParentRepairOrderParam; import com.hcy.admin.validate.order.ParentRepairOrderParam;
import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.RepairOrderParam;
import com.hcy.admin.vo.order.ParentRepairOrderListVo; import com.hcy.admin.vo.order.ParentRepairOrderListVo;
import com.hcy.admin.vo.order.ParentRepairOrderDetailVo; import com.hcy.admin.vo.order.ParentRepairOrderDetailVo;
import com.hcy.common.core.AjaxResult; import com.hcy.common.core.AjaxResult;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.common.validator.annotation.IDMust; import com.hcy.common.validator.annotation.IDMust;
import io.swagger.annotations.ApiOperation;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Map; import java.util.Map;
/** /**
@ -108,5 +111,9 @@ public class ParentRepairOrderController {
return AjaxResult.success(list); return AjaxResult.success(list);
} }
@ApiOperation(value = "模块管理 - 导出Excel报表")
@PostMapping(value="/exportExcel")
public void exportExcel(@Validated @RequestBody ParentRepairOrderParam params, HttpServletResponse response) {
iParentRepairOrderService.exportExcel(params,response);
}
} }

View File

@ -242,4 +242,6 @@ public class RepairOrderController {
List<RepairOrderListVo> list = iRepairOrderService.shippingList(repairOrderParam); List<RepairOrderListVo> list = iRepairOrderService.shippingList(repairOrderParam);
return AjaxResult.success(list); return AjaxResult.success(list);
} }
} }

View File

@ -2,12 +2,14 @@ package com.hcy.admin.service.order;
import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.ParentRepairOrderParam; import com.hcy.admin.validate.order.ParentRepairOrderParam;
import com.hcy.admin.validate.order.RepairOrderParam;
import com.hcy.admin.vo.order.DispatchItemListVO; import com.hcy.admin.vo.order.DispatchItemListVO;
import com.hcy.admin.vo.order.ParentRepairOrderListVo; import com.hcy.admin.vo.order.ParentRepairOrderListVo;
import com.hcy.admin.vo.order.ParentRepairOrderDetailVo; import com.hcy.admin.vo.order.ParentRepairOrderDetailVo;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import javax.servlet.http.HttpServletResponse;
import java.util.Map; import java.util.Map;
/** /**
@ -66,4 +68,11 @@ public interface IParentRepairOrderService {
* @return PageResult<ParentRepairOrderVo> * @return PageResult<ParentRepairOrderVo>
*/ */
PageResult<ParentRepairOrderListVo> dispatchItemList(PageParam pageParam, ParentRepairOrderParam parentRepairOrderParam); PageResult<ParentRepairOrderListVo> dispatchItemList(PageParam pageParam, ParentRepairOrderParam parentRepairOrderParam);
/**
* -
* @param params
* @return
*/
void exportExcel(ParentRepairOrderParam params, HttpServletResponse response);
} }

View File

@ -1,5 +1,9 @@
package com.hcy.admin.service.order.impl; package com.hcy.admin.service.order.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
@ -8,18 +12,20 @@ import com.github.yulichang.query.MPJQueryWrapper;
import com.hcy.admin.service.order.IParentRepairOrderService; import com.hcy.admin.service.order.IParentRepairOrderService;
import com.hcy.admin.validate.common.PageParam; import com.hcy.admin.validate.common.PageParam;
import com.hcy.admin.validate.order.ParentRepairOrderParam; import com.hcy.admin.validate.order.ParentRepairOrderParam;
import com.hcy.admin.vo.excel.OfferDetailEntity;
import com.hcy.admin.vo.excel.order.GetMaterialsOrder;
import com.hcy.admin.vo.order.*; import com.hcy.admin.vo.order.*;
import com.hcy.common.constant.GlobalConstant; import com.hcy.common.constant.GlobalConstant;
import com.hcy.common.core.PageResult; import com.hcy.common.core.PageResult;
import com.hcy.common.dto.order.MaintenanceOrderDto; import com.hcy.common.dto.order.*;
import com.hcy.common.dto.order.ParentRepairOrderDto;
import com.hcy.common.dto.order.RepairOrderDto;
import com.hcy.common.entity.client.Client; import com.hcy.common.entity.client.Client;
import com.hcy.common.entity.order.ParentRepairOrder; import com.hcy.common.entity.order.ParentRepairOrder;
import com.hcy.common.entity.order.RepairOrder; import com.hcy.common.entity.order.RepairOrder;
import com.hcy.common.entity.system.SystemAuthAdmin; import com.hcy.common.entity.system.SystemAuthAdmin;
import com.hcy.common.entity.user.User; import com.hcy.common.entity.user.User;
import com.hcy.common.enums.order.RepairOrderStatusEnum; import com.hcy.common.enums.order.RepairOrderStatusEnum;
import com.hcy.common.exception.OperateException;
import com.hcy.common.mapper.order.OrderSparePartMapper;
import com.hcy.common.mapper.order.ParentRepairOrderMapper; import com.hcy.common.mapper.order.ParentRepairOrderMapper;
import com.hcy.common.mapper.order.RepairOrderMapper; import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
@ -29,11 +35,17 @@ import com.hcy.common.utils.StringUtil;
import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.UrlUtil; import com.hcy.common.utils.UrlUtil;
import com.hcy.common.config.GlobalConfig; import com.hcy.common.config.GlobalConfig;
import com.hcy.common.utils.excel.EasyExcelUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert; import org.springframework.util.Assert;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -55,6 +67,9 @@ public class ParentRepairOrderServiceImpl implements IParentRepairOrderService {
@Resource @Resource
SystemAuthAdminMapper systemAuthAdminMapper; SystemAuthAdminMapper systemAuthAdminMapper;
@Resource
OrderSparePartMapper orderSparePartMapper;
/** /**
* *
* *
@ -300,4 +315,111 @@ public class ParentRepairOrderServiceImpl implements IParentRepairOrderService {
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
} }
@Override
public void exportExcel(ParentRepairOrderParam params, HttpServletResponse response) {
try {
Assert.notNull(params.getClientId(),"客户id不可为空");
ServletOutputStream out = response.getOutputStream();
LambdaQueryWrapper<ParentRepairOrder> lambdaQueryWrapper = new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.eq(ParentRepairOrder::getClientId, params.getClientId())
.between(ParentRepairOrder::getCreateTime, params.getStartTime(), params.getEndTime());
FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
List<ParentRepairOrder> parentRepairOrders = parentRepairOrderMapper.selectList(lambdaQueryWrapper);
String[] typeIdList = params.getTypeIds().split(",");
EasyExcelUtil.initResponse(response, "领料单");
// 文件模板输入流,将 excel 模板放到 resources 目录下
InputStream templateFile = new ClassPathResource("templates/excel/materialRequisition.xlsx").getInputStream();
int index1 = 0;
Map<Long,SystemAuthAdmin> adminMap = new HashMap<>();
// XSSFWorkbook workbook = new XSSFWorkbook(templateFile);
// for (int i = 0; i < parentRepairOrders.size(); i++) {
// if(i == 0){
// workbook.setSheetName(0, parentRepairOrders.get(i).getOrderNo() + "领料单");
// }else{
// workbook.cloneSheet(0,parentRepairOrders.get(i).getOrderNo() + "领料单");
// }
// }
// workbook.write(out);
ExcelWriter writer = EasyExcel
.write(out)
.withTemplate(templateFile)
.build();
for (ParentRepairOrder parentRepairOrder : parentRepairOrders) {
List<RepairOrder> repairOrderList = repairOrderMapper.findRepairOrderByParentId(parentRepairOrder.getId());
int totalQuantity = 0;
int index = 1;
OfferDetailEntity offerDetail = new OfferDetailEntity();
offerDetail.setDeliveryTime(TimeUtil.timestampToDate(System.currentTimeMillis() / 1000,"yyyy-MM-dd"));
offerDetail.setOrderNo(parentRepairOrder.getOrderNo());
//获取创建者信息
SystemAuthAdmin contentAdmin= systemAuthAdminMapper.findSystemAuthAdminByUserId(Math.toIntExact(parentRepairOrder.getCreatorId()));
if(contentAdmin != null){
offerDetail.setCreator(contentAdmin.getUsername());
}
offerDetail.setTotalQty(totalQuantity);
WriteSheet sheet = EasyExcel.writerSheet(0,parentRepairOrder.getOrderNo() + "领料单").build();
//填充内容占位符
writer.fill(offerDetail, sheet);
List<GetMaterialsOrder> getMaterialsOrderList = new ArrayList<>();
for (RepairOrder item : repairOrderList) {
for (String ids : typeIdList) {
if(ids.equals("1")){
List<OrderSparePartDto> orderSparePartList = orderSparePartMapper.findOrderSparePartByModuleId(item.getId());
if(orderSparePartList.isEmpty()){
continue;
}
for (OrderSparePartDto orderSparePartDto : orderSparePartList) {
GetMaterialsOrder getMaterialsOrder = new GetMaterialsOrder();
getMaterialsOrder.setIndex(index);
getMaterialsOrder.setModelType(item.getModuleNumber());
getMaterialsOrder.setModelCode(item.getModuleCode());
getMaterialsOrder.setSparePartsCode(orderSparePartDto.getSparePartsCode());
getMaterialsOrder.setName(orderSparePartDto.getSparePartsName());
getMaterialsOrder.setSpecificationsModel(orderSparePartDto.getSpecificationsModel());
getMaterialsOrder.setUnit(orderSparePartDto.getUnit());
getMaterialsOrder.setQuantityClaimed(orderSparePartDto.getCount().toString());
getMaterialsOrder.setActualQuantity(orderSparePartDto.getCount().toString());
SystemAuthAdmin systemAuthAdmin;
if(adminMap.get(orderSparePartDto.getApplicantId()) != null){
systemAuthAdmin = adminMap.get(orderSparePartDto.getApplicantId());
}else{
systemAuthAdmin = systemAuthAdminMapper.findSystemAuthAdminByUserId(Math.toIntExact(orderSparePartDto.getApplicantId()));
adminMap.put(orderSparePartDto.getApplicantId(),systemAuthAdmin);
}
if(systemAuthAdmin != null){
getMaterialsOrder.setRecipient(systemAuthAdmin.getUsername());
}
getMaterialsOrderList.add(getMaterialsOrder);
index++;
totalQuantity += orderSparePartDto.getCount();
}
}
}
}
// 填充列表占位符
writer.fill(getMaterialsOrderList, fillConfig, sheet);
index1++;
}
writer.finish();
out.close();
templateFile.close();
}catch (Exception e){
e.printStackTrace();
throw new OperateException("导出报表出现错误:"+e.getLocalizedMessage());
}
}
} }

View File

@ -188,6 +188,7 @@ public class SparePartServiceImpl implements ISparePartService {
model.setQuantity(sparePartParam.getQuantity()); model.setQuantity(sparePartParam.getQuantity());
model.setUnitPrice(sparePartParam.getUnitPrice()); model.setUnitPrice(sparePartParam.getUnitPrice());
model.setCreateTime(System.currentTimeMillis() / 1000); model.setCreateTime(System.currentTimeMillis() / 1000);
model.setBrand(sparePartParam.getBrand());
sparePartMapper.insert(model); sparePartMapper.insert(model);
} }
@ -223,6 +224,7 @@ public class SparePartServiceImpl implements ISparePartService {
model.setWarehouseId(sparePartParam.getWarehouseId()); model.setWarehouseId(sparePartParam.getWarehouseId());
model.setSpecificationsModel(sparePartParam.getSpecificationsModel()); model.setSpecificationsModel(sparePartParam.getSpecificationsModel());
model.setUnit(sparePartParam.getUnit()); model.setUnit(sparePartParam.getUnit());
model.setBrand(sparePartParam.getBrand());
/*model.setQuantity(sparePartParam.getQuantity());// 库存数量*/ /*model.setQuantity(sparePartParam.getQuantity());// 库存数量*/
model.setUnitPrice(sparePartParam.getUnitPrice()); model.setUnitPrice(sparePartParam.getUnitPrice());
model.setUpdateTime(System.currentTimeMillis() / 1000);//更新时间 model.setUpdateTime(System.currentTimeMillis() / 1000);//更新时间

View File

@ -7,6 +7,7 @@ import org.hibernate.validator.constraints.Length;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* *
@ -36,4 +37,8 @@ public class ParentRepairOrderParam implements Serializable {
private String moduleCode; // 模块代码 private String moduleCode; // 模块代码
private Integer matter; // 事项0=派单事项、1=发货事项) private Integer matter; // 事项0=派单事项、1=发货事项)
private String typeIds; //表单类型 0-入仓单 1-领料单 2-维修单 3-报废单 4-难修改派单 5-报废维修单
private String startTime; //开始时间
private String endTime; //结束时间
} }

View File

@ -52,5 +52,7 @@ public class SparePartParam implements Serializable {
private BigDecimal unitPrice; private BigDecimal unitPrice;
private String brand; //品牌
private List<Integer> ids; //批量删除 private List<Integer> ids; //批量删除
} }

View File

@ -22,7 +22,7 @@ public class OfferDetailEntity {
private String orderNo; private String orderNo;
@ApiModelProperty(value = "制单人") @ApiModelProperty(value = "制单人")
private String consignerName; private String creator;
@ApiModelProperty(value = "合计数量") @ApiModelProperty(value = "合计数量")
private Integer totalQty; private Integer totalQty;

View File

@ -0,0 +1,44 @@
package com.hcy.admin.vo.excel.order;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GetMaterialsOrder {
@ApiModelProperty(value = "序号")
private Integer index;
@ApiModelProperty(value = "模块型号")
private String modelType;
@ApiModelProperty(value = "模块代码")
private String modelCode;
@ApiModelProperty(value = "料号")
private String sparePartsCode;
@ApiModelProperty(value = "品牌")
private String name;
@ApiModelProperty(value = "型号/规格")
private String specificationsModel;
@ApiModelProperty(value = "单位")
private String unit;
@ApiModelProperty(value = "领料数量")
private String quantityClaimed;
@ApiModelProperty(value = "实发数量")
private String actualQuantity;
@ApiModelProperty(value = "领取人员")
private String recipient;
}

View File

@ -22,5 +22,5 @@ public class SparePartDetailVo implements Serializable {
private Integer quantity; // 库存数量 private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价 private BigDecimal unitPrice; // 单价
private String warehouseName; // 所属仓库名 private String warehouseName; // 所属仓库名
private String brand; //品牌
} }

View File

@ -23,6 +23,7 @@ public class SparePartListVo implements Serializable {
private String createTime; // 创建时间 private String createTime; // 创建时间
private String updateTime; // 更新时间 private String updateTime; // 更新时间
private BigDecimal unitPrice; // 单价 private BigDecimal unitPrice; // 单价
private String brand; //品牌
// 备件模糊关键字 // 备件模糊关键字
private String likeWork; private String likeWork;

View File

@ -0,0 +1,36 @@
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 OrderSparePartDto implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Long id; // id
private Long maintenanceOrderId; //检修单id
private Long repairOrderId; //维修单id
private Long sparePartsId; // 备件id
private String sparePartsCode; // 备件编码
private String sparePartsName; // 备件名称
private Long warehouseId; // 所属仓库名称
private String specificationsModel; // 规格型号
private String unit; // 单位
private BigDecimal unitPrice; // 价格
private Integer quantity; // 库存数量
private Integer count; // 出入库数量
private BigDecimal totalPrice; // 总价
private Long applicantId; //申请人员id
private Integer isDelete; // 是否删除 0-未删除 1-删除
}

View File

@ -25,6 +25,7 @@ public class SparePart implements Serializable {
private String unit; // 单位 private String unit; // 单位
private Integer quantity; // 库存数量 private Integer quantity; // 库存数量
private BigDecimal unitPrice; // 单价 private BigDecimal unitPrice; // 单价
private String brand; //品牌
private Integer isDelete; // 是否删除: [0=否, 1=是] private Integer isDelete; // 是否删除: [0=否, 1=是]
private Long createTime; // 创建时间 private Long createTime; // 创建时间
private Long updateTime; // 更新时间 private Long updateTime; // 更新时间

View File

@ -2,6 +2,7 @@ package com.hcy.common.mapper.order;
import com.hcy.common.core.basics.IBaseMapper; import com.hcy.common.core.basics.IBaseMapper;
import com.hcy.common.dto.order.OrderSparePart; import com.hcy.common.dto.order.OrderSparePart;
import com.hcy.common.dto.order.OrderSparePartDto;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
@ -29,4 +30,16 @@ public interface OrderSparePartMapper extends IBaseMapper<OrderSparePart> {
*/ */
@Select("SELECT * FROM la_order_spare_part WHERE repair_order_id = #{repairOrderId}") @Select("SELECT * FROM la_order_spare_part WHERE repair_order_id = #{repairOrderId}")
List<OrderSparePart> findOrderSparePartByRepairOrderId(@Param("repairOrderId") Long repairOrderId); List<OrderSparePart> findOrderSparePartByRepairOrderId(@Param("repairOrderId") Long repairOrderId);
@Select("SELECT\n" +
"\tosp.*,\n" +
"\troa.applicant_id AS applicantId \n" +
"FROM\n" +
"\tla_order_spare_part AS osp\n" +
"\tLEFT JOIN la_repair_order_audit AS roa ON osp.repair_order_id = roa.repair_order_id \n" +
"WHERE\n" +
"\troa.repair_order_id = #{moduleId} \n" +
"\tAND roa.review_request = 1\n" +
"\tAND roa.audit_status = 3")
List<OrderSparePartDto> findOrderSparePartByModuleId(@Param("moduleId") Long moduleId);
} }

View File

@ -6,6 +6,7 @@ import com.hcy.common.dto.order.ParentRepairOrderDto;
import com.hcy.common.entity.order.ParentRepairOrder; import com.hcy.common.entity.order.ParentRepairOrder;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/** /**
* Mapper * Mapper

View File

@ -90,4 +90,12 @@ public interface RepairOrderMapper extends IBaseMapper<RepairOrder> {
* @return * @return
*/ */
IPage<RepairOrderDto> auditMattersList(@Param("page") Page page, @Param("param")RepairOrderDto repairOrderDto); IPage<RepairOrderDto> auditMattersList(@Param("page") Page page, @Param("param")RepairOrderDto repairOrderDto);
/**
* id
* @param parentId id
* @return
*/
@Select("SELECT * FROM la_repair_order WHERE parent_repair_order_id = #{parentId}")
List<RepairOrder> findRepairOrderByParentId(@Param("parentId") Long parentId);
} }