diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetOne.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetOne.java new file mode 100644 index 000000000..3cbc9e181 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetOne.java @@ -0,0 +1,107 @@ +package com.logpm.basicdata.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serializable; + +/** + * 货区零担导出 Excel实体类 + * + * @author lmy + * @since 2023-09-11 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BasicdatavisualizationKCSheetOne implements Serializable { + + /** + * 入库批次 + */ + @ColumnWidth(40) + @ExcelProperty("入库批次") + private String incomingBatch; + /** + * 入库时间 + */ + @ColumnWidth(40) + @ExcelProperty("入库时间") + private String warehousingTime; + + /** + * 客户名称 + */ + @ColumnWidth(40) + @ExcelProperty("客户名称") + private String marketName; + + /** + * 订单自编号 + */ + @ColumnWidth(30) + @ExcelProperty("订单自编号") + private String orderCode; + + /** + * 服务类型 + */ + @ColumnWidth(20) + @ExcelProperty("服务类型") + private String typeService; + + /** + * 货物名称 + */ + @ColumnWidth(20) + @ExcelProperty("货物名称") + private String descriptionGoods; + + /** + * 货物编码 + */ + @ColumnWidth(20) + @ExcelProperty("货物编码") + private String cargoNumber; + + /** + * 服务号 + */ + @ColumnWidth(20) + @ExcelProperty("服务号") + private String serviceNumber; + /** + * 托盘码 + */ + @ColumnWidth(20) + @ExcelProperty("托盘码") + private String trayCode; + /** + * 库位号 + */ + @ColumnWidth(20) + @ExcelProperty("库位号") + private String positionCode; + /** + * 数量 + */ + @ColumnWidth(20) + @ExcelProperty("数量") + private String num; + /** + * 上架时间 + */ + @ColumnWidth(20) + @ExcelProperty("上架时间") + private String upTime; + /** + * 上架人 + */ + @ColumnWidth(20) + @ExcelProperty("上架人") + private String upUser; +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetThree.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetThree.java new file mode 100644 index 000000000..81493ce0b --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetThree.java @@ -0,0 +1,135 @@ +package com.logpm.basicdata.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serializable; + +/** + * 货区导出 Excel实体类 + * + * @author lmy + * @since 2023-09-11 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BasicdatavisualizationKCSheetThree implements Serializable { + /** + * 订单自编号 + */ + @ColumnWidth(30) + @ExcelProperty("订单自编号") + private String orderCode; + /** + * 包条码 + */ + @ColumnWidth(40) + @ExcelProperty("包条码") + private String orderPackageCode; + + /** + * 商场名称 + */ + @ColumnWidth(40) + @ExcelProperty("商场名称") + private String mallName; + /** + * 客户名称 + */ + @ColumnWidth(40) + @ExcelProperty("客户名称") + private String customerName; + + /** + * 物料编码 + */ + @ColumnWidth(30) + @ExcelProperty("物料编码") + private String materialCode; + + /** + * 物料名称 + */ + @ColumnWidth(30) + @ExcelProperty("物料名称") + private String materialName; + + /** + * 托盘码 + */ + @ColumnWidth(30) + @ExcelProperty("托盘码") + private String trayCode; + + /** + * 库位号 + */ + @ColumnWidth(40) + @ExcelProperty("库位号") + private String positionInfo; + + + /** + * 一级品类 + */ + @ColumnWidth(40) + @ExcelProperty("一级品类") + private String firsts; + + /** + * 一级品类编码 + */ + @ColumnWidth(40) + @ExcelProperty("一级品类编码") + private String firstsCode; + + + /** + * 二级品类 + */ + @ColumnWidth(40) + @ExcelProperty("二级品类") + private String second; + + /** + * 二级品类编码 + */ + @ColumnWidth(40) + @ExcelProperty("二级品类编码") + private String secondCode; + + + /** + * 三级品类 + */ + @ColumnWidth(30) + @ExcelProperty("三级品类") + private String thirdProduct; + + /** + * 三级品类编码 + */ + @ColumnWidth(30) + @ExcelProperty("三级品类编码") + private String thirdCode; + + /** + * 上架时间 + */ + @ColumnWidth(20) + @ExcelProperty("上架时间") + private String createTime; + + /** + * 上架人 + */ + @ColumnWidth(20) + @ExcelProperty("上架人") + private String createUser; + +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetTwo.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetTwo.java new file mode 100644 index 000000000..058666a02 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationKCSheetTwo.java @@ -0,0 +1,64 @@ +package com.logpm.basicdata.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import lombok.Data; + +import java.io.Serializable; + +/** + * 货区导出 Excel实体类 + * + * @author lmy + * @since 2023-09-11 + */ +@Data +@ColumnWidth(25) +@HeadRowHeight(20) +@ContentRowHeight(18) +public class BasicdatavisualizationKCSheetTwo implements Serializable { + + /** + * 库位号 + */ + @ColumnWidth(40) + @ExcelProperty("库位号") + private String positionInfo; + + /** + * 客户名称 + */ + @ColumnWidth(40) + @ExcelProperty("客户名称") + private String marketName; + + /** + * 物料编码 + */ + @ColumnWidth(40) + @ExcelProperty("物料编码") + private String cargoNumber; + + /** + * 货物名称 + */ + @ColumnWidth(30) + @ExcelProperty("货物名称") + private String descriptionGoods; + + /** + * 服务号 + */ + @ColumnWidth(30) + @ExcelProperty("服务号") + private String serviceNumber; + + /** + * 数量 + */ + @ColumnWidth(20) + @ExcelProperty("数量") + private String num; +} diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetOne.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetOne.java index 6f12f76b0..e7c037cd2 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetOne.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetOne.java @@ -26,6 +26,28 @@ public class BasicdatavisualizationSheetOne implements Serializable { @ColumnWidth(40) @ExcelProperty("订单自编号") private String orderCode; + + /** + * 商场名称 + */ + @ColumnWidth(40) + @ExcelProperty("商场名称") + private String mallName; + + /** + * 客户名称 + */ + @ColumnWidth(40) + @ExcelProperty("客户名称") + private String customerName; + + /** + * 品类 + */ + @ColumnWidth(40) + @ExcelProperty("品类") + private String thirdProduct; + /** * 物料名称 */ diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetThree.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetThree.java index 8b363d688..d205ae5dd 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetThree.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationSheetThree.java @@ -32,6 +32,19 @@ public class BasicdatavisualizationSheetThree implements Serializable { @ExcelProperty("包条码") private String orderPackageCode; + /** + * 商场名称 + */ + @ColumnWidth(40) + @ExcelProperty("商场名称") + private String mallName; + /** + * 客户名称 + */ + @ColumnWidth(40) + @ExcelProperty("客户名称") + private String customerName; + /** * 物料编码 */ diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationZreoSheetOne.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationZreoSheetOne.java index 824535359..f300a4811 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationZreoSheetOne.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdatavisualizationZreoSheetOne.java @@ -26,12 +26,21 @@ public class BasicdatavisualizationZreoSheetOne implements Serializable { @ColumnWidth(40) @ExcelProperty("运单号") private String waybillNumber; + + /** + * 客户名称 + */ + @ColumnWidth(40) + @ExcelProperty("客户名称") + private String consigneePerson; + /** * 货物名称 */ @ColumnWidth(40) @ExcelProperty("货物名称") - private String goodsName; + private String descriptionGoods; + /** * 托盘码 */ diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.java index b8e453724..f3ed19db1 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.java @@ -19,10 +19,7 @@ package com.logpm.basicdata.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.logpm.basicdata.entity.BasicdataGoodsAreaEntity; -import com.logpm.basicdata.excel.BasicdataGoodsAreaexportExcel; -import com.logpm.basicdata.excel.BasicdatavisualizationSheetOne; -import com.logpm.basicdata.excel.BasicdatavisualizationSheetThree; -import com.logpm.basicdata.excel.BasicdatavisualizationSheetTwo; +import com.logpm.basicdata.excel.*; import com.logpm.basicdata.vo.BasicdataGoodsAreaVO; import com.logpm.basicdata.vo.BasicdataNodeVO; import org.apache.ibatis.annotations.Param; @@ -93,4 +90,12 @@ public interface BasicdataGoodsAreaMapper extends BaseMapper getBasicdataGoodsAreaListdict(@Param("array") List collect); + + List exportWarehouseByCKStrip(@Param("areaId") Long areaId); + + List exportWarehouseByKCallocation(@Param("areaId") Long areaId); + + List exportWarehouseByCKService(@Param("areaId") Long areaId); + + List exportWarehouseByWaybillNumber(@Param("areaId") Long areaId); } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.xml b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.xml index 3e06fd56b..ea1dae4b7 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.xml +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/mapper/BasicdataGoodsAreaMapper.xml @@ -176,19 +176,26 @@ SELECT orderCode, materialName, materialCode, + mallName, + customerName, + thirdProduct, GROUP_CONCAT(positionInfo SEPARATOR '/') positionInfo, sum(num) num FROM ( - SELECT ldsa.order_code orderCode, + SELECT + ldsa.order_code orderCode, + ldsa.mall_name mallName, + CONCAT(ldsa.customer_name, '(', ldsa.customer_telephone, ')') customerName, GROUP_CONCAT(ldpl.material_name SEPARATOR '、') materialName, GROUP_CONCAT(ldpl.material_code SEPARATOR '、') materialCode, + GROUP_CONCAT(ldpl.third_product SEPARATOR '、') thirdProduct, CONCAT(lwug.position_code, '(', SUM(lwug.num), ')') positionInfo, SUM(lwug.num) num FROM logpm_distribution_stock_article ldsa JOIN logpm_distribution_parcel_list ldpl ON ldpl.stock_article_id = ldsa.id JOIN logpm_warehouse_updown_goods lwug ON lwug.association_id = ldpl.id - ldsa.warehouse_id =#{areaId} + ldpl.warehouse_id =#{areaId} GROUP BY ldsa.order_code, lwug.position_code @@ -220,24 +227,27 @@ + + + + diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataGoodsAreaServiceImpl.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataGoodsAreaServiceImpl.java index c1078f39e..fb857dad9 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataGoodsAreaServiceImpl.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/service/impl/BasicdataGoodsAreaServiceImpl.java @@ -327,6 +327,9 @@ public class BasicdataGoodsAreaServiceImpl extends BaseServiceImpl basicdatavisualizationSheetOnes = baseMapper.exportWarehouseByorderId(areaId); + basicdatavisualizationSheetOnes.forEach(e->{ + if (StringUtils.isNotBlank(e.getThirdProduct())){e.setThirdProduct(this.countUniqueProperties(e.getThirdProduct()));} + }); //sheetTwo List basicdatavisualizationSheetTwos = baseMapper.exportWarehouseByallocation(areaId); basicdatavisualizationSheetTwos.forEach(e->{ @@ -371,8 +374,112 @@ public class BasicdataGoodsAreaServiceImpl extends BaseServiceImpl>>>>>{}",var6); return; } - }else { + }else if (type ==2){ + //sheetOne + List basicdatavisualizationSheetKCOnes = baseMapper.exportWarehouseByCKStrip(areaId); + //转换上架人 + basicdatavisualizationSheetKCOnes.forEach(e->{ + if (StringUtils.isNotBlank(e.getUpUser())){ + String[] split = e.getUpUser().split("、"); + StringBuilder a = new StringBuilder(); + for (String s : split) { + a.append(userClient.userInfoById(Long.valueOf(s)).getData().getName()).append("、"); + } + e.setUpUser(a.toString()); + } + }); + //sheetTwo + List basicdatavisualizationSheetKCTwos = baseMapper.exportWarehouseByKCallocation(areaId); + basicdatavisualizationSheetKCTwos.forEach(e->{ + if (StringUtils.isNotBlank(e.getMarketName())){e.setMarketName(this.countUniqueProperties(e.getMarketName())); } + if (StringUtils.isNotBlank(e.getCargoNumber())){e.setCargoNumber(this.countUniqueProperties(e.getCargoNumber()));} + if (StringUtils.isNotBlank(e.getDescriptionGoods())){e.setDescriptionGoods(this.countUniqueProperties(e.getDescriptionGoods()));} + if (StringUtils.isNotBlank(e.getServiceNumber())){e.setServiceNumber(this.countUniqueProperties(e.getServiceNumber()));} + }); + //sheetThree + List basicdatavisualizationKCSheetThrees = baseMapper.exportWarehouseByCKService(areaId); + + try { + String fileName = "仓库数据" + DateUtil.time(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding(Charsets.UTF_8.name()); + fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name()); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + // 构造各个sheet页相关信息 + List goodsAreaSheetInfoBeans = new LinkedList<>(); + goodsAreaSheetInfoBeans.add(new GoodsAreaSheetInfoBean("库存品维度",BasicdatavisualizationKCSheetOne.class,basicdatavisualizationSheetKCOnes)); + goodsAreaSheetInfoBeans.add(new GoodsAreaSheetInfoBean("货位维度",BasicdatavisualizationKCSheetTwo.class,basicdatavisualizationSheetKCTwos)); + goodsAreaSheetInfoBeans.add(new GoodsAreaSheetInfoBean("服务号维度",BasicdatavisualizationKCSheetThree.class,basicdatavisualizationKCSheetThrees)); + // EasyExcel.write(response.getOutputStream(), BasicdataGoodsAreaexportExcel.class).sheet("货区数据表").doWrite(warehouseGoodsAreaList); + ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build(); + + WriteSheet writeSheet; + for (GoodsAreaSheetInfoBean bean : goodsAreaSheetInfoBeans) { + // 构建sheet对象 + writeSheet = EasyExcel.writerSheet(bean.getSheetName()).head(bean.getHeadClass()).build(); + // 写出sheet数据 + excelWriter.write(bean.getDataList(), writeSheet); + } + // 关流 + excelWriter.finish(); + + } catch (IOException var6) { + log.error("导出错误>>>>>>{}",var6); + return; + } + }else if (type ==3){ + //sheetOne + List basicdatavisualizationZreoSheetOnes = baseMapper.exportWarehouseByWaybillNumber(areaId); + //转换上架人 + basicdatavisualizationZreoSheetOnes.forEach(e->{ + if (StringUtils.isNotBlank(e.getUpUser())){ + String[] split = e.getUpUser().split("、"); + StringBuilder a = new StringBuilder(); + for (String s : split) { + a.append(userClient.userInfoById(Long.valueOf(s)).getData().getName()).append("、"); + } + e.setUpUser(a.toString()); + } + }); +// //sheetTwo +// List basicdatavisualizationSheetTwos = baseMapper.exportWarehouseByallocation(areaId); +// basicdatavisualizationSheetTwos.forEach(e->{ +// if (StringUtils.isNotBlank(e.getFirsts())){e.setFirsts(this.countUniqueProperties(e.getFirsts())); } +// if (StringUtils.isNotBlank(e.getSecond())){e.setSecond(this.countUniqueProperties(e.getSecond()));} +// if (StringUtils.isNotBlank(e.getThirdProduct())){e.setThirdProduct(this.countUniqueProperties(e.getThirdProduct()));} +// if (StringUtils.isNotBlank(e.getOrderCode())){e.setOrderCode(this.countUniqueProperties(e.getOrderCode()));} +// if (StringUtils.isNotBlank(e.getMaterialName())){e.setMaterialName(this.countUniqueProperties(e.getMaterialName()));} +// }); + + try { + String fileName = "仓库数据" + DateUtil.time(); + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding(Charsets.UTF_8.name()); + fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name()); + response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); + // 构造各个sheet页相关信息 + List goodsAreaSheetInfoBeans = new LinkedList<>(); + goodsAreaSheetInfoBeans.add(new GoodsAreaSheetInfoBean("订单自编号维度",BasicdatavisualizationZreoSheetOne.class,basicdatavisualizationZreoSheetOnes)); +// goodsAreaSheetInfoBeans.add(new GoodsAreaSheetInfoBean("货位维度",BasicdatavisualizationSheetTwo.class,basicdatavisualizationSheetTwos)); +// goodsAreaSheetInfoBeans.add(new GoodsAreaSheetInfoBean("包条维度",BasicdatavisualizationSheetThree.class,basicdatavisualizationSheetThrees)); + // EasyExcel.write(response.getOutputStream(), BasicdataGoodsAreaexportExcel.class).sheet("货区数据表").doWrite(warehouseGoodsAreaList); + ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build(); + + WriteSheet writeSheet; + for (GoodsAreaSheetInfoBean bean : goodsAreaSheetInfoBeans) { + // 构建sheet对象 + writeSheet = EasyExcel.writerSheet(bean.getSheetName()).head(bean.getHeadClass()).build(); + // 写出sheet数据 + excelWriter.write(bean.getDataList(), writeSheet); + } + // 关流 + excelWriter.finish(); + + } catch (IOException var6) { + log.error("导出错误>>>>>>{}",var6); + return; + } } //return warehouseGoodsAreaList; } diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/annotation/RepeatSubmit.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/annotation/RepeatSubmit.java new file mode 100644 index 000000000..fe4210f5b --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/annotation/RepeatSubmit.java @@ -0,0 +1,26 @@ +//package com.logpm.warehouse.annotation; +// +//import java.lang.annotation.*; +// +///** +// * 自定义注解防止表单重复提交 +// * +// * @author lmy +// * +// */ +//@Inherited +//@Target(ElementType.METHOD) +//@Retention(RetentionPolicy.RUNTIME) +//@Documented +//public @interface RepeatSubmit +//{ +// /** +// * 间隔时间(ms),小于此时间视为重复提交 +// */ +// public long interval() default 5000; +// +// /** +// * 提示消息 +// */ +// public String message() default "不允许重复提交,请稍候再试"; +//} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/RepeatSubmitInterceptor.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/RepeatSubmitInterceptor.java new file mode 100644 index 000000000..8f47c5d1a --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/RepeatSubmitInterceptor.java @@ -0,0 +1,50 @@ +//package com.logpm.warehouse.config.interceptor; +// +// +//import com.logpm.warehouse.annotation.RepeatSubmit; +//import org.springblade.core.tool.api.R; +//import org.springframework.stereotype.Component; +//import org.springframework.web.method.HandlerMethod; +//import org.springframework.web.servlet.HandlerInterceptor; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletResponse; +//import java.lang.reflect.Method; +// +///** +// * 防止重复提交拦截器 +// * +// * @author lmy +// */ +//@Component +//public abstract class RepeatSubmitInterceptor implements HandlerInterceptor { +// public RepeatSubmitInterceptor() { +// } +// @Override +// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception +// { +// if (handler instanceof HandlerMethod) +// { +// HandlerMethod handlerMethod = (HandlerMethod) handler; +// Method method = handlerMethod.getMethod(); +// RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); +// if (annotation != null) +// { +// if (this.isRepeatSubmit(request, annotation)) +// { +// R r = R.fail(annotation.message()); +// return false; +// } +// } +// } +// return true; +// } +// +// /** +// * 验证是否重复提交由子类实现具体的防重复提交的规则 +// * +// * @param request +// * @return +// * @throws Exception +// */ +// public abstract boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation); +//} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/impl/SameUrlDataInterceptor.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/impl/SameUrlDataInterceptor.java new file mode 100644 index 000000000..6e080a7cb --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/config/interceptor/impl/SameUrlDataInterceptor.java @@ -0,0 +1,108 @@ +//package com.logpm.warehouse.config.interceptor.impl; +// +//import com.alibaba.fastjson.JSONObject; +//import com.logpm.warehouse.annotation.RepeatSubmit; +// +//import com.logpm.warehouse.filter.RepeatedlyRequestWrapper; +//import org.springblade.common.utils.HttpHelper; +//import com.logpm.warehouse.config.interceptor.RepeatSubmitInterceptor; +// +//import org.apache.commons.lang.StringUtils; +// +//import org.springblade.core.redis.cache.BladeRedis; +//import org.springblade.core.secure.BladeUser; +//import org.springblade.core.secure.utils.AuthUtil; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +// +//import javax.servlet.http.HttpServletRequest; +//import java.util.HashMap; +//import java.util.Map; +// +///** +// * 判断请求url和数据是否和上一次相同, +// * 如果和上次相同,则是重复提交表单。 有效时间为10秒内。 +// * +// * @author xhm +// */ +//@Component +//public class SameUrlDataInterceptor extends RepeatSubmitInterceptor +//{ +// public final String REPEAT_PARAMS = "repeatParams"; +// +// public final String REPEAT_TIME = "repeatTime"; +// +// +// @Autowired +// private BladeRedis redisCache; +// +// @SuppressWarnings("unchecked") +// @Override +// public boolean isRepeatSubmit(HttpServletRequest request, RepeatSubmit annotation) +// { +// String nowParams = ""; +// if (request instanceof RepeatedlyRequestWrapper) +// { +// RepeatedlyRequestWrapper repeatedlyRequest = (RepeatedlyRequestWrapper) request; +// nowParams = HttpHelper.getBodyString(repeatedlyRequest); +// } +// +// // body参数为空,获取Parameter的数据 +// if (StringUtils.isEmpty(nowParams)) +// { +// nowParams = JSONObject.toJSONString(request.getParameterMap()); +// } +// Map nowDataMap = new HashMap(); +// nowDataMap.put(REPEAT_PARAMS, nowParams); +// nowDataMap.put(REPEAT_TIME, System.currentTimeMillis()); +// +// // 请求地址(作为存放cache的key值) +// String url = request.getRequestURI(); +// //获取用户id +// BladeUser user = AuthUtil.getUser(); +// // 唯一标识(指定key + url + 消息头) +// String cacheRepeatKey = url+user.getUserId() ; +// +// Object sessionObj = redisCache.get(cacheRepeatKey); +// if (sessionObj != null) +// { +// Map sessionMap = (Map) sessionObj; +// if (sessionMap.containsKey(url)) +// { +// Map preDataMap = (Map) sessionMap.get(url); +// if (compareParams(nowDataMap, preDataMap) && compareTime(nowDataMap, preDataMap, annotation.interval())) +// { +// return true; +// } +// } +// } +// Map cacheMap = new HashMap(); +// cacheMap.put(url, nowDataMap); +// redisCache.setEx(cacheRepeatKey, cacheMap, annotation.interval()); +// return false; +// } +// +// /** +// * 判断参数是否相同 +// */ +// private boolean compareParams(Map nowMap, Map preMap) +// { +// String nowParams = (String) nowMap.get(REPEAT_PARAMS); +// String preParams = (String) preMap.get(REPEAT_PARAMS); +// return nowParams.equals(preParams); +// } +// +// /** +// * 判断两次间隔时间 +// */ +// private boolean compareTime(Map nowMap, Map preMap, long interval) +// { +// long time1 = (Long) nowMap.get(REPEAT_TIME); +// long time2 = (Long) preMap.get(REPEAT_TIME); +// if ((time1 - time2) < interval) +// { +// return true; +// } +// return false; +// } +//} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/filter/RepeatedlyRequestWrapper.java b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/filter/RepeatedlyRequestWrapper.java new file mode 100644 index 000000000..254e460bc --- /dev/null +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/filter/RepeatedlyRequestWrapper.java @@ -0,0 +1,76 @@ +//package com.logpm.warehouse.filter; +// +//import org.springblade.common.utils.HttpHelper; +// +//import javax.servlet.ReadListener; +//import javax.servlet.ServletInputStream; +//import javax.servlet.ServletResponse; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletRequestWrapper; +//import java.io.BufferedReader; +//import java.io.ByteArrayInputStream; +//import java.io.IOException; +//import java.io.InputStreamReader; +// +///** +// * 构建可重复读取inputStream的request +// * +// * @author lmy +// */ +//public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper +//{ +// private final byte[] body; +// +// public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException +// { +// super(request); +// request.setCharacterEncoding("UTF-8"); +// response.setCharacterEncoding("UTF-8"); +// +// body = HttpHelper.getBodyString(request).getBytes("UTF-8"); +// } +// +// @Override +// public BufferedReader getReader() throws IOException +// { +// return new BufferedReader(new InputStreamReader(getInputStream())); +// } +// +// @Override +// public ServletInputStream getInputStream() throws IOException +// { +// final ByteArrayInputStream bais = new ByteArrayInputStream(body); +// return new ServletInputStream() +// { +// @Override +// public int read() throws IOException +// { +// return bais.read(); +// } +// +// @Override +// public int available() throws IOException +// { +// return body.length; +// } +// +// @Override +// public boolean isFinished() +// { +// return false; +// } +// +// @Override +// public boolean isReady() +// { +// return false; +// } +// +// @Override +// public void setReadListener(ReadListener readListener) +// { +// +// } +// }; +// } +//} diff --git a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.xml b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.xml index 3897c842b..4559e3e41 100644 --- a/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.xml +++ b/blade-service/logpm-warehouse/src/main/java/com/logpm/warehouse/mapper/WarehouseGoodsAllocationMapper.xml @@ -202,15 +202,14 @@ ldsl.stock_list_code stockListCode, lwtg.tray_code trayCode, lwug.num num, - CONCAT(lwug.area_title,'-',lwug.shelf_title,'-',lwug.allocation_title) positionCode + lwug.position_code positionCode FROM logpm_distribution_stock_list ldsl - JOIN logpm_warehouse_updown_goods lwug ON ldsl.material_id = lwug.association_id - left JOIN logpm_warehouse_updown_type lwut on lwut.id = lwug.updown_type_id + JOIN logpm_warehouse_updown_goods lwug ON ldsl.material_id = lwug.association_id and ldsl.incoming_batch = lwug.incoming_batch and ldsl.market_id = lwug.market_id left join logpm_warehouse_tray_goods lwtg on lwtg.association_id = ldsl.material_id left join logpm_basicdata_material lbm on lbm.id =ldsl.material_id - lwug.association_type = 4 and ldsl.market_id = lwug.market_id AND ldsl.is_deleted = 0 and lwug.allocation_id + lwug.association_type = 4 AND ldsl.is_deleted = 0 and lwug.allocation_id = #{param.id} and lbm.product_code like concat('%',#{param.materialCode},'%')