Pārlūkot izejas kodu

工时统计导出开发

Signed-off-by: anderx <312518615@qq.com>
anderx 6 gadi atpakaļ
vecāks
revīzija
a17d487503

+ 7 - 1
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -1039,11 +1039,14 @@ from t_order_task a left join business_project b on a.commodity_id=b.id
     left join (select task_id,sum(hours) as hours from t_task_hours group by task_id) g on a.id=g.task_id
     where e.delete_sign !=1 and a.super_id is null
     <if test="fid != null">
-  	and e.finance_id= #{fid,jdbcType=VARCHAR}
+  	and dep.finance_id= #{fid,jdbcType=VARCHAR}
   	</if>
     <if test="name != null">
   	and f.nickname like CONCAT('%',#{name,jdbcType=VARCHAR},'%')
   	</if>
+  	<if test="orderNo != null">
+  	and e.order_no like CONCAT('%',#{orderNo,jdbcType=VARCHAR},'%')
+  	</if>
   	<if test="taskId != null">
   	and a.id= #{taskId,jdbcType=VARCHAR}
   	</if>
@@ -1070,6 +1073,9 @@ from t_order_task a left join business_project b on a.commodity_id=b.id
     <if test="name != null">
   	and f.nickname like CONCAT('%',#{name,jdbcType=VARCHAR},'%')
   	</if>
+  	<if test="orderNo != null">
+  	and e.order_no like CONCAT('%',#{orderNo,jdbcType=VARCHAR},'%')
+  	</if>
   	<if test="taskId != null">
   	and a.id= #{taskId,jdbcType=VARCHAR}
   	</if>

+ 7 - 10
src/main/java/com/goafanti/common/mapper/TTaskHoursMapper.xml

@@ -321,16 +321,13 @@
     where b.super_id=#{id,jdbcType=VARCHAR}
   </select>
   <select id="getTaskHoursData" resultType="com.goafanti.order.bo.TOrderTaskListBo">
-  select  a.id,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,dep.name as depName,
-    a.task_status as taskStatus,f.nickname as userName,ifnull(g.hours,0) as hours,a.commodity_quantity as commodityQuantity,
-    e.contract_no as contractNo,date_format(e.create_time,'%Y-%m-%d %H:%I:%S')as creteTime,date_format(e.sign_time,'%Y-%m-%d')as signTime
-  	from t_order_task a left join business_project b on a.commodity_id=b.id
-  	left join business_category c on b.cid=c.id
-    left join admin d on a.task_receiver=d.id
-    left join department dep on d.department_id=dep.id
-    left join t_order_new e on a.order_no=e.order_no
-    left join user f on e.buyer_id=f.id
-    left join (select task_id,sum(hours) as hours from t_task_hours group by task_id) g on a.id=g.task_id
+  select  a.id,e.contract_no contractNo,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,dep.name as depName,
+    a.task_status as taskStatus,f.nickname as userName,ifnull(g.hours,0) as hours,a.commodity_quantity as commodityQuantity,a.project_status projectStatus,
+    e.contract_no as contractNo,date_format(e.create_time,'%Y-%m-%d %H:%I:%S')as creteTime,date_format(e.sign_time,'%Y-%m-%d')as signTime,
+    date_format(a.task_distribution_time,'%Y-%m-%d %H:%I:%S')taskDistributionTime, date_format(a.task_end_time,'%Y-%m-%d %H:%I:%S')taskEndTime
+  	from t_order_task a left join business_project b on a.commodity_id=b.id left join business_category c on b.cid=c.id
+    left join admin d on a.task_receiver=d.id left join t_order_new e on a.order_no=e.order_no left join department dep on e.order_dep=dep.id  
+    left join user f on e.buyer_id=f.id left join (select tid,aid,sum(hours) as hours from task_hours_count group by tid,aid) g on a.id=g.tid
     where e.delete_sign !=1 and a.super_id is null
     <if test="fid != null">
   	and e.finance_id= #{fid,jdbcType=VARCHAR}

+ 28 - 0
src/main/java/com/goafanti/common/utils/ExportExcelUtil.java

@@ -744,4 +744,32 @@ public class ExportExcelUtil {
 		if(s.equals("10"))return "其他个人";
 		return "";
 	}
+	
+	public static XSSFWorkbook exportTemplateInfoS(String[] comment,String fileName){
+		//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;
+	}
 }

+ 14 - 0
src/main/java/com/goafanti/order/bo/TOrderTaskListBo.java

@@ -17,6 +17,8 @@ public class TOrderTaskListBo {
 	private String creteTime;
 	private String signTime;
 	private Integer alreadyNumber;
+	private String taskDistributionTime;
+	private String taskEndTime;
 	/** 外包部门 */
 	private String outsourceName;
 	public String getContractNo() {
@@ -121,5 +123,17 @@ public class TOrderTaskListBo {
 	public void setOutsourceName(String outsourceName) {
 		this.outsourceName = outsourceName;
 	}
+	public String getTaskDistributionTime() {
+		return taskDistributionTime;
+	}
+	public void setTaskDistributionTime(String taskDistributionTime) {
+		this.taskDistributionTime = taskDistributionTime;
+	}
+	public String getTaskEndTime() {
+		return taskEndTime;
+	}
+	public void setTaskEndTime(String taskEndTime) {
+		this.taskEndTime = taskEndTime;
+	}
 	
 }

+ 12 - 25
src/main/java/com/goafanti/order/controller/OrderProjectApiController.java

@@ -123,11 +123,11 @@ public class OrderProjectApiController extends CertifyApiController {
 	 * 任务工时列表
 	 */
 	@RequestMapping(value="/taskHoursList" ,method = RequestMethod.GET)
-	public Result taskHoursList(String name, String taskId ,String starTime,String endTime ,Integer type,
+	public Result taskHoursList(String name,String orderNo, String taskId ,String starTime,String endTime ,Integer type,
 			Integer pageNo, Integer pageSize){
 		Result res=new Result();
 		//type 1 个人
-		res.setData(orderProjectService.taskHoursList(name,taskId,  starTime, endTime ,type,pageNo, pageSize));
+		res.setData(orderProjectService.taskHoursList(name,orderNo,taskId,  starTime, endTime ,type,pageNo, pageSize));
 		return res;
 	}
 	/**
@@ -232,31 +232,18 @@ public class OrderProjectApiController extends CertifyApiController {
 	 * @throws IOException 
 	 */
 	@RequestMapping(value = "/exportMyTaskList", method = RequestMethod.GET)
-	public Result exportMyTaskList(HttpServletResponse response) throws IOException{
-		 Result res = new Result();
-		 if(StringUtils.isBlank(TokenManager.getAdminId())){
-			 res.getError().add(buildError("", "没有找到数据"));
-			 return res;
-		 }
-		 XSSFWorkbook wb = orderProjectService.exportMyTaskList();//个人列表
-		 if(null == wb){
-			 res.getError().add(buildError("", "没有找到数据"));
-			 return res;
-		 }
-		 String fileName = "我的任务列表  " + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls";
-		 OutputStream out = response.getOutputStream();
-		 response.addHeader("Content-Disposition", "attachment;filename="  + new String(fileName.getBytes(),"iso-8859-1"));  
-         response.setContentType("application/octet-stream;charset=utf-8");  
+	public Result exportMyTaskList(HttpServletResponse response,String name,String orderNo, String taskId, String starTime,String endTime ,Integer type, Integer pageNo,
+			Integer pageSize) throws IOException{
+		Result res=new Result();
 		try {
-			// 返回数据流
-			wb.write(out);
-			out.flush();
-			out.close();
-		} finally {
-			out.flush();
-			out.close();
+			orderProjectService.exportMyTaskList( response, name, orderNo,  taskId,  starTime, endTime , type,  pageNo, pageSize);
+		} catch (Exception e) {
+			res.getError().add(buildError("格式不正确"));
+			e.printStackTrace();
+			return res;
 		}
+     res.data(1); 
+	return res;
 		
-		return res;
 	}
 }

+ 6 - 2
src/main/java/com/goafanti/order/service/OrderProjectService.java

@@ -1,7 +1,10 @@
 package com.goafanti.order.service;
 
+import java.io.IOException;
 import java.util.List;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 
 import com.goafanti.common.model.TTaskHours;
@@ -24,7 +27,7 @@ public interface OrderProjectService {
 
 	int addTaskHours(TTaskHours t);
 	
-	Pagination<TOrderTaskListBo> taskHoursList(String name, String taskId,String starTime,String endTime ,Integer type,
+	Pagination<TOrderTaskListBo> taskHoursList(String name,String orderNo, String taskId,String starTime,String endTime ,Integer type,
 			Integer pageNo, Integer pageSize);
 
 
@@ -39,10 +42,11 @@ public interface OrderProjectService {
 
 	List<TaskProgressBo> selectTaskProgress(Integer tid);
 
-	XSSFWorkbook exportMyTaskList();
 
 	XSSFWorkbook exportTaskHoursListData(String name, String taskId, String startTime, String endTime, Integer type);
 
 	List<TTaskHours> taskHoursDetailsList(String taskId);
+
+	void exportMyTaskList(HttpServletResponse response, String name, String orderNo, String taskId, String starTime, String endTime, Integer type, Integer pageNo, Integer pageSize)throws IOException ;
 	
 }

+ 2 - 29
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -489,7 +489,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
     		String[] comment = {"合同编号","订单编号","客户名称","订单部门","订单类型","下单时间","订单状态","合同额(万元)","已付额(万元)","欠款(万元)","订单负责人","变更类型","变更审核状态","变更提交时间"};
     		String fileName ="开票变更记录表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
     		//type 0 变更
-    		XSSFWorkbook wb =exportTemplateInfoS(comment,"开票变更记录",list);
+    		XSSFWorkbook wb =ExportExcelUtil.exportTemplateInfoS(comment,"开票变更记录");
     		//根据列表编写文档
     		XSSFSheet sheet =wb.getSheetAt(0);
     		for (NewOderCahngeListBo ob : (List<NewOderCahngeListBo>)list) {
@@ -536,34 +536,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		}
 	}
 	
-	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) {

+ 73 - 10
src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java

@@ -1,5 +1,7 @@
 package com.goafanti.order.service.impl;
 
+import java.io.IOException;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -10,8 +12,13 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import javax.servlet.http.HttpServletResponse;
+
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.hssf.record.EOFRecord;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+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.beans.factory.annotation.Value;
@@ -52,12 +59,16 @@ import com.goafanti.common.utils.ExportExcelUtil;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.order.bo.NewOderCahngeListBo;
 import com.goafanti.order.bo.TOrderTaskBo;
 import com.goafanti.order.bo.TOrderTaskDetailBo;
 import com.goafanti.order.bo.TOrderTaskListBo;
 import com.goafanti.order.bo.TaskLogBo;
 import com.goafanti.order.bo.TaskProgressBo;
 import com.goafanti.order.enums.BonusSubject;
+import com.goafanti.order.enums.OrderChangeType;
+import com.goafanti.order.enums.OrderNewState;
+import com.goafanti.order.enums.OrderType;
 import com.goafanti.order.enums.ProcessStatus;
 import com.goafanti.order.enums.ProjectNewStage;
 import com.goafanti.order.service.OrderNewService;
@@ -379,12 +390,13 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 
 	@SuppressWarnings("unchecked")
 	@Override
-	public Pagination<TOrderTaskListBo> taskHoursList(String name, String taskId, String starTime,String endTime ,Integer type, Integer pageNo,
+	public Pagination<TOrderTaskListBo> taskHoursList(String name,String orderNo, String taskId, String starTime,String endTime ,Integer type, Integer pageNo,
 			Integer pageSize) {
 		Map<String, Object> params = new HashMap<String, Object>();
 		if(pageSize==null||pageSize<0)pageSize=10;
 		if(pageNo==null||pageNo<0)pageNo=1;
 		if (StringUtils.isNotBlank(name)) params.put("name", name);
+		if (StringUtils.isNotBlank(orderNo)) params.put("orderNo", orderNo);
 		if (StringUtils.isNotBlank(taskId)) params.put("taskId", taskId);
 		if (StringUtils.isNotBlank(starTime)) params.put("starTime", starTime);
 		if (StringUtils.isNotBlank(endTime)) params.put("endTime", endTime+" 23:59:59");
@@ -462,20 +474,71 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		}
 		return l;
 	}
-	@Override
-	public XSSFWorkbook exportMyTaskList() {
-		List<TOrderTaskListBo> list=taskProgressMapper.selectMyTaskList(TokenManager.getAdminId());
-		if (list==null || list.size()==0) return null;
-		String[] comment = {"任务编号","任务名称","订单编号","业务别类","客户名称(软著数/下证数)","任务状态","项目状态","分配时间","订单部门"};
-		String filePath = uploadPath + "/MyTaskList";
-		XSSFWorkbook wb = ExportExcelUtil.exportSelectMyTaskList(list, comment, filePath);
-		return wb;
-	}
+	
 	@Override
 	public List<TTaskHours> taskHoursDetailsList(String taskId) {
 		String aid=TokenManager.getAdminId();
 		return tTaskHoursMapper.taskHoursDetailsList(taskId,aid);
 	}
+	@Override
+	public void exportMyTaskList(HttpServletResponse response,String name,String orderNo, String taskId, String starTime,String endTime ,Integer type, Integer pageNo,
+			Integer pageSize) throws IOException {
+		OutputStream out = response.getOutputStream();
+		try {
+			@SuppressWarnings("unchecked")
+			List<TOrderTaskListBo> list=(List<TOrderTaskListBo>) taskHoursList( name, orderNo,  taskId,  starTime, endTime , type,  pageNo, pageSize).getList();
+    		String[] comment = {"合同编号 ","订单编号","客户名称","项目负责人 ","业务别类","项目别类","项目名称","项目状态 工时","分配时间","完成时间"};
+    		String fileName ="工时信息记录表" + new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date()) + ".xls";
+    		//type 0 变更
+    		XSSFWorkbook wb =ExportExcelUtil.exportTemplateInfoS(comment,"工时信息");
+    		//根据列表编写文档
+    		XSSFSheet sheet =wb.getSheetAt(0);
+    		for (TOrderTaskListBo ob : (List<TOrderTaskListBo>)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.getUserName(); break;
+    				case "订单部门": o = ob.getDepName(); break;
+    				case "项目负责人": o = ob.getReceiverName(); break;
+    				case "业务别类": o = ob.getCname(); break;
+    			/*	case "项目别类": o = ob.getCname(); 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(); 
+		}
+		
+	}
 	
 	
 }