Merge remote-tracking branch 'origin/master'

master
mengjiao 2 years ago
commit c41b1a0b02

@ -28,4 +28,7 @@ public interface RemoteQualityService {
@PostMapping("/qcWarehousing/createProductTask")
public R createProductTask(@RequestBody QcCheckTaskWarehousingDTO qcCheckTaskIncome);
@PostMapping("/qcIncome/createIncomeBatchTask")
public R createIncomeBatchTask();
}

@ -8,9 +8,18 @@ import java.util.List;
public class SapRFW {
private String aufnr;
private String gamng;
private String anzma;
private lt_gs lt_gs;
private List<lt_hw> lt_hwList;
public String getAnzma() {
return anzma;
}
public void setAnzma(String anzma) {
this.anzma = anzma;
}
public List<lt_hw> getLt_hwList() {
return lt_hwList;
}

@ -37,6 +37,11 @@ public class RemoteQualityFallbackFactory implements FallbackFactory<RemoteQuali
public R createProductTask(QcCheckTaskWarehousingDTO qcCheckTaskWarehousingDTO) {
return R.fail("入库检验任务创建失败:" + throwable.getMessage());
}
@Override
public R createIncomeBatchTask() {
return R.fail("来料检验批量检验任务创建失败:" + throwable.getMessage());
}
};
}
}

@ -12,8 +12,8 @@ public class IEquipmentVO {
private Double failureRate;
// 设备有效利用率
private Double utilizationRatio;
// 设备维修质量
private Double rapairQuantity;
// 设备维修质量 拼错了!!!!!
private String rapairQuantity;
// 设备状态
private String equipmentStatus;
@ -25,11 +25,11 @@ public class IEquipmentVO {
this.equipmentStatus = equipmentStatus;
}
public Double getRapairQuantity() {
public String getRapairQuantity() {
return rapairQuantity;
}
public void setRapairQuantity(Double rapairQuantity) {
public void setRapairQuantity(String rapairQuantity) {
this.rapairQuantity = rapairQuantity;
}

@ -26,6 +26,7 @@ public interface DeviceInterfaceMapper {
* @return
*/
List<IEquipmentVO> selectEquipmentList(EquOperation equOperation);
List<IEquipmentVO> selectEquipmentVOList(EquOperation equOperation);
/**
*

@ -53,7 +53,7 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService {
/**
*
* :/
* /
* //*24
*
* @return
*/
@ -61,10 +61,10 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService {
@DS("#header.poolName")
public AjaxResult getEquipmentInfo(EquOperation equOperation) {
if (equOperation.getTimeDimension() == null) {
equOperation.setTimeDimension("dd");
equOperation.setTimeDimension("yyyy");
}
// 获取所有设备信息
List<IEquipmentVO> equipmentVOList = deviceInterfaceMapper.selectEquipmentList(equOperation);
List<IEquipmentVO> equipmentVOList = deviceInterfaceMapper.selectEquipmentVOList(equOperation);
return success(equipmentVOList);
}
@ -95,26 +95,26 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService {
runTime += diffTime;
}
// 计算维修质量(故障时间(小时)/故障次数)
double rapairQuantity = runTime / 3600000 / workOrderList.size();
equipmentVO.setRapairQuantity(Double.valueOf(rapairQuantity));
Double rapairQuantity = runTime / 3600000 / workOrderList.size();
String douStr = String.format("%.2f", rapairQuantity);
equipmentVO.setRapairQuantity(douStr);
} else {
// 没有该记录则默认为0
equipmentVO.setRapairQuantity(0D);
equipmentVO.setRapairQuantity("0.00");
}
}
// 按照raparQuantity字段进行排序并使用subList获取前10个结果
List<IEquipmentVO> top10 = equipmentVOList.stream()
.sorted(Comparator.comparingDouble(IEquipmentVO::getRapairQuantity)) // 排序
.limit(10) // 限制结果数量为10
.collect(Collectors.toList()); // 将结果收集到List中
.sorted(Comparator.comparing(IEquipmentVO::getRapairQuantity).reversed())// 由正序改为 反转排序 倒序
.limit(10) // 限制结果数量为10 改为不限制结果数量
.collect(Collectors.toList()); //将结果收集到List中
return success(top10);
}
/**
* -MTBF top10
* -MTBF
* /
*/
@Override
@ -132,13 +132,12 @@ public class DeviceInterfaceServiceImpl implements IDeviceInterfaceService {
/**
*
* /
* -/
*/
@Override
@DS("#header.poolName")
public AjaxResult getEquipmentIntactRate(EquOperation equOperation) {
//查询所有设备(设备停用的除外)
// CAST(SUM(CASE WHEN equipment_status = '1' or equipment_status = '3' THEN 1 Else 0 END)*100.00/COUNT(*) as decimal(18,2)) AS intactRate
EquOperation equipmentIntactRate = deviceInterfaceMapper.getEquipmentIntactRate(equOperation);
Double totalEquipment = new Double(equipmentIntactRate.getTotalEquipment());
Double operationEquipment = new Double(equipmentIntactRate.getOperationEquipment());

@ -150,7 +150,14 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", ""));
return equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder);
int result = equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder);
//2.修改设备状态
EquEquipment equEquipment = new EquEquipment();
equEquipment.setEquipmentCode(equipmentCode);
equEquipment.setEquipmentStatus("0");//0故障
equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment);
return result;
}
/**

@ -21,7 +21,8 @@
<select id="selectEquipmentList" parameterType="EquOperation" resultType="com.op.device.domain.vo.IEquipmentVO">
select be.equipment_code AS 'equipmentCode', be.equipment_name AS 'equipmentName',be.equipment_status AS
'equipmentStatus', (SELECT ROUND(
'equipmentStatus',be.department AS
'department',(SELECT ROUND(
SUM(CAST(fault_time AS FLOAT)) /
SUM(CAST(actual_operation_time AS FLOAT)),
2)
@ -41,6 +42,28 @@
and be.equipment_category = '0'
</select>
<select id="selectEquipmentVOList" parameterType="EquOperation" resultType="com.op.device.domain.vo.IEquipmentVO">
SELECT
be.equipment_code AS 'equipmentCode',
be.equipment_name AS 'equipmentName',
be.equipment_status AS 'equipmentStatus',
be.department AS 'department',
ROUND(SUM(CAST(eo.fault_time AS FLOAT)) * 100 / SUM(CAST(eo.actual_operation_time AS FLOAT)),2) AS 'failureRate',
CAST(SUM(CAST(eo.actual_operation_time AS DECIMAL(10,2)))*100 / (365*24) AS DECIMAL(18,2)) AS 'utilizationRatio'
FROM equ_operation eo
LEFT JOIN base_equipment be ON eo.equipment_code = be.equipment_code
<where>
<if test="timeDimension == 'dd' ">and convert(char(10),eo.create_time,120) = convert(char(10),getdate(),120)</if>
<if test="timeDimension == 'mm' ">and month(eo.create_time) = month(getdate())</if>
<if test="timeDimension == 'yyyy' ">and year(eo.create_time) = year(getdate())</if>
AND eo.del_flag = '0'
AND be.del_flag = '0'
AND be.equipment_category = '0'
</where>
GROUP BY be.equipment_code,be.equipment_name,be.equipment_status,be.department
ORDER BY failureRate DESC
</select>
<select id="selectRepairEquipmentList" resultType="com.op.device.domain.vo.IEquipmentVO">
select be.equipment_code AS 'equipmentCode', be.equipment_name AS 'equipmentName'
from base_equipment be
@ -95,7 +118,7 @@
)/COUNT(equipment_code) as decimal(18,2))as mtbf
from equ_operation eo
<where>
<if test="timeDimension == 'dd' ">and day(eo.create_time) = day(getdate())</if>
<if test="timeDimension == 'dd' ">and convert(char(10),eo.create_time,120) = convert(char(10),getdate(),120)</if>
<if test="timeDimension == 'mm' ">and month(eo.create_time) = month(getdate())</if>
<if test="timeDimension == 'yyyy' ">and year(eo.create_time) = year(getdate())</if>
</where>

@ -155,7 +155,7 @@ public class RyTask {
}
/************质量管理系统定时任务开始*****************/
//过程巡检,每15分钟执行一次
//过程巡检,每3分钟执行检查一次
public void createProduceXJTask(){
logger.info("++质量管理系统+过程巡检+开始++createProduceXJTask+++++");
remoteQualityService.createProduceXJTask();
@ -169,5 +169,13 @@ public class RyTask {
remoteUserService.syncUserInfoTask();
}
/************hr 人力基础数据定时任务结束*****************/
/************质量管理系统-来料检验批量检验任务创建-定时任务开始*****************/
//来料检验批量检验任务创建每10分钟执行一次
public void createIncomeBatchTask(){
logger.info("++质量管理系统+来料检验批量检验任务创建+开始++createIncomeBatchTask+++++");
remoteQualityService.createIncomeBatchTask();
}
/************质量管理系统-来料检验批量检验任务创建-定时任务结束*****************/
}

@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletResponse;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.mes.domain.MesReportWork;
import com.op.mes.domain.MesReportWorkConsumeTabs;
import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.BaseTeamTDTO;
@ -148,6 +149,16 @@ public class MesReportWorkConsumeController extends BaseController {
return rlist;
}
/**
*
**/
@RequiresPermissions("mes:reportWork:report")
@GetMapping("/getAllLevelConsumeList")
public List getAllLevelConsumeList(MesReportWorkConsume mesReportWorkConsume) {
List<MesReportWorkConsumeTabs> rlist = mesReportWorkConsumeService.getAllLevelConsumeList(mesReportWorkConsume);
return rlist;
}
@PostMapping("/submitConsumePS")
public AjaxResult submitConsumePS(@RequestBody List<MesReportWorkConsume> mesReportWorkConsume) {
return toAjax(mesReportWorkConsumeService.submitConsumePS(mesReportWorkConsume));

@ -13,15 +13,21 @@ import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.poi.ExcelMapUtil;
import com.op.common.core.utils.uuid.IdUtils;
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.SysFactoryDto;
import com.op.system.api.RemoteSapService;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.device.EquEquipmentDTO;
import com.op.system.api.domain.dto.MesPrepareDTO;
import com.op.system.api.domain.dto.MesPrepareDetailDTO;
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
import com.op.system.api.domain.sap.SapMaterialPreparation;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
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;
@ -50,6 +56,7 @@ import com.op.common.core.utils.poi.ExcelUtilDailyReport;
public class MesReportWorkController extends BaseController {
@Autowired
private IMesReportWorkService mesReportWorkService;
/**
*
*/
@ -444,7 +451,11 @@ public class MesReportWorkController extends BaseController {
e.printStackTrace();
}
}
/**获取母子报工记录**/
/**获取最新领料单**/
@PostMapping("/getNewPrepareData")
public List<MesPrepareDetailDTO> getNewPrepareData(@RequestBody MesPrepareDetail mesPrepareDetail) {
return mesReportWorkService.getNewPrepareData(mesPrepareDetail);
}
}

@ -26,8 +26,9 @@ public class MesReportWorksController extends BaseController {
@RequiresPermissions("mes:reportWork:lists")
@GetMapping("/lists")
public TableDataInfo lists(MesReportWork mesReportWork) {
startPage();
List<MesReportWork> hzlist = mesReportWorksService.getReportWorksList(mesReportWork);
return getDataTable(hzlist);
// startPage();
// List<MesReportWork> hzlist = mesReportWorksService.getReportWorksList(mesReportWork);
// return getDataTable(hzlist);
return null;
}
}

@ -1,9 +1,13 @@
package com.op.mes.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.op.mes.domain.MesUnitPrice;
import com.op.mes.domain.MesUnitpriceReport;
import com.op.mes.service.IMesUnitPriceService;
import com.op.mes.service.IMesUnitpriceReportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -34,6 +38,8 @@ import com.op.common.core.web.page.TableDataInfo;
public class MesUnitPriceReportController extends BaseController {
@Autowired
private IMesUnitpriceReportService mesUnitpriceReportService;
@Autowired
private IMesUnitPriceService mesUnitPriceService;
/**
*
@ -64,7 +70,16 @@ public class MesUnitPriceReportController extends BaseController {
@RequiresPermissions("unitPriceReport:report:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id) {
return success(mesUnitpriceReportService.selectMesUnitpriceReportById(id));
MesUnitpriceReport mup=mesUnitpriceReportService.selectMesUnitpriceReportById(id);
MesUnitPrice mesUnitPrice=new MesUnitPrice();
mesUnitPrice.setProductCode(mup.getProductCode().substring(mup.getProductCode().length() - 11));
mesUnitPrice.setLineCode(mup.getLineCode());
List<MesUnitPrice> list = mesUnitPriceService.selectMesUnitPriceList(mesUnitPrice);
Map map=new HashMap();
map.put("MesUnitpriceReport",mup);
map.put("MesUnitPriceInfo",list);
return success(map);
}
/**

@ -86,8 +86,6 @@ public class MesReportWork extends BaseEntity {
@Excel(name = "物料消耗单位")
private String materialNameUnit;
/** 报工单编号 */
// @Excel(name = "报工单编号")
private String reportCode;
@ -96,18 +94,12 @@ public class MesReportWork extends BaseEntity {
//@Excel(name = "报工类型报工类型SELF上位机报工、UNI系统报工")
private String reportType;
/** 规格型号 */
//@Excel(name = "规格型号")
private String spec;
private BigDecimal quantitySplit;
/** 合格数量 */
//@Excel(name = "合格数量")
private BigDecimal quantityQualified;
@ -120,13 +112,9 @@ public class MesReportWork extends BaseEntity {
//@Excel(name = "报工人员")
private String userName;
/** 报工途径PAD、MOBILE、PC */
//@Excel(name = "报工途径PAD、MOBILE、PC")
private String feedbackChannel;
private String feedbackTimeStr;
/** 录入人员 */
@ -137,16 +125,10 @@ public class MesReportWork extends BaseEntity {
//@Excel(name = "状态")
private String status;
/** 线体编码 */
//@Excel(name = "线体编码")
private String machineCode;
/** 班组编码 */
//@Excel(name = "班组编码")
private String teamCode;
@ -226,6 +208,15 @@ public class MesReportWork extends BaseEntity {
private String voucher;
//版本
private String version;
private String sapCode;
public String getSapCode() {
return sapCode;
}
public void setSapCode(String sapCode) {
this.sapCode = sapCode;
}
public String getVoucher() {
return voucher;

@ -107,6 +107,15 @@ public class MesReportWorkConsume extends BaseEntity {
private String productGroupName;
//上级物料
private String pMaterialCode;
private String workorderCodeSap;
public String getWorkorderCodeSap() {
return workorderCodeSap;
}
public void setWorkorderCodeSap(String workorderCodeSap) {
this.workorderCodeSap = workorderCodeSap;
}
public String getpMaterialCode() {
return pMaterialCode;

@ -0,0 +1,46 @@
package com.op.mes.domain;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.List;
/**
* mes_report_work_consume
*
* @author Open Platform
* @date 2023-08-24
*/
public class MesReportWorkConsumeTabs extends BaseEntity {
private static final long serialVersionUID = 1L;
private String libId;
private String title;
private List<MesReportWorkConsume> libList;
public String getLibId() {
return libId;
}
public void setLibId(String libId) {
this.libId = libId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<MesReportWorkConsume> getLibList() {
return libList;
}
public void setLibList(List<MesReportWorkConsume> libList) {
this.libList = libList;
}
}

@ -28,7 +28,7 @@ public class ProOrderWorkorder extends TreeEntity {
*/
@Excel(name = "工单编码")
private String workorderCode;
private String workorderCodeSap;
/**
*
*/
@ -209,6 +209,14 @@ public class ProOrderWorkorder extends TreeEntity {
private String batchCode;
private String batchId;
public String getWorkorderCodeSap() {
return workorderCodeSap;
}
public void setWorkorderCodeSap(String workorderCodeSap) {
this.workorderCodeSap = workorderCodeSap;
}
public String getBatchCode() {
return batchCode;
}

@ -9,7 +9,7 @@ import java.util.List;
@Mapper
public interface MesReportWorksMapper {
List<MesReportWork> getReportWorkList(MesReportWork mesReportWork);
//List<MesReportWork> getReportWorkList(MesReportWork mesReportWork);
}

@ -4,6 +4,7 @@ import java.util.List;
import com.op.mes.domain.MesReportWork;
import com.op.mes.domain.MesReportWorkConsume;
import com.op.mes.domain.MesReportWorkConsumeTabs;
import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
import com.op.system.api.domain.mes.BaseTeamTDTO;
@ -84,4 +85,6 @@ public interface IMesReportWorkConsumeService {
int submitReportInfo(MesReportWork mesReportWork);
List<MesReportWorkConsume> getBomList(MesReportWorkConsume mesReportWorkConsume);
List<MesReportWorkConsumeTabs> getAllLevelConsumeList(MesReportWorkConsume mesReportWorkConsume);
}

@ -10,6 +10,7 @@ import com.op.mes.domain.dto.LineChartDto;
import com.op.mes.domain.dto.SysFactoryDto;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.device.EquEquipmentDTO;
import com.op.system.api.domain.dto.MesPrepareDetailDTO;
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
/**
@ -108,4 +109,6 @@ public interface IMesReportWorkService {
List<MesReportWork> getPutInOrderList(MesReportWork mesReportWorks);
List<MesReportWorkTabs> getAllLevelReportList(MesReportWork mesReportWork);
List<MesPrepareDetailDTO> getNewPrepareData(MesPrepareDetail mesPrepareDetail);
}

@ -295,14 +295,14 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
* * =
* * ----------------------------------------
* *
* * =sum(/)
* * =sum()
* * = *
* * =
* * =
* * <p>
* *
* * =
* * = *
* * =sum()
* * = 4*sum()
* * =
* * =
* * ----------------------------------------
@ -344,7 +344,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
/**(两层报工)子工单先报工,然后母工单报工**/
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod");
mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode());
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
if(sHzWorks==null){
return R.fail("未查询到子报工单");
@ -355,7 +355,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
logger.info("==========================子工单报工结束:"+JSONObject.toJSONString(sapRson));
if(sapRson.getCode()== 200){
//一定是子单报工成功返回后,再母单报工
mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode());
mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode());
MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork);
if(pHzWork==null){
return R.fail("未查询到母报工单");
@ -368,7 +368,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
//母工单报工
logger.info("==========================母工单报工开始");
pHzWork.setQuantityFeedback(sHzWorks.getQuantityFeedback());
pHzWork.setSac1(sHzWorks.getSac1());
pHzWork.setSac2("4");//母单报工固定值
R sapR = this.reportHzToSap(pHzWork,2);
logger.info("==========================母工单报工结束"+JSONObject.toJSONString(sapR));
return sapR;
@ -449,8 +449,8 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
return R.fail("mes_report_work_consume没有数据");
}
sapRFW.setLt_hwList(lt_hwList);
sapRFW.setAnzma(workOrder.getSapCode());//产线编号
logger.info(workOrder.getWorkorderCodeSap() + "sap工单报工请求" + JSONObject.toJSONString(sapRFW));
R r = remoteSapService.sapRFWOrder(sapRFW);
logger.info(workOrder.getWorkorderCodeSap() + "sap工单报工结果" + r.getCode() + "," + r.getData() + "," + r.getMsg());
//上传成功更改mes_report_work状态

@ -11,7 +11,7 @@ import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.bean.BeanUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.mes.domain.MesReportWork;
import com.op.mes.domain.*;
import com.op.mes.mapper.MesReportWorkMapper;
import com.op.system.api.domain.dto.BaseBomDTO;
import com.op.system.api.domain.mes.BaseProductDTO;
@ -21,7 +21,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.mes.mapper.MesReportWorkConsumeMapper;
import com.op.mes.domain.MesReportWorkConsume;
import com.op.mes.service.IMesReportWorkConsumeService;
import org.springframework.util.CollectionUtils;
@ -260,4 +259,34 @@ public class MesReportWorkConsumeServiceImpl implements IMesReportWorkConsumeSer
List<MesReportWorkConsume> dtos = mesReportWorkConsumeMapper.getBomList(mesReportWorkConsume);
return dtos;
}
@Override
@DS("#header.poolName")
public List<MesReportWorkConsumeTabs> getAllLevelConsumeList(MesReportWorkConsume mesReportWorkConsume) {
List<MesReportWorkConsumeTabs> tabs = new ArrayList<>();
MesReportWorkConsumeTabs pTabs = new MesReportWorkConsumeTabs();
int i = 1;
pTabs.setLibId("consume"+i);
pTabs.setTitle("第"+i+"层工单物料损耗");
mesReportWorkConsume.setParentOrder("0");
List<MesReportWorkConsume> liblist0 = mesReportWorkConsumeMapper.getConsumeList(mesReportWorkConsume);
pTabs.setLibList(liblist0);
tabs.add(pTabs);
ProOrderWorkorder sonWorkOrder = mesReportWorkMapper.getSonWorkOrder(mesReportWorkConsume.getWorkorderCode());
while(sonWorkOrder!=null){
int xh = ++i;
MesReportWorkConsumeTabs sTabs = new MesReportWorkConsumeTabs();
sTabs.setLibId("consume"+xh);
sTabs.setTitle("第"+xh+"层工单物料损耗");
mesReportWorkConsume.setWorkorderCode(sonWorkOrder.getWorkorderCode());
List<MesReportWorkConsume> liblist = mesReportWorkConsumeMapper.getConsumeList(mesReportWorkConsume);
sTabs.setLibList(liblist);
tabs.add(sTabs);
sonWorkOrder = mesReportWorkMapper.getSonWorkOrder(sonWorkOrder.getWorkorderCode());
}
return tabs;
}
}

@ -18,10 +18,15 @@ 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.service.IWCSInterfaceService;
import com.op.system.api.RemoteSapService;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.device.EquEquipmentDTO;
import com.op.system.api.domain.dto.MesPrepareDetailDTO;
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
import com.op.system.api.domain.sap.SapMaterialPreparation;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.mes.mapper.MesReportWorkMapper;
@ -36,6 +41,12 @@ import org.springframework.util.CollectionUtils;
*/
@Service
public class MesReportWorkServiceImpl implements IMesReportWorkService {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private RemoteSapService remoteSapService;
@Autowired
private MesReportWorkMapper mesReportWorkMapper;
@ -182,6 +193,50 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService {
return tabs;
}
@Override
@DS("#header.poolName")
public List<MesPrepareDetailDTO> getNewPrepareData(MesPrepareDetail mesPrepareDetail) {
Date createDate = DateUtils.getNowDate();
String workorderCodeSap = mesReportWorkMapper.getOrderByCode(mesPrepareDetail.getWorkorderCode()).getWorkorderCodeSap();
logger.info("获取sap最新领料单" + mesPrepareDetail.getWorkorderCode() +"["+workorderCodeSap+"]"+ "开始");
List<SapMaterialPreparation> sapMaterialPreparationList = remoteSapService.materialPreparation(workorderCodeSap).getData();
if (CollectionUtils.isEmpty(sapMaterialPreparationList)) {
logger.info("sap无领料单数据:"+mesPrepareDetail.getWorkorderCode());
}
/**mes_prepare_detail**/
List<MesPrepareDetailDTO> details = new ArrayList<>();
MesPrepareDetailDTO detail = null;
for (SapMaterialPreparation sap : sapMaterialPreparationList) {
detail = new MesPrepareDetailDTO();
detail.setAttr1(sap.getRSPOS());//预留/相关需求的项目编号
detail.setMaterialCode(sap.getMATNR());//物料号
detail.setMaterailName(sap.getMAKTX());//物料描述(短文本)
detail.setFactoryCode(sap.getWERKS());//工厂
detail.setLocator(sap.getLGORT());//库存地点
detail.setNeedDate(sap.getBDTER());//组件的需求日期
detail.setQuantity(sap.getBDMNG());////需求量
detail.setFundQuanlity(sap.getZQLSL());//欠料数量
detail.setUnit(sap.getMEINS());//基本计量单位
detail.setRecoil(sap.getRGEKZ());//反冲标识
detail.setBuyFlag(sap.getDBSKZ());//直接采购标识
detail.setCreateBy(SecurityUtils.getUsername());
detail.setCreateTime(createDate);
details.add(detail);
logger.info("获取sap最新领料单" + mesPrepareDetail.getWorkorderCode() +"["+workorderCodeSap+"]"
+ sap.getRSPOS() + "," + sap.getMATNR() + "," +
sap.getMAKTX() + "," + sap.getWERKS() + "," + sap.getLGORT() + "," +
sap.getBDTER() + "," + sap.getBDMNG() + "," + sap.getZQLSL() + "," +
sap.getMEINS() + "," + sap.getRGEKZ() + "," + sap.getDBSKZ()
);
}
logger.info("获取sap最新领料单" + mesPrepareDetail.getWorkorderCode() +"["+workorderCodeSap+"]" + "结束");
return details;
}
@Override
@DS("#header.poolName")
public int submitReportPS(List<MesReportWork> mesReportWorks) {

@ -19,6 +19,6 @@ public class MesReportWorksServiceImpl implements IMesReportWorksService {
@Override
@DS("#header.poolName")
public List<MesReportWork> getReportWorksList(MesReportWork mesReportWork) {
return mesReportWorksMapper.getReportWorkList(mesReportWork);
return null;//mesReportWorksMapper.getReportWorkList(mesReportWork);
}
}

@ -81,7 +81,7 @@
left join mes_prepare mp on ow.workorder_code = mp.workorder_code
left join mes_prepare_detail mpd on mp.prepare_id = mpd.prepare_id
where ow.belong_work_order = #{workorderCode}
order by mp.workorder_name desc
order by mpd.recoil
</select>
<insert id="insertMesPrepareDetail" parameterType="MesPrepareDetail">

@ -90,8 +90,8 @@
<result property="quantitySplits" column="quantitySplits"/>
<result property="units" column="units"/>
</resultMap>
<select id="getReportWorkList" resultMap="MesReportWorkResult" parameterType="MesReportWork">
<!-- <select id="getReportWorkList" resultMap="MesReportWorkResult" parameterType="MesReportWork">-->
</select>
<!-- </select>-->
</mapper>

@ -102,10 +102,13 @@
mrwc.quantity,
mrwc.unit,
mrwc.create_time createTime,
mrwc.recoil
mrwc.recoil,
pow.workorder_code_sap workorderCodeSap
from mes_report_work_consume mrwc
where mrwc.del_flag = '0'
left join pro_order_workorder pow on mrwc.workorder_code = pow.workorder_code
where mrwc.del_flag = '0' and pow.del_flag = '0'
and mrwc.workorder_code = #{workorderCode}
order by mrwc.recoil
</select>
<select id="getSonConsumeList" resultType="com.op.mes.domain.MesReportWorkConsume">
select mrwc.record_id recordId,

@ -412,8 +412,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select workorder_code workorderCode,
parent_order parentOrder,
quantity_split quantitySplit,
unit
from pro_order_workorder where workorder_code = #{workorderCode}
unit,
workorder_code_sap workorderCodeSap
from pro_order_workorder
where workorder_code = #{workorderCode} and del_flag = '0'
</select>
<select id="getMesListUser" resultType="com.op.system.api.domain.SysUser">
select user_id userId,
@ -527,24 +529,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="getReportList" resultType="com.op.mes.domain.MesReportWork">
select
id,
workorder_code workorderCode,
report_code reportCode,
batch,
quantity_feedback quantityFeedback,
unit,
work_time workTime,
use_man useMan,
create_time createTime
from mes_report_work
where del_flag='0'
mrw.id,
mrw.workorder_code workorderCode,
mrw.report_code reportCode,
mrw.batch,
mrw.quantity_feedback quantityFeedback,
mrw.unit,
mrw.work_time workTime,
mrw.use_man useMan,
mrw.create_time createTime,
pow.workorder_code_sap workorderCodeSap
from mes_report_work mrw
left join pro_order_workorder pow on mrw.workorder_code = pow.workorder_code
where mrw.del_flag='0' and pow.del_flag = '0'
<if test='parentOrder=="0"'>
and workorder_code = #{workorderCode}
and mrw.workorder_code = #{workorderCode}
</if>
<if test='parentOrder!="0"'>
and parent_order = #{workorderCode}
and mrw.parent_order = #{workorderCode}
</if>
order by end_report
order by mrw.end_report
</select>
<select id="getPrepareList" resultType="com.op.mes.domain.MesPrepareDetail">
select
@ -570,12 +574,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mrw.product_code productCode,
mrw.product_name productName,
mrw.sac1,
mrw.sac2
mrw.sac2,
equ.sap_code sapCode
from (
select
workorder_code,
sum(quantity_feedback) quantity_feedback,
sum(round( work_time/use_man,2)) sac1,
sum(work_time) sac1,
use_man sac2,
product_code,
product_name
@ -586,7 +591,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
group by workorder_code,product_code,product_name,use_man
) mrw
left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code
<!--left join pro_route rte on rte.route_code = ow.route_code-->
left join base_equipment equ on equ.equipment_code = ow.workorder_name
</select>
<select id="getReportWorkHz1" resultType="com.op.mes.domain.MesReportWork">
select
@ -596,7 +601,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mrw.product_code productCode,
mrw.product_name productName,
mrw.sac1,
mrw.sac2
mrw.sac2,
equ.sap_code sapCode
from (
select
workorder_code,
@ -612,6 +618,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
group by workorder_code,product_code,product_name,use_man
) mrw
left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code
left join base_equipment equ on equ.equipment_code = ow.workorder_name
</select>
<select id="getEndReport" resultType="com.op.mes.domain.MesReportWork">
select end_report endReport

@ -44,6 +44,7 @@
mur.product_name,
mur.line_code,
mur.attr1 AS real_wages,
mur.remark,
be.equipment_name,
mur.nick_name,
mur.childprocess_code,
@ -101,6 +102,7 @@
mur.product_name,
mur.attr1,
mur.line_code,
mur.remark,
be.equipment_name,
mur.nick_name,
mur.childprocess_code,
@ -166,15 +168,15 @@
<!-- <if test="productCode != null">product_code = #{productCode},</if>-->
<!-- <if test="userName != null and userName != ''">user_name = #{userName},</if>-->
<!-- <if test="nickName != null and nickName != ''">nick_name = #{nickName},</if>-->
<!-- <if test="childprocessCode != null">childprocess_code = #{childprocessCode},</if>-->
<!-- <if test="childprocessName != null">childprocess_name = #{childprocessName},</if>-->
<if test="childprocessCode != null">childprocess_code = #{childprocessCode},</if>
<if test="childprocessName != null">childprocess_name = #{childprocessName},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<!-- <if test="attr2 != null">attr2 = #{attr2},</if>-->
<!-- <if test="attr3 != null">attr3 = #{attr3},</if>-->
<!-- <if test="createBy != null">create_by = #{createBy},</if>-->
<!-- <if test="createTime != null">create_time = #{createTime},</if>-->
<!-- <if test="updateBy != null">update_by = #{updateBy},</if>-->
<!-- <if test="updateTime != null">update_time = #{updateTime},</if>-->
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}

@ -73,7 +73,7 @@ public interface OpenMapper {
List<QcCheckTaskDetailDTO> getTPByTypeGroup(QcCheckTypeProjectDTO qctp);
void insertQcCheckTaskProduce(QcCheckTaskProduceDTO qcCheckTaskProduce);
int insertQcCheckTaskProduce(QcCheckTaskProduceDTO qcCheckTaskProduce);
public int addBatch(@Param("list") List<QcCheckTaskDetailDTO> items);

@ -370,7 +370,7 @@ public class OpenServiceImpl implements OpenService {
}
/**qc_check_task_user**/
int m = openMapper.addCheckUsers(users);
logger.info("检查人新增" + m + "成功");
logger.info(qcCheckTaskProduce.getOrderNo()+":检查人新增" + m + "成功");
/**qc_check_type_project**/
List<QcCheckTaskDetailDTO> items = openMapper.getTPByTypeMaterial(qctp);
@ -378,7 +378,7 @@ public class OpenServiceImpl implements OpenService {
/**qc_material_group_detail**/
QcMaterialGroupDetailDTO group = openMapper.getGroupByMaterial(qcCheckTaskProduce.getMaterialCode());
if (group == null) {
logger.info(qcCheckTaskProduce.getMaterialCode()+"没有维护物料组检测项,检验任务生成失败");
logger.info(qcCheckTaskProduce.getOrderNo()+":"+qcCheckTaskProduce.getMaterialCode()+"没有维护物料组检测项,检验任务生成失败");
return 0;//没有找到检测项目
}
qctp.setGroupId(group.getGroupId());//共性
@ -391,7 +391,6 @@ public class OpenServiceImpl implements OpenService {
}
/**qc_check_task**/
qcCheckTaskProduce.setRecordId(beLongId);
qcCheckTaskProduce.setFactoryCode(factoryCode);
qcCheckTaskProduce.setCreateTime(nowDate);
@ -401,7 +400,9 @@ public class OpenServiceImpl implements OpenService {
qcCheckTaskProduce.setSupplierName(qcCheckTaskProduce.getCarName());
qcCheckTaskProduce.setCheckManName(null);
qcCheckTaskProduce.setCheckManCode(null);
openMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
int m0 = openMapper.insertQcCheckTaskProduce(qcCheckTaskProduce);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task新增" + m0 + "成功");
/**qc_check_task_detail**/
for (QcCheckTaskDetailDTO item : items) {
item.setRecordId(IdUtils.fastSimpleUUID());
@ -411,7 +412,9 @@ public class OpenServiceImpl implements OpenService {
item.setFactoryCode(factoryCode);
item.setStatus("Y");
}
return openMapper.addBatch(items);
int n = openMapper.addBatch(items);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task_detail新增" + n + "成功");
return n;
}
@Override

@ -77,6 +77,19 @@ public class ProOrderWorkorderController extends BaseController {
return proOrderWorkorderService.subChangeWorkOrder(splitOrderDTO);
}
/**
*
*
* @param splitOrderDTO
* @return
*/
@PostMapping("/subChangeWorkOrderPro")
@RequiresPermissions("mes:pro:workorder:edit")
@Log(title = "修改成品工单", businessType = BusinessType.UPDATE)
public AjaxResult subChangeWorkOrderPro(@RequestBody SplitOrderDTO splitOrderDTO) {
return proOrderWorkorderService.subChangeWorkOrderPro(splitOrderDTO);
}
/**
* -
*
@ -234,6 +247,7 @@ public class ProOrderWorkorderController extends BaseController {
return toAjax(1);
}
/**
* workorderIds
*/

@ -174,7 +174,7 @@ public class ProOrderWorkorder extends TreeEntity {
* 2
*/
private String attr2;
private String atrr2;
/**
* 3
*/
@ -376,6 +376,14 @@ public class ProOrderWorkorder extends TreeEntity {
this.bucketCode = bucketCode;
}
public String getAtrr2() {
return atrr2;
}
public void setAtrr2(String atrr2) {
this.atrr2 = atrr2;
}
public Integer getMaterialId() {
return materialId;
}

@ -78,4 +78,5 @@ public interface ProOrderWorkorderBatchMapper {
*/
List<String> selectCodeByWorkOrderIds(String[] workorderIds);
public int deleteBatch(String[] workorderIds);
}

@ -129,4 +129,6 @@ public interface IProOrderWorkorderService {
List<ProOrderWorkorder> getWorkorderLevel0List(ProOrderWorkorder proOrderWorkorder);
List<ProOrderWorkorder> getNextLevelWorkOrderList(ProOrderWorkorder proOrderWorkorder);
AjaxResult subChangeWorkOrderPro(SplitOrderDTO splitOrderDTO);
}

@ -248,16 +248,16 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
ProOrderWorkorder work = proOrderWorkorderMapper.selectProOrderWorkorderByWorkorderId(workorderId);
if (work != null) {
workers.add(work);
ProOrderWorkorder bottomWork = work;
ProOrderWorkorder topWork = work;
Boolean run = true;
while (run) {
//
ProOrderWorkorder topworkers = proOrderWorkorderMapper.selectWorkOrderByCode(bottomWork.getParentOrder());
//
ProOrderWorkorder sonWorkers = proOrderWorkorderMapper.selectSonWorkOrder(topWork.getWorkorderCode());
//有上级code
if (topworkers != null) {
workers.add(topworkers);
delteIds.add(topworkers.getWorkorderId());
bottomWork.setParentOrder(topworkers.getParentOrder());
if (sonWorkers != null) {
workers.add(sonWorkers);
delteIds.add(sonWorkers.getWorkorderId());
topWork.setWorkorderCode(sonWorkers.getWorkorderCode());
} else {
run = false;
}
@ -268,7 +268,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
//删除工单(字母)pro_order_workorder
proOrderWorkorderMapper.deleteProOrderWorkorderByWorkorderIds(workorderIds0);
//删除批次pro_order_workorder_batch
proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds0);
proOrderWorkorderBatchMapper.deleteBatch(workorderIds0);
}
if (!CollectionUtils.isEmpty(workers)) {
@ -376,7 +376,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
SapCreateOrder sap = new SapCreateOrder();
sap.setWerks(whiteOrder.getFactoryCode());//工厂编码
sap.setAufpar("LJ01");//订单类型
sap.setVerid(whiteOrder.getAttr2());//生产版本
sap.setVerid(whiteOrder.getAtrr2());//生产版本
sap.setMatnr(whiteOrder.getProductCode());//物料编号
sap.setQuantity(whiteOrder.getQuantitySplit() + "");//数量
sap.setDates(DateUtils.parseDateToStr("yyyy-MM-dd", whiteOrder.getProductDate()));//开始时间
@ -831,7 +831,7 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
"订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
}
// 获得对应工单
// 获得对应工单----------------------------------------------------------------------------
ProOrderWorkorder proOrderWorkorder = workOrderList.get(--index);
// 更新订单
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
@ -882,9 +882,6 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
// 更新至数据库
proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch);
// 测试
// System.out.println("这里是workorderId----------->"+workBatch.getWorkorderId());
// System.out.println("这里是拆分数量----------->"+workBatch.getBatchQuantity());
}
// 如果存在子节点
@ -900,7 +897,6 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
}
}
return success("变更成功");
// throw new RuntimeException();
}
@ -910,6 +906,192 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
return error(500, "批次号不能重复");
}
/**
*
*
* @param splitOrderDTO
* @return
*/
@Override
@DS("#header.poolName")
@Transactional
public AjaxResult subChangeWorkOrderPro(SplitOrderDTO splitOrderDTO) {
// 获得子工单对象——(这里没有用BeanUtils是因为若依与这个冲突造成死循环得到错误的结果)
ProOrderWorkorder proWorkOrder = splitOrderDTO.getProOrderWorkorder();
// 通过子工单获得所有工单信息,并将所有工单信息放入list中
List<ProOrderWorkorder> workOrderList = new ArrayList<>();
// 将获得的工单的id存放
List<String> ids = new ArrayList<>();
boolean getworkOrder = true;
// 将工单放入list
workOrderList.add(proWorkOrder);
// 将id放入
ids.add(proWorkOrder.getWorkorderId());
// 用于循环
ProOrderWorkorder childWorkOrder = new ProOrderWorkorder();
BeanUtils.copyProperties(proWorkOrder, childWorkOrder);
while (getworkOrder) {
// 通过parentOrder查询子工单信息
ProOrderWorkorder sonWorkOrder = proOrderWorkorderMapper.selectSonWorkOrder(childWorkOrder.getWorkorderCode());
if (sonWorkOrder != null) {
// 将重置对象
BeanUtils.copyProperties(sonWorkOrder, childWorkOrder);
// 将工单放入list
workOrderList.add(sonWorkOrder);
// 将id放入
ids.add(sonWorkOrder.getWorkorderId());
} else {
// 终止循环
getworkOrder = false;
}
}
boolean checkout = true;
// 校验批次编号是否存在(重复问题)
String[] workorderIds = (String[]) ids.toArray(new String[ids.size()]);
List<String> batchCodes = proOrderWorkorderBatchMapper.selectCodeByWorkOrderIds(workorderIds);
for (int i = 0; i < batchCodes.size(); i++) {
for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) {
if (batchCodes.get(i).equals(splitOrderDTO.getFormFields().get(j).getBatchCode())) {
checkout = false;
}
}
}
//校验各工序设备是否已选择
List<CascaderDTO> processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode());
if (splitOrderDTO.getProdLineCodeArray().length == 0) {
checkout = false;
return error(500, "必须选择工单生产设备!");
} else {
String codeArray = JSONArray.toJSONString(splitOrderDTO.getProdLineCodeArray());
for (int i = 0; i < processes.size(); i++) {
if (codeArray.indexOf(processes.get(i).getValue()) < 0) {
checkout = false;
return error(500, "所有有工序节点都必须选择生产设备!");
}
}
String[][] array = splitOrderDTO.getProdLineCodeArray();
for (int m = 0; m < array.length; m++) {
if (array[m].length < 2) {
checkout = false;
return error(500, "工序没有生产设备可选择,请维护工艺!");
}
}
splitOrderDTO.setProdLineCode(codeArray);
}
if (checkout) {
// 删除所有工单s下的批次信息
int i = proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderIds(workorderIds);
// 删除湿料计划
proWetMaterialPlanDetailMapper.deleteProWetMaterialPlanDetailByWorkId(proWorkOrder.getWorkorderId());
// 创建订单信息并将信息copy进去
ProOrder proOrder = new ProOrder();
BeanUtils.copyProperties(splitOrderDTO.getProduct(), proOrder);
// 设置换算基数,用于获得换算值
Long quantity = proOrder.getQuantity();
// 创建批次表通用对象
ProOrderWorkorderBatch workBatch = setCommonBatchAttribute();
boolean run = true;
// 获取单位换算值
Long conver = 1L;
int index = 0;
while (run) {
if (StringUtils.isBlank(proOrder.getParentOrder())) {
//推送sap订单更新信息
SapShopOrderQuery sapChange = new SapShopOrderQuery();
sapChange.setAufnr(proOrder.getOrderCode());//母订单号
BigDecimal newSapQuantityNum = new BigDecimal(proOrder.getQuantity())
.subtract(new BigDecimal(proOrder.getAtrr1()));
sapChange.setQuantity(newSapQuantityNum.toString());//母订单新数量
logger.info("母订单" + proOrder.getOrderCode() +
"订单数量变更:修改前" + proOrder.getQuantity() + "," +
"已拆数量" + proOrder.getAtrr1() + "," +
"给sap汇报数量" + newSapQuantityNum.toString());
R rSapChange = remoteSapService.shopUpdateSync(sapChange);//sap只能同步指定日期的数据
logger.info("母订单" + proOrder.getOrderCode() +
"订单数量变更结果:" + rSapChange.getCode() + "," + rSapChange.getMsg());
}
// 获得对应工单----------------------------------------------------------------------------
ProOrderWorkorder proOrderWorkorder = workOrderList.get(index++);
// 更新订单
proOrder.setUpdateBy(SecurityContextHolder.getUserName());
proOrder.setUpdateTime(DateUtils.getNowDate());
proOrder.setQuantitySplit(proOrder.getQuantitySplit() + Long.valueOf(proOrder.getAtrr1()));
if (proOrder.getQuantity().longValue() == proOrder.getQuantitySplit().longValue()) {
// 已拆分
proOrder.setStatus("o2");
} else {
// 拆分中
proOrder.setStatus("o1");
}
proOrderMapper.updateProOrder(proOrder);
// 设置工单信息
proOrderWorkorder.setUpdateBy(SecurityContextHolder.getUserName());
proOrderWorkorder.setUpdateTime(DateUtils.getNowDate());
// 拆分数量
proOrderWorkorder.setQuantitySplit(Long.valueOf(proOrder.getAtrr1()));
// 2.将工单信息更新至数据库
if (splitOrderDTO.getProdLineCode() != null) {
proOrderWorkorder.setProdLineCode(splitOrderDTO.getProdLineCode());
}
if (splitOrderDTO.getProductDate() != null) {
proOrderWorkorder.setProductDate(splitOrderDTO.getProductDate());
}
if (splitOrderDTO.getShiftId() != null) {
proOrderWorkorder.setShiftId(splitOrderDTO.getShiftId());
}
if (splitOrderDTO.getRouteCode() != null) {
proOrderWorkorder.setRouteCode(splitOrderDTO.getRouteCode());
}
proOrderWorkorderMapper.updateProOrderWorkorder(proOrderWorkorder);
// 删除工单下对应批次信息
proOrderWorkorderBatchMapper.deleteProOrderWorkorderBatchByWorkorderId(proOrderWorkorder.getWorkorderId());
// 生成对应批次表
workBatch.setWorkorderId(proOrderWorkorder.getWorkorderId());
// 生成批次表信息并更新至数据库
for (Batch batch : splitOrderDTO.getFormFields()) {
// 生成批次id
workBatch.setBatchId(IdUtils.fastSimpleUUID());
// 生成批次号
workBatch.setBatchCode(batch.getBatchCode());
// 生成批次数量
workBatch.setBatchQuantity(batch.getBatchQuantity() * conver);
// 更新至数据库
proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(workBatch);
}
// 如果存在子节点
if (proOrder.getChildren().size() > 0) {
ProOrderDTO newProOrder = (ProOrderDTO) proOrder.getChildren().get(0);
// 更新换算值
conver = (newProOrder.getQuantity() / quantity);
// 将child信息重新赋值给proOrder
BeanUtils.copyProperties(newProOrder, proOrder);
} else {
// 结束循环
run = false;
}
}
return success("变更成功");
}
return error(500, "批次号不能重复");
}
/**
*
* 湿

@ -296,7 +296,7 @@
<if test="prodType != null">prod_type = #{prodType},</if>
<if test="prodSpc != null">prod_spc = #{prodSpc},</if>
from_sap_time = GETDATE(),
cegci = #{cegci},
<if test="cegci != null">cegci = #{cegci},</if>
<if test="syncUser != null">sync_user = #{syncUser},</if>
</trim>
where id = #{id}

@ -150,4 +150,13 @@
)
</delete>
<delete id="deleteBatch" parameterType="String">
update pro_order_workorder_batch
set del_flag = '1'
where workorder_id in
<foreach item="workorderId" collection="array" open="(" separator="," close=")">
#{workorderId}
</foreach>
</delete>
</mapper>

@ -27,6 +27,8 @@
<result property="remark" column="remark"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="atrr2" column="atrr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
@ -189,9 +191,18 @@
</where>
</select>
<select id="selectProOrderWorkorderByWorkorderId" parameterType="String" resultMap="ProOrderWorkorderResult">
<include refid="selectProOrderWorkorderVo"/>
where (workorder_code = #{workorderId} or workorder_id = #{workorderId})
and del_flag = '0'
select pow.workorder_id, pow.workorder_code, pow.workorder_name, pow.order_id, pow.order_code, pow.product_id,
pow.product_code, pow.product_name,
pow.product_spc, pow.unit, pow.quantity_produced, pow.quantity_split, pow.route_code, pow.prod_line_code,
pow.product_date,
pow.shift_id, pow.parent_order, pow.ancestors, pow.status, pow.remark, pow.attr1, pow.attr2,
pow.attr3, pow.attr4, pow.create_by, pow.create_time,
pow.update_by, pow.update_time, pow.prod_type, pow.factory_code , pow.end_flag , pow.car_num,
pow.sort_no,pow.workorder_code_sap, po.atrr2
from pro_order_workorder pow
left join pro_order po on pow.order_code = po.order_code
where (pow.workorder_code = #{workorderId} or pow.workorder_id = #{workorderId})
and pow.del_flag = '0'
</select>
<select id="selectFirWorkOrder" parameterType="String" resultMap="ProOrderWorkorderResult">

@ -3,22 +3,25 @@ package com.op.quality.controller;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.bean.BeanUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.quality.domain.*;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.RemoteUserService;
import com.op.system.api.domain.SysRole;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.quality.QcCheckTaskIncomeDTO;
@ -56,6 +59,9 @@ public class QcCheckTaskIncomeController extends BaseController {
@Autowired
private IQcCheckTaskIncomeService qcCheckTaskIncomeService;
@Autowired
private RemoteUserService remoteUserService;
/**
*
*/
@ -137,6 +143,71 @@ public class QcCheckTaskIncomeController extends BaseController {
return error("添加失败:请检查物料的关联检测项");
}
@PostMapping("/createIncomeBatchTask")
public AjaxResult createIncomeBatchTask() {
// 加载sf-cloud库的sys_datasource
SysUser sysUser = new SysUser();
sysUser.setUserId(1L);
R<List<Map<String, String>>> dateSources0 = remoteUserService.getPoolNameList(sysUser);
List<Map<String, String>> dateSources = dateSources0.getData();
ExecutorService executorService = new ThreadPoolExecutor(
dateSources.size(),
dateSources.size(),
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
try {
dateSources.forEach(dateSource -> {
Runnable run = () -> createIncomeBatchTaskFunc(dateSource.get("poolName"));
executorService.execute(run);
});
} catch (Exception e) {
logger.error("controller == createIncomeBatchTask == exception", e);
return error("controller == createIncomeBatchTask == exception");
} finally {
executorService.shutdown();
}
return success();
}
public AjaxResult createIncomeBatchTaskFunc(String poolName){
try {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key
Date taskTime = DateUtils.getNowDate();
logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务开始+++时间:"+ taskTime +"++++++++++");
List<QcCheckTaskIncome> incomeBatchLists = qcCheckTaskIncomeService.getIncomeBatchList(poolName);
List<String> batchRecordIds = new ArrayList<>();
int successNum = 0;//成功任务数
int failNum = 0;//失败任务数
if(incomeBatchLists != null){
for( int i = 0 ; i < incomeBatchLists.size();){
QcCheckTaskIncomeDTO qcCheckTaskIncomedto = new QcCheckTaskIncomeDTO();
QcCheckTaskIncome income = incomeBatchLists.get(i);
BeanUtils.copyProperties(income,qcCheckTaskIncomedto);
//内层一个一个创建任务
AjaxResult ajaxResult = createIncomeTask(qcCheckTaskIncomedto);
if(ajaxResult.isSuccess()){
batchRecordIds.add(qcCheckTaskIncomedto.getRecordId());
successNum = successNum + 1;
logger.info(poolName + "工厂的" + income.getCheckNo()+"来料检验创建任务成功++++++++++");
}else if(ajaxResult.isError()){
failNum = failNum +1;
logger.info(poolName + "工厂的" + income.getCheckNo()+"来料检验创建任务失败++++++++++");
}
i++;
}
}else{
logger.info("++++++++++++" + poolName + "工厂来料检验没有可创建的任务++++++++++");
}
//批量修改原表中的check_status和check_time
int upate = qcCheckTaskIncomeService.updateIncomeBatchList(batchRecordIds,taskTime);
logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务结束:成功"+ successNum +"失败"+ failNum +"+++++");
return success();
} catch (Exception e) {
logger.info("++++++++++++" + poolName + "工厂来料检验批量创建任务失败++++++++++");
return error("++++++++++++" + poolName + "工厂来料检验批量创建任务失败++++++++++");
}
}
@PostMapping("/createIncomeTask")
public AjaxResult createIncomeTask(@RequestBody QcCheckTaskIncomeDTO qcCheckTaskIncome0) {
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
@ -166,14 +237,14 @@ public class QcCheckTaskIncomeController extends BaseController {
if (qcCheckTaskIncome.getIncomeTime() == null) {
return error("[incomeTime]不能为空");
}
logger.info("来料检验任务生成开始================================");
logger.info("来料检验任务生成参数:" + JSONObject.toJSONString(qcCheckTaskIncome));
logger.info(qcCheckTaskIncome0.getFactoryCode() + "工厂来料检验任务生成开始================================");
logger.info(qcCheckTaskIncome0.getFactoryCode() + "工厂来料检验任务生成参数:" + JSONObject.toJSONString(qcCheckTaskIncome));
int r = qcCheckTaskIncomeService.insertQcCheckTaskIncome(qcCheckTaskIncome);
if (r > 0) {
return toAjax(r);
}
return error("添加失败:请检查物料的关联检测项");
return error(qcCheckTaskIncome0.getFactoryCode() + "工厂添加失败:请检查物料的关联检测项" );
}

@ -0,0 +1,109 @@
package com.op.quality.controller;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.poi.ExcelUtil;
import com.op.common.core.web.controller.BaseController;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.core.web.page.TableDataInfo;
import com.op.common.log.annotation.Log;
import com.op.common.log.enums.BusinessType;
import com.op.common.security.annotation.RequiresPermissions;
import com.op.quality.domain.QcCheckTaskMarket;
import com.op.quality.service.IQcCheckTaskMarketService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
* Controller
*
* @author Open Platform
* @date 2024-01-12
*/
@RestController
@RequestMapping("/qcMarket")
public class QcCheckTaskMarketController extends BaseController {
@Autowired
private IQcCheckTaskMarketService qcCheckTaskMarketService;
/**
*
*/
@RequiresPermissions("quality:qcMarket:list")
@GetMapping("/list")
public TableDataInfo list(QcCheckTaskMarket qcCheckTaskMarket) {
//默认时间范围T 00:00:00~T+1 00:00:00
if (StringUtils.isEmpty(qcCheckTaskMarket.getIncomeTimeStart())) {
qcCheckTaskMarket.setIncomeTimeStart(DateUtils.getDate() + " 00:00:00");//start
LocalDate date = LocalDate.now();
LocalDate dateEnd = date.plusDays(1);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String dateEndStr = dtf.format(dateEnd) + " 00:00:00";
qcCheckTaskMarket.setIncomeTimeEnd(dateEndStr);//end
}
startPage();
List<QcCheckTaskMarket> list = qcCheckTaskMarketService.selectQcCheckTaskMarketList(qcCheckTaskMarket);
return getDataTable(list);
}
/**
*
*/
@RequiresPermissions("quality:qcMarket:export")
@Log(title = "市场不良检验任务", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, QcCheckTaskMarket qcCheckTaskMarket) {
List<QcCheckTaskMarket> list = qcCheckTaskMarketService.selectQcCheckTaskMarketList(qcCheckTaskMarket);
ExcelUtil<QcCheckTaskMarket> util = new ExcelUtil<QcCheckTaskMarket>(QcCheckTaskMarket.class);
util.exportExcel(response, list, "市场不良检验任务数据");
}
/**
*
*/
@RequiresPermissions("quality:qcMarket:query")
@GetMapping(value = "/{recordId}")
public AjaxResult getInfo(@PathVariable("recordId") String recordId) {
return success(qcCheckTaskMarketService.selectQcCheckTaskMarketByRecordId(recordId));
}
/**
*
*/
@RequiresPermissions("quality:qcMarket:add")
@Log(title = "市场不良检验任务", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody QcCheckTaskMarket qcCheckTaskMarket) {
int r = qcCheckTaskMarketService.insertQcCheckTaskMarket(qcCheckTaskMarket);
if (r > 0) {
return toAjax(r);
}
return error("添加失败:请检查物料的关联检测项");
}
/**
*
*/
@RequiresPermissions("quality:qcMarket:edit")
@Log(title = "市场不良检验任务", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody QcCheckTaskMarket qcCheckTaskMarket) {
return toAjax(qcCheckTaskMarketService.updateQcCheckTaskMarket(qcCheckTaskMarket));
}
/**
*
*/
@RequiresPermissions("quality:qcMarket:remove")
@Log(title = "市场不良检验任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{recordIds}")
public AjaxResult remove(@PathVariable String[] recordIds) {
return toAjax(qcCheckTaskMarketService.deleteQcCheckTaskMarketByRecordIds(recordIds));
}
}

@ -0,0 +1,126 @@
package com.op.quality.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.op.common.log.annotation.Log;
import com.op.common.log.enums.BusinessType;
import com.op.common.security.annotation.RequiresPermissions;
import com.op.quality.domain.QcGoal;
//import com.op.quality.service.IQcGoalService;
import com.op.common.core.web.controller.BaseController;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.core.utils.poi.ExcelUtil;
import com.op.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author Open Platform
* @date 2024-03-04
*/
@RestController
@RequestMapping("/qcGoal")
public class QcGoalController extends BaseController {
// @Autowired
// private IQcGoalService qcGoalService;
//
// /**
// * 查询质量目标列表
// */
// @RequiresPermissions("quality:qcGoal:list")
// @GetMapping("/list")
// public TableDataInfo list(QcGoal qcGoal) {
// startPage();
// List<QcGoal> list = qcGoalService.selectQcGoalList(qcGoal);
// return getDataTable(list);
// }
//
// /**
// * 查询二级质量目标
// */
// @GetMapping("/getChildrenList/{parentId}")
// public List<QcGoal> getChildrenList(@PathVariable("parentId") String parentId) {
// QcGoal goal = new QcGoal();
// goal.setParentGoal(parentId);
// List<QcGoal> list = qcGoalService.selectChildrenByParent(goal);
// return list;
// }
//
// /**
// * 导出质量目标列表
// */
// @RequiresPermissions("quality:qcGoal:export")
// @Log(title = "质量目标", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(HttpServletResponse response, QcGoal qcGoal) {
// List<QcGoal> list = qcGoalService.selectQcGoalList(qcGoal);
// ExcelUtil<QcGoal> util = new ExcelUtil<QcGoal>(QcGoal. class);
// util.exportExcel(response, list, "质量目标数据");
// }
//
// /**
// * 获取质量目标详细信息
// */
// @RequiresPermissions("quality:qcGoal:query")
// @GetMapping(value = "/{id}")
// public AjaxResult getInfo(@PathVariable("id") String id) {
// return success(qcGoalService.selectQcGoalById(id));
// }
//
// /**
// * 获取质量目标下拉树列表
// */
// @GetMapping("/treeSelect")
// public AjaxResult treeSelect(QcGoal qcGoal) {
// List<QcGoal> qcGoals = qcGoalService.selectQcGoalList(qcGoal);
// return success(qcGoalService.buildQcGoalTreeSelect(qcGoals));
// }
//
// /**
// * 新增质量目标
// */
// @RequiresPermissions("quality:qcGoal:add")
// @Log(title = "质量目标", businessType = BusinessType.INSERT)
// @PostMapping
// public AjaxResult add(@RequestBody QcGoal qcGoal) {
// return toAjax(qcGoalService.insertQcGoal(qcGoal));
// }
//
// /**
// * 拆解质量目标
// */
// @GetMapping("/generate/{id}")
// public TableDataInfo generate(@PathVariable("id") String id) {
// List<QcGoal> qcGoalList = qcGoalService.generate(id);
// return getDataTable(qcGoalList);
// }
//
//
// /**
// * 修改质量目标
// */
// @RequiresPermissions("quality:qcGoal:edit")
// @Log(title = "质量目标", businessType = BusinessType.UPDATE)
// @PutMapping
// public AjaxResult edit(@RequestBody QcGoal qcGoal) {
// return toAjax(qcGoalService.updateQcGoal(qcGoal));
// }
//
// /**
// * 删除质量目标
// */
// @RequiresPermissions("quality:qcGoal:remove")
// @Log(title = "质量目标", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable String[] ids) {
// int rows = qcGoalService.deleteQcGoalByIds(ids);
// if (rows > 0 ) {
// return success("操作成功");
// }else {
// return error("操作失败,请检查要删除的项目是否含有子项目");
// }
// }
}

@ -0,0 +1,118 @@
package com.op.quality.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.op.quality.domain.QcGoal;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.op.common.log.annotation.Log;
import com.op.common.log.enums.BusinessType;
import com.op.common.security.annotation.RequiresPermissions;
import com.op.quality.domain.QcGoalDistribute;
//import com.op.quality.service.IQcGoalDistributeService;
import com.op.common.core.web.controller.BaseController;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.core.utils.poi.ExcelUtil;
import com.op.common.core.web.page.TableDataInfo;
/**
* Controller
*
* @author Open Platform
* @date 2024-03-07
*/
@RestController
@RequestMapping("/qcGoalDistribute")
public class QcGoalDistributeController extends BaseController {
// @Autowired
// private IQcGoalDistributeService qcGoalDistributeService;
//
///**
// * 查询质量目标分配列表
// */
//@RequiresPermissions("quality:qcGoalDistribute:list")
//@GetMapping("/list")
// public TableDataInfo list(QcGoalDistribute qcGoalDistribute) {
// startPage();
// List<QcGoalDistribute> list = qcGoalDistributeService.selectQcGoalDistributeList(qcGoalDistribute);
// return getDataTable(list);
// }
//
// /**
// * 导出质量目标分配列表
// */
// @RequiresPermissions("quality:qcGoalDistribute:export")
// @Log(title = "质量目标分配", businessType = BusinessType.EXPORT)
// @PostMapping("/export")
// public void export(HttpServletResponse response, QcGoalDistribute qcGoalDistribute) {
// List<QcGoalDistribute> list = qcGoalDistributeService.selectQcGoalDistributeList(qcGoalDistribute);
// ExcelUtil<QcGoalDistribute> util = new ExcelUtil<QcGoalDistribute>(QcGoalDistribute. class);
// util.exportExcel(response, list, "质量目标分配数据");
// }
//
// /**
// * 获取质量目标分配详细信息
// */
// @RequiresPermissions("quality:qcGoalDistribute:query")
// @GetMapping(value = "/{id}")
// public AjaxResult getInfo(@PathVariable("id") String id) {
// return success(qcGoalDistributeService.selectQcGoalDistributeById(id));
// }
//
// /**
// * 新增质量目标分配
// */
// @Log(title = "质量目标分配", businessType = BusinessType.INSERT)
// @PostMapping
// public AjaxResult add(@RequestBody QcGoalDistribute qcGoalDistribute) {
// return toAjax(qcGoalDistributeService.insertQcGoalDistribute(qcGoalDistribute));
// }
//
// /**
// * 修改质量目标分配
// */
// @RequiresPermissions("quality:qcGoalDistribute:edit")
// @Log(title = "质量目标分配", businessType = BusinessType.UPDATE)
// @PutMapping
// public AjaxResult edit(@RequestBody QcGoalDistribute qcGoalDistribute) {
// return toAjax(qcGoalDistributeService.updateQcGoalDistribute(qcGoalDistribute));
// }
//
// /**
// * 删除质量目标分配
// */
// @RequiresPermissions("quality:qcGoalDistribute:remove")
// @Log(title = "质量目标分配", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable String[] ids) {
// return toAjax(qcGoalDistributeService.deleteQcGoalDistributeByIds(ids));
// }
// /**
// * 获取未分配供应商数据
// */
// @GetMapping(value = "/getLeftList")
// public TableDataInfo getLeftList(QcGoalDistribute qcGoalDistribute) {
// startPage();
// List<QcGoalDistribute> list = qcGoalDistributeService.getLeftList(qcGoalDistribute);
// return getDataTable(list);
// }
//
// /**
// * 获取已分配供应商数据
// */
// @GetMapping(value = "/getRightList")
// public TableDataInfo getRightList(QcGoalDistribute qcGoalDistribute) {
// startPage();
// List<QcGoalDistribute> list = qcGoalDistributeService.getRightList(qcGoalDistribute);
// return getDataTable(list);
// }
}

@ -189,6 +189,12 @@ public class QuaController extends BaseController {
if(CollectionUtils.isEmpty(qcCheckTaskIncome.getQcCheckTaskDetails())){
return error("[List<QcCheckTaskDetail>]不能为空");
}
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateBy())){
return error("[updateBy]不能为空");
}
if(StringUtils.isBlank(qcCheckTaskIncome.getUpdateByName())){
return error("[updateByName]不能为空");
}
return toAjax(qcCheckTaskIncomeService.commitCheckResults(qcCheckTaskIncome));
}
/**

@ -0,0 +1,558 @@
package com.op.quality.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
* qc_check_task_market
*
* @author Open Platform
* @date 2024-01-12
*/
public class QcCheckTaskMarket extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String recordId;
/**
*
*/
@Excel(name = "检验任务编号")
private String checkNo;
/**
*
*/
@Excel(name = "来料批次号")
private String incomeBatchNo;
/**
*
*/
@Excel(name = "订单号")
private String orderNo;
/**
*
*/
@Excel(name = "物料号")
private String materialCode;
/**
*
*/
@Excel(name = "物料名称")
private String materialName;
/**
*
*/
@Excel(name = "收货数量")
private BigDecimal quality;
/**
*
*/
@Excel(name = "单位")
private String unit;
/**
*
*/
@Excel(name = "供应商编码")
private String supplierCode;
/**
*
*/
@Excel(name = "供应商名称")
private String supplierName;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "来料时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date incomeTime;
/**
*
*/
@Excel(name = "检测地点")
private String checkLoc;
/**
* 012
*/
@Excel(name = "检测状态0待检测1检测中2检测完成")
private String checkStatus;
/**
*
*/
@Excel(name = "检测人工号")
private String checkManCode;
/**
*
*/
@Excel(name = "检测人姓名")
private String checkManName;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "检验时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date checkTime;
/**
* Y
*/
@Excel(name = "检验结果Y合格")
private String checkResult;
/**
* 10
*/
@Excel(name = "是否启用1启用0停用")
private String status;
/**
* 1
*/
@Excel(name = "预留字段1")
private String attr1;
/**
* 2
*/
@Excel(name = "预留字段2")
private String attr2;
/**
* 3
*/
@Excel(name = "预留字段3")
private String attr3;
/**
* 4
*/
@Excel(name = "预留字段4")
private String attr4;
/**
*
*/
@Excel(name = "工厂编码")
private String factoryCode;
/**
* 10
*/
private String delFlag;
/**
*
*/
@Excel(name = "检验节点")
private String checkType;
/**
*
*/
@Excel(name = "不合格数量")
private BigDecimal noOkQuality;
/**
*
*/
@Excel(name = "抽样数量")
private BigDecimal sampleQuality;
/**
* A
*/
@Excel(name = "A类不良")
private BigDecimal aNoOkquality;
/**
* B
*/
@Excel(name = "B类不良")
private BigDecimal bNoOkquality;
/**
* C
*/
@Excel(name = "C类不良")
private BigDecimal cNoOkquality;
/**
*
*/
@Excel(name = "检验节点大类")
private String typeCode;
/**
*
*/
@Excel(name = "订单类型")
private String orderType;
private String incomeTimeStart;
private String incomeTimeEnd;
private String checkTimeStart;
private String checkTimeEnd;
private List<QcCheckTaskDefect> defects;
public void setRecordId(String recordId) {
this.recordId = recordId;
}
public String getRecordId() {
return recordId;
}
public void setCheckNo(String checkNo) {
this.checkNo = checkNo;
}
public String getCheckNo() {
return checkNo;
}
public void setIncomeBatchNo(String incomeBatchNo) {
this.incomeBatchNo = incomeBatchNo;
}
public String getIncomeBatchNo() {
return incomeBatchNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
public String getOrderNo() {
return orderNo;
}
public void setMaterialCode(String materialCode) {
this.materialCode = materialCode;
}
public String getMaterialCode() {
return materialCode;
}
public void setMaterialName(String materialName) {
this.materialName = materialName;
}
public String getMaterialName() {
return materialName;
}
public void setQuality(BigDecimal quality) {
this.quality = quality;
}
public BigDecimal getQuality() {
return quality;
}
public void setUnit(String unit) {
this.unit = unit;
}
public String getUnit() {
return unit;
}
public void setSupplierCode(String supplierCode) {
this.supplierCode = supplierCode;
}
public String getSupplierCode() {
return supplierCode;
}
public void setSupplierName(String supplierName) {
this.supplierName = supplierName;
}
public String getSupplierName() {
return supplierName;
}
public void setIncomeTime(Date incomeTime) {
this.incomeTime = incomeTime;
}
public Date getIncomeTime() {
return incomeTime;
}
public void setCheckLoc(String checkLoc) {
this.checkLoc = checkLoc;
}
public String getCheckLoc() {
return checkLoc;
}
public void setCheckStatus(String checkStatus) {
this.checkStatus = checkStatus;
}
public String getCheckStatus() {
return checkStatus;
}
public void setCheckManCode(String checkManCode) {
this.checkManCode = checkManCode;
}
public String getCheckManCode() {
return checkManCode;
}
public void setCheckManName(String checkManName) {
this.checkManName = checkManName;
}
public String getCheckManName() {
return checkManName;
}
public void setCheckTime(Date checkTime) {
this.checkTime = checkTime;
}
public Date getCheckTime() {
return checkTime;
}
public void setCheckResult(String checkResult) {
this.checkResult = checkResult;
}
public String getCheckResult() {
return checkResult;
}
public void setStatus(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
public void setAttr1(String attr1) {
this.attr1 = attr1;
}
public String getAttr1() {
return attr1;
}
public void setAttr2(String attr2) {
this.attr2 = attr2;
}
public String getAttr2() {
return attr2;
}
public void setAttr3(String attr3) {
this.attr3 = attr3;
}
public String getAttr3() {
return attr3;
}
public void setAttr4(String attr4) {
this.attr4 = attr4;
}
public String getAttr4() {
return attr4;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}
public String getFactoryCode() {
return factoryCode;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public void setCheckType(String checkType) {
this.checkType = checkType;
}
public String getCheckType() {
return checkType;
}
public BigDecimal getNoOkQuality() {
return noOkQuality;
}
public void setNoOkQuality(BigDecimal noOkQuality) {
this.noOkQuality = noOkQuality;
}
public void setSampleQuality(BigDecimal sampleQuality) {
this.sampleQuality = sampleQuality;
}
public BigDecimal getSampleQuality() {
return sampleQuality;
}
public void setaNoOkquality(BigDecimal aNoOkquality) {
this.aNoOkquality = aNoOkquality;
}
public BigDecimal getaNoOkquality() {
return aNoOkquality;
}
public void setbNoOkquality(BigDecimal bNoOkquality) {
this.bNoOkquality = bNoOkquality;
}
public BigDecimal getbNoOkquality() {
return bNoOkquality;
}
public void setcNoOkquality(BigDecimal cNoOkquality) {
this.cNoOkquality = cNoOkquality;
}
public BigDecimal getcNoOkquality() {
return cNoOkquality;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public String getTypeCode() {
return typeCode;
}
public void setOrderType(String orderType) {
this.orderType = orderType;
}
public String getOrderType() {
return orderType;
}
public String getIncomeTimeStart() {
return incomeTimeStart;
}
public void setIncomeTimeStart(String incomeTimeStart) {
this.incomeTimeStart = incomeTimeStart;
}
public String getIncomeTimeEnd() {
return incomeTimeEnd;
}
public void setIncomeTimeEnd(String incomeTimeEnd) {
this.incomeTimeEnd = incomeTimeEnd;
}
public String getCheckTimeStart() {
return checkTimeStart;
}
public void setCheckTimeStart(String checkTimeStart) {
this.checkTimeStart = checkTimeStart;
}
public String getCheckTimeEnd() {
return checkTimeEnd;
}
public void setCheckTimeEnd(String checkTimeEnd) {
this.checkTimeEnd = checkTimeEnd;
}
public List<QcCheckTaskDefect> getDefects() {
return defects;
}
public void setDefects(List<QcCheckTaskDefect> defects) {
this.defects = defects;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("recordId", getRecordId())
.append("checkNo", getCheckNo())
.append("incomeBatchNo", getIncomeBatchNo())
.append("orderNo", getOrderNo())
.append("materialCode", getMaterialCode())
.append("materialName", getMaterialName())
.append("quality", getQuality())
.append("unit", getUnit())
.append("supplierCode", getSupplierCode())
.append("supplierName", getSupplierName())
.append("incomeTime", getIncomeTime())
.append("checkLoc", getCheckLoc())
.append("checkStatus", getCheckStatus())
.append("checkManCode", getCheckManCode())
.append("checkManName", getCheckManName())
.append("checkTime", getCheckTime())
.append("checkResult", getCheckResult())
.append("status", getStatus())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("factoryCode", getFactoryCode())
.append("delFlag", getDelFlag())
.append("checkType", getCheckType())
.append("nookQuality", getNoOkQuality())
.append("sampleQuality", getSampleQuality())
.append("aNoOkquality", getaNoOkquality())
.append("bNoOkquality", getbNoOkquality())
.append("cNoOkquality", getcNoOkquality())
.append("typeCode", getTypeCode())
.append("orderType", getOrderType())
.toString();
}
}

@ -0,0 +1,273 @@
package com.op.quality.domain;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
/**
* qc_goal
*
* @author Open Platform
* @date 2024-03-04
*/
public class QcGoal extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
*
*/
@Excel(name = "目标年份", readConverterExp = "月=份")
private String goalYm;
/**
*
*/
@Excel(name = "目标类别")
private String goalType;
/**
*
*/
@Excel(name = "不良率")
private BigDecimal nookRate;
/**
*
*/
@Excel(name = "抽样比例")
private BigDecimal nookQualityRate;
/**
* 1
*/
@Excel(name = "预留字段1")
private String attr1;
/**
* 2
*/
@Excel(name = "预留字段2")
private String attr2;
/**
* 3
*/
@Excel(name = "预留字段3")
private String attr3;
/**
* 4
*/
@Excel(name = "预留字段4")
private String attr4;
/**
*
*/
@Excel(name = "工厂编码")
private String factoryCode;
/**
* 10
*/
private String delFlag;
/**
*
*/
@Excel(name = "检验节点小节点")
private String checkType;
/**
*
*/
@Excel(name = "检验节点大类")
private String typeCode;
/**
*
*/
@Excel(name = "适配范围")
private String scope;
/**
*
*/
@Excel(name = "父级目标")
private String parentGoal;
private Boolean hasChildren;
private List<QcGoal> children = new ArrayList<>();
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setGoalYm(String goalYm) {
this.goalYm = goalYm;
}
public String getGoalYm() {
return goalYm;
}
public void setGoalType(String goalType) {
this.goalType = goalType;
}
public String getGoalType() {
return goalType;
}
public void setNookRate(BigDecimal nookRate) {
this.nookRate = nookRate;
}
public BigDecimal getNookRate() {
return nookRate;
}
public void setNookQualityRate(BigDecimal nookQualityRate) {
this.nookQualityRate = nookQualityRate;
}
public BigDecimal getNookQualityRate() {
return nookQualityRate;
}
public void setAttr1(String attr1) {
this.attr1 = attr1;
}
public String getAttr1() {
return attr1;
}
public void setAttr2(String attr2) {
this.attr2 = attr2;
}
public String getAttr2() {
return attr2;
}
public void setAttr3(String attr3) {
this.attr3 = attr3;
}
public String getAttr3() {
return attr3;
}
public void setAttr4(String attr4) {
this.attr4 = attr4;
}
public String getAttr4() {
return attr4;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}
public String getFactoryCode() {
return factoryCode;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public void setCheckType(String checkType) {
this.checkType = checkType;
}
public String getCheckType() {
return checkType;
}
public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
}
public String getTypeCode() {
return typeCode;
}
public void setScope(String scope) {
this.scope = scope;
}
public String getScope() {
return scope;
}
public void setParentGoal(String parentGoal) {
this.parentGoal = parentGoal;
}
public String getParentGoal() {
return parentGoal;
}
public Boolean getHasChildren() {
return hasChildren;
}
public void setHasChildren(Boolean hasChildren) {
this.hasChildren = hasChildren;
}
public List<QcGoal> getChildren() {
return children;
}
public void setChildren(List<QcGoal> children) {
this.children = children;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("goalYm", getGoalYm())
.append("goalType", getGoalType())
.append("nookRate", getNookRate())
.append("nookQualityRate", getNookQualityRate())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("factoryCode", getFactoryCode())
.append("delFlag", getDelFlag())
.append("checkType", getCheckType())
.append("typeCode", getTypeCode())
.append("scope", getScope())
.append("parentGoal", getParentGoal())
.toString();
}
}

@ -0,0 +1,216 @@
package com.op.quality.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import java.util.List;
/**
* qc_goal_distribute
*
* @author Open Platform
* @date 2024-03-07
*/
public class QcGoalDistribute extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* id
*/
@Excel(name = "所属质量目标id")
private String belongGoalId;
/**
* ()
*/
@Excel(name = "供应商(产品)编码")
private String supplierCode;
/**
* ()
*/
@Excel(name = "供应商(产品)名称")
private String supplierName;
/**
* 1
*/
@Excel(name = "预留字段1")
private String attr1;
/**
* 2
*/
@Excel(name = "预留字段2")
private String attr2;
/**
* 3
*/
@Excel(name = "预留字段3")
private String attr3;
/**
* 4
*/
@Excel(name = "预留字段4")
private String attr4;
/**
*
*/
@Excel(name = "工厂编码")
private String factoryCode;
/**
* 10
*/
private String delFlag;
private String label;
private String key;
private String[] SupplierCodes;
private List<String> selectedValues;
public void setId(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setBelongGoalId(String belongGoalId) {
this.belongGoalId = belongGoalId;
}
public String getBelongGoalId() {
return belongGoalId;
}
public void setSupplierCode(String supplierCode) {
this.supplierCode = supplierCode;
}
public String getSupplierCode() {
return supplierCode;
}
public void setSupplierName(String supplierName) {
this.supplierName = supplierName;
}
public String getSupplierName() {
return supplierName;
}
public void setAttr1(String attr1) {
this.attr1 = attr1;
}
public String getAttr1() {
return attr1;
}
public void setAttr2(String attr2) {
this.attr2 = attr2;
}
public String getAttr2() {
return attr2;
}
public void setAttr3(String attr3) {
this.attr3 = attr3;
}
public String getAttr3() {
return attr3;
}
public void setAttr4(String attr4) {
this.attr4 = attr4;
}
public String getAttr4() {
return attr4;
}
public void setFactoryCode(String factoryCode) {
this.factoryCode = factoryCode;
}
public String getFactoryCode() {
return factoryCode;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String[] getSupplierCodes() {
return SupplierCodes;
}
public void setSupplierCodes(String[] supplierCodes) {
SupplierCodes = supplierCodes;
}
public List<String> getSelectedValues() {
return selectedValues;
}
public void setSelectedValues(List<String> selectedValues) {
this.selectedValues = selectedValues;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("belongGoalId", getBelongGoalId())
.append("supplierCode", getSupplierCode())
.append("supplierName", getSupplierName())
.append("attr1", getAttr1())
.append("attr2", getAttr2())
.append("attr3", getAttr3())
.append("attr4", getAttr4())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("factoryCode", getFactoryCode())
.append("delFlag", getDelFlag())
.toString();
}
}

@ -50,6 +50,24 @@ public class QcInterface extends BaseEntity {
private String productDateStart;
private String ProductDateEnd;
private String nameDate;
private List<String> dataBarArrays;
private List<String> dataLineArrays;
public List<String> getDataBarArrays() {
return dataBarArrays;
}
public void setDataBarArrays(List<String> dataBarArrays) {
this.dataBarArrays = dataBarArrays;
}
public List<String> getDataLineArrays() {
return dataLineArrays;
}
public void setDataLineArrays(List<String> dataLineArrays) {
this.dataLineArrays = dataLineArrays;
}
public String getNameDate() {
return nameDate;

@ -1,9 +1,11 @@
package com.op.quality.domain.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.op.quality.domain.QcGoal;
import com.op.quality.domain.QcMaterialGroup;
import javax.xml.bind.annotation.XmlEnum;
import java.io.Serializable;
import java.util.List;
import java.util.stream.Collectors;
@ -42,6 +44,12 @@ public class TreeSelect implements Serializable {
this.children = qcMaterialGroup.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public TreeSelect(QcGoal qcGoal) {
this.id = qcGoal.getId();
this.label = qcGoal.getGoalYm();
this.children = qcGoal.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public String getId() {
return id;
}

@ -1,5 +1,6 @@
package com.op.quality.mapper;
import java.util.Date;
import java.util.List;
import com.op.quality.domain.*;
@ -102,4 +103,9 @@ public interface QcCheckTaskIncomeMapper {
int deleteQcCheckTaskDefects(String belongId);
List<QcCheckTaskIncome> getCkeckTaskXJList(QcCheckTaskIncome qcCheckTaskIncome);
//查询SRM来料记录表中所有未插入的数据
List<QcCheckTaskIncome> getIncomeBatchList();
int updateIncomeBatchList(@Param("list") List<String> batchRecordIds, @Param("time") Date taskTime);
}

@ -0,0 +1,67 @@
package com.op.quality.mapper;
import com.op.quality.domain.QcCheckTaskMarket;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* Mapper
*
* @author Open Platform
* @date 2024-01-12
*/
@Mapper
public interface QcCheckTaskMarketMapper {
/**
*
*
* @param recordId
* @return
*/
public QcCheckTaskMarket selectQcCheckTaskMarketByRecordId(String recordId);
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
public List<QcCheckTaskMarket> selectQcCheckTaskMarketList(QcCheckTaskMarket qcCheckTaskMarket);
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
public int insertQcCheckTaskMarket(QcCheckTaskMarket qcCheckTaskMarket);
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
public int updateQcCheckTaskMarket(QcCheckTaskMarket qcCheckTaskMarket);
/**
*
*
* @param recordId
* @return
*/
public int deleteQcCheckTaskMarketByRecordId(String recordId);
/**
*
*
* @param recordIds
* @return
*/
public int deleteQcCheckTaskMarketByRecordIds(String[] recordIds);
int getTodayMaxNum(QcCheckTaskMarket qcCheckTaskMarket);
}

@ -0,0 +1,70 @@
package com.op.quality.mapper;
import java.util.List;
import com.op.quality.domain.QcGoalDistribute;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author Open Platform
* @date 2024-03-07
*/
@Mapper
public interface QcGoalDistributeMapper {
/**
*
*
* @param id
* @return
*/
public QcGoalDistribute selectQcGoalDistributeById(String id);
/**
*
*
* @param qcGoalDistribute
* @return
*/
public List<QcGoalDistribute> selectQcGoalDistributeList(QcGoalDistribute qcGoalDistribute);
/**
*
*
* @param qcGoalDistribute
* @return
*/
public int insertQcGoalDistribute(QcGoalDistribute qcGoalDistribute);
/**
*
*
* @param qcGoalDistribute
* @return
*/
public int updateQcGoalDistribute(QcGoalDistribute qcGoalDistribute);
/**
*
*
* @param id
* @return
*/
public int deleteQcGoalDistributeById(String id);
public int deleteQcGoalDistributeByBelongId(String id);
/**
*
*
* @param ids
* @return
*/
public int deleteQcGoalDistributeByIds(String[] ids);
public List<QcGoalDistribute> getGoalDistributeUndo(QcGoalDistribute qcGoalDistribute);
public List<QcGoalDistribute> getGoalDistributeDo(QcGoalDistribute qcGoalDistribute);
}

@ -0,0 +1,75 @@
package com.op.quality.mapper;
import java.util.List;
import com.op.quality.domain.QcGoal;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* Mapper
*
* @author Open Platform
* @date 2024-03-04
*/
@Mapper
public interface QcGoalMapper {
/**
*
*
* @param id
* @return
*/
public QcGoal selectQcGoalById(String id);
/**
*
*
* @param qcGoal
* @return
*/
public List<QcGoal> selectQcGoalList(QcGoal qcGoal);
public List<QcGoal> selectChildrenByParent(QcGoal qcGoal);
/**
*
*
* @param qcGoal
* @return
*/
public int insertQcGoal(QcGoal qcGoal);
/**
*
* @param qcGoalList
* @return
*/
public int insertQcGoalList(@Param("qcGoalList") List<QcGoal> qcGoalList);
/**
*
*
* @param qcGoal
* @return
*/
public int updateQcGoal(QcGoal qcGoal);
/**
*
*
* @param id
* @return
*/
public int deleteQcGoalById(String id);
/**
*
*
* @param ids
* @return
*/
public int deleteQcGoalByIds(String[] ids);
public int getTodayMaxNum(QcGoal qcGoal);
}

@ -35,7 +35,7 @@ public interface QcInterfaceMapper {
@MapKey("ymd")
Map<String, QcInterface> getYearNoOkHz(QcInterface qcInterface);
List<QcProCheck> getLineNames();
List<QcProCheck> getLineNames(String ymd);
@MapKey("ymd")
Map<String, QcInterface> getDayNoOkHz(QcInterface qcInterface);

@ -1,5 +1,6 @@
package com.op.quality.service;
import java.util.Date;
import java.util.List;
import com.op.quality.domain.*;
@ -91,4 +92,8 @@ public interface IQcCheckTaskIncomeService {
List<QcCheckTaskIncome> getCkeckProjectXJList(QcCheckTaskIncome qcCheckTaskIncome);
List<QcDefectType> getDefectListPDA(QcDefectType qcDefectType);
List<QcCheckTaskIncome> getIncomeBatchList(String poolName);
int updateIncomeBatchList(List<String> batchRecordIds , Date taskTime);
}

@ -0,0 +1,61 @@
package com.op.quality.service;
import com.op.quality.domain.QcCheckTaskMarket;
import java.util.List;
/**
* Service
*
* @author Open Platform
* @date 2024-01-12
*/
public interface IQcCheckTaskMarketService {
/**
*
*
* @param recordId
* @return
*/
public QcCheckTaskMarket selectQcCheckTaskMarketByRecordId(String recordId);
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
public List<QcCheckTaskMarket> selectQcCheckTaskMarketList(QcCheckTaskMarket qcCheckTaskMarket);
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
public int insertQcCheckTaskMarket(QcCheckTaskMarket qcCheckTaskMarket);
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
public int updateQcCheckTaskMarket(QcCheckTaskMarket qcCheckTaskMarket);
/**
*
*
* @param recordIds
* @return
*/
public int deleteQcCheckTaskMarketByRecordIds(String[] recordIds);
/**
*
*
* @param recordId
* @return
*/
public int deleteQcCheckTaskMarketByRecordId(String recordId);
}

@ -9,6 +9,7 @@ import com.op.quality.mapper.*;
import com.op.quality.service.IQcCheckReportProduceService;
import com.op.quality.service.IQcStaticTableService;
import com.op.system.api.domain.SysUser;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -18,8 +19,11 @@ import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* Service
@ -206,6 +210,14 @@ public class QcCheckReportProduceServiceImpl implements IQcCheckReportProduceSer
@DS("#header.poolName")
public QcCheckTaskProduce getProduceReportXJ(QcCheckTaskProduce qcCheckTaskProduce) {
QcCheckTaskProduce produce = qcCheckReportIncomeMapper.getTopInfo(qcCheckTaskProduce);
//批次号去重
if(StringUtils.isNotBlank(produce.getIncomeBatchNo())){
List<String> batchNos = Arrays.asList(produce.getIncomeBatchNo().split(";"));
List<String> disBatchNos = batchNos.stream().distinct().collect(Collectors.toList());
produce.setIncomeBatchNo(StringUtils.join(disBatchNos, ";"));
}
QcStaticTable qcStaticTable = new QcStaticTable();
qcStaticTable.setOrderNo(qcCheckTaskProduce.getOrderNo());
List<QcStaticTable> checkInfos = qcStaticTableService.getXJCheckTableDetail(qcStaticTable);

@ -156,7 +156,10 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
/**qc_material_group_detail**/
//个性
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskIncome.getMaterialCode());
if(group == null){
// if(group == null){
// return 0;//没有找到检测项目
// }
if(Objects.isNull(group)){
return 0;//没有找到检测项目
}
//共性
@ -708,4 +711,14 @@ public class QcCheckTaskIncomeServiceImpl implements IQcCheckTaskIncomeService {
return n ;
}
@Override
public List<QcCheckTaskIncome> getIncomeBatchList(String poolName) {
DynamicDataSourceContextHolder.push(poolName);//这是数据源的key
return qcCheckTaskIncomeMapper.getIncomeBatchList();
}
@Override
public int updateIncomeBatchList(List<String> batchRecordIds , Date taskTime){
return qcCheckTaskIncomeMapper.updateIncomeBatchList(batchRecordIds ,taskTime);
}
}

@ -56,6 +56,9 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer
@Autowired
private IQcCheckTaskDefectService qcCheckTaskDefectService;
@Autowired
private QcSampleRuleMapper qcSampleRuleMapper;
/**
*
*
@ -203,6 +206,16 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer
}
qcCheckTaskInventory.setNoOkQuality(noOkQuality);
/**qc_sample_rule**/
if(qcCheckTaskInventory.getNoOkQuality()==null) {
QcCheckTaskIncome sampQua = new QcCheckTaskIncome();
sampQua.setCheckType(qcCheckTaskInventory.getCheckType());
sampQua.setQuality(qcCheckTaskInventory.getQuality());
String sampNum = qcSampleRuleMapper.getSampNum(sampQua);
if (StringUtils.isNotBlank(sampNum)) {
qcCheckTaskInventory.setSampleQuality(new BigDecimal(sampNum));
}
}
/**qc_check_task**/
qcCheckTaskInventoryMapper.insertQcCheckTaskInventory(qcCheckTaskInventory);

@ -0,0 +1,300 @@
package com.op.quality.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.StringUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.security.utils.SecurityUtils;
import com.op.quality.domain.*;
import com.op.quality.mapper.*;
import com.op.quality.service.IQcCheckTaskDefectService;
import com.op.quality.service.IQcCheckTaskMarketService;
import com.op.quality.service.IQcCheckTaskUserService;
import com.op.system.api.domain.quality.QcUserMaterialDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
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.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* Service
*
* @author Open Platform
* @date 2024-01-12
*/
@Service
public class QcCheckTaskMarketServiceImpl implements IQcCheckTaskMarketService {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private QcCheckTaskMarketMapper qcCheckTaskMarketMapper;
@Autowired
private QcCheckTaskDetailMapper qcCheckTaskDetailMapper;
@Autowired
private QcCheckTypeProjectMapper qcCheckTypeProjectMapper;
@Autowired
private QcMaterialGroupDetailMapper qcMaterialGroupDetailMapper;
@Autowired
private IQcCheckTaskUserService qcCheckTaskUserService;
@Autowired
private QcCheckTaskIncomeMapper qcCheckTaskIncomeMapper;
@Autowired
private IQcCheckTaskDefectService qcCheckTaskDefectService;
@Autowired
private QcSampleRuleMapper qcSampleRuleMapper;
/**
*
*
* @param recordId
* @return
*/
@Override
@DS("#header.poolName")
public QcCheckTaskMarket selectQcCheckTaskMarketByRecordId(String recordId) {
QcCheckTaskMarket qcCheckTaskMarket = qcCheckTaskMarketMapper.selectQcCheckTaskMarketByRecordId(recordId);
//获取拼接好的检验人员信息
QcCheckTaskUser qcCheckTaskUser = qcCheckTaskUserService.selectQcCheckTaskUserByBelongTo(recordId);
if (qcCheckTaskUser != null && StringUtils.isNotBlank(qcCheckTaskUser.getManNames())) {
qcCheckTaskMarket.setCheckManName(qcCheckTaskUser.getManNames());
}
if (qcCheckTaskUser != null && StringUtils.isNotBlank(qcCheckTaskUser.getManCodes())) {
qcCheckTaskMarket.setCheckManCode(qcCheckTaskUser.getManCodes());
}
//获取不良品检验信息
List<QcCheckTaskDefect> qcCheckTaskDefectList = qcCheckTaskDefectService.selectDefectByBelongTo(recordId);
if (!CollectionUtils.isEmpty(qcCheckTaskDefectList)) {
qcCheckTaskMarket.setDefects(qcCheckTaskDefectList);
}
return qcCheckTaskMarket;
}
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
@Override
@DS("#header.poolName")
public List<QcCheckTaskMarket> selectQcCheckTaskMarketList(QcCheckTaskMarket qcCheckTaskMarket) {
qcCheckTaskMarket.setDelFlag("0");
qcCheckTaskMarket.setTypeCode("market");
return qcCheckTaskMarketMapper.selectQcCheckTaskMarketList(qcCheckTaskMarket);
}
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
@Override
@DS("#header.poolName")
public int insertQcCheckTaskMarket(QcCheckTaskMarket qcCheckTaskMarket) {
String factoryCode = "";
if (StringUtils.isNotBlank(qcCheckTaskMarket.getFactoryCode())) {
DynamicDataSourceContextHolder.push("ds_" + qcCheckTaskMarket.getFactoryCode());
factoryCode = qcCheckTaskMarket.getFactoryCode();
} else {
//获取当前所选工厂
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String key = "#header.poolName";
factoryCode = request.getHeader(key.substring(8)).replace("ds_", "");
}
qcCheckTaskMarket.setCreateTime(DateUtils.getNowDate());
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskMarketMapper.getTodayMaxNum(qcCheckTaskMarket);
String liushuiStr = String.format("%04d", liushuiNum);
String createBy = SecurityUtils.getUsername();
Date nowDate = DateUtils.getNowDate();
qcCheckTaskMarket.setCheckNo(bpDD + liushuiStr);
/**取检测项**/
QcCheckTypeProject qctp = new QcCheckTypeProject();
qctp.setTypeId(qcCheckTaskMarket.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskMarket.getMaterialCode());//特性
/**qc_check_type_project**/
List<QcCheckTaskDetail> items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);
if (CollectionUtils.isEmpty(items)) {
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskMarket.getMaterialCode());
if (group == null) {
return 0;//没有找到检测项目
}
qctp.setGroupId(group.getGroupId());//共性
items = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
}
/**qc_check_task_detail**/
if (CollectionUtils.isEmpty(items)) {
return 0;//没有找到检测项目
}
/**qc_check_task**/
String beLongId = IdUtils.fastSimpleUUID();
qcCheckTaskMarket.setRecordId(beLongId);
qcCheckTaskMarket.setFactoryCode(factoryCode);
qcCheckTaskMarket.setCreateTime(nowDate);
qcCheckTaskMarket.setTypeCode("market");//大检验节点
/**qc_task_user start**/
if (StringUtils.isNotBlank(qcCheckTaskMarket.getCheckManName())) {
String checkManName = qcCheckTaskMarket.getCheckManName();
String checkManCode = qcCheckTaskMarket.getCheckManCode();
qcCheckTaskMarket.setCheckManName("");
qcCheckTaskMarket.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskMarket.getCheckNo());
qcCheckTaskUser.setBelongTo(beLongId);
qcCheckTaskUserList.add(qcCheckTaskUser);
}
//检验人插入
qcCheckTaskUserService.insertQcCheckTaskUserList(qcCheckTaskUserList);
} else {//上位机
qcCheckTaskMarket.setCheckManName("");
qcCheckTaskMarket.setCheckManCode("");
/**qc_user_material取默认检查人**/
List<QcUserMaterialDTO> users = qcCheckTaskIncomeMapper.getUserByMaterial(qcCheckTaskMarket.getMaterialCode());
if (!CollectionUtils.isEmpty(users)) {
for (QcUserMaterialDTO user : users) {
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
user.setCheckNo(qcCheckTaskMarket.getCheckNo());
user.setCreateBy(createBy);
user.setFactoryCode(factoryCode);
user.setCreateTime(nowDate);
}
int m = qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增" + m + "成功");
}
}
/** 不良品数据插入 */
if(qcCheckTaskMarket.getNoOkQuality()==null){
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskMarket.getDefects();
if (!CollectionUtils.isEmpty(defectList)) {
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(beLongId);
qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality() == null ? new BigDecimal("0") : defect.getNoOkQuality());
}
}
qcCheckTaskMarket.setNoOkQuality(noOkQuality);
}
/**qc_sample_rule**/
QcCheckTaskIncome sampQua = new QcCheckTaskIncome();
sampQua.setCheckType(qcCheckTaskMarket.getCheckType());
sampQua.setQuality(qcCheckTaskMarket.getQuality());
String sampNum = qcSampleRuleMapper.getSampNum(sampQua);
if(StringUtils.isNotBlank(sampNum)){
qcCheckTaskMarket.setSampleQuality(new BigDecimal(sampNum));
}
/**qc_check_task**/
qcCheckTaskMarketMapper.insertQcCheckTaskMarket(qcCheckTaskMarket);
/**qc_check_task_detail**/
for (QcCheckTaskDetail item : items) {
item.setRecordId(IdUtils.fastSimpleUUID());
item.setBelongTo(beLongId);
item.setCreateTime(nowDate);
item.setCreateBy(createBy);
item.setFactoryCode(factoryCode);
item.setStatus("N");
}
return qcCheckTaskDetailMapper.addBatch(items);
}
/**
*
*
* @param qcCheckTaskMarket
* @return
*/
@Override
@DS("#header.poolName")
public int updateQcCheckTaskMarket(QcCheckTaskMarket qcCheckTaskMarket) {
qcCheckTaskMarket.setUpdateTime(DateUtils.getNowDate());
/** qc_task_user**/
String checkManName = qcCheckTaskMarket.getCheckManName();
String checkManCode = qcCheckTaskMarket.getCheckManCode();
qcCheckTaskMarket.setCheckManName("");
qcCheckTaskMarket.setCheckManCode("");
String[] splitNames = checkManName.split(",");
String[] splitCodes = checkManCode.split(",");
List<QcCheckTaskUser> qcCheckTaskUserList = new ArrayList<>();
for (int i = 0; i < splitNames.length; i++) {
QcCheckTaskUser qcCheckTaskUser = new QcCheckTaskUser();
qcCheckTaskUser.setCheckManName(splitNames[i]);
qcCheckTaskUser.setCheckManCode(splitCodes[i]);
qcCheckTaskUser.setCheckNo(qcCheckTaskMarket.getCheckNo());
qcCheckTaskUser.setBelongTo(qcCheckTaskMarket.getRecordId());
qcCheckTaskUserList.add(qcCheckTaskUser);
}
qcCheckTaskUserService.updateQcCheckTaskUser(qcCheckTaskUserList);
/** 不良品数据修改 **/
BigDecimal noOkQuality = new BigDecimal(0);
List<QcCheckTaskDefect> defectList = qcCheckTaskMarket.getDefects();
String belongTo = qcCheckTaskMarket.getRecordId();
//不是空执行下一步,空不做操作
if (!CollectionUtils.isEmpty(defectList)) {
qcCheckTaskDefectService.deleteQcCheckTaskDefectByBelongTo(belongTo);
for (QcCheckTaskDefect defect : defectList) {
defect.setBelongTo(belongTo);
qcCheckTaskDefectService.insertQcCheckTaskDefect(defect);
noOkQuality = noOkQuality.add(defect.getNoOkQuality() == null ? new BigDecimal("0") : defect.getNoOkQuality());
}
}
qcCheckTaskMarket.setNoOkQuality(noOkQuality);
return qcCheckTaskMarketMapper.updateQcCheckTaskMarket(qcCheckTaskMarket);
}
/**
*
*
* @param recordIds
* @return
*/
@Override
@DS("#header.poolName")
public int deleteQcCheckTaskMarketByRecordIds(String[] recordIds) {
return qcCheckTaskMarketMapper.deleteQcCheckTaskMarketByRecordIds(recordIds);
}
/**
*
*
* @param recordId
* @return
*/
@Override
@DS("#header.poolName")
public int deleteQcCheckTaskMarketByRecordId(String recordId) {
return qcCheckTaskMarketMapper.deleteQcCheckTaskMarketByRecordId(recordId);
}
}

@ -0,0 +1,153 @@
//package com.op.quality.service.impl;
//
//import java.util.Date;
//import java.util.List;
//
//import com.baomidou.dynamic.datasource.annotation.DS;
//import com.op.common.core.utils.DateUtils;
//import com.op.common.core.utils.StringUtils;
//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.quality.mapper.QcGoalDistributeMapper;
//import com.op.quality.domain.QcGoalDistribute;
//import com.op.quality.service.IQcGoalDistributeService;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//
///**
// * 质量目标分配Service业务层处理
// *
// * @author Open Platform
// * @date 2024-03-07
// */
//@Service
//public class QcGoalDistributeServiceImpl implements IQcGoalDistributeService {
// @Autowired
// private QcGoalDistributeMapper qcGoalDistributeMapper;
//
// /**
// * 查询质量目标分配
// *
// * @param id 质量目标分配主键
// * @return 质量目标分配
// */
// @Override
// @DS("#header.poolName")
// public QcGoalDistribute selectQcGoalDistributeById(String id) {
// return qcGoalDistributeMapper.selectQcGoalDistributeById(id);
// }
//
// /**
// * 查询质量目标分配列表
// *
// * @param qcGoalDistribute 质量目标分配
// * @return 质量目标分配
// */
// @Override
// @DS("#header.poolName")
// public List<QcGoalDistribute> selectQcGoalDistributeList(QcGoalDistribute qcGoalDistribute) {
// return qcGoalDistributeMapper.selectQcGoalDistributeList(qcGoalDistribute);
// }
//
// /**
// * 新增质量目标分配
// *
// * @param qcGoalDistribute 质量目标分配
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int insertQcGoalDistribute(QcGoalDistribute qcGoalDistribute) {
//
// if (StringUtils.isNotEmpty(qcGoalDistribute.getBelongGoalId())) {
// qcGoalDistributeMapper.deleteQcGoalDistributeByBelongId(qcGoalDistribute.getBelongGoalId());
// }
// int count = 0;
// if (qcGoalDistribute.getSelectedValues().size() > 0){
// QcGoalDistribute dto = null;
// Date now = DateUtils.getNowDate();
// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// String key = "#header.poolName";
// String factoryCode = request.getHeader(key.substring(8)).replace("ds_", "");
// for (String supplierCode : qcGoalDistribute.getSelectedValues()) {
// dto = new QcGoalDistribute();
// dto.setId(IdUtils.fastSimpleUUID());
// dto.setCreateTime(now);
// dto.setCreateBy(SecurityUtils.getUsername());
// dto.setBelongGoalId(qcGoalDistribute.getBelongGoalId());
// dto.setSupplierCode(supplierCode);
// dto.setFactoryCode(factoryCode);
// count += qcGoalDistributeMapper.insertQcGoalDistribute(dto);
// }
// }else {
// count = 1;
// }
// return count;
// }
//
// /**
// * 修改质量目标分配
// *
// * @param qcGoalDistribute 质量目标分配
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int updateQcGoalDistribute(QcGoalDistribute qcGoalDistribute) {
// qcGoalDistribute.setUpdateTime(DateUtils.getNowDate());
// return qcGoalDistributeMapper.updateQcGoalDistribute(qcGoalDistribute);
// }
//
// /**
// * 批量删除质量目标分配
// *
// * @param ids 需要删除的质量目标分配主键
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int deleteQcGoalDistributeByIds(String[] ids) {
// return qcGoalDistributeMapper.deleteQcGoalDistributeByIds(ids);
// }
//
// /**
// * 删除质量目标分配信息
// *
// * @param id 质量目标分配主键
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int deleteQcGoalDistributeById(String id) {
// return qcGoalDistributeMapper.deleteQcGoalDistributeById(id);
// }
//
// @Override
// @DS("#header.poolName")
// public List<QcGoalDistribute> getLeftList(QcGoalDistribute qcGoalDistribute) {
// List<QcGoalDistribute> dto = qcGoalDistributeMapper.getGoalDistributeUndo(qcGoalDistribute);
// List<QcGoalDistribute> selected = qcGoalDistributeMapper.getGoalDistributeDo(qcGoalDistribute);
// dto.addAll(selected);
// dto.forEach(item -> {
// item.setKey(item.getSupplierCode());
// });
// return dto;
// }
//
// @Override
// @DS("#header.poolName")
// public List<QcGoalDistribute> getRightList(QcGoalDistribute qcGoalDistribute) {
// List<QcGoalDistribute> selected = qcGoalDistributeMapper.getGoalDistributeDo(qcGoalDistribute);
// selected.forEach(item -> {
// item.setKey(item.getSupplierCode());
// });
// return selected;
// }
//
//
//
//}

@ -0,0 +1,245 @@
//package com.op.quality.service.impl;
//
//import java.math.BigDecimal;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.Iterator;
//import java.util.List;
//import java.util.stream.Collectors;
//
//import com.baomidou.dynamic.datasource.annotation.DS;
//import com.op.common.core.utils.DateUtils;
//import com.op.common.security.utils.SecurityUtils;
//import com.op.quality.domain.vo.TreeSelect;
//import com.sun.xml.bind.v2.TODO;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import com.op.quality.mapper.QcGoalMapper;
//import com.op.quality.domain.QcGoal;
//import com.op.quality.service.IQcGoalService;
//import org.springframework.util.ObjectUtils;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//
///**
// * 质量目标Service业务层处理
// *
// * @author Open Platform
// * @date 2024-03-04
// */
//@Service
//public class QcGoalServiceImpl implements IQcGoalService {
// @Autowired
// private QcGoalMapper qcGoalMapper;
//
// /**
// * 查询质量目标
// *
// * @param id 质量目标主键
// * @return 质量目标
// */
// @Override
// @DS("#header.poolName")
// public QcGoal selectQcGoalById(String id) {
// return qcGoalMapper.selectQcGoalById(id);
// }
//
// /**
// * 查询质量目标列表
// *
// * @param qcGoal 质量目标
// * @return 质量目标
// */
// @Override
// @DS("#header.poolName")
// public List<QcGoal> selectQcGoalList(QcGoal qcGoal) {
// List<QcGoal> qcGoals = qcGoalMapper.selectQcGoalList(qcGoal);
// for (QcGoal item : qcGoals) {
// item.setHasChildren(true);
// }
// return qcGoals;
// }
//
// @Override
// @DS("#header.poolName")
// public List<QcGoal> selectChildrenByParent(QcGoal goal) {
// return qcGoalMapper.selectChildrenByParent(goal);
// }
//
// @Override
// @DS("#header.poolName")
// public List<TreeSelect> buildQcGoalTreeSelect(List<QcGoal> qcGoals) {
// List<QcGoal> qcGoalTrees = buildGoalTree(qcGoals);
// return qcGoalTrees.stream().map(TreeSelect::new).collect(Collectors.toList());
// }
//
// /**
// * 新增质量目标
// *
// * @param qcGoal 质量目标
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int insertQcGoal(QcGoal qcGoal) {
// qcGoal.setCreateTime(DateUtils.getNowDate());
// qcGoal.setCreateBy(SecurityUtils.getUsername());
//
// qcGoal.setId(getSerialNumber(qcGoal));
// qcGoal.setFactoryCode(getFactoryCode());
// qcGoal.setParentGoal("0");
//
// return qcGoalMapper.insertQcGoal(qcGoal);
// }
//
// @Override
// @DS("#header.poolName")
// public List<QcGoal> generate(String id) {
// QcGoal goal = qcGoalMapper.selectQcGoalById(id);
// List<QcGoal> genResult = new ArrayList<>();
//
// // 提前分配大小,有助于减少不必要的计算和内存分配,从而提高代码的性能。
// String goalYm = goal.getGoalYm();
// BigDecimal nookQualityRate = goal.getNookQualityRate();
// BigDecimal nookRate = goal.getNookRate();
// String checkType = goal.getCheckType();
// String typeCode = goal.getTypeCode();
// String factoryCode = getFactoryCode();
// String username = SecurityUtils.getUsername();
// Date nowDate = DateUtils.getNowDate();
// String parentGoal = goal.getId();
//
//
// int liushuiNum = qcGoalMapper.getTodayMaxNum(goal);
// String dateNumber = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
//
// int month = 12;
// for (int i = 1; i <= month; i++) {
// QcGoal monthGoal = new QcGoal();
//
// String liushuiStr = String.format("%04d", liushuiNum+i-1);
// monthGoal.setId(dateNumber+liushuiStr);
// String mon = String.format("%02d",i);
// monthGoal.setGoalYm(goalYm+"-"+mon);
// monthGoal.setGoalType("mm");
// monthGoal.setNookQualityRate(nookQualityRate);
// monthGoal.setNookRate(nookRate);
// monthGoal.setCheckType(checkType);
// monthGoal.setTypeCode(typeCode);
// monthGoal.setScope(goal.getScope());
// monthGoal.setCreateTime(nowDate);
// monthGoal.setCreateBy(username);
// monthGoal.setFactoryCode(factoryCode);
// monthGoal.setParentGoal(parentGoal);
// genResult.add(monthGoal);
// }
// // 批量插入
// int flag = qcGoalMapper.insertQcGoalList(genResult);
// if (flag > 0) {
// return genResult;
// }else {
// return goal.getChildren();
// }
//
// }
//
// /**
// * 修改质量目标
// *
// * @param qcGoal 质量目标
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int updateQcGoal(QcGoal qcGoal) {
// qcGoal.setUpdateTime(DateUtils.getNowDate());
// qcGoal.setUpdateBy(SecurityUtils.getUsername());
// return qcGoalMapper.updateQcGoal(qcGoal);
// }
//
// /**
// * 批量删除质量目标
// *
// * @param ids 需要删除的质量目标主键
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int deleteQcGoalByIds(String[] ids) {
// boolean flag = false;
// for (String id : ids) {
// QcGoal goal = new QcGoal();
// goal.setParentGoal(id);
// List<QcGoal> hasChildren = qcGoalMapper.selectChildrenByParent(goal);
// if (hasChildren.size() > 0) {
// flag = true;
// break;
// }
// }
// if (flag) {
// return 0;
// }else {
// return qcGoalMapper.deleteQcGoalByIds(ids);
// }
// }
//
// /**
// * 删除质量目标信息
// *
// * @param id 质量目标主键
// * @return 结果
// */
// @Override
// @DS("#header.poolName")
// public int deleteQcGoalById(String id) {
// return qcGoalMapper.deleteQcGoalById(id);
// }
//
// @Override
// public List<QcGoal> buildGoalTree(List<QcGoal> qcGoals) {
// List<QcGoal> returnList = new ArrayList<>();
// List<String> tempList = qcGoals.stream().map(QcGoal::getId).collect(Collectors.toList());
// for (Iterator<QcGoal> iterator = qcGoals.iterator(); iterator.hasNext(); ) {
// QcGoal qcGoal = (QcGoal) iterator.next();
// //如果是顶级节点,遍历父节点的所有子节点
// if (!tempList.contains(qcGoal.getParentGoal())) {
// List<QcGoal> childList = getChildList(qcGoals,qcGoal);
// qcGoal.setChildren(childList);
// returnList.add(qcGoal);
// }
// }
// if (returnList.isEmpty()) {
// returnList = qcGoals;
// }
// return returnList;
// }
//
// private List<QcGoal> getChildList(List<QcGoal> list, QcGoal t) {
// List<QcGoal> tlist = new ArrayList<>();
// Iterator<QcGoal> it = list.iterator();
// while (it.hasNext()) {
// QcGoal goal = (QcGoal) it.next();
// if (goal.getParentGoal().equals(t.getId())){
// tlist.add(goal);
// }
// }
// return tlist;
// }
//
// @DS("#header.poolName")
// private String getSerialNumber(QcGoal qcGoal) {
// int liushuiNum = qcGoalMapper.getTodayMaxNum(qcGoal);
// String liushuiStr = String.format("%04d", liushuiNum);
// String dateNumber = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
// return dateNumber + liushuiStr;
// }
// @DS("#header.poolName")
// private String getFactoryCode() {
// HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
// String key = "#header.poolName";
// return request.getHeader(key.substring(8)).replace("ds_", "");
// }
//
//}

@ -42,21 +42,37 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getOverallInfo(qcInterface);
if (!CollectionUtils.isEmpty(dtos) && dtos.size() == 2) {
QcInterface qif = new QcInterface();
qif.setYmdTypeName("okRate");
if (dtos.get(1).getQuality().equals("0")) {
qif.setQuality("100%");
} else {
BigDecimal okRate = (new BigDecimal(dtos.get(0).getQuality())
.subtract(new BigDecimal(dtos.get(1).getQuality())))
.multiply(new BigDecimal("100"))
.divide(new BigDecimal(dtos.get(0).getQuality()), 2, RoundingMode.HALF_UP);
qif.setQuality(okRate.toString() + "%");
}
dtos.add(qif);
}
//发布会
// List<QcInterface> dtos = qcInterfaceMapper.getOverallInfo(qcInterface);
// if (!CollectionUtils.isEmpty(dtos) && dtos.size() == 2) {
// QcInterface qif = new QcInterface();
// qif.setYmdTypeName("okRate");
// if (dtos.get(1).getQuality().equals("0")) {
// qif.setQuality("100%");
// } else {
// BigDecimal okRate = (new BigDecimal(dtos.get(0).getQuality())
// .subtract(new BigDecimal(dtos.get(1).getQuality())))
// .multiply(new BigDecimal("100"))
// .divide(new BigDecimal(dtos.get(0).getQuality()), 2, RoundingMode.HALF_UP);
// qif.setQuality(okRate.toString() + "%");
// }
// dtos.add(qif);
// }
/**质量看板测试开始**/
List<QcInterface> dtos = new ArrayList<>();
QcInterface qi0 = new QcInterface();
qi0.setYmdTypeName("all");
qi0.setQuality("33");
dtos.add(qi0);
QcInterface qi1 = new QcInterface();
qi1.setYmdTypeName("unOk");
qi1.setQuality("0");
dtos.add(qi1);
QcInterface qi2 = new QcInterface();
qi2.setYmdTypeName("okRate");
qi2.setQuality("100%");
dtos.add(qi2);
/**质量看板测试结束**/
return dtos;
}
@ -66,7 +82,32 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPie(qcInterface);
//生产打开List<QcInterface> dtos = qcInterfaceMapper.getCheckProjectsPie(qcInterface);
/**质量看板测试开始**/
List<QcInterface> dtos = new ArrayList<>();
QcInterface q0 = new QcInterface();
q0.setProjectName("热贮稳定性");
q0.setQuality("1");
dtos.add(q0);
QcInterface q1 = new QcInterface();
q1.setProjectName("[香坯包膜]15mm爆口直径");
q1.setQuality("2");
dtos.add(q1);
QcInterface q2 = new QcInterface();
q2.setProjectName("其它不良现象");
q2.setQuality("5");
dtos.add(q2);
QcInterface q3 = new QcInterface();
q3.setProjectName("眼头插孔");
q3.setQuality("1");
dtos.add(q3);
QcInterface q4 = new QcInterface();
q4.setProjectName("厚度(一盘)");
q4.setQuality("2");
dtos.add(q4);
/**质量看板测试结束**/
return dtos;
}
@ -122,6 +163,68 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
dto.setCheckStatus("0".equals(dto.getCheckStatus()) ? "待检测" : "检测完成");
dto.setCheckResult("Y".equals(dto.getCheckResult()) ? "合格" : "不合格");
}
/**质量看板测试开始**/
QcInterface q0 = new QcInterface();
q0.setCheckNo("20240305001");
q0.setIncomeBatchNo("20270122LJ20240123BBBA0G");
q0.setOrderNo("000800000083-1");
q0.setMaterialName("10小时无烟型黑蚊香(繁体)纸盒");
q0.setQuality("19000");
q0.setUnit("个");
q0.setSupplierName("中山市粤华包装有限公司");
q0.setIncomeTime("2024-03-05 00:00:00");
q0.setCheckTime("2024-03-05 11:32:00");
q0.setCheckResult("合格");
q0.setCheckManName("马娥章");
q0.setCheckName("来料检验");
dtos.add(q0);
QcInterface q1 = new QcInterface();
q1.setCheckNo("20240306002");
q1.setIncomeBatchNo("20270122LJ20240123BCCA0F");
q1.setOrderNo("0008000001093-1");
q1.setMaterialName("依素猫狗(黄色)气雾盖");
q1.setQuality("5000");
q1.setUnit("个");
q1.setSupplierName("广州盛盈环保科技有限公司");
q1.setIncomeTime("2024-03-05 00:00:00");
q1.setCheckTime("2024-03-05 13:32:00");
q1.setCheckResult("合格");
q1.setCheckManName("马娥章");
q1.setCheckName("来料检验");
dtos.add(q1);
QcInterface q2 = new QcInterface();
q2.setCheckNo("20240307002");
q2.setIncomeBatchNo("20270122LJ20240456BCCA0D");
q2.setOrderNo("0008000001193-1");
q2.setMaterialName("King Brand蚊片(450装)纸箱");
q2.setQuality("5800");
q2.setUnit("个");
q2.setSupplierName("广州市网能产品设计有限公司");
q2.setIncomeTime("2024-03-07 00:00:00");
q2.setCheckTime("2024-03-07 13:42:00");
q2.setCheckResult("合格");
q2.setCheckManName("马娥章");
q2.setCheckName("来料检验");
dtos.add(q2);
QcInterface q3 = new QcInterface();
q3.setCheckNo("20240308001");
q3.setIncomeBatchNo("20270122LJ20240456BCBB0D");
q3.setOrderNo("0008000001203-1");
q3.setMaterialName("榄菊牌清香型蚊液(空白)纸箱");
q3.setQuality("7800");
q3.setUnit("个");
q3.setSupplierName("广州市网能产品设计有限公司");
q3.setCheckTime("2024-03-05 13:50:00");
q3.setIncomeTime("2024-03-07 00:00:00");
q3.setCheckResult("合格");
q3.setCheckManName("马娥章");
q3.setCheckName("来料检验");
dtos.add(q3);
/**质量看板测试结束**/
return dtos;
}
@ -158,6 +261,15 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
.divide(new BigDecimal(hz2.getQuality()), 2, RoundingMode.HALF_UP);
dtoMap.put("monthOkRate", tOkRate2 + "%");
}
/**质量看板测试开始**/
dtoMap.put("todayPro", "3800");
dtoMap.put("todaySample", "50");
dtoMap.put("todayNoOk", "2");
dtoMap.put("todayOkRate", "96.00%");
dtoMap.put("monthPro", "83600");
dtoMap.put("monthNoOk", "30");
dtoMap.put("monthOkRate", "99.96%");
/**质量看板测试结束**/
return dtoMap;
}
@ -167,6 +279,38 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
String nowYMD = DateUtils.getDate();
qcInterface.setYmd(nowYMD);
List<QcInterface> dtos = qcInterfaceMapper.getProduceNoOkList(qcInterface);
/**质量看板测试开始**/
QcInterface q0 = new QcInterface();
q0.setProjectName("产品外观");
q0.setCheckManName("马娥章");
q0.setCheckTime("2024-03-08 16:30:00");
dtos.add(q0);
QcInterface q1 = new QcInterface();
q1.setProjectName("厚度(一盘)");
q1.setCheckManName("马娥章");
q1.setCheckTime("2024-03-08 15:35:00");
dtos.add(q1);
QcInterface q2 = new QcInterface();
q2.setProjectName("其它不良现象");
q2.setCheckManName("马娥章");
q2.setCheckTime("2024-03-08 15:05:00");
dtos.add(q2);
QcInterface q3 = new QcInterface();
q3.setProjectName("灌装量/净含量/喷药量");
q3.setCheckManName("马娥章");
q3.setCheckTime("2024-03-07 16:00:00");
dtos.add(q3);
QcInterface q4 = new QcInterface();
q4.setProjectName("是否符合签样及材料清单要求,堆板日期朝外");
q4.setCheckManName("马娥章");
q4.setCheckTime("2024-03-05 11:00:00");
dtos.add(q4);
QcInterface q5 = new QcInterface();
q5.setProjectName("其它不良现象");
q5.setCheckManName("马娥章");
q5.setCheckTime("2024-03-05 16:00:00");
dtos.add(q5);
/**质量看板测试结束**/
return dtos;
}
@ -188,7 +332,7 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
for (int mh = 1; mh <= nowMonth; mh++) {
String yyyymm = nowYMDs[1] + "-" + String.format("%02d", mh);
monthNames.add(yyyymm);
if (!CollectionUtils.isEmpty(noOkHzs)) {
if (!CollectionUtils.isEmpty(noOkHzs)&&noOkHzs.get(yyyymm)!=null) {
monthData.add(noOkHzs.get(yyyymm).getNoOkQuality());
} else {
monthData.add("0");
@ -197,7 +341,18 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
dtoMap.put("month", monthNames);
dtoMap.put("monthData", monthData);
/**质量看板测试开始**/
List<String> monthNames0 = new ArrayList<>();
monthNames0.add("2024-01");monthNames0.add("2024-02");monthNames0.add("2024-03");monthNames0.add("2024-04");
monthNames0.add("2024-05");monthNames0.add("2024-06");monthNames0.add("2024-07");monthNames0.add("2024-08");
monthNames0.add("2024-09");monthNames0.add("2024-10");monthNames0.add("2024-11");monthNames0.add("2024-12");
List<String> monthData0 = new ArrayList<>();
monthData0.add("5");monthData0.add("4");monthData0.add("7");monthData0.add("10");monthData0.add("5");
monthData0.add("4");monthData0.add("9");monthData0.add("12");monthData0.add("3");monthData0.add("7");
monthData0.add("5");monthData0.add("2");
dtoMap.put("month", monthNames0);
dtoMap.put("monthData", monthData0);
/**质量看板测试结束**/
return dtoMap;
}
@ -218,7 +373,7 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
List<String> xAxisDatas = getDays(startTime, endTime);
dto.setDayStr(xAxisDatas);//
//通过报工获取到真实参与生产的线体
List<QcProCheck> lines = qcInterfaceMapper.getLineNames();
List<QcProCheck> lines = qcInterfaceMapper.getLineNames(startTime.substring(0,7));
if (CollectionUtils.isEmpty(lines)) {
return null;
}
@ -269,49 +424,64 @@ public class QcInterfaceServiceImpl implements IQcInterfaceService {
}
lastYM.setDayStr(daystr0);
nowYM.setDayStr(daystr1);
//生产打开
// qcInterface.setYmd("'" + nowYear + "','" + lastYear + "'");
//
// Map<String, QcInterface> noOkNum = qcInterfaceMapper.getMothNoOkNum(qcInterface);
// if (noOkNum == null) {
// return null;
// }
//
// List<String> dataBar0 = new ArrayList<>();//不合规数量
// List<String> dataLine0 = new ArrayList<>();//不合格率
// for (String day0 : daystr0) {
// QcInterface last = noOkNum.get(day0);
// if (last != null) {
// dataBar0.add(last.getNoOkQuality());
// BigDecimal norate0 = new BigDecimal(last.getNoOkQuality()).multiply(new BigDecimal(100))
// .divide(new BigDecimal(last.getQuality()), 2, RoundingMode.HALF_UP);
// dataLine0.add(norate0.toString());
// } else {
// dataBar0.add("0");
// dataLine0.add("0.00");
// }
// }
//
// List<String> dataBar1 = new ArrayList<>();//不合规数量
// List<String> dataLine1 = new ArrayList<>();//不合格率
// for (String day1 : daystr1) {
// QcInterface now = noOkNum.get(day1);
// if (now != null) {
// dataBar1.add(now.getNoOkQuality());
// BigDecimal norate0 = new BigDecimal(now.getNoOkQuality()).multiply(new BigDecimal(100))
// .divide(new BigDecimal(now.getQuality()), 2, RoundingMode.HALF_UP);
// dataLine1.add(norate0.toString());
// } else {
// dataBar1.add("0");
// dataLine1.add("0.00");
// }
// }
/**质量看板测试开始**/
List<String> dataBar0 = new ArrayList<>();//不合规数量
List<String> dataLine0 = new ArrayList<>();//不合格率
List<String> dataBar1 = new ArrayList<>();//不合规数量
List<String> dataLine1 = new ArrayList<>();//不合格率
dataBar0.add("4");dataBar0.add("9");dataBar0.add("7");dataBar0.add("13");dataBar0.add("11");dataBar0.add("7");
dataBar0.add("8");dataBar0.add("4");dataBar0.add("5");dataBar0.add("2");dataBar0.add("10");dataBar0.add("6");
dataBar1.add("3");dataBar1.add("14");dataBar1.add("17");dataBar1.add("3");dataBar1.add("9");dataBar1.add("3");
dataBar1.add("8");dataBar1.add("5");dataBar1.add("4");dataBar1.add("2");dataBar1.add("9");dataBar1.add("5");
qcInterface.setYmd("'" + nowYear + "','" + lastYear + "'");
dataLine0.add("1");dataLine0.add("2");dataLine0.add("0.5");dataLine0.add("0.9");dataLine0.add("1");dataLine0.add("1.9");
dataLine0.add("1.1");dataLine0.add("1");dataLine0.add("0.7");dataLine0.add("0.9");dataLine0.add("1.5");dataLine0.add("1.3");
dataLine1.add("0.5");dataLine1.add("1.5");dataLine1.add("0.9");dataLine1.add("1");dataLine1.add("0.7");dataLine1.add("1.9");
dataLine1.add("1.4");dataLine1.add("0.5");dataLine1.add("0.9");dataLine1.add("1");dataLine1.add("1.3");dataLine1.add("1.2");
/**质量看板测试结束**/
Map<String, QcInterface> noOkNum = qcInterfaceMapper.getMothNoOkNum(qcInterface);
if (noOkNum == null) {
return null;
}
lastYM.setDataBarArrays(dataBar0);
lastYM.setDataLineArrays(dataLine0);
List<String> data0 = new ArrayList<>();//不合规数量
List<String> dataStr0 = new ArrayList<>();//不合格率
for (String day0 : daystr0) {
QcInterface last = noOkNum.get(day0);
if (last != null) {
data0.add(last.getNoOkQuality());
BigDecimal norate0 = new BigDecimal(last.getNoOkQuality()).multiply(new BigDecimal(100))
.divide(new BigDecimal(last.getQuality()), 2, RoundingMode.HALF_UP);
dataStr0.add(norate0.toString());
} else {
data0.add("0");
dataStr0.add("0.00");
}
}
List<String> data1 = new ArrayList<>();//不合规数量
List<String> dataStr1 = new ArrayList<>();//不合格率
for (String day1 : daystr1) {
QcInterface now = noOkNum.get(day1);
if (now != null) {
data1.add(now.getNoOkQuality());
BigDecimal norate0 = new BigDecimal(now.getNoOkQuality()).multiply(new BigDecimal(100))
.divide(new BigDecimal(now.getQuality()), 2, RoundingMode.HALF_UP);
dataStr1.add(norate0.toString());
} else {
data1.add("0");
dataStr1.add("0.00");
}
}
lastYM.setData(data0);
lastYM.setDayStr(dataStr0);
nowYM.setData(data1);
nowYM.setDayStr(dataStr1);
nowYM.setDataBarArrays(dataBar1);
nowYM.setDataLineArrays(dataLine1);
dtos.add(lastYM);
dtos.add(nowYM);

@ -429,4 +429,26 @@
)
</foreach>
</insert>
<!--查询原始表-->
<select id="getIncomeBatchList" resultMap="QcCheckTaskIncomeResult">
select *
from qc_income_original
where del_flag = '0'
and check_type = 'checkTypeLL'
and order_type = 'bc'
and check_status = '0'
</select>
<!--批量更新原始表-->
<update id="updateIncomeBatchList">
<foreach collection="list" item="item" separator=";">
update qc_income_original
set
check_status = '1',
check_time = #{time}
where
record_id = #{item}
</foreach>
</update>
</mapper>

@ -0,0 +1,240 @@
<?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.quality.mapper.QcCheckTaskMarketMapper">
<resultMap type="QcCheckTaskMarket" id="QcCheckTaskMarketResult">
<result property="recordId" column="record_id"/>
<result property="checkNo" column="check_no"/>
<result property="incomeBatchNo" column="income_batch_no"/>
<result property="orderNo" column="order_no"/>
<result property="materialCode" column="material_code"/>
<result property="materialName" column="material_name"/>
<result property="quality" column="quality"/>
<result property="unit" column="unit"/>
<result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/>
<result property="incomeTime" column="income_time"/>
<result property="checkLoc" column="check_loc"/>
<result property="checkStatus" column="check_status"/>
<result property="checkManCode" column="check_man_code"/>
<result property="checkManName" column="check_man_name"/>
<result property="checkTime" column="check_time"/>
<result property="checkResult" column="check_result"/>
<result property="status" column="status"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="factoryCode" column="factory_code"/>
<result property="delFlag" column="del_flag"/>
<result property="checkType" column="check_type"/>
<result property="noOkQuality" column="noOk_quality"/>
<result property="sampleQuality" column="sample_quality"/>
<result property="aNoOkquality" column="aNoOkquality"/>
<result property="bNoOkquality" column="bNoOkquality"/>
<result property="cNoOkquality" column="cNoOkquality"/>
<result property="typeCode" column="type_code"/>
<result property="orderType" column="order_type"/>
</resultMap>
<sql id="selectQcCheckTaskMarketVo">
select record_id, check_no, income_batch_no, order_no, material_code, material_name, quality, unit, supplier_code,
supplier_name, income_time, check_loc, check_status, check_man_code, check_man_name, check_time, check_result,
status, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag,
check_type, noOk_quality, sample_quality, aNoOkquality, bNoOkquality, cNoOkquality, type_code, order_type
from qc_check_task
</sql>
<select id="selectQcCheckTaskMarketList" parameterType="QcCheckTaskMarket"
resultMap="QcCheckTaskMarketResult">
select qct.record_id, qct.check_no, qct.income_batch_no,
qct.order_no, qct.material_code, qct.material_name, qct.quality, qct.unit,
qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_loc, qct.check_status,
qct.check_man_code, qct.check_man_name,qct.check_time, qct.check_result, qct.status,
qct.create_by,qct.create_time, qct.update_by, qct.update_time,
qct.check_type,qct.sample_quality,qct.noOk_quality,
q.type_code
from qc_check_task qct
left join qc_check_type q on q.id = qct.check_type
<where>
<if test="checkNo != null and checkNo != ''">and qct.check_no = #{checkNo}</if>
<if test="incomeBatchNo != null and incomeBatchNo != ''">and qct.income_batch_no = #{incomeBatchNo}</if>
<if test="orderNo != null and orderNo != ''">and qct.order_no = #{orderNo}</if>
<if test="materialCode != null and materialCode != ''">and qct.material_code = #{materialCode}</if>
<if test="materialName != null and materialName != ''">and qct.material_name like concat('%',
#{materialName}, '%')
</if>
<if test="supplierCode != null and supplierCode != ''">and qct.supplier_code = #{supplierCode}</if>
<if test="supplierName != null and supplierName != ''">and qct.supplier_name like concat('%',
#{supplierName}, '%')
</if>
<if test="incomeTime != null ">and qct.income_time = #{incomeTime}</if>
<if test="checkLoc != null and checkLoc != ''">and qct.check_loc = #{checkLoc}</if>
<if test="checkStatus != null and checkStatus != ''">and qct.check_status = #{checkStatus}</if>
<if test="checkManCode != null and checkManCode != ''">and qct.check_man_code = #{checkManCode}</if>
<if test="checkManName != null and checkManName != ''">and qct.check_man_name like concat('%',
#{checkManName}, '%')
</if>
<if test="checkResult != null and checkResult != ''">and qct.check_result = #{checkResult}</if>
<if test="status != null and status != ''">and qct.status = #{status}</if>
<if test="delFlag != null and delFlag != ''">and qct.del_flag = #{delFlag}</if>
<if test="factoryCode != null and factoryCode != ''">and qct.factory_code = #{factoryCode}</if>
<if test="incomeTimeStart != null ">and CONVERT(varchar(30),qct.income_time, 120) >= #{incomeTimeStart}</if>
<if test="incomeTimeEnd != null ">and #{incomeTimeEnd} > CONVERT(varchar(30),qct.income_time, 120)</if>
<if test="checkTimeStart != null ">and CONVERT(varchar(30),qct.check_time, 120) >= #{checkTimeStart}</if>
<if test="checkTimeEnd != null ">and #{checkTimeEnd} > CONVERT(varchar(30),qct.check_time, 120)</if>
<if test="checkType != null ">and qct.check_type = #{checkType}</if>
<if test="typeCode != null ">and q.type_code = #{typeCode}</if>
</where>
</select>
<select id="selectQcCheckTaskMarketByRecordId" parameterType="String" resultMap="QcCheckTaskMarketResult">
<include refid="selectQcCheckTaskMarketVo"/>
where record_id = #{recordId}
</select>
<insert id="insertQcCheckTaskMarket" parameterType="QcCheckTaskMarket">
insert into qc_check_task
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="recordId != null">record_id,</if>
<if test="checkNo != null">check_no,</if>
<if test="incomeBatchNo != null">income_batch_no,</if>
<if test="orderNo != null">order_no,</if>
<if test="materialCode != null">material_code,</if>
<if test="materialName != null">material_name,</if>
<if test="quality != null">quality,</if>
<if test="unit != null">unit,</if>
<if test="supplierCode != null">supplier_code,</if>
<if test="supplierName != null">supplier_name,</if>
<if test="incomeTime != null">income_time,</if>
<if test="checkLoc != null">check_loc,</if>
<if test="checkStatus != null">check_status,</if>
<if test="checkManCode != null">check_man_code,</if>
<if test="checkManName != null">check_man_name,</if>
<if test="checkTime != null">check_time,</if>
<if test="checkResult != null">check_result,</if>
<if test="status != null">status,</if>
<if test="attr1 != null">attr1,</if>
<if test="attr2 != null">attr2,</if>
<if test="attr3 != null">attr3,</if>
<if test="attr4 != null">attr4,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="factoryCode != null and factoryCode != ''">factory_code,</if>
<if test="delFlag != null">del_flag,</if>
<if test="checkType != null">check_type,</if>
<if test="noOkQuality != null">noOk_quality,</if>
<if test="sampleQuality != null">sample_quality,</if>
<if test="aNoOkquality != null">aNoOkquality,</if>
<if test="bNoOkquality != null">bNoOkquality,</if>
<if test="cNoOkquality != null">cNoOkquality,</if>
<if test="typeCode != null">type_code,</if>
<if test="orderType != null">order_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="recordId != null">#{recordId},</if>
<if test="checkNo != null">#{checkNo},</if>
<if test="incomeBatchNo != null">#{incomeBatchNo},</if>
<if test="orderNo != null">#{orderNo},</if>
<if test="materialCode != null">#{materialCode},</if>
<if test="materialName != null">#{materialName},</if>
<if test="quality != null">#{quality},</if>
<if test="unit != null">#{unit},</if>
<if test="supplierCode != null">#{supplierCode},</if>
<if test="supplierName != null">#{supplierName},</if>
<if test="incomeTime != null">#{incomeTime},</if>
<if test="checkLoc != null">#{checkLoc},</if>
<if test="checkStatus != null">#{checkStatus},</if>
<if test="checkManCode != null">#{checkManCode},</if>
<if test="checkManName != null">#{checkManName},</if>
<if test="checkTime != null">#{checkTime},</if>
<if test="checkResult != null">#{checkResult},</if>
<if test="status != null">#{status},</if>
<if test="attr1 != null">#{attr1},</if>
<if test="attr2 != null">#{attr2},</if>
<if test="attr3 != null">#{attr3},</if>
<if test="attr4 != null">#{attr4},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="checkType != null">#{checkType},</if>
<if test="noOkQuality != null">#{noOkQuality},</if>
<if test="sampleQuality != null">#{sampleQuality},</if>
<if test="aNoOkquality != null">#{aNoOkquality},</if>
<if test="bNoOkquality != null">#{bNoOkquality},</if>
<if test="cNoOkquality != null">#{cNoOkquality},</if>
<if test="typeCode != null">#{typeCode},</if>
<if test="orderType != null">#{orderType},</if>
</trim>
</insert>
<update id="updateQcCheckTaskMarket" parameterType="QcCheckTaskMarket">
update qc_check_task
<trim prefix="SET" suffixOverrides=",">
<if test="checkNo != null">check_no = #{checkNo},</if>
<if test="incomeBatchNo != null">income_batch_no = #{incomeBatchNo},</if>
<if test="orderNo != null">order_no = #{orderNo},</if>
<if test="materialCode != null">material_code = #{materialCode},</if>
<if test="materialName != null">material_name = #{materialName},</if>
<if test="quality != null">quality = #{quality},</if>
<if test="unit != null">unit = #{unit},</if>
<if test="supplierCode != null">supplier_code = #{supplierCode},</if>
<if test="supplierName != null">supplier_name = #{supplierName},</if>
<if test="incomeTime != null">income_time = #{incomeTime},</if>
<if test="checkLoc != null">check_loc = #{checkLoc},</if>
<if test="checkStatus != null">check_status = #{checkStatus},</if>
<if test="checkManCode != null">check_man_code = #{checkManCode},</if>
<if test="checkManName != null">check_man_name = #{checkManName},</if>
<if test="checkTime != null">check_time = #{checkTime},</if>
<if test="checkResult != null">check_result = #{checkResult},</if>
<if test="status != null">status = #{status},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="factoryCode != null and factoryCode != ''">factory_code = #{factoryCode},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="checkType != null">check_type = #{checkType},</if>
<if test="noOkQuality != null">noOk_quality = #{noOkQuality},</if>
<if test="sampleQuality != null">sample_quality = #{sampleQuality},</if>
<if test="aNoOkquality != null">aNoOkquality = #{aNoOkquality},</if>
<if test="bNoOkquality != null">bNoOkquality = #{bNoOkquality},</if>
<if test="cNoOkquality != null">cNoOkquality = #{cNoOkquality},</if>
<if test="typeCode != null">type_code = #{typeCode},</if>
<if test="orderType != null">order_type = #{orderType},</if>
</trim>
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskMarketByRecordId" parameterType="String">
delete from qc_check_task where record_id = #{recordId}
</delete>
<delete id="deleteQcCheckTaskMarketByRecordIds" parameterType="String">
delete from qc_check_task where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</delete>
<select id="getTodayMaxNum" resultType="java.lang.Integer">
select count(0)+1
from qc_check_task
where CONVERT(varchar(10),create_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
</select>
</mapper>

@ -179,7 +179,8 @@
qct.confirm_man_name confirmManName
from qc_check_task qct
left join pro_order_workorder pow on qct.order_no = pow.workorder_code
where check_type = 'checkTypeSCXJ' and qct.del_flag = '0' and pow.del_flag = '0'
where qct.check_type = 'checkTypeSCXJ' and qct.del_flag = '0'
and pow.del_flag = '0'
and CONVERT(varchar(10),income_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
and pow.status = 'w2' and pow.parent_order = '0'
group by qct.factory_code,

@ -34,7 +34,7 @@
<if test="attr1 != null and attr1 != ''">and attr1 = #{attr1}</if>
and del_flag = '0'
</where>
order by create_time
order by type_code
</select>
<select id="selectQcCheckTypeById" parameterType="String" resultMap="QcCheckTypeResult">

@ -0,0 +1,218 @@
<?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.quality.mapper.QcGoalDistributeMapper">
<resultMap type="QcGoalDistribute" id="QcGoalDistributeResult">
<result property="id" column="id"/>
<result property="belongGoalId" column="belong_goal_id"/>
<result property="supplierCode" column="supplier_code"/>
<result property="supplierName" column="supplier_name"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="factoryCode" column="factory_code"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="selectQcGoalDistributeVo">
select id, belong_goal_id, supplier_code, supplier_name, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag from qc_goal_distribute
</sql>
<select id="selectQcGoalDistributeList" parameterType="QcGoalDistribute" resultMap="QcGoalDistributeResult">
<include refid="selectQcGoalDistributeVo"/>
<where>
<if test="belongGoalId != null and belongGoalId != ''">
and belong_goal_id = #{belongGoalId}
</if>
<if test="supplierCode != null and supplierCode != ''">
and supplier_code = #{supplierCode}
</if>
<if test="supplierName != null and supplierName != ''">
and supplier_name like concat('%', #{supplierName}, '%')
</if>
<if test="attr1 != null and attr1 != ''">
and attr1 = #{attr1}
</if>
<if test="attr2 != null and attr2 != ''">
and attr2 = #{attr2}
</if>
<if test="attr3 != null and attr3 != ''">
and attr3 = #{attr3}
</if>
<if test="attr4 != null and attr4 != ''">
and attr4 = #{attr4}
</if>
<if test="factoryCode != null and factoryCode != ''">
and factory_code = #{factoryCode}
</if>
</where>
</select>
<select id="selectQcGoalDistributeById" parameterType="String"
resultMap="QcGoalDistributeResult">
<include refid="selectQcGoalDistributeVo"/>
where id = #{id}
</select>
<insert id="insertQcGoalDistribute" parameterType="QcGoalDistribute">
insert into qc_goal_distribute
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,
</if>
<if test="belongGoalId != null">belong_goal_id,
</if>
<if test="supplierCode != null">supplier_code,
</if>
<if test="supplierName != null">supplier_name,
</if>
<if test="attr1 != null">attr1,
</if>
<if test="attr2 != null">attr2,
</if>
<if test="attr3 != null">attr3,
</if>
<if test="attr4 != null">attr4,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code,
</if>
<if test="delFlag != null">del_flag,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},
</if>
<if test="belongGoalId != null">#{belongGoalId},
</if>
<if test="supplierCode != null">#{supplierCode},
</if>
<if test="supplierName != null">#{supplierName},
</if>
<if test="attr1 != null">#{attr1},
</if>
<if test="attr2 != null">#{attr2},
</if>
<if test="attr3 != null">#{attr3},
</if>
<if test="attr4 != null">#{attr4},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},
</if>
<if test="delFlag != null">#{delFlag},
</if>
</trim>
</insert>
<update id="updateQcGoalDistribute" parameterType="QcGoalDistribute">
update qc_goal_distribute
<trim prefix="SET" suffixOverrides=",">
<if test="belongGoalId != null">belong_goal_id =
#{belongGoalId},
</if>
<if test="supplierCode != null">supplier_code =
#{supplierCode},
</if>
<if test="supplierName != null">supplier_name =
#{supplierName},
</if>
<if test="attr1 != null">attr1 =
#{attr1},
</if>
<if test="attr2 != null">attr2 =
#{attr2},
</if>
<if test="attr3 != null">attr3 =
#{attr3},
</if>
<if test="attr4 != null">attr4 =
#{attr4},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code =
#{factoryCode},
</if>
<if test="delFlag != null">del_flag =
#{delFlag},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteQcGoalDistributeById" parameterType="String">
delete from qc_goal_distribute where id = #{id}
</delete>
<delete id="deleteQcGoalDistributeByIds" parameterType="String">
delete from qc_goal_distribute where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteQcGoalDistributeByBelongId" parameterType="String">
delete from qc_goal_distribute where belong_goal_id = #{belongGoalId}
</delete>
<select id="getGoalDistributeUndo" parameterType="QcGoalDistribute" resultMap="QcGoalDistributeResult">
select bs.supplier_code,
concat(bs.zh_desc,'(',bs.supplier_code,')') label,
concat(bs.zh_desc,'(',bs.supplier_code,')') supplierName
from base_supplier bs
where bs.active_flag = '1' and bs.del_flag = '0'
and bs.supplier_code not in (
select gd.supplier_code
from qc_goal_distribute gd
where gd.belong_goal_id =#{belongGoalId}
)
<if test="supplierName != null and supplierName != ''">and bs.zh_desc like concat('%', #{supplierName},
'%')
</if>
</select>
<select id="getGoalDistributeDo" parameterType="QcGoalDistribute" resultMap="QcGoalDistributeResult">
select distinct
gd.supplier_code,
concat(bs.zh_desc,'(',bs.supplier_code,')') label
from qc_goal_distribute gd
left join base_supplier bs on gd.supplier_code = bs.supplier_code
where gd.belong_goal_id =#{belongGoalId}
<if test="supplierName != null and supplierName != ''">and bs.zh_desc like concat('%', #{supplierName},
'%')
</if>
</select>
</mapper>

@ -0,0 +1,261 @@
<?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.quality.mapper.QcGoalMapper">
<resultMap type="QcGoal" id="QcGoalResult">
<result property="id" column="id"/>
<result property="goalYm" column="goal_ym"/>
<result property="goalType" column="goal_type"/>
<result property="nookRate" column="noOk_rate"/>
<result property="nookQualityRate" column="noOk_quality_rate"/>
<result property="attr1" column="attr1"/>
<result property="attr2" column="attr2"/>
<result property="attr3" column="attr3"/>
<result property="attr4" column="attr4"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="factoryCode" column="factory_code"/>
<result property="delFlag" column="del_flag"/>
<result property="checkType" column="check_type"/>
<result property="typeCode" column="type_code"/>
<result property="scope" column="scope"/>
<result property="parentGoal" column="parent_goal"/>
</resultMap>
<sql id="selectQcGoalVo">
select id, goal_ym, goal_type, noOk_rate, noOk_quality_rate, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag, check_type, type_code, scope, parent_goal from qc_goal
</sql>
<select id="selectQcGoalList" parameterType="QcGoal" resultMap="QcGoalResult">
<include refid="selectQcGoalVo"/>
<where>
<if test="goalYm != null and goalYm != ''">
and goal_ym = #{goalYm}
</if>
<if test="goalType != null and goalType != ''">
and goal_type = #{goalType}
</if>
<if test="nookRate != null ">
and noOk_rate = #{nookRate}
</if>
<if test="nookQualityRate != null ">
and noOk_quality_rate = #{nookQualityRate}
</if>
<if test="factoryCode != null and factoryCode != ''">
and factory_code = #{factoryCode}
</if>
<if test="checkType != null and checkType != ''">
and check_type = #{checkType}
</if>
<if test="typeCode != null and typeCode != ''">
and type_code = #{typeCode}
</if>
<if test="scope != null and scope != ''">
and scope = #{scope}
</if>
<if test="parentGoal != null and parentGoal != ''">
and parent_goal = #{parentGoal}
</if>
</where>
order by id desc
</select>
<select id="selectChildrenByParent" parameterType="QcGoal" resultMap="QcGoalResult">
<include refid="selectQcGoalVo"/>
<where>
<if test="goalYm != null and goalYm != ''">
and goal_ym = #{goalYm}
</if>
<if test="goalType != null and goalType != ''">
and goal_type = #{goalType}
</if>
<if test="nookRate != null ">
and noOk_rate = #{nookRate}
</if>
<if test="nookQualityRate != null ">
and noOk_quality_rate = #{nookQualityRate}
</if>
<if test="factoryCode != null and factoryCode != ''">
and factory_code = #{factoryCode}
</if>
<if test="checkType != null and checkType != ''">
and check_type = #{checkType}
</if>
<if test="typeCode != null and typeCode != ''">
and type_code = #{typeCode}
</if>
<if test="scope != null and scope != ''">
and scope = #{scope}
</if>
<if test="parentGoal != null and parentGoal != ''">
and parent_goal = #{parentGoal}
</if>
</where>
order by id desc
</select>
<select id="selectQcGoalById" parameterType="String"
resultMap="QcGoalResult">
<include refid="selectQcGoalVo"/>
where id = #{id}
</select>
<insert id="insertQcGoal" parameterType="QcGoal">
insert into qc_goal
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,
</if>
<if test="goalYm != null">goal_ym,
</if>
<if test="goalType != null">goal_type,
</if>
<if test="nookRate != null">noOk_rate,
</if>
<if test="nookQualityRate != null">noOk_quality_rate,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code,
</if>
<if test="delFlag != null">del_flag,
</if>
<if test="checkType != null">check_type,
</if>
<if test="typeCode != null">type_code,
</if>
<if test="scope != null">scope,
</if>
<if test="parentGoal != null">parent_goal,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},
</if>
<if test="goalYm != null">#{goalYm},
</if>
<if test="goalType != null">#{goalType},
</if>
<if test="nookRate != null">#{nookRate},
</if>
<if test="nookQualityRate != null">#{nookQualityRate},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">#{factoryCode},
</if>
<if test="delFlag != null">#{delFlag},
</if>
<if test="checkType != null">#{checkType},
</if>
<if test="typeCode != null">#{typeCode},
</if>
<if test="scope != null">#{scope},
</if>
<if test="parentGoal != null">#{parentGoal},
</if>
</trim>
</insert>
<insert id="insertQcGoalList" parameterType="List">
insert into qc_goal(id,goal_ym,goal_type,noOk_rate,noOk_quality_rate,create_by,create_time,
update_by,update_time,factory_code,check_type,type_code,scope,parent_goal)values
<foreach collection="qcGoalList" item="item" index="index" separator=",">
(#{item.id},
#{item.goalYm},
#{item.goalType},
#{item.nookRate},
#{item.nookQualityRate},
#{item.createBy},
#{item.createTime},
#{item.updateBy},
#{item.updateTime},
#{item.factoryCode},
#{item.checkType},
#{item.typeCode},
#{item.scope},
#{item.parentGoal})
</foreach>
</insert>
<update id="updateQcGoal" parameterType="QcGoal">
update qc_goal
<trim prefix="SET" suffixOverrides=",">
<if test="goalYm != null">goal_ym =
#{goalYm},
</if>
<if test="goalType != null">goal_type =
#{goalType},
</if>
<if test="nookRate != null">noOk_rate =
#{nookRate},
</if>
<if test="nookQualityRate != null">noOk_quality_rate =
#{nookQualityRate},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
<if test="factoryCode != null and factoryCode != ''">factory_code =
#{factoryCode},
</if>
<if test="delFlag != null">del_flag =
#{delFlag},
</if>
<if test="checkType != null">check_type =
#{checkType},
</if>
<if test="typeCode != null">type_code =
#{typeCode},
</if>
<if test="scope != null">scope =
#{scope},
</if>
<if test="parentGoal != null">parent_goal =
#{parentGoal},
</if>
</trim>
where id = #{id}
</update>
<select id="getTodayMaxNum" resultType="java.lang.Integer">
select count(0)+1
from qc_goal
where CONVERT(varchar(10),create_time, 120) = CONVERT(varchar(10),GETDATE(), 120)
</select>
<delete id="deleteQcGoalById" parameterType="String">
delete from qc_goal where id = #{id}
</delete>
<delete id="deleteQcGoalByIds" parameterType="String">
delete from qc_goal where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

@ -138,6 +138,7 @@
qct.unit,
qct.supplier_name supplierName,
qct.income_time incomeTime,
qct.check_time checkTime,
qct.check_result checkResult,
qct.check_man_name checkManName,
qc.check_name checkName

@ -351,6 +351,8 @@ public class SapController extends BaseController {
return sapOrderService.sapRFWOrder(sapRFW);
}
/**
*
*

@ -99,7 +99,7 @@ public class SapOrderServiceImpl implements SapOrderService {
// 获取 内表 - ZMES_PRO
JCoTable maraTable = func.getTableParameterList().getTable("ZMES_PRO");
JCoRecordMetaData metaData = maraTable.getRecordMetaData();
// System.out.println("###" + metaData.toString());
System.out.println("###" + metaData.toString());
List<SapProOrder> proOrderList = new ArrayList<>();
// 循环输出 Table 数据
@ -156,7 +156,7 @@ public class SapOrderServiceImpl implements SapOrderService {
return R.ok(proOrderList);
} catch (Exception e) {
log.error(e.getMessage());
return R.fail(e.getMessage());
}
}
@ -201,7 +201,6 @@ public class SapOrderServiceImpl implements SapOrderService {
LV_ORDER_NUM_List.add(AUFNR);
}
// 去重并排序(从大到小)
}
List<String> uniqueAndSorted = LV_ORDER_NUM_List.stream()
.distinct()
@ -229,7 +228,7 @@ public class SapOrderServiceImpl implements SapOrderService {
// JCoDestination dest = SAPConnUtils.connect();
log.info("订单关闭入参------"+sapCloseOrderQuery.toString());
JCoRepository repository = dest.getRepository();
JCoFunction func = repository.getFunction("ZPPR_MES_PRODORD_CLOSE");
JCoFunction func = repository.getFunction("ZMES_AUFNR_CLOSE");
if (func == null) {
throw new RuntimeException("Function does not exist in SAP");
}
@ -269,7 +268,6 @@ public class SapOrderServiceImpl implements SapOrderService {
if (func == null) {
throw new RuntimeException("Function does not exist in SAP");
}
// 配置传入参数
JCoParameterList jCoParameterList = func.getImportParameterList();
if (StringUtils.isEmpty(sapRFW.getAufnr())){
@ -278,10 +276,15 @@ public class SapOrderServiceImpl implements SapOrderService {
if (StringUtils.isEmpty(sapRFW.getGamng())){
return R.fail("报工数量为空");
}
if (StringUtils.isEmpty(sapRFW.getAnzma())){
return R.fail("产线编号为空");
}
//订单号
jCoParameterList.setValue("P_AUFNR",sapRFW.getAufnr());
//报工数量
jCoParameterList.setValue("P_GAMNG",sapRFW.getGamng());
//产线编号
jCoParameterList.setValue("P_ANZMA",sapRFW.getAnzma());
if (sapRFW.getLt_gs()==null){
return R.fail("生产订单报工工时为空");
}
@ -317,7 +320,7 @@ public class SapOrderServiceImpl implements SapOrderService {
System.out.println(func.getExportParameterList());
String RETCODE= func.getExportParameterList().getString("RETCODE");
MESSAGE= func.getExportParameterList().getString("MESSAGE");
if (Constants.FAIL.equals(RETCODE)){
if (Constants.FAIL.equals(Integer.parseInt(RETCODE))){
return R.fail("订单号:"+sapRFW.getAufnr()+"报工失败"+MESSAGE);
}
return R.ok("",MESSAGE);

Loading…
Cancel
Save