diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/SparePartsLedgerMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/SparePartsLedgerMapper.java index 996b39c59..7a57b9fa0 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/SparePartsLedgerMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/SparePartsLedgerMapper.java @@ -83,4 +83,6 @@ public interface SparePartsLedgerMapper { * @param apply */ void updateSpareNumAdd(EquSpareApply apply); + + void updateAmount(SparePartsLedger sparePartsLedger); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java index 3a59b6978..65cf62da4 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquSpareApplyServiceImpl.java @@ -146,7 +146,7 @@ public class EquSpareApplyServiceImpl implements IEquSpareApplyService { BigDecimal applyNum = equSpareApply.getSpareQuantity(); BigDecimal amount = equSpareApply.getAmount(); sparePartsLedger.setAmount(amount.subtract(applyNum)); - sparePartsLedgerMapper.updateSparePartsLedger(sparePartsLedger); + sparePartsLedgerMapper.updateAmount(sparePartsLedger); } return success("新增申领记录成功!"); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/SparePartsLedgerServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/SparePartsLedgerServiceImpl.java index 5a3ed4696..0b92a1891 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/SparePartsLedgerServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/SparePartsLedgerServiceImpl.java @@ -3,6 +3,9 @@ package com.op.device.service.impl; import java.util.List; import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.uuid.IdUtils; +import com.op.common.security.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.device.mapper.SparePartsLedgerMapper; @@ -41,7 +44,6 @@ public class SparePartsLedgerServiceImpl implements ISparePartsLedgerService { @Override @DS("#header.poolName") public List selectSparePartsLedgerList(SparePartsLedger sparePartsLedger) { - sparePartsLedger.setStorageType("SP"); return sparePartsLedgerMapper.selectSparePartsLedgerList(sparePartsLedger); } @@ -54,6 +56,9 @@ public class SparePartsLedgerServiceImpl implements ISparePartsLedgerService { @Override @DS("#header.poolName") public int insertSparePartsLedger(SparePartsLedger sparePartsLedger) { + sparePartsLedger.setStorageId(IdUtils.fastSimpleUUID()); + sparePartsLedger.setGmtCreate(DateUtils.getNowDate());//创建时间 + sparePartsLedger.setCreateBy(SecurityUtils.getUsername()); return sparePartsLedgerMapper.insertSparePartsLedger(sparePartsLedger); } @@ -66,6 +71,8 @@ public class SparePartsLedgerServiceImpl implements ISparePartsLedgerService { @Override @DS("#header.poolName") public int updateSparePartsLedger(SparePartsLedger sparePartsLedger) { + sparePartsLedger.setLastModifiedBy(SecurityUtils.getUsername());//最后更新人 + sparePartsLedger.setGmtModified(DateUtils.getNowDate());//最后更新时间 return sparePartsLedgerMapper.updateSparePartsLedger(sparePartsLedger); } diff --git a/op-modules/op-device/src/main/resources/mapper/device/SparePartsLedgerMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/SparePartsLedgerMapper.xml index b30a5ee07..d06483b44 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/SparePartsLedgerMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/SparePartsLedgerMapper.xml @@ -9,9 +9,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - @@ -32,10 +32,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - @@ -47,24 +43,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - - - select + select storage_id, storage_type, material_code, material_desc, amount, storage_amount, - sap_factory_code, - wl_name, - del_flag, + user_defined1, spare_use_life, spare_name, spare_mode, @@ -82,103 +73,74 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" last_modified_by, gmt_modified, active_flag, - factory_code - from wms_ods_mate_storage_news + factory_code, + sap_factory_code, + del_flag, + own_equipment_name, + unit_quantity, + safe_stock, + unit_price, + procurement_method, + procurement_cycle, + opening_balance, + output_records, + input_records, + end_inventory, + end_money, + substitute_parts, + own_equipment_code + from equ_spareparts_ledger @@ -186,15 +148,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where storage_id = #{storageId} and del_flag = '0' - and storage_tpye = 'SP' - insert into wms_ods_mate_storage_news + insert into equ_spareparts_ledger storage_id, wh_code, @@ -204,7 +165,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wl_code, material_code, material_desc, - amount, + amount, storage_amount, occupy_amount, lpn, @@ -242,6 +203,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" spare_inventory_floor, spare_inventory_upper, spare_type, + own_equipment_name, + unit_quantity, + safe_stock, + unit_price, + procurement_method, + procurement_cycle, + opening_balance, + output_records, + input_records, + end_inventory, + end_money, + substitute_parts, + own_equipment_code, #{storageId}, @@ -252,7 +226,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{wlCode}, #{materialCode}, #{materialDesc}, - #{amount}, + #{amount}, #{storageAmount}, #{occupyAmount}, #{lpn}, @@ -290,11 +264,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{spareInventoryFloor}, #{spareInventoryUpper}, #{spareType}, + #{ownEquipmentName}, + #{unitQuantity}, + #{safeStock}, + #{unitPrice}, + #{procurementMethod}, + #{procurementCycle}, + #{openingBalance}, + #{outputRecords}, + #{inputRecords}, + #{endInventory}, + #{endMoney}, + #{substituteParts}, + #{ownEquipmentCode}, - update wms_ods_mate_storage_news + update equ_spareparts_ledger wh_code = #{whCode}, region_code = #{regionCode}, @@ -303,7 +290,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wl_code = #{wlCode}, material_code = #{materialCode}, material_desc = #{materialDesc}, - amount = #{amount}, + amount = #{amount}, storage_amount = #{storageAmount}, occupy_amount = #{occupyAmount}, lpn = #{lpn}, @@ -341,28 +328,51 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" spare_inventory_floor = #{spareInventoryFloor}, spare_inventory_upper = #{spareInventoryUpper}, spare_type = #{spareType}, + own_equipment_name = #{ownEquipmentName}, + unit_quantity = #{unitQuantity}, + safe_stock = #{safeStock}, + unit_price = #{unitPrice}, + procurement_method = #{procurementMethod}, + procurement_cycle = #{procurementCycle}, + opening_balance = #{openingBalance}, + output_records = #{outputRecords}, + input_records = #{inputRecords}, + end_inventory = #{endInventory}, + end_money = #{endMoney}, + substitute_parts = #{substituteParts}, + own_equipment_code = #{ownEquipmentCode}, where storage_id = #{storageId} + + update equ_spareparts_ledger + set amount = #{amount} + where storage_id = #{storageId} + + - update wms_ods_mate_storage_news + update equ_spareparts_ledger set amount = ( amount - #{spareQuantity} ) where material_code = #{spareCode} - update wms_ods_mate_storage_news + update equ_spareparts_ledger set amount = ( amount + #{spareQuantity} ) where material_code = #{spareCode} - - delete from wms_ods_mate_storage_news where storage_id = #{storageId} - + + update equ_spareparts_ledger + set del_flag = '1' + where storage_id = #{storageId} + - - delete from wms_ods_mate_storage_news where storage_id in + + update equ_spareparts_ledger + set del_flag = '1' + where storage_id in #{storageId} - + \ No newline at end of file diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index ff0da3722..5dceb0883 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -22,9 +22,9 @@ import com.op.common.core.utils.uuid.IdUtils; import com.op.common.datasource.creator.DynamicDatasourceCreator; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; -import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.domain.vo.DynamicColumnVo; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.system.api.domain.DataSourcePropertyDTO; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; @@ -228,15 +228,21 @@ public class MesReportWorkController extends BaseController { @RequiresPermissions("mes:dailyReport:list") @GetMapping("/getDailyReport") public TableDataInfo getDailyReport(MesDailyReport mesDailyReport) { - if(!StringUtils.isNotBlank(mesDailyReport.getWorkCenter())){ return null; } - startPage(); List list = mesReportWorkService.getDailyReport(mesDailyReport); return getDataTable(list); } + @RequiresPermissions("mes:dailyReport:list") + @GetMapping("/getDailyReportNew") + public TableDataInfo getDailyReportNew(MesDailyReportVo mesDailyReportVo) { + startPage(); + List list = mesReportWorkService.getDailyReportNew(mesDailyReportVo); + return getDataTable(list); + } + @RequiresPermissions("mes:dailyReport:list") @PostMapping("/getDailyReportExport") public void getDailyReportExport(HttpServletResponse response,MesDailyReport mesDailyReport) { @@ -246,6 +252,18 @@ public class MesReportWorkController extends BaseController { ExcelUtilDailyReport util = new ExcelUtilDailyReport(MesDailyReport.class); util.exportExcel(response, list, ymd+"生产日报表",titleName); } + @RequiresPermissions("mes:dailyReportNew:export") + @PostMapping("/getDailyReportNewExport") + public void getDailyReportNewExport(HttpServletResponse response,MesDailyReportVo mesDailyReportVo) { + List list = mesReportWorkService.getDailyReportNew(mesDailyReportVo); + String start = mesDailyReportVo.getProductDateStart(); + String end = mesDailyReportVo.getProductDateEnd(); + ExcelUtil util = new ExcelUtil<>(MesDailyReportVo.class); + util.exportExcel(response, list, start+"至"+end+"生产日报表"); + + } + + @GetMapping("/getWorkcenterList") public List getWorkcenterList(MesDailyReport mesDailyReport) { diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java new file mode 100644 index 000000000..ad1001ab2 --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/dto/QuantityDto.java @@ -0,0 +1,51 @@ +package com.op.mes.domain.dto; + +import java.math.BigDecimal; + +public class QuantityDto { + private Long quantityFeedbackSum; + private BigDecimal workTime; + private Long useMan; + private String workorderCode; + private String machineCode; + + public Long getQuantityFeedbackSum() { + return quantityFeedbackSum; + } + + public void setQuantityFeedbackSum(Long quantityFeedbackSum) { + this.quantityFeedbackSum = quantityFeedbackSum; + } + + public BigDecimal getWorkTime() { + return workTime; + } + + public void setWorkTime(BigDecimal workTime) { + this.workTime = workTime; + } + + public Long getUseMan() { + return useMan; + } + + public void setUseMan(Long useMan) { + this.useMan = useMan; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getMachineCode() { + return machineCode; + } + + public void setMachineCode(String machineCode) { + this.machineCode = machineCode; + } +} diff --git a/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java b/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java new file mode 100644 index 000000000..ae22df33b --- /dev/null +++ b/op-modules/op-mes/src/main/java/com/op/mes/domain/vo/MesDailyReportVo.java @@ -0,0 +1,443 @@ +package com.op.mes.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; + +import java.math.BigDecimal; +import java.util.Date; + +public class MesDailyReportVo extends BaseEntity { + private static final long serialVersionUID = 1L; + + // 车间 + @Excel(name = "车间编码") + private String workshopCode; + @Excel(name = "车间编码") + private String workshopName; + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "日期") + private Date productDate;//工单日期 + // sap + @Excel(name = "产线编码") + private String sapCode; + @Excel(name = "产线名称") + private String sapName; + // 设备编码 + private String equipmentCode; + @Excel(name = "组别") + private String equipmentName; + // 工时 + + private BigDecimal unitWorkingHours; + + private String workorderCodeSap; + @Excel(name = "产品编码") + private String productCode;//产品编码 + @Excel(name = "产品名称") + private String productName;//产品名称 + + //组别 + private String teamCode; + private String teamDesc; + + @Excel(name = "品类") + private String prodType;//分类 + @Excel(name = "组长") + private String teamLeaderName;//组长 + //计划产量 + // 标准用人 + @Excel(name = "标准用人") + private Long useMan; + // 标准效率 + @Excel(name = "产线标准效率") + private BigDecimal efficiency; + @Excel(name = "工单号") + private String workorderCode; + private String workorderName; + private String quantity;//计划产量(箱) + @Excel(name = "规格") + private Long spec;//规格 + @Excel(name = "单位") + private String unit; + @Excel(name = "计划产量") + private Long quantitySplit; + @Excel(name = "实际产量") + private String quantityFeedback;//实际产量(箱) + @Excel(name = "产量") + private String quantityAct;// 产量(盒) + @Excel(name = "产线标准效率") + private String completeRate;// 订单完成率 + @Excel(name = "实际用人") + private String manStandard;//实际用人 + @Excel(name = "标准工时") + private String workTimeStandard;//工时-标准 + @Excel(name = "实际工时") + private BigDecimal workTime;//工时-实际 + @Excel(name = "产线效率") + private String productivity;//工时-产线效率 + @Excel(name = "总工时") + private String totalWorkTime; + @Excel(name = "标准人均效率") + private String manAvgStandard;//人均效率-标准 + @Excel(name = "实际人均效率") + private String manAvgActual;//人均效率-实际 + @Excel(name = "人均效率达成率") + private String manAvgDo;//人均效率-达成 + private String actManHour;//实际人工时 + + private String productDateStart;//工单日期开始 + private String productDateEnd;//工单日期结束 + private String productStartDate; + private String productEndDate; + private String workCenter; + + private String equipmentTypeCode; + + private String machineCode; + @Excel(name = "工厂编码") + private String factoryCode; + + + public String getProductDateStart() { + return productDateStart; + } + public void setProductDateStart(String productDateStart) { + this.productDateStart = productDateStart; + } + + public String getProductDateEnd() { + return productDateEnd; + } + + public void setProductDateEnd(String productDateEnd) { + this.productDateEnd = productDateEnd; + } + + public String getQuantityAct() { + return quantityAct; + } + + public void setQuantityAct(String quantityAct) { + this.quantityAct = quantityAct; + } + + public String getCompleteRate() { + return completeRate; + } + + public void setCompleteRate(String completeRate) { + this.completeRate = completeRate; + } + + public String getProductivity() { + return productivity; + } + + public void setProductivity(String productivity) { + this.productivity = productivity; + } + + + public String getManAvgActual() { + return manAvgActual; + } + + public void setManAvgActual(String manAvgActual) { + this.manAvgActual = manAvgActual; + } + + public String getManAvgDo() { + return manAvgDo; + } + + public void setManAvgDo(String manAvgDo) { + this.manAvgDo = manAvgDo; + } + + public String getActManHour() { + return actManHour; + } + + public void setActManHour(String actManHour) { + this.actManHour = actManHour; + } + + public String getProductStartDate() { + return productStartDate; + } + + public void setProductStartDate(String productStartDate) { + this.productStartDate = productStartDate; + } + + public String getProductEndDate() { + return productEndDate; + } + + public void setProductEndDate(String productEndDate) { + this.productEndDate = productEndDate; + } + + public String getTeamCode() { + return teamCode; + } + + public void setTeamCode(String teamCode) { + this.teamCode = teamCode; + } + + public String getTeamDesc() { + return teamDesc; + } + + public void setTeamDesc(String teamDesc) { + this.teamDesc = teamDesc; + } + + public String getProdType() { + return prodType; + } + + public void setProdType(String prodType) { + this.prodType = prodType; + } + + public String getTeamLeaderName() { + return teamLeaderName; + } + + public void setTeamLeaderName(String teamLeaderName) { + this.teamLeaderName = teamLeaderName; + } + + public String getProductCode() { + return productCode; + } + + public void setProductCode(String productCode) { + this.productCode = productCode; + } + + public Long getSpec() { + return spec; + } + + public void setSpec(Long spec) { + this.spec = spec; + } + + public String getProductName() { + return productName; + } + + public void setProductName(String productName) { + this.productName = productName; + } + + public String getUnit() { + return unit; + } + + public void setUnit(String unit) { + this.unit = unit; + } + + public String getQuantity() { + return quantity; + } + + public void setQuantity(String quantity) { + this.quantity = quantity; + } + + public String getQuantityFeedback() { + return quantityFeedback; + } + public void setQuantityFeedback(String quantityFeedback) { + this.quantityFeedback = quantityFeedback; + } + + public BigDecimal getWorkTime() { + return workTime; + } + + public void setWorkTime(BigDecimal workTime) { + this.workTime = workTime; + } + + public String getManStandard() { + return manStandard; + } + + public void setManStandard(String manStandard) { + this.manStandard = manStandard; + } + + public String getWorkTimeStandard() { + return workTimeStandard; + } + + public void setWorkTimeStandard(String workTimeStandard) { + this.workTimeStandard = workTimeStandard; + } + + public String getManAvgStandard() { + return manAvgStandard; + } + + public void setManAvgStandard(String manAvgStandard) { + this.manAvgStandard = manAvgStandard; + } + public Date getProductDate() { + return productDate; + } + + public void setProductDate(Date productDate) { + this.productDate = productDate; + } + + public String getWorkCenter() { + return workCenter; + } + + public void setWorkCenter(String workCenter) { + this.workCenter = workCenter; + } + + public String getEquipmentTypeCode() { + return equipmentTypeCode; + } + + public void setEquipmentTypeCode(String equipmentTypeCode) { + this.equipmentTypeCode = equipmentTypeCode; + } + + public String getWorkshopCode() { + return workshopCode; + } + + public void setWorkshopCode(String workshopCode) { + this.workshopCode = workshopCode; + } + + public String getWorkshopName() { + return workshopName; + } + + public void setWorkshopName(String workshopName) { + this.workshopName = workshopName; + } + + public String getSapCode() { + return sapCode; + } + + public void setSapCode(String sapCode) { + this.sapCode = sapCode; + } + + public String getSapName() { + return sapName; + } + + public void setSapName(String sapName) { + this.sapName = sapName; + } + + public String getEquipmentCode() { + return equipmentCode; + } + + public void setEquipmentCode(String equipmentCode) { + this.equipmentCode = equipmentCode; + } + + public String getEquipmentName() { + return equipmentName; + } + + public void setEquipmentName(String equipmentName) { + this.equipmentName = equipmentName; + } + + public BigDecimal getUnitWorkingHours() { + return unitWorkingHours; + } + + public void setUnitWorkingHours(BigDecimal unitWorkingHours) { + this.unitWorkingHours = unitWorkingHours; + } + + public String getWorkorderCodeSap() { + return workorderCodeSap; + } + + public void setWorkorderCodeSap(String workorderCodeSap) { + this.workorderCodeSap = workorderCodeSap; + } + + public Long getQuantitySplit() { + return quantitySplit; + } + + public void setQuantitySplit(Long quantitySplit) { + this.quantitySplit = quantitySplit; + } + + public Long getUseMan() { + return useMan; + } + + public void setUseMan(Long useMan) { + this.useMan = useMan; + } + + public BigDecimal getEfficiency() { + return efficiency; + } + + public void setEfficiency(BigDecimal efficiency) { + this.efficiency = efficiency; + } + + public String getWorkorderCode() { + return workorderCode; + } + + public void setWorkorderCode(String workorderCode) { + this.workorderCode = workorderCode; + } + + public String getWorkorderName() { + return workorderName; + } + + public void setWorkorderName(String workorderName) { + this.workorderName = workorderName; + } + + public String getMachineCode() { + return machineCode; + } + + public void setMachineCode(String machineCode) { + this.machineCode = machineCode; + } + + public String getTotalWorkTime() { + return totalWorkTime; + } + + public void setTotalWorkTime(String totalWorkTime) { + this.totalWorkTime = totalWorkTime; + } + + public String getFactoryCode() { + return factoryCode; + } + + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } +} \ No newline at end of file diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index 20f16bdb4..794c561ee 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java @@ -6,7 +6,9 @@ import java.util.Map; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartSeriesDto; +import com.op.mes.domain.dto.QuantityDto; import com.op.mes.domain.dto.SysFactoryDto; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.mes.ProOrderWorkorderDTO; @@ -82,6 +84,8 @@ public interface MesReportWorkMapper { String getTitleName(MesDailyReport mesDailyReport); + String getTitleNewName(MesDailyReportVo mesDailyReportVo); + List getWorkcenterList(MesDailyReport mesDailyReport); public void updateOrderWorkStatus(MesReportWork work); @@ -170,4 +174,10 @@ public interface MesReportWorkMapper { void updatePreReportAttr1(MesReportWork workOrder); MesReportWork getReportWorkHzAttr1(MesReportWork mesReportWork); + + List getDailyReportUp(MesDailyReportVo mesDailyReportVo); + + QuantityDto getRealQuantity(QuantityDto quantityDto); + + List getSumQuantity(QuantityDto quantityDto); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java index f2992d4a9..70b4984e5 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java @@ -11,6 +11,7 @@ import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.LineChartSeriesDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.domain.vo.DynamicColumnVo; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.system.api.domain.SysUser; import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.dto.MesPrepareDetailDTO; @@ -78,6 +79,7 @@ public interface IMesReportWorkService { public List getDailyReport(MesDailyReport mesDailyReport); String getTitleName(MesDailyReport mesDailyReport); + String getTitleNewName(MesDailyReportVo mesDailyReportVo); List getWorkcenterList(MesDailyReport mesDailyReport); @@ -131,4 +133,6 @@ public interface IMesReportWorkService { int deleteReportNow(String reportCode); R preReportRow(MesReportWork mesReportWork); + + List getDailyReportNew(MesDailyReportVo mesDailyReportVo); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index 5493cc9f9..de0972aa5 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -20,8 +20,10 @@ import com.op.common.security.utils.SecurityUtils; import com.op.mes.domain.*; import com.op.mes.domain.dto.LineChartDto; import com.op.mes.domain.dto.LineChartSeriesDto; +import com.op.mes.domain.dto.QuantityDto; import com.op.mes.domain.dto.SysFactoryDto; import com.op.mes.domain.vo.DynamicColumnVo; +import com.op.mes.domain.vo.MesDailyReportVo; import com.op.mes.service.IWCSInterfaceService; import com.op.system.api.RemoteSapService; import com.op.system.api.domain.SysUser; @@ -37,6 +39,10 @@ import org.springframework.stereotype.Service; import com.op.mes.mapper.MesReportWorkMapper; import com.op.mes.service.IMesReportWorkService; import org.springframework.util.CollectionUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; /** * 报工报表Service业务层处理 @@ -399,12 +405,100 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { return dtos; } + @Override + @DS("#header.poolName") + public List getDailyReportNew(MesDailyReportVo mesDailyReportVo){ + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String key = "#header.poolName"; + String factoryCode = request.getHeader(key.substring(8)).replace("ds_", ""); + + List dtos = mesReportWorkMapper.getDailyReportUp(mesDailyReportVo); + + for (MesDailyReportVo dto : dtos) { + dto.setFactoryCode(factoryCode); + dto.setProdType("蚊香"); + + QuantityDto quantityDto = new QuantityDto(); + String workorderCode = dto.getWorkorderCode(); + String machineCode = dto.getEquipmentCode(); + + quantityDto.setWorkorderCode(workorderCode); + quantityDto.setMachineCode(machineCode); + QuantityDto realQuantity = mesReportWorkMapper.getRealQuantity(quantityDto); + List sumQuantityList = mesReportWorkMapper.getSumQuantity(quantityDto); + QuantityDto sumQuantity = sumQuantityList.stream().max(Comparator.comparingLong(QuantityDto::getUseMan)).orElse(null); + + // 产量 + Long sumQua = 0L; + // 实际产量 + Long realQua = 0L; + // 实际工时 + BigDecimal workTime = BigDecimal.ZERO; + // 实际用人 + Long useMan = 0L; + if (realQuantity != null && sumQuantity != null) { + sumQua = sumQuantity.getQuantityFeedbackSum(); + realQua = realQuantity.getQuantityFeedbackSum(); + workTime = sumQuantity.getWorkTime(); + useMan = sumQuantity.getUseMan(); + dto.setQuantityAct(String.valueOf(sumQua)); + dto.setQuantityFeedback(String.valueOf(realQua)); + dto.setWorkTime(workTime); + dto.setManStandard(useMan.toString()); + + // 计算规格 + dto.setSpec(sumQua / realQua); + // 订单完成率 实际产量/计划产量 + BigDecimal completeRate = new BigDecimal(realQua) + .multiply(new BigDecimal("100.00")) + .divide(new BigDecimal(dto.getQuantitySplit()),2,BigDecimal.ROUND_HALF_UP); + dto.setCompleteRate(completeRate.toString()+"%"); + // 标准工时 产量/产线标准效率 + BigDecimal workTimeStandard = new BigDecimal(sumQua) + .divide(dto.getEfficiency(),1,BigDecimal.ROUND_HALF_UP); + dto.setWorkTimeStandard(workTimeStandard.toString()); + // 产线效率 标准工时/实际工时 + BigDecimal productivity = workTimeStandard + .multiply(new BigDecimal("100.00")) + .divide(workTime,2,BigDecimal.ROUND_HALF_UP); + dto.setProductivity(productivity.toString()+"%"); + // 总工时 实际用人*实际工时 + BigDecimal totalWorkTime = new BigDecimal(useMan) + .multiply(workTime); + dto.setTotalWorkTime(totalWorkTime.toString()); + // 标准人均效率 实际产量/标准用人/标准工时 + BigDecimal manAvgStandard = new BigDecimal(realQua) + .divide(new BigDecimal(dto.getUseMan()),2,BigDecimal.ROUND_HALF_UP) + .divide(workTimeStandard,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgStandard(manAvgStandard.toString()); + // 实际人均效率 实际产量/总工时 + BigDecimal manAvgActual = new BigDecimal(realQua) + .divide(totalWorkTime,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgActual(manAvgActual.toString()); + // 人均效率达成率 标准人均效率/实际人均效率 + BigDecimal manAvgDo = manAvgStandard + .multiply(new BigDecimal("100.00")) + .divide(manAvgActual,2,BigDecimal.ROUND_HALF_UP); + dto.setManAvgDo(manAvgDo.toString()+"%"); + } + + } + + return dtos; + } + @Override @DS("#header.poolName") public String getTitleName(MesDailyReport mesDailyReport) { return mesReportWorkMapper.getTitleName(mesDailyReport); } + @Override + @DS("#header.poolName") + public String getTitleNewName(MesDailyReportVo mesDailyReportVo) { + return mesReportWorkMapper.getTitleNewName(mesDailyReportVo); + } + @Override @DS("#header.poolName") public List getWorkcenterList(MesDailyReport mesDailyReport) { diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml index 5a2fb1aa7..7ebd9c154 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesReportWorkMapper.xml @@ -281,6 +281,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + +