|
|
@@ -1,6 +1,9 @@
|
|
|
package com.goafanti.order.service.impl;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
+import java.io.OutputStream;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
@@ -8,6 +11,14 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.UUID;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+
|
|
|
+import org.apache.poi.ss.util.CellRangeAddress;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFCell;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFRow;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFSheet;
|
|
|
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
@@ -35,6 +46,7 @@ import com.goafanti.common.model.TOrderDun;
|
|
|
import com.goafanti.common.model.TOrderNew;
|
|
|
import com.goafanti.common.model.Admin;
|
|
|
import com.goafanti.common.model.NewOrderChange;
|
|
|
+import com.goafanti.common.utils.ExportExcelUtil;
|
|
|
import com.goafanti.common.utils.StringUtils;
|
|
|
import com.goafanti.core.mybatis.BaseMybatisDao;
|
|
|
import com.goafanti.core.mybatis.JDBCIdGenerator;
|
|
|
@@ -42,10 +54,14 @@ import com.goafanti.core.mybatis.page.Pagination;
|
|
|
import com.goafanti.core.shiro.token.TokenManager;
|
|
|
import com.goafanti.order.bo.BillBo;
|
|
|
import com.goafanti.order.bo.InvoiceBo;
|
|
|
+import com.goafanti.order.bo.NewOderCahngeListBo;
|
|
|
import com.goafanti.order.bo.NewOrderChangeBo;
|
|
|
import com.goafanti.order.bo.OrderChangeLogBo;
|
|
|
import com.goafanti.order.bo.TOrderLogBo;
|
|
|
import com.goafanti.order.bo.TOrderTaskBo;
|
|
|
+import com.goafanti.order.enums.OrderChangeType;
|
|
|
+import com.goafanti.order.enums.OrderNewState;
|
|
|
+import com.goafanti.order.enums.OrderType;
|
|
|
import com.goafanti.order.service.OrderChangeService;
|
|
|
import com.goafanti.order.service.OrderNewService;
|
|
|
import com.goafanti.order.service.OrderService;
|
|
|
@@ -373,8 +389,8 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
|
|
|
}
|
|
|
@SuppressWarnings("unchecked")
|
|
|
@Override
|
|
|
- public Pagination<NewOrderChangeBo> selectOrderChangeList(String userName,Integer processState,Integer timeType,String startTime,String endTime,
|
|
|
- String depId,String salesmanName,Integer complete,Integer pageSize, Integer pageNo) {
|
|
|
+ public Pagination<NewOderCahngeListBo> selectOrderChangeList(String userName,Integer processState,Integer timeType,String startTime,String endTime,
|
|
|
+ String depId,String salesmanName,Integer complete,String orderNo, String contractNo,Integer type,Integer pageSize, Integer pageNo) {
|
|
|
Map<String, Object> parameter=new HashMap<String, Object>();
|
|
|
if(pageSize==null||pageSize<0)pageSize=10;
|
|
|
if(pageNo==null||pageNo<0)pageNo=1;
|
|
|
@@ -382,6 +398,9 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
|
|
|
parameter.put("complete", complete==null?0:complete);
|
|
|
if (StringUtils.isNotBlank(userName)) parameter.put("userName", userName);
|
|
|
if (null!=processState) parameter.put("processState", processState);
|
|
|
+ if (StringUtils.isNotBlank(orderNo)) parameter.put("orderNo", orderNo);
|
|
|
+ if (StringUtils.isNotBlank(contractNo)) parameter.put("contractNo", contractNo);
|
|
|
+ if (null!=type) parameter.put("type", type);
|
|
|
if (null!=timeType) parameter.put("timeType", timeType);
|
|
|
if (StringUtils.isNotBlank(startTime)) parameter.put("startTime", startTime);
|
|
|
if (StringUtils.isNotBlank(endTime)) parameter.put("endTime", endTime+" 23:59:59");
|
|
|
@@ -389,7 +408,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
|
|
|
if (StringUtils.isNotBlank(salesmanName)) parameter.put("salesmanName", salesmanName);
|
|
|
parameter.put("aid", TokenManager.getAdminId());
|
|
|
parameter.put("deps", orderService.selectMyDeps());
|
|
|
- Pagination<NewOrderChangeBo> data = (Pagination<NewOrderChangeBo>)findPage("selectOrderChangeList", "selectOrderChangeCount", parameter, pageNo, pageSize);
|
|
|
+ Pagination<NewOderCahngeListBo> data = (Pagination<NewOderCahngeListBo>)findPage("selectOrderChangeList", "selectOrderChangeCount", parameter, pageNo, pageSize);
|
|
|
return data;
|
|
|
}
|
|
|
@Override
|
|
|
@@ -445,7 +464,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
|
|
|
TOrderNew o=tOrderNewMapper.selectByPrimaryKey(nb.getOrderNo());
|
|
|
alist.add(o.getSalesmanId());
|
|
|
newOrderChangeMapper.updateByPrimaryKeySelective(nb);
|
|
|
- AdminListBo a = adminMapper.getDeptNameByAid(TokenManager.getAdminId());
|
|
|
orderNewService.pushGeneralSendNoticeAndEmail(alist,NoticeStatus.ORDER_CHANGE_END.getCode(), o.getOrderNo(), TokenManager.getAdminId());
|
|
|
return 1;
|
|
|
}
|
|
|
@@ -458,6 +476,138 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
|
|
|
map.put("invoice", list2);
|
|
|
return map;
|
|
|
}
|
|
|
+
|
|
|
+ @SuppressWarnings("unchecked")
|
|
|
+ @Override
|
|
|
+ public void exportMyChange(HttpServletResponse response, String userName, Integer processState, Integer timeType,
|
|
|
+ String startTime, String endTime, String depId, String salesmanName, Integer complete,String orderNo, String contractNo,Integer type,Integer pageSize,Integer pageNo) throws IOException {
|
|
|
+ OutputStream out = response.getOutputStream();
|
|
|
+ List<NewOderCahngeListBo>list=(List<NewOderCahngeListBo>) selectOrderChangeList( userName, processState, timeType, startTime, endTime,
|
|
|
+ depId, salesmanName, complete, orderNo, contractNo, type, pageSize, pageNo).getList();
|
|
|
+ try {
|
|
|
+ //设计表头 String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间","订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"}
|
|
|
+ String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间","订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"};
|
|
|
+ String fileName ="开票变更记录表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
|
|
|
+ //type 0 变更
|
|
|
+ XSSFWorkbook wb =exportTemplateInfoS(comment,"开票变更记录",list);
|
|
|
+ //根据列表编写文档
|
|
|
+ XSSFSheet sheet =wb.getSheetAt(0);
|
|
|
+ for (NewOderCahngeListBo ob : (List<NewOderCahngeListBo>)list) {
|
|
|
+ //新增一行
|
|
|
+ XSSFRow r = sheet.createRow(sheet.getLastRowNum()+1);
|
|
|
+ for (int i = 0; i < comment.length; i++) {
|
|
|
+ //当前列的只
|
|
|
+ String o = "";
|
|
|
+ switch (comment[i]) {
|
|
|
+// String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间",
|
|
|
+// "订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"};
|
|
|
+ case "合同编号": o = ob.getContractNo(); break;
|
|
|
+ case "订单编号": o = ob.getOrderNo().toString(); break;
|
|
|
+ case "客户名称": o = ob.getNickname(); break;
|
|
|
+ case "订单部门": o = ob.getDepName(); break;
|
|
|
+ case "订单类型": o = OrderType.getValueByCode(ob.getOrderType()); break;
|
|
|
+ case "下单时间": o = ob.getEstablishTimes(); break;
|
|
|
+ case "订单状态": o = OrderNewState.getValueByCode(ob.getOrderStatus()); break;
|
|
|
+ case "合同额(万元)": o = ob.getTotalAmount(); break;
|
|
|
+ case "已付额(万元)": o = ob.getSettlementAmount(); break;
|
|
|
+ case "欠款(万元)": o = ob.getArrears(); break;
|
|
|
+ case "订单负责人": o = ob.getSalesmanName(); break;
|
|
|
+ case "变更类型": o = OrderChangeType.getValueByCode(ob.getType()); break;
|
|
|
+ case "变更审核状态": o = getProcessState(ob.getProcessState(),ob.getStatus()); break;
|
|
|
+ case "变更提交时间": o = ob.getCreateTimes(); break;
|
|
|
+ default: o = ""; break;
|
|
|
+ }
|
|
|
+ XSSFCell c = r.createCell(i);
|
|
|
+ c.setCellValue(o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //返回名称及参数
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(),"iso-8859-1"));
|
|
|
+ response.setContentType("application/octet-stream;charset=utf-8");
|
|
|
+ // 返回数据流
|
|
|
+ wb.write(out);
|
|
|
+ out.flush();
|
|
|
+ out.close();
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw new BusinessException(new Error("表格生成错误。"));
|
|
|
+ }finally {
|
|
|
+ out.flush();
|
|
|
+ out.close();
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ public static XSSFWorkbook exportTemplateInfoS(String[] comment,String fileName,List<?> list){
|
|
|
+
|
|
|
+ //map 数据 ,comment表头 (列名称)
|
|
|
+ //1,创建一个workbook,对应的是一个excel文件
|
|
|
+ XSSFWorkbook wb = new XSSFWorkbook();
|
|
|
+ //遍历map
|
|
|
+ XSSFSheet sheet = wb.createSheet(fileName);
|
|
|
+ //3。创建一个row
|
|
|
+ XSSFRow row = sheet.createRow(0);
|
|
|
+ //4.创建一个cell
|
|
|
+ XSSFCell cell = row.createCell(0);
|
|
|
+ cell.setCellValue(fileName);
|
|
|
+ XSSFCellStyle style1 = ExportExcelUtil.setCellStyle1(wb);//标题
|
|
|
+ XSSFCellStyle style2 = ExportExcelUtil.setCellStyle2(wb);//正文
|
|
|
+ cell.setCellStyle(style1);
|
|
|
+ //合并列
|
|
|
+ sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, comment.length-1));//合并单元格
|
|
|
+ //设置其他单位格式
|
|
|
+ //创建表头
|
|
|
+ XSSFRow row2 = sheet.createRow(1);
|
|
|
+ for(int i = 0; i < comment.length; i++){
|
|
|
+ sheet.setColumnWidth(i, 3000);//设置列宽
|
|
|
+ XSSFCell c = row2.createCell(i);
|
|
|
+ c.setCellValue(comment[i]);
|
|
|
+ c.setCellStyle(style2);
|
|
|
+ }
|
|
|
+ return wb;
|
|
|
+ }
|
|
|
+ public static String getProcessState(Integer processState,Integer status) {
|
|
|
+ String str="";
|
|
|
+ if (processState == 0) {
|
|
|
+ str = "营销员";
|
|
|
+ } else if (processState == 1) {
|
|
|
+ str = "营销管理员";
|
|
|
+ } else if (processState == 2) {
|
|
|
+ str = "咨询师";
|
|
|
+ } else if (processState == 3) {
|
|
|
+ str = "咨询师经理";
|
|
|
+ } else if (processState == 4) {
|
|
|
+ str = "咨询师总监";
|
|
|
+ } else if (processState == 5) {
|
|
|
+ str = "财务专员";
|
|
|
+ } else if (processState == 6) {
|
|
|
+ str = "财务总监";
|
|
|
+ } else if (processState == 7) {
|
|
|
+ str = "总裁";
|
|
|
+ } else if (processState == 8) {
|
|
|
+ str = "董事长";
|
|
|
+ }
|
|
|
+ String num = "";
|
|
|
+ if (status == 0) {
|
|
|
+ num = "发起";
|
|
|
+ } else if (status == 1) {
|
|
|
+ num = "审核中";
|
|
|
+ } else if (status == 2) {
|
|
|
+ num = "通过";
|
|
|
+ } else if (status == 3) {
|
|
|
+ num = "驳回";
|
|
|
+ return num + "到" + str;
|
|
|
+ } else if (status == 4) {
|
|
|
+ num = "完成";
|
|
|
+ }
|
|
|
+ if (processState == 7 && status == 2) {
|
|
|
+ return "订单变更退票中";
|
|
|
+ } else if (processState == 8 && status == 2) {
|
|
|
+ return "订单变更退票中";
|
|
|
+ } else if (processState >= 7 && status == 4) {
|
|
|
+ return "订单变更已完成";
|
|
|
+ } else {
|
|
|
+ return str + num;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
}
|