diff --git a/gear-mat/src/main/java/com/gear/mat/domain/vo/MatPurchaseInDetailVo.java b/gear-mat/src/main/java/com/gear/mat/domain/vo/MatPurchaseInDetailVo.java index a0995f3..fc0c873 100644 --- a/gear-mat/src/main/java/com/gear/mat/domain/vo/MatPurchaseInDetailVo.java +++ b/gear-mat/src/main/java/com/gear/mat/domain/vo/MatPurchaseInDetailVo.java @@ -92,6 +92,7 @@ public class MatPurchaseInDetailVo { /** * 厂家 */ + @ExcelProperty(value = "厂家") private String factory; /** diff --git a/gear-oa/src/main/java/com/gear/oa/domain/bo/GearStockIoOrderBo.java b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearStockIoOrderBo.java index b42208c..ca51217 100644 --- a/gear-oa/src/main/java/com/gear/oa/domain/bo/GearStockIoOrderBo.java +++ b/gear-oa/src/main/java/com/gear/oa/domain/bo/GearStockIoOrderBo.java @@ -51,6 +51,8 @@ public class GearStockIoOrderBo extends BaseEntity { private Long supplierId; + private Integer materialTypeSnapshot; + private Date planArrivalTime; private Date actualArrivalTime; diff --git a/gear-oa/src/main/java/com/gear/oa/domain/vo/GearPurchasePlanDetailVo.java b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearPurchasePlanDetailVo.java index 79e1480..6c66e5b 100644 --- a/gear-oa/src/main/java/com/gear/oa/domain/vo/GearPurchasePlanDetailVo.java +++ b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearPurchasePlanDetailVo.java @@ -46,6 +46,12 @@ public class GearPurchasePlanDetailVo { @ExcelProperty(value = "原材料名称") private String rawMaterialName; + /** + * 厂家 + */ + @ExcelProperty(value = "厂家") + private String factory; + /** * 负责人 */ diff --git a/gear-oa/src/main/java/com/gear/oa/domain/vo/GearStockIoOrderVo.java b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearStockIoOrderVo.java index 09b1203..f0d6651 100644 --- a/gear-oa/src/main/java/com/gear/oa/domain/vo/GearStockIoOrderVo.java +++ b/gear-oa/src/main/java/com/gear/oa/domain/vo/GearStockIoOrderVo.java @@ -103,4 +103,6 @@ public class GearStockIoOrderVo extends BaseEntity { private String remark; private String materialNames; + + private String factoryNames; } diff --git a/gear-oa/src/main/java/com/gear/oa/mapper/GearPurchasePlanDetailMapper.java b/gear-oa/src/main/java/com/gear/oa/mapper/GearPurchasePlanDetailMapper.java index ff19e2a..0cdebf9 100644 --- a/gear-oa/src/main/java/com/gear/oa/mapper/GearPurchasePlanDetailMapper.java +++ b/gear-oa/src/main/java/com/gear/oa/mapper/GearPurchasePlanDetailMapper.java @@ -1,6 +1,5 @@ package com.gear.oa.mapper; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gear.oa.domain.GearPurchasePlanDetail; @@ -8,6 +7,8 @@ import com.gear.oa.domain.vo.GearPurchasePlanDetailVo; import com.gear.common.core.mapper.BaseMapperPlus; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 采购计划明细Mapper接口 * @@ -17,4 +18,6 @@ import org.apache.ibatis.annotations.Param; public interface GearPurchasePlanDetailMapper extends BaseMapperPlus { Page selectVoPagePlus(Page build,@Param("ew") QueryWrapper lqw); + + List selectVoListPlus(@Param("ew") QueryWrapper lqw); } diff --git a/gear-oa/src/main/java/com/gear/oa/mapper/MatMaterialSimpleMapper.java b/gear-oa/src/main/java/com/gear/oa/mapper/MatMaterialSimpleMapper.java index 334e1fb..0d8a41c 100644 --- a/gear-oa/src/main/java/com/gear/oa/mapper/MatMaterialSimpleMapper.java +++ b/gear-oa/src/main/java/com/gear/oa/mapper/MatMaterialSimpleMapper.java @@ -10,7 +10,7 @@ import java.util.Map; public interface MatMaterialSimpleMapper { - @Select("select material_id as materialId, material_name as materialName, material_type as materialType, unit as unit, current_stock as currentStock " + + @Select("select material_id as materialId, material_name as materialName, material_type as materialType, unit as unit, factory as factory, current_stock as currentStock " + "from mat_material where material_id = #{materialId} and del_flag = 0 limit 1") Map selectSnapshot(@Param("materialId") Long materialId); diff --git a/gear-oa/src/main/java/com/gear/oa/service/impl/GearPurchasePlanDetailServiceImpl.java b/gear-oa/src/main/java/com/gear/oa/service/impl/GearPurchasePlanDetailServiceImpl.java index 34993f3..886f2c2 100644 --- a/gear-oa/src/main/java/com/gear/oa/service/impl/GearPurchasePlanDetailServiceImpl.java +++ b/gear-oa/src/main/java/com/gear/oa/service/impl/GearPurchasePlanDetailServiceImpl.java @@ -72,8 +72,8 @@ public class GearPurchasePlanDetailServiceImpl implements IGearPurchasePlanDetai */ @Override public List queryList(GearPurchasePlanDetailBo bo) { - LambdaQueryWrapper lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + QueryWrapper lqw = buildQueryWrapperPlus(bo); + return baseMapper.selectVoListPlus(lqw); } private LambdaQueryWrapper buildQueryWrapper(GearPurchasePlanDetailBo bo) { diff --git a/gear-oa/src/main/java/com/gear/oa/service/impl/GearStockIoOrderServiceImpl.java b/gear-oa/src/main/java/com/gear/oa/service/impl/GearStockIoOrderServiceImpl.java index f1cd745..27ad211 100644 --- a/gear-oa/src/main/java/com/gear/oa/service/impl/GearStockIoOrderServiceImpl.java +++ b/gear-oa/src/main/java/com/gear/oa/service/impl/GearStockIoOrderServiceImpl.java @@ -102,25 +102,42 @@ public class GearStockIoOrderServiceImpl implements IGearStockIoOrderService { return; } Map> namesMap = new HashMap<>(); + Map> factoryMap = new HashMap<>(); + Map materialFactoryCache = new HashMap<>(); for (GearStockIoOrderDetail d : details) { if (d == null || d.getOrderId() == null) { continue; } String name = d.getItemName(); - if (StringUtils.isBlank(name)) { + if (StringUtils.isNotBlank(name)) { + namesMap.computeIfAbsent(d.getOrderId(), k -> new LinkedHashSet<>()).add(name); + } + if (!"material".equals(d.getItemType()) || d.getItemId() == null) { continue; } - namesMap.computeIfAbsent(d.getOrderId(), k -> new LinkedHashSet<>()).add(name); + String factory = materialFactoryCache.get(d.getItemId()); + if (factory == null) { + Map snapshot = matMaterialMapper.selectSnapshot(d.getItemId()); + Object factoryObj = snapshot == null ? null : snapshot.get("factory"); + factory = factoryObj == null ? "" : String.valueOf(factoryObj); + materialFactoryCache.put(d.getItemId(), factory); + } + if (StringUtils.isNotBlank(factory)) { + factoryMap.computeIfAbsent(d.getOrderId(), k -> new LinkedHashSet<>()).add(factory); + } } for (GearStockIoOrderVo o : orders) { if (o == null || o.getOrderId() == null) { continue; } LinkedHashSet set = namesMap.get(o.getOrderId()); - if (set == null || set.isEmpty()) { - continue; + if (set != null && !set.isEmpty()) { + o.setMaterialNames(String.join("、", set)); + } + LinkedHashSet factorySet = factoryMap.get(o.getOrderId()); + if (factorySet != null && !factorySet.isEmpty()) { + o.setFactoryNames(String.join("、", factorySet)); } - o.setMaterialNames(String.join("、", set)); } } @@ -148,6 +165,9 @@ public class GearStockIoOrderServiceImpl implements IGearStockIoOrderService { lqw.apply(bo.getSupplierId() != null, "exists (select 1 from gear_stock_io_order_detail d left join gear_purchase_plan_detail ppd on d.source_detail_no = ppd.detail_code and ppd.del_flag = 0 where d.del_flag = '0' and d.order_id = gear_stock_io_order.order_id and ppd.supplier_id = {0})", bo.getSupplierId()); + lqw.apply(bo.getMaterialTypeSnapshot() != null, + "exists (select 1 from gear_stock_io_order_detail d where d.del_flag = '0' and d.order_id = gear_stock_io_order.order_id and d.material_type_snapshot = {0})", + bo.getMaterialTypeSnapshot()); lqw.eq(StringUtils.isNotBlank(bo.getDelayStatus()), GearStockIoOrder::getDelayStatus, bo.getDelayStatus()); lqw.orderByDesc(GearStockIoOrder::getCreateTime); return lqw; @@ -168,6 +188,7 @@ public class GearStockIoOrderServiceImpl implements IGearStockIoOrderService { bo.getItemName()); qw.like(StringUtils.isNotBlank(bo.getFactory()), "m.factory", bo.getFactory()); qw.eq(bo.getSupplierId() != null, "ppd.supplier_id", bo.getSupplierId()); + qw.eq(bo.getMaterialTypeSnapshot() != null, "d.material_type_snapshot", bo.getMaterialTypeSnapshot()); return qw; } diff --git a/gear-oa/src/main/resources/mapper/oa/GearPurchasePlanDetailMapper.xml b/gear-oa/src/main/resources/mapper/oa/GearPurchasePlanDetailMapper.xml index 9f081ee..86ec2c2 100644 --- a/gear-oa/src/main/resources/mapper/oa/GearPurchasePlanDetailMapper.xml +++ b/gear-oa/src/main/resources/mapper/oa/GearPurchasePlanDetailMapper.xml @@ -28,6 +28,7 @@ d.detail_code, d.supplier_id, d.raw_material_name, + m.factory as factory, d.owner, d.quantity, d.unit, @@ -44,6 +45,43 @@ s.name as supplierName from gear_purchase_plan_detail d left join gear_supplier s on d.supplier_id = s.supplier_id and s.del_flag = 0 + left join ( + select material_name, max(factory) as factory + from mat_material + where del_flag = 0 + group by material_name + ) m on m.material_name = d.raw_material_name + ${ew.customSqlSegment} + + + diff --git a/gear-oa/src/main/resources/mapper/oa/GearStockIoOrderDetailMapper.xml b/gear-oa/src/main/resources/mapper/oa/GearStockIoOrderDetailMapper.xml index 740051f..fa3ebc7 100644 --- a/gear-oa/src/main/resources/mapper/oa/GearStockIoOrderDetailMapper.xml +++ b/gear-oa/src/main/resources/mapper/oa/GearStockIoOrderDetailMapper.xml @@ -12,7 +12,11 @@ d.item_type AS itemType, d.item_id AS itemId, d.material_type_snapshot AS materialTypeSnapshot, - CASE WHEN d.material_type_snapshot = 2 THEN '主材' ELSE '辅材' END AS materialTypeName, + CASE + WHEN d.material_type_snapshot = 2 THEN '主材' + WHEN d.material_type_snapshot = 1 THEN '辅材' + ELSE '-' + END AS materialTypeName, o.order_code AS orderCode, o.io_type AS ioType, o.biz_type AS bizType, @@ -37,7 +41,7 @@ COALESCE(d.unit, m.unit) AS unit, d.batch_no AS batchNo, d.unit_price AS unitPrice, - d.amount AS amount, + COALESCE(d.amount, d.unit_price * d.quantity) AS amount, d.source_detail_no AS sourceDetailNo, d.remark AS remark FROM gear_stock_io_order_detail d @@ -52,4 +56,3 @@ - diff --git a/gear-system/src/main/java/com/gear/system/service/impl/SysOssServiceImpl.java b/gear-system/src/main/java/com/gear/system/service/impl/SysOssServiceImpl.java index 8834a08..d06769a 100644 --- a/gear-system/src/main/java/com/gear/system/service/impl/SysOssServiceImpl.java +++ b/gear-system/src/main/java/com/gear/system/service/impl/SysOssServiceImpl.java @@ -108,8 +108,8 @@ public class SysOssServiceImpl implements ISysOssService, OssService { } FileUtils.setAttachmentResponseHeader(response, sysOss.getOriginalName()); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8"); - OssClient storage = OssFactory.instance(); - try(InputStream inputStream = storage.getObjectContent(sysOss.getUrl())) { + OssClient storage = OssFactory.instance(sysOss.getService()); + try(InputStream inputStream = storage.getObjectContent(sysOss.getFileName())) { int available = inputStream.available(); IoUtil.copy(inputStream, response.getOutputStream(), available); response.setContentLength(available); @@ -150,7 +150,7 @@ public class SysOssServiceImpl implements ISysOssService, OssService { List list = baseMapper.selectBatchIds(ids); for (SysOss sysOss : list) { OssClient storage = OssFactory.instance(sysOss.getService()); - storage.delete(sysOss.getUrl()); + storage.delete(sysOss.getFileName()); } return baseMapper.deleteBatchIds(ids) > 0; } diff --git a/gear-ui3/src/views/wms/stockIoOrder/in.vue b/gear-ui3/src/views/wms/stockIoOrder/in.vue index 3f60082..5ee0c56 100644 --- a/gear-ui3/src/views/wms/stockIoOrder/in.vue +++ b/gear-ui3/src/views/wms/stockIoOrder/in.vue @@ -10,6 +10,15 @@ + + + + + + + + + 导出 + + 导出单据 + 统计/导出 @@ -69,6 +81,19 @@ {{ scope.row.materialNames || '-' }} + + + @@ -369,6 +394,8 @@ export default { orderCode: undefined, itemName: undefined, supplierId: undefined, + factory: undefined, + materialTypeSnapshot: undefined, timeRange: undefined, startTime: undefined, endTime: undefined, @@ -458,6 +485,10 @@ export default { this.queryParams.timeRange = undefined this.queryParams.startTime = undefined this.queryParams.endTime = undefined + this.queryParams.supplierId = undefined + this.queryParams.itemName = undefined + this.queryParams.factory = undefined + this.queryParams.materialTypeSnapshot = undefined this.handleQuery() }, handleSelectionChange(selection) { @@ -476,6 +507,16 @@ export default { `stockIoOrder_in_detail_${new Date().getTime()}.xlsx` ) }, + handleExportOrder() { + this.syncTimeRange() + this.download( + '/gear/stockIoOrder/export', + { + ...this.queryParams + }, + `stockIoOrder_in_${new Date().getTime()}.xlsx` + ) + }, syncTimeRange() { const tr = this.queryParams.timeRange if (tr && tr.length === 2) { diff --git a/gear-ui3/src/views/wms/stockIoOrder/out.vue b/gear-ui3/src/views/wms/stockIoOrder/out.vue index f9b5c3d..682fc50 100644 --- a/gear-ui3/src/views/wms/stockIoOrder/out.vue +++ b/gear-ui3/src/views/wms/stockIoOrder/out.vue @@ -10,6 +10,15 @@ + + + + + + + + + 导出 + + 导出单据 + 统计/导出 @@ -66,6 +78,19 @@ {{ scope.row.materialNames || '-' }} + + + @@ -350,6 +375,8 @@ export default { orderCode: undefined, itemName: undefined, supplierId: undefined, + factory: undefined, + materialTypeSnapshot: undefined, timeRange: undefined, startTime: undefined, endTime: undefined, @@ -439,6 +466,10 @@ export default { this.queryParams.timeRange = undefined this.queryParams.startTime = undefined this.queryParams.endTime = undefined + this.queryParams.supplierId = undefined + this.queryParams.itemName = undefined + this.queryParams.factory = undefined + this.queryParams.materialTypeSnapshot = undefined this.handleQuery() }, handleSelectionChange(selection) { @@ -456,6 +487,16 @@ export default { `stockIoOrder_out_detail_${new Date().getTime()}.xlsx` ) }, + handleExportOrder() { + this.syncTimeRange() + this.download( + '/gear/stockIoOrder/export', + { + ...this.queryParams + }, + `stockIoOrder_out_${new Date().getTime()}.xlsx` + ) + }, syncTimeRange() { const tr = this.queryParams.timeRange if (tr && tr.length === 2) {