ioioio hace 4 años
padre
commit
e1d02eb76b

+ 9 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/entity/ServiceProject.java

@@ -153,4 +153,13 @@ public class ServiceProject  implements Serializable {
 	private BigDecimal Nov;
 	@TableField(exist = false)
 	private BigDecimal Dece;
+
+	//账户名称
+	@TableField(exist = false)
+	private String accountName;
+
+	@TableField(exist = false)
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date payTime;
 }

+ 26 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -40,6 +40,7 @@ import org.springblade.client.goods.enums.GoodsTypeEnum;
 import org.springblade.client.goods.excel.GoodsExcel;
 import org.springblade.client.goods.excel.GoodsImport;
 import org.springblade.client.goods.excel.GoodsInfoExcel;
+import org.springblade.client.goods.excel.GoodsOutExcel;
 import org.springblade.client.goods.service.IGoodsFilesService;
 import org.springblade.client.goods.service.IGoodsPriceService;
 import org.springblade.core.excel.util.ExcelUtil;
@@ -50,6 +51,7 @@ import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -338,4 +340,28 @@ public class GoodsDescController extends BladeController {
 		}
 		return goodsDescService.importGoodsInfo(excelList,false);
 	}
+
+	/** 导出商品*/
+	@GetMapping("/export-out-info")
+	@ApiOperationSupport(order = 9)
+	@ApiOperation(value = "导出模板")
+	public void exportOutInfo(HttpServletResponse response)
+	{
+		List<GoodsOutExcel> list = new ArrayList<>();
+		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		goodsDescLambdaQueryWrapper
+			.orderByAsc(GoodsDesc::getCode)
+			.eq(GoodsDesc::getIsDeleted,0)
+			.eq(GoodsDesc::getTenantId,AuthUtil.getTenantId());
+		List<GoodsDesc> goodsDescs = goodsDescService.list(goodsDescLambdaQueryWrapper);
+		if(CollectionUtils.isNotEmpty(goodsDescs))
+		{
+			goodsDescs.forEach(e->{
+				GoodsOutExcel goodsOutExcel=new GoodsOutExcel();
+				BeanUtils.copyProperties(e,goodsOutExcel);
+				list.add(goodsOutExcel);
+			});
+		}
+		ExcelUtil.export(response, "导出产品信息", "导出数据表", list, GoodsOutExcel.class);
+	}
 }

+ 26 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/excel/GoodsOutExcel.java

@@ -0,0 +1,26 @@
+package org.springblade.client.goods.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class GoodsOutExcel
+{
+	@ExcelProperty("大字")
+	private String code;
+
+	@ExcelProperty("花纹")
+	private String brandItem;
+
+	@ExcelProperty("规格型号")
+	private String typeNo;
+
+	@ExcelProperty("数量")
+	private String number;
+}

+ 57 - 45
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -30,6 +30,7 @@ import springfox.documentation.annotations.ApiIgnore;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import javax.management.relation.RoleResult;
+import java.math.BigDecimal;
 import java.security.Security;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -110,7 +111,10 @@ public class ProjectController {
 				if(!CollectionUtils.isEmpty(projectItemList))
 				{
 					k.setAllowDelete(false);
+					k.setAccountName(projectItemList.get(0).getAccountName());
+					k.setPayTime(projectItemList.get(0).getPayTime());
 				}
+
 			});
 
 		}
@@ -125,6 +129,12 @@ public class ProjectController {
 					.eq(ServiceProjectItem::getPId,e.getId());
 				List<ServiceProjectItem> itemList = serviceProjectItemService.list(lambdaQueryWrapper);
 				e.setItemList(itemList);
+				if(!CollectionUtils.isEmpty(itemList))
+				{
+					e.setAccountName(itemList.get(0).getAccountName());
+					e.setPayTime(itemList.get(0).getPayTime());
+				}
+
 			});
 			List<ServiceProject> collect = records.stream().filter(e -> !CollectionUtils.isEmpty(e.getItemList())).collect(Collectors.toList());
 			iPage.setRecords(collect);
@@ -381,9 +391,12 @@ public class ProjectController {
 	 * 2.0-业绩分析
 	 * */
 	@GetMapping("/performanceAnalysis")
-	public R performanceAnalysis(@RequestParam(name = "flag",  required = true) int flag,@RequestParam(name = "year",  required = false) Long year)
+	public R performanceAnalysis(@RequestParam(name = "flag",  required = true) int flag,@RequestParam(name = "year",  required = false) Long year,
+								 @RequestParam(name = "current", defaultValue = "1") Integer current
+		                        ,@RequestParam(name = "size", defaultValue = "10") Integer size)
 	{
         LambdaQueryWrapper<ServiceProject> serviceProjectLambdaQueryWrapper=new LambdaQueryWrapper<>();
+        Page<ServiceProject> page=new Page<>(current,size);
 		serviceProjectLambdaQueryWrapper
 			.eq(ServiceProject::getIsDeleted,0)
 			.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
@@ -402,68 +415,67 @@ public class ProjectController {
 			{
 				serviceProjectLambdaQueryWrapper.groupBy(ServiceProject::getCorpId);
 			}
-		    List<ServiceProject> serviceProjectList = serviceProjectService.list(serviceProjectLambdaQueryWrapper);
+		IPage<ServiceProject> iPage = serviceProjectService.page(page);
+		List<ServiceProject> serviceProjectList = iPage.getRecords();
 		   	if(!CollectionUtils.isEmpty(serviceProjectList))
 		   	{
 				Long finalYear = year;
-				serviceProjectList.forEach(lt->{
+				iPage.getRecords().forEach(lt->{
+
+					LambdaQueryWrapper<ServiceProject> countWrapper=new LambdaQueryWrapper<>();
+					countWrapper
+						.apply(" year(create_time) = '"+finalYear+"'")
+						.eq(ServiceProject::getIsDeleted,0)
+						.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
+
+					ServiceProject serviceProject=null;
 					if(flag==1)
 					{
-						List<Long> createUserIds = serviceProjectList.stream().map(ServiceProject::getCreateUser).collect(Collectors.toList());
-						createUserIds.forEach(e->{
-							LambdaQueryWrapper<ServiceProject> countCops=new LambdaQueryWrapper<>();
-							countCops
-							    .apply(" year(create_time) = '"+finalYear+"'")
-								.eq(ServiceProject::getIsDeleted,0)
-								.eq(ServiceProject::getCreateUser,e)
-								.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
-							int copsSize = serviceProjectService.list(countCops).stream().map(ServiceProject::getCorpId).distinct().collect(Collectors.toList()).size();
+						    countWrapper.isNotNull(ServiceProject::getCorpId);
+						    countWrapper.eq(ServiceProject::getCreateUser,lt.getCreateUser());
+					     	List<ServiceProject> projects = serviceProjectService.list(countWrapper);
+						    int copsSize = projects.stream().map(ServiceProject::getCorpId).distinct().collect(Collectors.toList()).size();
 							lt.setCountCorp(copsSize);
-						});
-
 
+					     	serviceProject = calculateServiceCharge(lt.getCreateUser(), 1, finalYear);
 					}
 					else if(flag==2)
 					{
-						List<Long> corpsIds = serviceProjectList.stream().map(ServiceProject::getCorpId).collect(Collectors.toList());
-						corpsIds.forEach(e->{
-							LambdaQueryWrapper<ServiceProject> countCreateUser=new LambdaQueryWrapper<>();
-							countCreateUser
-								.apply(" year(create_time) = '"+finalYear+"'")
-								.eq(ServiceProject::getIsDeleted,0)
-								.eq(ServiceProject::getCorpId,e)
-								.eq(ServiceProject::getTenantId,AuthUtil.getTenantId());
-							int createUserSize = serviceProjectService.list(countCreateUser).stream().map(ServiceProject::getCreateUser).distinct().collect(Collectors.toList()).size();
+						    countWrapper.isNotNull(ServiceProject::getCreateUser);
+						    countWrapper.eq(ServiceProject::getCorpId,lt.getCorpId());
+						    List<ServiceProject> projects = serviceProjectService.list(countWrapper);
+						    int createUserSize = projects.stream().map(ServiceProject::getCreateUser).distinct().collect(Collectors.toList()).size();
 						    lt.setCountCreateUser(createUserSize);
-						});
-					}
-					ServiceProject serviceProject=null;
-					if(flag==1)
-					{
-						serviceProject = calculateServiceCharge(lt.getCreateUser(), 1, finalYear);
+
+						    serviceProject = calculateServiceCharge(lt.getCorpId(), 2, finalYear);
 					}
-					else if(flag==2)
+                    //客户名称
+					if(lt.getCorpId()!=null)
 					{
-						serviceProject = calculateServiceCharge(lt.getCorpId(), 2, finalYear);
-					}
-					lt.setJan(serviceProject.getJan());//1
-					lt.setFeb(serviceProject.getFeb());//2
-					lt.setMar(serviceProject.getMar());//3
-					lt.setApr(serviceProject.getApr());//4
-					lt.setMay(serviceProject.getMay());//5
-					lt.setJune(serviceProject.getJune());//6
-					lt.setJuly(serviceProject.getJuly());//7
-					lt.setAug(serviceProject.getAug());//8
-					lt.setSept(serviceProject.getSept());//9
-					lt.setOct(serviceProject.getOct());//10
-					lt.setNov(serviceProject.getNov());//11
-					lt.setDece(serviceProject.getDece());//12
+						R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(lt.getCorpId());
+						if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
+						{
+							lt.setCorpNames(corpMessage.getData().getCname());
+						}
 
+					}
+					lt.setJan(serviceProject==null?BigDecimal.ZERO:serviceProject.getJan());//1
+					lt.setFeb(serviceProject==null?BigDecimal.ZERO:serviceProject.getFeb());//2
+					lt.setMar(serviceProject==null?BigDecimal.ZERO:serviceProject.getMar());//3
+					lt.setApr(serviceProject==null?BigDecimal.ZERO:serviceProject.getApr());//4
+					lt.setMay(serviceProject==null?BigDecimal.ZERO:serviceProject.getMay());//5
+					lt.setJune(serviceProject==null?BigDecimal.ZERO:serviceProject.getJune());//6
+					lt.setJuly(serviceProject==null?BigDecimal.ZERO:serviceProject.getJuly());//7
+					lt.setAug(serviceProject==null?BigDecimal.ZERO:serviceProject.getAug());//8
+					lt.setSept(serviceProject==null?BigDecimal.ZERO:serviceProject.getSept());//9
+					lt.setOct(serviceProject==null?BigDecimal.ZERO:serviceProject.getOct());//10
+					lt.setNov(serviceProject==null?BigDecimal.ZERO:serviceProject.getNov());//11
+					lt.setDece(serviceProject==null?BigDecimal.ZERO:serviceProject.getDece());//12
 				});
 
 
 			}
-		   	return R.data(serviceProjectList);
+		   	return R.data(iPage.getRecords());
 	}
 
     //计算每个月的服务费

+ 22 - 21
blade-service/blade-project/src/main/java/org/springblade/project/mapper/ServiceProjectItemMapper.xml

@@ -61,28 +61,29 @@
     </select>
 
     <select id="calculateServiceCharge" resultType="org.springblade.project.entity.ServiceProject">
-      select
-      sum(case month(create_time) when '1'  then service_charge else 0 end) as Jan,
-      sum(case month(create_time) when '2'  then service_charge else 0 end) as Feb,
-      sum(case month(create_time) when '3'  then service_charge else 0 end) as Mar,
-      sum(case month(create_time) when '4'  then service_charge else 0 end) as Apr,
-      sum(case month(create_time) when '5'  then service_charge else 0 end) as May,
-      sum(case month(create_time) when '6'  then service_charge else 0 end) as June,
-      sum(case month(create_time) when '7'  then service_charge else 0 end) as July,
-      sum(case month(create_time) when '8'  then service_charge else 0 end) as Aug,
-     sum(case month(create_time) when '9'  then service_charge else 0 end) as Sept,
-     sum(case month(create_time) when '10' then service_charge  else 0 end) as Oct,
-     sum(case month(create_time) when '11' then service_charge  else 0 end) as Nov,
-     sum(case month(create_time) when '12' then service_charge  else 0 end) as Dece
-     from service_project
-    where year(create_time)=#{year}
-    AND tenant_id = #{tenantId}
-    <if test="corpId!=null">
-        AND corp_id = #{corpId}
-    </if>
-
+        SELECT
+        sum( CASE MONTH ( b.pay_time ) WHEN '1' THEN b.service_charge ELSE 0 END ) AS Jan,
+        sum( CASE MONTH ( b.pay_time ) WHEN '2' THEN b.service_charge ELSE 0 END ) AS Feb,
+        sum( CASE MONTH ( b.pay_time ) WHEN '3' THEN b.service_charge ELSE 0 END ) AS Mar,
+        sum( CASE MONTH ( b.pay_time ) WHEN '4' THEN b.service_charge ELSE 0 END ) AS Apr,
+        sum( CASE MONTH ( b.pay_time ) WHEN '5' THEN b.service_charge ELSE 0 END ) AS May,
+        sum( CASE MONTH ( b.pay_time ) WHEN '6' THEN b.service_charge ELSE 0 END ) AS June,
+        sum( CASE MONTH ( b.pay_time ) WHEN '7' THEN b.service_charge ELSE 0 END ) AS July,
+        sum( CASE MONTH ( b.pay_time ) WHEN '8' THEN b.service_charge ELSE 0 END ) AS Aug,
+        sum( CASE MONTH ( b.pay_time ) WHEN '9' THEN b.service_charge ELSE 0 END ) AS Sept,
+        sum( CASE MONTH ( b.pay_time ) WHEN '10' THEN b.service_charge ELSE 0 END ) AS Oct,
+        sum( CASE MONTH ( b.pay_time ) WHEN '11' THEN b.service_charge ELSE 0 END ) AS Nov,
+        sum( CASE MONTH ( b.pay_time ) WHEN '12' THEN b.service_charge ELSE 0 END ) AS Dece
+        FROM
+        service_project a ,service_project_item b
+        WHERE b.p_id=a.id
+        AND a.tenant_id = #{tenantId}
+        AND YEAR ( b.pay_time ) = #{year}
+        <if test="corpId!=null">
+            AND a.corp_id = #{corpId}
+        </if>
         <if test="createUser!=null">
-            AND create_user = #{createUser}
+            AND b.create_user = #{createUser}
         </if>
     </select>