|
@@ -0,0 +1,112 @@
|
|
|
+package org.jeecg.modules.report.controller;
|
|
|
+
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import lombok.extern.log4j.Log4j2;
|
|
|
+import org.jeecg.common.api.vo.Result;
|
|
|
+import org.jeecg.common.system.base.controller.JeecgController;
|
|
|
+import org.jeecg.common.util.oConvertUtils;
|
|
|
+import org.jeecg.modules.report.entity.FullSetRate;
|
|
|
+import org.jeecg.modules.report.service.IFullSetRateService;
|
|
|
+import org.jeecg.modules.report.service.impl.FullSetRateServiceImpl;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Controller;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestParam;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+
|
|
|
+@Log4j2
|
|
|
+@RestController
|
|
|
+@RequestMapping("/report/fullSetRate")
|
|
|
+public class FullSetRateController extends JeecgController<FullSetRate, IFullSetRateService> {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private FullSetRateServiceImpl fullSetRateService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 齐套率列表查询
|
|
|
+ * @param fullSetRate
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping(value = "/queryListInfo")
|
|
|
+ public Result<IPage<FullSetRate>> queryListInfo(FullSetRate fullSetRate,
|
|
|
+ @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
|
|
+ @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) throws ParseException {
|
|
|
+
|
|
|
+ Result<IPage<FullSetRate>> result = new Result<IPage<FullSetRate>>();
|
|
|
+ Page<FullSetRate> page = new Page<FullSetRate>(pageNo,pageSize);
|
|
|
+ QueryWrapper<FullSetRate> queryWrapper = new QueryWrapper<>();
|
|
|
+ if(oConvertUtils.isNotEmpty(fullSetRate.getPlanNo())){
|
|
|
+ queryWrapper.like("a.cCode",fullSetRate.getPlanNo());
|
|
|
+ }
|
|
|
+ queryWrapper.groupBy("a.MOID");
|
|
|
+ IPage<FullSetRate> pageList = fullSetRateService.queryListInfo(page,queryWrapper);
|
|
|
+
|
|
|
+ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ //最晚最早出库日期集合
|
|
|
+ List<String> moDeilsIDList = new ArrayList<>();
|
|
|
+
|
|
|
+ //累计准时出库数量
|
|
|
+ BigDecimal cumulativeOnTimeDeliveryQuantity = BigDecimal.ZERO;
|
|
|
+ //累计延迟出库数量
|
|
|
+ BigDecimal cumulativeDelayedDeliveryQty = BigDecimal.ZERO;
|
|
|
+
|
|
|
+ for(FullSetRate li:pageList.getRecords()){
|
|
|
+ //查询委外订单子表与发货或日期信息
|
|
|
+ List<FullSetRate> queryMomain = fullSetRateService.queryMOMain(li.getMoID());
|
|
|
+ //循环子表
|
|
|
+ for(FullSetRate momian:queryMomain){
|
|
|
+ moDeilsIDList.add(momian.getMODetailsID());
|
|
|
+ //查询销售出库单获取累计准时出库数量,获取累计延迟出库数量
|
|
|
+ List<FullSetRate> salesIssueList = fullSetRateService.querySalesIssue(momian.getMODetailsID());
|
|
|
+ for(FullSetRate sa:salesIssueList){
|
|
|
+ Long saTime = sf.parse(sa.getDeliveryDate()).getTime();
|
|
|
+ Long moTime = sf.parse(momian.getDeliveryDate()).getTime();
|
|
|
+
|
|
|
+ //大于就是延迟出库
|
|
|
+ if(saTime > moTime){
|
|
|
+ cumulativeDelayedDeliveryQty = cumulativeDelayedDeliveryQty.add(sa.getCumulativeOnTimeDeliveryQuantity());
|
|
|
+ }
|
|
|
+ //小于等于就是准时出库
|
|
|
+ if(saTime <= moTime){
|
|
|
+ cumulativeOnTimeDeliveryQuantity = cumulativeOnTimeDeliveryQuantity.add(sa.getCumulativeOnTimeDeliveryQuantity());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //累计准时出库数量赋值
|
|
|
+ li.setCumulativeOnTimeDeliveryQuantity(cumulativeOnTimeDeliveryQuantity);
|
|
|
+ //累计延迟出库数量赋值
|
|
|
+ li.setCumulativeDelayedDeliveryQty(cumulativeDelayedDeliveryQty);
|
|
|
+ //预计发货日期(最早)赋值
|
|
|
+ li.setEstimatedDeliveryDate(queryMomain.get(0).getDeliveryDate());
|
|
|
+ //最早出库日期赋值,最晚出库日期赋值
|
|
|
+ List<FullSetRate> dateTimeList = fullSetRateService.querySalesIssueDate(moDeilsIDList);
|
|
|
+ li.setEarliestIssueDate(dateTimeList.get(dateTimeList.size()-1).getDeliveryDate());
|
|
|
+ li.setLatestIssueDate(dateTimeList.get(0).getDeliveryDate());
|
|
|
+ //出库率赋值(销售订单累计出库数量/销售订单数量)
|
|
|
+ BigDecimal deliveryRate = li.getCumulativeIssueQuantity().divide(li.getSalesOrderQuantity(),2,BigDecimal.ROUND_FLOOR);
|
|
|
+ li.setDeliveryRate(deliveryRate);
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ result.setMessage("查询成功!");
|
|
|
+ result.setSuccess(true);
|
|
|
+ result.setResult(pageList);
|
|
|
+
|
|
|
+ return result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+}
|