diff --git a/qomo-kn-cost-manage-start/pom.xml b/qomo-kn-cost-manage-start/pom.xml index ccb8b34..b9de334 100644 --- a/qomo-kn-cost-manage-start/pom.xml +++ b/qomo-kn-cost-manage-start/pom.xml @@ -33,6 +33,8 @@ test + + com.zzsmart.qomo qomo-kn-cost-manage diff --git a/qomo-kn-cost-manage-start/src/main/resources/application-dev.yml b/qomo-kn-cost-manage-start/src/main/resources/application-dev.yml index 32617fa..8fdbcdc 100644 --- a/qomo-kn-cost-manage-start/src/main/resources/application-dev.yml +++ b/qomo-kn-cost-manage-start/src/main/resources/application-dev.yml @@ -235,10 +235,17 @@ spring: # allow-circular-references: true redis: database: 10 - host: localhost + host: 158.158.4.48 port: 6379 + password: 'zzboard' main: allow-circular-references: true +# redis: +# database: 10 +# host: localhost +# port: 6379 +# main: +# allow-circular-references: true #rabbitmq 配置 rabbitmq: @@ -459,4 +466,10 @@ minio: secret-key: qm123456 condaEnv: py310 -tikaServerUrl: http://192.168.50.99:8099/qomo-tika/ \ No newline at end of file +tikaServerUrl: http://192.168.50.99:8099/qomo-tika/ + +sap: + service: + url: http://158.158.5.98:7005/SAP_800/PS/SAP800_DSJ_ZSAP_DSJ_005_PS + user: sap_dsj + password: sapdsjabc123 \ No newline at end of file diff --git a/qomo-kn-cost-manage/pom.xml b/qomo-kn-cost-manage/pom.xml index 827b04f..5c1e7d5 100644 --- a/qomo-kn-cost-manage/pom.xml +++ b/qomo-kn-cost-manage/pom.xml @@ -39,5 +39,10 @@ com.zzsmart.qomo qomo-data-selfReport + + commons-httpclient + commons-httpclient + 3.1 + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostActualController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostActualController.java new file mode 100644 index 0000000..fbd1fd5 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostActualController.java @@ -0,0 +1,248 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostActual; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostActualService; +import com.zzsmart.qomo.kn.cost.manage.vo.CostEffectiveVO; +import com.zzsmart.qomo.kn.cost.manage.vo.LaborDiffVO; +import com.zzsmart.qomo.kn.cost.manage.vo.RealLaborVO; +import com.zzsmart.qomo.kn.cost.manage.vo.RealProduceVO; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_actual + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_actual") +@RestController +@RequestMapping("/cost/appSceneCostActual") +@Slf4j +public class AppSceneCostActualController extends JeecgController { + @Autowired + private IAppSceneCostActualService appSceneCostActualService; + + /** + * 分页列表查询 + * + * @param appSceneCostActual + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_actual-分页列表查询") + @ApiOperation(value="app_scene_cost_actual-分页列表查询", notes="app_scene_cost_actual-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostActual appSceneCostActual, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostActual, req.getParameterMap()); + queryWrapper.orderByDesc("create_time"); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostActualService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostActual + * @return + */ + @AutoLog(value = "app_scene_cost_actual-添加") + @ApiOperation(value="app_scene_cost_actual-添加", notes="app_scene_cost_actual-添加") + //@RequiresPermissions("cost:app_scene_cost_actual:add") + @PostMapping(value = "/add") + public Result add(@RequestBody CostEffectiveVO appSceneCostActual) { + appSceneCostActualService.addCostActual(appSceneCostActual); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostActual + * @return + */ + @AutoLog(value = "app_scene_cost_actual-编辑") + @ApiOperation(value="app_scene_cost_actual-编辑", notes="app_scene_cost_actual-编辑") + @RequiresPermissions("cost:app_scene_cost_actual:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostActual appSceneCostActual) { + appSceneCostActualService.updateById(appSceneCostActual); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_actual-通过id删除") + @ApiOperation(value="app_scene_cost_actual-通过id删除", notes="app_scene_cost_actual-通过id删除") + @RequiresPermissions("cost:app_scene_cost_actual:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostActualService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_actual-批量删除") + @ApiOperation(value="app_scene_cost_actual-批量删除", notes="app_scene_cost_actual-批量删除") + @RequiresPermissions("cost:app_scene_cost_actual:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostActualService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_actual-通过id查询") + @ApiOperation(value="app_scene_cost_actual-通过id查询", notes="app_scene_cost_actual-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostActual appSceneCostActual = appSceneCostActualService.getById(id); + if(appSceneCostActual==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostActual); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostActual + */ + @RequiresPermissions("cost:app_scene_cost_actual:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostActual appSceneCostActual) { + return super.exportXls(request, appSceneCostActual, AppSceneCostActual.class, "app_scene_cost_actual"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_actual:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostActual.class); + } + + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @GetMapping(value = "/queryParent") + public Result> queryParent(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + List vo = appSceneCostActualService.queryParent(resultid,matnr); + return Result.OK(vo); + } + + /* 根据物料号查询标准成本版本及订单号 + * + * @param appSceneCostMiningResult + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_result-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @GetMapping(value = "/queryMatnrDetail") + public Result> queryMatnrDetail(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + List vo = appSceneCostActualService.queryMatnrDetail(resultid,matnr); + return Result.OK(vo); + } + + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @GetMapping(value = "/queryAufnrDetail") + public Result> queryAufnrDetail(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + List vo = appSceneCostActualService.queryAufnrDetail(resultid,matnr); + return Result.OK(vo); + } + + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @GetMapping(value = "/queryProduceDetail") + public Result> queryProduceDetail(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + List vo = appSceneCostActualService.queryProduceDetail(resultid,matnr); + return Result.OK(vo); + } + + + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @RequestMapping(value = "/exportMatnrDetail") + public ModelAndView exportMatnrDetail(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + return appSceneCostActualService.exportMatnrDetail(resultid,matnr); + } + + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @RequestMapping(value = "/exportLaborDetail") + public ModelAndView exportLaborDetail(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + return appSceneCostActualService.exportLaborDetail(resultid,matnr); + } + + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @RequestMapping(value = "/exportProduceDetail") + public ModelAndView exportProduceDetail(@RequestParam(name="resultid", defaultValue="") int resultid, + @RequestParam(name="matnr", defaultValue="") String matnr) { + return appSceneCostActualService.exportProduceDetail(resultid,matnr); + } + + + } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostAufnrMatnrController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostAufnrMatnrController.java new file mode 100644 index 0000000..1e49198 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostAufnrMatnrController.java @@ -0,0 +1,179 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostAufnrMatnr; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostAufnrMatnrService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_aufnr_matnr + * @Author: jeecg-boot + * @Date: 2024-10-05 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_aufnr_matnr") +@RestController +@RequestMapping("/cost/appSceneCostAufnrMatnr") +@Slf4j +public class AppSceneCostAufnrMatnrController extends JeecgController { + @Autowired + private IAppSceneCostAufnrMatnrService appSceneCostAufnrMatnrService; + + /** + * 分页列表查询 + * + * @param appSceneCostAufnrMatnr + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_aufnr_matnr-分页列表查询") + @ApiOperation(value="app_scene_cost_aufnr_matnr-分页列表查询", notes="app_scene_cost_aufnr_matnr-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostAufnrMatnr appSceneCostAufnrMatnr, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostAufnrMatnr, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostAufnrMatnrService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostAufnrMatnr + * @return + */ + @AutoLog(value = "app_scene_cost_aufnr_matnr-添加") + @ApiOperation(value="app_scene_cost_aufnr_matnr-添加", notes="app_scene_cost_aufnr_matnr-添加") + @RequiresPermissions("cost:app_scene_cost_aufnr_matnr:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostAufnrMatnr appSceneCostAufnrMatnr) { + appSceneCostAufnrMatnrService.save(appSceneCostAufnrMatnr); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostAufnrMatnr + * @return + */ + @AutoLog(value = "app_scene_cost_aufnr_matnr-编辑") + @ApiOperation(value="app_scene_cost_aufnr_matnr-编辑", notes="app_scene_cost_aufnr_matnr-编辑") + @RequiresPermissions("cost:app_scene_cost_aufnr_matnr:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostAufnrMatnr appSceneCostAufnrMatnr) { + appSceneCostAufnrMatnrService.updateById(appSceneCostAufnrMatnr); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_aufnr_matnr-通过id删除") + @ApiOperation(value="app_scene_cost_aufnr_matnr-通过id删除", notes="app_scene_cost_aufnr_matnr-通过id删除") + @RequiresPermissions("cost:app_scene_cost_aufnr_matnr:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostAufnrMatnrService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_aufnr_matnr-批量删除") + @ApiOperation(value="app_scene_cost_aufnr_matnr-批量删除", notes="app_scene_cost_aufnr_matnr-批量删除") + @RequiresPermissions("cost:app_scene_cost_aufnr_matnr:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostAufnrMatnrService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_aufnr_matnr-通过id查询") + @ApiOperation(value="app_scene_cost_aufnr_matnr-通过id查询", notes="app_scene_cost_aufnr_matnr-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostAufnrMatnr appSceneCostAufnrMatnr = appSceneCostAufnrMatnrService.getById(id); + if(appSceneCostAufnrMatnr==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostAufnrMatnr); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostAufnrMatnr + */ + @RequiresPermissions("cost:app_scene_cost_aufnr_matnr:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostAufnrMatnr appSceneCostAufnrMatnr) { + return super.exportXls(request, appSceneCostAufnrMatnr, AppSceneCostAufnrMatnr.class, "app_scene_cost_aufnr_matnr"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_aufnr_matnr:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostAufnrMatnr.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostCountController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostCountController.java index 701abbf..4821fb3 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostCountController.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostCountController.java @@ -53,23 +53,24 @@ public class AppSceneCostCountController extends JeecgController> queryPageList(AppSceneCostCount appSceneCostCount, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { + public Result> queryPageList(AppSceneCostCount appSceneCostCount, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) { QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostCount, req.getParameterMap()); queryWrapper.orderByDesc("create_time"); Page page = new Page(pageNo, pageSize); IPage pageList = appSceneCostCountService.page(page, queryWrapper); - IPage pageList1 = new Page<>(); - BeanUtils.copyProperties(pageList, pageList1); - Listlist=new ArrayList<>(); - for(int i=0;i pageList1 = new Page<>(); + //BeanUtils.copyProperties(pageList, pageList1); +// Listlist=new ArrayList<>(); +// for(int i=0;i importExcel(HttpServletRequest request, HttpServletResponse response) { - return super.importExcel(request, response, AppSceneCostCount.class); + //return super.importExcel(request, response, AppSceneCostCount.class); + return appSceneCostCountService.BatchCount(request,response); } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostInvoiceController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostInvoiceController.java new file mode 100644 index 0000000..10b0210 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostInvoiceController.java @@ -0,0 +1,178 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostInvoice; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostInvoiceService; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_invoice + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_invoice") +@RestController +@RequestMapping("/cost/appSceneCostInvoice") +@Slf4j +public class AppSceneCostInvoiceController extends JeecgController { + @Autowired + private IAppSceneCostInvoiceService appSceneCostInvoiceService; + + /** + * 分页列表查询 + * + * @param appSceneCostInvoice + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_invoice-分页列表查询") + @ApiOperation(value="app_scene_cost_invoice-分页列表查询", notes="app_scene_cost_invoice-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostInvoice appSceneCostInvoice, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostInvoice, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostInvoiceService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostInvoice + * @return + */ + @AutoLog(value = "app_scene_cost_invoice-添加") + @ApiOperation(value="app_scene_cost_invoice-添加", notes="app_scene_cost_invoice-添加") + @RequiresPermissions("cost:app_scene_cost_invoice:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostInvoice appSceneCostInvoice) { + appSceneCostInvoiceService.save(appSceneCostInvoice); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostInvoice + * @return + */ + @AutoLog(value = "app_scene_cost_invoice-编辑") + @ApiOperation(value="app_scene_cost_invoice-编辑", notes="app_scene_cost_invoice-编辑") + @RequiresPermissions("cost:app_scene_cost_invoice:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostInvoice appSceneCostInvoice) { + appSceneCostInvoiceService.updateById(appSceneCostInvoice); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_invoice-通过id删除") + @ApiOperation(value="app_scene_cost_invoice-通过id删除", notes="app_scene_cost_invoice-通过id删除") + @RequiresPermissions("cost:app_scene_cost_invoice:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostInvoiceService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_invoice-批量删除") + @ApiOperation(value="app_scene_cost_invoice-批量删除", notes="app_scene_cost_invoice-批量删除") + @RequiresPermissions("cost:app_scene_cost_invoice:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostInvoiceService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_invoice-通过id查询") + @ApiOperation(value="app_scene_cost_invoice-通过id查询", notes="app_scene_cost_invoice-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostInvoice appSceneCostInvoice = appSceneCostInvoiceService.getById(id); + if(appSceneCostInvoice==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostInvoice); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostInvoice + */ + @RequiresPermissions("cost:app_scene_cost_invoice:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostInvoice appSceneCostInvoice) { + return super.exportXls(request, appSceneCostInvoice, AppSceneCostInvoice.class, "app_scene_cost_invoice"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_invoice:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostInvoice.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningAufnrController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningAufnrController.java new file mode 100644 index 0000000..2768afb --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningAufnrController.java @@ -0,0 +1,196 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningAufnr; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningAufnrService; +import com.zzsmart.qomo.kn.cost.manage.vo.AufnrDiff; +import com.zzsmart.qomo.kn.cost.manage.vo.AufnrExportVO; +import com.zzsmart.qomo.kn.cost.manage.vo.LaborDiffVO; +import com.zzsmart.qomo.kn.cost.manage.vo.ProduceDiffVO; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_mining_aufnr + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_mining_aufnr") +@RestController +@RequestMapping("//appSceneCostMiningAufnr") +@Slf4j +public class AppSceneCostMiningAufnrController extends JeecgController { + @Autowired + private IAppSceneCostMiningAufnrService appSceneCostMiningAufnrService; + + /** + * 分页列表查询 + * + * @param appSceneCostMiningAufnr + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_aufnr-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_aufnr-分页列表查询", notes="app_scene_cost_mining_aufnr-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostMiningAufnr appSceneCostMiningAufnr, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostMiningAufnr, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostMiningAufnrService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostMiningAufnr + * @return + */ + @AutoLog(value = "app_scene_cost_mining_aufnr-添加") + @ApiOperation(value="app_scene_cost_mining_aufnr-添加", notes="app_scene_cost_mining_aufnr-添加") + @RequiresPermissions(":app_scene_cost_mining_aufnr:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostMiningAufnr appSceneCostMiningAufnr) { + appSceneCostMiningAufnrService.save(appSceneCostMiningAufnr); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostMiningAufnr + * @return + */ + @AutoLog(value = "app_scene_cost_mining_aufnr-编辑") + @ApiOperation(value="app_scene_cost_mining_aufnr-编辑", notes="app_scene_cost_mining_aufnr-编辑") + @RequiresPermissions(":app_scene_cost_mining_aufnr:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostMiningAufnr appSceneCostMiningAufnr) { + appSceneCostMiningAufnrService.updateById(appSceneCostMiningAufnr); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_mining_aufnr-通过id删除") + @ApiOperation(value="app_scene_cost_mining_aufnr-通过id删除", notes="app_scene_cost_mining_aufnr-通过id删除") + @RequiresPermissions(":app_scene_cost_mining_aufnr:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostMiningAufnrService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_mining_aufnr-批量删除") + @ApiOperation(value="app_scene_cost_mining_aufnr-批量删除", notes="app_scene_cost_mining_aufnr-批量删除") + @RequiresPermissions(":app_scene_cost_mining_aufnr:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostMiningAufnrService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_aufnr-通过id查询") + @ApiOperation(value="app_scene_cost_mining_aufnr-通过id查询", notes="app_scene_cost_mining_aufnr-通过id查询") + @GetMapping(value = "/queryLaborById") + public Result > queryLaborById(@RequestParam(name="id",required=true) int id) { + List appSceneCostMiningAufnr = appSceneCostMiningAufnrService.getLaborByResultid(id); + if(appSceneCostMiningAufnr==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningAufnr); + } + + @ApiOperation(value="app_scene_cost_mining_aufnr-通过id查询", notes="app_scene_cost_mining_aufnr-通过id查询") + @GetMapping(value = "/queryProduceById") + public Result > queryProduceById(@RequestParam(name="id",required=true) int id) { + List appSceneCostMiningAufnr = appSceneCostMiningAufnrService.getProduceByResultid(id); + if(appSceneCostMiningAufnr==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningAufnr); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostMiningAufnr + */ + //@RequiresPermissions(":app_scene_cost_mining_aufnr:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AufnrExportVO appSceneCostMiningAufnr) { + return appSceneCostMiningAufnrService.exportXls2(request, appSceneCostMiningAufnr, AppSceneCostMiningAufnr.class, "人工制费差异"); + } + + + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions(":app_scene_cost_mining_aufnr:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostMiningAufnr.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningDiffController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningDiffController.java new file mode 100644 index 0000000..fb8cfab --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningDiffController.java @@ -0,0 +1,181 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningDiff; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningDiffService; +import com.zzsmart.qomo.kn.cost.manage.vo.MiningDiffTotalVO; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_mining_diff + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_mining_diff") +@RestController +@RequestMapping("//appSceneCostMiningDiff") +@Slf4j +public class AppSceneCostMiningDiffController extends JeecgController { + @Autowired + private IAppSceneCostMiningDiffService appSceneCostMiningDiffService; + + /** + * 分页列表查询 + * + * @param appSceneCostMiningDiff + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_diff-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_diff-分页列表查询", notes="app_scene_cost_mining_diff-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostMiningDiff appSceneCostMiningDiff, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostMiningDiff, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostMiningDiffService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostMiningDiff + * @return + */ + @AutoLog(value = "app_scene_cost_mining_diff-添加") + @ApiOperation(value="app_scene_cost_mining_diff-添加", notes="app_scene_cost_mining_diff-添加") + @RequiresPermissions(":app_scene_cost_mining_diff:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostMiningDiff appSceneCostMiningDiff) { + appSceneCostMiningDiffService.save(appSceneCostMiningDiff); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostMiningDiff + * @return + */ + @AutoLog(value = "app_scene_cost_mining_diff-编辑") + @ApiOperation(value="app_scene_cost_mining_diff-编辑", notes="app_scene_cost_mining_diff-编辑") + @RequiresPermissions(":app_scene_cost_mining_diff:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostMiningDiff appSceneCostMiningDiff) { + appSceneCostMiningDiffService.updateById(appSceneCostMiningDiff); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_mining_diff-通过id删除") + @ApiOperation(value="app_scene_cost_mining_diff-通过id删除", notes="app_scene_cost_mining_diff-通过id删除") + @RequiresPermissions(":app_scene_cost_mining_diff:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostMiningDiffService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_mining_diff-批量删除") + @ApiOperation(value="app_scene_cost_mining_diff-批量删除", notes="app_scene_cost_mining_diff-批量删除") + @RequiresPermissions(":app_scene_cost_mining_diff:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostMiningDiffService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_diff-通过id查询") + @ApiOperation(value="app_scene_cost_mining_diff-通过id查询", notes="app_scene_cost_mining_diff-通过id查询") + @GetMapping(value = "/queryById") + public Result> queryById(@RequestParam(name="id",required=true) int id) { + List appSceneCostMiningDiff = appSceneCostMiningDiffService.getMiningDiffTotalById(id); + if(appSceneCostMiningDiff==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningDiff); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostMiningDiff + */ + @RequiresPermissions(":app_scene_cost_mining_diff:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostMiningDiff appSceneCostMiningDiff) { + return super.exportXls(request, appSceneCostMiningDiff, AppSceneCostMiningDiff.class, "app_scene_cost_mining_diff"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions(":app_scene_cost_mining_diff:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostMiningDiff.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningLaborController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningLaborController.java new file mode 100644 index 0000000..153eecf --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningLaborController.java @@ -0,0 +1,179 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningLabor; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningLaborService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_mining_labor + * @Author: jeecg-boot + * @Date: 2024-11-05 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_mining_labor") +@RestController +@RequestMapping("//appSceneCostMiningLabor") +@Slf4j +public class AppSceneCostMiningLaborController extends JeecgController { + @Autowired + private IAppSceneCostMiningLaborService appSceneCostMiningLaborService; + + /** + * 分页列表查询 + * + * @param appSceneCostMiningLabor + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_labor-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_labor-分页列表查询", notes="app_scene_cost_mining_labor-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostMiningLabor appSceneCostMiningLabor, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostMiningLabor, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostMiningLaborService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostMiningLabor + * @return + */ + @AutoLog(value = "app_scene_cost_mining_labor-添加") + @ApiOperation(value="app_scene_cost_mining_labor-添加", notes="app_scene_cost_mining_labor-添加") + @RequiresPermissions(":app_scene_cost_mining_labor:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostMiningLabor appSceneCostMiningLabor) { + appSceneCostMiningLaborService.save(appSceneCostMiningLabor); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostMiningLabor + * @return + */ + @AutoLog(value = "app_scene_cost_mining_labor-编辑") + @ApiOperation(value="app_scene_cost_mining_labor-编辑", notes="app_scene_cost_mining_labor-编辑") + @RequiresPermissions(":app_scene_cost_mining_labor:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostMiningLabor appSceneCostMiningLabor) { + appSceneCostMiningLaborService.updateById(appSceneCostMiningLabor); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_mining_labor-通过id删除") + @ApiOperation(value="app_scene_cost_mining_labor-通过id删除", notes="app_scene_cost_mining_labor-通过id删除") + @RequiresPermissions(":app_scene_cost_mining_labor:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostMiningLaborService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_mining_labor-批量删除") + @ApiOperation(value="app_scene_cost_mining_labor-批量删除", notes="app_scene_cost_mining_labor-批量删除") + @RequiresPermissions(":app_scene_cost_mining_labor:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostMiningLaborService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_labor-通过id查询") + @ApiOperation(value="app_scene_cost_mining_labor-通过id查询", notes="app_scene_cost_mining_labor-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostMiningLabor appSceneCostMiningLabor = appSceneCostMiningLaborService.getById(id); + if(appSceneCostMiningLabor==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningLabor); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostMiningLabor + */ + @RequiresPermissions(":app_scene_cost_mining_labor:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostMiningLabor appSceneCostMiningLabor) { + return super.exportXls(request, appSceneCostMiningLabor, AppSceneCostMiningLabor.class, "app_scene_cost_mining_labor"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions(":app_scene_cost_mining_labor:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostMiningLabor.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningMaterialController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningMaterialController.java new file mode 100644 index 0000000..6e12098 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningMaterialController.java @@ -0,0 +1,184 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningMaterialService; +import com.zzsmart.qomo.kn.cost.manage.vo.MaterialDiff; +import com.zzsmart.qomo.kn.cost.manage.vo.MiningDiffTotalVO; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_mining_material + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_mining_material") +@RestController +@RequestMapping("//appSceneCostMiningMaterial") +@Slf4j +public class AppSceneCostMiningMaterialController extends JeecgController { + @Autowired + private IAppSceneCostMiningMaterialService appSceneCostMiningMaterialService; + + /** + * 分页列表查询 + * + * @param appSceneCostMiningMaterial + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_material-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_material-分页列表查询", notes="app_scene_cost_mining_material-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostMiningMaterial appSceneCostMiningMaterial, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostMiningMaterial, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostMiningMaterialService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostMiningMaterial + * @return + */ + @AutoLog(value = "app_scene_cost_mining_material-添加") + @ApiOperation(value="app_scene_cost_mining_material-添加", notes="app_scene_cost_mining_material-添加") + @RequiresPermissions(":app_scene_cost_mining_material:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostMiningMaterial appSceneCostMiningMaterial) { + appSceneCostMiningMaterialService.save(appSceneCostMiningMaterial); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostMiningMaterial + * @return + */ + @AutoLog(value = "app_scene_cost_mining_material-编辑") + @ApiOperation(value="app_scene_cost_mining_material-编辑", notes="app_scene_cost_mining_material-编辑") + @RequiresPermissions(":app_scene_cost_mining_material:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostMiningMaterial appSceneCostMiningMaterial) { + appSceneCostMiningMaterialService.updateById(appSceneCostMiningMaterial); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_mining_material-通过id删除") + @ApiOperation(value="app_scene_cost_mining_material-通过id删除", notes="app_scene_cost_mining_material-通过id删除") + @RequiresPermissions(":app_scene_cost_mining_material:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostMiningMaterialService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_mining_material-批量删除") + @ApiOperation(value="app_scene_cost_mining_material-批量删除", notes="app_scene_cost_mining_material-批量删除") + @RequiresPermissions(":app_scene_cost_mining_material:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostMiningMaterialService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_material-通过id查询") + @ApiOperation(value="app_scene_cost_mining_material-通过id查询", notes="app_scene_cost_mining_material-通过id查询") + @GetMapping(value = "/queryById") + public Result> queryById(@RequestParam(name="id",required=true) int id) { + List appSceneCostMiningMaterial = appSceneCostMiningMaterialService.getByResultid(id); + if(appSceneCostMiningMaterial==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningMaterial); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostMiningMaterial + */ + //@RequiresPermissions(":app_scene_cost_mining_material:exportXls") + @GetMapping(value = "/exportXls") + @ApiOperation(value = "cost-材料差异导出", notes = "cost-材料差异导出") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostMiningMaterial appSceneCostMiningMaterial) { + //return super.exportXls(request) + return appSceneCostMiningMaterialService.exportXls2(request, appSceneCostMiningMaterial,AppSceneCostMiningMaterial.class, "材料差异明细"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions(":app_scene_cost_mining_material:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostMiningMaterial.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningReasonController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningReasonController.java new file mode 100644 index 0000000..6035ed4 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningReasonController.java @@ -0,0 +1,179 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningReason; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningReasonService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_mining_reason + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_mining_reason") +@RestController +@RequestMapping("//appSceneCostMiningReason") +@Slf4j +public class AppSceneCostMiningReasonController extends JeecgController { + @Autowired + private IAppSceneCostMiningReasonService appSceneCostMiningReasonService; + + /** + * 分页列表查询 + * + * @param appSceneCostMiningReason + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_reason-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_reason-分页列表查询", notes="app_scene_cost_mining_reason-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostMiningReason appSceneCostMiningReason, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostMiningReason, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostMiningReasonService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostMiningReason + * @return + */ + @AutoLog(value = "app_scene_cost_mining_reason-添加") + @ApiOperation(value="app_scene_cost_mining_reason-添加", notes="app_scene_cost_mining_reason-添加") + @RequiresPermissions(":app_scene_cost_mining_reason:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostMiningReason appSceneCostMiningReason) { + appSceneCostMiningReasonService.save(appSceneCostMiningReason); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostMiningReason + * @return + */ + @AutoLog(value = "app_scene_cost_mining_reason-编辑") + @ApiOperation(value="app_scene_cost_mining_reason-编辑", notes="app_scene_cost_mining_reason-编辑") + @RequiresPermissions(":app_scene_cost_mining_reason:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostMiningReason appSceneCostMiningReason) { + appSceneCostMiningReasonService.updateById(appSceneCostMiningReason); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_mining_reason-通过id删除") + @ApiOperation(value="app_scene_cost_mining_reason-通过id删除", notes="app_scene_cost_mining_reason-通过id删除") + @RequiresPermissions(":app_scene_cost_mining_reason:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostMiningReasonService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_mining_reason-批量删除") + @ApiOperation(value="app_scene_cost_mining_reason-批量删除", notes="app_scene_cost_mining_reason-批量删除") + @RequiresPermissions(":app_scene_cost_mining_reason:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostMiningReasonService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_reason-通过id查询") + @ApiOperation(value="app_scene_cost_mining_reason-通过id查询", notes="app_scene_cost_mining_reason-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostMiningReason appSceneCostMiningReason = appSceneCostMiningReasonService.getById(id); + if(appSceneCostMiningReason==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningReason); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostMiningReason + */ + @RequiresPermissions(":app_scene_cost_mining_reason:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostMiningReason appSceneCostMiningReason) { + return super.exportXls(request, appSceneCostMiningReason, AppSceneCostMiningReason.class, "app_scene_cost_mining_reason"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions(":app_scene_cost_mining_reason:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostMiningReason.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningResultController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningResultController.java new file mode 100644 index 0000000..73e46fd --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostMiningResultController.java @@ -0,0 +1,213 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningResult; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.plugin.CostEffectiveService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostCountService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningResultService; +import com.zzsmart.qomo.kn.cost.manage.vo.MatnrVersionVO; +import com.zzsmart.qomo.kn.cost.manage.vo.MiningResultVO; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_mining_result + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_mining_result") +@RestController +@RequestMapping("//appSceneCostMiningResult") +@Slf4j +public class AppSceneCostMiningResultController extends JeecgController { + @Autowired + private IAppSceneCostMiningResultService appSceneCostMiningResultService; + + @Autowired + private CostEffectiveService costEffectiveService; + + @Autowired + private IAppSceneCostCountService iAppSceneCostCountService; + + /** + * 分页列表查询 + * + * @param appSceneCostMiningResult + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_result-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_result-分页列表查询", notes="app_scene_cost_mining_result-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostMiningResult appSceneCostMiningResult, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostMiningResult, req.getParameterMap()); + queryWrapper.orderByDesc("startdate"); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostMiningResultService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostMiningResult + * @return + */ + @AutoLog(value = "app_scene_cost_mining_result-添加") + @ApiOperation(value="app_scene_cost_mining_result-添加", notes="app_scene_cost_mining_result-添加") + //@RequiresPermissions(":app_scene_cost_mining_result:add") + @PostMapping(value = "/add") + public Result add(@RequestBody MiningResultVO miningResultVO) { + //appSceneCostMiningResultService.save(appSceneCostMiningResult); + costEffectiveService.FindNode(miningResultVO.getMatnr(),miningResultVO.getYmonth(),miningResultVO.getWerks(),miningResultVO.getVersion(),miningResultVO.getAufnr(),"",true); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostMiningResult + * @return + */ + @AutoLog(value = "app_scene_cost_mining_result-编辑") + @ApiOperation(value="app_scene_cost_mining_result-编辑", notes="app_scene_cost_mining_result-编辑") + @RequiresPermissions(":app_scene_cost_mining_result:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostMiningResult appSceneCostMiningResult) { + appSceneCostMiningResultService.updateById(appSceneCostMiningResult); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_mining_result-通过id删除") + @ApiOperation(value="app_scene_cost_mining_result-通过id删除", notes="app_scene_cost_mining_result-通过id删除") + @RequiresPermissions(":app_scene_cost_mining_result:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostMiningResultService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_mining_result-批量删除") + @ApiOperation(value="app_scene_cost_mining_result-批量删除", notes="app_scene_cost_mining_result-批量删除") + @RequiresPermissions(":app_scene_cost_mining_result:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostMiningResultService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_result-通过id查询") + @ApiOperation(value="app_scene_cost_mining_result-通过id查询", notes="app_scene_cost_mining_result-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostMiningResult appSceneCostMiningResult = appSceneCostMiningResultService.getById(id); + if(appSceneCostMiningResult==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostMiningResult); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostMiningResult + */ + @RequiresPermissions(":app_scene_cost_mining_result:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostMiningResult appSceneCostMiningResult) { + return super.exportXls(request, appSceneCostMiningResult, AppSceneCostMiningResult.class, "app_scene_cost_mining_result"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions(":app_scene_cost_mining_result:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostMiningResult.class); + } + + /* 根据物料号查询标准成本版本及订单号 + * + * @param appSceneCostMiningResult + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_mining_result-分页列表查询") + @ApiOperation(value="app_scene_cost_mining_result-版本查询", notes="app_scene_cost_mining_result-分页列表查询") + @GetMapping(value = "/queryVersion") + public Result queryPageList(@RequestParam(name="werks", defaultValue="") String werks, + @RequestParam(name="matnr", defaultValue="") String matnr, + @RequestParam(name="ymonth", defaultValue="") String ymonth, + HttpServletRequest req) { + MatnrVersionVO vo = iAppSceneCostCountService.getVersionsByMatnr(werks,matnr,ymonth); + return Result.OK(vo); + } + + + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapAfruController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapAfruController.java new file mode 100644 index 0000000..925363f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapAfruController.java @@ -0,0 +1,180 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapAfru; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapAfruService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_sap_afru + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_sap_afru") +@RestController +@RequestMapping("/cost/appSceneCostSapAfru") +@Slf4j +public class AppSceneCostSapAfruController extends JeecgController { + @Autowired + private IAppSceneCostSapAfruService appSceneCostSapAfruService; + + /** + * 分页列表查询 + * + * @param appSceneCostSapAfru + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_afru-分页列表查询") + @ApiOperation(value="app_scene_cost_sap_afru-分页列表查询", notes="app_scene_cost_sap_afru-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostSapAfru appSceneCostSapAfru, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostSapAfru, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostSapAfruService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostSapAfru + * @return + */ + @AutoLog(value = "app_scene_cost_sap_afru-添加") + @ApiOperation(value="app_scene_cost_sap_afru-添加", notes="app_scene_cost_sap_afru-添加") + @RequiresPermissions("cost:app_scene_cost_sap_afru:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostSapAfru appSceneCostSapAfru) { + appSceneCostSapAfruService.save(appSceneCostSapAfru); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostSapAfru + * @return + */ + @AutoLog(value = "app_scene_cost_sap_afru-编辑") + @ApiOperation(value="app_scene_cost_sap_afru-编辑", notes="app_scene_cost_sap_afru-编辑") + @RequiresPermissions("cost:app_scene_cost_sap_afru:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostSapAfru appSceneCostSapAfru) { + appSceneCostSapAfruService.updateById(appSceneCostSapAfru); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_sap_afru-通过id删除") + @ApiOperation(value="app_scene_cost_sap_afru-通过id删除", notes="app_scene_cost_sap_afru-通过id删除") + @RequiresPermissions("cost:app_scene_cost_sap_afru:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostSapAfruService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_sap_afru-批量删除") + @ApiOperation(value="app_scene_cost_sap_afru-批量删除", notes="app_scene_cost_sap_afru-批量删除") + @RequiresPermissions("cost:app_scene_cost_sap_afru:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostSapAfruService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_afru-通过id查询") + @ApiOperation(value="app_scene_cost_sap_afru-通过id查询", notes="app_scene_cost_sap_afru-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostSapAfru appSceneCostSapAfru = appSceneCostSapAfruService.getById(id); + if(appSceneCostSapAfru==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostSapAfru); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostSapAfru + */ + @RequiresPermissions("cost:app_scene_cost_sap_afru:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostSapAfru appSceneCostSapAfru) { + return super.exportXls(request, appSceneCostSapAfru, AppSceneCostSapAfru.class, "app_scene_cost_sap_afru"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_sap_afru:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostSapAfru.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapEkpoController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapEkpoController.java new file mode 100644 index 0000000..00f43e8 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapEkpoController.java @@ -0,0 +1,178 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEkpo; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapEkpoService; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_sap_ekpo + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_sap_ekpo") +@RestController +@RequestMapping("/com.zzsmart.qomo.kn.cost.manage/appSceneCostSapEkpo") +@Slf4j +public class AppSceneCostSapEkpoController extends JeecgController { + @Autowired + private IAppSceneCostSapEkpoService appSceneCostSapEkpoService; + + /** + * 分页列表查询 + * + * @param appSceneCostSapEkpo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_ekpo-分页列表查询") + @ApiOperation(value="app_scene_cost_sap_ekpo-分页列表查询", notes="app_scene_cost_sap_ekpo-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostSapEkpo appSceneCostSapEkpo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostSapEkpo, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostSapEkpoService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostSapEkpo + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ekpo-添加") + @ApiOperation(value="app_scene_cost_sap_ekpo-添加", notes="app_scene_cost_sap_ekpo-添加") + @RequiresPermissions("com.zzsmart.qomo.kn.cost.manage:app_scene_cost_sap_ekpo:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostSapEkpo appSceneCostSapEkpo) { + appSceneCostSapEkpoService.save(appSceneCostSapEkpo); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostSapEkpo + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ekpo-编辑") + @ApiOperation(value="app_scene_cost_sap_ekpo-编辑", notes="app_scene_cost_sap_ekpo-编辑") + @RequiresPermissions("com.zzsmart.qomo.kn.cost.manage:app_scene_cost_sap_ekpo:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostSapEkpo appSceneCostSapEkpo) { + appSceneCostSapEkpoService.updateById(appSceneCostSapEkpo); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ekpo-通过id删除") + @ApiOperation(value="app_scene_cost_sap_ekpo-通过id删除", notes="app_scene_cost_sap_ekpo-通过id删除") + @RequiresPermissions("com.zzsmart.qomo.kn.cost.manage:app_scene_cost_sap_ekpo:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostSapEkpoService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ekpo-批量删除") + @ApiOperation(value="app_scene_cost_sap_ekpo-批量删除", notes="app_scene_cost_sap_ekpo-批量删除") + @RequiresPermissions("com.zzsmart.qomo.kn.cost.manage:app_scene_cost_sap_ekpo:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostSapEkpoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_ekpo-通过id查询") + @ApiOperation(value="app_scene_cost_sap_ekpo-通过id查询", notes="app_scene_cost_sap_ekpo-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostSapEkpo appSceneCostSapEkpo = appSceneCostSapEkpoService.getById(id); + if(appSceneCostSapEkpo==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostSapEkpo); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostSapEkpo + */ + @RequiresPermissions("com.zzsmart.qomo.kn.cost.manage:app_scene_cost_sap_ekpo:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostSapEkpo appSceneCostSapEkpo) { + return super.exportXls(request, appSceneCostSapEkpo, AppSceneCostSapEkpo.class, "app_scene_cost_sap_ekpo"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("com.zzsmart.qomo.kn.cost.manage:app_scene_cost_sap_ekpo:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostSapEkpo.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapHourRateController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapHourRateController.java new file mode 100644 index 0000000..b290538 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapHourRateController.java @@ -0,0 +1,180 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapHourRate; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapHourRateService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_sap_hour_rate + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_sap_hour_rate") +@RestController +@RequestMapping("/cost/appSceneCostSapHourRate") +@Slf4j +public class AppSceneCostSapHourRateController extends JeecgController { + @Autowired + private IAppSceneCostSapHourRateService appSceneCostSapHourRateService; + + /** + * 分页列表查询 + * + * @param appSceneCostSapHourRate + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_hour_rate-分页列表查询") + @ApiOperation(value="app_scene_cost_sap_hour_rate-分页列表查询", notes="app_scene_cost_sap_hour_rate-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostSapHourRate appSceneCostSapHourRate, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostSapHourRate, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostSapHourRateService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostSapHourRate + * @return + */ + @AutoLog(value = "app_scene_cost_sap_hour_rate-添加") + @ApiOperation(value="app_scene_cost_sap_hour_rate-添加", notes="app_scene_cost_sap_hour_rate-添加") + @RequiresPermissions("cost:app_scene_cost_sap_hour_rate:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostSapHourRate appSceneCostSapHourRate) { + appSceneCostSapHourRateService.save(appSceneCostSapHourRate); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostSapHourRate + * @return + */ + @AutoLog(value = "app_scene_cost_sap_hour_rate-编辑") + @ApiOperation(value="app_scene_cost_sap_hour_rate-编辑", notes="app_scene_cost_sap_hour_rate-编辑") + @RequiresPermissions("cost:app_scene_cost_sap_hour_rate:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostSapHourRate appSceneCostSapHourRate) { + appSceneCostSapHourRateService.updateById(appSceneCostSapHourRate); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_sap_hour_rate-通过id删除") + @ApiOperation(value="app_scene_cost_sap_hour_rate-通过id删除", notes="app_scene_cost_sap_hour_rate-通过id删除") + @RequiresPermissions("cost:app_scene_cost_sap_hour_rate:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostSapHourRateService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_sap_hour_rate-批量删除") + @ApiOperation(value="app_scene_cost_sap_hour_rate-批量删除", notes="app_scene_cost_sap_hour_rate-批量删除") + @RequiresPermissions("cost:app_scene_cost_sap_hour_rate:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostSapHourRateService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_hour_rate-通过id查询") + @ApiOperation(value="app_scene_cost_sap_hour_rate-通过id查询", notes="app_scene_cost_sap_hour_rate-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostSapHourRate appSceneCostSapHourRate = appSceneCostSapHourRateService.getById(id); + if(appSceneCostSapHourRate==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostSapHourRate); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostSapHourRate + */ + @RequiresPermissions("cost:app_scene_cost_sap_hour_rate:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostSapHourRate appSceneCostSapHourRate) { + return super.exportXls(request, appSceneCostSapHourRate, AppSceneCostSapHourRate.class, "app_scene_cost_sap_hour_rate"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_sap_hour_rate:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostSapHourRate.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapZcorcController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapZcorcController.java new file mode 100644 index 0000000..4b9244f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapZcorcController.java @@ -0,0 +1,220 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.plugin.CostEffectiveService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostActualService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapZcorcService; +import com.zzsmart.qomo.kn.cost.manage.vo.CostEffectiveVO; +import org.checkerframework.checker.units.qual.A; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_sap_zcorc + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_sap_zcorc") +@RestController +@RequestMapping("/cost/appSceneCostSapZcorc") +@Slf4j +public class AppSceneCostSapZcorcController extends JeecgController { + @Autowired + private IAppSceneCostSapZcorcService appSceneCostSapZcorcService; + + @Autowired + private CostEffectiveService costEffectiveService; + + @Autowired + private IAppSceneCostActualService iAppSceneCostActualService; + + /** + * 分页列表查询 + * + * @param appSceneCostSapZcorc + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_zcorc-分页列表查询") + @ApiOperation(value="app_scene_cost_sap_zcorc-分页列表查询", notes="app_scene_cost_sap_zcorc-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostSapZcorc appSceneCostSapZcorc, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostSapZcorc, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostSapZcorcService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostSapZcorc + * @return + */ + @AutoLog(value = "app_scene_cost_sap_zcorc-添加") + @ApiOperation(value="app_scene_cost_sap_zcorc-添加", notes="app_scene_cost_sap_zcorc-添加") + //@RequiresPermissions("cost:app_scene_cost_sap_zcorc:add") + @PostMapping(value = "/add") + public Result add(@RequestBody CostEffectiveVO costEffectiveVO) { + //appSceneCostSapZcorcService.save(appSceneCostSapZcorc); + costEffectiveService.loadsapservice(costEffectiveVO.getWerks(),costEffectiveVO.getMatnr(),"",costEffectiveVO.getYmonth()); + return Result.OK("添加成功!"); + } + + /** + * 添加 + * + * @param appSceneCostSapZcorc + * @return + */ + @AutoLog(value = "app_scene_cost_sap_zcorc-添加") + @ApiOperation(value="app_scene_cost_sap_zcorc-添加", notes="app_scene_cost_sap_zcorc-添加") + //@RequiresPermissions("cost:app_scene_cost_sap_zcorc:add") + @GetMapping(value = "/fix") + public Result fix(@RequestParam(name="version") String version) { + //appSceneCostSapZcorcService.save(appSceneCostSapZcorc); + costEffectiveService.fixversion(version); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostSapZcorc + * @return + */ + @AutoLog(value = "app_scene_cost_sap_zcorc-编辑") + @ApiOperation(value="app_scene_cost_sap_zcorc-编辑", notes="app_scene_cost_sap_zcorc-编辑") + @RequiresPermissions("cost:app_scene_cost_sap_zcorc:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostSapZcorc appSceneCostSapZcorc) { + appSceneCostSapZcorcService.updateById(appSceneCostSapZcorc); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_sap_zcorc-通过id删除") + @ApiOperation(value="app_scene_cost_sap_zcorc-通过id删除", notes="app_scene_cost_sap_zcorc-通过id删除") + @RequiresPermissions("cost:app_scene_cost_sap_zcorc:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostSapZcorcService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_sap_zcorc-批量删除") + @ApiOperation(value="app_scene_cost_sap_zcorc-批量删除", notes="app_scene_cost_sap_zcorc-批量删除") + @RequiresPermissions("cost:app_scene_cost_sap_zcorc:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostSapZcorcService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_zcorc-通过id查询") + @ApiOperation(value="app_scene_cost_sap_zcorc-通过id查询", notes="app_scene_cost_sap_zcorc-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostSapZcorc appSceneCostSapZcorc = appSceneCostSapZcorcService.getById(id); + if(appSceneCostSapZcorc==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostSapZcorc); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostSapZcorc + */ + //@RequiresPermissions("cost:app_scene_cost_sap_zcorc:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostSapZcorc appSceneCostSapZcorc) { + String exportFields="layer,rlayer,matnr,werks,aufnr,ebeln,ebelp,ppsmng,idnrk,kmonth,menge,unmng,kst001,kst003,kst005,kstsum"; + return super.exportXls(request, appSceneCostSapZcorc, AppSceneCostSapZcorc.class, "实际成本",exportFields); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostSapZcorc + */ + //@RequiresPermissions("cost:app_scene_cost_sap_zcorc:exportXls") + @RequestMapping(value = "/exportmatnrXls") + public ModelAndView exportmatnrXls(HttpServletRequest request, AppSceneCostSapZcorc appSceneCostSapZcorc) { + String exportFields="layer,rlayer,matnr,werks,aufnr,ebeln,ebelp,ppsmng,idnrk,kmonth,menge,unmng,kstsum,rkst000,aufnrmng,aufnrnum,pnum,avgnum,avgprice,totalprice,"; + return super.exportXls(request, appSceneCostSapZcorc, AppSceneCostSapZcorc.class, "实际成本",exportFields); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_sap_zcorc:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostSapZcorc.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapZtmmx004Controller.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapZtmmx004Controller.java new file mode 100644 index 0000000..0db24ec --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostSapZtmmx004Controller.java @@ -0,0 +1,179 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZtmmx004; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapZtmmx004Service; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_sap_ztmmx004 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_sap_ztmmx004") +@RestController +@RequestMapping("/cost/appSceneCostSapZtmmx004") +@Slf4j +public class AppSceneCostSapZtmmx004Controller extends JeecgController { + @Autowired + private IAppSceneCostSapZtmmx004Service appSceneCostSapZtmmx004Service; + + /** + * 分页列表查询 + * + * @param appSceneCostSapZtmmx004 + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_ztmmx004-分页列表查询") + @ApiOperation(value="app_scene_cost_sap_ztmmx004-分页列表查询", notes="app_scene_cost_sap_ztmmx004-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostSapZtmmx004 appSceneCostSapZtmmx004, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostSapZtmmx004, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostSapZtmmx004Service.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostSapZtmmx004 + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ztmmx004-添加") + @ApiOperation(value="app_scene_cost_sap_ztmmx004-添加", notes="app_scene_cost_sap_ztmmx004-添加") + @RequiresPermissions("cost:app_scene_cost_sap_ztmmx004:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostSapZtmmx004 appSceneCostSapZtmmx004) { + appSceneCostSapZtmmx004Service.save(appSceneCostSapZtmmx004); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostSapZtmmx004 + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ztmmx004-编辑") + @ApiOperation(value="app_scene_cost_sap_ztmmx004-编辑", notes="app_scene_cost_sap_ztmmx004-编辑") + @RequiresPermissions("cost:app_scene_cost_sap_ztmmx004:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostSapZtmmx004 appSceneCostSapZtmmx004) { + appSceneCostSapZtmmx004Service.updateById(appSceneCostSapZtmmx004); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ztmmx004-通过id删除") + @ApiOperation(value="app_scene_cost_sap_ztmmx004-通过id删除", notes="app_scene_cost_sap_ztmmx004-通过id删除") + @RequiresPermissions("cost:app_scene_cost_sap_ztmmx004:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostSapZtmmx004Service.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_sap_ztmmx004-批量删除") + @ApiOperation(value="app_scene_cost_sap_ztmmx004-批量删除", notes="app_scene_cost_sap_ztmmx004-批量删除") + @RequiresPermissions("cost:app_scene_cost_sap_ztmmx004:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostSapZtmmx004Service.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_sap_ztmmx004-通过id查询") + @ApiOperation(value="app_scene_cost_sap_ztmmx004-通过id查询", notes="app_scene_cost_sap_ztmmx004-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostSapZtmmx004 appSceneCostSapZtmmx004 = appSceneCostSapZtmmx004Service.getById(id); + if(appSceneCostSapZtmmx004==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostSapZtmmx004); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostSapZtmmx004 + */ + @RequiresPermissions("cost:app_scene_cost_sap_ztmmx004:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostSapZtmmx004 appSceneCostSapZtmmx004) { + return super.exportXls(request, appSceneCostSapZtmmx004, AppSceneCostSapZtmmx004.class, "app_scene_cost_sap_ztmmx004"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_sap_ztmmx004:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostSapZtmmx004.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardBomController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardBomController.java new file mode 100644 index 0000000..356f4bf --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardBomController.java @@ -0,0 +1,179 @@ +package com.zzsmart.qomo.kn.cost.manage.controller; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardBom; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostStandardBomService; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; + +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.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: app_scene_cost_standard_bom + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Api(tags="app_scene_cost_standard_bom") +@RestController +@RequestMapping("/cost/appSceneCostStandardBom") +@Slf4j +public class AppSceneCostStandardBomController extends JeecgController { + @Autowired + private IAppSceneCostStandardBomService appSceneCostStandardBomService; + + /** + * 分页列表查询 + * + * @param appSceneCostStandardBom + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "app_scene_cost_standard_bom-分页列表查询") + @ApiOperation(value="app_scene_cost_standard_bom-分页列表查询", notes="app_scene_cost_standard_bom-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AppSceneCostStandardBom appSceneCostStandardBom, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostStandardBom, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = appSceneCostStandardBomService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param appSceneCostStandardBom + * @return + */ + @AutoLog(value = "app_scene_cost_standard_bom-添加") + @ApiOperation(value="app_scene_cost_standard_bom-添加", notes="app_scene_cost_standard_bom-添加") + @RequiresPermissions("cost:app_scene_cost_standard_bom:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AppSceneCostStandardBom appSceneCostStandardBom) { + appSceneCostStandardBomService.save(appSceneCostStandardBom); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param appSceneCostStandardBom + * @return + */ + @AutoLog(value = "app_scene_cost_standard_bom-编辑") + @ApiOperation(value="app_scene_cost_standard_bom-编辑", notes="app_scene_cost_standard_bom-编辑") + @RequiresPermissions("cost:app_scene_cost_standard_bom:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AppSceneCostStandardBom appSceneCostStandardBom) { + appSceneCostStandardBomService.updateById(appSceneCostStandardBom); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "app_scene_cost_standard_bom-通过id删除") + @ApiOperation(value="app_scene_cost_standard_bom-通过id删除", notes="app_scene_cost_standard_bom-通过id删除") + @RequiresPermissions("cost:app_scene_cost_standard_bom:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + appSceneCostStandardBomService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "app_scene_cost_standard_bom-批量删除") + @ApiOperation(value="app_scene_cost_standard_bom-批量删除", notes="app_scene_cost_standard_bom-批量删除") + @RequiresPermissions("cost:app_scene_cost_standard_bom:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.appSceneCostStandardBomService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "app_scene_cost_standard_bom-通过id查询") + @ApiOperation(value="app_scene_cost_standard_bom-通过id查询", notes="app_scene_cost_standard_bom-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AppSceneCostStandardBom appSceneCostStandardBom = appSceneCostStandardBomService.getById(id); + if(appSceneCostStandardBom==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(appSceneCostStandardBom); + } + + /** + * 导出excel + * + * @param request + * @param appSceneCostStandardBom + */ + @RequiresPermissions("cost:app_scene_cost_standard_bom:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AppSceneCostStandardBom appSceneCostStandardBom) { + return super.exportXls(request, appSceneCostStandardBom, AppSceneCostStandardBom.class, "app_scene_cost_standard_bom"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("cost:app_scene_cost_standard_bom:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AppSceneCostStandardBom.class); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardResultController.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardResultController.java index 3caab25..4dfc6ea 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardResultController.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/controller/AppSceneCostStandardResultController.java @@ -56,7 +56,7 @@ public class AppSceneCostStandardResultController extends JeecgController queryWrapper = QueryGenerator.initQueryWrapper(appSceneCostStandardResult, req.getParameterMap()); - queryWrapper.orderByAsc("layer"); + queryWrapper.orderByAsc("id"); Page page = new Page(pageNo, pageSize); IPage pageList = appSceneCostStandardResultService.page(page, queryWrapper); // IPage newpageList = new Page<>(); @@ -182,8 +182,8 @@ public class AppSceneCostStandardResultController extends JeecgController { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostAufnrMatnrMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostAufnrMatnrMapper.java new file mode 100644 index 0000000..36592ab --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostAufnrMatnrMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostAufnrMatnr; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_aufnr_matnr + * @Author: jeecg-boot + * @Date: 2024-10-05 + * @Version: V1.0 + */ +public interface AppSceneCostAufnrMatnrMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostBomRelevancyMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostBomRelevancyMapper.java index d8e0676..81556a4 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostBomRelevancyMapper.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostBomRelevancyMapper.java @@ -17,16 +17,16 @@ import java.util.List; */ public interface AppSceneCostBomRelevancyMapper extends BaseMapper { @Select("WITH RECURSIVE BOM_Tree AS (\n" + - " SELECT matnr, idnrk, menge/bmeng as menge,1.000000 as pmenge,1.000000 as topmenge, 1 AS depth\n" + + " SELECT werks,matnr, idnrk, menge/bmeng as menge,1.000000 as pmenge,menge/bmeng as topmenge, 1 AS depth,cast( ROW_NUMBER() OVER (partition by matnr ORDER BY posnr ) AS CHAR ) AS layer,'00000000000000000000' as player \n" + " FROM app_scene_cost_bom_relevancy\n" + - " WHERE matnr = #{parentId}\n" + + " WHERE matnr = #{parentId} and werks= #{werk}\n" + " UNION ALL\n" + - " SELECT b.matnr, b.idnrk, b.menge/b.bmeng as menge, BOM_Tree.menge as pmenge,BOM_Tree.menge*(b.menge/b.bmeng) AS topmenge,BOM_Tree.depth + 1\n" + - " FROM app_scene_cost_bom_relevancy b\n" + - " JOIN BOM_Tree ON b.matnr = BOM_Tree.idnrk\n" + + " SELECT b.werks,b.matnr, b.idnrk, b.menge/b.bmeng as menge, BOM_Tree.menge as pmenge,BOM_Tree.topmenge*(b.menge/b.bmeng) AS topmenge,BOM_Tree.depth + 1 as depth,concat( BOM_Tree.layer, '.', b.layer ) AS layer,BOM_Tree.layer as player \n" + + " FROM ( SELECT werks,matnr, idnrk, menge, bmeng, cast( ROW_NUMBER() OVER (partition by matnr,werks ORDER BY posnr ) AS CHAR ) AS layer FROM app_scene_cost_bom_relevancy ) b\n" + + " JOIN BOM_Tree ON b.matnr = BOM_Tree.idnrk and b.werks=BOM_Tree.werks \n" + ")\n" + - "SELECT matnr, idnrk, menge,pmenge,topmenge, depth FROM BOM_Tree") - List findChildrenByParentId(String parentId); + "SELECT werks,matnr, idnrk, menge,pmenge,topmenge, depth,layer,player FROM BOM_Tree") + List findChildrenByParentId(String parentId,String werk); @Select("${selectSql}") diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostInvoiceMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostInvoiceMapper.java new file mode 100644 index 0000000..135b68c --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostInvoiceMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostInvoice; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_invoice + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +public interface AppSceneCostInvoiceMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningAufnrMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningAufnrMapper.java new file mode 100644 index 0000000..6f7fd1c --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningAufnrMapper.java @@ -0,0 +1,18 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningAufnr; +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_mining_aufnr + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostMiningAufnrMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningDiffMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningDiffMapper.java new file mode 100644 index 0000000..82e71dd --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningDiffMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningDiff; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_mining_diff + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostMiningDiffMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningLaborMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningLaborMapper.java new file mode 100644 index 0000000..1d7b21f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningLaborMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningLabor; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_mining_labor + * @Author: jeecg-boot + * @Date: 2024-11-05 + * @Version: V1.0 + */ +public interface AppSceneCostMiningLaborMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningMaterialMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningMaterialMapper.java new file mode 100644 index 0000000..5e61c86 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningMaterialMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_mining_material + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostMiningMaterialMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningReasonMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningReasonMapper.java new file mode 100644 index 0000000..14cc697 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningReasonMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningReason; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_mining_reason + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostMiningReasonMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningResultMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningResultMapper.java new file mode 100644 index 0000000..8b64664 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostMiningResultMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningResult; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_mining_result + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostMiningResultMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapAfruMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapAfruMapper.java new file mode 100644 index 0000000..823276b --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapAfruMapper.java @@ -0,0 +1,18 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapAfru; +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_sap_afru + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostSapAfruMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapEineMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapEineMapper.java new file mode 100644 index 0000000..f987d85 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapEineMapper.java @@ -0,0 +1,18 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEine; +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_sap_eine + * @Author: jeecg-boot + * @Date: 2024-09-21 + * @Version: V1.0 + */ +public interface AppSceneCostSapEineMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapEkpoMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapEkpoMapper.java new file mode 100644 index 0000000..7cc0927 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapEkpoMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEkpo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_sap_ekpo + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +public interface AppSceneCostSapEkpoMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapHourRateMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapHourRateMapper.java new file mode 100644 index 0000000..f6416ef --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapHourRateMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapHourRate; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_sap_hour_rate + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostSapHourRateMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapZcorcMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapZcorcMapper.java new file mode 100644 index 0000000..577a782 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapZcorcMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_sap_zcorc + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostSapZcorcMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapZtmmx004Mapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapZtmmx004Mapper.java new file mode 100644 index 0000000..e0f7649 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostSapZtmmx004Mapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZtmmx004; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_sap_ztmmx004 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +public interface AppSceneCostSapZtmmx004Mapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostStandardBomMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostStandardBomMapper.java new file mode 100644 index 0000000..d71dec3 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostStandardBomMapper.java @@ -0,0 +1,18 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardBom; +import org.apache.ibatis.annotations.Param; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_standard_bom + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostStandardBomMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostStandardProductprocessMapper.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostStandardProductprocessMapper.java new file mode 100644 index 0000000..9008946 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/AppSceneCostStandardProductprocessMapper.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.mapper; + +import java.util.List; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; +import org.apache.ibatis.annotations.Param; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: app_scene_cost_standard_productprocess + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface AppSceneCostStandardProductprocessMapper extends BaseMapper { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostActualMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostActualMapper.xml new file mode 100644 index 0000000..91399d4 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostActualMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostAufnrMatnrMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostAufnrMatnrMapper.xml new file mode 100644 index 0000000..ce7bd5e --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostAufnrMatnrMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostInvoiceMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostInvoiceMapper.xml new file mode 100644 index 0000000..de15d93 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostInvoiceMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningAufnrMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningAufnrMapper.xml new file mode 100644 index 0000000..c9e9ff6 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningAufnrMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningDiffMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningDiffMapper.xml new file mode 100644 index 0000000..a70b681 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningDiffMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningLaborMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningLaborMapper.xml new file mode 100644 index 0000000..eb2d37d --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningLaborMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningMaterialMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningMaterialMapper.xml new file mode 100644 index 0000000..048bfc3 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningMaterialMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningReasonMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningReasonMapper.xml new file mode 100644 index 0000000..d0879f3 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningReasonMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningResultMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningResultMapper.xml new file mode 100644 index 0000000..d69da3f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostMiningResultMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapAfruMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapAfruMapper.xml new file mode 100644 index 0000000..9e34079 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapAfruMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapEineMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapEineMapper.xml new file mode 100644 index 0000000..121a964 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapEineMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapEkpoMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapEkpoMapper.xml new file mode 100644 index 0000000..aa6dc94 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapEkpoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapHourRateMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapHourRateMapper.xml new file mode 100644 index 0000000..2e3c0d7 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapHourRateMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapZcorcMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapZcorcMapper.xml new file mode 100644 index 0000000..5810f1e --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapZcorcMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapZtmmx004Mapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapZtmmx004Mapper.xml new file mode 100644 index 0000000..18c634e --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostSapZtmmx004Mapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostStandardBomMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostStandardBomMapper.xml new file mode 100644 index 0000000..a075258 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostStandardBomMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostStandardProductprocessMapper.xml b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostStandardProductprocessMapper.xml new file mode 100644 index 0000000..414c032 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/mapper/xml/AppSceneCostStandardProductprocessMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/CostEffectiveService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/CostEffectiveService.java new file mode 100644 index 0000000..3acab50 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/CostEffectiveService.java @@ -0,0 +1,3380 @@ +package com.zzsmart.qomo.kn.cost.manage.plugin; + +import cn.hutool.core.date.DateTime; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.gson.Gson; +import com.zzsmart.qomo.kn.cost.manage.entity.*; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostSapZcorcMapper; +import com.zzsmart.qomo.kn.cost.manage.plugin.webservice.SAPOrderServiceImpl; +import com.zzsmart.qomo.kn.cost.manage.service.*; +import com.zzsmart.qomo.kn.cost.manage.vo.*; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.map.HashedMap; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.env.Environment; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.lang.reflect.Field; +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +@Service +@Slf4j +@Transactional +public class CostEffectiveService { + + private static final Logger logger = LoggerFactory.getLogger(CostEffectiveService.class); + + @Autowired + private Environment env; + + @Autowired + private IAppSceneCostSapZcorcService iAppSceneCostSapZcorcService; + + @Autowired + private IAppSceneCostMaterialService iAppSceneCostMaterialService; + + @Autowired + private IAppSceneCostSapHourRateService iAppSceneCostSapHourRateService; + + @Autowired + private IAppSceneCostSapAfruService iAppSceneCostSapAfruService; + + @Autowired + private IAppSceneCostStandardResultService iAppSceneCostStandardResultService; + + @Autowired + private IAppSceneCostHourRateService iAppSceneCostHourRateService; + + @Autowired + private IAppSceneCostBomRelevancyService iAppSceneCostBomRelevancyService; + + @Autowired + private IAppSceneCostStandardProductprocessService iAppSceneCostStandardProductprocessService; + + @Autowired + private IAppSceneCostStandardBomService iAppSceneCostStandardBomService; + + @Autowired + private IAppSceneCostMiningDiffService iAppSceneCostMiningDiffService; + @Autowired + private IAppSceneCostMiningResultService iAppSceneCostMiningResultService; + @Autowired + private IAppSceneCostMiningAufnrService iAppSceneCostMiningAufnrService; + @Autowired + private IAppSceneCostMiningMaterialService iAppSceneCostMiningMaterialService; + @Autowired + private IAppSceneCostMiningReasonService iAppSceneCostMiningReasonService; + @Autowired + private IAppSceneCostSapZtmmx004Service iAppSceneCostSapZtmmx004Service; + + + public Map> rlayerMatnrMap = new HashMap<>(); + public Map> layerAufnrMap = new HashMap<>(); + public Map> tempSapZcorcList = new HashedMap(); + //public Map auartMap = new HashedMap(); + public Map> afruMap = new HashedMap();//报工单 + //public Map> priceMap = new HashedMap(); + public Map materialMap = new HashedMap(); + + public Map zcorcAufnrMap = new HashMap<>(); + public Map zcorcMatnrMap = new HashMap<>(); + + public Map versionTmpMap = new HashMap<>(); + + public Map miningReasonMap = new HashedMap(); + + public Map> mapZtmmx004 = new HashMap<>(); + + //public Map costCenterMap = new HashMap<>(); + //参考层级 + //public Set rlayers = new HashSet<>(); + public TreeSet rlayers = new TreeSet<>(new Comparator() { + @Override + public int compare(String o1, String o2) { + if (o1.equals(o2)) { + return 0; + } else if (o1.length() < o2.length()) { + return 1; + } else { + return -1; + } + //return o1 tempUniCost = new HashMap<>(); + + public JSONObject ConvertTolowercase(JSONObject obj) { + JSONObject result = new JSONObject(); + for (Map.Entry entry : obj.entrySet()) { + // System.out.println(entry.getKey() + ":" + entry.getValue()); + String newkey = entry.getKey().toLowerCase(); + if (newkey.equals("pspsppnr")) { + newkey = "psPspPnr"; + } + result.put(newkey, entry.getValue()); + } + return result; + } + + public double ConvertStringtoDouble(String value) { + boolean neg = false; + if (value.indexOf("-") != -1) { + neg = true; + } + String item = value.replace("-", ""); + if (neg) { + return 0 - Double.parseDouble(item); + } else { + return Double.parseDouble(item); + } + } + + public String getNextMonth(String ymonth) { + String result = ymonth; + if (result.length() == 6) { + int year = Integer.parseInt(result.substring(0, 4)); + int month = Integer.parseInt(result.substring(4, 6)); + if (month == 12) { + month = 1; + year += 1; + } else { + month += 1; + } + result = String.valueOf(year); + if (month < 10) { + result += "0" + month; + } else { + result += month; + } + } + return result; + } + + public String getLastMonth(String ymonth) { + String result = ymonth; + if (result.length() == 6) { + int year = Integer.parseInt(result.substring(0, 4)); + int month = Integer.parseInt(result.substring(4, 6)); + if (month > 6) { + month = month - 6; + //year += 1; + } else { + month = month + 6; + year = year - 1; + } + result = String.valueOf(year); + if (month < 10) { + result += "0" + month; + } else { + result += month; + } + } + return result; + } + + public void LoadMiningReason() { + List reasons=iAppSceneCostMiningReasonService.list(); + for (AppSceneCostMiningReason reason:reasons){ + miningReasonMap.put(reason.getCode(), reason); + } + } + + public void fixversion(String version){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("version",version); + List zcorcs=iAppSceneCostSapZcorcService.list(queryWrapper); + if(zcorcs.size()>0) { + AppSceneCostSapZcorc zcorc=zcorcs.get(0); + FillNums(zcorcs,zcorc.getYmonth()); + } + int index=0; + for (AppSceneCostSapZcorc zcorc:zcorcs){ + logger.info(index+"/"+zcorcs.size()); + iAppSceneCostSapZcorcService.updateById(zcorc); + index++; + } + //iAppSceneCostSapZcorcService.updateBatchById(zcorcs); + } + + Map mapAufnr=new HashMap<>(); + public void FillAufnrs(List zcorcs,String ymonth){ + + QueryWrapper queryWrapper1=new QueryWrapper<>(); + //queryWrapper1.eq("ym",ymonth); + queryWrapper1.like("center_code","7100%"); + List appSceneCostSapHourRates = iAppSceneCostSapHourRateService.list(queryWrapper1); + Map mapHour = new HashMap<>(); + for (AppSceneCostSapHourRate hourRate:appSceneCostSapHourRates){ + String key = hourRate.getCenterCode()+"-"+hourRate.getYm(); + mapHour.put(key,hourRate); + } + + for (AppSceneCostSapHourRate row : appSceneCostSapHourRates) { + UnitCost unitCost = new UnitCost(); + double minute = 60; + unitCost.rgfv = row.getRgfv().doubleValue() / minute; + unitCost.sbfv = row.getSbfv().doubleValue() / minute; + unitCost.rdfv = row.getRdfv().doubleValue() / minute; + unitCost.flfv = row.getFlfv().doubleValue() / minute; + unitCost.qtfv = row.getQtfv().doubleValue() / minute; + + String code = row.getCenterCode(); + String month = row.getYm(); + tempUniCost.put(code + "." + month, unitCost); + } + + int index=0; + for (AppSceneCostSapZcorc zcorc:zcorcs){ + logger.info("aufnr "+index+"/"+zcorcs.size()); + index++; + if(zcorc.getMatnr().equals(zcorc.getIdnrk())){ + if(!mapAufnr.containsKey(zcorc.getAufnr())){ + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("aufnr",zcorc.getAufnr()); + List list=iAppSceneCostSapAfruService.list(queryWrapper); + double rggs=0; + double flgs=0; + double rdgs=0; + double sbgs=0; + double qtgs=0; + double rgcost = 0; + double flcost = 0; + double rdcost = 0; + double sbcost = 0; + double qtcost = 0; + for (AppSceneCostSapAfru afru:list){ + rggs+=afru.getIsm03().doubleValue(); + sbgs+=afru.getIsm02().doubleValue(); + flgs+=afru.getIsm05().doubleValue(); + rdgs+=afru.getIsm04().doubleValue(); + qtgs+=afru.getIsm06().doubleValue(); + String ym = afru.getYm(); + String key = afru.getKostl()+"-"+ym; + if(mapHour.containsKey(key)){ + AppSceneCostSapHourRate hourRate=mapHour.get(key); + rgcost+=hourRate.getRgfv().doubleValue()*afru.getIsm03().doubleValue(); + flcost+=hourRate.getFlfv().doubleValue()*afru.getIsm05().doubleValue(); + rdcost+=hourRate.getRdfv().doubleValue()*afru.getIsm04().doubleValue(); + sbcost+=hourRate.getSbfv().doubleValue()*afru.getIsm02().doubleValue(); + qtcost+=hourRate.getQtfv().doubleValue()*afru.getIsm06().doubleValue(); + } + } + zcorc.setRggs(new BigDecimal(rggs)); + zcorc.setRgfv(new BigDecimal(rggs!=0?rgcost/rggs:0)); + zcorc.setSbgs(new BigDecimal(sbgs)); + zcorc.setSbfv(new BigDecimal(sbgs!=0?sbcost/sbgs:0)); + zcorc.setFlgs(new BigDecimal(flgs)); + zcorc.setFlfv(new BigDecimal(flgs!=0?flcost/flgs:0)); + zcorc.setRdgs(new BigDecimal(rdgs)); + zcorc.setRdfv(new BigDecimal(rdgs!=0?rdcost/rdgs:0)); + zcorc.setQtgs(new BigDecimal(qtgs)); + zcorc.setQtfv(new BigDecimal(qtgs!=0?qtcost/qtgs:0)); + mapAufnr.put(zcorc.getAufnr(),zcorc); + }else{ + AppSceneCostSapZcorc zcorc1=mapAufnr.get(zcorc.getAufnr()); + zcorc.setRggs(zcorc1.getRggs()); + zcorc.setRgfv(zcorc1.getRgfv()); + zcorc.setSbgs(zcorc1.getSbgs()); + zcorc.setSbfv(zcorc1.getSbfv()); + zcorc.setFlgs(zcorc1.getFlgs()); + zcorc.setFlfv(zcorc1.getFlfv()); + zcorc.setRdgs(zcorc1.getRdgs()); + zcorc.setRdfv(zcorc1.getRgfv()); + zcorc.setQtgs(zcorc1.getQtgs()); + zcorc.setQtfv(zcorc1.getQtfv()); + } + } + } + } + + public void FillNums3(List zcorcs,String ymonth){ + FillAufnrs(zcorcs,ymonth); + if(zcorcs.size()>0){ + logger.info("fillnums "+zcorcs.get(0).getAufnr()); + if(zcorcs.get(0).getAufnr()==null){ + return; + } + } + String topmantr = ""; + //填充level + for (AppSceneCostSapZcorc zcorc:zcorcs){ + String[] values = zcorc.getLayer().split("-"); + int level = (values.length-1)/2; + zcorc.setLevel(level); + if(zcorc.getPlayer().equals("0")){ + zcorc.setPnum(new BigDecimal(1)); + zcorc.setLevel(0); + zcorc.setMatnrnum(new BigDecimal(1)); + zcorc.setAufnrnum(new BigDecimal(1)); + topmantr = zcorc.getMatnr(); + } + } + //1.第一步,填充aufnrtotal + //kmonth 等于 0 的是订单,将player相等的归为一组 +// Map> mapZcorc = new HashMap<>(); +// for (AppSceneCostSapZcorc appSceneCostSapZcorc:zcorcs){ +// //String kmonth = appSceneCostSapZcorc.getKmonth(); +// if(appSceneCostSapZcorc.getPlayer().equals("0")){ +// continue; +// } +// if(!appSceneCostSapZcorc.getKmonth().equals("000000")){ +// continue; +// } +// String player = appSceneCostSapZcorc.getPlayer(); +// //String player = appSceneCostSapZcorc.getMatnr(); +// if(mapZcorc.containsKey(player)){ +// List items = mapZcorc.get(player); +// items.add(appSceneCostSapZcorc); +// mapZcorc.put(player,items); +// }else{ +// List items = new ArrayList<>(); +// items.add(appSceneCostSapZcorc); +// mapZcorc.put(player,items); +// } +// } +// Map mapNum = new HashedMap(); +// for (String player:mapZcorc.keySet()){ +// double totalmenge = 0; +// List items = mapZcorc.get(player); +// for (AppSceneCostSapZcorc zcorc:items){ +// totalmenge+=zcorc.getMenge().doubleValue(); +// } +// mapNum.put(player,new BigDecimal(totalmenge)); +// } +// for (AppSceneCostSapZcorc zcorc:zcorcs){ +// if(mapNum.containsKey(zcorc.getPlayer())){ +// zcorc.setAufnrtotal(mapNum.get(zcorc.getPlayer())); +// } +// } +// //临时保存的记录,用于计算nums + Map numZcorc = new HashMap<>(); + for (AppSceneCostSapZcorc zcorc:zcorcs){ + numZcorc.put(zcorc.getLayer(),zcorc); + } + //根据组件对结果进行分组 + Map> pairMap = new HashMap<>(); + for (AppSceneCostSapZcorc zcorc:zcorcs){ + String pair = zcorc.getIdnrk(); + if(zcorc.getMatnr().equals(zcorc.getIdnrk())){ + continue; + } + if(pairMap.containsKey(pair)){ + List items = pairMap.get(pair); + items.add(zcorc); + pairMap.put(pair,items); + }else{ + List items = new ArrayList<>(); + items.add(zcorc); + pairMap.put(pair,items); + } + } + //构建物料号,avgnum的结构 + Map matnrNum=new HashMap<>(); + matnrNum.put(topmantr,1.0); + + // + Map matnridnrkNum=new HashMap<>(); + //记录aufnrtotal,aufnrnum + Map matnrTotal=new HashMap<>(); + + + //1.根据level,逐层填充,先填充pnum, + //2.matnr = pnum*unmng 如果是物料 pnum = 上层的aufnrnum 如果是订单 pnum = 上层的matnrnum + //3.aufnr = menge*pnum/aufnrtotal + Map> levelZcorcs = new HashMap<>(); + for (AppSceneCostSapZcorc appSceneCostSapZcorc:zcorcs){ + if(appSceneCostSapZcorc.getPlayer().equals("0")){ + continue; + } + int level = appSceneCostSapZcorc.getLevel(); + if(levelZcorcs.containsKey(level)){ + List items = levelZcorcs.get(level); + items.add(appSceneCostSapZcorc); + levelZcorcs.put(level,items); + }else{ + List items = new ArrayList<>(); + items.add(appSceneCostSapZcorc); + levelZcorcs.put(level,items); + } + } + Map mapMng=new HashMap<>(); + for (int level:levelZcorcs.keySet()){ + List zcorcList = levelZcorcs.get(level); + for (AppSceneCostSapZcorc item:zcorcList){ + String matnr = item.getMatnr(); + String idnrk = item.getIdnrk(); + String aufnr = item.getAufnr(); + if(idnrk.equals("41030020002800")){ + logger.info("41030020002800"); + } + AppSceneCostSapZcorc zcorc = numZcorc.get(item.getLayer()); + if(zcorc!=null){ + String key = matnr+"-"+idnrk+"-"+aufnr; + //订单数量 根据订单号去重 + if(!mapMng.containsKey(key)){ + mapMng.put(key,item.getPsmng()); + zcorc.setAufnrmng(item.getPsmng()); + }else{ + zcorc.setAufnrmng(new BigDecimal(0)); + } + if(matnrNum.containsKey(matnr)){ + zcorc.setPnum(new BigDecimal(matnrNum.get(matnr))); + } + if(matnrNum.containsKey(idnrk)){ + zcorc.setTotalnum(new BigDecimal(matnrNum.get(idnrk))); + String pair = matnr+"-"+idnrk; + if(matnridnrkNum.containsKey(pair)){ + //zcorc.setAvgnum(new BigDecimal(matnridnrkNum.get(pair))); + AppSceneCostSapZcorc sapZcorc=matnridnrkNum.get(pair); + zcorc.setAvgnum(sapZcorc.getAvgnum()); + zcorc.setAufnrtotal(sapZcorc.getAufnrtotal()); + zcorc.setAufnrnum(sapZcorc.getAufnrnum()); + zcorc.setAvgprice(sapZcorc.getAvgprice()); + zcorc.setTotalprice(sapZcorc.getTotalprice()); + } + if(matnrTotal.containsKey(idnrk)){ + zcorc.setTotalprice(new BigDecimal(matnrTotal.get(idnrk))); + } + }else{ + List items = pairMap.get(idnrk); + //再根据父物料进行分组 + Map> pmatnrMap = new HashMap<>(); + for (AppSceneCostSapZcorc it:items){ + if(pmatnrMap.containsKey(it.getMatnr())){ + List its = pmatnrMap.get(it.getMatnr()); + its.add(it); + pmatnrMap.put(it.getMatnr(),its); + }else{ + List its = new ArrayList<>(); + its.add(it); + pmatnrMap.put(it.getMatnr(),its); + } + } + Map pmatnrnumMap = new HashMap<>(); + double totalamount=0; + double totalmenge=0; + //对每一个父物料组,进行计算 + for (String pmatnr:pmatnrMap.keySet()){ + //如果同一个父物料在多层,只取第一个 + + //父物料的加权数量 + double pnum = 1; + if(matnrNum.containsKey(pmatnr)){ + pnum = matnrNum.get(pmatnr); + } + List citems = pmatnrMap.get(pmatnr); + String toplayer = ""; + if(citems.size()>0){ + AppSceneCostSapZcorc zcorc1 = citems.get(0); + String layer = zcorc1.getLayer(); + String[] names = layer.split("-"); + if(names.length>3){ + for (int i=0;i aufnrmap=new HashMap<>(); + for (AppSceneCostSapZcorc cit:citems){ + if(!aufnrmap.containsKey(cit.getAufnr())){ + aufnrmap.put(cit.getAufnr(),cit.getPsmng().doubleValue()); + aufnrtotal+=cit.getPsmng().doubleValue(); + } + if(cit.getLayer().indexOf(toplayer)!=-1||toplayer.equals("")) { + menge += cit.getMenge().doubleValue(); + amount += cit.getRkst001().doubleValue(); + AppSceneCostSapZcorc zcorc2 = numZcorc.get(cit.getLayer()); + if(zcorc2!=null){ + zcorc2.setAufnrmenge(cit.getMenge()); + } + } + } + double avgnum = menge*pnum/aufnrtotal; + double avgprice = amount; + pmatnrnumMap.put(pmatnr,avgnum); + String pair = pmatnr+"-"+idnrk; + + AppSceneCostSapZcorc sapZcorc=new AppSceneCostSapZcorc(); + sapZcorc.setAvgprice(new BigDecimal(avgprice)); + sapZcorc.setAvgnum(new BigDecimal(avgnum)); + sapZcorc.setAufnrtotal(new BigDecimal(aufnrtotal)); + sapZcorc.setAufnrnum(new BigDecimal(menge)); + matnridnrkNum.put(pair,sapZcorc); + + totalamount+=sapZcorc.getAvgprice().doubleValue(); + totalmenge+=sapZcorc.getAufnrnum().doubleValue(); + } + double totalnum = 0; + for (String pnum:pmatnrnumMap.keySet()){ + totalnum+=pmatnrnumMap.get(pnum); + } + matnrNum.put(idnrk,totalnum); + zcorc.setTotalnum(new BigDecimal(totalnum)); + String pair = matnr+"-"+idnrk; + //double totalamount=0; + //double totalmenge=0; + if(matnridnrkNum.containsKey(pair)){ + AppSceneCostSapZcorc sapZcorc=matnridnrkNum.get(pair); + zcorc.setAvgnum(sapZcorc.getAvgnum()); + zcorc.setAufnrtotal(sapZcorc.getAufnrtotal()); + zcorc.setAufnrnum(sapZcorc.getAufnrnum()); + zcorc.setAvgprice(sapZcorc.getAvgprice()); + //totalamount+=sapZcorc.getAvgprice().doubleValue(); + //totalmenge+=sapZcorc.getAufnrnum().doubleValue(); + } + double totalprice = totalamount/totalmenge; + zcorc.setTotalprice(new BigDecimal(totalprice)); + matnrTotal.put(idnrk,totalprice); + } + numZcorc.put(item.getLayer(),zcorc); + } + } + } + for (AppSceneCostSapZcorc item:zcorcs){ + if(item.getIdnrk().equals("41030020002800")){ + logger.info("41030020002800"); + } + AppSceneCostSapZcorc zcorc = numZcorc.get(item.getLayer()); + item.setAufnrnum(zcorc.getAufnrnum()); + item.setMatnrnum(zcorc.getMatnrnum()); + item.setPnum(zcorc.getPnum()); + if(item.getMatnrnum()!=null&&(item.getMatnrnum().compareTo(BigDecimal.ZERO)==0)){ + item.setContent("可能存在替代料情况"); + } + } + } + + public void FillNums(List zcorcs,String ymonth){ + if(zcorcs.size()>0){ + logger.info("fillnums "+zcorcs.get(0).getAufnr()); + if(zcorcs.get(0).getAufnr()==null){ + return; + } + } + //填充level + for (AppSceneCostSapZcorc zcorc:zcorcs){ + String[] values = zcorc.getLayer().split("-"); + int level = (values.length-1)/2; + zcorc.setLevel(level); + if(zcorc.getPlayer().equals("0")){ + zcorc.setPnum(new BigDecimal(1)); + zcorc.setLevel(0); + zcorc.setMatnrnum(new BigDecimal(1)); + zcorc.setAufnrnum(new BigDecimal(1)); + } + } + //1.第一步,填充aufnrtotal + //kmonth 等于 0 的是订单,将player相等的归为一组 + Map> mapZcorc = new HashMap<>(); + for (AppSceneCostSapZcorc appSceneCostSapZcorc:zcorcs){ + //String kmonth = appSceneCostSapZcorc.getKmonth(); + if(appSceneCostSapZcorc.getPlayer().equals("0")){ + continue; + } + if(!appSceneCostSapZcorc.getKmonth().equals("000000")){ + continue; + } + String player = appSceneCostSapZcorc.getPlayer(); + //String player = appSceneCostSapZcorc.getMatnr(); + if(mapZcorc.containsKey(player)){ + List items = mapZcorc.get(player); + items.add(appSceneCostSapZcorc); + mapZcorc.put(player,items); + }else{ + List items = new ArrayList<>(); + items.add(appSceneCostSapZcorc); + mapZcorc.put(player,items); + } + } + Map mapNum = new HashedMap(); + for (String player:mapZcorc.keySet()){ + double totalmenge = 0; + List items = mapZcorc.get(player); + for (AppSceneCostSapZcorc zcorc:items){ + totalmenge+=zcorc.getMenge().doubleValue(); + } + mapNum.put(player,new BigDecimal(totalmenge)); + } + for (AppSceneCostSapZcorc zcorc:zcorcs){ + if(mapNum.containsKey(zcorc.getPlayer())){ + zcorc.setAufnrtotal(mapNum.get(zcorc.getPlayer())); + } + } + //临时保存的记录,用于计算nums + Map numZcorc = new HashMap<>(); + for (AppSceneCostSapZcorc zcorc:zcorcs){ + numZcorc.put(zcorc.getLayer(),zcorc); + } + //1.根据level,逐层填充,先填充pnum, + //2.matnr = pnum*unmng 如果是物料 pnum = 上层的aufnrnum 如果是订单 pnum = 上层的matnrnum + //3.aufnr = menge*pnum/aufnrtotal + Map> levelZcorcs = new HashMap<>(); + for (AppSceneCostSapZcorc appSceneCostSapZcorc:zcorcs){ + if(appSceneCostSapZcorc.getPlayer().equals("0")){ + continue; + } + int level = appSceneCostSapZcorc.getLevel(); + if(levelZcorcs.containsKey(level)){ + List items = levelZcorcs.get(level); + items.add(appSceneCostSapZcorc); + levelZcorcs.put(level,items); + }else{ + List items = new ArrayList<>(); + items.add(appSceneCostSapZcorc); + levelZcorcs.put(level,items); + } + } + for (int level:levelZcorcs.keySet()){ + List zcorcList = levelZcorcs.get(level); + for (AppSceneCostSapZcorc item:zcorcList){ + int index = item.getLayer().lastIndexOf("-"); + String lastcode = item.getLayer().substring(index+1,item.getLayer().length()); + String player = item.getPlayer(); + AppSceneCostSapZcorc pzcorc = numZcorc.get(player); + AppSceneCostSapZcorc zcorc = numZcorc.get(item.getLayer()); + if(pzcorc==null){ + logger.info("d"); + continue; + } + if(lastcode.equals("0")){ + zcorc.setPnum(pzcorc.getMatnrnum()); + if(zcorc.getMenge()==null||zcorc.getPnum()==null||zcorc.getAufnrtotal()==null){ + logger.info("d"); + continue; + } + zcorc.setAufnrnum(zcorc.getMenge().multiply(zcorc.getPnum()).divide(zcorc.getAufnrtotal(),6,BigDecimal.ROUND_CEILING)); + }else{ + zcorc.setPnum(pzcorc.getAufnrnum()); + zcorc.setMatnrnum(zcorc.getPnum().multiply(zcorc.getUnmng())); + } + numZcorc.put(zcorc.getLayer(),zcorc); + } + } + for (AppSceneCostSapZcorc item:zcorcs){ + AppSceneCostSapZcorc zcorc = numZcorc.get(item.getLayer()); + item.setAufnrnum(zcorc.getAufnrnum()); + item.setMatnrnum(zcorc.getMatnrnum()); + item.setPnum(zcorc.getPnum()); + //if(item.getMatnrnum()!=null&&(item.getMatnrnum().compareTo(BigDecimal.ZERO)==0)){ + // item.setContent("可能存在替代料情况"); + //} + } + } + + public List loadsapservice(String werks, String matnr, String posid, String ymonth) { + HashMap hm = new HashMap(); + logger.info("loadsapservice " + werks + " " + matnr + " " + posid + " "); + + //String bmonth = getLastMonth(ymonth); + String emonth = getNextMonth(ymonth); + //if (ymonth.equals("")) { + // logger.info("can not find month " + matnr + " " + result.getPs_psp_pnr()); + // continue; + //} + //String ymonth = result.getBudat_mkpf().substring(0, 6); + String dateb = ymonth + "01"; + String datee = emonth + "01"; + String months = "06"; + + Gson gson = new Gson(); + hm.put("werks", werks); + hm.put("matnr", matnr); + hm.put("pspnr", posid); + hm.put("dateb", dateb); + hm.put("datee", datee); + hm.put("months", months); + + String url = env.getProperty("sap.service.url"); + String u = env.getProperty("sap.service.user"); + String p = env.getProperty("sap.service.password"); + + List versions = new ArrayList<>(); + + + SAPOrderServiceImpl sapOrderService = new SAPOrderServiceImpl(); + + JSONObject jsonObject = sapOrderService.getOrderState12(hm, url, u, p); + try { + JSONArray items = jsonObject.getJSONObject("Body").getJSONObject("ZSAP_DSJ_005Response").getJSONObject("ES_OUTPUT").getJSONObject("DATA").getJSONObject("EX_TABLE").getJSONArray("item"); + Map> mapSapZcorcResultList = new HashMap<>(); + if (items.size() > 0) { + logger.info("load " + items.size() + " items"); + JSONObject firstObj = items.getJSONObject(0); + String aufnr = firstObj.getString("AUFNR"); + //String ym = getYmonth(matnr, pspnr); + String version = werks + "-" + matnr + "-" + aufnr + "-" + ymonth; + for (int i = 0; i < items.size(); ++i) { + JSONObject newitem = ConvertTolowercase(items.getJSONObject(i)); + AppSceneCostSapZcorc temp = new AppSceneCostSapZcorc(); + Field[] field = temp.getClass().getDeclaredFields(); + //SapZcorcResultKey key = new SapZcorcResultKey(); + //Field[] field2 = key.getClass().getDeclaredFields(); + + JSONObject result = new JSONObject(); + for (int j = 0; j < field.length; j++) { + String name = field[j].getName(); + //if (name.equals("layer")) { + // logger.info(name); + //} + if (newitem.get(name) != null) { + String type = field[j].getGenericType().toString(); + if (type.equals("class java.lang.Double")) { + result.put(name, ConvertStringtoDouble(newitem.get(name).toString())); + } else if (type.equals("class java.math.BigDecimal")) { + result.put(name, ConvertStringtoDouble(newitem.get(name).toString())); + } else { + result.put(name, newitem.get(name)); + } + } + } + + AppSceneCostSapZcorc tmpSapZcorcResult = JSON.parseObject(result.toJSONString(), AppSceneCostSapZcorc.class); + if (tmpSapZcorcResult.getPlayer().equals("0")) { + aufnr = tmpSapZcorcResult.getAufnr(); + version = werks + "-" + matnr + "-" + aufnr + "-" + ymonth; + versions.add(tmpSapZcorcResult); + } + + tmpSapZcorcResult.setYmonth(ymonth); + tmpSapZcorcResult.setVersion(version); + if (tmpSapZcorcResult.getRkst001() != null && tmpSapZcorcResult.getRkst003() != null && tmpSapZcorcResult.getRkst0051() != null) { + double rkst000 = tmpSapZcorcResult.getRkst001().doubleValue() + tmpSapZcorcResult.getRkst003().doubleValue(); + tmpSapZcorcResult.setRkst000(new BigDecimal(rkst000)); + double rkstlabor = tmpSapZcorcResult.getRkst003().doubleValue() - tmpSapZcorcResult.getRkst0051().doubleValue(); + tmpSapZcorcResult.setRkstlabor(new BigDecimal(rkstlabor)); + if (tmpSapZcorcResult.getIdnrk() == null) { + tmpSapZcorcResult.setIdnrk(""); + } + //tmpSapZcorcResultList.add(tmpSapZcorcResult); + if(mapSapZcorcResultList.containsKey(version)){ + List zcorcs=mapSapZcorcResultList.get(version); + zcorcs.add(tmpSapZcorcResult); + mapSapZcorcResultList.put(version,zcorcs); + }else{ + List zcorcs=new ArrayList<>(); + zcorcs.add(tmpSapZcorcResult); + mapSapZcorcResultList.put(version,zcorcs); + } + + } else { + logger.info("error:" + gson.toJson(tmpSapZcorcResult)); + } + } + logger.info("Insert " + items.size() + " items "+mapSapZcorcResultList.keySet().size()+" aufnrs"); + for (String ver:mapSapZcorcResultList.keySet()){ + List zcorcs=mapSapZcorcResultList.get(ver); + FillNums(zcorcs,ymonth); + iAppSceneCostSapZcorcService.saveBatch(zcorcs); + } + //logger.info("7525 replaced "); + //iAppSceneCostSapZcorcService.saveBatch(tmpSapZcorcResultList); + return versions; + } + } catch (Exception e) { + e.printStackTrace(); + logger.info("error:" + e.getMessage()); + //logger.info("result :" + jsonObject.toJSONString()); + } + + return new ArrayList<>(); + } + + public int SetStatus(AppSceneCostMiningResult miningResult, String status) { + miningResult.setStatus(status); + logger.info(status); + iAppSceneCostMiningResultService.updateById(miningResult); + return 1; + //return UpdateMiningResultBlobs(miningResult); + } + + public int UpdateMiningResultBlobs(AppSceneCostMiningResult miningResultWithBLOBs) { +// MiningResultExample example = new MiningResultExample(); +// MiningResultExample.Criteria criteria = example.createCriteria(); +// criteria.andMatnrEqualTo(miningResultWithBLOBs.getMatnr()); +// //criteria.andAufnrEqualTo(miningResultWithBLOBs.getAufnr()); +// criteria.andWbsEqualTo(miningResultWithBLOBs.getWbs()); +// criteria.andVersionEqualTo(miningResultWithBLOBs.getVersion()); +// List results = miningResultMapper.selectByExample(example); +// if (results.size() > 0) { +// MiningResult miningResult = results.get(0); +// miningResultWithBLOBs.setId(miningResult.getId()); +// miningResultWithBLOBs.setYmonth(miningResult.getYmonth()); +// miningResultMapper.updateByPrimaryKey(miningResultWithBLOBs); +// return results.get(0).getId(); +// } else { +// miningResultMapper.insert(miningResultWithBLOBs); +// List result2 = miningResultMapper.selectByExample(example); +// if (result2.size() > 0) { +// return result2.get(0).getId(); +// } +// } + return -1; + } + + public void ClearCach() { + rlayerMatnrMap.clear(); + layerAufnrMap.clear(); + tempSapZcorcList.clear(); + //auartMap.clear(); + afruMap.clear(); + //priceMap.clear(); + materialMap.clear(); + //resultindex=-1; + zcorcAufnrMap.clear(); + zcorcMatnrMap.clear(); + miningReasonMap.clear(); + mapZtmmx004.clear(); + //motorSet.clear(); + //rlayers.clear(); + //materialDetailMap.clear(); + } + + public void getHourCost(HiveSapAfru hiveSapAfru, int resultindex) { + try { + Gson gson = new Gson(); + String ymonth = hiveSapAfru.budat; + if (ymonth.length() > 6) { + ymonth = ymonth.substring(0, 6); + } + String mapkey = hiveSapAfru.kostl + "." + ymonth; + if (tempUniCost.containsKey(mapkey)) { + hiveSapAfru.SetUnitCost(tempUniCost.get(mapkey)); + } else { + AddMingLog(1, "无法找到实际小时费率:" + mapkey, resultindex); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void InitTempSapZcorc2(String matnr, String werks, String aufnr, String ymonth, int resultindex) { + try { + //SyncRedis(werks,ymonth); + ClearCach(); + Gson gson = new Gson(); + String version = werks + "-" + matnr + "-" + aufnr + "-" + ymonth; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("version", version); + queryWrapper.eq("ymonth", ymonth); + List appSceneCostSapZcorcs = iAppSceneCostSapZcorcService.list(queryWrapper); + //String tablename = "sap_zcorc_result"; + //if (layer.indexOf("-") != -1) { + //String sublayer = layer.substring(0, layer.length() - 1) + "%"; + // String sql2 = "SELECT * FROM sap_zcorc_result where layer like '" + sublayer + "' and ymonth='" + ymonth + "' and werks='" + werks + "'"; + //String sql2 = "select * from sap_zcorc_result where version='" + version + "' and ymonth='" + ymonth + "'"; + //Set rlayers = new HashSet<>(); + Set aufnrs = new HashSet<>(); + Set matnrs = new HashSet<>(); + Set costcenters = new HashSet<>(); + + logger.info("Init first layer"); + HashSet hashrlayers = new HashSet(); + //List> rows = mysqlJdbcTemplate.queryForList(sql2); + for (AppSceneCostSapZcorc row : appSceneCostSapZcorcs) { + //Map newrow = FormatMap(row, tablename); + HiveSapZcorc hiveSapZcorc = gson.fromJson(gson.toJson(row), HiveSapZcorc.class); + hiveSapZcorc.productname = hiveSapZcorc.maktx; + if (tempSapZcorcList.containsKey(hiveSapZcorc.player)) { + List hiveSapZcorcs = tempSapZcorcList.get(hiveSapZcorc.player); + hiveSapZcorcs.add(hiveSapZcorc); + tempSapZcorcList.put(hiveSapZcorc.player, hiveSapZcorcs); + } else { + List hiveSapZcorcs = new ArrayList<>(); + hiveSapZcorcs.add(hiveSapZcorc); + tempSapZcorcList.put(hiveSapZcorc.player, hiveSapZcorcs); + } + //tempSapZcorcList.put(hiveSapZcorc.player, hiveSapZcorc); + aufnrs.add(hiveSapZcorc.aufnr); + matnrs.add(hiveSapZcorc.matnr); + matnrs.add(hiveSapZcorc.idnrk); + if (hiveSapZcorc.rlayer != null && hiveSapZcorc.rlayer.trim().length() > 0) { + hashrlayers.add(hiveSapZcorc.rlayer); + } else { + hashrlayers.add(hiveSapZcorc.layer); + } + } + rlayers.addAll(hashrlayers); + + + logger.info("init hour rate"); + if (true) { + //QueryWrapper queryWrapper1=new QueryWrapper<>(); + List appSceneCostSapHourRates = iAppSceneCostSapHourRateService.list(); + //String sql = "SELECT * FROM zcorc.Calculation_MonthlyUnitTimeCost"; + //List> rows2 = hiveJdbcTemplate.queryForList(sql); + //String sql = "SELECT * FROM Calculation_MonthlyUnitTimeCost"; + //List> rows2 = mysqlJdbcTemplate.queryForList(sql); + for (AppSceneCostSapHourRate row : appSceneCostSapHourRates) { + //Map newrow = FormatMap(row, tablename); + UnitCost unitCost = new UnitCost(); + double minute = 60; + unitCost.rgfv = row.getRgfv().doubleValue() / minute; + unitCost.sbfv = row.getSbfv().doubleValue() / minute; + unitCost.rdfv = row.getRdfv().doubleValue() / minute; + unitCost.flfv = row.getFlfv().doubleValue() / minute; + unitCost.qtfv = row.getQtfv().doubleValue() / minute; + + String code = row.getCenterCode(); + String month = row.getYm(); + tempUniCost.put(code + "." + month, unitCost); + } + } + + logger.info("Init afru"); + if (aufnrs.size() > 0) { + // String sql = "SELECT * FROM sap_afru where werks='" + werks + "'"; + //sql += " and ("; + //String sql = "SELECT * FROM zcorc.sap_afru where ("; +// String sql = "SELECT * FROM sap_afru where ("; +// int index = 0; +// for (String aufnr : aufnrs) { +// if (index != 0) { +// sql += " or "; +// } +// index++; +// sql += "aufnr = '" + aufnr + "'"; +// } +// sql += ")"; + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.in("aufnr", aufnrs); + List appSceneCostSapAfrus = iAppSceneCostSapAfruService.list(queryWrapper1); + //List> rows2 = hiveJdbcTemplate.queryForList(sql); + //List> rows2 = mysqlJdbcTemplate.queryForList(sql); + for (AppSceneCostSapAfru row : appSceneCostSapAfrus) { + //Map newrow = FormatMap(row, tablename); + HiveSapAfru hiveSapAfru = gson.fromJson(gson.toJson(row), HiveSapAfru.class); + getHourCost(hiveSapAfru, resultindex); + String anfnr = hiveSapAfru.aufnr; + + if (afruMap.containsKey(anfnr)) { + afruMap.get(anfnr).add(hiveSapAfru); + } else { + List list = new ArrayList<>(); + list.add(hiveSapAfru); + afruMap.put(anfnr, list); + } + } + } + + List sapZtmmx004s=iAppSceneCostSapZtmmx004Service.list(); + for (AppSceneCostSapZtmmx004 ztmmx004:sapZtmmx004s){ + if(mapZtmmx004.containsKey(ztmmx004.getMatnr())){ + List data = mapZtmmx004.get(ztmmx004.getMatnr()); + data.add(ztmmx004); + mapZtmmx004.put(ztmmx004.getMatnr(),data); + }else{ + List data = new ArrayList<>(); + data.add(ztmmx004); + mapZtmmx004.put(ztmmx004.getMatnr(),data); + } + } + +// logger.info("Init price"); +// if (matnrs.size() > 0) { +// String sql = "SELECT * FROM srm_price where approve_status='审批通过'"; +// sql += " and ("; +// int index = 0; +// for (String matnr : matnrs) { +// if (index != 0) { +// sql += " or "; +// } +// index++; +// sql += "material_code = '" + matnr + "'"; +// } +// sql += ")"; +//// List> rows2 = hiveJdbcTemplate.queryForList(sql); +//// for (Map row : rows2) { +//// //0-1-0 +//// Map newrow2 = FormatMap(row, tablename); +//// SrmPrice srmPrice = gson.fromJson(gson.toJson(newrow2), SrmPrice.class); +//// //srmPriceList.add(srmPrice); +//// if (priceMap.containsKey(srmPrice.material_code)) { +//// priceMap.get(srmPrice.material_code).add(srmPrice); +//// } else { +//// List list = new ArrayList<>(); +//// list.add(srmPrice); +//// priceMap.put(srmPrice.material_code, list); +//// } +//// } +// } + + logger.info("init material"); + if (matnrs.size() > 0) { + List list = new ArrayList<>(); + for (String matnr1 : matnrs) { + list.add(matnr1); + } + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.in("material_number", list); + queryWrapper1.eq("factory", werks); + //MaterialExample example = new MaterialExample(); + //MaterialExample.Criteria criteria = example.createCriteria(); + //criteria.andMaterialNumberIn(list); + //criteria.andFactoryEqualTo(werks); + List materialList = iAppSceneCostMaterialService.list(queryWrapper1); + for (AppSceneCostMaterial material : materialList) { + materialMap.put(material.getMaterialNumber(), material); + } + + //for (HiveSapZcorc hiveSapZcorc:tempSapZcorcList.values()){ + // hiveSapZcorc.productname = hiveSapZcorc.maktx; + //if(materialMap.containsKey(hiveSapZcorc.matnr)){ + // hiveSapZcorc.productname=materialMap.get(hiveSapZcorc.matnr).getProductName(); + // } + // } + + } + +// logger.info("init motor"); +// if (matnrs.size() > 0) { +// List materialList = dictMotorMapper.selectByExample(new DictMotorExample()); +// for (DictMotor material : materialList) { +// motorSet.add(material.getMatnr()); +// } +// +// //for (HiveSapZcorc hiveSapZcorc:tempSapZcorcList.values()){ +// // hiveSapZcorc.productname = hiveSapZcorc.maktx; +// //if(materialMap.containsKey(hiveSapZcorc.matnr)){ +// // hiveSapZcorc.productname=materialMap.get(hiveSapZcorc.matnr).getProductName(); +// // } +// // } +// +// } + + // } + //String sql="select * from "+tablename+" where werks" + } catch (Exception e) { + throw e; + } + } + + public void Init(VersionTmp versionTmp) { + if (versionTmp.totalHourRate.size() == 0) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Calendar calendar = Calendar.getInstance(); + int year = calendar.get(Calendar.YEAR); + queryWrapper.eq("year", year); + versionTmp.totalHourRate = iAppSceneCostHourRateService.list(queryWrapper); + //HourRateExample example = new HourRateExample(); + //Calendar calendar = Calendar.getInstance(); + //int year = calendar.get(Calendar.YEAR); + //HourRateExample.Criteria criteria = example.createCriteria(); + //criteria.andYearEqualTo(String.valueOf(year)); + //versionTmp.totalHourRate = hourRateMapper.selectByExample(example); + } +// if (versionTmp.innerSupplierMap.size() == 0) { +// InnerSupplierExample example = new InnerSupplierExample(); +// List innerSupplierList = innerSupplierMapper.selectByExample(example); +// for (InnerSupplier innerSupplier : innerSupplierList) { +// if (versionTmp.innerSupplierMap.containsKey(innerSupplier.getSupplierCode())) { +// List innerSuppliers = versionTmp.innerSupplierMap.get(innerSupplier.getSupplierCode()); +// innerSuppliers.add(innerSupplier); +// versionTmp.innerSupplierMap.put(innerSupplier.getSupplierCode(), innerSuppliers); +// } else { +// List innerSuppliers = new ArrayList<>(); +// innerSuppliers.add(innerSupplier); +// versionTmp.innerSupplierMap.put(innerSupplier.getSupplierCode(), innerSuppliers); +// } +// //innerSupplierMap.put(innerSupplier.getSupplierCode(), innerSupplier); +// } +// } + } + + public void InitBom(String matnr, String werks, String proversion, VersionTmp versionTmp) { + try { + Set allmatnrs = new HashSet<>(); + allmatnrs.add(matnr); + // String version=""; + + Set matnrSet = new HashSet<>(); + matnrSet.add(matnr); + logger.info("Init bom"); + while (!matnrSet.isEmpty()) { + List list = new ArrayList<>(); + for (String item : matnrSet) { + if (!versionTmp.bomMap.containsKey(item)) { + list.add(item); + } + } + if (list.size() == 0) { + break; + } + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("matnr", list); + queryWrapper.eq("werks", werks); + List bomRelevancyList = iAppSceneCostBomRelevancyService.list(queryWrapper); +// BomRelevancyExample example = new BomRelevancyExample(); +// BomRelevancyExample.Criteria criteria = example.createCriteria(); +// criteria.andMatnrIn(list); +// criteria.andWerksEqualTo(werks); +// List bomRelevancyList = bomRelevancyMapper.selectByExample(example); + matnrSet.clear(); + for (AppSceneCostBomRelevancy bomRelevancy : bomRelevancyList) { + //if(bomRelevancy.getMatnr().equals(matnr)&&version.equals("")){ + // version=bomRelevancy.getVersionNumber(); + //} + if (!versionTmp.bomMap.containsKey(bomRelevancy.getMatnr())) { + List bomRelevancyList1 = new ArrayList<>(); + bomRelevancyList1.add(bomRelevancy); + versionTmp.bomMap.put(bomRelevancy.getMatnr(), bomRelevancyList1); + } else { + versionTmp.bomMap.get(bomRelevancy.getMatnr()).add(bomRelevancy); + } + matnrSet.add(bomRelevancy.getIdnrk()); + allmatnrs.add(bomRelevancy.getIdnrk()); + } + } + + List listmatnrs = new ArrayList<>(); + for (String item : allmatnrs) { + listmatnrs.add(item); + } + listmatnrs.add(matnr); + +// logger.info("Init ProductProcessMaintenance"); +// if (true) { +// SapProcessRouteExample example = new SapProcessRouteExample(); +// SapProcessRouteExample.Criteria criteria = example.createCriteria(); +// criteria.andMatnrIn(listmatnrs); +// criteria.andWerksEqualTo(werks); +// //criteria.andVersionNumberEqualTo(version); +// List productProcessMaintenanceList = sapProcessRouteMapper.selectByExample(example); +// for (SapProcessRoute productProcessMaintenance : productProcessMaintenanceList) { +// if (!versionTmp.productMap.containsKey(productProcessMaintenance.getMatnr())) { +// List bomRelevancyList1 = new ArrayList<>(); +// bomRelevancyList1.add(productProcessMaintenance); +// versionTmp.productMap.put(productProcessMaintenance.getMatnr(), bomRelevancyList1); +// } else { +// versionTmp.productMap.get(productProcessMaintenance.getMatnr()).add(productProcessMaintenance); +// } +// } +// } + + +// logger.info("Init taxed"); +// if (true) { +// List taxes = taxesMapper.selectByExample(new TaxesExample()); +// for (Taxes taxes1 : taxes) { +// versionTmp.taxesMap.put(taxes1.getMatnr(), taxes1); +// } +// } + + List mklist = new ArrayList<>(); + + logger.info("Init material"); + if (true) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("material_number", listmatnrs); + queryWrapper.eq("factory", werks); + List materialList = iAppSceneCostMaterialService.list(queryWrapper); +// MaterialExample example = new MaterialExample(); +// MaterialExample.Criteria criteria = example.createCriteria(); +// criteria.andMaterialNumberIn(listmatnrs); +// criteria.andFactoryEqualTo(werks); +// List materialList = materialMapper.selectByExample(example); + for (AppSceneCostMaterial material : materialList) { + if (!versionTmp.materialMap.containsKey(material.getMaterialNumber())) { + versionTmp.materialMap.put(material.getMaterialNumber(), material); + if (material.getOldMaterialGroup() != null && material.getOldMaterialGroup().equals("100")) { + mklist.add(material.getMaterialNumber()); + } + } + } + //criteria.andVersionNumberEqualTo(version); + } + + + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void loadProductProcess(StandardMatnr standardMatnr, List standardProductprocesses) { + try { + logger.info("loadProductProcess " + standardMatnr.matnr); + standardMatnr.productProcessMaintenanceList = new ArrayList<>(); + for (AppSceneCostStandardProductprocess standardProductprocess : standardProductprocesses) { + if (standardProductprocess.getMainPartNumber().equals(standardMatnr.matnr) && + standardProductprocess.getFactory().equals(standardMatnr.werks) && + standardProductprocess.getVersionNumber().equals(standardMatnr.version)) { + standardMatnr.productProcessMaintenanceList.add(standardProductprocess); + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void loadChildBom(StandardMatnr standardMatnr, List standardResults, List standardBoms, List standardProductprocesses) { + try { + int index = 0; + Gson gson = new Gson(); + + for (AppSceneCostStandardResult standardResult : standardResults) { + if (!standardResult.getParentMatnr().equals(standardMatnr.matnr)) + continue; + String layer = standardResult.getLayer(); + //if (layer.length() < standardMatnr.layer.length() + 1) + // continue; + //if (!layer.substring(0, standardMatnr.layer.length()).equals(standardMatnr.layer)) + // continue; + if (!standardResult.getPlayer().equals(standardMatnr.layer)) { + continue; + } + index++; + if(standardResult.getMaterialNumber().equals("02020010001800")){ + logger.info("02020010001800"); + } + //logger.info(depth + ":" + standardMatnr.matnr + ":" + standardMatnr.layer + "-" + index + ":" + index + "/" + standardBomArrayList.size()); + + StandardMatnr standardMatnr1 = new StandardMatnr(); + standardMatnr1.matnr = standardResult.getMaterialNumber(); + standardMatnr1.werks = standardMatnr.werks; + standardMatnr1.version = standardMatnr.version; + standardMatnr1.layer = standardResult.getLayer(); + standardMatnr1.standardResult = standardResult; + standardMatnr1.GenerateStandardCalculate(); + for (AppSceneCostStandardBom standardBom : standardBoms) { + if (standardMatnr1.matnr.equals(standardBom.getIdnrk()) && standardMatnr.matnr.equals(standardBom.getMatnr())) { + standardMatnr1.standardBom = gson.fromJson(gson.toJson(standardBom), AppSceneCostStandardBom.class); + double menge = standardResult.getMenge().doubleValue(); + standardMatnr1.standardBom.setMenge(new BigDecimal(menge)); + } + } + loadProductProcess(standardMatnr1, standardProductprocesses); + loadChildBom(standardMatnr1, standardResults, standardBoms, standardProductprocesses); + standardMatnr.childs.add(standardMatnr1); + } + } catch (KNException ex) { + throw ex; + } catch (Exception e) { + e.printStackTrace(); + } + } + + public StandardMatnr loadStandardCost2(String matnr, String version, String werks) { + try { + StandardMatnr standardMatnr = new StandardMatnr(); + standardMatnr.matnr = matnr; + standardMatnr.version = version; + //standardMatnr.setBatch(batch); + standardMatnr.werks = werks; + standardMatnr.layer = "0"; + + VersionTmp versionTmp = new VersionTmp(); + Init(versionTmp); + InitBom(matnr, werks, version, versionTmp); + versionTmpMap.put(version, versionTmp); + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("version_number", standardMatnr.version); + queryWrapper.eq("factory", werks); + //StandardResultExample example1 = new StandardResultExample(); + //StandardResultExample.Criteria criteria1 = example1.createCriteria(); + //criteria1.andMaterialNumberEqualTo(standardMatnr.matnr); + //criteria1.andVersionNumberEqualTo(standardMatnr.version); + //criteria1.andFactoryEqualTo(werks); + List standardResults = iAppSceneCostStandardResultService.list(queryWrapper); + boolean bFind = false; + if (standardResults.size() > 0) { + for (AppSceneCostStandardResult standardResult : standardResults) { + if (standardResult.getLayer().equals("0") && standardResult.getMaterialNumber().equals(matnr)) { + standardMatnr.standardResult = standardResult; + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("material_number", matnr); + queryWrapper1.eq("factory", werks); + List materialList = iAppSceneCostMaterialService.list(queryWrapper1); + //MaterialExample example = new MaterialExample(); + //MaterialExample.Criteria criteria = example.createCriteria(); + //criteria.andMaterialNumberEqualTo(matnr); + //criteria.andFactoryEqualTo(werks); + //List materialList = materialMapper.selectByExample(example); + if (materialList.size() > 0) { + AppSceneCostMaterial material = materialList.get(0); + standardMatnr.standardBom.setProductName(material.getProductName()); + } + standardMatnr.GenerateStandardCalculate(); + bFind = true; + break; + } + } + } + if (bFind) { + //StandardBomExample example2 = new StandardBomExample(); + //StandardBomExample.Criteria criteria2 = example2.createCriteria(); + //criteria2.andVersionNumberEqualTo(standardMatnr.version); + //List standardBomArrayList = standardBomMapper.selectByExample(example2); + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper2.eq("version_number", standardMatnr.version); + List standardBomArrayList = iAppSceneCostStandardBomService.list(queryWrapper2); + + + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("factory", standardMatnr.werks); + queryWrapper1.eq("version_number", standardMatnr.version); + + //StandardProductprocessExample example = new StandardProductprocessExample(); + //StandardProductprocessExample.Criteria criteria = example.createCriteria(); + //criteria.andFactoryEqualTo(standardMatnr.werks); + //criteria.andMainPartNumberEqualTo(standardMatnr.matnr); + //criteria.andVersionNumberEqualTo(standardMatnr.version); + List productProcessMaintenanceList = iAppSceneCostStandardProductprocessService.list(queryWrapper1); + for (AppSceneCostStandardProductprocess productprocess:productProcessMaintenanceList){ + productprocess.setPrepareHour(productprocess.getPrepareHour().divide(new BigDecimal(60),BigDecimal.ROUND_CEILING)); + productprocess.setLaborHour(productprocess.getLaborHour().divide(new BigDecimal(60),BigDecimal.ROUND_CEILING)); + productprocess.setMachineHour(productprocess.getMachineHour().divide(new BigDecimal(60),BigDecimal.ROUND_CEILING)); + productprocess.setBurningHour(productprocess.getBurningHour().divide(new BigDecimal(60),BigDecimal.ROUND_CEILING)); + productprocess.setAuxiliaryHour(productprocess.getAuxiliaryHour().divide(new BigDecimal(60),BigDecimal.ROUND_CEILING)); + productprocess.setOtherHour(productprocess.getOtherHour().divide(new BigDecimal(60),BigDecimal.ROUND_CEILING)); + } + + + loadChildBom(standardMatnr, standardResults, standardBomArrayList, productProcessMaintenanceList); + loadProductProcess(standardMatnr, productProcessMaintenanceList); + } + + //loadChildBom(standardMatnr); + //loadProductProcess(standardMatnr); + //standardMatnr.GenerateStandardCalculate(); + return standardMatnr; + } catch (KNException ex) { + throw ex; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public void CheckAfru(ZcorcAufnr nodeAufnr, int resultindex) { + if (nodeAufnr.hiveSapZcorc.rkst301 > 0) { + double total301 = 0; + double total302 = 0; + double total303 = 0; + double total304 = 0; + for (HiveSapAfru hiveSapAfru : nodeAufnr.hiveSapAfruList) { + total301 += hiveSapAfru.ism02 * hiveSapAfru.unitCost.sbfv; + total302 += hiveSapAfru.ism04 * hiveSapAfru.unitCost.rdfv; + total303 += hiveSapAfru.ism05 * hiveSapAfru.unitCost.flfv; + total304 += hiveSapAfru.ism06 * hiveSapAfru.unitCost.qtfv; + } + if (nodeAufnr.hiveSapAfruList.size() == 0) { + AddMingLog(1, nodeAufnr.hiveSapZcorc.aufnr + ":" + nodeAufnr.hiveSapZcorc.layer + " 未找到报工", resultindex); + return; + } + double diff301 = total301 - nodeAufnr.hiveSapZcorc.rkst301; + if (Math.abs(total301 - nodeAufnr.hiveSapZcorc.rkst301) > 1) { + //logger.info(nodeAufnr.hiveSapZcorc.layer + " 本阶设备费用不等:"+(total301 - nodeAufnr.hiveSapZcorc.rkst301)); + AddMingLog(1, nodeAufnr.hiveSapZcorc.aufnr + ":" + nodeAufnr.hiveSapZcorc.layer + " 本阶设备费用不等:" + diff301, resultindex); + } + double diff302 = total302 - nodeAufnr.hiveSapZcorc.rkst302; + if (Math.abs(total302 - nodeAufnr.hiveSapZcorc.rkst302) > 1) { + //logger.info(nodeAufnr.hiveSapZcorc.layer + " 本阶燃动费用不等:"+(total302 - nodeAufnr.hiveSapZcorc.rkst302)); + AddMingLog(1, nodeAufnr.hiveSapZcorc.aufnr + ":" + nodeAufnr.hiveSapZcorc.layer + " 本阶燃动费用不等:" + diff302, resultindex); + } + double diff303 = total303 - nodeAufnr.hiveSapZcorc.rkst303; + if (Math.abs(total303 - nodeAufnr.hiveSapZcorc.rkst303) > 1) { + //logger.info(nodeAufnr.hiveSapZcorc.layer + " 本阶辅料费用不等:"+(total303 - nodeAufnr.hiveSapZcorc.rkst303)); + AddMingLog(1, nodeAufnr.hiveSapZcorc.aufnr + ":" + nodeAufnr.hiveSapZcorc.layer + " 本阶辅料费用不等:" + diff303, resultindex); + } + double diff304 = total304 - nodeAufnr.hiveSapZcorc.rkst304; + if (Math.abs(total304 - nodeAufnr.hiveSapZcorc.rkst304) > 1) { + //logger.info(nodeAufnr.hiveSapZcorc.layer + " 本阶其他费用不等:"+(total304 - nodeAufnr.hiveSapZcorc.rkst304)); + AddMingLog(1, nodeAufnr.hiveSapZcorc.aufnr + ":" + nodeAufnr.hiveSapZcorc.layer + " 本阶其他费用不等:" + diff304, resultindex); + } + } + } + + public void getHiveProcess(ZcorcAufnr nodeAufnr, int resultindex, boolean bCheck) { + try { + if (nodeAufnr.hiveSapZcorc.rkstlabor <= 0) { + return; + } + Gson gson = new Gson(); + List hiveSapAfruList = afruMap.get(nodeAufnr.hiveSapZcorc.aufnr); + if (nodeAufnr.hiveSapZcorc.aufnr != null && nodeAufnr.hiveSapZcorc.aufnr.equals("000100899757")) { + logger.info("Debug"); + } + if (hiveSapAfruList != null) { + for (HiveSapAfru item : hiveSapAfruList) { + HiveSapAfru hiveSapAfru = gson.fromJson(gson.toJson(item), HiveSapAfru.class); + String month = hiveSapAfru.budat.substring(0, 6); + //如果同一个工单下同样的工序编号和报工日期属于同一个月,则合并工序的时间 + boolean bExist = false; + for (HiveSapAfru hiveSapAfru1 : nodeAufnr.hiveSapAfruList) { + String month2 = hiveSapAfru1.budat.substring(0, 6); + if (hiveSapAfru1.rueck.equals(hiveSapAfru.rueck) && month2.equals(month)) { + hiveSapAfru1.AddArfu(hiveSapAfru); + bExist = true; + break; + } + } + if (!bExist) { + nodeAufnr.hiveSapAfruList.add(hiveSapAfru); + } + } + } + if (bCheck) { + CheckAfru(nodeAufnr, resultindex); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void CalculateStagePrice(ZcorcMatnr nodeMatnr) { + double totalnum = 0; + double totalmaterialprice = 0; + for (String layer : nodeMatnr.childs) { + ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + totalnum += nodeAufnr.hiveSapZcorc.menge;// + for (String layer1 : nodeAufnr.childs) { + ZcorcMatnr nodeMatnr1 = zcorcMatnrMap.get(layer1); + totalmaterialprice += nodeMatnr1.hiveSapZcorc.rkst001; + } + } + //计算工单在上阶物料中的取料比例 + if (totalnum > 0) { + for (String layer : nodeMatnr.childs) { + ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + nodeAufnr.rate = nodeAufnr.hiveSapZcorc.menge / totalnum; + } + } + + + if (totalnum > 0) { + double singleprice = totalmaterialprice / totalnum; + String layer = nodeMatnr.hiveSapZcorc.layer; + if (layer.equals("0-6273-6")) { + singleprice = totalmaterialprice / totalnum; + } + if (nodeMatnr.hiveSapZcorc.unmng > 0) { + nodeMatnr.stageprice = nodeMatnr.hiveSapZcorc.kst001 / nodeMatnr.hiveSapZcorc.unmng - singleprice; + } + } + } + + public int getChildNodeAufnr(ZcorcMatnr nodeMatnr, List pmatnrs, String strindex, int depth, int resultindex, int count) { + if (nodeMatnr.hiveSapZcorc != null) { + Gson gson = new Gson(); + //logger.info(depth+" NodeAufnr " + nodeMatnr.hiveSapZcorc.layer); + String parentlayer = nodeMatnr.hiveSapZcorc.layer; + String idnrk = nodeMatnr.hiveSapZcorc.idnrk; + //String pmatnr=nodeMatnr.hiveSapZcorc.matnr; + String ymonth = nodeMatnr.hiveSapZcorc.ymonth; + String werks = nodeMatnr.hiveSapZcorc.werks; + if (nodeMatnr.hiveSapZcorc.rlayer != null) { + if (!nodeMatnr.hiveSapZcorc.rlayer.trim().equals("")) { + parentlayer = nodeMatnr.hiveSapZcorc.rlayer; + } + } + + List childs = new ArrayList<>(); + List hiveSapZcorcList = tempSapZcorcList.get(parentlayer); + if (hiveSapZcorcList == null) { + return count; + } + //logger.info("getChildNodeAufnr " + parentlayer); + for (HiveSapZcorc hiveSapZcorc : hiveSapZcorcList) { + //if (hiveSapZcorc.ymonth.equals(ymonth) && + // hiveSapZcorc.matnr.equals(idnrk) && + //hiveSapZcorc.werks.equals(werks)&&hiveSapZcorc.aufnr!=null&&(!hiveSapZcorc.aufnr.equals(" "))) { + // hiveSapZcorc.werks.equals(werks)) { + String layer = hiveSapZcorc.layer; + if (layer.equals("0-1525-27-1-83-2-0")) { + logger.info("test"); + } + //if (layer.length() > parentlayer.length() && + // layer.substring(0, parentlayer.length()).equals(parentlayer)) { + //String endsub = layer.substring(parentlayer.length(), layer.length()); + //if (endsub.length() > 3 && endsub.substring(endsub.length() - 2, endsub.length()).equals("-0") && endsub.substring(0, 1).equals("-")) { + // String midsub = endsub.substring(1, endsub.length() - 2); + // if (midsub.indexOf("-") == -1) { + HiveSapZcorc hiveSapZcorc1 = new HiveSapZcorc(); + BeanUtils.copyProperties(hiveSapZcorc, hiveSapZcorc1); + //HiveSapZcorc hiveSapZcorc1 = gson.fromJson(gson.toJson(hiveSapZcorc), HiveSapZcorc.class); + hiveSapZcorc1.ReplaceActual(); + childs.add(hiveSapZcorc1); + +// NodeAufnr nodeAufnr = new NodeAufnr(); +// nodeAufnr.hiveSapZcorc = hiveSapZcorc1; +// FillNodeAufnrAuart(nodeAufnr.hiveSapZcorc); +// getHiveProcess(nodeAufnr); +// getChildZcorcMatnr(nodeAufnr,pmatnrs,depth+1); +// nodeMatnr.childs.add(nodeAufnr); +// CalculateStagePrice(nodeMatnr); + // } + //} + //} + //} + } + + int index = 0; + for (HiveSapZcorc hiveSapZcorc1 : childs) { + index++; + count++; + String layer = hiveSapZcorc1.layer; + if (zcorcAufnrMap.containsKey(layer)) { + nodeMatnr.childs.add(layer); + CalculateStagePrice(nodeMatnr); + continue; + } + String subindex = strindex + "[" + index + "/" + childs.size() + "]"; + logger.info("Count:" + count + " Depth:" + depth + ":" + subindex + ":" + idnrk + ":Layer:" + parentlayer); + ZcorcAufnr nodeAufnr = new ZcorcAufnr(); + nodeAufnr.hiveSapZcorc = hiveSapZcorc1; + //FillNodeAufnrAuart(nodeAufnr.hiveSapZcorc); + getHiveProcess(nodeAufnr, resultindex, false); + count = getChildNodeMatnr(nodeAufnr, pmatnrs, subindex, depth + 1, resultindex, count); + //nodeMatnr.childs.add(nodeAufnr); + zcorcAufnrMap.put(layer, nodeAufnr); + //} + nodeMatnr.childs.add(layer); + if (count == 94) { + logger.info("Debug"); + } + CalculateStagePrice(nodeMatnr); + } + } + return count; + } + + public int getChildNodeMatnr(ZcorcAufnr nodeAufnr, List pmatnrs, String strindex, int depth, int resultindex, int count) { + if (nodeAufnr.hiveSapZcorc != null) { + //count++; + //logger.info(depth+" NodeMatnr " + nodeAufnr.hiveSapZcorc.layer); + String parentlayer = nodeAufnr.hiveSapZcorc.layer; + if (parentlayer.equals("0-1-6-1-87-1-0")) { + logger.info("Debug"); + } + //parentlayer = parentlayer.substring(0, parentlayer.length() - 1) + "%"; + int length = parentlayer.length(); + String idnrk = nodeAufnr.hiveSapZcorc.idnrk; + String ymonth = nodeAufnr.hiveSapZcorc.ymonth; + String werks = nodeAufnr.hiveSapZcorc.werks; + + List childs = new ArrayList<>(); + Gson gson = new Gson(); + List hiveSapZcorcList = tempSapZcorcList.get(parentlayer); + if (hiveSapZcorcList != null) { + + for (HiveSapZcorc hiveSapZcorc : hiveSapZcorcList) { + if (hiveSapZcorc.idnrk == null) { + hiveSapZcorc.idnrk = ""; + } + //if (hiveSapZcorc.ymonth.equals(ymonth) && + // hiveSapZcorc.matnr.equals(idnrk) && + // !hiveSapZcorc.idnrk.equals(idnrk) && + // hiveSapZcorc.werks.equals(werks)) { + String layer = hiveSapZcorc.layer; + //if (layer.length() > parentlayer.length() - 1) { + // if (layer.substring(0, parentlayer.length() - 1).equals(parentlayer.substring(0, parentlayer.length() - 1))) { + //index++; + //List npmatnr=new ArrayList<>(); + //npmatnr.addAll(pmatnrs); + HiveSapZcorc hiveSapZcorc1 = new HiveSapZcorc(); + BeanUtils.copyProperties(hiveSapZcorc, hiveSapZcorc1); + //HiveSapZcorc hiveSapZcorc1 = gson.fromJson(gson.toJson(hiveSapZcorc), HiveSapZcorc.class); + hiveSapZcorc1.ReplaceActual(); + childs.add(hiveSapZcorc1); +// NodeMatnr nodeMatnr = new NodeMatnr(); +// nodeMatnr.hiveSapZcorc = hiveSapZcorc1; +// logger.info("Depth:"+depth+":Layer:"+nodeAufnr.hiveSapZcorc.layer+":index:"+index+" ("+idnrk+"-"+hiveSapZcorc1.idnrk+")"); +// for (String pmatnr:npmatnr){ +// if(pmatnr.equals(hiveSapZcorc1.idnrk)){ +// throw new KNException(0,"物料号循环引用:"+hiveSapZcorc1.idnrk+" "+hiveSapZcorc1.layer); +// } +// } +// npmatnr.add(hiveSapZcorc1.idnrk); +// getChildNodeAufnr(nodeMatnr,npmatnr,depth+1); +// nodeAufnr.childs.add(nodeMatnr); + // } + // } + //} + } + } + + int index = 0; + for (HiveSapZcorc hiveSapZcorc1 : childs) { + index++; + count++; + String layer = hiveSapZcorc1.layer; + //if (hiveSapZcorc1.rlayer != null) { + // layer = hiveSapZcorc1.rlayer; + //} + if (zcorcMatnrMap.containsKey(layer)) { + nodeAufnr.childs.add(layer); + continue; + } + List npmatnr = new ArrayList<>(); + npmatnr.addAll(pmatnrs); + ZcorcMatnr nodeMatnr = new ZcorcMatnr(); + nodeMatnr.hiveSapZcorc = hiveSapZcorc1; + String subindex = strindex + "[" + index + "/" + childs.size() + "]"; + logger.info("Count:" + count + " Depth:" + depth + ":" + subindex + ":Layer:" + nodeAufnr.hiveSapZcorc.layer + " (" + idnrk + "-" + hiveSapZcorc1.idnrk + ")"); + int pindex = 0; + for (String pmatnr : npmatnr) { + pindex++; + if (pmatnr.equals(hiveSapZcorc1.idnrk)) { + if (pindex != npmatnr.size()) { + throw new KNException(0, "物料号循环引用:" + hiveSapZcorc1.idnrk + " " + hiveSapZcorc1.layer); + } + } + } + npmatnr.add(hiveSapZcorc1.idnrk); + count = getChildNodeAufnr(nodeMatnr, npmatnr, subindex, depth + 1, resultindex, count); + //if(layer.equals("0-1-33")) + zcorcMatnrMap.put(layer, nodeMatnr); + nodeAufnr.childs.add(layer); + } + + double totalmaterial = 0; + if (nodeAufnr.hiveSapZcorc.idnrk.equals("MSA241034G0100")) { + logger.info("Debug"); + } + for (String layer : nodeAufnr.childs) { + ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(layer); + totalmaterial += nodeMatnr.hiveSapZcorc.rkst001; + } + + nodeAufnr.stageprice = nodeAufnr.hiveSapZcorc.rkst001 - totalmaterial; + if (nodeAufnr.stageprice > 0) { + logger.info("debug"); + } + } + return count; + } + + + public void getHiveRealCost(ZcorcProduct nodeProduct, int resultindex, String batchymonth) { + try { + int index = 0; + Gson gson = new Gson(); + String tablename = " sap_zcorc_result"; + List hiveSapZcorcs = tempSapZcorcList.get("0"); + //if (hiveSapZcorcs.size() > 0) { + for (HiveSapZcorc hiveSapZcorc : hiveSapZcorcs) { + //if (hiveSapZcorc.matnr.equals(nodeProduct.matnr) && + // hiveSapZcorc.layer.equals(nodeProduct.layer) && + // hiveSapZcorc.aufnr.equals(nodeProduct.aufnr) && + // hiveSapZcorc.idnrk.equals(nodeProduct.matnr)) { + + //HiveSapZcorc hiveSapZcorc2 = gson.fromJson(gson.toJson(hiveSapZcorcs.get(0)), HiveSapZcorc.class); + HiveSapZcorc hiveSapZcorc2 = gson.fromJson(gson.toJson(hiveSapZcorc), HiveSapZcorc.class); + //if(hiveSapZcorc2.aufnr==null||!hiveSapZcorc2.aufnr.equals(nodeProduct.aufnr)){ + // continue; + //} + hiveSapZcorc2.ReplaceActual(); + + ZcorcAufnr nodeAufnr = new ZcorcAufnr(); + nodeAufnr.hiveSapZcorc = hiveSapZcorc2; + //FillNodeAufnrAuart(nodeAufnr.hiveSapZcorc); + getHiveProcess(nodeAufnr, resultindex, batchymonth.equals("")); + //getChildNodeMatnr(nodeAufnr); + //nodeProduct.nodeAufnrs.add(nodeAufnr); + //getTotalSapZcorc(nodeProduct); + List pmatnrs = new ArrayList<>(); + String strindex = ""; + getChildNodeMatnr(nodeAufnr, pmatnrs, strindex, 1, resultindex, index); + nodeProduct.nodeAufnrs.add(nodeAufnr); + zcorcAufnrMap.put(nodeAufnr.hiveSapZcorc.layer, nodeAufnr); + // } + } + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + + public void CheckProductPriceAufnr(ZcorcAufnr nodeAufnr, int resultindex) { + //for (ZcorcAufnr nodeAufnr:zcorcProduct.nodeAufnrs) { + double productprice = nodeAufnr.hiveSapZcorc.rkst0051; + double materialprice = nodeAufnr.hiveSapZcorc.rkst001; + double childprice = 0; + double childmaterial = 0; + for (String layer : nodeAufnr.childs) { + ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(layer); + childprice += nodeMatnr.hiveSapZcorc.rkst0051; + childmaterial += nodeMatnr.hiveSapZcorc.rkst001; + } + childmaterial += nodeAufnr.stageprice; + childprice += nodeAufnr.hiveSapZcorc.getStageProduct(); + double productdiff = Math.abs(childprice - productprice); + if (productdiff > 1) { + //logger.info("工单制费不等:"+nodeAufnr.hiveSapZcorc.layer+" "+productdiff); + AddMingLog(1, "工单制费不等:" + nodeAufnr.hiveSapZcorc.layer + " " + productdiff, resultindex); + } + double mdiff = Math.abs(materialprice - childmaterial); + if (mdiff > 1) { + //logger.info("材料费用不等:"+nodeAufnr.hiveSapZcorc.layer+" "+mdiff); + AddMingLog(1, "材料费用不等:" + nodeAufnr.hiveSapZcorc.layer + " " + mdiff, resultindex); + } + for (String layer : nodeAufnr.childs) { + ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(layer); + CheckProductPriceMatnr(nodeMatnr, resultindex); + } + // } + } + + public void CheckProductPriceMatnr(ZcorcMatnr nodeMatnr, int resultindex) { + double productprice = nodeMatnr.hiveSapZcorc.rkst0051; + double childprice = 0; + for (String layer : nodeMatnr.childs) { + ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + CheckProductPriceAufnr(nodeAufnr, resultindex); + childprice += nodeAufnr.hiveSapZcorc.rkst0051 * nodeAufnr.rate * nodeMatnr.hiveSapZcorc.menge / nodeAufnr.hiveSapZcorc.rpsmng; + } + childprice += nodeMatnr.hiveSapZcorc.getStageProduct(); + if (Math.abs(childprice - productprice) > 1) { + // logger.info("物料制费不等:"+nodeMatnr.hiveSapZcorc.layer+" "+(childprice-productprice)); + } + } + + public boolean AddAufnr(ZcorcAufnrDiff zcorcAufnr, String aufnr) { + boolean bExist = false; + if (aufnr == null) { + return bExist; + } + for (String fnr : zcorcAufnr.aufnrs) { + if (fnr.equals(aufnr)) { + bExist = true; + break; + } + } + if (!bExist) { + zcorcAufnr.aufnrs.add(aufnr); + } + return bExist; + } + + public void AddtoList(Map aufnrDiffList, ZcorcAufnrDiff aufnrDiff, int resultindex, boolean addUse) { + boolean bExist = false; + if(aufnrDiff.matnr.equals("41030020002800")){ + logger.info("Debug"); + } + String month = aufnrDiff.budat; + if (aufnrDiff.budat.length() > 6) { + month = aufnrDiff.budat.substring(0, 6); + } + + //String month = aufnrDiff.budat.substring(0, 6); + //String key = aufnrDiff.costcenter + "-" + aufnrDiff.matnr + "-" + month; + String key = aufnrDiff.matnr; + if (aufnrDiff.costcenter.equals("2000080321") && aufnrDiff.matnr.equals("28500000082601")) { + //logger.info("Debug"); + logger.info(JSON.toJSONString(aufnrDiff)); + } + if (aufnrDiffList.containsKey(key)) { + ZcorcAufnrDiff aufnrDiff1 = aufnrDiffList.get(key); + //for (ZcorcAufnrDiff aufnrDiff1 : aufnrDiffList) { + //if (aufnrDiff.costcenter.equals(aufnrDiff1.costcenter) && aufnrDiff.matnr.equals(aufnrDiff1.matnr)) { + //if (aufnrDiff.budat.length() > 6 && aufnrDiff1.budat.length() > 6) { + //String month1 = aufnrDiff.budat.substring(0, 6); + //String month2 = aufnrDiff1.budat.substring(0, 6); + //if (month1.equals(month2)) { + //if(aufnrDiff.matnr.equals("28800002400600")&&month1.equals("202001")&aufnrDiff.costcenter.equals("2000080482")){ + // logger.info("Debug"); + //} + //boolean bAufnrExist=AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + double totaluse = aufnrDiff1.productuse; + ;//aufnrDiff.productuse + aufnrDiff1.productuse; + if (addUse) { + totaluse = aufnrDiff.productuse + aufnrDiff1.productuse; + } + aufnrDiff1.laborCalculate.mergeReal(aufnrDiff.laborCalculate, addUse); + //if(aufnrDiff.matnr.equals("28100004605000")&&month1.equals("202001")&aufnrDiff.costcenter.equals("2000080217")){ + //logger.info(""+aufnrDiff1.laborCalculate.aufnruse+","+aufnrDiff1.laborCalculate.aufnrnum); + //} + aufnrDiff1.zjCalculate.mergeReal(aufnrDiff.zjCalculate, addUse); + aufnrDiff1.rdCalculate.mergeReal(aufnrDiff.rdCalculate, addUse); + aufnrDiff1.flCalculate.mergeReal(aufnrDiff.flCalculate, addUse); + aufnrDiff1.qtCalculate.mergeReal(aufnrDiff.qtCalculate, addUse); + aufnrDiff1.productuse = totaluse; + //aufnrDiff1.productuse = aufnrDiff1.laborCalculate.aufnruse; + aufnrDiff1.realchildcount = aufnrDiff1.realchildcount + 1; + AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + //aufnrDiff1.realChilds.add(aufnrDiff); + //boolean bExist=AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + //AddMiningAufnrDetail(aufnrDiff.matnr, aufnrDiff.costcenter, aufnrDiff.budat, aufnrDiff, "real", resultindex,aufnrDiff1.realchildcount); + aufnrDiff1.Cal(); + aufnrDiffList.put(key, aufnrDiff1); + + //bExist = true; + //break; + //} +// } else if (aufnrDiff.budat.equals(aufnrDiff1.budat)) { +// //boolean bAufnrExist=AddAufnr(aufnrDiff1, aufnrDiff.aufnr); +// double totaluse = aufnrDiff1.productuse;;//aufnrDiff.productuse + aufnrDiff1.productuse; +// if(addUse){ +// totaluse=aufnrDiff.productuse + aufnrDiff1.productuse; +// } +// //double totaluse = aufnrDiff.productuse + aufnrDiff1.productuse; +// aufnrDiff1.laborCalculate.mergeReal(aufnrDiff.laborCalculate,addUse); +// aufnrDiff1.zjCalculate.mergeReal(aufnrDiff.zjCalculate,addUse); +// aufnrDiff1.rdCalculate.mergeReal(aufnrDiff.rdCalculate,addUse); +// aufnrDiff1.flCalculate.mergeReal(aufnrDiff.flCalculate,addUse); +// aufnrDiff1.qtCalculate.mergeReal(aufnrDiff.qtCalculate,addUse); +// aufnrDiff1.productuse = totaluse; +// aufnrDiff1.realchildcount = aufnrDiff1.realchildcount + 1; +// AddAufnr(aufnrDiff1, aufnrDiff.aufnr); +// //aufnrDiff1.realChilds.add(aufnrDiff); +// //AddMiningAufnrDetail(aufnrDiff.matnr, aufnrDiff.costcenter, aufnrDiff.budat, aufnrDiff, "real", resultindex,aufnrDiff1.realchildcount); +// aufnrDiff1.Cal(); +// +// bExist = true; +// break; +// } + //} + } else { + //if (!bExist) { + Gson gson = new Gson(); + try { + ZcorcAufnrDiff aufnrDiff1 = gson.fromJson(gson.toJson(aufnrDiff), ZcorcAufnrDiff.class); + aufnrDiff1.realchildcount = 1; + AddAufnr(aufnrDiff1, aufnrDiff1.aufnr); + //AddMiningAufnrDetail(aufnrDiff.matnr, aufnrDiff.costcenter, aufnrDiff.budat, aufnrDiff, "real", resultindex,aufnrDiff1.realchildcount); + //aufnrDiff.realChilds.add(aufnrDiff1); + //aufnrDiffList.add(aufnrDiff1); + aufnrDiffList.put(key, aufnrDiff1); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + } + } + + public void AddMiningMaterialDetail(ZcorcMaterialDiff materialDetail, int resultindex) { + //try { +// Gson gson = new Gson(); +// //double diff = totalDiff.realmaterial - totalDiff.stdmaterial; +// //List miningMaterials=new ArrayList<>(); +// //for (MaterialDiff materialDetail : materialDiffList) { +// MiningMaterialdetail miningMaterial = new MiningMaterialdetail(); +// miningMaterial.setMatnr(materialDetail.matnr); +// miningMaterial.setResultid(resultindex); +// //miningMaterial.setAufnr(miningResultWithBLOBs.getAufnr()); +// // miningMaterial.setVersion(miningResultWithBLOBs.getVersion()); +// miningMaterial.setJsondata(gson.toJson(materialDetail)); +// //miningMaterial.setTotaldiff(new BigDecimal(materialDetail.totaldiff)); +// //if (diff != 0) { +// // miningMaterial.setRatio(new BigDecimal(Math.abs(materialDetail.totaldiff / diff))); +// // } else { +// // miningMaterial.setRatio(new BigDecimal(0)); +// // } +// //miningMaterials.add(miningMaterial); +// //materialdetailMapper.insert(miningMaterial); +// if (activeprofile.equals("idle")) { +// amqpService.SendMessage("idle-mining-material-detail", gson.toJson(miningMaterial)); +// } else { +// amqpService.SendMessage("mining-material-detail", gson.toJson(miningMaterial)); +// } + //amqpService.SendMessage("mining-material-detail", gson.toJson(miningMaterial)); + //} + // } catch (Exception e) { + // logger.info(e.getMessage()); + // } + } + + public void AddtoDetail(ZcorcMaterialDiff materialDiff, int resultindex) { + AddMiningMaterialDetail(materialDiff, resultindex); +// if(materialDetailMap.containsKey(materialDiff.matnr)){ +// List materialDiffs=materialDetailMap.get(materialDiff.matnr); +// materialDiffs.add(materialDiff); +// materialDetailMap.put(materialDiff.matnr,materialDiffs); +// }else{ +// List materialDiffs=new ArrayList<>(); +// materialDiffs.add(materialDiff); +// materialDetailMap.put(materialDiff.matnr,materialDiffs); +// } + } + + public void AddtoList(Map materialDiffMap, ZcorcMaterialDiff materialDiff, int resultindex, boolean addDetail) { + if (materialDiff.realuse == 0) { + return; + } + if(materialDiff.matnr.equals("21010120080000")){ + //logger.info("21010120080000"); + } + boolean bExist = false; + if (true) { + //return; + } + if (materialDiffMap.containsKey(materialDiff.matnr)) { + //for (MaterialDiff materialDiff1 : materialDiffList) { + //if (materialDiff.matnr.equals(materialDiff1.matnr)) { + //if(materialDiff.meng==0){ + // return; + + //} + if (materialDiff.matnr.equals("29010030182000")) { + logger.info("Debug"); + //debugList.add(materialDiff); + } + ZcorcMaterialDiff materialDiff1 = materialDiffMap.get(materialDiff.matnr); + double totalcost1 = materialDiff1.realuse * materialDiff1.realcost; + double totalcost2 = materialDiff.realuse * materialDiff.realcost; + double totaluse = materialDiff1.realuse + materialDiff.realuse; + materialDiff1.realuse = totaluse; + materialDiff1.realcost = (totalcost1 + totalcost2) / totaluse; + if (totaluse == 0) { + logger.info("Exception totaluse is 0"); + //materialDiffList.remove(materialDiff1); + //return; + materialDiff1.realcost = 0; + } + + if (addDetail) { + AddtoDetail(materialDiff, resultindex); + } + //AddtoDetail(materialDiff, resultindex); + //materialDiff1.childs.add(materialDiff); + + //materialDiff1.realmap.put(materialDiff.parent, materialDiff.realuse); + bExist = true; + materialDiff1.Cal(); + materialDiffMap.put(materialDiff1.matnr, materialDiff1); + // break; + //} + } else { + materialDiff.Cal(); + AddtoDetail(materialDiff, resultindex); + materialDiffMap.put(materialDiff.matnr, materialDiff); + } + //if (!bExist) { + // materialDiff.Cal(); + // materialDiffList.add(materialDiff); + //} + } + + public void generateAufnrDiff(ZcorcMatnr nodeMatnr, Map materialDiffList, double bomuse, int resultindex, String pos) { + int index = 0; + for (String layer : nodeMatnr.childs) { + String pos1 = pos + "[" + index + "/" + nodeMatnr.childs.size() + "]"; + //logger.info("generateAufnrDiff:" + pos1); + ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + generateAufnrDiff(nodeAufnr, materialDiffList, nodeMatnr.hiveSapZcorc.unmng * bomuse, resultindex, pos1); + index++; + } + if (nodeMatnr.childs.size() == 0 && nodeMatnr.hiveSapZcorc.rkst0051 > 0) { + if (nodeMatnr.hiveSapZcorc.matnr.equals("28100004605000")) { + logger.info("Debug"); + } + ZcorcAufnrDiff aufnrDiff = new ZcorcAufnrDiff(nodeMatnr, bomuse); + AddtoList(materialDiffList, aufnrDiff, resultindex, true); + } + //if(nodeMatnr.childs.size()==0&&nodeMatnr.hiveSapZcorc.) + } + + public void generateAufnrDiff(ZcorcAufnr nodeAufnr, Map materialDiffList, double bomuse, int resultindex, String pos) { + if (nodeAufnr.hiveSapZcorc.aufnr != null && nodeAufnr.hiveSapZcorc.aufnr.equals("000100899758")) { + logger.debug("debug"); + } + if (layerAufnrMap.containsKey(nodeAufnr.hiveSapZcorc.layer)) { + Map aufnrDiffMap = layerAufnrMap.get(nodeAufnr.hiveSapZcorc.layer); + for (ZcorcAufnrDiff zcorcAufnrDiff : aufnrDiffMap.values()) { + //ZcorcAufnrDiff aufnrDiff = new ZcorcAufnrDiff(nodeMatnr, bomuse); + ZcorcAufnrDiff aufnrDiff = JSON.parseObject(JSON.toJSONString(zcorcAufnrDiff), ZcorcAufnrDiff.class); + //if(nodeAufnr.hiveSapZcorc.rpsmng!=0) { + aufnrDiff.productuse = bomuse * aufnrDiff.productuse; + aufnrDiff.Cal(); + AddtoList(materialDiffList, aufnrDiff, resultindex, true); + //}else{ + // logger.info(JSON.toJSONString(nodeAufnr)); + //} + } + } else { + //logger.info("generateAufnrDiff:" + nodeAufnr.hiveSapZcorc.layer); + double totallabor = 0; + double totalproduct = 0; + //boolean bFirst=true; + Map> map = new HashMap<>(); + for (HiveSapAfru hiveSapAfru : nodeAufnr.hiveSapAfruList) { + CostcenterMonth costcenterMonth = new CostcenterMonth(hiveSapAfru); + if (map.containsKey(costcenterMonth)) { + List hiveSapAfrus = map.get(costcenterMonth); + hiveSapAfrus.add(hiveSapAfru); + map.put(costcenterMonth, hiveSapAfrus); + } else { + List hiveSapAfrus = new ArrayList<>(); + hiveSapAfrus.add(hiveSapAfru); + map.put(costcenterMonth, hiveSapAfrus); + } + } + for (CostcenterMonth costcenterMonth : map.keySet()) { + boolean bFirst = true; + for (HiveSapAfru hiveSapAfru : map.get(costcenterMonth)) { + double rate = hiveSapAfru.lmnga / nodeAufnr.hiveSapZcorc.ppsmng; + if (nodeAufnr.hiveSapZcorc.matnr.equals("28100004605000") & hiveSapAfru.kostl.equals("2000080217") & hiveSapAfru.budat.substring(0, 6).equals("202001")) { + logger.info("Debug"); + } + if (nodeAufnr.hiveSapZcorc.ppsmng == 0) { + logger.info("Debug"); + } + if (rate == 0) { + continue; + } + ZcorcAufnrDiff aufnrDiff = new ZcorcAufnrDiff(hiveSapAfru, nodeAufnr.hiveSapZcorc, bomuse * nodeAufnr.rate * rate); + AddtoList(materialDiffList, aufnrDiff, resultindex, bFirst); + totallabor += aufnrDiff.laborCalculate.getTotalRealCost(); + totalproduct += aufnrDiff.totalcostproduct; + if (bFirst) { + bFirst = false; + } + } + } + double diff1 = Math.abs(totallabor - nodeAufnr.hiveSapZcorc.kst003); + if (diff1 > 1) { + logger.info("人工不等:"+nodeAufnr.hiveSapZcorc.layer+" "+diff1); + } + double diff2 = Math.abs(totalproduct - bomuse * nodeAufnr.hiveSapZcorc.getStageProduct() * nodeAufnr.rate / nodeAufnr.hiveSapZcorc.rpsmng); + if (diff2 > 1) { + //logger.info("1制费不等:"+nodeAufnr.hiveSapZcorc.layer+" "+diff2); + AddMingLog(1, "1制费不等:" + nodeAufnr.hiveSapZcorc.layer + " " + diff2, resultindex); + } + + int index = 0; + for (String layer : nodeAufnr.childs) { + String pos1 = pos + "[" + index + "/" + nodeAufnr.childs.size() + "]"; + //logger.info("generateAufnrDiff:" + pos1); + ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(layer); + //double parentuse = nodeMatnr.hiveSapZcorc.menge / nodeMatnr.hiveSapZcorc.rpsmng;//单位用量 + generateAufnrDiff(nodeMatnr, materialDiffList, bomuse * nodeAufnr.rate, resultindex, pos1); + index++; + } + } + } + + public void generateAufnrDiff(ZcorcAufnr nodeAufnr, List materialDiffList, double bomuse, int resultindex, String player) { + if (nodeAufnr.hiveSapZcorc.aufnr != null && nodeAufnr.hiveSapZcorc.aufnr.equals("000100899758")) { + logger.debug("debug"); + } + logger.info("generateAufnrDiff:" + player); + double totallabor = 0; + double totalproduct = 0; + //boolean bFirst=true; + Map> map = new HashMap<>(); + for (HiveSapAfru hiveSapAfru : nodeAufnr.hiveSapAfruList) { + CostcenterMonth costcenterMonth = new CostcenterMonth(hiveSapAfru); + if (map.containsKey(costcenterMonth)) { + List hiveSapAfrus = map.get(costcenterMonth); + hiveSapAfrus.add(hiveSapAfru); + map.put(costcenterMonth, hiveSapAfrus); + } else { + List hiveSapAfrus = new ArrayList<>(); + hiveSapAfrus.add(hiveSapAfru); + map.put(costcenterMonth, hiveSapAfrus); + } + } + for (CostcenterMonth costcenterMonth : map.keySet()) { + boolean bFirst = true; + for (HiveSapAfru hiveSapAfru : map.get(costcenterMonth)) { + double rate = hiveSapAfru.lmnga / nodeAufnr.hiveSapZcorc.ppsmng; + if (nodeAufnr.hiveSapZcorc.matnr.equals("28100004605000") & hiveSapAfru.kostl.equals("2000080217") & hiveSapAfru.budat.substring(0, 6).equals("202001")) { + logger.info("Debug"); + } + ZcorcAufnrDiff aufnrDiff = new ZcorcAufnrDiff(hiveSapAfru, nodeAufnr.hiveSapZcorc, bomuse * nodeAufnr.rate * rate); + AddtoList(materialDiffList, aufnrDiff, resultindex, bFirst); + totallabor += aufnrDiff.laborCalculate.getTotalRealCost(); + totalproduct += aufnrDiff.totalcostproduct; + if (bFirst) { + bFirst = false; + } + } + } + double diff1 = Math.abs(totallabor - nodeAufnr.hiveSapZcorc.kst003); + if (diff1 > 1) { + //logger.info("人工不等:"+nodeAufnr.hiveSapZcorc.layer+" "+diff1); + } + double diff2 = Math.abs(totalproduct - bomuse * nodeAufnr.hiveSapZcorc.getStageProduct() * nodeAufnr.rate / nodeAufnr.hiveSapZcorc.rpsmng); + if (diff2 > 1) { + //logger.info("1制费不等:"+nodeAufnr.hiveSapZcorc.layer+" "+diff2); + AddMingLog(1, "1制费不等:" + nodeAufnr.hiveSapZcorc.layer + " " + diff2, resultindex); + } + for (String layer : nodeAufnr.childs) { + ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(layer); + //double parentuse = nodeMatnr.hiveSapZcorc.menge / nodeMatnr.hiveSapZcorc.rpsmng;//单位用量 + generateAufnrDiff(nodeMatnr, materialDiffList, bomuse * nodeAufnr.rate, resultindex, player + "[" + layer + "]"); + } + } + + public void AddtoList(List aufnrDiffList, ZcorcAufnrDiff aufnrDiff, int resultindex, boolean addUse) { + boolean bExist = false; + //if(aufnrDiff.matnr.equals("0902016938")){ + // logger.info("Debug"); + //} + for (ZcorcAufnrDiff aufnrDiff1 : aufnrDiffList) { + if (aufnrDiff.costcenter.equals(aufnrDiff1.costcenter) && aufnrDiff.matnr.equals(aufnrDiff1.matnr)) { + if (aufnrDiff.budat.length() > 6 && aufnrDiff1.budat.length() > 6) { + String month1 = aufnrDiff.budat.substring(0, 6); + String month2 = aufnrDiff1.budat.substring(0, 6); + if (month1.equals(month2)) { + if (aufnrDiff.matnr.equals("28800002400600") && month1.equals("202001") & aufnrDiff.costcenter.equals("2000080482")) { + logger.info("Debug"); + } + //boolean bAufnrExist=AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + double totaluse = aufnrDiff1.productuse; + ;//aufnrDiff.productuse + aufnrDiff1.productuse; + if (addUse) { + totaluse = aufnrDiff.productuse + aufnrDiff1.productuse; + } + aufnrDiff1.laborCalculate.mergeReal(aufnrDiff.laborCalculate, addUse); + if (aufnrDiff.matnr.equals("28100004605000") && month1.equals("202001") & aufnrDiff.costcenter.equals("2000080217")) { + //logger.info(""+aufnrDiff1.laborCalculate.aufnruse+","+aufnrDiff1.laborCalculate.aufnrnum); + } + aufnrDiff1.zjCalculate.mergeReal(aufnrDiff.zjCalculate, addUse); + aufnrDiff1.rdCalculate.mergeReal(aufnrDiff.rdCalculate, addUse); + aufnrDiff1.flCalculate.mergeReal(aufnrDiff.flCalculate, addUse); + aufnrDiff1.qtCalculate.mergeReal(aufnrDiff.qtCalculate, addUse); + aufnrDiff1.productuse = totaluse; + //aufnrDiff1.productuse = aufnrDiff1.laborCalculate.aufnruse; + aufnrDiff1.realchildcount = aufnrDiff1.realchildcount + 1; + AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + //aufnrDiff1.realChilds.add(aufnrDiff); + //boolean bExist=AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + //AddMiningAufnrDetail(aufnrDiff.matnr, aufnrDiff.costcenter, aufnrDiff.budat, aufnrDiff, "real", resultindex,aufnrDiff1.realchildcount); + aufnrDiff1.Cal(); + + bExist = true; + break; + } + } else if (aufnrDiff.budat.equals(aufnrDiff1.budat)) { + //boolean bAufnrExist=AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + double totaluse = aufnrDiff1.productuse; + ;//aufnrDiff.productuse + aufnrDiff1.productuse; + if (addUse) { + totaluse = aufnrDiff.productuse + aufnrDiff1.productuse; + } + //double totaluse = aufnrDiff.productuse + aufnrDiff1.productuse; + aufnrDiff1.laborCalculate.mergeReal(aufnrDiff.laborCalculate, addUse); + aufnrDiff1.zjCalculate.mergeReal(aufnrDiff.zjCalculate, addUse); + aufnrDiff1.rdCalculate.mergeReal(aufnrDiff.rdCalculate, addUse); + aufnrDiff1.flCalculate.mergeReal(aufnrDiff.flCalculate, addUse); + aufnrDiff1.qtCalculate.mergeReal(aufnrDiff.qtCalculate, addUse); + aufnrDiff1.productuse = totaluse; + aufnrDiff1.realchildcount = aufnrDiff1.realchildcount + 1; + AddAufnr(aufnrDiff1, aufnrDiff.aufnr); + //aufnrDiff1.realChilds.add(aufnrDiff); + //AddMiningAufnrDetail(aufnrDiff.matnr, aufnrDiff.costcenter, aufnrDiff.budat, aufnrDiff, "real", resultindex,aufnrDiff1.realchildcount); + aufnrDiff1.Cal(); + + bExist = true; + break; + } + } + } + if (!bExist) { + Gson gson = new Gson(); + ZcorcAufnrDiff aufnrDiff1 = gson.fromJson(gson.toJson(aufnrDiff), ZcorcAufnrDiff.class); + aufnrDiff1.realchildcount = 1; + AddAufnr(aufnrDiff1, aufnrDiff1.aufnr); + //AddMiningAufnrDetail(aufnrDiff.matnr, aufnrDiff.costcenter, aufnrDiff.budat, aufnrDiff, "real", resultindex,aufnrDiff1.realchildcount); + //aufnrDiff.realChilds.add(aufnrDiff1); + aufnrDiffList.add(aufnrDiff1); + } + } + + public void generateAufnrDiff(ZcorcMatnr nodeMatnr, List materialDiffList, double bomuse, int resultindex, String player) { + for (String layer : nodeMatnr.childs) { + ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + generateAufnrDiff(nodeAufnr, materialDiffList, nodeMatnr.hiveSapZcorc.unmng * bomuse, resultindex, player + "[" + layer + "]"); + } + if (nodeMatnr.childs.size() == 0 && nodeMatnr.hiveSapZcorc.rkst0051 > 0) { + if (nodeMatnr.hiveSapZcorc.matnr.equals("28100004605000")) { + logger.info("Debug"); + } + ZcorcAufnrDiff aufnrDiff = new ZcorcAufnrDiff(nodeMatnr, bomuse); + AddtoList(materialDiffList, aufnrDiff, resultindex, true); + } + //if(nodeMatnr.childs.size()==0&&nodeMatnr.hiveSapZcorc.) + } + + public void generateMateirialDiffAufnr(Map materialDiffMap, String aufnrlayer, double bomuse, int level, String pos, int resultindex, boolean addDetail, int materialcount) { + if (aufnrlayer.equals("0-1-33")) { + logger.info("Level :" + level + " generateMateirialDiff "); + } + //logger.info("generateMateirialDiff "+nodeAufnr.hiveSapZcorc.layer); + //materialcount++; + ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(aufnrlayer); + //logger.info("generateMateirialDiff " + nodeAufnr.hiveSapZcorc.layer); + if (nodeAufnr.hiveSapZcorc.layer.equals("0-1-47-3-1-8-0")) { + logger.info("debug"); + } + int index = 0; + for (String layer : nodeAufnr.childs) { + index++; + materialcount++; + //ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(layer); + String pos1 = pos + "[" + index + "/" + nodeAufnr.childs.size() + "]"; + if (level < 8) { + //logger.info("generateMateirialDiff:" + pos1 + " " + layer); + } + Date dt1 = new Date(); + //logger.info("generateMateirialDiff:" + pos1 + " " + layer); + //materialcount= + generateMateirialDiffMatnr(materialDiffMap, layer, nodeAufnr.rate * bomuse, level + 1, pos1, resultindex, addDetail, materialcount); + Date dt2 = new Date(); + long span = dt2.getTime() - dt1.getTime(); + if (level < 6) { + //logger.info("generateMateirialDiff:" + pos1 + " " + layer); + //logger.info("generateMateirialDiff:("+materialcount+"):"+pos1+" span:"+span); + } + //logger.info(pos1+" span:"+span); + } + if (nodeAufnr.stageprice > 0) { + //Date dt1=new Date(); + ZcorcMaterialDiff materialDiff = new ZcorcMaterialDiff(nodeAufnr, bomuse); + AddtoList(materialDiffMap, materialDiff, resultindex, addDetail); + //Date dt2=new Date(); + //long span=dt2.getTime()-dt1.getTime(); + //logger.info("stageprice span:"+span); + } + //return materialcount; + } + + public void generateMateirialDiffMatnr(Map materialDiffMap, String matnrLayer, double rate, int level, String pos, int resultindex, boolean addDetail, int materialcount) { + //materialcount++; + if (matnrLayer.equals("0-1-33")) { + logger.info("Level :" + level + " generateMateirialDiffMatnr "); + } + ZcorcMatnr nodeMatnr = zcorcMatnrMap.get(matnrLayer); + if (nodeMatnr.hiveSapZcorc.rlayer != "" && nodeMatnr.hiveSapZcorc.rlayer != null) { + matnrLayer = nodeMatnr.hiveSapZcorc.rlayer; + } + if (nodeMatnr.childs.size() == 0) { + if (nodeMatnr.hiveSapZcorc.rkst001 != 0) { + String layer = nodeMatnr.hiveSapZcorc.layer; + if (layer.contains("0-73-5-1-10-1-1")) { + logger.info("Add material diff:" + layer); + } + //if(level<10){ + // logger.info("Level :"+level+" generateMateirialDiff "+nodeMatnr.hiveSapZcorc.layer); + //} + //logger.info("generateMateirialDiff "+layer); + + ZcorcMaterialDiff materialDiff = new ZcorcMaterialDiff(nodeMatnr, rate); + //materialDiff.parent = parent; + //if (nodeMatnr.hiveSapZcorc.rkst0051 > 0) { + + //} + AddtoList(materialDiffMap, materialDiff, resultindex, addDetail); + } + } else { + //外协件有本阶材料成本 + //if (nodeMatnr.hiveSapZcorc.ebeln.trim().length() > 0) { +// if (nodeMatnr.stageprice > 0) { +// MaterialDiff materialDiff = new MaterialDiff(nodeMatnr, rate); +// materialDiff.realcost = nodeMatnr.stageprice; +// //materialDiff.meng=0; +// AddtoList(materialDiffList, materialDiff); +// } + } + double parentuse = nodeMatnr.hiveSapZcorc.menge / nodeMatnr.hiveSapZcorc.rpsmng; + if (parentuse != 0) { + if (rlayerMatnrMap.containsKey(matnrLayer)) { + Map zcorcMaterialDiffMap = rlayerMatnrMap.get(matnrLayer); + for (ZcorcMaterialDiff zcorcMaterialDiff : zcorcMaterialDiffMap.values()) { + ZcorcMaterialDiff materialDiff = JSON.parseObject(JSON.toJSONString(zcorcMaterialDiff), ZcorcMaterialDiff.class); + materialDiff.realuse = materialDiff.realuse * rate * parentuse;//单位用量 + AddtoList(materialDiffMap, materialDiff, resultindex, addDetail); + } + } else { + int index = 0; + for (String layer : nodeMatnr.childs) { + index++; + materialcount++; + String pos1 = pos + "(" + index + "/" + nodeMatnr.childs.size() + ")"; + //logger.info("generateMateirialDiff:" + pos + " " + layer); + //ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + //materialcount= + generateMateirialDiffAufnr(materialDiffMap, layer, parentuse * rate, level + 1, pos1, resultindex, addDetail, materialcount); + } + } + } + //return materialcount; + } + + + //计算累计成本 + public void CalculateAccuCost(StandardMatnr standardMatnr, double bomuse) { + if (standardMatnr.childs.size() == 0) { + standardMatnr.dosage = standardMatnr.getParentUse() * bomuse; + standardMatnr.CalTotal(); + } else { + for (StandardMatnr matnr : standardMatnr.childs) { + CalculateAccuCost(matnr, bomuse * standardMatnr.getParentUse()); + standardMatnr.accu_stage.labor += matnr.getParentUse() * (matnr.accu_stage.labor + matnr.stage.labor); + standardMatnr.accu_stage.equip += matnr.getParentUse() * (matnr.accu_stage.equip + matnr.stage.equip); + standardMatnr.accu_stage.auxi += matnr.getParentUse() * (matnr.accu_stage.auxi + matnr.stage.auxi); + standardMatnr.accu_stage.burning += matnr.getParentUse() * (matnr.accu_stage.burning + matnr.stage.burning); + standardMatnr.accu_stage.other += matnr.getParentUse() * (matnr.accu_stage.other + matnr.stage.other); + standardMatnr.accu_stage.price += matnr.getParentUse() * (matnr.accu_stage.price + matnr.stage.price); + standardMatnr.accu_stage.price_material += matnr.getParentUse() * (matnr.accu_stage.price_material + matnr.stage.price_material); + standardMatnr.accu_stage.price_edcu += matnr.getParentUse() * (matnr.accu_stage.price_edcu + matnr.stage.price_edcu); + standardMatnr.accu_stage.price_em += matnr.getParentUse() * (matnr.accu_stage.price_em + matnr.stage.price_em); + //standardMatnr.accu_stage.price7525 += matnr.getParentUse() * (matnr.accu_stage.price7525 + matnr.stage.price7525); + //standardMatnr.accu_stage.price7525_material += matnr.getParentUse() * (matnr.accu_stage.price7525_material + matnr.stage.price7525_material); + // standardMatnr.accu_stage.price7525_edcu += matnr.getParentUse() * (matnr.accu_stage.price7525_edcu + matnr.stage.price7525_edcu); + // standardMatnr.accu_stage.price7525_em += matnr.getParentUse() * (matnr.accu_stage.price7525_em + matnr.stage.price7525_em); + //standardMatnr.accu_stage.price+=matnr.parentUse*matnr.getTotal(); + //standardMatnr.accu_stage.price7525+=matnr.parentUse*matnr.getTotal7525(); + } + standardMatnr.dosage = standardMatnr.getParentUse() * bomuse; + standardMatnr.CalTotal(); + } + } + + + public void FindNode(String matnr, String ymonth, String werks, String version, String aufnr, String batchymonth, boolean saveDetail) { + int resultindex = -1; + try { + + logger.info("FindNode " + matnr + " " + aufnr + " " + version); + AppSceneCostMiningResult miningResultWithBLOBs = new AppSceneCostMiningResult(); + miningResultWithBLOBs.setStartdate(new Date()); + miningResultWithBLOBs.setMatnr(matnr); + miningResultWithBLOBs.setAufnr(aufnr); + //miningResultWithBLOBs.setWbs(posid); + miningResultWithBLOBs.setYmonth(ymonth); + miningResultWithBLOBs.setVersion(version); + miningResultWithBLOBs.setWerks(werks); + //miningResultWithBLOBs.setLgort(getlgort(werks, matnr, posid, ymonth)); + //miningResultWithBLOBs.setPpsmng(new Double(35)); + miningResultWithBLOBs.setTotalreal(new Double(0)); + miningResultWithBLOBs.setTotalstd(new Double(0)); + miningResultWithBLOBs.setBatchymonth(batchymonth); + + iAppSceneCostMiningResultService.save(miningResultWithBLOBs); + + //LoadMiningReason(); + resultindex = miningResultWithBLOBs.getId(); + + //updateMiningprojectcate(miningResultWithBLOBs); + + + //resultindex = SetStatus(miningResultWithBLOBs, "7%"); + //miningResultWithBLOBs.setStatus("0%"); + //StandardMatnr standardMatnr = standardCostService.loadStandardCost2(matnr, version, nodeProduct.nodeAufnr.hiveSapZcorc.werks); + + //先删除旧的记录,生成新的id + //miningService.DeleteOldMiningResult(miningResultWithBLOBs); + //resultindex = SetStatus(miningResultWithBLOBs, "7%"); + + //miningService.UpdateMiningResultBlobs(miningResultWithBLOBs); + InitTempSapZcorc2(matnr, werks, aufnr, ymonth, resultindex); + LoadMiningReason(); + SetStatus(miningResultWithBLOBs, "10%"); + + + Gson gson = new Gson(); + ZcorcProduct nodeProduct = new ZcorcProduct(matnr, "", werks, "0-1-0", version); + + StandardMatnr standardMatnr = loadStandardCost2(matnr, version, werks); + //CalculateAccuCost(standardMatnr, 1); + //StandardMatnr standardMatnr = standardCostService.processStandardCost(matnr, version, nodeProduct.nodeAufnr.hiveSapZcorc.werks, nodeProduct.batch); + //getProductBatch(nodeProduct); + getHiveRealCost(nodeProduct, resultindex, batchymonth); + for (ZcorcAufnr zcorcAufnr : nodeProduct.nodeAufnrs) { + CheckProductPriceAufnr(zcorcAufnr, resultindex); + } + //CheckProductPriceAufnr(nodeProduct.no,resultindex); + + SetStatus(miningResultWithBLOBs, "20%"); + //miningService.UpdateMiningResultBlobs(miningResultWithBLOBs); + DateTime dt1 = DateTime.now(); + logger.info(JSON.toJSONString(rlayers)); + + //先计算参考层级的物料 + HashSet aufnrLayers = new HashSet<>(); + int rlayerindex = 0; + TreeSet layers = new TreeSet<>(new Comparator() { + @Override + public int compare(String o1, String o2) { + if (o1.equals(o2)) { + return 0; + } else if (o1.length() < o2.length()) { + return 1; + } else { + return -1; + } + //return o1 materialDiffMap = new HashMap<>(); + generateAufnrDiff(zcorcAufnr, materialDiffMap, 1, resultindex, ""); + layerAufnrMap.put(rlayer, materialDiffMap); + } + rlayerindex++; + } + + //生成实际材料费 + List realMaterialDiffList = new ArrayList<>(); + Map realMaterialDiffMap = new HashMap<>(); + Map materialDiffMap = new HashMap<>(); + //materialDiffMap.clear(); + //materialDetailMap.clear(); + double rpsmng = nodeProduct.getRpsmng(); + int materialcount = 0; + int nodeaufnrindex = 0; + for (ZcorcAufnr zcorcAufnr : nodeProduct.nodeAufnrs) { + logger.info("calculate nodeAufnrs:[" + nodeaufnrindex + "/" + nodeProduct.nodeAufnrs.size() + "]"); + generateMateirialDiffAufnr(materialDiffMap, zcorcAufnr.hiveSapZcorc.layer, zcorcAufnr.hiveSapZcorc.rpsmng / rpsmng, 1, "", resultindex, saveDetail, materialcount); + nodeaufnrindex++; + } + SetStatus(miningResultWithBLOBs, "25%"); + for (ZcorcMaterialDiff materialDiff : materialDiffMap.values()) { + realMaterialDiffList.add(materialDiff); + //if (materialDiff.matnr.equals("0501060052")) { + // logger.info("Debug"); + //} + } + DateTime dt2 = DateTime.now(); + //long span = dt2.toDate().getTime() - dt1.toDate().getTime(); + //logger.info("20%-30% span:" + span); + //String json=gson.toJson(realMaterialDiffList); + SetStatus(miningResultWithBLOBs, "30%"); + double totalmaterial = 0; + for (ZcorcMaterialDiff materialDiff : realMaterialDiffList) { + totalmaterial += materialDiff.realuse * materialDiff.realcost; + } + double mdiff = Math.abs(totalmaterial - nodeProduct.getPrice()); + if (Math.abs(mdiff) > 1) { + //logger.info("实际材料费用不等:" + mdiff); + AddMingLog(1, "实际材料费用不等:" + mdiff, resultindex); + } + + //生成实际工费和制费 + List realAufnrList = new ArrayList<>(); + Map realAufnrMap = new HashMap<>(); + //int aufnrindex=0; + for (ZcorcAufnr zcorcAufnr : nodeProduct.nodeAufnrs) { + //logger.info("generateAufnrDiff:["+aufnrindex+"/"+nodeProduct.nodeAufnrs.size()+"]"); + generateAufnrDiff(zcorcAufnr, realAufnrMap, zcorcAufnr.hiveSapZcorc.rpsmng / rpsmng, resultindex, ""); + //aufnrindex++; + } + for (ZcorcAufnrDiff zcorcAufnrDiff : realAufnrMap.values()) { + realAufnrList.add(zcorcAufnrDiff); + } + SetStatus(miningResultWithBLOBs, "40%"); + double totalproductcost = 0; + double totalreallabor = 0; + for (ZcorcAufnrDiff aufnrDiff : realAufnrList) { + totalproductcost += aufnrDiff.totalcostproduct; + totalreallabor += aufnrDiff.totalcostlabor; + } + double realproductdiff = Math.abs(totalproductcost - nodeProduct.getKst005()); + if (realproductdiff > 1) { + //logger.info("实际制费不等:" + realproductdiff); + AddMingLog(1, "实际制费不等:" + realproductdiff, resultindex); + } + double reallabordiff = Math.abs(totalreallabor - nodeProduct.getKst003()); + if (realproductdiff > 1) { + //logger.info("实际人工不等:" + reallabordiff); + AddMingLog(1, "实际人工不等:" + reallabordiff, resultindex); + } + //logger.info("Total product cost:" + totalproductcost); + //miningService.InsertAufnrDiff(realAufnrList); + + //计算标准成本 + //StandardMatnr standardMatnr = standardCostService.processStandardCost(matnr, version, nodeProduct.nodeAufnr.hiveSapZcorc.werks, nodeProduct.batch); + //StandardMatnr standardMatnr = standardCostService.loadStandardCost2(matnr, version, nodeProduct.nodeAufnr.hiveSapZcorc.werks); + //SetStatus(miningResultWithBLOBs,"50%"); + + //miningService.UpdateMiningResultBlobs(miningResultWithBLOBs); + //logger.info("40%"); + + + //生成标准材料费 + List stdMaterialDiffList = new ArrayList<>(); + Map materialMap = getVersionMaterialMap(standardMatnr.version); + generateZcorcMaterialDiff(standardMatnr, stdMaterialDiffList, 1, materialMap); + CheckStdMaterial(standardMatnr, resultindex); + + double stdmtotal = 0; + for (ZcorcMaterialDiff materialDiff : stdMaterialDiffList) { + stdmtotal += materialDiff.standarduse * materialDiff.standardcost; + } + double smdiff = Math.abs(stdmtotal - standardMatnr.stage.price - standardMatnr.accu_stage.price); + if (Math.abs(smdiff) > 1) { + //logger.info("标准材料费用不等:" + smdiff); + AddMingLog(1, "标准材料费用不等:" + smdiff, resultindex); + } + SetStatus(miningResultWithBLOBs, "50%"); + //比较实际材料和标准材料 + CombinMaterialDiff(realMaterialDiffList, stdMaterialDiffList); + + double stdmtotal1 = 0; + for (ZcorcMaterialDiff materialDiff : realMaterialDiffList) { + stdmtotal1 += materialDiff.standarduse * materialDiff.standardcost; + } + //FindMaterialReason(realMaterialDiffList); + + + //String jsonmaterialDiffList = gson.toJson(realMaterialDiffList); + //miningResultWithBLOBs.setMdetail(jsonmaterialDiffList); + SetStatus(miningResultWithBLOBs, "60%"); + + + //生成标准工费和制费 + List aufnrDiffs = new ArrayList<>(); + generateAufnrDiff(standardMatnr, aufnrDiffs, 1); + //SetStatus(miningResultWithBLOBs,"70%"); + //比较实际和标准的工费和制费 + CombinAufnrDiff(realAufnrList, aufnrDiffs); + + + double totallabor = 0; + double totalproduct = 0; + for (ZcorcAufnrDiff aufnrDiff : realAufnrList) { + totallabor += aufnrDiff.laborCalculate.getTotalStdCost(); + totalproduct += aufnrDiff.getStdProductcost(); + } + double difflabor = totallabor - standardMatnr.stage.labor - standardMatnr.accu_stage.labor; + if (Math.abs(difflabor) > 1) { + //logger.info("标准人工费用不等:"+difflabor); + AddMingLog(1, "标准人工费用不等:" + difflabor, resultindex); + } + double diffproduct = totalproduct - standardMatnr.stage.getproduct() - standardMatnr.accu_stage.getproduct(); + if (Math.abs(diffproduct) > 1) { + //logger.info("标准制费不等:"+diffproduct); + AddMingLog(1, "标准制费不等:" + diffproduct, resultindex); + } + //logger.info("77%"); + + //String jsonaufnrDiffs = gson.toJson(realAufnrList); + //miningResultWithBLOBs.setLabordetail(jsonaufnrDiffs); + SetStatus(miningResultWithBLOBs, "70%"); + //miningResultWithBLOBs.setStatus("80%"); + //miningService.UpdateMiningResultBlobs(miningResultWithBLOBs); + //logger.info("80%"); + + + //生成总结果 + TotalDiff totalDiff = getTotalDiff(nodeProduct, standardMatnr); + CalculateReason(totalDiff, realMaterialDiffList, realAufnrList); + //miningResultWithBLOBs.setTotal(gson.toJson(totalDiff)); + miningResultWithBLOBs.setTotalreal(totalDiff.realtotal); + miningResultWithBLOBs.setTotalstd(totalDiff.stdtotal); + if (totalDiff.stdtotal > 0) { + double percent = Math.abs(totalDiff.realtotal - totalDiff.stdtotal) * 100 / totalDiff.stdtotal; + miningResultWithBLOBs.setPercent(percent); + } + + miningResultWithBLOBs.setRealmaterial(totalDiff.realmaterial); + miningResultWithBLOBs.setReallabor(totalDiff.reallabor); + miningResultWithBLOBs.setRealproductcost(totalDiff.realproduct); + + miningResultWithBLOBs.setStdmaterial(totalDiff.stdmaterial); + miningResultWithBLOBs.setStdlabor(totalDiff.stdlabor); + miningResultWithBLOBs.setStdproductcost(totalDiff.stdproduct); + + miningResultWithBLOBs.setEnddate(new Date()); + //miningService.AddMiningJson(gson.toJson(nodeProduct),gson.toJson(standardMatnr)); + //miningResultWithBLOBs.setNodeproduct(gson.toJson(nodeProduct)); + //miningResultWithBLOBs.setStdproduct(gson.toJson(standardMatnr)); + + AddOtherDiff(nodeProduct, totalDiff); + + + AddZcorcMiningAufnr(miningResultWithBLOBs, realAufnrList, totalDiff, resultindex); + SetStatus(miningResultWithBLOBs, "80%"); + AddMiningZcorcMaterial(miningResultWithBLOBs, realMaterialDiffList, totalDiff, resultindex); + SetStatus(miningResultWithBLOBs, "90%"); + AddMiningDiff(totalDiff, resultindex); + SetStatus(miningResultWithBLOBs, "95%"); + //miningService.AddMiningJson(nodeProduct,resultindex); + SetStatus(miningResultWithBLOBs, "99%"); + + // miningService.UpdateMiningResultBlobs(miningResultWithBLOBs); + SetStatus(miningResultWithBLOBs, "已完成"); + + //updateminingtransfer(miningResultWithBLOBs); + + ClearCach(); + ClearCach(miningResultWithBLOBs.getVersion()); + //ClearCache(); + logger.info(matnr + " Finished!"); + } catch (KNException ex) { + ClearCach(); + //throw ex; + AddMingLog(-1, "KNException:" + matnr + " " + ex.getErr(), resultindex); + //logger.info("KNException:"+matnr+" "+aufnr+" "+ex.getErr()); + CancelMiningResult(werks, matnr, "", version, ex.getErr()); + } catch (Exception e) { + ClearCach(); + e.printStackTrace(); + AddMingLog(-1, "Exception:" + matnr + " " + e.getMessage(), resultindex); + CancelMiningResult(werks, matnr, "", version, e.getMessage()); + } + } + + public void CombinAufnrDiff(List realMaterialDiff, List stdMaterialDiff) { + Gson gson = new Gson(); + for (ZcorcAufnrDiff smd : realMaterialDiff) { + double realcount = 0; + for (ZcorcAufnrDiff rmd : realMaterialDiff) { + //if (smd.costcenter.equals(rmd.costcenter) && smd.matnr.equals(rmd.matnr)) { + if (smd.matnr.equals(rmd.matnr)) { + realcount += rmd.laborCalculate.aufnruse; + } + } + smd.totalproductuse = realcount; + } + for (AufnrDiff smd : stdMaterialDiff) { + boolean bExist = false; + if (smd.matnr.equals("28800002400600")) { + logger.info("Debug"); + } + //double realcount=0; + for (ZcorcAufnrDiff rmd : realMaterialDiff) { + //if (smd.costcenter.equals(rmd.costcenter) && smd.matnr.equals(rmd.matnr)) { + if (smd.matnr.equals(rmd.matnr)) { + // realcount+=rmd.laborCalculate.aufnruse; + bExist = true; + break; + } + } + if (smd.matnr.equals("0902016938")) { + logger.info("Debug"); + } + + if (bExist) { + for (ZcorcAufnrDiff rmd : realMaterialDiff) { + //if (smd.processname.equals(rmd.processname) && smd.costcenter.equals(rmd.costcenter) && + // smd.matnr.equals(rmd.matnr)) { + // if (smd.costcenter.equals(rmd.costcenter) && smd.matnr.equals(rmd.matnr)) { + if (smd.matnr.equals(rmd.matnr)) { + rmd.MergeStandard(smd, rmd.totalproductuse); + //rmd.totalproductuse=realcount; + rmd.totalbomuse = smd.bomuse; + //rmd.productProcessMaintenance=smd.productProcessMaintenance; + //rmd.productProcessMaintenance = smd.productProcessMaintenance; + //rmd.batch = smd.batch; + //rmd.bomuse = smd.bomuse; + //bExist = true; + //break; + } + } + } else { + ZcorcAufnrDiff zcorcAufnrDiff = gson.fromJson(gson.toJson(smd), ZcorcAufnrDiff.class); + zcorcAufnrDiff.totalbomuse = zcorcAufnrDiff.bomuse; + realMaterialDiff.add(zcorcAufnrDiff); + } + //if (!bExist) { + //Gson gson=new Gson(); + // ZcorcAufnrDiff zcorcAufnrDiff = gson.fromJson(gson.toJson(smd), ZcorcAufnrDiff.class); + // realMaterialDiff.add(zcorcAufnrDiff); + //} + } + + for (ZcorcAufnrDiff aufnrDiff : realMaterialDiff) { + AppSceneCostMaterial material1 = getMaterial(aufnrDiff.matnr); + if (material1 != null) { + aufnrDiff.materialname = material1.getProductName(); + } + //if (costCenterMap.containsKey(aufnrDiff.costcenter)) { + // aufnrDiff.costcentername = costCenterMap.get(aufnrDiff.costcenter).getCostCenterName(); + //} + + FindAufnrReason(aufnrDiff); + + } + } + + public void FindAufnrReason(ZcorcAufnrDiff aufnrDiff) { + //if (aufnrDiff.hiveSapAfru != null && aufnrDiff.productProcessMaintenance != null) { + if (Math.abs(aufnrDiff.laborCalculate.realuse - aufnrDiff.laborCalculate.standarduse) > 1) { + aufnrDiff.laborcode = "3101"; + aufnrDiff.laborreason = getReason(aufnrDiff.laborcode); + } else if (aufnrDiff.laborCalculate.realcost != aufnrDiff.laborCalculate.standardcost) { + aufnrDiff.laborcode = "3201"; + aufnrDiff.laborreason = getReason(aufnrDiff.laborcode); + } + + double productrealuse = aufnrDiff.getProductRealUse(); + double productstduse = aufnrDiff.getProductStdUse(); + if (Math.abs(productrealuse - productstduse) > 1) { + //if (Math.abs(aufnrDiff.getProductNumDiff()) > Math.abs(aufnrDiff.getProductDiff())) { + aufnrDiff.productcode = "3101"; + aufnrDiff.productreason = getReason(aufnrDiff.productcode); + } else if (Math.abs(aufnrDiff.getProductDiff()) > 1) { + aufnrDiff.productcode = "3201"; + aufnrDiff.productreason = getReason(aufnrDiff.productcode); + } + + + // } + if (aufnrDiff.laborcode == null) { + aufnrDiff.laborcode = "3101"; + aufnrDiff.laborreason = getReason(aufnrDiff.laborcode); + } + + if (aufnrDiff.productcode == null) { + aufnrDiff.productcode = "3101"; + aufnrDiff.productreason = getReason(aufnrDiff.productcode); + } + } + + public void generateAufnrDiff(StandardMatnr standardMatnr, List aufnrDiffList, double parentuse) { + if (standardMatnr.productProcessMaintenanceList.size() > 0) { + boolean bAdduse = true; + for (AppSceneCostStandardProductprocess productProcessMaintenance : standardMatnr.productProcessMaintenanceList) { + //HourRate hourRate=getHourRate(productProcessMaintenance.getCostCenterCode(),productProcessMaintenance.getFactory()); + AufnrDiff aufnrDiff = new AufnrDiff(productProcessMaintenance, parentuse * standardMatnr.getParentUse()); + AddtoList(aufnrDiffList, aufnrDiff, bAdduse); + bAdduse = false; + } + } + + for (StandardMatnr standardMatnr1 : standardMatnr.childs) { + generateAufnrDiff(standardMatnr1, aufnrDiffList, standardMatnr.getParentUse() * parentuse); + } + } + + public void AddtoList(List aufnrDiffList, AufnrDiff aufnrDiff, boolean adduse) { + boolean bExist = false; + for (AufnrDiff aufnrDiff1 : aufnrDiffList) { + if (aufnrDiff.matnr.equals("28800002400600")) { + logger.info("Debug"); + } + //if (aufnrDiff.costcenter.equals(aufnrDiff1.costcenter) && + // aufnrDiff.matnr.equals(aufnrDiff1.matnr)) { + if (aufnrDiff.matnr.equals(aufnrDiff1.matnr)){ + + //double totaluse = aufnrDiff.bomuse + aufnrDiff1.bomuse; + double totaluse = aufnrDiff1.bomuse; + if (adduse) { + totaluse = aufnrDiff.bomuse + aufnrDiff1.bomuse; + } + aufnrDiff1.laborCalculate.mergeStd(aufnrDiff.laborCalculate, adduse); + aufnrDiff1.zjCalculate.mergeStd(aufnrDiff.zjCalculate, adduse); + aufnrDiff1.rdCalculate.mergeStd(aufnrDiff.rdCalculate, adduse); + aufnrDiff1.flCalculate.mergeStd(aufnrDiff.flCalculate, adduse); + aufnrDiff1.qtCalculate.mergeStd(aufnrDiff.qtCalculate, adduse); + aufnrDiff1.bomuse = totaluse; + aufnrDiff1.stdChilds.add(aufnrDiff); + aufnrDiff1.Cal(); + + bExist = true; + break; + } + } + if (!bExist) { + aufnrDiffList.add(aufnrDiff); + } + } + + public void CombinMaterialDiff(List realMaterialDiff, List stdMaterialDiff) { + for (ZcorcMaterialDiff smd : stdMaterialDiff) { + if(smd.getMatnr().equals("42010040003800")){ + logger.info("debug"); + } + boolean bExist = false; + for (ZcorcMaterialDiff rmd : realMaterialDiff) { + if (smd.matnr.equals(rmd.matnr)) { + rmd.standarduse = smd.standarduse; + rmd.standardcost = smd.standardcost; + for (String key : smd.stdmap.keySet()) { + rmd.stdmap.put(key, smd.stdmap.get(key)); + } + //rmd.stdmap = smd.stdmap; + rmd.Cal(); + bExist = true; + break; + } + } + //标准有,实际没有的物料 + if (!bExist) { + smd.Cal(); + realMaterialDiff.add(smd); + } + } + + //实际有,标准没有的物料 + for (ZcorcMaterialDiff rmd : realMaterialDiff) { + if (rmd.standarduse == 0) { + rmd.standardcost = rmd.realcost; + rmd.Cal(); + } + } + + for (ZcorcMaterialDiff materialDiff : realMaterialDiff) { + fillMaterialTree(materialDiff); + //if (materialDiff.stdmap.size() > 0 && materialDiff.childs.size() > 0) { + FindReason(materialDiff); + // } + } + + //找替换关系 + //FindMaterialReason(realMaterialDiff); + + //把剩下的都归类为尾差 + for (ZcorcMaterialDiff materialDiff : realMaterialDiff) { + if (materialDiff.code == null) { + if (materialDiff.numdiff < 0.1 && materialDiff.numdiff != 0) { + materialDiff.code = "1199"; + materialDiff.reason = getReason(materialDiff.code); + } + } + } + } + + public void FindReason(ZcorcMaterialDiff materialDiff) { + //判断物料标准用量和实际用量不一样的原因,量差 + if (Math.abs(materialDiff.standarduse - materialDiff.realuse) > 0.01) { + double numdiff = materialDiff.standarduse - materialDiff.realuse; + if (materialDiff.matnr == null || materialDiff.productname == null) { + return; + } + if (materialDiff.hiveSapZcorc != null) { + materialDiff.code = "1199"; + materialDiff.reason = getReason(materialDiff.code); + } else { + materialDiff.code = "1199"; + materialDiff.reason = getReason(materialDiff.code); + } + if(mapZtmmx004.containsKey(materialDiff.getMatnr())){ + List list=mapZtmmx004.get(materialDiff.getMatnr()); + for (AppSceneCostSapZtmmx004 ztmmx004:list){ + String txt1 = ztmmx004.getZyylbA09(); + String txt2 = ztmmx004.getZyylbA10(); + String txt = txt1+txt2; + if(txt.contains("设计更改超领")){ + materialDiff.code = "1101"; + materialDiff.reason = getReason(materialDiff.code); + } + if(txt.contains("过程不良超领")){ + materialDiff.code = "1102"; + materialDiff.reason = getReason(materialDiff.code); + } + if(txt.contains("制程损耗超领")){ + materialDiff.code = "1103"; + materialDiff.reason = getReason(materialDiff.code); + } + if(txt.contains("拉力试验超领")){ + materialDiff.code = "1104"; + materialDiff.reason = getReason(materialDiff.code); + } + if(txt.contains("设备调度超领")){ + materialDiff.code = "1105"; + materialDiff.reason = getReason(materialDiff.code); + } + if(txt.contains("设计更改超领")){ + materialDiff.code = "1101"; + materialDiff.reason = getReason(materialDiff.code); + } + } + } + } + if (Math.abs(materialDiff.standardcost - materialDiff.realcost) > 0.01) { + //价格不一样,去采购记录里面找价格变更记录 + if (materialDiff.realuse > 0) { + //外协件 + String ebeln = materialDiff.hiveSapZcorc.ebeln; + + if (ebeln != null && ebeln.trim().length() > 0) { + materialDiff.pricecode = "2102"; + materialDiff.pricereason = getReason(materialDiff.pricecode); + } else { + materialDiff.pricecode = "2101"; + materialDiff.pricereason = getReason(materialDiff.pricecode); + } + } + } + } + + public AppSceneCostMaterial getMaterial(String matnr) { + try { + if (materialMap.containsKey(matnr)) { + return materialMap.get(matnr); + } else { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("material_number", matnr); + List materialList = iAppSceneCostMaterialService.list(queryWrapper); + //MaterialExample example = new MaterialExample(); + //MaterialExample.Criteria criteria = example.createCriteria(); + //criteria.andMaterialNumberEqualTo(matnr); + //List materialList = materialMapper.selectByExample(example); + if (materialList.size() > 0) { + materialMap.put(matnr, materialList.get(0)); + return materialList.get(0); + } + logger.info("Cannot find material " + matnr); + } + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public void fillMaterialTree(ZcorcMaterialDiff materialDiff) { + AppSceneCostMaterial material1 = getMaterial(materialDiff.matnr); + if (materialDiff.hiveSapZcorc != null) { + materialDiff.productname = materialDiff.hiveSapZcorc.productname; + } + //materialDiff.productname=materialDiff.hiveSapZcorc.productname; + if (material1 != null) { + if (materialDiff.productname == null) { + materialDiff.productname = material1.getProductName(); + } else if (materialDiff.productname.equals("")) { + materialDiff.productname = material1.getProductName(); + } + //materialDiff.productname = material1.getProductName(); + materialDiff.productcategory = material1.getProductCategory(); + materialDiff.materialtype = material1.getMaterialType(); + materialDiff.graphicnumber = material1.getGraphNumber(); + } + } + + public void CheckStdMaterial(StandardMatnr standardMatnr, int resultindex) { + double price_e = standardMatnr.accu_stage.price; + double childprice = 0; + for (StandardMatnr standardMatnr1 : standardMatnr.childs) { + double price_e1 = standardMatnr1.stage.price + standardMatnr1.accu_stage.price; + if (standardMatnr1.accu_stage.price > 0) { + CheckStdMaterial(standardMatnr1, resultindex); + } + //ZcorcAufnr nodeAufnr = zcorcAufnrMap.get(layer); + //CheckProductPriceAufnr(nodeAufnr, resultindex); + if (standardMatnr1.standardBom == null || standardMatnr1.standardBom.getMenge() == null) { + logger.info("debug"); + } + childprice += price_e1 * standardMatnr1.standardBom.getMenge().doubleValue(); + } + //childprice += standardMatnr.stage.price; + if (Math.abs(childprice - price_e) > 1) { + logger.info("标准物料制费不等:" + standardMatnr.layer); + } + } + + public void generateZcorcMaterialDiff(StandardMatnr standardMatnr, List materialDiffList, double parentuse, Map materialMap) { + if (standardMatnr.stage.price > 0) { + ZcorcMaterialDiff materialDiff = new ZcorcMaterialDiff(standardMatnr, parentuse); + if (materialDiff.matnr.equals("02020010001800")) { + logger.info("Debug"); + } + //materialDiff.standarduse *= parentuse; + if (materialMap.containsKey(materialDiff.matnr)) { + AppSceneCostMaterial material = materialMap.get(materialDiff.matnr); + materialDiff.productname = material.getProductName(); + materialDiff.graphicnumber = material.getGraphNumber(); + materialDiff.productcategory = material.getProductCategory(); + materialDiff.oldMaterialGroup = material.getOldMaterialGroup(); + materialDiff.materialtype = material.getMaterialType(); + } + AddtoList(materialDiffList, materialDiff); + } + + for (StandardMatnr standardMatnr1 : standardMatnr.childs) { + generateZcorcMaterialDiff(standardMatnr1, materialDiffList, standardMatnr.getParentUse() * parentuse, materialMap); + } + } + + public void AddtoList(List materialDiffList, ZcorcMaterialDiff materialDiff) { + if(materialDiff.matnr.equals("02020010001800")){ + logger.info("02020010001800"); + } + boolean bExist = false; + for (ZcorcMaterialDiff materialDiff1 : materialDiffList) { + if (materialDiff.matnr.equals(materialDiff1.matnr)) { + double totaluse = materialDiff1.standarduse + materialDiff.standarduse; + double total = materialDiff1.standarduse * materialDiff1.standardcost + materialDiff.standarduse * materialDiff.standardcost; + materialDiff1.standarduse = totaluse; + if (totaluse != 0) { + materialDiff1.standardcost = total / totaluse; + } else { + materialDiff1.standardcost = 0; + } + //materialDiff1.standardcost = total / totaluse; + bExist = true; + break; + } + } + if (!bExist) { + materialDiffList.add(materialDiff); + } + } + + + public Map getVersionMaterialMap(String version) { + Map materialMap = new HashMap<>(); + if (versionTmpMap.containsKey(version)) { + materialMap = versionTmpMap.get(version).materialMap; + } + return materialMap; + } + + public TotalDiff getTotalDiff(ZcorcProduct product, StandardMatnr standardMatnr) { + TotalDiff totalDiff = new TotalDiff(); + totalDiff.realtotal = 0; + totalDiff.realmaterial = 0; + totalDiff.reallabor = 0; + totalDiff.realproduct = 0; + double ppsmng = 0; + for (ZcorcAufnr zcorcAufnr : product.nodeAufnrs) { + HiveSapZcorc hiveSapZcorc = zcorcAufnr.hiveSapZcorc; + totalDiff.matnr = hiveSapZcorc.matnr; + //totalDiff.version = product.stageAccumulatedCost.getVersionNumber(); + totalDiff.aufnr = hiveSapZcorc.aufnr; + totalDiff.wbs = hiveSapZcorc.ps_psp_pnr; + totalDiff.werks = hiveSapZcorc.werks; + //totalDiff.layer = hiveSapZcorc.layer; + totalDiff.ymonth = hiveSapZcorc.ymonth; + + ppsmng += hiveSapZcorc.ppsmng; + totalDiff.realtotal += hiveSapZcorc.rkst000; + totalDiff.realmaterial += hiveSapZcorc.rkst001; + totalDiff.reallabor += hiveSapZcorc.kst003 * hiveSapZcorc.ppsmng; + totalDiff.realproduct += hiveSapZcorc.kst005 * hiveSapZcorc.ppsmng; + } + if (ppsmng > 0) { + totalDiff.realtotal = totalDiff.realtotal / ppsmng; + totalDiff.realmaterial = totalDiff.realmaterial / ppsmng; + totalDiff.reallabor = totalDiff.reallabor / ppsmng; + totalDiff.realproduct = totalDiff.realproduct / ppsmng; + } + + if (standardMatnr != null) { + totalDiff.version = standardMatnr.version; + if (standardMatnr.standardResult == null || standardMatnr.standardResult.getTotalStandardCost() == null) { + totalDiff.stdtotal = 0; + } else { + totalDiff.stdtotal = standardMatnr.standardResult.getTotalStandardCost().doubleValue(); + } + totalDiff.stdlabor = standardMatnr.stage.labor + standardMatnr.accu_stage.labor; + totalDiff.stdmaterial = standardMatnr.stage.price + standardMatnr.accu_stage.price; + totalDiff.stdproduct = totalDiff.stdtotal - totalDiff.stdlabor - totalDiff.stdmaterial; + } + return totalDiff; + } + + public String getReason(String code) { + if (miningReasonMap.containsKey(code)) { + return miningReasonMap.get(code).getReason(); + } + return ""; + } + + public void AddOtherDiff(ZcorcProduct nodeProduct, TotalDiff totalDiff) { + for (ZcorcAufnr zcorcAufnr : nodeProduct.nodeAufnrs) { + //if (nodeProduct.nodeAufnr != null && nodeProduct.nodeAufnr.hiveSapZcorc != null) { + HiveSapZcorc hiveSapZcorc = zcorcAufnr.hiveSapZcorc; + } + } + + public void CalculateReason(TotalDiff totalDiff, List materialDiffList, List aufnrDiffList) { + Map diffReasonMap = new HashedMap(); + for (ZcorcMaterialDiff materialDiff : materialDiffList) { + if (materialDiff.code != null && materialDiff.code.length() > 0) { + if (diffReasonMap.containsKey(materialDiff.code)) { + diffReasonMap.get(materialDiff.code).value += materialDiff.numdiff; + } else { + DiffReason diffReason = new DiffReason(); + diffReason.code = materialDiff.code; + diffReason.value = materialDiff.numdiff; + diffReason.reason = materialDiff.reason; + diffReasonMap.put(diffReason.code, diffReason); + } + } + if (materialDiff.pricecode != null && materialDiff.pricecode.length() > 0) { + if (diffReasonMap.containsKey(materialDiff.pricecode)) { + diffReasonMap.get(materialDiff.pricecode).value += materialDiff.pricediff; + } else { + DiffReason diffReason = new DiffReason(); + diffReason.code = materialDiff.pricecode; + diffReason.value = materialDiff.pricediff; + diffReason.reason = materialDiff.pricereason; + diffReasonMap.put(diffReason.code, diffReason); + } + } + } + double totaldiffvalue = 0; + for (DiffReason diffReason : diffReasonMap.values()) { + totalDiff.materialDiff.add(diffReason); + totaldiffvalue += diffReason.value; + } + + Map lalbordiffReasonMapLabor = new HashedMap(); + Map productdiffReasonMapLabor = new HashedMap(); + for (ZcorcAufnrDiff aufnrDiff : aufnrDiffList) { + if (aufnrDiff.laborcode != null && aufnrDiff.laborcode.length() > 0) { + if (lalbordiffReasonMapLabor.containsKey(aufnrDiff.laborcode)) { + lalbordiffReasonMapLabor.get(aufnrDiff.laborcode).value += aufnrDiff.getLaborDiff(); + } else { + DiffReason diffReason = new DiffReason(); + diffReason.code = aufnrDiff.laborcode; + diffReason.value = aufnrDiff.getLaborDiff(); + diffReason.reason = aufnrDiff.laborreason; + lalbordiffReasonMapLabor.put(diffReason.code, diffReason); + } + } + + if (aufnrDiff.productcode != null && aufnrDiff.productcode.length() > 0) { + if (productdiffReasonMapLabor.containsKey(aufnrDiff.productcode)) { + productdiffReasonMapLabor.get(aufnrDiff.productcode).value += aufnrDiff.getProductDiff(); + } else { + DiffReason diffReason = new DiffReason(); + diffReason.code = aufnrDiff.productcode; + diffReason.value = aufnrDiff.getProductDiff(); + diffReason.reason = aufnrDiff.productreason; + productdiffReasonMapLabor.put(diffReason.code, diffReason); + } + } + } + for (DiffReason diffReason : lalbordiffReasonMapLabor.values()) { + totalDiff.laborDiff.add(diffReason); + totaldiffvalue += diffReason.value; + } + + for (DiffReason diffReason : productdiffReasonMapLabor.values()) { + totalDiff.productDiff.add(diffReason); + totaldiffvalue += diffReason.value; + } + + if (Math.abs(totaldiffvalue - totalDiff.stdtotal - totalDiff.realtotal) > 1) { + logger.info("Total diff:" + totaldiffvalue); + } + } + + public void AddMiningZcorcMaterial(AppSceneCostMiningResult miningResultWithBLOBs, List materialDiffList, TotalDiff totalDiff, int resultindex) { + //try { + Gson gson = new Gson(); + double diff = totalDiff.realmaterial - totalDiff.stdmaterial; + //List miningMaterials=new ArrayList<>(); + int index = 0; + for (ZcorcMaterialDiff materialDetail : materialDiffList) { + index++; + //logger.info("AddMiningZcorcMaterial:"+index+"/"+materialDiffList.size()+" childs:"+) + AppSceneCostMiningMaterial miningMaterial = new AppSceneCostMiningMaterial(); + miningMaterial.setMatnr(materialDetail.matnr); + miningMaterial.setResultid(resultindex); + miningMaterial.setAufnr(miningResultWithBLOBs.getAufnr()); + miningMaterial.setVersion(miningResultWithBLOBs.getVersion()); + +// if(materialDetailMap.containsKey(materialDetail.matnr)){ +// logger.info("AddMiningZcorcMaterial:"+index+"/"+materialDiffList.size()+" childs:"+materialDetailMap.get(materialDetail.matnr).size()); +// for (ZcorcMaterialDiff miningDiff : materialDetailMap.get(materialDetail.matnr)) { +// AddMiningMaterialDetail(miningDiff, resultindex); +// } +// } + + + //MaterialDiff newitem=new MaterialDiff(); + //BeanUtils.copyProperties(materialDetail,newitem); + //MaterialDiff newitem = gson.fromJson(gson.toJson(materialDetail), MaterialDiff.class); + //newitem.childs.clear(); + //materialDetail.childs.clear(); + try { + miningMaterial.setJsondata(gson.toJson(materialDetail)); + } catch (Exception e) { + e.printStackTrace(); + throw e; + } + miningMaterial.setTotaldiff(new BigDecimal(materialDetail.totaldiff)); + if (diff != 0) { + miningMaterial.setRatio(new BigDecimal(Math.abs(materialDetail.totaldiff / diff))); + } else { + miningMaterial.setRatio(new BigDecimal(0)); + } + iAppSceneCostMiningMaterialService.save(miningMaterial); + //miningMaterials.add(miningMaterial); + //miningMaterialMapper.insert(miningMaterial); + //amqpService.SendMessage("mining-material", gson.toJson(miningMaterial)); + //for (MaterialDiff miningDiff : materialDetail.childs) { + // AddMiningMaterialDetail(miningResultWithBLOBs, miningDiff, resultindex); + //} + } + // } catch (Exception e) { + // logger.info(e.getMessage()); + // } + } + + public void ClearCach(String version) { + if (versionTmpMap.containsKey(version)) { + versionTmpMap.remove(version); + } +// bomMap.clear(); +// productMap.clear(); +// materialMap.clear(); +// companyCostMap.clear(); +// purchaseRecordMap.clear(); +// latestPurchasePriceMap.clear(); +// c7525costMap.clear(); +// taxesMap.clear(); + } + + public void AddMingLog(int level, String content, int resultindex) { + logger.info(content); + //miningService.AddMiningLogToMQ(level,content,resultindex); + } + + public void CancelMiningResult(String werks, String matnr, String posid, String version, String err) { +// try { +// +// MiningResultExample example = new MiningResultExample(); +// MiningResultExample.Criteria criteria = example.createCriteria(); +// criteria.andWerksEqualTo(werks); +// criteria.andMatnrEqualTo(matnr); +// //criteria.andAufnrEqualTo(aufnr); +// criteria.andWbsEqualTo(posid); +// criteria.andVersionEqualTo(version); +// criteria.andStatusNotEqualTo("已完成"); +// List miningResultList = miningResultMapper.selectByExample(example); +// for (AppSceneCostMiningResult miningResult : miningResultList) { +// miningResult.setStatus("已中止"); +// if (err == null) { +// err = ""; +// } +// if (err.length() > 255) { +// err = err.substring(0, 250); +// } +// miningResult.setErr(err); +// //miningResult.setLabordetail(""); +// //miningResult.setMdetail(""); +// miningResultMapper.updateByPrimaryKey(miningResult); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } + } + + public void AddZcorcMiningAufnr(AppSceneCostMiningResult miningResultWithBLOBs, List aufnrDiffList, TotalDiff totalDiff, int resultindex) { + try { + Gson gson = new Gson(); + double ldiff = totalDiff.reallabor - totalDiff.stdlabor; + double pdiff = totalDiff.realproduct - totalDiff.stdproduct; + int index = 0; + for (ZcorcAufnrDiff aufnrDiff : aufnrDiffList) { + index++; + //logger.info("AddMiningAufnr " + index + "/" + aufnrDiffList.size()); + AppSceneCostMiningAufnr miningAufnr = new AppSceneCostMiningAufnr(); + miningAufnr.setResultid(resultindex); + miningAufnr.setMatnr(aufnrDiff.matnr); + miningAufnr.setBudat(aufnrDiff.budat); + miningAufnr.setAufnr(miningResultWithBLOBs.getAufnr()); + miningAufnr.setVersion(miningResultWithBLOBs.getVersion()); + miningAufnr.setCostcenter(aufnrDiff.costcenter); + + if (aufnrDiff.totalcostlabor > 0) { + //miningAufnr.setRealchildcount(1); + } else { + //miningAufnr.setRealchildcount(0); + } + //miningAufnr.setRealchildcount(1); + //miningAufnr.setRealchildcount(aufnrDiff.realChilds.size()); + //aufnrDiff.stdChilds.clear(); + //aufnrDiff.realChilds.clear(); + miningAufnr.setJsondata(gson.toJson(aufnrDiff)); + miningAufnr.setLabordiff(new BigDecimal(aufnrDiff.laborCalculate.totaldiff)); + miningAufnr.setProductdiff(new BigDecimal(aufnrDiff.getProductDiff())); + if (ldiff != 0) { + miningAufnr.setLaborratio(new BigDecimal(Math.abs(aufnrDiff.laborCalculate.totaldiff / ldiff))); + } else { + miningAufnr.setLaborratio(new BigDecimal(0)); + } + if (pdiff != 0) { + miningAufnr.setProductratio(new BigDecimal(Math.abs(aufnrDiff.getProductDiff() / pdiff))); + } else { + miningAufnr.setProductratio(new BigDecimal(0)); + } + + iAppSceneCostMiningAufnrService.save(miningAufnr); + + //miningAufnrMapper.insert(miningAufnr); + //amqpService.SendMessage("mining-aufnr", gson.toJson(miningAufnr)); + + + //} + } + } catch (Exception e) { + logger.info(e.getMessage()); + } + } + + public void AddMiningDiff(TotalDiff totalDiff, int resultindex) { + try { + for (DiffReason diffReason : totalDiff.materialDiff) { + if (diffReason.value == 0) { + continue; + } + AppSceneCostMiningDiff miningDiff = new AppSceneCostMiningDiff(); + miningDiff.setValue(diffReason.value); + miningDiff.setCode(diffReason.code); + miningDiff.setReason(diffReason.reason); + miningDiff.setType("material"); + miningDiff.setResultid(resultindex); + //miningDiffMapper.insert(miningDiff); + iAppSceneCostMiningDiffService.save(miningDiff); + } + + for (DiffReason diffReason : totalDiff.laborDiff) { + if (diffReason.value == 0) { + continue; + } + AppSceneCostMiningDiff miningDiff = new AppSceneCostMiningDiff(); + miningDiff.setValue(diffReason.value); + miningDiff.setCode(diffReason.code); + miningDiff.setReason(diffReason.reason); + miningDiff.setType("labor"); + miningDiff.setResultid(resultindex); + //miningDiffMapper.insert(miningDiff); + iAppSceneCostMiningDiffService.save(miningDiff); + } + + for (DiffReason diffReason : totalDiff.productDiff) { + if (diffReason.value == 0) { + continue; + } + AppSceneCostMiningDiff miningDiff = new AppSceneCostMiningDiff(); + miningDiff.setValue(diffReason.value); + miningDiff.setCode(diffReason.code); + miningDiff.setReason(diffReason.reason); + miningDiff.setType("product"); + miningDiff.setResultid(resultindex); + //miningDiffMapper.insert(miningDiff); + iAppSceneCostMiningDiffService.save(miningDiff); + } + + for (DiffReason diffReason : totalDiff.otherDiff) { + AppSceneCostMiningDiff miningDiff = new AppSceneCostMiningDiff(); + miningDiff.setValue(diffReason.value); + miningDiff.setCode(diffReason.code); + miningDiff.setReason(diffReason.reason); + miningDiff.setType("other"); + miningDiff.setResultid(resultindex); + //miningDiffMapper.insert(miningDiff); + iAppSceneCostMiningDiffService.save(miningDiff); + } + } catch (Exception e) { + logger.info(e.getMessage()); + } + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/StandardCostService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/StandardCostService.java index 85d955e..cd8ba5e 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/StandardCostService.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/StandardCostService.java @@ -2,6 +2,7 @@ package com.zzsmart.qomo.kn.cost.manage.plugin; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zzsmart.qomo.kn.cost.manage.entity.*; import com.zzsmart.qomo.kn.cost.manage.enums.FeeTypeEnum; import com.zzsmart.qomo.kn.cost.manage.enums.HourOrRateTypeEnum; @@ -13,7 +14,7 @@ import com.zzsmart.qomo.kn.cost.manage.vo.FlowTaskInfoVO; import com.zzsmart.qomo.kn.cost.manage.vo.TotalResultValue; import com.zzsmart.qomo.plugin.task.api.TaskExecutionContext; import io.swagger.models.auth.In; -import liquibase.pro.packaged.B; +//import liquibase.pro.packaged.B; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,6 +22,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.PostConstruct; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -35,6 +37,10 @@ public class StandardCostService { AppSceneCostBomRelevancyMapper appSceneCostBomRelevancyMapper; @Autowired IAppSceneCostBomRelevancyService costMaterialBomService; + @Autowired + IAppSceneCostStandardBomService iAppSceneCostStandardBomService; + @Autowired + IAppSceneCostStandardProductprocessService iAppSceneCostStandardProductprocessService; /** * 小时费率 @@ -44,8 +50,8 @@ public class StandardCostService { /** * 采购单价 */ - @Autowired - IAppSceneCostPurchaseRecordService costPurchaseRecordService; + //@Autowired + //IAppSceneCostPurchaseRecordService costPurchaseRecordService; /** * 工序 */ @@ -74,18 +80,50 @@ public class StandardCostService { @Autowired private IAppSceneCostMaterialService iAppSceneCostMaterialService; + @Autowired + private IAppSceneCostSapEineService iAppSceneCostSapEineService; + + @Autowired + private IAppSceneCostSapEkpoService iAppSceneCostSapEkpoService; + + @Autowired + private IAppSceneCostInvoiceService iAppSceneCostInvoiceService; + + @Autowired + private IAppSceneCostAufnrMatnrService iAppSceneCostAufnrMatnrService; + + //@Autowired + //private IAppSceneCostStandardBomService iAppSceneCostStandardBomService; + + //@Autowired + //private IAppSceneCostStandardProductprocessService iAppSceneCostStandardProductprocessService; + + @Autowired + private IAppSceneCostBomRelevancyService iAppSceneCostBomRelevancyService; + + @Autowired + private IAppSceneCostProductProcessMaintenanceService iAppSceneCostProductProcessMaintenanceService; + @PostConstruct public void init() { standardCostService = this; standardCostService.appSceneCostBomRelevancyMapper = this.appSceneCostBomRelevancyMapper; standardCostService.appSceneCostCountService = this.appSceneCostCountService; standardCostService.costMaterialBomService = this.costMaterialBomService; - standardCostService.costPurchaseRecordService = this.costPurchaseRecordService; + //standardCostService.costPurchaseRecordService = this.costPurchaseRecordService; standardCostService.iHourRateService = this.iHourRateService; standardCostService.costMaterialProcessHoursService = this.costMaterialProcessHoursService; standardCostService.iAppSceneCostResultValueService = this.iAppSceneCostResultValueService; standardCostService.iAppSceneCostStandardResultService = this.iAppSceneCostStandardResultService; standardCostService.iAppSceneCostMaterialService = this.iAppSceneCostMaterialService; + standardCostService.iAppSceneCostSapEineService=this.iAppSceneCostSapEineService; + standardCostService.iAppSceneCostSapEkpoService=this.iAppSceneCostSapEkpoService; + standardCostService.iAppSceneCostInvoiceService=this.iAppSceneCostInvoiceService; + standardCostService.iAppSceneCostAufnrMatnrService = this.iAppSceneCostAufnrMatnrService; + standardCostService.iAppSceneCostBomRelevancyService = this.iAppSceneCostBomRelevancyService; + standardCostService.iAppSceneCostStandardBomService=this.iAppSceneCostStandardBomService; + standardCostService.iAppSceneCostStandardProductprocessService=this.iAppSceneCostStandardProductprocessService; + standardCostService.iAppSceneCostProductProcessMaintenanceService=this.iAppSceneCostProductProcessMaintenanceService; } /** @@ -115,7 +153,7 @@ public class StandardCostService { String sql = flowTaskInfoVO.getSqlString(); log.info("传递过来的SQL语句:" + sql); //获取顶部物料下所有的物料信息并存储到新的表中 - getAllMaterialBomInfoByTopMaterialCode(topMaterialCode, taskType, taskCode, flowInstanceId != null ? Integer.valueOf(flowInstanceId) : null); + getAllMaterialBomInfoByTopMaterialCode(flowTaskInfoVO.getWerks(),topMaterialCode, taskType, taskCode, flowInstanceId != null ? Integer.valueOf(flowInstanceId) : null); } catch (Exception e) { throw new RuntimeException(e); } @@ -130,9 +168,9 @@ public class StandardCostService { * @param taskCode 任务编号 * @param flowInstanceId 流程实例id */ - public static void getAllMaterialBomInfoByTopMaterialCode(String topMaterialCode, String taskType, String taskCode, Integer flowInstanceId) { + public static void getAllMaterialBomInfoByTopMaterialCode(String werks,String topMaterialCode, String taskType, String taskCode, Integer flowInstanceId) { log.info("getAllMaterialBomInfoByTopMaterialCode"); - List list = standardCostService.costMaterialBomService.queryAllBomInfoByTopMaterialCode(topMaterialCode); + List list = standardCostService.costMaterialBomService.queryAllBomInfoByTopMaterialCode(topMaterialCode,werks); List MarterialNoList = new ArrayList<>(); if (list != null && list.size() > 0) { MarterialNoList = list.stream().filter(s -> s.getIdnrk() != null).map(BomTreeVo::getIdnrk).collect(Collectors.toList()); @@ -140,14 +178,17 @@ public class StandardCostService { Map manuTypeMap = standardCostService.iAppSceneCostMaterialService.getManuTypeByMaterialNo(MarterialNoList); int maxdepth = 0; - List appSceneCostResultValues=new ArrayList<>(); + List appSceneCostResultValues = new ArrayList<>(); log.info("Full ParamTask list: {}", list); //TODO material.getMeins()领用量??为什么是ST字母 for (int i = 0; list != null && i < list.size(); i++) { BomTreeVo material = list.get(i); String manutype = ""; - if(manuTypeMap.containsKey(material.getIdnrk())){ - manutype = manuTypeMap.get(material.getIdnrk()); + if (manuTypeMap.containsKey(material.getIdnrk())) { + manutype = manuTypeMap.get(material.getIdnrk()); + } + if(material.getPlayer().equals("00000000000000000000")){ + material.setPlayer("0"); } //TODO 物料领用数据 BigDecimal num1 = material.getMenge(); @@ -163,41 +204,47 @@ public class StandardCostService { .topnum(material.getTopmenge()) .depth(material.depth) .manuType(manutype) + .layer(material.layer) + .player(material.player) + .werks(material.werks) .build(); appSceneCostResultValues.add(appSceneCostResultValue); - if(material.depth>maxdepth){ - maxdepth=material.depth; + if (material.depth > maxdepth) { + maxdepth = material.depth; } //standardCostService.iAppSceneCostResultValueService.save(appSceneCostResultValue); } - Map mapIndex = new HashMap<>(); - for (int i=1;i<=maxdepth;++i){ - //int index=1; - for (AppSceneCostResultValue appSceneCostResultValue:appSceneCostResultValues){ - if(appSceneCostResultValue.getDepth()==i){ - String parentlayer = ""; - if(i==1){ - parentlayer="0"; - }else{ - for (AppSceneCostResultValue appSceneCostResultValue1:appSceneCostResultValues){ - if(appSceneCostResultValue1.getMarterialNo().equals(appSceneCostResultValue.getParentMarterialNo())&&(appSceneCostResultValue1.getDepth()+1==appSceneCostResultValue.getDepth())){ - parentlayer=appSceneCostResultValue1.getLayer(); - } - } - } - int index = 1; - if(mapIndex.containsKey(parentlayer)){ - index = mapIndex.get(parentlayer); - }else{ - mapIndex.put(parentlayer,index); - } - String layer = parentlayer+"-"+String.valueOf(index); - index++; - mapIndex.put(parentlayer,index); - appSceneCostResultValue.setLayer(layer); - } - } - } +// Map mapIndex = new HashMap<>(); +// for (int i = 1; i <= maxdepth; ++i) { +// //int index=1; +// for (AppSceneCostResultValue appSceneCostResultValue : appSceneCostResultValues) { +// if (appSceneCostResultValue.getDepth() == i) { +// String parentlayer = ""; +// if (i == 1) { +// parentlayer = "0"; +// } else { +// for (AppSceneCostResultValue appSceneCostResultValue1 : appSceneCostResultValues) { +// if (appSceneCostResultValue1.getMarterialNo().equals(appSceneCostResultValue.getParentMarterialNo()) && (appSceneCostResultValue1.getDepth() + 1 == appSceneCostResultValue.getDepth())) { +// parentlayer = appSceneCostResultValue1.getLayer(); +// } +// } +// } +// int index = 1; +// if (mapIndex.containsKey(parentlayer)) { +// index = mapIndex.get(parentlayer); +// } else { +// mapIndex.put(parentlayer, index); +// } +// String layer = parentlayer + "." + String.valueOf(index); +// if(parentlayer.equals("0")){ +// layer=String.valueOf(index); +// } +// index++; +// mapIndex.put(parentlayer, index); +// appSceneCostResultValue.setLayer(layer); +// } +// } +// } standardCostService.iAppSceneCostResultValueService.saveBatch(appSceneCostResultValues); AppSceneCostResultValue appSceneCostResultValue = AppSceneCostResultValue.builder() @@ -211,7 +258,9 @@ public class StandardCostService { .pnum(new BigDecimal(1)) .topnum(new BigDecimal(1)) .depth(0) + .werks(werks) .layer("0") + .player("") .manuType("E") .build(); standardCostService.iAppSceneCostResultValueService.save(appSceneCostResultValue); @@ -236,17 +285,39 @@ public class StandardCostService { MarterialNoList = list.stream().filter(s -> s.getMarterialNo() != null).map(AppSceneCostResultValue::getMarterialNo).collect(Collectors.toList()); } //查询物料的采购价 - Map purchasePriceMap = standardCostService.costPurchaseRecordService.getMinCostPurchasePriceByMaterialNo(MarterialNoList); + Map purchasePriceMap = standardCostService.iAppSceneCostSapEineService.getPrices(MarterialNoList); + //查询物料的临时合同估价 + Map ekpoPriceMap = standardCostService.iAppSceneCostSapEkpoService.getPrices(MarterialNoList); + //查询物料的临时合同估价 + Map invoicePriceMap = standardCostService.iAppSceneCostInvoiceService.getPrices(MarterialNoList); for (int i = 0; i < list.size(); i++) { AppSceneCostResultValue appSceneCostResultValue = list.get(i); String marterialNo = appSceneCostResultValue.getMarterialNo(); - BigDecimal num = appSceneCostResultValue.getNum(); + BigDecimal num = appSceneCostResultValue.getTopnum(); if (marterialNo != null && num != null && (new BigDecimal(num.toString()).compareTo(BigDecimal.ZERO)) != 0) { BigDecimal price = new BigDecimal(0); String price_type = ""; - if(appSceneCostResultValue.getManuType()!=null&&appSceneCostResultValue.getManuType().equals("F")){ - price = purchasePriceMap.get(marterialNo); - price_type = "purchase_record"; + String supplier = ""; + String suppliername = ""; + BigDecimal ekpo_price = new BigDecimal(0); + BigDecimal invoice_price = new BigDecimal(0); + if (appSceneCostResultValue.getManuType() != null && (appSceneCostResultValue.getManuType().equals("F") || appSceneCostResultValue.getManuType().equals("F30"))) { + if(purchasePriceMap.containsKey(marterialNo)) { + price = purchasePriceMap.get(marterialNo).getCnyPrice(); + supplier = purchasePriceMap.get(marterialNo).getLifnr(); + suppliername=purchasePriceMap.get(marterialNo).getName1(); + price_type = "purchase_record"; + } + if(ekpoPriceMap.containsKey(marterialNo)){ + ekpo_price = ekpoPriceMap.get(marterialNo); + if(price_type.equals("")){ + price_type = "ekpo_price"; + price = ekpo_price; + } + } + } + if(invoicePriceMap.containsKey(marterialNo)){ + invoice_price = invoicePriceMap.get(marterialNo); } //purchasePriceMap.get(marterialNo); //if (price == null) { @@ -275,6 +346,12 @@ public class StandardCostService { .manuType(appSceneCostResultValue.getManuType()) .depth(appSceneCostResultValue.getDepth()) .layer(appSceneCostResultValue.getLayer()) + .player(appSceneCostResultValue.getPlayer()) + .supplier(supplier) + .supplierName(suppliername) + .ekpoPrice(ekpo_price) + .invoicePrice(invoice_price) + .werks(appSceneCostResultValue.getWerks()) .build(); standardCostService.iAppSceneCostResultValueService.save(resultValue); } @@ -346,7 +423,7 @@ public class StandardCostService { public static void countManufacturingCost(String topMaterialCode, String taskType, String taskCode, Integer flowInstanceId) { log.info("countManufacturingCost"); //1.查询出人员工时费率 - Map mapHourRate = standardCostService.iHourRateService.getOneHourRateInfo(); + Map mapHourRate = standardCostService.iHourRateService.getOneHourRateInfo(); BigDecimal hourRate = new BigDecimal("0"); //if (hourRateInfo != null) { // hourRate = hourRateInfo.getLaborHourRate(); @@ -360,25 +437,30 @@ public class StandardCostService { MarterialNoList = list.stream().filter(s -> s.getMarterialNo() != null).map(AppSceneCostResultValue::getMarterialNo).collect(Collectors.toList()); } Map> processHoursMap = standardCostService.costMaterialProcessHoursService.getProcessHoursByMaterialNo(MarterialNoList); - for (AppSceneCostResultValue appSceneCostResultValue:list){ + for (AppSceneCostResultValue appSceneCostResultValue : list) { double labor = 0; double equip = 0; double fuel = 0; double auxi = 0; double other = 0; if(processHoursMap.containsKey(appSceneCostResultValue.getMarterialNo())){ - List appSceneCostProductProcessMaintenances = processHoursMap.get(appSceneCostResultValue.getMarterialNo()); - for (AppSceneCostProductProcessMaintenance pm:appSceneCostProductProcessMaintenances){ - String costcenter = pm.getCostCenterCode(); - if(mapHourRate.containsKey(costcenter)){ - AppSceneCostHourRate hourrate = mapHourRate.get(costcenter); - labor+=hourrate.getLaborHourRate().doubleValue()*pm.getLaborHour().doubleValue(); - equip+=hourrate.getEquipHourRate().doubleValue()*pm.getMachineHour().doubleValue(); - fuel+=hourrate.getFuelHourRate().doubleValue()*pm.getBurningHour().doubleValue(); - auxi+=hourrate.getAuxiliaryHourRate().doubleValue()*pm.getAuxiliaryHour().doubleValue(); - other+=hourrate.getOtherHourRate().doubleValue()*pm.getOtherHour().doubleValue(); - } - } + List appSceneCostProductProcessMaintenances = processHoursMap.get(appSceneCostResultValue.getMarterialNo()); + for (AppSceneCostProductProcessMaintenance pm : appSceneCostProductProcessMaintenances) { + String costcenter = pm.getCostCenterCode(); + //if(mapHourRate.containsKey(costcenter)){ + AppSceneCostHourRate hourrate = mapHourRate.get(costcenter); +// labor+=hourrate.getLaborHourRate().doubleValue()*pm.getLaborHour().doubleValue(); +// equip+=hourrate.getEquipHourRate().doubleValue()*pm.getMachineHour().doubleValue(); +// fuel+=hourrate.getFuelHourRate().doubleValue()*pm.getBurningHour().doubleValue(); +// auxi+=hourrate.getAuxiliaryHourRate().doubleValue()*pm.getAuxiliaryHour().doubleValue(); +// other+=hourrate.getOtherHourRate().doubleValue()*pm.getOtherHour().doubleValue(); + labor += pm.getLaborHour().doubleValue(); + equip += pm.getMachineHour().doubleValue(); + fuel += pm.getBurningHour().doubleValue(); + auxi += pm.getAuxiliaryHour().doubleValue(); + other += pm.getOtherHour().doubleValue(); + //} + } } AppSceneCostResultValue resultValue = AppSceneCostResultValue.builder() .belongTopMaterialNo(topMaterialCode) @@ -401,6 +483,12 @@ public class StandardCostService { .manuType(appSceneCostResultValue.getManuType()) .depth(appSceneCostResultValue.getDepth()) .layer(appSceneCostResultValue.getLayer()) + .player(appSceneCostResultValue.getPlayer()) + .supplierName(appSceneCostResultValue.getSupplierName()) + .supplier(appSceneCostResultValue.getSupplier()) + .ekpoPrice(appSceneCostResultValue.getEkpoPrice()) + .invoicePrice(appSceneCostResultValue.getInvoicePrice()) + .werks(appSceneCostResultValue.getWerks()) .build(); standardCostService.iAppSceneCostResultValueService.save(resultValue); } @@ -623,7 +711,7 @@ public class StandardCostService { * @param flowInstanceId 流程实例id * @param costType 流程实例id */ - public static void countStandardCostByTopMaterialCode(String topMaterialCode, String taskType, String taskCode, Integer flowInstanceId, String costType, String stage,String versionNumber) { + public static void countStandardCostByTopMaterialCode(String topMaterialCode, String taskType, String taskCode, Integer flowInstanceId, String costType, String stage, String versionNumber) { log.info("countStandardCostByTopMaterialCode"); //1.查询出根物料编号对应的下所有的BOM信息结果值 //List list = standardCostService.iAppSceneCostResultValueService.getAllResultValueByTopMaterialNo(topMaterialCode, String.valueOf(flowInstanceId)); @@ -644,12 +732,22 @@ public class StandardCostService { ArrayList deplist = new ArrayList<>(soredDepth); Collections.reverse(deplist); - List appSceneCostStandardResults=new ArrayList<>(); + List appSceneCostStandardResults = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM"); + + Set matnrs = new HashSet<>(); + Set idnrks = new HashSet<>(); //遍历根物料下所有的物料进行该物料本阶成本和费用类别的统计 for (Integer depth : deplist) { List appSceneCostResultValues = materialNoMap.get(depth); - for (AppSceneCostResultValue ascr:appSceneCostResultValues){ + for (AppSceneCostResultValue ascr : appSceneCostResultValues) { + if(!matnrs.contains(ascr.getParentMarterialNo())){ + matnrs.add(ascr.getParentMarterialNo()); + } + if(!idnrks.contains(ascr.getMarterialNo())){ + idnrks.add(ascr.getMarterialNo()); + } //BigDecimal currentCost = new BigDecimal("0.0"); //1.本阶物料成本 double materialCost = 0; @@ -676,77 +774,327 @@ public class StandardCostService { //12.本阶制造费(其他制造费用) double otherCost_acc = 0; - if(ascr.getManuType().equals("F")){ - materialCost = ascr.getMaterial().doubleValue()*ascr.getNum().doubleValue(); - }else if(ascr.getManuType().equals("E")){ + double laborhour = 0; + double machinehour = 0; + double fuelhour = 0; + double auxihour = 0; + double otherhour = 0; + double laborhourTotal = 0; + double machinehourTotal = 0; + double fuelhourTotal = 0; + double auxihourTotal = 0; + double otherhourTotal = 0; + double laborcostTotal = 0; + double machinecostTotal = 0; + double fuelcostTotal = 0; + double auxicostTotal = 0; + double othercostTotal = 0; + if(ascr.getLayer().equals("12")){ + log.info("12"); + } + + if (ascr.getManuType().equals("F")) { + materialCost = ascr.getMaterial().doubleValue() * ascr.getTopnum().doubleValue(); + materialCost_acc+=materialCost; + } else if ((ascr.getManuType().equals("E") || ascr.getManuType().equals("F30"))) { double labor = ascr.getLabor().doubleValue(); double equip = ascr.getEquip().doubleValue(); double fuel = ascr.getFuel().doubleValue(); double auxi = ascr.getAuxi().doubleValue(); double other = ascr.getOther().doubleValue(); - laborCost = labor*ascr.getNum().doubleValue(); - equipmentCost =equip*ascr.getNum().doubleValue(); - fuelcost = fuel*ascr.getNum().doubleValue(); - auxicost = auxi*ascr.getNum().doubleValue(); - otherCost = other*ascr.getNum().doubleValue(); + materialCost = ascr.getMaterial().doubleValue()* ascr.getTopnum().doubleValue();; + laborhour = labor * ascr.getTopnum().doubleValue()/60; + machinehour = equip * ascr.getTopnum().doubleValue()/60; + fuelhour = fuel * ascr.getTopnum().doubleValue()/60; + auxihour = auxi * ascr.getTopnum().doubleValue()/60; + otherhour = other * ascr.getTopnum().doubleValue()/60; - for (AppSceneCostStandardResult child:appSceneCostStandardResults){ - if((Integer.parseInt(child.getLowOrderCode())==depth+1)&&child.getParentMatnr().equals(ascr.getMarterialNo())){ - if(child.getManuType().equals("F")){ - materialCost_acc+=child.getMaterialCostStage().doubleValue()*ascr.getNum().doubleValue(); - }else if(child.getManuType().equals("E")){ - materialCost_acc+=child.getMaterialCostStage().doubleValue()*ascr.getNum().doubleValue()+child.getMaterialCostAccumulated().doubleValue()*ascr.getNum().doubleValue(); - laborCost_acc+=(child.getLaborCostStage().doubleValue()+child.getLaborCostAccumulated().doubleValue())*ascr.getNum().doubleValue(); - equipmentCost_acc+=(child.getEquipCostStage().doubleValue()+child.getEquipCostAccumulated().doubleValue())*ascr.getNum().doubleValue(); - fuelcost_acc+=(child.getBurningCostStage().doubleValue()+child.getBurningCostAccumulated().doubleValue())*ascr.getNum().doubleValue(); - auxicost_acc+=(child.getAuxiliaryCostStage().doubleValue()+child.getAuxiliaryCostAccumulated().doubleValue())*ascr.getNum().doubleValue(); - otherCost_acc+=(child.getOtherCostStage().doubleValue()+child.getOtherCostAccumulated().doubleValue())*ascr.getNum().doubleValue(); + laborCost = laborhour*0.82548; + equipmentCost = machinehour*1.20312; + fuelcost = fuelhour*0.17544; + auxicost = auxihour*0.21342; + otherCost = otherhour*0.77826; + + +// if(ascr.getLayer().equals("0-15")){ +// log.info("Debug"); +// } + + for (AppSceneCostStandardResult child : appSceneCostStandardResults) { + String layer = child.getLayer(); + int index = layer.lastIndexOf("."); + String player = "0"; + if(index!=-1){ + player = layer.substring(0,index); + } + if(player.equals(ascr.getLayer())){ + if (child.getManuType().equals("F")) { + //materialCost_acc += child.getMaterialCostTotal().doubleValue() * ascr.getNum().doubleValue(); + materialCost_acc += child.getMaterialCostTotal().doubleValue() ; + } else if ((child.getManuType().equals("E") || child.getManuType().equals("F30"))) { + materialCost_acc += child.getMaterialCostTotal().doubleValue() ; + laborhourTotal += child.getLaborHourTotal().doubleValue() ; + machinehourTotal += ( child.getEquipHourTotal().doubleValue()) ; + fuelhourTotal += ( child.getFuelHourTotal().doubleValue()) ; + auxihourTotal += ( child.getAuxiHourTotal().doubleValue()) ; + otherhourTotal += (child.getOtherHourTotal().doubleValue()) ; } } +// if ((Integer.parseInt(child.getLowOrderCode()) == depth + 1) && child.getParentMatnr().equals(ascr.getMarterialNo())) { +// +// if (child.getManuType().equals("F")) { +// materialCost_acc += child.getMaterialCostTotal().doubleValue() * ascr.getNum().doubleValue(); +// } else if ((child.getManuType().equals("E") || child.getManuType().equals("F30"))) { +// materialCost_acc += child.getMaterialCostTotal().doubleValue() * ascr.getNum().doubleValue() ; +// laborhourTotal += child.getLaborHourTotal().doubleValue() * ascr.getNum().doubleValue(); +// machinehourTotal += ( child.getMachineHourTotal().doubleValue()) * ascr.getNum().doubleValue(); +// fuelhourTotal += ( child.getFuelHourTotal().doubleValue()) * ascr.getNum().doubleValue(); +// auxihourTotal += ( child.getAuxiHourTotal().doubleValue()) * ascr.getNum().doubleValue(); +// otherhourTotal += (child.getOtherHourTotal().doubleValue()) * ascr.getNum().doubleValue(); +// } +// } } + laborhourTotal+=laborhour; + machinehourTotal+=machinehour; + fuelhourTotal+=fuelhour; + auxihourTotal+=auxihour; + otherhourTotal+=otherhour; + + laborcostTotal = laborhourTotal*0.82548; + machinecostTotal = machinehourTotal*1.20312; + fuelcostTotal = fuelhourTotal*0.17544; + auxicostTotal = auxihourTotal*0.21342; + othercostTotal = otherhourTotal*0.77826; + + materialCost_acc+=materialCost; } String maktx = ""; - if(maktxMap.containsKey(ascr.getMarterialNo())){ - maktx=maktxMap.get(ascr.getMarterialNo()); + if (maktxMap.containsKey(ascr.getMarterialNo())) { + maktx = maktxMap.get(ascr.getMarterialNo()); } - AppSceneCostStandardResult appSceneCostStandardResult=AppSceneCostStandardResult.builder() + //if(ascr.getLayer().equals("0")){ + // materialCost = materialCost_acc; + //} + double standardCost = materialCost+laborCost+equipmentCost+fuelcost+auxicost+otherCost; + double total = materialCost_acc + laborcostTotal + machinecostTotal + fuelcostTotal + auxicostTotal + othercostTotal; + AppSceneCostStandardResult appSceneCostStandardResult = AppSceneCostStandardResult.builder() .materialNumber(ascr.getMarterialNo()) .parentMatnr(ascr.getParentMarterialNo()) .pricetype(ascr.getPriceType()) - .materialCostStage(new BigDecimal(materialCost)) - .laborCostStage(new BigDecimal(laborCost)) - .equipCostStage(new BigDecimal(equipmentCost)) - .burningCostStage(new BigDecimal(fuelcost)) - .auxiliaryCostStage(new BigDecimal(auxicost)) - .otherCostStage(new BigDecimal(otherCost)) - .materialCostAccumulated(new BigDecimal(materialCost_acc)) - .laborCostAccumulated(new BigDecimal(laborCost_acc)) - .equipCostAccumulated(new BigDecimal(equipmentCost_acc)) - .burningCostAccumulated(new BigDecimal(fuelcost_acc)) - .auxiliaryCostAccumulated(new BigDecimal(auxicost_acc)) - .otherCostAccumulated(new BigDecimal(otherCost_acc)) - .materialCostTotal(new BigDecimal(materialCost+materialCost_acc)) - .laborCostTotal(new BigDecimal(laborCost+laborCost_acc)) - .equipCostTotal(new BigDecimal(equipmentCost+equipmentCost_acc)) - .burningCostTotal(new BigDecimal(fuelcost+fuelcost_acc)) - .auxiliaryCostTotal(new BigDecimal(auxicost+auxicost_acc)) - .otherCostTotal(new BigDecimal(otherCost+otherCost_acc)) - .totalStandardCost(new BigDecimal(materialCost+laborCost+equipmentCost+fuelcost+auxicost+otherCost+materialCost_acc+laborCost_acc+equipmentCost_acc+fuelcost_acc+auxicost_acc+otherCost_acc)) + .laborHour(new BigDecimal(laborhour)) + .equipHour(new BigDecimal(machinehour)) + .fuelHour(new BigDecimal(fuelhour)) + .auxiHour(new BigDecimal(auxihour)) + .otherHour(new BigDecimal(otherhour)) + .laborCost(new BigDecimal(laborCost)) + .equipCost(new BigDecimal(equipmentCost)) + .fuelCost(new BigDecimal(fuelcost)) + .auxiliaryCost(new BigDecimal(auxicost)) + .otherCost(new BigDecimal(otherCost)) + .laborHourTotal(new BigDecimal(laborhourTotal)) + .equipHourTotal(new BigDecimal(machinehourTotal)) + .fuelHourTotal(new BigDecimal(fuelhourTotal)) + .auxiHourTotal(new BigDecimal(auxihourTotal)) + .otherHourTotal(new BigDecimal(otherhourTotal)) + .standardCost(new BigDecimal(standardCost)) + .purchasePrice(new BigDecimal(ascr.getMaterial().doubleValue())) + .materialCost(new BigDecimal(materialCost)) + .supplier(ascr.getSupplier()) + .supplierName(ascr.getSupplierName()) + .tempContractPrice(ascr.getEkpoPrice()) + .invoicePrice(ascr.getInvoicePrice()) + .invoiceTotal(ascr.getInvoicePrice().multiply(ascr.getTopnum())) + .invoiceDiff(ascr.getInvoicePrice().multiply(ascr.getTopnum()).subtract(new BigDecimal(total))) + //.materialCostStage(new BigDecimal(materialCost)) +// .laborCostStage(new BigDecimal(laborCost)) +// .equipCostStage(new BigDecimal(equipmentCost)) +// .burningCostStage(new BigDecimal(fuelcost)) +// .auxiliaryCostStage(new BigDecimal(auxicost)) +// .otherCostStage(new BigDecimal(otherCost)) + //.materialCostAccumulated(new BigDecimal(materialCost_acc)) +// .laborCostAccumulated(new BigDecimal(laborCost_acc)) +// .equipCostAccumulated(new BigDecimal(equipmentCost_acc)) +// .burningCostAccumulated(new BigDecimal(fuelcost_acc)) +// .auxiliaryCostAccumulated(new BigDecimal(auxicost_acc)) +// .otherCostAccumulated(new BigDecimal(otherCost_acc)) + .materialCostTotal(new BigDecimal(materialCost_acc)) + .laborCostTotal(new BigDecimal(laborcostTotal )) + .equipCostTotal(new BigDecimal(machinecostTotal )) + .fuelCostTotal(new BigDecimal(fuelcostTotal )) + .auxiliaryCostTotal(new BigDecimal(auxicostTotal )) + .otherCostTotal(new BigDecimal(othercostTotal )) + .totalStandardCost(new BigDecimal(total)) .lowOrderCode(String.valueOf(depth)) - .relativeDosage(ascr.getNum()) + //.relativeDosage(ascr.getNum()) .createdTime(new Date()) - .menge(ascr.getNum()) + .menge(ascr.getTopnum()) .manuType(ascr.getManuType()) .versionNumber(versionNumber) .stage(stage) .layer(ascr.getLayer()) - .factory("7100") + .player(ascr.getPlayer()) + .pricetype(ascr.getPlayer()) + .factory(ascr.getWerks()) .maktx(maktx) + .ymonth(sdf.format(new Date())) + .factory(ascr.getWerks()) .build(); appSceneCostStandardResults.add(appSceneCostStandardResult); } } + Collections.sort(appSceneCostStandardResults, new Comparator() { + + public double convertlayertodouble(String layer){ + String[] array = layer.split("\\."); + if(array.length==0){ + return Double.parseDouble(layer); + }else{ + double value = 0; + for(int i=0;id2){ + return 1; + }else{ + return -1; + } + //return Double.parseDouble(o1.getLayer())-Double.parseDouble(o2.getLayer()); + } + }); standardCostService.iAppSceneCostStandardResultService.saveBatch(appSceneCostStandardResults); + + List idnrklist = new ArrayList<>(); + for (String matnr:idnrks){ + idnrklist.add(matnr); + } + QueryWrapper queryWrapper1=new QueryWrapper<>(); + queryWrapper1.in("material_number",idnrklist); + List materials=standardCostService.iAppSceneCostMaterialService.list(queryWrapper1); + Map mapMaterial=new HashMap<>(); + for (AppSceneCostMaterial material:materials){ + if(!mapMaterial.containsKey(material.getMaterialNumber())){ + mapMaterial.put(material.getMaterialNumber(),material); + } + } + + List matnrlist = new ArrayList<>(); + for (String matnr:matnrs){ + matnrlist.add(matnr); + } + //保存app_scene_cost_standard_bom + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.in("matnr",matnrlist); + List appSceneCostBomRelevancies=standardCostService.iAppSceneCostBomRelevancyService.list(queryWrapper); + List standardBoms=new ArrayList<>(); + for (AppSceneCostBomRelevancy bomRelevancy:appSceneCostBomRelevancies){ + AppSceneCostStandardBom standardBom=AppSceneCostStandardBom.builder() + .matnr(bomRelevancy.getMatnr()) + .versionNumber(versionNumber) + .posnr(bomRelevancy.getPosnr()) + .werks(bomRelevancy.getWerks()) + .bmeng(bomRelevancy.getBmeng()) + .idnrk(bomRelevancy.getIdnrk()) + .menge(bomRelevancy.getMenge()) + .oldMaterialGroup("") + .manufacturingType("") + .sobsl("") + .productName("") + .materialType("") + .build(); + if(mapMaterial.containsKey(bomRelevancy.getIdnrk())){ + AppSceneCostMaterial material=mapMaterial.get(bomRelevancy.getIdnrk()); + standardBom.setOldMaterialGroup(material.getOldMaterialGroup()); + standardBom.setManufacturingType(material.getManufacturingType()); + standardBom.setSobsl(material.getSobsl()); + standardBom.setProductName(material.getProductName()); + standardBom.setMaterialType(material.getMaterialType()); + } + standardBoms.add(standardBom); + } + standardCostService.iAppSceneCostStandardBomService.saveBatch(standardBoms); + + List hourRates=standardCostService.iHourRateService.list(); + Map hourRateMap=new HashMap<>(); + for (AppSceneCostHourRate hourRate:hourRates){ + hourRateMap.put(hourRate.getCostCenterCode(),hourRate); + } + + //保存app_scene_cost_standard_productprocess + QueryWrapper queryWrapper2=new QueryWrapper<>(); + queryWrapper2.in("main_part_number",matnrlist); + List productProcessMaintenances=standardCostService.iAppSceneCostProductProcessMaintenanceService.list(queryWrapper2); + List standardProductprocesses=new ArrayList<>(); + for (AppSceneCostProductProcessMaintenance maintenance:productProcessMaintenances){ + AppSceneCostStandardProductprocess productprocess=AppSceneCostStandardProductprocess.builder() + .factory(maintenance.getFactory()) + .mainPartNumber(maintenance.getMainPartNumber()) + .processRouteNumber(maintenance.getProcessRouteNumber()) + .serialNumber(maintenance.getSerialNumber()) + .processName(maintenance.getProcessName()) + .costCenterCode(maintenance.getCostCenterCode()) + .prepareHour(maintenance.getPrepareHour()) + .laborHour(maintenance.getLaborHour()) + .machineHour(maintenance.getMachineHour()) + .burningHour(maintenance.getBurningHour()) + .auxiliaryHour(maintenance.getAuxiliaryHour()) + .otherHour(maintenance.getOtherHour()) + .versionNumber(versionNumber) + .build(); + if(hourRateMap.containsKey(maintenance.getCostCenterCode())){ + AppSceneCostHourRate hourRate=hourRateMap.get(maintenance.getCostCenterCode()); + productprocess.setLaborHourRate(hourRate.getLaborHourRate()); + productprocess.setEquipHourRate(hourRate.getEquipHourRate()); + productprocess.setFuelHourRate(hourRate.getFuelHourRate()); + productprocess.setAuxiliaryHourRate(hourRate.getAuxiliaryHourRate()); + productprocess.setOtherHourRate(hourRate.getOtherHourRate()); + } + standardProductprocesses.add(productprocess); + } + standardCostService.iAppSceneCostStandardProductprocessService.saveBatch(standardProductprocesses); + + + //更新标准成本计算状态 + if(appSceneCostStandardResults.size()>0){ + AppSceneCostStandardResult appSceneCostStandardResult = appSceneCostStandardResults.get(0); + + QueryWrapper wrapper=new QueryWrapper<>(); + wrapper.eq("matnr",appSceneCostStandardResult.getMaterialNumber()); + List appSceneCostAufnrMatnrs=standardCostService.iAppSceneCostAufnrMatnrService.list(wrapper); + + + + AppSceneCostCount appSceneCostCount = standardCostService.appSceneCostCountService.queryByVersion(appSceneCostStandardResult.getVersionNumber()); + if(appSceneCostCount!=null){ + appSceneCostCount.setStatus(2); + appSceneCostCount.setStandardTotal(appSceneCostStandardResult.getTotalStandardCost()); + appSceneCostCount.setMaterialCost(appSceneCostStandardResult.getMaterialCostTotal()); + appSceneCostCount.setLaborCost(appSceneCostStandardResult.getLaborCostTotal()); + appSceneCostCount.setEquipCost(appSceneCostStandardResult.getEquipCostTotal()); + appSceneCostCount.setFuelCost(appSceneCostStandardResult.getFuelCostTotal()); + appSceneCostCount.setAuxiCost(appSceneCostStandardResult.getAuxiliaryCostTotal()); + appSceneCostCount.setOtherCost(appSceneCostStandardResult.getOtherCostTotal()); + appSceneCostCount.setLaborHour(appSceneCostStandardResult.getLaborHourTotal()); + appSceneCostCount.setMachineHour(appSceneCostStandardResult.getEquipHourTotal()); + appSceneCostCount.setFlowDefinitionId(flowInstanceId); + appSceneCostCount.setCreateBy(0); + appSceneCostCount.setUpdateBy(0); + appSceneCostCount.setUpdateTime(new Date()); + appSceneCostCount.setAufnr(""); + appSceneCostCount.setMaktx(appSceneCostStandardResult.getMaktx()); + if(appSceneCostAufnrMatnrs.size()>0){ + appSceneCostCount.setAufnr(appSceneCostAufnrMatnrs.get(0).getAufnr()); + } + standardCostService.appSceneCostCountService.updateById(appSceneCostCount); + } + } + //3.计算出所有的单个物料的累计标准成本 //List standardCostList = standardCostService.iAppSceneCostResultValueService.getResultValueByTopMaterialNo(topMaterialCode, taskType, String.valueOf(flowInstanceId)); //【累计成本】的计算 @@ -984,18 +1332,18 @@ public class StandardCostService { // .figureNumber() // .dosage(oldAppSceneCostResultValue.getNum() != null ? oldAppSceneCostResultValue.getNum().doubleValue() : 0).unit(oldAppSceneCostResultValue.getUnit()) .materialCostTotal(costDetailJson.getBigDecimal(FeeTypeEnum.MaterialCost.getCode())) - .laborCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.LaborCost.getCode())) - .equipCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.EquipmentFee.getCode())) - .auxiliaryCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.SupplyMaterialFee.getCode())) - .burningCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.DriverFee.getCode())) - .otherCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.OtherFee.getCode())) + //.laborCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.LaborCost.getCode())) + //.equipCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.EquipmentFee.getCode())) + //.auxiliaryCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.SupplyMaterialFee.getCode())) + //.burningCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.DriverFee.getCode())) + //.otherCostStage(costDetailJson.getBigDecimal(FeeTypeEnum.OtherFee.getCode())) .totalStandardCost(new BigDecimal(oldAppSceneCostResultValue.getCountValue())) - .materialCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalMaterialCost.getCode())) - .laborCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalLaborCost.getCode())) - .equipCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalEquipmentFee.getCode())) - .auxiliaryCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalSupplyMaterialFee.getCode())) - .burningCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalDriverFee.getCode())) - .otherCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalOtherFee.getCode())) + //.materialCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalMaterialCost.getCode())) + //.laborCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalLaborCost.getCode())) + //.equipCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalEquipmentFee.getCode())) + //.auxiliaryCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalSupplyMaterialFee.getCode())) + //.burningCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalDriverFee.getCode())) + //.otherCostAccumulated(costDetailJson.getBigDecimal(TotalCostEnum.TotalOtherFee.getCode())) .totalStandardCost(costDetailJson.getBigDecimal(TotalCostEnum.TotalStandardCost.getCode())) .lowOrderCode(String.valueOf(oldAppSceneCostResultValue.getDepth())) .createdTime(new Date()).build(); diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/RequestSapXmlData600.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/RequestSapXmlData600.java new file mode 100644 index 0000000..f7be538 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/RequestSapXmlData600.java @@ -0,0 +1,204 @@ +package com.zzsmart.qomo.kn.cost.manage.plugin.webservice; + +import java.util.HashMap; + +public class RequestSapXmlData600 { + + public static String getOrderState(HashMap map) { + StringBuilder sb = new StringBuilder(); + sb.append("" + + + "" + + "" + + "" + + "" + + "PLMZHA056_IFS003" + + "" + + "" + + map.get("werks").toString() + + "" + + "" + + map.get("matnr").toString() + + "" + + "" + + map.get("pspnr").toString() + + "" + + "" + + map.get("dateb").toString() + + "" + + "" + + map.get("datee").toString() + + "" + + "" + + map.get("months").toString() + + "" + + "" + + ""); + + return sb.toString().replaceAll("null", ""); + } + + public static String getDSJ002(HashMap map) { + StringBuilder sb = new StringBuilder(); + //sb.append("" + sb.append("" + + "" + + "" + + "" + + "" + + "DSJZSAP_DSJ_002" + + "" + + "" + + map.get("werks").toString() + + ""); + //+ ""); + if (!map.get("matnr").toString().equals("")) { + sb.append("" + + map.get("matnr").toString() + + ""); + } + if (!map.get("zthzq").toString().equals("")) { + sb.append("" + + map.get("zthzq").toString() + + ""); + } + if (!map.get("matnr_l").toString().equals("")) { + sb.append("" + + map.get("matnr_l").toString() + + ""); + } + if (!map.get("zthzq_l").toString().equals("")) { + sb.append("" + + map.get("zthzq_l").toString() + + ""); + } +// +"" +// +map.get("zthzq").toString() +// +"" +// +"" +// +map.get("matnr_l").toString() +// +"" +// +"" +// +map.get("zthzq_l").toString() +// +"" + sb.append("" + + ""); + + return sb.toString().replaceAll("null", ""); + } + + public static String getDSJ003(HashMap map) { + StringBuilder sb = new StringBuilder(); + //sb.append("" + sb.append("" + + "" + + "" + + "" + + "" + + "DSJZSAP_DSJ_003" + + "" + + "" + + map.get("matnr").toString() + + "" + + "" + + map.get("werks").toString() + + "" + + "" + + ""); + + return sb.toString().replaceAll("null", ""); + } + + public static String getDSJ004(HashMap map) { + StringBuilder sb = new StringBuilder(); + //sb.append("" + sb.append("" + + "" + + "" + + "" + + "" + + "DSJZSAP_DSJ_004" + + "" +// + "" +// + map.get("matnr").toString() +// + "" + + "" + + map.get("werks").toString() + + ""); +// + "" +// + ""); + if (!map.get("matnr").toString().equals("")) { + sb.append("" + + map.get("matnr").toString() + + ""); + } + if (!map.get("zthzq").toString().equals("")) { + sb.append("" + + map.get("zthzq").toString() + + ""); + } + sb.append("" + + ""); + + return sb.toString().replaceAll("null", ""); + } + + public static String getPDM(HashMap map) { + StringBuilder sb = new StringBuilder(); + sb.append("" + //sb.append("" + + "" + + "" + + "" + + "" + + map.get("matnr").toString() + + "" + + "" + + map.get("matnr").toString() + + "" + + "" + + map.get("werks").toString() + + "" + + "" + + "" + + "" + + "" + + ""); + + return sb.toString().replaceAll("null", ""); + } + + public static String getOrderState12(HashMap map) { + StringBuilder sb = new StringBuilder(); + sb.append("" + + + "" + + "" + + "" + + "" + +"PLMZHA056_IFS003" + + "" + +"" + +map.get("werks").toString() + +"" + +"" + +map.get("matnr").toString() + +"" + +"" + +map.get("pspnr").toString() + +"" + + "" + +map.get("dateb").toString() + + "" + + "" + +map.get("datee").toString() + + "" + + "" + +map.get("months").toString() + + "" + + "" + +""); + + return sb.toString().replaceAll("null", ""); + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SAPOrderService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SAPOrderService.java new file mode 100644 index 0000000..06bff10 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SAPOrderService.java @@ -0,0 +1,13 @@ +package com.zzsmart.qomo.kn.cost.manage.plugin.webservice; + +import java.util.HashMap; +import java.util.Map; + +public interface SAPOrderService { + Map getOrderState(HashMap map, String url, String u, String p); + Map getPDM(HashMap map, String url, String u, String p); + Map getDSJ002(HashMap map, String url, String u, String p); + Map getDSJ003(HashMap map, String url, String u, String p); + Map getDSJ004(HashMap map, String url, String u, String p); + Map getOrderState12(HashMap map, String url, String u, String p); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SAPOrderServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SAPOrderServiceImpl.java new file mode 100644 index 0000000..980c3cb --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SAPOrderServiceImpl.java @@ -0,0 +1,576 @@ +package com.zzsmart.qomo.kn.cost.manage.plugin.webservice; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +//import com.sun.org.apache.xml.internal.serialize.OutputFormat; +//import com.sun.org.apache.xml.internal.serialize.XMLSerializer; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.apache.commons.httpclient.methods.StringRequestEntity; +import org.dom4j.Attribute; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.jdom2.Element; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.StringReader; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class SAPOrderServiceImpl implements SAPOrderService { + RequestSapXmlData600 request = new RequestSapXmlData600(); + + String url; + + public SAPOrderServiceImpl(String url) + { + this.url = url; + } + public SAPOrderServiceImpl(){ + } + + //全局变量,判断是否输出请求响应报文信息; + public static boolean openXmlMessage = false; + + /** + * 调用方法,控制是否输出请求响应报文; + * true为输出,false为不输出; + * @param open + */ + public void printLog(boolean open) + { + openXmlMessage = open; + } + + public boolean checkPrint(boolean checkinput){ + return checkinput; + } + /** + * 用户名密码授权访问webservice规范 + * 新增返回状态标识 + * @param xml + * @param url + * @return + * @throws Exception + */ + public static String getUPTSoapStreama(String xml,String url) { + try { + String soap = xml; + if (soap == null) { + return null; + } + + HttpClient client = new HttpClient(); + PostMethod postMethod = new PostMethod(url); + // 然后把Soap请求数据添加到PostMethod中 + RequestEntity requestEntity = new StringRequestEntity(soap, "application/soap+xml", "UTF-8"); + //设置请求头部,否则可能会报 “no SOAPAction header” 的错误 + postMethod.setRequestHeader("SOAPAction",""); + // 设置请求体 + postMethod.setRequestEntity(requestEntity); + int status = client.executeMethod(postMethod); + return status+""; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + private static Document parseXmlFile(String in) { + try { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder db = dbf.newDocumentBuilder(); + InputSource is = new InputSource(new StringReader(in)); + return db.parse(is); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + +// public static String xmlFormat(String unformattedXml) { +// try { +// Document document = parseXmlFile(unformattedXml); +// OutputFormat format = new OutputFormat(document); +// format.setLineWidth(65); +// format.setIndenting(true); +// format.setIndent(2); +// Writer out = new StringWriter(); +// XMLSerializer serializer = new XMLSerializer(out, format); +// serializer.serialize(document); +// return (out.toString() +"").replace("\n","\r\n"); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// return unformattedXml; +// } + + public static String getServerName(String url) { + try{ + return url.substring(url.indexOf("//") + 2, url.indexOf(":",url.indexOf("//"))); + } catch (Exception e){ + e.printStackTrace(); + return null; + } + } + + public static boolean isEmpty(String str) { + + if (str == null || str.trim().isEmpty() || "null".equals(str)) { + return true; + } + return false; + } + + /** + * xml转json + * @param element + * @param json + */ + public static void dom4j2Json(org.dom4j.Element element,JSONObject json){ + //如果是属性 + for(Object o:element.attributes()){ + Attribute attr=(Attribute)o; + if(!isEmpty(attr.getValue())){ + json.put("@"+attr.getName(), attr.getValue()); + } + } + List chdEl=element.elements(); + if(chdEl.isEmpty()&&!isEmpty(element.getText())){//如果没有子元素,只有一个值 + json.put(element.getName(), element.getText()); + } + + for(org.dom4j.Element e:chdEl){//有子元素 + if(!e.elements().isEmpty()){//子元素也有子元素 + JSONObject chdjson=new JSONObject(); + dom4j2Json(e,chdjson); + Object o=json.get(e.getName()); + if(o!=null){ + JSONArray jsona=null; + if(o instanceof JSONObject){//如果此元素已存在,则转为jsonArray + JSONObject jsono=(JSONObject)o; + json.remove(e.getName()); + jsona=new JSONArray(); + jsona.add(jsono); + jsona.add(chdjson); + } + if(o instanceof JSONArray){ + jsona=(JSONArray)o; + jsona.add(chdjson); + } + json.put(e.getName(), jsona); + }else{ + if(!chdjson.isEmpty()){ + json.put(e.getName(), chdjson); + } + } + + + }else{//子元素没有子元素 + for(Object o:element.attributes()){ + Attribute attr=(Attribute)o; + if(!isEmpty(attr.getValue())){ + json.put("@"+attr.getName(), attr.getValue()); + } + } + if(!e.getText().isEmpty()){ + json.put(e.getName(), e.getText()); + } + } + } + } + + public JSONObject xml2Json(String xmlStr) throws DocumentException { + org.dom4j.Document doc= DocumentHelper.parseText(xmlStr); + JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(), json); + return json; + } + + @Override + public JSONObject getOrderState(HashMap hm, String url, String u, String p) { + // TODO Auto-generated method stub + String xml = request.getOrderState(hm); + //System.out.println(xml); + List> list = null; + SoapUtil util = new SoapUtil(); + + SoapResult soap = new SoapResult(); + Element root = null; + String status = null,message = ""; + Map map = null; + String[] out = null; + //System.out.println("try之前"); + JSONObject json=new JSONObject(); + try { +// FileUtil.TextToFile(new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss").format(new Date())+"=>105接口:\r\n"); + //System.out.println("getUPSoapStream开始"); + String functions="urn:sap-com:document:sap:soap:functions:mc-style:ZSAP_DSJ_005:ZsapDsj005Request"; + soap = util.getUPSoapStream(xml, url,u,p,functions); //获取返回的报文; + //System.out.println("getUPSoapStream结束"); + //System.out.println("响应报文:"+soap.getContent()); + + + org.dom4j.Document doc= DocumentHelper.parseText(soap.getContent()); + //JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + + //System.out.println(json.toString()); + //String responsexml=soap.getContent().replace("",""); + //创建 XMLSerializer对象 + //XMLSerializer xmlSerializer = new XMLSerializer(); + //将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识) + //String result = xmlSerializer.read(responsexml).toString(); + //输出json内容 + //System.out.println(result); + + //请求sap响应报文写入到日志文档中记录 +// FileUtil.TextToFile(soap+"\r\n"); + + //解析响应报文,状态--返回报文信息 +// + +// System.out.println("1:"+new Date()); +// root = util.getRootElement(soap.getContent()); //获取报文xml的根节点 +// //System.out.println(root); +// System.out.println("2:"+new Date()); +// +// System.out.println("3:"+new Date()); +// +// status = util.getKeyParse(root, "MSGTY"); +//// message = util.getKeyParse(root, "MSGTX"); +// System.out.println("status__________"+status); +// if(status.equals("S")) { +// //代表获取成功,获取item里的值 +// list = util.getListParse(root, "TOUDA", "item"); +// System.out.println(list.size()); +// //获取返回的报文列表信息 +// if(list.size()>0) +// { +// status = "S"; +// message = util.getKeyParse(root, "MSGTX"); +// }else{ +// status = "E"; +// message = util.getKeyParse(root, "MSGTX"); +// System.out.println(message); +// } +// }else if(status.equals("E") ) { +// //代表获取失败,无法关闭的订单 +// message = util.getKeyParse(root, "MSGTX"); +// } +// System.out.println("4:"+new Date()); + //message += "\r\n 请求报文:"+xml+"\r\n 响应报文:"+soap; + + } catch (Exception e) { + // TODO Auto-generated catch block +// e.printStackTrace(); + message += " 请求报文解析失败"; + } + + //输出请求响应报文 + //if(openXmlMessage) + //{ + // message += "\r\n 请求报文:"+xml+"\r\n 响应报文:"+soap; + // } + + //HashMap result = util.sendData(status, message, list, map); + + return json; + } + + @Override + public JSONObject getDSJ002(HashMap hm, String url, String u, String p) { + // TODO Auto-generated method stub + String xml = request.getDSJ002(hm); + System.out.println(xml); + List> list = null; + SoapUtil util = new SoapUtil(); + + SoapResult soap = new SoapResult(); + Element root = null; + String status = null,message = ""; + Map map = null; + String[] out = null; + //System.out.println("try之前"); + JSONObject json=new JSONObject(); + try { +// FileUtil.TextToFile(new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss").format(new Date())+"=>105接口:\r\n"); + //System.out.println("getUPSoapStream开始"); + String functions="urn:sap-com:document:sap:rfc:functions:ZSAP_DSJ_002:ZSAP_DSJ_002Request"; + soap = util.getUPSoapStream(xml, url,u,p,functions); //获取返回的报文; + //System.out.println("getUPSoapStream结束"); + System.out.println("响应报文:"+soap.getContent()); + + + org.dom4j.Document doc= DocumentHelper.parseText(soap.getContent()); + //JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + + //System.out.println(json.toString()); + //String responsexml=soap.getContent().replace("",""); + //创建 XMLSerializer对象 + //XMLSerializer xmlSerializer = new XMLSerializer(); + //将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识) + //String result = xmlSerializer.read(responsexml).toString(); + //输出json内容 + //System.out.println(result); + + //请求sap响应报文写入到日志文档中记录 +// FileUtil.TextToFile(soap+"\r\n"); + + //解析响应报文,状态--返回报文信息 +// + +// System.out.println("1:"+new Date()); +// root = util.getRootElement(soap.getContent()); //获取报文xml的根节点 +// //System.out.println(root); +// System.out.println("2:"+new Date()); +// +// System.out.println("3:"+new Date()); +// +// status = util.getKeyParse(root, "MSGTY"); +//// message = util.getKeyParse(root, "MSGTX"); +// System.out.println("status__________"+status); +// if(status.equals("S")) { +// //代表获取成功,获取item里的值 +// list = util.getListParse(root, "TOUDA", "item"); +// System.out.println(list.size()); +// //获取返回的报文列表信息 +// if(list.size()>0) +// { +// status = "S"; +// message = util.getKeyParse(root, "MSGTX"); +// }else{ +// status = "E"; +// message = util.getKeyParse(root, "MSGTX"); +// System.out.println(message); +// } +// }else if(status.equals("E") ) { +// //代表获取失败,无法关闭的订单 +// message = util.getKeyParse(root, "MSGTX"); +// } +// System.out.println("4:"+new Date()); + //message += "\r\n 请求报文:"+xml+"\r\n 响应报文:"+soap; + + } catch (Exception e) { + // TODO Auto-generated catch block +// e.printStackTrace(); + message += " 请求报文解析失败"; + } + + //输出请求响应报文 + //if(openXmlMessage) + //{ + // message += "\r\n 请求报文:"+xml+"\r\n 响应报文:"+soap; + // } + + //HashMap result = util.sendData(status, message, list, map); + + return json; + } + + @Override + public JSONObject getPDM(HashMap hm, String url, String u, String p){ + // TODO Auto-generated method stub + String xml = request.getPDM(hm); + System.out.println(xml); + List> list = null; + SoapUtil util = new SoapUtil(); + + SoapResult soap = new SoapResult(); + Element root = null; + String status = null,message = ""; + Map map = null; + String[] out = null; + //System.out.println("try之前"); + JSONObject json=new JSONObject(); + try { + String functions="urn:sap-com:document:sap:soap:functions:mc-style:ZECC_PDM_MM015:ZeccPdmMm015Request"; + soap = util.getUPSoapStream(xml, url,u,p,functions); //获取返回的报文; + System.out.println("响应报文:"+soap.getContent()); + + + org.dom4j.Document doc= DocumentHelper.parseText(soap.getContent()); + //JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + + } catch (Exception e) { + // TODO Auto-generated catch block +// e.printStackTrace(); + message += " 请求报文解析失败"; + } + + + + return json; + } + + @Override + public JSONObject getDSJ003(HashMap hm, String url, String u, String p){ + // TODO Auto-generated method stub + String xml = request.getDSJ003(hm); + System.out.println(xml); + List> list = null; + SoapUtil util = new SoapUtil(); + + SoapResult soap = new SoapResult(); + Element root = null; + String status = null,message = ""; + Map map = null; + String[] out = null; + //System.out.println("try之前"); + JSONObject json=new JSONObject(); + try { + String functions="urn:sap-com:document:sap:rfc:functions:ZSAP_DSJ_003:ZSAP_DSJ_003Request"; + soap = util.getUPSoapStream(xml, url,u,p,functions); //获取返回的报文; + System.out.println("响应报文:"+soap.getContent()); + + + org.dom4j.Document doc= DocumentHelper.parseText(soap.getContent()); + //JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + + } catch (Exception e) { + // TODO Auto-generated catch block +// e.printStackTrace(); + message += " 请求报文解析失败"; + } + + + + return json; + } + + @Override + public JSONObject getDSJ004(HashMap hm, String url, String u, String p){ + // TODO Auto-generated method stub + String xml = request.getDSJ004(hm); + System.out.println(xml); + List> list = null; + SoapUtil util = new SoapUtil(); + + SoapResult soap = new SoapResult(); + Element root = null; + String status = null,message = ""; + Map map = null; + String[] out = null; + //System.out.println("try之前"); + JSONObject json=new JSONObject(); + try { + String functions="urn:sap-com:document:sap:rfc:functions:ZSAP_DSJ_004:ZSAP_DSJ_004Request"; + soap = util.getUPSoapStream(xml, url,u,p,functions); //获取返回的报文; + System.out.println("响应报文:"+soap.getContent()); + + + org.dom4j.Document doc= DocumentHelper.parseText(soap.getContent()); + //JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + + } catch (Exception e) { + // TODO Auto-generated catch block +// e.printStackTrace(); + message += " 请求报文解析失败"; + } + + + + return json; + } + + @Override + public JSONObject getOrderState12(HashMap hm, String url, String u, String p) { + // TODO Auto-generated method stub + String xml = request.getOrderState12(hm); + //System.out.println(xml); + List> list = null; + SoapUtil util = new SoapUtil(); + + SoapResult soap = new SoapResult(); + Element root = null; + String status = null,message = ""; + Map map = null; + String[] out = null; + //System.out.println("try之前"); + JSONObject json=new JSONObject(); + try { +// FileUtil.TextToFile(new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss").format(new Date())+"=>105接口:\r\n"); + //System.out.println("getUPSoapStream开始"); + String functions="urn:sap-com:document:sap:soap:functions:mc-style:ZSAP_DSJ_005:ZsapDsj005Request"; + soap = util.getUPSoapStream(xml, url,u,p,functions); //获取返回的报文; + //System.out.println("getUPSoapStream结束"); + //System.out.println("响应报文:"+soap.getContent()); + + + org.dom4j.Document doc= DocumentHelper.parseText(soap.getContent()); + //JSONObject json=new JSONObject(); + dom4j2Json(doc.getRootElement(),json); + + //System.out.println(json.toString()); + //String responsexml=soap.getContent().replace("",""); + //创建 XMLSerializer对象 + //XMLSerializer xmlSerializer = new XMLSerializer(); + //将xml转为json(注:如果是元素的属性,会在json里的key前加一个@标识) + //String result = xmlSerializer.read(responsexml).toString(); + //输出json内容 + //System.out.println(result); + + //请求sap响应报文写入到日志文档中记录 +// FileUtil.TextToFile(soap+"\r\n"); + + //解析响应报文,状态--返回报文信息 +// + +// System.out.println("1:"+new Date()); +// root = util.getRootElement(soap.getContent()); //获取报文xml的根节点 +// //System.out.println(root); +// System.out.println("2:"+new Date()); +// +// System.out.println("3:"+new Date()); +// +// status = util.getKeyParse(root, "MSGTY"); +//// message = util.getKeyParse(root, "MSGTX"); +// System.out.println("status__________"+status); +// if(status.equals("S")) { +// //代表获取成功,获取item里的值 +// list = util.getListParse(root, "TOUDA", "item"); +// System.out.println(list.size()); +// //获取返回的报文列表信息 +// if(list.size()>0) +// { +// status = "S"; +// message = util.getKeyParse(root, "MSGTX"); +// }else{ +// status = "E"; +// message = util.getKeyParse(root, "MSGTX"); +// System.out.println(message); +// } +// }else if(status.equals("E") ) { +// //代表获取失败,无法关闭的订单 +// message = util.getKeyParse(root, "MSGTX"); +// } +// System.out.println("4:"+new Date()); + //message += "\r\n 请求报文:"+xml+"\r\n 响应报文:"+soap; + + } catch (Exception e) { + // TODO Auto-generated catch block +// e.printStackTrace(); + message += " 请求报文解析失败"; + } + + //输出请求响应报文 + //if(openXmlMessage) + //{ + // message += "\r\n 请求报文:"+xml+"\r\n 响应报文:"+soap; + // } + + //HashMap result = util.sendData(status, message, list, map); + + return json; + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SoapResult.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SoapResult.java new file mode 100644 index 0000000..d182bd0 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SoapResult.java @@ -0,0 +1,23 @@ +package com.zzsmart.qomo.kn.cost.manage.plugin.webservice; + +public class SoapResult { + private String status; + private String content; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } +} + diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SoapUtil.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SoapUtil.java new file mode 100644 index 0000000..41f1c4f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/plugin/webservice/SoapUtil.java @@ -0,0 +1,452 @@ +package com.zzsmart.qomo.kn.cost.manage.plugin.webservice; + +import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.UsernamePasswordCredentials; +import org.apache.commons.httpclient.auth.AuthScope; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.StringRequestEntity; +import org.apache.commons.httpclient.params.HttpMethodParams; +import org.apache.commons.httpclient.methods.RequestEntity; +import org.xml.sax.InputSource; +import org.jdom2.Document; +import org.jdom2.Element; +import org.jdom2.JDOMException; +import org.jdom2.input.SAXBuilder; +import java.io.*; +import java.util.*; + +public class SoapUtil { + + //public static String responseXml; + /** + * 获取SOAP的请求头,并替换其中的标志符号为用户输入的城市 + * + * @return 客户将要发送给服务器的SOAP请求 + */ + private static String getSoapRequest() { + StringBuilder sb = new StringBuilder(); + sb.append("" + + "" + + "" + + "" + + "" + + "" + + ""); + return sb.toString(); + } + + /** + * 测试用户名密码密码授权访问webservice规范 + * @param wsdl + * @param xml + * @return + * @throws Exception + */ + public SoapResult getUPSoapInputStream(String wsdl, String xml){ + SoapResult result=new SoapResult(); + try { + String soap = xml; + if (soap == null) { + return result; + } + int timeout = 1000000; + + HttpClient client = new HttpClient(); + PostMethod postMethod = new PostMethod(wsdl); + // 设置连接超时 + client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout); + client.getState().setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("SAP_MES", "q123456789")); + // 设置读取时间超时 + client.getHttpConnectionManager().getParams().setSoTimeout(timeout); + //设置HTTP请求超时时不进行自动重发 + client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0,false)); + // 然后把Soap请求数据添加到PostMethod中 + RequestEntity requestEntity = new StringRequestEntity(soap, "application/soap+xml", "UTF-8"); + //设置请求头部,否则可能会报 “no SOAPAction header” 的错误 + postMethod.setRequestHeader("SOAPAction",""); + // 设置请求体 + postMethod.setRequestEntity(requestEntity); + int status = client.executeMethod(postMethod); + // 打印请求状态码 + //System.out.println("status:" + status); + // 获取响应体输入流 + //String soapResponseInfo = postMethod.getResponseBodyAsString(); + + // 获取响应体输入流 + InputStream is = postMethod.getResponseBodyAsStream(); + // 获取请求结果字符串 + //InputStreamReader inputStreamReader = new InputStreamReader(is); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + String responseLine = ""; + String soapResponseInfo = ""; + while((responseLine = bufferedReader.readLine()) != null) { + soapResponseInfo = soapResponseInfo + responseLine ; + } + result.setStatus(status + ""); + result.setContent(soapResponseInfo); + + return result; + } catch (Exception e) { + e.printStackTrace(); + result.setContent(e.getMessage()); + return result; + } + } + + + /** + * 用户名密码授权访问webservice规范 + * 新增返回状态标识 + * @param xml + * @return + * @throws Exception + */ + public SoapResult getUPTSoapStream(String xml, String url, String u, String p) { + SoapResult result = new SoapResult(); + try { + String soap = xml; + if (soap == null) { + return result; + } + int timeout = 1000000; + + HttpClient client = new HttpClient(); + PostMethod postMethod = new PostMethod(url); + // 设置连接超时 + client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout); + client.getState().setCredentials(AuthScope.ANY,new UsernamePasswordCredentials(u,p)); + //设置HTTP请求超时时不进行自动重发 + client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0,false)); + // 设置读取时间超时 + client.getHttpConnectionManager().getParams().setSoTimeout(timeout); + // 然后把Soap请求数据添加到PostMethod中 + RequestEntity requestEntity = new StringRequestEntity(soap, "application/soap+xml", "UTF-8"); + //设置请求头部,否则可能会报 “no SOAPAction header” 的错误 + postMethod.setRequestHeader("SOAPAction",""); + // 设置请求体 + postMethod.setRequestEntity(requestEntity); + int status = client.executeMethod(postMethod); + // 打印请求状态码 + System.out.println("status:" + status); + // 获取响应体输入流 + //String soapResponseInfo = postMethod.getResponseBodyAsString(); + + // 获取响应体输入流 + InputStream is = postMethod.getResponseBodyAsStream(); + // 获取请求结果字符串 + //InputStreamReader inputStreamReader = new InputStreamReader(is); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + String responseLine = ""; + String soapResponseInfo = ""; + while((responseLine = bufferedReader.readLine()) != null) { + soapResponseInfo = soapResponseInfo + responseLine ; + } + System.out.println("return:" + new Date()); + result.setStatus(status +""); + result.setContent(soapResponseInfo); + return result; + } catch (Exception e) { + e.printStackTrace(); + result.setContent(e.getMessage()); + return result; + } + } + + /** + * 用户名密码授权访问webservice规范 + * @param xml + * @return + */ + public SoapResult getUPSoapStream(String xml, String url, String u, String p,String functions) { + SoapResult result = new SoapResult(); + try { + String soap = xml; + if (soap == null) { + return result; + } + int timeout = 1000000; + + HttpClient client = new HttpClient(); + PostMethod postMethod = new PostMethod(url); + // 设置连接超时 + client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout); + client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(u, p)); + //if(!u.equals("")) { + // client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(u, p)); + //} + //设置HTTP请求超时时不进行自动重发 + client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0,false)); + + // 设置读取时间超时 + client.getHttpConnectionManager().getParams().setSoTimeout(timeout); + // 然后把Soap请求数据添加到PostMethod中 + String contentType="text/xml"; + //String contentType="application/soap+xml;charset=UTF-8;action=\"urn:sap-com:document:sap:soap:functions:mc-style:ZSAP_DSJ_001:ZsapDsj001Request\""; + RequestEntity requestEntity = new StringRequestEntity(soap, contentType, "UTF-8"); + //设置请求头部,否则可能会报 “no SOAPAction header” 的错误 + //postMethod.setRequestHeader("SOAPAction","urn:sap-com:document:sap:soap:functions:mc-style:ZSAP_DSJ_001:ZsapDsj001Request"); + postMethod.setRequestHeader("SOAPAction",functions); + + + System.out.println(requestEntity); + // 设置请求体 + postMethod.setRequestEntity(requestEntity); + int status = client.executeMethod(postMethod); + // 打印请求状态码 + System.out.println("status:" + status); + // 获取响应体输入流 + //String soapResponseInfo = postMethod.getResponseBodyAsString(); + + // 获取响应体输入流 + InputStream is = postMethod.getResponseBodyAsStream(); + // 获取请求结果字符串 + //InputStreamReader inputStreamReader = new InputStreamReader(is); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + String responseLine = ""; + String soapResponseInfo = ""; + while((responseLine = bufferedReader.readLine()) != null) { + soapResponseInfo = soapResponseInfo + responseLine ; + } + result.setStatus(status + ""); + result.setContent(soapResponseInfo); + + return result; + } catch (Exception e) { + e.printStackTrace(); + result.setContent(e.getMessage()); + return result; + } + } + + /** + * 用户把SOAP请求发送给服务器端,并返回服务器点返回的输入流数据 + * @param wsdl 服务器的wsdl地址 + * @param xml 请求的报文信息 + * @return 服务器端返回的输入流,供客户端读取 + * @throws Exception + */ + public SoapResult getSoapInputStream(String wsdl, String xml) { + SoapResult result = new SoapResult(); + try { + String soap = xml; + if (soap == null) { + return result; + } + int timeout = 100000; + + HttpClient client = new HttpClient(); + PostMethod postMethod = new PostMethod(wsdl); + // 设置连接超时 + client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout); + client.getState().setCredentials(AuthScope.ANY,new UsernamePasswordCredentials("ESB_MES","q123456789")); + //设置HTTP请求超时时不进行自动重发 + client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(0,false)); + // 设置读取时间超时 + client.getHttpConnectionManager().getParams().setSoTimeout(timeout); +// client.getHttpConnectionManager().getParams().setParameter("Name", "LP02"); + // 然后把Soap请求数据添加到PostMethod中 + RequestEntity requestEntity = new StringRequestEntity(soap, "application/soap+xml", "UTF-8"); + //设置请求头部,否则可能会报 “no SOAPAction header” 的错误 + postMethod.setRequestHeader("SOAPAction",""); +// postMethod.setRequestHeader("SOAPAction",""); +// postMethod.setRequestHeader("Binding","LP02"); + // 设置请求体 + postMethod.setRequestEntity(requestEntity); + int status = client.executeMethod(postMethod); + // 打印请求状态码 + //System.out.println("status:" + status); + // 获取响应体输入流 + //String soapResponseInfo = postMethod.getResponseBodyAsString(); + + // 获取响应体输入流 + InputStream is = postMethod.getResponseBodyAsStream(); + // 获取请求结果字符串 + //InputStreamReader inputStreamReader = new InputStreamReader(is); + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")); + + String responseLine = ""; + String soapResponseInfo = ""; + while((responseLine = bufferedReader.readLine()) != null) { + soapResponseInfo = soapResponseInfo + responseLine ; + } + result.setStatus(status+""); + result.setContent(soapResponseInfo); + return result; + } catch (Exception e) { + e.printStackTrace(); + result.setContent(e.getMessage()); + return result; + } + } + + + /** + * 通过返回的报文数据解析获取xml根节点 + * @param xml 返回的报文xml + * @return + * @throws JDOMException + * @throws IOException + */ + public Element getRootElement(String xml) throws JDOMException, IOException { + StringReader read = new StringReader(xml); + //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入 + InputSource source = new InputSource(read); + SAXBuilder builder=new SAXBuilder(false); + + Document doc=builder.build(source); + Element root = doc.getRootElement(); + return root; + } + + /** + * 通过父节点NODE值,获取子级NODE节点的List>列表 + * @param root 解析的文档xml根节点 + * @param node 父节点标签值 + * @param slist list子节点标签值 + * @return List> + * @throws Exception + */ + public List> getListParse(Element root,String node,String slist) throws Exception{ + //返回的列表定义 + List> alist = new ArrayList>(); + + //返回指定节点的标签Element值 + Element name = getNodeElement(root,node); +// System.out.println("指定节点的值:"+name); + + List booklist=name.getChildren(slist); +// List booklist=name.getChildren(); +// System.out.println("指定节点的值11:"+booklist); + for (Iterator iter = booklist.iterator(); iter.hasNext();) { + Element book = (Element) iter.next(); + List list = book.getChildren(); + HashMap map = new HashMap(); + for(Element child : list) + { + map.put(child.getName(), child.getTextTrim()); + } + alist.add(map); + } +// System.out.println("获取数据行数:"+booklist.size()); + + return alist; + } + + + /** + * 通过父节点NODE值,获取子级NODE节点的List>列表 + * @param root 解析的文档xml根节点 + * @param node 父节点标签值 + * @param slist list子节点标签值 + * @return List> + * @throws Exception + */ + public List> getListBarcode(Element root,String node,String slist) throws Exception{ + //返回的列表定义 + List> alist = new ArrayList>(); + + //返回指定节点的标签Element值 + Element name = getNodeElement(root,node); +// System.out.println("指定节点的值:"+name); + +// List booklist=name.getChildren(slist); + List booklist=name.getChildren(); +// System.out.println("指定节点的值11:"+booklist); + for (Iterator iter = booklist.iterator(); iter.hasNext();) { + Element book = (Element) iter.next(); + List list = book.getChildren(); + HashMap map = new HashMap(); + for(Element child : list) + { + map.put(child.getName(), child.getTextTrim()); + } + alist.add(map); + } +// System.out.println("获取数据行数:"+booklist.size()); + + return alist; + } + + public HashMap getMapParse(Element root, String node) throws JDOMException, IOException + { + Element key = getNodeElement(root, node); + List list = key.getChildren(); + HashMap map = new HashMap(); + for (Element e : list) { + map.put(e.getName(), e.getTextTrim()); + } + return map; + } + + /** + * 通过节点名称获取 对应的节点值 + * @param root 解析的文档xml根节点 + * @param node 节点的名称 + * @return + * @throws JDOMException + * @throws IOException + */ + public String getKeyParse(Element root,String node) throws JDOMException, IOException{ + + //返回指定节点的标签Element值 + Element key = getNodeElement(root,node); + //System.out.println(key); + return key.getTextTrim(); + } + + /** + * 返回指定的节点名称的Element标签 + * @param e 根节点值 + * @param name 获取的标签值 + * @return + */ + // + public static Element getNodeElement(Element e,String name){ + Element ee = null ; + if (e != null) + { + if(e.getName() == name) + { + ee = e; + }else{ + if (e.getChildren() != null) //如果存在子节点 + { + List list = e.getChildren(); + for (Element el : list) //循环输出 + { + if(el.getName()== name) //如果子节点还存在子节点,则递归获取 + { + ee = el; + return ee; + } + else + { +// System.out.println(el.getName()+", "); + ee = getNodeElement(el, name); //将叶子节点值压入map + } + } + } + } + } + return ee; + } + + public HashMap sendData(String status, String message, List list, Map map){ + HashMap send = new HashMap(); + //请求状态 + send.put("status", status); + //请求状态信息 + send.put("message", message); + //请求的列表数据 + send.put("list", list); + //请求的单列数据 + send.put("map", map); + + return send; + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostActualService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostActualService.java new file mode 100644 index 0000000..51498b3 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostActualService.java @@ -0,0 +1,38 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostActual; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.vo.CostEffectiveVO; +import com.zzsmart.qomo.kn.cost.manage.vo.LaborDiffVO; +import com.zzsmart.qomo.kn.cost.manage.vo.RealLaborVO; +import com.zzsmart.qomo.kn.cost.manage.vo.RealProduceVO; +import org.springframework.web.servlet.ModelAndView; + +import java.util.List; + +/** + * @Description: app_scene_cost_actual + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostActualService extends IService { + + public void addCostActual(CostEffectiveVO costEffectiveVO); + + public List queryParent(int resultid, String matnr); + + public List queryMatnrDetail(int resultid, String matnr); + + public List queryAufnrDetail(int resultid, String matnr); + + public List queryProduceDetail(int resultid, String matnr); + + public ModelAndView exportMatnrDetail(int resultid, String matnr); + + public ModelAndView exportLaborDetail(int resultid, String matnr); + + public ModelAndView exportProduceDetail(int resultid, String matnr); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostAufnrMatnrService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostAufnrMatnrService.java new file mode 100644 index 0000000..677b46d --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostAufnrMatnrService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostAufnrMatnr; + +/** + * @Description: app_scene_cost_aufnr_matnr + * @Author: jeecg-boot + * @Date: 2024-10-05 + * @Version: V1.0 + */ +public interface IAppSceneCostAufnrMatnrService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostBomRelevancyService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostBomRelevancyService.java index 64b4f6a..e90a001 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostBomRelevancyService.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostBomRelevancyService.java @@ -25,6 +25,6 @@ public interface IAppSceneCostBomRelevancyService extends IService queryAllBomInfoByTopMaterialCode(String topMaterialCode); + List queryAllBomInfoByTopMaterialCode(String topMaterialCode,String werks); } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostCountService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostCountService.java index 3796688..8f05e34 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostCountService.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostCountService.java @@ -3,8 +3,13 @@ package com.zzsmart.qomo.kn.cost.manage.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostCount; import com.zzsmart.qomo.kn.cost.manage.vo.AppSceneCostCountVO; +import com.zzsmart.qomo.kn.cost.manage.vo.BatchCount; +import com.zzsmart.qomo.kn.cost.manage.vo.MatnrVersionVO; import com.zzsmart.qomo.kn.cost.manage.vo.MissingComponentVO; +import org.jeecg.common.api.vo.Result; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -33,4 +38,10 @@ public interface IAppSceneCostCountService extends IService { * @param appSceneCostCount */ void addCostCountTask(AppSceneCostCountVO appSceneCostCount); + + AppSceneCostCount queryByVersion(String version); + + public Result BatchCount(HttpServletRequest request, HttpServletResponse response); + + public MatnrVersionVO getVersionsByMatnr(String werks, String matnr, String ymonth); } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostInvoiceService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostInvoiceService.java new file mode 100644 index 0000000..d898272 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostInvoiceService.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostInvoice; +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEine; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @Description: app_scene_cost_invoice + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +public interface IAppSceneCostInvoiceService extends IService { + + Map getPrices(List materialNos); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningAufnrService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningAufnrService.java new file mode 100644 index 0000000..13a0bdc --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningAufnrService.java @@ -0,0 +1,29 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningAufnr; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import com.zzsmart.qomo.kn.cost.manage.vo.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @Description: app_scene_cost_mining_aufnr + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostMiningAufnrService extends IService { + + public List getByResultid(int id); + + public List getLaborByResultid(int id); + + public List getProduceByResultid(int id); + + public ModelAndView exportXls2(HttpServletRequest request, AufnrExportVO object, Class clazz, String title); + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningDiffService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningDiffService.java new file mode 100644 index 0000000..807f181 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningDiffService.java @@ -0,0 +1,19 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningDiff; +import com.zzsmart.qomo.kn.cost.manage.vo.MiningDiffTotalVO; + +import java.util.List; + +/** + * @Description: app_scene_cost_mining_diff + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostMiningDiffService extends IService { + + public List getMiningDiffTotalById(int id); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningLaborService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningLaborService.java new file mode 100644 index 0000000..e1ede49 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningLaborService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningLabor; + +/** + * @Description: app_scene_cost_mining_labor + * @Author: jeecg-boot + * @Date: 2024-11-05 + * @Version: V1.0 + */ +public interface IAppSceneCostMiningLaborService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningMaterialService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningMaterialService.java new file mode 100644 index 0000000..170b222 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningMaterialService.java @@ -0,0 +1,27 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardResult; +import com.zzsmart.qomo.kn.cost.manage.vo.MaterialDiff; +import com.zzsmart.qomo.kn.cost.manage.vo.MiningDiffTotalVO; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * @Description: app_scene_cost_mining_material + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostMiningMaterialService extends IService { + + public List getByResultid(int id); + + public ModelAndView exportXls2(HttpServletRequest request, AppSceneCostMiningMaterial object, Class clazz, String title); + + //public ModelAndView exportMaterialDiffXls(HttpServletRequest request, AppSceneCostMiningMaterial object, Class clazz, String title); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningReasonService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningReasonService.java new file mode 100644 index 0000000..06ac61f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningReasonService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningReason; + +/** + * @Description: app_scene_cost_mining_reason + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostMiningReasonService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningResultService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningResultService.java new file mode 100644 index 0000000..fc92f57 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostMiningResultService.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningResult; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.vo.MatnrVersionVO; + +import java.util.List; + +/** + * @Description: app_scene_cost_mining_result + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostMiningResultService extends IService { + + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapAfruService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapAfruService.java new file mode 100644 index 0000000..50fb5da --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapAfruService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapAfru; + +/** + * @Description: app_scene_cost_sap_afru + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostSapAfruService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapEineService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapEineService.java new file mode 100644 index 0000000..58db354 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapEineService.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEine; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @Description: app_scene_cost_sap_eine + * @Author: jeecg-boot + * @Date: 2024-09-21 + * @Version: V1.0 + */ +public interface IAppSceneCostSapEineService extends IService { + + Map getPrices(List materialNos); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapEkpoService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapEkpoService.java new file mode 100644 index 0000000..c33f39a --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapEkpoService.java @@ -0,0 +1,21 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEine; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEkpo; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + +/** + * @Description: app_scene_cost_sap_ekpo + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +public interface IAppSceneCostSapEkpoService extends IService { + + Map getPrices(List materialNos); + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapHourRateService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapHourRateService.java new file mode 100644 index 0000000..c3c4473 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapHourRateService.java @@ -0,0 +1,14 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapHourRate; + +/** + * @Description: app_scene_cost_sap_hour_rate + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostSapHourRateService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapZcorcService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapZcorcService.java new file mode 100644 index 0000000..b29658e --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapZcorcService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; + +/** + * @Description: app_scene_cost_sap_zcorc + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostSapZcorcService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapZtmmx004Service.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapZtmmx004Service.java new file mode 100644 index 0000000..763bca7 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostSapZtmmx004Service.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZtmmx004; + +/** + * @Description: app_scene_cost_sap_ztmmx004 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +public interface IAppSceneCostSapZtmmx004Service extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardBomService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardBomService.java new file mode 100644 index 0000000..ac32001 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardBomService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardBom; + +/** + * @Description: app_scene_cost_standard_bom + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostStandardBomService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardProductprocessService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardProductprocessService.java new file mode 100644 index 0000000..69321e0 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardProductprocessService.java @@ -0,0 +1,15 @@ +package com.zzsmart.qomo.kn.cost.manage.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; + +/** + * @Description: app_scene_cost_standard_productprocess + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +public interface IAppSceneCostStandardProductprocessService extends IService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardResultService.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardResultService.java index 9f143cd..9ddfbfe 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardResultService.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/IAppSceneCostStandardResultService.java @@ -2,6 +2,9 @@ package com.zzsmart.qomo.kn.cost.manage.service; import com.baomidou.mybatisplus.extension.service.IService; import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardResult; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; /** * @Description: app_scene_cost_standard_detail @@ -11,4 +14,6 @@ import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardResult; */ public interface IAppSceneCostStandardResultService extends IService { + + public ModelAndView exportXls2(HttpServletRequest request, AppSceneCostStandardResult object, Class clazz, String title); } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostActualServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostActualServiceImpl.java new file mode 100644 index 0000000..3de9dd2 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostActualServiceImpl.java @@ -0,0 +1,656 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import ch.qos.logback.core.joran.util.beans.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostActual; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningResult; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostActualMapper; +import com.zzsmart.qomo.kn.cost.manage.plugin.CostEffectiveService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostActualService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningResultService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapZcorcService; +import com.zzsmart.qomo.kn.cost.manage.vo.CostEffectiveVO; +import com.zzsmart.qomo.kn.cost.manage.vo.RealLaborVO; +import com.zzsmart.qomo.kn.cost.manage.vo.RealProduceVO; +import com.zzsmart.qomo.kn.cost.manage.vo.ZcorcMatnr; +import org.apache.commons.beanutils.BeanUtils; +import org.jeecgframework.poi.excel.def.MapExcelConstants; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecgframework.poi.excel.view.JeecgMapExcelView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.web.servlet.ModelAndView; + +import javax.jws.Oneway; +import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; +import java.util.*; + +/** + * @Description: app_scene_cost_actual + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostActualServiceImpl extends ServiceImpl implements IAppSceneCostActualService { + + private static final Logger logger = LoggerFactory.getLogger(AppSceneCostActualServiceImpl.class); + + @Autowired + CostEffectiveService costEffectiveService; + + @Autowired + IAppSceneCostSapZcorcService iAppSceneCostSapZcorcService; + + @Autowired + IAppSceneCostMiningResultService iAppSceneCostMiningResultService; + + + @Override + public void addCostActual(CostEffectiveVO costEffectiveVO){ + //删除原有记录 + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("matnr",costEffectiveVO.getMatnr()); + queryWrapper.eq("werks",costEffectiveVO.getWerks()); + queryWrapper.eq("ymonth",costEffectiveVO.getYmonth()); + List actuals = this.list(queryWrapper); + if(actuals.size()>0){ + List deleteversions = new ArrayList<>(); + for (AppSceneCostActual appSceneCostActual:actuals){ + deleteversions.add(appSceneCostActual.getVersion()); + } + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.in("version",deleteversions); + iAppSceneCostSapZcorcService.remove(queryWrapper1); + this.remove(queryWrapper); + } + + List versions = costEffectiveService.loadsapservice(costEffectiveVO.getWerks(),costEffectiveVO.getMatnr(),"",costEffectiveVO.getYmonth()); + + + for (AppSceneCostSapZcorc zcorc:versions){ + AppSceneCostActual appSceneCostActual=AppSceneCostActual.builder() + .matnr(costEffectiveVO.getMatnr()) + .werks(costEffectiveVO.getWerks()) + .version(zcorc.getVersion()) + .ymonth(costEffectiveVO.getYmonth()) + .createTime(new Date()) + .aufnr(zcorc.getAufnr()) + .build(); + this.save(appSceneCostActual); + } + + //this.save(appSceneCostActual); + } + + @Override + public List queryParent(int resultid, String matnr){ + List items = new ArrayList<>(); + AppSceneCostMiningResult result=iAppSceneCostMiningResultService.getById(resultid); + if(result!=null){ + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("matnr", result.getMatnr()); + queryWrapper.eq("aufnr", result.getAufnr()); + List actuals = this.list(queryWrapper); + if (actuals.size() > 0) { + AppSceneCostActual appSceneCostActual = actuals.get(0); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("version", appSceneCostActual.getVersion()); + queryWrapper1.eq("idnrk", matnr); + List list = iAppSceneCostSapZcorcService.list(queryWrapper1); + Set matnrSet = new HashSet<>(); + for (AppSceneCostSapZcorc zcorc:list){ + if(!zcorc.getMatnr().equals(result.getMatnr())&&!matnrSet.contains(zcorc.getMatnr())&&!zcorc.getMatnr().equals(matnr)){ + matnrSet.add(zcorc.getMatnr()); + } + } + items.add(matnr); + for (String pmatnr:matnrSet){ + //items.add(pmatnr); + List parents=queryParent(resultid,pmatnr); + items.addAll(parents); + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + return items; + } + + @Override + public List queryMatnrDetail(int resultid, String matnr){ + if(matnr.equals("41030050003000")){ + logger.info(matnr); + } + List zcorcs=new ArrayList<>(); + AppSceneCostMiningResult result=iAppSceneCostMiningResultService.getById(resultid); + if(result!=null){ + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("matnr", result.getMatnr()); + queryWrapper.eq("aufnr", result.getAufnr()); + List actuals = this.list(queryWrapper); + if (actuals.size() > 0) { + AppSceneCostActual appSceneCostActual = actuals.get(0); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("version", appSceneCostActual.getVersion()); + queryWrapper1.eq("idnrk", matnr); + queryWrapper1.ne("matnr",matnr); + List list = iAppSceneCostSapZcorcService.list(queryWrapper1); + Map> pmatnrMap = new HashMap<>(); + for (AppSceneCostSapZcorc zcorc : list) { + String pmatnr = zcorc.getMatnr(); + if (pmatnrMap.containsKey(pmatnr)) { + List items = pmatnrMap.get(pmatnr); + items.add(zcorc); + pmatnrMap.put(pmatnr, items); + } else { + List items = new ArrayList<>(); + items.add(zcorc); + pmatnrMap.put(pmatnr, items); + } + } + List newlist = new ArrayList<>(); + for (String pmatnr : pmatnrMap.keySet()) { + List items = pmatnrMap.get(pmatnr); + if (items.size() > 0) { + double aufnrmng = 0; + double aufnrnum = 0; + AppSceneCostSapZcorc topitem = items.get(0); + for (AppSceneCostSapZcorc zcorc : items) { + AppSceneCostSapZcorc newitem = JSON.parseObject(JSON.toJSONString(zcorc),AppSceneCostSapZcorc.class); + //BeanUtils.copyProperties(zcorc,newitem); + //newitem.setAufnrnum(zcorc.getMenge()); + newitem.setPnum(null); + newitem.setAvgnum(null); + newitem.setTotalprice(null); + newitem.setAvgprice(zcorc.getRkst001()); + if(zcorc.getAufnrmenge()!=null){ + //newitem.setAufnrmenge(new BigDecimal(0)); + newitem.setAufnrnum(zcorc.getAufnrmenge()); + aufnrnum+=zcorc.getAufnrmenge().doubleValue(); + }else{ + newitem.setAufnrnum(new BigDecimal(0)); + } + zcorcs.add(newitem); + aufnrmng+=zcorc.getAufnrmng().doubleValue(); + //aufnrnum+=zcorc.getMenge().doubleValue(); + } + AppSceneCostSapZcorc total = new AppSceneCostSapZcorc(); + total.setIdnrk("小计:"); + total.setAufnrmng(new BigDecimal(aufnrmng)); + total.setAufnrnum(new BigDecimal(aufnrnum).setScale(4,RoundingMode.HALF_UP)); + total.setAvgnum(topitem.getAufnrtotal()); + total.setAvgprice(topitem.getAvgprice()); + total.setTotalprice(new BigDecimal(total.getAvgprice().doubleValue()/total.getAufnrnum().doubleValue(),new MathContext(4, RoundingMode.HALF_UP))); + //total.setAufnrnum(topitem.getAufnrnum()); + total.setPnum(topitem.getPnum()); + total.setAvgnum(topitem.getAvgnum()); + //total.set + zcorcs.add(total); + } + } + //如果有多个父物料,最后再增加一行合计 + if (pmatnrMap.size() > 1 && list.size() > 0) { + AppSceneCostSapZcorc topitem = list.get(0); + AppSceneCostSapZcorc total = new AppSceneCostSapZcorc(); + total.setIdnrk("合计:"); + total.setAvgnum(topitem.getTotalnum()); + total.setTotalnum(topitem.getTotalnum()); + total.setTotalprice(topitem.getTotalprice()); + zcorcs.add(total); + } + //return newlist; + } + }catch (Exception e){ + e.printStackTrace(); + } + } + return zcorcs; + } + + public String getParentLayer(String layer){ + //String layer = zcorc1.getLayer(); + String[] names = layer.split("-"); + if(names.length>3){ + String toplayer=""; + for (int i=0;i queryProduceDetail(int resultid, String matnr){ + if(matnr.equals("41030050003000")){ + logger.info(matnr); + } + List list1 = queryMatnrDetail(resultid,matnr); + double pnum=1; + if(list1.size()>0){ + AppSceneCostSapZcorc zcorc=list1.get(list1.size()-1); + if(zcorc.getAvgnum()!=null){ + pnum=zcorc.getAvgnum().doubleValue(); + } + } + List zcorcs=new ArrayList<>(); + AppSceneCostMiningResult result=iAppSceneCostMiningResultService.getById(resultid); + if(result!=null){ + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("matnr", result.getMatnr()); + queryWrapper.eq("aufnr", result.getAufnr()); + List actuals = this.list(queryWrapper); + if (actuals.size() > 0) { + AppSceneCostActual appSceneCostActual = actuals.get(0); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("version", appSceneCostActual.getVersion()); + queryWrapper1.eq("idnrk", matnr); + queryWrapper1.eq("matnr",matnr); + List list = iAppSceneCostSapZcorcService.list(queryWrapper1); + Map> pmatnrMap = new HashMap<>(); + String toplayer = ""; + for (AppSceneCostSapZcorc zcorc : list) { + String pmatnr = getParentLayer(zcorc.getLayer()); + if(toplayer.equals("")){ + toplayer=pmatnr; + } + if (pmatnrMap.containsKey(pmatnr)) { + List items = pmatnrMap.get(pmatnr); + items.add(zcorc); + pmatnrMap.put(pmatnr, items); + } else { + List items = new ArrayList<>(); + items.add(zcorc); + pmatnrMap.put(pmatnr, items); + } + } + List newlist = new ArrayList<>(); + for (String pmatnr : pmatnrMap.keySet()) { + if(!pmatnr.equals(toplayer)){ + continue; + } + List items = pmatnrMap.get(pmatnr); + if (items.size() > 0) { + //订单数量 + double aufnrmng = 0; + //实际工时 + double sbgs = 0; + double rdgs=0; + double flgs=0; + double qtgs=0; + double sbgf=0; + double rdgf=0; + double flgf=0; + double qtgf=0; + AppSceneCostSapZcorc topitem = items.get(0); + for (AppSceneCostSapZcorc zcorc : items) { + RealProduceVO newitem = JSON.parseObject(JSON.toJSONString(zcorc),RealProduceVO.class); + //BeanUtils.copyProperties(zcorc,newitem); + //newitem.setAufnrnum(zcorc.getMenge()); + newitem.setPnum(null); + newitem.setAvgnum(null); + newitem.setTotalprice(null); + newitem.setAvgprice(zcorc.getRkst001()); + newitem.setPnum(new BigDecimal(pnum)); + if(pmatnr.equals(toplayer)) { + BigDecimal six = new BigDecimal(60); + newitem.setAufnrmng(newitem.getMenge()); + newitem.setSbgf(newitem.getSbgs().multiply(newitem.getSbfv()).divide(six,RoundingMode.HALF_UP)); + newitem.setRdgf(newitem.getRdgs().multiply(newitem.getRdfv()).divide(six,RoundingMode.HALF_UP)); + newitem.setFlgf(newitem.getFlgs().multiply(newitem.getFlfv()).divide(six,RoundingMode.HALF_UP)); + newitem.setQtgf(newitem.getQtgs().multiply(newitem.getQtfv()).divide(six,RoundingMode.HALF_UP)); + newitem.setAvgsbgs(newitem.getSbgs().divide(newitem.getMenge(),RoundingMode.HALF_UP)); + newitem.setAvgrdgs(newitem.getRdgs().divide(newitem.getMenge(),RoundingMode.HALF_UP)); + newitem.setAvgflgs(newitem.getFlgs().divide(newitem.getMenge(),RoundingMode.HALF_UP)); + newitem.setAvgqtgs(newitem.getQtgs().divide(newitem.getMenge(),RoundingMode.HALF_UP)); + newitem.setAvgsbfv(newitem.getSbfv().divide(six,RoundingMode.HALF_UP)); + newitem.setAvgrdfv(newitem.getRdfv().divide(six,RoundingMode.HALF_UP)); + newitem.setAvgflfv(newitem.getFlfv().divide(six,RoundingMode.HALF_UP)); + newitem.setAvgqtfv(newitem.getQtfv().divide(six,RoundingMode.HALF_UP)); + aufnrmng+=newitem.getAufnrmng().doubleValue(); + sbgs+=newitem.getSbgs().doubleValue(); + rdgs+=newitem.getRdgs().doubleValue(); + flgs+=newitem.getFlgs().doubleValue(); + qtgs+=newitem.getQtgs().doubleValue(); + sbgf+= newitem.getSbgf().doubleValue(); + rdgf+=newitem.getRdgf().doubleValue(); + flgf+=newitem.getFlgf().doubleValue(); + qtgf+=newitem.getQtgf().doubleValue(); + } + zcorcs.add(newitem); + } + RealProduceVO total = new RealProduceVO(); + total.setIdnrk("小计:"); + total.setAufnrmng(new BigDecimal(aufnrmng)); + total.setSbgs(new BigDecimal(sbgs)); + total.setRdgs(new BigDecimal(rdgs)); + total.setFlgs(new BigDecimal(flgs)); + total.setQtgs(new BigDecimal(qtgs)); + total.setPnum(new BigDecimal(pnum)); + total.setAvgsbgs(total.getSbgs().divide(total.getAufnrmng(),RoundingMode.HALF_UP)); + total.setAvgflgs(total.getFlgs().divide(total.getAufnrmng(),RoundingMode.HALF_UP)); + total.setAvgrdgs(total.getRdgs().divide(total.getAufnrmng(),RoundingMode.HALF_UP)); + total.setAvgqtgs(total.getQtgs().divide(total.getAufnrmng(),RoundingMode.HALF_UP)); + total.setSbgf(new BigDecimal(sbgf)); + total.setRdgf(new BigDecimal(rdgf)); + total.setFlgf(new BigDecimal(flgf)); + total.setQtgf(new BigDecimal(qtgf)); + total.setAvgsbfv(total.getSbgf().divide(total.getSbgs(),RoundingMode.HALF_UP)); + total.setAvgrdfv(total.getRdgf().divide(total.getRdgs(),RoundingMode.HALF_UP)); + total.setAvgflfv(total.getFlgf().divide(total.getFlgs(),RoundingMode.HALF_UP)); + total.setAvgqtfv(total.getQtgf().divide(total.getQtgs(),RoundingMode.HALF_UP)); + + zcorcs.add(total); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + return zcorcs; + } + @Override + public List queryAufnrDetail(int resultid, String matnr){ + if(matnr.equals("41030050003000")){ + logger.info(matnr); + } + List list1 = queryMatnrDetail(resultid,matnr); + double pnum=1; + if(list1.size()>0){ + AppSceneCostSapZcorc zcorc=list1.get(list1.size()-1); + if(zcorc.getAvgnum()!=null){ + pnum=zcorc.getAvgnum().doubleValue(); + } + } + List zcorcs=new ArrayList<>(); + AppSceneCostMiningResult result=iAppSceneCostMiningResultService.getById(resultid); + if(result!=null){ + try { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("matnr", result.getMatnr()); + queryWrapper.eq("aufnr", result.getAufnr()); + List actuals = this.list(queryWrapper); + if (actuals.size() > 0) { + AppSceneCostActual appSceneCostActual = actuals.get(0); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("version", appSceneCostActual.getVersion()); + queryWrapper1.eq("idnrk", matnr); + queryWrapper1.eq("matnr",matnr); + List list = iAppSceneCostSapZcorcService.list(queryWrapper1); + Map> pmatnrMap = new HashMap<>(); + String toplayer = ""; + for (AppSceneCostSapZcorc zcorc : list) { + String pmatnr = getParentLayer(zcorc.getLayer()); + if(toplayer.equals("")){ + toplayer=pmatnr; + } + if (pmatnrMap.containsKey(pmatnr)) { + List items = pmatnrMap.get(pmatnr); + items.add(zcorc); + pmatnrMap.put(pmatnr, items); + } else { + List items = new ArrayList<>(); + items.add(zcorc); + pmatnrMap.put(pmatnr, items); + } + } + List newlist = new ArrayList<>(); + for (String pmatnr : pmatnrMap.keySet()) { + if(!pmatnr.equals(toplayer)){ + continue; + } + List items = pmatnrMap.get(pmatnr); + if (items.size() > 0) { + double aufnrmng = 0; + double rggs = 0; + double aufnrnum=0; + double avgrggs=0; + double avgprice=0; + double rggf = 0; + AppSceneCostSapZcorc topitem = items.get(0); + for (AppSceneCostSapZcorc zcorc : items) { + RealLaborVO newitem = JSON.parseObject(JSON.toJSONString(zcorc),RealLaborVO.class); + //BeanUtils.copyProperties(zcorc,newitem); + //newitem.setAufnrnum(zcorc.getMenge()); + newitem.setPnum(new BigDecimal(pnum)); + //newitem.setAvgnum(null); + //newitem.setTotalprice(null); + //newitem.setAvgprice(zcorc.getRkst001()); + BigDecimal six = new BigDecimal(60.0); + if(pmatnr.equals(toplayer)) { + //if(zcorc.getAufnrmenge()!=null){ + //newitem.setAufnrmenge(new BigDecimal(0)); + newitem.setAufnrmng(zcorc.getPsmng()); + aufnrmng+=newitem.getAufnrmng().doubleValue(); + //newitem.setAufnrnum(zcorc.getAufnrmenge()); + newitem.setFixedrggs(newitem.getRggs()); + if (zcorc.getRggs() != null) { + rggs += zcorc.getRggs().doubleValue(); + } + //double price = zcorc.getMenge().doubleValue()*zcorc.getKst003().doubleValue(); + //newitem.setAvgprice(new BigDecimal(price)); + //avgprice+=price; + BigDecimal gf = newitem.getRggs().multiply(newitem.getRgfv()).divide(six,RoundingMode.HALF_UP); + newitem.setRggf(gf); + newitem.setUrggs(newitem.getRggs().divide(newitem.getAufnrmng(),RoundingMode.HALF_UP)); + rggf+=gf.doubleValue(); + newitem.setAvgrggs(newitem.getRggs().divide(newitem.getMenge(),RoundingMode.HALF_UP)); + newitem.setAvgrgfv(newitem.getRgfv().divide(six,RoundingMode.HALF_UP)); + //aufnrnum+=zcorc.getRggs().doubleValue(); + //newitem.setAufnrnum(zcorc.getRggs()); + //double totalprice = price/zcorc.getRggs().doubleValue(); + //newitem.setTotalprice(new BigDecimal(totalprice)); + //newitem.setAvgnum(newitem.getAufnrnum().divide(newitem.getAufnrmng(),RoundingMode.HALF_UP)); + //aufnrmng+=zcorc.getAufnrmng().doubleValue(); + } + //}else{ + // newitem.setAufnrnum(new BigDecimal(0)); + //} + zcorcs.add(newitem); + } + if(aufnrmng!=0){ + avgrggs = rggs/aufnrmng; + } + RealLaborVO total = new RealLaborVO(); + total.setIdnrk("小计:"); + total.setAufnrmng(new BigDecimal(aufnrmng)); + total.setPnum(new BigDecimal(pnum)); + total.setRggs(new BigDecimal(rggs)); + total.setFixedrggs(new BigDecimal(rggs)); + total.setAvgrggs(total.getRggs().multiply(total.getPnum()).divide(total.getAufnrmng(),RoundingMode.HALF_UP)); + total.setRggf(new BigDecimal(rggf*pnum)); + total.setAvgrgfv(total.getRggf().divide(total.getRggs(),RoundingMode.HALF_UP)); + zcorcs.add(total); + } + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + return zcorcs; + } + @Override + public ModelAndView exportMatnrDetail(int resultid, String matnr){ + String title="材料明细"; + String fields="layer,matnr,werks,aufnr,ppsmng,idnrk,maktx,kmonth,unmng,kst001,rkst000,aufnrmng,aufnrnum,pnum,avgnum,avgprice,totalprice"; + + List parents = queryParent(resultid,matnr); + //Map> data=new HashMap<>(); + List> list = new ArrayList<>(); + for(String idnrk:parents){ + List produceDiffVOS=queryMatnrDetail(resultid,idnrk); + Map map1 = new HashMap<>(); + map1.put(NormalExcelConstants.CLASS, AppSceneCostSapZcorc.class); + map1.put(NormalExcelConstants.PARAMS, new ExportParams(title+"报表", idnrk)); + map1.put(NormalExcelConstants.DATA_LIST, produceDiffVOS); + map1.put(NormalExcelConstants.EXPORT_FIELDS, fields); + list.add(map1); + } + //List produceDiffVOS=queryMatnrDetail(resultid,matnr); + + //String fields="layer,matnr,werks,aufnr,ppsmng,idnrk,maktx,kmonth,unmng,kst001,rkst000,aufnrmng,aufnrnum,pnum,avgnum,avgprice,totalprice"; + + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject(NormalExcelConstants.MAP_LIST, list); + //mv.addObject("entity", AppSceneCostSapZcorc.class); + ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); + exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + mv.addObject("params", exportParams); + //mv.addObject("data", data); + mv.addObject(NormalExcelConstants.EXPORT_FIELDS, fields); + return mv; + } + + + + @Override + public ModelAndView exportLaborDetail(int resultid, String matnr){ + String title="人工明细"; + String fields="layer,matnr,werks,aufnr,ppsmng,idnrk,maktx,menge,pnum,kst003,rggs,aufnrmng,fixedrggs,avgrggs,rggf,avgrgfv"; + + List parents = queryParent(resultid,matnr); + //Map> data=new HashMap<>(); + List> list = new ArrayList<>(); + for(String idnrk:parents){ + List produceDiffVOS=queryAufnrDetail(resultid,idnrk); + Map map1 = new HashMap<>(); + map1.put(NormalExcelConstants.CLASS, RealLaborVO.class); + ExportParams exportParams = new ExportParams(title + "报表", idnrk); + exportParams.setType(ExcelType.XSSF); + map1.put(NormalExcelConstants.PARAMS,exportParams); + //map1.put(NormalExcelConstants.PARAMS, new ExportParams(title+"报表", idnrk)); + map1.put(NormalExcelConstants.DATA_LIST, produceDiffVOS); + map1.put(NormalExcelConstants.EXPORT_FIELDS, fields); + list.add(map1); + } + //List produceDiffVOS=queryMatnrDetail(resultid,matnr); + + //String fields="layer,matnr,werks,aufnr,ppsmng,idnrk,maktx,kmonth,unmng,kst001,rkst000,aufnrmng,aufnrnum,pnum,avgnum,avgprice,totalprice"; + + //制作表头 + List entityList = new ArrayList<>(); + ExcelExportEntity entity = new ExcelExportEntity("层级", "layer"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("物料", "matnr"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("工厂", "werks"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("订单", "aufnr"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("订单数量", "ppsmng"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("组件", "idnrk"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("物料描述", "maktx"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("数量", "menge"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("单位用量", "pnum"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("人工费用", "kst003"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("实际工时(人工工时)", "rggs"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("订单数量(取订单项数量)", "aufnrmng"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("实际工时", "fixedrggs"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("加权平均单位人工工时", "avgrggs"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("人工费用总成本", "rggf"); + entity.setWidth(15); + entityList.add(entity); + entity = new ExcelExportEntity("加权平均单位人工费率", "avgrgfv"); + entity.setWidth(15); + entityList.add(entity); + + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject(NormalExcelConstants.MAP_LIST, list); + //mv.addObject(MapExcelConstants.ENTITY_LIST, entityList); + //mv.addObject("entity", AppSceneCostSapZcorc.class); + //ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); + //exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + //mv.addObject("params", exportParams); + //mv.addObject("data", data); + //mv.addObject(NormalExcelConstants.EXPORT_FIELDS, fields); + return mv; + } + + @Override + public ModelAndView exportProduceDetail(int resultid, String matnr){ + String title="制费明细"; + String fields="layer,matnr,werks,aufnr,ppsmng,idnrk,maktx,menge,unmng,kst005,rkst301,rkst302,rkst303,rkst304,aufnrmng,sbgs,rdgs,flgs,qtgs,avgsbgs,avgrdgs,avgflgs,avgqtgs,sbgf,rdgf,flgf,qtgf,avgsbfv,avgrdfv,avgflfv,avgqtfv"; + + List parents = queryParent(resultid,matnr); + //Map> data=new HashMap<>(); + List> list = new ArrayList<>(); + for(String idnrk:parents){ + List produceDiffVOS=queryProduceDetail(resultid,idnrk); + Map map1 = new HashMap<>(); + map1.put(NormalExcelConstants.CLASS, RealProduceVO.class); + ExportParams exportParams = new ExportParams(title + "报表", idnrk); + exportParams.setType(ExcelType.XSSF); + map1.put(NormalExcelConstants.PARAMS,exportParams); + //map1.put(NormalExcelConstants.PARAMS, new ExportParams(title+"报表", idnrk)); + map1.put(NormalExcelConstants.DATA_LIST, produceDiffVOS); + map1.put(NormalExcelConstants.EXPORT_FIELDS, fields); + list.add(map1); + } + //List produceDiffVOS=queryMatnrDetail(resultid,matnr); + + //String fields="layer,matnr,werks,aufnr,ppsmng,idnrk,maktx,kmonth,unmng,kst001,rkst000,aufnrmng,aufnrnum,pnum,avgnum,avgprice,totalprice"; + + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject(NormalExcelConstants.MAP_LIST, list); + //mv.addObject("entity", AppSceneCostSapZcorc.class); + //ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); + //exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + //mv.addObject("params", exportParams); + //mv.addObject("data", data); + //mv.addObject(NormalExcelConstants.EXPORT_FIELDS, fields); + return mv; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostAufnrMatnrServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostAufnrMatnrServiceImpl.java new file mode 100644 index 0000000..1f006ac --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostAufnrMatnrServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostAufnrMatnr; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostAufnrMatnrMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostAufnrMatnrService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_aufnr_matnr + * @Author: jeecg-boot + * @Date: 2024-10-05 + * @Version: V1.0 + */ +@Service +public class AppSceneCostAufnrMatnrServiceImpl extends ServiceImpl implements IAppSceneCostAufnrMatnrService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostBomRelevancyServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostBomRelevancyServiceImpl.java index 5fd1324..947f9d0 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostBomRelevancyServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostBomRelevancyServiceImpl.java @@ -52,8 +52,8 @@ public class AppSceneCostBomRelevancyServiceImpl extends ServiceImpl queryAllBomInfoByTopMaterialCode(String topMaterialCode) { - List childrens = costMaterialBomMapper.findChildrenByParentId(topMaterialCode); + public List queryAllBomInfoByTopMaterialCode(String topMaterialCode,String werks) { + List childrens = costMaterialBomMapper.findChildrenByParentId(topMaterialCode,werks); //TODO 循环遍历查出所有的物料下的物料(包含最上层的物料) //TODO 所有的物料并进行层级排序 return childrens; diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostCountServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostCountServiceImpl.java index 96be6d7..11fe83f 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostCountServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostCountServiceImpl.java @@ -6,28 +6,35 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zzsmart.qomo.dao.entity.FlowInstance; import com.zzsmart.qomo.dao.entity.FlowInstanceParameter; -import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostCount; -import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostHourRate; -import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostPartMissingInfo; -import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardVersion; +import com.zzsmart.qomo.kn.cost.manage.entity.*; import com.zzsmart.qomo.kn.cost.manage.enums.CostCountStatusEnum; import com.zzsmart.qomo.kn.cost.manage.enums.FeeTypeEnum; import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostCountMapper; import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostPartMissingInfoMapper; import com.zzsmart.qomo.kn.cost.manage.plugin.StandardCostService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostActualService; import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostCountService; import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostStandardVersionService; import com.zzsmart.qomo.kn.cost.manage.vo.AppSceneCostCountVO; +import com.zzsmart.qomo.kn.cost.manage.vo.BatchCount; +import com.zzsmart.qomo.kn.cost.manage.vo.MatnrVersionVO; import com.zzsmart.qomo.kn.cost.manage.vo.MissingComponentVO; import com.zzsmart.qomo.service.IDataFlowInstanceService; import com.zzsmart.qomo.service.IFlowInstanceParameterService; +import net.sf.jsqlparser.expression.DateTimeLiteralExpression; +import org.jeecg.common.api.vo.Result; +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.entity.ImportParams; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Random; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.text.SimpleDateFormat; +import java.util.*; /** * @Description: app_scene_cost_count @@ -45,6 +52,8 @@ public class AppSceneCostCountServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("cost_version", version); + return getOne(queryWrapper); + } + + public Result BatchCount(HttpServletRequest request, HttpServletResponse response) { + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request; + Map fileMap = multipartRequest.getFileMap(); + Iterator var6 = fileMap.entrySet().iterator(); + if (var6.hasNext()) { + Map.Entry entity = (Map.Entry)var6.next(); + MultipartFile file = (MultipartFile)entity.getValue(); + ImportParams params = new ImportParams(); + params.setTitleRows(0); + params.setHeadRows(1); + params.setNeedSave(false); + + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), BatchCount.class, params); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + Date dt = new Date(); + for (BatchCount batchCount:list){ + AppSceneCostCountVO vo=new AppSceneCostCountVO(); + vo.setWerks(batchCount.getWerks()); + vo.setMaterialNo(batchCount.getMatnr()); + vo.setStage(batchCount.getStage()); + String version = batchCount.getMatnr()+"_"+batchCount.getStage()+"_"+sdf.format(dt); + vo.setCostVersion(version); + addCostCountTask(vo); + } + //long start = System.currentTimeMillis(); + //this.service.saveBatch(list); + //log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒"); + Result var13 = Result.ok("文件导入成功!数据行数:" + list.size()); + return var13; + } catch (Exception var24) { + String msg = var24.getMessage(); + log.error(msg, var24); + Result var12; + if (msg != null && msg.indexOf("Duplicate entry") >= 0) { + var12 = Result.error("文件导入失败:有重复数据!"); + return var12; + } else { + var12 = Result.error("文件导入失败:" + var24.getMessage()); + return var12; + } + } finally { + try { + file.getInputStream().close(); + } catch (IOException var23) { + var23.printStackTrace(); + } + + } + } else { + return Result.error("文件导入失败!"); + } + } + + @Override + public MatnrVersionVO getVersionsByMatnr(String werks, String matnr, String ymonth){ + MatnrVersionVO matnrVersionVO=MatnrVersionVO.builder() + .matnr(matnr) + .ymonth(ymonth) + .build(); + + List aufnrs=new ArrayList<>(); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("werks",werks); + queryWrapper.eq("matnr",matnr); + if(ymonth!=null&&!ymonth.equals("")){ + queryWrapper.eq("ymonth",ymonth); + } + queryWrapper.orderByDesc("create_time"); + List actualList=iAppSceneCostActualService.list(queryWrapper); + for (AppSceneCostActual appSceneCostActual:actualList){ + aufnrs.add(appSceneCostActual.getAufnr()); + } + + matnrVersionVO.setAufnrs(aufnrs); + + List stdversion=new ArrayList<>(); + QueryWrapper queryWrapper1=new QueryWrapper<>(); + queryWrapper1.eq("werks",werks); + queryWrapper1.eq("material_no",matnr); + if(ymonth!=null&&!ymonth.equals("")){ + queryWrapper.like("version","%_"+ymonth+"%"); + } + queryWrapper1.orderByDesc("create_time"); + List stdcounts=this.list(queryWrapper1); + for (AppSceneCostCount appSceneCostActual:stdcounts){ + stdversion.add(appSceneCostActual.getCostVersion()); + } + matnrVersionVO.setStdVersion(stdversion); + + return matnrVersionVO; + } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostInvoiceServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostInvoiceServiceImpl.java new file mode 100644 index 0000000..48d47e0 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostInvoiceServiceImpl.java @@ -0,0 +1,48 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostInvoice; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEine; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostInvoiceMapper; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostSapEineMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostInvoiceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: app_scene_cost_invoice + * @Author: jeecg-boot + * @Date: 2024-09-22 + * @Version: V1.0 + */ +@Service +public class AppSceneCostInvoiceServiceImpl extends ServiceImpl implements IAppSceneCostInvoiceService { + @Autowired + AppSceneCostInvoiceMapper appSceneCostInvoiceMapper; + + @Override + public Map getPrices(List materialNos){ + Map map = new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper(); + if (materialNos != null && materialNos.size() > 0) { + queryWrapper.in("matnr", materialNos); + queryWrapper.orderByDesc("erdat"); + List costPurchasePrices = appSceneCostInvoiceMapper.selectList(queryWrapper); + for (int i = 0; i < costPurchasePrices.size(); i++) { + AppSceneCostInvoice costPurchasePrice = costPurchasePrices.get(i); + if(!map.containsKey(costPurchasePrice.getMatnr())){ + map.put(costPurchasePrice.getMatnr(), costPurchasePrice.getBenbiPrice()); + } + //map.put(costPurchasePrice.getInfnr(), costPurchasePrice.getNetpr()); + } + } + return map; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMaterialServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMaterialServiceImpl.java index 9cc8478..e13b226 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMaterialServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMaterialServiceImpl.java @@ -39,7 +39,18 @@ public class AppSceneCostMaterialServiceImpl extends ServiceImpl costPurchasePrices = appSceneCostMaterialMapper.selectList(queryWrapper); for (int i = 0; i < costPurchasePrices.size(); i++) { AppSceneCostMaterial costPurchasePrice = costPurchasePrices.get(i); - map.put(costPurchasePrice.getMaterialNumber(), costPurchasePrice.getManufacturingType()); + String manutype = costPurchasePrice.getManufacturingType(); + String sobel = costPurchasePrice.getSobsl(); + if(manutype.equals("E")){ + map.put(costPurchasePrice.getMaterialNumber(),"E"); + }else if(manutype.equals("F")){ + if(sobel.equals("30")){ + map.put(costPurchasePrice.getMaterialNumber(),"F30"); + }else{ + map.put(costPurchasePrice.getMaterialNumber(),"F"); + } + } + //map.put(costPurchasePrice.getMaterialNumber(), costPurchasePrice.getManufacturingType()+costPurchasePrice.getSobsl()); } } return map; diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningAufnrServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningAufnrServiceImpl.java new file mode 100644 index 0000000..62e36ff --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningAufnrServiceImpl.java @@ -0,0 +1,216 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.gson.Gson; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningAufnr; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostMiningAufnrMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningAufnrService; +import com.zzsmart.qomo.kn.cost.manage.vo.*; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: app_scene_cost_mining_aufnr + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostMiningAufnrServiceImpl extends ServiceImpl implements IAppSceneCostMiningAufnrService { + + private static final Logger logger = LoggerFactory.getLogger(AppSceneCostMiningAufnrServiceImpl.class); + @Override + public List getByResultid(int id){ + List diffTotalVOS=new ArrayList<>(); + try { + Gson gson = new Gson(); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("resultid",id); + List materials=this.list(queryWrapper); + + //List materialDiffList = new ArrayList<>(); + for (AppSceneCostMiningAufnr miningMaterial : materials) { + diffTotalVOS.add(gson.fromJson(miningMaterial.getJsondata(), AufnrDiff.class)); + } + //return gson.toJson(materialDiffList); + // return diffTotalVOS; + } catch (Exception e) { + logger.info(e.getMessage()); + } + return diffTotalVOS; + } + + @Override + public List getLaborByResultid(int id){ + List laborDiffVOS=new ArrayList<>(); + try { + List diffTotalVOS=new ArrayList<>(); + Gson gson = new Gson(); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("resultid",id); + List materials=this.list(queryWrapper); + + //List materialDiffList = new ArrayList<>(); + for (AppSceneCostMiningAufnr miningMaterial : materials) { + diffTotalVOS.add(gson.fromJson(miningMaterial.getJsondata(), AufnrDiff.class)); + } + for (AufnrDiff aufnrDiff:diffTotalVOS){ + LaborDiffVO laborDiffVO=LaborDiffVO.builder() + .matnr(aufnrDiff.matnr) + .materialname(aufnrDiff.getMaterialname()) + .budat(aufnrDiff.budat) + .costcenter(aufnrDiff.getCostcenter()) + .costcentername(aufnrDiff.costcentername) + .aufnruse(aufnrDiff.laborCalculate.aufnruse) + .bggs(0) + .realuse(aufnrDiff.laborCalculate.realuse) + .realcost(aufnrDiff.laborCalculate.realcost) + .totalbomuse(aufnrDiff.totalbomuse) + .bzgs(0) + .standarduse(aufnrDiff.laborCalculate.standarduse) + .standardcost(aufnrDiff.laborCalculate.standardcost) + .pricediff(aufnrDiff.laborCalculate.pricediff) + .numdiff(aufnrDiff.laborCalculate.numdiff) + .totaldiff(aufnrDiff.laborCalculate.totaldiff) + .laborreason(aufnrDiff.getLaborreason()) + .reallabor(aufnrDiff.reallabor) + .stdlabor(aufnrDiff.stdlabor) + .totalproductuse(aufnrDiff.totalproductuse) + .bomuse(aufnrDiff.bomuse) + .reallabor(aufnrDiff.totalcostlabor) + .stdlabor(aufnrDiff.laborCalculate.standardcost* aufnrDiff.laborCalculate.standarduse) + .build(); + if(laborDiffVO.getTotalproductuse()!=0){ + laborDiffVO.setBggs(laborDiffVO.getRealuse()/laborDiffVO.getTotalproductuse()); + } + if(laborDiffVO.getBomuse()!=0){ + laborDiffVO.setBzgs(laborDiffVO.getStandarduse()/laborDiffVO.getBomuse()); + } + laborDiffVOS.add(laborDiffVO); + } + //return gson.toJson(materialDiffList); + // return diffTotalVOS; + } catch (Exception e) { + logger.info(e.getMessage()); + } + return laborDiffVOS; + } + + @Override + public List getProduceByResultid(int id){ + List produceDiffVOS=new ArrayList<>(); + try { + List diffTotalVOS=new ArrayList<>(); + Gson gson = new Gson(); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("resultid",id); + List materials=this.list(queryWrapper); + + //List materialDiffList = new ArrayList<>(); + for (AppSceneCostMiningAufnr miningMaterial : materials) { + diffTotalVOS.add(gson.fromJson(miningMaterial.getJsondata(), AufnrDiff.class)); + } + for (AufnrDiff ad:diffTotalVOS){ + ProduceDiffVO produceDiffVO=ProduceDiffVO.builder() + .matnr(ad.matnr) + .materialname(ad.getMaterialname()) + .budat(ad.budat) + .costcenter(ad.getCostcenter()) + .costcentername(ad.costcentername) + .productnumdiff(ad.getProductNumDiff()) + .productpricediff(ad.getProductPriceDiff()) + .producttotaldiff(ad.getProductNumDiff()+ad.getProductPriceDiff()) + .productreason(ad.productreason) + .zj_aufnrnum(ad.zjCalculate.aufnrnum) + .zj_realuse(ad.zjCalculate.realuse) + .zj_realcost(ad.zjCalculate.realcost) + .zj_stdnum(ad.zjCalculate.stdnum) + .zj_stduse(ad.zjCalculate.standarduse) + .zj_stdcost(ad.zjCalculate.standardcost) + .zj_pricediff(ad.zjCalculate.pricediff) + .zj_numdiff(ad.zjCalculate.numdiff) + .zj_totaldiff(ad.zjCalculate.totaldiff) + + .rd_aufnrnum(ad.rdCalculate.aufnrnum) + .rd_realuse(ad.rdCalculate.realuse) + .rd_realcost(ad.rdCalculate.realcost) + .rd_stdnum(ad.rdCalculate.stdnum) + .rd_stduse(ad.rdCalculate.standarduse) + .rd_stdcost(ad.rdCalculate.standardcost) + .rd_pricediff(ad.rdCalculate.pricediff) + .rd_numdiff(ad.rdCalculate.numdiff) + .rd_totaldiff(ad.rdCalculate.totaldiff) + + .fl_aufnrnum(ad.flCalculate.aufnrnum) + .fl_realuse(ad.flCalculate.realuse) + .fl_realcost(ad.flCalculate.realcost) + .fl_stdnum(ad.flCalculate.stdnum) + .fl_stduse(ad.flCalculate.standarduse) + .fl_stdcost(ad.flCalculate.standardcost) + .fl_pricediff(ad.flCalculate.pricediff) + .fl_numdiff(ad.flCalculate.numdiff) + .fl_totaldiff(ad.flCalculate.totaldiff) + + .qt_aufnrnum(ad.qtCalculate.aufnrnum) + .qt_realuse(ad.qtCalculate.realuse) + .qt_realcost(ad.qtCalculate.realcost) + .qt_stdnum(ad.qtCalculate.stdnum) + .qt_stduse(ad.qtCalculate.standarduse) + .qt_stdcost(ad.qtCalculate.standardcost) + .qt_pricediff(ad.qtCalculate.pricediff) + .qt_numdiff(ad.qtCalculate.numdiff) + .qt_totaldiff(ad.qtCalculate.totaldiff) + .build(); + produceDiffVOS.add(produceDiffVO); + } + //return gson.toJson(materialDiffList); + // return diffTotalVOS; + } catch (Exception e) { + logger.info(e.getMessage()); + } + return produceDiffVOS; + } + + + @Override + public ModelAndView exportXls2(HttpServletRequest request, AufnrExportVO object, Class clazz, String title) { + + if(object.getType().equals("labor")) { + List laborDiffVOS=getLaborByResultid(object.getResultid()); + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject("entity", LaborDiffVO.class); + ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); + exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + mv.addObject("params", exportParams); + mv.addObject("data", laborDiffVOS); + return mv; + }else { + List produceDiffVOS=getProduceByResultid(object.getResultid()); + + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject("entity", ProduceDiffVO.class); + ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); + exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + mv.addObject("params", exportParams); + mv.addObject("data", produceDiffVOS); + return mv; + } + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningDiffServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningDiffServiceImpl.java new file mode 100644 index 0000000..601b489 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningDiffServiceImpl.java @@ -0,0 +1,275 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningDiff; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningResult; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostMiningDiffMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningDiffService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningResultService; +import com.zzsmart.qomo.kn.cost.manage.vo.MiningDiffTotalVO; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: app_scene_cost_mining_diff + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostMiningDiffServiceImpl extends ServiceImpl implements IAppSceneCostMiningDiffService { + + @Autowired + private IAppSceneCostMiningResultService iAppSceneCostMiningResultService; + + @Override + public List getMiningDiffTotalById(int id){ + List miningDiffTotalVOS=new ArrayList<>(); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("resultid",id); + List miningDiffs=this.list(queryWrapper); + + MiningDiffTotalVO materialVo=MiningDiffTotalVO.builder() + .name("材料成本") + .diff1101(0) + .diff1102(0) + .diff1103(0) + .diff1104(0) + .diff1105(0) + .diff1106(0) + .diff1199(0) + .diff2000(0) + .diff3101(0) + .diff3201(0) + .build(); + + MiningDiffTotalVO laborVO=MiningDiffTotalVO.builder() + .name("直接人工") + .diff1101(0) + .diff1102(0) + .diff1103(0) + .diff1104(0) + .diff1105(0) + .diff1106(0) + .diff1199(0) + .diff2000(0) + .diff3101(0) + .diff3201(0) + .build(); + MiningDiffTotalVO manuVO=MiningDiffTotalVO.builder() + .name("制造费用") + .diff1101(0) + .diff1102(0) + .diff1103(0) + .diff1104(0) + .diff1105(0) + .diff1106(0) + .diff1199(0) + .diff2000(0) + .diff3101(0) + .diff3201(0) + .build(); + + MiningDiffTotalVO totalVO=MiningDiffTotalVO.builder() + .name("合计") + .diff1101(0) + .diff1102(0) + .diff1103(0) + .diff1104(0) + .diff1105(0) + .diff1106(0) + .diff1199(0) + .diff2000(0) + .diff3101(0) + .diff3201(0) + .build(); + + AppSceneCostMiningResult miningResult=iAppSceneCostMiningResultService.getById(id); + if(miningResult!=null){ + materialVo.setRealcost(miningResult.getRealmaterial()); + laborVO.setRealcost(miningResult.getReallabor()); + manuVO.setRealcost(miningResult.getRealproductcost()); + + materialVo.setStdcost(miningResult.getStdmaterial()); + laborVO.setStdcost(miningResult.getStdlabor()); + manuVO.setStdcost(miningResult.getStdproductcost()); + + materialVo.setDiffcost(materialVo.getRealcost()- materialVo.getStdcost()); + laborVO.setDiffcost(laborVO.getRealcost()- laborVO.getStdcost()); + manuVO.setDiffcost(manuVO.getRealcost()- manuVO.getStdcost()); + + totalVO.setRealcost(miningResult.getTotalreal()); + totalVO.setStdcost(miningResult.getTotalstd()); + totalVO.setDiffcost(totalVO.getRealcost()- totalVO.getStdcost()); + } + + //材料 + for (AppSceneCostMiningDiff miningDiff:miningDiffs){ + String type = miningDiff.getType(); + String code = miningDiff.getCode(); + if(type.equals("material")){ + if(code.equals("1101")){ + materialVo.setDiff1101(materialVo.getDiff1101()+miningDiff.getValue()); + totalVO.setDiff1101(totalVO.getDiff1101()+miningDiff.getValue()); + } + if(code.equals("1102")){ + materialVo.setDiff1102(materialVo.getDiff1102()+miningDiff.getValue()); + totalVO.setDiff1102(totalVO.getDiff1102()+miningDiff.getValue()); + } + if(code.equals("1103")){ + materialVo.setDiff1103(materialVo.getDiff1103()+miningDiff.getValue()); + totalVO.setDiff1103(totalVO.getDiff1103()+miningDiff.getValue()); + } + if(code.equals("1104")){ + materialVo.setDiff1104(materialVo.getDiff1104()+miningDiff.getValue()); + totalVO.setDiff1104(totalVO.getDiff1104()+miningDiff.getValue()); + } + if(code.equals("1105")){ + materialVo.setDiff1105(materialVo.getDiff1105()+miningDiff.getValue()); + totalVO.setDiff1105(totalVO.getDiff1105()+miningDiff.getValue()); + } + if(code.equals("1106")){ + materialVo.setDiff1106(materialVo.getDiff1106()+miningDiff.getValue()); + totalVO.setDiff1106(totalVO.getDiff1106()+miningDiff.getValue()); + } + if(code.equals("1199")){ + materialVo.setDiff1199(materialVo.getDiff1199()+miningDiff.getValue()); + totalVO.setDiff1199(totalVO.getDiff1199()+miningDiff.getValue()); + } + if(code.equals("2101")){ + materialVo.setDiff2000(materialVo.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("2102")){ + materialVo.setDiff2000(materialVo.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("2103")){ + materialVo.setDiff2000(materialVo.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("3101")){ + materialVo.setDiff3101(materialVo.getDiff3101()+miningDiff.getValue()); + totalVO.setDiff3101(totalVO.getDiff3101()+miningDiff.getValue()); + } + if(code.equals("3201")){ + materialVo.setDiff3201(materialVo.getDiff3201()+miningDiff.getValue()); + totalVO.setDiff3201(totalVO.getDiff3201()+miningDiff.getValue()); + } + } + if(type.equals("labor")){ + if(code.equals("1101")){ + laborVO.setDiff1101(laborVO.getDiff1101()+miningDiff.getValue()); + totalVO.setDiff1101(totalVO.getDiff1101()+miningDiff.getValue()); + } + if(code.equals("1102")){ + laborVO.setDiff1102(laborVO.getDiff1102()+miningDiff.getValue()); + totalVO.setDiff1102(totalVO.getDiff1102()+miningDiff.getValue()); + } + if(code.equals("1103")){ + laborVO.setDiff1103(laborVO.getDiff1103()+miningDiff.getValue()); + totalVO.setDiff1103(totalVO.getDiff1103()+miningDiff.getValue()); + } + if(code.equals("1104")){ + laborVO.setDiff1104(laborVO.getDiff1104()+miningDiff.getValue()); + totalVO.setDiff1104(totalVO.getDiff1104()+miningDiff.getValue()); + } + if(code.equals("1105")){ + laborVO.setDiff1105(laborVO.getDiff1105()+miningDiff.getValue()); + totalVO.setDiff1105(totalVO.getDiff1105()+miningDiff.getValue()); + } + if(code.equals("1106")){ + laborVO.setDiff1106(laborVO.getDiff1106()+miningDiff.getValue()); + totalVO.setDiff1106(totalVO.getDiff1106()+miningDiff.getValue()); + } + if(code.equals("1199")){ + laborVO.setDiff1199(laborVO.getDiff1199()+miningDiff.getValue()); + totalVO.setDiff1199(totalVO.getDiff1199()+miningDiff.getValue()); + } + if(code.equals("2101")){ + laborVO.setDiff2000(laborVO.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("2102")){ + laborVO.setDiff2000(laborVO.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("2103")){ + laborVO.setDiff2000(laborVO.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("3101")){ + laborVO.setDiff3101(laborVO.getDiff3101()+miningDiff.getValue()); + totalVO.setDiff3101(totalVO.getDiff3101()+miningDiff.getValue()); + } + if(code.equals("3201")){ + laborVO.setDiff3201(laborVO.getDiff3201()+miningDiff.getValue()); + totalVO.setDiff3201(totalVO.getDiff3201()+miningDiff.getValue()); + } + } + if(type.equals("product")){ + if(code.equals("1101")){ + manuVO.setDiff1101(manuVO.getDiff1101()+miningDiff.getValue()); + totalVO.setDiff1101(totalVO.getDiff1101()+miningDiff.getValue()); + } + if(code.equals("1102")){ + manuVO.setDiff1102(manuVO.getDiff1102()+miningDiff.getValue()); + totalVO.setDiff1102(totalVO.getDiff1102()+miningDiff.getValue()); + } + if(code.equals("1103")){ + manuVO.setDiff1103(manuVO.getDiff1103()+miningDiff.getValue()); + totalVO.setDiff1103(totalVO.getDiff1103()+miningDiff.getValue()); + } + if(code.equals("1104")){ + manuVO.setDiff1104(manuVO.getDiff1104()+miningDiff.getValue()); + totalVO.setDiff1104(totalVO.getDiff1104()+miningDiff.getValue()); + } + if(code.equals("1105")){ + manuVO.setDiff1105(manuVO.getDiff1105()+miningDiff.getValue()); + totalVO.setDiff1105(totalVO.getDiff1105()+miningDiff.getValue()); + } + if(code.equals("1106")){ + manuVO.setDiff1106(manuVO.getDiff1106()+miningDiff.getValue()); + totalVO.setDiff1106(totalVO.getDiff1106()+miningDiff.getValue()); + } + if(code.equals("1199")){ + manuVO.setDiff1199(manuVO.getDiff1199()+miningDiff.getValue()); + totalVO.setDiff1199(totalVO.getDiff1199()+miningDiff.getValue()); + } + if(code.equals("2101")){ + manuVO.setDiff2000(manuVO.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("2102")){ + manuVO.setDiff2000(manuVO.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("2103")){ + manuVO.setDiff2000(manuVO.getDiff2000()+miningDiff.getValue()); + totalVO.setDiff2000(totalVO.getDiff2000()+miningDiff.getValue()); + } + if(code.equals("3101")){ + manuVO.setDiff3101(manuVO.getDiff3101()+miningDiff.getValue()); + totalVO.setDiff3101(totalVO.getDiff3101()+miningDiff.getValue()); + } + if(code.equals("3201")){ + manuVO.setDiff3201(manuVO.getDiff3201()+miningDiff.getValue()); + totalVO.setDiff3201(totalVO.getDiff3201()+miningDiff.getValue()); + } + } + } + + miningDiffTotalVOS.add(materialVo); + miningDiffTotalVOS.add(laborVO); + miningDiffTotalVOS.add(manuVO); + miningDiffTotalVOS.add(totalVO); + + return miningDiffTotalVOS; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningLaborServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningLaborServiceImpl.java new file mode 100644 index 0000000..10de468 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningLaborServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningLabor; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostMiningLaborMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningLaborService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_mining_labor + * @Author: jeecg-boot + * @Date: 2024-11-05 + * @Version: V1.0 + */ +@Service +public class AppSceneCostMiningLaborServiceImpl extends ServiceImpl implements IAppSceneCostMiningLaborService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningMaterialServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningMaterialServiceImpl.java new file mode 100644 index 0000000..a41bc0f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningMaterialServiceImpl.java @@ -0,0 +1,110 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.gson.Gson; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningMaterial; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardResult; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostMiningMaterialMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningMaterialService; +import com.zzsmart.qomo.kn.cost.manage.vo.MaterialDiff; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: app_scene_cost_mining_material + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostMiningMaterialServiceImpl extends ServiceImpl implements IAppSceneCostMiningMaterialService { + + private static final Logger logger = LoggerFactory.getLogger(AppSceneCostMiningMaterialServiceImpl.class); + @Override + public List getByResultid(int id){ + List diffTotalVOS=new ArrayList<>(); + try { + Gson gson = new Gson(); + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq("resultid",id); + List materials=this.list(queryWrapper); + + //List materialDiffList = new ArrayList<>(); + for (AppSceneCostMiningMaterial miningMaterial : materials) { + diffTotalVOS.add(gson.fromJson(miningMaterial.getJsondata(), MaterialDiff.class)); + } + //return gson.toJson(materialDiffList); + // return diffTotalVOS; + } catch (Exception e) { + logger.info(e.getMessage()); + } + return diffTotalVOS; + } + + public ModelAndView exportXls2(HttpServletRequest request, AppSceneCostMiningMaterial object, Class clazz, String title) { + List materialDiffs= getByResultid(object.getResultid()); +// List list = new ArrayList<>(); +// for (MaterialDiff materialDiff:materialDiffs){ +// MaterialDiffVO vo = MaterialDiffVO.builder() +// .matnr(materialDiff.getMatnr()) +// .productname(materialDiff.getProductname()) +// .layer(materialDiff.getLayer()) +// //.version_number(materialDiff.getVersion_number()) +// .build(); +// list.add(vo); +// } + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject("entity", MaterialDiff.class); + ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); + exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + mv.addObject("params", exportParams); + mv.addObject("data", materialDiffs); + return mv; + } + + +// @Override +// public ModelAndView exportMaterialDiffXls(HttpServletRequest request, AppSceneCostMiningMaterial object, Class clazz, String title) { +// List materialDiffs= getByResultid(object.getResultid()); +// List list = new ArrayList<>(); +// List results=new ArrayList<>(); +// for (MaterialDiff materialDiff:materialDiffs){ +// MaterialDiffVO vo = MaterialDiffVO.builder() +// .matnr(materialDiff.getMatnr()) +// .productname(materialDiff.getProductname()) +// .layer(materialDiff.getLayer()) +// //.version_number(materialDiff.getVersion_number()) +// .build(); +// AppSceneCostStandardResult result=AppSceneCostStandardResult.builder() +// .materialNumber(materialDiff.getMatnr()) +// .maktx(materialDiff.getProductname()) +// .versionNumber(materialDiff.getVersion_number()) +// .build(); +// results.add(result); +// list.add(vo); +// } +// ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); +// mv.addObject("fileName", title); +// mv.addObject("entity", AppSceneCostStandardResult.class); +// ExportParams exportParams = new ExportParams(title + "报表", title + "报表", title); +// exportParams.setType(ExcelType.XSSF); +// //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); +// mv.addObject("params", exportParams); +// mv.addObject("data", results); +// return mv; +// } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningReasonServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningReasonServiceImpl.java new file mode 100644 index 0000000..a8b9393 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningReasonServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningReason; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostMiningReasonMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningReasonService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_mining_reason + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostMiningReasonServiceImpl extends ServiceImpl implements IAppSceneCostMiningReasonService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningResultServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningResultServiceImpl.java new file mode 100644 index 0000000..7edd62e --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostMiningResultServiceImpl.java @@ -0,0 +1,34 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostActual; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostCount; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMiningResult; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostMiningResultMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostActualService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostCountService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningResultService; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapZcorcService; +import com.zzsmart.qomo.kn.cost.manage.vo.MatnrVersionVO; +import org.checkerframework.checker.units.qual.A; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Description: app_scene_cost_mining_result + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostMiningResultServiceImpl extends ServiceImpl implements IAppSceneCostMiningResultService { + + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostPurchaseRecordServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostPurchaseRecordServiceImpl.java index 102bf5d..56e2910 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostPurchaseRecordServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostPurchaseRecordServiceImpl.java @@ -38,7 +38,14 @@ public class AppSceneCostPurchaseRecordServiceImpl extends ServiceImpl costPurchasePrices = appSceneCostPurchaseRecordMapper.selectList(queryWrapper); for (int i = 0; i < costPurchasePrices.size(); i++) { AppSceneCostPurchaseRecord costPurchasePrice = costPurchasePrices.get(i); - map.put(costPurchasePrice.getInfnr(), costPurchasePrice.getNetpr()); + if(map.containsKey(costPurchasePrice.getInfnr())){ + if(costPurchasePrice.getNetpr().doubleValue() implements IAppSceneCostSapAfruService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapEineServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapEineServiceImpl.java new file mode 100644 index 0000000..9c978b2 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapEineServiceImpl.java @@ -0,0 +1,53 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostPurchaseRecord; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapEine; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostPurchaseRecordMapper; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostSapEineMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapEineService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Description: app_scene_cost_sap_eine + * @Author: jeecg-boot + * @Date: 2024-09-21 + * @Version: V1.0 + */ +@Service +public class AppSceneCostSapEineServiceImpl extends ServiceImpl implements IAppSceneCostSapEineService { + + @Autowired + AppSceneCostSapEineMapper appSceneCostSapEineMapper; + + @Override + public Map getPrices(List materialNos){ + Map map = new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper(); + if (materialNos != null && materialNos.size() > 0) { + queryWrapper.in("matnr", materialNos); + List costPurchasePrices = appSceneCostSapEineMapper.selectList(queryWrapper); + for (int i = 0; i < costPurchasePrices.size(); i++) { + AppSceneCostSapEine costPurchasePrice = costPurchasePrices.get(i); + if(map.containsKey(costPurchasePrice.getMatnr())){ + if(costPurchasePrice.getCnyPrice().doubleValue() implements IAppSceneCostSapEkpoService { + + @Autowired + AppSceneCostSapEkpoMapper appSceneCostSapEkpoMapper; + + @Override + public Map getPrices(List materialNos){ + Map map = new HashMap<>(); + QueryWrapper queryWrapper = new QueryWrapper(); + if (materialNos != null && materialNos.size() > 0) { + queryWrapper.in("matnr", materialNos); + List costPurchasePrices = appSceneCostSapEkpoMapper.selectList(queryWrapper); + for (int i = 0; i < costPurchasePrices.size(); i++) { + AppSceneCostSapEkpo costPurchasePrice = costPurchasePrices.get(i); + if(map.containsKey(costPurchasePrice.getMatnr())){ + if(costPurchasePrice.getNetpr().doubleValue() implements IAppSceneCostSapHourRateService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapZcorcServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapZcorcServiceImpl.java new file mode 100644 index 0000000..c428239 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapZcorcServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZcorc; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostSapZcorcMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapZcorcService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_sap_zcorc + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostSapZcorcServiceImpl extends ServiceImpl implements IAppSceneCostSapZcorcService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapZtmmx004ServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapZtmmx004ServiceImpl.java new file mode 100644 index 0000000..0633597 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostSapZtmmx004ServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostSapZtmmx004; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostSapZtmmx004Mapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostSapZtmmx004Service; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_sap_ztmmx004 + * @Author: jeecg-boot + * @Date: 2024-10-17 + * @Version: V1.0 + */ +@Service +public class AppSceneCostSapZtmmx004ServiceImpl extends ServiceImpl implements IAppSceneCostSapZtmmx004Service { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardBomServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardBomServiceImpl.java new file mode 100644 index 0000000..77b61ea --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardBomServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardBom; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostStandardBomMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostStandardBomService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_standard_bom + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostStandardBomServiceImpl extends ServiceImpl implements IAppSceneCostStandardBomService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardProductprocessServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardProductprocessServiceImpl.java new file mode 100644 index 0000000..c861e44 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardProductprocessServiceImpl.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.service.impl; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; +import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostStandardProductprocessMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostStandardProductprocessService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: app_scene_cost_standard_productprocess + * @Author: jeecg-boot + * @Date: 2024-10-15 + * @Version: V1.0 + */ +@Service +public class AppSceneCostStandardProductprocessServiceImpl extends ServiceImpl implements IAppSceneCostStandardProductprocessService { + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardResultServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardResultServiceImpl.java index 7f27916..baf474e 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardResultServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/AppSceneCostStandardResultServiceImpl.java @@ -1,13 +1,28 @@ package com.zzsmart.qomo.kn.cost.manage.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardDetail; import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardResult; import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostStandardDetailMapper; import com.zzsmart.qomo.kn.cost.manage.mapper.AppSceneCostStandardResultMapper; +import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostMiningMaterialService; import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostStandardDetailService; import com.zzsmart.qomo.kn.cost.manage.service.IAppSceneCostStandardResultService; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.util.oConvertUtils; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.enmus.ExcelType; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * @Description: app_scene_cost_standard_detail @@ -18,4 +33,104 @@ import org.springframework.stereotype.Service; @Service public class AppSceneCostStandardResultServiceImpl extends ServiceImpl implements IAppSceneCostStandardResultService { + + @Autowired + IAppSceneCostMiningMaterialService iAppSceneCostMiningMaterialService; + + + public ModelAndView exportXls2(HttpServletRequest request, AppSceneCostStandardResult object, Class clazz, String title) { + + //return iAppSceneCostMiningMaterialService.exportMaterialDiffXls(request,object,AppSceneCostStandardResult.class,"test"); + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap()); + String selections = request.getParameter("selections"); + List exportList; + List exportList2=new ArrayList<>(); +// if (oConvertUtils.isNotEmpty(selections)) { +// exportList = Arrays.asList(selections.split(",")); +// queryWrapper.in("id", exportList); +// } + + + + exportList = list(queryWrapper); + + BigDecimal equiphour = new BigDecimal(0); + BigDecimal laborhour = new BigDecimal(0); + BigDecimal fuelhour = new BigDecimal(0); + BigDecimal auxihour = new BigDecimal(0); + BigDecimal otherhour=new BigDecimal(0); + BigDecimal materialcost = new BigDecimal(0); + BigDecimal laborcost = new BigDecimal(0); + BigDecimal equipcost = new BigDecimal(0); + BigDecimal fuelcost = new BigDecimal(0); + BigDecimal auxicost = new BigDecimal(0); + BigDecimal othercost = new BigDecimal(0); + BigDecimal standardcost = new BigDecimal(0); + for (AppSceneCostStandardResult ascs:exportList){ + equiphour=equiphour.add(ascs.getEquipHour()); + laborhour=laborhour.add(ascs.getLaborHour()); + fuelhour=fuelhour.add(ascs.getFuelHour()); + auxihour=auxihour.add(ascs.getAuxiHour()); + otherhour=otherhour.add(ascs.getOtherHour()); + if(ascs.getMaterialCost()!=null) { + materialcost = materialcost.add(ascs.getMaterialCost()); + } + if(ascs.getLaborCost()!=null) { + laborcost = laborcost.add(ascs.getLaborCost()); + } + if(ascs.getEquipCost()!=null) { + equipcost = equipcost.add(ascs.getEquipCost()); + } + if(ascs.getFuelCost()!=null) { + fuelcost = fuelcost.add(ascs.getFuelCost()); + } + if(ascs.getAuxiliaryCost()!=null) { + auxicost = auxicost.add(ascs.getAuxiliaryCost()); + } + if(ascs.getOtherCost()!=null) { + othercost = othercost.add(ascs.getOtherCost()); + } + if(ascs.getStandardCost()!=null) { + standardcost = standardcost.add(ascs.getStandardCost()); + } + + } + if(exportList.size()>0){ + AppSceneCostStandardResult first = exportList.get(0); + AppSceneCostStandardResult top = AppSceneCostStandardResult.builder() + .ymonth(first.getYmonth()) + .versionNumber(first.getVersionNumber()) + .stage(first.getStage()) + .factory(first.getFactory()) + .parentMatnr(first.getParentMatnr()) + .lowOrderCode("") + .materialNumber("合计") + .equipHour(equiphour) + .laborHour(laborhour) + .fuelHour(fuelhour) + .auxiHour(auxihour) + .otherHour(otherhour) + .laborCost(laborcost) + .equipCost(equipcost) + .fuelCost(fuelcost) + .auxiliaryCost(auxicost) + .otherCost(othercost) + .materialCost(materialcost) + .standardCost(standardcost) + .build(); + exportList2.add(top); + exportList2.addAll(exportList); + } + + + ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); + mv.addObject("fileName", title); + mv.addObject("entity", clazz); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + //exportParams.setImageBasePath(this.jeecgBaseConfig.getPath().getUpload()); + mv.addObject("params", exportParams); + mv.addObject("data", exportList2); + return mv; + } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java index c9256d1..a718b60 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/service/impl/BomTreeServiceImpl.java @@ -35,77 +35,86 @@ public class BomTreeServiceImpl implements BomTreeService { @Override public List getBomTreeByMaterialNumber(String materialNumber, String version_number) { QueryWrapper wrapper = new QueryWrapper<>(); + boolean bEmpty=true; //设置条件 if (StrUtil.isNotEmpty(materialNumber)) { // 物料号 wrapper.like("material_number", materialNumber); + bEmpty=false; } if (StrUtil.isNotEmpty(version_number)) { // 版本号 wrapper.like("version_number", version_number); + bEmpty=false; + } + if(bEmpty){ + return new ArrayList<>(); } //查询所有满足条件的父节点 List parentNodeList = appSceneCostStandardResultMapper.selectList(wrapper); //所有子类节点 List childrenNodeList = new ArrayList<>(); Map parentDataMap = new TreeMap<>(); - if (parentNodeList.size() > 0) { - //父类结果只有1个 - if (parentNodeList.size() == 1) { - parentDataMap = parentNodeList.stream().collect(Collectors.toMap(AppSceneCostStandardResult::getMaterialNumber, vo -> vo)); - } else { - //父类结果有多个(找出最上级节点) - Map> levelGroupMap = new HashMap<>(); - if (parentNodeList != null && parentNodeList.size() > 0) { - levelGroupMap = parentNodeList.stream().filter(s->s.getLowOrderCode()!=null).collect(Collectors.groupingBy(AppSceneCostStandardResult::getLowOrderCode)); - TreeMap> levelTreeMap = new TreeMap<>(levelGroupMap); - parentDataMap = levelTreeMap.firstEntry().getValue().stream().filter(s->s.getMaterialNumber()!=null).collect(Collectors.toMap(AppSceneCostStandardResult::getMaterialNumber, vo -> vo)); - } - } - //查询所有父节点下的子节点(即第二层叶子节点) - List costStandardDetails = new ArrayList<>(); - if (parentDataMap.size() > 0) { - QueryWrapper wrapper1 = new QueryWrapper<>(); - wrapper1.eq("version_number", version_number); - int num = 0; - for (String materialNumber1 : parentDataMap.keySet()) { - num = num + 1; - if (num > 1) { - wrapper1.or().eq("parent_matnr", materialNumber1); - } else { - wrapper1.eq("parent_matnr", materialNumber1); - } - } - costStandardDetails = appSceneCostStandardResultMapper.selectList(wrapper1); - } - //第三层叶子节点 - List threeNodes = new ArrayList<>(); - if (costStandardDetails != null && costStandardDetails.size() > 0) { - List materialNoList = costStandardDetails.stream().map(AppSceneCostStandardResult::getMaterialNumber).collect(Collectors.toList()); - QueryWrapper wrapper2 = new QueryWrapper<>(); - wrapper2.in("parent_matnr", materialNoList); - wrapper2.eq("version_number", version_number); - wrapper2.eq("low_order_code",2); - threeNodes = appSceneCostStandardResultMapper.selectList(wrapper2); - } - //把第二层叶子节点转化为bomtreeinfoVO对象集合 - for (int i = 0; i < costStandardDetails.size(); i++) { - AppSceneCostStandardResult costStandardDetail = costStandardDetails.get(i); -// AppSceneCostStandardDetail vo = new AppSceneCostStandardDetail(); -// BeanUtils.copyProperties(costStandardDetail, vo); -// childrenNodeList.add(vo); - childrenNodeList.add(costStandardDetail); - } - //把第三层叶子节点转化为bomtreeinfoVO对象集合 - for (int i = 0; i < threeNodes.size(); i++) { - AppSceneCostStandardResult costStandardDetail = threeNodes.get(i); -// CostStandardDetailVO vo = new CostStandardDetailVO(); -// BeanUtils.copyProperties(costStandardDetail, vo); -// childrenNodeList.add(vo); - childrenNodeList.add(costStandardDetail); + for(AppSceneCostStandardResult ascsr: parentNodeList){ + if(ascsr.getLayer().equals("0")){ + parentDataMap.put(ascsr.getMaterialNumber(),ascsr); + }else{ + childrenNodeList.add(ascsr); } } List bomTreeInfoVOS = BomTreeBuilder.buildBomTree(childrenNodeList, parentDataMap); return bomTreeInfoVOS; +// if (parentNodeList.size() > 0) { +// //父类结果只有1个 +// if (parentNodeList.size() == 1) { +// parentDataMap = parentNodeList.stream().collect(Collectors.toMap(AppSceneCostStandardResult::getMaterialNumber, vo -> vo)); +// } else { +// //父类结果有多个(找出最上级节点) +// Map> levelGroupMap = new HashMap<>(); +// if (parentNodeList != null && parentNodeList.size() > 0) { +// levelGroupMap = parentNodeList.stream().filter(s->s.getLowOrderCode()!=null).collect(Collectors.groupingBy(AppSceneCostStandardResult::getLowOrderCode)); +// TreeMap> levelTreeMap = new TreeMap<>(levelGroupMap); +// parentDataMap = levelTreeMap.firstEntry().getValue().stream().filter(s->s.getMaterialNumber()!=null).collect(Collectors.toMap(AppSceneCostStandardResult::getMaterialNumber, vo -> vo)); +// } +// } +// //查询所有父节点下的子节点(即第二层叶子节点) +// List costStandardDetails = new ArrayList<>(); +// if (parentDataMap.size() > 0) { +// QueryWrapper wrapper1 = new QueryWrapper<>(); +// wrapper1.eq("version_number", version_number); +// int num = 0; +// for (String materialNumber1 : parentDataMap.keySet()) { +// num = num + 1; +// if (num > 1) { +// wrapper1.or().eq("parent_matnr", materialNumber1); +// } else { +// wrapper1.eq("parent_matnr", materialNumber1); +// } +// } +// costStandardDetails = appSceneCostStandardResultMapper.selectList(wrapper1); +// } +// //第三层叶子节点 +// List threeNodes = new ArrayList<>(); +// if (costStandardDetails != null && costStandardDetails.size() > 0) { +// List materialNoList = costStandardDetails.stream().map(AppSceneCostStandardResult::getMaterialNumber).collect(Collectors.toList()); +// QueryWrapper wrapper2 = new QueryWrapper<>(); +// wrapper2.in("parent_matnr", materialNoList); +// wrapper2.eq("version_number", version_number); +// wrapper2.eq("low_order_code",2); +// threeNodes = appSceneCostStandardResultMapper.selectList(wrapper2); +// } +// //把第二层叶子节点转化为bomtreeinfoVO对象集合 +// for (int i = 0; i < costStandardDetails.size(); i++) { +// AppSceneCostStandardResult costStandardDetail = costStandardDetails.get(i); +// childrenNodeList.add(costStandardDetail); +// } +// //把第三层叶子节点转化为bomtreeinfoVO对象集合 +// for (int i = 0; i < threeNodes.size(); i++) { +// AppSceneCostStandardResult costStandardDetail = threeNodes.get(i); +// childrenNodeList.add(costStandardDetail); +// } +// } +// List bomTreeInfoVOS = BomTreeBuilder.buildBomTree(childrenNodeList, parentDataMap); +// return bomTreeInfoVOS; } } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java index 26c5d67..cd9a893 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/util/BomTreeBuilder.java @@ -115,21 +115,21 @@ public class BomTreeBuilder { .level(Integer.parseInt(parent.getLowOrderCode())) .parentMaterialNumber(parent.getParentMatnr()) .quantity(parent.getMenge().doubleValue()) - .materialCost(parent.getMaterialCostStage()) - .auxiliaryCost(parent.getAuxiliaryCostStage()) - .equipCost(parent.getEquipCostStage()) - .otherCost(parent.getOtherCostStage()) - .laborCost(parent.getLaborCostStage()) - .fuelCost(parent.getBurningCostStage()) - .accumulatedEquipCost(parent.getEquipCostAccumulated()) - .accumulatedOtherCost(parent.getOtherCostAccumulated()) - .accumulatedLaborCost(parent.getLaborCostAccumulated()) - .accumulatedMaterialCost(parent.getMaterialCostAccumulated()) - .accumulatedFuelCost(parent.getBurningCostAccumulated()) - .accumulatedAuxiliaryCost(parent.getAuxiliaryCostAccumulated()) + .materialCost(parent.getMaterialCostTotal()) + .auxiliaryCost(parent.getAuxiliaryCostTotal()) + .equipCost(parent.getEquipCostTotal()) + .otherCost(parent.getOtherCostTotal()) + .laborCost(parent.getLaborCostTotal()) + .fuelCost(parent.getFuelCost()) + .materialCost(parent.getMaterialCostTotal()) .standardCost(parent.getTotalStandardCost()) + .laborHour(parent.getLaborHourTotal()) + .machineHour(parent.getEquipHour()) + .auxiHour(parent.getAuxiHour()) + .fuelHour(parent.getFuelHour()) + .otherHour(parent.getOtherHour()) .layer(parent.getLayer()) - .sort(Integer.parseInt(layer)) + //.sort(Integer.parseInt(layer)) .build(); return bomTreeInfoVO; } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AppSceneCostCountVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AppSceneCostCountVO.java index b551adb..9719508 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AppSceneCostCountVO.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AppSceneCostCountVO.java @@ -43,6 +43,11 @@ public class AppSceneCostCountVO { */ @ApiModelProperty(value = "year") private String year; + /** + * year + */ + @ApiModelProperty(value = "werks") + private String werks; /** * 状态 */ diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrCalculate.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrCalculate.java new file mode 100644 index 0000000..0405dfb --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrCalculate.java @@ -0,0 +1,57 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +public class AufnrCalculate { + public double bomuse=0;//基于成品单位标准用量 + public double stdnum=0;//标准工时 + public double standarduse=0;//单位标准人工工时=基于成品单位标准用量*标准工时 + public double standardcost=0;//标准人工费率 + public double aufnruse=0;//基于成品单位实际用量 + public double aufnrnum=0;//实际工时 + public double realuse=0;//实际单位人工工时=基于成品单位实际用量*实际工时 + public double realcost=0;//实际人工费率 + public double pricediff=0; + public double numdiff=0; + public double totaldiff=0; + + public void ReCal(){ + standarduse=bomuse*stdnum; + realuse=aufnruse*aufnrnum; + pricediff=realuse*(realcost-standardcost); + numdiff=standardcost*(realuse-standarduse); + totaldiff=pricediff+numdiff; + } + + public double getTotalRealCost(){ + return realuse*realcost; + } + + public double getTotalStdCost(){ + return standarduse*standardcost; + } + + public void mergeReal(AufnrCalculate aufnrCalculate,boolean adduse){ + double totaluse=aufnruse;//aufnruse+aufnrCalculate.aufnruse; + if(adduse){ + totaluse=aufnruse+aufnrCalculate.aufnruse;; + } + if(totaluse>0){ + double total=aufnruse*aufnrnum+aufnrCalculate.aufnruse*aufnrCalculate.aufnrnum; + //double totalnum = aufnrnum+aufnrCalculate.aufnrnum; + aufnruse=totaluse; + aufnrnum=total/totaluse; + } + } + + public void mergeStd(AufnrCalculate aufnrCalculate,boolean adduse){ + //double totaluse=bomuse+aufnrCalculate.bomuse; + double totaluse=bomuse; + if(adduse){ + totaluse=bomuse+aufnrCalculate.bomuse; + } + if(totaluse>0){ + double total=bomuse*stdnum+aufnrCalculate.bomuse*aufnrCalculate.stdnum; + bomuse=totaluse; + stdnum=total/totaluse; + } + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrDiff.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrDiff.java new file mode 100644 index 0000000..2000ce0 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrDiff.java @@ -0,0 +1,491 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + + +import com.jeecg.dingtalk.api.core.util.ApiUrls; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; + +import java.util.ArrayList; +import java.util.List; + +public class AufnrDiff { + public int id; + public String layer; + //public double rpsmg;//工单产出量 + //public double ppsmng;//成品用量 + public double bomuse;//标准结构bom用量 + public double productuse;//实际结构用量 + public double totalproductuse;//总实际结构用量 + public double totalbomuse;//总标准用量 + + public double reallabor; + public double stdlabor; + public String costcentername=""; + public String processname=""; + public String costcenter=""; + public String budat=""; + public String aufnr=""; + public String wbs=""; + public String matnr=""; + public String materialname=""; + public String posid; + //public String code; + // public String reason; + public String detail; + public String laborcode; + public String laborreason; + public String productcode; + public String productreason; + //public double batch = 1; + //public double rate=1; + public String rueck=""; + public double totalcostlabor=0; + public double totalcostproduct=0; + public UnitCost unitCost = new UnitCost();//实际费率 + public UnitCost standardCost = new UnitCost();//标准费率 + public HiveSapAfru hiveSapAfru;//实际工序 + public AppSceneCostStandardProductprocess productProcessMaintenance;//标准工序 + //public HiveSapAfru hiveSapAfru;//实际工序 + //public ProductProcessMaintenance productProcessMaintenance;//标准工序 + public AufnrCalculate laborCalculate = new AufnrCalculate();//人工 + public AufnrCalculate zjCalculate = new AufnrCalculate();//折旧 + public AufnrCalculate rdCalculate = new AufnrCalculate();//燃动 + public AufnrCalculate flCalculate = new AufnrCalculate();//辅料 + public AufnrCalculate qtCalculate = new AufnrCalculate();//其他 + public List realChilds=new ArrayList<>();//实际工序来源 + public List stdChilds=new ArrayList<>();//标准工序来源 + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getLayer() { + return layer; + } + + public void setLayer(String layer) { + this.layer = layer; + } + + public double getBomuse() { + return bomuse; + } + + public void setBomuse(double bomuse) { + this.bomuse = bomuse; + } + + public double getProductuse() { + return productuse; + } + + public void setProductuse(double productuse) { + this.productuse = productuse; + } + + public String getCostcentername() { + return costcentername; + } + + public void setCostcentername(String costcentername) { + this.costcentername = costcentername; + } + + public String getProcessname() { + return processname; + } + + public void setProcessname(String processname) { + this.processname = processname; + } + + public String getCostcenter() { + return costcenter; + } + + public void setCostcenter(String costcenter) { + this.costcenter = costcenter; + } + + public String getBudat() { + return budat; + } + + public void setBudat(String budat) { + this.budat = budat; + } + + public String getAufnr() { + return aufnr; + } + + public void setAufnr(String aufnr) { + this.aufnr = aufnr; + } + + public String getWbs() { + return wbs; + } + + public void setWbs(String wbs) { + this.wbs = wbs; + } + + public String getMatnr() { + return matnr; + } + + public void setMatnr(String matnr) { + this.matnr = matnr; + } + + public String getMaterialname() { + return materialname; + } + + public void setMaterialname(String materialname) { + this.materialname = materialname; + } + + public String getPosid() { + return posid; + } + + public void setPosid(String posid) { + this.posid = posid; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getLaborcode() { + return laborcode; + } + + public void setLaborcode(String laborcode) { + this.laborcode = laborcode; + } + + public String getLaborreason() { + return laborreason; + } + + public void setLaborreason(String laborreason) { + this.laborreason = laborreason; + } + + public String getProductcode() { + return productcode; + } + + public void setProductcode(String productcode) { + this.productcode = productcode; + } + + public String getProductreason() { + return productreason; + } + + public void setProductreason(String productreason) { + this.productreason = productreason; + } + + public String getRueck() { + return rueck; + } + + public void setRueck(String rueck) { + this.rueck = rueck; + } + + public double getTotalcostlabor() { + return totalcostlabor; + } + + public void setTotalcostlabor(double totalcostlabor) { + this.totalcostlabor = totalcostlabor; + } + + public double getTotalcostproduct() { + return totalcostproduct; + } + + public void setTotalcostproduct(double totalcostproduct) { + this.totalcostproduct = totalcostproduct; + } + + public UnitCost getUnitCost() { + return unitCost; + } + + public void setUnitCost(UnitCost unitCost) { + this.unitCost = unitCost; + } + + public UnitCost getStandardCost() { + return standardCost; + } + + public void setStandardCost(UnitCost standardCost) { + this.standardCost = standardCost; + } + + public HiveSapAfru getHiveSapAfru() { + return hiveSapAfru; + } + + public void setHiveSapAfru(HiveSapAfru hiveSapAfru) { + this.hiveSapAfru = hiveSapAfru; + } + + public AppSceneCostStandardProductprocess getProductProcessMaintenance() { + return productProcessMaintenance; + } + + public void setProductProcessMaintenance(AppSceneCostStandardProductprocess productProcessMaintenance) { + this.productProcessMaintenance = productProcessMaintenance; + } + + public AufnrCalculate getLaborCalculate() { + return laborCalculate; + } + + public void setLaborCalculate(AufnrCalculate laborCalculate) { + this.laborCalculate = laborCalculate; + } + + public AufnrCalculate getZjCalculate() { + return zjCalculate; + } + + public void setZjCalculate(AufnrCalculate zjCalculate) { + this.zjCalculate = zjCalculate; + } + + public AufnrCalculate getRdCalculate() { + return rdCalculate; + } + + public void setRdCalculate(AufnrCalculate rdCalculate) { + this.rdCalculate = rdCalculate; + } + + public AufnrCalculate getFlCalculate() { + return flCalculate; + } + + public void setFlCalculate(AufnrCalculate flCalculate) { + this.flCalculate = flCalculate; + } + + public AufnrCalculate getQtCalculate() { + return qtCalculate; + } + + public void setQtCalculate(AufnrCalculate qtCalculate) { + this.qtCalculate = qtCalculate; + } + + public List getRealChilds() { + return realChilds; + } + + public void setRealChilds(List realChilds) { + this.realChilds = realChilds; + } + + public List getStdChilds() { + return stdChilds; + } + + public void setStdChilds(List stdChilds) { + this.stdChilds = stdChilds; + } + + public double getTotalDiff(){ + return laborCalculate.totaldiff+zjCalculate.totaldiff+rdCalculate.totaldiff+flCalculate.totaldiff+qtCalculate.totaldiff; + } + + public double getLaborDiff(){ + return laborCalculate.totaldiff; + } + + public double getProductDiff(){ + return zjCalculate.totaldiff+rdCalculate.totaldiff+flCalculate.totaldiff+qtCalculate.totaldiff; + } + + public double getProductPriceDiff(){ + return zjCalculate.pricediff+rdCalculate.pricediff+flCalculate.pricediff+qtCalculate.pricediff; + } + + public double getProductNumDiff(){ + return zjCalculate.numdiff+rdCalculate.numdiff+flCalculate.numdiff+qtCalculate.numdiff; + } + + public double getStdProductcost(){ + return zjCalculate.getTotalStdCost()+rdCalculate.getTotalStdCost()+flCalculate.getTotalStdCost()+qtCalculate.getTotalStdCost(); + } + + public void MergeStandard(AufnrDiff aufnrDiff){ + productProcessMaintenance=aufnrDiff.productProcessMaintenance; + laborCalculate.stdnum=aufnrDiff.laborCalculate.stdnum; + zjCalculate.stdnum=aufnrDiff.zjCalculate.stdnum; + rdCalculate.stdnum=aufnrDiff.rdCalculate.stdnum; + flCalculate.stdnum=aufnrDiff.flCalculate.stdnum; + qtCalculate.stdnum=aufnrDiff.qtCalculate.stdnum; + //batch=aufnrDiff.batch; + bomuse=aufnrDiff.bomuse; + standardCost=aufnrDiff.standardCost; + stdChilds=aufnrDiff.stdChilds; + Cal(); + } + + public AufnrDiff(AppSceneCostStandardProductprocess pPm, double use) { + productProcessMaintenance=pPm; + processname = pPm.getProcessName(); + costcenter = pPm.getCostCenterCode(); + matnr = pPm.getMainPartNumber(); + bomuse = use; + //batch=_batch; + laborCalculate.stdnum = productProcessMaintenance.getLaborHour().doubleValue() + productProcessMaintenance.getPrepareHour().doubleValue(); + zjCalculate.stdnum = productProcessMaintenance.getMachineHour().doubleValue(); + rdCalculate.stdnum = productProcessMaintenance.getBurningHour().doubleValue(); + flCalculate.stdnum = productProcessMaintenance.getAuxiliaryHour().doubleValue(); + qtCalculate.stdnum = productProcessMaintenance.getOtherHour().doubleValue(); + //if(hourRate!=null){ + standardCost.rgfv=pPm.getLaborHourRate().doubleValue(); + standardCost.sbfv=pPm.getEquipHourRate().doubleValue(); + standardCost.flfv=pPm.getAuxiliaryHourRate().doubleValue(); + standardCost.rdfv=pPm.getFuelHourRate().doubleValue(); + standardCost.qtfv=pPm.getOtherHourRate().doubleValue(); + //} + Cal(); + } + + public AufnrDiff(NodeMatnr nodeMatnr,double _bomuse){ + HiveSapZcorc hiveSapZcorc=nodeMatnr.hiveSapZcorc; + //hiveSapAfruList.add(hsa); + layer=hiveSapZcorc.layer; + aufnr=hiveSapZcorc.aufnr; + wbs=hiveSapZcorc.ps_psp_pnr; + //rueck = hsa.rueck; + //budat = hsa.budat; + //processname = hsa.ltxa1; + //costcenter = hsa.kostl; + matnr = hiveSapZcorc.matnr; + //rate=_rate; + //ppsmng=_ppsmng; + productuse=_bomuse; + totalcostproduct=hiveSapZcorc.rkst0051*productuse/hiveSapZcorc.menge; + totalcostlabor=hiveSapZcorc.rkstlabor*productuse/hiveSapZcorc.menge; + + //laborCalculate.aufnrnum = (hsa.ism03 + hsa.ism01); + //zjCalculate.aufnrnum=hsa.ism02; + //rdCalculate.aufnrnum=hsa.ism04; + // flCalculate.aufnrnum=hsa.ism05; + //qtCalculate.aufnrnum=hsa.ism06; + //unitCost=hsa.unitCost; + Cal(); + } + + public AufnrDiff(ZcorcMatnr nodeMatnr,double _bomuse){ + HiveSapZcorc hiveSapZcorc=nodeMatnr.hiveSapZcorc; + //hiveSapAfruList.add(hsa); + layer=hiveSapZcorc.layer; + aufnr=hiveSapZcorc.aufnr; + wbs=hiveSapZcorc.ps_psp_pnr; + //rueck = hsa.rueck; + //budat = hsa.budat; + //processname = hsa.ltxa1; + //costcenter = hsa.kostl; + matnr = hiveSapZcorc.matnr; + //rate=_rate; + //ppsmng=_ppsmng; + productuse=_bomuse; + totalcostproduct=hiveSapZcorc.rkst0051*productuse/hiveSapZcorc.menge; + totalcostlabor=hiveSapZcorc.rkstlabor*productuse/hiveSapZcorc.menge; + + //laborCalculate.aufnrnum = (hsa.ism03 + hsa.ism01); + //zjCalculate.aufnrnum=hsa.ism02; + //rdCalculate.aufnrnum=hsa.ism04; + // flCalculate.aufnrnum=hsa.ism05; + //qtCalculate.aufnrnum=hsa.ism06; + //unitCost=hsa.unitCost; + Cal(); + } + + public AufnrDiff(HiveSapAfru hsa, HiveSapZcorc hiveSapZcorc,double _bomuse) { + hiveSapAfru=hsa; + layer=hiveSapZcorc.layer; + aufnr=hiveSapZcorc.aufnr; + wbs=hiveSapZcorc.ps_psp_pnr; + rueck = hsa.rueck; + budat = hsa.budat; + processname = hsa.ltxa1; + costcenter = hsa.kostl; + matnr = hiveSapZcorc.matnr; + //rate=_rate; + //ppsmng=_ppsmng; + productuse=_bomuse; + posid=hiveSapZcorc.posid; + + laborCalculate.aufnrnum = (hsa.ism03 + hsa.ism01)/hiveSapZcorc.rpsmng; + zjCalculate.aufnrnum=hsa.ism02/hiveSapZcorc.rpsmng; + rdCalculate.aufnrnum=hsa.ism04/hiveSapZcorc.rpsmng; + flCalculate.aufnrnum=hsa.ism05/hiveSapZcorc.rpsmng; + qtCalculate.aufnrnum=hsa.ism06/hiveSapZcorc.rpsmng; + unitCost=hsa.unitCost; + Cal(); + //rpsmg=hiveSapZcorc.rpsmng; + } + + public AufnrDiff() { + + } + + public void Cal() { + laborCalculate.bomuse = bomuse; + laborCalculate.aufnruse = productuse; + laborCalculate.standardcost = standardCost.rgfv; + laborCalculate.realcost = unitCost.rgfv; + laborCalculate.ReCal(); + + zjCalculate.bomuse = bomuse; + zjCalculate.aufnruse = productuse; + zjCalculate.standardcost = standardCost.sbfv; + zjCalculate.realcost = unitCost.sbfv; + zjCalculate.ReCal(); + + rdCalculate.bomuse = bomuse; + rdCalculate.aufnruse = productuse; + rdCalculate.standardcost = standardCost.rdfv; + rdCalculate.realcost = unitCost.rdfv; + rdCalculate.ReCal(); + + flCalculate.bomuse = bomuse; + flCalculate.aufnruse = productuse; + flCalculate.standardcost = standardCost.flfv; + flCalculate.realcost = unitCost.flfv; + flCalculate.ReCal(); + + qtCalculate.bomuse = bomuse; + qtCalculate.aufnruse = productuse; + qtCalculate.standardcost = standardCost.qtfv; + qtCalculate.realcost = unitCost.qtfv; + qtCalculate.ReCal(); + + if(hiveSapAfru!=null){ + totalcostproduct=qtCalculate.getTotalRealCost()+flCalculate.getTotalRealCost()+rdCalculate.getTotalRealCost()+zjCalculate.getTotalRealCost(); + totalcostlabor=laborCalculate.getTotalRealCost(); + } + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrExportVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrExportVO.java new file mode 100644 index 0000000..c7a36c1 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/AufnrExportVO.java @@ -0,0 +1,9 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.Data; + +@Data +public class AufnrExportVO { + private int resultid; + private String type; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BatchCount.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BatchCount.java new file mode 100644 index 0000000..dce7f26 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BatchCount.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BatchCount implements Serializable { + + private String werks; + private String matnr; + + private String stage; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java index 81a3e62..0abae57 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeInfoVO.java @@ -59,74 +59,63 @@ public class BomTreeInfoVO { /** * 本阶标准成本 */ - @ApiModelProperty(value = "本阶标准成本") + @ApiModelProperty(value = "总标准成本") private BigDecimal standardCost; /** * 本阶物料成本 */ - @ApiModelProperty(value = "本阶物料成本") + @ApiModelProperty(value = "材料成本") private BigDecimal materialCost; /** * 本阶人工成本 */ - @ApiModelProperty(value = "本阶人工成本") + @ApiModelProperty(value = "直接人工") private BigDecimal laborCost; /** * 本阶设备成本 */ - @ApiModelProperty(value = "本阶设备成本") + @ApiModelProperty(value = "折旧") private BigDecimal equipCost; /** * 本阶燃动成本 */ - @ApiModelProperty(value = "本阶燃动成本") + @ApiModelProperty(value = "燃动力") private BigDecimal fuelCost; /** * 本阶辅料成本 */ - @ApiModelProperty(value = "本阶辅料成本") + @ApiModelProperty(value = "辅料") private BigDecimal auxiliaryCost; /** * 本阶其他成本 */ - @ApiModelProperty(value = "本阶其他成本") + @ApiModelProperty(value = "其他费用") private BigDecimal otherCost; /** - * 累计标准成本 + * 本阶其他成本 */ - @ApiModelProperty(value = "累计标准成本") - private BigDecimal accumulatedStandardCost; + @ApiModelProperty(value = "人工工时") + private BigDecimal laborHour; /** - * 累计物料成本 + * 本阶其他成本 */ - @ApiModelProperty(value = "累计物料成本") - private BigDecimal accumulatedMaterialCost; + @ApiModelProperty(value = "机器工时") + private BigDecimal machineHour; /** - * 累计人工成本 + * 本阶其他成本 */ - @ApiModelProperty(value = "累计人工成本") - private BigDecimal accumulatedLaborCost; + @ApiModelProperty(value = "机器工时") + private BigDecimal fuelHour; /** - * 累计设备成本 + * 本阶其他成本 */ - @ApiModelProperty(value = "累计设备成本") - private BigDecimal accumulatedEquipCost; + @ApiModelProperty(value = "机器工时") + private BigDecimal auxiHour; /** - * 累计燃动成本 + * 本阶其他成本 */ - @ApiModelProperty(value = "累计燃动成本") - private BigDecimal accumulatedFuelCost; - - /** - * 累计辅料成本 - */ - @ApiModelProperty(value = "累计辅料成本") - private BigDecimal accumulatedAuxiliaryCost; - /** - * 累计其他成本 - */ - @ApiModelProperty(value = "累计其他成本") - private BigDecimal accumulatedOtherCost; + @ApiModelProperty(value = "机器工时") + private BigDecimal otherHour; /** * 节点父类所有的物料编码 */ diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeVo.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeVo.java index b769cbf..5d0b758 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeVo.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/BomTreeVo.java @@ -13,6 +13,8 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor public class BomTreeVo { + public String werks; + public String matnr; /** * 成本中心 @@ -34,4 +36,8 @@ public class BomTreeVo { * 创建时间 */ public int depth; + + public String layer; + + public String player; } diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostEffectiveVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostEffectiveVO.java new file mode 100644 index 0000000..e85c905 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostEffectiveVO.java @@ -0,0 +1,17 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CostEffectiveVO { + + private String werks; + private String matnr; + private String ymonth; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostcenterMonth.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostcenterMonth.java new file mode 100644 index 0000000..9715d9c --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/CostcenterMonth.java @@ -0,0 +1,42 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +public class CostcenterMonth { + private String costcenter; + private String ymonth; + + public CostcenterMonth(HiveSapAfru hiveSapAfru){ + costcenter=hiveSapAfru.kostl; + ymonth=hiveSapAfru.budat.substring(0,6); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((costcenter == null) ? 0 : costcenter.hashCode()); + result = prime * result + ((costcenter == null) ? 0 : costcenter.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CostcenterMonth other = (CostcenterMonth) obj; + if (costcenter == null) { + if (other.costcenter != null) + return false; + } else if (!costcenter.equals(other.costcenter)) + return false; + if (ymonth == null) { + if (other.ymonth != null) + return false; + } else if (!ymonth.equals(other.ymonth)) + return false; + return true; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/DiffReason.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/DiffReason.java new file mode 100644 index 0000000..04af390 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/DiffReason.java @@ -0,0 +1,7 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +public class DiffReason { + public String reason; + public String code; + public double value=0; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/FlowTaskInfoVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/FlowTaskInfoVO.java index 7da21a4..3662675 100644 --- a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/FlowTaskInfoVO.java +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/FlowTaskInfoVO.java @@ -10,6 +10,10 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor public class FlowTaskInfoVO { + /** + * 最顶层物料编号 + */ + private String werks; /** * 最顶层物料编号 */ diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/HiveSapAfru.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/HiveSapAfru.java new file mode 100644 index 0000000..e04cda9 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/HiveSapAfru.java @@ -0,0 +1,54 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +//mandt, werks, aufnr, projn, erdat, gstrp, gltri, plnbez, auart, txt, vornr, aufpl, rueck, ltxa1, kostl, budat, ism01, ism02, ism03, ism04, ism05, ism06, isdd, isdz, iedd, iedz, lmnga, rmnga, xmnga +public class HiveSapAfru { + public String mandt; + public String werks; + public String aufnr; + public String projn; + public String erdat; + public String gstrp; + public String gltri; + public String plnbez; + public String auart; + public String txt; + public String vornr; + public String aufpl; + public String rueck=""; + public String ltxa1=""; + public String kostl=""; + public String budat="";//报工日期 + public double ism01;//人工前置(准备)时间 + public double ism02;//实际机器生产时间 + public double ism03;//实际人工工时(分) + public double ism04;//实际燃动时间 + public double ism05;//实际辅助时间 + public double ism06;//实际其他时间 + public String isdd; + public String isdz; + public String iedd; + public String iedz; + public double lmnga; + public String rmnga; + public String xmnga; + public UnitCost unitCost=new UnitCost();//实际工费 + public UnitCost standardCost=new UnitCost();//标准工费 + + public void AddArfu(HiveSapAfru hiveSapAfru){ + ism01+=hiveSapAfru.ism01; + ism02+=hiveSapAfru.ism02; + ism03+=hiveSapAfru.ism03; + ism04+=hiveSapAfru.ism04; + ism05+=hiveSapAfru.ism05; + ism06+=hiveSapAfru.ism06; + lmnga+=hiveSapAfru.lmnga; + } + + public void SetUnitCost(UnitCost uc){ + unitCost.rgfv=uc.rgfv; + unitCost.qtfv=uc.qtfv; + unitCost.rdfv=uc.rdfv; + unitCost.flfv=uc.flfv; + unitCost.sbfv=uc.sbfv; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/HiveSapZcorc.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/HiveSapZcorc.java new file mode 100644 index 0000000..e4a5965 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/HiveSapZcorc.java @@ -0,0 +1,416 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +public class HiveSapZcorc { + public int id; + public String matnr;//物料号 + public String aufnr;//工单号 + public String ymonth; + public String kmonth; + public String idnrk;//组件物料号 + public String auart;//工单类型,PP01 PP05 + public double psmng; + public String layer; + public String rlayer; + public String ps_psp_pnr;//wbs号 + public String werks;//工厂 + public String posid; + public double ppsmng; + public double rpsmng; + public double menge; + public double unmng; + public String ebelp; + public String ebeln; + public String productname; + public double kstsum;//单位月加权实际成本 + public double kst001;//单位月加权材料 + public double kst003;//单位月加权人工费用 + public double kst005;//单位月加权制造费用 + public double rkst000;//总实际成本 + public double rkst100;//实际门控成本 + public double rkst001;//物料成本 + public double rkst003;//工费成本 + public double rkstlabor;//人工成本 + public double rkst0051;//本阶段加下阶段制费和 + public double rkst301; + public double rkst302; + public double rkst303; + public double rkst304; + public double rkstzfi032; + public double rkstwfp; + public double rkstwft; + public String maktx; + public String player; + public double e_actual_material_cost; + public double e_actual_material_total_cost; + public double material_7525cost; + public double material_total_7525cost; + + public String getPlayer() { + return player; + } + + public void setPlayer(String player) { + this.player = player; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMatnr() { + return matnr; + } + + public void setMatnr(String matnr) { + this.matnr = matnr; + } + + public String getAufnr() { + return aufnr; + } + + public void setAufnr(String aufnr) { + this.aufnr = aufnr; + } + + public String getYmonth() { + return ymonth; + } + + public void setYmonth(String ymonth) { + this.ymonth = ymonth; + } + + public String getKmonth() { + return kmonth; + } + + public void setKmonth(String kmonth) { + this.kmonth = kmonth; + } + + public String getIdnrk() { + return idnrk; + } + + public void setIdnrk(String idnrk) { + this.idnrk = idnrk; + } + + public String getAuart() { + return auart; + } + + public void setAuart(String auart) { + this.auart = auart; + } + + public double getPsmng() { + return psmng; + } + + public void setPsmng(int psmng) { + this.psmng = psmng; + } + + public String getLayer() { + return layer; + } + + public void setLayer(String layer) { + this.layer = layer; + } + + public String getRlayer() { + return rlayer; + } + + public void setRlayer(String rlayer) { + this.rlayer = rlayer; + } + + public String getPs_psp_pnr() { + return ps_psp_pnr; + } + + public void setPs_psp_pnr(String ps_psp_pnr) { + this.ps_psp_pnr = ps_psp_pnr; + } + + public String getWerks() { + return werks; + } + + public void setWerks(String werks) { + this.werks = werks; + } + + public String getPosid() { + return posid; + } + + public void setPosid(String posid) { + this.posid = posid; + } + + public double getPpsmng() { + return ppsmng; + } + + public void setPpsmng(double ppsmng) { + this.ppsmng = ppsmng; + } + + public double getRpsmng() { + return rpsmng; + } + + public void setRpsmng(double rpsmng) { + this.rpsmng = rpsmng; + } + + public double getMenge() { + return menge; + } + + public void setMenge(double menge) { + this.menge = menge; + } + + public double getUnmng() { + return unmng; + } + + public void setUnmng(double unmng) { + this.unmng = unmng; + } + + public String getEbelp() { + return ebelp; + } + + public void setEbelp(String ebelp) { + this.ebelp = ebelp; + } + + public String getEbeln() { + return ebeln; + } + + public void setEbeln(String ebeln) { + this.ebeln = ebeln; + } + + public String getProductname() { + return productname; + } + + public void setProductname(String productname) { + this.productname = productname; + } + + public double getKstsum() { + return kstsum; + } + + public void setKstsum(double kstsum) { + this.kstsum = kstsum; + } + + public double getKst001() { + return kst001; + } + + public void setKst001(double kst001) { + this.kst001 = kst001; + } + + public double getKst003() { + return kst003; + } + + public void setKst003(double kst003) { + this.kst003 = kst003; + } + + public double getKst005() { + return kst005; + } + + public void setKst005(double kst005) { + this.kst005 = kst005; + } + + public double getRkst000() { + return rkst000; + } + + public void setRkst000(double rkst000) { + this.rkst000 = rkst000; + } + + public double getRkst100() { + return rkst100; + } + + public void setRkst100(double rkst100) { + this.rkst100 = rkst100; + } + + public double getRkst001() { + return rkst001; + } + + public void setRkst001(double rkst001) { + this.rkst001 = rkst001; + } + + public double getRkst003() { + return rkst003; + } + + public void setRkst003(double rkst003) { + this.rkst003 = rkst003; + } + + public double getRkstlabor() { + return rkstlabor; + } + + public void setRkstlabor(double rkstlabor) { + this.rkstlabor = rkstlabor; + } + + public double getRkst0051() { + return rkst0051; + } + + public void setRkst0051(double rkst0051) { + this.rkst0051 = rkst0051; + } + + public double getRkst301() { + return rkst301; + } + + public void setRkst301(double rkst301) { + this.rkst301 = rkst301; + } + + public double getRkst302() { + return rkst302; + } + + public void setRkst302(double rkst302) { + this.rkst302 = rkst302; + } + + public double getRkst303() { + return rkst303; + } + + public void setRkst303(double rkst303) { + this.rkst303 = rkst303; + } + + public double getRkst304() { + return rkst304; + } + + public void setRkst304(double rkst304) { + this.rkst304 = rkst304; + } + + public double getRkstzfi032() { + return rkstzfi032; + } + + public void setRkstzfi032(double rkstzfi032) { + this.rkstzfi032 = rkstzfi032; + } + + public double getRkstwfp() { + return rkstwfp; + } + + public void setRkstwfp(double rkstwfp) { + this.rkstwfp = rkstwfp; + } + + public double getRkstwft() { + return rkstwft; + } + + public void setRkstwft(double rkstwft) { + this.rkstwft = rkstwft; + } + + public String getMaktx() { + return maktx; + } + + public void setMaktx(String maktx) { + this.maktx = maktx; + } + + public double getE_actual_material_cost() { + return e_actual_material_cost; + } + + public void setE_actual_material_cost(double e_actual_material_cost) { + this.e_actual_material_cost = e_actual_material_cost; + } + + public double getE_actual_material_total_cost() { + return e_actual_material_total_cost; + } + + public void setE_actual_material_total_cost(double e_actual_material_total_cost) { + this.e_actual_material_total_cost = e_actual_material_total_cost; + } + + public void ReplaceActual(){ +// if(e_actual_material_total_cost>0){ +// rkst000=e_actual_material_total_cost; +// } +// if(e_actual_material_cost>0){ +// rkst001=e_actual_material_cost; +// } + + if(e_actual_material_total_cost>0){ + rkst000=material_total_7525cost; + } + if(e_actual_material_cost>0){ + rkst001=material_7525cost; + } + } + + //本阶制费 + public double getStageProduct(){ + return rkst301+rkst302+rkst303+rkst304; + } + + public double getPrice(){ + return rkst001/rpsmng; + } + + public double getMaterial_7525cost() { + return material_7525cost; + } + + public void setMaterial_7525cost(double material_7525cost) { + this.material_7525cost = material_7525cost; + } + + public double getMaterial_total_7525cost() { + return material_total_7525cost; + } + + public void setMaterial_total_7525cost(double material_total_7525cost) { + this.material_total_7525cost = material_total_7525cost; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/KNException.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/KNException.java new file mode 100644 index 0000000..3dc531f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/KNException.java @@ -0,0 +1,27 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +public class KNException extends RuntimeException{ + private Integer code; + private String err; + + public String getErr() { + return err; + } + + public void setErr(String err) { + this.err = err; + } + + public KNException(Integer _code, String _err) { + code=_code; + err=_err; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/LaborDiffVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/LaborDiffVO.java new file mode 100644 index 0000000..e6d4aa9 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/LaborDiffVO.java @@ -0,0 +1,61 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; +import lombok.Builder; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.util.ArrayList; +import java.util.List; + +@Data +@Builder +public class LaborDiffVO { + @Excel(name = "物料号", width = 15) + private String matnr; + @Excel(name = "物料信息", width = 15) + private String materialname; + @Excel(name = "报工年月", width = 15) + private String budat; + @Excel(name = "成本中心代码", width = 15) + private String costcenter; + @Excel(name = "成本中心名称", width = 15) + private String costcentername; + @Excel(name = "基与成品单位实际用量", width = 15,numFormat = "0.0000",type = 4) + private double aufnruse; + @Excel(name = "单个零件实际报工工时", width = 15,numFormat = "0.0000",type = 4) + private double bggs; + @Excel(name = "实际人工工时", width = 15,numFormat = "0.0000",type = 4) + private double realuse; + + @Excel(name = "实际人工费率", width = 15,numFormat = "0.0000",type = 4) + private double realcost; + @Excel(name = "基于成品单位标准用量", width = 15,numFormat = "0.0000",type = 4) + private double totalbomuse; + @Excel(name = "单个零件标准报工工时", width = 15,numFormat = "0.0000",type = 4) + private double bzgs; + @Excel(name = "标准人工工时", width = 15,numFormat = "0.0000",type = 4) + private double standarduse; + @Excel(name = "标准人工费率", width = 15,numFormat = "0.0000",type = 4) + private double standardcost; + @Excel(name = "人工价差", width = 15,numFormat = "0.0000",type = 4) + private double pricediff; + @Excel(name = "人工量差", width = 15,numFormat = "0.0000",type = 4) + private double numdiff; + @Excel(name = "人工总差", width = 15,numFormat = "0.0000",type = 4) + private double totaldiff; + @Excel(name = "原因", width = 15) + private String laborreason; + @Excel(name = "实际总成本", width = 15,numFormat = "0.0000",type = 4) + private double reallabor; + @Excel(name = "标准总成本", width = 15,numFormat = "0.0000",type = 4) + private double stdlabor; + + private double totalproductuse; + + private double bomuse; + + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MaterialDiff.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MaterialDiff.java new file mode 100644 index 0000000..34f3da6 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MaterialDiff.java @@ -0,0 +1,465 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import com.google.gson.Gson; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecgframework.poi.excel.annotation.ExcelTarget; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class MaterialDiff { + private static final Logger logger = LoggerFactory.getLogger(MaterialDiff.class); + + @Excel(name = "物料号", width = 15,orderNum = "1") + public String matnr; + + @Excel(name = "物料信息", width = 15,orderNum = "2") + public String productname=""; + + + public String layer; + + + public String version_number; + + + public String code; + @Excel(name = "量差原因分类", width = 15,orderNum = "10") + public String reason; + + public String detail; + + public String pricecode; + @Excel(name = "价差原因分类", width = 15,orderNum = "11") + public String pricereason; + + public String pricedetail; + + public String productcategory=""; + public String materialtype=""; + public String graphicnumber=""; + @Excel(name = "基于成品单位标准用量", width = 22,orderNum = "5",numFormat = "0.0000",type = 4) + public double standarduse=0; + @Excel(name = "标准成本", width = 15,orderNum = "6",numFormat = "0.0000",type = 4) + public double standardcost=0; + public double ppmng=1;//总工单生产数量 + public double meng=1;//总领用数量 单位实际用量等于 领用数量/工单生产数量 + //public double realtotalcost=0;//工单总价 平均单价=工单总价/领用数量 + @Excel(name = "基与成品单位实际用量", width = 22,orderNum = "3",numFormat = "0.0000",type = 4) + public double realuse=0; + @Excel(name = "实际成本", width = 15,orderNum = "4",numFormat = "0.0000",type = 4) + public double realcost=0; + @Excel(name = "价差", width = 15,orderNum = "7",numFormat = "0.0000",type = 4) + public double pricediff=0; + @Excel(name = "量差", width = 15,orderNum = "8",numFormat = "0.0000",type = 4) + public double numdiff=0; + @Excel(name = "总差", width = 15,orderNum = "9",numFormat = "0.0000",type = 4) + public double totaldiff=0; + public String parent=""; + //public double rate=1; + //public Map realmap=new HashMap<>();//实际父件用量 + public Map stdmap=new HashMap<>();//标准父件用量 + + public HiveSapZcorc hiveSapZcorc; + //public List hiveSapZcorcList=new ArrayList<>();//工单 + //public List purchasePriceList=new ArrayList<>();//价格变更记录 + public List childs = new ArrayList<>(); + + public String getMatnr() { + return matnr; + } + + public void setMatnr(String matnr) { + this.matnr = matnr; + } + + public String getProductname() { + return productname; + } + + public void setProductname(String productname) { + this.productname = productname; + } + + public String getLayer() { + return layer; + } + + public void setLayer(String layer) { + this.layer = layer; + } + + public String getVersion_number() { + return version_number; + } + + public void setVersion_number(String version_number) { + this.version_number = version_number; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getPricecode() { + return pricecode; + } + + public void setPricecode(String pricecode) { + this.pricecode = pricecode; + } + + public String getPricereason() { + return pricereason; + } + + public void setPricereason(String pricereason) { + this.pricereason = pricereason; + } + + public String getPricedetail() { + return pricedetail; + } + + public void setPricedetail(String pricedetail) { + this.pricedetail = pricedetail; + } + + public String getProductcategory() { + return productcategory; + } + + public void setProductcategory(String productcategory) { + this.productcategory = productcategory; + } + + public String getMaterialtype() { + return materialtype; + } + + public void setMaterialtype(String materialtype) { + this.materialtype = materialtype; + } + + public String getGraphicnumber() { + return graphicnumber; + } + + public void setGraphicnumber(String graphicnumber) { + this.graphicnumber = graphicnumber; + } + + public double getStandarduse() { + return standarduse; + } + + public void setStandarduse(double standarduse) { + this.standarduse = standarduse; + } + + public double getStandardcost() { + return standardcost; + } + + public void setStandardcost(double standardcost) { + this.standardcost = standardcost; + } + + public double getPpmng() { + return ppmng; + } + + public void setPpmng(double ppmng) { + this.ppmng = ppmng; + } + + public double getMeng() { + return meng; + } + + public void setMeng(double meng) { + this.meng = meng; + } + + public double getRealuse() { + return realuse; + } + + public void setRealuse(double realuse) { + this.realuse = realuse; + } + + public double getRealcost() { + return realcost; + } + + public void setRealcost(double realcost) { + this.realcost = realcost; + } + + public double getPricediff() { + return pricediff; + } + + public void setPricediff(double pricediff) { + this.pricediff = pricediff; + } + + public double getNumdiff() { + return numdiff; + } + + public void setNumdiff(double numdiff) { + this.numdiff = numdiff; + } + + public double getTotaldiff() { + return totaldiff; + } + + public void setTotaldiff(double totaldiff) { + this.totaldiff = totaldiff; + } + + public String getParent() { + return parent; + } + + public void setParent(String parent) { + this.parent = parent; + } + + public Map getStdmap() { + return stdmap; + } + + public void setStdmap(Map stdmap) { + this.stdmap = stdmap; + } + + public HiveSapZcorc getHiveSapZcorc() { + return hiveSapZcorc; + } + + public void setHiveSapZcorc(HiveSapZcorc hiveSapZcorc) { + this.hiveSapZcorc = hiveSapZcorc; + } + +// public List getPurchasePriceList() { +// return purchasePriceList; +// } + +// public void setPurchasePriceList(List purchasePriceList) { +// this.purchasePriceList = purchasePriceList; +// } + + //public List getChilds() { + // return childs; + //} + + //public void setChilds(List childs) { + // this.childs = childs; + // } + + public void Cal(){ + // if(ppmng!=0){ + //realuse=meng/ppmng; + // } + //if(realuse>0){ + // realcost=realtotalcost/realuse; + // } + //realuse=meng/ppmng; + //realcost=realtotalcost/meng; + pricediff = realuse * (realcost - standardcost); + numdiff = standardcost * (realuse - standarduse); + totaldiff = pricediff + numdiff; + } + +// public MaterialDiff(MaterialTree materialTree){ +// matnr=materialTree.matnr; +// layer=materialTree.layer; +// productname=materialTree.productname; +// version_number=materialTree.version_number; +// standardcost=materialTree.standardcost; +// standarduse=materialTree.standarduse; +// realcost=materialTree.realcost; +// realuse=materialTree.realuse; +// pricediff=materialTree.pricediff; +// numdiff=materialTree.numdiff; +// totaldiff=materialTree.totaldiff; +// code=materialTree.code; +// reason=materialTree.reason; +// detail=materialTree.detail; +// productcategory=materialTree.productcategory; +// for (NodeMatnr nodeAufnr:materialTree.nodeMatnrList){ +// hiveSapZcorcList.add(nodeAufnr.hiveSapZcorc); +// } +// } + public MaterialDiff(MaterialDiff materialDiff){ + this.matnr=materialDiff.matnr; + this.productname=materialDiff.productname; + this.layer=materialDiff.layer; + this.version_number=materialDiff.version_number; + this.code=materialDiff.code; + this.reason=materialDiff.reason; + this.detail=materialDiff.detail; + this.pricecode=materialDiff.pricecode; + this.pricereason=materialDiff.pricereason; + this.pricedetail=materialDiff.pricedetail; + this.productcategory=materialDiff.productcategory; + this.materialtype=materialDiff.materialtype; + this.graphicnumber=materialDiff.graphicnumber; + this.standarduse=materialDiff.standarduse; + this.standardcost=materialDiff.standardcost; + this.ppmng=materialDiff.ppmng; + this.meng=materialDiff.meng; + this.realuse=materialDiff.realuse; + this.realcost=materialDiff.realcost; + this.pricediff=materialDiff.pricediff; + this.numdiff=materialDiff.numdiff; + this.totaldiff=materialDiff.totaldiff; + this.parent=materialDiff.parent; + this.hiveSapZcorc=new HiveSapZcorc(); + //MaterialDiff materialDiff=new MaterialDiff(); + BeanUtils.copyProperties(materialDiff.hiveSapZcorc,this.hiveSapZcorc); + + } + + public MaterialDiff(StandardMatnr standardMatnr,double bomuse){ + matnr=standardMatnr.matnr; + version_number=standardMatnr.version; + standarduse=standardMatnr.getParentUse()*bomuse; + standardcost=standardMatnr.stage.price; + stdmap.put(standardMatnr.matnr,standarduse); + } + + public MaterialDiff(NodeMatnr nodeMatnr,double _rate){ + layer=nodeMatnr.hiveSapZcorc.layer; + matnr=nodeMatnr.hiveSapZcorc.idnrk; + ppmng=nodeMatnr.hiveSapZcorc.rpsmng; + meng=nodeMatnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=meng*_rate/ppmng;//单位用量 + realcost=nodeMatnr.hiveSapZcorc.rkst001/meng;//单价 + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001/meng; + if(nodeMatnr.hiveSapZcorc.e_actual_material_total_cost>0){ + realcost=nodeMatnr.hiveSapZcorc.e_actual_material_total_cost/meng; + } + hiveSapZcorc = nodeMatnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + Gson gson = new Gson(); + MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + childs.add(materialDiff); + // realcost=realtotalcost*_rate/meng; + //rate=_rate; + //realcost=nodeMatnr.hiveSapZcorc.kstsum; + //realmap.put(nodeMatnr.hiveSapZcorc.matnr,nodeMatnr.hiveSapZcorc.unmng); + //hiveSapZcorcList.add(nodeMatnr.hiveSapZcorc); + } + + public MaterialDiff(NodeAufnr nodeAufnr,double _bomuse){ + layer=nodeAufnr.hiveSapZcorc.layer; + matnr=nodeAufnr.hiveSapZcorc.idnrk; + ppmng=nodeAufnr.hiveSapZcorc.rpsmng; + meng=nodeAufnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=_bomuse*nodeAufnr.rate;//单位用量 + realcost=nodeAufnr.stageprice/meng;//单价 + hiveSapZcorc = nodeAufnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + MaterialDiff materialDiff=new MaterialDiff(this); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + childs.add(materialDiff); + } + + public MaterialDiff(ZcorcMatnr nodeMatnr,double _rate){ + layer=nodeMatnr.hiveSapZcorc.layer; + matnr=nodeMatnr.hiveSapZcorc.idnrk; + ppmng=nodeMatnr.hiveSapZcorc.rpsmng; + meng=nodeMatnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=meng*_rate/ppmng;//单位用量 + realcost=nodeMatnr.hiveSapZcorc.rkst001/meng;//单价 + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001/meng; + if(nodeMatnr.hiveSapZcorc.e_actual_material_total_cost>0){ + realcost=nodeMatnr.hiveSapZcorc.e_actual_material_total_cost/meng; + } + hiveSapZcorc = nodeMatnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + MaterialDiff materialDiff=new MaterialDiff(this); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + childs.add(materialDiff); + // realcost=realtotalcost*_rate/meng; + //rate=_rate; + //realcost=nodeMatnr.hiveSapZcorc.kstsum; + //realmap.put(nodeMatnr.hiveSapZcorc.matnr,nodeMatnr.hiveSapZcorc.unmng); + //hiveSapZcorcList.add(nodeMatnr.hiveSapZcorc); + } + + public MaterialDiff(ZcorcAufnr nodeAufnr,double _bomuse){ + layer=nodeAufnr.hiveSapZcorc.layer; + matnr=nodeAufnr.hiveSapZcorc.idnrk; + ppmng=nodeAufnr.hiveSapZcorc.rpsmng; + meng=nodeAufnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=_bomuse*nodeAufnr.rate;//单位用量 + realcost=nodeAufnr.stageprice/meng;//单价 + hiveSapZcorc = nodeAufnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + MaterialDiff materialDiff=new MaterialDiff(this); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + childs.add(materialDiff); + } + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MatnrVersionVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MatnrVersionVO.java new file mode 100644 index 0000000..62a2e8b --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MatnrVersionVO.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MatnrVersionVO { + private String matnr; + private String ymonth; + private List stdVersion; + + private List aufnrs; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MiningDiffTotalVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MiningDiffTotalVO.java new file mode 100644 index 0000000..73b2f9f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MiningDiffTotalVO.java @@ -0,0 +1,27 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class MiningDiffTotalVO { + private String name; + private double realcost; + private double stdcost; + private double diffcost; + private double diff1101; + private double diff1102; + private double diff1103; + private double diff1104; + private double diff1105; + private double diff1106; + private double diff1199; + private double diff2000; + private double diff3101; + private double diff3201; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MiningResultVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MiningResultVO.java new file mode 100644 index 0000000..8158809 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/MiningResultVO.java @@ -0,0 +1,19 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class MiningResultVO { + private String matnr; + private String werks; + private String ymonth; + private String version; + private String aufnr; + private String batchymonth; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/NodeAufnr.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/NodeAufnr.java new file mode 100644 index 0000000..89a5e14 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/NodeAufnr.java @@ -0,0 +1,19 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + + +import java.util.ArrayList; +import java.util.List; + +public class NodeAufnr { + //public double batch=1;//批量,用于计算标准成本 + public double rate=1;//工单在上阶物料中的比例 + public HiveSapZcorc hiveSapZcorc;//实际工单 + public List hiveSapAfruList=new ArrayList<>();//工单对应工序报工单 + public double stageprice=0; + //public List productProcessMaintenanceList=new ArrayList<>();//标准工序 + + + //子物料 + public List childs=new ArrayList<>(); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/NodeMatnr.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/NodeMatnr.java new file mode 100644 index 0000000..f58a6a4 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/NodeMatnr.java @@ -0,0 +1,20 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + + +import java.util.ArrayList; +import java.util.List; + +public class NodeMatnr { + public HiveSapZcorc hiveSapZcorc;//实际工单 + // public StageAccumulatedCost stageAccumulatedCost;//标准物料成本 + //public Map mapBom=new HashMap<>(); + + + //public double batch=1;//批量,用于计算标准成本 + //public BomMaintenanceDetail parentBMD; + public double stageprice=0;//本阶材料成本 + + //子工单 + public List childs=new ArrayList<>(); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ProduceDiffVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ProduceDiffVO.java new file mode 100644 index 0000000..76d0717 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ProduceDiffVO.java @@ -0,0 +1,116 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; +import lombok.Builder; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.util.ArrayList; +import java.util.List; + +@Data +@Builder +public class ProduceDiffVO { + @Excel(name = "物料号", width = 15) + private String matnr; + @Excel(name = "物料信息", width = 15) + private String materialname; + @Excel(name = "报工年月", width = 15) + private String budat; + @Excel(name = "成本中心代码", width = 15) + private String costcenter; + @Excel(name = "成本中心名称", width = 15) + private String costcentername; + //@Excel(name = "基与成品单位实际用量", width = 15) + //private double aufnruse; + //@Excel(name = "单个零件实际报工工时", width = 15) + //private double bggs; + @Excel(name = "总量差", width = 15,numFormat = "0.0000",type = 4) + private double productnumdiff; + @Excel(name = "总价差", width = 15,numFormat = "0.0000",type = 4) + private double productpricediff; + @Excel(name = "总差", width = 15,numFormat = "0.0000",type = 4) + private double producttotaldiff; + @Excel(name = "原因", width = 15) + private String productreason; + //折旧 + @Excel(name = "实际折旧工时", width = 15,numFormat = "0.0000",type = 4) + private double zj_aufnrnum; + @Excel(name = "实际单位折旧工时", width = 15,numFormat = "0.0000",type = 4) + private double zj_realuse; + @Excel(name = "实际折旧费率", width = 15,numFormat = "0.0000",type = 4) + private double zj_realcost; + @Excel(name = "标准折旧工时", width = 15,numFormat = "0.0000",type = 4) + private double zj_stdnum; + @Excel(name = "单位标准折旧工时", width = 15,numFormat = "0.0000",type = 4) + private double zj_stduse; + @Excel(name = "标准折旧费率", width = 15,numFormat = "0.0000",type = 4) + private double zj_stdcost; + @Excel(name = "折旧价差", width = 15,numFormat = "0.0000",type = 4) + private double zj_pricediff; + @Excel(name = "折旧量差", width = 15,numFormat = "0.0000",type = 4) + private double zj_numdiff; + @Excel(name = "折旧总差", width = 15,numFormat = "0.0000",type = 4) + private double zj_totaldiff; + //燃动 + @Excel(name = "实际燃动工时", width = 15,numFormat = "0.0000",type = 4) + private double rd_aufnrnum; + @Excel(name = "实际单位燃动工时", width = 15,numFormat = "0.0000",type = 4) + private double rd_realuse; + @Excel(name = "实际燃动费率", width = 15,numFormat = "0.0000",type = 4) + private double rd_realcost; + @Excel(name = "标准燃动工时", width = 15,numFormat = "0.0000",type = 4) + private double rd_stdnum; + @Excel(name = "单位标准燃动工时", width = 15,numFormat = "0.0000",type = 4) + private double rd_stduse; + @Excel(name = "标准燃动费率", width = 15,numFormat = "0.0000",type = 4) + private double rd_stdcost; + @Excel(name = "燃动价差", width = 15,numFormat = "0.0000",type = 4) + private double rd_pricediff; + @Excel(name = "燃动量差", width = 15,numFormat = "0.0000",type = 4) + private double rd_numdiff; + @Excel(name = "燃动总差", width = 15,numFormat = "0.0000",type = 4) + private double rd_totaldiff; + //辅料 + @Excel(name = "实际辅料工时", width = 15,numFormat = "0.0000",type = 4) + private double fl_aufnrnum; + @Excel(name = "实际单位辅料工时", width = 15,numFormat = "0.0000",type = 4) + private double fl_realuse; + @Excel(name = "实际辅料费率", width = 15,numFormat = "0.0000",type = 4) + private double fl_realcost; + @Excel(name = "标准辅料工时", width = 15,numFormat = "0.0000",type = 4) + private double fl_stdnum; + @Excel(name = "单位标准辅料工时", width = 15,numFormat = "0.0000",type = 4) + private double fl_stduse; + @Excel(name = "标准辅料费率", width = 15,numFormat = "0.0000",type = 4) + private double fl_stdcost; + @Excel(name = "辅料价差", width = 15,numFormat = "0.0000",type = 4) + private double fl_pricediff; + @Excel(name = "辅料量差", width = 15,numFormat = "0.0000",type = 4) + private double fl_numdiff; + @Excel(name = "辅料总差", width = 15,numFormat = "0.0000",type = 4) + private double fl_totaldiff; + + //其他 + @Excel(name = "实际其他工时", width = 15,numFormat = "0.0000",type = 4) + private double qt_aufnrnum; + @Excel(name = "实际单位其他工时", width = 15,numFormat = "0.0000",type = 4) + private double qt_realuse; + @Excel(name = "实际其他费率", width = 15,numFormat = "0.0000",type = 4) + private double qt_realcost; + @Excel(name = "标准其他工时", width = 15,numFormat = "0.0000",type = 4) + private double qt_stdnum; + @Excel(name = "单位标准其他工时", width = 15,numFormat = "0.0000",type = 4) + private double qt_stduse; + @Excel(name = "标准其他费率", width = 15,numFormat = "0.0000",type = 4) + private double qt_stdcost; + @Excel(name = "其他价差", width = 15,numFormat = "0.0000",type = 4) + private double qt_pricediff; + @Excel(name = "其他量差", width = 15,numFormat = "0.0000",type = 4) + private double qt_numdiff; + @Excel(name = "其他总差", width = 15,numFormat = "0.0000",type = 4) + private double qt_totaldiff; + +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/RealLaborVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/RealLaborVO.java new file mode 100644 index 0000000..245859f --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/RealLaborVO.java @@ -0,0 +1,284 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Builder; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.math.BigDecimal; + +@Data +public class RealLaborVO { + /**ymonth*/ + @Excel(name = "会计期间", width = 15) + @ApiModelProperty(value = "ymonth") + private String ymonth; + /**layer*/ + @Excel(name = "层级", width = 15) + @ApiModelProperty(value = "layer") + private String layer; + /**rlayer*/ + @Excel(name = "参考节点", width = 15) + @ApiModelProperty(value = "rlayer") + private String rlayer; + /**werks*/ + @Excel(name = "工厂", width = 15) + @ApiModelProperty(value = "werks") + private String werks; + /**matnr*/ + @Excel(name = "物料", width = 15) + @ApiModelProperty(value = "matnr") + private String matnr; + /**psPspPnr*/ + //@Excel(name = "psPspPnr", width = 15) + @ApiModelProperty(value = "psPspPnr") + private String psPspPnr; + /**aufnr*/ + @Excel(name = "订单", width = 15) + @ApiModelProperty(value = "aufnr") + private String aufnr; + /**ppsmng*/ + @Excel(name = "订单数量", width = 15) + @ApiModelProperty(value = "ppsmng") + private BigDecimal ppsmng; + /**rpsmng*/ + //@Excel(name = "rpsmng", width = 15) + @ApiModelProperty(value = "rpsmng") + private BigDecimal rpsmng; + /**ebeln*/ + @Excel(name = "采购凭证", width = 15) + @ApiModelProperty(value = "ebeln") + private String ebeln; + /**ebelp*/ + @Excel(name = "项目", width = 15) + @ApiModelProperty(value = "ebelp") + private String ebelp; + /**psmng*/ + //@Excel(name = "psmng", width = 15) + @ApiModelProperty(value = "psmng") + private BigDecimal psmng; + /**idnrk*/ + @Excel(name = "组件", width = 15) + @ApiModelProperty(value = "idnrk") + private String idnrk; + /**maktx*/ + @Excel(name = "物料描述", width = 15) + @ApiModelProperty(value = "maktx") + private String maktx; + /**kmonth*/ + @Excel(name = "月", width = 15) + @ApiModelProperty(value = "kmonth") + private String kmonth; + /**menge*/ + @Excel(name = "数量", width = 15) + @ApiModelProperty(value = "menge") + private BigDecimal menge; + /**unmng*/ + @Excel(name = "单位数量", width = 15) + @ApiModelProperty(value = "unmng") + private BigDecimal unmng; + /**kst001*/ + @Excel(name = "材料", width = 15) + @ApiModelProperty(value = "kst001") + private BigDecimal kst001; + /**kst005*/ + @Excel(name = "制造费用", width = 15) + @ApiModelProperty(value = "kst005") + private BigDecimal kst005; + /**kstsum*/ + @Excel(name = "单位实际成本", width = 15) + @ApiModelProperty(value = "kstsum") + private BigDecimal kstsum; + /**RKST001+ RKST003*/ + @Excel(name = "实际材料", width = 15) + @ApiModelProperty(value = "实际材料") + private BigDecimal rkst000; + /**rkst100*/ + @Excel(name = "rkst100", width = 15) + @ApiModelProperty(value = "rkst100") + private BigDecimal rkst100; + /**rkst001*/ + @Excel(name = "rkst001", width = 15) + @ApiModelProperty(value = "rkst001") + private BigDecimal rkst001; + /**rkst003*/ + @Excel(name = "rkst003", width = 15) + @ApiModelProperty(value = "rkst003") + private BigDecimal rkst003; + /**rkstlabor*/ + @Excel(name = "rkstlabor", width = 15) + @ApiModelProperty(value = "rkstlabor") + private BigDecimal rkstlabor; + /**rkst0051*/ + @Excel(name = "rkst0051", width = 15) + @ApiModelProperty(value = "rkst0051") + private BigDecimal rkst0051; + /**rkst301*/ + @Excel(name = "rkst301", width = 15) + @ApiModelProperty(value = "rkst301") + private BigDecimal rkst301; + /**rkst302*/ + @Excel(name = "rkst302", width = 15) + @ApiModelProperty(value = "rkst302") + private BigDecimal rkst302; + /**rkst303*/ + @Excel(name = "rkst303", width = 15) + @ApiModelProperty(value = "rkst303") + private BigDecimal rkst303; + /**rkst304*/ + @Excel(name = "rkst304", width = 15) + @ApiModelProperty(value = "rkst304") + private BigDecimal rkst304; + /**bfmenge*/ + @Excel(name = "bfmenge", width = 15) + @ApiModelProperty(value = "bfmenge") + private BigDecimal bfmenge; + /**rkstwft*/ + @Excel(name = "rkstwft", width = 15) + @ApiModelProperty(value = "rkstwft") + private BigDecimal rkstwft; + /**rkstwft001*/ + @Excel(name = "rkstwft001", width = 15) + @ApiModelProperty(value = "rkstwft001") + private BigDecimal rkstwft001; + /**rkstwft003*/ + @Excel(name = "rkstwft003", width = 15) + @ApiModelProperty(value = "rkstwft003") + private BigDecimal rkstwft003; + /**rkstwft0051*/ + @Excel(name = "rkstwft0051", width = 15) + @ApiModelProperty(value = "rkstwft0051") + private BigDecimal rkstwft0051; + /**rkstwfp*/ + @Excel(name = "rkstwfp", width = 15) + @ApiModelProperty(value = "rkstwfp") + private BigDecimal rkstwfp; + /**rkstzfi032*/ + @Excel(name = "rkstzfi032", width = 15) + @ApiModelProperty(value = "rkstzfi032") + private BigDecimal rkstzfi032; + /**hrkft*/ + @Excel(name = "hrkft", width = 15) + @ApiModelProperty(value = "hrkft") + private String hrkft; + /**rkst101*/ + @Excel(name = "rkst101", width = 15) + @ApiModelProperty(value = "rkst101") + private BigDecimal rkst101; + /**posid*/ + //@Excel(name = "posid", width = 15) + @ApiModelProperty(value = "posid") + private String posid; + /**version*/ + //@Excel(name = "version", width = 15) + @ApiModelProperty(value = "version") + private String version; + /**auart*/ + //@Excel(name = "auart", width = 15) + @ApiModelProperty(value = "auart") + private String auart; + + /**ckm3*/ + //@Excel(name = "ckm3", width = 15) + @ApiModelProperty(value = "ckm3") + private BigDecimal ckm3; + /**id*/ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "id") + private Integer id; + /**player*/ + @Excel(name = "父层级", width = 15) + @ApiModelProperty(value = "player") + private String player; + /**level*/ + //@Excel(name = "level", width = 15) + @ApiModelProperty(value = "level") + private Integer level; + /**ckm3*/ + //@Excel(name = "aufnrtotal", width = 15) + @ApiModelProperty(value = "aufnrtotal") + private BigDecimal aufnrtotal; + + + @Excel(name = "领用数量", width = 15) + @ApiModelProperty(value = "aufnrmenge") + private BigDecimal aufnrmenge; + + @Excel(name = "领用数量", width = 15) + @ApiModelProperty(value = "aufnrnum") + private BigDecimal aufnrnum; + /**ckm3*/ + @Excel(name = "加权平均数量", width = 15) + @ApiModelProperty(value = "matnrnum") + private BigDecimal matnrnum; + /**ckm3*/ + @Excel(name = "单位用量", width = 15) + @ApiModelProperty(value = "pnum") + private BigDecimal pnum; + /**kst003*/ + @Excel(name = "人工费用", width = 15) + @ApiModelProperty(value = "kst003") + private BigDecimal kst003; + + @Excel(name = "加权平均用量", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgnum") + private BigDecimal avgnum; + + //@Excel(name = "备注", width = 15) + @ApiModelProperty(value = "totalnum") + private BigDecimal totalnum; + + @Excel(name = "领用成本", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgprice") + private BigDecimal avgprice; + + @Excel(name = "加权平均单位成本", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "totalprice") + private BigDecimal totalprice; + + @Excel(name = "单位实际工时", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "urggs") + private BigDecimal urggs; + + @Excel(name = "实际工时(人工工时)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "rggs") + private BigDecimal rggs; + + /**ckm3*/ + @Excel(name = "订单数量(取订单项数量)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "aufnrmng") + private BigDecimal aufnrmng; + + /**ckm3*/ + @Excel(name = "实际工时", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "fixedrggs") + private BigDecimal fixedrggs; + + /**ckm3*/ + @Excel(name = "加权平均单位人工工时", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgrggs") + private BigDecimal avgrggs; + + /**ckm3*/ + @Excel(name = "人工费用总成本", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "rggf") + private BigDecimal rggf; + + /**ckm3*/ + @Excel(name = "加权平均单位人工费率", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "rggf") + private BigDecimal avgrgfv; + + @Excel(name = "加权平均单位成本", width = 15) + @ApiModelProperty(value = "rgfv") + private BigDecimal rgfv; + + + + /**ckm3*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "content") + private String content; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/RealProduceVO.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/RealProduceVO.java new file mode 100644 index 0000000..d21ba84 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/RealProduceVO.java @@ -0,0 +1,343 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.math.BigDecimal; + +@Data +public class RealProduceVO { + /**ymonth*/ + @Excel(name = "会计期间", width = 15) + @ApiModelProperty(value = "ymonth") + private String ymonth; + /**layer*/ + @Excel(name = "层级", width = 15) + @ApiModelProperty(value = "layer") + private String layer; + /**rlayer*/ + @Excel(name = "参考节点", width = 15) + @ApiModelProperty(value = "rlayer") + private String rlayer; + /**werks*/ + @Excel(name = "工厂", width = 15) + @ApiModelProperty(value = "werks") + private String werks; + /**matnr*/ + @Excel(name = "物料", width = 15) + @ApiModelProperty(value = "matnr") + private String matnr; + /**psPspPnr*/ + //@Excel(name = "psPspPnr", width = 15) + @ApiModelProperty(value = "psPspPnr") + private String psPspPnr; + /**aufnr*/ + @Excel(name = "订单", width = 15) + @ApiModelProperty(value = "aufnr") + private String aufnr; + /**ppsmng*/ + @Excel(name = "订单数量", width = 15) + @ApiModelProperty(value = "ppsmng") + private BigDecimal ppsmng; + /**rpsmng*/ + //@Excel(name = "rpsmng", width = 15) + @ApiModelProperty(value = "rpsmng") + private BigDecimal rpsmng; + /**ebeln*/ + @Excel(name = "采购凭证", width = 15) + @ApiModelProperty(value = "ebeln") + private String ebeln; + /**ebelp*/ + @Excel(name = "项目", width = 15) + @ApiModelProperty(value = "ebelp") + private String ebelp; + /**psmng*/ + //@Excel(name = "psmng", width = 15) + @ApiModelProperty(value = "psmng") + private BigDecimal psmng; + /**idnrk*/ + @Excel(name = "组件", width = 15) + @ApiModelProperty(value = "idnrk") + private String idnrk; + /**maktx*/ + @Excel(name = "物料描述", width = 15) + @ApiModelProperty(value = "maktx") + private String maktx; + /**kmonth*/ + @Excel(name = "月", width = 15) + @ApiModelProperty(value = "kmonth") + private String kmonth; + /**menge*/ + @Excel(name = "数量", width = 15) + @ApiModelProperty(value = "menge") + private BigDecimal menge; + /**unmng*/ + @Excel(name = "单位数量", width = 15) + @ApiModelProperty(value = "unmng") + private BigDecimal unmng; + /**kst001*/ + @Excel(name = "材料", width = 15) + @ApiModelProperty(value = "kst001") + private BigDecimal kst001; + /**kst003*/ + @Excel(name = "人工费用", width = 15) + @ApiModelProperty(value = "kst003") + private BigDecimal kst003; + /**kst005*/ + @Excel(name = "制造费用", width = 15) + @ApiModelProperty(value = "kst005") + private BigDecimal kst005; + /**kstsum*/ + @Excel(name = "单位实际成本", width = 15) + @ApiModelProperty(value = "kstsum") + private BigDecimal kstsum; + /**RKST001+ RKST003*/ + @Excel(name = "实际材料", width = 15) + @ApiModelProperty(value = "实际材料") + private BigDecimal rkst000; + /**rkst100*/ + @Excel(name = "rkst100", width = 15) + @ApiModelProperty(value = "rkst100") + private BigDecimal rkst100; + /**rkst001*/ + @Excel(name = "rkst001", width = 15) + @ApiModelProperty(value = "rkst001") + private BigDecimal rkst001; + /**rkst003*/ + @Excel(name = "rkst003", width = 15) + @ApiModelProperty(value = "rkst003") + private BigDecimal rkst003; + /**rkstlabor*/ + @Excel(name = "rkstlabor", width = 15) + @ApiModelProperty(value = "rkstlabor") + private BigDecimal rkstlabor; + /**rkst0051*/ + @Excel(name = "rkst0051", width = 15) + @ApiModelProperty(value = "rkst0051") + private BigDecimal rkst0051; + /**rkst301*/ + @Excel(name = "实际工费(机器)", width = 15) + @ApiModelProperty(value = "rkst301") + private BigDecimal rkst301; + /**rkst302*/ + @Excel(name = "实际工费(燃动力)", width = 15) + @ApiModelProperty(value = "rkst302") + private BigDecimal rkst302; + /**rkst303*/ + @Excel(name = "实际工费(辅料)", width = 15) + @ApiModelProperty(value = "rkst303") + private BigDecimal rkst303; + /**rkst304*/ + @Excel(name = "实际工费(其他)", width = 15) + @ApiModelProperty(value = "rkst304") + private BigDecimal rkst304; + /**bfmenge*/ + @Excel(name = "bfmenge", width = 15) + @ApiModelProperty(value = "bfmenge") + private BigDecimal bfmenge; + /**rkstwft*/ + @Excel(name = "rkstwft", width = 15) + @ApiModelProperty(value = "rkstwft") + private BigDecimal rkstwft; + /**rkstwft001*/ + @Excel(name = "rkstwft001", width = 15) + @ApiModelProperty(value = "rkstwft001") + private BigDecimal rkstwft001; + /**rkstwft003*/ + @Excel(name = "rkstwft003", width = 15) + @ApiModelProperty(value = "rkstwft003") + private BigDecimal rkstwft003; + /**rkstwft0051*/ + @Excel(name = "rkstwft0051", width = 15) + @ApiModelProperty(value = "rkstwft0051") + private BigDecimal rkstwft0051; + /**rkstwfp*/ + @Excel(name = "rkstwfp", width = 15) + @ApiModelProperty(value = "rkstwfp") + private BigDecimal rkstwfp; + /**rkstzfi032*/ + @Excel(name = "rkstzfi032", width = 15) + @ApiModelProperty(value = "rkstzfi032") + private BigDecimal rkstzfi032; + /**hrkft*/ + @Excel(name = "hrkft", width = 15) + @ApiModelProperty(value = "hrkft") + private String hrkft; + /**rkst101*/ + @Excel(name = "rkst101", width = 15) + @ApiModelProperty(value = "rkst101") + private BigDecimal rkst101; + /**posid*/ + //@Excel(name = "posid", width = 15) + @ApiModelProperty(value = "posid") + private String posid; + /**version*/ + //@Excel(name = "version", width = 15) + @ApiModelProperty(value = "version") + private String version; + /**auart*/ + //@Excel(name = "auart", width = 15) + @ApiModelProperty(value = "auart") + private String auart; + + /**ckm3*/ + //@Excel(name = "ckm3", width = 15) + @ApiModelProperty(value = "ckm3") + private BigDecimal ckm3; + /**id*/ + @TableId(type = IdType.AUTO) + @ApiModelProperty(value = "id") + private Integer id; + /**player*/ + @Excel(name = "父层级", width = 15) + @ApiModelProperty(value = "player") + private String player; + /**level*/ + //@Excel(name = "level", width = 15) + @ApiModelProperty(value = "level") + private Integer level; + /**ckm3*/ + //@Excel(name = "aufnrtotal", width = 15) + @ApiModelProperty(value = "aufnrtotal") + private BigDecimal aufnrtotal; + /**ckm3*/ + @Excel(name = "订单数量", width = 15) + @ApiModelProperty(value = "aufnrmng") + private BigDecimal aufnrmng; + + @Excel(name = "领用数量", width = 15) + @ApiModelProperty(value = "aufnrmenge") + private BigDecimal aufnrmenge; + + @Excel(name = "领用数量", width = 15) + @ApiModelProperty(value = "aufnrnum") + private BigDecimal aufnrnum; + /**ckm3*/ + @Excel(name = "加权平均数量", width = 15) + @ApiModelProperty(value = "matnrnum") + private BigDecimal matnrnum; + /**ckm3*/ + @Excel(name = "B列物料的结构用量", width = 15) + @ApiModelProperty(value = "pnum") + private BigDecimal pnum; + + @Excel(name = "加权平均用量", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgnum") + private BigDecimal avgnum; + + //@Excel(name = "备注", width = 15) + @ApiModelProperty(value = "totalnum") + private BigDecimal totalnum; + + @Excel(name = "领用成本", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgprice") + private BigDecimal avgprice; + + @Excel(name = "加权平均单位成本", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "totalprice") + private BigDecimal totalprice; + + @Excel(name = "人工工时", width = 15) + @ApiModelProperty(value = "rggs") + private BigDecimal rggs; + + @Excel(name = "加权平均单位成本", width = 15) + @ApiModelProperty(value = "rgfv") + private BigDecimal rgfv; + + @Excel(name = "人工工时", width = 15) + @ApiModelProperty(value = "avgrggs") + private BigDecimal avgrggs; + + @Excel(name = "加权平均单位成本", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgrgfv") + private BigDecimal avgrgfv; + + @Excel(name = "实际工时(机器)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "sbgs") + private BigDecimal sbgs; + + @Excel(name = "实际工时(燃动力)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "rdgs") + private BigDecimal rdgs; + + @Excel(name = "实际工时(辅料)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "flgs") + private BigDecimal flgs; + + @Excel(name = "实际工时(其他)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "qtgs") + private BigDecimal qtgs; + + @Excel(name = "加权平均单位实际工时(机器)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgsbgs") + private BigDecimal avgsbgs; + + @Excel(name = "加权平均单位实际工时(燃动力)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgrdgs") + private BigDecimal avgrdgs; + + @Excel(name = "加权平均单位实际工时(辅料)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgflgs") + private BigDecimal avgflgs; + + @Excel(name = "加权平均单位实际工时(其他)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgqtgs") + private BigDecimal avgqtgs; + + @Excel(name = "实际工费(机器)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "sbgf") + private BigDecimal sbgf; + + @Excel(name = "实际工费(然动力)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "rdgf") + private BigDecimal rdgf; + + @Excel(name = "实际工费(辅料)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "flgf") + private BigDecimal flgf; + + @Excel(name = "实际工费(其他)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "qtgf") + private BigDecimal qtgf; + + @Excel(name = "加权平均单位费率(机器)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgsbfv") + private BigDecimal avgsbfv; + + @Excel(name = "加权平均单位费率(燃动力)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgrdfv") + private BigDecimal avgrdfv; + + @Excel(name = "加权平均单位费率(辅料)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgflfv") + private BigDecimal avgflfv; + + @Excel(name = "加权平均单位费率(其他)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "avgqtfv") + private BigDecimal avgqtfv; + + @Excel(name = "实际费率(机器)", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "sbfv") + private BigDecimal sbfv; + + @Excel(name = "辅料费率", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "flfv") + private BigDecimal flfv; + + @Excel(name = "燃动费率", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "rdfv") + private BigDecimal rdfv; + + @Excel(name = "其他费率", width = 15,type = 4,numFormat = "0.0000") + @ApiModelProperty(value = "qtfv") + private BigDecimal qtfv; + + /**ckm3*/ + @Excel(name = "备注", width = 15) + @ApiModelProperty(value = "content") + private String content; +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/StandardMatnr.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/StandardMatnr.java new file mode 100644 index 0000000..1faab62 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/StandardMatnr.java @@ -0,0 +1,174 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardBom; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardResult; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class StandardMatnr { + public String posnr; //加入序号,保证唯一 + public String matnr; + //public String oldversion; + public String version; + public String layer; + public String werks; + public double dosage=1; + //public double batch=1;//批量 + //public String oldgroup; + //public double parentUse=1; + //public double totalcost=0; + //public double totalcost7525=0; + //public String pricetype=""; + public StandardCalculate stage=new StandardCalculate();//本阶 + public StandardCalculate accu_stage=new StandardCalculate();//累计 + public StandardCalculate struct_stage=new StandardCalculate();//结构成本 + //public Material material; + //public List bomRelevancyList=new ArrayList<>();//bom结构 + public List productProcessMaintenanceList=new ArrayList<>(); + public AppSceneCostStandardResult standardResult=AppSceneCostStandardResult.builder().build(); + public AppSceneCostStandardBom standardBom=AppSceneCostStandardBom.builder().build(); + + public List childs=new ArrayList<>(); + + public void CalTotal(){ + double totalcost= stage.getTotal()+accu_stage.getTotal(); + //double totalcost7525= stage.getTotal7525()+accu_stage.getTotal7525(); + standardResult.setTotalStandardCost(new BigDecimal(totalcost)); + //standardResult.setTotalStandardCostInter(new BigDecimal(totalcost7525)); + } + + public void CalStruct(){ + struct_stage.price=dosage*(stage.price+accu_stage.price); + //struct_stage.price7525=dosage*(stage.price7525+accu_stage.price7525); + struct_stage.pricezm=dosage*(stage.pricezm+accu_stage.pricezm); + struct_stage.labor=dosage*(stage.labor+accu_stage.labor); + struct_stage.equip=dosage*(stage.equip+accu_stage.equip); + struct_stage.burning=dosage*(stage.burning+accu_stage.burning); + struct_stage.auxi=dosage*(stage.auxi+accu_stage.auxi); + struct_stage.other=dosage*(stage.other+accu_stage.other); + } + +// public void GenerateStandardBom(){ +// standardResult.setMaterialCostStage(new BigDecimal(stage.price)); +// standardResult.setMaterialCostStageMaterial(new BigDecimal(stage.price_material)); +// standardResult.setMaterialCostStageEdcu(new BigDecimal(stage.price_edcu)); +// standardResult.setMaterialCostStageEm(new BigDecimal(stage.price_em)); +// standardResult.setMaterialCostStageInter(new BigDecimal(stage.price7525)); +// standardResult.setMaterialCostStageInterMaterial(new BigDecimal(stage.price7525_material)); +// standardResult.setMaterialCostStageInterEdcu(new BigDecimal(stage.price7525_edcu)); +// standardResult.setMaterialCostStageInterEm(new BigDecimal(stage.price7525_em)); +// standardResult.setLaborCostStage(new BigDecimal(stage.labor)); +// standardResult.setAuxiliaryCostStage(new BigDecimal(stage.auxi)); +// standardResult.setEquipCostStage(new BigDecimal(stage.equip)); +// standardResult.setBurningCostStage(new BigDecimal(stage.burning)); +// standardResult.setOtherCostStage(new BigDecimal(stage.other)); +// +// standardResult.setMaterialCostAccumulated(new BigDecimal(accu_stage.price)); +// standardResult.setMaterialCostAccumulatedMaterial(new BigDecimal(accu_stage.price_material)); +// standardResult.setMaterialCostAccumulatedEdcu(new BigDecimal(accu_stage.price_edcu)); +// standardResult.setMaterialCostAccumulatedEm(new BigDecimal(accu_stage.price_em)); +// standardResult.setMaterialCostAccumulatedInter(new BigDecimal(accu_stage.price7525)); +// standardResult.setMaterialCostAccumulatedInterMaterial(new BigDecimal(accu_stage.price7525_material)); +// standardResult.setMaterialCostAccumulatedInterEdcu(new BigDecimal(accu_stage.price7525_edcu)); +// standardResult.setMaterialCostAccumulatedInterEm(new BigDecimal(accu_stage.price7525_em)); +// standardResult.setLaborCostAccumulated(new BigDecimal(accu_stage.labor)); +// standardResult.setAuxiliaryCostAccumulated(new BigDecimal(accu_stage.auxi)); +// standardResult.setEquipCostAccumulated(new BigDecimal(accu_stage.equip)); +// standardResult.setBurningCostAccumulated(new BigDecimal(accu_stage.burning)); +// standardResult.setOtherCostAccumulated(new BigDecimal(accu_stage.other)); +// +// standardResult.setMaterialCostTotal(new BigDecimal(stage.price+accu_stage.price)); +// standardResult.setMaterialCostTotalInter(new BigDecimal(stage.price7525+accu_stage.price7525)); +// standardResult.setLaborCostTotal(new BigDecimal(stage.labor+accu_stage.labor)); +// standardResult.setAuxiliaryCostTotal(new BigDecimal(stage.auxi+accu_stage.auxi)); +// standardResult.setEquipCostTotal(new BigDecimal(stage.equip+accu_stage.equip)); +// standardResult.setBurningCostTotal(new BigDecimal(stage.burning+accu_stage.burning)); +// standardResult.setOtherCostTotal(new BigDecimal(stage.other+accu_stage.other)); +// +// standardResult.setMaterialCostRelative(new BigDecimal(struct_stage.price)); +// standardResult.setMaterialCostRelativeInter(new BigDecimal(struct_stage.price7525)); +// standardResult.setLaborCostRelative(new BigDecimal(struct_stage.labor)); +// standardResult.setManufactureCostRelative(new BigDecimal(struct_stage.getproduct())); +// standardResult.setTotalCostRelative(new BigDecimal(struct_stage.getTotal())); +// standardResult.setTotalCostRelativeInter(new BigDecimal(struct_stage.getTotal7525())); +// +// standardResult.setRelativeDosage(new BigDecimal(dosage)); +// } + + public void GenerateStandardCalculate(){ + stage.price=standardResult.getMaterialCost().doubleValue(); + //stage.price7525=standardResult.getMaterialCostStageInter().doubleValue(); + stage.labor=standardResult.getLaborCost().doubleValue(); + stage.auxi=standardResult.getAuxiliaryCost().doubleValue(); + stage.equip=standardResult.getEquipCost().doubleValue(); + stage.burning=standardResult.getFuelCost().doubleValue(); + stage.other=standardResult.getOtherCost().doubleValue(); + + accu_stage.price=standardResult.getMaterialCostTotal().doubleValue()-stage.price; + //accu_stage.price7525=standardResult.getMaterialCostAccumulatedInter().doubleValue(); + accu_stage.labor=standardResult.getLaborCostTotal().doubleValue()-stage.labor; + accu_stage.auxi=standardResult.getAuxiliaryCostTotal().doubleValue()-stage.auxi; + accu_stage.equip=standardResult.getEquipCostTotal().doubleValue()-stage.equip; + accu_stage.burning=standardResult.getFuelCostTotal().doubleValue()-stage.burning; + accu_stage.other=standardResult.getOtherCostTotal().doubleValue()-stage.other; + } + + public double getParentUse(){ + if(standardBom.getMenge()!=null){ + return standardBom.getMenge().doubleValue(); + }else + return 1; + } + +// public double getBatch(){ +// if(standardBom.getBatch()!=null){ +// return standardBom.getBatch().doubleValue(); +// }else +// return 1; +// } + + //public void setBatch(double batch){ + // standardBom.setBatch(new BigDecimal(batch)); + //} + + public class StandardCalculate{ + public boolean hasprice=false; + public boolean has7525price=false; + public double price=0; //电子成本 + public double price_material=0; //电子成本-材料 + public double price_edcu=0; //电子成本-门控 + public double price_em=0; //电子成本-电机 + //public double price7525=0; //7525成本 + //public double price7525_material=0; //7525成本-材料 + //public double price7525_edcu=0; //7525成本-门控 + //public double price7525_em=0; //7525成本-电机 + public double pricezm=0; //账面成本 + public double pricezm_edcu=0; //账面成本-门控 + public double labor;//人工 + public double equip;//设备 + public double burning;//燃动 + public double auxi;//辅料 + public double other;//其他 + public boolean bCNY=true; + + public double getTotal(){ + return price+labor+equip+burning+auxi+other; + } + + //public double getTotal7525(){ + // return price7525+labor+equip+burning+auxi+other; + //} + + public double getTotalzm(){ + return pricezm+labor+equip+burning+auxi+other; + } + + public double getproduct(){ + return equip+burning+auxi+other; + } + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/TotalDiff.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/TotalDiff.java new file mode 100644 index 0000000..0f0860c --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/TotalDiff.java @@ -0,0 +1,26 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import java.util.ArrayList; +import java.util.List; + +public class TotalDiff { + public String matnr; + public String version; + public String aufnr; + public String werks; + public String ymonth; + public String wbs; + + public double realtotal; + public double stdtotal; + public double realmaterial; + public double stdmaterial; + public double reallabor; + public double stdlabor; + public double realproduct; + public double stdproduct; + public List materialDiff=new ArrayList<>(); + public List laborDiff=new ArrayList<>(); + public List productDiff=new ArrayList<>(); + public List otherDiff=new ArrayList<>(); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/UnitCost.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/UnitCost.java new file mode 100644 index 0000000..7227bfb --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/UnitCost.java @@ -0,0 +1,9 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +public class UnitCost { + public double rgfv;//人工小时费率 + public double sbfv;//设备小时费率 + public double rdfv;//燃动小时费率 + public double flfv;//辅助小时费率 + public double qtfv;//其他小时费率 +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/VersionTmp.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/VersionTmp.java new file mode 100644 index 0000000..1dbee04 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/VersionTmp.java @@ -0,0 +1,30 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostBomRelevancy; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostHourRate; +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostMaterial; +import org.apache.commons.collections.map.HashedMap; + +import java.util.*; + +public class VersionTmp { + //public Map> innerSupplierMap = new HashMap<>(); + public List totalHourRate = new ArrayList<>(); + public Map> bomMap = new HashedMap(); + //public Map> productMap = new HashedMap(); + //public Map taxesMap=new HashMap<>(); + + //@Autowired + //ProductProcessMaintenanceMapper productProcessMaintenanceMapper; + public Map materialMap = new HashedMap(); + //public Map> companyCostMap = new HashedMap(); + //public Map> purchaseRecordMap = new HashedMap(); + //public Map> latestPurchasePriceMap = new HashedMap(); + //public Map> sapEkkoMap=new HashMap<>(); + //public Map> c7525costMap = new HashedMap(); + //public Map batchMap = new HashedMap(); + + //public Set motoMaterials=new HashSet<>(); + //public Set mkMaterials = new HashSet<>(); +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcAufnr.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcAufnr.java new file mode 100644 index 0000000..42e3b2b --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcAufnr.java @@ -0,0 +1,22 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import java.util.ArrayList; +import java.util.List; + +public class ZcorcAufnr { + //public double batch=1;//批量,用于计算标准成本 + public double rate=1;//工单在上阶物料中的比例 + public HiveSapZcorc hiveSapZcorc;//实际工单 + //public int zcorcindex; + public List hiveSapAfruList=new ArrayList<>();//工单对应工序报工单 + public double stageprice=0; + //public List productProcessMaintenanceList=new ArrayList<>();//标准工序 + + + //子物料 + public List childs=new ArrayList<>(); + + //HiveSapZcorc getSapZcorc(Map hiveSapZcorcs){ + // return hiveSapZcorcs.get(zcorcindex); + //} +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcAufnrDiff.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcAufnrDiff.java new file mode 100644 index 0000000..2f78e19 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcAufnrDiff.java @@ -0,0 +1,509 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +//import com.zzsmart.costanalysis.pojo.StandardProductprocess; + +import com.zzsmart.qomo.kn.cost.manage.entity.AppSceneCostStandardProductprocess; + +import java.util.ArrayList; +import java.util.List; + +public class ZcorcAufnrDiff { + public int id; + public String layer; + //public double rpsmg;//工单产出量 + //public double ppsmng;//成品用量 + public double bomuse;//标准结构bom用量 + public double productuse;//实际结构用量 + public double totalproductuse;//总实际结构用量 + public double totalbomuse;//总标准用量 + public String costcentername=""; + public String processname=""; + public String costcenter=""; + public String budat=""; + public String aufnr=""; + public String wbs=""; + public String matnr=""; + public String materialname=""; + public String posid; + //public String code; + // public String reason; + public String detail; + public String laborcode; + public String laborreason; + public String productcode; + public String productreason; + //public double batch = 1; + //public double rate=1; + public String rueck=""; + public double totalcostlabor=0; + public double totalcostproduct=0; + public UnitCost unitCost = new UnitCost();//实际费率 + public UnitCost standardCost = new UnitCost();//标准费率 + public HiveSapAfru hiveSapAfru;//实际工序 + public AppSceneCostStandardProductprocess productProcessMaintenance;//标准工序 + //public HiveSapAfru hiveSapAfru;//实际工序 + //public ProductProcessMaintenance productProcessMaintenance;//标准工序 + public AufnrCalculate laborCalculate = new AufnrCalculate();//人工 + public AufnrCalculate zjCalculate = new AufnrCalculate();//折旧 + public AufnrCalculate rdCalculate = new AufnrCalculate();//燃动 + public AufnrCalculate flCalculate = new AufnrCalculate();//辅料 + public AufnrCalculate qtCalculate = new AufnrCalculate();//其他 + public int realchildcount=0; + public int stdchildcount=0; + public List aufnrs=new ArrayList<>(); + + public List getAufnrs() { + return aufnrs; + } + + public void setAufnrs(List aufnrs) { + this.aufnrs = aufnrs; + } + + public int getRealchildcount() { + return realchildcount; + } + + public void setRealchildcount(int realchildcount) { + this.realchildcount = realchildcount; + } + + public int getStdchildcount() { + return stdchildcount; + } + + public void setStdchildcount(int stdchildcount) { + this.stdchildcount = stdchildcount; + } + //public List realChilds=new ArrayList<>();//实际工序来源 + //public List stdChilds=new ArrayList<>();//标准工序来源 + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getLayer() { + return layer; + } + + public void setLayer(String layer) { + this.layer = layer; + } + + public double getBomuse() { + return bomuse; + } + + public void setBomuse(double bomuse) { + this.bomuse = bomuse; + } + + public double getProductuse() { + return productuse; + } + + public void setProductuse(double productuse) { + this.productuse = productuse; + } + + public String getCostcentername() { + return costcentername; + } + + public void setCostcentername(String costcentername) { + this.costcentername = costcentername; + } + + public String getProcessname() { + return processname; + } + + public void setProcessname(String processname) { + this.processname = processname; + } + + public String getCostcenter() { + return costcenter; + } + + public void setCostcenter(String costcenter) { + this.costcenter = costcenter; + } + + public String getBudat() { + return budat; + } + + public void setBudat(String budat) { + this.budat = budat; + } + + public String getAufnr() { + return aufnr; + } + + public void setAufnr(String aufnr) { + this.aufnr = aufnr; + } + + public String getWbs() { + return wbs; + } + + public void setWbs(String wbs) { + this.wbs = wbs; + } + + public String getMatnr() { + return matnr; + } + + public void setMatnr(String matnr) { + this.matnr = matnr; + } + + public String getMaterialname() { + return materialname; + } + + public void setMaterialname(String materialname) { + this.materialname = materialname; + } + + public String getPosid() { + return posid; + } + + public void setPosid(String posid) { + this.posid = posid; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getLaborcode() { + return laborcode; + } + + public void setLaborcode(String laborcode) { + this.laborcode = laborcode; + } + + public String getLaborreason() { + return laborreason; + } + + public void setLaborreason(String laborreason) { + this.laborreason = laborreason; + } + + public String getProductcode() { + return productcode; + } + + public void setProductcode(String productcode) { + this.productcode = productcode; + } + + public String getProductreason() { + return productreason; + } + + public void setProductreason(String productreason) { + this.productreason = productreason; + } + + public String getRueck() { + return rueck; + } + + public void setRueck(String rueck) { + this.rueck = rueck; + } + + public double getTotalcostlabor() { + return totalcostlabor; + } + + public void setTotalcostlabor(double totalcostlabor) { + this.totalcostlabor = totalcostlabor; + } + + public double getTotalcostproduct() { + return totalcostproduct; + } + + public void setTotalcostproduct(double totalcostproduct) { + this.totalcostproduct = totalcostproduct; + } + + public UnitCost getUnitCost() { + return unitCost; + } + + public void setUnitCost(UnitCost unitCost) { + this.unitCost = unitCost; + } + + public UnitCost getStandardCost() { + return standardCost; + } + + public void setStandardCost(UnitCost standardCost) { + this.standardCost = standardCost; + } + + public HiveSapAfru getHiveSapAfru() { + return hiveSapAfru; + } + + public void setHiveSapAfru(HiveSapAfru hiveSapAfru) { + this.hiveSapAfru = hiveSapAfru; + } + + public AppSceneCostStandardProductprocess getProductProcessMaintenance() { + return productProcessMaintenance; + } + + public void setProductProcessMaintenance(AppSceneCostStandardProductprocess productProcessMaintenance) { + this.productProcessMaintenance = productProcessMaintenance; + } + + public AufnrCalculate getLaborCalculate() { + return laborCalculate; + } + + public void setLaborCalculate(AufnrCalculate laborCalculate) { + this.laborCalculate = laborCalculate; + } + + public AufnrCalculate getZjCalculate() { + return zjCalculate; + } + + public void setZjCalculate(AufnrCalculate zjCalculate) { + this.zjCalculate = zjCalculate; + } + + public AufnrCalculate getRdCalculate() { + return rdCalculate; + } + + public void setRdCalculate(AufnrCalculate rdCalculate) { + this.rdCalculate = rdCalculate; + } + + public AufnrCalculate getFlCalculate() { + return flCalculate; + } + + public void setFlCalculate(AufnrCalculate flCalculate) { + this.flCalculate = flCalculate; + } + + public AufnrCalculate getQtCalculate() { + return qtCalculate; + } + + public void setQtCalculate(AufnrCalculate qtCalculate) { + this.qtCalculate = qtCalculate; + } + + + public double getTotalDiff(){ + return laborCalculate.totaldiff+zjCalculate.totaldiff+rdCalculate.totaldiff+flCalculate.totaldiff+qtCalculate.totaldiff; + } + + public double getLaborDiff(){ + return laborCalculate.totaldiff; + } + + public double getProductDiff(){ + return zjCalculate.totaldiff+rdCalculate.totaldiff+flCalculate.totaldiff+qtCalculate.totaldiff; + } + + public double getProductPriceDiff(){ + return zjCalculate.pricediff+rdCalculate.pricediff+flCalculate.pricediff+qtCalculate.pricediff; + } + + public double getProductRealUse(){ + return zjCalculate.realuse+rdCalculate.realuse+flCalculate.realuse+qtCalculate.realuse; + } + + public double getProductStdUse(){ + return zjCalculate.standarduse+rdCalculate.standarduse+flCalculate.standarduse+qtCalculate.standarduse; + } + + public double getProductNumDiff(){ + return zjCalculate.numdiff+rdCalculate.numdiff+flCalculate.numdiff+qtCalculate.numdiff; + } + + public double getStdProductcost(){ + return zjCalculate.getTotalStdCost()+rdCalculate.getTotalStdCost()+flCalculate.getTotalStdCost()+qtCalculate.getTotalStdCost(); + } + + public void MergeStandard(AufnrDiff aufnrDiff,double realcount){ + productProcessMaintenance=aufnrDiff.productProcessMaintenance; + laborCalculate.stdnum=aufnrDiff.laborCalculate.stdnum; + zjCalculate.stdnum=aufnrDiff.zjCalculate.stdnum; + rdCalculate.stdnum=aufnrDiff.rdCalculate.stdnum; + flCalculate.stdnum=aufnrDiff.flCalculate.stdnum; + qtCalculate.stdnum=aufnrDiff.qtCalculate.stdnum; + //batch=aufnrDiff.batch; + bomuse=aufnrDiff.bomuse*laborCalculate.aufnruse/realcount; + standardCost=aufnrDiff.standardCost; + // stdChilds=aufnrDiff.stdChilds; + Cal(); + } + + public ZcorcAufnrDiff(AppSceneCostStandardProductprocess pPm, double use) { + productProcessMaintenance=pPm; + processname = pPm.getProcessName(); + costcenter = pPm.getCostCenterCode(); + matnr = pPm.getMainPartNumber(); + bomuse = use; + //batch=_batch; + laborCalculate.stdnum = productProcessMaintenance.getLaborHour().doubleValue() + productProcessMaintenance.getPrepareHour().doubleValue(); + zjCalculate.stdnum = productProcessMaintenance.getMachineHour().doubleValue(); + rdCalculate.stdnum = productProcessMaintenance.getBurningHour().doubleValue(); + flCalculate.stdnum = productProcessMaintenance.getAuxiliaryHour().doubleValue(); + qtCalculate.stdnum = productProcessMaintenance.getOtherHour().doubleValue(); + //if(hourRate!=null){ + standardCost.rgfv=pPm.getLaborHourRate().doubleValue(); + standardCost.sbfv=pPm.getEquipHourRate().doubleValue(); + standardCost.flfv=pPm.getAuxiliaryHourRate().doubleValue(); + standardCost.rdfv=pPm.getFuelHourRate().doubleValue(); + standardCost.qtfv=pPm.getOtherHourRate().doubleValue(); + //} + Cal(); + } + + public ZcorcAufnrDiff(NodeMatnr nodeMatnr,double _bomuse){ + HiveSapZcorc hiveSapZcorc=nodeMatnr.hiveSapZcorc; + //hiveSapAfruList.add(hsa); + layer=hiveSapZcorc.layer; + aufnr=hiveSapZcorc.aufnr; + wbs=hiveSapZcorc.ps_psp_pnr; + //rueck = hsa.rueck; + //budat = hsa.budat; + //processname = hsa.ltxa1; + //costcenter = hsa.kostl; + matnr = hiveSapZcorc.matnr; + //rate=_rate; + //ppsmng=_ppsmng; + productuse=_bomuse; + totalcostproduct=hiveSapZcorc.rkst0051*productuse/hiveSapZcorc.menge; + totalcostlabor=hiveSapZcorc.rkstlabor*productuse/hiveSapZcorc.menge; + + //laborCalculate.aufnrnum = (hsa.ism03 + hsa.ism01); + //zjCalculate.aufnrnum=hsa.ism02; + //rdCalculate.aufnrnum=hsa.ism04; + // flCalculate.aufnrnum=hsa.ism05; + //qtCalculate.aufnrnum=hsa.ism06; + //unitCost=hsa.unitCost; + Cal(); + } + + public ZcorcAufnrDiff(ZcorcMatnr nodeMatnr,double _bomuse){ + HiveSapZcorc hiveSapZcorc=nodeMatnr.hiveSapZcorc; + //hiveSapAfruList.add(hsa); + layer=hiveSapZcorc.layer; + aufnr=hiveSapZcorc.aufnr; + wbs=hiveSapZcorc.ps_psp_pnr; + //rueck = hsa.rueck; + //budat = hsa.budat; + //processname = hsa.ltxa1; + //costcenter = hsa.kostl; + matnr = hiveSapZcorc.matnr; + //rate=_rate; + //ppsmng=_ppsmng; + productuse=_bomuse; + totalcostproduct=hiveSapZcorc.rkst0051*productuse/hiveSapZcorc.menge; + totalcostlabor=hiveSapZcorc.rkstlabor*productuse/hiveSapZcorc.menge; + + //laborCalculate.aufnrnum = (hsa.ism03 + hsa.ism01); + //zjCalculate.aufnrnum=hsa.ism02; + //rdCalculate.aufnrnum=hsa.ism04; + // flCalculate.aufnrnum=hsa.ism05; + //qtCalculate.aufnrnum=hsa.ism06; + //unitCost=hsa.unitCost; + Cal(); + } + + public ZcorcAufnrDiff(HiveSapAfru hsa, HiveSapZcorc hiveSapZcorc,double _bomuse) { + hiveSapAfru=hsa; + layer=hiveSapZcorc.layer; + aufnr=hiveSapZcorc.aufnr; + wbs=hiveSapZcorc.ps_psp_pnr; + rueck = hsa.rueck; + budat = hsa.budat; + processname = hsa.ltxa1; + costcenter = hsa.kostl; + matnr = hiveSapZcorc.matnr; + //rate=_rate; + //ppsmng=_ppsmng; + productuse=_bomuse; + posid=hiveSapZcorc.posid; + double lmnga = hiveSapAfru.lmnga; + + laborCalculate.aufnrnum = (hsa.ism03 + hsa.ism01)/lmnga; + zjCalculate.aufnrnum=hsa.ism02/lmnga; + rdCalculate.aufnrnum=hsa.ism04/lmnga; + flCalculate.aufnrnum=hsa.ism05/lmnga; + qtCalculate.aufnrnum=hsa.ism06/lmnga; + unitCost=hsa.unitCost; + realchildcount=1; + Cal(); + //rpsmg=hiveSapZcorc.rpsmng; + } + + public ZcorcAufnrDiff() { + + } + + public void Cal() { + laborCalculate.bomuse = bomuse; + laborCalculate.aufnruse = productuse; + laborCalculate.standardcost = standardCost.rgfv; + laborCalculate.realcost = unitCost.rgfv; + laborCalculate.ReCal(); + + zjCalculate.bomuse = bomuse; + zjCalculate.aufnruse = productuse; + zjCalculate.standardcost = standardCost.sbfv; + zjCalculate.realcost = unitCost.sbfv; + zjCalculate.ReCal(); + + rdCalculate.bomuse = bomuse; + rdCalculate.aufnruse = productuse; + rdCalculate.standardcost = standardCost.rdfv; + rdCalculate.realcost = unitCost.rdfv; + rdCalculate.ReCal(); + + flCalculate.bomuse = bomuse; + flCalculate.aufnruse = productuse; + flCalculate.standardcost = standardCost.flfv; + flCalculate.realcost = unitCost.flfv; + flCalculate.ReCal(); + + qtCalculate.bomuse = bomuse; + qtCalculate.aufnruse = productuse; + qtCalculate.standardcost = standardCost.qtfv; + qtCalculate.realcost = unitCost.qtfv; + qtCalculate.ReCal(); + + if(hiveSapAfru!=null){ + totalcostproduct=qtCalculate.getTotalRealCost()+flCalculate.getTotalRealCost()+rdCalculate.getTotalRealCost()+zjCalculate.getTotalRealCost(); + totalcostlabor=laborCalculate.getTotalRealCost(); + } + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcMaterialDiff.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcMaterialDiff.java new file mode 100644 index 0000000..347ca35 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcMaterialDiff.java @@ -0,0 +1,453 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +//import com.zzsmart.costanalysis.task.CostAnalysis; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +public class ZcorcMaterialDiff { + private static final Logger logger = LoggerFactory.getLogger(ZcorcMaterialDiff.class); + + public String matnr; + public String productname=""; + public String layer; + public String version_number; + public String code; + public String reason; + public String detail; + public String pricecode; + public String pricereason; + public String pricedetail; + public String productcategory=""; + public String materialtype=""; + public String graphicnumber=""; + public double standarduse=0; + public double standardcost=0; + public double ppmng=1;//总工单生产数量 + public double meng=1;//总领用数量 单位实际用量等于 领用数量/工单生产数量 + //public double realtotalcost=0;//工单总价 平均单价=工单总价/领用数量 + public double realuse=0; + public double realcost=0; + public double pricediff=0; + public double numdiff=0; + public double totaldiff=0; + public String parent=""; + public String oldMaterialGroup; + //public double rate=1; + //public Map realmap=new HashMap<>();//实际父件用量 + public Map stdmap=new HashMap<>();//标准父件用量 + + public HiveSapZcorc hiveSapZcorc; + //public List hiveSapZcorcList=new ArrayList<>();//工单 + //public List purchasePriceList=new ArrayList<>();//价格变更记录 + //public List childs = new ArrayList<>(); + + public String getMatnr() { + return matnr; + } + + public void setMatnr(String matnr) { + this.matnr = matnr; + } + + public String getProductname() { + return productname; + } + + public void setProductname(String productname) { + this.productname = productname; + } + + public String getLayer() { + return layer; + } + + public void setLayer(String layer) { + this.layer = layer; + } + + public String getVersion_number() { + return version_number; + } + + public void setVersion_number(String version_number) { + this.version_number = version_number; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public String getPricecode() { + return pricecode; + } + + public void setPricecode(String pricecode) { + this.pricecode = pricecode; + } + + public String getPricereason() { + return pricereason; + } + + public void setPricereason(String pricereason) { + this.pricereason = pricereason; + } + + public String getPricedetail() { + return pricedetail; + } + + public void setPricedetail(String pricedetail) { + this.pricedetail = pricedetail; + } + + public String getProductcategory() { + return productcategory; + } + + public void setProductcategory(String productcategory) { + this.productcategory = productcategory; + } + + public String getMaterialtype() { + return materialtype; + } + + public void setMaterialtype(String materialtype) { + this.materialtype = materialtype; + } + + public String getGraphicnumber() { + return graphicnumber; + } + + public void setGraphicnumber(String graphicnumber) { + this.graphicnumber = graphicnumber; + } + + public double getStandarduse() { + return standarduse; + } + + public void setStandarduse(double standarduse) { + this.standarduse = standarduse; + } + + public double getStandardcost() { + return standardcost; + } + + public void setStandardcost(double standardcost) { + this.standardcost = standardcost; + } + + public double getPpmng() { + return ppmng; + } + + public void setPpmng(double ppmng) { + this.ppmng = ppmng; + } + + public double getMeng() { + return meng; + } + + public void setMeng(double meng) { + this.meng = meng; + } + + public double getRealuse() { + return realuse; + } + + public void setRealuse(double realuse) { + this.realuse = realuse; + } + + public double getRealcost() { + return realcost; + } + + public void setRealcost(double realcost) { + this.realcost = realcost; + } + + public double getPricediff() { + return pricediff; + } + + public void setPricediff(double pricediff) { + this.pricediff = pricediff; + } + + public double getNumdiff() { + return numdiff; + } + + public void setNumdiff(double numdiff) { + this.numdiff = numdiff; + } + + public double getTotaldiff() { + return totaldiff; + } + + public void setTotaldiff(double totaldiff) { + this.totaldiff = totaldiff; + } + + public String getParent() { + return parent; + } + + public void setParent(String parent) { + this.parent = parent; + } + + public Map getStdmap() { + return stdmap; + } + + public void setStdmap(Map stdmap) { + this.stdmap = stdmap; + } + + public HiveSapZcorc getHiveSapZcorc() { + return hiveSapZcorc; + } + + public void setHiveSapZcorc(HiveSapZcorc hiveSapZcorc) { + this.hiveSapZcorc = hiveSapZcorc; + } + + //public List getPurchasePriceList() { + // return purchasePriceList; + //} + + //public void setPurchasePriceList(List purchasePriceList) { + // this.purchasePriceList = purchasePriceList; + //} + + //public List getChilds() { + // return childs; + //} + + //public void setChilds(List childs) { + // this.childs = childs; + // } + + public void Cal(){ + if(matnr.equals("0501060052")){ + pricediff=0; + } + // if(ppmng!=0){ + //realuse=meng/ppmng; + // } + //if(realuse>0){ + // realcost=realtotalcost/realuse; + // } + //realuse=meng/ppmng; + //realcost=realtotalcost/meng; + pricediff = realuse * (realcost - standardcost); + numdiff = standardcost * (realuse - standarduse); + totaldiff = pricediff + numdiff; + } + + // public MaterialDiff(MaterialTree materialTree){ +// matnr=materialTree.matnr; +// layer=materialTree.layer; +// productname=materialTree.productname; +// version_number=materialTree.version_number; +// standardcost=materialTree.standardcost; +// standarduse=materialTree.standarduse; +// realcost=materialTree.realcost; +// realuse=materialTree.realuse; +// pricediff=materialTree.pricediff; +// numdiff=materialTree.numdiff; +// totaldiff=materialTree.totaldiff; +// code=materialTree.code; +// reason=materialTree.reason; +// detail=materialTree.detail; +// productcategory=materialTree.productcategory; +// for (NodeMatnr nodeAufnr:materialTree.nodeMatnrList){ +// hiveSapZcorcList.add(nodeAufnr.hiveSapZcorc); +// } +// } + public ZcorcMaterialDiff(){ + + } + + public ZcorcMaterialDiff(MaterialDiff materialDiff){ + this.matnr=materialDiff.matnr; + this.productname=materialDiff.productname; + this.layer=materialDiff.layer; + this.version_number=materialDiff.version_number; + this.code=materialDiff.code; + this.reason=materialDiff.reason; + this.detail=materialDiff.detail; + this.pricecode=materialDiff.pricecode; + this.pricereason=materialDiff.pricereason; + this.pricedetail=materialDiff.pricedetail; + this.productcategory=materialDiff.productcategory; + this.materialtype=materialDiff.materialtype; + this.graphicnumber=materialDiff.graphicnumber; + this.standarduse=materialDiff.standarduse; + this.standardcost=materialDiff.standardcost; + this.ppmng=materialDiff.ppmng; + this.meng=materialDiff.meng; + this.realuse=materialDiff.realuse; + this.realcost=materialDiff.realcost; + this.pricediff=materialDiff.pricediff; + this.numdiff=materialDiff.numdiff; + this.totaldiff=materialDiff.totaldiff; + this.parent=materialDiff.parent; + this.hiveSapZcorc=new HiveSapZcorc(); + //MaterialDiff materialDiff=new MaterialDiff(); + BeanUtils.copyProperties(materialDiff.hiveSapZcorc,this.hiveSapZcorc); + + } + + public ZcorcMaterialDiff(StandardMatnr standardMatnr,double bomuse){ + matnr=standardMatnr.matnr; + version_number=standardMatnr.version; + //standarduse=standardMatnr.getParentUse()*bomuse; + standarduse=standardMatnr.getParentUse(); + standardcost=standardMatnr.stage.price/standarduse; + //oldMaterialGroup=standardMatnr.standardBom.getOldMaterialGroup(); + stdmap.put(standardMatnr.matnr,standarduse); + } + + public ZcorcMaterialDiff(NodeMatnr nodeMatnr,double _rate){ + layer=nodeMatnr.hiveSapZcorc.layer; + matnr=nodeMatnr.hiveSapZcorc.idnrk; + ppmng=nodeMatnr.hiveSapZcorc.rpsmng; + meng=nodeMatnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=meng*_rate/ppmng;//单位用量 + realcost=nodeMatnr.hiveSapZcorc.rkst001/meng;//单价 + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001/meng; + //if(nodeMatnr.hiveSapZcorc.e_actual_material_total_cost>0){ + // realcost=nodeMatnr.hiveSapZcorc.e_actual_material_total_cost/meng; + //} + if(nodeMatnr.hiveSapZcorc.material_total_7525cost>0){ + realcost=nodeMatnr.hiveSapZcorc.material_total_7525cost/meng; + } + hiveSapZcorc = nodeMatnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + //childs.add(materialDiff); + // realcost=realtotalcost*_rate/meng; + //rate=_rate; + //realcost=nodeMatnr.hiveSapZcorc.kstsum; + //realmap.put(nodeMatnr.hiveSapZcorc.matnr,nodeMatnr.hiveSapZcorc.unmng); + //hiveSapZcorcList.add(nodeMatnr.hiveSapZcorc); + } + + public ZcorcMaterialDiff(NodeAufnr nodeAufnr,double _bomuse){ + layer=nodeAufnr.hiveSapZcorc.layer; + matnr=nodeAufnr.hiveSapZcorc.idnrk; + ppmng=nodeAufnr.hiveSapZcorc.rpsmng; + meng=nodeAufnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=_bomuse*nodeAufnr.rate;//单位用量 + realcost=nodeAufnr.stageprice/meng;//单价 + hiveSapZcorc = nodeAufnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + //MaterialDiff materialDiff=new MaterialDiff(this); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + //childs.add(materialDiff); + } + + public ZcorcMaterialDiff(ZcorcMatnr nodeMatnr,double _rate){ + layer=nodeMatnr.hiveSapZcorc.layer; + matnr=nodeMatnr.hiveSapZcorc.idnrk; + ppmng=nodeMatnr.hiveSapZcorc.rpsmng; + meng=nodeMatnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=meng*_rate/ppmng;//单位用量 + realcost=nodeMatnr.hiveSapZcorc.rkst001/meng;//单价 + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001/meng; + //if(nodeMatnr.hiveSapZcorc.e_actual_material_total_cost>0){ + // realcost=nodeMatnr.hiveSapZcorc.e_actual_material_total_cost/meng; + //} + if(nodeMatnr.hiveSapZcorc.material_total_7525cost>0){ + realcost=nodeMatnr.hiveSapZcorc.material_total_7525cost/meng; + } + hiveSapZcorc = nodeMatnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + //MaterialDiff materialDiff=new MaterialDiff(this); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + //childs.add(materialDiff); + // realcost=realtotalcost*_rate/meng; + //rate=_rate; + //realcost=nodeMatnr.hiveSapZcorc.kstsum; + //realmap.put(nodeMatnr.hiveSapZcorc.matnr,nodeMatnr.hiveSapZcorc.unmng); + //hiveSapZcorcList.add(nodeMatnr.hiveSapZcorc); + } + + public ZcorcMaterialDiff(ZcorcAufnr nodeAufnr,double _bomuse){ + layer=nodeAufnr.hiveSapZcorc.layer; + matnr=nodeAufnr.hiveSapZcorc.matnr; + ppmng=nodeAufnr.hiveSapZcorc.rpsmng; + meng=nodeAufnr.hiveSapZcorc.menge; + if(meng==0){ + meng=ppmng; + } + //realtotalcost=nodeMatnr.hiveSapZcorc.rkst001; + realuse=_bomuse*nodeAufnr.rate;//单位用量 + realcost=nodeAufnr.stageprice/meng;//单价 + hiveSapZcorc = nodeAufnr.hiveSapZcorc; + + //MaterialDiff materialDiff=new MaterialDiff(); + //BeanUtils.copyProperties(this,materialDiff); + //MaterialDiff materialDiff=new MaterialDiff(this); + //Gson gson = new Gson(); + //MaterialDiff materialDiff=gson.fromJson(gson.toJson(this),MaterialDiff.class); + //childs.add(materialDiff); + } +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcMatnr.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcMatnr.java new file mode 100644 index 0000000..0869481 --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcMatnr.java @@ -0,0 +1,18 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + +import java.util.ArrayList; +import java.util.List; + +public class ZcorcMatnr { + public HiveSapZcorc hiveSapZcorc;//实际工单 + //public int zcorcindex; + public double stageprice=0;//本阶材料成本 + + //子工单 + public List childs=new ArrayList<>(); + + + //HiveSapZcorc getSapZcorc(Map hiveSapZcorcs){ + // return hiveSapZcorcs.get(zcorcindex); + //} +} diff --git a/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcProduct.java b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcProduct.java new file mode 100644 index 0000000..729ee2c --- /dev/null +++ b/qomo-kn-cost-manage/src/main/java/com/zzsmart/qomo/kn/cost/manage/vo/ZcorcProduct.java @@ -0,0 +1,88 @@ +package com.zzsmart.qomo.kn.cost.manage.vo; + + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; + +public class ZcorcProduct { + private static final Logger logger = LoggerFactory.getLogger(ZcorcProduct.class); + + public String matnr;//物料号 + //public String aufnr;//工单号 实际成本才有 + public String posid;//wbs号 + public String werks;//工厂 实际成本才有 + //public String layer;//layer 实际成本才有 + public String version;//标准成本版本号 标准版本才有 + public double batch=1;//批量,用于计算标准成本 + + public ZcorcProduct(String _ma,String _posid,String _we,String _layer,String _version){ + matnr=_ma; + //aufnr=_an; + posid=_posid; + werks=_we; + //layer=_layer; + version=_version; + } + + //public StageAccumulatedCost stageAccumulatedCost;//标准物料成本 + //public Map mapBom=new HashMap<>(); + //public Map mapBom=new HashMap<>(); + //public List bomMaintenanceDetailList=new ArrayList<>(); + //public MaterialTree materialTree=new MaterialTree();//物料树 + public List materialDiffs=new ArrayList<>(); + + public List nodeAufnrs=new ArrayList<>();//实际工单 + + public double getPrice(){ + double rkst001=0; + double rpmsmng=0; + for (ZcorcAufnr zcorcAufnr:nodeAufnrs){ + rkst001+=zcorcAufnr.hiveSapZcorc.rkst001; + rpmsmng+=zcorcAufnr.hiveSapZcorc.rpsmng; + } + if(rpmsmng>0) { + return rkst001 / rpmsmng; + }else{ + return 0; + } + } + + public double getKst005(){ + double rkst001=0; + double rpmsmng=0; + for (ZcorcAufnr zcorcAufnr:nodeAufnrs){ + rkst001+=zcorcAufnr.hiveSapZcorc.kst005*zcorcAufnr.hiveSapZcorc.rpsmng; + rpmsmng+=zcorcAufnr.hiveSapZcorc.rpsmng; + } + if(rpmsmng>0) { + return rkst001 / rpmsmng; + }else{ + return 0; + } + } + + public double getKst003(){ + double rkst001=0; + double rpmsmng=0; + for (ZcorcAufnr zcorcAufnr:nodeAufnrs){ + rkst001+=zcorcAufnr.hiveSapZcorc.kst003*zcorcAufnr.hiveSapZcorc.rpsmng; + rpmsmng+=zcorcAufnr.hiveSapZcorc.rpsmng; + } + if(rpmsmng>0) { + return rkst001 / rpmsmng; + }else{ + return 0; + } + } + + public double getRpsmng(){ + double rpmsmng=0; + for (ZcorcAufnr zcorcAufnr:nodeAufnrs){ + rpmsmng+=zcorcAufnr.hiveSapZcorc.rpsmng; + } + return rpmsmng; + } +}