【admin&front】 新增&优化 # 1、优化送货单报表

dev1.0
renfan 2024-10-23 17:17:59 +08:00
parent 6ee6cdd841
commit 90ac22fffb
5 changed files with 179 additions and 64 deletions

View File

@ -186,19 +186,19 @@ public class RepairOrderController {
return AjaxResult.success(); return AjaxResult.success();
} }
/** // /**
* - // * 维修模块派单 - 重新派单
* // *
* @author hcy // * @author hcy
* @param repairOrderParam // * @param repairOrderParam 参数
* @return Object // * @return Object
*/ // */
@Log(title = "维修模块派单 - 重新派单") // @Log(title = "维修模块派单 - 重新派单")
@PostMapping("/reorder") // @PostMapping("/reorder")
public Object reorder(@Validated(value = RepairOrderParam.update.class) @RequestBody RepairOrderParam repairOrderParam) { // public Object reorder(@Validated(value = RepairOrderParam.update.class) @RequestBody RepairOrderParam repairOrderParam) {
iRepairOrderService.reorder(repairOrderParam); // iRepairOrderService.reorder(repairOrderParam);
return AjaxResult.success(); // return AjaxResult.success();
} // }
/** /**
* - * -

View File

@ -36,6 +36,7 @@ import com.hcy.common.mapper.order.RepairOrderMapper;
import com.hcy.common.mapper.order.RepairOrderShippingMapper; import com.hcy.common.mapper.order.RepairOrderShippingMapper;
import com.hcy.common.mapper.setting.DictDataMapper; import com.hcy.common.mapper.setting.DictDataMapper;
import com.hcy.common.mapper.system.SystemAuthAdminMapper; import com.hcy.common.mapper.system.SystemAuthAdminMapper;
import com.hcy.common.utils.StringUtil;
import com.hcy.common.utils.TimeUtil; import com.hcy.common.utils.TimeUtil;
import com.hcy.common.utils.excel.EasyExcelUtil; import com.hcy.common.utils.excel.EasyExcelUtil;
import com.hcy.common.utils.excel.LocalImageModifyStrategy; import com.hcy.common.utils.excel.LocalImageModifyStrategy;
@ -352,6 +353,7 @@ public class RepairOrderShippingServiceImpl implements IRepairOrderShippingServi
OfferDetailEntity offerDetail = new OfferDetailEntity(); OfferDetailEntity offerDetail = new OfferDetailEntity();
//送货单 //送货单
List<ReleaseRecordListExcel> releaseRecordListExcelList = new LinkedList<>(); List<ReleaseRecordListExcel> releaseRecordListExcelList = new LinkedList<>();
Map<String,ReleaseRecordListExcel> releaseRecordListExcelMap = new HashMap<>();
int index = 1; int index = 1;
//功率字典 //功率字典
@ -367,66 +369,167 @@ public class RepairOrderShippingServiceImpl implements IRepairOrderShippingServi
offerDetail.setCreator(contentAdmin.getUsername()); offerDetail.setCreator(contentAdmin.getUsername());
} }
List<RepairOrderShipping> repairOrderShippings = repairOrderShippingMapper.selectList(new LambdaQueryWrapper<RepairOrderShipping>() // List<RepairOrderShipping> repairOrderShippings = repairOrderShippingMapper.selectList(new LambdaQueryWrapper<RepairOrderShipping>()
.in(RepairOrderShipping::getId, params.getIds()) // .in(RepairOrderShipping::getId, params.getIds())
.orderByDesc(RepairOrderShipping::getDeliveryTime)); // .orderByDesc(RepairOrderShipping::getDeliveryTime));
repairOrderMapper.selectList(new LambdaQueryWrapper<RepairOrder>() // for (RepairOrderShipping item : repairOrderShippings) {
// ReleaseRecordListExcel releaseRecordListExcel = new ReleaseRecordListExcel();
// BeanUtils.copyProperties(item, releaseRecordListExcel);
// //序号
// releaseRecordListExcel.setIndex(index);
// //规格型号
// RepairOrder repairOrder = repairOrderMapper.selectOne(new LambdaQueryWrapper<RepairOrder>()
// .eq(RepairOrder::getShippingId, item.getId())
// .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
// .orderByDesc(RepairOrder::getCreateTime)
// .last("limit 1"));
// releaseRecordListExcel.setModuleNumber(repairOrder.getModuleNumber());
// releaseRecordListExcel.setModelCode(repairOrder.getModuleCode()); // 料号
// //工单编号
// ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
// .eq(ParentRepairOrder::getId, repairOrder.getParentRepairOrderId()));
// releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo());
//
// //单位
// releaseRecordListExcel.setUnit("PCS");
//
// //备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
// //模块功率0=10kw1=20kw2=30kw3=40kw4=50kw5=60kw6=70kw
// String modulePower = distMap.get(repairOrder.getModulePower().toString());
//
// //1、查询出维修结论报废的数量
// Integer scrapCount = repairOrderMapper.selectCount(new LambdaQueryWrapper<RepairOrder>()
// .eq(RepairOrder::getShippingId, item.getId())
// .eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.SCRAP.getStatus())
// .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE));
//
// //2、查询出维修结论ok的数量
// Integer okCount = repairOrderMapper.selectCount(new LambdaQueryWrapper<RepairOrder>()
// .eq(RepairOrder::getShippingId, item.getId())
// .eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.OK.getStatus())
// .eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE));
//
// if(scrapCount != 0 && okCount != 0){
// releaseRecordListExcel.setRemark(modulePower + "" + scrapCount + "台报废," + okCount + "台OK");
// }else if(scrapCount != 0){
// releaseRecordListExcel.setRemark(modulePower + "" + scrapCount + "台报废");
// }else if(okCount != 0){
// releaseRecordListExcel.setRemark(modulePower + "" + okCount + "台OK");
// }
//
// //送货日期
// releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(item.getDeliveryTime(), TimeConstant.DATE_FORMAT));
//
// releaseRecordListExcelList.add(releaseRecordListExcel);
// index++; // 序号累计
// offerDetail.setTotalQty(offerDetail.getTotalQty() + item.getTheQuantityShipped()); // 合计
// }
List<RepairOrder> repairOrders = repairOrderMapper.selectList(new LambdaQueryWrapper<RepairOrder>()
.in(RepairOrder::getShippingId, params.getIds()) .in(RepairOrder::getShippingId, params.getIds())
.orderByDesc(RepairOrder::getCreateTime)); .orderByDesc(RepairOrder::getCreateTime));
for (RepairOrderShipping item : repairOrderShippings) { for (RepairOrder item : repairOrders) {
ReleaseRecordListExcel releaseRecordListExcel = new ReleaseRecordListExcel(); ReleaseRecordListExcel releaseRecordListExcel = null;
BeanUtils.copyProperties(item, releaseRecordListExcel);
String key = item.getModuleNumber() + item.getModulePower();
if(releaseRecordListExcelMap.get(key) != null){
releaseRecordListExcel = releaseRecordListExcelMap.get(key);
}
//客户名称
Client client = clientMapper.selectOne(new LambdaQueryWrapper<Client>()
.eq(Client::getId, item.getClientId()));
if(client != null){
offerDetail.setClientName(client.getClientName());
}
if(releaseRecordListExcel == null){
releaseRecordListExcel = new ReleaseRecordListExcel();
//序号 //序号
releaseRecordListExcel.setIndex(index); releaseRecordListExcel.setIndex(index);
//规格型号
RepairOrder repairOrder = repairOrderMapper.selectOne(new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getShippingId, item.getId())
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE)
.orderByDesc(RepairOrder::getCreateTime)
.last("limit 1"));
releaseRecordListExcel.setModuleNumber(repairOrder.getModuleNumber());
releaseRecordListExcel.setModelCode(repairOrder.getModuleCode()); // 料号
//工单编号
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, repairOrder.getParentRepairOrderId()));
releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo());
//单位 //单位
releaseRecordListExcel.setUnit("PCS"); releaseRecordListExcel.setUnit("PCS");
//工单编号
ParentRepairOrder parentRepairOrder = parentRepairOrderMapper.selectOne(new LambdaQueryWrapper<ParentRepairOrder>()
.eq(ParentRepairOrder::getId, item.getParentRepairOrderId()));
releaseRecordListExcel.setOrderNo(parentRepairOrder.getOrderNo());
//型号
releaseRecordListExcel.setModuleNumber(item.getModuleNumber());
//功率
releaseRecordListExcel.setPower(distMap.get(item.getModulePower().toString()));
//订单数量
releaseRecordListExcel.setOrderAmount(1);
//本次交货数量
releaseRecordListExcel.setTheQuantityShipped(1);
//发货记录
RepairOrderShipping repairOrderShipping = repairOrderShippingMapper.selectOne(new LambdaQueryWrapper<RepairOrderShipping>()
.eq(RepairOrderShipping::getId, item.getShippingId()));
//累计交货数量
releaseRecordListExcel.setAccumulativeQuantityShipped(repairOrderShipping.getAccumulativeQuantityShipped());
//未交数量
releaseRecordListExcel.setUndeliveredQuantity(repairOrderShipping.getUndeliveredQuantity());
//维修结论
if(item.getMaintenanceResult() != null){
String result;
if(item.getMaintenanceResult() == 0){
result = "报废";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc(),1);
}else{
result = "OK";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc(),1);
}
releaseRecordListExcel.setRemark(1 + "台" + result);
}else{
//备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK //备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
//模块功率0=10kw1=20kw2=30kw3=40kw4=50kw5=60kw6=70kw releaseRecordListExcel.setRemark(1 + "台");
String modulePower = distMap.get(repairOrder.getModulePower().toString()); releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc(),1);
//1、查询出维修结论报废的数量
Integer scrapCount = repairOrderMapper.selectCount(new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getShippingId, item.getId())
.eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.SCRAP.getStatus())
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE));
//2、查询出维修结论ok的数量
Integer okCount = repairOrderMapper.selectCount(new LambdaQueryWrapper<RepairOrder>()
.eq(RepairOrder::getShippingId, item.getId())
.eq(RepairOrder::getMaintenanceResult, RepairOrderStatusEnum.OK.getStatus())
.eq(RepairOrder::getIsDelete, GlobalConstant.NOT_DELETE));
if(scrapCount != 0 && okCount != 0){
releaseRecordListExcel.setRemark(modulePower + "" + scrapCount + "台报废," + okCount + "台OK");
}else if(scrapCount != 0){
releaseRecordListExcel.setRemark(modulePower + "" + scrapCount + "台报废");
}else if(okCount != 0){
releaseRecordListExcel.setRemark(modulePower + "" + okCount + "台OK");
} }
//送货日期 //送货日期
releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(item.getDeliveryTime(), TimeConstant.DATE_FORMAT)); releaseRecordListExcel.setDeliveryTime(TimeUtil.dateToString(repairOrderShipping.getDeliveryTime(), TimeConstant.DATE_FORMAT));
releaseRecordListExcelList.add(releaseRecordListExcel); releaseRecordListExcelList.add(releaseRecordListExcel);
releaseRecordListExcelMap.put(key,releaseRecordListExcel);
index++; // 序号累计 index++; // 序号累计
offerDetail.setTotalQty(offerDetail.getTotalQty() + item.getTheQuantityShipped()); // 合计 }else{
releaseRecordListExcel.setOrderAmount(releaseRecordListExcel.getOrderAmount() + 1);
releaseRecordListExcel.setTheQuantityShipped(releaseRecordListExcel.getTheQuantityShipped() + 1);
if(item.getMaintenanceResult() != null){
String result;
if(item.getMaintenanceResult() == 0){
result = "报废";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.SCRAP.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.SCRAP.getDesc()) + 1);
}else{
result = "OK";
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.OK.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.OK.getDesc()) + 1);
} }
releaseRecordListExcel.setRemark(1 + "台" + result);
}else{
//备注 功率 + 本次交货数量 + 返修结论 例如20KW5台OK
releaseRecordListExcel.setRemark(1 + "台");
releaseRecordListExcel.getRemarkMap().put(RepairOrderStatusEnum.EMPTY.getDesc()
,releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) == null ? 1 : releaseRecordListExcel.getRemarkMap().get(RepairOrderStatusEnum.EMPTY.getDesc()) + 1);
}
StringBuilder builder = new StringBuilder();
for (String flag : releaseRecordListExcel.getRemarkMap().keySet()) {
if(RepairOrderStatusEnum.SCRAP.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台报废" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台报废");
}else if(RepairOrderStatusEnum.OK.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台OK" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台OK");
}else if(RepairOrderStatusEnum.EMPTY.getDesc().equals(flag)){
builder.append(StringUtil.isEmpty(builder) ? releaseRecordListExcel.getRemarkMap().get(flag) + "台" : "," + releaseRecordListExcel.getRemarkMap().get(flag) + "台");
}
}
releaseRecordListExcel.setRemark(builder.toString());
}
offerDetail.setTotalQty(offerDetail.getTotalQty() + 1); // 合计
}
WriteSheet sheet = EasyExcel.writerSheet(0).build(); WriteSheet sheet = EasyExcel.writerSheet(0).build();
writer.fill(offerDetail, sheet); writer.fill(offerDetail, sheet);
writer.fill(releaseRecordListExcelList, fillConfig, sheet); writer.fill(releaseRecordListExcelList, fillConfig, sheet);

View File

@ -9,7 +9,9 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Data @Data
@Builder @Builder
@ -43,4 +45,13 @@ public class ReleaseRecordListExcel implements Serializable {
private String remark; //备注 private String remark; //备注
@ApiModelProperty(value = "送货日期") @ApiModelProperty(value = "送货日期")
private String deliveryTime; private String deliveryTime;
private Map<String,Integer> remarkMap;
public Map<String, Integer> getRemarkMap() {
if(remarkMap == null){
remarkMap = new HashMap<>();
}
return remarkMap;
}
} }

View File

@ -40,6 +40,7 @@ public enum RepairOrderStatusEnum {
// 维修结论0=报废1=OK // 维修结论0=报废1=OK
SCRAP(0, "报废"), SCRAP(0, "报废"),
OK(1, "OK"), OK(1, "OK"),
EMPTY(2, "空"),
// 事项0=派单事项、1=发货事项) // 事项0=派单事项、1=发货事项)
DISPATCH_ITEM(0,"派单事项"), DISPATCH_ITEM(0,"派单事项"),