package vip.xiaonuo.money.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import vip.xiaonuo.common.pojo.CommonResult;
import vip.xiaonuo.money.entity.MoneyCost;
import vip.xiaonuo.money.entity.MoneyProducePrice;
import vip.xiaonuo.money.mapper.MoneyCostMapper;
import vip.xiaonuo.money.param.MoneyInOutPageParam;
import vip.xiaonuo.money.param.MoneyInOutParam;
import vip.xiaonuo.money.service.IMoneyCostService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import vip.xiaonuo.sys.modular.org.entity.SysOrg;
import vip.xiaonuo.sys.modular.org.mapper.SysOrgMapper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
* 财务费用分析 服务实现类
*
*
* @author author
* @since 2024-11-21
*/
@Service
public class MoneyCostServiceImpl extends ServiceImpl implements IMoneyCostService {
@Autowired
private MoneyCostMapper costMapper;
@Autowired
private SysOrgMapper orgMapper;
@Override
public List listCost(MoneyInOutParam outParam) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
calendar.add(Calendar.MONTH, -11);
String currentDateString = sdf.format(calendar.getTime());
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.ge("create_time", currentDateString);
queryWrapper.eq(StringUtils.isNotBlank(outParam.getOrgId()), "org_id", outParam.getOrgId());
queryWrapper.select(" IFNULL(sum(manage),'0') manage,convert(IFNULL(sum(sale),'0'),decimal(10,2)) sale,IFNULL(sum(finance),'0') finance,IFNULL(sum(research),'0') research," +
"create_time createTime");
queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
queryWrapper.orderByAsc("create_time");
return costMapper.selectList(queryWrapper);
}
@Override
public CommonResult add(MoneyCost moneyCost) {
String orgId = moneyCost.getOrgId();
if ("".equals(orgId) || null == orgId) {
return CommonResult.error("公司不能为空");
}
SysOrg sysOrg = orgMapper.selectById(orgId);
moneyCost.setCompany(sysOrg.getName());
costMapper.insert(moneyCost);
return CommonResult.ok();
}
@Override
public CommonResult update(MoneyCost moneyCost) {
costMapper.updateById(moneyCost);
return CommonResult.ok();
}
@Override
public CommonResult delete(Map paramsMap) {
String id = paramsMap.get("id");
costMapper.deleteById(id);
return CommonResult.ok();
}
@Override
public CommonResult page(MoneyInOutPageParam pageParam) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(pageParam.getOrgId()), "org_id", pageParam.getOrgId());
Page page = new Page<>(pageParam.getPageNum(), pageParam.getPageSize());
Page page1 = costMapper.selectPage(page, queryWrapper);
List records = page1.getRecords();
for (MoneyCost record : records) {
record.setFinance(record.getFinance());
record.setManage(record.getManage());
record.setSale(record.getSale());
}
return CommonResult.data(page1);
}
}