Merge remote-tracking branch 'origin/master'

master
mengjiao 2 months ago
commit 48e1f3f3dd

@ -46,6 +46,18 @@ public class MesBoardController extends BaseController {
return success(iMesBoradService.getProduction15Days(mesBoard));
}
/**获取PLC采集的完成数量*/
@PostMapping("/getProductionNumberPLC")
public AjaxResult getProductionNumberPLC(@RequestBody BoardDTO mesBoard) {
if (StringUtils.isBlank(mesBoard.getFactoryCode())) {
return error("[facotryCode] 不能为空");
}
if (StringUtils.isBlank(mesBoard.getEquCode())) {
return error("[equCode] 不能为空");
}
return success(iMesBoradService.getProductionNumberPLC(mesBoard));
}
/**产线信息**/
@PostMapping("/getProductionLineInfo")
public AjaxResult getProductionLineInfo(@RequestBody BoardDTO mesBoard) {

@ -247,6 +247,7 @@ public class MesReportWorkController extends BaseController {
List<MesDailyReport> list = mesReportWorkService.getDailyReport(mesDailyReport);
return getDataTable(list);
}
@RequiresPermissions("mes:dailyReport:list")
@GetMapping("/getDailyReportNew")
@Log(title = "生成日报表查询", businessType = BusinessType.QUERY)

@ -68,6 +68,8 @@ public class MesDailyReportVo extends BaseEntity {
private String teamCode;
private String teamDesc;
@Excel(name = "标准用人")
private String manStandard;//标准用人
//计划产量
// 实际用人
@Excel(name = "实际用人")
@ -76,8 +78,7 @@ public class MesDailyReportVo extends BaseEntity {
private String workorderName;
private String quantity;//计划产量(箱)
@Excel(name = "标准用人")
private String manStandard;//标准用人
@Excel(name = "标准工时")
private String workTimeStandard;//工时-标准
@Excel(name = "实际工时")

@ -117,4 +117,7 @@ public interface MesMapper {
List<Map> getWhiteBoardProdDetails(Map paramMap);
List<Map> whiteBoardProdListDetailss(Map paramMap);
Map getProductionNumberPLC(BoardDTO mesBoard);
}

@ -22,4 +22,6 @@ public interface IMesBoradService {
public List<BoardDTO> getHFQcInfo(BoardDTO mesBoard);
public List<BoardDTO> getHFxlInfo(BoardDTO mesBoard);
public Map getProductionNumberPLC(BoardDTO mesBoard);
}

@ -213,6 +213,8 @@ public class MesBoradServiceImpl implements IMesBoradService {
return dtos;
}
//获取当前日期前几天
private List<String> getDays(int dayNum){
List<String> days = new ArrayList<>();
@ -230,7 +232,12 @@ public class MesBoradServiceImpl implements IMesBoradService {
return days;
}
@Override
public Map getProductionNumberPLC(BoardDTO mesBoard) {
DynamicDataSourceContextHolder.push(mesBoard.getFactoryCode());
Map mapList = mesMapper.getProductionNumberPLC(mesBoard);
return mapList;
}
public static void main(String[] args){
List<String> days = new ArrayList<>();

@ -135,14 +135,19 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi
// (-中午休息1.5h)
mesLineAssistant.setPostId("10000150");
BigDecimal monitorHour = mesLineAssistantQtyMapper.getKqHourMaps(mesLineAssistant);
monitorHour = monitorHour.subtract(new BigDecimal("1.5"));
mesLineAssistant.setPostId("10000168");
BigDecimal groupleadeHour = mesLineAssistantQtyMapper.getKqHourMaps(mesLineAssistant);
groupleadeHour = groupleadeHour.subtract(new BigDecimal("1.5"));
mesLineAssistant.setPostId("10000478");
BigDecimal materialHour= mesLineAssistantQtyMapper.getKqHourMaps(mesLineAssistant);
materialHour = materialHour.subtract(new BigDecimal("1.5"));
mesLineAssistant.setPostId("10000271");
BigDecimal pillMgrHour = mesLineAssistantQtyMapper.getKqHourMaps(mesLineAssistant);
pillMgrHour = pillMgrHour.subtract(new BigDecimal("1.5"));
mesLineAssistant.setPostId("10000155");
BigDecimal pillDisHour = mesLineAssistantQtyMapper.getKqHourMaps(mesLineAssistant);
pillDisHour = pillDisHour.subtract(new BigDecimal("1.5"));
BigDecimal allProHours = BigDecimal.ZERO;
for(MesLineAssistantQtyVo assistdto:dtos){
//产品工时(用母单的)
@ -150,9 +155,9 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi
hours = hours==null?BigDecimal.ZERO:hours;
assistdto.setProductHour(hours.toString());
allProHours = allProHours.add(hours);
//组长工时=产品工时
assistdto.setGroupLeaderHour(hours.toString());
}
for(MesLineAssistantQtyVo assistdto:dtos){
//工时占比
assistdto.setHourRatio(new BigDecimal(assistdto.getProductHour())
@ -182,11 +187,11 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi
// );
assistdto.setGroupleaderQty("1");
//组长工时=当日考勤小时数*工时占比
assistdto.setGroupLeaderHour(
groupleadeHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%","")))
.multiply(new BigDecimal("0.01"))
.toString()
);
// assistdto.setGroupLeaderHour(
// groupleadeHour.multiply(new BigDecimal(assistdto.getHourRatio().replace("%","")))
// .multiply(new BigDecimal("0.01"))
// .toString()
// );
//物料员用人=当日人数*工时占比
assistdto.setMaterialQty(new BigDecimal(manQty.getMaterialQty()==null?0L:manQty.getMaterialQty())
.multiply(new BigDecimal(assistdto.getHourRatio().replace("%","")))
@ -255,8 +260,8 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi
MesLineAssistantQty manQty = assistMaps.get(mesLineAssistant.getProductDateStr());
assistdto0.setMonitorQty(manQty.getMonitorQty()==null?"0":manQty.getMonitorQty().toString());
assistdto0.setMonitorHour(monitorHour==null?"0":monitorHour.toString());
assistdto0.setGroupleaderQty(manQty.getGroupleaderQty()==null?"0":manQty.getGroupleaderQty().toString());
assistdto0.setGroupLeaderHour(groupleadeHour==null?"0":groupleadeHour.toString());
assistdto0.setGroupleaderQty(manQty.getGroupleaderQty()==null?"0":String.valueOf(dtos.size()));
assistdto0.setGroupLeaderHour(groupleadeHour==null?"0":allProHours.toString());
assistdto0.setMaterialQty(manQty.getMaterialQty()==null?"0":manQty.getMaterialQty().toString());
assistdto0.setMaterialHour(materialHour==null?"0":materialHour.toString());
assistdto0.setPillMgrQty(manQty.getPillMgrQty()==null?"0":manQty.getPillMgrQty().toString());
@ -390,10 +395,11 @@ public class MesLineAssistantQtyServiceImpl implements IMesLineAssistantQtyServi
monitorHour.divide(new BigDecimal(dtos.size()),2,BigDecimal.ROUND_HALF_UP).toString());
assisHourSum = assisHourSum.add(new BigDecimal(effdto.getMonitorHour()));//DOSUM;
//组长用人=当日人数/线体数
effdto.setGroupleaderQty(new BigDecimal(manQty.getGroupleaderQty())
.divide(new BigDecimal(dtos.size()),2,BigDecimal.ROUND_HALF_UP)
.toString()
);
// effdto.setGroupleaderQty(new BigDecimal(manQty.getGroupleaderQty())
// .divide(new BigDecimal(dtos.size()),2,BigDecimal.ROUND_HALF_UP)
// .toString()
// );
effdto.setGroupleaderQty("1");
assisManSum = assisManSum.add(new BigDecimal(effdto.getGroupleaderQty()));//DOSUM;
//组长工时=当日考勤小时数/线体数
effdto.setGroupleaderHour(

@ -67,7 +67,7 @@
and attr4 = #{attr4}
</if>
</where>
order by create_time
order by product_date desc
</select>
<select id="selectMesLineAssistantQtyById" parameterType="String"

@ -374,7 +374,8 @@
pow.workorder_code workorderCode,
pow.product_name productName,
powb.batch_code batchCode,
powb.batch_quantity quantitySplit
powb.batch_quantity quantitySplit,
pow.status
from pro_order_workorder pow
left join pro_order_workorder_batch powb on powb.workorder_id = pow.workorder_id
where pow.del_flag = '0' and CONVERT(varchar(10),pow.product_date, 120) = CONVERT(varchar(10),GETDATE(), 120)
@ -530,5 +531,18 @@
ORDER BY
equipmentCode ASC;
</select>
<select id="getProductionNumberPLC" resultType="java.util.Map">
SELECT
line_code,
workorder_code,
qty_build,
qty_total
FROM
pro_workbatch_inwork
WHERE
line_code =#{ equCode }
AND workorder_code =#{ workorderCode}
</select>
</mapper>

@ -1087,4 +1087,15 @@ public class QcStaticTableController extends BaseController {
}
}
}
@Log(title = "黑蚊香成品分类汇总--表头", businessType = BusinessType.QUERY)
@GetMapping("/getCpDateTitle")
public List<String> getCpDateTitle(QcStaticTable qcStaticTable) {
return qcStaticTableService.getCpDateTitle(qcStaticTable);
}
@Log(title = "黑蚊香成品分类汇总--数据", businessType = BusinessType.QUERY)
@GetMapping("/getCpDefectDate")
public List<Map<String, String>> getCpDefectDate(QcStaticTable qcStaticTable) {
return qcStaticTableService.getCpDefectDate(qcStaticTable);
}
}

@ -346,4 +346,17 @@ public class QuaController extends BaseController {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
return qcCheckTaskIncomeService.getBatchList(qcCheckTaskIncome);
}
/**当前正在生产的线体,正在运行的订单**/
@PostMapping("/getLineProOrder")
public List<QcCheckTaskIncome> getLineProOrder(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
return qcCheckTaskIncomeService.getLineProOrder(qcCheckTaskIncome);
}
/**成品抽检提交**/
@PostMapping(value = "/commitCPCJCheck")
public AjaxResult commitCPCJCheck(@RequestBody QcCheckTaskIncome qcCheckTaskIncome) {
DynamicDataSourceContextHolder.push(qcCheckTaskIncome.getFactoryCode());
return toAjax(qcCheckTaskIncomeService.commitCPCJCheck(qcCheckTaskIncome));
}
}

@ -169,4 +169,8 @@ public interface QcCheckTaskIncomeMapper {
int insertBaseFileBatch(@Param("baseFiles")List<BaseFileData> files);
void deleteBaseFileBySourceId(@Param("sourceId") String sourceId);
List<QcCheckTaskIncome> getLineProOrder(QcCheckTaskIncome getLineProOrder);
List<QcCheckTaskDefect> getOrderBatch(String recordId);
}

@ -146,4 +146,15 @@ public interface QcStaticTableMapper {
QcStaticTable getBPHzInfoPC(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getBPDefectMothPCMap(QcStaticTable qcStaticTable);
List<String> getCpDefects(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getCpDefectMap(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getCpDefectTypeMap(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getCpDefectPCMap(QcStaticTable qcStaticTable);
@MapKey("ymdms")
Map<String, QcStaticTable> getCpSampMap(QcStaticTable qcStaticTable);
List<String> getCpDefectTypes(QcStaticTable qcStaticTable);
}

@ -124,4 +124,7 @@ public interface IQcCheckTaskIncomeService {
List<Map> getCkeckProjectMapList(QcCheckTaskIncome qcCheckTaskIncome);
int submitCheckPics(QcCheckTaskIncome qcCheckTaskIncome);
List<QcCheckTaskIncome> getLineProOrder(QcCheckTaskIncome qcCheckTaskIncome);
int commitCPCJCheck(QcCheckTaskIncome qcCheckTaskIncome);
}

@ -93,4 +93,8 @@ public interface IQcStaticTableService {
List<Map<String, String>> getDefectItemDataPC(QcStaticTable qcStaticTable);
QcStaticTable getDefectItemLinePC(QcStaticTable qcStaticTable);
List<String> getCpDateTitle(QcStaticTable qcStaticTable);
List<Map<String, String>> getCpDefectDate(QcStaticTable qcStaticTable);
}

@ -1456,4 +1456,196 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
}
return qcCheckTaskIncomeMapper.insertBaseFileBatch(files);
}
@Override
@DS("#header.poolName")
public List<QcCheckTaskIncome> getLineProOrder(QcCheckTaskIncome getLineProOrder) {
List<QcCheckTaskIncome> dtos = qcCheckTaskIncomeMapper.getLineProOrder(getLineProOrder);
for(QcCheckTaskIncome dto:dtos){
List<QcCheckTaskDefect> defects = qcCheckTaskIncomeMapper.getOrderBatch(dto.getRecordId());
dto.setDefects(defects);
}
return dtos;
}
@Override
//@Transactional(rollbackFor = Exception.class)
public int commitCPCJCheck(QcCheckTaskIncome qcCheckTaskIncome) {
logger.info("质检提交参数:"+JSONObject.toJSONString(qcCheckTaskIncome));
List<QcCheckTaskDetail> details = qcCheckTaskIncome.getQcCheckTaskDetails();
Date nowTime = DateUtils.getNowDate();
String factoryCode = qcCheckTaskIncome.getFactoryCode();
String updateBy = qcCheckTaskIncome.getUpdateBy();
String belongId = IdUtils.fastSimpleUUID();
String checkType = qcCheckTaskIncome.getCheckType();
qcCheckTaskIncome.setFactoryCode(qcCheckTaskIncome.getFactoryCode().replace("ds_",""));
//默认合格
String result=null;
if(StringUtils.isBlank(qcCheckTaskIncome.getCheckResult())){
result = "Y";
for(QcCheckTaskDetail detail:details){
if("N".equals(detail.getStatus())){
result = "N";//不合格
break;
}
}
}else{
//有最终判定的情况
result = qcCheckTaskIncome.getCheckResult();
}
int n = 0;
QcCheckTaskIncome qcCheckTask = new QcCheckTaskIncome();
qcCheckTask.setUpdateBy(updateBy);
qcCheckTask.setRecordId(belongId);
qcCheckTask.setCheckStatus("2");//检测状态0待检测1检测中2检测完成
qcCheckTask.setUpdateTime(nowTime);
qcCheckTask.setCheckTime(nowTime);
qcCheckTask.setRemark(qcCheckTaskIncome.getRemark());
qcCheckTask.setCheckResult(result);//检验结果Y合格 N不合格
qcCheckTask.setIncomeBatchNo(qcCheckTaskIncome.getIncomeBatchNo());
BigDecimal noOkQquality = new BigDecimal("0");
String[] defectQualitys0 = details.get(0).getDefectQualitys().split(",");;
for(int m=0;m<defectQualitys0.length;m++){
noOkQquality = noOkQquality.add(new BigDecimal(defectQualitys0[m]));
}
qcCheckTask.setNoOkQuality(noOkQquality);
qcCheckTask.setSampleQuality(qcCheckTaskIncome.getSampleQuality());
qcCheckTask.setCheckManCode(qcCheckTaskIncome.getUpdateBy());
qcCheckTask.setCheckManName(qcCheckTaskIncome.getUpdateByName());
//BigDecimal sampleQuality = new BigDecimal("0");
for(QcCheckTaskDetail detail:details){
detail.setUpdateTime(nowTime);
//sampleQuality = sampleQuality.add(new BigDecimal(detail.getSampleQuality().equals("")?"0":detail.getSampleQuality()));
//上传附件
if (StringUtils.isNotEmpty(detail.getFileListStr())) {
//qmsFileMapper.clearBaseFileBatch(detail.getRecordId());//清理
String[] ids = detail.getFileListStr().split(",");
List<BaseFileData> files = new ArrayList<>();
BaseFileData file = null;
for (String id : ids) {
file = new BaseFileData();
file.setFileId(IdUtils.fastSimpleUUID());
file.setFileName(id.split("&fileName=")[1]);
file.setFileAddress(id);
file.setSourceId(belongId);
file.setCreateBy(updateBy);
file.setCreateTime(nowTime);
files.add(file);
}
/**base_file**/
n = qmsFileMapper.insertBaseFileBatch(files);
System.out.println("base_file:"+n);
}
}
/**qc_check_task**/
String bpDD = DateUtils.parseDateToStr(DateUtils.YYYYMMDD, DateUtils.getNowDate());
int liushuiNum = qcCheckTaskIncomeMapper.getTodayMaxNum(qcCheckTaskIncome);
String liushuiStr = String.format("%04d", liushuiNum);
qcCheckTask.setCheckNo(bpDD+liushuiStr);
n = qcCheckTaskIncomeMapper.insertQcCheckTaskIncome(qcCheckTask);
logger.info("qc_check_task:"+n);
/**qc_check_task_defect**/
n=qcCheckTaskIncomeMapper.deleteQcCheckTaskDefects(belongId);
logger.info("清理qc_check_task_defect:"+n);
List<QcCheckTaskDefect> defects = new ArrayList<>();
QcCheckTaskDefect defect = null;
for(QcCheckTaskDetail detail:details){
if(StringUtils.isNotBlank(detail.getDefectCodes())){
String[] defectCodes = detail.getDefectCodes().split(",");
String[] defectNames = detail.getDefectNames().split(",");
String[] defectQualitys = detail.getDefectQualitys().split(",");
if(StringUtils.isBlank(detail.getClassTypeCodes())){
detail.setClassTypeCodes(",");//为了防止前端不选缺陷描述
}
String[] classIds = detail.getClassTypeCodes().split(",");
for(int d=0;d<defectCodes.length;d++){
defect = new QcCheckTaskDefect();
defect.setDefectCode(defectCodes[d]);
defect.setDefectSubclass(defectNames[d].split(":")[0]);
defect.setNoOkQuality(new BigDecimal(defectQualitys[d]));
if(d < classIds.length){
defect.setClassId(classIds[d]);
}else{
defect.setClassId("");
}
defect.setRecordId(IdUtils.fastSimpleUUID());
defect.setCreateTime(nowTime);
defect.setCreateBy(updateBy);
defect.setFactoryCode(factoryCode);
defect.setBelongTo(belongId);
defects.add(defect);
}
}
}
if(!CollectionUtils.isEmpty(defects)){
n= qcCheckTaskIncomeMapper.addQcCheckTaskDefects(defects);
logger.info("qc_check_task_defect:"+n);
}
// if("material".equals(qcCheckTaskIncome.getTypeCode())){
// qcCheckTaskIncome.setCheckResult(result.equals("Y")?"1":"2");
// qcCheckUnqualifiedMapper.updateQualityStatus(qcCheckTaskIncome);
// }else if("produce".equals(qcCheckTaskIncome.getTypeCode())){
// if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())){
// /**pro_order_workorder_batch-->qc_status->2**/
// qcCheckTaskIncome.setStatus("2");
// qcCheckTaskIncome.setCheckResult(result);
// qcCheckUnqualifiedMapper.updateWorkOrderBatchStatus(qcCheckTaskIncome);
// }
// if("checkTypeSC".equals(qcCheckTaskIncome.getCheckType())&&"N".equals(result)){
// QcCheckTaskIncome recheck = new QcCheckTaskIncome();
// recheck.setOldBelongTo(belongId);
//
// recheck.setCreateBy(updateBy);
// recheck.setCreateTime(nowTime);
// //首件不合格触发复检
// recheck.setRecordId(IdUtils.fastSimpleUUID());
// recheck.setBelongTo(recheck.getRecordId());
//
// n = qcCheckUnqualifiedMapper.repeatCheckTask(recheck);
// logger.info("复检表qc_check_task:" + n);
//
//// n = qcCheckUnqualifiedMapper.repeatCheckTaskDefect(recheck);
//// logger.info("复检表qc_check_task_defect:" + n);
//
// n = qcCheckUnqualifiedMapper.repeatCheckTaskDetail(recheck);
// logger.info("复检表qc_check_task_detail:" + n);
//
// n = qcCheckUnqualifiedMapper.repeatCheckTaskUser(recheck);
// logger.info("复检表qc_check_task_user:" + n);
//
// }
// }else if("product".equals(qcCheckTaskIncome.getTypeCode())){
// /**wms_product_put-->check_status->1**/
// qcCheckTaskIncome.setStatus("2");
// qcCheckUnqualifiedMapper.updatePutStatus(qcCheckTaskIncome);
// }
//
// //不合格处理
// if("N".equals(result)) {
// QcCheckUnqualified unqualified = new QcCheckUnqualified();
// unqualified.setId(IdUtils.fastSimpleUUID());
// unqualified.setTaskId(belongId);
// unqualified.setCreateTime(DateUtils.getNowDate());
// unqualified.setCreateBy(updateBy);
// unqualified.setFactoryCode(factoryCode);
// unqualified.setType(checkType);
// n = qcCheckUnqualifiedMapper.insertQcCheckUnqualified(unqualified);
// logger.info("qc_check_unqualified:" + n);
// if("1".equals(qcCheckTaskIncome.getStartOA())){
// this.setOaFunc(unqualified,qcCheckTaskIncome);
// }
// //发送企业微信
// this.sendWX(qcCheckTaskIncome);
// }
return 1 ;
}
}

@ -215,13 +215,16 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
qcCheckTaskWarehousing.setCheckManName("");
qcCheckTaskWarehousing.setCheckManCode("");
/**qc_user_material取默认检查人**/
List<QcUserMaterialDTO> users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskWarehousing.getCheckType());
QcCheckTaskIncome qcCheckTaskIncome = new QcCheckTaskIncome();
qcCheckTaskIncome.setCheckType(qcCheckTaskWarehousing.getCheckType());
qcCheckTaskIncome.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());
qcCheckTaskIncome.setCheckLoc(qcCheckTaskWarehousing.getCheckLoc());
List<QcUserMaterialDTO> users = qcCheckTaskIncomeMapper.getCheckUserBelongLine(qcCheckTaskIncome);
if(CollectionUtils.isEmpty(users)){
QcUserMaterialDTO dto0 = new QcUserMaterialDTO();
dto0.setUserCode("mobile");
dto0.setUserName("手持测试用户");
users.add(dto0);
}else{
users = qcCheckTaskIncomeMapper.getUserByCheckType(qcCheckTaskWarehousing.getCheckType());
}
if(!CollectionUtils.isEmpty(users)){
for(QcUserMaterialDTO user:users){
user.setId(IdUtils.fastSimpleUUID());
user.setBelongTo(beLongId);
@ -231,6 +234,7 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
user.setCreateTime(nowDate);
}
}
/**qc_check_task_user**/
int m=qcCheckTaskIncomeMapper.addCheckUsers(users);
logger.info("检查人新增"+m+"成功");

@ -1988,6 +1988,103 @@ public class QcStaticTableServiceImpl implements IQcStaticTableService {
return dto;
}
@Override
@DS("#header.poolName")
public List<String> getCpDateTitle(QcStaticTable qcStaticTable) {
//获取不良种类
List<String> titles = qcStaticTableMapper.getCpDefects(qcStaticTable);
titles.add("抽样总数");
List<String> abctitles = qcStaticTableMapper.getCpDefectTypes(qcStaticTable);
titles.addAll(abctitles);
titles.add("不良总数");
titles.add("不良率");
titles.add("抽检批数");
titles.add("不合格批数");
titles.add("不合格批次率");
return titles;
}
@Override
@DS("#header.poolName")
public List<Map<String, String>> getCpDefectDate(QcStaticTable qcStaticTable) {
List<Map<String, String>> dtos = new ArrayList<>();
//获取不良项目
List<String> bpDefects = qcStaticTableMapper.getCpDefects(qcStaticTable);
//获取不良类别
List<String> abctitles = qcStaticTableMapper.getCpDefectTypes(qcStaticTable);
//获取时间
List<String> days = getDaysOfMonth(Integer.parseInt(qcStaticTable.getYearMonth().split("-")[0]),
Integer.parseInt(qcStaticTable.getYearMonth().split("-")[1]));
//不良项目map
Map<String,QcStaticTable> defectMaps = qcStaticTableMapper.getCpDefectMap(qcStaticTable);
//抽样分类map
Map<String,QcStaticTable> abcMaps = qcStaticTableMapper.getCpDefectTypeMap(qcStaticTable);
//批次map
Map<String,QcStaticTable> pcMaps = qcStaticTableMapper.getCpDefectPCMap(qcStaticTable);
//抽样总数map
Map<String,QcStaticTable> sampMaps = qcStaticTableMapper.getCpSampMap(qcStaticTable);
Map<String,String> dto1= null;
for(String ymd:days){
dto1= new HashMap<>();
dto1.put("dataType",ymd);
for(int i=0;i<bpDefects.size();i++){
String defectName = bpDefects.get(i)+ymd;
QcStaticTable defectMap = defectMaps.get(defectName);
if(defectMap!=null){
dto1.put("dataTitle"+i,defectMap.getNoOkQty().replace(".00",""));
}
}
//抽样总数
String sampKey = ymd;
QcStaticTable sampMap = sampMaps.get(sampKey);
if(sampMap!=null){
dto1.put("dataTitle"+bpDefects.size(),sampMap.getSampleQty().replace(".00",""));
}
//ABC类
BigDecimal noOkQty = BigDecimal.ZERO;
for(int i=0;i<abctitles.size();i++){
String defectName = abctitles.get(i)+ymd;
QcStaticTable abcMap = abcMaps.get(defectName);
if(abcMap!=null){
dto1.put("dataTitle"+(bpDefects.size()+1+i),abcMap.getNoOkQty().replace(".00",""));
noOkQty = noOkQty.add(new BigDecimal(abcMap.getNoOkQty()));
}
}
//不良总数
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+1),noOkQty.toString());
//不良率
BigDecimal nookRate = BigDecimal.ZERO;
if(sampMap!=null && new BigDecimal(sampMap.getSampleQty()).compareTo(BigDecimal.ZERO)!=0){
nookRate = noOkQty
.multiply(new BigDecimal("100"))
.divide(new BigDecimal(sampMap.getSampleQty()),2,BigDecimal.ROUND_HALF_UP);
}
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+2),nookRate+"%");
//抽检批数//不合格批数//不合格批次率
QcStaticTable pcMap = pcMaps.get(sampKey);
BigDecimal nookPcRate = BigDecimal.ZERO;
if(pcMap!=null){
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+3),pcMap.getSampleQty().replace(".00",""));
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+4),pcMap.getNoOkQty().replace(".00",""));
if(pcMap!=null && new BigDecimal(pcMap.getSampleQty()).compareTo(BigDecimal.ZERO)!=0){
nookPcRate = new BigDecimal(pcMap.getNoOkQty())
.multiply(new BigDecimal("100"))
.divide(new BigDecimal(pcMap.getSampleQty()),2,BigDecimal.ROUND_HALF_UP);
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+5),nookPcRate+"%");
}
}else{
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+3),"0");
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+4),"0");
dto1.put("dataTitle"+(abctitles.size()+bpDefects.size()+5),"0%");
}
dtos.add(dto1);
}
return dtos;
}
protected Map<String,String> getHJRow(List<Map<String, String>> dtos,int days){
Map<String,String> dto2 = new HashMap<>();
dto2.put("dataType","合计");

@ -903,6 +903,26 @@
where qum.material_code = #{checkType} and qum.del_flag = '0'
and qum.attr2 like concat ('%',#{checkLoc},'%')
</select>
<select id="getLineProOrder" resultType="com.op.quality.domain.QcCheckTaskIncome">
select pow.workorder_id recordId,
pow.workorder_name checkLoc,
pow.workorder_code orderNo,
be.equipment_name checkLocName,
pow.product_code materialCode,
pow.product_name materialName
from pro_order_workorder pow
left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx'
where pow.status = 'w2'
and pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
and pow.parent_order = '0'
and pow.del_flag = '0'
</select>
<select id="getOrderBatch" resultType="com.op.quality.domain.QcCheckTaskDefect">
select batch_code attr1
from pro_order_workorder_batch
where workorder_id = #{recordId}
and del_flag = '0'
</select>
<!--批量更新原始表-->
<update id="updateIncomeBatchList">

@ -457,6 +457,7 @@
select
pow.factory_code factoryCode,
pow.workorder_code workorderCode,
pow.workorder_name checkLoc,
pow.product_code materialCode,
pow.product_name materialName,
pow.quantity_split quality,

@ -166,7 +166,7 @@
STRING_AGG(check_man_name,',') AS 'manNames',
belong_to
from qc_check_task_user
where belong_to = #{belongTo}
where belong_to = #{belongTo} and del_flag = '0'
group by belong_to
</select>

@ -433,10 +433,10 @@
and qct.order_no = #{orderNo}
</if>
<if test="materialCode != null ">
and qct.material_code = #{materialCode}
and (qct.material_code like concat('%',#{materialCode},'%') or qct.material_name like concat('%',#{materialCode},'%'))
</if>
<if test="supplierCode != null ">
and qct.supplier_code = #{supplierCode}
and (qct.supplier_code like concat('%',#{supplierCode},'%') or qct.supplier_name like concat('%',#{materialCode},'%'))
</if>
) t
@ -468,10 +468,10 @@
and qct.order_no = #{orderNo}
</if>
<if test="materialCode != null ">
and qct.material_code = #{materialCode}
and (qct.material_code like concat('%',#{materialCode},'%') or qct.material_name like concat('%',#{materialCode},'%'))
</if>
<if test="supplierCode != null ">
and qct.supplier_code = #{supplierCode}
and (qct.supplier_code like concat('%',#{supplierCode},'%') or qct.supplier_name like concat('%',#{materialCode},'%'))
</if>
) q
GROUP BY q.material_code, q.ymdms,q.rule_name,q.project_no
@ -1327,4 +1327,77 @@
and bp.product_group_name ='白坯' and bp.del_flag = '0' and bp.product_desc_zh like '%白坯%'
) t
</select>
<select id="getCpDefects" resultType="java.lang.String">
select qdtc.class_name
from qc_defect_type qdt
left join qc_defect_type_class qdtc on qdtc.defect_id = qdt.defect_id
where qdt.defect_type = #{checkType} and qdt.del_flag = '0' and qdtc.del_flag = '0'
order by qdtc.sort
</select>
<select id="getCpDefectTypes" resultType="java.lang.String">
select qdt.defect_subclass
from qc_defect_type qdt
where qdt.defect_type = #{checkType} and qdt.del_flag = '0'
order by qdt.defect_subclass
</select>
<select id="getCpDefectMap" resultType="com.op.quality.domain.QcStaticTable">
select t.ymdms,sum(t.noOk_quality) noOkQty
from (
select
concat(qdtc.class_name,CONVERT(varchar(10),qct.create_time, 120)) ymdms,
qctd.defect_code,
qctd.defect_subclass,
qctd.class_id,
qdtc.class_name,
qctd.noOk_quality
from qc_check_task qct
left join qc_check_task_defect qctd on qct.record_id = qctd.belong_to
left join qc_defect_type_class qdtc on qdtc.id = qctd.class_id
where qct.del_flag = '0' and qdtc.class_name is not null --and qct.check_type ='checkTypeSC'
and CONVERT(varchar(7),qct.create_time, 120) = #{yearMonth}
) t group by t.ymdms
</select>
<select id="getCpDefectTypeMap" resultType="com.op.quality.domain.QcStaticTable">
select t.ymdms,sum(t.noOk_quality) noOkQty
from (
select
concat(qctd.defect_subclass,CONVERT(varchar(10),qct.create_time, 120)) ymdms,
qctd.defect_code,
qctd.defect_subclass,
qctd.class_id,
qdtc.class_name,
qctd.noOk_quality
from qc_check_task qct
left join qc_check_task_defect qctd on qct.record_id = qctd.belong_to
left join qc_defect_type_class qdtc on qdtc.id = qctd.class_id
where qct.del_flag = '0' and qdtc.class_name is not null --and qct.check_type ='checkTypeSC'
and CONVERT(varchar(7),qct.create_time, 120) = #{yearMonth}
) t group by t.ymdms
</select>
<select id="getCpDefectPCMap" resultType="com.op.quality.domain.QcStaticTable">
select t.ymdms,
SUM(CASE WHEN t.check_result = 'N' THEN 1 ELSE 0 END) noOkQty,
count(0) sampleQty
from (
select
CONVERT(varchar(10),qct.create_time, 120) ymdms,
check_result
from qc_check_task qct
where qct.del_flag = '0' --and qct.check_type ='checkTypeSC'
and CONVERT(varchar(7),qct.create_time, 120) = #{yearMonth}
) t group by t.ymdms
</select>
<select id="getCpSampMap" resultType="com.op.quality.domain.QcStaticTable">
select t.ymdms,
sum(t.sample_quality) sampleQty
from (
select
CONVERT(varchar(10),qct.create_time, 120) ymdms,
sample_quality
from qc_check_task qct
where qct.del_flag = '0' --and qct.check_type ='checkTypeSC'
and CONVERT(varchar(7),qct.create_time, 120) = #{yearMonth}
) t group by t.ymdms
</select>
</mapper>

@ -3,6 +3,7 @@ package com.op.system.service.impl;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
@ -672,7 +673,8 @@ public class SysUserServiceImpl implements ISysUserService {
DynamicDataSourceContextHolder.push("ds_1000");
// 调用 sendPost 方法(确保此方法内部使用 POST 方法发送数据)
Map param=new HashMap();
param.put("day",DateUtils.getDate());
LocalDate yesterdayDate = LocalDate.now().minusDays(1);
param.put("day",yesterdayDate);
String result = HttpUtils.sendPostForm(attendanceRecordUrl, param);
List<MesClockRecord> mesClockRecordList =JSONArray.parseArray(result,MesClockRecord.class);
SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@ -720,5 +722,7 @@ public class SysUserServiceImpl implements ISysUserService {
sqlSession.close();
}
}
}

Loading…
Cancel
Save