|
@@ -0,0 +1,124 @@
|
|
|
|
+package com.management.platform.service.impl;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.management.platform.entity.ExpenseItem;
|
|
|
|
+import com.management.platform.entity.ExpenseSheet;
|
|
|
|
+import com.management.platform.entity.Project;
|
|
|
|
+import com.management.platform.entity.User;
|
|
|
|
+import com.management.platform.mapper.ExpenseItemMapper;
|
|
|
|
+import com.management.platform.mapper.ExpenseSheetMapper;
|
|
|
|
+import com.management.platform.mapper.UserMapper;
|
|
|
|
+import com.management.platform.service.ExpenseItemService;
|
|
|
|
+import com.management.platform.service.ExpenseSheetService;
|
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.management.platform.util.HttpRespMsg;
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * <p>
|
|
|
|
+ * 服务实现类
|
|
|
|
+ * </p>
|
|
|
|
+ *
|
|
|
|
+ * @author Seyason
|
|
|
|
+ * @since 2021-05-17
|
|
|
|
+ */
|
|
|
|
+@Service
|
|
|
|
+@Transactional
|
|
|
|
+public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, ExpenseSheet> implements ExpenseSheetService {
|
|
|
|
+ @Resource
|
|
|
|
+ private UserMapper userMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ExpenseSheetMapper expenseSheetMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private ExpenseItemService expenseItemService;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
|
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
|
+ //检查code不能重复
|
|
|
|
+ Integer num = expenseSheetMapper.selectCount(new QueryWrapper<ExpenseSheet>().eq("code", sheet.getCode()));
|
|
|
|
+ if (num > 0) {
|
|
|
|
+ msg.setError("票据编号已存在");
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+ JSONArray array = JSONArray.parseArray(items);
|
|
|
|
+ sheet.setOwnerId(userId);
|
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
|
+ sheet.setOwnerName(user.getName());
|
|
|
|
+ sheet.setCompanyId(user.getCompanyId());
|
|
|
|
+ expenseSheetMapper.insert(sheet);
|
|
|
|
+ List<ExpenseItem> itemList = new ArrayList<ExpenseItem>();
|
|
|
|
+ for (int i=0;i<array.size(); i++) {
|
|
|
|
+ JSONObject obj = array.getJSONObject(i);
|
|
|
|
+ ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
|
|
|
|
+ expenseItem.setExpenseId(sheet.getId());
|
|
|
|
+ itemList.add(expenseItem);
|
|
|
|
+ }
|
|
|
|
+ expenseItemService.saveBatch(itemList);
|
|
|
|
+
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg delete(Integer id) {
|
|
|
|
+ expenseItemService.remove(new QueryWrapper<ExpenseItem>().eq("expense_id", id));
|
|
|
|
+ expenseSheetMapper.deleteById(id);
|
|
|
|
+ return new HttpRespMsg();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg queryList(ExpenseSheet sheet, Integer pageIndex, Integer pageSize) {
|
|
|
|
+ QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
|
|
|
|
+ HttpRespMsg httpRespMsg = new HttpRespMsg();
|
|
|
|
+ queryWrapper.orderByDesc("id");
|
|
|
|
+ if (sheet.getCode() != null) {
|
|
|
|
+ queryWrapper.eq("code", sheet.getCode());
|
|
|
|
+ }
|
|
|
|
+ if (sheet.getOwnerId() != null) {
|
|
|
|
+ queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
|
|
+ }
|
|
|
|
+ IPage<ExpenseSheet> listIPager = expenseSheetMapper.selectPage(new Page<>(pageIndex, pageSize),
|
|
|
|
+ queryWrapper);
|
|
|
|
+ Long total = listIPager.getTotal();
|
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
|
+ map.put("records", listIPager.getRecords());
|
|
|
|
+ map.put("total", total);
|
|
|
|
+ httpRespMsg.data = map;
|
|
|
|
+ return httpRespMsg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg getNextCode(String userId) {
|
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
|
+ DateTimeFormatter yyyyMMdd = DateTimeFormatter.ofPattern("yyyyMMdd");
|
|
|
|
+ String format = yyyyMMdd.format(LocalDate.now());
|
|
|
|
+ List<ExpenseSheet> list = expenseSheetMapper.selectList(new QueryWrapper<ExpenseSheet>()
|
|
|
|
+ .eq("company_id", user.getCompanyId())
|
|
|
|
+ .like("code", format).orderByDesc("id").last("limit 1"));
|
|
|
|
+ int start = 1;
|
|
|
|
+ if (list.size() > 0) {
|
|
|
|
+ String code = list.get(0).getCode();
|
|
|
|
+ code = code.substring(format.length(), code.length());
|
|
|
|
+ start = Integer.parseInt(code) + 1;
|
|
|
|
+ }
|
|
|
|
+ HttpRespMsg msg = new HttpRespMsg();
|
|
|
|
+ msg.data = format+start;
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+}
|