From 1ec175e540b1bf34c13e99aa7fed1ad86c05a0d5 Mon Sep 17 00:00:00 2001 From: yxt_djz Date: Tue, 20 Dec 2022 09:34:23 +0800 Subject: [PATCH 1/2] 2 --- .../PurchaseRequisitionDetailsVo.java | 7 ++ .../PurchaseRequisitionDto.java | 7 ++ .../PurchaseRequisitionFeign.java | 4 +- .../PurchaseRequisitionFeignFallback.java | 4 +- .../biz/productnum/ProductNumService.java | 7 +- .../PurchaseRequisitionMapper.java | 18 +++++ .../PurchaseRequisitionMapper.xml | 10 +++ .../PurchaseRequisitionRest.java | 75 +++++++++++++++++-- .../PurchaseRequisitionService.java | 56 +++++++++++--- .../PurchaseRequisitionProMapper.java | 14 ++-- .../PurchaseRequisitionProMapper.xml | 6 ++ .../PurchaseRequisitionProService.java | 14 +++- .../biz/salesdata/SalesDataService.java | 46 +++++++----- 13 files changed, 223 insertions(+), 45 deletions(-) diff --git a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDetailsVo.java b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDetailsVo.java index c4b111ae..54ff8461 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDetailsVo.java +++ b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDetailsVo.java @@ -29,7 +29,12 @@ package com.yxt.supervise.portal.api.purchaserequisition; import com.yxt.common.core.vo.Vo; import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; import java.util.Date; +import java.util.List; + +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionProDto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -88,4 +93,6 @@ public class PurchaseRequisitionDetailsVo implements Vo { private String newCode;// @ApiModelProperty("旧订单编号") private String oldCode;// + @ApiModelProperty("商品列表") + private List pros=new ArrayList<>(); } \ No newline at end of file diff --git a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDto.java b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDto.java index c814cfe6..0c0131fa 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDto.java +++ b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionDto.java @@ -29,7 +29,12 @@ package com.yxt.supervise.portal.api.purchaserequisition; import com.yxt.common.core.dto.Dto; import com.fasterxml.jackson.annotation.JsonFormat; + +import java.util.ArrayList; import java.util.Date; +import java.util.List; + +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionProDto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -88,4 +93,6 @@ public class PurchaseRequisitionDto implements Dto { private String newCode;// @ApiModelProperty("旧订单编号") private String oldCode;// + @ApiModelProperty("商品列表") + private List pros=new ArrayList<>(); } \ No newline at end of file diff --git a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeign.java b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeign.java index 4562275c..95952450 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeign.java +++ b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeign.java @@ -69,10 +69,10 @@ public interface PurchaseRequisitionFeign { @ApiOperation("根据sid删除记录") @DeleteMapping("/delBySids") @ResponseBody - public ResultBean delBySids(@RequestBody String[] sids); + public ResultBean delBySids(@RequestParam("sids") String sids); @ApiOperation("根据SID获取一条记录") @GetMapping("/fetchDetailsBySid/{sid}") @ResponseBody - public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); + public ResultBean fetchDetailsBySid(@PathVariable("sid") String sid); } \ No newline at end of file diff --git a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeignFallback.java b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeignFallback.java index 360c6ec8..d3ea172f 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeignFallback.java +++ b/yxt_supervise/supervise-portal/supervise-portal-api/src/main/java/com/yxt/supervise/portal/api/purchaserequisition/PurchaseRequisitionFeignFallback.java @@ -60,12 +60,12 @@ public class PurchaseRequisitionFeignFallback implements PurchaseRequisitionFeig } @Override - public ResultBean delBySids( String[] sids){ + public ResultBean delBySids( String sids){ return ResultBean.fireFail().setMsg("接口宇信通监管/purchaserequisition/delBySids无法访问"); } @Override - public ResultBean fetchDetailsBySid(String sid){ + public ResultBean fetchDetailsBySid(String sid){ ResultBean rb = ResultBean.fireFail(); return rb.setMsg("接口宇信通监管/purchaserequisition/fetchDetailsBySid无法访问"); } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/productnum/ProductNumService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/productnum/ProductNumService.java index ec20c4b8..0f63ec5b 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/productnum/ProductNumService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/productnum/ProductNumService.java @@ -42,6 +42,7 @@ import com.yxt.supervise.portal.api.productinformation.ProductInformationVo; import com.yxt.supervise.portal.api.productnum.*; import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisition; import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionPro; +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionProDto; import com.yxt.supervise.portal.api.restrictedcategory.RestrictedCategory; import com.yxt.supervise.portal.biz.brandinfo.BrandInfoService; import com.yxt.supervise.portal.biz.dictcommon.DictCommonService; @@ -480,7 +481,7 @@ public class ProductNumService extends MybatisBaseService list=purchaseRequisitionProService.selectByMainSid(purchaseRequisitionSid); + List list=purchaseRequisitionProService.selectByMainSid(purchaseRequisitionSid); addProductNum(purchaseRequisition,list); List productNums=baseMapper.selectByPc(pc); @@ -537,12 +538,12 @@ public class ProductNumService extends MybatisBaseService list) { + private void addProductNum(PurchaseRequisition pu,List list) { Map map=new HashMap(); map.put("pc",pu.getCode()); baseMapper.deleteByMap(map); for(int i = 0; i < list.size(); i++){ - PurchaseRequisitionPro p=list.get(i); + PurchaseRequisitionProDto p=list.get(i); ProductNum pr=new ProductNum(); pr.setPc(pu.getCode()); pr.setSupplierCode(pu.getSupplierCode());//供应商代码 diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.java index f1923597..031db6bf 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.java @@ -1,8 +1,17 @@ package com.yxt.supervise.portal.biz.purchaserequisition; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; import com.yxt.supervise.portal.api.productinformation.ProductInformation; import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisition; +import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisitionDetailsVo; +import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisitionVo; +import com.yxt.supervise.portal.api.warehouseinfo.WarehouseInfo; +import com.yxt.supervise.portal.api.warehouseinfo.WarehouseInfoVo; +import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; @@ -39,4 +48,13 @@ public interface PurchaseRequisitionMapper extends BaseMapper> list); void insertGysddmxb(List> list2); + @Delete(" DELETE FROM hz_gysddmxb") + void deleteGysddmxb(); + IPage selectPageVo(IPage page, @Param(Constants.WRAPPER) Wrapper qw); + + int delBySids(@Param("list") String[] split); + @Select("select * from purchase_requisition where sid=#{sid}") + PurchaseRequisitionDetailsVo fetchDetailsBySid(@Param("sid")String sid); + @Select("select * from purchase_requisition where sid=#{sid}") + PurchaseRequisition selectBySid(String sid); } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.xml b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.xml index f6b0e73b..a47d53a1 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.xml +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionMapper.xml @@ -33,4 +33,14 @@ ) + + delete from purchase_requisition where sid in + + #{item} + + + + \ No newline at end of file diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionRest.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionRest.java index c968f125..5c27c905 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionRest.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionRest.java @@ -1,13 +1,22 @@ package com.yxt.supervise.portal.biz.purchaserequisition; +import cn.hutool.core.bean.BeanUtil; +import com.yxt.common.core.query.PagerQuery; import com.yxt.common.core.result.ResultBean; +import com.yxt.common.core.vo.PagerVo; +import com.yxt.supervise.portal.api.purchaserequisition.*; +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionPro; +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionProDto; +import com.yxt.supervise.portal.api.warehouseinfo.WarehouseInfoFeign; +import com.yxt.supervise.portal.api.warehouseinfo.WarehouseInfoQuery; +import com.yxt.supervise.portal.api.warehouseinfo.WarehouseInfoVo; +import com.yxt.supervise.portal.biz.gdinventory.GdRescategoryProdService; +import com.yxt.supervise.portal.biz.purchaserequisitionpro.PurchaseRequisitionProService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; @@ -17,13 +26,21 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.text.ParseException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; @Api(tags = "采购订单基本信息") @RestController("com.supervise.biz.purchaserequisition.PurchaseRequisitionRest") @RequestMapping("v1/purchaserequisition") -public class PurchaseRequisitionRest { +@Slf4j +public class PurchaseRequisitionRest implements PurchaseRequisitionFeign { @Resource private PurchaseRequisitionService purchaseRequisitionService; + @Resource + private PurchaseRequisitionProService purchaseRequisitionProService; + @ApiOperation(" ") @RequestMapping(value = "/importBrandSort", method = RequestMethod.POST) public ResultBean importBrandSort(@RequestParam("filename") MultipartFile file, @@ -61,5 +78,53 @@ public class PurchaseRequisitionRest { return rb; } + @ApiOperation("") + @RequestMapping(value = "/resetCache", method = RequestMethod.POST) + public ResultBean resetCache(){ + log.info("resetCache:{}","/resetCache"); + GdRescategoryProdService.resetCache(); + ResultBean rb = ResultBean.fireFail(); + return rb; + } + + @Override + public ResultBean> listPage(PagerQuery pq) { + ResultBean rb = ResultBean.fireFail(); + PagerVo pv = purchaseRequisitionService.listPageVo(pq); + return rb.success().setData(pv); + } + @Override + public ResultBean save(PurchaseRequisitionDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + PurchaseRequisition purchaseRequisition = purchaseRequisitionService.selectBySid(sid); + BeanUtil.copyProperties(dto,purchaseRequisition); + purchaseRequisitionService.updateById(purchaseRequisition); + List pros = dto.getPros(); + String [] sidArr={sid}; + purchaseRequisitionProService.delByMainSids(sidArr); + for(PurchaseRequisitionProDto p:pros){ + PurchaseRequisitionPro purchaseRequisitionPro = new PurchaseRequisitionPro(); + BeanUtil.copyProperties(p,purchaseRequisitionPro); + purchaseRequisitionPro.setMainSid(sid); + purchaseRequisitionPro.setSid(UUID.randomUUID().toString()); + purchaseRequisitionProService.insert(purchaseRequisitionPro); + } + return rb.success().setMsg("操作成功"); + } + + @Override + public ResultBean delBySids(String sids) { + return purchaseRequisitionService.delBySids(sids); + } + + @Override + public ResultBean fetchDetailsBySid(String sid) { + ResultBean resultBean = ResultBean.fireFail(); + PurchaseRequisitionDetailsVo vo=purchaseRequisitionService.fetchDetailsBySid(sid); + List purchaseRequisitionPros = purchaseRequisitionProService.selectByMainSid(sid); + vo.setPros(purchaseRequisitionPros); + return resultBean.success().setData(vo); + } } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionService.java index 2b822965..972cb5d0 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionService.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.common.base.utils.PagerUtil; import com.yxt.common.core.query.PagerQuery; +import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.vo.PagerVo; import com.yxt.supervise.portal.api.brandinfo.BrandInfo; import com.yxt.supervise.portal.api.brandinfo.BrandInfoVo; @@ -18,23 +19,21 @@ import com.yxt.supervise.portal.api.manufacturerinfo.ManufacturerInfo; import com.yxt.supervise.portal.api.manufacturerinfo.ManufacturerInfoVo; import com.yxt.supervise.portal.api.productinformation.*; import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisition; +import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisitionDetailsVo; +import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisitionQuery; +import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisitionVo; import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionPro; import com.yxt.supervise.portal.api.restrictedcategory.RestrictedCategory; -import com.yxt.supervise.portal.api.supplierinfo.SupplierInfo; -import com.yxt.supervise.portal.api.supplierinfo.SupplierInfoVo; import com.yxt.supervise.portal.api.warehouseposition.WarehousePosition; import com.yxt.supervise.portal.api.warehouseposition.WarehousePositionVo; -import com.yxt.supervise.portal.api.warehouseshelves.WarehouseShelves; -import com.yxt.supervise.portal.api.warehouseshelves.WarehouseShelvesVo; -import com.yxt.supervise.portal.biz.brandinfo.BrandInfoService; import com.yxt.supervise.portal.biz.dictcommon.DictCommonService; +import com.yxt.supervise.portal.biz.gdinventory.GdRescategoryProdService; import com.yxt.supervise.portal.biz.manufacturerinfo.ManufacturerInfoService; import com.yxt.supervise.portal.biz.productinformation.ProductInformationService; import com.yxt.supervise.portal.biz.purchaserequisitionpro.PurchaseRequisitionProService; import com.yxt.supervise.portal.biz.restrictedcategory.RestrictedCategoryService; import com.yxt.supervise.portal.biz.supplierinfo.SupplierInfoService; import com.yxt.supervise.portal.biz.warehouseposition.WarehousePositionService; -import com.yxt.supervise.portal.biz.warehouseshelves.WarehouseShelvesService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; @@ -71,6 +70,21 @@ public class PurchaseRequisitionService extends MybatisBaseService createQueryWrapper(PurchaseRequisitionQuery query) { + // todo: 这里根据具体业务调整查询条件 + // 多字段Like示例:qw.and(wrapper -> wrapper.like("name", query.getName()).or().like("remark", query.getName())); + QueryWrapper qw = new QueryWrapper<>(); + return qw; + } + + public PagerVo listPageVo(PagerQuery pq) { + PurchaseRequisitionQuery query = pq.getParams(); + QueryWrapper qw = createQueryWrapper(query); + IPage page = PagerUtil.queryToPage(pq); + IPage pagging = baseMapper.selectPageVo(page, qw); + PagerVo p = PagerUtil.pageToVo(pagging, null); + return p; + } public void supplierAnalysis( ) throws ParseException { ztspglhzb(); gysddmxb(); @@ -93,11 +107,11 @@ public class PurchaseRequisitionService extends MybatisBaseServicenowMillisecond&&subtract.compareTo(new BigDecimal("0"))==1){//是否延期 大于到货日期 并且在途货值大于0 为延期 + long arrivalMillisecond = parse.getTime();//到货日期 + if(nowMillisecond>arrivalMillisecond&&subtract.compareTo(new BigDecimal("0"))==1){//是否延期 大于到货日期 并且在途货值大于0 为延期 m.put("sfyq","是"); }else{ m.put("sfyq","否"); @@ -130,6 +144,7 @@ public class PurchaseRequisitionService extends MybatisBaseService resultBean = ResultBean.fireFail(); + String[] split = sids.split(","); + int i= baseMapper.delBySids(split); + int ii=purchaseRequisitionProService.delByMainSids(split); + return resultBean.success().setData("1"); + } + + public PurchaseRequisitionDetailsVo fetchDetailsBySid(String sid) { + PurchaseRequisitionDetailsVo p = baseMapper.fetchDetailsBySid(sid); + return p; + } + + public PurchaseRequisition selectBySid(String sid) { + return baseMapper.selectBySid(sid); + } } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.java index b70ee3c3..522a9031 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.java @@ -2,10 +2,8 @@ package com.yxt.supervise.portal.biz.purchaserequisitionpro; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionPro; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionProDto; +import org.apache.ibatis.annotations.*; import java.util.List; import java.util.Map; @@ -18,7 +16,7 @@ public interface PurchaseRequisitionProMapper extends BaseMapper selectByMainSid(@Param("mainSid") String purchaseRequisitionSid); + List selectByMainSid(@Param("mainSid") String purchaseRequisitionSid); @Select("select * from purchase_requisition_pro where proCode=#{proCode}") List selectByCode(@Param("proCode")String proCode); @Select("select * from purchase_requisition_pro ") @@ -38,4 +36,10 @@ public interface PurchaseRequisitionProMapper extends BaseMapper> purchaseRequisitionPros); + @Select("select count(1) from gd_rescategory_prod where prodCode='#{proCode}'") + int selectProdCodeTable(@Param("proCode") String proCode); +@Insert("insert into gd_rescategory_prod(prodCode) values('#{proCode}')") + int insertProdCodeTable(@Param("proCode")String proCode); + + int delByMainSids(@Param("list") String[] split); } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.xml b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.xml index 041d2a6b..0e4d4282 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.xml +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProMapper.xml @@ -34,5 +34,11 @@ #{item.arrivalDate,jdbcType=VARCHAR}) + + delete from purchase_requisition_pro where mainsid in + + #{item} + + \ No newline at end of file diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProService.java index 6631be3e..44bae671 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisitionpro/PurchaseRequisitionProService.java @@ -2,6 +2,7 @@ package com.yxt.supervise.portal.biz.purchaserequisitionpro; import com.yxt.common.base.service.MybatisBaseService; import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionPro; +import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionProDto; import org.springframework.stereotype.Service; import java.util.List; @@ -14,7 +15,7 @@ public class PurchaseRequisitionProService extends MybatisBaseService selectByMainSid(String purchaseRequisitionSid) { + public List selectByMainSid(String purchaseRequisitionSid) { return baseMapper.selectByMainSid(purchaseRequisitionSid); } @@ -53,4 +54,15 @@ public class PurchaseRequisitionProService extends MybatisBaseService> purchaseRequisitionPros) { baseMapper.addSupplierAndpurAnalysis(purchaseRequisitionPros); } + + public int selectProdCodeTable(String proCode) { + return baseMapper.selectProdCodeTable(proCode); + } + public int insertProdCodeTable(String proCode) { + return baseMapper.insertProdCodeTable(proCode); + } + + public int delByMainSids(String[] split) { + return baseMapper.delByMainSids(split); + } } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/salesdata/SalesDataService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/salesdata/SalesDataService.java index 7fa25eb1..737ff523 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/salesdata/SalesDataService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/salesdata/SalesDataService.java @@ -26,11 +26,8 @@ package com.yxt.supervise.portal.biz.salesdata; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.json.JSONUtil; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.sax.handler.RowHandler; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -40,24 +37,18 @@ import com.yxt.supervise.portal.api.brandinfo.BrandInfo; import com.yxt.supervise.portal.api.brandinfo.BrandInfoVo; import com.yxt.supervise.portal.api.dictcommon.DictCommon; import com.yxt.supervise.portal.api.dictcommon.DictCommonDetailsVo; -import com.yxt.supervise.portal.api.productinformation.ProductInformationVo; -import com.yxt.supervise.portal.api.productnum.ProductNum; -import com.yxt.supervise.portal.api.purchaserequisition.PurchaseRequisition; import com.yxt.supervise.portal.api.purchaserequisitionpro.PurchaseRequisitionPro; -import com.yxt.supervise.portal.api.restrictedcategory.RestrictedCategory; import com.yxt.supervise.portal.api.storeinfo.StoreInfo; import com.yxt.supervise.portal.biz.brandinfo.BrandInfoService; import com.yxt.supervise.portal.biz.dictcommon.DictCommonService; -import com.yxt.supervise.portal.biz.gdinventory.GdInventoryLog; -import com.yxt.supervise.portal.biz.gdinventory.GdInventoryLogErr; -import com.yxt.supervise.portal.biz.gdinventory.GdInventoryOk; +import com.yxt.supervise.portal.biz.gdinstorage.GdInstorageGd; +import com.yxt.supervise.portal.biz.gdinstorage.GdInstorageGdService; import com.yxt.supervise.portal.biz.inventoryinformation.InventoryInformationService; import com.yxt.supervise.portal.biz.productinformation.ProductInformationService; import com.yxt.supervise.portal.biz.purchaserequisition.PurchaseRequisitionService; import com.yxt.supervise.portal.biz.purchaserequisitionpro.PurchaseRequisitionProService; import com.yxt.supervise.portal.biz.restrictedcategory.RestrictedCategoryService; import com.yxt.supervise.portal.biz.storeinfo.StoreInfoService; -import com.yxt.supervise.portal.extexcel.ExcelTool; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import com.yxt.common.base.service.MybatisBaseService; @@ -70,11 +61,9 @@ import com.yxt.supervise.portal.api.salesdata.SalesDataQuery; import com.yxt.supervise.portal.api.salesdata.SalesDataVo; import com.yxt.supervise.portal.api.salesdata.SalesDataDetailsVo; import com.yxt.supervise.portal.api.salesdata.SalesDataDto; -import com.yxt.supervise.portal.api.salesdata.SalesDataFeign; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import org.springframework.beans.factory.annotation.Autowired; @@ -82,8 +71,6 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; -import java.io.IOException; -import java.io.InputStream; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -370,8 +357,8 @@ public class SalesDataService extends MybatisBaseService list=new ArrayList<>(); - if(com.yxt.common.base.utils.StringUtils.isNotBlank(pc)&&com.yxt.common.base.utils.StringUtils.isNotBlank(storeCode)){ + if(com.yxt.common.base.utils.StringUtils.isNotBlank(pc)&&com.yxt.common.base.utils.StringUtils.isNotBlank(storeCode)){ list=baseMapper.selectByDateAndstoreCode(pc,storeCode); }else if(com.yxt.common.base.utils.StringUtils.isNotBlank(pc)&&com.yxt.common.base.utils.StringUtils.isBlank(storeCode)){ list=baseMapper.selectByDate(pc); @@ -425,6 +412,29 @@ public class SalesDataService extends MybatisBaseService gdInstorageGds = gdInstorageGdService.jmdRkmxdOfDay(pc); + List> listss2=new ArrayList<>(); + for(int j=0;j map=new HashMap<>(); + map.put("t1",gdInstorageGd.getColc2());//门店 + String colc2 = gdInstorageGd.getColc2(); + String[] split = colc2.split("]"); + map.put("t2",split[1]); + map.put("t3",gdInstorageGd.getColg6());//统配出 + map.put("t4","无");// 销售订单编号 + map.put("t5",gdInstorageGd.getColh7());//商品编码 + map.put("t6",gdInstorageGd.getColi8());//商品名称 + map.put("t7",gdInstorageGd.getColr17());//数量 + map.put("t8","无"); + map.put("t9",gdInstorageGd.getColq16());//入库金额 + map.put("t10",list.get(0).getDataDate()); + listss2.add(map); + } + baseMapper.insertsalestest(listss2); + log.info("结束新增jmdRkmxdOfDay"); + //double d=gdInstorageGdService.jmdRkmxdValOfDay(pc); return null; } public HSSFWorkbook analysisSalesData2(String pc,String storeCode){ From 107b5647f438c23a49ca6cdc97339d778bacc258 Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 21 Dec 2022 18:18:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BA=93=E5=AD=98=E6=B1=87=E6=80=BB?= =?UTF-8?q?=E8=A1=A8=E7=BB=9F=E8=AE=A1=E5=95=86=E5=93=81=E6=95=B0=E9=87=8F?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/gdinventory/GdInventoryOkMapper.java | 15 +++++++- .../biz/gdinventory/GdInventoryOkService.java | 36 ++++++++++++------ .../xlsx-tmpl/库存汇总表-20221221.xlsx | Bin 0 -> 12887 bytes .../resources/xlsx-tmpl/库存汇总表.xlsx | Bin 12887 -> 13032 bytes 4 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/库存汇总表-20221221.xlsx diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkMapper.java index 284df9a5..408ef6d7 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkMapper.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkMapper.java @@ -64,7 +64,8 @@ public interface GdInventoryOkMapper extends BaseMapper { @Select("select IFNULL(count(1),0) from gd_inventory_ok where warehouseType='1' and warehouseCode<>'112'") int countProd1Not112(); - @Select("select IFNULL(count(1),0) from gd_inventory_ok where warehouseType='2'") + // @Select("select IFNULL(count(1),0) from gd_inventory_ok where warehouseType='2'") + @Select("select IFNULL(count(1),0) FROM (SELECT DISTINCT prodCode from gd_inventory_ok where warehouseType='2') t") int countProd2(); @Select("select IFNULL(sum(prodValue),0) from gd_inventory_ok where warehouseCode='112'") @@ -82,4 +83,16 @@ public interface GdInventoryOkMapper extends BaseMapper { @Select("select warehouseCode, warehouseName, warehouseType, prodCode, prodBarCode, prodName, prodNum, prodValue from gd_inventory_ok order by warehouseType") List> listOfProd(); + + @Select("select IFNULL(count(1),0) from gd_inventory_ok where warehouseCode='101'") + int countProd101(); + + @Select("select IFNULL(count(1),0) from gd_inventory_ok where warehouseCode='199'") + int countProd199(); + + @Select("select IFNULL(sum(prodValue),0) from gd_inventory_ok where warehouseCode='101'") + double countVal101(); + + @Select("select IFNULL(sum(prodValue),0) from gd_inventory_ok where warehouseCode='199'") + double countVal199(); } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkService.java index 01b58f96..63f19c7c 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkService.java +++ b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryOkService.java @@ -27,7 +27,6 @@ package com.yxt.supervise.portal.biz.gdinventory; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; -import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -36,7 +35,6 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; -import java.net.URL; import java.util.Date; import java.util.List; import java.util.Map; @@ -75,13 +73,17 @@ public class GdInventoryOkService extends ServiceImpl0){ + writer.writeCellValue(1, 4, 1); + }else { + writer.writeCellValue(1, 4, 0); + } + if(prod199>0){ + writer.writeCellValue(1, 5, 1); + }else { + writer.writeCellValue(1, 5, 0); + } + // writer.writeCellValue(1, 4, type1); + writer.writeCellValue(1, 6, type2); writer.writeCellValue(2, 3, prod112); - writer.writeCellValue(2, 4, prod1Not112); - writer.writeCellValue(2, 5, prod2); + writer.writeCellValue(2, 4, prod101); + writer.writeCellValue(2, 5, prod199); + writer.writeCellValue(2, 6, prod2); writer.writeCellValue(3, 3, val112); - writer.writeCellValue(3, 4, val1Not112); - writer.writeCellValue(3, 5, val2); + writer.writeCellValue(3, 4, val101); + writer.writeCellValue(3, 5, val199); + writer.writeCellValue(3, 6, val2); // writer.flush(); // writer.close(); diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/库存汇总表-20221221.xlsx b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/库存汇总表-20221221.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b638d576c7247e5a3534f3d3424ef2e98696d0e1 GIT binary patch literal 12887 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 literal 0 HcmV?d00001 diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/库存汇总表.xlsx b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/库存汇总表.xlsx index b638d576c7247e5a3534f3d3424ef2e98696d0e1..2ee0c6fc89aa03175c8245a396c3d3e7924d490a 100644 GIT binary patch delta 5009 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