Merge remote-tracking branch 'origin/master'

master
zhaoxiaolin 10 months ago
commit 9082322187

@ -51,7 +51,7 @@ public class wmsReportWork extends BaseEntity {
private String SAPstatus;
private String SAPmessage;
/** 生产工单编码 */
//已经过账的值
private String SAPquantity;
public String getSAPquantity() {

@ -1,5 +1,6 @@
package com.op.mes.controller;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -23,6 +24,7 @@ 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.system.api.domain.DataSourcePropertyDTO;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.device.EquEquipmentDTO;
@ -147,12 +149,12 @@ public class MesReportWorkController extends BaseController {
@RequiresPermissions("mes:reportWork:edit")
@PutMapping("/reportSap")
public AjaxResult reportSap(@RequestBody MesReportWork mesReportWork) {
R r = mesReportWorkService.reportSap(mesReportWork);
if(r.getCode()==200){
return AjaxResult.success();
}else{
return AjaxResult.error("报工失败:"+r.getMsg());
}
R r = mesReportWorkService.reportSap(mesReportWork);
if(r.getCode()==200){
return AjaxResult.success();
}else{
return AjaxResult.error("报工失败:"+r.getMsg());
}
}
/**
@ -384,124 +386,175 @@ public class MesReportWorkController extends BaseController {
}
}
/**
*
*/
@GetMapping("/getMesListUser")
public TableDataInfo getMesListUser(SysUser sysUser) {
startPage();
List<SysUser> list = mesReportWorkService.getMesListUser(sysUser);
return getDataTable(list);
@GetMapping("/getMachineProductionList")
public List<Map<String, Object>> getMachineProductionList(MesMachineReport mesMachineReport) {
List<DynamicColumnVo> proNames = this.getMachineProductionTitle(mesMachineReport);
mesMachineReport.setProductNames(proNames);
List<Map<String, Object>> list = mesReportWorkService.getMachineProductionList(mesMachineReport);
return list;
}
/**
*
*/
@GetMapping("/getMesListWorkOrder")
public TableDataInfo getMesListWorkOrder(ProOrderWorkorderDTO proOrderWorkorderDTO) {
startPage();
List<ProOrderWorkorderDTO> list = mesReportWorkService.getMesListWorkOrder(proOrderWorkorderDTO);
return getDataTable(list);
@GetMapping("/getMachineProductionTitle")
public List<DynamicColumnVo> getMachineProductionTitle(MesMachineReport mesMachineReport) {
List<DynamicColumnVo> list = mesReportWorkService.getMachineProductionTitle(mesMachineReport);
return list;
}
/**
* 线
*/
@GetMapping("/getMesListEquip")
public TableDataInfo getMesListEquip(EquEquipmentDTO equEquipmentDTO) {
startPage();
List<EquEquipmentDTO> list = mesReportWorkService.getMesListEquip(equEquipmentDTO);
return getDataTable(list);
}
@PostMapping("/getMachineProductionExport")
public void getMachineProductionExport(HttpServletResponse response,MesMachineReport mesMachineReport) {
List<DynamicColumnVo> proNames = this.getMachineProductionTitle(mesMachineReport);
mesMachineReport.setProductNames(proNames);
List<Map<String, Object>> list = mesReportWorkService.getMachineProductionList(mesMachineReport);
@PutMapping("/getBatchList")
public List<ProOrderWorkorder> getBatchList(@RequestBody ProOrderWorkorder ProOrderWorkorder) {
return mesReportWorkService.getBatchList(ProOrderWorkorder);
}
String title = "表主题";
ArrayList<ExcelCol> excelCols = new ArrayList<>();
excelCols.add(new ExcelCol("日期","date",20));
for (DynamicColumnVo column : proNames) {
excelCols.add(new ExcelCol(column.getLabel(), column.getCode(), 20));
}
excelCols.add(new ExcelCol("总产量","totalQuantity",20));
/**获取母子报工记录(废弃)---改为2.0查询各级报工详细列表**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getReportList")
public List getReportList(MesReportWork mesReportWork) {
List<MesReportWork> rlist = mesReportWorkService.getReportList(mesReportWork);
return rlist;
}
String titleName = "成型机产量统计报表";
SXSSFWorkbook workbook = null;
/**2.0查询各级报工详细列表**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getAllLevelReportList")
public List getAllLevelReportList(MesReportWork mesReportWork) {
List<MesReportWorkTabs> rlist = mesReportWorkService.getAllLevelReportList(mesReportWork);
return rlist;
try {
//设置响应头
response.setHeader("Content-disposition",
"attachment; filename="+ titleName);
response.setContentType("application/octet-stream;charset=UTF-8");
ServletOutputStream outputStream = response.getOutputStream();
//调用工具类
workbook = ExcelMapUtil.initWorkbook(titleName, null, excelCols, list);
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
}finally {
if (workbook!=null){
workbook.dispose();
}
}
}
@PostMapping("/submitReportPS")
public AjaxResult submitReportPS(@RequestBody List<MesReportWork> mesReportWorks) {
return toAjax(mesReportWorkService.submitReportPS(mesReportWorks));
}
/**
*
*/
@GetMapping("/getMesListUser")
public TableDataInfo getMesListUser(SysUser sysUser) {
startPage();
List<SysUser> list = mesReportWorkService.getMesListUser(sysUser);
return getDataTable(list);
}
@GetMapping("/getPrepareList")
public List getPrepareList(MesPrepareDetail mesPrepareDetail) {
List<MesPrepareDetail> rlist = mesReportWorkService.getPrepareList(mesPrepareDetail);
return rlist;
}
/**
*
*/
@GetMapping("/getMesListWorkOrder")
public TableDataInfo getMesListWorkOrder(ProOrderWorkorderDTO proOrderWorkorderDTO) {
startPage();
List<ProOrderWorkorderDTO> list = mesReportWorkService.getMesListWorkOrder(proOrderWorkorderDTO);
return getDataTable(list);
}
/**获取报工打印信息**/
@PutMapping("/getPutInOrderList")
public AjaxResult getPutInOrderList(@RequestBody MesReportWork mesReportWorks) {
return success(mesReportWorkService.getPutInOrderList(mesReportWorks));
}
/**
* 线
*/
@GetMapping("/getMesListEquip")
public TableDataInfo getMesListEquip(EquEquipmentDTO equEquipmentDTO) {
startPage();
List<EquEquipmentDTO> list = mesReportWorkService.getMesListEquip(equEquipmentDTO);
return getDataTable(list);
}
public static void main(String args[]){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
try {
Date start = dateFormat.parse("2023-10-12 09:00:00");
Date end = dateFormat.parse("2023-10-13 18:00:00");
@PutMapping("/getBatchList")
public List<ProOrderWorkorder> getBatchList(@RequestBody ProOrderWorkorder ProOrderWorkorder) {
return mesReportWorkService.getBatchList(ProOrderWorkorder);
}
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
/**获取母子报工记录(废弃)---改为2.0查询各级报工详细列表**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getReportList")
public List getReportList(MesReportWork mesReportWork) {
List<MesReportWork> rlist = mesReportWorkService.getReportList(mesReportWork);
return rlist;
}
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
while (tempStart.before(tempEnd)) {
System.out.println(dateFormat.format(tempStart.getTime()));
tempStart.add(Calendar.HOUR_OF_DAY, 1);
/**2.0查询各级报工详细列表**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getAllLevelReportList")
public List getAllLevelReportList(MesReportWork mesReportWork) {
List<MesReportWorkTabs> rlist = mesReportWorkService.getAllLevelReportList(mesReportWork);
return rlist;
}
@PostMapping("/submitReportPS")
public AjaxResult submitReportPS(@RequestBody List<MesReportWork> mesReportWorks) {
return toAjax(mesReportWorkService.submitReportPS(mesReportWorks));
}
@GetMapping("/getPrepareList")
public List getPrepareList(MesPrepareDetail mesPrepareDetail) {
List<MesPrepareDetail> rlist = mesReportWorkService.getPrepareList(mesPrepareDetail);
return rlist;
}
/**获取报工打印信息**/
@PutMapping("/getPutInOrderList")
public AjaxResult getPutInOrderList(@RequestBody MesReportWork mesReportWorks) {
return success(mesReportWorkService.getPutInOrderList(mesReportWorks));
}
public static void main(String args[]){
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
try {
Date start = dateFormat.parse("2023-10-12 09:00:00");
Date end = dateFormat.parse("2023-10-13 18:00:00");
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
while (tempStart.before(tempEnd)) {
System.out.println(dateFormat.format(tempStart.getTime()));
tempStart.add(Calendar.HOUR_OF_DAY, 1);
}
} catch (ParseException e) {
e.printStackTrace();
}
} catch (ParseException e) {
e.printStackTrace();
}
}
/**获取最新领料单**/
@PostMapping("/getNewPrepareData")
public List<MesPrepareDetailDTO> getNewPrepareData(@RequestBody MesPrepareDetail mesPrepareDetail) {
return mesReportWorkService.getNewPrepareData(mesPrepareDetail);
}
/**获取最新领料单**/
@PostMapping("/getNewPrepareData")
public List<MesPrepareDetailDTO> getNewPrepareData(@RequestBody MesPrepareDetail mesPrepareDetail) {
return mesReportWorkService.getNewPrepareData(mesPrepareDetail);
}
/**删除新增的报工物料组成**/
@DeleteMapping("/deleteBomRowNow/{id}")
public AjaxResult deleteBomRowNow(@PathVariable String id) {
return toAjax(mesReportWorkService.deleteBomRowNow(id));
}
@DeleteMapping("/deleteBomRowNow/{id}")
public AjaxResult deleteBomRowNow(@PathVariable String id) {
return toAjax(mesReportWorkService.deleteBomRowNow(id));
}
//获取仓库下拉列表
@GetMapping("/getWarehouseList")
public List<MesReportWorkConsume> getWarehouseList(MesReportWorkConsume workConsume) {
List<MesReportWorkConsume> rlist = mesReportWorkService.getWarehouseList(workConsume);
return rlist;
}
@PostMapping("/addDatasource")
public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
DataSourceProperty dataSourceProperty = new DataSourceProperty();
BeanUtils.copyProperties(dto,dataSourceProperty);
dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
return R.ok();
}
@GetMapping("/getWarehouseList")
public List<MesReportWorkConsume> getWarehouseList(MesReportWorkConsume workConsume) {
List<MesReportWorkConsume> rlist = mesReportWorkService.getWarehouseList(workConsume);
return rlist;
}
@PostMapping("/removeDatasource")
public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
DataSourceProperty dataSourceProperty = new DataSourceProperty();
BeanUtils.copyProperties(dto,dataSourceProperty);
dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
return R.ok();
}
@PostMapping("/addDatasource")
public R addDatasource(@RequestBody DataSourcePropertyDTO dto){
DataSourceProperty dataSourceProperty = new DataSourceProperty();
BeanUtils.copyProperties(dto,dataSourceProperty);
dynamicDatasourceCreator.createDynamicDataSource(dataSourceProperty);
return R.ok();
}
@PostMapping("/removeDatasource")
public R removeDatasource(@RequestBody DataSourcePropertyDTO dto){
DataSourceProperty dataSourceProperty = new DataSourceProperty();
BeanUtils.copyProperties(dto,dataSourceProperty);
dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName());
return R.ok();
}
}

@ -0,0 +1,97 @@
package com.op.mes.domain;
import com.op.common.core.web.domain.BaseEntity;
import com.op.mes.domain.vo.DynamicColumnVo;
import java.util.List;
/**
*
* @date 2024-4-22
*/
public class MesMachineReport extends BaseEntity {
private static final long serialVersionUID = 1L;
private String productCode; //产品编码
private String productName; //产品名称
private String quantity; //数量
private String unit; //单位
private String ymd; //年月日
private String productDateStart; //查询开始时间
private String productDateEnd; //查询结束时间
private String pduCode; //数据唯一键
private List<DynamicColumnVo> productNames; //产品名称列表
public String getProductCode() {
return productCode;
}
public void setProductCode(String productCode) {
this.productCode = productCode;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getYmd() {
return ymd;
}
public void setYmd(String ymd) {
this.ymd = ymd;
}
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 List<DynamicColumnVo> getProductNames() {
return productNames;
}
public void setProductNames(List<DynamicColumnVo> productNames) {
this.productNames = productNames;
}
public String getPduCode() {
return pduCode;
}
public void setPduCode(String pduCode) {
this.pduCode = pduCode;
}
}

@ -0,0 +1,25 @@
package com.op.mes.domain.vo;
public class DynamicColumnVo {
private String label;
private String code;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}

@ -155,4 +155,6 @@ public interface MesReportWorkMapper {
List<MesReportWork> getLineProData(MesReportWork dto);
List<MesReportWork> getProductProData(MesReportWork dto);
List<MesMachineReport> getMachineProductionList(MesMachineReport mesMachineReport);
}

@ -2,6 +2,7 @@ package com.op.mes.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.op.common.core.domain.R;
import com.op.common.core.web.domain.AjaxResult;
@ -9,6 +10,7 @@ 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.system.api.domain.SysUser;
import com.op.system.api.domain.device.EquEquipmentDTO;
import com.op.system.api.domain.dto.MesPrepareDetailDTO;
@ -82,6 +84,7 @@ public interface IMesReportWorkService {
LineChartDto getLineChartData(MesReportProduction mesReportProduction);
List<HashMap> getHourProductionList(MesHourReport mesHourReport);
List<Map<String, Object>> getMachineProductionList(MesMachineReport mesMachineReport);
List<MesShift> getProShifts();
@ -122,4 +125,6 @@ public interface IMesReportWorkService {
List<MesReportWork> getProductProData(MesReportWork dto);
LineChartDto getMonthProData(MesReportProduction mesReportProduction);
List<DynamicColumnVo> getMachineProductionTitle(MesMachineReport mesMachineReport);
}

@ -4,10 +4,14 @@ import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson2.JSONArray;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.google.common.collect.Lists;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.ServletUtils;
@ -16,6 +20,7 @@ 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.service.IWCSInterfaceService;
import com.op.system.api.RemoteSapService;
import com.op.system.api.domain.SysUser;
@ -51,6 +56,7 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
@Autowired
private IWCSInterfaceService iWCSInterfaceService;
/**
*
*
@ -540,6 +546,99 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return hourPros;
}
@Override
@DS("#header.poolName")
public List<DynamicColumnVo> getMachineProductionTitle(MesMachineReport mesMachineReport) {
// 开始日期
String start = mesMachineReport.getProductDateStart();
String end = mesMachineReport.getProductDateEnd();
// 查询出来时间区间
List<String> listDate = getDateInterval(start,end);
//查询sql数据
List<MesMachineReport> data = mesReportWorkMapper.getMachineProductionList(mesMachineReport);
//根据产品编码分组
Map<String, List<MesMachineReport>> map = data.stream().collect(Collectors.groupingBy(MesMachineReport::getProductCode));
//产品名称列表
List<DynamicColumnVo> dynamicColumn = new ArrayList<>();
map.forEach((k,v) -> {
DynamicColumnVo dynamicColumnVo = new DynamicColumnVo();
String productNameSet = v.stream()
.map(MesMachineReport::getProductName)
.distinct()
.collect(Collectors.joining(", "));
dynamicColumnVo.setCode(k);
dynamicColumnVo.setLabel(productNameSet);
dynamicColumn.add(dynamicColumnVo);
});
return dynamicColumn;
}
@Override
@DS("#header.poolName")
public List<Map<String, Object>> getMachineProductionList(MesMachineReport mesMachineReport) {
// 开始日期
String start = mesMachineReport.getProductDateStart();
String end = mesMachineReport.getProductDateEnd();
// 查询出来时间区间
List<String> listDate = getDateInterval(start,end);
List<DynamicColumnVo> allProducts = mesMachineReport.getProductNames();
List<MesMachineReport> dbMProductList = mesReportWorkMapper.getMachineProductionList(mesMachineReport);
List<Map<String, Object>> results = listDate.stream()
.map(date -> {
Map<String, Object> row = new HashMap<>();
row.put("date", date);
//对于每个日期,收集该日期下所有产品的产量数据
Map<String, String> dailyProductQuantities = dbMProductList.stream()
.filter(MesMachineReport -> MesMachineReport.getYmd().equals(date))
.collect(Collectors.toMap(
MesMachineReport::getProductCode,
MesMachineReport::getQuantity
));
// 遍历所有产品如果dailyProduct不存在此产品添加产品产量设为空
for (DynamicColumnVo product : allProducts) {
String productCode = product.getCode();
dailyProductQuantities.putIfAbsent(productCode, "0");
}
row.putAll(dailyProductQuantities);
// 计算并添加当日总产量
int totalQuantity = dailyProductQuantities.values().stream()
.mapToInt(Integer::parseInt)
.sum();
row.put("totalQuantity", totalQuantity);
return row;
}).collect(Collectors.toList());
return results;
}
private List<String> getDateInterval(String start, String end) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<String> dateList = Lists.newArrayList();
LocalDate localStart = LocalDate.parse(start,fmt);
LocalDate localEnd = LocalDate.parse(end,fmt);
LocalDate nextDate = localStart;
do {
String nextDateStr = nextDate.format(fmt);
dateList.add(nextDateStr);
nextDate = nextDate.plusDays(1);
}while (nextDate.compareTo(localEnd) <= 0);
return dateList;
}
/**两个日期之间的所有日期**/
public static List<String> getDays(String startTime,String endTime) {
@ -618,9 +717,8 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
}
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Calendar calendar = Calendar.getInstance();
Date now = calendar.getTime();
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date firstDayOfMonth = calendar.getTime();

@ -740,6 +740,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
GROUP BY pow.product_code,pow.product_name
</select>
<select id="getMachineProductionList" resultType="com.op.mes.domain.MesMachineReport">
SELECT
concat(pow.product_code,mt.ymd) pduCode,
COUNT(0) quantity,
pow.product_code productCode,
pow.product_name productName,
mt.ymd ymd
FROM
(
SELECT CONVERT( VARCHAR ( 10 ), mtr.update_time, 20 ) ymd,mtr.OrderCode
FROM mes_material_transfer_result mtr
LEFT JOIN base_equipment equ ON mtr.equipmentCode = equ.equipment_code
WHERE
rfid_status = '1'
AND equ.equipment_type_code = 'equ_type_cxj'
<if test="productDateStart != null "> and CONVERT(varchar(30),mtr.update_time, 120) &gt;= #{productDateStart}</if>
<if test="productDateEnd != null "> and #{productDateEnd} &gt; CONVERT(varchar(30),mtr.update_time, 120)</if>
) mt
LEFT JOIN pro_order_workorder pow ON pow.workorder_id = mt.OrderCode
WHERE pow.order_code IS NOT NULL
<if test="productCode != null and productCode != ''">
and pow.product_code like concat('%', #{productCode}, '%')
</if>
<if test="productName != null and productName != ''">
and pow.product_name like concat('%', #{productName}, '%')
</if>
GROUP BY
mt.ymd,
pow.product_code,
pow.product_name
</select>
<insert id="insertMesReportWork" parameterType="MesReportWork">
insert into mes_report_work

@ -323,12 +323,6 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService {
@DS("#header.poolName")
public List<wmsReportWork> getReportList(wmsReportWork mesReportWork) {
List<wmsReportWork> rlist = wmsProductPutMapper.getReportList(mesReportWork);
// //加上已经过账的数量reportCode work_order batch_number batch
// for (wmsReportWork wmsReportWork:
// rlist) {
// String SAPquantity= wmsProductPutMapper.selectWmsProductPutNum(wmsReportWork);
// wmsReportWork.setSAPquantity(SAPquantity);
// }
return rlist;
}

@ -310,7 +310,8 @@
mes_report_work.product_name productName,
CONVERT(date, GETDATE()) AS productDate,
wms_product_put.SAP_status SAPstatus,
wms_product_put.SAP_message SAPmessage
wms_product_put.SAP_message SAPmessage,
CASE WHEN wms_product_put.SAP_status = 1 THEN wms_product_put.put_quantity ELSE 0 END AS SAPquantity
FROM
mes_report_work
LEFT JOIN pro_order_workorder ON mes_report_work.workorder_code= pro_order_workorder.workorder_code
@ -326,10 +327,7 @@
mes_report_work.end_report
</select>
<!-- <select id="selectWmsProductPutNum" resultType="java.lang.String">-->
<!-- </select>-->
<select id="selectWmsProductPutSAPByProDuct" parameterType="String" resultMap="WmsProductPutResult">
SELECT DISTINCT
wms_product_put.id,

Loading…
Cancel
Save