Browse Source

Merge remote-tracking branch 'origin/master'

master
yxt_djz 2 years ago
parent
commit
2d3fdacd23
  1. 12
      base-ui/src/api/kucun/ruku.js
  2. 252
      base-ui/src/router/index.js
  3. 20
      base-ui/src/views/kucun/rkmx/index.vue
  4. 2
      base-ui/src/views/kucun/xssjgl/index.vue
  5. 30
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountMapper.java
  6. 17
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountMapper.xml
  7. 144
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java
  8. 9
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java
  9. 58
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java
  10. 49
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionRest.java
  11. BIN
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/在途商品汇总统计表.xlsx
  12. BIN
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/销售汇总日报表.xlsx

12
base-ui/src/api/kucun/ruku.js

@ -74,3 +74,15 @@ export function jmdRkmxListDownload(data) {
} }
}) })
} }
// 下采购订单、入库的数据
export function ztsjZhengli() {
return request({
url: '/v1/purchaserequisition/supplierAnalysis',
method: 'post'
})
}
export function buildExcelZaiTu() {
return request({ url: '/ruku/buildExcelZaiTu' })
}

252
base-ui/src/router/index.js

@ -9,48 +9,276 @@ Vue.use(Router)
/* 所有角色可以访问/没有权限要求的基页 */ /* 所有角色可以访问/没有权限要求的基页 */
export const constantRoutes = [{ export const constantRoutes = [
{
path: '/redirect', path: '/redirect',
component: Layout, component: Layout,
hidden: true, hidden: true,
children: [{ children: [
{
path: '/redirect/:path(.*)', path: '/redirect/:path(.*)',
component: () => import('@/views/redirect/index.vue') component: () => import('@/views/redirect/index.vue')
}] },
}, { ]
},
{
path: '/', path: '/',
redirect: 'index' redirect: 'index'
}, { },
{
path: '/login', path: '/login',
component: () => import('@/views/login/login.vue') component: () => import('@/views/login/login.vue')
}, { },
{
path: '/home', path: '/home',
component: () => import('@/views/Home/Home.vue'), component: () => import('@/views/Home/Home.vue'),
name: 'home' name: 'home'
}, { },
{
path: '/index', path: '/index',
component: Layout, component: Layout,
redirect: '/index', redirect: '/index',
meta: { meta: {
title: '首页' title: '首页',
}, },
children: [{ children: [
{
path: '/index', path: '/index',
component: () => import('@/views/index.vue'), component: () => import('@/views/index.vue'),
name: 'index', name: 'index',
meta: { meta: {
title: '主页', title: '主页',
noCache: true, noCache: true,
affix: true affix: true,
} }
}] },
]
}, },
// 客户中心 // 客户中心
{
path: '1',
component: Layout,
meta: { title: '客户中心' },
children: [
{
path: 'cgsq/PurchaseApplicationManagement',
component: () => import('@/views/supervise/purchaseapplicationmanagement/purchaseapplicationmanagement.vue'),
name: 'PurchaseApplicationManagement',
meta: {title: '采购申请管理',noCache: true,}
},
{
path: 'xzgys',
component: () => import('@/views/supervise/supplierbankinfo/supplierbankinfo.vue'),
name: 'supplierManagement',
meta: {title: '供应商管理',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '厂商扣点汇总表',noCache: true}
},
{
path: 'cgsq',
component: Layout,
meta: {title: '数据上报'},
children: [
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '综合数据上报',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '入库上报',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '出库上报',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '库存上报',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '销售上报',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '仓库调拨上报',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '配送批发上报',noCache: true}
}
],
},
{
path: 'cgsq',
component: Layout,
meta: {title: '信息查询'},
children: [
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '库存信息查询',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '订单查询',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '订单商品查询',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '出入库查询',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '供应商查询',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '仓库调拨查询',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'manufacturerPreference',
meta: {title: '配送批发查询',noCache: true}
}
]
}
]
},
// 审批中心
{
path: '',
component: Layout,
meta: { title: '审批中心' },
children: [
{
path: '/404',
component: () => import('@/views/404'),
name: 'readWork',
meta: {title: '已阅工作',noCache: true,}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'waitingWork',
meta: {title: '待阅工作',noCache: true}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'alreadyHandledWork',
meta: {title: '已办工作',noCache: true,}
},
{
path: '/404',
component: () => import('@/views/404'),
name: 'handledWork',
meta: {title: '待办工作',noCache: true}
}
]
},
{
path: '',
component: Layout,
meta: { title: '消息中心' },
children: [
{
path: 'cgsq/PurchaseApplicationManagement',
component: () => import('@/views/404'),
name: 'PurchaseApplicationManagement',
meta: {title: '未读消息',noCache: true,}
},
{
path: 'xzgys',
component: () => import('@/views/404'),
name: 'supplierManagement',
meta: {title: '已读消息',noCache: true}
}
]
},
{
path: '',
component: Layout,
meta: { title: '报表中心' },
children: [
{
path: 'reportCenter/salesReport',
component: () => import('@/views/reportCenter/salesReport.vue'),
name: 'salesReport',
meta: {title: '销售报表',noCache: true,}
},
{
path: 'reportCenter/goodsOnWay',
component: () => import('@/views/reportCenter/goodsOnWay.vue'),
name: 'goodsOnWay',
meta: {title: '在途商品管理表',noCache: true}
}
]
},
{
path: '',
component: Layout,
meta: { title: '风控管理' },
children: [
{
path: 'risk/thresholdAnalysis',
component: () => import('@/views/risk/thresholdAnalysis.vue'),
name: 'thresholdAnalysis',
meta: {title: '阀值分析',noCache: true,}
}
]
},
{
path: '',
component: Layout,
meta: { title: '系统管理' },
children: [
{
path: 'risk/thresholdAnalysis',
component: () => import('@/views/risk/thresholdAnalysis.vue'),
name: 'thresholdAnalysis',
meta: {title: '阀值分析',noCache: true,}
}
]
},
{ {
path: '/customer', path: '/customer',
component: Layout, component: Layout,
meta: { meta: {
title: '客户中心' title: '客户中心(以下为原菜单)'
}, },
children: [{ children: [{
path: 'cgsq', path: 'cgsq',

20
base-ui/src/views/kucun/rkmx/index.vue

@ -114,6 +114,7 @@
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>入库单上传</span> <span>入库单上传</span>
<el-button style="float: right;" type="primary" size="mini" @click="downloadZtsj">下载在途数据</el-button>
<el-button style="float: right; padding: 3px 0" type="text" @click="recountRk">重新统计入库信息</el-button> <el-button style="float: right; padding: 3px 0" type="text" @click="recountRk">重新统计入库信息</el-button>
</div> </div>
<div> <div>
@ -146,7 +147,7 @@
</template> </template>
<script> <script>
import { recount, countinfo, in112PagerList, inallPagerList, logPagerList, jmdRkmxList, jmdRkmxListDownload } from '@/api/kucun/ruku' import { recount, countinfo, in112PagerList, inallPagerList, logPagerList, jmdRkmxList, jmdRkmxListDownload, ztsjZhengli, buildExcelZaiTu } from '@/api/kucun/ruku'
import Pagination from '@/components/pagination' import Pagination from '@/components/pagination'
import { parseTime } from '@/utils/index' import { parseTime } from '@/utils/index'
export default { export default {
@ -341,6 +342,23 @@ export default {
} else { } else {
this.uploadResultMesssage = resp.msg this.uploadResultMesssage = resp.msg
} }
},
downloadZtsj() {
ztsjZhengli()
.then(res => {
console.log('2222', res)
buildExcelZaiTu()
.then(resp => {
console.log('3333', resp)
window.open(resp.data, '_blank')
})
.catch(ee => {
console.log(ee)
})
})
.catch(e => {
console.log(e)
})
} }
} }
} }

2
base-ui/src/views/kucun/xssjgl/index.vue

@ -81,7 +81,7 @@
<div>共导入数据{{ currentLog.allNum }} 符合监管条件的数据{{ currentLog.validNum }} 用时{{ currentLog.durations }} 毫秒</div> <div>共导入数据{{ currentLog.allNum }} 符合监管条件的数据{{ currentLog.validNum }} 用时{{ currentLog.durations }} 毫秒</div>
</el-card> </el-card>
</div> </div>
<div><el-button :disabled="filecandown" size="small" type="primary" @click="doDownloadHz">下载批发数据文件</el-button></div> <div><el-button :disabled="filecandown" size="small" type="primary" @click="doDownloadHz">下载销售报表文件</el-button></div>
</el-card> </el-card>
<span slot="footer" class="dialog-footer"><el-button @click="dialogClose"> </el-button></span> <span slot="footer" class="dialog-footer"><el-button @click="dialogClose"> </el-button></span>
</el-dialog> </el-dialog>

30
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountMapper.java

@ -29,6 +29,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;
/** /**
* Project: yxt_supervise <br/> * Project: yxt_supervise <br/>
@ -53,4 +57,30 @@ public interface GdInstorageCountMapper extends BaseMapper<GdInstorageCount> {
"select colh7,coli8,sum(colr17),sum(colq16),cole4,colex,supplierCodeUnified " + "select colh7,coli8,sum(colr17),sum(colq16),cole4,colex,supplierCodeUnified " +
"from gd_instorage group by colh7,coli8,cole4,colex,supplierCodeUnified ") "from gd_instorage group by colh7,coli8,cole4,colex,supplierCodeUnified ")
void insertFromInstorage(); void insertFromInstorage();
/**
* 供应商到货汇总表
*
* @return
*/
@Select("select name,1 as ee,convert(ifnull(billtotalprice,0),decimal(12,2)) billtotalprice , " +
"CONVERT(IFNULL(prodvalue,0),DECIMAL(12,2)) prodvalue , " +
"CONVERT(IFNULL(wdhjz,0),DECIMAL(12,2)) wdhjz , " +
"CONVERT(IFNULL(cchjz,0),DECIMAL(12,2)) cchjz ,arrivaldate,sfyq from `hz_ztspglhzb`")
List<Map<String, Object>> gysdhhzb();
/**
* 商品到货明细表
*
* @return
*/
List<Map<String, Object>> spdhmxb();
/**
* 订单明细表
*
* @return
*/
@Select("SELECT name,code,CONVERT(billTotalPrice,DECIMAL(12,2)) billTotalPrice,billDate,arrivalDate FROM hz_gysddmxb")
List<Map<String, Object>> ddmxb();
} }

17
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountMapper.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.yxt.supervise.portal.biz.gdinstorage.GdInstorageCountMapper">
<select id="spdhmxb" resultType="java.util.Map">
SELECT sbi.name ,prp.`proCode`,prp.`proName`,prp.`number`, SUM(CONVERT(packageTotalPrice,DECIMAL(12,2))) as ptotalPrice,
(SELECT IFNULL(SUM(prodNum),0) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode ) prodNum,
(SELECT CONVERT(IFNULL(SUM(prodValue),0),DECIMAL(12,2)) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode ) prodValue,
IF(prp.`number`-(SELECT IFNULL(SUM(prodNum),0) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode ) > 0 , prp.`number`-(SELECT IFNULL(SUM(prodNum),0) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode ) , 0) ztnumber,
CONVERT(IF(SUM(packageTotalPrice)-(SELECT IFNULL(SUM(prodValue),0) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode ) > 0 ,SUM(packageTotalPrice)-(SELECT IFNULL(SUM(prodValue),0) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode ), 0),DECIMAL(12,2)) ztprodValue1,
CONVERT(IF((SELECT IFNULL(SUM(prodValue),0) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode )-SUM(packageTotalPrice) > 0 ,(SELECT SUM(prodValue) FROM gd_instorage_count gic WHERE gic.supplierCodeUnified=pr.supplierOnlyCode AND prp.`proCode`=gic.prodcode )-SUM(packageTotalPrice), 0),DECIMAL(12,2)) ztprodValue2
FROM `supplier_bank_info` sbi
LEFT JOIN `purchase_requisition` pr ON pr.supplierOnlyCode=sbi.codeUnified
LEFT JOIN `purchase_requisition_pro` prp ON pr.sid=prp.mainsid
WHERE pr.purchaseState=1 AND pr.bankState=1 AND sbi.`purchaseRequisition`=1 AND sbi.`bankState`=1
GROUP BY pr.supplierOnlyCode,prp.`proCode` ORDER BY sbi.name,prp.`proCode`;
</select>
</mapper>

144
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java

@ -25,12 +25,22 @@
*********************************************************/ *********************************************************/
package com.yxt.supervise.portal.biz.gdinstorage; package com.yxt.supervise.portal.biz.gdinstorage;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.portal.extexcel.ExcelTool;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Project: yxt_supervise <br/> * Project: yxt_supervise <br/>
@ -48,6 +58,13 @@ import java.util.List;
@Service @Service
public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper, GdInstorageCount> { public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper, GdInstorageCount> {
@Value("${image.upload.path:static/upload/}")
private String uploadPath;
@Value("${image.url.prefix:http://127.0.0.1:8080/upload/}")
private String urlPrefix;
@Value("${image.xlsxtmpl:static/upload/}")
private String xlsxtmplPath;
@Autowired @Autowired
private GdInstorageCountLogService gdInstorageCountLogService; private GdInstorageCountLogService gdInstorageCountLogService;
@ -74,4 +91,131 @@ public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper,
return rb.success().setData(dto); return rb.success().setData(dto);
} }
public ResultBean<String> buildExcelZaiTu() {
ResultBean rb = ResultBean.fireFail();
Date curDate = new Date();
String timestr = DateUtil.format(curDate, "yyyyMMddHHmmssSSS");
String dfmt1 = DateUtil.format(curDate, "yyyyMMdd");
String dfmt2 = DateUtil.format(curDate, "yyyy-MM-dd HH:mm");
String dfmt = DateUtil.format(curDate, "yyyy-MM-dd");
String xlsxpath = xlsxtmplPath + "在途商品汇总统计表.xlsx";
File srcFile = FileUtil.file(xlsxpath);
String tfile = "kchzb/在途商品汇总统计表" + dfmt + ".xlsx";
String url = urlPrefix + tfile;
String toFileName = uploadPath + tfile;
File file = FileUtil.file(toFileName);
FileUtil.copy(srcFile, file, true);
ExcelWriter writer = ExcelUtil.getWriter(file);
// 供应商到货汇总表
writer.setSheet(0);
writer.writeCellValue(0, 1, "编号:gysdhhzb" + dfmt1);
writer.writeCellValue(2, 1, "上报时间:" + dfmt2);
List<Map<String, Object>> list1 = baseMapper.gysdhhzb();
if (list1 == null || list1.isEmpty())
return rb.setMsg("供应商到货汇总表 数据为空!");
int size = list1.size();
int countRow = size + 3;
double cbilltotalprice = 0, cprodvalue = 0, cwdhjz = 0, ccchjz = 0;
for (int y = 3; y < countRow; y++) {
Map<String, Object> map = list1.get(y - 3);
writer.writeCellValue(0, y, map.get("name"));
writer.writeCellValue(1, y, "");
writer.writeCellValue(2, y, map.get("billtotalprice"));
cbilltotalprice = cbilltotalprice + ExcelTool.toDouble(map.get("billtotalprice"));
writer.writeCellValue(3, y, map.get("prodvalue"));
cprodvalue = cprodvalue + ExcelTool.toDouble(map.get("prodvalue"));
writer.writeCellValue(4, y, map.get("wdhjz"));
cwdhjz = cwdhjz + ExcelTool.toDouble(map.get("wdhjz"));
writer.writeCellValue(5, y, map.get("cchjz"));
ccchjz = ccchjz + ExcelTool.toDouble(map.get("cchjz"));
writer.writeCellValue(6, y, map.get("arrivaldate"));
writer.writeCellValue(7, y, map.get("sfyq"));
}
writer.writeCellValue(0, countRow, "合计");
writer.writeCellValue(2, countRow, NumberUtil.decimalFormat("0.00", cbilltotalprice));
writer.writeCellValue(3, countRow, NumberUtil.decimalFormat("0.00", cprodvalue));
writer.writeCellValue(4, countRow, NumberUtil.decimalFormat("0.00", cwdhjz));
writer.writeCellValue(5, countRow, NumberUtil.decimalFormat("0.00", ccchjz));
// 商品到货明细表
writer.setSheet(1);
writer.writeCellValue(0, 1, "编号:spdhmxb" + dfmt1);
writer.writeCellValue(2, 1, "上报时间:" + dfmt2);
List<Map<String, Object>> list2 = baseMapper.spdhmxb();
if (list2 == null || list2.isEmpty())
return rb.setMsg("商品到货明细表 数据为空!");
int size2 = list2.size();
int countRow2 = size2 + 3;
double cnumber = 0, cptotalPrice = 0, cprodNum = 0, cprodValue = 0, cztnumber = 0, cztprodValue1 = 0, cztprodValue2 = 0;
for (int y = 3; y < countRow2; y++) {
Map<String, Object> map = list2.get(y - 3);
writer.writeCellValue(0, y, map.get("name"));
writer.writeCellValue(1, y, map.get("proCode"));
writer.writeCellValue(2, y, map.get("proName"));
writer.writeCellValue(3, y, map.get("number"));
cnumber = cnumber + ExcelTool.toDouble(map.get("number"));
writer.writeCellValue(4, y, map.get("ptotalPrice"));
cptotalPrice = cptotalPrice + ExcelTool.toDouble(map.get("ptotalPrice"));
writer.writeCellValue(5, y, Math.round(ExcelTool.toDouble(map.get("prodNum"))));
cprodNum = cprodNum + ExcelTool.toDouble(map.get("prodNum"));
writer.writeCellValue(6, y, map.get("prodValue"));
cprodValue = cprodValue + ExcelTool.toDouble(map.get("prodValue"));
writer.writeCellValue(7, y, Math.round(ExcelTool.toDouble(map.get("ztnumber"))));
cztnumber = cztnumber + ExcelTool.toDouble(map.get("ztnumber"));
writer.writeCellValue(8, y, map.get("ztprodValue1"));
cztprodValue1 = cztprodValue1 + ExcelTool.toDouble(map.get("ztprodValue1"));
writer.writeCellValue(9, y, map.get("ztprodValue2"));
cztprodValue2 = cztprodValue2 + ExcelTool.toDouble(map.get("ztprodValue2"));
}
writer.writeCellValue(0, countRow2, "合计");
writer.writeCellValue(3, countRow2, Math.round(cnumber));
writer.writeCellValue(4, countRow2, NumberUtil.decimalFormat("0.00", cptotalPrice));
writer.writeCellValue(5, countRow2, Math.round(cprodNum));
writer.writeCellValue(6, countRow2, NumberUtil.decimalFormat("0.00", cprodValue));
writer.writeCellValue(7, countRow2, Math.round(cztnumber));
writer.writeCellValue(8, countRow2, NumberUtil.decimalFormat("0.00", cztprodValue1));
writer.writeCellValue(9, countRow2, NumberUtil.decimalFormat("0.00", cztprodValue2));
// 订单明细表
writer.setSheet(2);
writer.writeCellValue(0, 1, "编号:ddmxb" + dfmt1);
writer.writeCellValue(2, 1, "数据时间:" + dfmt);
List<Map<String, Object>> list3 = baseMapper.ddmxb();
if (list3 == null || list3.isEmpty())
return rb.setMsg("订单明细表 数据为空!");
int size3 = list3.size();
int countRow3 = size3 + 3;
int xh = 0;
double cbillTotalPrice = 0;
for (int y = 3; y < countRow3; y++) {
Map<String, Object> map = list3.get(y - 3);
xh++;
writer.writeCellValue(0, y, xh);
writer.writeCellValue(1, y, map.get("name"));
writer.writeCellValue(2, y, map.get("code"));
writer.writeCellValue(3, y, map.get("billTotalPrice"));
cbillTotalPrice = cbillTotalPrice + ExcelTool.toDouble(map.get("billTotalPrice"));
writer.writeCellValue(4, y, map.get("billDate"));
writer.writeCellValue(5, y, map.get("arrivalDate"));
}
writer.writeCellValue(1, countRow3, "合计金额");
writer.writeCellValue(3, countRow3, NumberUtil.decimalFormat("0.00", cbillTotalPrice));
// 烟草商品到货明细表
// writer.setSheet(3);
// 烟草订单明细表
// writer.setSheet(4);
writer.flush();
writer.close();
return rb.success().setData(url);
}
} }

9
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java

@ -141,4 +141,13 @@ public class GdInstorageRest {
return rb.success().setData(downUrl); return rb.success().setData(downUrl);
} }
/**
* 创建在途商品的Excel
* @return
*/
@GetMapping("/buildExcelZaiTu")
public ResultBean<String> buildExcelZaiTu() {
return gdInstorageCountService.buildExcelZaiTu();
}
} }

58
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdsales/GdSalesService.java

@ -26,8 +26,12 @@
package com.yxt.supervise.portal.biz.gdsales; package com.yxt.supervise.portal.biz.gdsales;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import cn.hutool.poi.excel.sax.handler.RowHandler; import cn.hutool.poi.excel.sax.handler.RowHandler;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.common.base.config.component.FileUploadComponent; import com.yxt.common.base.config.component.FileUploadComponent;
@ -36,13 +40,17 @@ import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.portal.biz.gdinventory.GdRescategoryProdService; import com.yxt.supervise.portal.biz.gdinventory.GdRescategoryProdService;
import com.yxt.supervise.portal.biz.storeindex.StoreIndexService; import com.yxt.supervise.portal.biz.storeindex.StoreIndexService;
import com.yxt.supervise.portal.biz.storeinfo.StoreInfoService; import com.yxt.supervise.portal.biz.storeinfo.StoreInfoService;
import com.yxt.supervise.portal.extexcel.ExcelTool;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Project: yxt_supervise <br/> * Project: yxt_supervise <br/>
@ -64,6 +72,8 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
private String uploadPath; private String uploadPath;
@Value("${image.url.prefix:http://127.0.0.1:8080/upload/}") @Value("${image.url.prefix:http://127.0.0.1:8080/upload/}")
private String urlPrefix; private String urlPrefix;
@Value("${image.xlsxtmpl:static/upload/}")
private String xlsxtmplPath;
@Autowired @Autowired
private GdSalesGdService gdSalesGdService; private GdSalesGdService gdSalesGdService;
@Autowired @Autowired
@ -202,6 +212,52 @@ public class GdSalesService extends ServiceImpl<GdSalesMapper, GdSales> {
public ResultBean<GdSalesLog> buildExcel(String logId) { public ResultBean<GdSalesLog> buildExcel(String logId) {
return null; ResultBean rb = ResultBean.fireFail();
GdSalesLog gdLog = gdSalesLogService.fetchById(logId);
if (gdLog == null)
return rb.setMsg("上传记录未找到");
String orderDate = gdLog.getOrderDate();
Date curDate = new Date();
String timestr = DateUtil.format(curDate, "yyyyMMddHHmmssSSS");
String dfmt1 = DateUtil.format(curDate, "yyyyMMdd");
String dfmt2 = DateUtil.format(curDate, "yyyy-MM-dd HH:mm");
String dfmt = DateUtil.format(curDate, "yyyy-MM-dd");
String xlsxpath = xlsxtmplPath + "销售汇总日报表.xlsx";
File srcFile = FileUtil.file(xlsxpath);
String tfile = "kchzb/销售汇总日报表" + dfmt + ".xlsx";
String url = urlPrefix + tfile;
String toFileName = uploadPath + tfile;
File file = FileUtil.file(toFileName);
FileUtil.copy(srcFile, file, true);
ExcelWriter writer = ExcelUtil.getWriter(file);
// 销售汇总日报表
writer.setSheet(0);
writer.writeCellValue(0, 1, "编号:xshzrbb" + dfmt1);
writer.writeCellValue(2, 1, "上报时间:" + dfmt2);
// 门店销售明细表
// writer.setSheet(1);
// 门店商品销售明细表
// writer.setSheet(2);
// 烟草门店销售明细表
// writer.setSheet(3);
// 烟草门店商品销售明细表
// writer.setSheet(4);
writer.flush();
writer.close();
gdLog.setFileUrl(url);
gdLog.setOutFilePath(toFileName);
gdSalesLogService.updateById(gdLog);
return rb.success().setData(gdLog);
} }
} }

49
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/purchaserequisition/PurchaseRequisitionRest.java

@ -46,7 +46,7 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign {
@ApiOperation(" ") @ApiOperation(" ")
@RequestMapping(value = "/importBrandSort", method = RequestMethod.POST) @RequestMapping(value = "/importBrandSort", method = RequestMethod.POST)
public ResultBean importBrandSort(@RequestParam("filename") MultipartFile file, public ResultBean importBrandSort(@RequestParam("filename") MultipartFile file,
HttpServletRequest request, HttpServletResponse response){ HttpServletRequest request, HttpServletResponse response) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
String temp = request.getSession().getServletContext() String temp = request.getSession().getServletContext()
.getRealPath(File.separator) .getRealPath(File.separator)
@ -65,32 +65,34 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign {
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
ResultBean<String> r= purchaseRequisitionService.readBrandPeriodSorXls1(in); ResultBean<String> r = purchaseRequisitionService.readBrandPeriodSorXls1(in);
if(!r.getSuccess()){ if (!r.getSuccess()) {
return r; return r;
} }
String code= r.getData(); String code = r.getData();
PurchaseRequisition purchaseRequisition = purchaseRequisitionService.selectByCode(code); PurchaseRequisition purchaseRequisition = purchaseRequisitionService.selectByCode(code);
String sid = purchaseRequisition.getSid(); String sid = purchaseRequisition.getSid();
ResultBean<Object> objectResultBean = fetchDetailsBySid(sid); ResultBean<Object> objectResultBean = fetchDetailsBySid(sid);
return rb.success().setData(objectResultBean.getData()); return rb.success().setData(objectResultBean.getData());
} }
@ApiOperation(" ") @ApiOperation(" ")
@RequestMapping(value = "/supplierAnalysis", method = RequestMethod.POST) @RequestMapping(value = "/supplierAnalysis", method = RequestMethod.POST)
public ResultBean supplierAnalysis(){ public ResultBean supplierAnalysis() {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
try { try {
purchaseRequisitionService. supplierAnalysis(); purchaseRequisitionService.supplierAnalysis();
} catch (ParseException e) { } catch (ParseException e) {
e.printStackTrace(); e.printStackTrace();
return rb.setMsg(e.getMessage());
} }
return rb; return rb.success();
} }
@ApiOperation("") @ApiOperation("")
@RequestMapping(value = "/resetCache", method = RequestMethod.POST) @RequestMapping(value = "/resetCache", method = RequestMethod.POST)
public ResultBean resetCache(){ public ResultBean resetCache() {
log.info("resetCache:{}","/resetCache"); log.info("resetCache:{}", "/resetCache");
GdRescategoryProdService.resetCache(); GdRescategoryProdService.resetCache();
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
return rb; return rb;
@ -108,14 +110,14 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid(); String sid = dto.getSid();
PurchaseRequisition purchaseRequisition = purchaseRequisitionService.selectBySid(sid); PurchaseRequisition purchaseRequisition = purchaseRequisitionService.selectBySid(sid);
BeanUtil.copyProperties(dto,purchaseRequisition); BeanUtil.copyProperties(dto, purchaseRequisition);
purchaseRequisitionService.updateById(purchaseRequisition); purchaseRequisitionService.updateById(purchaseRequisition);
List<PurchaseRequisitionProDto> pros = dto.getPros(); List<PurchaseRequisitionProDto> pros = dto.getPros();
String [] sidArr={sid}; String[] sidArr = {sid};
purchaseRequisitionProService.delByMainSids(sidArr); purchaseRequisitionProService.delByMainSids(sidArr);
for(PurchaseRequisitionProDto p:pros){ for (PurchaseRequisitionProDto p : pros) {
PurchaseRequisitionPro purchaseRequisitionPro = new PurchaseRequisitionPro(); PurchaseRequisitionPro purchaseRequisitionPro = new PurchaseRequisitionPro();
BeanUtil.copyProperties(p,purchaseRequisitionPro); BeanUtil.copyProperties(p, purchaseRequisitionPro);
purchaseRequisitionPro.setMainSid(sid); purchaseRequisitionPro.setMainSid(sid);
purchaseRequisitionPro.setSid(UUID.randomUUID().toString()); purchaseRequisitionPro.setSid(UUID.randomUUID().toString());
purchaseRequisitionProService.insert(purchaseRequisitionPro); purchaseRequisitionProService.insert(purchaseRequisitionPro);
@ -125,7 +127,7 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign {
@Override @Override
public ResultBean delBySids(@RequestBody String[] sids) { public ResultBean delBySids(@RequestBody String[] sids) {
ResultBean rb=ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
int i = purchaseRequisitionService.delBySids(sids); int i = purchaseRequisitionService.delBySids(sids);
return rb.success().setData(i); return rb.success().setData(i);
} }
@ -133,19 +135,20 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign {
@Override @Override
public ResultBean<Object> fetchDetailsBySid(String sid) { public ResultBean<Object> fetchDetailsBySid(String sid) {
ResultBean<Object> resultBean = ResultBean.fireFail(); ResultBean<Object> resultBean = ResultBean.fireFail();
PurchaseRequisitionDetailsVo vo=purchaseRequisitionService.fetchDetailsBySid(sid); PurchaseRequisitionDetailsVo vo = purchaseRequisitionService.fetchDetailsBySid(sid);
List<PurchaseRequisitionProDto> purchaseRequisitionPros = purchaseRequisitionProService.selectByMainSid(sid); List<PurchaseRequisitionProDto> purchaseRequisitionPros = purchaseRequisitionProService.selectByMainSid(sid);
vo.setPros(purchaseRequisitionPros); vo.setPros(purchaseRequisitionPros);
return resultBean.success().setData(vo); return resultBean.success().setData(vo);
} }
@ApiOperation(" ") @ApiOperation(" ")
@RequestMapping(value = "/exportExcel", method = RequestMethod.GET) @RequestMapping(value = "/exportExcel", method = RequestMethod.GET)
public ResultBean exportExcel(HttpServletRequest request, HttpServletResponse response){ public ResultBean exportExcel(HttpServletRequest request, HttpServletResponse response) {
String pc=request.getParameter("code"); String pc = request.getParameter("code");
ResultBean rb = ResultBean.fireFail(); //excel标题 ResultBean rb = ResultBean.fireFail(); //excel标题
//excel文件名 //excel文件名
String fileName = pc+"采购订单商品明细表"+System.currentTimeMillis()+".xls"; String fileName = pc + "采购订单商品明细表" + System.currentTimeMillis() + ".xls";
HSSFWorkbook wb =null;// purchaseRequisitionService.products( pc); HSSFWorkbook wb = null;// purchaseRequisitionService.products( pc);
//响应到客户端 //响应到客户端
try { try {
this.setResponseHeader(response, fileName); this.setResponseHeader(response, fileName);
@ -158,25 +161,27 @@ public class PurchaseRequisitionRest implements PurchaseRequisitionFeign {
} }
return rb; return rb;
} }
public void setResponseHeader(HttpServletResponse response, String fileName) { public void setResponseHeader(HttpServletResponse response, String fileName) {
try { try {
try { try {
fileName = new String(fileName.getBytes(),"ISO8859-1"); fileName = new String(fileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) { } catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
response.setContentType("application/octet-stream;charset=ISO8859-1"); response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName); response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.addHeader("Pargam", "no-cache"); response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache"); response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
} }
@ApiOperation(" ") @ApiOperation(" ")
@RequestMapping(value = "/yb", method = RequestMethod.GET) @RequestMapping(value = "/yb", method = RequestMethod.GET)
public void yb(HttpServletRequest request, HttpServletResponse response){ public void yb(HttpServletRequest request, HttpServletResponse response) {
try { try {
URL resource = ResourceUtil.getResource("cgdd-tmpl/cgdd.xls"); URL resource = ResourceUtil.getResource("cgdd-tmpl/cgdd.xls");
// path是指想要下载的文件的路径 // path是指想要下载的文件的路径

BIN
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/在途商品汇总统计表.xlsx

Binary file not shown.

BIN
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/resources/xlsx-tmpl/销售汇总日报表.xlsx

Binary file not shown.
Loading…
Cancel
Save