Merge remote-tracking branch 'origin/master'

master
shaoyong 6 months ago
commit b85de0320f

@ -0,0 +1,36 @@
package com.op.mes.controller;
import com.op.mes.domain.H5;
import com.op.mes.service.H5ApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.Max;
import java.util.List;
/**
* H5
*
* @author ruoyi
* @date 2024-07-04
*/
@RestController
@RequestMapping("/h5")
public class H5ApiController {
@Autowired
private H5ApiService h5ApiService;
@GetMapping("/dailyProductDetil")
public List<H5> list(H5 h5)
{
String workTime=h5.getFeedbackTime();
List<H5> list = h5ApiService.dailyProductDetil(workTime);
return list;
}
}

@ -0,0 +1,149 @@
package com.op.mes.domain;
public class H5 {
private String workOrderCode;
private String lineName;
private String productName;
private String category;
private String specifications;
private String StandardStaffing;
private String actualEmployment;
private String productionDuration;
private int planProduction;
private int production;
private String hourlyProduction;
private String standardEfficiency;
private String actualEfficiency;
private String efficiencyAcRate;
private String feedbackTime;
private String parentOrder;
public int getPlanProduction() {
return planProduction;
}
public void setPlanProduction(int planProduction) {
this.planProduction = planProduction;
}
public String getWorkOrderCode() {
return workOrderCode;
}
public void setWorkOrderCode(String workOrderCode) {
this.workOrderCode = workOrderCode;
}
public String getParentOrder() {
return parentOrder;
}
public void setParentOrder(String parentOrder) {
this.parentOrder = parentOrder;
}
public String getFeedbackTime() {
return feedbackTime;
}
public void setFeedbackTime(String feedbackTime) {
this.feedbackTime = feedbackTime;
}
public String getLineName() {
return lineName;
}
public void setLineName(String lineName) {
this.lineName = lineName;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getSpecifications() {
return specifications;
}
public void setSpecifications(String specifications) {
this.specifications = specifications;
}
public String getStandardStaffing() {
return StandardStaffing;
}
public void setStandardStaffing(String standardStaffing) {
StandardStaffing = standardStaffing;
}
public String getActualEmployment() {
return actualEmployment;
}
public void setActualEmployment(String actualEmployment) {
this.actualEmployment = actualEmployment;
}
public String getProductionDuration() {
return productionDuration;
}
public void setProductionDuration(String productionDuration) {
this.productionDuration = productionDuration;
}
public int getProduction() {
return production;
}
public void setProduction(int production) {
this.production = production;
}
public String getHourlyProduction() {
return hourlyProduction;
}
public void setHourlyProduction(String hourlyProduction) {
this.hourlyProduction = hourlyProduction;
}
public String getStandardEfficiency() {
return standardEfficiency;
}
public void setStandardEfficiency(String standardEfficiency) {
this.standardEfficiency = standardEfficiency;
}
public String getActualEfficiency() {
return actualEfficiency;
}
public void setActualEfficiency(String actualEfficiency) {
this.actualEfficiency = actualEfficiency;
}
public String getEfficiencyAcRate() {
return efficiencyAcRate;
}
public void setEfficiencyAcRate(String efficiencyAcRate) {
this.efficiencyAcRate = efficiencyAcRate;
}
}

@ -0,0 +1,21 @@
package com.op.mes.mapper;
import com.op.mes.domain.H5;
import java.util.List;
public interface H5ApiMapper {
/**
*
* @param h5
* @return
*/
public List<H5> selectMesLineProdceList(H5 h5);
/**
*
* @param h5
* @return
*/
public List<H5> selectMesLineProsdceLists(H5 h5);
}

@ -0,0 +1,9 @@
package com.op.mes.service;
import com.op.mes.domain.H5;
import java.util.List;
public interface H5ApiService {
List<H5> dailyProductDetil(String workTime);
}

@ -0,0 +1,31 @@
package com.op.mes.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.mes.domain.H5;
import com.op.mes.mapper.H5ApiMapper;
import com.op.mes.service.H5ApiService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class H5ApiServiceImpl implements H5ApiService {
@Autowired
private H5ApiMapper h5ApiMapper;
@Override
@DS("#header.poolName")
public List<H5> dailyProductDetil(String workTime) {
//查询当天的生产情况
H5 h5=new H5();
h5.setFeedbackTime(workTime);
//母单报工信息
List<H5> h5List=h5ApiMapper.selectMesLineProdceList(h5);
return h5List;
}
}

@ -0,0 +1,133 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.op.mes.mapper.H5ApiMapper">
<resultMap type="H5" id="H5Result">
<result property="workOrderCode" column="workorder_code"/>
<result property="lineName" column="machine_name"/>
<result property="productName" column="product_name"/>
<result property="category" column="category"/>
<result property="specifications" column="umrez"/>
<result property="StandardStaffing" column="man_standar"/>
<result property="actualEmployment" column="use_man"/>
<result property="productionDuration" column="work_time"/>
<result property="planProduction" column="plan_production"/>
<result property="production" column="quantity_feedback"/>
<result property="parentOrder" column="parent_order"/>
<result property="standardEfficiency" column="standardEfficiency"/>
<result property="actualEfficiency" column="actualEfficiency"/>
<result property="efficiencyAcRate" column="efficiencyAcRate"/>
</resultMap>
<select id="selectMesLineProdceList" parameterType="H5" resultMap="H5Result">
SELECT
mrw.workorder_code,
mrw.machine_name,
mrw.product_code,
mrw.product_name,
bpa.category,
bp.umrez,
SUM ( mrw.quantity ) AS plan_production,
SUM ( mrw.quantity_feedback ) AS quantity_feedback,
MAX(A.quantity_s) AS quantity_s,
MAX(A.quantity_s_total) AS quantity_s_total,
bpa.man_standar,
MAX(A.use_man) AS use_man,
SUM(A.work_time) AS work_time,
mrw.parent_order ,
bpa.iei,
FORMAT(ROUND((bpa.iei / bp.umrez / bpa.man_standar), 1), '0.#') AS standardEfficiency,
FORMAT(ROUND(
CASE
WHEN MAX(A.use_man) = 0 OR SUM(A.work_time) = 0 THEN NULL
ELSE SUM(mrw.quantity_feedback) / MAX(A.use_man) / SUM(A.work_time)
END,
1
), '0.#') AS actualEfficiency,
FORMAT(
CASE
WHEN (bpa.iei / bp.umrez / bpa.man_standar) = 0
THEN NULL
ELSE (CAST(
ROUND(
CASE
WHEN MAX(A.use_man) = 0 OR SUM(A.work_time) = 0 THEN NULL
ELSE SUM(mrw.quantity_feedback) / MAX(A.use_man) / SUM(A.work_time)
END,
1
) AS DECIMAL(10,1))
/ CAST(
ROUND((bpa.iei / bp.umrez / bpa.man_standar), 1) AS DECIMAL(10,1)
) * 100
)
END,
'0.#'
) + '%' AS efficiencyAcRate
FROM
[dbo].[mes_report_work] mrw
LEFT JOIN base_product_attached bpa ON bpa.product_code = RIGHT ( mrw.product_code, 11 )
LEFT JOIN base_product bp ON bp.product_code = mrw.product_code
LEFT JOIN (
SELECT
mrws.workorder_code,
mrws.parent_order,
MAX(mrws.use_man) AS use_man,
MAX(pow.quantity_split) AS quantity_s,
SUM(mrws.quantity_feedback) AS quantity_s_total,
SUM (mrws.work_time ) AS work_time
FROM
[dbo].[mes_report_work] mrws
LEFT JOIN pro_order_workorder pow ON mrws.workorder_code=pow.workorder_code
WHERE
CAST (mrws.feedback_time AS DATE ) = #{feedbackTime}
AND mrws.parent_order != '0'
GROUP BY
mrws.workorder_code,
mrws.parent_order
) A ON A.parent_order= mrw.workorder_code
WHERE
CAST ( mrw.feedback_time AS DATE ) = #{feedbackTime}
AND mrw.parent_order = '0'
GROUP BY
mrw.workorder_code,
mrw.machine_name,
mrw.product_code,
mrw.product_name,
bpa.category,
bp.umrez,
bpa.man_standar,
mrw.use_man,
mrw.parent_order,
bpa.iei
ORDER BY mrw.machine_name ASC
</select>
<select id="selectMesLineProsdceLists" parameterType="H5" resultMap="H5Result">
SELECT
mrw.workorder_code,
mrw.machine_name,
mrw.product_code,
SUM ( mrw.quantity ) AS plan_production,
SUM ( mrw.quantity_feedback ) AS quantity_feedback,
mrw.use_man,
SUM ( mrw.work_time ) AS work_time,
mrw.parent_order
FROM
[dbo].[mes_report_work] mrw
LEFT JOIN base_product_attached bpa ON bpa.product_code = RIGHT(mrw.product_code, 11)
LEFT JOIN base_product bp ON bp.product_code = mrw.product_code
<where>
<if test="feedbackTime != null and feedbackTime != ''">
CAST ( mrw.feedback_time AS DATE ) = #{feedbackTime}
</if>
AND mrw.parent_order != '0'
</where>
GROUP BY
mrw.workorder_code,
mrw.machine_name,
mrw.product_code,
mrw.use_man,
mrw.parent_order;
</select>
</mapper>

@ -1,5 +1,6 @@
package com.op.open.controller;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.op.common.core.domain.R;

@ -1,13 +1,10 @@
package com.op.open.service;
import com.op.common.core.domain.R;
import com.op.common.core.web.domain.AjaxResult;
import com.op.system.api.domain.device.EquRepairOrderDTO;
import com.op.system.api.domain.dto.WCSDTO;
import com.op.system.api.domain.dto.WechartDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.MesReportWorkDTO;
import com.op.system.api.domain.quality.QcCheckTaskDTO;
import com.op.system.api.domain.quality.QcCheckTaskProduceDTO;
import java.util.List;

@ -37,10 +37,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

@ -5,11 +5,14 @@ import java.time.format.DateTimeFormatter;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONObject;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.StringUtils;
import com.op.quality.domain.OACheckTaskDTO;
import com.op.quality.domain.QcCheckTaskIncome;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
@ -141,4 +144,17 @@ public class QcCheckTaskInventoryController extends BaseController {
qcCheckTaskInventoryService.createCCTask();
return R.ok();
}
//给oa提供的发起库存检验接口
@PostMapping("/createCCTaskFromOA")
public AjaxResult createCCTaskFromOA(@RequestBody OACheckTaskDTO dto) {
logger.info("oa发起库存检验参数"+ JSONObject.toJSONString(dto));
if(StringUtils.isBlank(dto.getFactoryCode())){
error("[factoryCode is null]");
}
if(CollectionUtils.isEmpty(dto.getDetail())){
error("[detail is null]");
}
return qcCheckTaskInventoryService.createCCTaskFromOA(dto);
}
}

@ -487,5 +487,12 @@ public class QcStaticTableController extends BaseController {
}
}
}
/**
* ----
**/
@GetMapping("/getTableHzTitle")
@Log(title = "检验分类汇总", businessType = BusinessType.QUERY)
public QcStaticTable getTableHzTitle(QcStaticTable qcStaticTable) {
return qcStaticTableService.getTableHzTitle(qcStaticTable);
}
}

@ -0,0 +1,104 @@
package com.op.quality.domain;
import com.op.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* oa
*
* @author Open Platform
* @date 2023-10-31
*/
public class OACheckTaskDTO extends BaseEntity {
private static final long serialVersionUID = 1L;
//申请单号
private String applNo;
/**
*
*/
private String checkManCode;
/**
*
*/
private String checkManName;
/**
* QC
**/
private String qcMgr;
/**
*
**/
private String zlMgr;
private String factoryCode;
private int taskNum;
public int getTaskNum() {
return taskNum;
}
public void setTaskNum(int taskNum) {
this.taskNum = taskNum;
}
//任务明细
private List<QcCheckTaskInventory> detail;
public String getFactoryCode() {
return factoryCode;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}
public String getApplNo() {
return applNo;
}
public void setApplNo(String applNo) {
this.applNo = applNo;
}
public String getCheckManCode() {
return checkManCode;
}
public void setCheckManCode(String checkManCode) {
this.checkManCode = checkManCode;
}
public String getCheckManName() {
return checkManName;
}
public void setCheckManName(String checkManName) {
this.checkManName = checkManName;
}
public String getQcMgr() {
return qcMgr;
}
public void setQcMgr(String qcMgr) {
this.qcMgr = qcMgr;
}
public String getZlMgr() {
return zlMgr;
}
public void setZlMgr(String zlMgr) {
this.zlMgr = zlMgr;
}
public List<QcCheckTaskInventory> getDetail() {
return detail;
}
public void setDetail(List<QcCheckTaskInventory> detail) {
this.detail = detail;
}
}

@ -110,6 +110,24 @@ public class QcStaticTable extends BaseEntity {
private String[] projectNoArray;
private BigDecimal upperDiff;
private BigDecimal downDiff;
private List<String> columns1;
private List<String> columns2;
public List<String> getColumns1() {
return columns1;
}
public void setColumns1(List<String> columns1) {
this.columns1 = columns1;
}
public List<String> getColumns2() {
return columns2;
}
public void setColumns2(List<String> columns2) {
this.columns2 = columns2;
}
public String getIncomeTimeStr() {
return incomeTimeStr;

@ -81,4 +81,8 @@ public interface QcStaticTableMapper {
QcStaticTable getUpAndDown(QcStaticTable qcStaticTable);
@MapKey("detailId")
Map<String, QcStaticTable> defectMap(QcStaticTable qcStaticTable);
List<String> getTableHzTitle(QcStaticTable qcStaticTable);
List<String> getTableHzTitle2(QcStaticTable qcStaticTable);
}

@ -3,6 +3,7 @@ package com.op.quality.service;
import java.util.List;
import com.op.common.core.web.domain.AjaxResult;
import com.op.quality.domain.OACheckTaskDTO;
import com.op.quality.domain.QcCheckTaskIncome;
import com.op.quality.domain.QcCheckTaskInventory;
@ -64,4 +65,6 @@ public interface IQcCheckTaskInventoryService {
List<QcCheckTaskIncome> getPutInOrder(QcCheckTaskInventory qcCheckTaskInventory);
AjaxResult createCCTask();
AjaxResult createCCTaskFromOA(OACheckTaskDTO dto);
}

@ -49,4 +49,6 @@ public interface IQcStaticTableService {
QcStaticTable getDLTableCPKInfo(QcStaticTable qcStaticTable);
List<QcStaticTable> getProjectList(String checkType);
QcStaticTable getTableHzTitle(QcStaticTable qcStaticTable);
}

@ -28,8 +28,6 @@ import com.op.system.api.RemoteUserService;
import com.op.system.api.domain.SysNoticeGroup;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.dto.WechartDTO;
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
import com.op.system.api.domain.quality.QcUserMaterialDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -386,6 +384,20 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer
return success();
}
@Override
public AjaxResult createCCTaskFromOA(OACheckTaskDTO dto) {
List<QcCheckTaskInventory> dtos = dto.getDetail();
int m=0;
for(QcCheckTaskInventory ccTask:dtos){
ccTask.setAttr1(dto.getApplNo());//申请编码
ccTask.setCheckType("checkTypeCC");//库存检验
ccTask.setFactoryCode(dto.getFactoryCode());
m += insertQcCheckTaskInventory(ccTask);
}
logger.info("++++++++++++oa发起仓库检验任务生成" + m + "++++++++++++++");
return success();
}
public void createCCFunc(String poolName){
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
QcCheckTaskInventory qoPutIn = new QcCheckTaskInventory();

@ -221,12 +221,17 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
if (hz1 != null) {
dtoMap.put("todaySample", hz1.getSampleQuality().replaceAll("\\..*", ""));
dtoMap.put("todayNoOk", hz1.getNoOkQuality().replaceAll("\\..*", ""));
BigDecimal tOkRate = (new BigDecimal(hz1.getSampleQuality())
.subtract(new BigDecimal(hz1.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz1.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("todayOkRate", tOkRate + "%");
if(!hz1.getSampleQuality().equals("0.00")){
BigDecimal tOkRate = (new BigDecimal(hz1.getSampleQuality())
.subtract(new BigDecimal(hz1.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz1.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("todayOkRate", tOkRate + "%");
}else{
dtoMap.put("todayOkRate", "0%");
}
}
qcInterface.setYmdType("mm");
@ -239,12 +244,16 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
QcInterface hz2 = qcInterfaceMapper.getProduceHz(qcInterface);
if (hz2 != null) {
dtoMap.put("monthNoOk", hz2.getNoOkQuality().replaceAll("\\..*", ""));
BigDecimal tOkRate2 = (new BigDecimal(hz2.getSampleQuality())
.subtract(new BigDecimal(hz2.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz2.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("monthOkRate", tOkRate2 + "%");
if(!hz2.getSampleQuality().equals("0.00")){
BigDecimal tOkRate2 = (new BigDecimal(hz2.getSampleQuality())
.subtract(new BigDecimal(hz2.getNoOkQuality()))
)
.multiply(new BigDecimal(100))
.divide(new BigDecimal(hz2.getSampleQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("monthOkRate", tOkRate2 + "%");
}else{
dtoMap.put("monthOkRate", "0%");
}
}
// /**质量看板测试开始**/
// dtoMap.put("todayPro", "3800");

@ -783,6 +783,23 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService {
return qcStaticTableMapper.getProjectList(checkType);
}
@Override
@DS("#header.poolName")
public QcStaticTable getTableHzTitle(QcStaticTable qcStaticTable) {
QcStaticTable dto = new QcStaticTable();
qcStaticTable.setDataType("unqualified_remark");
qcStaticTable.setRemark("checkTypeCP");
List<String> cols1 = qcStaticTableMapper.getTableHzTitle(qcStaticTable);
if(CollectionUtils.isEmpty(cols1)){
return dto;
}
dto.setColumns1(cols1);
List<String> cols2 = qcStaticTableMapper.getTableHzTitle2(qcStaticTable);
dto.setColumns2(cols2);
return dto;
}
private List<String> getHourProductionTitle(QcStaticTable qcStaticTable) {
// 返回的日期集合

@ -180,7 +180,15 @@
from qc_check_task_detail qctd
left join qc_check_task qct on qctd.belong_to = qct.record_id
where qct.type_code = #{typeCode} and qctd.status = 'N'
and CONVERT(varchar(10),qct.income_time, 120) = SUBSTRING(#{ymd},0,11)
<if test='ymdType=="yyyy"'>
and CONVERT(varchar(4),qct.income_time, 120) = SUBSTRING(#{ymd},0,5)
</if>
<if test='ymdType=="mm"'>
and CONVERT(varchar(7),qct.income_time, 120) = SUBSTRING(#{ymd},0,8)
</if>
<if test='ymdType=="dd"'>
and CONVERT(varchar(10),qct.income_time, 120) = SUBSTRING(#{ymd},0,11)
</if>
order by qctd.update_time desc
</select>
<select id="getProduceHz" resultType="com.op.quality.domain.QcInterface">

@ -490,4 +490,12 @@
where qctd.del_flag = '0' and qct.order_no = #{orderNo}
GROUP by qctd.belong_to,qctd.belong_to_detail
</select>
<select id="getTableHzTitle" resultType="java.lang.String">
select dict_label from base_dict_data
where dict_type = #{dataType}
and remark = #{remark} order by dict_sort
</select>
<select id="getTableHzTitle2" resultType="java.lang.String">
select defect_subclass from qc_defect_type where defect_type = #{typeCode} and del_flag = '0'
</select>
</mapper>

Loading…
Cancel
Save