Commit 7ce02b1b by 李小惠

修改出入库接口,修改报表接口(未完成,spoon的代码也未完成)

parent ba464479
...@@ -17,4 +17,8 @@ public class TjOrgCountReq extends BaseRequest { ...@@ -17,4 +17,8 @@ public class TjOrgCountReq extends BaseRequest {
@NotNull(message = "年份不能为空",groups = detail.class) @NotNull(message = "年份不能为空",groups = detail.class)
private Integer year; private Integer year;
private List<Integer> monthList; private List<Integer> monthList;
private Boolean removeEmpty;
private String typeParentId;
private Integer levelNum;
} }
\ No newline at end of file
...@@ -14,7 +14,7 @@ public enum OrderExceptionEnum implements IExceptionEnum { ...@@ -14,7 +14,7 @@ public enum OrderExceptionEnum implements IExceptionEnum {
ORDERDETAIL_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"子单据不一致,操作失败"), ORDERDETAIL_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"子单据不一致,操作失败"),
ROLE_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"审核组织机构用户配置异常!请检查日志"), ROLE_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"审核组织机构用户配置异常!请检查日志"),
ORDER_CREATE_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"单子创建失败"), ORDER_CREATE_ERROR(CommonConstant.DEFAULT_USER_ERROR_CODE,"单子创建失败"),
ORDER_NUM_IS_NULL(CommonConstant.DEFAULT_USER_ERROR_CODE,"请先选择仓库确认"), ORDER_NUM_IS_NULL(CommonConstant.DEFAULT_USER_ERROR_CODE,"记账数量为空或0,请确认记账数量"),
; ;
/** /**
......
...@@ -151,6 +151,12 @@ public class TjController { ...@@ -151,6 +151,12 @@ public class TjController {
return ApiRes.success(tjService.TjOrgCountSum(req)); return ApiRes.success(tjService.TjOrgCountSum(req));
} }
@PostMapping("/TjOrgCountDetail")
@ApiOperation("/查询组织机构下的使用统计明细")
public ApiRes<List<TjOrgCountDto>> TjOrgPriceDetail(@RequestBody TjOrgCountReq req){
return ApiRes.success(tjService.TjOrgCountDetail(req));
}
//财务统计报表(点击+后里面的数据) //财务统计报表(点击+后里面的数据)
@PostMapping("/TjOrgCountDetailPage") @PostMapping("/TjOrgCountDetailPage")
@ApiOperation("/查询组织机构下的使用统计明细") @ApiOperation("/查询组织机构下的使用统计明细")
......
...@@ -63,6 +63,11 @@ public class PoliceEquipment implements Serializable { ...@@ -63,6 +63,11 @@ public class PoliceEquipment implements Serializable {
@TableField("num") @TableField("num")
private Integer num; private Integer num;
@TableField(value = "in_num")
private Integer inNum;
@TableField(value = "out_num")
private Integer outNum;
/** /**
* 组织机构ID * 组织机构ID
*/ */
...@@ -97,6 +102,8 @@ public class PoliceEquipment implements Serializable { ...@@ -97,6 +102,8 @@ public class PoliceEquipment implements Serializable {
@TableField("create_time") @TableField("create_time")
private Date createTime; private Date createTime;
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -19,10 +19,29 @@ public interface EquipmentCountSummaryMapper extends BaseMapper<EquipmentCountSu ...@@ -19,10 +19,29 @@ public interface EquipmentCountSummaryMapper extends BaseMapper<EquipmentCountSu
void addInfo(@Param("sql") String sql); void addInfo(@Param("sql") String sql);
List<TjOrgCountDto> TjOrgCount(@Param("orgId") Long orgId, TjOrgCountDto TjOrgCount(@Param("orgId") String orgId,
@Param("typeIdsList") List<String> typeIdsList, @Param("typeIdsList") List<String> typeIdsList,
@Param("sizeNameList") List<String> sizeNameList, @Param("sizeNameList") List<String> sizeNameList,
@Param("year")Integer year); @Param("year")Integer year,
@Param("typeParentId")String typeParentId,
@Param("monthList") List<Integer> monthList);
TjOrgCountDto TjOrgCountleve4(@Param("orgId") Long orgId,
@Param("typeIdsList") List<String> typeIdsList,
@Param("sizeNameList") List<String> sizeNameList,
@Param("year") Integer year,
@Param("typeParentId")String typeParentId,
@Param("monthList") List<Integer> monthList,
@Param("levelFlag")Integer levelFlag);
List<TjOrgCountDto> TjOrgCountTotalNum(@Param("orgId") Long orgId,
@Param("typeIdsList") List<String> typeIdsList,
@Param("sizeNameList") List<String> sizeNameList,
@Param("year") Integer year,
@Param("typeParentId")String typeParentId,
@Param("monthList") List<Integer> monthList,
@Param("levelNum")Integer levelNum);
FinalTjOrgCountDto TjOrgCountSum(@Param("orgId") Long orgId, FinalTjOrgCountDto TjOrgCountSum(@Param("orgId") Long orgId,
@Param("sizeNameList") List<String> sizeNameList, @Param("sizeNameList") List<String> sizeNameList,
...@@ -47,6 +66,8 @@ public interface EquipmentCountSummaryMapper extends BaseMapper<EquipmentCountSu ...@@ -47,6 +66,8 @@ public interface EquipmentCountSummaryMapper extends BaseMapper<EquipmentCountSu
void setSizeName(@Param("sizeId") String id,@Param("sizeName") String name); void setSizeName(@Param("sizeId") String id,@Param("sizeName") String name);
void setTypeName(@Param("typeId") String id,@Param("typeName") String name); void setTypeName(@Param("typeId") String id,@Param("typeName") String name);
} }
......
...@@ -44,9 +44,9 @@ public interface PriceSumSummaryMapper extends BaseMapper<PriceSumSummary> { ...@@ -44,9 +44,9 @@ public interface PriceSumSummaryMapper extends BaseMapper<PriceSumSummary> {
@Param("typeIdsList")List<String> typeIdsList, @Param("typeIdsList")List<String> typeIdsList,
@Param("sizeNameList") List<String> sizeNameList); @Param("sizeNameList") List<String> sizeNameList);
FinalTjOrgPriceDto TjOrgPriceSum(@Param("orgId") Long orgId,@Param("year") Integer year, // FinalTjOrgPriceDto TjOrgPriceSum(@Param("orgId") Long orgId,@Param("year") Integer year,
@Param("typeIdsList") List<String> typeIdsList, // @Param("typeIdsList") List<String> typeIdsList,
@Param("sizeNameList") List<String> sizeNameList); // @Param("sizeNameList") List<String> sizeNameList);
void setSizeName(@Param("sizeId") String id, @Param("sizeName") String name); void setSizeName(@Param("sizeId") String id, @Param("sizeName") String name);
...@@ -55,10 +55,12 @@ public interface PriceSumSummaryMapper extends BaseMapper<PriceSumSummary> { ...@@ -55,10 +55,12 @@ public interface PriceSumSummaryMapper extends BaseMapper<PriceSumSummary> {
TjOrgPriceDto TjOrgPriceLeve4(@Param("orgId") Long orgId, TjOrgPriceDto TjOrgPriceLeve4(@Param("orgId") Long orgId,
@Param("year") Integer year, @Param("year") Integer year,
@Param("typeIdsList") List<String> typeIdsList, @Param("typeIdsList") List<String> typeIdsList,
@Param("sizeNameList")List<String> sizeNameList,@Param("levelFlag")Integer levelFlag); @Param("sizeNameList")List<String> sizeNameList,
@Param("levelFlag")Integer levelFlag);
List<TjOrgPriceDto> TjOrgPriceTotalNum(@Param("orgId") Long orgId, List<TjOrgPriceDto> TjOrgPriceTotalNum(@Param("orgId") Long orgId,
@Param("year") Integer year, @Param("year") Integer year,
@Param("typeIdsList") List<String> typeIdsList, @Param("typeIdsList") List<String> typeIdsList,
@Param("sizeNameList")List<String> sizeNameList,@Param("levelNum")Integer levelNum); @Param("sizeNameList")List<String> sizeNameList,
@Param("levelNum")Integer levelNum);
} }
...@@ -44,7 +44,7 @@ public class OutInLogsReceiver { ...@@ -44,7 +44,7 @@ public class OutInLogsReceiver {
logRecordDTO.setLogType(30); logRecordDTO.setLogType(30);
logRecordDTO.setRequestUrl("queues = \"orderResult\""); logRecordDTO.setRequestUrl("queues = \"orderResult\"");
try { try {
// System.out.println("msg = " + msg); System.out.println("msg = " + msg);
// 创建日志对象 // 创建日志对象
// 手动确认消息 // 手动确认消息
......
...@@ -37,6 +37,8 @@ public interface TjService { ...@@ -37,6 +37,8 @@ public interface TjService {
FinalTjOrgCountDto TjOrgCountSum(TjOrgCountReq req); FinalTjOrgCountDto TjOrgCountSum(TjOrgCountReq req);
List<TjOrgCountDto> TjOrgCountDetail(TjOrgCountReq req);
PageResult<TjOrgCountDto> TjOrgCountDetailPage(TjOrgCountReq req); PageResult<TjOrgCountDto> TjOrgCountDetailPage(TjOrgCountReq req);
List<TjOrgCountDto> TjOrgCountDetailList(TjOrgCountReq req); List<TjOrgCountDto> TjOrgCountDetailList(TjOrgCountReq req);
...@@ -64,4 +66,6 @@ public interface TjService { ...@@ -64,4 +66,6 @@ public interface TjService {
void TjOrgEqsExport(TjOrgEqsReq req); void TjOrgEqsExport(TjOrgEqsReq req);
} }
...@@ -83,7 +83,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E ...@@ -83,7 +83,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
List<EquipmentSize> list = list(new LambdaQueryWrapper<EquipmentSize>() List<EquipmentSize> list = list(new LambdaQueryWrapper<EquipmentSize>()
.eq(EquipmentSize::getTypeId,req.getTypeId()) .eq(EquipmentSize::getTypeId,req.getTypeId())
.orderByDesc(EquipmentSize::getCode)); .orderByDesc(EquipmentSize::getCode));
String code="0"; String code="1";
if (list.size()>0){ if (list.size()>0){
int i = Integer.parseInt(list.get(0).getCode()); int i = Integer.parseInt(list.get(0).getCode());
code=String.valueOf(i+1); code=String.valueOf(i+1);
...@@ -103,7 +103,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E ...@@ -103,7 +103,7 @@ public class EquipmentSizeServiceImpl extends ServiceImpl<EquipmentSizeMapper, E
size.setUpdateTime(DateTimeUtil.getCurrentDateTime()); size.setUpdateTime(DateTimeUtil.getCurrentDateTime());
this.save(size); this.save(size);
sizeRepository.save(size); sizeRepository.save(size);
return sizeID; return sizeID+"||"+code;
} }
@Override @Override
......
...@@ -145,6 +145,7 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm ...@@ -145,6 +145,7 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm
List<OrderDetail> detailList = orderDetailService List<OrderDetail> detailList = orderDetailService
.list(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, one.getId())); .list(new LambdaQueryWrapper<OrderDetail>().eq(OrderDetail::getOrderId, one.getId()));
for (OrderDetail orderDetail:detailList) { for (OrderDetail orderDetail:detailList) {
boolean flag=false;
for (DetailOrderReq detailReq:orderDetailList) { for (DetailOrderReq detailReq:orderDetailList) {
if (detailReq.getId().equals(String.valueOf(orderDetail.getId()))){ if (detailReq.getId().equals(String.valueOf(orderDetail.getId()))){
if (ObjectUtil.isNull(orderDetail.getActualNum())){ if (ObjectUtil.isNull(orderDetail.getActualNum())){
...@@ -154,8 +155,14 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm ...@@ -154,8 +155,14 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm
orderDetail.setModifyQuantity(detailReq.getActualNum()); orderDetail.setModifyQuantity(detailReq.getActualNum());
orderDetail.setActualNum(detailReq.getActualNum()); orderDetail.setActualNum(detailReq.getActualNum());
orderDetail.setUpdateTime(DateTimeUtil.getCurrentDateTime()); orderDetail.setUpdateTime(DateTimeUtil.getCurrentDateTime());
flag=true;
break;
} }
break; }
if (!flag){
orderDetail.setActualNum(0);
orderDetail.setModifyQuantity(0);
orderDetail.setUpdateTime(DateTimeUtil.getCurrentDateTime());
} }
} }
b=orderDetailService.updateBatchById(detailList); b=orderDetailService.updateBatchById(detailList);
...@@ -448,8 +455,10 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm ...@@ -448,8 +455,10 @@ public class LogSummaryServiceImpl extends ServiceImpl<LogSummaryMapper, LogSumm
if (!updateStateWrapper1.isEmptyOfWhere()){ if (!updateStateWrapper1.isEmptyOfWhere()){
inventoryService.update(updateStateWrapper1); inventoryService.update(updateStateWrapper1);
warehouseInventoryService.update(updateStateWrapper2); warehouseInventoryService.update(updateStateWrapper2);
} }
System.out.println(1111);
if (!allocateInWrapper1.isEmptyOfWhere()){ if (!allocateInWrapper1.isEmptyOfWhere()){
inventoryService.update(allocateInWrapper1); inventoryService.update(allocateInWrapper1);
......
...@@ -240,7 +240,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -240,7 +240,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
} }
//添加日志记录 //添加日志记录
if (ObjectUtil.isNull(req.getLogSummaryId()) || req.getLogSummaryId()==null){ if (ObjectUtil.isNull(req.getLogSummaryId()) || req.getLogSummaryId()==null){
s=s+listReq.getWarehouseName()+"【"+listReq.getTypeName()+"--"+listReq.getSizeName()+"】预计数量:"+listReq.getPlanNum()+"\n"; s=s+"【"+listReq.getTypeName()+"--"+listReq.getSizeName()+"】预计数量:"+listReq.getPlanNum()+"\n";
} }
detailList.add(detail); detailList.add(detail);
Object[] item=new Object[]{req.getStartOrgId(),listReq.getWarehouseId(),listReq.getTypeId(),listReq.getSizeId(),listReq.getPrice()}; Object[] item=new Object[]{req.getStartOrgId(),listReq.getWarehouseId(),listReq.getTypeId(),listReq.getSizeId(),listReq.getPrice()};
...@@ -812,55 +812,189 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -812,55 +812,189 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
} }
String detailJson = orderMain.getDetailJson(); String detailJson = orderMain.getDetailJson();
List<DetailJsonReq> detailJsonReqs = JSONObject.parseArray(detailJson, DetailJsonReq.class); List<DetailJsonReq> detailJsonReqs = JSONObject.parseArray(detailJson, DetailJsonReq.class);
List<OrderDetailDto> orderDetailDtoList=new ArrayList<>(); List<OrderDetailDto> orderDetailDtoList=new ArrayList<>();
//直接将数据库中的子单进行遍历,将orderMain中的具体detailjson进行解析并且重新修改子单的实际出入库数量,在将实际出入库信息存放到子单的child中返回给前端
Map<String, DetailJsonReq> summaryMap = new HashMap<>();
//遍历第一遍(确保号型一致,类型一致,价格一致的情况下该出入库信息存在该子单据中)
for (OrderDetail orderDetail:list) { for (OrderDetail orderDetail:list) {
OrderDetailDto orderDetailDto = new OrderDetailDto(); OrderDetailDto orderDetailDto = new OrderDetailDto();
BeanPlusUtil.copyProperties(orderDetail,orderDetailDto); BeanPlusUtil.copyProperties(orderDetail,orderDetailDto);
Map<String, DetailJsonReq> summaryMap = new HashMap<>(); if (CollectionUtil.isNotEmpty(detailJsonReqs)){
if (CollectionUtil.isNotEmpty(detailJsonReqs)) { for (int i = 0; i < detailJsonReqs.size(); i++) {
for (DetailJsonReq json :detailJsonReqs) { DetailJsonReq detailReq = detailJsonReqs.get(i);
json.setModifyQuantity(json.getNum()); if (detailReq.getTypeId().equals(orderDetail.getTypeId())
String key = json.getLocationId() + "_" + json.getSizeId() + "_" + json.getTypeId(); && detailReq.getSizeId().equals(orderDetail.getSizeId())
DetailJsonReq summary = summaryMap.get(key); && detailReq.getPrice().compareTo(orderDetail.getPrice())==0){//如果类型、号型、单价与子单一致,那么直接存在子单中
if (summary == null) { List<DetailJsonReq> childJson = orderDetailDto.getChildJson();
summary = new DetailJsonReq(); if (CollectionUtil.isEmpty(childJson)){
summary.setLocationId(json.getLocationId()); List<DetailJsonReq> list1=new ArrayList<>();
summary.setLocationName(json.getLocationName()); list1.add(detailReq);
summary.setSizeId(json.getSizeId()); orderDetailDto.setChildJson(list1);
summary.setTypeId(json.getTypeId()); }else {
summary.setChildDetailJson(new ArrayList<>()); childJson.add(detailReq);
summaryMap.put(key, summary); orderDetailDto.setChildJson(childJson);
} }
// 汇总数量 detailJsonReqs.remove(detailReq);
if (json.getNum() != null) { i--;
Integer newNum = summary.getNum() != null ? summary.getNum() + json.getNum() : json.getNum();
summary.setNum(newNum);
} }
}
// 汇总子数据 }else {
if (json.getChildDetailJson() != null) { orderDetailDto.setChildJson(new ArrayList<>());
summary.getChildDetailJson().addAll(json.getChildDetailJson()); }
orderDetailDtoList.add(orderDetailDto);
}
//遍历第二遍,将剩余多的单子存放到sizeId和typeId一样的第一个子单中去
if (CollectionUtil.isNotEmpty(detailJsonReqs)){
for (OrderDetailDto dto:orderDetailDtoList) {
for (int i = 0; i < detailJsonReqs.size(); i++) {
DetailJsonReq deReq = detailJsonReqs.get(i);
if (dto.getTypeId().equals(deReq.getTypeId()) && dto.getSizeId().equals(deReq.getSizeId())){
List<DetailJsonReq> childJson = dto.getChildJson();
if (CollectionUtil.isEmpty(childJson)){
List<DetailJsonReq> list1=new ArrayList<>();
list1.add(deReq);
dto.setChildJson(list1);
}else {
childJson.add(deReq);
dto.setChildJson(childJson);
}
detailJsonReqs.remove(deReq);
i--;
} }
} }
} }
List<DetailJsonReq> filteredValues = summaryMap.entrySet().stream() }
.filter(entry -> { //遍历第三遍(将每个childJson进行汇总,并且将具体存放到每个childDetailJson中去)
String[] keyParts = entry.getKey().split("_"); for (OrderDetailDto dto:orderDetailDtoList) {
String typeId = keyParts[2]; //具体的值
String sizeId = keyParts[1]; List<DetailJsonReq> childJson = dto.getChildJson();
//最终存储数据list
List<DetailJsonReq> detailList=new ArrayList<>();
//第二层数据
List<DetailJsonReq> filteredValues=new ArrayList<>();
for (DetailJsonReq dReq:childJson) {
String key = dReq.getLocationId() + "_" + dReq.getSizeId() + "_" + dReq.getTypeId();
DetailJsonReq summary = summaryMap.get(key);
if (summary == null) {
summary = new DetailJsonReq();
summary.setLocationId(dReq.getLocationId());
summary.setLocationName(dReq.getLocationName());
summary.setSizeId(dReq.getSizeId());
summary.setTypeId(dReq.getTypeId());
detailList.add(dReq);
summary.setChildDetailJson(detailList);
summaryMap.put(key, summary);
}
// 汇总数量
if (dReq.getNum() != null) {
Integer newNum = summary.getNum() != null ? summary.getNum() + dReq.getNum() : dReq.getNum();
summary.setNum(newNum);
summary.setModifyQuantity(newNum);
}
return typeId.equals(orderDetail.getTypeId()) && sizeId.equals(orderDetail.getSizeId()); // 汇总子数据
}) if (dReq.getChildDetailJson() != null) {
.map(Map.Entry::getValue) detailList.add(dReq);
.collect(Collectors.toList()); summary.getChildDetailJson().addAll(detailList);
}
if (!summaryMap.isEmpty()){
filteredValues = summaryMap.entrySet().stream()
.filter(entry -> {
String[] keyParts = entry.getKey().split("_");
String typeId = keyParts[2];
String sizeId = keyParts[1];
String locationId = keyParts[0];
return typeId.equals(dReq.getTypeId()) && sizeId.equals(dto.getSizeId()) && locationId.equals(dReq.getLocationId());
})
.map(Map.Entry::getValue)
.collect(Collectors.toList());
}
}
dto.setChildJson(filteredValues);
summaryMap.clear();
orderDetailDto.setChildJson(filteredValues);
orderDetailDtoList.add(orderDetailDto);
} }
// //我先遍历一遍,
// for (OrderDetail orderDetail:list) {
// OrderDetailDto orderDetailDto = new OrderDetailDto();
// BeanPlusUtil.copyProperties(orderDetail,orderDetailDto);
// //遍历detailJson将不同的locationId,sizeId,typeId,price作为唯一的键进行存储,并且存放至map中
//
//
//
// if (!summaryMap.isEmpty()){
// filteredValues = summaryMap.entrySet().stream()
// .filter(entry -> {
// String[] keyParts = entry.getKey().split("_");
// String typeId = keyParts[2];
// String sizeId = keyParts[1];
// String price = keyParts[3];
// return typeId.equals(orderDetail.getTypeId()) && sizeId.equals(orderDetail.getSizeId())
// && new BigDecimal(price).compareTo(orderDetail.getPrice())==0;
// })
// .map(Map.Entry::getValue)
// .collect(Collectors.toList());
// }
//
// orderDetailDto.setChildJson(filteredValues);
// summaryMap.remove(orderDetail.getWarehouseId() + "_" + orderDetail.getSizeId() + "_" + orderDetail.getTypeId()+"_"+orderDetail.getPrice());
// int sum = filteredValues.stream()
// .mapToInt(DetailJsonReq::getNum) // 获取每个对象的num属性值
// .sum();
// orderDetailDto.setActualNum(sum);
// orderDetailDto.setModifyQuantity(sum);
// orderDetail.setActualNum(sum);
// orderDetail.setModifyQuantity(sum);
// orderDetailDtoList.add(orderDetailDto);
// }
// //如果不相同,则表示存在不属于子单据数据,号型相等类型相等就是单价不相等,那么我要做的就是去掉price维度,重新遍历一遍子单,将typeid和sizeid满足条件的第一个的数量进行添加上去
// if (!summaryMap.isEmpty()){
// //需要进行两次双重循环,一次是返回前端,一次是更新数据库
// for (String key:summaryMap.keySet()) {
// String[] keyParts = key.split("_");
// String typeId = keyParts[2];
// String sizeId = keyParts[1];
// DetailJsonReq detailJsonReq = summaryMap.get(key);
// for (OrderDetailDto orderDetailDto:orderDetailDtoList) {
// if (orderDetailDto.getSizeId().equals(sizeId)&& orderDetailDto.getTypeId().equals(typeId)){
// orderDetailDto.setActualNum(orderDetailDto.getActualNum()+detailJsonReq.getNum());
// orderDetailDto.setModifyQuantity(orderDetailDto.getModifyQuantity()+detailJsonReq.getNum());
// List<DetailJsonReq> childJson=new ArrayList<>();
// if (CollectionUtil.isNotEmpty(orderDetailDto.getChildJson())){
// childJson = orderDetailDto.getChildJson();
// childJson.add(detailJsonReq);
// orderDetailDto.setChildJson(childJson);
// }else {
// childJson.add(detailJsonReq);
// orderDetailDto.setChildJson(childJson);
// }
// break;
// }
//
// }
// }
// for (String key:summaryMap.keySet()) {
// String[] keyParts = key.split("_");
// String typeId = keyParts[2];
// String sizeId = keyParts[1];
// DetailJsonReq detailJsonReq = summaryMap.get(key);
//
// for (OrderDetail orderDetail:list) {
// if (orderDetail.getSizeId().equals(sizeId)&& orderDetail.getTypeId().equals(typeId)){
// orderDetail.setActualNum(orderDetail.getActualNum()+detailJsonReq.getNum());
// orderDetail.setModifyQuantity(orderDetail.getModifyQuantity()+detailJsonReq.getNum());
// break;
// }
// }
// }
// }
orderDto.setDetailList(orderDetailDtoList); orderDto.setDetailList(orderDetailDtoList);
return orderDto; return orderDto;
} }
...@@ -900,6 +1034,11 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -900,6 +1034,11 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
public boolean Accounting(UpdateOrderReq req) { public boolean Accounting(UpdateOrderReq req) {
//判断传递的订单主id是否存在 //判断传递的订单主id是否存在
OrderMain orderMain = orderMainExist(req.getId()); OrderMain orderMain = orderMainExist(req.getId());
List<DetailJsonReq> childJsonList=new ArrayList<>();
// String detailJson = orderMain.getDetailJson();
//出入库传递的具体汇总信息
// List<DetailJsonReq> detailJsonList = JSONObject.parseArray(detailJson, DetailJsonReq.class);
//记账子单据不能传空 //记账子单据不能传空
if (req.getDetailList().size()==0){ if (req.getDetailList().size()==0){
throw new ServiceException(OrderExceptionEnum.ORDERDETAIL_ISNOT_NULL); throw new ServiceException(OrderExceptionEnum.ORDERDETAIL_ISNOT_NULL);
...@@ -935,7 +1074,6 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -935,7 +1074,6 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
List<WarehouseInventory> delWareInvList=new ArrayList<>(); List<WarehouseInventory> delWareInvList=new ArrayList<>();
//遍历子单 //遍历子单
List<DetailJsonReq> sumList=new ArrayList<>();
for (UpdateOrderDetailReq uploadDetailReq : reqList) { for (UpdateOrderDetailReq uploadDetailReq : reqList) {
OrderDetail orderDetail = new OrderDetail(); OrderDetail orderDetail = new OrderDetail();
BeanPlusUtil.copyProperties(uploadDetailReq,orderDetail); BeanPlusUtil.copyProperties(uploadDetailReq,orderDetail);
...@@ -953,135 +1091,155 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -953,135 +1091,155 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
for (DetailJsonReq detailJsonReq:childJson) { for (DetailJsonReq detailJsonReq:childJson) {
detailJsonReq.setSizeName(uploadDetailReq.getSizeName()); detailJsonReq.setSizeName(uploadDetailReq.getSizeName());
detailJsonReq.setTypeName(uploadDetailReq.getTypeName()); detailJsonReq.setTypeName(uploadDetailReq.getTypeName());
//为了记账时如果数量不一致取单据的单价进行计算,其他没有任何意义
detailJsonReq.setPrice(uploadDetailReq.getPrice()); detailJsonReq.setPrice(uploadDetailReq.getPrice());
}
sumList.addAll(childJson);
}
childJsonList.addAll(childJson);
// AccountingDto accountingDto = new AccountingDto(); //修改单子数量数量
// BeanPlusUtil.copyProperties(uploadDetailReq,accountingDto);
// accountingDtoList.add(accountingDto);
//修改单子数量数据,价格
orderDetail.setModifyQuantity(uploadDetailReq.getModifyQuantity()); orderDetail.setModifyQuantity(uploadDetailReq.getModifyQuantity());
orderDetail.setUpdateTime(DateTimeUtil.getCurrentDateTime()); orderDetail.setUpdateTime(DateTimeUtil.getCurrentDateTime());
orderDetailList.add(orderDetail); orderDetailList.add(orderDetail);
updateQuantity+=orderDetail.getModifyQuantity();
//修改后数量
updateQuantity+=uploadDetailReq.getModifyQuantity();
priceTotal=priceTotal.add(BigDecimal.valueOf(uploadDetailReq.getModifyQuantity()).multiply(uploadDetailReq.getPrice()));
}else { }else {
throw new ServiceException(OrderExceptionEnum.ORDERDETAIL_ERROR); throw new ServiceException(OrderExceptionEnum.ORDERDETAIL_ERROR);
} }
} }
String detailJson = orderMain.getDetailJson();
//出入库传递的具体汇总信息
List<DetailJsonReq> detailJsonList = JSONObject.parseArray(detailJson, DetailJsonReq.class); //遍历childJsonList
//sumList已经是汇总信息 for (DetailJsonReq jsonReq:childJsonList) {
for (DetailJsonReq child:sumList) { List<DetailJsonReq> childDetailJsonList = jsonReq.getChildDetailJson();
if (ObjectUtil.isNull(child.getNum())){
child.setNum(0);
}
Integer num=0; Integer num=0;
BigDecimal price=BigDecimal.ZERO; BigDecimal price=BigDecimal.ZERO;
for (DetailJsonReq detail:detailJsonList) { //遍历orderMian中的detailJson
if (child.getSizeId().equals(detail.getSizeId())&& child.getLocationId().equals(detail.getLocationId())&&child.getTypeId().equals(detail.getTypeId())){ boolean flag=false;
num+=detail.getNum(); //如果记账数量大于实际出库数量并且实际出库数量与单子的金额都不一致的情况,那么我直接添加单子的数据进行记账
price=detail.getPrice(); boolean tap=false;
UpdateOrderDetailReq data = new UpdateOrderDetailReq(); int sum = childDetailJsonList.stream()
data.setActualNum(detail.getNum()); .mapToInt(DetailJsonReq::getNum) // 获取每个对象的num属性值
// data.setOrgId(uploadDetailReq.getOrgId()); .sum();
data.setWarehouseId(child.getLocationId()); if (jsonReq.getModifyQuantity()>sum){//默认记账数量与识别数量一致并且不能小于实际出入库数量
data.setSizeId(child.getSizeId()); flag=true;
data.setTypeId(child.getTypeId()); }
data.setPrice(child.getPrice()); int i = jsonReq.getModifyQuantity() - sum;
data.setProperty(detail.getProperty()); for (DetailJsonReq detail:childDetailJsonList) {
data.setSizeName(child.getSizeName()); num=detail.getNum();
data.setTypeName(child.getTypeName()); price=detail.getPrice();
if (detail.getProperty()==0 && detail.getNum()>child.getNum()){ UpdateOrderDetailReq data = new UpdateOrderDetailReq();
data.setModifyQuantity(detail.getModifyQuantity()-detail.getNum()+child.getNum()); data.setActualNum(detail.getNum());
}else { data.setWarehouseId(jsonReq.getLocationId());
data.setModifyQuantity(child.getModifyQuantity()); data.setWarehouseName(jsonReq.getLocationName());
} data.setSizeId(jsonReq.getSizeId());
orderDetailReqList.add(data); data.setTypeId(jsonReq.getTypeId());
data.setPrice(detail.getPrice());
data.setProperty(detail.getProperty());
data.setSizeName(jsonReq.getSizeName());
data.setTypeName(jsonReq.getTypeName());
data.setModifyQuantity(detail.getNum());
orderDetailReqList.add(data);
if (flag && detail.getPrice().compareTo(jsonReq.getPrice())==0){//如果记账多记了并且存在相同的价格,那么数量直接相加
s = s+jsonReq.getLocationName()+"--"+jsonReq.getTypeName()+"【"+
jsonReq.getSizeName()+"】,单价:"+price+",数量实入:"+detail.getNum()+",记账:"+(detail.getNum()+i)+"\n";
}else if (flag && detail.getPrice().compareTo(jsonReq.getPrice())!=0){
s = s+jsonReq.getLocationName()+"--"+jsonReq.getTypeName()+"【"+
jsonReq.getSizeName()+"】,单价:"+price+",数量实入:"+num+",记账:"+detail.getNum()+"\n";
} else if (!flag) {
s = s+jsonReq.getLocationName()+"--"+jsonReq.getTypeName()+"【"+
jsonReq.getSizeName()+"】,单价:"+price+",数量实入:"+num+",记账:"+detail.getNum()+"\n";
tap=true;
} }
}
if (!tap){
UpdateOrderDetailReq data = new UpdateOrderDetailReq();
data.setActualNum(0);
data.setWarehouseId(jsonReq.getLocationId());
data.setWarehouseName(jsonReq.getLocationName());
data.setSizeId(jsonReq.getSizeId());
data.setTypeId(jsonReq.getTypeId());
data.setPrice(jsonReq.getPrice());
data.setProperty(0);
data.setSizeName(jsonReq.getSizeName());
data.setTypeName(jsonReq.getTypeName());
data.setModifyQuantity(sum);
orderDetailReqList.add(data);
} }
s = s+child.getLocationName()+"--"+child.getTypeName()+"【"+
child.getSizeName()+"】,单价:"+price+",数量实入:"+num+",记账:"+child.getModifyQuantity()+"\n";
Inventory inventory = new Inventory(); Inventory inventory = new Inventory();
WarehouseInventory warehouseInventory=new WarehouseInventory(); WarehouseInventory warehouseInventory=new WarehouseInventory();
if (ObjectUtil.isNull(child.getModifyQuantity())){ if (ObjectUtil.isNull(jsonReq.getModifyQuantity()) ){
throw new ServiceException(OrderExceptionEnum.ORDER_NUM_IS_NULL); throw new ServiceException(OrderExceptionEnum.ORDER_NUM_IS_NULL);
} }
if (child.getNum()<child.getModifyQuantity()){ if (i>0){
//实际出库或者入库数量大于实际数量,则对空数据进行增删改查 //实际出库或者入库数量大于实际数量,则对空数据进行增删改查
if (orderMain.getOrderType().equals("in")){ if (orderMain.getOrderType().equals("in")){ //入库
for (int i = 0; i < child.getModifyQuantity()-child.getNum(); i++) { for (int j = 0; j < i; i++) {
inventory.setEpc("0"); inventory.setEpc("0");
inventory.setLocationId(child.getLocationId()); inventory.setLocationId(jsonReq.getLocationId());
inventory.setSizeId(child.getSizeId()); inventory.setSizeId(jsonReq.getSizeId());
inventory.setTypeId(child.getTypeId()); inventory.setTypeId(jsonReq.getTypeId());
inventory.setOrgId(orderMain.getEndOrgId()); inventory.setOrgId(orderMain.getEndOrgId());
inventory.setLocationType(0); inventory.setLocationType(0);
inventory.setPrice(child.getPrice()); inventory.setPrice(jsonReq.getPrice());
inventory.setProperty(0);
addInvList.add(inventory); addInvList.add(inventory);
warehouseInventory.setOrgId(orderMain.getEndOrgId()); warehouseInventory.setOrgId(orderMain.getEndOrgId());
warehouseInventory.setLocationId(child.getLocationId()); warehouseInventory.setLocationId(jsonReq.getLocationId());
warehouseInventory.setTypeId(child.getTypeId()); warehouseInventory.setTypeId(jsonReq.getTypeId());
warehouseInventory.setSizeId(child.getSizeId()); warehouseInventory.setSizeId(jsonReq.getSizeId());
warehouseInventory.setLocationType("0"); warehouseInventory.setLocationType("0");
addWareInvList.add(warehouseInventory); addWareInvList.add(warehouseInventory);
} }
}else { }else {//出库
int number=child.getModifyQuantity()-child.getNum();
List<Inventory> list1 = inventoryService.list(new LambdaQueryWrapper<Inventory>() List<Inventory> list1 = inventoryService.list(new LambdaQueryWrapper<Inventory>()
.eq(Inventory::getEpc, "0") .eq(Inventory::getEpc, "0")
.eq(Inventory::getLocationId, child.getLocationId()) .eq(Inventory::getLocationId, jsonReq.getLocationId())
.eq(Inventory::getSizeId, child.getSizeId()) .eq(Inventory::getSizeId, jsonReq.getSizeId())
.eq(Inventory::getOrgId, orderMain.getStartOrgId()) .eq(Inventory::getOrgId, orderMain.getStartOrgId())
.eq(Inventory::getTypeId, child.getTypeId()) .eq(Inventory::getTypeId, jsonReq.getTypeId())
.eq(Inventory::getPrice, child.getPrice()) .eq(Inventory::getPrice, jsonReq.getPrice())
.eq(Inventory::getLocationType, "0")); .eq(Inventory::getLocationType, "0"));
List<WarehouseInventory> list2 = warehouseInventoryService.list(new LambdaQueryWrapper<WarehouseInventory>() List<WarehouseInventory> list2 = warehouseInventoryService.list(new LambdaQueryWrapper<WarehouseInventory>()
.eq(WarehouseInventory::getEpc, "0") .eq(WarehouseInventory::getEpc, "0")
.eq(WarehouseInventory::getLocationId, child.getLocationId()) .eq(WarehouseInventory::getLocationId, jsonReq.getLocationId())
.eq(WarehouseInventory::getOrgId, orderMain.getStartOrgId()) .eq(WarehouseInventory::getOrgId, orderMain.getStartOrgId())
.eq(WarehouseInventory::getSizeId, child.getSizeId()) .eq(WarehouseInventory::getSizeId, jsonReq.getSizeId())
.eq(WarehouseInventory::getTypeId, child.getTypeId())); .eq(WarehouseInventory::getTypeId, jsonReq.getTypeId()));
if (list1.size()>0){ if (list1.size()>0){
if (number>=list1.size()){ //如果记账数量大于库存中存在空数据,那么全部删除,否则选择前几条进行删除
if (i>=list1.size()){
delInvList.addAll(list1); delInvList.addAll(list1);
}else { }else {
for (int i = 0; i < number; i++) { for (int j = 0; j < i; j++) {
delInvList.add(list1.get(i)); delInvList.add(list1.get(j));
} }
} }
} }
if (list2.size()>0){ if (list2.size()>0){
if (number>=list2.size()){ if (i>=list2.size()){
delWareInvList.addAll(list2); delWareInvList.addAll(list2);
}else { }else {
for (int i = 0; i < number; i++) { for (int j = 0; j < i; j++) {
delInvList.add(list1.get(i)); delInvList.add(list1.get(j));
} }
} }
} }
} }
} }
}
}
if (addWareInvList.size()>0){ if (addWareInvList.size()>0){
inventoryService.saveBatch(addInvList); inventoryService.saveBatch(addInvList);
} }
...@@ -1104,7 +1262,6 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -1104,7 +1262,6 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
} }
//更新主单据的数量和价格 //更新主单据的数量和价格
orderMain.setActualQuantity(updateQuantity); orderMain.setActualQuantity(updateQuantity);
orderMain.setPrice(priceTotal);
orderMain.setOrderState("finished"); orderMain.setOrderState("finished");
//修改记账状态,0未记账,1已记账 //修改记账状态,0未记账,1已记账
orderMain.setManualState(1); orderMain.setManualState(1);
...@@ -1136,12 +1293,12 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -1136,12 +1293,12 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
boolean e=true; boolean e=true;
if (req.getBussinessType().equals("use")){ if (req.getBussinessType().equals("use")){
e = policeBindEqs(req, reqList, orgId); e = policeBindEqs(req, orderDetailReqList, orgId);
} }
// //如果是归还入库,将警员下面的装备进行处理 // //如果是归还入库,将警员下面的装备进行处理
boolean f=true; boolean f=true;
if (req.getBussinessType().equals("return")){ if (req.getBussinessType().equals("return")){
f = policeUnBindEqs(req, reqList, orgId); f = policeUnBindEqs(req, orderDetailReqList, orgId);
} }
//记账结束之后往消息队列中推送一条消息 //记账结束之后往消息队列中推送一条消息
...@@ -1159,7 +1316,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -1159,7 +1316,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
//更新主单据 //更新主单据
return (a && b && c && d && e && f && g ); return (a && b && c && d && e && f && g );
} }
public boolean policeUnBindEqs(UpdateOrderReq req,List<UpdateOrderDetailReq> reqList,Long orgId){ public boolean policeUnBindEqs(UpdateOrderReq req,List<UpdateOrderDetailReq> orderDetailReqList,Long orgId){
//根据传递的装备信息对警员进行解绑操作(判断警员下面是否有装备信息,如果有则直接进行修改或者删除,如果没有则跳过不处理) //根据传递的装备信息对警员进行解绑操作(判断警员下面是否有装备信息,如果有则直接进行修改或者删除,如果没有则跳过不处理)
Policeman one = policemanService.getOne(new LambdaQueryWrapper<Policeman>().eq(Policeman::getUserId, req.getReturnUserId())); Policeman one = policemanService.getOne(new LambdaQueryWrapper<Policeman>().eq(Policeman::getUserId, req.getReturnUserId()));
List<PoliceEquipment> list = policeEquipmentService.list(new LambdaQueryWrapper<PoliceEquipment>() List<PoliceEquipment> list = policeEquipmentService.list(new LambdaQueryWrapper<PoliceEquipment>()
...@@ -1168,7 +1325,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -1168,7 +1325,7 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
List<PoliceEquipment> delList=new ArrayList<>(); List<PoliceEquipment> delList=new ArrayList<>();
List<PoliceEquipment> updateList=new ArrayList<>(); List<PoliceEquipment> updateList=new ArrayList<>();
if (list.size()>0){ if (list.size()>0){
for (UpdateOrderDetailReq upReq:reqList) { for (UpdateOrderDetailReq upReq:orderDetailReqList) {
for (PoliceEquipment pEqs:list ) { for (PoliceEquipment pEqs:list ) {
if (upReq.getSizeId().equals(pEqs.getSizeId()) && upReq.getTypeId().equals(pEqs.getTypeId()) if (upReq.getSizeId().equals(pEqs.getSizeId()) && upReq.getTypeId().equals(pEqs.getTypeId())
...@@ -1197,11 +1354,11 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -1197,11 +1354,11 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
return true; return true;
} }
} }
public boolean policeBindEqs(UpdateOrderReq req,List<UpdateOrderDetailReq> reqList,Long orgId){ public boolean policeBindEqs(UpdateOrderReq req,List<UpdateOrderDetailReq> orderDetailReqList,Long orgId){
//如果是领用出库,那记账结束以后将装备挂到警员名下(存储到policemanEquipment表中) //如果是领用出库,那记账结束以后将装备挂到警员名下(存储到policemanEquipment表中)
Policeman policeman = policemanService.getOne(new LambdaQueryWrapper<Policeman>().eq(Policeman::getUserId, req.getReturnUserId())); Policeman policeman = policemanService.getOne(new LambdaQueryWrapper<Policeman>().eq(Policeman::getUserId, req.getReturnUserId()));
if (req.getBussinessType().equals("use")){ if (req.getBussinessType().equals("use")){
List<PoliceEquipment> collect1 = reqList.stream().map(updateOrderDetailReq -> { List<PoliceEquipment> collect1 = orderDetailReqList.stream().map(updateOrderDetailReq -> {
PoliceEquipment policeEquipment = new PoliceEquipment(); PoliceEquipment policeEquipment = new PoliceEquipment();
policeEquipment.setPoliceId(policeman.getId()); policeEquipment.setPoliceId(policeman.getId());
policeEquipment.setPoliceName(policeman.getName()); policeEquipment.setPoliceName(policeman.getName());
...@@ -1210,6 +1367,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain ...@@ -1210,6 +1367,8 @@ public class OrderMainServiceImpl extends ServiceImpl<OrderMainMapper, OrderMain
policeEquipment.setTypeId(updateOrderDetailReq.getTypeId()); policeEquipment.setTypeId(updateOrderDetailReq.getTypeId());
policeEquipment.setTypeName(updateOrderDetailReq.getTypeName()); policeEquipment.setTypeName(updateOrderDetailReq.getTypeName());
policeEquipment.setNum(updateOrderDetailReq.getModifyQuantity()); policeEquipment.setNum(updateOrderDetailReq.getModifyQuantity());
policeEquipment.setInNum(0);
policeEquipment.setOutNum(updateOrderDetailReq.getModifyQuantity());
policeEquipment.setOrgId(orgId); policeEquipment.setOrgId(orgId);
policeEquipment.setPrice(updateOrderDetailReq.getPrice()); policeEquipment.setPrice(updateOrderDetailReq.getPrice());
policeEquipment.setLocationId(updateOrderDetailReq.getWarehouseId()); policeEquipment.setLocationId(updateOrderDetailReq.getWarehouseId());
......
...@@ -500,8 +500,6 @@ public class TjServiceImpl implements TjService { ...@@ -500,8 +500,6 @@ public class TjServiceImpl implements TjService {
tjOrgPriceDtoList.add(OrgData);//把本级数据加进去 tjOrgPriceDtoList.add(OrgData);//把本级数据加进去
} }
for (TjOrgPriceDto tj:tjOrgPriceDtoList) { for (TjOrgPriceDto tj:tjOrgPriceDtoList) {
System.out.println("tj.getStartNum() = " + tj.getStartNum());
System.out.println("ObjectUtil.isNull(tj.getAddNum()) = " + ObjectUtil.isNull(tj.getAddNum()));
tj.setAddNum(ObjectUtil.isNull(tj.getAddNum())?0:tj.getAddNum()); tj.setAddNum(ObjectUtil.isNull(tj.getAddNum())?0:tj.getAddNum());
tj.setStartNum(ObjectUtil.isNull(tj.getStartNum())?0:tj.getStartNum()); tj.setStartNum(ObjectUtil.isNull(tj.getStartNum())?0:tj.getStartNum());
tj.setEndNum(ObjectUtil.isNull(tj.getEndNum())?0:tj.getEndNum()); tj.setEndNum(ObjectUtil.isNull(tj.getEndNum())?0:tj.getEndNum());
...@@ -530,9 +528,6 @@ public class TjServiceImpl implements TjService { ...@@ -530,9 +528,6 @@ public class TjServiceImpl implements TjService {
tjOrgPriceDtoList.removeIf(tjOrgEqsDto -> tjOrgEqsDto.getStartNum() == 0 && tjOrgEqsDto.getEndNum() == 0 tjOrgPriceDtoList.removeIf(tjOrgEqsDto -> tjOrgEqsDto.getStartNum() == 0 && tjOrgEqsDto.getEndNum() == 0
&& tjOrgEqsDto.getDestoryNum()==0); && tjOrgEqsDto.getDestoryNum()==0);
} }
//将组织机构进行排序后再进行返回
Comparator<TjOrgPriceDto> orgComparator = createOrgComparator();
Collections.sort(tjOrgPriceDtoList, orgComparator);
return tjOrgPriceDtoList; return tjOrgPriceDtoList;
} }
...@@ -618,33 +613,87 @@ public class TjServiceImpl implements TjService { ...@@ -618,33 +613,87 @@ public class TjServiceImpl implements TjService {
@Override @Override
public PageResult<TjOrgCountDto> TjOrgCount(TjOrgCountReq req) { public PageResult<TjOrgCountDto> TjOrgCount(TjOrgCountReq req) {
List<TjOrgCountDto> tjOrgCountDtoList =equipmentCountSummaryMapper.TjOrgCount(req.getOrgId(), //先拿到符合条件的组织机构,再遍历组织机构组成数据
req.getTypeIdsList(),req.getSizeNameList(),req.getYear()); //(下一层数据组织机构数据)
PubOrg pubOrg = pubOrgService.PubOrgExist(req.getOrgId());
List<String> orgList= inventorySummaryMapper.getTotalData(String.valueOf(req.getOrgId()));
List<TjOrgCountDto> tjOrgCountList=new ArrayList<>();
for (String orgId:orgList) {
TjOrgCountDto orgData =equipmentCountSummaryMapper.TjOrgCount(orgId,
req.getTypeIdsList(),req.getSizeNameList(),req.getYear(),req.getTypeParentId(),req.getMonthList());
orgData.setNumber(ObjectUtil.isNull(orgData.getNumber())?0:orgData.getNumber());
orgData.setUseCount(ObjectUtil.isNull(orgData.getUseCount())?0:orgData.getUseCount());
orgData.setFixCount(ObjectUtil.isNull(orgData.getFixCount())?0:orgData.getFixCount());
tjOrgCountList.add(orgData);
}
if (req.getOrgId()!=1369509498032808905L){
TjOrgCountDto orgData =equipmentCountSummaryMapper.TjOrgCountleve4(req.getOrgId(),
req.getTypeIdsList(),req.getSizeNameList(),req.getYear(),req.getTypeParentId(),req.getMonthList(),pubOrg.getLevelFlag());
tjOrgCountList.add(orgData);
}
//查询出来的组织机构进行判断,如果该组织机构下的装备装备总数为0,那么将该组织机构从list中移除
if (req.getRemoveEmpty()){
tjOrgCountList.removeIf(TjOrgCountDto -> TjOrgCountDto.getNumber() == 0 );
}
//对组织机构进行排序 //对组织机构进行排序
Comparator<TjOrgCountDto> orgComparator = createOrgComparator(); Comparator<TjOrgCountDto> orgComparator = createOrgComparator();
Collections.sort(tjOrgCountDtoList, orgComparator); Collections.sort(tjOrgCountList, orgComparator);
Page<TjOrgCountDto> page = PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize()); Page<TjOrgCountDto> page = PageFactory.getDefaultPage(req.getPageNo(), req.getPageSize());
if (ObjectUtil.isNull(req.getPageNo()) && ObjectUtil.isNull(req.getPageSize())) { if (ObjectUtil.isNull(req.getPageNo()) && ObjectUtil.isNull(req.getPageSize())) {
req.setPageNo(1L); req.setPageNo(1L);
req.setPageSize(10L); req.setPageSize(10L);
} }
long startIndex = (req.getPageNo() - 1) * req.getPageSize(); long startIndex = (req.getPageNo() - 1) * req.getPageSize();
long endIndex = Math.min(startIndex + req.getPageSize(), tjOrgCountDtoList.size()); long endIndex = Math.min(startIndex + req.getPageSize(), tjOrgCountList.size());
List<TjOrgCountDto> subList = tjOrgCountDtoList.subList((int) startIndex, (int)endIndex); List<TjOrgCountDto> subList = tjOrgCountList.subList((int) startIndex, (int)endIndex);
page.setTotal(tjOrgCountDtoList.size()); page.setTotal(tjOrgCountList.size());
page.setRecords(subList); page.setRecords(subList);
return PageResultFactory.createPageResult(page); return PageResultFactory.createPageResult(page);
} }
@Override @Override
public FinalTjOrgCountDto TjOrgCountSum(TjOrgCountReq req) { public FinalTjOrgCountDto TjOrgCountSum(TjOrgCountReq req) {
FinalTjOrgCountDto finalTjOrgCountDto =equipmentCountSummaryMapper.TjOrgCountSum(req.getOrgId(),req.getSizeNameList(), FinalTjOrgCountDto finalTjOrgCountDto=new FinalTjOrgCountDto();
req.getTypeIdsList(), req.getYear()); finalTjOrgCountDto.setFixCount(0);
if (ObjectUtil.isNotNull(finalTjOrgCountDto)) { finalTjOrgCountDto.setUseCount(0);
return finalTjOrgCountDto; finalTjOrgCountDto.setNumber(0);
}else { PubOrg pubOrg = pubOrgService.PubOrgExist(req.getOrgId());
return new FinalTjOrgCountDto(); List<String> orgList= inventorySummaryMapper.getTotalData(String.valueOf(req.getOrgId()));
List<TjOrgCountDto> tjOrgCountList=new ArrayList<>();
for (String orgId:orgList) {
TjOrgCountDto orgData =equipmentCountSummaryMapper.TjOrgCount(orgId,
req.getTypeIdsList(),req.getSizeNameList(),req.getYear(),req.getTypeParentId(),req.getMonthList());
orgData.setNumber(ObjectUtil.isNull(orgData.getNumber())?0:orgData.getNumber());
orgData.setUseCount(ObjectUtil.isNull(orgData.getUseCount())?0:orgData.getUseCount());
orgData.setFixCount(ObjectUtil.isNull(orgData.getFixCount())?0:orgData.getFixCount());
tjOrgCountList.add(orgData);
}
if (req.getOrgId()!=1369509498032808905L){
TjOrgCountDto orgData =equipmentCountSummaryMapper.TjOrgCountleve4(req.getOrgId(),
req.getTypeIdsList(),req.getSizeNameList(),req.getYear(),req.getTypeParentId(),req.getMonthList(),pubOrg.getLevelFlag());
tjOrgCountList.add(orgData);
}
for (TjOrgCountDto tj:tjOrgCountList) {
tj.setFixCount(ObjectUtil.isNull(tj.getFixCount())?0: tj.getFixCount());
tj.setUseCount(ObjectUtil.isNull(tj.getUseCount())?0: tj.getUseCount());
tj.setNumber(ObjectUtil.isNull(tj.getNumber())?0: tj.getNumber());
finalTjOrgCountDto.setFixCount(finalTjOrgCountDto.getFixCount()+tj.getFixCount());
finalTjOrgCountDto.setUseCount(finalTjOrgCountDto.getUseCount()+ tj.getUseCount());
finalTjOrgCountDto.setNumber(finalTjOrgCountDto.getNumber()+ tj.getNumber());
}
return finalTjOrgCountDto;
}
@Override
public List<TjOrgCountDto> TjOrgCountDetail(TjOrgCountReq req) {
List<TjOrgCountDto> tjOrgCountDtoList=equipmentCountSummaryMapper.TjOrgCountTotalNum(req.getOrgId(),
req.getTypeIdsList(),req.getSizeNameList(),req.getYear(),req.getTypeParentId(),req.getMonthList(),req.getLevelNum());
if (req.getRemoveEmpty()){
tjOrgCountDtoList.removeIf(tjOrgCountDto -> tjOrgCountDto.getNumber()==0 );
} }
return tjOrgCountDtoList;
} }
@Override @Override
......
...@@ -58,47 +58,53 @@ ...@@ -58,47 +58,53 @@
{call AddEquipmentCountSummary(#{sql,mode=IN})} {call AddEquipmentCountSummary(#{sql,mode=IN})}
</insert> </insert>
<select id="TjOrgCount" resultType="com.junmp.jyzb.api.bean.dto.TjDto.TjOrgCountDto"> <select id="TjOrgCount" resultType="com.junmp.jyzb.api.bean.dto.TjDto.TjOrgCountDto">
SELECT select t1.org_id,t1.org_code,t1.org_name,t1.d_name,t2.year,t2.use_count,t2.fix_count,t2.number
t.org_id, FROM(
max(t.org_code) as org_code, SELECT
max(t.org_name) as org_name, `org_id`, `org_code`, `org_name`, `d_name`
max(t.parent_id) as parent_id, FROM `pub_org`
max(t.d_name) AS d_name, WHERE org_id=#{orgId}
) as t1
CROSS JOIN (
SELECT
MAX(t.`year`) AS `year`, MAX(t.`year`) AS `year`,
SUM(t.use_count) AS use_count, SUM(t.use_count) AS use_count,
SUM(t.fix_count) AS fix_count, SUM(t.fix_count) AS fix_count,
sum(CASE WHEN t.month = MONTH(CURRENT_DATE()) THEN t.number ELSE 0 END) AS number sum(CASE WHEN t.month = MONTH(CURRENT_DATE()) THEN t.number ELSE 0 END) AS number
FROM ( FROM (
SELECT SELECT
org_id_int AS org_id, vecs.`year`,
max(org_code) as org_code, vecs.`month`,
max(org_name) as org_name, SUM(vecs.use_count) AS use_count,
max(parent_id) as parent_id, SUM(vecs.fix_count) AS fix_count,
max(org_name_short) AS d_name, sum(vecs.number) as number
`year`, FROM vie_equipment_count_summary vecs
`month`, left join pub_org po on vecs.org_id_int=po.org_id
SUM(use_count) AS use_count, where vecs.`year`= #{year} and po.del_flag=1 and (po.org_id=#{orgId} or po.org_parent_ids like CONCAT('%',#{orgId}, '%'))
SUM(fix_count) AS fix_count, <if test="typeIdsList!=null and typeIdsList.size() > 0">
sum(number) as number and vecs.type_id in
FROM vie_equipment_count_summary <foreach collection="typeIdsList" item="item" open="(" separator="," close=")">
where `year`= #{year} and (org_id_int=#{orgId} or parent_id=#{orgId}) #{item}
<if test="typeIdsList!=null and typeIdsList.size() > 0"> </foreach>
and type_id in </if>
<foreach collection="typeIdsList" item="item" open="(" separator="," close=")"> <if test="typeParentId != null and typeParentId !=''">
#{item} and vecs.type_parnet_id=#{typeParentId}
</foreach> </if>
</if> <if test="sizeNameList!=null and sizeNameList.size() > 0">
<if test="sizeNameList!=null and sizeNameList.size() > 0"> AND
AND <foreach collection="sizeNameList " item="item" open="(" separator="or" close=")">
<foreach collection="sizeNameList " item="item" open="(" separator="or" close=")"> vecs.size_name like CONCAT('%', #{item}, '%')
size_name like CONCAT('%', #{item}, '%') </foreach>
</foreach> </if>
</if> <if test="monthList != null and monthList.size()>0">
and vecs.month in
GROUP BY org_id,`year`,month <foreach collection="monthList" item="item" open="(" separator="," close=")">
) AS t #{item}
GROUP BY </foreach>
t.org_id </if>
GROUP BY `year`,month
) AS t
)as t2
</select> </select>
<select id="TjOrgCountSum" resultType="com.junmp.jyzb.api.bean.dto.TjDto.FinalTjOrgCountDto"> <select id="TjOrgCountSum" resultType="com.junmp.jyzb.api.bean.dto.TjDto.FinalTjOrgCountDto">
select sum(use_count) as use_count,sum(fix_count) as fix_count,sum(number) as number FROM ( select sum(use_count) as use_count,sum(fix_count) as fix_count,sum(number) as number FROM (
...@@ -276,7 +282,103 @@ ...@@ -276,7 +282,103 @@
</foreach> </foreach>
</if> </if>
GROUP BY org_id,type_parent_id) as a on a.type_parent_id=et.id GROUP BY org_id,type_parent_id) as a on a.type_parent_id=et.id
where TRIM(et.parent_ids )='' and et.id !="00000000-0000-0000-0000-000000000000" where et.parent_id="00000000-0000-0000-0000-000000000000" and et.id !="00000000-0000-0000-0000-000000000000"
GROUP BY et.id,et.name,a.org_id GROUP BY et.id,et.name,a.org_id
</select> </select>
<select id="TjOrgCountleve4" resultType="com.junmp.jyzb.api.bean.dto.TjDto.TjOrgCountDto">
select t1.org_id,t1.org_code,t1.org_name,t1.d_name,t2.year,t2.use_count,t2.fix_count,t2.number
FROM(
SELECT
`org_id`, `org_code`, `org_name`, `d_name`
FROM `pub_org`
WHERE org_id=#{orgId}
) as t1
CROSS JOIN (
SELECT
MAX(t.`year`) AS `year`,
SUM(t.use_count) AS use_count,
SUM(t.fix_count) AS fix_count,
sum(CASE WHEN t.month = MONTH(CURRENT_DATE()) THEN t.number ELSE 0 END) AS number
FROM (
SELECT
vecs.`year`,
vecs.`month`,
SUM(vecs.use_count) AS use_count,
SUM(vecs.fix_count) AS fix_count,
sum(vecs.number) as number
FROM vie_equipment_count_summary vecs
left join pub_org po on vecs.org_id_int=po.org_id
where vecs.`year`= #{year} and po.del_flag=1 AND (po.org_id = #{orgId} OR (`po`.org_parent_ids like CONCAT('%', #{orgId}, '%')
AND(case when #{levelFlag} >=3 then 1=1 else SUBSTRING(`po`.`org_code`, 5, 2) = '00' end ))
AND (
`po`.`level_flag` > (
SELECT `level_flag` FROM `pub_org` WHERE `org_id` = #{orgId}
) + 1
OR (`po`.`level_flag` = (
SELECT `level_flag` FROM `pub_org` WHERE `org_id` = #{orgId}
))))
<if test="typeIdsList!=null and typeIdsList.size() > 0">
and vecs.type_id in
<foreach collection="typeIdsList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="typeParentId != null and typeParentId !=''">
and vecs.type_parnet_id=#{typeParentId}
</if>
<if test="sizeNameList!=null and sizeNameList.size() > 0">
AND
<foreach collection="sizeNameList " item="item" open="(" separator="or" close=")">
vecs.size_name like CONCAT('%', #{item}, '%')
</foreach>
</if>
<if test="monthList != null and monthList.size()>0">
and vecs.month in
<foreach collection="monthList" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</if>
GROUP BY `year`,month
) AS t
)as t2
</select>
<select id="TjOrgCountTotalNum" resultType="com.junmp.jyzb.api.bean.dto.TjDto.TjOrgCountDto">
SELECT MAX( t.`year` ) AS `year`,SUM( t.use_count ) AS use_count,SUM( t.fix_count ) AS fix_count,
size_id,size_name,type_id,type_name,
sum( CASE WHEN t.MONTH = MONTH ( CURRENT_DATE ()) THEN t.number ELSE 0 END ) AS number
FROM
(
SELECT
vecs.`year`,
vecs.`month`,
SUM( vecs.use_count ) AS use_count,
SUM( vecs.fix_count ) AS fix_count,
vecs.size_id,
vecs.size_name,
vecs.type_id,
vecs.type_name,
sum( vecs.number ) AS number
FROM
vie_equipment_count_summary vecs
LEFT JOIN pub_org po ON vecs.org_id_int = po.org_id
WHERE
YEAR = #{year}
and `po`.`del_flag` = 1 and (po.org_id=#{orgId} or (`po`.org_parent_ids like CONCAT('%', #{orgId}, '%')
<if test="levelNum !=0">
AND SUBSTRING(`po`.`org_code`, 5, 2) = '00'
</if>
))
AND (
`po`.level_flag >(SELECT
level_flag FROM pub_org WHERE org_id = #{orgId} )+ #{levelNum}
OR `po`.level_flag =(SELECT level_flag FROM pub_org WHERE org_id = #{orgId}
))
GROUP BY
`year`,MONTH,size_id,size_name,type_id,type_name
) AS t
GROUP BY
t.size_id,t.size_name,t.type_id,t.type_name
ORDER BY
t.type_id,size_id
</select>
</mapper> </mapper>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
ORDER BY year, month; ORDER BY year, month;
</select> </select>
<select id="ShowInOutRecords" resultType="com.junmp.jyzb.entity.LogSummary"> <select id="ShowInOutRecords" resultType="com.junmp.jyzb.entity.LogSummary">
select ls.location_id,ls.location_name,ls.bussiness_type,ls.out_in_state,ls.user_name,a.* select ls.location_id,ls.use_time,ls.create_time,ls.location_name,ls.bussiness_type,ls.out_in_state,ls.user_name,a.*
from base_log_summary ls from base_log_summary ls
join (select summary_id,count(*)as number,max(size_name) as size_name, join (select summary_id,count(*)as number,max(size_name) as size_name,
max(type_name) as type_name,max(price)as price max(type_name) as type_name,max(price)as price
...@@ -75,18 +75,22 @@ ...@@ -75,18 +75,22 @@
</if> </if>
</select> </select>
<select id="ShowInOutRecordsSum" resultType="java.lang.Integer"> <select id="ShowInOutRecordsSum" resultType="java.lang.Integer">
select ls.location_id,ls.location_name,ls.bussiness_type,ls.out_in_state,ls.user_name,a.* select count(*)
from base_log_summary ls from (select ls.location_id,ls.use_time, ls.location_name, ls.bussiness_type, ls.out_in_state, ls.user_name, a.*
join (select summary_id,count(*)as number,max(size_name) as size_name, from base_log_summary ls
max(type_name) as type_name,max(price)as price join (select summary_id,
FROM base_log_detail ld count(*) as number,
where org_id=#{orgId} max(size_name) as size_name,
and type_id=#{typeId} max(type_name) as type_name,
and size_id=#{sizeId} max(price) as price
and price=#{price} FROM base_log_detail ld
GROUP BY summary_id where org_id = #{orgId}
) as a on ls.id=a.summary_id and type_id = #{typeId}
where ls.org_id=#{orgId} and ls.location_type=0 and size_id = #{sizeId}
and price = #{price}
GROUP BY summary_id) as a on ls.id = a.summary_id
where ls.org_id = #{orgId}
and ls.location_type = 0) as b
</select> </select>
......
...@@ -96,33 +96,33 @@ ...@@ -96,33 +96,33 @@
</if> </if>
</select> </select>
<select id="TjOrgPriceSum" resultType="com.junmp.jyzb.api.bean.dto.TjDto.FinalTjOrgPriceDto"> <!-- <select id="TjOrgPriceSum" resultType="com.junmp.jyzb.api.bean.dto.TjDto.FinalTjOrgPriceDto">-->
select sum(coalesce(start_num,0)) as start_num,sum(coalesce(start_price,0)) as start_price, <!-- select sum(coalesce(start_num,0)) as start_num,sum(coalesce(start_price,0)) as start_price,-->
sum(coalesce(end_num,0)) as end_num,sum(coalesce(end_price,0)) as end_price, <!-- sum(coalesce(end_num,0)) as end_num,sum(coalesce(end_price,0)) as end_price,-->
sum(coalesce(add_num,0)) as add_num,sum(coalesce(destory_num,0)) as destory_num, <!-- sum(coalesce(add_num,0)) as add_num,sum(coalesce(destory_num,0)) as destory_num,-->
sum(coalesce(add_price,0)) as add_price,sum(coalesce(destory_price,0)) as destory_price FROM ( <!-- sum(coalesce(add_price,0)) as add_price,sum(coalesce(destory_price,0)) as destory_price FROM (-->
select org_id_int as org_id,org_code,org_name, <!-- select org_id_int as org_id,org_code,org_name,-->
sum(start_num) as start_num,sum(start_price) as start_price, <!-- sum(start_num) as start_num,sum(start_price) as start_price,-->
sum(end_num) as end_num,sum(end_price) as end_price, <!-- sum(end_num) as end_num,sum(end_price) as end_price,-->
sum(add_num) as add_num,sum(destory_num) as destory_num, <!-- sum(add_num) as add_num,sum(destory_num) as destory_num,-->
sum(add_price) as add_price,sum(destory_price) as destory_price <!-- sum(add_price) as add_price,sum(destory_price) as destory_price-->
FROM vie_price_sum_summary <!-- FROM vie_price_sum_summary-->
where `year`= #{year} and (org_id_int=#{orgId} or parent_id=#{orgId}) <!-- where `year`= #{year} and (org_id_int=#{orgId} or parent_id=#{orgId})-->
<if test="typeIdsList!=null and typeIdsList.size() > 0"> <!-- <if test="typeIdsList!=null and typeIdsList.size() > 0">-->
and type_id in <!-- and type_id in-->
<foreach collection="typeIdsList" item="item" open="(" separator="," close=")"> <!-- <foreach collection="typeIdsList" item="item" open="(" separator="," close=")">-->
#{item} <!-- #{item}-->
</foreach> <!-- </foreach>-->
</if> <!-- </if>-->
<if test="sizeNameList!=null and !sizeNameList.size() > 0"> <!-- <if test="sizeNameList!=null and !sizeNameList.size() > 0">-->
AND <!-- AND-->
<foreach collection="sizeNameList " item="item" open="(" separator="or" close=")"> <!-- <foreach collection="sizeNameList " item="item" open="(" separator="or" close=")">-->
size_name like CONCAT('%', #{item}, '%') <!-- size_name like CONCAT('%', #{item}, '%')-->
</foreach> <!-- </foreach>-->
</if> <!-- </if>-->
GROUP BY org_id,org_code,org_name <!-- GROUP BY org_id,org_code,org_name-->
) as t <!-- ) as t-->
</select> <!-- </select>-->
<select id="TjOrgPriceDetailSum" resultType="java.lang.Integer"> <select id="TjOrgPriceDetailSum" resultType="java.lang.Integer">
select count(*) from ( select count(*) from (
select org_id_int as org_id,org_code,org_name,type_id,type_name, select org_id_int as org_id,org_code,org_name,type_id,type_name,
......
...@@ -38,7 +38,7 @@ spring: ...@@ -38,7 +38,7 @@ spring:
redis: redis:
#host: 192.168.3.188 #host: 192.168.3.188
host: 192.168.3.188 host: 192.168.3.121
port: 6379 port: 6379
database: 1 database: 1
password: password:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论