Browse Source

财务管理导入调整

zouxuan 5 năm trước cách đây
mục cha
commit
3e50275a1a

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/TeacherDao.java

@@ -476,4 +476,12 @@ public interface TeacherDao extends BaseDAO<Integer, Teacher> {
     List<TeacherDefaultSalaryDto> queryTeacherDefaultSalary(@Param("organIdList") String organIdList);
 
     BasicUserDto findUserByPhone(String phone);
+
+    /**
+     * 是否存在该userId
+     * @Author zouxuan
+     * @param userId
+     * @return
+     */
+    Boolean existUser(@Param("userId") Object userId);
 }

+ 13 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentRouteOrder.java

@@ -41,6 +41,11 @@ public class StudentPaymentRouteOrder {
     * 是否承担手续费Y-是 N-否
     */
     private String feeFlag;
+
+    /**
+    * 销售类型   销售收入/服务收入
+    */
+    private String incomeType;
     
     private Integer userId;
     
@@ -82,6 +87,14 @@ public class StudentPaymentRouteOrder {
     
     private Organization organ = new Organization();
 
+	public String getIncomeType() {
+		return incomeType;
+	}
+
+	public void setIncomeType(String incomeType) {
+		this.incomeType = incomeType;
+	}
+
 	public String getGoodsIds() {
 		return goodsIds;
 	}

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentRouteOrderService.java

@@ -9,6 +9,7 @@ import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.common.service.BaseService;
@@ -72,5 +73,5 @@ public interface StudentPaymentRouteOrderService extends BaseService<Long, Stude
 	 * @param file
 	 * @return
 	 */
-    List<StudentPaymentRouteOrder> importRouteOrder(MultipartFile file) throws Exception;
+	HttpResponseResult<List<StudentPaymentRouteOrder>> importRouteOrder(MultipartFile file) throws Exception;
 }

+ 78 - 20
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -8,8 +8,12 @@ import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 import com.alibaba.fastjson.JSONArray;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.*;
 import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.excel.IniFileUtil;
 import com.ym.mec.util.excel.POIUtil;
@@ -22,11 +26,6 @@ import org.springframework.transaction.annotation.Transactional;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.ym.mec.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.SellOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
-import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
@@ -61,6 +60,10 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
     private GoodsService goodsService;
     @Autowired
     private SellOrderService sellOrderService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private TeacherDao teacherDao;
 
     @Override
     public BaseDAO<Long, StudentPaymentRouteOrder> getDAO() {
@@ -312,13 +315,18 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public List<StudentPaymentRouteOrder> importRouteOrder(MultipartFile file) throws Exception{
+	public HttpResponseResult<List<StudentPaymentRouteOrder>> importRouteOrder(MultipartFile file) throws Exception{
+		SysUser sysUser = sysUserFeignService.queryUserInfo();
+		if(sysUser == null || sysUser.getId() == null){
+			throw new BizException("用户信息获取失败");
+		}
 		Map<String, List<Map<String, Object>>> sheetsListMap = POIUtil.importExcel(new ByteArrayInputStream(file.getBytes()), 2, file.getOriginalFilename());
 		InputStream inputStream = new ClassPathResource("columnMapper.ini").getInputStream();
 		Map<String,String> columns = IniFileUtil.readIniFile(inputStream, TemplateTypeEnum.ROUTE_ORDER.getMsg());
 		List<StudentPaymentRouteOrder> studentPaymentRouteOrders = new ArrayList<>();
 		Map<String, Integer> organMap = getMap("organization", "name_", "id_", true, String.class, Integer.class);
 		Map<String, Integer> cooperationOrganMap = getMap("cooperation_organ", "name_", "id_", true, String.class, Integer.class);
+		StringBuffer sb = new StringBuffer();
 		for (String e : sheetsListMap.keySet()) {
 			List<Map<String, Object>> sheet = sheetsListMap.get(e);
 			List<Object> collect = sheet.stream().map(m -> m.get("交易流水号")).collect(Collectors.toList());
@@ -330,24 +338,43 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 				throw new BizException("导入数据错误  重复的交易流水号:{}",list.get(0));
 			}
 
-			valueIsNull: for (Map<String, Object> row : sheet) {
-
+			valueIsNull: for (int j = 0; j < sheet.size(); j++) {
+				int rowNum = j + 2;
+				Map<String, Object> row = sheet.get(j);
 				if (row.size() == 0){
 					continue;
 				}
 				JSONObject objectMap = new JSONObject();
-				for (String s : row.keySet()) {
+				Iterator<String> iterator = row.keySet().iterator();
+				for (int i = 0; i < row.keySet().size(); i++) {
+					String s = iterator.next();
 					if(!columns.containsKey(s)){
 						continue;
 					}
 					String columnValue = columns.get(s);
+					if (columnValue.equals("incomeType")) {
+						if(StringUtils.isEmpty(row.get(s).toString())){
+							sb.append("第" + rowNum).append("行数据导入失败:收入类型不可为空;");
+							continue valueIsNull;
+						} else {
+							objectMap.put("incomeType", row.get(s));
+						}
+					}
 					if (columnValue.equals("transNo")) {
 						if(StringUtils.isEmpty(row.get(s).toString())){
+							sb.append("第" + rowNum).append("行数据导入失败:交易流水号不可为空;");
+							continue valueIsNull;
+						}
+					}
+					if (columnValue.equals("payTime") && StringUtils.isEmpty(row.get(s).toString())) {
+						if(StringUtils.isEmpty(row.get(s).toString())){
+							sb.append("第" + rowNum).append("行数据导入失败:交易日期不可为空;");
 							continue valueIsNull;
 						}
 					}
 					if (columnValue.equals("merNo")) {
 						if(StringUtils.isEmpty(row.get(s).toString())){
+							sb.append("第" + rowNum).append("行数据导入失败:收款账户不可为空;");
 							continue valueIsNull;
 						}else {
 							objectMap.put("merNo", row.get(s));
@@ -357,6 +384,7 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 					if (columnValue.equals("organName") && StringUtils.isNotEmpty(row.get(s).toString())) {
 						Integer integer = organMap.get(row.get(s));
 						if(integer == null){
+							sb.append("第" + rowNum).append("行数据导入失败:分部名称不存在;");
 							continue valueIsNull;
 						}else {
 							objectMap.put("routeOrganId", integer);
@@ -367,26 +395,42 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 						Integer integer = cooperationOrganMap.get(row.get(s));
 						if(integer != null){
 							objectMap.put("schoolId", integer);
+						}else {
+							sb.append("第" + rowNum).append("行数据导入失败:所属学校名称不存在;");
+							continue valueIsNull;
 						}
 						continue;
 					}
-					if (columnValue.equals("payTime") && StringUtils.isNotEmpty(row.get(s).toString())) {
+					if (columnValue.equals("userId") && StringUtils.isNotEmpty(row.get(s).toString())) {
+						Boolean flag = teacherDao.existUser(row.get(s));
+						if(flag){
+							objectMap.put("userId", row.get(s));
+						}else {
+							sb.append("第" + rowNum).append("行数据导入失败:学员编号不存在;");
+							continue valueIsNull;
+						}
+						continue;
+					}
+					if (columnValue.equals("payTime")) {
 						String toString = row.get(s).toString();
-						if(StringUtils.isNotEmpty(toString)){
-							Date date = DateUtil.stringToDate(toString, DateUtil.DEFAULT_PATTERN);
-							if(date == null){
-								throw new BizException("导入数据错误  交易日期格式错误");
-							}else {
-								objectMap.put(columnValue, DateUtil.format(date,DateUtil.DEFAULT_PATTERN));
-							}
+						Date date = DateUtil.stringToDate(toString, DateUtil.DEFAULT_PATTERN);
+						if(date == null){
+							sb.append("第" + rowNum).append("行数据导入失败:交易日期格式错误;");
+							continue valueIsNull;
+						}else {
+							objectMap.put(columnValue, DateUtil.format(date,DateUtil.DEFAULT_PATTERN));
 						}
 						continue;
 					}
 					objectMap.put(columnValue, row.get(s));
 				}
 				StudentPaymentRouteOrder studentPaymentRouteOrder = JSONObject.parseObject(objectMap.toJSONString(),StudentPaymentRouteOrder.class);
-				//是否有销售金额
-				if(studentPaymentRouteOrder.getSaleAmount() != null && studentPaymentRouteOrder.getSaleAmount().longValue() != 0l){
+				//销售收入
+				if("销售收入".equals(studentPaymentRouteOrder.getIncomeType())){
+					if(studentPaymentRouteOrder.getSaleAmount() == null){
+						throw new BizException("导入失败:交易流水号{},收入类型为销售收入时,销售金额不可为空",studentPaymentRouteOrder.getTransNo());
+					}
+					studentPaymentRouteOrder.setServiceAmount(null);
 					String goodsIds = studentPaymentRouteOrder.getGoodsIds();
 					String goodsNums = studentPaymentRouteOrder.getGoodsNums();
 
@@ -416,7 +460,16 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 						}
 					}
 					studentPaymentRouteOrder.setGoodsJson(goodsJSON.toJSONString());
+					//服务收入
+				}else {
+					studentPaymentRouteOrder.setSaleAmount(null);
+					if(studentPaymentRouteOrder.getServiceAmount() == null){
+						throw new BizException("导入失败:交易流水号{},收入类型为服务收入时,服务金额不可为空",studentPaymentRouteOrder.getTransNo());
+					}
 				}
+				studentPaymentRouteOrder.setCreateBy(sysUser.getId());
+				studentPaymentRouteOrder.setUpdateBy(sysUser.getId());
+				studentPaymentRouteOrder.setUserId(sysUser.getId());
 				studentPaymentRouteOrders.add(studentPaymentRouteOrder);
 			}
 		}
@@ -426,8 +479,13 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 				throw new BizException("导入失败:请勿录入重复的交易流水号");
 			}
 			studentPaymentRouteOrderDao.batchAdd(studentPaymentRouteOrders);
+		}else {
+			throw new BizException("导入失败:没有可以录入的数据");
 		}
-		return studentPaymentRouteOrders;
+		HttpResponseResult httpResponseResult = new HttpResponseResult();
+		httpResponseResult.setData(studentPaymentRouteOrders);
+		httpResponseResult.setMsg(sb.toString());
+		return httpResponseResult;
 	}
 
 }

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -294,7 +294,7 @@
         ORDER BY spo.id_ ASC
     </select>
     <select id="countByTransNo" resultType="java.lang.String">
-        SELECT order_no_ FROM student_payment_route_order WHERE trans_no_ IN
+        SELECT trans_no_ FROM student_payment_route_order WHERE trans_no_ IN
         <foreach collection="transNos" open="(" close=")" item="item" separator=",">
             #{item}
         </foreach>

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -1193,4 +1193,7 @@
         gender_,user_type_
         FROM sys_user WHERE phone_ = #{phone}
     </select>
+    <select id="existUser" resultType="java.lang.Boolean">
+        SELECT COUNT(0) FROM student WHERE user_id_ = #{userId} LIMIT 1
+    </select>
 </mapper>

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/ImportController.java

@@ -64,7 +64,7 @@ public class ImportController extends BaseController {
     @PostMapping(value = "routeOrder")
     @PreAuthorize("@pcs.hasPermissions('import/routeOrder')")
     public HttpResponseResult<List<StudentPaymentRouteOrder>> importRouteOrder(@RequestParam("file") MultipartFile file) throws Exception {
-        return succeed(studentPaymentRouteOrderService.importRouteOrder(file));
+        return studentPaymentRouteOrderService.importRouteOrder(file);
     }
 
     @ApiOperation(value = "下载导入模板")

+ 2 - 0
mec-web/src/main/resources/columnMapper.ini

@@ -36,8 +36,10 @@
 
 
 [财务管理导入模板]
+收入类型 = incomeType
 所属分部 = organName
 所属学校 = cooperationOrganName
+学员编号 = userId
 交易流水号 = transNo
 收款账户 = merNo
 交易日期 = payTime

BIN
mec-web/src/main/resources/excelTemplate/财务管理导入模板.xlsx