Bladeren bron

feat(controller): 结算包结算-导出

lixuesong 4 jaren geleden
bovenliggende
commit
181e2cfc6b

+ 56 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/controller/WmScorePackageSettleNoteController.java

@@ -3,7 +3,11 @@ package com.qunzhixinxi.hnqz.admin.controller;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
+import com.qunzhixinxi.hnqz.admin.entity.model.excel.WmSettlePackageSettleExcelModel;
+import com.qunzhixinxi.hnqz.admin.entity.output.WmTaskSettleNoteOutput;
+import com.qunzhixinxi.hnqz.admin.enums.SubjectTypeEnum;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageSettleNoteService;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 import com.qunzhixinxi.hnqz.common.log.annotation.SysLog;
@@ -11,10 +15,19 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
 
 
 /**
@@ -72,6 +85,48 @@ public class WmScorePackageSettleNoteController {
 		return R.ok(wmScorePackageSettleNoteService.getWmTaskForSettlePage(page, note));
 	}
 
+	/**
+	 * 导出结算包结算-结算数据
+	 *
+	 * @param note
+	 * @return
+	 */
+	@ResponseExcel(name = "exportWmTaskForSettle", sheet = "结算包结算数据")
+	@ApiOperation(value = "导出结算包结算-结算数据", notes = "导出结算包结算-结算数据")
+	@GetMapping("/settle/export")
+	public List<WmSettlePackageSettleExcelModel> exportWmTaskForSettle(WmScorePackageSettleNote note) {
+		if (StringUtils.isEmpty(note.getPackageId())) {
+			return null;
+		}
+		if (note.getStartSubTime() != null && note.getEndSubTime() != null) {
+			// 开始时间精确到0:00:00
+			LocalDateTime startSubTime = LocalDateTime.of(note.getStartSubTime().toLocalDate(), LocalTime.MIN);
+			// 结束时间精确到23:59:59.999999999
+			LocalDateTime endSubTime = LocalDateTime.of(note.getEndSubTime().toLocalDate(), LocalTime.MAX);
+			note.setStartSubTime(startSubTime);
+			note.setEndSubTime(endSubTime);
+		}
+		List<WmTaskSettleNoteOutput> list = wmScorePackageSettleNoteService.listWmTaskForSettle(note);
+		// 转换为导出实体
+		List<WmSettlePackageSettleExcelModel> exportList = new ArrayList<>();
+		list.forEach(settleNoteOutput -> {
+			WmSettlePackageSettleExcelModel excelModel = new WmSettlePackageSettleExcelModel();
+			excelModel.setRealName(settleNoteOutput.getRealName());
+			excelModel.setTaskTypeName(settleNoteOutput.getTaskTypeName());
+			excelModel.setXmbm(settleNoteOutput.getXmbm());
+			excelModel.setCreateTime(settleNoteOutput.getCreateTime());
+			excelModel.setSettleAmount(settleNoteOutput.getSettleAmount());
+			excelModel.setCategoryName(settleNoteOutput.getCategoryName());
+			excelModel.setSubType(SubjectTypeEnum.resolve(settleNoteOutput.getSubType()).getDesc());
+			excelModel.setSubTime(settleNoteOutput.getSubTime());
+			excelModel.setNotifyTime(settleNoteOutput.getNotifyTime());
+			excelModel.setSettleNoteStatus(settleNoteOutput.getSettleNoteStatus());
+			exportList.add(excelModel);
+		});
+
+		return exportList;
+	}
+
 	/**
 	 * 特定任务
 	 * 查询生成结算信息

+ 89 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/model/excel/WmSettlePackageSettleExcelModel.java

@@ -0,0 +1,89 @@
+package com.qunzhixinxi.hnqz.admin.entity.model.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 结算包结算-导出excel模型
+ *
+ * @author lixuesong
+ * @date 2021年07月13日 17:07
+ */
+@Data
+public class WmSettlePackageSettleExcelModel {
+
+	/**
+	 * 任务成员
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("任务成员")
+	private String realName;
+
+	/**
+	 * 任务类型
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("任务类型")
+	private String taskTypeName;
+
+	/**
+	 * 项目编号
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("项目编号")
+	private String xmbm;
+
+	/**
+	 * 上传时间
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("上传时间")
+	private LocalDateTime createTime;
+
+	/**
+	 * 预结算金额
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("预结算金额")
+	private BigDecimal settleAmount;
+
+	/**
+	 * 发票类目名称
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("发票类目")
+	private String categoryName;
+
+	/**
+	 * 结算渠道
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("结算渠道")
+	private String subType;
+
+	/**
+	 * 提交时间
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("提交时间")
+	private LocalDateTime subTime;
+
+	/**
+	 * 回调时间
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("结算时间")
+	private LocalDateTime notifyTime;
+
+	/**
+	 * 结算状态
+	 */
+	@ColumnWidth(15)
+	@ExcelProperty("状态")
+	private Integer settleNoteStatus;
+
+}

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/output/WmTaskSettleNoteOutput.java

@@ -39,6 +39,11 @@ public class WmTaskSettleNoteOutput {
 	 */
 	private String taskTypeId;
 
+	/**
+	 * 任务类型名称
+	 */
+	private String taskTypeName;
+
 	/**
 	 * 积分包id
 	 */

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/enums/SubjectTypeEnum.java

@@ -30,7 +30,7 @@ public enum SubjectTypeEnum {
 
 	public static SubjectTypeEnum resolve(String code) {
 		for (SubjectTypeEnum subjectTypeEnum: SubjectTypeEnum.values()){
-			if (subjectTypeEnum.code.equals(code)){
+			if (subjectTypeEnum.code.equals(code) && subjectTypeEnum.name().startsWith("TYPE_")){
 				return subjectTypeEnum;
 			}
 		}

+ 15 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/mapper/WmScorePackageSettleNoteMapper.java

@@ -39,5 +39,20 @@ public interface WmScorePackageSettleNoteMapper extends BaseMapper<WmScorePackag
 
 	IPage<WmTaskSettleNoteOutput> getWmTaskSettleInfoPage(Page page, @Param("query") WmScorePackageSettleNote note);
 
+	/**
+	 * 结算包结算列表(分页)
+	 *
+	 * @param page
+	 * @param note
+	 * @return
+	 */
 	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, @Param("query") WmScorePackageSettleNote note);
+
+	/**
+	 * 结算包结算列表
+	 *
+	 * @param note
+	 * @return
+	 */
+	List<WmTaskSettleNoteOutput> listWmTaskForSettle(@Param("query") WmScorePackageSettleNote note);
 }

+ 17 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/WmScorePackageSettleNoteService.java

@@ -25,6 +25,8 @@ import com.qunzhixinxi.hnqz.admin.entity.input.SettleNoteStatusOutput;
 import com.qunzhixinxi.hnqz.admin.entity.output.WmTaskSettleNoteOutput;
 import com.qunzhixinxi.hnqz.common.core.util.R;
 
+import java.util.List;
+
 /**
  * @author pigx code generator
  * @date 2021-01-26 15:44:49
@@ -33,8 +35,23 @@ public interface WmScorePackageSettleNoteService extends IService<WmScorePackage
 
 	IPage<WmTaskSettleNoteOutput> getWmTaskSettleInfoPage(Page page, WmScorePackageSettleNote note);
 
+	/**
+	 * 结算包结算列表(分页)
+	 *
+	 * @param page
+	 * @param note
+	 * @return
+	 */
 	IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note);
 
+	/**
+	 * 结算包结算列表
+	 *
+	 * @param note
+	 * @return
+	 */
+	List<WmTaskSettleNoteOutput> listWmTaskForSettle(WmScorePackageSettleNote note);
+
 	SettleNoteStatusOutput selectSettleNoteStatus(String packageId);
 
 	R getSettleInfo(WmScorePackageSettleNote note);

+ 18 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -88,11 +88,29 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		return noteMapper.getWmTaskSettleInfoPage(page, note);
 	}
 
+	/**
+	 * 结算包结算列表(分页)
+	 *
+	 * @param page
+	 * @param note
+	 * @return
+	 */
 	@Override
 	public IPage<WmTaskSettleNoteOutput> getWmTaskForSettlePage(Page page, WmScorePackageSettleNote note) {
 		return noteMapper.getWmTaskForSettlePage(page, note);
 	}
 
+	/**
+	 * 结算包结算列表
+	 *
+	 * @param note
+	 * @return
+	 */
+	@Override
+	public List<WmTaskSettleNoteOutput> listWmTaskForSettle(WmScorePackageSettleNote note) {
+		return noteMapper.listWmTaskForSettle(note);
+	}
+
 	@Override
 	public SettleNoteStatusOutput selectSettleNoteStatus(String packageId) {
 		return noteMapper.selectSettleNoteStatus(packageId);

+ 45 - 1
hnqz-upms/hnqz-upms-biz/src/main/resources/mapper/WmScorePackageSettleNoteMapper.xml

@@ -80,6 +80,7 @@
 
 	</select>
 
+	<!-- 结算包结算列表(分页) -->
 	<select id="getWmTaskForSettlePage" resultType="com.qunzhixinxi.hnqz.admin.entity.output.WmTaskSettleNoteOutput">
 		SELECT
 		t.id,
@@ -87,6 +88,7 @@
 		t.create_time,
 		t.score_package_id,
 		t.task_user_id,
+		tt.task_type_name,
 		u.realname real_name,
 		c.temp3 xmbm,
 		e.id noteId,
@@ -104,6 +106,9 @@
 		LEFT JOIN wm_task_content c on t.task_content_id = c.id
 		LEFT JOIN wm_score_package_settle_note e on t.id = e.task_id
 		LEFT JOIN sys_user u on t.task_user_id = u.user_id
+		LEFT JOIN (
+			SELECT id, task_type_name FROM wm_task_type WHERE del_flag=0 AND enable_flag=0 AND task_type_level=1
+		) tt ON tt.id = t.task_type_id
 		WHERE  1= 1
 		<if test="query.userId!=null and query.userId!=''">
 			AND t.task_user_id =#{query.userId}
@@ -120,5 +125,44 @@
 		ORDER BY e.sub_time DESC
 	</select>
 
-
+	<!-- 结算包结算列表 -->
+	<select id="listWmTaskForSettle" resultType="com.qunzhixinxi.hnqz.admin.entity.output.WmTaskSettleNoteOutput">
+		SELECT
+		t.id,
+		t.task_type_id,
+		t.create_time,
+		t.score_package_id,
+		t.task_user_id,
+		u.realname real_name,
+		c.temp3 xmbm,
+		e.id noteId,
+		e.invoice_type,
+		e.sub_type,
+		e.category_name,
+		e.discount,
+		e.stream_id,
+		e.settle_no,
+		e.settle_amount,
+		e.settle_note_status,
+		e.sub_time,
+		e.notify_time
+		FROM wm_task t
+		LEFT JOIN wm_task_content c on t.task_content_id = c.id
+		LEFT JOIN wm_score_package_settle_note e on t.id = e.task_id
+		LEFT JOIN sys_user u on t.task_user_id = u.user_id
+		WHERE  1= 1
+		<if test="query.userId!=null and query.userId!=''">
+			AND t.task_user_id =#{query.userId}
+		</if>
+		<if test="query.packageId!=null and query.packageId!=''">
+			AND t.score_package_id =#{query.packageId}
+		</if>
+		<if test="query.startSubTime != null and query.endSubTime != null">
+			AND e.sub_time BETWEEN #{query.startSubTime} AND #{query.endSubTime}
+		</if>
+		<if test="query.settleNoteStatus != null">
+			AND e.settle_note_status = #{query.settleNoteStatus}
+		</if>
+		ORDER BY e.sub_time DESC
+	</select>
 </mapper>