PurchaseContractServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. package vip.xiaonuo.purchase.service.impl;
  2. import cn.hutool.core.date.DateTime;
  3. import cn.hutool.core.date.DateUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import vip.xiaonuo.purchase.entity.PurchaseContract;
  8. import vip.xiaonuo.purchase.entity.PurchaseOrder;
  9. import vip.xiaonuo.purchase.entity.vo.PurchaseContractVo;
  10. import vip.xiaonuo.purchase.entity.vo.PurchaseOrderMoneyVo;
  11. import vip.xiaonuo.purchase.mapper.PurchaseContractMapper;
  12. import vip.xiaonuo.purchase.param.PurchaseOrderParam;
  13. import vip.xiaonuo.purchase.service.IPurchaseContractService;
  14. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  15. import org.springframework.stereotype.Service;
  16. import java.math.BigDecimal;
  17. import java.math.RoundingMode;
  18. import java.text.DecimalFormat;
  19. import java.text.SimpleDateFormat;
  20. import java.util.ArrayList;
  21. import java.util.Calendar;
  22. import java.util.Date;
  23. import java.util.List;
  24. /**
  25. * <p>
  26. * 采购合同 服务实现类
  27. * </p>
  28. *
  29. * @author author
  30. * @since 2024-11-27
  31. */
  32. @Service
  33. public class PurchaseContractServiceImpl extends ServiceImpl<PurchaseContractMapper, PurchaseContract> implements IPurchaseContractService {
  34. @Autowired
  35. private PurchaseContractMapper contractMapper;
  36. @Override
  37. public List<PurchaseContractVo> getList(PurchaseOrderParam orderParam) {
  38. String orgId = orderParam.getOrgId();
  39. Integer number = orderParam.getNumber();
  40. QueryWrapper<PurchaseContract> queryWrapper = new QueryWrapper<>();
  41. queryWrapper.eq(StringUtils.isNotBlank(orgId), "org_id", orgId).orderByAsc("create_time");
  42. queryWrapper.select(" IFNULL(sum(contract_money),'0') contractMoney,create_time createTime,IFNULL(count(*),'0') materialNumber");
  43. BigDecimal math = new BigDecimal("10000");
  44. List<PurchaseContractVo> list = new ArrayList<>();
  45. if (null == orderParam.getTimeType()||0==orderParam.getTimeType()) {
  46. Calendar calendar = Calendar.getInstance();
  47. if (null == number) {
  48. calendar.add(Calendar.YEAR, -3);
  49. } else {
  50. calendar.add(Calendar.YEAR, -number);
  51. }
  52. queryWrapper.between("create_time", calendar.getTime(), new Date());
  53. if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) {
  54. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')");
  55. } else {
  56. // queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" + "," + orderParam.getOrderType());
  57. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y')" );
  58. }
  59. List<PurchaseContract> contracts = contractMapper.selectList(queryWrapper);
  60. if (contracts.size() != 0) {
  61. SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  62. for (PurchaseContract contract : contracts) {
  63. PurchaseContractVo vo = new PurchaseContractVo();
  64. BigDecimal bd = new BigDecimal(contract.getContractMoney());
  65. bd = bd.divide(math, 2, RoundingMode.HALF_UP);
  66. vo.setContractMoney(bd.toString());
  67. vo.setMaterialNumber(contract.getMaterialNumber());
  68. vo.setTime(sdf.format(contract.getCreateTime()));
  69. list.add(vo);
  70. }
  71. }
  72. } else {
  73. // queryWrapper.ge("create_time", DateUtil.beginOfYear(new Date()));
  74. Calendar calendar = Calendar.getInstance();
  75. if (null == number) {
  76. calendar.add(Calendar.MONTH, -13);
  77. } else {
  78. calendar.add(Calendar.MONTH, -number);
  79. }
  80. queryWrapper.between("create_time", calendar.getTime(), new Date());
  81. if ("".equals(orderParam.getOrderType()) || null == orderParam.getOrderType()) {
  82. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
  83. } else {
  84. queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')");
  85. // queryWrapper.groupBy("DATE_FORMAT(create_time,'%Y-%m')" + "," + orderParam.getOrderType());
  86. }
  87. List<PurchaseContract> contracts = contractMapper.selectList(queryWrapper);
  88. if (contracts.size() != 0) {
  89. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  90. for (PurchaseContract contract : contracts) {
  91. PurchaseContractVo vo = new PurchaseContractVo();
  92. BigDecimal bd = new BigDecimal(contract.getContractMoney());
  93. bd = bd.divide(math, 2, RoundingMode.HALF_UP);
  94. vo.setContractMoney(bd.toString());
  95. vo.setMaterialNumber(contract.getMaterialNumber());
  96. vo.setTime(sdf.format(contract.getCreateTime()));
  97. list.add(vo);
  98. }
  99. }
  100. }
  101. return list;
  102. }
  103. }