diff --git a/src/main/java/com/dsic/gj_erp/controller/kban/YdjhKbanController.java b/src/main/java/com/dsic/gj_erp/controller/kban/YdjhKbanController.java new file mode 100644 index 0000000..bf86e1a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/kban/YdjhKbanController.java @@ -0,0 +1,202 @@ +package com.dsic.gj_erp.controller.kban; + + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jhgk.DmYdjh; +import com.dsic.gj_erp.bean.jhgk.dto.RjhDto; +import com.dsic.gj_erp.mapper.jhgk.DmYdjhMapper; +import com.dsic.gj_erp.service.jcsj.EmGcrlService; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.math.BigDecimal; +import java.util.*; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-11-09 + */ +@RestController +@RequestMapping("/YdjhKban") +public class YdjhKbanController { + + @Autowired + private DmYdjhMapper dmYdjhMapper; + + @Autowired + private RedisTemplate redisTemplate; + + private String key="YdjhKban::"; + private String[] months={"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月",}; + + + /** + * 月度计划完成情况 + * @return + */ + @GetMapping("/getYdjhwcl") + public ResultBean getYdjhwcl(){ + List> list=new ArrayList<>(); + for (String month : months) { + Map map=new HashMap<>(); + map.put("month",month); + map.put("wcl",0.0); + list.add(map); + } + + //查询月份 + List dateTimes=DateUtil.rangeToList(DateUtil.beginOfYear(new Date()) + , DateUtil.endOfMonth(new Date()) + , DateField.MONTH); + + for (int i = 0; i < dateTimes.size(); i++) { + String yf=dateTimes.get(i).toString("yyyy/MM"); + DmYdjh ydjh= dmYdjhMapper.selectOne(new QueryWrapper().select( + "CONVERT(decimal(10,2),\n" + + "SUM(CASE WHEN substring(qgfkrq,0,8)='"+yf+"' THEN 1.0 ELSE 0.0 END) /\n" + + "SUM(CASE WHEN substring(qgjhrq,0,8)='"+yf+"' THEN 1.0 ELSE 0.0 END)) as qgcd")); + list.get(i).replace("wcl",ydjh.getQgcd()); + } + return new ResultBean<>(list); + } + + /** + * 本月生产计划完成率 + * @return + */ + @GetMapping("/getByjhwcl") + public ResultBean getByjhwcl(){ + String yf=new DateTime().toString("yyyy/MM"); + DmYdjh ydjh= dmYdjhMapper.selectOne(new QueryWrapper().select( + "CONVERT(decimal(10,2),\n" + + "SUM(CASE WHEN substring(qgfkrq,0,8)='"+yf+"' THEN 1.0 ELSE 0.0 END) /\n" + + "SUM(CASE WHEN substring(qgjhrq,0,8)='"+yf+"' THEN 1.0 ELSE 0.0 END)) as qgcd")); + Map map=new HashMap<>(); + Double wc=ydjh.getQgcd(); + map.put("wcl",wc); + map.put("wwcl",wc>=1?0.0:new BigDecimal(1-wc).setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue()); + return new ResultBean<>(map); + } + + /** + * 本年度加工统计 + * + */ + @GetMapping("/getNdjgtj") + public ResultBean getNdjgtj(){ + String year=new DateTime().toString("yyyy"); + //船号: ;完成率: ; + //月度计划 年度计划 完成 + List list= dmYdjhMapper.selectList(new QueryWrapper().select( + "dc_ch," + + "SUM(CASE WHEN substring(qgfkrq,0,5)='"+year+"' THEN 1.0 ELSE 0.0 END) as hxcd," + + "SUM(CASE WHEN substring(qgjhrq,0,5)='"+year+"' THEN 1.0 ELSE 0.0 END) as qgcd") + .like("qgfkrq",year).or().like("qgjhrq",year) + .groupBy("dc_ch")); + + List> maps=new ArrayList<>(); + for (DmYdjh ydjh : list) { + Map map=new HashMap<>(); + map.put("dc_ch",ydjh.getDcCh()); + if (ydjh.getQgcd()!=0.0){ + BigDecimal wcl=new BigDecimal(ydjh.getHxcd()/ydjh.getQgcd()).setScale(2,BigDecimal.ROUND_HALF_UP); + map.put("wcl",wcl); + + }else { + map.put("wcl",0.0); + } + maps.add(map); + } + return new ResultBean<>(maps); + } + + /** + * 手动录入 + * 钢加公司目标达成率统计 + * @param map 年度钢材加工ndgc 年度计划完成率jhwc + * @return + */ + @PostMapping ("/saveMbdc") + public ResultBean saveMbdc(@RequestBody Map map){ + //年度钢材加工 + Double ndgc= map.get("ndgc"); + //年度计划完成率 + Double jhwc= map.get("jhwc"); + redisTemplate.opsForValue().set(key+"ndgc", ndgc); + redisTemplate.opsForValue().set(key+"jhwc", jhwc); + return new ResultBean<>(); + } + + /** + * 获取 + * 钢加公司目标达成率统计 + * @return 年度钢材加工ndgc 年度计划完成率jhwc + */ + @GetMapping("/getMbdc") + public ResultBean getMbdc(){ + Map map=new HashMap<>(); + //年度钢材加工 + map.put("ndgc",redisTemplate.opsForValue().get(key+"ndgc")); + //年度计划完成lv + map.put("jhwc",redisTemplate.opsForValue().get(key+"jhwc")); + return new ResultBean<>(map); + } + + /** + * 手动录入 + * 钢加公司双周作业任务达成率 + * @param list [{"xh":1,"ch":"g175k-3","wcl":80},{"xh":2,"ch":"g175k-5","wcl":20}] + * @return + */ + @PostMapping ("/saveSzdc") + public ResultBean saveSzdc(@RequestBody List> list){ + redisTemplate.opsForValue().set(key+"szdc", list); + return new ResultBean<>(); + } + + /** + * 获取 + * 钢加公司双周作业任务达成率 + * @return + */ + @GetMapping("/getSzdc") + public ResultBean geSzdc(){ + Object list=redisTemplate.opsForValue().get(key+"szdc"); + return new ResultBean<>(list); + } + + /** + * 手动录入 + * 配送计划达成统计 + * @param list [{"ch":"g175k-3","wcl":80},{"ch":"g175k-5","wcl":20}] + * @return + */ + @PostMapping ("/savePsdc") + public ResultBean savePsdc(@RequestBody List> list){ + redisTemplate.opsForValue().set(key+"psdc", list); + return new ResultBean<>(); + } + + /** + * 获取 + * 配送计划达成统计 + * @return + */ + @GetMapping("/getPsdc") + public ResultBean gePsdc(){ + Object list=redisTemplate.opsForValue().get(key+"psdc"); + return new ResultBean<>(list); + } +} \ No newline at end of file